From f702831416a74c270f4308522601aa5f96ae1be5 Mon Sep 17 00:00:00 2001 From: Ryan Sauge <71391932+rya-sge@users.noreply.github.com> Date: Mon, 21 Jul 2025 17:45:09 +0200 Subject: [PATCH 01/17] Remove rule files, update test for CMTAT v3.0.0 --- README.md | 6 +- doc/coverage/coverage/index-sort-b.html | 140 +- doc/coverage/coverage/index-sort-f.html | 138 +- doc/coverage/coverage/index-sort-l.html | 140 +- doc/coverage/coverage/index.html | 140 +- ...ithRuleEngineScript.s.sol.func-sort-c.html | 85 -- .../CMTATWithRuleEngineScript.s.sol.func.html | 85 -- .../CMTATWithRuleEngineScript.s.sol.gcov.html | 128 -- .../RuleEngineScript.s.sol.func-sort-c.html | 85 -- .../script/RuleEngineScript.s.sol.func.html | 85 -- .../script/RuleEngineScript.s.sol.gcov.html | 121 -- .../coverage/script/index-sort-b.html | 119 -- .../coverage/script/index-sort-f.html | 119 -- .../coverage/script/index-sort-l.html | 119 -- doc/coverage/coverage/script/index.html | 119 -- .../src/RuleEngine.sol.func-sort-c.html | 62 +- .../coverage/src/RuleEngine.sol.func.html | 64 +- .../coverage/src/RuleEngine.sol.gcov.html | 444 +++--- doc/coverage/coverage/src/index-sort-b.html | 34 +- doc/coverage/coverage/src/index-sort-f.html | 34 +- doc/coverage/coverage/src/index-sort-l.html | 34 +- doc/coverage/coverage/src/index.html | 34 +- .../RuleEngineOperation.sol.func-sort-c.html | 26 +- .../modules/RuleEngineOperation.sol.func.html | 22 +- .../modules/RuleEngineOperation.sol.gcov.html | 74 +- .../RuleEngineValidation.sol.func-sort-c.html | 28 +- .../RuleEngineValidation.sol.func.html | 30 +- .../RuleEngineValidation.sol.gcov.html | 140 +- ...ngineValidationCommon.sol.func-sort-c.html | 20 +- .../RuleEngineValidationCommon.sol.func.html | 16 +- .../RuleEngineValidationCommon.sol.gcov.html | 54 +- .../modules/RuleInternal.sol.func-sort-c.html | 12 +- .../src/modules/RuleInternal.sol.func.html | 12 +- .../src/modules/RuleInternal.sol.gcov.html | 42 +- .../coverage/src/modules/index-sort-b.html | 38 +- .../coverage/src/modules/index-sort-f.html | 30 +- .../coverage/src/modules/index-sort-l.html | 40 +- doc/coverage/coverage/src/modules/index.html | 30 +- ...leConditionalTransfer.sol.func-sort-c.html | 153 --- .../RuleConditionalTransfer.sol.func.html | 153 --- .../RuleConditionalTransfer.sol.gcov.html | 486 ------- ...ionalTransferOperator.sol.func-sort-c.html | 161 --- ...eConditionalTransferOperator.sol.func.html | 161 --- ...eConditionalTransferOperator.sol.gcov.html | 558 -------- .../operation/abstract/index-sort-b.html | 107 -- .../operation/abstract/index-sort-f.html | 107 -- .../operation/abstract/index-sort-l.html | 107 -- .../src/rules/operation/abstract/index.html | 107 -- .../src/rules/operation/index-sort-b.html | 107 -- .../src/rules/operation/index-sort-f.html | 107 -- .../src/rules/operation/index-sort-l.html | 107 -- .../coverage/src/rules/operation/index.html | 107 -- .../RuleBlacklist.sol.func-sort-c.html | 97 -- .../validation/RuleBlacklist.sol.func.html | 97 -- .../validation/RuleBlacklist.sol.gcov.html | 161 --- .../RuleSanctionList.sol.func-sort-c.html | 121 -- .../validation/RuleSanctionList.sol.func.html | 121 -- .../validation/RuleSanctionList.sol.gcov.html | 250 ---- .../RuleWhitelist.sol.func-sort-c.html | 89 -- .../validation/RuleWhitelist.sol.func.html | 89 -- .../validation/RuleWhitelist.sol.gcov.html | 125 -- .../RuleWhitelistWrapper.sol.func-sort-c.html | 105 -- .../RuleWhitelistWrapper.sol.func.html | 105 -- .../RuleWhitelistWrapper.sol.gcov.html | 215 --- .../RuleAddressList.sol.func-sort-c.html | 129 -- .../RuleAddressList.sol.func.html | 129 -- .../RuleAddressList.sol.gcov.html | 261 ---- ...leAddressListInternal.sol.func-sort-c.html | 105 -- .../RuleAddressListInternal.sol.func.html | 105 -- .../RuleAddressListInternal.sol.gcov.html | 186 --- .../RuleAddressList/index-sort-b.html | 119 -- .../RuleAddressList/index-sort-f.html | 119 -- .../RuleAddressList/index-sort-l.html | 119 -- .../abstract/RuleAddressList/index.html | 119 -- .../RuleValidateTransfer.sol.func-sort-c.html | 85 -- .../RuleValidateTransfer.sol.func.html | 85 -- .../RuleValidateTransfer.sol.gcov.html | 110 -- .../RuleWhitelistCommon.sol.func-sort-c.html | 89 -- .../RuleWhitelistCommon.sol.func.html | 89 -- .../RuleWhitelistCommon.sol.gcov.html | 126 -- .../validation/abstract/index-sort-b.html | 119 -- .../validation/abstract/index-sort-f.html | 119 -- .../validation/abstract/index-sort-l.html | 119 -- .../src/rules/validation/abstract/index.html | 119 -- .../src/rules/validation/index-sort-b.html | 143 -- .../src/rules/validation/index-sort-f.html | 143 -- .../src/rules/validation/index-sort-l.html | 143 -- .../coverage/src/rules/validation/index.html | 143 -- .../RuleCTDeployment.sol.func-sort-c.html | 85 -- .../utils/RuleCTDeployment.sol.func.html | 85 -- .../utils/RuleCTDeployment.sol.gcov.html | 142 -- .../utils/index-sort-b.html | 107 -- .../utils/index-sort-f.html | 107 -- .../utils/index-sort-l.html | 107 -- .../RuleConditionalTransfer/utils/index.html | 107 -- .../CMTATDeployment.sol.func-sort-c.html | 10 +- .../test/utils/CMTATDeployment.sol.func.html | 10 +- .../test/utils/CMTATDeployment.sol.gcov.html | 90 +- .../SanctionListOracle.sol.func-sort-c.html | 26 +- .../utils/SanctionListOracle.sol.func.html | 20 +- .../utils/SanctionListOracle.sol.gcov.html | 22 +- .../coverage/test/utils/index-sort-b.html | 36 +- .../coverage/test/utils/index-sort-f.html | 24 +- .../coverage/test/utils/index-sort-l.html | 24 +- doc/coverage/coverage/test/utils/index.html | 24 +- doc/coverage/lcov.info | 1198 +++-------------- foundry.toml | 4 +- hardhat.config.js | 4 +- script/CMTATWithRuleEngineScript.s.sol | 6 +- script/RuleEngineScript.s.sol | 4 +- src/RuleEngine.sol | 30 +- src/interfaces/IRuleEngineValidation.sol | 18 +- src/interfaces/IRuleOperation.sol | 10 +- src/interfaces/IRuleValidation.sol | 8 +- .../RuleConditionalTransferLight.sol | 125 ++ .../rules/operation/RuleOperationRevert.sol | 81 ++ ...nditionalTransferLightInvariantStorage.sol | 30 + .../rules/validation/RuleWhitelist.sol | 24 +- .../RuleAddressList/RuleAddressList.sol | 2 +- .../RuleAddressListInternal.sol | 0 .../RuleAddressListInvariantStorage.sol | 0 .../RuleBlacklistInvariantStorage.sol | 0 .../RuleWhitelistInvariantStorage.sol | 0 .../abstract/RuleCommonInvariantStorage.sol | 0 .../RuleSanctionListInvariantStorage.sol | 0 .../abstract/RuleValidateTransfer.sol | 2 +- .../abstract/RuleWhitelistCommon.sol | 20 +- src/modules/RuleEngineOperation.sol | 28 +- src/modules/RuleEngineValidation.sol | 50 +- .../operation/RuleConditionalTransfer.sol | 416 ------ ...uleConditionalTransferInvariantStorage.sol | 142 -- .../RuleConditionalTransferOperator.sol | 473 ------- src/rules/validation/RuleBlacklist.sol | 94 -- src/rules/validation/RuleSanctionList.sol | 185 --- src/rules/validation/RuleWhitelistWrapper.sol | 175 --- test/HelperContract.sol | 29 +- test/RuleBlacklist/CMTATIntegration.t.sol | 262 ---- test/RuleBlacklist/RuleBlacklist.t.sol | 30 - .../CMTATIntegration.t.sol | 161 --- .../CMTATIntegrationConditionalTransfer.t.sol | 322 ----- .../CMTATIntegrationTest2.t.sol | 182 --- .../RuleConditionalTransfer.t.sol | 980 -------------- ...RuleConditionalTransferAccessControl.t.sol | 247 ---- .../RuleConditionalTransferDeployment.t.sol | 81 -- .../RuleConditionalTransferReset.t.sol | 441 ------ .../RuleConditionalTransferRestriction.t.sol | 118 -- .../utils/CMTATIntegrationShare.sol | 483 ------- .../utils/RuleCTDeployment.sol | 57 - .../AccessControl/RuleEngineAccessControl.sol | 1 + .../RuleEngineAccessControlOZ.t.sol | 2 +- .../RuleEngineOperation.t.sol | 331 ++--- .../RuleEngineOperationRevert.t.sol | 45 + .../RuleEngineRestriction.t.sol | 113 +- .../RuleEngineRestriction.t.sol | 79 +- .../RuleEngineValidation.t.sol | 18 + .../RuleSanctionListAddTest.t.sol | 62 - .../RuleSanctionListDeploymentTest.t.sol | 74 - .../RuleSanctionListTest.t.sol | 128 -- test/RuleWhitelist/CMTATIntegration.t.sol | 26 + .../CMTATIntegrationWhitelistWrapper.t.sol | 322 ----- test/RuleWhitelist/RuleWhitelist.t.sol | 12 +- 161 files changed, 1902 insertions(+), 16934 deletions(-) delete mode 100644 doc/coverage/coverage/script/CMTATWithRuleEngineScript.s.sol.func-sort-c.html delete mode 100644 doc/coverage/coverage/script/CMTATWithRuleEngineScript.s.sol.func.html delete mode 100644 doc/coverage/coverage/script/CMTATWithRuleEngineScript.s.sol.gcov.html delete mode 100644 doc/coverage/coverage/script/RuleEngineScript.s.sol.func-sort-c.html delete mode 100644 doc/coverage/coverage/script/RuleEngineScript.s.sol.func.html delete mode 100644 doc/coverage/coverage/script/RuleEngineScript.s.sol.gcov.html delete mode 100644 doc/coverage/coverage/script/index-sort-b.html delete mode 100644 doc/coverage/coverage/script/index-sort-f.html delete mode 100644 doc/coverage/coverage/script/index-sort-l.html delete mode 100644 doc/coverage/coverage/script/index.html delete mode 100644 doc/coverage/coverage/src/rules/operation/RuleConditionalTransfer.sol.func-sort-c.html delete mode 100644 doc/coverage/coverage/src/rules/operation/RuleConditionalTransfer.sol.func.html delete mode 100644 doc/coverage/coverage/src/rules/operation/RuleConditionalTransfer.sol.gcov.html delete mode 100644 doc/coverage/coverage/src/rules/operation/abstract/RuleConditionalTransferOperator.sol.func-sort-c.html delete mode 100644 doc/coverage/coverage/src/rules/operation/abstract/RuleConditionalTransferOperator.sol.func.html delete mode 100644 doc/coverage/coverage/src/rules/operation/abstract/RuleConditionalTransferOperator.sol.gcov.html delete mode 100644 doc/coverage/coverage/src/rules/operation/abstract/index-sort-b.html delete mode 100644 doc/coverage/coverage/src/rules/operation/abstract/index-sort-f.html delete mode 100644 doc/coverage/coverage/src/rules/operation/abstract/index-sort-l.html delete mode 100644 doc/coverage/coverage/src/rules/operation/abstract/index.html delete mode 100644 doc/coverage/coverage/src/rules/operation/index-sort-b.html delete mode 100644 doc/coverage/coverage/src/rules/operation/index-sort-f.html delete mode 100644 doc/coverage/coverage/src/rules/operation/index-sort-l.html delete mode 100644 doc/coverage/coverage/src/rules/operation/index.html delete mode 100644 doc/coverage/coverage/src/rules/validation/RuleBlacklist.sol.func-sort-c.html delete mode 100644 doc/coverage/coverage/src/rules/validation/RuleBlacklist.sol.func.html delete mode 100644 doc/coverage/coverage/src/rules/validation/RuleBlacklist.sol.gcov.html delete mode 100644 doc/coverage/coverage/src/rules/validation/RuleSanctionList.sol.func-sort-c.html delete mode 100644 doc/coverage/coverage/src/rules/validation/RuleSanctionList.sol.func.html delete mode 100644 doc/coverage/coverage/src/rules/validation/RuleSanctionList.sol.gcov.html delete mode 100644 doc/coverage/coverage/src/rules/validation/RuleWhitelist.sol.func-sort-c.html delete mode 100644 doc/coverage/coverage/src/rules/validation/RuleWhitelist.sol.func.html delete mode 100644 doc/coverage/coverage/src/rules/validation/RuleWhitelist.sol.gcov.html delete mode 100644 doc/coverage/coverage/src/rules/validation/RuleWhitelistWrapper.sol.func-sort-c.html delete mode 100644 doc/coverage/coverage/src/rules/validation/RuleWhitelistWrapper.sol.func.html delete mode 100644 doc/coverage/coverage/src/rules/validation/RuleWhitelistWrapper.sol.gcov.html delete mode 100644 doc/coverage/coverage/src/rules/validation/abstract/RuleAddressList/RuleAddressList.sol.func-sort-c.html delete mode 100644 doc/coverage/coverage/src/rules/validation/abstract/RuleAddressList/RuleAddressList.sol.func.html delete mode 100644 doc/coverage/coverage/src/rules/validation/abstract/RuleAddressList/RuleAddressList.sol.gcov.html delete mode 100644 doc/coverage/coverage/src/rules/validation/abstract/RuleAddressList/RuleAddressListInternal.sol.func-sort-c.html delete mode 100644 doc/coverage/coverage/src/rules/validation/abstract/RuleAddressList/RuleAddressListInternal.sol.func.html delete mode 100644 doc/coverage/coverage/src/rules/validation/abstract/RuleAddressList/RuleAddressListInternal.sol.gcov.html delete mode 100644 doc/coverage/coverage/src/rules/validation/abstract/RuleAddressList/index-sort-b.html delete mode 100644 doc/coverage/coverage/src/rules/validation/abstract/RuleAddressList/index-sort-f.html delete mode 100644 doc/coverage/coverage/src/rules/validation/abstract/RuleAddressList/index-sort-l.html delete mode 100644 doc/coverage/coverage/src/rules/validation/abstract/RuleAddressList/index.html delete mode 100644 doc/coverage/coverage/src/rules/validation/abstract/RuleValidateTransfer.sol.func-sort-c.html delete mode 100644 doc/coverage/coverage/src/rules/validation/abstract/RuleValidateTransfer.sol.func.html delete mode 100644 doc/coverage/coverage/src/rules/validation/abstract/RuleValidateTransfer.sol.gcov.html delete mode 100644 doc/coverage/coverage/src/rules/validation/abstract/RuleWhitelistCommon.sol.func-sort-c.html delete mode 100644 doc/coverage/coverage/src/rules/validation/abstract/RuleWhitelistCommon.sol.func.html delete mode 100644 doc/coverage/coverage/src/rules/validation/abstract/RuleWhitelistCommon.sol.gcov.html delete mode 100644 doc/coverage/coverage/src/rules/validation/abstract/index-sort-b.html delete mode 100644 doc/coverage/coverage/src/rules/validation/abstract/index-sort-f.html delete mode 100644 doc/coverage/coverage/src/rules/validation/abstract/index-sort-l.html delete mode 100644 doc/coverage/coverage/src/rules/validation/abstract/index.html delete mode 100644 doc/coverage/coverage/src/rules/validation/index-sort-b.html delete mode 100644 doc/coverage/coverage/src/rules/validation/index-sort-f.html delete mode 100644 doc/coverage/coverage/src/rules/validation/index-sort-l.html delete mode 100644 doc/coverage/coverage/src/rules/validation/index.html delete mode 100644 doc/coverage/coverage/test/RuleConditionalTransfer/utils/RuleCTDeployment.sol.func-sort-c.html delete mode 100644 doc/coverage/coverage/test/RuleConditionalTransfer/utils/RuleCTDeployment.sol.func.html delete mode 100644 doc/coverage/coverage/test/RuleConditionalTransfer/utils/RuleCTDeployment.sol.gcov.html delete mode 100644 doc/coverage/coverage/test/RuleConditionalTransfer/utils/index-sort-b.html delete mode 100644 doc/coverage/coverage/test/RuleConditionalTransfer/utils/index-sort-f.html delete mode 100644 doc/coverage/coverage/test/RuleConditionalTransfer/utils/index-sort-l.html delete mode 100644 doc/coverage/coverage/test/RuleConditionalTransfer/utils/index.html create mode 100644 src/mocks/rules/operation/RuleConditionalTransferLight.sol create mode 100644 src/mocks/rules/operation/RuleOperationRevert.sol create mode 100644 src/mocks/rules/operation/abstract/RuleConditionalTransferLightInvariantStorage.sol rename src/{ => mocks}/rules/validation/RuleWhitelist.sol (74%) rename src/{ => mocks}/rules/validation/abstract/RuleAddressList/RuleAddressList.sol (98%) rename src/{ => mocks}/rules/validation/abstract/RuleAddressList/RuleAddressListInternal.sol (100%) rename src/{ => mocks}/rules/validation/abstract/RuleAddressList/invariantStorage/RuleAddressListInvariantStorage.sol (100%) rename src/{ => mocks}/rules/validation/abstract/RuleAddressList/invariantStorage/RuleBlacklistInvariantStorage.sol (100%) rename src/{ => mocks}/rules/validation/abstract/RuleAddressList/invariantStorage/RuleWhitelistInvariantStorage.sol (100%) rename src/{ => mocks}/rules/validation/abstract/RuleCommonInvariantStorage.sol (100%) rename src/{ => mocks}/rules/validation/abstract/RuleSanctionListInvariantStorage.sol (100%) rename src/{ => mocks}/rules/validation/abstract/RuleValidateTransfer.sol (93%) rename src/{ => mocks}/rules/validation/abstract/RuleWhitelistCommon.sol (62%) delete mode 100644 src/rules/operation/RuleConditionalTransfer.sol delete mode 100644 src/rules/operation/abstract/RuleConditionalTransferInvariantStorage.sol delete mode 100644 src/rules/operation/abstract/RuleConditionalTransferOperator.sol delete mode 100644 src/rules/validation/RuleBlacklist.sol delete mode 100644 src/rules/validation/RuleSanctionList.sol delete mode 100644 src/rules/validation/RuleWhitelistWrapper.sol delete mode 100644 test/RuleBlacklist/CMTATIntegration.t.sol delete mode 100644 test/RuleBlacklist/RuleBlacklist.t.sol delete mode 100644 test/RuleConditionalTransfer/CMTATIntegration.t.sol delete mode 100644 test/RuleConditionalTransfer/CMTATIntegrationConditionalTransfer.t.sol delete mode 100644 test/RuleConditionalTransfer/CMTATIntegrationTest2.t.sol delete mode 100644 test/RuleConditionalTransfer/RuleConditionalTransfer.t.sol delete mode 100644 test/RuleConditionalTransfer/RuleConditionalTransferAccessControl.t.sol delete mode 100644 test/RuleConditionalTransfer/RuleConditionalTransferDeployment.t.sol delete mode 100644 test/RuleConditionalTransfer/RuleConditionalTransferReset.t.sol delete mode 100644 test/RuleConditionalTransfer/RuleConditionalTransferRestriction.t.sol delete mode 100644 test/RuleConditionalTransfer/utils/CMTATIntegrationShare.sol delete mode 100644 test/RuleConditionalTransfer/utils/RuleCTDeployment.sol create mode 100644 test/RuleEngine/ruleEngineOperation/RuleEngineOperationRevert.t.sol delete mode 100644 test/RuleSanctionList/RuleSanctionListAddTest.t.sol delete mode 100644 test/RuleSanctionList/RuleSanctionListDeploymentTest.t.sol delete mode 100644 test/RuleSanctionList/RuleSanctionListTest.t.sol delete mode 100644 test/RuleWhitelist/CMTATIntegrationWhitelistWrapper.t.sol diff --git a/README.md b/README.md index 0cb8dc0..d42a3ef 100644 --- a/README.md +++ b/README.md @@ -21,7 +21,7 @@ While it has been designed for the CMTAT, the ruleEngine can be used with others For that, the only thing to do is to import in your contract the interface `IRuleEngine` which declares the function `operateOnTransfer` -This interface can be found in [CMTAT/contracts/interfaces/engine/IRuleEngine.sol](https://github.com/CMTA/CMTAT/blob/23a1e59f913d079d0c09d32fafbd95ab2d426093/contracts/interfaces/engine/IRuleEngine.sol) +This interface can be found in [CMTAT/[...]/IRuleEngine.sol](https://github.com/CMTA/CMTAT/blob/23a1e59f913d079d0c09d32fafbd95ab2d426093/contracts/interfaces/engine/IRuleEngine.sol) Before each transfer, your contract must call the function `operateOnTransfer` which is the entrypoint for the RuleEngine. @@ -55,6 +55,8 @@ Before each transfer, your contract must call the function `operateOnTransfer` w ## Available Rules +Rules have their own dedicated repository: + The following rules are available: | Rule | Type | Description | Doc | @@ -211,7 +213,7 @@ forge coverage --report lcov - Generate `index.html` ```bash -forge coverage --report lcov && genhtml lcov.info --branch-coverage --output-dir coverage +forge coverage --no-match-coverage "(script|mocks|test)" --report lcov && genhtml lcov.info --branch-coverage --output-dir coverage ``` See [Solidity Coverage in VS Code with Foundry](https://mirror.xyz/devanon.eth/RrDvKPnlD-pmpuW7hQeR5wWdVjklrpOgPCOA-PJkWFU) & [Foundry forge coverage](https://www.rareskills.io/post/foundry-forge-coverage) diff --git a/doc/coverage/coverage/index-sort-b.html b/doc/coverage/coverage/index-sort-b.html index 79c22e9..1b0fac1 100644 --- a/doc/coverage/coverage/index-sort-b.html +++ b/doc/coverage/coverage/index-sort-b.html @@ -31,27 +31,27 @@ lcov.info Lines: - 479 - 511 - 93.7 % + 172 + 177 + 97.2 % Date: - 2024-12-20 10:41:14 + 2025-07-21 17:42:16 Functions: - 117 - 125 - 93.6 % + 37 + 40 + 92.5 % Branches: - 126 - 128 - 98.4 % + 24 + 25 + 96.0 % @@ -81,126 +81,30 @@ Functions Sort by function coverage Branches Sort by branch coverage - - script - -
0.0%
- - 0.0 % - 0 / 26 - 0.0 % - 0 / 2 - 0.0 % - 0 / 2 - - - test/RuleConditionalTransfer/utils - -
100.0%
- - 100.0 % - 10 / 10 - 100.0 % - 1 / 1 - - - 0 / 0 - - - test/utils - -
85.7%85.7%
- - 85.7 % - 6 / 7 - 80.0 % - 4 / 5 - - - 0 / 0 - - - src/rules/validation/abstract - -
100.0%
- - 100.0 % - 10 / 10 - 100.0 % - 3 / 3 - 100.0 % - 4 / 4 - - - src/rules/validation/abstract/RuleAddressList - -
97.8%97.8%
- - 97.8 % - 44 / 45 - 94.4 % - 17 / 18 - 100.0 % - 6 / 6 - src -
97.4%97.4%
+
95.2%95.2%
- 97.4 % - 38 / 39 - 88.9 % - 8 / 9 - 100.0 % - 8 / 8 + 95.2 % + 59 / 62 + 90.9 % + 10 / 11 + 92.3 % + 12 / 13 src/modules -
100.0%
+
98.3%98.3%
- 100.0 % - 81 / 81 - 100.0 % - 27 / 27 + 98.3 % + 113 / 115 + 93.1 % + 27 / 29 100.0 % 12 / 12 - - src/rules/operation/abstract - -
100.0%
- - 100.0 % - 113 / 113 - 100.0 % - 20 / 20 - 100.0 % - 31 / 31 - - - src/rules/validation - -
97.3%97.3%
- - 97.3 % - 72 / 74 - 90.9 % - 20 / 22 - 100.0 % - 32 / 32 - - - src/rules/operation - -
99.1%99.1%
- - 99.1 % - 105 / 106 - 94.4 % - 17 / 18 - 100.0 % - 33 / 33 -
diff --git a/doc/coverage/coverage/index-sort-f.html b/doc/coverage/coverage/index-sort-f.html index 4c104bd..b7344ab 100644 --- a/doc/coverage/coverage/index-sort-f.html +++ b/doc/coverage/coverage/index-sort-f.html @@ -31,27 +31,27 @@ lcov.info Lines: - 479 - 511 - 93.7 % + 172 + 177 + 97.2 % Date: - 2024-12-20 10:41:14 + 2025-07-21 17:42:16 Functions: - 117 - 125 - 93.6 % + 37 + 40 + 92.5 % Branches: - 126 - 128 - 98.4 % + 24 + 25 + 96.0 % @@ -81,123 +81,27 @@ Functions Sort by function coverage Branches Sort by branch coverage - - script - -
0.0%
- - 0.0 % - 0 / 26 - 0.0 % - 0 / 2 - 0.0 % - 0 / 2 - - - test/utils - -
85.7%85.7%
- - 85.7 % - 6 / 7 - 80.0 % - 4 / 5 - - - 0 / 0 - src -
97.4%97.4%
+
95.2%95.2%
- 97.4 % - 38 / 39 - 88.9 % - 8 / 9 - 100.0 % - 8 / 8 - - - src/rules/validation - -
97.3%97.3%
- - 97.3 % - 72 / 74 + 95.2 % + 59 / 62 90.9 % - 20 / 22 - 100.0 % - 32 / 32 - - - src/rules/validation/abstract/RuleAddressList - -
97.8%97.8%
- - 97.8 % - 44 / 45 - 94.4 % - 17 / 18 - 100.0 % - 6 / 6 - - - src/rules/operation - -
99.1%99.1%
- - 99.1 % - 105 / 106 - 94.4 % - 17 / 18 - 100.0 % - 33 / 33 - - - test/RuleConditionalTransfer/utils - -
100.0%
- - 100.0 % - 10 / 10 - 100.0 % - 1 / 1 - - - 0 / 0 - - - src/rules/validation/abstract - -
100.0%
- - 100.0 % - 10 / 10 - 100.0 % - 3 / 3 - 100.0 % - 4 / 4 - - - src/rules/operation/abstract - -
100.0%
- - 100.0 % - 113 / 113 - 100.0 % - 20 / 20 - 100.0 % - 31 / 31 + 10 / 11 + 92.3 % + 12 / 13 src/modules -
100.0%
+
98.3%98.3%
- 100.0 % - 81 / 81 - 100.0 % - 27 / 27 + 98.3 % + 113 / 115 + 93.1 % + 27 / 29 100.0 % 12 / 12 diff --git a/doc/coverage/coverage/index-sort-l.html b/doc/coverage/coverage/index-sort-l.html index f352c82..edd4c6b 100644 --- a/doc/coverage/coverage/index-sort-l.html +++ b/doc/coverage/coverage/index-sort-l.html @@ -31,27 +31,27 @@ lcov.info Lines: - 479 - 511 - 93.7 % + 172 + 177 + 97.2 % Date: - 2024-12-20 10:41:14 + 2025-07-21 17:42:16 Functions: - 117 - 125 - 93.6 % + 37 + 40 + 92.5 % Branches: - 126 - 128 - 98.4 % + 24 + 25 + 96.0 % @@ -81,126 +81,30 @@ Functions Sort by function coverage Branches Sort by branch coverage - - script - -
0.0%
- - 0.0 % - 0 / 26 - 0.0 % - 0 / 2 - 0.0 % - 0 / 2 - - - test/utils - -
85.7%85.7%
- - 85.7 % - 6 / 7 - 80.0 % - 4 / 5 - - - 0 / 0 - - - src/rules/validation - -
97.3%97.3%
- - 97.3 % - 72 / 74 - 90.9 % - 20 / 22 - 100.0 % - 32 / 32 - src -
97.4%97.4%
- - 97.4 % - 38 / 39 - 88.9 % - 8 / 9 - 100.0 % - 8 / 8 - - - src/rules/validation/abstract/RuleAddressList - -
97.8%97.8%
- - 97.8 % - 44 / 45 - 94.4 % - 17 / 18 - 100.0 % - 6 / 6 - - - src/rules/operation - -
99.1%99.1%
+
95.2%95.2%
- 99.1 % - 105 / 106 - 94.4 % - 17 / 18 - 100.0 % - 33 / 33 - - - src/rules/validation/abstract - -
100.0%
- - 100.0 % - 10 / 10 - 100.0 % - 3 / 3 - 100.0 % - 4 / 4 - - - test/RuleConditionalTransfer/utils - -
100.0%
- - 100.0 % - 10 / 10 - 100.0 % - 1 / 1 - - - 0 / 0 + 95.2 % + 59 / 62 + 90.9 % + 10 / 11 + 92.3 % + 12 / 13 src/modules -
100.0%
+
98.3%98.3%
- 100.0 % - 81 / 81 - 100.0 % - 27 / 27 + 98.3 % + 113 / 115 + 93.1 % + 27 / 29 100.0 % 12 / 12 - - src/rules/operation/abstract - -
100.0%
- - 100.0 % - 113 / 113 - 100.0 % - 20 / 20 - 100.0 % - 31 / 31 -
diff --git a/doc/coverage/coverage/index.html b/doc/coverage/coverage/index.html index 92f429f..79043b9 100644 --- a/doc/coverage/coverage/index.html +++ b/doc/coverage/coverage/index.html @@ -31,27 +31,27 @@ lcov.info Lines: - 479 - 511 - 93.7 % + 172 + 177 + 97.2 % Date: - 2024-12-20 10:41:14 + 2025-07-21 17:42:16 Functions: - 117 - 125 - 93.6 % + 37 + 40 + 92.5 % Branches: - 126 - 128 - 98.4 % + 24 + 25 + 96.0 % @@ -81,126 +81,30 @@ Functions Sort by function coverage Branches Sort by branch coverage - - script - -
0.0%
- - 0.0 % - 0 / 26 - 0.0 % - 0 / 2 - 0.0 % - 0 / 2 - src -
97.4%97.4%
+
95.2%95.2%
- 97.4 % - 38 / 39 - 88.9 % - 8 / 9 - 100.0 % - 8 / 8 + 95.2 % + 59 / 62 + 90.9 % + 10 / 11 + 92.3 % + 12 / 13 src/modules -
100.0%
+
98.3%98.3%
- 100.0 % - 81 / 81 - 100.0 % - 27 / 27 + 98.3 % + 113 / 115 + 93.1 % + 27 / 29 100.0 % 12 / 12 - - src/rules/operation - -
99.1%99.1%
- - 99.1 % - 105 / 106 - 94.4 % - 17 / 18 - 100.0 % - 33 / 33 - - - src/rules/operation/abstract - -
100.0%
- - 100.0 % - 113 / 113 - 100.0 % - 20 / 20 - 100.0 % - 31 / 31 - - - src/rules/validation - -
97.3%97.3%
- - 97.3 % - 72 / 74 - 90.9 % - 20 / 22 - 100.0 % - 32 / 32 - - - src/rules/validation/abstract - -
100.0%
- - 100.0 % - 10 / 10 - 100.0 % - 3 / 3 - 100.0 % - 4 / 4 - - - src/rules/validation/abstract/RuleAddressList - -
97.8%97.8%
- - 97.8 % - 44 / 45 - 94.4 % - 17 / 18 - 100.0 % - 6 / 6 - - - test/RuleConditionalTransfer/utils - -
100.0%
- - 100.0 % - 10 / 10 - 100.0 % - 1 / 1 - - - 0 / 0 - - - test/utils - -
85.7%85.7%
- - 85.7 % - 6 / 7 - 80.0 % - 4 / 5 - - - 0 / 0 -
diff --git a/doc/coverage/coverage/script/CMTATWithRuleEngineScript.s.sol.func-sort-c.html b/doc/coverage/coverage/script/CMTATWithRuleEngineScript.s.sol.func-sort-c.html deleted file mode 100644 index 9ab57f2..0000000 --- a/doc/coverage/coverage/script/CMTATWithRuleEngineScript.s.sol.func-sort-c.html +++ /dev/null @@ -1,85 +0,0 @@ - - - - - - - LCOV - lcov.info - script/CMTATWithRuleEngineScript.s.sol - functions - - - - - - - - - - - - - - -
LCOV - code coverage report
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Current view:top level - script - CMTATWithRuleEngineScript.s.sol (source / functions)HitTotalCoverage
Test:lcov.infoLines:0140.0 %
Date:2024-12-20 10:41:14Functions:010.0 %
Branches:00-
-
- -
- - - - - - - - - - -

Function Name Sort by function nameHit count Sort by hit count
CMTATWithRuleEngineScript.run0
-
-
- - - -
Generated by: LCOV version 1.16
-
- - - diff --git a/doc/coverage/coverage/script/CMTATWithRuleEngineScript.s.sol.func.html b/doc/coverage/coverage/script/CMTATWithRuleEngineScript.s.sol.func.html deleted file mode 100644 index 6dcfe5d..0000000 --- a/doc/coverage/coverage/script/CMTATWithRuleEngineScript.s.sol.func.html +++ /dev/null @@ -1,85 +0,0 @@ - - - - - - - LCOV - lcov.info - script/CMTATWithRuleEngineScript.s.sol - functions - - - - - - - - - - - - - - -
LCOV - code coverage report
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Current view:top level - script - CMTATWithRuleEngineScript.s.sol (source / functions)HitTotalCoverage
Test:lcov.infoLines:0140.0 %
Date:2024-12-20 10:41:14Functions:010.0 %
Branches:00-
-
- -
- - - - - - - - - - -

Function Name Sort by function nameHit count Sort by hit count
CMTATWithRuleEngineScript.run0
-
-
- - - -
Generated by: LCOV version 1.16
-
- - - diff --git a/doc/coverage/coverage/script/CMTATWithRuleEngineScript.s.sol.gcov.html b/doc/coverage/coverage/script/CMTATWithRuleEngineScript.s.sol.gcov.html deleted file mode 100644 index 0600472..0000000 --- a/doc/coverage/coverage/script/CMTATWithRuleEngineScript.s.sol.gcov.html +++ /dev/null @@ -1,128 +0,0 @@ - - - - - - - LCOV - lcov.info - script/CMTATWithRuleEngineScript.s.sol - - - - - - - - - - - - - - -
LCOV - code coverage report
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Current view:top level - script - CMTATWithRuleEngineScript.s.sol (source / functions)HitTotalCoverage
Test:lcov.infoLines:0140.0 %
Date:2024-12-20 10:41:14Functions:010.0 %
Branches:00-
-
- - - - - - - - -

-
           Branch data     Line data    Source code
-
-       1                 :            : // SPDX-License-Identifier: UNLICENSED
-       2                 :            : // Documentation :
-       3                 :            : // https://book.getfoundry.sh/tutorials/solidity-scripting
-       4                 :            : pragma solidity ^0.8.17;
-       5                 :            : 
-       6                 :            : import "forge-std/Script.sol";
-       7                 :            : import "../test/HelperContract.sol";
-       8                 :            : import "src/RuleEngine.sol";
-       9                 :            : import "src/rules/validation/RuleWhitelist.sol";
-      10                 :            : 
-      11                 :            : /**
-      12                 :            : @title Deploy a CMTAT, a RuleWhitelist and a RuleEngine
-      13                 :            : */
-      14                 :            : contract CMTATWithRuleEngineScript is Script, HelperContract {
-      15                 :            :     function run() external {
-      16                 :            :         // Get env variable
-      17                 :          0 :         uint256 deployerPrivateKey = vm.envUint("PRIVATE_KEY");
-      18                 :          0 :         address ADMIN = vm.addr(deployerPrivateKey);
-      19                 :          0 :         address trustedForwarder = address(0x0);
-      20                 :          0 :         vm.startBroadcast(deployerPrivateKey);
-      21                 :            :         // CMTAT
-      22                 :          0 :         cmtatDeployment = new CMTATDeployment();
-      23                 :          0 :         CMTAT_CONTRACT = cmtatDeployment.cmtat();
-      24                 :          0 :         console.log("CMTAT CMTAT_CONTRACT : ", address(CMTAT_CONTRACT));
-      25                 :            :         // whitelist
-      26                 :          0 :         RuleWhitelist ruleWhitelist = new RuleWhitelist(
-      27                 :            :             ADMIN,
-      28                 :            :             trustedForwarder
-      29                 :            :         );
-      30                 :          0 :         console.log("whitelist: ", address(ruleWhitelist));
-      31                 :            :         // ruleEngine
-      32                 :          0 :         RuleEngine RULE_ENGINE = new RuleEngine(
-      33                 :            :             ADMIN,
-      34                 :            :             trustedForwarder,
-      35                 :            :             address(CMTAT_CONTRACT)
-      36                 :            :         );
-      37                 :          0 :         console.log("RuleEngine : ", address(RULE_ENGINE));
-      38                 :          0 :         RULE_ENGINE.addRuleValidation(ruleWhitelist);
-      39                 :          0 :         CMTAT_CONTRACT.setRuleEngine(RULE_ENGINE);
-      40                 :            : 
-      41                 :          0 :         vm.stopBroadcast();
-      42                 :            :     }
-      43                 :            : }
-
-
-
- - - - -
Generated by: LCOV version 1.16
-
- - - diff --git a/doc/coverage/coverage/script/RuleEngineScript.s.sol.func-sort-c.html b/doc/coverage/coverage/script/RuleEngineScript.s.sol.func-sort-c.html deleted file mode 100644 index 347d446..0000000 --- a/doc/coverage/coverage/script/RuleEngineScript.s.sol.func-sort-c.html +++ /dev/null @@ -1,85 +0,0 @@ - - - - - - - LCOV - lcov.info - script/RuleEngineScript.s.sol - functions - - - - - - - - - - - - - - -
LCOV - code coverage report
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Current view:top level - script - RuleEngineScript.s.sol (source / functions)HitTotalCoverage
Test:lcov.infoLines:0120.0 %
Date:2024-12-20 10:41:14Functions:010.0 %
Branches:020.0 %
-
- -
- - - - - - - - - - -

Function Name Sort by function nameHit count Sort by hit count
RuleEngineScript.run0
-
-
- - - -
Generated by: LCOV version 1.16
-
- - - diff --git a/doc/coverage/coverage/script/RuleEngineScript.s.sol.func.html b/doc/coverage/coverage/script/RuleEngineScript.s.sol.func.html deleted file mode 100644 index 29ef250..0000000 --- a/doc/coverage/coverage/script/RuleEngineScript.s.sol.func.html +++ /dev/null @@ -1,85 +0,0 @@ - - - - - - - LCOV - lcov.info - script/RuleEngineScript.s.sol - functions - - - - - - - - - - - - - - -
LCOV - code coverage report
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Current view:top level - script - RuleEngineScript.s.sol (source / functions)HitTotalCoverage
Test:lcov.infoLines:0120.0 %
Date:2024-12-20 10:41:14Functions:010.0 %
Branches:020.0 %
-
- -
- - - - - - - - - - -

Function Name Sort by function nameHit count Sort by hit count
RuleEngineScript.run0
-
-
- - - -
Generated by: LCOV version 1.16
-
- - - diff --git a/doc/coverage/coverage/script/RuleEngineScript.s.sol.gcov.html b/doc/coverage/coverage/script/RuleEngineScript.s.sol.gcov.html deleted file mode 100644 index 3b01d2b..0000000 --- a/doc/coverage/coverage/script/RuleEngineScript.s.sol.gcov.html +++ /dev/null @@ -1,121 +0,0 @@ - - - - - - - LCOV - lcov.info - script/RuleEngineScript.s.sol - - - - - - - - - - - - - - -
LCOV - code coverage report
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Current view:top level - script - RuleEngineScript.s.sol (source / functions)HitTotalCoverage
Test:lcov.infoLines:0120.0 %
Date:2024-12-20 10:41:14Functions:010.0 %
Branches:020.0 %
-
- - - - - - - - -

-
           Branch data     Line data    Source code
-
-       1                 :            : // SPDX-License-Identifier: UNLICENSED
-       2                 :            : // Documentation :
-       3                 :            : // https://book.getfoundry.sh/tutorials/solidity-scripting
-       4                 :            : pragma solidity ^0.8.17;
-       5                 :            : 
-       6                 :            : import "forge-std/Script.sol";
-       7                 :            : import "CMTAT/CMTAT_STANDALONE.sol";
-       8                 :            : import "src/RuleEngine.sol";
-       9                 :            : import "src/rules/validation/RuleWhitelist.sol";
-      10                 :            : import "CMTAT/modules/wrapper/controllers/ValidationModule.sol";
-      11                 :            : 
-      12                 :            : /**
-      13                 :            : @title Deploy a RuleWhitelist and a RuleEngine. The CMTAT is considred already deployed
-      14                 :            : */
-      15                 :            : contract RuleEngineScript is Script {
-      16                 :            :     function run() external {
-      17                 :            :         // Get env variable
-      18                 :          0 :         uint256 deployerPrivateKey = vm.envUint("PRIVATE_KEY");
-      19                 :          0 :         address ADMIN = vm.addr(deployerPrivateKey);
-      20                 :          0 :         address CMTAT_Address = vm.envAddress("CMTAT_ADDRESS");
-      21                 :          0 :         vm.startBroadcast(deployerPrivateKey);
-      22                 :            :         //whitelist
-      23                 :          0 :         RuleWhitelist ruleWhitelist = new RuleWhitelist(ADMIN, address(0));
-      24                 :          0 :         console.log("whitelist: ", address(ruleWhitelist));
-      25                 :            :         // ruleEngine
-      26                 :          0 :         RuleEngine RULE_ENGINE = new RuleEngine(ADMIN, address(0), address(0));
-      27                 :          0 :         console.log("RuleEngine: ", address(RULE_ENGINE));
-      28                 :          0 :         RULE_ENGINE.addRuleValidation(ruleWhitelist);
-      29                 :            :         // Configure the new ruleEngine for CMTAT
-      30                 :          0 :         (bool success, ) = address(CMTAT_Address).call(
-      31                 :            :             abi.encodeCall(ValidationModule.setRuleEngine, RULE_ENGINE)
-      32                 :            :         );
-      33         [ #  # ]:          0 :         require(success);
-      34                 :          0 :         vm.stopBroadcast();
-      35                 :            :     }
-      36                 :            : }
-
-
-
- - - - -
Generated by: LCOV version 1.16
-
- - - diff --git a/doc/coverage/coverage/script/index-sort-b.html b/doc/coverage/coverage/script/index-sort-b.html deleted file mode 100644 index 9a13b3e..0000000 --- a/doc/coverage/coverage/script/index-sort-b.html +++ /dev/null @@ -1,119 +0,0 @@ - - - - - - - LCOV - lcov.info - script - - - - - - - - - - - - - - -
LCOV - code coverage report
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Current view:top level - scriptHitTotalCoverage
Test:lcov.infoLines:0260.0 %
Date:2024-12-20 10:41:14Functions:020.0 %
Branches:020.0 %
-
- -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

Filename Sort by nameLine Coverage Sort by line coverageFunctions Sort by function coverageBranches Sort by branch coverage
RuleEngineScript.s.sol -
0.0%
-
0.0 %0 / 120.0 %0 / 10.0 %0 / 2
CMTATWithRuleEngineScript.s.sol -
0.0%
-
0.0 %0 / 140.0 %0 / 1-0 / 0
-
-
- - - - -
Generated by: LCOV version 1.16
-
- - - diff --git a/doc/coverage/coverage/script/index-sort-f.html b/doc/coverage/coverage/script/index-sort-f.html deleted file mode 100644 index 89cfad4..0000000 --- a/doc/coverage/coverage/script/index-sort-f.html +++ /dev/null @@ -1,119 +0,0 @@ - - - - - - - LCOV - lcov.info - script - - - - - - - - - - - - - - -
LCOV - code coverage report
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Current view:top level - scriptHitTotalCoverage
Test:lcov.infoLines:0260.0 %
Date:2024-12-20 10:41:14Functions:020.0 %
Branches:020.0 %
-
- -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

Filename Sort by nameLine Coverage Sort by line coverageFunctions Sort by function coverageBranches Sort by branch coverage
CMTATWithRuleEngineScript.s.sol -
0.0%
-
0.0 %0 / 140.0 %0 / 1-0 / 0
RuleEngineScript.s.sol -
0.0%
-
0.0 %0 / 120.0 %0 / 10.0 %0 / 2
-
-
- - - - -
Generated by: LCOV version 1.16
-
- - - diff --git a/doc/coverage/coverage/script/index-sort-l.html b/doc/coverage/coverage/script/index-sort-l.html deleted file mode 100644 index 0303269..0000000 --- a/doc/coverage/coverage/script/index-sort-l.html +++ /dev/null @@ -1,119 +0,0 @@ - - - - - - - LCOV - lcov.info - script - - - - - - - - - - - - - - -
LCOV - code coverage report
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Current view:top level - scriptHitTotalCoverage
Test:lcov.infoLines:0260.0 %
Date:2024-12-20 10:41:14Functions:020.0 %
Branches:020.0 %
-
- -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

Filename Sort by nameLine Coverage Sort by line coverageFunctions Sort by function coverageBranches Sort by branch coverage
RuleEngineScript.s.sol -
0.0%
-
0.0 %0 / 120.0 %0 / 10.0 %0 / 2
CMTATWithRuleEngineScript.s.sol -
0.0%
-
0.0 %0 / 140.0 %0 / 1-0 / 0
-
-
- - - - -
Generated by: LCOV version 1.16
-
- - - diff --git a/doc/coverage/coverage/script/index.html b/doc/coverage/coverage/script/index.html deleted file mode 100644 index 11ddb92..0000000 --- a/doc/coverage/coverage/script/index.html +++ /dev/null @@ -1,119 +0,0 @@ - - - - - - - LCOV - lcov.info - script - - - - - - - - - - - - - - -
LCOV - code coverage report
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Current view:top level - scriptHitTotalCoverage
Test:lcov.infoLines:0260.0 %
Date:2024-12-20 10:41:14Functions:020.0 %
Branches:020.0 %
-
- -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

Filename Sort by nameLine Coverage Sort by line coverageFunctions Sort by function coverageBranches Sort by branch coverage
CMTATWithRuleEngineScript.s.sol -
0.0%
-
0.0 %0 / 140.0 %0 / 1-0 / 0
RuleEngineScript.s.sol -
0.0%
-
0.0 %0 / 120.0 %0 / 10.0 %0 / 2
-
-
- - - - -
Generated by: LCOV version 1.16
-
- - - diff --git a/doc/coverage/coverage/src/RuleEngine.sol.func-sort-c.html b/doc/coverage/coverage/src/RuleEngine.sol.func-sort-c.html index eabf2d9..efb464a 100644 --- a/doc/coverage/coverage/src/RuleEngine.sol.func-sort-c.html +++ b/doc/coverage/coverage/src/RuleEngine.sol.func-sort-c.html @@ -31,27 +31,27 @@ lcov.info Lines: - 38 - 39 - 97.4 % + 59 + 62 + 95.2 % Date: - 2024-12-20 10:41:14 + 2025-07-21 17:42:16 Functions: - 8 - 9 - 88.9 % + 10 + 11 + 90.9 % Branches: - 8 - 8 - 100.0 % + 12 + 13 + 92.3 % @@ -69,40 +69,48 @@ Hit count Sort by hit count - RuleEngine._msgData + RuleEngine._msgData 0 - RuleEngine.validateTransfer - 12 + RuleEngine.detectTransferRestrictionFrom + 4 - RuleEngine.messageForTransferRestriction - 18 + RuleEngine.canTransferFrom + 7 - RuleEngine.detectTransferRestriction - 20 + RuleEngine.transferred + 8 - RuleEngine.operateOnTransfer - 69 + RuleEngine.detectTransferRestriction + 9 - RuleEngine. - 205 + RuleEngine.messageForTransferRestriction + 10 - RuleEngine.hasRole - 299 + RuleEngine.canTransfer + 13 - RuleEngine._contextSuffixLength - 588 + RuleEngine.constructor + 74 - RuleEngine._msgSender - 588 + RuleEngine.hasRole + 93 + + + RuleEngine._contextSuffixLength + 248 + + + RuleEngine._msgSender + 248
diff --git a/doc/coverage/coverage/src/RuleEngine.sol.func.html b/doc/coverage/coverage/src/RuleEngine.sol.func.html index f12d35b..24dcfda 100644 --- a/doc/coverage/coverage/src/RuleEngine.sol.func.html +++ b/doc/coverage/coverage/src/RuleEngine.sol.func.html @@ -31,27 +31,27 @@ lcov.info Lines: - 38 - 39 - 97.4 % + 59 + 62 + 95.2 % Date: - 2024-12-20 10:41:14 + 2025-07-21 17:42:16 Functions: - 8 - 9 - 88.9 % + 10 + 11 + 90.9 % Branches: - 8 - 8 - 100.0 % + 12 + 13 + 92.3 % @@ -69,40 +69,48 @@ Hit count Sort by hit count - RuleEngine. - 205 + RuleEngine._contextSuffixLength + 248 - RuleEngine._contextSuffixLength - 588 + RuleEngine._msgData + 0 - RuleEngine._msgData - 0 + RuleEngine._msgSender + 248 + + + RuleEngine.canTransfer + 13 + + + RuleEngine.canTransferFrom + 7 - RuleEngine._msgSender - 588 + RuleEngine.constructor + 74 - RuleEngine.detectTransferRestriction - 20 + RuleEngine.detectTransferRestriction + 9 - RuleEngine.hasRole - 299 + RuleEngine.detectTransferRestrictionFrom + 4 - RuleEngine.messageForTransferRestriction - 18 + RuleEngine.hasRole + 93 - RuleEngine.operateOnTransfer - 69 + RuleEngine.messageForTransferRestriction + 10 - RuleEngine.validateTransfer - 12 + RuleEngine.transferred + 8
diff --git a/doc/coverage/coverage/src/RuleEngine.sol.gcov.html b/doc/coverage/coverage/src/RuleEngine.sol.gcov.html index b32d492..f8c0be1 100644 --- a/doc/coverage/coverage/src/RuleEngine.sol.gcov.html +++ b/doc/coverage/coverage/src/RuleEngine.sol.gcov.html @@ -31,27 +31,27 @@ lcov.info Lines: - 38 - 39 - 97.4 % + 59 + 62 + 95.2 % Date: - 2024-12-20 10:41:14 + 2025-07-21 17:42:16 Functions: - 8 - 9 - 88.9 % + 10 + 11 + 90.9 % Branches: - 8 - 8 - 100.0 % + 12 + 13 + 92.3 % @@ -76,8 +76,8 @@ 5 : : import "CMTAT/interfaces/engine/IRuleEngine.sol"; 6 : : import "./modules/MetaTxModuleStandalone.sol"; 7 : : import "./modules/RuleEngineOperation.sol"; - 8 : : import "./modules/RuleEngineValidation.sol"; - 9 : : + 8 : : import {RuleEngineValidation} from "./modules/RuleEngineValidation.sol"; + 9 : : import {IRuleValidation} from "./interfaces/IRuleValidation.sol"; 10 : : /** 11 : : * @title Implementation of a ruleEngine as defined by the CMTAT 12 : : */ @@ -87,190 +87,248 @@ 16 : : RuleEngineValidation, 17 : : MetaTxModuleStandalone 18 : : { - 19 : : /** - 20 : : * @notice - 21 : : * Get the current version of the smart contract - 22 : : */ - 23 : : string public constant VERSION = "2.0.4"; - 24 : : - 25 : : /** - 26 : : * @param admin Address of the contract (Access Control) - 27 : : * @param forwarderIrrevocable Address of the forwarder, required for the gasless support - 28 : : */ - 29 : : constructor( - 30 : : address admin, - 31 : : address forwarderIrrevocable, - 32 : : address tokenContract - 33 : : ) MetaTxModuleStandalone(forwarderIrrevocable) { - 34 [ + ]: 205 : if (admin == address(0)) { - 35 : 1 : revert RuleEngine_AdminWithAddressZeroNotAllowed(); - 36 : : } - 37 [ + ]: 204 : if (tokenContract != address(0)) { - 38 : 86 : _grantRole(TOKEN_CONTRACT_ROLE, tokenContract); - 39 : : } - 40 : 204 : _grantRole(DEFAULT_ADMIN_ROLE, admin); - 41 : : } - 42 : : - 43 : : /** - 44 : : * @notice Go through all the rule to know if a restriction exists on the transfer - 45 : : * @param _from the origin address - 46 : : * @param _to the destination address - 47 : : * @param _amount to transfer - 48 : : * @return The restricion code or REJECTED_CODE_BASE.TRANSFER_OK - 49 : : **/ - 50 : : function detectTransferRestriction( - 51 : : address _from, - 52 : : address _to, - 53 : : uint256 _amount - 54 : : ) public view override returns (uint8) { - 55 : : // Validation - 56 : 32 : uint8 code = RuleEngineValidation.detectTransferRestrictionValidation( - 57 : : _from, - 58 : : _to, - 59 : : _amount - 60 : : ); - 61 [ + ]: 32 : if (code != uint8(REJECTED_CODE_BASE.TRANSFER_OK)) { - 62 : 15 : return code; - 63 : : } - 64 : : - 65 : : // Operation - 66 : 17 : uint256 rulesLength = _rulesOperation.length; - 67 : 17 : for (uint256 i = 0; i < rulesLength; ++i) { - 68 : 12 : uint8 restriction = IRuleValidation(_rulesOperation[i]) - 69 : : .detectTransferRestriction(_from, _to, _amount); - 70 [ + ]: 12 : if (restriction > 0) { - 71 : 11 : return restriction; - 72 : : } - 73 : : } - 74 : : - 75 : 6 : return uint8(REJECTED_CODE_BASE.TRANSFER_OK); - 76 : : } - 77 : : - 78 : : /** - 79 : : * @notice Validate a transfer - 80 : : * @param _from the origin address - 81 : : * @param _to the destination address - 82 : : * @param _amount to transfer - 83 : : * @return True if the transfer is valid, false otherwise - 84 : : **/ - 85 : : function validateTransfer( - 86 : : address _from, - 87 : : address _to, - 88 : : uint256 _amount - 89 : : ) public view override returns (bool) { - 90 : 12 : return - 91 : 12 : detectTransferRestriction(_from, _to, _amount) == - 92 : : uint8(REJECTED_CODE_BASE.TRANSFER_OK); - 93 : : } + 19 : : + 20 : : /** + 21 : : * @notice + 22 : : * Get the current version of the smart contract + 23 : : */ + 24 : : string public constant VERSION = "2.2.0"; + 25 : : + 26 : : /** + 27 : : * @param admin Address of the contract (Access Control) + 28 : : * @param forwarderIrrevocable Address of the forwarder, required for the gasless support + 29 : : */ + 30 : 74 : constructor( + 31 : : address admin, + 32 : : address forwarderIrrevocable, + 33 : : address tokenContract + 34 : : ) MetaTxModuleStandalone(forwarderIrrevocable) { + 35 [ + ]: 74 : if (admin == address(0)) { + 36 : 1 : revert RuleEngine_AdminWithAddressZeroNotAllowed(); + 37 : : } + 38 [ + ]: 73 : if (tokenContract != address(0)) { + 39 : 11 : _grantRole(TOKEN_CONTRACT_ROLE, tokenContract); + 40 : : } + 41 : 73 : _grantRole(DEFAULT_ADMIN_ROLE, admin); + 42 : : } + 43 : : + 44 : : /** + 45 : : * @notice Go through all the rule to know if a restriction exists on the transfer + 46 : : * @param from the origin address + 47 : : * @param to the destination address + 48 : : * @param value to transfer + 49 : : * @return The restricion code or REJECTED_CODE_BASE.TRANSFER_OK + 50 : : **/ + 51 : 9 : function detectTransferRestriction( + 52 : : address from, + 53 : : address to, + 54 : : uint256 value + 55 : : ) public view override returns (uint8) { + 56 : : // Validation + 57 : 29 : uint8 code = RuleEngineValidation.detectTransferRestrictionValidation( + 58 : : from, + 59 : : to, + 60 : : value + 61 : : ); + 62 [ + ]: 29 : if (code != uint8(REJECTED_CODE_BASE.TRANSFER_OK)) { + 63 : 16 : return code; + 64 : : } + 65 : : + 66 : : // Operation + 67 : 13 : uint256 rulesLength = _rulesOperation.length; + 68 : 13 : for (uint256 i = 0; i < rulesLength; ++i) { + 69 : 10 : uint8 restriction = IRuleValidation(_rulesOperation[i]) + 70 : : .detectTransferRestriction(from, to, value); + 71 [ + ]: 10 : if (restriction > 0) { + 72 : 7 : return restriction; + 73 : : } + 74 : : } + 75 : : + 76 : 6 : return uint8(REJECTED_CODE_BASE.TRANSFER_OK); + 77 : : } + 78 : : + 79 : 4 : function detectTransferRestrictionFrom( + 80 : : address spender, + 81 : : address from, + 82 : : address to, + 83 : : uint256 value + 84 : : ) public view override returns (uint8) { + 85 : : // Validation + 86 : 4 : uint8 code = RuleEngineValidation.detectTransferRestrictionValidationFrom(spender, + 87 : : from, + 88 : : to, + 89 : : value + 90 : : ); + 91 [ + ]: 4 : if (code != uint8(REJECTED_CODE_BASE.TRANSFER_OK)) { + 92 : 2 : return code; + 93 : : } 94 : : - 95 : : /** - 96 : : * @notice Return the message corresponding to the code - 97 : : * @param _restrictionCode The target restriction code - 98 : : * @return True if the transfer is valid, false otherwise - 99 : : **/ - 100 : : function messageForTransferRestriction( - 101 : : uint8 _restrictionCode - 102 : : ) external view override returns (string memory) { - 103 : : // Validation - 104 : 18 : uint256 rulesLength = _rulesValidation.length; - 105 : 18 : for (uint256 i = 0; i < rulesLength; ++i) { - 106 : : if ( - 107 : 13 : IRuleValidation(_rulesValidation[i]) - 108 : : .canReturnTransferRestrictionCode(_restrictionCode) - 109 [ + ]: 10 : ) { - 110 : 10 : return - 111 : 10 : IRuleValidation(_rulesValidation[i]) - 112 : : .messageForTransferRestriction(_restrictionCode); - 113 : : } - 114 : : } - 115 : : // operation - 116 : 8 : rulesLength = _rulesOperation.length; - 117 : 8 : for (uint256 i = 0; i < rulesLength; ++i) { - 118 : : if ( - 119 : 2 : IRuleValidation(_rulesOperation[i]) - 120 : : .canReturnTransferRestrictionCode(_restrictionCode) - 121 [ + ]: 1 : ) { - 122 : 1 : return - 123 : 1 : IRuleValidation(_rulesOperation[i]) - 124 : : .messageForTransferRestriction(_restrictionCode); - 125 : : } - 126 : : } - 127 : 7 : return "Unknown restriction code"; - 128 : : } - 129 : : - 130 : : /* - 131 : : * @notice function protected by access control - 132 : : */ - 133 : : function operateOnTransfer( + 95 : : // Operation + 96 : 2 : uint256 rulesLength = _rulesOperation.length; + 97 : 2 : for (uint256 i = 0; i < rulesLength; ++i) { + 98 : 2 : uint8 restriction = IRuleValidation(_rulesOperation[i]) + 99 : : .detectTransferRestrictionFrom(spender,from, to, value); + 100 [ + ]: 2 : if (restriction > 0) { + 101 : 1 : return restriction; + 102 : : } + 103 : : } + 104 : : + 105 : 1 : return uint8(REJECTED_CODE_BASE.TRANSFER_OK); + 106 : : } + 107 : : + 108 : : /** + 109 : : * @notice Validate a transfer + 110 : : * @param from the origin address + 111 : : * @param to the destination address + 112 : : * @param value to transfer + 113 : : * @return True if the transfer is valid, false otherwise + 114 : : **/ + 115 : 13 : function canTransfer( + 116 : : address from, + 117 : : address to, + 118 : : uint256 value + 119 : : ) public view override returns (bool) { + 120 : 13 : return + 121 : 13 : detectTransferRestriction(from, to, value) == + 122 : : uint8(REJECTED_CODE_BASE.TRANSFER_OK); + 123 : : } + 124 : : + 125 : : /** + 126 : : * @notice Validate a transfer + 127 : : * @param from the origin address + 128 : : * @param to the destination address + 129 : : * @param value to transfer + 130 : : * @return True if the transfer is valid, false otherwise + 131 : : **/ + 132 : 7 : function canTransferFrom( + 133 : : address /*spender*/, 134 : : address from, 135 : : address to, - 136 : : uint256 amount - 137 : : ) external override onlyRole(TOKEN_CONTRACT_ROLE) returns (bool isValid) { - 138 : : // Validate the transfer - 139 : : if ( - 140 : 68 : !RuleEngineValidation.validateTransferValidation(from, to, amount) - 141 [ + ]: 10 : ) { - 142 : 10 : return false; - 143 : : } - 144 : : // Apply operation on RuleEngine - 145 : 58 : return RuleEngineOperation._operateOnTransfer(from, to, amount); - 146 : : } - 147 : : - 148 : : /* ============ ACCESS CONTROL ============ */ - 149 : : /** - 150 : : * @dev Returns `true` if `account` has been granted `role`. - 151 : : */ - 152 : : function hasRole( - 153 : : bytes32 role, - 154 : : address account - 155 : : ) public view virtual override(AccessControl) returns (bool) { - 156 : : // The Default Admin has all roles - 157 [ + ]: 597 : if (AccessControl.hasRole(DEFAULT_ADMIN_ROLE, account)) { - 158 : 220 : return true; - 159 : : } - 160 : 377 : return AccessControl.hasRole(role, account); - 161 : : } - 162 : : - 163 : : /*////////////////////////////////////////////////////////////// - 164 : : ERC-2771 - 165 : : //////////////////////////////////////////////////////////////*/ - 166 : : - 167 : : /** - 168 : : * @dev This surcharge is not necessary if you do not use the MetaTxModule - 169 : : */ - 170 : : function _msgSender() - 171 : : internal - 172 : : view - 173 : : override(ERC2771Context, Context) - 174 : : returns (address sender) - 175 : : { - 176 : 588 : return ERC2771Context._msgSender(); - 177 : : } - 178 : : - 179 : : /** - 180 : : * @dev This surcharge is not necessary if you do not use the MetaTxModule - 181 : : */ - 182 : : function _msgData() - 183 : : internal - 184 : : view - 185 : : override(ERC2771Context, Context) - 186 : : returns (bytes calldata) - 187 : : { - 188 : 0 : return ERC2771Context._msgData(); - 189 : : } - 190 : : - 191 : : /** - 192 : : * @dev This surcharge is not necessary if you do not use the MetaTxModule - 193 : : */ - 194 : : function _contextSuffixLength() - 195 : : internal - 196 : : view - 197 : : override(ERC2771Context, Context) - 198 : : returns (uint256) - 199 : : { - 200 : 588 : return ERC2771Context._contextSuffixLength(); - 201 : : } - 202 : : } + 136 : : uint256 value + 137 : : ) public view override returns (bool) { + 138 : 7 : return + 139 : 7 : detectTransferRestriction(from, to, value) == + 140 : : uint8(REJECTED_CODE_BASE.TRANSFER_OK); + 141 : : } + 142 : : + 143 : : /** + 144 : : * @notice Return the message corresponding to the code + 145 : : * @param restrictionCode The target restriction code + 146 : : * @return True if the transfer is valid, false otherwise + 147 : : **/ + 148 : 10 : function messageForTransferRestriction( + 149 : : uint8 restrictionCode + 150 : : ) external view override returns (string memory) { + 151 : : // Validation + 152 : 10 : uint256 rulesLength = _rulesValidation.length; + 153 : 10 : for (uint256 i = 0; i < rulesLength; ++i) { + 154 : : if ( + 155 : 5 : IRuleValidation(_rulesValidation[i]) + 156 : : .canReturnTransferRestrictionCode(restrictionCode) + 157 [ + ]: 4 : ) { + 158 : 4 : return + 159 : 4 : IRuleValidation(_rulesValidation[i]) + 160 : : .messageForTransferRestriction(restrictionCode); + 161 : : } + 162 : : } + 163 : : // operation + 164 : 6 : rulesLength = _rulesOperation.length; + 165 : 6 : for (uint256 i = 0; i < rulesLength; ++i) { + 166 : : if ( + 167 : 2 : IRuleValidation(_rulesOperation[i]) + 168 : : .canReturnTransferRestrictionCode(restrictionCode) + 169 [ + ]: 1 : ) { + 170 : 1 : return + 171 : 1 : IRuleValidation(_rulesOperation[i]) + 172 : : .messageForTransferRestriction(restrictionCode); + 173 : : } + 174 : : } + 175 : 5 : return "Unknown restriction code"; + 176 : : } + 177 : : + 178 : : /* + 179 : : * @notice function protected by access control + 180 : : */ + 181 : 2 : function transferred( + 182 : : address spender, + 183 : : address from, + 184 : : address to, + 185 : : uint256 value + 186 : : ) public override onlyRole(TOKEN_CONTRACT_ROLE) { + 187 : : // Validate transfer + 188 [ + # ]: 1 : require(RuleEngineValidation.canTransferValidationFrom(spender, from, to, value), RuleEngine_InvalidTransfer(from, to, value)); + 189 : : + 190 : : // Apply operation on RuleEngine + 191 : 0 : RuleEngineOperation._transferred(from, to, value); + 192 : : } + 193 : : + 194 : 6 : function transferred( + 195 : : address from, + 196 : : address to, + 197 : : uint256 value + 198 : : ) public override onlyRole(TOKEN_CONTRACT_ROLE) { + 199 : : // Validate transfer + 200 [ + + ]: 6 : require(RuleEngineValidation.canTransferValidation(from, to, value),RuleEngine_InvalidTransfer(from, to, value)); + 201 : : + 202 : : // Apply operation on RuleEngine + 203 : 3 : RuleEngineOperation._transferred(from, to, value); + 204 : : } + 205 : : + 206 : : /* ============ ACCESS CONTROL ============ */ + 207 : : /** + 208 : : * @dev Returns `true` if `account` has been granted `role`. + 209 : : */ + 210 : 93 : function hasRole( + 211 : : bytes32 role, + 212 : : address account + 213 : : ) public view virtual override(AccessControl) returns (bool) { + 214 : : // The Default Admin has all roles + 215 [ + ]: 257 : if (AccessControl.hasRole(DEFAULT_ADMIN_ROLE, account)) { + 216 : 147 : return true; + 217 : : } + 218 : 110 : return AccessControl.hasRole(role, account); + 219 : : } + 220 : : + 221 : : /*////////////////////////////////////////////////////////////// + 222 : : ERC-2771 + 223 : : //////////////////////////////////////////////////////////////*/ + 224 : : + 225 : : /** + 226 : : * @dev This surcharge is not necessary if you do not use the MetaTxModule + 227 : : */ + 228 : 248 : function _msgSender() + 229 : : internal + 230 : : view + 231 : : override(ERC2771Context, Context) + 232 : : returns (address sender) + 233 : : { + 234 : 248 : return ERC2771Context._msgSender(); + 235 : : } + 236 : : + 237 : : /** + 238 : : * @dev This surcharge is not necessary if you do not use the MetaTxModule + 239 : : */ + 240 : 0 : function _msgData() + 241 : : internal + 242 : : view + 243 : : override(ERC2771Context, Context) + 244 : : returns (bytes calldata) + 245 : : { + 246 : 0 : return ERC2771Context._msgData(); + 247 : : } + 248 : : + 249 : : /** + 250 : : * @dev This surcharge is not necessary if you do not use the MetaTxModule + 251 : : */ + 252 : 248 : function _contextSuffixLength() + 253 : : internal + 254 : : view + 255 : : override(ERC2771Context, Context) + 256 : : returns (uint256) + 257 : : { + 258 : 248 : return ERC2771Context._contextSuffixLength(); + 259 : : } + 260 : : } diff --git a/doc/coverage/coverage/src/index-sort-b.html b/doc/coverage/coverage/src/index-sort-b.html index 576ca6d..1a62508 100644 --- a/doc/coverage/coverage/src/index-sort-b.html +++ b/doc/coverage/coverage/src/index-sort-b.html @@ -31,27 +31,27 @@ lcov.info Lines: - 38 - 39 - 97.4 % + 59 + 62 + 95.2 % Date: - 2024-12-20 10:41:14 + 2025-07-21 17:42:16 Functions: - 8 - 9 - 88.9 % + 10 + 11 + 90.9 % Branches: - 8 - 8 - 100.0 % + 12 + 13 + 92.3 % @@ -84,14 +84,14 @@ RuleEngine.sol -
97.4%97.4%
+
95.2%95.2%
- 97.4 % - 38 / 39 - 88.9 % - 8 / 9 - 100.0 % - 8 / 8 + 95.2 % + 59 / 62 + 90.9 % + 10 / 11 + 92.3 % + 12 / 13 diff --git a/doc/coverage/coverage/src/index-sort-f.html b/doc/coverage/coverage/src/index-sort-f.html index 8962246..8834dc3 100644 --- a/doc/coverage/coverage/src/index-sort-f.html +++ b/doc/coverage/coverage/src/index-sort-f.html @@ -31,27 +31,27 @@ lcov.info Lines: - 38 - 39 - 97.4 % + 59 + 62 + 95.2 % Date: - 2024-12-20 10:41:14 + 2025-07-21 17:42:16 Functions: - 8 - 9 - 88.9 % + 10 + 11 + 90.9 % Branches: - 8 - 8 - 100.0 % + 12 + 13 + 92.3 % @@ -84,14 +84,14 @@ RuleEngine.sol -
97.4%97.4%
+
95.2%95.2%
- 97.4 % - 38 / 39 - 88.9 % - 8 / 9 - 100.0 % - 8 / 8 + 95.2 % + 59 / 62 + 90.9 % + 10 / 11 + 92.3 % + 12 / 13 diff --git a/doc/coverage/coverage/src/index-sort-l.html b/doc/coverage/coverage/src/index-sort-l.html index f6e4883..3350e5a 100644 --- a/doc/coverage/coverage/src/index-sort-l.html +++ b/doc/coverage/coverage/src/index-sort-l.html @@ -31,27 +31,27 @@ lcov.info Lines: - 38 - 39 - 97.4 % + 59 + 62 + 95.2 % Date: - 2024-12-20 10:41:14 + 2025-07-21 17:42:16 Functions: - 8 - 9 - 88.9 % + 10 + 11 + 90.9 % Branches: - 8 - 8 - 100.0 % + 12 + 13 + 92.3 % @@ -84,14 +84,14 @@ RuleEngine.sol -
97.4%97.4%
+
95.2%95.2%
- 97.4 % - 38 / 39 - 88.9 % - 8 / 9 - 100.0 % - 8 / 8 + 95.2 % + 59 / 62 + 90.9 % + 10 / 11 + 92.3 % + 12 / 13 diff --git a/doc/coverage/coverage/src/index.html b/doc/coverage/coverage/src/index.html index 0762168..4aad7ed 100644 --- a/doc/coverage/coverage/src/index.html +++ b/doc/coverage/coverage/src/index.html @@ -31,27 +31,27 @@ lcov.info Lines: - 38 - 39 - 97.4 % + 59 + 62 + 95.2 % Date: - 2024-12-20 10:41:14 + 2025-07-21 17:42:16 Functions: - 8 - 9 - 88.9 % + 10 + 11 + 90.9 % Branches: - 8 - 8 - 100.0 % + 12 + 13 + 92.3 % @@ -84,14 +84,14 @@ RuleEngine.sol -
97.4%97.4%
+
95.2%95.2%
- 97.4 % - 38 / 39 - 88.9 % - 8 / 9 - 100.0 % - 8 / 8 + 95.2 % + 59 / 62 + 90.9 % + 10 / 11 + 92.3 % + 12 / 13 diff --git a/doc/coverage/coverage/src/modules/RuleEngineOperation.sol.func-sort-c.html b/doc/coverage/coverage/src/modules/RuleEngineOperation.sol.func-sort-c.html index 260f236..5aef140 100644 --- a/doc/coverage/coverage/src/modules/RuleEngineOperation.sol.func-sort-c.html +++ b/doc/coverage/coverage/src/modules/RuleEngineOperation.sol.func-sort-c.html @@ -31,13 +31,13 @@ lcov.info Lines: - 25 - 25 + 33 + 33 100.0 % Date: - 2024-12-20 10:41:14 + 2025-07-21 17:42:16 Functions: 11 @@ -49,8 +49,8 @@ Branches: - 2 - 2 + 1 + 1 100.0 % @@ -72,6 +72,10 @@ RuleEngineOperation.ruleOperation 1 + + RuleEngineOperation._transferred + 3 + RuleEngineOperation.getRuleIndexOperation 3 @@ -101,16 +105,12 @@ 22 - RuleEngineOperation.rulesCountOperation - 41 - - - RuleEngineOperation._operateOnTransfer - 58 + RuleEngineOperation.addRuleOperation + 33 - RuleEngineOperation.addRuleOperation - 85 + RuleEngineOperation.rulesCountOperation + 42
diff --git a/doc/coverage/coverage/src/modules/RuleEngineOperation.sol.func.html b/doc/coverage/coverage/src/modules/RuleEngineOperation.sol.func.html index 323d585..8099564 100644 --- a/doc/coverage/coverage/src/modules/RuleEngineOperation.sol.func.html +++ b/doc/coverage/coverage/src/modules/RuleEngineOperation.sol.func.html @@ -31,13 +31,13 @@ lcov.info Lines: - 25 - 25 + 33 + 33 100.0 % Date: - 2024-12-20 10:41:14 + 2025-07-21 17:42:16 Functions: 11 @@ -49,8 +49,8 @@ Branches: - 2 - 2 + 1 + 1 100.0 % @@ -72,17 +72,17 @@ RuleEngineOperation._clearRulesOperation 14 - - RuleEngineOperation._operateOnTransfer - 58 - RuleEngineOperation._removeRuleOperation 22 + + RuleEngineOperation._transferred + 3 + RuleEngineOperation.addRuleOperation - 85 + 33 RuleEngineOperation.clearRulesOperation @@ -102,7 +102,7 @@ RuleEngineOperation.rulesCountOperation - 41 + 42 RuleEngineOperation.rulesOperation diff --git a/doc/coverage/coverage/src/modules/RuleEngineOperation.sol.gcov.html b/doc/coverage/coverage/src/modules/RuleEngineOperation.sol.gcov.html index 75768bd..4ddcfef 100644 --- a/doc/coverage/coverage/src/modules/RuleEngineOperation.sol.gcov.html +++ b/doc/coverage/coverage/src/modules/RuleEngineOperation.sol.gcov.html @@ -31,13 +31,13 @@ lcov.info Lines: - 25 - 25 + 33 + 33 100.0 % Date: - 2024-12-20 10:41:14 + 2025-07-21 17:42:16 Functions: 11 @@ -49,8 +49,8 @@ Branches: - 2 - 2 + 1 + 1 100.0 % @@ -94,7 +94,7 @@ 23 : : * Revert if one rule is a zero address or if the rule is already present 24 : : * 25 : : */ - 26 : : function setRulesOperation( + 26 : 11 : function setRulesOperation( 27 : : address[] calldata rules_ 28 : : ) public onlyRole(RULE_ENGINE_OPERATOR_ROLE) { 29 [ + ]: 11 : if (_rulesOperation.length > 0) { @@ -108,7 +108,7 @@ 37 : : * @notice Clear all the rules of the array of rules 38 : : * 39 : : */ - 40 : : function clearRulesOperation() public onlyRole(RULE_ENGINE_OPERATOR_ROLE) { + 40 : 4 : function clearRulesOperation() public onlyRole(RULE_ENGINE_OPERATOR_ROLE) { 41 : 4 : _clearRulesOperation(); 42 : : } 43 : : @@ -116,7 +116,7 @@ 45 : : * @notice Clear all the rules of the array of rules 46 : : * 47 : : */ - 48 : : function _clearRulesOperation() internal { + 48 : 14 : function _clearRulesOperation() internal { 49 : 14 : uint256 index; 50 : : // we remove the last element first since it is more optimized. 51 : 14 : for (uint256 i = _rulesOperation.length; i > 0; --i) { @@ -134,11 +134,11 @@ 63 : : * Revert if one rule is a zero address or if the rule is already present 64 : : * 65 : : */ - 66 : : function addRuleOperation( + 66 : 33 : function addRuleOperation( 67 : : IRuleOperation rule_ 68 : : ) public onlyRole(RULE_ENGINE_OPERATOR_ROLE) { - 69 : 85 : RuleInternal._addRule(_rulesOperation, address(rule_)); - 70 : 83 : emit AddRule(address(rule_)); + 69 : 33 : RuleInternal._addRule(_rulesOperation, address(rule_)); + 70 : 31 : emit AddRule(address(rule_)); 71 : : } 72 : : 73 : : /** @@ -151,7 +151,7 @@ 80 : : * 81 : : * 82 : : */ - 83 : : function removeRuleOperation( + 83 : 5 : function removeRuleOperation( 84 : : IRuleOperation rule_, 85 : : uint256 index 86 : : ) public onlyRole(RULE_ENGINE_OPERATOR_ROLE) { @@ -168,7 +168,7 @@ 97 : : * 98 : : * 99 : : */ - 100 : : function _removeRuleOperation(address rule_, uint256 index) internal { + 100 : 22 : function _removeRuleOperation(address rule_, uint256 index) internal { 101 : 22 : RuleInternal._removeRule(_rulesOperation, rule_, index); 102 : 21 : emit RemoveRule(address(rule_)); 103 : : } @@ -176,15 +176,15 @@ 105 : : /** 106 : : * @return The number of rules inside the array 107 : : */ - 108 : : function rulesCountOperation() external view override returns (uint256) { - 109 : 41 : return _rulesOperation.length; + 108 : 42 : function rulesCountOperation() external view override returns (uint256) { + 109 : 42 : return _rulesOperation.length; 110 : : } 111 : : 112 : : /** 113 : : * @notice Get the index of a rule inside the list 114 : : * @return index if the rule is found, _rulesOperation.length otherwise 115 : : */ - 116 : : function getRuleIndexOperation( + 116 : 3 : function getRuleIndexOperation( 117 : : IRuleOperation rule_ 118 : : ) external view returns (uint256 index) { 119 : 3 : return RuleInternal._getRuleIndex(_rulesOperation, address(rule_)); @@ -195,7 +195,7 @@ 124 : : * @param ruleId index of the rule 125 : : * @return a rule address 126 : : */ - 127 : : function ruleOperation( + 127 : 1 : function ruleOperation( 128 : : uint256 ruleId 129 : : ) external view override returns (address) { 130 : 1 : return _rulesOperation[ruleId]; @@ -205,7 +205,7 @@ 134 : : * @notice Get all the rules 135 : : * @return An array of rules 136 : : */ - 137 : : function rulesOperation() + 137 : 5 : function rulesOperation() 138 : : external 139 : : view 140 : : override @@ -216,29 +216,25 @@ 145 : : 146 : : /** 147 : : * @notice Go through all the rule to know if a restriction exists on the transfer - 148 : : * @param _from the origin address - 149 : : * @param _to the destination address - 150 : : * @param _amount to transfer + 148 : : * @param from the origin address + 149 : : * @param to the destination address + 150 : : * @param value to transfer 151 : : **/ - 152 : : function _operateOnTransfer( - 153 : : address _from, - 154 : : address _to, - 155 : : uint256 _amount - 156 : : ) internal returns (bool isValid) { - 157 : 58 : uint256 rulesLength = _rulesOperation.length; - 158 : 58 : for (uint256 i = 0; i < rulesLength; ++i) { - 159 : 50 : bool result = IRuleOperation(_rulesOperation[i]).operateOnTransfer( - 160 : : _from, - 161 : : _to, - 162 : : _amount + 152 : 3 : function _transferred( + 153 : : address from, + 154 : : address to, + 155 : : uint256 value + 156 : : ) internal { + 157 : 3 : uint256 rulesLength = _rulesOperation.length; + 158 : 3 : for (uint256 i = 0; i < rulesLength; ++i) { + 159 : 1 : IRuleOperation(_rulesOperation[i]).transferred( + 160 : : from, + 161 : : to, + 162 : : value 163 : : ); - 164 [ + ]: 50 : if (!result) { - 165 : 24 : return false; - 166 : : } - 167 : : } - 168 : 34 : return true; - 169 : : } - 170 : : } + 164 : : } + 165 : : } + 166 : : } diff --git a/doc/coverage/coverage/src/modules/RuleEngineValidation.sol.func-sort-c.html b/doc/coverage/coverage/src/modules/RuleEngineValidation.sol.func-sort-c.html index 3f2eb78..bf91abf 100644 --- a/doc/coverage/coverage/src/modules/RuleEngineValidation.sol.func-sort-c.html +++ b/doc/coverage/coverage/src/modules/RuleEngineValidation.sol.func-sort-c.html @@ -31,26 +31,26 @@ lcov.info Lines: - 8 - 8 - 100.0 % + 18 + 20 + 90.0 % Date: - 2024-12-20 10:41:14 + 2025-07-21 17:42:16 Functions: 2 - 2 - 100.0 % + 4 + 50.0 % Branches: - 1 - 1 + 2 + 2 100.0 % @@ -69,11 +69,19 @@ Hit count Sort by hit count - RuleEngineValidation.validateTransferValidation + RuleEngineValidation.canTransferValidationFrom + 0 + + + RuleEngineValidation.detectTransferRestrictionValidationFrom + 0 + + + RuleEngineValidation.canTransferValidation 2 - RuleEngineValidation.detectTransferRestrictionValidation + RuleEngineValidation.detectTransferRestrictionValidation 3 diff --git a/doc/coverage/coverage/src/modules/RuleEngineValidation.sol.func.html b/doc/coverage/coverage/src/modules/RuleEngineValidation.sol.func.html index 8e114c8..e7efa90 100644 --- a/doc/coverage/coverage/src/modules/RuleEngineValidation.sol.func.html +++ b/doc/coverage/coverage/src/modules/RuleEngineValidation.sol.func.html @@ -31,26 +31,26 @@ lcov.info Lines: - 8 - 8 - 100.0 % + 18 + 20 + 90.0 % Date: - 2024-12-20 10:41:14 + 2025-07-21 17:42:16 Functions: 2 - 2 - 100.0 % + 4 + 50.0 % Branches: - 1 - 1 + 2 + 2 100.0 % @@ -69,12 +69,20 @@ Hit count Sort by hit count - RuleEngineValidation.detectTransferRestrictionValidation + RuleEngineValidation.canTransferValidation + 2 + + + RuleEngineValidation.canTransferValidationFrom + 0 + + + RuleEngineValidation.detectTransferRestrictionValidation 3 - RuleEngineValidation.validateTransferValidation - 2 + RuleEngineValidation.detectTransferRestrictionValidationFrom + 0
diff --git a/doc/coverage/coverage/src/modules/RuleEngineValidation.sol.gcov.html b/doc/coverage/coverage/src/modules/RuleEngineValidation.sol.gcov.html index 92443af..50947ee 100644 --- a/doc/coverage/coverage/src/modules/RuleEngineValidation.sol.gcov.html +++ b/doc/coverage/coverage/src/modules/RuleEngineValidation.sol.gcov.html @@ -31,26 +31,26 @@ lcov.info Lines: - 8 - 8 - 100.0 % + 18 + 20 + 90.0 % Date: - 2024-12-20 10:41:14 + 2025-07-21 17:42:16 Functions: 2 - 2 - 100.0 % + 4 + 50.0 % Branches: - 1 - 1 + 2 + 2 100.0 % @@ -78,7 +78,7 @@ 7 : : import "./RuleEngineValidationCommon.sol"; 8 : : import "../interfaces/IRuleEngineValidation.sol"; 9 : : import "../interfaces/IRuleValidation.sol"; - 10 : : import "CMTAT/interfaces/draft-IERC1404/draft-IERC1404EnumCode.sol"; + 10 : : import "CMTAT/interfaces/tokenization/draft-IERC1404.sol"; 11 : : 12 : : /** 13 : : * @title Implementation of a ruleEngine defined by the CMTAT @@ -87,50 +87,84 @@ 16 : : AccessControl, 17 : : RuleInternal, 18 : : RuleEngineValidationCommon, - 19 : : IRuleEngineValidation, - 20 : : IERC1404EnumCode - 21 : : { - 22 : : /** - 23 : : * @notice Go through all the rule to know if a restriction exists on the transfer - 24 : : * @param _from the origin address - 25 : : * @param _to the destination address - 26 : : * @param _amount to transfer - 27 : : * @return The restricion code or REJECTED_CODE_BASE.TRANSFER_OK - 28 : : **/ - 29 : : function detectTransferRestrictionValidation( - 30 : : address _from, - 31 : : address _to, - 32 : : uint256 _amount - 33 : : ) public view override returns (uint8) { - 34 : 105 : uint256 rulesLength = _rulesValidation.length; - 35 : 105 : for (uint256 i = 0; i < rulesLength; ++i) { - 36 : 43 : uint8 restriction = IRuleValidation(_rulesValidation[i]) - 37 : : .detectTransferRestriction(_from, _to, _amount); - 38 [ + ]: 43 : if (restriction > 0) { - 39 : 28 : return restriction; - 40 : : } - 41 : : } - 42 : : - 43 : 77 : return uint8(REJECTED_CODE_BASE.TRANSFER_OK); - 44 : : } - 45 : : - 46 : : /** - 47 : : * @notice Validate a transfer - 48 : : * @param _from the origin address - 49 : : * @param _to the destination address - 50 : : * @param _amount to transfer - 51 : : * @return True if the transfer is valid, false otherwise - 52 : : **/ - 53 : : function validateTransferValidation( - 54 : : address _from, - 55 : : address _to, - 56 : : uint256 _amount - 57 : : ) public view override returns (bool) { - 58 : 70 : return - 59 : 70 : detectTransferRestrictionValidation(_from, _to, _amount) == - 60 : : uint8(REJECTED_CODE_BASE.TRANSFER_OK); - 61 : : } - 62 : : } + 19 : : IRuleEngineValidation + 20 : : { + 21 : : /** + 22 : : * @notice Go through all the rule to know if a restriction exists on the transfer + 23 : : * @param from the origin address + 24 : : * @param to the destination address + 25 : : * @param value to transfer + 26 : : * @return The restricion code or REJECTED_CODE_BASE.TRANSFER_OK + 27 : : **/ + 28 : 3 : function detectTransferRestrictionValidation( + 29 : : address from, + 30 : : address to, + 31 : : uint256 value + 32 : : ) public view override returns (uint8) { + 33 : 40 : uint256 rulesLength = _rulesValidation.length; + 34 : 40 : for (uint256 i = 0; i < rulesLength; ++i) { + 35 : 29 : uint8 restriction = IRuleValidation(_rulesValidation[i]) + 36 : : .detectTransferRestriction(from, to, value); + 37 [ + ]: 29 : if (restriction > 0) { + 38 : 22 : return restriction; + 39 : : } + 40 : : } + 41 : : + 42 : 18 : return uint8(IERC1404Extend.REJECTED_CODE_BASE.TRANSFER_OK); + 43 : : } + 44 : : + 45 : 0 : function detectTransferRestrictionValidationFrom( + 46 : : address spender, + 47 : : address from, + 48 : : address to, + 49 : : uint256 value + 50 : : ) public view override returns (uint8) { + 51 : 5 : uint256 rulesLength = _rulesValidation.length; + 52 : 5 : for (uint256 i = 0; i < rulesLength; ++i) { + 53 : 3 : uint8 restriction = IRuleValidation(_rulesValidation[i]) + 54 : : .detectTransferRestrictionFrom(spender, from, to, value); + 55 [ + ]: 3 : if (restriction > 0) { + 56 : 3 : return restriction; + 57 : : } + 58 : : } + 59 : 2 : return uint8(IERC1404Extend.REJECTED_CODE_BASE.TRANSFER_OK); + 60 : : } + 61 : : + 62 : : /** + 63 : : * @notice Validate a transfer + 64 : : * @param from the origin address + 65 : : * @param to the destination address + 66 : : * @param value to transfer + 67 : : * @return True if the transfer is valid, false otherwise + 68 : : **/ + 69 : 2 : function canTransferValidation( + 70 : : address from, + 71 : : address to, + 72 : : uint256 value + 73 : : ) public view returns (bool) { + 74 : 8 : return + 75 : 8 : detectTransferRestrictionValidation(from, to, value) == + 76 : : uint8(IERC1404Extend.REJECTED_CODE_BASE.TRANSFER_OK); + 77 : : } + 78 : : + 79 : : /** + 80 : : * @notice Validate a transfer + 81 : : * @param from the origin address + 82 : : * @param to the destination address + 83 : : * @param value to transfer + 84 : : * @return True if the transfer is valid, false otherwise + 85 : : **/ + 86 : 0 : function canTransferValidationFrom( + 87 : : address spender, + 88 : : address from, + 89 : : address to, + 90 : : uint256 value + 91 : : ) public view override returns (bool) { + 92 : 1 : return + 93 : 1 : detectTransferRestrictionValidationFrom(spender, from, to, value) == + 94 : : uint8(IERC1404Extend.REJECTED_CODE_BASE.TRANSFER_OK); + 95 : : } + 96 : : } diff --git a/doc/coverage/coverage/src/modules/RuleEngineValidationCommon.sol.func-sort-c.html b/doc/coverage/coverage/src/modules/RuleEngineValidationCommon.sol.func-sort-c.html index 31de5ea..ffe6403 100644 --- a/doc/coverage/coverage/src/modules/RuleEngineValidationCommon.sol.func-sort-c.html +++ b/doc/coverage/coverage/src/modules/RuleEngineValidationCommon.sol.func-sort-c.html @@ -31,13 +31,13 @@ lcov.info Lines: - 19 - 19 + 29 + 29 100.0 % Date: - 2024-12-20 10:41:14 + 2025-07-21 17:42:16 Functions: 10 @@ -90,23 +90,23 @@ RuleEngineValidationCommon.setRulesValidation - 22 + 23 RuleEngineValidationCommon._clearRulesValidation - 25 + 26 RuleEngineValidationCommon._removeRuleValidation - 33 + 34 - RuleEngineValidationCommon.rulesCountValidation - 69 + RuleEngineValidationCommon.addRuleValidation + 58 - RuleEngineValidationCommon.addRuleValidation - 119 + RuleEngineValidationCommon.rulesCountValidation + 70
diff --git a/doc/coverage/coverage/src/modules/RuleEngineValidationCommon.sol.func.html b/doc/coverage/coverage/src/modules/RuleEngineValidationCommon.sol.func.html index d05c663..1a03f28 100644 --- a/doc/coverage/coverage/src/modules/RuleEngineValidationCommon.sol.func.html +++ b/doc/coverage/coverage/src/modules/RuleEngineValidationCommon.sol.func.html @@ -31,13 +31,13 @@ lcov.info Lines: - 19 - 19 + 29 + 29 100.0 % Date: - 2024-12-20 10:41:14 + 2025-07-21 17:42:16 Functions: 10 @@ -70,15 +70,15 @@ RuleEngineValidationCommon._clearRulesValidation - 25 + 26 RuleEngineValidationCommon._removeRuleValidation - 33 + 34 RuleEngineValidationCommon.addRuleValidation - 119 + 58 RuleEngineValidationCommon.clearRulesValidation @@ -98,7 +98,7 @@ RuleEngineValidationCommon.rulesCountValidation - 69 + 70 RuleEngineValidationCommon.rulesValidation @@ -106,7 +106,7 @@ RuleEngineValidationCommon.setRulesValidation - 22 + 23
diff --git a/doc/coverage/coverage/src/modules/RuleEngineValidationCommon.sol.gcov.html b/doc/coverage/coverage/src/modules/RuleEngineValidationCommon.sol.gcov.html index 1c29fc2..1c66dc8 100644 --- a/doc/coverage/coverage/src/modules/RuleEngineValidationCommon.sol.gcov.html +++ b/doc/coverage/coverage/src/modules/RuleEngineValidationCommon.sol.gcov.html @@ -31,13 +31,13 @@ lcov.info Lines: - 19 - 19 + 29 + 29 100.0 % Date: - 2024-12-20 10:41:14 + 2025-07-21 17:42:16 Functions: 10 @@ -98,21 +98,21 @@ 27 : : * @dev take address[] instead of IRuleEngineValidation[] since it is not possible to cast IRuleEngineValidation[] -> address[] 28 : : * 29 : : */ - 30 : : function setRulesValidation( + 30 : 23 : function setRulesValidation( 31 : : address[] calldata rules_ 32 : : ) public override onlyRole(RULE_ENGINE_OPERATOR_ROLE) { - 33 [ + ]: 21 : if (_rulesValidation.length > 0) { - 34 : 20 : _clearRulesValidation(); + 33 [ + ]: 22 : if (_rulesValidation.length > 0) { + 34 : 21 : _clearRulesValidation(); 35 : : } - 36 : 21 : _setRules(rules_); - 37 : 18 : _rulesValidation = rules_; + 36 : 22 : _setRules(rules_); + 37 : 19 : _rulesValidation = rules_; 38 : : } 39 : : 40 : : /** 41 : : * @notice Clear all the rules of the array of rules 42 : : * 43 : : */ - 44 : : function clearRulesValidation() public onlyRole(RULE_ENGINE_OPERATOR_ROLE) { + 44 : 6 : function clearRulesValidation() public onlyRole(RULE_ENGINE_OPERATOR_ROLE) { 45 : 5 : _clearRulesValidation(); 46 : : } 47 : : @@ -121,11 +121,11 @@ 50 : : * Revert if one rule is a zero address or if the rule is already present 51 : : * 52 : : */ - 53 : : function addRuleValidation( + 53 : 58 : function addRuleValidation( 54 : : IRuleValidation rule_ 55 : : ) public onlyRole(RULE_ENGINE_OPERATOR_ROLE) { - 56 : 118 : RuleInternal._addRule(_rulesValidation, address(rule_)); - 57 : 116 : emit AddRule(address(rule_)); + 56 : 57 : RuleInternal._addRule(_rulesValidation, address(rule_)); + 57 : 55 : emit AddRule(address(rule_)); 58 : : } 59 : : 60 : : /** @@ -138,7 +138,7 @@ 67 : : * 68 : : * 69 : : */ - 70 : : function removeRuleValidation( + 70 : 6 : function removeRuleValidation( 71 : : IRuleValidation rule_, 72 : : uint256 index 73 : : ) public onlyRole(RULE_ENGINE_OPERATOR_ROLE) { @@ -148,15 +148,15 @@ 77 : : /** 78 : : * @return The number of rules inside the array 79 : : */ - 80 : : function rulesCountValidation() external view override returns (uint256) { - 81 : 69 : return _rulesValidation.length; + 80 : 70 : function rulesCountValidation() external view override returns (uint256) { + 81 : 70 : return _rulesValidation.length; 82 : : } 83 : : 84 : : /** 85 : : * @notice Get the index of a rule inside the list 86 : : * @return index if the rule is found, _rulesValidation.length otherwise 87 : : */ - 88 : : function getRuleIndexValidation( + 88 : 3 : function getRuleIndexValidation( 89 : : IRuleValidation rule_ 90 : : ) external view returns (uint256 index) { 91 : 3 : return RuleInternal._getRuleIndex(_rulesValidation, address(rule_)); @@ -167,7 +167,7 @@ 96 : : * @param ruleId index of the rule 97 : : * @return a rule address 98 : : */ - 99 : : function ruleValidation( + 99 : 1 : function ruleValidation( 100 : : uint256 ruleId 101 : : ) external view override returns (address) { 102 : 1 : return _rulesValidation[ruleId]; @@ -177,7 +177,7 @@ 106 : : * @notice Get all the rules 107 : : * @return An array of rules 108 : : */ - 109 : : function rulesValidation() + 109 : 5 : function rulesValidation() 110 : : external 111 : : view 112 : : override @@ -193,17 +193,17 @@ 122 : : * @notice Clear all the rules of the array of rules 123 : : * 124 : : */ - 125 : : function _clearRulesValidation() internal { - 126 : 25 : uint256 index; + 125 : 26 : function _clearRulesValidation() internal { + 126 : 26 : uint256 index; 127 : : // we remove the last element first since it is more optimized. - 128 : 25 : for (uint256 i = _rulesValidation.length; i > 0; --i) { + 128 : 26 : for (uint256 i = _rulesValidation.length; i > 0; --i) { 129 : : unchecked { 130 : : // don't underflow since i > 0 - 131 : 28 : index = i - 1; + 131 : 29 : index = i - 1; 132 : : } - 133 : 28 : _removeRuleValidation(_rulesValidation[index], index); + 133 : 29 : _removeRuleValidation(_rulesValidation[index], index); 134 : : } - 135 : 25 : emit ClearRules(_rulesValidation); + 135 : 26 : emit ClearRules(_rulesValidation); 136 : : } 137 : : 138 : : /** @@ -216,9 +216,9 @@ 145 : : * 146 : : * 147 : : */ - 148 : : function _removeRuleValidation(address rule_, uint256 index) internal { - 149 : 33 : RuleInternal._removeRule(_rulesValidation, rule_, index); - 150 : 32 : emit RemoveRule(address(rule_)); + 148 : 34 : function _removeRuleValidation(address rule_, uint256 index) internal { + 149 : 34 : RuleInternal._removeRule(_rulesValidation, rule_, index); + 150 : 33 : emit RemoveRule(address(rule_)); 151 : : } 152 : : } diff --git a/doc/coverage/coverage/src/modules/RuleInternal.sol.func-sort-c.html b/doc/coverage/coverage/src/modules/RuleInternal.sol.func-sort-c.html index 7456c15..73b3ecb 100644 --- a/doc/coverage/coverage/src/modules/RuleInternal.sol.func-sort-c.html +++ b/doc/coverage/coverage/src/modules/RuleInternal.sol.func-sort-c.html @@ -31,13 +31,13 @@ lcov.info Lines: - 29 - 29 + 33 + 33 100.0 % Date: - 2024-12-20 10:41:14 + 2025-07-21 17:42:16 Functions: 4 @@ -74,15 +74,15 @@ RuleInternal._setRules - 32 + 33 RuleInternal._removeRule - 55 + 56 RuleInternal._addRule - 203 + 90
diff --git a/doc/coverage/coverage/src/modules/RuleInternal.sol.func.html b/doc/coverage/coverage/src/modules/RuleInternal.sol.func.html index 239df15..88c2d21 100644 --- a/doc/coverage/coverage/src/modules/RuleInternal.sol.func.html +++ b/doc/coverage/coverage/src/modules/RuleInternal.sol.func.html @@ -31,13 +31,13 @@ lcov.info Lines: - 29 - 29 + 33 + 33 100.0 % Date: - 2024-12-20 10:41:14 + 2025-07-21 17:42:16 Functions: 4 @@ -70,7 +70,7 @@ RuleInternal._addRule - 203 + 90 RuleInternal._getRuleIndex @@ -78,11 +78,11 @@ RuleInternal._removeRule - 55 + 56 RuleInternal._setRules - 32 + 33
diff --git a/doc/coverage/coverage/src/modules/RuleInternal.sol.gcov.html b/doc/coverage/coverage/src/modules/RuleInternal.sol.gcov.html index cd50bce..9b855bb 100644 --- a/doc/coverage/coverage/src/modules/RuleInternal.sol.gcov.html +++ b/doc/coverage/coverage/src/modules/RuleInternal.sol.gcov.html @@ -31,13 +31,13 @@ lcov.info Lines: - 29 - 29 + 33 + 33 100.0 % Date: - 2024-12-20 10:41:14 + 2025-07-21 17:42:16 Functions: 4 @@ -87,21 +87,21 @@ 16 : : * Revert if one rule is a zero address or if the rule is already present 17 : : * 18 : : */ - 19 : : function _setRules(address[] calldata rules_) internal { - 20 [ + ]: 32 : if (rules_.length == 0) { + 19 : 33 : function _setRules(address[] calldata rules_) internal { + 20 [ + ]: 33 : if (rules_.length == 0) { 21 : 2 : revert RuleEngine_ArrayIsEmpty(); 22 : : } - 23 : 30 : for (uint256 i = 0; i < rules_.length; ) { - 24 [ + ]: 48 : if (address(rules_[i]) == address(0x0)) { + 23 : 31 : for (uint256 i = 0; i < rules_.length; ) { + 24 [ + ]: 49 : if (address(rules_[i]) == address(0x0)) { 25 : 2 : revert RuleEngine_RuleAddressZeroNotAllowed(); 26 : : } 27 [ + ]: 2 : if (_ruleIsPresent[rules_[i]]) { 28 : 2 : revert RuleEngine_RuleAlreadyExists(); 29 : : } - 30 : 44 : _ruleIsPresent[rules_[i]] = true; - 31 : 44 : emit AddRule(rules_[i]); + 30 : 45 : _ruleIsPresent[rules_[i]] = true; + 31 : 45 : emit AddRule(rules_[i]); 32 : : unchecked { - 33 : 44 : ++i; + 33 : 45 : ++i; 34 : : } 35 : : } 36 : : } @@ -111,15 +111,15 @@ 40 : : * Revert if one rule is a zero address or if the rule is already present 41 : : * 42 : : */ - 43 : : function _addRule(address[] storage _rules, address rule_) internal { - 44 [ + ]: 203 : if (address(rule_) == address(0x0)) { + 43 : 90 : function _addRule(address[] storage _rules, address rule_) internal { + 44 [ + ]: 90 : if (address(rule_) == address(0x0)) { 45 : 2 : revert RuleEngine_RuleAddressZeroNotAllowed(); 46 : : } 47 [ + ]: 2 : if (_ruleIsPresent[rule_]) { 48 : 2 : revert RuleEngine_RuleAlreadyExists(); 49 : : } - 50 : 199 : _rules.push(rule_); - 51 : 199 : _ruleIsPresent[rule_] = true; + 50 : 86 : _rules.push(rule_); + 51 : 86 : _ruleIsPresent[rule_] = true; 52 : : } 53 : : 54 : : /** @@ -132,27 +132,27 @@ 61 : : * 62 : : * 63 : : */ - 64 : : function _removeRule( + 64 : 56 : function _removeRule( 65 : : address[] storage _rules, 66 : : address rule_, 67 : : uint256 index 68 : : ) internal { - 69 [ + ]: 55 : if (_rules[index] != rule_) { + 69 [ + ]: 56 : if (_rules[index] != rule_) { 70 : 2 : revert RuleEngine_RuleDoNotMatch(); 71 : : } - 72 [ + ]: 53 : if (index != _rules.length - 1) { + 72 [ + ]: 54 : if (index != _rules.length - 1) { 73 : 4 : _rules[index] = _rules[_rules.length - 1]; 74 : : } - 75 : 53 : _rules.pop(); - 76 : 53 : _ruleIsPresent[rule_] = false; - 77 : 53 : emit RemoveRule(rule_); + 75 : 54 : _rules.pop(); + 76 : 54 : _ruleIsPresent[rule_] = false; + 77 : 54 : emit RemoveRule(rule_); 78 : : } 79 : : 80 : : /** 81 : : * @notice Get the index of a rule inside the list 82 : : * @return index if the rule is found, _rules.length otherwise 83 : : */ - 84 : : function _getRuleIndex( + 84 : 6 : function _getRuleIndex( 85 : : address[] storage _rules, 86 : : address rule_ 87 : : ) internal view returns (uint256 index) { diff --git a/doc/coverage/coverage/src/modules/index-sort-b.html b/doc/coverage/coverage/src/modules/index-sort-b.html index 1356192..dde184c 100644 --- a/doc/coverage/coverage/src/modules/index-sort-b.html +++ b/doc/coverage/coverage/src/modules/index-sort-b.html @@ -31,18 +31,18 @@ lcov.info Lines: - 81 - 81 - 100.0 % + 113 + 115 + 98.3 % Date: - 2024-12-20 10:41:14 + 2025-07-21 17:42:16 Functions: 27 - 27 - 100.0 % + 29 + 93.1 % @@ -82,38 +82,38 @@ Branches Sort by branch coverage - RuleEngineValidationCommon.sol + RuleEngineOperation.sol
100.0%
100.0 % - 19 / 19 + 33 / 33 100.0 % - 10 / 10 + 11 / 11 100.0 % 1 / 1 - RuleEngineValidation.sol + RuleEngineValidationCommon.sol
100.0%
100.0 % - 8 / 8 + 29 / 29 100.0 % - 2 / 2 + 10 / 10 100.0 % 1 / 1 - RuleEngineOperation.sol + RuleEngineValidation.sol -
100.0%
+
90.0%90.0%
- 100.0 % - 25 / 25 - 100.0 % - 11 / 11 + 90.0 % + 18 / 20 + 50.0 % + 2 / 4 100.0 % 2 / 2 @@ -123,7 +123,7 @@
100.0%
100.0 % - 29 / 29 + 33 / 33 100.0 % 4 / 4 100.0 % diff --git a/doc/coverage/coverage/src/modules/index-sort-f.html b/doc/coverage/coverage/src/modules/index-sort-f.html index f0cc112..6d3c954 100644 --- a/doc/coverage/coverage/src/modules/index-sort-f.html +++ b/doc/coverage/coverage/src/modules/index-sort-f.html @@ -31,18 +31,18 @@ lcov.info Lines: - 81 - 81 - 100.0 % + 113 + 115 + 98.3 % Date: - 2024-12-20 10:41:14 + 2025-07-21 17:42:16 Functions: 27 - 27 - 100.0 % + 29 + 93.1 % @@ -84,14 +84,14 @@ RuleEngineValidation.sol -
100.0%
+
90.0%90.0%
- 100.0 % - 8 / 8 + 90.0 % + 18 / 20 + 50.0 % + 2 / 4 100.0 % 2 / 2 - 100.0 % - 1 / 1 RuleInternal.sol @@ -99,7 +99,7 @@
100.0%
100.0 % - 29 / 29 + 33 / 33 100.0 % 4 / 4 100.0 % @@ -111,7 +111,7 @@
100.0%
100.0 % - 19 / 19 + 29 / 29 100.0 % 10 / 10 100.0 % @@ -123,11 +123,11 @@
100.0%
100.0 % - 25 / 25 + 33 / 33 100.0 % 11 / 11 100.0 % - 2 / 2 + 1 / 1 diff --git a/doc/coverage/coverage/src/modules/index-sort-l.html b/doc/coverage/coverage/src/modules/index-sort-l.html index 7d113ca..f159a9d 100644 --- a/doc/coverage/coverage/src/modules/index-sort-l.html +++ b/doc/coverage/coverage/src/modules/index-sort-l.html @@ -31,18 +31,18 @@ lcov.info Lines: - 81 - 81 - 100.0 % + 113 + 115 + 98.3 % Date: - 2024-12-20 10:41:14 + 2025-07-21 17:42:16 Functions: 27 - 27 - 100.0 % + 29 + 93.1 % @@ -84,14 +84,14 @@ RuleEngineValidation.sol -
100.0%
+
90.0%90.0%
- 100.0 % - 8 / 8 + 90.0 % + 18 / 20 + 50.0 % + 2 / 4 100.0 % 2 / 2 - 100.0 % - 1 / 1 RuleEngineValidationCommon.sol @@ -99,35 +99,35 @@
100.0%
100.0 % - 19 / 19 + 29 / 29 100.0 % 10 / 10 100.0 % 1 / 1 - RuleEngineOperation.sol + RuleInternal.sol
100.0%
100.0 % - 25 / 25 + 33 / 33 100.0 % - 11 / 11 + 4 / 4 100.0 % - 2 / 2 + 8 / 8 - RuleInternal.sol + RuleEngineOperation.sol
100.0%
100.0 % - 29 / 29 + 33 / 33 100.0 % - 4 / 4 + 11 / 11 100.0 % - 8 / 8 + 1 / 1 diff --git a/doc/coverage/coverage/src/modules/index.html b/doc/coverage/coverage/src/modules/index.html index 60ae93b..d45d484 100644 --- a/doc/coverage/coverage/src/modules/index.html +++ b/doc/coverage/coverage/src/modules/index.html @@ -31,18 +31,18 @@ lcov.info Lines: - 81 - 81 - 100.0 % + 113 + 115 + 98.3 % Date: - 2024-12-20 10:41:14 + 2025-07-21 17:42:16 Functions: 27 - 27 - 100.0 % + 29 + 93.1 % @@ -87,23 +87,23 @@
100.0%
100.0 % - 25 / 25 + 33 / 33 100.0 % 11 / 11 100.0 % - 2 / 2 + 1 / 1 RuleEngineValidation.sol -
100.0%
+
90.0%90.0%
- 100.0 % - 8 / 8 + 90.0 % + 18 / 20 + 50.0 % + 2 / 4 100.0 % 2 / 2 - 100.0 % - 1 / 1 RuleEngineValidationCommon.sol @@ -111,7 +111,7 @@
100.0%
100.0 % - 19 / 19 + 29 / 29 100.0 % 10 / 10 100.0 % @@ -123,7 +123,7 @@
100.0%
100.0 % - 29 / 29 + 33 / 33 100.0 % 4 / 4 100.0 % diff --git a/doc/coverage/coverage/src/rules/operation/RuleConditionalTransfer.sol.func-sort-c.html b/doc/coverage/coverage/src/rules/operation/RuleConditionalTransfer.sol.func-sort-c.html deleted file mode 100644 index 7f4ab01..0000000 --- a/doc/coverage/coverage/src/rules/operation/RuleConditionalTransfer.sol.func-sort-c.html +++ /dev/null @@ -1,153 +0,0 @@ - - - - - - - LCOV - lcov.info - src/rules/operation/RuleConditionalTransfer.sol - functions - - - - - - - - - - - - - - -
LCOV - code coverage report
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Current view:top level - src/rules/operation - RuleConditionalTransfer.sol (source / functions)HitTotalCoverage
Test:lcov.infoLines:10510699.1 %
Date:2024-12-20 10:41:14Functions:171894.4 %
Branches:3333100.0 %
-
- -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

Function Name Sort by function nameHit count Sort by hit count
RuleConditionalTransfer._msgData0
RuleConditionalTransfer.canReturnTransferRestrictionCode2
RuleConditionalTransfer.cancelTransferRequestBatch3
RuleConditionalTransfer.createTransferRequestBatch3
RuleConditionalTransfer.messageForTransferRestriction3
RuleConditionalTransfer.cancelTransferRequest6
RuleConditionalTransfer._cancelTransferRequest9
RuleConditionalTransfer.getRequestByStatus35
RuleConditionalTransfer.operateOnTransfer50
RuleConditionalTransfer.detectTransferRestriction56
RuleConditionalTransfer.getRequestTrade57
RuleConditionalTransfer._validateApproval97
RuleConditionalTransfer._validateBurnMint103
RuleConditionalTransfer._validateTransfer106
RuleConditionalTransfer.createTransferRequest114
RuleConditionalTransfer.158
RuleConditionalTransfer._contextSuffixLength829
RuleConditionalTransfer._msgSender829
-
-
- - - -
Generated by: LCOV version 1.16
-
- - - diff --git a/doc/coverage/coverage/src/rules/operation/RuleConditionalTransfer.sol.func.html b/doc/coverage/coverage/src/rules/operation/RuleConditionalTransfer.sol.func.html deleted file mode 100644 index fba2e82..0000000 --- a/doc/coverage/coverage/src/rules/operation/RuleConditionalTransfer.sol.func.html +++ /dev/null @@ -1,153 +0,0 @@ - - - - - - - LCOV - lcov.info - src/rules/operation/RuleConditionalTransfer.sol - functions - - - - - - - - - - - - - - -
LCOV - code coverage report
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Current view:top level - src/rules/operation - RuleConditionalTransfer.sol (source / functions)HitTotalCoverage
Test:lcov.infoLines:10510699.1 %
Date:2024-12-20 10:41:14Functions:171894.4 %
Branches:3333100.0 %
-
- -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

Function Name Sort by function nameHit count Sort by hit count
RuleConditionalTransfer.158
RuleConditionalTransfer._cancelTransferRequest9
RuleConditionalTransfer._contextSuffixLength829
RuleConditionalTransfer._msgData0
RuleConditionalTransfer._msgSender829
RuleConditionalTransfer._validateApproval97
RuleConditionalTransfer._validateBurnMint103
RuleConditionalTransfer._validateTransfer106
RuleConditionalTransfer.canReturnTransferRestrictionCode2
RuleConditionalTransfer.cancelTransferRequest6
RuleConditionalTransfer.cancelTransferRequestBatch3
RuleConditionalTransfer.createTransferRequest114
RuleConditionalTransfer.createTransferRequestBatch3
RuleConditionalTransfer.detectTransferRestriction56
RuleConditionalTransfer.getRequestByStatus35
RuleConditionalTransfer.getRequestTrade57
RuleConditionalTransfer.messageForTransferRestriction3
RuleConditionalTransfer.operateOnTransfer50
-
-
- - - -
Generated by: LCOV version 1.16
-
- - - diff --git a/doc/coverage/coverage/src/rules/operation/RuleConditionalTransfer.sol.gcov.html b/doc/coverage/coverage/src/rules/operation/RuleConditionalTransfer.sol.gcov.html deleted file mode 100644 index 476c0ca..0000000 --- a/doc/coverage/coverage/src/rules/operation/RuleConditionalTransfer.sol.gcov.html +++ /dev/null @@ -1,486 +0,0 @@ - - - - - - - LCOV - lcov.info - src/rules/operation/RuleConditionalTransfer.sol - - - - - - - - - - - - - - -
LCOV - code coverage report
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Current view:top level - src/rules/operation - RuleConditionalTransfer.sol (source / functions)HitTotalCoverage
Test:lcov.infoLines:10510699.1 %
Date:2024-12-20 10:41:14Functions:171894.4 %
Branches:3333100.0 %
-
- - - - - - - - -

-
           Branch data     Line data    Source code
-
-       1                 :            : // SPDX-License-Identifier: MPL-2.0
-       2                 :            : 
-       3                 :            : pragma solidity ^0.8.20;
-       4                 :            : 
-       5                 :            : import "OZ/access/AccessControl.sol";
-       6                 :            : import "../../interfaces/IRuleOperation.sol";
-       7                 :            : import "./../../modules/MetaTxModuleStandalone.sol";
-       8                 :            : import "./abstract/RuleConditionalTransferInvariantStorage.sol";
-       9                 :            : import "./abstract/RuleConditionalTransferOperator.sol";
-      10                 :            : import "../validation/abstract/RuleValidateTransfer.sol";
-      11                 :            : import "CMTAT/interfaces/engine/IRuleEngine.sol";
-      12                 :            : 
-      13                 :            : /**
-      14                 :            :  * @title RuleConditionalTransfer
-      15                 :            :  */
-      16                 :            : 
-      17                 :            : contract RuleConditionalTransfer is
-      18                 :            :     RuleValidateTransfer,
-      19                 :            :     IRuleOperation,
-      20                 :            :     RuleConditionalTransferOperator,
-      21                 :            :     MetaTxModuleStandalone
-      22                 :            : {
-      23                 :            :     /**
-      24                 :            :      * @param admin Address of the contract (Access Control)
-      25                 :            :      * @param forwarderIrrevocable Address of the forwarder, required for the gasless support
-      26                 :            :      */
-      27                 :            :     constructor(
-      28                 :            :         address admin,
-      29                 :            :         address forwarderIrrevocable,
-      30                 :            :         IRuleEngine ruleEngineContract,
-      31                 :            :         OPTION memory options_
-      32                 :            :     ) MetaTxModuleStandalone(forwarderIrrevocable) {
-      33            [ + ]:        158 :         if (admin == address(0)) {
-      34                 :          1 :             revert RuleConditionalTransfer_AdminWithAddressZeroNotAllowed();
-      35                 :            :         }
-      36                 :        157 :         _grantRole(DEFAULT_ADMIN_ROLE, admin);
-      37            [ + ]:        157 :         if (address(ruleEngineContract) != address(0x0)) {
-      38                 :        153 :             _grantRole(RULE_ENGINE_CONTRACT_ROLE, address(ruleEngineContract));
-      39                 :            :         }
-      40                 :        157 :         options = options_;
-      41                 :            :     }
-      42                 :            : 
-      43                 :            :     /*//////////////////////////////////////////////////////////////
-      44                 :            :                             PUBLIC/EXTERNAL FUNCTIONS
-      45                 :            :     //////////////////////////////////////////////////////////////*/
-      46                 :            :     /**
-      47                 :            :      * @notice function called by the RuleEngine
-      48                 :            :      * @dev Returns true if the transfer is valid, and false otherwise.
-      49                 :            :      * Add access control with the RuleEngine
-      50                 :            :      */
-      51                 :            :     function operateOnTransfer(
-      52                 :            :         address _from,
-      53                 :            :         address _to,
-      54                 :            :         uint256 _amount
-      55                 :            :     )
-      56                 :            :         public
-      57                 :            :         override
-      58                 :            :         onlyRole(RULE_ENGINE_CONTRACT_ROLE)
-      59                 :            :         returns (bool isValid)
-      60                 :            :     {
-      61         [ +  + ]:         50 :         if (_validateTransfer(_from, _to)) {
-      62                 :          8 :             return true;
-      63                 :            :         } else {
-      64                 :         42 :             bytes32 key = keccak256(abi.encode(_from, _to, _amount));
-      65         [ +  + ]:         42 :             if (_validateApproval(key)) {
-      66                 :         18 :                 _updateProcessedTransfer(key);
-      67                 :         18 :                 return true;
-      68                 :            :             } else {
-      69                 :         24 :                 return false;
-      70                 :            :             }
-      71                 :            :         }
-      72                 :            :     }
-      73                 :            : 
-      74                 :            :     /**
-      75                 :            :      * @notice Create a request of transfer for yourselves
-      76                 :            :      * @param to recipient of tokens
-      77                 :            :      * @param value amount of tokens to transfer
-      78                 :            :      */
-      79                 :            :     function createTransferRequest(address to, uint256 value) public {
-      80                 :            :         // WAIT => Will set a new delay to approve
-      81                 :            :         // APPROVED => will overwrite previous status
-      82                 :            :         // DENIED => reject
-      83                 :        117 :         address from = _msgSender();
-      84                 :        117 :         bytes32 key = keccak256(abi.encode(from, to, value));
-      85            [ + ]:        117 :         if (transferRequests[key].status == STATUS.DENIED) {
-      86                 :          1 :             revert RuleConditionalTransfer_TransferDenied();
-      87                 :            :         }
-      88         [ +  + ]:        116 :         if (_checkRequestStatus(key)) {
-      89                 :        113 :             uint256 requestIdLocal = requestId;
-      90                 :        113 :             TransferRequest memory newTransferApproval = TransferRequest({
-      91                 :            :                 key: key,
-      92                 :            :                 id: requestIdLocal,
-      93                 :            :                 keyElement: TransferRequestKeyElement({
-      94                 :            :                     from: from,
-      95                 :            :                     to: to,
-      96                 :            :                     value: value
-      97                 :            :                 }),
-      98                 :            :                 askTime: block.timestamp,
-      99                 :            :                 maxTime: 0,
-     100                 :            :                 status: STATUS.WAIT
-     101                 :            :             });
-     102                 :        113 :             transferRequests[key] = newTransferApproval;
-     103                 :        113 :             IdToKey[requestIdLocal] = key;
-     104                 :        113 :             emit transferWaiting(key, from, to, value, requestId);
-     105                 :        113 :             ++requestId;
-     106                 :            :         } else {
-     107                 :            :             // Overwrite previous approval
-     108                 :          3 :             transferRequests[key].askTime = block.timestamp;
-     109                 :          3 :             transferRequests[key].status = STATUS.WAIT;
-     110                 :          3 :             emit transferWaiting(
-     111                 :            :                 key,
-     112                 :            :                 from,
-     113                 :            :                 to,
-     114                 :            :                 value,
-     115                 :            :                 transferRequests[key].id
-     116                 :            :             );
-     117                 :            :         }
-     118                 :            :     }
-     119                 :            : 
-     120                 :            :     /**
-     121                 :            :      * @notice Batch version of {createTransferRequest}
-     122                 :            :      */
-     123                 :            :     function createTransferRequestBatch(
-     124                 :            :         address[] memory tos,
-     125                 :            :         uint256[] memory values
-     126                 :            :     ) public {
-     127            [ + ]:          3 :         if (tos.length == 0) {
-     128                 :          1 :             revert RuleConditionalTransfer_EmptyArray();
-     129                 :            :         }
-     130            [ + ]:          2 :         if (tos.length != values.length) {
-     131                 :          1 :             revert RuleConditionalTransfer_InvalidLengthArray();
-     132                 :            :         }
-     133                 :          1 :         for (uint256 i = 0; i < tos.length; ++i) {
-     134                 :          3 :             createTransferRequest(tos[i], values[i]);
-     135                 :            :         }
-     136                 :            :     }
-     137                 :            : 
-     138                 :            :     /**
-     139                 :            :      * @notice allow a token holder to cancel/reset his own request
-     140                 :            :      */
-     141                 :            :     function cancelTransferRequest(uint256 requestId_) public {
-     142                 :          6 :         _cancelTransferRequest(requestId_);
-     143                 :            :     }
-     144                 :            : 
-     145                 :            :     /**
-     146                 :            :      * @notice allow a token holder to cancel/reset his own request
-     147                 :            :      */
-     148                 :            :     function cancelTransferRequestBatch(uint256[] memory requestIds) public {
-     149            [ + ]:          3 :         if (requestIds.length == 0) {
-     150                 :          1 :             revert RuleConditionalTransfer_EmptyArray();
-     151                 :            :         }
-     152                 :            :         // Check id validity before performing actions
-     153                 :          2 :         for (uint256 i = 0; i < requestIds.length; ++i) {
-     154            [ + ]:          5 :             if (requestIds[i] + 1 > requestId) {
-     155                 :          1 :                 revert RuleConditionalTransfer_InvalidId();
-     156                 :            :             }
-     157                 :            :         }
-     158                 :          1 :         for (uint256 i = 0; i < requestIds.length; ++i) {
-     159                 :          3 :             _cancelTransferRequest(requestIds[i]);
-     160                 :            :         }
-     161                 :            :     }
-     162                 :            : 
-     163                 :            :     function getRequestTrade(
-     164                 :            :         address from,
-     165                 :            :         address to,
-     166                 :            :         uint256 value
-     167                 :            :     ) public view returns (TransferRequest memory) {
-     168                 :         57 :         bytes32 key = keccak256(abi.encode(from, to, value));
-     169                 :         57 :         return transferRequests[key];
-     170                 :            :     }
-     171                 :            : 
-     172                 :            :     /**
-     173                 :            :      * @notice get Trade by status
-     174                 :            :      * @param  _targetStatus The status of the transactions you want to retrieve
-     175                 :            :      * @return array with corresponding transactions
-     176                 :            :      */
-     177                 :            :     function getRequestByStatus(
-     178                 :            :         STATUS _targetStatus
-     179                 :            :     ) public view returns (TransferRequest[] memory) {
-     180                 :         35 :         uint totalRequestCount = requestId;
-     181                 :         35 :         uint requestCount = 0;
-     182                 :         35 :         uint currentIndex = 0;
-     183                 :            : 
-     184                 :            :         // We count the number of requests matching the criteria
-     185                 :         35 :         for (uint i = 0; i < totalRequestCount; ++i) {
-     186            [ + ]:         38 :             if (transferRequests[IdToKey[i]].status == _targetStatus) {
-     187                 :         36 :                 requestCount += 1;
-     188                 :            :             }
-     189                 :            :         }
-     190                 :            : 
-     191                 :            :         // We reserve the memory to store the trade
-     192                 :         35 :         TransferRequest[] memory requests = new TransferRequest[](requestCount);
-     193                 :            : 
-     194                 :            :         // We create an array with the list of trade
-     195                 :         35 :         for (uint i = 0; i < totalRequestCount; ++i) {
-     196            [ + ]:         38 :             if (transferRequests[IdToKey[i]].status == _targetStatus) {
-     197                 :            :                 //uint currentId = i + 1;
-     198                 :         36 :                 TransferRequest memory currentRequest = transferRequests[
-     199                 :            :                     IdToKey[i]
-     200                 :            :                 ];
-     201                 :         36 :                 requests[currentIndex] = currentRequest;
-     202                 :         36 :                 currentIndex += 1;
-     203                 :            :             }
-     204                 :            :         }
-     205                 :         35 :         return requests;
-     206                 :            :     }
-     207                 :            : 
-     208                 :            :     /**
-     209                 :            :      * @notice Check if the transfer is valid
-     210                 :            :      * @param _from the origin address
-     211                 :            :      * @param _to the destination address
-     212                 :            :      * @return The restricion code or REJECTED_CODE_BASE.TRANSFER_OK
-     213                 :            :      **/
-     214                 :            :     function detectTransferRestriction(
-     215                 :            :         address _from,
-     216                 :            :         address _to,
-     217                 :            :         uint256 _amount
-     218                 :            :     ) public view override returns (uint8) {
-     219                 :            :         // No need of approval if from and to are in the whitelist
-     220            [ + ]:         56 :         if (_validateTransfer(_from, _to)) {
-     221                 :          1 :             return uint8(REJECTED_CODE_BASE.TRANSFER_OK);
-     222                 :            :         }
-     223                 :         55 :         bytes32 key = keccak256(abi.encode(_from, _to, _amount));
-     224         [ +  + ]:         55 :         if (_validateApproval(key)) {
-     225                 :          8 :             return uint8(REJECTED_CODE_BASE.TRANSFER_OK);
-     226                 :            :         } else {
-     227                 :         47 :             return CODE_TRANSFER_REQUEST_NOT_APPROVED;
-     228                 :            :         }
-     229                 :            :     }
-     230                 :            : 
-     231                 :            :     /**
-     232                 :            :      * @notice To know if the restriction code is valid for this rule or not.
-     233                 :            :      * @param _restrictionCode The target restriction code
-     234                 :            :      * @return true if the restriction code is known, false otherwise
-     235                 :            :      **/
-     236                 :            :     function canReturnTransferRestrictionCode(
-     237                 :            :         uint8 _restrictionCode
-     238                 :            :     ) external pure override returns (bool) {
-     239                 :          2 :         return _restrictionCode == CODE_TRANSFER_REQUEST_NOT_APPROVED;
-     240                 :            :     }
-     241                 :            : 
-     242                 :            :     /**
-     243                 :            :      * @notice Return the corresponding message
-     244                 :            :      * @param _restrictionCode The target restriction code
-     245                 :            :      * @return true if the transfer is valid, false otherwise
-     246                 :            :      **/
-     247                 :            :     function messageForTransferRestriction(
-     248                 :            :         uint8 _restrictionCode
-     249                 :            :     ) external pure override returns (string memory) {
-     250         [ +  + ]:          3 :         if (_restrictionCode == CODE_TRANSFER_REQUEST_NOT_APPROVED) {
-     251                 :          2 :             return TEXT_TRANSFER_REQUEST_NOT_APPROVED;
-     252                 :            :         } else {
-     253                 :          1 :             return TEXT_CODE_NOT_FOUND;
-     254                 :            :         }
-     255                 :            :     }
-     256                 :            : 
-     257                 :            :     /*//////////////////////////////////////////////////////////////
-     258                 :            :                             INTERNAL FUNCTIONS
-     259                 :            :     //////////////////////////////////////////////////////////////*/
-     260                 :            :     function _validateTransfer(
-     261                 :            :         address _from,
-     262                 :            :         address _to
-     263                 :            :     ) internal view returns (bool) {
-     264                 :            :         // No need of approval if from and to are in the whitelist
-     265            [ + ]:        106 :         if (address(whitelistConditionalTransfer) != address(0)) {
-     266                 :            :             if (
-     267                 :         36 :                 whitelistConditionalTransfer.addressIsListed(_from) &&
-     268                 :          5 :                 whitelistConditionalTransfer.addressIsListed(_to)
-     269            [ + ]:          3 :             ) {
-     270                 :          3 :                 return true;
-     271                 :            :             }
-     272                 :            :         }
-     273                 :            : 
-     274                 :            :         // Mint & Burn
-     275            [ + ]:        103 :         if (_validateBurnMint(_from, _to)) {
-     276                 :          6 :             return true;
-     277                 :            :         }
-     278                 :         97 :         return false;
-     279                 :            :     }
-     280                 :            : 
-     281                 :            :     function _cancelTransferRequest(uint256 requestId_) internal {
-     282            [ + ]:          9 :         if (requestId_ + 1 > requestId) {
-     283                 :          1 :             revert RuleConditionalTransfer_InvalidId();
-     284                 :            :         }
-     285                 :          8 :         bytes32 key = IdToKey[requestId_];
-     286                 :            :         // Check Sender
-     287            [ + ]:          8 :         if (transferRequests[key].keyElement.from != _msgSender()) {
-     288                 :          1 :             revert RuleConditionalTransfer_InvalidSender();
-     289                 :            :         }
-     290                 :            :         // Check status
-     291                 :            :         if (
-     292                 :          7 :             transferRequests[key].status != STATUS.WAIT &&
-     293                 :          2 :             transferRequests[key].status != STATUS.APPROVED
-     294            [ + ]:          1 :         ) {
-     295                 :          1 :             revert RuleConditionalTransfer_Wrong_Status();
-     296                 :            :         }
-     297                 :          6 :         _resetRequestStatus(key);
-     298                 :            :     }
-     299                 :            : 
-     300                 :            :     /**
-     301                 :            :      *
-     302                 :            :      * @dev
-     303                 :            :      * Test burn and mint condition
-     304                 :            :      * Returns true if the transfer is valid, and false otherwise.
-     305                 :            :      *
-     306                 :            :      */
-     307                 :            :     function _validateBurnMint(
-     308                 :            :         address _from,
-     309                 :            :         address _to
-     310                 :            :     ) internal view returns (bool isValid) {
-     311                 :            :         // Mint & Burn
-     312                 :            :         if (
-     313                 :        103 :             (_from == address(0) &&
-     314                 :            :                 options.issuance.authorizedMintWithoutApproval) ||
-     315                 :            :             (_to == address(0) &&
-     316                 :            :                 options.issuance.authorizedBurnWithoutApproval)
-     317            [ + ]:          6 :         ) {
-     318                 :          6 :             return true;
-     319                 :            :         }
-     320                 :         97 :         return false;
-     321                 :            :     }
-     322                 :            : 
-     323                 :            :     /**
-     324                 :            :      *
-     325                 :            :      * @dev
-     326                 :            :      * Test transfer approval condition
-     327                 :            :      * Returns true if the transfer is valid, and false otherwise.
-     328                 :            :      */
-     329                 :            :     function _validateApproval(
-     330                 :            :         bytes32 key
-     331                 :            :     ) internal view returns (bool isValid) {
-     332                 :            :         // If automatic approval is activate and time to approve the request has passed
-     333                 :         97 :         if(transferRequests[key].status == STATUS.NONE
-     334                 :            :         ||
-     335                 :         50 :         transferRequests[key].status == STATUS.DENIED
-     336                 :            :         || 
-     337                 :         47 :         transferRequests[key].status == STATUS.EXECUTED)
-     338            [ + ]:         50 :         {
-     339                 :         50 :             return false;
-     340                 :            :         }
-     341                 :         47 :         bool isTransferApproved;
-     342                 :         47 :         bool automaticApprovalCondition;
-     343            [ + ]:         47 :         if(transferRequests[key].status ==
-     344            [ + ]:         20 :             STATUS.APPROVED){
-     345                 :         20 :                  isTransferApproved = (transferRequests[key].maxTime >= block.timestamp);
-     346                 :            :         } else if(options
-     347                 :            :             .automaticApproval
-     348            [ + ]:         27 :             .isActivate){
-     349                 :            :         // Warning: overflow possible if timeLimitBeforeAutomaticApproval == max(uint256)
-     350                 :         27 :                  automaticApprovalCondition= block.timestamp >=
-     351                 :            :             (transferRequests[key].askTime +
-     352                 :            :                 options.automaticApproval.timeLimitBeforeAutomaticApproval);
-     353                 :            :         }
-     354                 :            :         // If the transfer is approved and delay to perform the transfer is respected
-     355         [ +  + ]:         47 :         if (automaticApprovalCondition || isTransferApproved) {
-     356                 :         26 :             return true;
-     357                 :            :         } else {
-     358                 :         21 :             return false;
-     359                 :            :         }
-     360                 :            :     }
-     361                 :            : 
-     362                 :            :     /*//////////////////////////////////////////////////////////////
-     363                 :            :                            ERC-2771
-     364                 :            :     //////////////////////////////////////////////////////////////*/
-     365                 :            : 
-     366                 :            :     /**
-     367                 :            :      * @dev This surcharge is not necessary if you do not use the MetaTxModule
-     368                 :            :      */
-     369                 :            :     function _msgSender()
-     370                 :            :         internal
-     371                 :            :         view
-     372                 :            :         override(ERC2771Context, Context)
-     373                 :            :         returns (address sender)
-     374                 :            :     {
-     375                 :        829 :         return ERC2771Context._msgSender();
-     376                 :            :     }
-     377                 :            : 
-     378                 :            :     /**
-     379                 :            :      * @dev This surcharge is not necessary if you do not use the MetaTxModule
-     380                 :            :      */
-     381                 :            :     function _msgData()
-     382                 :            :         internal
-     383                 :            :         view
-     384                 :            :         override(ERC2771Context, Context)
-     385                 :            :         returns (bytes calldata)
-     386                 :            :     {
-     387                 :          0 :         return ERC2771Context._msgData();
-     388                 :            :     }
-     389                 :            : 
-     390                 :            :     /**
-     391                 :            :      * @dev This surcharge is not necessary if you do not use the MetaTxModule
-     392                 :            :      */
-     393                 :            :     function _contextSuffixLength()
-     394                 :            :         internal
-     395                 :            :         view
-     396                 :            :         override(ERC2771Context, Context)
-     397                 :            :         returns (uint256)
-     398                 :            :     {
-     399                 :        829 :         return ERC2771Context._contextSuffixLength();
-     400                 :            :     }
-     401                 :            : }
-
-
-
- - - - -
Generated by: LCOV version 1.16
-
- - - diff --git a/doc/coverage/coverage/src/rules/operation/abstract/RuleConditionalTransferOperator.sol.func-sort-c.html b/doc/coverage/coverage/src/rules/operation/abstract/RuleConditionalTransferOperator.sol.func-sort-c.html deleted file mode 100644 index acebdd7..0000000 --- a/doc/coverage/coverage/src/rules/operation/abstract/RuleConditionalTransferOperator.sol.func-sort-c.html +++ /dev/null @@ -1,161 +0,0 @@ - - - - - - - LCOV - lcov.info - src/rules/operation/abstract/RuleConditionalTransferOperator.sol - functions - - - - - - - - - - - - - - -
LCOV - code coverage report
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Current view:top level - src/rules/operation/abstract - RuleConditionalTransferOperator.sol (source / functions)HitTotalCoverage
Test:lcov.infoLines:113113100.0 %
Date:2024-12-20 10:41:14Functions:2020100.0 %
Branches:3131100.0 %
-
- -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

Function Name Sort by function nameHit count Sort by hit count
RuleConditionalTransferOperator.createTransferRequestWithApprovalBatch3
RuleConditionalTransferOperator.resetRequestStatus3
RuleConditionalTransferOperator.resetRequestStatusBatch3
RuleConditionalTransferOperator.setAutomaticTransfer4
RuleConditionalTransferOperator.approveTransferRequestWithId5
RuleConditionalTransferOperator.setTimeLimit5
RuleConditionalTransferOperator.createTransferRequestWithApproval6
RuleConditionalTransferOperator.approveTransferRequestBatch7
RuleConditionalTransferOperator.approveTransferRequestBatchWithId7
RuleConditionalTransferOperator.setIssuanceOptions7
RuleConditionalTransferOperator._resetRequestStatus10
RuleConditionalTransferOperator.setAutomaticApproval10
RuleConditionalTransferOperator._createTransferRequestWithApproval17
RuleConditionalTransferOperator._updateProcessedTransfer18
RuleConditionalTransferOperator.setConditionalWhitelist26
RuleConditionalTransferOperator.approveTransferRequest40
RuleConditionalTransferOperator._approveTransferRequestKeyElement48
RuleConditionalTransferOperator._approveRequest53
RuleConditionalTransferOperator._checkRequestStatus133
RuleConditionalTransferOperator.hasRole310
-
-
- - - -
Generated by: LCOV version 1.16
-
- - - diff --git a/doc/coverage/coverage/src/rules/operation/abstract/RuleConditionalTransferOperator.sol.func.html b/doc/coverage/coverage/src/rules/operation/abstract/RuleConditionalTransferOperator.sol.func.html deleted file mode 100644 index bbcca68..0000000 --- a/doc/coverage/coverage/src/rules/operation/abstract/RuleConditionalTransferOperator.sol.func.html +++ /dev/null @@ -1,161 +0,0 @@ - - - - - - - LCOV - lcov.info - src/rules/operation/abstract/RuleConditionalTransferOperator.sol - functions - - - - - - - - - - - - - - -
LCOV - code coverage report
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Current view:top level - src/rules/operation/abstract - RuleConditionalTransferOperator.sol (source / functions)HitTotalCoverage
Test:lcov.infoLines:113113100.0 %
Date:2024-12-20 10:41:14Functions:2020100.0 %
Branches:3131100.0 %
-
- -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

Function Name Sort by function nameHit count Sort by hit count
RuleConditionalTransferOperator._approveRequest53
RuleConditionalTransferOperator._approveTransferRequestKeyElement48
RuleConditionalTransferOperator._checkRequestStatus133
RuleConditionalTransferOperator._createTransferRequestWithApproval17
RuleConditionalTransferOperator._resetRequestStatus10
RuleConditionalTransferOperator._updateProcessedTransfer18
RuleConditionalTransferOperator.approveTransferRequest40
RuleConditionalTransferOperator.approveTransferRequestBatch7
RuleConditionalTransferOperator.approveTransferRequestBatchWithId7
RuleConditionalTransferOperator.approveTransferRequestWithId5
RuleConditionalTransferOperator.createTransferRequestWithApproval6
RuleConditionalTransferOperator.createTransferRequestWithApprovalBatch3
RuleConditionalTransferOperator.hasRole310
RuleConditionalTransferOperator.resetRequestStatus3
RuleConditionalTransferOperator.resetRequestStatusBatch3
RuleConditionalTransferOperator.setAutomaticApproval10
RuleConditionalTransferOperator.setAutomaticTransfer4
RuleConditionalTransferOperator.setConditionalWhitelist26
RuleConditionalTransferOperator.setIssuanceOptions7
RuleConditionalTransferOperator.setTimeLimit5
-
-
- - - -
Generated by: LCOV version 1.16
-
- - - diff --git a/doc/coverage/coverage/src/rules/operation/abstract/RuleConditionalTransferOperator.sol.gcov.html b/doc/coverage/coverage/src/rules/operation/abstract/RuleConditionalTransferOperator.sol.gcov.html deleted file mode 100644 index 8a6d8ca..0000000 --- a/doc/coverage/coverage/src/rules/operation/abstract/RuleConditionalTransferOperator.sol.gcov.html +++ /dev/null @@ -1,558 +0,0 @@ - - - - - - - LCOV - lcov.info - src/rules/operation/abstract/RuleConditionalTransferOperator.sol - - - - - - - - - - - - - - -
LCOV - code coverage report
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Current view:top level - src/rules/operation/abstract - RuleConditionalTransferOperator.sol (source / functions)HitTotalCoverage
Test:lcov.infoLines:113113100.0 %
Date:2024-12-20 10:41:14Functions:2020100.0 %
Branches:3131100.0 %
-
- - - - - - - - -

-
           Branch data     Line data    Source code
-
-       1                 :            : // SPDX-License-Identifier: MPL-2.0
-       2                 :            : 
-       3                 :            : pragma solidity ^0.8.20;
-       4                 :            : 
-       5                 :            : import "OZ/access/AccessControl.sol";
-       6                 :            : import "./RuleConditionalTransferInvariantStorage.sol";
-       7                 :            : import "OZ/token/ERC20/utils/SafeERC20.sol";
-       8                 :            : 
-       9                 :            : /**
-      10                 :            :  * @title Restricted functions
-      11                 :            :  */
-      12                 :            : abstract contract RuleConditionalTransferOperator is
-      13                 :            :     AccessControl,
-      14                 :            :     RuleConditionalTransferInvariantStorage
-      15                 :            : {
-      16                 :            :     // Security
-      17                 :            :     using SafeERC20 for IERC20;
-      18                 :            :     /* ============ State Variables ============ */
-      19                 :            :     OPTION public options;
-      20                 :            :     uint256 public requestId;
-      21                 :            :     mapping(uint256 => bytes32) public IdToKey;
-      22                 :            :     mapping(bytes32 => TransferRequest) public transferRequests;
-      23                 :            :     RuleWhitelist public whitelistConditionalTransfer;
-      24                 :            : 
-      25                 :            :     /*//////////////////////////////////////////////////////////////
-      26                 :            :                             PUBLIC/EXTERNAL FUNCTIONS
-      27                 :            :     //////////////////////////////////////////////////////////////*/
-      28                 :            : 
-      29                 :            :     /**
-      30                 :            :      * @notice set a whitelist. A transfer does not need of an approved request if from and to are in the whitelist
-      31                 :            :      */
-      32                 :            :     function setConditionalWhitelist(
-      33                 :            :         RuleWhitelist newWhitelistConditionalTransfer
-      34                 :            :     ) public onlyRole(RULE_CONDITIONAL_TRANSFER_OPERATOR_ROLE) {
-      35                 :         26 :         whitelistConditionalTransfer = newWhitelistConditionalTransfer;
-      36                 :         26 :         emit WhitelistConditionalTransfer(newWhitelistConditionalTransfer);
-      37                 :            :     }
-      38                 :            : 
-      39                 :            :     /**
-      40                 :            :      * @notice set/unset the issuance options (mint & burn)
-      41                 :            :      */
-      42                 :            :     function setIssuanceOptions(
-      43                 :            :         ISSUANCE calldata issuance_
-      44                 :            :     ) public onlyRole(RULE_CONDITIONAL_TRANSFER_OPERATOR_ROLE) {
-      45                 :            :         if (
-      46                 :          6 :             options.issuance.authorizedMintWithoutApproval !=
-      47                 :            :             issuance_.authorizedMintWithoutApproval
-      48            [ + ]:          3 :         ) {
-      49                 :          3 :             options.issuance.authorizedMintWithoutApproval = issuance_
-      50                 :            :                 .authorizedMintWithoutApproval;
-      51                 :            :         }
-      52                 :            :         if (
-      53                 :          6 :             options.issuance.authorizedBurnWithoutApproval !=
-      54                 :            :             issuance_.authorizedBurnWithoutApproval
-      55            [ + ]:          3 :         ) {
-      56                 :          3 :             options.issuance.authorizedBurnWithoutApproval = issuance_
-      57                 :            :                 .authorizedBurnWithoutApproval;
-      58                 :            :         }
-      59                 :            :     }
-      60                 :            : 
-      61                 :            :     /**
-      62                 :            :      * @notice set/unset the option to perform the transfer if the request is approved by the rule operator.
-      63                 :            :      * To perform the transfer, the token holder has to approve the rule to spend tokens on his behalf (standard ERC-20 approval).
-      64                 :            :      * If the allowance is not sufficient, the request will be approved, but without performing the transfer.
-      65                 :            :      */
-      66                 :            :     function setAutomaticTransfer(
-      67                 :            :         AUTOMATIC_TRANSFER calldata automaticTransfer_
-      68                 :            :     ) public onlyRole(RULE_CONDITIONAL_TRANSFER_OPERATOR_ROLE) {
-      69                 :            :         if (
-      70                 :          3 :             automaticTransfer_.isActivate !=
-      71                 :            :             options.automaticTransfer.isActivate
-      72            [ + ]:          2 :         ) {
-      73                 :          2 :             options.automaticTransfer.isActivate = automaticTransfer_
-      74                 :            :                 .isActivate;
-      75                 :            :         }
-      76                 :            :         // No need to put the cmtat to zero to deactivate automaticTransfer
-      77                 :            :         if (
-      78                 :          3 :             address(automaticTransfer_.cmtat) !=
-      79                 :            :             address(options.automaticTransfer.cmtat)
-      80            [ + ]:          2 :         ) {
-      81                 :          2 :             options.automaticTransfer.cmtat = automaticTransfer_.cmtat;
-      82                 :            :         }
-      83                 :            :     }
-      84                 :            : 
-      85                 :            :     /**
-      86                 :            :      * @notice set time limit for new requests (Approval and transfer)
-      87                 :            :      * timeLimitToApprove: time limit for an operator to approve a request
-      88                 :            :      * timeLimitToTransfer: once a request is approved, time limit for the token holder to perform the transfer
-      89                 :            :      */
-      90                 :            :     function setTimeLimit(
-      91                 :            :         TIME_LIMIT memory timeLimit_
-      92                 :            :     ) public onlyRole(RULE_CONDITIONAL_TRANSFER_OPERATOR_ROLE) {
-      93                 :            :         if (
-      94                 :          4 :             options.timeLimit.timeLimitToApprove !=
-      95                 :            :             timeLimit_.timeLimitToApprove
-      96            [ + ]:          4 :         ) {
-      97                 :          4 :             options.timeLimit.timeLimitToApprove = timeLimit_
-      98                 :            :                 .timeLimitToApprove;
-      99                 :            :         }
-     100                 :            :         if (
-     101                 :          4 :             options.timeLimit.timeLimitToTransfer !=
-     102                 :            :             timeLimit_.timeLimitToTransfer
-     103            [ + ]:          4 :         ) {
-     104                 :          4 :             options.timeLimit.timeLimitToTransfer = timeLimit_
-     105                 :            :                 .timeLimitToTransfer;
-     106                 :            :         }
-     107                 :            :     }
-     108                 :            : 
-     109                 :            :     /**
-     110                 :            :      * @notice  If the transfer is not approved or denied within {timeLimitBeforeAutomaticApproval},
-     111                 :            :      * the request is considered as approved during a transfer.
-     112                 :            :      *
-     113                 :            :      */
-     114                 :            :     function setAutomaticApproval(
-     115                 :            :         AUTOMATIC_APPROVAL memory automaticApproval_
-     116                 :            :     ) public onlyRole(RULE_CONDITIONAL_TRANSFER_OPERATOR_ROLE) {
-     117                 :            :         if (
-     118                 :          9 :             options.automaticApproval.isActivate !=
-     119                 :            :             automaticApproval_.isActivate
-     120            [ + ]:          6 :         ) {
-     121                 :          6 :             options.automaticApproval.isActivate = automaticApproval_
-     122                 :            :                 .isActivate;
-     123                 :            :         }
-     124                 :            :         if (
-     125                 :          9 :             options.automaticApproval.timeLimitBeforeAutomaticApproval !=
-     126                 :            :             automaticApproval_.timeLimitBeforeAutomaticApproval
-     127            [ + ]:          9 :         ) {
-     128                 :          9 :             options
-     129                 :            :                 .automaticApproval
-     130                 :            :                 .timeLimitBeforeAutomaticApproval = automaticApproval_
-     131                 :            :                 .timeLimitBeforeAutomaticApproval;
-     132                 :            :         }
-     133                 :            :     }
-     134                 :            : 
-     135                 :            :     /**
-     136                 :            :      * @notice create a transfer request directly approved
-     137                 :            :      */
-     138                 :            :     function createTransferRequestWithApproval(
-     139                 :            :         TransferRequestKeyElement calldata keyElement
-     140                 :            :     ) public onlyRole(RULE_CONDITIONAL_TRANSFER_OPERATOR_ROLE) {
-     141                 :          5 :         _createTransferRequestWithApproval(keyElement);
-     142                 :            :     }
-     143                 :            : 
-     144                 :            :     /**
-     145                 :            :      * @notice approve a transferRequest
-     146                 :            :      * @param keyElement contains from, to, value
-     147                 :            :      * @param partialValue amount approved. Put 0 if all the amount specified by value is approved.
-     148                 :            :      * @param isApproved approved (true) or refused (false). Put true if you use partialApproval
-     149                 :            :      */
-     150                 :            :     function approveTransferRequest(
-     151                 :            :         TransferRequestKeyElement calldata keyElement,
-     152                 :            :         uint256 partialValue,
-     153                 :            :         bool isApproved
-     154                 :            :     ) public onlyRole(RULE_CONDITIONAL_TRANSFER_OPERATOR_ROLE) {
-     155                 :         39 :         _approveTransferRequestKeyElement(keyElement, partialValue, isApproved);
-     156                 :            :     }
-     157                 :            : 
-     158                 :            :     /**
-     159                 :            :      * @notice approve a transferRequestby using its id
-     160                 :            :      */
-     161                 :            :     function approveTransferRequestWithId(
-     162                 :            :         uint256 requestId_,
-     163                 :            :         bool isApproved
-     164                 :            :     ) public onlyRole(RULE_CONDITIONAL_TRANSFER_OPERATOR_ROLE) {
-     165            [ + ]:          4 :         if (requestId_ + 1 > requestId) {
-     166                 :          2 :             revert RuleConditionalTransfer_InvalidId();
-     167                 :            :         }
-     168                 :          2 :         TransferRequest memory transferRequest = transferRequests[
-     169                 :            :             IdToKey[requestId_]
-     170                 :            :         ];
-     171                 :          2 :         _approveRequest(transferRequest, isApproved);
-     172                 :            :     }
-     173                 :            : 
-     174                 :            :     /**
-     175                 :            :      * @notice reset to None the status of a request
-     176                 :            :      */
-     177                 :            :     function resetRequestStatus(
-     178                 :            :         uint256 requestId_
-     179                 :            :     ) public onlyRole(RULE_CONDITIONAL_TRANSFER_OPERATOR_ROLE) {
-     180            [ + ]:          2 :         if (requestId_ + 1 > requestId) {
-     181                 :          1 :             revert RuleConditionalTransfer_InvalidId();
-     182                 :            :         }
-     183                 :          1 :         bytes32 key = IdToKey[requestId_];
-     184                 :          1 :         _resetRequestStatus(key);
-     185                 :            :     }
-     186                 :            : 
-     187                 :            :     /* ============ Batch function ============ */
-     188                 :            :     /**
-     189                 :            :      * @notice Batch version of {approveTransferRequestWithId}
-     190                 :            :      */
-     191                 :            :     function approveTransferRequestBatchWithId(
-     192                 :            :         uint256[] calldata requestId_,
-     193                 :            :         bool[] calldata isApproved
-     194                 :            :     ) public onlyRole(RULE_CONDITIONAL_TRANSFER_OPERATOR_ROLE) {
-     195            [ + ]:          5 :         if (requestId_.length == 0) {
-     196                 :          1 :             revert RuleConditionalTransfer_EmptyArray();
-     197                 :            :         }
-     198            [ + ]:          4 :         if (requestId_.length != isApproved.length) {
-     199                 :          1 :             revert RuleConditionalTransfer_InvalidLengthArray();
-     200                 :            :         }
-     201                 :            :         // Check id validity before performing actions
-     202                 :          3 :         for (uint256 i = 0; i < requestId_.length; ++i) {
-     203            [ + ]:         11 :             if (requestId_[i] + 1 > requestId) {
-     204                 :          1 :                 revert RuleConditionalTransfer_InvalidId();
-     205                 :            :             }
-     206                 :            :         }
-     207                 :          2 :         for (uint256 i = 0; i < requestId_.length; ++i) {
-     208                 :          5 :             TransferRequest memory transferRequest = transferRequests[
-     209                 :            :                 IdToKey[requestId_[i]]
-     210                 :            :             ];
-     211                 :          5 :             _approveRequest(transferRequest, isApproved[i]);
-     212                 :            :         }
-     213                 :            :     }
-     214                 :            : 
-     215                 :            :     /**
-     216                 :            :      * @notice Batch version of {approveTransferRequest}
-     217                 :            :      */
-     218                 :            :     function approveTransferRequestBatch(
-     219                 :            :         TransferRequestKeyElement[] calldata keyElements,
-     220                 :            :         uint256[] calldata partialValues,
-     221                 :            :         bool[] calldata isApproved
-     222                 :            :     ) public onlyRole(RULE_CONDITIONAL_TRANSFER_OPERATOR_ROLE) {
-     223            [ + ]:          6 :         if (keyElements.length == 0) {
-     224                 :          1 :             revert RuleConditionalTransfer_EmptyArray();
-     225                 :            :         }
-     226                 :            :         if (
-     227                 :          5 :             (keyElements.length != partialValues.length) ||
-     228                 :            :             (partialValues.length != isApproved.length)
-     229            [ + ]:          3 :         ) {
-     230                 :          3 :             revert RuleConditionalTransfer_InvalidLengthArray();
-     231                 :            :         }
-     232                 :          2 :         for (uint256 i = 0; i < keyElements.length; ++i) {
-     233                 :          9 :             _approveTransferRequestKeyElement(
-     234                 :            :                 keyElements[i],
-     235                 :            :                 partialValues[i],
-     236                 :            :                 isApproved[i]
-     237                 :            :             );
-     238                 :            :         }
-     239                 :            :     }
-     240                 :            : 
-     241                 :            :     /**
-     242                 :            :      * @notice Batch version of {createTransferRequestWithApproval}
-     243                 :            :      */
-     244                 :            :     function createTransferRequestWithApprovalBatch(
-     245                 :            :         TransferRequestKeyElement[] calldata keyElements
-     246                 :            :     ) public onlyRole(RULE_CONDITIONAL_TRANSFER_OPERATOR_ROLE) {
-     247            [ + ]:          2 :         if (keyElements.length == 0) {
-     248                 :          1 :             revert RuleConditionalTransfer_EmptyArray();
-     249                 :            :         }
-     250                 :          1 :         for (uint256 i = 0; i < keyElements.length; ++i) {
-     251                 :          4 :             _createTransferRequestWithApproval(keyElements[i]);
-     252                 :            :         }
-     253                 :            :     }
-     254                 :            : 
-     255                 :            :     /**
-     256                 :            :      * @notice Batch version of {resetRequestStatus}
-     257                 :            :      */
-     258                 :            :     function resetRequestStatusBatch(
-     259                 :            :         uint256[] memory requestIds
-     260                 :            :     ) public onlyRole(RULE_CONDITIONAL_TRANSFER_OPERATOR_ROLE) {
-     261            [ + ]:          3 :         if (requestIds.length == 0) {
-     262                 :          1 :             revert RuleConditionalTransfer_EmptyArray();
-     263                 :            :         }
-     264                 :            :         // Check id validity before performing actions
-     265                 :          2 :         for (uint256 i = 0; i < requestIds.length; ++i) {
-     266            [ + ]:          4 :             if (requestIds[i] + 1 > requestId) {
-     267                 :          1 :                 revert RuleConditionalTransfer_InvalidId();
-     268                 :            :             }
-     269                 :            :         }
-     270                 :          1 :         for (uint256 i = 0; i < requestIds.length; ++i) {
-     271                 :          3 :             bytes32 key = IdToKey[requestIds[i]];
-     272                 :          3 :             _resetRequestStatus(key);
-     273                 :            :         }
-     274                 :            :     }
-     275                 :            : 
-     276                 :            :     /* ============ ACCESS CONTROL ============ */
-     277                 :            :     /**
-     278                 :            :      * @dev Returns `true` if `account` has been granted `role`.
-     279                 :            :      */
-     280                 :            :     function hasRole(
-     281                 :            :         bytes32 role,
-     282                 :            :         address account
-     283                 :            :     ) public view virtual override(AccessControl) returns (bool) {
-     284                 :            :         // The Default Admin has all roles
-     285            [ + ]:        704 :         if (AccessControl.hasRole(DEFAULT_ADMIN_ROLE, account)) {
-     286                 :        137 :             return true;
-     287                 :            :         }
-     288                 :        567 :         return AccessControl.hasRole(role, account);
-     289                 :            :     }
-     290                 :            : 
-     291                 :            :     /*//////////////////////////////////////////////////////////////
-     292                 :            :                             INTERNAL FUNCTIONS
-     293                 :            :     //////////////////////////////////////////////////////////////*/
-     294                 :            :     function _approveTransferRequestKeyElement(
-     295                 :            :         TransferRequestKeyElement calldata keyElement,
-     296                 :            :         uint256 partialValue,
-     297                 :            :         bool isApproved
-     298                 :            :     ) internal {
-     299            [ + ]:         48 :         if (partialValue > keyElement.value) {
-     300                 :          1 :             revert RuleConditionalTransfer_InvalidValueApproved();
-     301                 :            :         }
-     302                 :         47 :         bytes32 key = keccak256(
-     303                 :            :             abi.encode(keyElement.from, keyElement.to, keyElement.value)
-     304                 :            :         );
-     305                 :         47 :         TransferRequest memory transferRequest = transferRequests[key];
-     306         [ +  + ]:         47 :         if (partialValue > 0) {
-     307            [ + ]:          9 :             if (!isApproved) {
-     308                 :          1 :                 revert RuleConditionalTransfer_CannotDeniedPartially();
-     309                 :            :             }
-     310                 :            :             // Denied the first request
-     311                 :          8 :             _approveRequest(transferRequest, false);
-     312                 :            :             // Create new request
-     313                 :          8 :             _createTransferRequestWithApproval(
-     314                 :            :                 TransferRequestKeyElement({
-     315                 :            :                     from: keyElement.from,
-     316                 :            :                     to: keyElement.to,
-     317                 :            :                     value: partialValue
-     318                 :            :                 })
-     319                 :            :             );
-     320                 :            :         } else {
-     321                 :         38 :             _approveRequest(transferRequest, isApproved);
-     322                 :            :         }
-     323                 :            :     }
-     324                 :            : 
-     325                 :            :     function _createTransferRequestWithApproval(
-     326                 :            :         TransferRequestKeyElement memory keyElement_
-     327                 :            :     ) internal {
-     328                 :            :         // WAIT => Will overwrite
-     329                 :            :         // APPROVED => will overwrite previous status with a new delay
-     330                 :            :         // DENIED => will overwrite
-     331                 :         17 :         bytes32 key = keccak256(
-     332                 :            :             abi.encode(keyElement_.from, keyElement_.to, keyElement_.value)
-     333                 :            :         );
-     334         [ +  + ]:         17 :         if (_checkRequestStatus(key)) {
-     335                 :            :             // Only if it is a new request
-     336                 :         16 :             TransferRequest memory newTransferApproval = TransferRequest({
-     337                 :            :                 key: key,
-     338                 :            :                 id: requestId,
-     339                 :            :                 keyElement: keyElement_,
-     340                 :            :                 askTime: 0,
-     341                 :            :                 // Warning: overflow possible if timeLimitToTransfer == max(uint256)
-     342                 :            :                 maxTime: block.timestamp +
-     343                 :            :                     options.timeLimit.timeLimitToTransfer,
-     344                 :            :                 status: STATUS.APPROVED
-     345                 :            :             });
-     346                 :         16 :             transferRequests[key] = newTransferApproval;
-     347                 :         16 :             IdToKey[requestId] = key;
-     348                 :         16 :             emit transferApproved(
-     349                 :            :                 key,
-     350                 :            :                 keyElement_.from,
-     351                 :            :                 keyElement_.to,
-     352                 :            :                 keyElement_.value,
-     353                 :            :                 requestId
-     354                 :            :             );
-     355                 :         16 :             ++requestId;
-     356                 :            :         } else {
-     357                 :            :             // Overwrite previous approval
-     358                 :            :             // Warning: overflow possible if timeLimitToTransfer == max(uint256)
-     359                 :          1 :             transferRequests[key].maxTime =
-     360                 :            :                 block.timestamp +
-     361                 :            :                 options.timeLimit.timeLimitToTransfer;
-     362                 :          1 :             transferRequests[key].status = STATUS.APPROVED;
-     363                 :          1 :             emit transferApproved(
-     364                 :            :                 key,
-     365                 :            :                 keyElement_.from,
-     366                 :            :                 keyElement_.to,
-     367                 :            :                 keyElement_.value,
-     368                 :            :                 transferRequests[key].id
-     369                 :            :             );
-     370                 :            :         }
-     371                 :            :     }
-     372                 :            : 
-     373                 :            :     function _resetRequestStatus(bytes32 key) internal {
-     374                 :         10 :         transferRequests[key].status = STATUS.NONE;
-     375                 :         10 :         emit transferReset(
-     376                 :            :             key,
-     377                 :            :             transferRequests[key].keyElement.from,
-     378                 :            :             transferRequests[key].keyElement.to,
-     379                 :            :             transferRequests[key].keyElement.value,
-     380                 :            :             transferRequests[key].id
-     381                 :            :         );
-     382                 :            :     }
-     383                 :            : 
-     384                 :            :     /**
-     385                 :            :     * @dev check if it is a new request or not
-     386                 :            :     */
-     387                 :            :     function _checkRequestStatus(bytes32 key) internal view returns (bool) {
-     388                 :            :         // Status NONE not enough because reset is possible
-     389                 :        133 :         return
-     390                 :        133 :             (transferRequests[key].status == STATUS.NONE) &&
-     391                 :            :             (transferRequests[key].key == 0x0);
-     392                 :            :     }
-     393                 :            : 
-     394                 :            :     function _approveRequest(
-     395                 :            :         TransferRequest memory transferRequest,
-     396                 :            :         bool isApproved
-     397                 :            :     ) internal {
-     398                 :            :         // status
-     399            [ + ]:         53 :         if (transferRequest.status != STATUS.WAIT) {
-     400                 :          1 :             revert RuleConditionalTransfer_Wrong_Status();
-     401                 :            :         }
-     402         [ +  + ]:         32 :         if (isApproved) {
-     403                 :            :             // Time
-     404                 :            :             if (
-     405                 :         32 :                 block.timestamp >
-     406                 :            :                 (transferRequest.askTime + options.timeLimit.timeLimitToApprove)
-     407            [ + ]:          3 :             ) {
-     408                 :          3 :                 revert RuleConditionalTransfer_timeExceeded();
-     409                 :            :             }
-     410                 :            :             // Set status
-     411                 :         29 :             transferRequests[transferRequest.key].status = STATUS.APPROVED;
-     412                 :            :             // Set max time
-     413                 :         29 :             transferRequests[transferRequest.key].maxTime =
-     414                 :            :                 block.timestamp +
-     415                 :            :                 options.timeLimit.timeLimitToTransfer;
-     416                 :         29 :             emit transferApproved(
-     417                 :            :                 transferRequest.key,
-     418                 :            :                 transferRequest.keyElement.from,
-     419                 :            :                 transferRequest.keyElement.to,
-     420                 :            :                 transferRequest.keyElement.value,
-     421                 :            :                 transferRequests[transferRequest.key].id
-     422                 :            :             );
-     423                 :            :             if (
-     424                 :         29 :                 options.automaticTransfer.isActivate &&
-     425                 :          7 :                 address(options.automaticTransfer.cmtat) != address(0)
-     426            [ + ]:          7 :             ) {
-     427                 :            :                 // Transfer with approval
-     428                 :            :                 // External call
-     429                 :            :                 if (
-     430                 :          7 :                     options.automaticTransfer.cmtat.allowance(
-     431                 :            :                         transferRequest.keyElement.from,
-     432                 :            :                         address(this)
-     433                 :            :                     ) >= transferRequest.keyElement.value
-     434            [ + ]:          3 :                 ) {
-     435                 :            :                     // Will call the ruleEngine and the rule again...
-     436                 :          3 :                     options.automaticTransfer.cmtat.safeTransferFrom(
-     437                 :            :                         transferRequest.keyElement.from,
-     438                 :            :                         transferRequest.keyElement.to,
-     439                 :            :                         transferRequest.keyElement.value
-     440                 :            :                     );
-     441                 :            :                 }
-     442                 :            :             }
-     443                 :            :         } else {
-     444                 :         20 :             transferRequests[transferRequest.key].status = STATUS.DENIED;
-     445                 :         20 :             emit transferDenied(
-     446                 :            :                 transferRequest.key,
-     447                 :            :                 transferRequest.keyElement.from,
-     448                 :            :                 transferRequest.keyElement.to,
-     449                 :            :                 transferRequest.keyElement.value,
-     450                 :            :                 transferRequests[transferRequest.key].id
-     451                 :            :             );
-     452                 :            :         }
-     453                 :            :     }
-     454                 :            : 
-     455                 :            :     /**
-     456                 :            :      * @notice update the request during a transfer
-     457                 :            :      */
-     458                 :            :     function _updateProcessedTransfer(bytes32 key) internal {
-     459                 :            :         // Reset to zero
-     460                 :         18 :         transferRequests[key].maxTime = 0;
-     461                 :         18 :         transferRequests[key].askTime = 0;
-     462                 :            :         // Change status
-     463                 :         18 :         transferRequests[key].status = STATUS.EXECUTED;
-     464                 :            :         // Emit event
-     465                 :         18 :         emit transferProcessed(
-     466                 :            :             key,
-     467                 :            :             transferRequests[key].keyElement.from,
-     468                 :            :             transferRequests[key].keyElement.to,
-     469                 :            :             transferRequests[key].keyElement.value,
-     470                 :            :             transferRequests[key].id
-     471                 :            :         );
-     472                 :            :     }
-     473                 :            : }
-
-
-
- - - - -
Generated by: LCOV version 1.16
-
- - - diff --git a/doc/coverage/coverage/src/rules/operation/abstract/index-sort-b.html b/doc/coverage/coverage/src/rules/operation/abstract/index-sort-b.html deleted file mode 100644 index e47a898..0000000 --- a/doc/coverage/coverage/src/rules/operation/abstract/index-sort-b.html +++ /dev/null @@ -1,107 +0,0 @@ - - - - - - - LCOV - lcov.info - src/rules/operation/abstract - - - - - - - - - - - - - - -
LCOV - code coverage report
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Current view:top level - src/rules/operation/abstractHitTotalCoverage
Test:lcov.infoLines:113113100.0 %
Date:2024-12-20 10:41:14Functions:2020100.0 %
Branches:3131100.0 %
-
- -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

Filename Sort by nameLine Coverage Sort by line coverageFunctions Sort by function coverageBranches Sort by branch coverage
RuleConditionalTransferOperator.sol -
100.0%
-
100.0 %113 / 113100.0 %20 / 20100.0 %31 / 31
-
-
- - - - -
Generated by: LCOV version 1.16
-
- - - diff --git a/doc/coverage/coverage/src/rules/operation/abstract/index-sort-f.html b/doc/coverage/coverage/src/rules/operation/abstract/index-sort-f.html deleted file mode 100644 index aaae3fc..0000000 --- a/doc/coverage/coverage/src/rules/operation/abstract/index-sort-f.html +++ /dev/null @@ -1,107 +0,0 @@ - - - - - - - LCOV - lcov.info - src/rules/operation/abstract - - - - - - - - - - - - - - -
LCOV - code coverage report
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Current view:top level - src/rules/operation/abstractHitTotalCoverage
Test:lcov.infoLines:113113100.0 %
Date:2024-12-20 10:41:14Functions:2020100.0 %
Branches:3131100.0 %
-
- -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

Filename Sort by nameLine Coverage Sort by line coverageFunctions Sort by function coverageBranches Sort by branch coverage
RuleConditionalTransferOperator.sol -
100.0%
-
100.0 %113 / 113100.0 %20 / 20100.0 %31 / 31
-
-
- - - - -
Generated by: LCOV version 1.16
-
- - - diff --git a/doc/coverage/coverage/src/rules/operation/abstract/index-sort-l.html b/doc/coverage/coverage/src/rules/operation/abstract/index-sort-l.html deleted file mode 100644 index 2ec5b2c..0000000 --- a/doc/coverage/coverage/src/rules/operation/abstract/index-sort-l.html +++ /dev/null @@ -1,107 +0,0 @@ - - - - - - - LCOV - lcov.info - src/rules/operation/abstract - - - - - - - - - - - - - - -
LCOV - code coverage report
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Current view:top level - src/rules/operation/abstractHitTotalCoverage
Test:lcov.infoLines:113113100.0 %
Date:2024-12-20 10:41:14Functions:2020100.0 %
Branches:3131100.0 %
-
- -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

Filename Sort by nameLine Coverage Sort by line coverageFunctions Sort by function coverageBranches Sort by branch coverage
RuleConditionalTransferOperator.sol -
100.0%
-
100.0 %113 / 113100.0 %20 / 20100.0 %31 / 31
-
-
- - - - -
Generated by: LCOV version 1.16
-
- - - diff --git a/doc/coverage/coverage/src/rules/operation/abstract/index.html b/doc/coverage/coverage/src/rules/operation/abstract/index.html deleted file mode 100644 index 1428f56..0000000 --- a/doc/coverage/coverage/src/rules/operation/abstract/index.html +++ /dev/null @@ -1,107 +0,0 @@ - - - - - - - LCOV - lcov.info - src/rules/operation/abstract - - - - - - - - - - - - - - -
LCOV - code coverage report
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Current view:top level - src/rules/operation/abstractHitTotalCoverage
Test:lcov.infoLines:113113100.0 %
Date:2024-12-20 10:41:14Functions:2020100.0 %
Branches:3131100.0 %
-
- -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

Filename Sort by nameLine Coverage Sort by line coverageFunctions Sort by function coverageBranches Sort by branch coverage
RuleConditionalTransferOperator.sol -
100.0%
-
100.0 %113 / 113100.0 %20 / 20100.0 %31 / 31
-
-
- - - - -
Generated by: LCOV version 1.16
-
- - - diff --git a/doc/coverage/coverage/src/rules/operation/index-sort-b.html b/doc/coverage/coverage/src/rules/operation/index-sort-b.html deleted file mode 100644 index d14d712..0000000 --- a/doc/coverage/coverage/src/rules/operation/index-sort-b.html +++ /dev/null @@ -1,107 +0,0 @@ - - - - - - - LCOV - lcov.info - src/rules/operation - - - - - - - - - - - - - - -
LCOV - code coverage report
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Current view:top level - src/rules/operationHitTotalCoverage
Test:lcov.infoLines:10510699.1 %
Date:2024-12-20 10:41:14Functions:171894.4 %
Branches:3333100.0 %
-
- -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

Filename Sort by nameLine Coverage Sort by line coverageFunctions Sort by function coverageBranches Sort by branch coverage
RuleConditionalTransfer.sol -
99.1%99.1%
-
99.1 %105 / 10694.4 %17 / 18100.0 %33 / 33
-
-
- - - - -
Generated by: LCOV version 1.16
-
- - - diff --git a/doc/coverage/coverage/src/rules/operation/index-sort-f.html b/doc/coverage/coverage/src/rules/operation/index-sort-f.html deleted file mode 100644 index d28f603..0000000 --- a/doc/coverage/coverage/src/rules/operation/index-sort-f.html +++ /dev/null @@ -1,107 +0,0 @@ - - - - - - - LCOV - lcov.info - src/rules/operation - - - - - - - - - - - - - - -
LCOV - code coverage report
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Current view:top level - src/rules/operationHitTotalCoverage
Test:lcov.infoLines:10510699.1 %
Date:2024-12-20 10:41:14Functions:171894.4 %
Branches:3333100.0 %
-
- -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

Filename Sort by nameLine Coverage Sort by line coverageFunctions Sort by function coverageBranches Sort by branch coverage
RuleConditionalTransfer.sol -
99.1%99.1%
-
99.1 %105 / 10694.4 %17 / 18100.0 %33 / 33
-
-
- - - - -
Generated by: LCOV version 1.16
-
- - - diff --git a/doc/coverage/coverage/src/rules/operation/index-sort-l.html b/doc/coverage/coverage/src/rules/operation/index-sort-l.html deleted file mode 100644 index ece5b0b..0000000 --- a/doc/coverage/coverage/src/rules/operation/index-sort-l.html +++ /dev/null @@ -1,107 +0,0 @@ - - - - - - - LCOV - lcov.info - src/rules/operation - - - - - - - - - - - - - - -
LCOV - code coverage report
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Current view:top level - src/rules/operationHitTotalCoverage
Test:lcov.infoLines:10510699.1 %
Date:2024-12-20 10:41:14Functions:171894.4 %
Branches:3333100.0 %
-
- -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

Filename Sort by nameLine Coverage Sort by line coverageFunctions Sort by function coverageBranches Sort by branch coverage
RuleConditionalTransfer.sol -
99.1%99.1%
-
99.1 %105 / 10694.4 %17 / 18100.0 %33 / 33
-
-
- - - - -
Generated by: LCOV version 1.16
-
- - - diff --git a/doc/coverage/coverage/src/rules/operation/index.html b/doc/coverage/coverage/src/rules/operation/index.html deleted file mode 100644 index 260d74e..0000000 --- a/doc/coverage/coverage/src/rules/operation/index.html +++ /dev/null @@ -1,107 +0,0 @@ - - - - - - - LCOV - lcov.info - src/rules/operation - - - - - - - - - - - - - - -
LCOV - code coverage report
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Current view:top level - src/rules/operationHitTotalCoverage
Test:lcov.infoLines:10510699.1 %
Date:2024-12-20 10:41:14Functions:171894.4 %
Branches:3333100.0 %
-
- -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

Filename Sort by nameLine Coverage Sort by line coverageFunctions Sort by function coverageBranches Sort by branch coverage
RuleConditionalTransfer.sol -
99.1%99.1%
-
99.1 %105 / 10694.4 %17 / 18100.0 %33 / 33
-
-
- - - - -
Generated by: LCOV version 1.16
-
- - - diff --git a/doc/coverage/coverage/src/rules/validation/RuleBlacklist.sol.func-sort-c.html b/doc/coverage/coverage/src/rules/validation/RuleBlacklist.sol.func-sort-c.html deleted file mode 100644 index a23344e..0000000 --- a/doc/coverage/coverage/src/rules/validation/RuleBlacklist.sol.func-sort-c.html +++ /dev/null @@ -1,97 +0,0 @@ - - - - - - - LCOV - lcov.info - src/rules/validation/RuleBlacklist.sol - functions - - - - - - - - - - - - - - -
LCOV - code coverage report
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Current view:top level - src/rules/validation - RuleBlacklist.sol (source / functions)HitTotalCoverage
Test:lcov.infoLines:1313100.0 %
Date:2024-12-20 10:41:14Functions:44100.0 %
Branches:88100.0 %
-
- -
- - - - - - - - - - - - - - - - - - - - - - -

Function Name Sort by function nameHit count Sort by hit count
RuleBlacklist.canReturnTransferRestrictionCode4
RuleBlacklist.messageForTransferRestriction4
RuleBlacklist.detectTransferRestriction10
RuleBlacklist.12
-
-
- - - -
Generated by: LCOV version 1.16
-
- - - diff --git a/doc/coverage/coverage/src/rules/validation/RuleBlacklist.sol.func.html b/doc/coverage/coverage/src/rules/validation/RuleBlacklist.sol.func.html deleted file mode 100644 index 0168a37..0000000 --- a/doc/coverage/coverage/src/rules/validation/RuleBlacklist.sol.func.html +++ /dev/null @@ -1,97 +0,0 @@ - - - - - - - LCOV - lcov.info - src/rules/validation/RuleBlacklist.sol - functions - - - - - - - - - - - - - - -
LCOV - code coverage report
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Current view:top level - src/rules/validation - RuleBlacklist.sol (source / functions)HitTotalCoverage
Test:lcov.infoLines:1313100.0 %
Date:2024-12-20 10:41:14Functions:44100.0 %
Branches:88100.0 %
-
- -
- - - - - - - - - - - - - - - - - - - - - - -

Function Name Sort by function nameHit count Sort by hit count
RuleBlacklist.12
RuleBlacklist.canReturnTransferRestrictionCode4
RuleBlacklist.detectTransferRestriction10
RuleBlacklist.messageForTransferRestriction4
-
-
- - - -
Generated by: LCOV version 1.16
-
- - - diff --git a/doc/coverage/coverage/src/rules/validation/RuleBlacklist.sol.gcov.html b/doc/coverage/coverage/src/rules/validation/RuleBlacklist.sol.gcov.html deleted file mode 100644 index bea5e34..0000000 --- a/doc/coverage/coverage/src/rules/validation/RuleBlacklist.sol.gcov.html +++ /dev/null @@ -1,161 +0,0 @@ - - - - - - - LCOV - lcov.info - src/rules/validation/RuleBlacklist.sol - - - - - - - - - - - - - - -
LCOV - code coverage report
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Current view:top level - src/rules/validation - RuleBlacklist.sol (source / functions)HitTotalCoverage
Test:lcov.infoLines:1313100.0 %
Date:2024-12-20 10:41:14Functions:44100.0 %
Branches:88100.0 %
-
- - - - - - - - -

-
           Branch data     Line data    Source code
-
-       1                 :            : // SPDX-License-Identifier: MPL-2.0
-       2                 :            : 
-       3                 :            : pragma solidity ^0.8.20;
-       4                 :            : 
-       5                 :            : import "./abstract/RuleAddressList/invariantStorage/RuleBlacklistInvariantStorage.sol";
-       6                 :            : import "./abstract/RuleAddressList/RuleAddressList.sol";
-       7                 :            : import "./abstract/RuleValidateTransfer.sol";
-       8                 :            : 
-       9                 :            : /**
-      10                 :            :  * @title a blacklist manager
-      11                 :            :  */
-      12                 :            : 
-      13                 :            : contract RuleBlacklist is
-      14                 :            :     RuleValidateTransfer,
-      15                 :            :     RuleAddressList,
-      16                 :            :     RuleBlacklistInvariantStorage
-      17                 :            : {
-      18                 :            :     /**
-      19                 :            :      * @param admin Address of the contract (Access Control)
-      20                 :            :      * @param forwarderIrrevocable Address of the forwarder, required for the gasless support
-      21                 :            :      */
-      22                 :            :     constructor(
-      23                 :            :         address admin,
-      24                 :            :         address forwarderIrrevocable
-      25                 :            :     ) RuleAddressList(admin, forwarderIrrevocable) {}
-      26                 :            : 
-      27                 :            :     /**
-      28                 :            :      * @notice Check if an addres is in the whitelist or not
-      29                 :            :      * @param _from the origin address
-      30                 :            :      * @param _to the destination address
-      31                 :            :      * @return The restricion code or REJECTED_CODE_BASE.TRANSFER_OK
-      32                 :            :      **/
-      33                 :            :     function detectTransferRestriction(
-      34                 :            :         address _from,
-      35                 :            :         address _to,
-      36                 :            :         uint256 /*_amount */
-      37                 :            :     ) public view override returns (uint8) {
-      38         [ +  + ]:         10 :         if (addressIsListed(_from)) {
-      39                 :          5 :             return CODE_ADDRESS_FROM_IS_BLACKLISTED;
-      40         [ +  + ]:          5 :         } else if (addressIsListed(_to)) {
-      41                 :          2 :             return CODE_ADDRESS_TO_IS_BLACKLISTED;
-      42                 :            :         } else {
-      43                 :          3 :             return uint8(REJECTED_CODE_BASE.TRANSFER_OK);
-      44                 :            :         }
-      45                 :            :     }
-      46                 :            : 
-      47                 :            :     /**
-      48                 :            :      * @notice To know if the restriction code is valid for this rule or not.
-      49                 :            :      * @param _restrictionCode The target restriction code
-      50                 :            :      * @return true if the restriction code is known, false otherwise
-      51                 :            :      **/
-      52                 :            :     function canReturnTransferRestrictionCode(
-      53                 :            :         uint8 _restrictionCode
-      54                 :            :     ) external pure override returns (bool) {
-      55                 :          4 :         return
-      56                 :          4 :             _restrictionCode == CODE_ADDRESS_FROM_IS_BLACKLISTED ||
-      57                 :          2 :             _restrictionCode == CODE_ADDRESS_TO_IS_BLACKLISTED;
-      58                 :            :     }
-      59                 :            : 
-      60                 :            :     /**
-      61                 :            :      * @notice Return the corresponding message
-      62                 :            :      * @param _restrictionCode The target restriction code
-      63                 :            :      * @return true if the transfer is valid, false otherwise
-      64                 :            :      **/
-      65                 :            :     function messageForTransferRestriction(
-      66                 :            :         uint8 _restrictionCode
-      67                 :            :     ) external pure override returns (string memory) {
-      68         [ +  + ]:          4 :         if (_restrictionCode == CODE_ADDRESS_FROM_IS_BLACKLISTED) {
-      69                 :          2 :             return TEXT_ADDRESS_FROM_IS_BLACKLISTED;
-      70         [ +  + ]:          2 :         } else if (_restrictionCode == CODE_ADDRESS_TO_IS_BLACKLISTED) {
-      71                 :          1 :             return TEXT_ADDRESS_TO_IS_BLACKLISTED;
-      72                 :            :         } else {
-      73                 :          1 :             return TEXT_CODE_NOT_FOUND;
-      74                 :            :         }
-      75                 :            :     }
-      76                 :            : }
-
-
-
- - - - -
Generated by: LCOV version 1.16
-
- - - diff --git a/doc/coverage/coverage/src/rules/validation/RuleSanctionList.sol.func-sort-c.html b/doc/coverage/coverage/src/rules/validation/RuleSanctionList.sol.func-sort-c.html deleted file mode 100644 index 76ad884..0000000 --- a/doc/coverage/coverage/src/rules/validation/RuleSanctionList.sol.func-sort-c.html +++ /dev/null @@ -1,121 +0,0 @@ - - - - - - - LCOV - lcov.info - src/rules/validation/RuleSanctionList.sol - functions - - - - - - - - - - - - - - -
LCOV - code coverage report
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Current view:top level - src/rules/validation - RuleSanctionList.sol (source / functions)HitTotalCoverage
Test:lcov.infoLines:272896.4 %
Date:2024-12-20 10:41:14Functions:91090.0 %
Branches:1111100.0 %
-
- -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

Function Name Sort by function nameHit count Sort by hit count
RuleSanctionList._msgData0
RuleSanctionList.canReturnTransferRestrictionCode3
RuleSanctionList.messageForTransferRestriction3
RuleSanctionList.detectTransferRestriction7
RuleSanctionList._setSanctionListOracle11
RuleSanctionList.setSanctionListOracle11
RuleSanctionList.13
RuleSanctionList.hasRole13
RuleSanctionList._contextSuffixLength23
RuleSanctionList._msgSender23
-
-
- - - -
Generated by: LCOV version 1.16
-
- - - diff --git a/doc/coverage/coverage/src/rules/validation/RuleSanctionList.sol.func.html b/doc/coverage/coverage/src/rules/validation/RuleSanctionList.sol.func.html deleted file mode 100644 index f3eefa0..0000000 --- a/doc/coverage/coverage/src/rules/validation/RuleSanctionList.sol.func.html +++ /dev/null @@ -1,121 +0,0 @@ - - - - - - - LCOV - lcov.info - src/rules/validation/RuleSanctionList.sol - functions - - - - - - - - - - - - - - -
LCOV - code coverage report
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Current view:top level - src/rules/validation - RuleSanctionList.sol (source / functions)HitTotalCoverage
Test:lcov.infoLines:272896.4 %
Date:2024-12-20 10:41:14Functions:91090.0 %
Branches:1111100.0 %
-
- -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

Function Name Sort by function nameHit count Sort by hit count
RuleSanctionList.13
RuleSanctionList._contextSuffixLength23
RuleSanctionList._msgData0
RuleSanctionList._msgSender23
RuleSanctionList._setSanctionListOracle11
RuleSanctionList.canReturnTransferRestrictionCode3
RuleSanctionList.detectTransferRestriction7
RuleSanctionList.hasRole13
RuleSanctionList.messageForTransferRestriction3
RuleSanctionList.setSanctionListOracle11
-
-
- - - -
Generated by: LCOV version 1.16
-
- - - diff --git a/doc/coverage/coverage/src/rules/validation/RuleSanctionList.sol.gcov.html b/doc/coverage/coverage/src/rules/validation/RuleSanctionList.sol.gcov.html deleted file mode 100644 index 299cb3a..0000000 --- a/doc/coverage/coverage/src/rules/validation/RuleSanctionList.sol.gcov.html +++ /dev/null @@ -1,250 +0,0 @@ - - - - - - - LCOV - lcov.info - src/rules/validation/RuleSanctionList.sol - - - - - - - - - - - - - - -
LCOV - code coverage report
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Current view:top level - src/rules/validation - RuleSanctionList.sol (source / functions)HitTotalCoverage
Test:lcov.infoLines:272896.4 %
Date:2024-12-20 10:41:14Functions:91090.0 %
Branches:1111100.0 %
-
- - - - - - - - -

-
           Branch data     Line data    Source code
-
-       1                 :            : // SPDX-License-Identifier: MPL-2.0
-       2                 :            : 
-       3                 :            : pragma solidity ^0.8.20;
-       4                 :            : 
-       5                 :            : import "OZ/access/AccessControl.sol";
-       6                 :            : import "../../modules/MetaTxModuleStandalone.sol";
-       7                 :            : import "./abstract/RuleSanctionListInvariantStorage.sol";
-       8                 :            : import "./abstract/RuleValidateTransfer.sol";
-       9                 :            : 
-      10                 :            : interface SanctionsList {
-      11                 :            :     function isSanctioned(address addr) external view returns (bool);
-      12                 :            : }
-      13                 :            : 
-      14                 :            : contract RuleSanctionList is
-      15                 :            :     AccessControl,
-      16                 :            :     MetaTxModuleStandalone,
-      17                 :            :     RuleValidateTransfer,
-      18                 :            :     RuleSanctionlistInvariantStorage
-      19                 :            : {
-      20                 :            :     SanctionsList public sanctionsList;
-      21                 :            : 
-      22                 :            :     /**
-      23                 :            :      * @param admin Address of the contract (Access Control)
-      24                 :            :      * @param forwarderIrrevocable Address of the forwarder, required for the gasless support
-      25                 :            :      */
-      26                 :            :     constructor(
-      27                 :            :         address admin,
-      28                 :            :         address forwarderIrrevocable,
-      29                 :            :         address sanctionContractOracle_
-      30                 :            :     ) MetaTxModuleStandalone(forwarderIrrevocable) {
-      31            [ + ]:         13 :         if (admin == address(0)) {
-      32                 :          1 :             revert RuleSanctionList_AdminWithAddressZeroNotAllowed();
-      33                 :            :         }
-      34            [ + ]:         12 :         if (sanctionContractOracle_ != address(0)) {
-      35                 :          1 :             _setSanctionListOracle(sanctionContractOracle_);
-      36                 :            :         }
-      37                 :         12 :         _grantRole(DEFAULT_ADMIN_ROLE, admin);
-      38                 :            :     }
-      39                 :            : 
-      40                 :            :     /**
-      41                 :            :      * @notice Set the oracle contract
-      42                 :            :      * @param sanctionContractOracle_ address of your oracle contract
-      43                 :            :      * @dev zero address is authorized to authorize all transfers
-      44                 :            :      */
-      45                 :            :     function setSanctionListOracle(
-      46                 :            :         address sanctionContractOracle_
-      47                 :            :     ) public onlyRole(SANCTIONLIST_ROLE) {
-      48                 :         10 :         _setSanctionListOracle(sanctionContractOracle_);
-      49                 :            :     }
-      50                 :            : 
-      51                 :            :     /**
-      52                 :            :      * @notice Check if an addres is in the whitelist or not
-      53                 :            :      * @param _from the origin address
-      54                 :            :      * @param _to the destination address
-      55                 :            :      * @return The restricion code or REJECTED_CODE_BASE.TRANSFER_OK
-      56                 :            :      **/
-      57                 :            :     function detectTransferRestriction(
-      58                 :            :         address _from,
-      59                 :            :         address _to,
-      60                 :            :         uint256 /*_amount */
-      61                 :            :     ) public view override returns (uint8) {
-      62            [ + ]:          7 :         if (address(sanctionsList) != address(0)) {
-      63         [ +  + ]:          7 :             if (sanctionsList.isSanctioned(_from)) {
-      64                 :          2 :                 return CODE_ADDRESS_FROM_IS_SANCTIONED;
-      65            [ + ]:          5 :             } else if (sanctionsList.isSanctioned(_to)) {
-      66                 :          2 :                 return CODE_ADDRESS_TO_IS_SANCTIONED;
-      67                 :            :             }
-      68                 :            :         }
-      69                 :          3 :         return uint8(REJECTED_CODE_BASE.TRANSFER_OK);
-      70                 :            :     }
-      71                 :            : 
-      72                 :            :     /**
-      73                 :            :      * @notice To know if the restriction code is valid for this rule or not.
-      74                 :            :      * @param _restrictionCode The target restriction code
-      75                 :            :      * @return true if the restriction code is known, false otherwise
-      76                 :            :      **/
-      77                 :            :     function canReturnTransferRestrictionCode(
-      78                 :            :         uint8 _restrictionCode
-      79                 :            :     ) external pure override returns (bool) {
-      80                 :          3 :         return
-      81                 :          3 :             _restrictionCode == CODE_ADDRESS_FROM_IS_SANCTIONED ||
-      82                 :          2 :             _restrictionCode == CODE_ADDRESS_TO_IS_SANCTIONED;
-      83                 :            :     }
-      84                 :            : 
-      85                 :            :     /**
-      86                 :            :      * @notice Return the corresponding message
-      87                 :            :      * @param _restrictionCode The target restriction code
-      88                 :            :      * @return true if the transfer is valid, false otherwise
-      89                 :            :      **/
-      90                 :            :     function messageForTransferRestriction(
-      91                 :            :         uint8 _restrictionCode
-      92                 :            :     ) external pure override returns (string memory) {
-      93         [ +  + ]:          3 :         if (_restrictionCode == CODE_ADDRESS_FROM_IS_SANCTIONED) {
-      94                 :          1 :             return TEXT_ADDRESS_FROM_IS_SANCTIONED;
-      95         [ +  + ]:          2 :         } else if (_restrictionCode == CODE_ADDRESS_TO_IS_SANCTIONED) {
-      96                 :          1 :             return TEXT_ADDRESS_TO_IS_SANCTIONED;
-      97                 :            :         } else {
-      98                 :          1 :             return TEXT_CODE_NOT_FOUND;
-      99                 :            :         }
-     100                 :            :     }
-     101                 :            : 
-     102                 :            :     /* ============ ACCESS CONTROL ============ */
-     103                 :            :     /**
-     104                 :            :      * @dev Returns `true` if `account` has been granted `role`.
-     105                 :            :      */
-     106                 :            :     function hasRole(
-     107                 :            :         bytes32 role,
-     108                 :            :         address account
-     109                 :            :     ) public view virtual override(AccessControl) returns (bool) {
-     110                 :            :         // The Default Admin has all roles
-     111            [ + ]:         24 :         if (AccessControl.hasRole(DEFAULT_ADMIN_ROLE, account)) {
-     112                 :         11 :             return true;
-     113                 :            :         }
-     114                 :         13 :         return AccessControl.hasRole(role, account);
-     115                 :            :     }
-     116                 :            : 
-     117                 :            :     /*//////////////////////////////////////////////////////////////
-     118                 :            :                             INTERNAL FUNCTIONS
-     119                 :            :     //////////////////////////////////////////////////////////////*/
-     120                 :            : 
-     121                 :            :     function _setSanctionListOracle(address sanctionContractOracle_) internal {
-     122                 :         11 :         sanctionsList = SanctionsList(sanctionContractOracle_);
-     123                 :         11 :         emit SetSanctionListOracle(address(sanctionContractOracle_));
-     124                 :            :     }
-     125                 :            : 
-     126                 :            :     /*//////////////////////////////////////////////////////////////
-     127                 :            :                            ERC-2771
-     128                 :            :     //////////////////////////////////////////////////////////////*/
-     129                 :            : 
-     130                 :            :     /**
-     131                 :            :      * @dev This surcharge is not necessary if you do not use the MetaTxModule
-     132                 :            :      */
-     133                 :            :     function _msgSender()
-     134                 :            :         internal
-     135                 :            :         view
-     136                 :            :         override(ERC2771Context, Context)
-     137                 :            :         returns (address sender)
-     138                 :            :     {
-     139                 :         23 :         return ERC2771Context._msgSender();
-     140                 :            :     }
-     141                 :            : 
-     142                 :            :     /**
-     143                 :            :      * @dev This surcharge is not necessary if you do not use the MetaTxModule
-     144                 :            :      */
-     145                 :            :     function _msgData()
-     146                 :            :         internal
-     147                 :            :         view
-     148                 :            :         override(ERC2771Context, Context)
-     149                 :            :         returns (bytes calldata)
-     150                 :            :     {
-     151                 :          0 :         return ERC2771Context._msgData();
-     152                 :            :     }
-     153                 :            : 
-     154                 :            :     /**
-     155                 :            :      * @dev This surcharge is not necessary if you do not use the MetaTxModule
-     156                 :            :      */
-     157                 :            :     function _contextSuffixLength()
-     158                 :            :         internal
-     159                 :            :         view
-     160                 :            :         override(ERC2771Context, Context)
-     161                 :            :         returns (uint256)
-     162                 :            :     {
-     163                 :         23 :         return ERC2771Context._contextSuffixLength();
-     164                 :            :     }
-     165                 :            : }
-
-
-
- - - - -
Generated by: LCOV version 1.16
-
- - - diff --git a/doc/coverage/coverage/src/rules/validation/RuleWhitelist.sol.func-sort-c.html b/doc/coverage/coverage/src/rules/validation/RuleWhitelist.sol.func-sort-c.html deleted file mode 100644 index 3983775..0000000 --- a/doc/coverage/coverage/src/rules/validation/RuleWhitelist.sol.func-sort-c.html +++ /dev/null @@ -1,89 +0,0 @@ - - - - - - - LCOV - lcov.info - src/rules/validation/RuleWhitelist.sol - functions - - - - - - - - - - - - - - -
LCOV - code coverage report
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Current view:top level - src/rules/validation - RuleWhitelist.sol (source / functions)HitTotalCoverage
Test:lcov.infoLines:55100.0 %
Date:2024-12-20 10:41:14Functions:22100.0 %
Branches:44100.0 %
-
- -
- - - - - - - - - - - - - - -

Function Name Sort by function nameHit count Sort by hit count
RuleWhitelist.detectTransferRestriction28
RuleWhitelist.173
-
-
- - - -
Generated by: LCOV version 1.16
-
- - - diff --git a/doc/coverage/coverage/src/rules/validation/RuleWhitelist.sol.func.html b/doc/coverage/coverage/src/rules/validation/RuleWhitelist.sol.func.html deleted file mode 100644 index 855b26a..0000000 --- a/doc/coverage/coverage/src/rules/validation/RuleWhitelist.sol.func.html +++ /dev/null @@ -1,89 +0,0 @@ - - - - - - - LCOV - lcov.info - src/rules/validation/RuleWhitelist.sol - functions - - - - - - - - - - - - - - -
LCOV - code coverage report
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Current view:top level - src/rules/validation - RuleWhitelist.sol (source / functions)HitTotalCoverage
Test:lcov.infoLines:55100.0 %
Date:2024-12-20 10:41:14Functions:22100.0 %
Branches:44100.0 %
-
- -
- - - - - - - - - - - - - - -

Function Name Sort by function nameHit count Sort by hit count
RuleWhitelist.173
RuleWhitelist.detectTransferRestriction28
-
-
- - - -
Generated by: LCOV version 1.16
-
- - - diff --git a/doc/coverage/coverage/src/rules/validation/RuleWhitelist.sol.gcov.html b/doc/coverage/coverage/src/rules/validation/RuleWhitelist.sol.gcov.html deleted file mode 100644 index 729cd39..0000000 --- a/doc/coverage/coverage/src/rules/validation/RuleWhitelist.sol.gcov.html +++ /dev/null @@ -1,125 +0,0 @@ - - - - - - - LCOV - lcov.info - src/rules/validation/RuleWhitelist.sol - - - - - - - - - - - - - - -
LCOV - code coverage report
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Current view:top level - src/rules/validation - RuleWhitelist.sol (source / functions)HitTotalCoverage
Test:lcov.infoLines:55100.0 %
Date:2024-12-20 10:41:14Functions:22100.0 %
Branches:44100.0 %
-
- - - - - - - - -

-
           Branch data     Line data    Source code
-
-       1                 :            : // SPDX-License-Identifier: MPL-2.0
-       2                 :            : 
-       3                 :            : pragma solidity ^0.8.20;
-       4                 :            : 
-       5                 :            : import "./abstract/RuleAddressList/RuleAddressList.sol";
-       6                 :            : import "./abstract/RuleWhitelistCommon.sol";
-       7                 :            : 
-       8                 :            : /**
-       9                 :            :  * @title a whitelist manager
-      10                 :            :  */
-      11                 :            : contract RuleWhitelist is RuleAddressList, RuleWhitelistCommon {
-      12                 :            :     /**
-      13                 :            :      * @param admin Address of the contract (Access Control)
-      14                 :            :      * @param forwarderIrrevocable Address of the forwarder, required for the gasless support
-      15                 :            :      */
-      16                 :            :     constructor(
-      17                 :            :         address admin,
-      18                 :            :         address forwarderIrrevocable
-      19                 :            :     ) RuleAddressList(admin, forwarderIrrevocable) {}
-      20                 :            : 
-      21                 :            :     /**
-      22                 :            :      * @notice Check if an addres is in the whitelist or not
-      23                 :            :      * @param _from the origin address
-      24                 :            :      * @param _to the destination address
-      25                 :            :      * @return The restricion code or REJECTED_CODE_BASE.TRANSFER_OK
-      26                 :            :      **/
-      27                 :            :     function detectTransferRestriction(
-      28                 :            :         address _from,
-      29                 :            :         address _to,
-      30                 :            :         uint256 /*_amount */
-      31                 :            :     ) public view override returns (uint8) {
-      32         [ +  + ]:         28 :         if (!addressIsListed(_from)) {
-      33                 :         13 :             return CODE_ADDRESS_FROM_NOT_WHITELISTED;
-      34         [ +  + ]:         15 :         } else if (!addressIsListed(_to)) {
-      35                 :          5 :             return CODE_ADDRESS_TO_NOT_WHITELISTED;
-      36                 :            :         } else {
-      37                 :         10 :             return uint8(REJECTED_CODE_BASE.TRANSFER_OK);
-      38                 :            :         }
-      39                 :            :     }
-      40                 :            : }
-
-
-
- - - - -
Generated by: LCOV version 1.16
-
- - - diff --git a/doc/coverage/coverage/src/rules/validation/RuleWhitelistWrapper.sol.func-sort-c.html b/doc/coverage/coverage/src/rules/validation/RuleWhitelistWrapper.sol.func-sort-c.html deleted file mode 100644 index 50d42d4..0000000 --- a/doc/coverage/coverage/src/rules/validation/RuleWhitelistWrapper.sol.func-sort-c.html +++ /dev/null @@ -1,105 +0,0 @@ - - - - - - - LCOV - lcov.info - src/rules/validation/RuleWhitelistWrapper.sol - functions - - - - - - - - - - - - - - -
LCOV - code coverage report
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Current view:top level - src/rules/validation - RuleWhitelistWrapper.sol (source / functions)HitTotalCoverage
Test:lcov.infoLines:272896.4 %
Date:2024-12-20 10:41:14Functions:5683.3 %
Branches:99100.0 %
-
- -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

Function Name Sort by function nameHit count Sort by hit count
RuleWhitelistWrapper._msgData0
RuleWhitelistWrapper.detectTransferRestriction11
RuleWhitelistWrapper.hasRole13
RuleWhitelistWrapper.14
RuleWhitelistWrapper._contextSuffixLength52
RuleWhitelistWrapper._msgSender52
-
-
- - - -
Generated by: LCOV version 1.16
-
- - - diff --git a/doc/coverage/coverage/src/rules/validation/RuleWhitelistWrapper.sol.func.html b/doc/coverage/coverage/src/rules/validation/RuleWhitelistWrapper.sol.func.html deleted file mode 100644 index 87ddb39..0000000 --- a/doc/coverage/coverage/src/rules/validation/RuleWhitelistWrapper.sol.func.html +++ /dev/null @@ -1,105 +0,0 @@ - - - - - - - LCOV - lcov.info - src/rules/validation/RuleWhitelistWrapper.sol - functions - - - - - - - - - - - - - - -
LCOV - code coverage report
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Current view:top level - src/rules/validation - RuleWhitelistWrapper.sol (source / functions)HitTotalCoverage
Test:lcov.infoLines:272896.4 %
Date:2024-12-20 10:41:14Functions:5683.3 %
Branches:99100.0 %
-
- -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

Function Name Sort by function nameHit count Sort by hit count
RuleWhitelistWrapper.14
RuleWhitelistWrapper._contextSuffixLength52
RuleWhitelistWrapper._msgData0
RuleWhitelistWrapper._msgSender52
RuleWhitelistWrapper.detectTransferRestriction11
RuleWhitelistWrapper.hasRole13
-
-
- - - -
Generated by: LCOV version 1.16
-
- - - diff --git a/doc/coverage/coverage/src/rules/validation/RuleWhitelistWrapper.sol.gcov.html b/doc/coverage/coverage/src/rules/validation/RuleWhitelistWrapper.sol.gcov.html deleted file mode 100644 index 497bf06..0000000 --- a/doc/coverage/coverage/src/rules/validation/RuleWhitelistWrapper.sol.gcov.html +++ /dev/null @@ -1,215 +0,0 @@ - - - - - - - LCOV - lcov.info - src/rules/validation/RuleWhitelistWrapper.sol - - - - - - - - - - - - - - -
LCOV - code coverage report
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Current view:top level - src/rules/validation - RuleWhitelistWrapper.sol (source / functions)HitTotalCoverage
Test:lcov.infoLines:272896.4 %
Date:2024-12-20 10:41:14Functions:5683.3 %
Branches:99100.0 %
-
- - - - - - - - -

-
           Branch data     Line data    Source code
-
-       1                 :            : // SPDX-License-Identifier: MPL-2.0
-       2                 :            : 
-       3                 :            : pragma solidity ^0.8.20;
-       4                 :            : 
-       5                 :            : import "OZ/access/AccessControl.sol";
-       6                 :            : import "../../modules/RuleEngineValidationCommon.sol";
-       7                 :            : import "../../modules/MetaTxModuleStandalone.sol";
-       8                 :            : import "./abstract/RuleAddressList/RuleAddressList.sol";
-       9                 :            : import "./abstract/RuleWhitelistCommon.sol";
-      10                 :            : 
-      11                 :            : /**
-      12                 :            :  * @title Wrapper to call several different whitelist rules
-      13                 :            :  */
-      14                 :            : contract RuleWhitelistWrapper is
-      15                 :            :     RuleEngineValidationCommon,
-      16                 :            :     MetaTxModuleStandalone,
-      17                 :            :     RuleWhitelistCommon
-      18                 :            : {
-      19                 :            :     /**
-      20                 :            :      * @param admin Address of the contract (Access Control)
-      21                 :            :      * @param forwarderIrrevocable Address of the forwarder, required for the gasless support
-      22                 :            :      */
-      23                 :            :     constructor(
-      24                 :            :         address admin,
-      25                 :            :         address forwarderIrrevocable
-      26                 :            :     ) MetaTxModuleStandalone(forwarderIrrevocable) {
-      27            [ + ]:         14 :         if (admin == address(0)) {
-      28                 :          1 :             revert RuleEngine_AdminWithAddressZeroNotAllowed();
-      29                 :            :         }
-      30                 :         13 :         _grantRole(DEFAULT_ADMIN_ROLE, admin);
-      31                 :            :     }
-      32                 :            : 
-      33                 :            :     /**
-      34                 :            :      * @notice Go through all the whitelist rules to know if a restriction exists on the transfer
-      35                 :            :      * @param _from the origin address
-      36                 :            :      * @param _to the destination address
-      37                 :            :      * @return The restricion code or REJECTED_CODE_BASE.TRANSFER_OK
-      38                 :            :      **/
-      39                 :            :     function detectTransferRestriction(
-      40                 :            :         address _from,
-      41                 :            :         address _to,
-      42                 :            :         uint256 /*_amount*/
-      43                 :            :     ) public view override returns (uint8) {
-      44                 :         11 :         address[] memory targetAddress = new address[](2);
-      45                 :         11 :         bool[] memory isListed = new bool[](2);
-      46                 :         11 :         bool[] memory result = new bool[](2);
-      47                 :         11 :         targetAddress[0] = _from;
-      48                 :         11 :         targetAddress[1] = _to;
-      49                 :         11 :         uint256 rulesLength = _rulesValidation.length;
-      50                 :            :         // For each whitelist rule, we ask if from or to are in the whitelist
-      51                 :         11 :         for (uint256 i = 0; i < rulesLength; ++i) {
-      52                 :            :             // External call
-      53                 :         25 :             isListed = RuleAddressList(_rulesValidation[i])
-      54                 :            :                 .addressIsListedBatch(targetAddress);
-      55            [ + ]:         25 :             if (isListed[0] && !result[0]) {
-      56                 :            :                 // Update if from is in the list
-      57                 :          7 :                 result[0] = true;
-      58                 :            :             }
-      59            [ + ]:         25 :             if (isListed[1] && !result[1]) {
-      60                 :            :                 // Update if to is in the list
-      61                 :          7 :                 result[1] = true;
-      62                 :            :             }
-      63            [ + ]:         25 :             if (result[0] && result[1]) {
-      64                 :         25 :                 break;
-      65                 :            :             }
-      66                 :            :         }
-      67         [ +  + ]:         11 :         if (!result[0]) {
-      68                 :          4 :             return CODE_ADDRESS_FROM_NOT_WHITELISTED;
-      69         [ +  + ]:          7 :         } else if (!result[1]) {
-      70                 :          2 :             return CODE_ADDRESS_TO_NOT_WHITELISTED;
-      71                 :            :         } else {
-      72                 :          5 :             return uint8(REJECTED_CODE_BASE.TRANSFER_OK);
-      73                 :            :         }
-      74                 :            :     }
-      75                 :            : 
-      76                 :            :     /* ============ ACCESS CONTROL ============ */
-      77                 :            :     /**
-      78                 :            :      * @dev Returns `true` if `account` has been granted `role`.
-      79                 :            :      */
-      80                 :            :     function hasRole(
-      81                 :            :         bytes32 role,
-      82                 :            :         address account
-      83                 :            :     ) public view virtual override(AccessControl) returns (bool) {
-      84                 :            :         // The Default Admin has all roles
-      85            [ + ]:         52 :         if (AccessControl.hasRole(DEFAULT_ADMIN_ROLE, account)) {
-      86                 :         39 :             return true;
-      87                 :            :         }
-      88                 :         13 :         return AccessControl.hasRole(role, account);
-      89                 :            :     }
-      90                 :            : 
-      91                 :            :     /*//////////////////////////////////////////////////////////////
-      92                 :            :                            ERC-2771
-      93                 :            :     //////////////////////////////////////////////////////////////*/
-      94                 :            : 
-      95                 :            :     /**
-      96                 :            :      * @dev This surcharge is not necessary if you do not use the MetaTxModule
-      97                 :            :      */
-      98                 :            :     function _msgSender()
-      99                 :            :         internal
-     100                 :            :         view
-     101                 :            :         override(ERC2771Context, Context)
-     102                 :            :         returns (address sender)
-     103                 :            :     {
-     104                 :         52 :         return ERC2771Context._msgSender();
-     105                 :            :     }
-     106                 :            : 
-     107                 :            :     /**
-     108                 :            :      * @dev This surcharge is not necessary if you do not use the MetaTxModule
-     109                 :            :      */
-     110                 :            :     function _msgData()
-     111                 :            :         internal
-     112                 :            :         view
-     113                 :            :         override(ERC2771Context, Context)
-     114                 :            :         returns (bytes calldata)
-     115                 :            :     {
-     116                 :          0 :         return ERC2771Context._msgData();
-     117                 :            :     }
-     118                 :            : 
-     119                 :            :     /**
-     120                 :            :      * @dev This surcharge is not necessary if you do not use the MetaTxModule
-     121                 :            :      */
-     122                 :            :     function _contextSuffixLength()
-     123                 :            :         internal
-     124                 :            :         view
-     125                 :            :         override(ERC2771Context, Context)
-     126                 :            :         returns (uint256)
-     127                 :            :     {
-     128                 :         52 :         return ERC2771Context._contextSuffixLength();
-     129                 :            :     }
-     130                 :            : }
-
-
-
- - - - -
Generated by: LCOV version 1.16
-
- - - diff --git a/doc/coverage/coverage/src/rules/validation/abstract/RuleAddressList/RuleAddressList.sol.func-sort-c.html b/doc/coverage/coverage/src/rules/validation/abstract/RuleAddressList/RuleAddressList.sol.func-sort-c.html deleted file mode 100644 index 98ee305..0000000 --- a/doc/coverage/coverage/src/rules/validation/abstract/RuleAddressList/RuleAddressList.sol.func-sort-c.html +++ /dev/null @@ -1,129 +0,0 @@ - - - - - - - LCOV - lcov.info - src/rules/validation/abstract/RuleAddressList/RuleAddressList.sol - functions - - - - - - - - - - - - - - -
LCOV - code coverage report
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Current view:top level - src/rules/validation/abstract/RuleAddressList - RuleAddressList.sol (source / functions)HitTotalCoverage
Test:lcov.infoLines:222395.7 %
Date:2024-12-20 10:41:14Functions:111291.7 %
Branches:22100.0 %
-
- -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

Function Name Sort by function nameHit count Sort by hit count
RuleAddressList._msgData0
RuleAddressList.removeAddressFromTheList3
RuleAddressList.removeAddressesFromTheList4
RuleAddressList.addAddressesToTheList17
RuleAddressList.numberListedAddress24
RuleAddressList.addressIsListedBatch28
RuleAddressList.addAddressToTheList52
RuleAddressList.addressIsListed101
RuleAddressList.185
RuleAddressList.hasRole194
RuleAddressList._contextSuffixLength270
RuleAddressList._msgSender270
-
-
- - - -
Generated by: LCOV version 1.16
-
- - - diff --git a/doc/coverage/coverage/src/rules/validation/abstract/RuleAddressList/RuleAddressList.sol.func.html b/doc/coverage/coverage/src/rules/validation/abstract/RuleAddressList/RuleAddressList.sol.func.html deleted file mode 100644 index ed5ebcb..0000000 --- a/doc/coverage/coverage/src/rules/validation/abstract/RuleAddressList/RuleAddressList.sol.func.html +++ /dev/null @@ -1,129 +0,0 @@ - - - - - - - LCOV - lcov.info - src/rules/validation/abstract/RuleAddressList/RuleAddressList.sol - functions - - - - - - - - - - - - - - -
LCOV - code coverage report
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Current view:top level - src/rules/validation/abstract/RuleAddressList - RuleAddressList.sol (source / functions)HitTotalCoverage
Test:lcov.infoLines:222395.7 %
Date:2024-12-20 10:41:14Functions:111291.7 %
Branches:22100.0 %
-
- -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

Function Name Sort by function nameHit count Sort by hit count
RuleAddressList.185
RuleAddressList._contextSuffixLength270
RuleAddressList._msgData0
RuleAddressList._msgSender270
RuleAddressList.addAddressToTheList52
RuleAddressList.addAddressesToTheList17
RuleAddressList.addressIsListed101
RuleAddressList.addressIsListedBatch28
RuleAddressList.hasRole194
RuleAddressList.numberListedAddress24
RuleAddressList.removeAddressFromTheList3
RuleAddressList.removeAddressesFromTheList4
-
-
- - - -
Generated by: LCOV version 1.16
-
- - - diff --git a/doc/coverage/coverage/src/rules/validation/abstract/RuleAddressList/RuleAddressList.sol.gcov.html b/doc/coverage/coverage/src/rules/validation/abstract/RuleAddressList/RuleAddressList.sol.gcov.html deleted file mode 100644 index 2cd242c..0000000 --- a/doc/coverage/coverage/src/rules/validation/abstract/RuleAddressList/RuleAddressList.sol.gcov.html +++ /dev/null @@ -1,261 +0,0 @@ - - - - - - - LCOV - lcov.info - src/rules/validation/abstract/RuleAddressList/RuleAddressList.sol - - - - - - - - - - - - - - -
LCOV - code coverage report
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Current view:top level - src/rules/validation/abstract/RuleAddressList - RuleAddressList.sol (source / functions)HitTotalCoverage
Test:lcov.infoLines:222395.7 %
Date:2024-12-20 10:41:14Functions:111291.7 %
Branches:22100.0 %
-
- - - - - - - - -

-
           Branch data     Line data    Source code
-
-       1                 :            : // SPDX-License-Identifier: MPL-2.0
-       2                 :            : 
-       3                 :            : pragma solidity ^0.8.20;
-       4                 :            : 
-       5                 :            : import "OZ/access/AccessControl.sol";
-       6                 :            : import "./../../../../modules/MetaTxModuleStandalone.sol";
-       7                 :            : import "./RuleAddressListInternal.sol";
-       8                 :            : import "./invariantStorage/RuleAddressListInvariantStorage.sol";
-       9                 :            : 
-      10                 :            : /**
-      11                 :            : @title an addresses list manager
-      12                 :            : */
-      13                 :            : 
-      14                 :            : abstract contract RuleAddressList is
-      15                 :            :     AccessControl,
-      16                 :            :     MetaTxModuleStandalone,
-      17                 :            :     RuleAddressListInternal,
-      18                 :            :     RuleAddressListInvariantStorage
-      19                 :            : {
-      20                 :            :     // Number of addresses in the list at the moment
-      21                 :            :     uint256 private numAddressesWhitelisted;
-      22                 :            : 
-      23                 :            :     /**
-      24                 :            :      * @param admin Address of the contract (Access Control)
-      25                 :            :      * @param forwarderIrrevocable Address of the forwarder, required for the gasless support
-      26                 :            :      */
-      27                 :            :     constructor(
-      28                 :            :         address admin,
-      29                 :            :         address forwarderIrrevocable
-      30                 :            :     ) MetaTxModuleStandalone(forwarderIrrevocable) {
-      31            [ + ]:        185 :         if (admin == address(0)) {
-      32                 :          1 :             revert RuleAddressList_AdminWithAddressZeroNotAllowed();
-      33                 :            :         }
-      34                 :        184 :         _grantRole(DEFAULT_ADMIN_ROLE, admin);
-      35                 :            :     }
-      36                 :            : 
-      37                 :            :     /**
-      38                 :            :      * @notice Add addresses to the list
-      39                 :            :      * If one of addresses already exist, there is no change for this address. The transaction remains valid (no revert).
-      40                 :            :      * @param listTargetAddresses an array with the addresses to list
-      41                 :            :      */
-      42                 :            :     function addAddressesToTheList(
-      43                 :            :         address[] calldata listTargetAddresses
-      44                 :            :     ) public onlyRole(ADDRESS_LIST_ADD_ROLE) {
-      45                 :         16 :         _addAddressesToThelist(listTargetAddresses);
-      46                 :         16 :         emit AddAddressesToTheList(listTargetAddresses);
-      47                 :            :     }
-      48                 :            : 
-      49                 :            :     /**
-      50                 :            :      * @notice Remove addresses from the list
-      51                 :            :      * If the address does not exist in the list, there is no change for this address.
-      52                 :            :      * The transaction remains valid (no revert).
-      53                 :            :      * @param listTargetAddresses an array with the addresses to remove
-      54                 :            :      */
-      55                 :            :     function removeAddressesFromTheList(
-      56                 :            :         address[] calldata listTargetAddresses
-      57                 :            :     ) public onlyRole(ADDRESS_LIST_REMOVE_ROLE) {
-      58                 :          3 :         _removeAddressesFromThelist(listTargetAddresses);
-      59                 :          3 :         emit RemoveAddressesFromTheList(listTargetAddresses);
-      60                 :            :     }
-      61                 :            : 
-      62                 :            :     /**
-      63                 :            :      * @notice Add one address to the list
-      64                 :            :      * If the address already exists, the transaction is reverted to save gas.
-      65                 :            :      * @param targetAddress The address to list
-      66                 :            :      */
-      67                 :            :     function addAddressToTheList(
-      68                 :            :         address targetAddress
-      69                 :            :     ) public onlyRole(ADDRESS_LIST_ADD_ROLE) {
-      70                 :         51 :         _addAddressToThelist(targetAddress);
-      71                 :         50 :         emit AddAddressToTheList(targetAddress);
-      72                 :            :     }
-      73                 :            : 
-      74                 :            :     /**
-      75                 :            :      * @notice Remove one address from the list
-      76                 :            :      * If the address does not exist in the list, the transaction is reverted to save gas.
-      77                 :            :      * @param targetAddress The address to remove
-      78                 :            :      *
-      79                 :            :      */
-      80                 :            :     function removeAddressFromTheList(
-      81                 :            :         address targetAddress
-      82                 :            :     ) public onlyRole(ADDRESS_LIST_REMOVE_ROLE) {
-      83                 :          2 :         _removeAddressFromThelist(targetAddress);
-      84                 :          1 :         emit RemoveAddressFromTheList(targetAddress);
-      85                 :            :     }
-      86                 :            : 
-      87                 :            :     /**
-      88                 :            :      * @notice Get the number of listed addresses
-      89                 :            :      * @return Number of listed addresses
-      90                 :            :      *
-      91                 :            :      */
-      92                 :            :     function numberListedAddress() public view returns (uint256) {
-      93                 :         24 :         return _numberListedAddress();
-      94                 :            :     }
-      95                 :            : 
-      96                 :            :     /**
-      97                 :            :      * @notice Know if an address is listed or not
-      98                 :            :      * @param _targetAddress The concerned address
-      99                 :            :      * @return True if the address is listed, false otherwise
-     100                 :            :      *
-     101                 :            :      */
-     102                 :            :     function addressIsListed(
-     103                 :            :         address _targetAddress
-     104                 :            :     ) public view returns (bool) {
-     105                 :        159 :         return _addressIsListed(_targetAddress);
-     106                 :            :     }
-     107                 :            : 
-     108                 :            :     /**
-     109                 :            :      * @notice batch version of {addressIsListed}
-     110                 :            :      *
-     111                 :            :      */
-     112                 :            :     function addressIsListedBatch(
-     113                 :            :         address[] memory _targetAddresses
-     114                 :            :     ) public view returns (bool[] memory) {
-     115                 :         28 :         bool[] memory isListed = new bool[](_targetAddresses.length);
-     116                 :         28 :         for (uint256 i = 0; i < _targetAddresses.length; ++i) {
-     117                 :         55 :             isListed[i] = _addressIsListed(_targetAddresses[i]);
-     118                 :            :         }
-     119                 :         28 :         return isListed;
-     120                 :            :     }
-     121                 :            : 
-     122                 :            :     /* ============ ACCESS CONTROL ============ */
-     123                 :            :     /**
-     124                 :            :      * @dev Returns `true` if `account` has been granted `role`.
-     125                 :            :      */
-     126                 :            :     function hasRole(
-     127                 :            :         bytes32 role,
-     128                 :            :         address account
-     129                 :            :     ) public view virtual override(AccessControl) returns (bool) {
-     130                 :            :         // The Default Admin has all roles
-     131            [ + ]:        280 :         if (AccessControl.hasRole(DEFAULT_ADMIN_ROLE, account)) {
-     132                 :         78 :             return true;
-     133                 :            :         }
-     134                 :        202 :         return AccessControl.hasRole(role, account);
-     135                 :            :     }
-     136                 :            : 
-     137                 :            :     /*//////////////////////////////////////////////////////////////
-     138                 :            :                            ERC-2771
-     139                 :            :     //////////////////////////////////////////////////////////////*/
-     140                 :            : 
-     141                 :            :     /**
-     142                 :            :      * @dev This surcharge is not necessary if you do not use the MetaTxModule
-     143                 :            :      */
-     144                 :            :     function _msgSender()
-     145                 :            :         internal
-     146                 :            :         view
-     147                 :            :         override(ERC2771Context, Context)
-     148                 :            :         returns (address sender)
-     149                 :            :     {
-     150                 :        270 :         return ERC2771Context._msgSender();
-     151                 :            :     }
-     152                 :            : 
-     153                 :            :     /**
-     154                 :            :      * @dev This surcharge is not necessary if you do not use the MetaTxModule
-     155                 :            :      */
-     156                 :            :     function _msgData()
-     157                 :            :         internal
-     158                 :            :         view
-     159                 :            :         override(ERC2771Context, Context)
-     160                 :            :         returns (bytes calldata)
-     161                 :            :     {
-     162                 :          0 :         return ERC2771Context._msgData();
-     163                 :            :     }
-     164                 :            : 
-     165                 :            :     /**
-     166                 :            :      * @dev This surcharge is not necessary if you do not use the MetaTxModule
-     167                 :            :      */
-     168                 :            :     function _contextSuffixLength()
-     169                 :            :         internal
-     170                 :            :         view
-     171                 :            :         override(ERC2771Context, Context)
-     172                 :            :         returns (uint256)
-     173                 :            :     {
-     174                 :        270 :         return ERC2771Context._contextSuffixLength();
-     175                 :            :     }
-     176                 :            : }
-
-
-
- - - - -
Generated by: LCOV version 1.16
-
- - - diff --git a/doc/coverage/coverage/src/rules/validation/abstract/RuleAddressList/RuleAddressListInternal.sol.func-sort-c.html b/doc/coverage/coverage/src/rules/validation/abstract/RuleAddressList/RuleAddressListInternal.sol.func-sort-c.html deleted file mode 100644 index 5b3956f..0000000 --- a/doc/coverage/coverage/src/rules/validation/abstract/RuleAddressList/RuleAddressListInternal.sol.func-sort-c.html +++ /dev/null @@ -1,105 +0,0 @@ - - - - - - - LCOV - lcov.info - src/rules/validation/abstract/RuleAddressList/RuleAddressListInternal.sol - functions - - - - - - - - - - - - - - -
LCOV - code coverage report
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Current view:top level - src/rules/validation/abstract/RuleAddressList - RuleAddressListInternal.sol (source / functions)HitTotalCoverage
Test:lcov.infoLines:2222100.0 %
Date:2024-12-20 10:41:14Functions:66100.0 %
Branches:44100.0 %
-
- -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

Function Name Sort by function nameHit count Sort by hit count
RuleAddressListInternal._removeAddressFromThelist2
RuleAddressListInternal._removeAddressesFromThelist3
RuleAddressListInternal._addAddressesToThelist16
RuleAddressListInternal._numberListedAddress24
RuleAddressListInternal._addAddressToThelist51
RuleAddressListInternal._addressIsListed214
-
-
- - - -
Generated by: LCOV version 1.16
-
- - - diff --git a/doc/coverage/coverage/src/rules/validation/abstract/RuleAddressList/RuleAddressListInternal.sol.func.html b/doc/coverage/coverage/src/rules/validation/abstract/RuleAddressList/RuleAddressListInternal.sol.func.html deleted file mode 100644 index d5e1465..0000000 --- a/doc/coverage/coverage/src/rules/validation/abstract/RuleAddressList/RuleAddressListInternal.sol.func.html +++ /dev/null @@ -1,105 +0,0 @@ - - - - - - - LCOV - lcov.info - src/rules/validation/abstract/RuleAddressList/RuleAddressListInternal.sol - functions - - - - - - - - - - - - - - -
LCOV - code coverage report
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Current view:top level - src/rules/validation/abstract/RuleAddressList - RuleAddressListInternal.sol (source / functions)HitTotalCoverage
Test:lcov.infoLines:2222100.0 %
Date:2024-12-20 10:41:14Functions:66100.0 %
Branches:44100.0 %
-
- -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

Function Name Sort by function nameHit count Sort by hit count
RuleAddressListInternal._addAddressToThelist51
RuleAddressListInternal._addAddressesToThelist16
RuleAddressListInternal._addressIsListed214
RuleAddressListInternal._numberListedAddress24
RuleAddressListInternal._removeAddressFromThelist2
RuleAddressListInternal._removeAddressesFromThelist3
-
-
- - - -
Generated by: LCOV version 1.16
-
- - - diff --git a/doc/coverage/coverage/src/rules/validation/abstract/RuleAddressList/RuleAddressListInternal.sol.gcov.html b/doc/coverage/coverage/src/rules/validation/abstract/RuleAddressList/RuleAddressListInternal.sol.gcov.html deleted file mode 100644 index f91cf24..0000000 --- a/doc/coverage/coverage/src/rules/validation/abstract/RuleAddressList/RuleAddressListInternal.sol.gcov.html +++ /dev/null @@ -1,186 +0,0 @@ - - - - - - - LCOV - lcov.info - src/rules/validation/abstract/RuleAddressList/RuleAddressListInternal.sol - - - - - - - - - - - - - - -
LCOV - code coverage report
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Current view:top level - src/rules/validation/abstract/RuleAddressList - RuleAddressListInternal.sol (source / functions)HitTotalCoverage
Test:lcov.infoLines:2222100.0 %
Date:2024-12-20 10:41:14Functions:66100.0 %
Branches:44100.0 %
-
- - - - - - - - -

-
           Branch data     Line data    Source code
-
-       1                 :            : // SPDX-License-Identifier: MPL-2.0
-       2                 :            : 
-       3                 :            : pragma solidity ^0.8.20;
-       4                 :            : 
-       5                 :            : /**
-       6                 :            :  * @title a list manager
-       7                 :            :  */
-       8                 :            : 
-       9                 :            : abstract contract RuleAddressListInternal {
-      10                 :            :     error Rulelist_AddressAlreadylisted();
-      11                 :            :     error Rulelist_AddressNotPresent();
-      12                 :            : 
-      13                 :            :     mapping(address => bool) private list;
-      14                 :            :     // Number of addresses in the list at the moment
-      15                 :            :     uint256 private numAddressesList;
-      16                 :            : 
-      17                 :            :     /**
-      18                 :            :      * @notice Add addresses to the list
-      19                 :            :      * If one of addresses already exist, there is no change for this address. The transaction remains valid (no revert).
-      20                 :            :      * @param listTargetAddresses an array with the addresses to list
-      21                 :            :      */
-      22                 :            :     function _addAddressesToThelist(
-      23                 :            :         address[] calldata listTargetAddresses
-      24                 :            :     ) internal {
-      25                 :         16 :         uint256 numAddressesListLocal = numAddressesList;
-      26                 :         16 :         for (uint256 i = 0; i < listTargetAddresses.length; ++i) {
-      27            [ + ]:         34 :             if (!list[listTargetAddresses[i]]) {
-      28                 :         32 :                 list[listTargetAddresses[i]] = true;
-      29                 :         32 :                 ++numAddressesListLocal;
-      30                 :            :             }
-      31                 :            :         }
-      32                 :         16 :         numAddressesList = numAddressesListLocal;
-      33                 :            :     }
-      34                 :            : 
-      35                 :            :     /**
-      36                 :            :      * @notice Remove addresses from the list
-      37                 :            :      * If the address does not exist in the list, there is no change for this address.
-      38                 :            :      * The transaction remains valid (no revert).
-      39                 :            :      * @param listTargetAddresses an array with the addresses to remove
-      40                 :            :      */
-      41                 :            :     function _removeAddressesFromThelist(
-      42                 :            :         address[] calldata listTargetAddresses
-      43                 :            :     ) internal {
-      44                 :          3 :         uint256 numAddressesListLocal = numAddressesList;
-      45                 :          3 :         for (uint256 i = 0; i < listTargetAddresses.length; ++i) {
-      46            [ + ]:          6 :             if (list[listTargetAddresses[i]]) {
-      47                 :          6 :                 list[listTargetAddresses[i]] = false;
-      48                 :          6 :                 --numAddressesListLocal;
-      49                 :            :             }
-      50                 :            :         }
-      51                 :          3 :         numAddressesList = numAddressesListLocal;
-      52                 :            :     }
-      53                 :            : 
-      54                 :            :     /**
-      55                 :            :      * @notice Add one address to the list
-      56                 :            :      * If the address already exists, the transaction is reverted to save gas.
-      57                 :            :      * @param targetAddress The address to list
-      58                 :            :      */
-      59                 :            :     function _addAddressToThelist(address targetAddress) internal {
-      60            [ + ]:          1 :         if (list[targetAddress]) {
-      61                 :          1 :             revert Rulelist_AddressAlreadylisted();
-      62                 :            :         }
-      63                 :         50 :         list[targetAddress] = true;
-      64                 :         50 :         ++numAddressesList;
-      65                 :            :     }
-      66                 :            : 
-      67                 :            :     /**
-      68                 :            :      * @notice Remove one address from the list
-      69                 :            :      * If the address does not exist in the list, the transaction is reverted to save gas.
-      70                 :            :      * @param targetAddress The address to remove
-      71                 :            :      *
-      72                 :            :      */
-      73                 :            :     function _removeAddressFromThelist(address targetAddress) internal {
-      74            [ + ]:          2 :         if (!list[targetAddress]) {
-      75                 :          1 :             revert Rulelist_AddressNotPresent();
-      76                 :            :         }
-      77                 :          1 :         list[targetAddress] = false;
-      78                 :          1 :         --numAddressesList;
-      79                 :            :     }
-      80                 :            : 
-      81                 :            :     /**
-      82                 :            :      * @notice Get the number of listed addresses
-      83                 :            :      * @return Number of listed addresses
-      84                 :            :      *
-      85                 :            :      */
-      86                 :            :     function _numberListedAddress() internal view returns (uint256) {
-      87                 :         24 :         return numAddressesList;
-      88                 :            :     }
-      89                 :            : 
-      90                 :            :     /**
-      91                 :            :      * @notice Know if an address is listed or not
-      92                 :            :      * @param _targetAddress The concerned address
-      93                 :            :      * @return True if the address is listed, false otherwise
-      94                 :            :      *
-      95                 :            :      */
-      96                 :            :     function _addressIsListed(
-      97                 :            :         address _targetAddress
-      98                 :            :     ) internal view returns (bool) {
-      99                 :        214 :         return list[_targetAddress];
-     100                 :            :     }
-     101                 :            : }
-
-
-
- - - - -
Generated by: LCOV version 1.16
-
- - - diff --git a/doc/coverage/coverage/src/rules/validation/abstract/RuleAddressList/index-sort-b.html b/doc/coverage/coverage/src/rules/validation/abstract/RuleAddressList/index-sort-b.html deleted file mode 100644 index 5f6b1ad..0000000 --- a/doc/coverage/coverage/src/rules/validation/abstract/RuleAddressList/index-sort-b.html +++ /dev/null @@ -1,119 +0,0 @@ - - - - - - - LCOV - lcov.info - src/rules/validation/abstract/RuleAddressList - - - - - - - - - - - - - - -
LCOV - code coverage report
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Current view:top level - src/rules/validation/abstract/RuleAddressListHitTotalCoverage
Test:lcov.infoLines:444597.8 %
Date:2024-12-20 10:41:14Functions:171894.4 %
Branches:66100.0 %
-
- -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

Filename Sort by nameLine Coverage Sort by line coverageFunctions Sort by function coverageBranches Sort by branch coverage
RuleAddressList.sol -
95.7%95.7%
-
95.7 %22 / 2391.7 %11 / 12100.0 %2 / 2
RuleAddressListInternal.sol -
100.0%
-
100.0 %22 / 22100.0 %6 / 6100.0 %4 / 4
-
-
- - - - -
Generated by: LCOV version 1.16
-
- - - diff --git a/doc/coverage/coverage/src/rules/validation/abstract/RuleAddressList/index-sort-f.html b/doc/coverage/coverage/src/rules/validation/abstract/RuleAddressList/index-sort-f.html deleted file mode 100644 index d55918c..0000000 --- a/doc/coverage/coverage/src/rules/validation/abstract/RuleAddressList/index-sort-f.html +++ /dev/null @@ -1,119 +0,0 @@ - - - - - - - LCOV - lcov.info - src/rules/validation/abstract/RuleAddressList - - - - - - - - - - - - - - -
LCOV - code coverage report
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Current view:top level - src/rules/validation/abstract/RuleAddressListHitTotalCoverage
Test:lcov.infoLines:444597.8 %
Date:2024-12-20 10:41:14Functions:171894.4 %
Branches:66100.0 %
-
- -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

Filename Sort by nameLine Coverage Sort by line coverageFunctions Sort by function coverageBranches Sort by branch coverage
RuleAddressList.sol -
95.7%95.7%
-
95.7 %22 / 2391.7 %11 / 12100.0 %2 / 2
RuleAddressListInternal.sol -
100.0%
-
100.0 %22 / 22100.0 %6 / 6100.0 %4 / 4
-
-
- - - - -
Generated by: LCOV version 1.16
-
- - - diff --git a/doc/coverage/coverage/src/rules/validation/abstract/RuleAddressList/index-sort-l.html b/doc/coverage/coverage/src/rules/validation/abstract/RuleAddressList/index-sort-l.html deleted file mode 100644 index 94dea7d..0000000 --- a/doc/coverage/coverage/src/rules/validation/abstract/RuleAddressList/index-sort-l.html +++ /dev/null @@ -1,119 +0,0 @@ - - - - - - - LCOV - lcov.info - src/rules/validation/abstract/RuleAddressList - - - - - - - - - - - - - - -
LCOV - code coverage report
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Current view:top level - src/rules/validation/abstract/RuleAddressListHitTotalCoverage
Test:lcov.infoLines:444597.8 %
Date:2024-12-20 10:41:14Functions:171894.4 %
Branches:66100.0 %
-
- -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

Filename Sort by nameLine Coverage Sort by line coverageFunctions Sort by function coverageBranches Sort by branch coverage
RuleAddressList.sol -
95.7%95.7%
-
95.7 %22 / 2391.7 %11 / 12100.0 %2 / 2
RuleAddressListInternal.sol -
100.0%
-
100.0 %22 / 22100.0 %6 / 6100.0 %4 / 4
-
-
- - - - -
Generated by: LCOV version 1.16
-
- - - diff --git a/doc/coverage/coverage/src/rules/validation/abstract/RuleAddressList/index.html b/doc/coverage/coverage/src/rules/validation/abstract/RuleAddressList/index.html deleted file mode 100644 index b24b451..0000000 --- a/doc/coverage/coverage/src/rules/validation/abstract/RuleAddressList/index.html +++ /dev/null @@ -1,119 +0,0 @@ - - - - - - - LCOV - lcov.info - src/rules/validation/abstract/RuleAddressList - - - - - - - - - - - - - - -
LCOV - code coverage report
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Current view:top level - src/rules/validation/abstract/RuleAddressListHitTotalCoverage
Test:lcov.infoLines:444597.8 %
Date:2024-12-20 10:41:14Functions:171894.4 %
Branches:66100.0 %
-
- -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

Filename Sort by nameLine Coverage Sort by line coverageFunctions Sort by function coverageBranches Sort by branch coverage
RuleAddressList.sol -
95.7%95.7%
-
95.7 %22 / 2391.7 %11 / 12100.0 %2 / 2
RuleAddressListInternal.sol -
100.0%
-
100.0 %22 / 22100.0 %6 / 6100.0 %4 / 4
-
-
- - - - -
Generated by: LCOV version 1.16
-
- - - diff --git a/doc/coverage/coverage/src/rules/validation/abstract/RuleValidateTransfer.sol.func-sort-c.html b/doc/coverage/coverage/src/rules/validation/abstract/RuleValidateTransfer.sol.func-sort-c.html deleted file mode 100644 index 9025b1d..0000000 --- a/doc/coverage/coverage/src/rules/validation/abstract/RuleValidateTransfer.sol.func-sort-c.html +++ /dev/null @@ -1,85 +0,0 @@ - - - - - - - LCOV - lcov.info - src/rules/validation/abstract/RuleValidateTransfer.sol - functions - - - - - - - - - - - - - - -
LCOV - code coverage report
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Current view:top level - src/rules/validation/abstract - RuleValidateTransfer.sol (source / functions)HitTotalCoverage
Test:lcov.infoLines:22100.0 %
Date:2024-12-20 10:41:14Functions:11100.0 %
Branches:00-
-
- -
- - - - - - - - - - -

Function Name Sort by function nameHit count Sort by hit count
RuleValidateTransfer.validateTransfer40
-
-
- - - -
Generated by: LCOV version 1.16
-
- - - diff --git a/doc/coverage/coverage/src/rules/validation/abstract/RuleValidateTransfer.sol.func.html b/doc/coverage/coverage/src/rules/validation/abstract/RuleValidateTransfer.sol.func.html deleted file mode 100644 index cef3f12..0000000 --- a/doc/coverage/coverage/src/rules/validation/abstract/RuleValidateTransfer.sol.func.html +++ /dev/null @@ -1,85 +0,0 @@ - - - - - - - LCOV - lcov.info - src/rules/validation/abstract/RuleValidateTransfer.sol - functions - - - - - - - - - - - - - - -
LCOV - code coverage report
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Current view:top level - src/rules/validation/abstract - RuleValidateTransfer.sol (source / functions)HitTotalCoverage
Test:lcov.infoLines:22100.0 %
Date:2024-12-20 10:41:14Functions:11100.0 %
Branches:00-
-
- -
- - - - - - - - - - -

Function Name Sort by function nameHit count Sort by hit count
RuleValidateTransfer.validateTransfer40
-
-
- - - -
Generated by: LCOV version 1.16
-
- - - diff --git a/doc/coverage/coverage/src/rules/validation/abstract/RuleValidateTransfer.sol.gcov.html b/doc/coverage/coverage/src/rules/validation/abstract/RuleValidateTransfer.sol.gcov.html deleted file mode 100644 index c350c3b..0000000 --- a/doc/coverage/coverage/src/rules/validation/abstract/RuleValidateTransfer.sol.gcov.html +++ /dev/null @@ -1,110 +0,0 @@ - - - - - - - LCOV - lcov.info - src/rules/validation/abstract/RuleValidateTransfer.sol - - - - - - - - - - - - - - -
LCOV - code coverage report
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Current view:top level - src/rules/validation/abstract - RuleValidateTransfer.sol (source / functions)HitTotalCoverage
Test:lcov.infoLines:22100.0 %
Date:2024-12-20 10:41:14Functions:11100.0 %
Branches:00-
-
- - - - - - - - -

-
           Branch data     Line data    Source code
-
-       1                 :            : // SPDX-License-Identifier: MPL-2.0
-       2                 :            : 
-       3                 :            : pragma solidity ^0.8.20;
-       4                 :            : 
-       5                 :            : import "../../../interfaces/IRuleValidation.sol";
-       6                 :            : 
-       7                 :            : abstract contract RuleValidateTransfer is IRuleValidation {
-       8                 :            :     /**
-       9                 :            :      * @notice Validate a transfer
-      10                 :            :      * @param _from the origin address
-      11                 :            :      * @param _to the destination address
-      12                 :            :      * @param _amount to transfer
-      13                 :            :      * @return isValid => true if the transfer is valid, false otherwise
-      14                 :            :      **/
-      15                 :            :     function validateTransfer(
-      16                 :            :         address _from,
-      17                 :            :         address _to,
-      18                 :            :         uint256 _amount
-      19                 :            :     ) public view override returns (bool isValid) {
-      20                 :            :         // does not work without this keyword "Undeclared identifier"
-      21                 :         40 :         return
-      22                 :         40 :             this.detectTransferRestriction(_from, _to, _amount) ==
-      23                 :            :             uint8(REJECTED_CODE_BASE.TRANSFER_OK);
-      24                 :            :     }
-      25                 :            : }
-
-
-
- - - - -
Generated by: LCOV version 1.16
-
- - - diff --git a/doc/coverage/coverage/src/rules/validation/abstract/RuleWhitelistCommon.sol.func-sort-c.html b/doc/coverage/coverage/src/rules/validation/abstract/RuleWhitelistCommon.sol.func-sort-c.html deleted file mode 100644 index d40fb06..0000000 --- a/doc/coverage/coverage/src/rules/validation/abstract/RuleWhitelistCommon.sol.func-sort-c.html +++ /dev/null @@ -1,89 +0,0 @@ - - - - - - - LCOV - lcov.info - src/rules/validation/abstract/RuleWhitelistCommon.sol - functions - - - - - - - - - - - - - - -
LCOV - code coverage report
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Current view:top level - src/rules/validation/abstract - RuleWhitelistCommon.sol (source / functions)HitTotalCoverage
Test:lcov.infoLines:88100.0 %
Date:2024-12-20 10:41:14Functions:22100.0 %
Branches:44100.0 %
-
- -
- - - - - - - - - - - - - - -

Function Name Sort by function nameHit count Sort by hit count
RuleWhitelistCommon.messageForTransferRestriction10
RuleWhitelistCommon.canReturnTransferRestrictionCode12
-
-
- - - -
Generated by: LCOV version 1.16
-
- - - diff --git a/doc/coverage/coverage/src/rules/validation/abstract/RuleWhitelistCommon.sol.func.html b/doc/coverage/coverage/src/rules/validation/abstract/RuleWhitelistCommon.sol.func.html deleted file mode 100644 index b899bc1..0000000 --- a/doc/coverage/coverage/src/rules/validation/abstract/RuleWhitelistCommon.sol.func.html +++ /dev/null @@ -1,89 +0,0 @@ - - - - - - - LCOV - lcov.info - src/rules/validation/abstract/RuleWhitelistCommon.sol - functions - - - - - - - - - - - - - - -
LCOV - code coverage report
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Current view:top level - src/rules/validation/abstract - RuleWhitelistCommon.sol (source / functions)HitTotalCoverage
Test:lcov.infoLines:88100.0 %
Date:2024-12-20 10:41:14Functions:22100.0 %
Branches:44100.0 %
-
- -
- - - - - - - - - - - - - - -

Function Name Sort by function nameHit count Sort by hit count
RuleWhitelistCommon.canReturnTransferRestrictionCode12
RuleWhitelistCommon.messageForTransferRestriction10
-
-
- - - -
Generated by: LCOV version 1.16
-
- - - diff --git a/doc/coverage/coverage/src/rules/validation/abstract/RuleWhitelistCommon.sol.gcov.html b/doc/coverage/coverage/src/rules/validation/abstract/RuleWhitelistCommon.sol.gcov.html deleted file mode 100644 index 20b596c..0000000 --- a/doc/coverage/coverage/src/rules/validation/abstract/RuleWhitelistCommon.sol.gcov.html +++ /dev/null @@ -1,126 +0,0 @@ - - - - - - - LCOV - lcov.info - src/rules/validation/abstract/RuleWhitelistCommon.sol - - - - - - - - - - - - - - -
LCOV - code coverage report
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Current view:top level - src/rules/validation/abstract - RuleWhitelistCommon.sol (source / functions)HitTotalCoverage
Test:lcov.infoLines:88100.0 %
Date:2024-12-20 10:41:14Functions:22100.0 %
Branches:44100.0 %
-
- - - - - - - - -

-
           Branch data     Line data    Source code
-
-       1                 :            : // SPDX-License-Identifier: MPL-2.0
-       2                 :            : 
-       3                 :            : pragma solidity ^0.8.20;
-       4                 :            : 
-       5                 :            : import "./RuleAddressList/invariantStorage/RuleWhitelistInvariantStorage.sol";
-       6                 :            : import "./RuleValidateTransfer.sol";
-       7                 :            : 
-       8                 :            : abstract contract RuleWhitelistCommon is
-       9                 :            :     RuleValidateTransfer,
-      10                 :            :     RuleWhitelistInvariantStorage
-      11                 :            : {
-      12                 :            :     /**
-      13                 :            :      * @notice To know if the restriction code is valid for this rule or not
-      14                 :            :      * @param _restrictionCode The target restriction code
-      15                 :            :      * @return true if the restriction code is known, false otherwise
-      16                 :            :      **/
-      17                 :            :     function canReturnTransferRestrictionCode(
-      18                 :            :         uint8 _restrictionCode
-      19                 :            :     ) external pure override returns (bool) {
-      20                 :         12 :         return
-      21                 :         12 :             _restrictionCode == CODE_ADDRESS_FROM_NOT_WHITELISTED ||
-      22                 :          6 :             _restrictionCode == CODE_ADDRESS_TO_NOT_WHITELISTED;
-      23                 :            :     }
-      24                 :            : 
-      25                 :            :     /**
-      26                 :            :      * @notice Return the corresponding message
-      27                 :            :      * @param _restrictionCode The target restriction code
-      28                 :            :      * @return true if the transfer is valid, false otherwise
-      29                 :            :      **/
-      30                 :            :     function messageForTransferRestriction(
-      31                 :            :         uint8 _restrictionCode
-      32                 :            :     ) external pure override returns (string memory) {
-      33         [ +  + ]:         10 :         if (_restrictionCode == CODE_ADDRESS_FROM_NOT_WHITELISTED) {
-      34                 :          6 :             return TEXT_ADDRESS_FROM_NOT_WHITELISTED;
-      35         [ +  + ]:          4 :         } else if (_restrictionCode == CODE_ADDRESS_TO_NOT_WHITELISTED) {
-      36                 :          3 :             return TEXT_ADDRESS_TO_NOT_WHITELISTED;
-      37                 :            :         } else {
-      38                 :          1 :             return TEXT_CODE_NOT_FOUND;
-      39                 :            :         }
-      40                 :            :     }
-      41                 :            : }
-
-
-
- - - - -
Generated by: LCOV version 1.16
-
- - - diff --git a/doc/coverage/coverage/src/rules/validation/abstract/index-sort-b.html b/doc/coverage/coverage/src/rules/validation/abstract/index-sort-b.html deleted file mode 100644 index 32f7fc4..0000000 --- a/doc/coverage/coverage/src/rules/validation/abstract/index-sort-b.html +++ /dev/null @@ -1,119 +0,0 @@ - - - - - - - LCOV - lcov.info - src/rules/validation/abstract - - - - - - - - - - - - - - -
LCOV - code coverage report
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Current view:top level - src/rules/validation/abstractHitTotalCoverage
Test:lcov.infoLines:1010100.0 %
Date:2024-12-20 10:41:14Functions:33100.0 %
Branches:44100.0 %
-
- -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

Filename Sort by nameLine Coverage Sort by line coverageFunctions Sort by function coverageBranches Sort by branch coverage
RuleValidateTransfer.sol -
100.0%
-
100.0 %2 / 2100.0 %1 / 1-0 / 0
RuleWhitelistCommon.sol -
100.0%
-
100.0 %8 / 8100.0 %2 / 2100.0 %4 / 4
-
-
- - - - -
Generated by: LCOV version 1.16
-
- - - diff --git a/doc/coverage/coverage/src/rules/validation/abstract/index-sort-f.html b/doc/coverage/coverage/src/rules/validation/abstract/index-sort-f.html deleted file mode 100644 index 37e913e..0000000 --- a/doc/coverage/coverage/src/rules/validation/abstract/index-sort-f.html +++ /dev/null @@ -1,119 +0,0 @@ - - - - - - - LCOV - lcov.info - src/rules/validation/abstract - - - - - - - - - - - - - - -
LCOV - code coverage report
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Current view:top level - src/rules/validation/abstractHitTotalCoverage
Test:lcov.infoLines:1010100.0 %
Date:2024-12-20 10:41:14Functions:33100.0 %
Branches:44100.0 %
-
- -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

Filename Sort by nameLine Coverage Sort by line coverageFunctions Sort by function coverageBranches Sort by branch coverage
RuleValidateTransfer.sol -
100.0%
-
100.0 %2 / 2100.0 %1 / 1-0 / 0
RuleWhitelistCommon.sol -
100.0%
-
100.0 %8 / 8100.0 %2 / 2100.0 %4 / 4
-
-
- - - - -
Generated by: LCOV version 1.16
-
- - - diff --git a/doc/coverage/coverage/src/rules/validation/abstract/index-sort-l.html b/doc/coverage/coverage/src/rules/validation/abstract/index-sort-l.html deleted file mode 100644 index 51f2975..0000000 --- a/doc/coverage/coverage/src/rules/validation/abstract/index-sort-l.html +++ /dev/null @@ -1,119 +0,0 @@ - - - - - - - LCOV - lcov.info - src/rules/validation/abstract - - - - - - - - - - - - - - -
LCOV - code coverage report
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Current view:top level - src/rules/validation/abstractHitTotalCoverage
Test:lcov.infoLines:1010100.0 %
Date:2024-12-20 10:41:14Functions:33100.0 %
Branches:44100.0 %
-
- -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

Filename Sort by nameLine Coverage Sort by line coverageFunctions Sort by function coverageBranches Sort by branch coverage
RuleValidateTransfer.sol -
100.0%
-
100.0 %2 / 2100.0 %1 / 1-0 / 0
RuleWhitelistCommon.sol -
100.0%
-
100.0 %8 / 8100.0 %2 / 2100.0 %4 / 4
-
-
- - - - -
Generated by: LCOV version 1.16
-
- - - diff --git a/doc/coverage/coverage/src/rules/validation/abstract/index.html b/doc/coverage/coverage/src/rules/validation/abstract/index.html deleted file mode 100644 index 74cd455..0000000 --- a/doc/coverage/coverage/src/rules/validation/abstract/index.html +++ /dev/null @@ -1,119 +0,0 @@ - - - - - - - LCOV - lcov.info - src/rules/validation/abstract - - - - - - - - - - - - - - -
LCOV - code coverage report
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Current view:top level - src/rules/validation/abstractHitTotalCoverage
Test:lcov.infoLines:1010100.0 %
Date:2024-12-20 10:41:14Functions:33100.0 %
Branches:44100.0 %
-
- -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

Filename Sort by nameLine Coverage Sort by line coverageFunctions Sort by function coverageBranches Sort by branch coverage
RuleValidateTransfer.sol -
100.0%
-
100.0 %2 / 2100.0 %1 / 1-0 / 0
RuleWhitelistCommon.sol -
100.0%
-
100.0 %8 / 8100.0 %2 / 2100.0 %4 / 4
-
-
- - - - -
Generated by: LCOV version 1.16
-
- - - diff --git a/doc/coverage/coverage/src/rules/validation/index-sort-b.html b/doc/coverage/coverage/src/rules/validation/index-sort-b.html deleted file mode 100644 index d627eb6..0000000 --- a/doc/coverage/coverage/src/rules/validation/index-sort-b.html +++ /dev/null @@ -1,143 +0,0 @@ - - - - - - - LCOV - lcov.info - src/rules/validation - - - - - - - - - - - - - - -
LCOV - code coverage report
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Current view:top level - src/rules/validationHitTotalCoverage
Test:lcov.infoLines:727497.3 %
Date:2024-12-20 10:41:14Functions:202290.9 %
Branches:3232100.0 %
-
- -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

Filename Sort by nameLine Coverage Sort by line coverageFunctions Sort by function coverageBranches Sort by branch coverage
RuleWhitelist.sol -
100.0%
-
100.0 %5 / 5100.0 %2 / 2100.0 %4 / 4
RuleBlacklist.sol -
100.0%
-
100.0 %13 / 13100.0 %4 / 4100.0 %8 / 8
RuleWhitelistWrapper.sol -
96.4%96.4%
-
96.4 %27 / 2883.3 %5 / 6100.0 %9 / 9
RuleSanctionList.sol -
96.4%96.4%
-
96.4 %27 / 2890.0 %9 / 10100.0 %11 / 11
-
-
- - - - -
Generated by: LCOV version 1.16
-
- - - diff --git a/doc/coverage/coverage/src/rules/validation/index-sort-f.html b/doc/coverage/coverage/src/rules/validation/index-sort-f.html deleted file mode 100644 index 7939279..0000000 --- a/doc/coverage/coverage/src/rules/validation/index-sort-f.html +++ /dev/null @@ -1,143 +0,0 @@ - - - - - - - LCOV - lcov.info - src/rules/validation - - - - - - - - - - - - - - -
LCOV - code coverage report
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Current view:top level - src/rules/validationHitTotalCoverage
Test:lcov.infoLines:727497.3 %
Date:2024-12-20 10:41:14Functions:202290.9 %
Branches:3232100.0 %
-
- -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

Filename Sort by nameLine Coverage Sort by line coverageFunctions Sort by function coverageBranches Sort by branch coverage
RuleWhitelistWrapper.sol -
96.4%96.4%
-
96.4 %27 / 2883.3 %5 / 6100.0 %9 / 9
RuleSanctionList.sol -
96.4%96.4%
-
96.4 %27 / 2890.0 %9 / 10100.0 %11 / 11
RuleWhitelist.sol -
100.0%
-
100.0 %5 / 5100.0 %2 / 2100.0 %4 / 4
RuleBlacklist.sol -
100.0%
-
100.0 %13 / 13100.0 %4 / 4100.0 %8 / 8
-
-
- - - - -
Generated by: LCOV version 1.16
-
- - - diff --git a/doc/coverage/coverage/src/rules/validation/index-sort-l.html b/doc/coverage/coverage/src/rules/validation/index-sort-l.html deleted file mode 100644 index e147ebd..0000000 --- a/doc/coverage/coverage/src/rules/validation/index-sort-l.html +++ /dev/null @@ -1,143 +0,0 @@ - - - - - - - LCOV - lcov.info - src/rules/validation - - - - - - - - - - - - - - -
LCOV - code coverage report
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Current view:top level - src/rules/validationHitTotalCoverage
Test:lcov.infoLines:727497.3 %
Date:2024-12-20 10:41:14Functions:202290.9 %
Branches:3232100.0 %
-
- -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

Filename Sort by nameLine Coverage Sort by line coverageFunctions Sort by function coverageBranches Sort by branch coverage
RuleSanctionList.sol -
96.4%96.4%
-
96.4 %27 / 2890.0 %9 / 10100.0 %11 / 11
RuleWhitelistWrapper.sol -
96.4%96.4%
-
96.4 %27 / 2883.3 %5 / 6100.0 %9 / 9
RuleWhitelist.sol -
100.0%
-
100.0 %5 / 5100.0 %2 / 2100.0 %4 / 4
RuleBlacklist.sol -
100.0%
-
100.0 %13 / 13100.0 %4 / 4100.0 %8 / 8
-
-
- - - - -
Generated by: LCOV version 1.16
-
- - - diff --git a/doc/coverage/coverage/src/rules/validation/index.html b/doc/coverage/coverage/src/rules/validation/index.html deleted file mode 100644 index 3d1ec09..0000000 --- a/doc/coverage/coverage/src/rules/validation/index.html +++ /dev/null @@ -1,143 +0,0 @@ - - - - - - - LCOV - lcov.info - src/rules/validation - - - - - - - - - - - - - - -
LCOV - code coverage report
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Current view:top level - src/rules/validationHitTotalCoverage
Test:lcov.infoLines:727497.3 %
Date:2024-12-20 10:41:14Functions:202290.9 %
Branches:3232100.0 %
-
- -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

Filename Sort by nameLine Coverage Sort by line coverageFunctions Sort by function coverageBranches Sort by branch coverage
RuleBlacklist.sol -
100.0%
-
100.0 %13 / 13100.0 %4 / 4100.0 %8 / 8
RuleSanctionList.sol -
96.4%96.4%
-
96.4 %27 / 2890.0 %9 / 10100.0 %11 / 11
RuleWhitelist.sol -
100.0%
-
100.0 %5 / 5100.0 %2 / 2100.0 %4 / 4
RuleWhitelistWrapper.sol -
96.4%96.4%
-
96.4 %27 / 2883.3 %5 / 6100.0 %9 / 9
-
-
- - - - -
Generated by: LCOV version 1.16
-
- - - diff --git a/doc/coverage/coverage/test/RuleConditionalTransfer/utils/RuleCTDeployment.sol.func-sort-c.html b/doc/coverage/coverage/test/RuleConditionalTransfer/utils/RuleCTDeployment.sol.func-sort-c.html deleted file mode 100644 index 88c2a09..0000000 --- a/doc/coverage/coverage/test/RuleConditionalTransfer/utils/RuleCTDeployment.sol.func-sort-c.html +++ /dev/null @@ -1,85 +0,0 @@ - - - - - - - LCOV - lcov.info - test/RuleConditionalTransfer/utils/RuleCTDeployment.sol - functions - - - - - - - - - - - - - - -
LCOV - code coverage report
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Current view:top level - test/RuleConditionalTransfer/utils - RuleCTDeployment.sol (source / functions)HitTotalCoverage
Test:lcov.infoLines:1010100.0 %
Date:2024-12-20 10:41:14Functions:11100.0 %
Branches:00-
-
- -
- - - - - - - - - - -

Function Name Sort by function nameHit count Sort by hit count
RuleCTDeployment.13
-
-
- - - -
Generated by: LCOV version 1.16
-
- - - diff --git a/doc/coverage/coverage/test/RuleConditionalTransfer/utils/RuleCTDeployment.sol.func.html b/doc/coverage/coverage/test/RuleConditionalTransfer/utils/RuleCTDeployment.sol.func.html deleted file mode 100644 index ead2a6c..0000000 --- a/doc/coverage/coverage/test/RuleConditionalTransfer/utils/RuleCTDeployment.sol.func.html +++ /dev/null @@ -1,85 +0,0 @@ - - - - - - - LCOV - lcov.info - test/RuleConditionalTransfer/utils/RuleCTDeployment.sol - functions - - - - - - - - - - - - - - -
LCOV - code coverage report
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Current view:top level - test/RuleConditionalTransfer/utils - RuleCTDeployment.sol (source / functions)HitTotalCoverage
Test:lcov.infoLines:1010100.0 %
Date:2024-12-20 10:41:14Functions:11100.0 %
Branches:00-
-
- -
- - - - - - - - - - -

Function Name Sort by function nameHit count Sort by hit count
RuleCTDeployment.13
-
-
- - - -
Generated by: LCOV version 1.16
-
- - - diff --git a/doc/coverage/coverage/test/RuleConditionalTransfer/utils/RuleCTDeployment.sol.gcov.html b/doc/coverage/coverage/test/RuleConditionalTransfer/utils/RuleCTDeployment.sol.gcov.html deleted file mode 100644 index 471014d..0000000 --- a/doc/coverage/coverage/test/RuleConditionalTransfer/utils/RuleCTDeployment.sol.gcov.html +++ /dev/null @@ -1,142 +0,0 @@ - - - - - - - LCOV - lcov.info - test/RuleConditionalTransfer/utils/RuleCTDeployment.sol - - - - - - - - - - - - - - -
LCOV - code coverage report
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Current view:top level - test/RuleConditionalTransfer/utils - RuleCTDeployment.sol (source / functions)HitTotalCoverage
Test:lcov.infoLines:1010100.0 %
Date:2024-12-20 10:41:14Functions:11100.0 %
Branches:00-
-
- - - - - - - - -

-
           Branch data     Line data    Source code
-
-       1                 :            : // SPDX-License-Identifier: MPL-2.0
-       2                 :            : pragma solidity ^0.8.20;
-       3                 :            : 
-       4                 :            : import "forge-std/Test.sol";
-       5                 :            : import "../../HelperContract.sol";
-       6                 :            : import "src/RuleEngine.sol";
-       7                 :            : 
-       8                 :            : /**
-       9                 :            :  * @title Tests on the Access Control
-      10                 :            :  */
-      11                 :            : contract RuleCTDeployment is Test, HelperContract {
-      12                 :            :     // Arrange
-      13                 :            :     constructor() {
-      14                 :         13 :         TIME_LIMIT memory timeLimit_ = TIME_LIMIT({
-      15                 :            :             timeLimitToApprove: 7 days,
-      16                 :            :             timeLimitToTransfer: 30 days
-      17                 :            :         });
-      18                 :            : 
-      19                 :         13 :         AUTOMATIC_APPROVAL memory automaticApproval_ = AUTOMATIC_APPROVAL({
-      20                 :            :             isActivate: false,
-      21                 :            :             timeLimitBeforeAutomaticApproval: 0
-      22                 :            :         });
-      23                 :            : 
-      24                 :         13 :         ISSUANCE memory issuanceOption_ = ISSUANCE({
-      25                 :            :             authorizedMintWithoutApproval: false,
-      26                 :            :             authorizedBurnWithoutApproval: false
-      27                 :            :         });
-      28                 :         13 :         AUTOMATIC_TRANSFER memory automaticTransfer_ = AUTOMATIC_TRANSFER({
-      29                 :            :             isActivate: false,
-      30                 :            :             cmtat: IERC20(address(0))
-      31                 :            :         });
-      32                 :            : 
-      33                 :         13 :         OPTION memory options = OPTION({
-      34                 :            :             issuance: issuanceOption_,
-      35                 :            :             timeLimit: timeLimit_,
-      36                 :            :             automaticApproval: automaticApproval_,
-      37                 :            :             automaticTransfer: automaticTransfer_
-      38                 :            :         });
-      39                 :         13 :         ruleEngineMock = new RuleEngine(
-      40                 :            :             RULE_ENGINE_OPERATOR_ADDRESS,
-      41                 :            :             ZERO_ADDRESS,
-      42                 :            :             ZERO_ADDRESS
-      43                 :            :         );
-      44                 :         13 :         vm.prank(DEFAULT_ADMIN_ADDRESS);
-      45                 :         13 :         ruleConditionalTransfer = new RuleConditionalTransfer(
-      46                 :            :             DEFAULT_ADMIN_ADDRESS,
-      47                 :            :             ZERO_ADDRESS,
-      48                 :            :             ruleEngineMock,
-      49                 :            :             options
-      50                 :            :         );
-      51                 :         13 :         vm.prank(DEFAULT_ADMIN_ADDRESS);
-      52                 :         13 :         ruleConditionalTransfer.grantRole(
-      53                 :            :             RULE_CONDITIONAL_TRANSFER_OPERATOR_ROLE,
-      54                 :            :             CONDITIONAL_TRANSFER_OPERATOR_ADDRESS
-      55                 :            :         );
-      56                 :            :     }
-      57                 :            : }
-
-
-
- - - - -
Generated by: LCOV version 1.16
-
- - - diff --git a/doc/coverage/coverage/test/RuleConditionalTransfer/utils/index-sort-b.html b/doc/coverage/coverage/test/RuleConditionalTransfer/utils/index-sort-b.html deleted file mode 100644 index 273564b..0000000 --- a/doc/coverage/coverage/test/RuleConditionalTransfer/utils/index-sort-b.html +++ /dev/null @@ -1,107 +0,0 @@ - - - - - - - LCOV - lcov.info - test/RuleConditionalTransfer/utils - - - - - - - - - - - - - - -
LCOV - code coverage report
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Current view:top level - test/RuleConditionalTransfer/utilsHitTotalCoverage
Test:lcov.infoLines:1010100.0 %
Date:2024-12-20 10:41:14Functions:11100.0 %
Branches:00-
-
- -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

Filename Sort by nameLine Coverage Sort by line coverageFunctions Sort by function coverageBranches Sort by branch coverage
RuleCTDeployment.sol -
100.0%
-
100.0 %10 / 10100.0 %1 / 1-0 / 0
-
-
- - - - -
Generated by: LCOV version 1.16
-
- - - diff --git a/doc/coverage/coverage/test/RuleConditionalTransfer/utils/index-sort-f.html b/doc/coverage/coverage/test/RuleConditionalTransfer/utils/index-sort-f.html deleted file mode 100644 index cfa53fa..0000000 --- a/doc/coverage/coverage/test/RuleConditionalTransfer/utils/index-sort-f.html +++ /dev/null @@ -1,107 +0,0 @@ - - - - - - - LCOV - lcov.info - test/RuleConditionalTransfer/utils - - - - - - - - - - - - - - -
LCOV - code coverage report
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Current view:top level - test/RuleConditionalTransfer/utilsHitTotalCoverage
Test:lcov.infoLines:1010100.0 %
Date:2024-12-20 10:41:14Functions:11100.0 %
Branches:00-
-
- -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

Filename Sort by nameLine Coverage Sort by line coverageFunctions Sort by function coverageBranches Sort by branch coverage
RuleCTDeployment.sol -
100.0%
-
100.0 %10 / 10100.0 %1 / 1-0 / 0
-
-
- - - - -
Generated by: LCOV version 1.16
-
- - - diff --git a/doc/coverage/coverage/test/RuleConditionalTransfer/utils/index-sort-l.html b/doc/coverage/coverage/test/RuleConditionalTransfer/utils/index-sort-l.html deleted file mode 100644 index 8cfb2ca..0000000 --- a/doc/coverage/coverage/test/RuleConditionalTransfer/utils/index-sort-l.html +++ /dev/null @@ -1,107 +0,0 @@ - - - - - - - LCOV - lcov.info - test/RuleConditionalTransfer/utils - - - - - - - - - - - - - - -
LCOV - code coverage report
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Current view:top level - test/RuleConditionalTransfer/utilsHitTotalCoverage
Test:lcov.infoLines:1010100.0 %
Date:2024-12-20 10:41:14Functions:11100.0 %
Branches:00-
-
- -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

Filename Sort by nameLine Coverage Sort by line coverageFunctions Sort by function coverageBranches Sort by branch coverage
RuleCTDeployment.sol -
100.0%
-
100.0 %10 / 10100.0 %1 / 1-0 / 0
-
-
- - - - -
Generated by: LCOV version 1.16
-
- - - diff --git a/doc/coverage/coverage/test/RuleConditionalTransfer/utils/index.html b/doc/coverage/coverage/test/RuleConditionalTransfer/utils/index.html deleted file mode 100644 index 0fb4392..0000000 --- a/doc/coverage/coverage/test/RuleConditionalTransfer/utils/index.html +++ /dev/null @@ -1,107 +0,0 @@ - - - - - - - LCOV - lcov.info - test/RuleConditionalTransfer/utils - - - - - - - - - - - - - - -
LCOV - code coverage report
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Current view:top level - test/RuleConditionalTransfer/utilsHitTotalCoverage
Test:lcov.infoLines:1010100.0 %
Date:2024-12-20 10:41:14Functions:11100.0 %
Branches:00-
-
- -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

Filename Sort by nameLine Coverage Sort by line coverageFunctions Sort by function coverageBranches Sort by branch coverage
RuleCTDeployment.sol -
100.0%
-
100.0 %10 / 10100.0 %1 / 1-0 / 0
-
-
- - - - -
Generated by: LCOV version 1.16
-
- - - diff --git a/doc/coverage/coverage/test/utils/CMTATDeployment.sol.func-sort-c.html b/doc/coverage/coverage/test/utils/CMTATDeployment.sol.func-sort-c.html index a8ae820..45a0afa 100644 --- a/doc/coverage/coverage/test/utils/CMTATDeployment.sol.func-sort-c.html +++ b/doc/coverage/coverage/test/utils/CMTATDeployment.sol.func-sort-c.html @@ -31,13 +31,13 @@ lcov.info Lines: - 4 - 4 + 5 + 5 100.0 % Date: - 2024-12-20 10:41:14 + 2025-07-08 14:58:25 Functions: 1 @@ -69,8 +69,8 @@ Hit count Sort by hit count - CMTATDeployment. - 86 + CMTATDeployment.constructor + 9
diff --git a/doc/coverage/coverage/test/utils/CMTATDeployment.sol.func.html b/doc/coverage/coverage/test/utils/CMTATDeployment.sol.func.html index a912669..312b1ba 100644 --- a/doc/coverage/coverage/test/utils/CMTATDeployment.sol.func.html +++ b/doc/coverage/coverage/test/utils/CMTATDeployment.sol.func.html @@ -31,13 +31,13 @@ lcov.info Lines: - 4 - 4 + 5 + 5 100.0 % Date: - 2024-12-20 10:41:14 + 2025-07-08 14:58:25 Functions: 1 @@ -69,8 +69,8 @@ Hit count Sort by hit count - CMTATDeployment. - 86 + CMTATDeployment.constructor + 9
diff --git a/doc/coverage/coverage/test/utils/CMTATDeployment.sol.gcov.html b/doc/coverage/coverage/test/utils/CMTATDeployment.sol.gcov.html index a0b1546..c3c6c75 100644 --- a/doc/coverage/coverage/test/utils/CMTATDeployment.sol.gcov.html +++ b/doc/coverage/coverage/test/utils/CMTATDeployment.sol.gcov.html @@ -31,13 +31,13 @@ lcov.info Lines: - 4 - 4 + 5 + 5 100.0 % Date: - 2024-12-20 10:41:14 + 2025-07-08 14:58:25 Functions: 1 @@ -74,45 +74,51 @@ 3 : : 4 : : import "forge-std/Test.sol"; 5 : : import "OZ/access/AccessControl.sol"; - 6 : : import "CMTAT/CMTAT_STANDALONE.sol"; - 7 : : - 8 : : contract CMTATDeployment { - 9 : : // Share with helper contract - 10 : : address constant ZERO_ADDRESS = address(0); - 11 : : address constant DEFAULT_ADMIN_ADDRESS = address(1); - 12 : : - 13 : : CMTAT_STANDALONE public cmtat; - 14 : : - 15 : : constructor() { - 16 : : // CMTAT - 17 : 86 : ICMTATConstructor.ERC20Attributes - 18 : : memory erc20Attributes = ICMTATConstructor.ERC20Attributes( - 19 : : "CMTA Token", - 20 : : "CMTAT", - 21 : : 0 - 22 : : ); - 23 : 86 : ICMTATConstructor.BaseModuleAttributes - 24 : : memory baseModuleAttributes = ICMTATConstructor - 25 : : .BaseModuleAttributes( - 26 : : "CMTAT_ISIN", - 27 : : "https://cmta.ch", - 28 : : "CMTAT_info" - 29 : : ); - 30 : 86 : ICMTATConstructor.Engine memory engines = ICMTATConstructor.Engine( - 31 : : IRuleEngine(ZERO_ADDRESS), - 32 : : IDebtEngine(ZERO_ADDRESS), - 33 : : IAuthorizationEngine(ZERO_ADDRESS), - 34 : : IERC1643(ZERO_ADDRESS) - 35 : : ); - 36 : 86 : cmtat = new CMTAT_STANDALONE( - 37 : : ZERO_ADDRESS, - 38 : : DEFAULT_ADMIN_ADDRESS, - 39 : : erc20Attributes, - 40 : : baseModuleAttributes, - 41 : : engines - 42 : : ); - 43 : : } - 44 : : } + 6 : : import {ICMTATConstructor, CMTATStandalone} from "CMTAT/deployment/CMTATStandalone.sol"; + 7 : : import {IRuleEngine} from "CMTAT/interfaces/engine/IRuleEngine.sol"; + 8 : : import {ISnapshotEngine} from "CMTAT/interfaces/engine/ISnapshotEngine.sol"; + 9 : : import {IDocumentEngine} from "CMTAT/interfaces/engine/IDocumentEngine.sol"; + 10 : : import {IERC1643CMTAT} from "CMTAT/interfaces/tokenization/draft-IERC1643CMTAT.sol"; + 11 : : contract CMTATDeployment { + 12 : : // Share with helper contract + 13 : : address constant ZERO_ADDRESS = address(0); + 14 : : address constant DEFAULT_ADMIN_ADDRESS = address(1); + 15 : : + 16 : : CMTATStandalone public cmtat; + 17 : : + 18 : 9 : constructor() { + 19 : : // CMTAT + 20 : 9 : ICMTATConstructor.ERC20Attributes + 21 : : memory erc20Attributes = ICMTATConstructor.ERC20Attributes( + 22 : : "CMTA Token", + 23 : : "CMTAT", + 24 : : 0 + 25 : : ); + 26 : 9 : ICMTATConstructor.ExtraInformationAttributes + 27 : : memory ExtraInformationAttributes = ICMTATConstructor + 28 : : .ExtraInformationAttributes( + 29 : : "CMTAT_ISIN", + 30 : : IERC1643CMTAT.DocumentInfo( + 31 : : "Terms", + 32 : : "https://cmta.ch", + 33 : : 0x9ff867f6592aa9d6d039e7aad6bd71f1659720cbc4dd9eae1554f6eab490098b + 34 : : ), + 35 : : "CMTAT_info" + 36 : : ); + 37 : 9 : ICMTATConstructor.Engine memory engines = ICMTATConstructor.Engine( + 38 : : IRuleEngine(ZERO_ADDRESS), + 39 : : ISnapshotEngine(ZERO_ADDRESS), + 40 : : IDocumentEngine(ZERO_ADDRESS) + 41 : : ); + 42 : 9 : cmtat = new CMTATStandalone( + 43 : : ZERO_ADDRESS, + 44 : : DEFAULT_ADMIN_ADDRESS, + 45 : : erc20Attributes, + 46 : : ExtraInformationAttributes, + 47 : : engines + 48 : : ); + 49 : : } + 50 : : } diff --git a/doc/coverage/coverage/test/utils/SanctionListOracle.sol.func-sort-c.html b/doc/coverage/coverage/test/utils/SanctionListOracle.sol.func-sort-c.html index 32ca64b..c5bd17d 100644 --- a/doc/coverage/coverage/test/utils/SanctionListOracle.sol.func-sort-c.html +++ b/doc/coverage/coverage/test/utils/SanctionListOracle.sol.func-sort-c.html @@ -31,18 +31,18 @@ lcov.info Lines: - 2 - 3 - 66.7 % + 0 + 6 + 0.0 % Date: - 2024-12-20 10:41:14 + 2025-07-08 14:58:25 Functions: + 0 3 - 4 - 75.0 % + 0.0 % @@ -68,21 +68,17 @@ Function Name Sort by function name Hit count Sort by hit count - - SanctionListOracle.removeFromSanctionsList - 0 - SanctionListOracle.addToSanctionsList - 10 + 0 - SanctionListOracle. - 11 + SanctionListOracle.isSanctioned + 0 - SanctionListOracle.isSanctioned - 12 + SanctionListOracle.removeFromSanctionsList + 0
diff --git a/doc/coverage/coverage/test/utils/SanctionListOracle.sol.func.html b/doc/coverage/coverage/test/utils/SanctionListOracle.sol.func.html index 12d4508..f10a507 100644 --- a/doc/coverage/coverage/test/utils/SanctionListOracle.sol.func.html +++ b/doc/coverage/coverage/test/utils/SanctionListOracle.sol.func.html @@ -31,18 +31,18 @@ lcov.info Lines: - 2 - 3 - 66.7 % + 0 + 6 + 0.0 % Date: - 2024-12-20 10:41:14 + 2025-07-08 14:58:25 Functions: + 0 3 - 4 - 75.0 % + 0.0 % @@ -68,17 +68,13 @@ Function Name Sort by function name Hit count Sort by hit count - - SanctionListOracle. - 11 - SanctionListOracle.addToSanctionsList - 10 + 0 SanctionListOracle.isSanctioned - 12 + 0 SanctionListOracle.removeFromSanctionsList diff --git a/doc/coverage/coverage/test/utils/SanctionListOracle.sol.gcov.html b/doc/coverage/coverage/test/utils/SanctionListOracle.sol.gcov.html index 6a45b5a..021ac64 100644 --- a/doc/coverage/coverage/test/utils/SanctionListOracle.sol.gcov.html +++ b/doc/coverage/coverage/test/utils/SanctionListOracle.sol.gcov.html @@ -31,18 +31,18 @@ lcov.info Lines: - 2 - 3 - 66.7 % + 0 + 6 + 0.0 % Date: - 2024-12-20 10:41:14 + 2025-07-08 14:58:25 Functions: + 0 3 - 4 - 75.0 % + 0.0 % @@ -81,16 +81,16 @@ 10 : : 11 : : mapping(address => bool) private sanctionedAddresses; 12 : : - 13 : : function addToSanctionsList(address newSanction) public { - 14 : 10 : sanctionedAddresses[newSanction] = true; + 13 : 0 : function addToSanctionsList(address newSanction) public { + 14 : 0 : sanctionedAddresses[newSanction] = true; 15 : : } 16 : : - 17 : : function removeFromSanctionsList(address removeSanction) public { + 17 : 0 : function removeFromSanctionsList(address removeSanction) public { 18 : 0 : sanctionedAddresses[removeSanction] = true; 19 : : } 20 : : - 21 : : function isSanctioned(address addr) public view returns (bool) { - 22 : 12 : return sanctionedAddresses[addr] == true; + 21 : 0 : function isSanctioned(address addr) public view returns (bool) { + 22 : 0 : return sanctionedAddresses[addr] == true; 23 : : } 24 : : } diff --git a/doc/coverage/coverage/test/utils/index-sort-b.html b/doc/coverage/coverage/test/utils/index-sort-b.html index 500c424..671f207 100644 --- a/doc/coverage/coverage/test/utils/index-sort-b.html +++ b/doc/coverage/coverage/test/utils/index-sort-b.html @@ -31,18 +31,18 @@ lcov.info Lines: - 6 - 7 - 85.7 % + 5 + 11 + 45.5 % Date: - 2024-12-20 10:41:14 + 2025-07-08 14:58:25 Functions: + 1 4 - 5 - 80.0 % + 25.0 % @@ -82,26 +82,26 @@ Branches Sort by branch coverage - CMTATDeployment.sol + SanctionListOracle.sol -
100.0%
+
0.0%
- 100.0 % - 4 / 4 - 100.0 % - 1 / 1 + 0.0 % + 0 / 6 + 0.0 % + 0 / 3 - 0 / 0 - SanctionListOracle.sol + CMTATDeployment.sol -
66.7%66.7%
+
100.0%
- 66.7 % - 2 / 3 - 75.0 % - 3 / 4 + 100.0 % + 5 / 5 + 100.0 % + 1 / 1 - 0 / 0 diff --git a/doc/coverage/coverage/test/utils/index-sort-f.html b/doc/coverage/coverage/test/utils/index-sort-f.html index ff0b711..70b9444 100644 --- a/doc/coverage/coverage/test/utils/index-sort-f.html +++ b/doc/coverage/coverage/test/utils/index-sort-f.html @@ -31,18 +31,18 @@ lcov.info Lines: - 6 - 7 - 85.7 % + 5 + 11 + 45.5 % Date: - 2024-12-20 10:41:14 + 2025-07-08 14:58:25 Functions: + 1 4 - 5 - 80.0 % + 25.0 % @@ -84,12 +84,12 @@ SanctionListOracle.sol -
66.7%66.7%
+
0.0%
- 66.7 % - 2 / 3 - 75.0 % - 3 / 4 + 0.0 % + 0 / 6 + 0.0 % + 0 / 3 - 0 / 0 @@ -99,7 +99,7 @@
100.0%
100.0 % - 4 / 4 + 5 / 5 100.0 % 1 / 1 - diff --git a/doc/coverage/coverage/test/utils/index-sort-l.html b/doc/coverage/coverage/test/utils/index-sort-l.html index b1f3e52..303d495 100644 --- a/doc/coverage/coverage/test/utils/index-sort-l.html +++ b/doc/coverage/coverage/test/utils/index-sort-l.html @@ -31,18 +31,18 @@ lcov.info Lines: - 6 - 7 - 85.7 % + 5 + 11 + 45.5 % Date: - 2024-12-20 10:41:14 + 2025-07-08 14:58:25 Functions: + 1 4 - 5 - 80.0 % + 25.0 % @@ -84,12 +84,12 @@ SanctionListOracle.sol -
66.7%66.7%
+
0.0%
- 66.7 % - 2 / 3 - 75.0 % - 3 / 4 + 0.0 % + 0 / 6 + 0.0 % + 0 / 3 - 0 / 0 @@ -99,7 +99,7 @@
100.0%
100.0 % - 4 / 4 + 5 / 5 100.0 % 1 / 1 - diff --git a/doc/coverage/coverage/test/utils/index.html b/doc/coverage/coverage/test/utils/index.html index 0cb6aec..b473285 100644 --- a/doc/coverage/coverage/test/utils/index.html +++ b/doc/coverage/coverage/test/utils/index.html @@ -31,18 +31,18 @@ lcov.info Lines: - 6 - 7 - 85.7 % + 5 + 11 + 45.5 % Date: - 2024-12-20 10:41:14 + 2025-07-08 14:58:25 Functions: + 1 4 - 5 - 80.0 % + 25.0 % @@ -87,7 +87,7 @@
100.0%
100.0 % - 4 / 4 + 5 / 5 100.0 % 1 / 1 - @@ -96,12 +96,12 @@ SanctionListOracle.sol -
66.7%66.7%
+
0.0%
- 66.7 % - 2 / 3 - 75.0 % - 3 / 4 + 0.0 % + 0 / 6 + 0.0 % + 0 / 3 - 0 / 0 diff --git a/doc/coverage/lcov.info b/doc/coverage/lcov.info index a4e6aaf..7617737 100644 --- a/doc/coverage/lcov.info +++ b/doc/coverage/lcov.info @@ -1,140 +1,114 @@ TN: -SF:script/CMTATWithRuleEngineScript.s.sol -FN:15,CMTATWithRuleEngineScript.run -FNDA:0,CMTATWithRuleEngineScript.run -DA:17,0 -DA:18,0 -DA:19,0 -DA:20,0 -DA:22,0 -DA:23,0 -DA:24,0 -DA:26,0 -DA:30,0 -DA:32,0 -DA:37,0 -DA:38,0 -DA:39,0 -DA:41,0 -FNF:1 -FNH:0 -LF:14 -LH:0 -BRF:0 -BRH:0 -end_of_record -TN: -SF:script/RuleEngineScript.s.sol -FN:16,RuleEngineScript.run -FNDA:0,RuleEngineScript.run -DA:18,0 -DA:19,0 -DA:20,0 -DA:21,0 -DA:23,0 -DA:24,0 -DA:26,0 -DA:27,0 -DA:28,0 -DA:30,0 -DA:33,0 -BRDA:33,0,0,- -BRDA:33,0,1,- -DA:34,0 -FNF:1 -FNH:0 -LF:12 -LH:0 -BRF:2 -BRH:0 -end_of_record -TN: SF:src/RuleEngine.sol -FN:29,RuleEngine. -FNDA:205,RuleEngine. -DA:34,205 -BRDA:34,0,0,1 -DA:35,1 -DA:37,204 -BRDA:37,1,0,86 -DA:38,86 -DA:40,204 -FN:50,RuleEngine.detectTransferRestriction -FNDA:20,RuleEngine.detectTransferRestriction -DA:56,32 -DA:61,32 -BRDA:61,2,0,15 -DA:62,15 -DA:66,17 -DA:67,17 -DA:68,12 -DA:70,12 -BRDA:70,3,0,11 -DA:71,11 -DA:75,6 -FN:85,RuleEngine.validateTransfer -FNDA:12,RuleEngine.validateTransfer -DA:90,12 -DA:91,12 -FN:100,RuleEngine.messageForTransferRestriction -FNDA:18,RuleEngine.messageForTransferRestriction -DA:104,18 -DA:105,18 -DA:107,13 -DA:109,10 -BRDA:109,4,0,10 -DA:110,10 -DA:111,10 -DA:116,8 -DA:117,8 -DA:119,2 -DA:121,1 -BRDA:121,5,0,1 -DA:122,1 -DA:123,1 -DA:127,7 -FN:133,RuleEngine.operateOnTransfer -FNDA:69,RuleEngine.operateOnTransfer -DA:140,68 -DA:141,10 -BRDA:141,6,0,10 -DA:142,10 -DA:145,58 -FN:152,RuleEngine.hasRole -FNDA:299,RuleEngine.hasRole -DA:157,597 -BRDA:157,7,0,220 -DA:158,220 -DA:160,377 -FN:170,RuleEngine._msgSender -FNDA:588,RuleEngine._msgSender -DA:176,588 -FN:182,RuleEngine._msgData +DA:30,74 +FN:30,RuleEngine.constructor +FNDA:74,RuleEngine.constructor +DA:35,74 +BRDA:35,0,0,1 +DA:36,1 +DA:38,73 +BRDA:38,1,0,11 +DA:39,11 +DA:41,73 +DA:51,9 +FN:51,RuleEngine.detectTransferRestriction +FNDA:9,RuleEngine.detectTransferRestriction +DA:57,29 +DA:62,29 +BRDA:62,2,0,16 +DA:63,16 +DA:67,13 +DA:68,13 +DA:69,10 +DA:71,10 +BRDA:71,3,0,7 +DA:72,7 +DA:76,6 +DA:79,4 +FN:79,RuleEngine.detectTransferRestrictionFrom +FNDA:4,RuleEngine.detectTransferRestrictionFrom +DA:86,4 +DA:91,4 +BRDA:91,4,0,2 +DA:92,2 +DA:96,2 +DA:97,2 +DA:98,2 +DA:100,2 +BRDA:100,5,0,1 +DA:101,1 +DA:105,1 +DA:115,13 +FN:115,RuleEngine.canTransfer +FNDA:13,RuleEngine.canTransfer +DA:120,13 +DA:121,13 +DA:132,7 +FN:132,RuleEngine.canTransferFrom +FNDA:7,RuleEngine.canTransferFrom +DA:138,7 +DA:139,7 +DA:148,10 +FN:148,RuleEngine.messageForTransferRestriction +FNDA:10,RuleEngine.messageForTransferRestriction +DA:152,10 +DA:153,10 +DA:155,5 +DA:157,4 +BRDA:157,6,0,4 +DA:158,4 +DA:159,4 +DA:164,6 +DA:165,6 +DA:167,2 +DA:169,1 +BRDA:169,7,0,1 +DA:170,1 +DA:171,1 +DA:175,5 +DA:181,2 +FN:181,RuleEngine.transferred +FNDA:2,RuleEngine.transferred +DA:188,1 +BRDA:188,8,0,1 +BRDA:188,8,1,- +DA:191,0 +DA:194,6 +FN:194,RuleEngine.transferred +FNDA:6,RuleEngine.transferred +DA:200,6 +BRDA:200,9,0,3 +BRDA:200,9,1,3 +DA:203,3 +DA:210,93 +FN:210,RuleEngine.hasRole +FNDA:93,RuleEngine.hasRole +DA:215,257 +BRDA:215,10,0,147 +DA:216,147 +DA:218,110 +DA:228,248 +FN:228,RuleEngine._msgSender +FNDA:248,RuleEngine._msgSender +DA:234,248 +DA:240,0 +FN:240,RuleEngine._msgData FNDA:0,RuleEngine._msgData -DA:188,0 -FN:194,RuleEngine._contextSuffixLength -FNDA:588,RuleEngine._contextSuffixLength -DA:200,588 -FNF:9 -FNH:8 -LF:39 -LH:38 -BRF:8 -BRH:8 -end_of_record -TN: -SF:src/modules/MetaTxModuleStandalone.sol -FN:11,MetaTxModuleStandalone. -FNDA:575,MetaTxModuleStandalone. -FNF:1 -FNH:1 -LF:0 -LH:0 -BRF:0 -BRH:0 +DA:246,0 +DA:252,248 +FN:252,RuleEngine._contextSuffixLength +FNDA:248,RuleEngine._contextSuffixLength +DA:258,248 +FNF:12 +FNH:11 +LF:62 +LH:59 +BRF:13 +BRH:12 end_of_record TN: SF:src/modules/RuleEngineOperation.sol +DA:26,11 FN:26,RuleEngineOperation.setRulesOperation FNDA:11,RuleEngineOperation.setRulesOperation DA:29,11 @@ -142,9 +116,11 @@ BRDA:29,0,0,10 DA:30,10 DA:32,11 DA:33,8 +DA:40,4 FN:40,RuleEngineOperation.clearRulesOperation FNDA:4,RuleEngineOperation.clearRulesOperation DA:41,4 +DA:48,14 FN:48,RuleEngineOperation._clearRulesOperation FNDA:14,RuleEngineOperation._clearRulesOperation DA:49,14 @@ -152,154 +128,189 @@ DA:51,14 DA:54,17 DA:56,17 DA:58,14 +DA:66,33 FN:66,RuleEngineOperation.addRuleOperation -FNDA:85,RuleEngineOperation.addRuleOperation -DA:69,85 -DA:70,83 +FNDA:33,RuleEngineOperation.addRuleOperation +DA:69,33 +DA:70,31 +DA:83,5 FN:83,RuleEngineOperation.removeRuleOperation FNDA:5,RuleEngineOperation.removeRuleOperation DA:87,5 +DA:100,22 FN:100,RuleEngineOperation._removeRuleOperation FNDA:22,RuleEngineOperation._removeRuleOperation DA:101,22 DA:102,21 +DA:108,42 FN:108,RuleEngineOperation.rulesCountOperation -FNDA:41,RuleEngineOperation.rulesCountOperation -DA:109,41 +FNDA:42,RuleEngineOperation.rulesCountOperation +DA:109,42 +DA:116,3 FN:116,RuleEngineOperation.getRuleIndexOperation FNDA:3,RuleEngineOperation.getRuleIndexOperation DA:119,3 +DA:127,1 FN:127,RuleEngineOperation.ruleOperation FNDA:1,RuleEngineOperation.ruleOperation DA:130,1 +DA:137,5 FN:137,RuleEngineOperation.rulesOperation FNDA:5,RuleEngineOperation.rulesOperation DA:143,5 -FN:152,RuleEngineOperation._operateOnTransfer -FNDA:58,RuleEngineOperation._operateOnTransfer -DA:157,58 -DA:158,58 -DA:159,50 -DA:164,50 -BRDA:164,1,0,24 -DA:165,24 -DA:168,34 +DA:152,3 +FN:152,RuleEngineOperation._transferred +FNDA:3,RuleEngineOperation._transferred +DA:157,3 +DA:158,3 +DA:159,1 FNF:11 FNH:11 -LF:25 -LH:25 -BRF:2 -BRH:2 +LF:33 +LH:33 +BRF:1 +BRH:1 end_of_record TN: SF:src/modules/RuleEngineValidation.sol -FN:29,RuleEngineValidation.detectTransferRestrictionValidation +DA:28,3 +FN:28,RuleEngineValidation.detectTransferRestrictionValidation FNDA:3,RuleEngineValidation.detectTransferRestrictionValidation -DA:34,105 -DA:35,105 -DA:36,43 -DA:38,43 -BRDA:38,0,0,28 -DA:39,28 -DA:43,77 -FN:53,RuleEngineValidation.validateTransferValidation -FNDA:2,RuleEngineValidation.validateTransferValidation -DA:58,70 -DA:59,70 -FNF:2 +DA:33,40 +DA:34,40 +DA:35,29 +DA:37,29 +BRDA:37,0,0,22 +DA:38,22 +DA:42,18 +DA:45,0 +FN:45,RuleEngineValidation.detectTransferRestrictionValidationFrom +FNDA:0,RuleEngineValidation.detectTransferRestrictionValidationFrom +DA:51,5 +DA:52,5 +DA:53,3 +DA:55,3 +BRDA:55,1,0,3 +DA:56,3 +DA:59,2 +DA:69,2 +FN:69,RuleEngineValidation.canTransferValidation +FNDA:2,RuleEngineValidation.canTransferValidation +DA:74,8 +DA:75,8 +DA:86,0 +FN:86,RuleEngineValidation.canTransferValidationFrom +FNDA:0,RuleEngineValidation.canTransferValidationFrom +DA:92,1 +DA:93,1 +FNF:4 FNH:2 -LF:8 -LH:8 -BRF:1 -BRH:1 +LF:20 +LH:18 +BRF:2 +BRH:2 end_of_record TN: SF:src/modules/RuleEngineValidationCommon.sol +DA:30,23 FN:30,RuleEngineValidationCommon.setRulesValidation -FNDA:22,RuleEngineValidationCommon.setRulesValidation -DA:33,21 -BRDA:33,0,0,20 -DA:34,20 -DA:36,21 -DA:37,18 +FNDA:23,RuleEngineValidationCommon.setRulesValidation +DA:33,22 +BRDA:33,0,0,21 +DA:34,21 +DA:36,22 +DA:37,19 +DA:44,6 FN:44,RuleEngineValidationCommon.clearRulesValidation FNDA:6,RuleEngineValidationCommon.clearRulesValidation DA:45,5 +DA:53,58 FN:53,RuleEngineValidationCommon.addRuleValidation -FNDA:119,RuleEngineValidationCommon.addRuleValidation -DA:56,118 -DA:57,116 +FNDA:58,RuleEngineValidationCommon.addRuleValidation +DA:56,57 +DA:57,55 +DA:70,6 FN:70,RuleEngineValidationCommon.removeRuleValidation FNDA:6,RuleEngineValidationCommon.removeRuleValidation DA:74,5 +DA:80,70 FN:80,RuleEngineValidationCommon.rulesCountValidation -FNDA:69,RuleEngineValidationCommon.rulesCountValidation -DA:81,69 +FNDA:70,RuleEngineValidationCommon.rulesCountValidation +DA:81,70 +DA:88,3 FN:88,RuleEngineValidationCommon.getRuleIndexValidation FNDA:3,RuleEngineValidationCommon.getRuleIndexValidation DA:91,3 +DA:99,1 FN:99,RuleEngineValidationCommon.ruleValidation FNDA:1,RuleEngineValidationCommon.ruleValidation DA:102,1 +DA:109,5 FN:109,RuleEngineValidationCommon.rulesValidation FNDA:5,RuleEngineValidationCommon.rulesValidation DA:115,5 +DA:125,26 FN:125,RuleEngineValidationCommon._clearRulesValidation -FNDA:25,RuleEngineValidationCommon._clearRulesValidation -DA:126,25 -DA:128,25 -DA:131,28 -DA:133,28 -DA:135,25 +FNDA:26,RuleEngineValidationCommon._clearRulesValidation +DA:126,26 +DA:128,26 +DA:131,29 +DA:133,29 +DA:135,26 +DA:148,34 FN:148,RuleEngineValidationCommon._removeRuleValidation -FNDA:33,RuleEngineValidationCommon._removeRuleValidation -DA:149,33 -DA:150,32 +FNDA:34,RuleEngineValidationCommon._removeRuleValidation +DA:149,34 +DA:150,33 FNF:10 FNH:10 -LF:19 -LH:19 +LF:29 +LH:29 BRF:1 BRH:1 end_of_record TN: SF:src/modules/RuleInternal.sol +DA:19,33 FN:19,RuleInternal._setRules -FNDA:32,RuleInternal._setRules -DA:20,32 +FNDA:33,RuleInternal._setRules +DA:20,33 BRDA:20,0,0,2 DA:21,2 -DA:23,30 -DA:24,48 +DA:23,31 +DA:24,49 BRDA:24,1,0,2 DA:25,2 DA:27,2 BRDA:27,2,0,2 DA:28,2 -DA:30,44 -DA:31,44 -DA:33,44 +DA:30,45 +DA:31,45 +DA:33,45 +DA:43,90 FN:43,RuleInternal._addRule -FNDA:203,RuleInternal._addRule -DA:44,203 +FNDA:90,RuleInternal._addRule +DA:44,90 BRDA:44,3,0,2 DA:45,2 DA:47,2 BRDA:47,4,0,2 DA:48,2 -DA:50,199 -DA:51,199 +DA:50,86 +DA:51,86 +DA:64,56 FN:64,RuleInternal._removeRule -FNDA:55,RuleInternal._removeRule -DA:69,55 +FNDA:56,RuleInternal._removeRule +DA:69,56 BRDA:69,5,0,2 DA:70,2 -DA:72,53 +DA:72,54 BRDA:72,6,0,4 DA:73,4 -DA:75,53 -DA:76,53 -DA:77,53 +DA:75,54 +DA:76,54 +DA:77,54 +DA:84,6 FN:84,RuleInternal._getRuleIndex FNDA:6,RuleInternal._getRuleIndex DA:88,6 @@ -311,781 +322,8 @@ DA:94,6 DA:97,2 FNF:4 FNH:4 -LF:29 -LH:29 +LF:33 +LH:33 BRF:8 BRH:8 end_of_record -TN: -SF:src/rules/operation/RuleConditionalTransfer.sol -FN:27,RuleConditionalTransfer. -FNDA:158,RuleConditionalTransfer. -DA:33,158 -BRDA:33,0,0,1 -DA:34,1 -DA:36,157 -DA:37,157 -BRDA:37,1,0,153 -DA:38,153 -DA:40,157 -FN:51,RuleConditionalTransfer.operateOnTransfer -FNDA:50,RuleConditionalTransfer.operateOnTransfer -DA:61,50 -BRDA:61,2,0,8 -BRDA:61,2,1,24 -DA:62,8 -DA:64,42 -DA:65,42 -BRDA:65,3,0,18 -BRDA:65,3,1,24 -DA:66,18 -DA:67,18 -DA:69,24 -FN:79,RuleConditionalTransfer.createTransferRequest -FNDA:114,RuleConditionalTransfer.createTransferRequest -DA:83,117 -DA:84,117 -DA:85,117 -BRDA:85,4,0,1 -DA:86,1 -DA:88,116 -BRDA:88,5,0,113 -BRDA:88,5,1,3 -DA:89,113 -DA:90,113 -DA:102,113 -DA:103,113 -DA:104,113 -DA:105,113 -DA:108,3 -DA:109,3 -DA:110,3 -FN:123,RuleConditionalTransfer.createTransferRequestBatch -FNDA:3,RuleConditionalTransfer.createTransferRequestBatch -DA:127,3 -BRDA:127,6,0,1 -DA:128,1 -DA:130,2 -BRDA:130,7,0,1 -DA:131,1 -DA:133,1 -DA:134,3 -FN:141,RuleConditionalTransfer.cancelTransferRequest -FNDA:6,RuleConditionalTransfer.cancelTransferRequest -DA:142,6 -FN:148,RuleConditionalTransfer.cancelTransferRequestBatch -FNDA:3,RuleConditionalTransfer.cancelTransferRequestBatch -DA:149,3 -BRDA:149,8,0,1 -DA:150,1 -DA:153,2 -DA:154,5 -BRDA:154,9,0,1 -DA:155,1 -DA:158,1 -DA:159,3 -FN:163,RuleConditionalTransfer.getRequestTrade -FNDA:57,RuleConditionalTransfer.getRequestTrade -DA:168,57 -DA:169,57 -FN:177,RuleConditionalTransfer.getRequestByStatus -FNDA:35,RuleConditionalTransfer.getRequestByStatus -DA:180,35 -DA:181,35 -DA:182,35 -DA:185,35 -DA:186,38 -BRDA:186,10,0,36 -DA:187,36 -DA:192,35 -DA:195,35 -DA:196,38 -BRDA:196,11,0,36 -DA:198,36 -DA:201,36 -DA:202,36 -DA:205,35 -FN:214,RuleConditionalTransfer.detectTransferRestriction -FNDA:56,RuleConditionalTransfer.detectTransferRestriction -DA:220,56 -BRDA:220,12,0,1 -DA:221,1 -DA:223,55 -DA:224,55 -BRDA:224,13,0,8 -BRDA:224,13,1,8 -DA:225,8 -DA:227,47 -FN:236,RuleConditionalTransfer.canReturnTransferRestrictionCode -FNDA:2,RuleConditionalTransfer.canReturnTransferRestrictionCode -DA:239,2 -FN:247,RuleConditionalTransfer.messageForTransferRestriction -FNDA:3,RuleConditionalTransfer.messageForTransferRestriction -DA:250,3 -BRDA:250,14,0,2 -BRDA:250,14,1,1 -DA:251,2 -DA:253,1 -FN:260,RuleConditionalTransfer._validateTransfer -FNDA:106,RuleConditionalTransfer._validateTransfer -DA:265,106 -BRDA:265,15,0,36 -DA:267,36 -DA:268,5 -DA:269,3 -BRDA:269,16,0,3 -DA:270,3 -DA:275,103 -BRDA:275,17,0,6 -DA:276,6 -DA:278,97 -FN:281,RuleConditionalTransfer._cancelTransferRequest -FNDA:9,RuleConditionalTransfer._cancelTransferRequest -DA:282,9 -BRDA:282,18,0,1 -DA:283,1 -DA:285,8 -DA:287,8 -BRDA:287,19,0,1 -DA:288,1 -DA:292,7 -DA:293,2 -DA:294,1 -BRDA:294,20,0,1 -DA:295,1 -DA:297,6 -FN:307,RuleConditionalTransfer._validateBurnMint -FNDA:103,RuleConditionalTransfer._validateBurnMint -DA:313,103 -DA:317,6 -BRDA:317,21,0,6 -DA:318,6 -DA:320,97 -FN:329,RuleConditionalTransfer._validateApproval -FNDA:97,RuleConditionalTransfer._validateApproval -DA:333,97 -DA:335,50 -DA:337,47 -DA:338,50 -BRDA:338,22,0,50 -DA:339,50 -DA:341,47 -DA:342,47 -DA:343,47 -DA:344,20 -BRDA:344,23,0,20 -BRDA:343,23,1,27 -DA:345,20 -DA:348,27 -BRDA:348,24,0,27 -DA:350,27 -DA:355,47 -BRDA:355,25,0,26 -BRDA:355,25,1,21 -DA:356,26 -DA:358,21 -FN:369,RuleConditionalTransfer._msgSender -FNDA:829,RuleConditionalTransfer._msgSender -DA:375,829 -FN:381,RuleConditionalTransfer._msgData -FNDA:0,RuleConditionalTransfer._msgData -DA:387,0 -FN:393,RuleConditionalTransfer._contextSuffixLength -FNDA:829,RuleConditionalTransfer._contextSuffixLength -DA:399,829 -FNF:18 -FNH:17 -LF:106 -LH:105 -BRF:33 -BRH:33 -end_of_record -TN: -SF:src/rules/operation/abstract/RuleConditionalTransferOperator.sol -FN:32,RuleConditionalTransferOperator.setConditionalWhitelist -FNDA:26,RuleConditionalTransferOperator.setConditionalWhitelist -DA:35,26 -DA:36,26 -FN:42,RuleConditionalTransferOperator.setIssuanceOptions -FNDA:7,RuleConditionalTransferOperator.setIssuanceOptions -DA:46,6 -DA:48,3 -BRDA:48,0,0,3 -DA:49,3 -DA:53,6 -DA:55,3 -BRDA:55,1,0,3 -DA:56,3 -FN:66,RuleConditionalTransferOperator.setAutomaticTransfer -FNDA:4,RuleConditionalTransferOperator.setAutomaticTransfer -DA:70,3 -DA:72,2 -BRDA:72,2,0,2 -DA:73,2 -DA:78,3 -DA:80,2 -BRDA:80,3,0,2 -DA:81,2 -FN:90,RuleConditionalTransferOperator.setTimeLimit -FNDA:5,RuleConditionalTransferOperator.setTimeLimit -DA:94,4 -DA:96,4 -BRDA:96,4,0,4 -DA:97,4 -DA:101,4 -DA:103,4 -BRDA:103,5,0,4 -DA:104,4 -FN:114,RuleConditionalTransferOperator.setAutomaticApproval -FNDA:10,RuleConditionalTransferOperator.setAutomaticApproval -DA:118,9 -DA:120,6 -BRDA:120,6,0,6 -DA:121,6 -DA:125,9 -DA:127,9 -BRDA:127,7,0,9 -DA:128,9 -FN:138,RuleConditionalTransferOperator.createTransferRequestWithApproval -FNDA:6,RuleConditionalTransferOperator.createTransferRequestWithApproval -DA:141,5 -FN:150,RuleConditionalTransferOperator.approveTransferRequest -FNDA:40,RuleConditionalTransferOperator.approveTransferRequest -DA:155,39 -FN:161,RuleConditionalTransferOperator.approveTransferRequestWithId -FNDA:5,RuleConditionalTransferOperator.approveTransferRequestWithId -DA:165,4 -BRDA:165,8,0,2 -DA:166,2 -DA:168,2 -DA:171,2 -FN:177,RuleConditionalTransferOperator.resetRequestStatus -FNDA:3,RuleConditionalTransferOperator.resetRequestStatus -DA:180,2 -BRDA:180,9,0,1 -DA:181,1 -DA:183,1 -DA:184,1 -FN:191,RuleConditionalTransferOperator.approveTransferRequestBatchWithId -FNDA:7,RuleConditionalTransferOperator.approveTransferRequestBatchWithId -DA:195,5 -BRDA:195,10,0,1 -DA:196,1 -DA:198,4 -BRDA:198,11,0,1 -DA:199,1 -DA:202,3 -DA:203,11 -BRDA:203,12,0,1 -DA:204,1 -DA:207,2 -DA:208,5 -DA:211,5 -FN:218,RuleConditionalTransferOperator.approveTransferRequestBatch -FNDA:7,RuleConditionalTransferOperator.approveTransferRequestBatch -DA:223,6 -BRDA:223,13,0,1 -DA:224,1 -DA:227,5 -DA:229,3 -BRDA:229,14,0,3 -DA:230,3 -DA:232,2 -DA:233,9 -FN:244,RuleConditionalTransferOperator.createTransferRequestWithApprovalBatch -FNDA:3,RuleConditionalTransferOperator.createTransferRequestWithApprovalBatch -DA:247,2 -BRDA:247,15,0,1 -DA:248,1 -DA:250,1 -DA:251,4 -FN:258,RuleConditionalTransferOperator.resetRequestStatusBatch -FNDA:3,RuleConditionalTransferOperator.resetRequestStatusBatch -DA:261,3 -BRDA:261,16,0,1 -DA:262,1 -DA:265,2 -DA:266,4 -BRDA:266,17,0,1 -DA:267,1 -DA:270,1 -DA:271,3 -DA:272,3 -FN:280,RuleConditionalTransferOperator.hasRole -FNDA:310,RuleConditionalTransferOperator.hasRole -DA:285,704 -BRDA:285,18,0,137 -DA:286,137 -DA:288,567 -FN:294,RuleConditionalTransferOperator._approveTransferRequestKeyElement -FNDA:48,RuleConditionalTransferOperator._approveTransferRequestKeyElement -DA:299,48 -BRDA:299,19,0,1 -DA:300,1 -DA:302,47 -DA:305,47 -DA:306,47 -BRDA:306,20,0,9 -BRDA:306,20,1,8 -DA:307,9 -BRDA:307,21,0,1 -DA:308,1 -DA:311,8 -DA:313,8 -DA:321,38 -FN:325,RuleConditionalTransferOperator._createTransferRequestWithApproval -FNDA:17,RuleConditionalTransferOperator._createTransferRequestWithApproval -DA:331,17 -DA:334,17 -BRDA:334,22,0,16 -BRDA:334,22,1,1 -DA:336,16 -DA:346,16 -DA:347,16 -DA:348,16 -DA:355,16 -DA:359,1 -DA:362,1 -DA:363,1 -FN:373,RuleConditionalTransferOperator._resetRequestStatus -FNDA:10,RuleConditionalTransferOperator._resetRequestStatus -DA:374,10 -DA:375,10 -FN:387,RuleConditionalTransferOperator._checkRequestStatus -FNDA:133,RuleConditionalTransferOperator._checkRequestStatus -DA:389,133 -DA:390,133 -FN:394,RuleConditionalTransferOperator._approveRequest -FNDA:53,RuleConditionalTransferOperator._approveRequest -DA:399,53 -BRDA:399,23,0,1 -DA:400,1 -DA:402,32 -BRDA:402,24,0,32 -BRDA:402,24,1,20 -DA:405,32 -DA:407,3 -BRDA:407,25,0,3 -DA:408,3 -DA:411,29 -DA:413,29 -DA:416,29 -DA:424,29 -DA:425,7 -DA:426,7 -BRDA:426,26,0,7 -DA:430,7 -DA:434,3 -BRDA:434,27,0,3 -DA:436,3 -DA:444,20 -DA:445,20 -FN:458,RuleConditionalTransferOperator._updateProcessedTransfer -FNDA:18,RuleConditionalTransferOperator._updateProcessedTransfer -DA:460,18 -DA:461,18 -DA:463,18 -DA:465,18 -FNF:20 -FNH:20 -LF:113 -LH:113 -BRF:31 -BRH:31 -end_of_record -TN: -SF:src/rules/validation/RuleBlacklist.sol -FN:22,RuleBlacklist. -FNDA:12,RuleBlacklist. -FN:33,RuleBlacklist.detectTransferRestriction -FNDA:10,RuleBlacklist.detectTransferRestriction -DA:38,10 -BRDA:38,0,0,5 -BRDA:38,0,1,3 -DA:39,5 -DA:40,5 -BRDA:40,1,0,2 -BRDA:40,1,1,3 -DA:41,2 -DA:43,3 -FN:52,RuleBlacklist.canReturnTransferRestrictionCode -FNDA:4,RuleBlacklist.canReturnTransferRestrictionCode -DA:55,4 -DA:56,4 -DA:57,2 -FN:65,RuleBlacklist.messageForTransferRestriction -FNDA:4,RuleBlacklist.messageForTransferRestriction -DA:68,4 -BRDA:68,2,0,2 -BRDA:68,2,1,1 -DA:69,2 -DA:70,2 -BRDA:70,3,0,1 -BRDA:70,3,1,1 -DA:71,1 -DA:73,1 -FNF:4 -FNH:4 -LF:13 -LH:13 -BRF:8 -BRH:8 -end_of_record -TN: -SF:src/rules/validation/RuleSanctionList.sol -FN:26,RuleSanctionList. -FNDA:13,RuleSanctionList. -DA:31,13 -BRDA:31,0,0,1 -DA:32,1 -DA:34,12 -BRDA:34,1,0,1 -DA:35,1 -DA:37,12 -FN:45,RuleSanctionList.setSanctionListOracle -FNDA:11,RuleSanctionList.setSanctionListOracle -DA:48,10 -FN:57,RuleSanctionList.detectTransferRestriction -FNDA:7,RuleSanctionList.detectTransferRestriction -DA:62,7 -BRDA:62,2,0,7 -DA:63,7 -BRDA:63,3,0,2 -BRDA:63,3,1,3 -DA:64,2 -DA:65,5 -BRDA:65,4,0,2 -DA:66,2 -DA:69,3 -FN:77,RuleSanctionList.canReturnTransferRestrictionCode -FNDA:3,RuleSanctionList.canReturnTransferRestrictionCode -DA:80,3 -DA:81,3 -DA:82,2 -FN:90,RuleSanctionList.messageForTransferRestriction -FNDA:3,RuleSanctionList.messageForTransferRestriction -DA:93,3 -BRDA:93,5,0,1 -BRDA:93,5,1,1 -DA:94,1 -DA:95,2 -BRDA:95,6,0,1 -BRDA:95,6,1,1 -DA:96,1 -DA:98,1 -FN:106,RuleSanctionList.hasRole -FNDA:13,RuleSanctionList.hasRole -DA:111,24 -BRDA:111,7,0,11 -DA:112,11 -DA:114,13 -FN:121,RuleSanctionList._setSanctionListOracle -FNDA:11,RuleSanctionList._setSanctionListOracle -DA:122,11 -DA:123,11 -FN:133,RuleSanctionList._msgSender -FNDA:23,RuleSanctionList._msgSender -DA:139,23 -FN:145,RuleSanctionList._msgData -FNDA:0,RuleSanctionList._msgData -DA:151,0 -FN:157,RuleSanctionList._contextSuffixLength -FNDA:23,RuleSanctionList._contextSuffixLength -DA:163,23 -FNF:10 -FNH:9 -LF:28 -LH:27 -BRF:11 -BRH:11 -end_of_record -TN: -SF:src/rules/validation/RuleWhitelist.sol -FN:16,RuleWhitelist. -FNDA:173,RuleWhitelist. -FN:27,RuleWhitelist.detectTransferRestriction -FNDA:28,RuleWhitelist.detectTransferRestriction -DA:32,28 -BRDA:32,0,0,13 -BRDA:32,0,1,10 -DA:33,13 -DA:34,15 -BRDA:34,1,0,5 -BRDA:34,1,1,10 -DA:35,5 -DA:37,10 -FNF:2 -FNH:2 -LF:5 -LH:5 -BRF:4 -BRH:4 -end_of_record -TN: -SF:src/rules/validation/RuleWhitelistWrapper.sol -FN:23,RuleWhitelistWrapper. -FNDA:14,RuleWhitelistWrapper. -DA:27,14 -BRDA:27,0,0,1 -DA:28,1 -DA:30,13 -FN:39,RuleWhitelistWrapper.detectTransferRestriction -FNDA:11,RuleWhitelistWrapper.detectTransferRestriction -DA:44,11 -DA:45,11 -DA:46,11 -DA:47,11 -DA:48,11 -DA:49,11 -DA:51,11 -DA:53,25 -DA:55,25 -BRDA:55,1,0,7 -DA:57,7 -DA:59,25 -BRDA:59,2,0,7 -DA:61,7 -DA:63,25 -BRDA:63,3,0,25 -DA:64,25 -DA:67,11 -BRDA:67,4,0,4 -BRDA:67,4,1,5 -DA:68,4 -DA:69,7 -BRDA:69,5,0,2 -BRDA:69,5,1,5 -DA:70,2 -DA:72,5 -FN:80,RuleWhitelistWrapper.hasRole -FNDA:13,RuleWhitelistWrapper.hasRole -DA:85,52 -BRDA:85,6,0,39 -DA:86,39 -DA:88,13 -FN:98,RuleWhitelistWrapper._msgSender -FNDA:52,RuleWhitelistWrapper._msgSender -DA:104,52 -FN:110,RuleWhitelistWrapper._msgData -FNDA:0,RuleWhitelistWrapper._msgData -DA:116,0 -FN:122,RuleWhitelistWrapper._contextSuffixLength -FNDA:52,RuleWhitelistWrapper._contextSuffixLength -DA:128,52 -FNF:6 -FNH:5 -LF:28 -LH:27 -BRF:9 -BRH:9 -end_of_record -TN: -SF:src/rules/validation/abstract/RuleAddressList/RuleAddressList.sol -FN:27,RuleAddressList. -FNDA:185,RuleAddressList. -DA:31,185 -BRDA:31,0,0,1 -DA:32,1 -DA:34,184 -FN:42,RuleAddressList.addAddressesToTheList -FNDA:17,RuleAddressList.addAddressesToTheList -DA:45,16 -DA:46,16 -FN:55,RuleAddressList.removeAddressesFromTheList -FNDA:4,RuleAddressList.removeAddressesFromTheList -DA:58,3 -DA:59,3 -FN:67,RuleAddressList.addAddressToTheList -FNDA:52,RuleAddressList.addAddressToTheList -DA:70,51 -DA:71,50 -FN:80,RuleAddressList.removeAddressFromTheList -FNDA:3,RuleAddressList.removeAddressFromTheList -DA:83,2 -DA:84,1 -FN:92,RuleAddressList.numberListedAddress -FNDA:24,RuleAddressList.numberListedAddress -DA:93,24 -FN:102,RuleAddressList.addressIsListed -FNDA:101,RuleAddressList.addressIsListed -DA:105,159 -FN:112,RuleAddressList.addressIsListedBatch -FNDA:28,RuleAddressList.addressIsListedBatch -DA:115,28 -DA:116,28 -DA:117,55 -DA:119,28 -FN:126,RuleAddressList.hasRole -FNDA:194,RuleAddressList.hasRole -DA:131,280 -BRDA:131,1,0,78 -DA:132,78 -DA:134,202 -FN:144,RuleAddressList._msgSender -FNDA:270,RuleAddressList._msgSender -DA:150,270 -FN:156,RuleAddressList._msgData -FNDA:0,RuleAddressList._msgData -DA:162,0 -FN:168,RuleAddressList._contextSuffixLength -FNDA:270,RuleAddressList._contextSuffixLength -DA:174,270 -FNF:12 -FNH:11 -LF:23 -LH:22 -BRF:2 -BRH:2 -end_of_record -TN: -SF:src/rules/validation/abstract/RuleAddressList/RuleAddressListInternal.sol -FN:22,RuleAddressListInternal._addAddressesToThelist -FNDA:16,RuleAddressListInternal._addAddressesToThelist -DA:25,16 -DA:26,16 -DA:27,34 -BRDA:27,0,0,32 -DA:28,32 -DA:29,32 -DA:32,16 -FN:41,RuleAddressListInternal._removeAddressesFromThelist -FNDA:3,RuleAddressListInternal._removeAddressesFromThelist -DA:44,3 -DA:45,3 -DA:46,6 -BRDA:46,1,0,6 -DA:47,6 -DA:48,6 -DA:51,3 -FN:59,RuleAddressListInternal._addAddressToThelist -FNDA:51,RuleAddressListInternal._addAddressToThelist -DA:60,1 -BRDA:60,2,0,1 -DA:61,1 -DA:63,50 -DA:64,50 -FN:73,RuleAddressListInternal._removeAddressFromThelist -FNDA:2,RuleAddressListInternal._removeAddressFromThelist -DA:74,2 -BRDA:74,3,0,1 -DA:75,1 -DA:77,1 -DA:78,1 -FN:86,RuleAddressListInternal._numberListedAddress -FNDA:24,RuleAddressListInternal._numberListedAddress -DA:87,24 -FN:96,RuleAddressListInternal._addressIsListed -FNDA:214,RuleAddressListInternal._addressIsListed -DA:99,214 -FNF:6 -FNH:6 -LF:22 -LH:22 -BRF:4 -BRH:4 -end_of_record -TN: -SF:src/rules/validation/abstract/RuleValidateTransfer.sol -FN:15,RuleValidateTransfer.validateTransfer -FNDA:40,RuleValidateTransfer.validateTransfer -DA:21,40 -DA:22,40 -FNF:1 -FNH:1 -LF:2 -LH:2 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/rules/validation/abstract/RuleWhitelistCommon.sol -FN:17,RuleWhitelistCommon.canReturnTransferRestrictionCode -FNDA:12,RuleWhitelistCommon.canReturnTransferRestrictionCode -DA:20,12 -DA:21,12 -DA:22,6 -FN:30,RuleWhitelistCommon.messageForTransferRestriction -FNDA:10,RuleWhitelistCommon.messageForTransferRestriction -DA:33,10 -BRDA:33,0,0,6 -BRDA:33,0,1,1 -DA:34,6 -DA:35,4 -BRDA:35,1,0,3 -BRDA:35,1,1,1 -DA:36,3 -DA:38,1 -FNF:2 -FNH:2 -LF:8 -LH:8 -BRF:4 -BRH:4 -end_of_record -TN: -SF:test/HelperContract.sol -FN:95,HelperContract. -FNDA:0,HelperContract. -FNF:1 -FNH:0 -LF:0 -LH:0 -BRF:0 -BRH:0 -end_of_record -TN: -SF:test/RuleConditionalTransfer/utils/RuleCTDeployment.sol -FN:13,RuleCTDeployment. -FNDA:13,RuleCTDeployment. -DA:14,13 -DA:19,13 -DA:24,13 -DA:28,13 -DA:33,13 -DA:39,13 -DA:44,13 -DA:45,13 -DA:51,13 -DA:52,13 -FNF:1 -FNH:1 -LF:10 -LH:10 -BRF:0 -BRH:0 -end_of_record -TN: -SF:test/utils/CMTATDeployment.sol -FN:15,CMTATDeployment. -FNDA:86,CMTATDeployment. -DA:17,86 -DA:23,86 -DA:30,86 -DA:36,86 -FNF:1 -FNH:1 -LF:4 -LH:4 -BRF:0 -BRH:0 -end_of_record -TN: -SF:test/utils/SanctionListOracle.sol -FN:9,SanctionListOracle. -FNDA:11,SanctionListOracle. -FN:13,SanctionListOracle.addToSanctionsList -FNDA:10,SanctionListOracle.addToSanctionsList -DA:14,10 -FN:17,SanctionListOracle.removeFromSanctionsList -FNDA:0,SanctionListOracle.removeFromSanctionsList -DA:18,0 -FN:21,SanctionListOracle.isSanctioned -FNDA:12,SanctionListOracle.isSanctioned -DA:22,12 -FNF:4 -FNH:3 -LF:3 -LH:2 -BRF:0 -BRH:0 -end_of_record diff --git a/foundry.toml b/foundry.toml index abc90ea..090a5e1 100644 --- a/foundry.toml +++ b/foundry.toml @@ -1,10 +1,10 @@ [profile.default] -solc = "0.8.27" +solc = "0.8.30" src = 'src' out = 'out' libs = ['lib'] optimizer = true optimizer_runs = 200 -evm_version = 'cancun' +evm_version = 'prague' # See more config options https://github.com/foundry-rs/foundry/tree/master/config diff --git a/hardhat.config.js b/hardhat.config.js index 83d9e54..6ca0075 100644 --- a/hardhat.config.js +++ b/hardhat.config.js @@ -2,12 +2,12 @@ require("@nomicfoundation/hardhat-foundry"); require('solidity-docgen'); module.exports = { - solidity: "0.8.27", + solidity: "0.8.30", settings: { optimizer: { enabled: true, runs: 200 }, - evmVersion:"cancun" + evmVersion:"prague" } }; diff --git a/script/CMTATWithRuleEngineScript.s.sol b/script/CMTATWithRuleEngineScript.s.sol index 65aec2c..bdeb9c0 100644 --- a/script/CMTATWithRuleEngineScript.s.sol +++ b/script/CMTATWithRuleEngineScript.s.sol @@ -1,3 +1,4 @@ + // SPDX-License-Identifier: UNLICENSED // Documentation : // https://book.getfoundry.sh/tutorials/solidity-scripting @@ -6,10 +7,10 @@ pragma solidity ^0.8.17; import "forge-std/Script.sol"; import "../test/HelperContract.sol"; import {RuleEngine} from "src/RuleEngine.sol"; -import {RuleWhitelist} from "src/rules/validation/RuleWhitelist.sol"; +import {RuleWhitelist} from "src/mocks/rules/validation/RuleWhitelist.sol"; /** -@title Deploy a CMTAT, a RuleWhitelist and a RuleEngine +* @title Deploy a CMTAT, a RuleWhitelist and a RuleEngine */ contract CMTATWithRuleEngineScript is Script, HelperContract { function run() external { @@ -41,3 +42,4 @@ contract CMTATWithRuleEngineScript is Script, HelperContract { vm.stopBroadcast(); } } + diff --git a/script/RuleEngineScript.s.sol b/script/RuleEngineScript.s.sol index a182928..2887f64 100644 --- a/script/RuleEngineScript.s.sol +++ b/script/RuleEngineScript.s.sol @@ -1,3 +1,4 @@ + // SPDX-License-Identifier: UNLICENSED // Documentation : // https://book.getfoundry.sh/tutorials/solidity-scripting @@ -6,7 +7,7 @@ pragma solidity ^0.8.17; import "forge-std/Script.sol"; //import "CMTAT/CMTAT_STANDALONE.sol"; import {RuleEngine} from "src/RuleEngine.sol"; -import {RuleWhitelist} from "src/rules/validation/RuleWhitelist.sol"; +import {RuleWhitelist} from "src/mocks/rules/validation/RuleWhitelist.sol"; import {ValidationModuleRuleEngine} from "CMTAT/modules/wrapper/extensions/ValidationModule/ValidationModuleRuleEngine.sol"; /** @@ -34,3 +35,4 @@ contract RuleEngineScript is Script { vm.stopBroadcast(); } } + diff --git a/src/RuleEngine.sol b/src/RuleEngine.sol index 619d6ee..41f0ac6 100644 --- a/src/RuleEngine.sol +++ b/src/RuleEngine.sol @@ -21,7 +21,7 @@ contract RuleEngine is * @notice * Get the current version of the smart contract */ - string public constant VERSION = "2.0.5"; + string public constant VERSION = "2.2.0"; /** * @param admin Address of the contract (Access Control) @@ -142,22 +142,22 @@ contract RuleEngine is /** * @notice Return the message corresponding to the code - * @param _restrictionCode The target restriction code + * @param restrictionCode The target restriction code * @return True if the transfer is valid, false otherwise **/ function messageForTransferRestriction( - uint8 _restrictionCode + uint8 restrictionCode ) external view override returns (string memory) { // Validation uint256 rulesLength = _rulesValidation.length; for (uint256 i = 0; i < rulesLength; ++i) { if ( IRuleValidation(_rulesValidation[i]) - .canReturnTransferRestrictionCode(_restrictionCode) + .canReturnTransferRestrictionCode(restrictionCode) ) { return IRuleValidation(_rulesValidation[i]) - .messageForTransferRestriction(_restrictionCode); + .messageForTransferRestriction(restrictionCode); } } // operation @@ -165,11 +165,11 @@ contract RuleEngine is for (uint256 i = 0; i < rulesLength; ++i) { if ( IRuleValidation(_rulesOperation[i]) - .canReturnTransferRestrictionCode(_restrictionCode) + .canReturnTransferRestrictionCode(restrictionCode) ) { return IRuleValidation(_rulesOperation[i]) - .messageForTransferRestriction(_restrictionCode); + .messageForTransferRestriction(restrictionCode); } } return "Unknown restriction code"; @@ -182,25 +182,25 @@ contract RuleEngine is address spender, address from, address to, - uint256 amount - ) external override onlyRole(TOKEN_CONTRACT_ROLE) { + uint256 value + ) public override onlyRole(TOKEN_CONTRACT_ROLE) { // Validate transfer - require(RuleEngineValidation.canTransferValidation(from, to, amount),RuleEngine_InvalidTransfer(from, to, amount)); + require(RuleEngineValidation.canTransferValidationFrom(spender, from, to, value), RuleEngine_InvalidTransfer(from, to, value)); // Apply operation on RuleEngine - require(RuleEngineOperation._operateOnTransfer(from, to, amount),RuleEngine_InvalidTransfer(from, to, amount)); + RuleEngineOperation._transferred(from, to, value); } function transferred( address from, address to, - uint256 amount - ) external override onlyRole(TOKEN_CONTRACT_ROLE) { + uint256 value + ) public override onlyRole(TOKEN_CONTRACT_ROLE) { // Validate transfer - require(RuleEngineValidation.canTransferValidation(from, to, amount),RuleEngine_InvalidTransfer(from, to, amount)); + require(RuleEngineValidation.canTransferValidation(from, to, value),RuleEngine_InvalidTransfer(from, to, value)); // Apply operation on RuleEngine - require(RuleEngineOperation._operateOnTransfer(from, to, amount),RuleEngine_InvalidTransfer(from, to, amount)); + RuleEngineOperation._transferred(from, to, value); } /* ============ ACCESS CONTROL ============ */ diff --git a/src/interfaces/IRuleEngineValidation.sol b/src/interfaces/IRuleEngineValidation.sol index 736be39..f471dde 100644 --- a/src/interfaces/IRuleEngineValidation.sol +++ b/src/interfaces/IRuleEngineValidation.sol @@ -8,16 +8,16 @@ interface IRuleEngineValidation { * */ function detectTransferRestrictionValidation( - address _from, - address _to, - uint256 _amount + address from, + address to, + uint256 value ) external view returns (uint8); function detectTransferRestrictionValidationFrom( address spender, - address _from, - address _to, - uint256 _amount + address from, + address to, + uint256 value ) external view returns (uint8); /** @@ -25,9 +25,9 @@ interface IRuleEngineValidation { */ function canTransferValidationFrom( address spender, - address _from, - address _to, - uint256 _amount + address from, + address to, + uint256 value ) external view returns (bool isValid); } diff --git a/src/interfaces/IRuleOperation.sol b/src/interfaces/IRuleOperation.sol index 5874646..9da3114 100644 --- a/src/interfaces/IRuleOperation.sol +++ b/src/interfaces/IRuleOperation.sol @@ -6,9 +6,9 @@ interface IRuleOperation { /** * @dev Returns true if the transfer is valid, and false otherwise. */ - function operateOnTransfer( - address _from, - address _to, - uint256 _amount - ) external returns (bool isValid); + function transferred( + address from, + address to, + uint256 value + ) external; } diff --git a/src/interfaces/IRuleValidation.sol b/src/interfaces/IRuleValidation.sol index 538d514..37b61de 100644 --- a/src/interfaces/IRuleValidation.sol +++ b/src/interfaces/IRuleValidation.sol @@ -9,14 +9,14 @@ interface IRuleValidation is IERC1404Extend, IERC7551Compliance { * @dev Returns true if the restriction code exists, and false otherwise. */ function canReturnTransferRestrictionCode( - uint8 _restrictionCode + uint8 restrictionCode ) external view returns (bool); function detectTransferRestrictionFrom( address spender, - address _from, - address _to, - uint256 _amount + address from, + address to, + uint256 value ) external view override returns (uint8); } diff --git a/src/mocks/rules/operation/RuleConditionalTransferLight.sol b/src/mocks/rules/operation/RuleConditionalTransferLight.sol new file mode 100644 index 0000000..90a44a0 --- /dev/null +++ b/src/mocks/rules/operation/RuleConditionalTransferLight.sol @@ -0,0 +1,125 @@ +// SPDX-License-Identifier: MIT +pragma solidity ^0.8.20; + +import "OZ/access/AccessControl.sol"; +import "../../../interfaces/IRuleOperation.sol"; +import "../validation/abstract/RuleValidateTransfer.sol"; +import {IRuleEngine} from "CMTAT/interfaces/engine/IRuleEngine.sol"; +import {RuleConditionalTransferLightInvariantStorage} from "./abstract/RuleConditionalTransferLightInvariantStorage.sol"; + +/** + * @title TransferApprovalRule + * @dev Requires operator approval for each ERC20 transfer. + * Same transfer (from, to, value) can be approved multiple times. + */ +contract RuleConditionalTransferLight is AccessControl, RuleValidateTransfer, RuleConditionalTransferLightInvariantStorage, + IRuleOperation { + // Mapping from transfer hash to approval count + mapping(bytes32 => uint256) public approvalCounts; + + + + constructor(address admin, IRuleEngine ruleEngineContract) { + require(admin != address(0), "Invalid operator"); + + _grantRole(DEFAULT_ADMIN_ROLE, msg.sender); + _grantRole(OPERATOR_ROLE, admin); + if (address(ruleEngineContract) != address(0x0)) { + _grantRole(RULE_ENGINE_CONTRACT_ROLE, address(ruleEngineContract)); + } + } + + /** + * @notice Approve a specific transfer. Can be approved multiple times. + */ + function approveTransfer(address from, address to, uint256 value)public onlyRole(OPERATOR_ROLE) { + bytes32 transferHash = keccak256(abi.encodePacked(from, to, value)); + approvalCounts[transferHash] += 1; + emit TransferApproved(from, to, value, approvalCounts[transferHash]); + } + + /** + * @notice Returns number of times a transfer is approved. + */ + function approvedCount(address from, address to, uint256 value) public view returns (uint256) { + bytes32 transferHash = keccak256(abi.encodePacked(from, to, value)); + return approvalCounts[transferHash]; + } + + /** + * @notice Called when a transfer occurs. Decrements approval count if allowed. + * @dev `spender` is part of the interface but unused. + */ + function transferred(address from, address to, uint256 value) public { + bytes32 transferHash = keccak256(abi.encodePacked(from, to, value)); + uint256 count = approvalCounts[transferHash]; + + if (count == 0) revert TransferNotApproved(); + + approvalCounts[transferHash] = count - 1; + emit TransferExecuted(from, to, value, approvalCounts[transferHash]); + } + + + /** + * @notice Check if the transfer is valid + * @param from the origin address + * @param to the destination address + * @return The restricion code or REJECTED_CODE_BASE.TRANSFER_OK + **/ + function detectTransferRestriction( + address from, + address to, + uint256 value + ) public view override returns (uint8) { + bytes32 transferHash = keccak256(abi.encodePacked(from, to, value)); + uint256 count = approvalCounts[transferHash]; + if (count == 0) { + return CODE_TRANSFER_REQUEST_NOT_APPROVED; + } + return uint8(REJECTED_CODE_BASE.TRANSFER_OK); + } + + + /** + * @notice Check if the transfer is valid + * @param from the origin address + * @param to the destination address + * @return The restricion code or REJECTED_CODE_BASE.TRANSFER_OK + **/ + function detectTransferRestrictionFrom( + address /* spender*/, + address from, + address to, + uint256 value + ) public view override returns (uint8) { + return detectTransferRestriction(from,to, value ); + } + + /** + * @notice To know if the restriction code is valid for this rule or not. + * @param restrictionCode The target restriction code + * @return true if the restriction code is known, false otherwise + **/ + function canReturnTransferRestrictionCode( + uint8 restrictionCode + ) external pure override returns (bool) { + return restrictionCode == CODE_TRANSFER_REQUEST_NOT_APPROVED; + } + + /** + * @notice Return the corresponding message + * @param restrictionCode The target restriction code + * @return true if the transfer is valid, false otherwise + **/ + function messageForTransferRestriction( + uint8 restrictionCode + ) external pure override returns (string memory) { + if (restrictionCode == CODE_TRANSFER_REQUEST_NOT_APPROVED) { + return TEXT_TRANSFER_REQUEST_NOT_APPROVED; + } else { + return TEXT_CODE_NOT_FOUND; + } + } + +} \ No newline at end of file diff --git a/src/mocks/rules/operation/RuleOperationRevert.sol b/src/mocks/rules/operation/RuleOperationRevert.sol new file mode 100644 index 0000000..854b18b --- /dev/null +++ b/src/mocks/rules/operation/RuleOperationRevert.sol @@ -0,0 +1,81 @@ +// SPDX-License-Identifier: MIT +pragma solidity ^0.8.20; + +import "OZ/access/AccessControl.sol"; +import "../../../interfaces/IRuleOperation.sol"; +import "../validation/abstract/RuleValidateTransfer.sol"; +import "../validation/abstract/RuleCommonInvariantStorage.sol"; +/** + * @title TransferApprovalRule + * @dev Requires operator approval for each ERC20 transfer. + * Same transfer (from, to, value) can be approved multiple times. + */ +contract RuleOperationRevert is AccessControl, RuleValidateTransfer, + IRuleOperation, + RuleCommonInvariantStorage{ + + error RuleConditionalTransferLight_InvalidTransfer(); + // It is very important that each rule uses an unique code + uint8 public constant CODE_TRANSFER_REQUEST_NOT_APPROVED = 71; + /** + * @notice Called when a transfer occurs. Decrements approval count if allowed. + * @dev `spender` is part of the interface but unused. + */ + function transferred(address from, address to, uint256 value) public { + revert RuleConditionalTransferLight_InvalidTransfer(); + } + + + /** + * @notice Check if the transfer is valid + * @param from the origin address + * @param to the destination address + * @return The restricion code or REJECTED_CODE_BASE.TRANSFER_OK + **/ + function detectTransferRestriction( + address from, + address to, + uint256 value + ) public view override returns (uint8) { + return uint8(REJECTED_CODE_BASE.TRANSFER_OK); + } + + + /** + * @notice Check if the transfer is valid + * @param from the origin address + * @param to the destination address + * @return The restricion code or REJECTED_CODE_BASE.TRANSFER_OK + **/ + function detectTransferRestrictionFrom( + address /* spender*/, + address from, + address to, + uint256 value + ) public view override returns (uint8) { + return detectTransferRestriction(from,to, value ); + } + + /** + * @notice To know if the restriction code is valid for this rule or not. + * @param restrictionCode The target restriction code + * @return true if the restriction code is known, false otherwise + **/ + function canReturnTransferRestrictionCode( + uint8 restrictionCode + ) external pure override returns (bool) { + return restrictionCode == CODE_TRANSFER_REQUEST_NOT_APPROVED; + } + + /** + * @notice Return the corresponding message + * @param restrictionCode The target restriction code + * @return true if the transfer is valid, false otherwise + **/ + function messageForTransferRestriction( + uint8 restrictionCode + ) external pure override returns (string memory) { + return TEXT_CODE_NOT_FOUND; + } + +} \ No newline at end of file diff --git a/src/mocks/rules/operation/abstract/RuleConditionalTransferLightInvariantStorage.sol b/src/mocks/rules/operation/abstract/RuleConditionalTransferLightInvariantStorage.sol new file mode 100644 index 0000000..5051598 --- /dev/null +++ b/src/mocks/rules/operation/abstract/RuleConditionalTransferLightInvariantStorage.sol @@ -0,0 +1,30 @@ +// SPDX-License-Identifier: MPL-2.0 + +pragma solidity ^0.8.20; +import "OZ/token/ERC20/IERC20.sol"; + +import "../../validation/abstract/RuleCommonInvariantStorage.sol"; +import "src/mocks/rules/validation/RuleWhitelist.sol"; + +abstract contract RuleConditionalTransferLightInvariantStorage is + RuleCommonInvariantStorage +{ + /* ============ Role ============ */ + bytes32 public constant RULE_ENGINE_CONTRACT_ROLE = + keccak256("RULE_ENGINE_CONTRACT_ROLE"); + bytes32 public constant OPERATOR_ROLE = keccak256("OPERATOR_ROLE"); + + /* ============ State variables ============ */ + string constant TEXT_TRANSFER_REQUEST_NOT_APPROVED = + "ConditionalTransferLight: The request is not approved"; + // Code + // It is very important that each rule uses an unique code + uint8 public constant CODE_TRANSFER_REQUEST_NOT_APPROVED = 71; + + /* ============ Custom error ============ */ + error TransferNotApproved(); + + /* ============ Events ============ */ + event TransferApproved(address indexed from, address indexed to, uint256 value, uint256 count); + event TransferExecuted(address indexed from, address indexed to, uint256 value, uint256 remaining); +} \ No newline at end of file diff --git a/src/rules/validation/RuleWhitelist.sol b/src/mocks/rules/validation/RuleWhitelist.sol similarity index 74% rename from src/rules/validation/RuleWhitelist.sol rename to src/mocks/rules/validation/RuleWhitelist.sol index b8ac216..b1c82a4 100644 --- a/src/rules/validation/RuleWhitelist.sol +++ b/src/mocks/rules/validation/RuleWhitelist.sol @@ -20,18 +20,18 @@ contract RuleWhitelist is RuleAddressList, RuleWhitelistCommon { /** * @notice Check if an addres is in the whitelist or not - * @param _from the origin address - * @param _to the destination address + * @param from the origin address + * @param to the destination address * @return The restricion code or REJECTED_CODE_BASE.TRANSFER_OK **/ function detectTransferRestriction( - address _from, - address _to, - uint256 /*_amount */ + address from, + address to, + uint256 /*value */ ) public view override returns (uint8) { - if (!addressIsListed(_from)) { + if (!addressIsListed(from)) { return CODE_ADDRESS_FROM_NOT_WHITELISTED; - } else if (!addressIsListed(_to)) { + } else if (!addressIsListed(to)) { return CODE_ADDRESS_TO_NOT_WHITELISTED; } else { return uint8(REJECTED_CODE_BASE.TRANSFER_OK); @@ -40,14 +40,14 @@ contract RuleWhitelist is RuleAddressList, RuleWhitelistCommon { function detectTransferRestrictionFrom( address spender, - address _from, - address _to, - uint256 _amount + address from, + address to, + uint256 value ) public view override returns (uint8) { - if (addressIsListed(spender)) { + if (!addressIsListed(spender)) { return CODE_ADDRESS_SPENDER_NOT_WHITELISTED; } else { - return detectTransferRestriction(_from,_to,_amount); + return detectTransferRestriction(from,to,value); } } } diff --git a/src/rules/validation/abstract/RuleAddressList/RuleAddressList.sol b/src/mocks/rules/validation/abstract/RuleAddressList/RuleAddressList.sol similarity index 98% rename from src/rules/validation/abstract/RuleAddressList/RuleAddressList.sol rename to src/mocks/rules/validation/abstract/RuleAddressList/RuleAddressList.sol index ddcdb54..2b5a6e2 100644 --- a/src/rules/validation/abstract/RuleAddressList/RuleAddressList.sol +++ b/src/mocks/rules/validation/abstract/RuleAddressList/RuleAddressList.sol @@ -3,7 +3,7 @@ pragma solidity ^0.8.20; import "OZ/access/AccessControl.sol"; -import "./../../../../modules/MetaTxModuleStandalone.sol"; +import "../../../../../modules/MetaTxModuleStandalone.sol"; import "./RuleAddressListInternal.sol"; import "./invariantStorage/RuleAddressListInvariantStorage.sol"; diff --git a/src/rules/validation/abstract/RuleAddressList/RuleAddressListInternal.sol b/src/mocks/rules/validation/abstract/RuleAddressList/RuleAddressListInternal.sol similarity index 100% rename from src/rules/validation/abstract/RuleAddressList/RuleAddressListInternal.sol rename to src/mocks/rules/validation/abstract/RuleAddressList/RuleAddressListInternal.sol diff --git a/src/rules/validation/abstract/RuleAddressList/invariantStorage/RuleAddressListInvariantStorage.sol b/src/mocks/rules/validation/abstract/RuleAddressList/invariantStorage/RuleAddressListInvariantStorage.sol similarity index 100% rename from src/rules/validation/abstract/RuleAddressList/invariantStorage/RuleAddressListInvariantStorage.sol rename to src/mocks/rules/validation/abstract/RuleAddressList/invariantStorage/RuleAddressListInvariantStorage.sol diff --git a/src/rules/validation/abstract/RuleAddressList/invariantStorage/RuleBlacklistInvariantStorage.sol b/src/mocks/rules/validation/abstract/RuleAddressList/invariantStorage/RuleBlacklistInvariantStorage.sol similarity index 100% rename from src/rules/validation/abstract/RuleAddressList/invariantStorage/RuleBlacklistInvariantStorage.sol rename to src/mocks/rules/validation/abstract/RuleAddressList/invariantStorage/RuleBlacklistInvariantStorage.sol diff --git a/src/rules/validation/abstract/RuleAddressList/invariantStorage/RuleWhitelistInvariantStorage.sol b/src/mocks/rules/validation/abstract/RuleAddressList/invariantStorage/RuleWhitelistInvariantStorage.sol similarity index 100% rename from src/rules/validation/abstract/RuleAddressList/invariantStorage/RuleWhitelistInvariantStorage.sol rename to src/mocks/rules/validation/abstract/RuleAddressList/invariantStorage/RuleWhitelistInvariantStorage.sol diff --git a/src/rules/validation/abstract/RuleCommonInvariantStorage.sol b/src/mocks/rules/validation/abstract/RuleCommonInvariantStorage.sol similarity index 100% rename from src/rules/validation/abstract/RuleCommonInvariantStorage.sol rename to src/mocks/rules/validation/abstract/RuleCommonInvariantStorage.sol diff --git a/src/rules/validation/abstract/RuleSanctionListInvariantStorage.sol b/src/mocks/rules/validation/abstract/RuleSanctionListInvariantStorage.sol similarity index 100% rename from src/rules/validation/abstract/RuleSanctionListInvariantStorage.sol rename to src/mocks/rules/validation/abstract/RuleSanctionListInvariantStorage.sol diff --git a/src/rules/validation/abstract/RuleValidateTransfer.sol b/src/mocks/rules/validation/abstract/RuleValidateTransfer.sol similarity index 93% rename from src/rules/validation/abstract/RuleValidateTransfer.sol rename to src/mocks/rules/validation/abstract/RuleValidateTransfer.sol index 8430be6..2ed061e 100644 --- a/src/rules/validation/abstract/RuleValidateTransfer.sol +++ b/src/mocks/rules/validation/abstract/RuleValidateTransfer.sol @@ -2,7 +2,7 @@ pragma solidity ^0.8.20; -import {IRuleValidation} from "../../../interfaces/IRuleValidation.sol"; +import {IRuleValidation} from "../../../../interfaces/IRuleValidation.sol"; import {IERC1404} from "CMTAT/interfaces/tokenization/draft-IERC1404.sol"; abstract contract RuleValidateTransfer is IRuleValidation { /** diff --git a/src/rules/validation/abstract/RuleWhitelistCommon.sol b/src/mocks/rules/validation/abstract/RuleWhitelistCommon.sol similarity index 62% rename from src/rules/validation/abstract/RuleWhitelistCommon.sol rename to src/mocks/rules/validation/abstract/RuleWhitelistCommon.sol index dedd371..27f9d73 100644 --- a/src/rules/validation/abstract/RuleWhitelistCommon.sol +++ b/src/mocks/rules/validation/abstract/RuleWhitelistCommon.sol @@ -11,31 +11,31 @@ abstract contract RuleWhitelistCommon is { /** * @notice To know if the restriction code is valid for this rule or not - * @param _restrictionCode The target restriction code + * @param restrictionCode The target restriction code * @return true if the restriction code is known, false otherwise **/ function canReturnTransferRestrictionCode( - uint8 _restrictionCode + uint8 restrictionCode ) external pure override returns (bool) { return - _restrictionCode == CODE_ADDRESS_FROM_NOT_WHITELISTED || - _restrictionCode == CODE_ADDRESS_TO_NOT_WHITELISTED || - _restrictionCode == CODE_ADDRESS_SPENDER_NOT_WHITELISTED; + restrictionCode == CODE_ADDRESS_FROM_NOT_WHITELISTED || + restrictionCode == CODE_ADDRESS_TO_NOT_WHITELISTED || + restrictionCode == CODE_ADDRESS_SPENDER_NOT_WHITELISTED; } /** * @notice Return the corresponding message - * @param _restrictionCode The target restriction code + * @param restrictionCode The target restriction code * @return true if the transfer is valid, false otherwise **/ function messageForTransferRestriction( - uint8 _restrictionCode + uint8 restrictionCode ) external pure override returns (string memory) { - if (_restrictionCode == CODE_ADDRESS_FROM_NOT_WHITELISTED) { + if (restrictionCode == CODE_ADDRESS_FROM_NOT_WHITELISTED) { return TEXT_ADDRESS_FROM_NOT_WHITELISTED; - } else if (_restrictionCode == CODE_ADDRESS_TO_NOT_WHITELISTED) { + } else if (restrictionCode == CODE_ADDRESS_TO_NOT_WHITELISTED) { return TEXT_ADDRESS_TO_NOT_WHITELISTED; - } else if (_restrictionCode == CODE_ADDRESS_SPENDER_NOT_WHITELISTED) { + } else if (restrictionCode == CODE_ADDRESS_SPENDER_NOT_WHITELISTED) { return TEXT_ADDRESS_SPENDER_NOT_WHITELISTED; } else { return TEXT_CODE_NOT_FOUND; diff --git a/src/modules/RuleEngineOperation.sol b/src/modules/RuleEngineOperation.sol index 7ff4937..95eaabe 100644 --- a/src/modules/RuleEngineOperation.sol +++ b/src/modules/RuleEngineOperation.sol @@ -145,26 +145,22 @@ abstract contract RuleEngineOperation is /** * @notice Go through all the rule to know if a restriction exists on the transfer - * @param _from the origin address - * @param _to the destination address - * @param _amount to transfer + * @param from the origin address + * @param to the destination address + * @param value to transfer **/ - function _operateOnTransfer( - address _from, - address _to, - uint256 _amount - ) internal returns (bool isValid) { + function _transferred( + address from, + address to, + uint256 value + ) internal { uint256 rulesLength = _rulesOperation.length; for (uint256 i = 0; i < rulesLength; ++i) { - bool result = IRuleOperation(_rulesOperation[i]).operateOnTransfer( - _from, - _to, - _amount + IRuleOperation(_rulesOperation[i]).transferred( + from, + to, + value ); - if (!result) { - return false; - } } - return true; } } diff --git a/src/modules/RuleEngineValidation.sol b/src/modules/RuleEngineValidation.sol index 05cc697..a5780fa 100644 --- a/src/modules/RuleEngineValidation.sol +++ b/src/modules/RuleEngineValidation.sol @@ -20,20 +20,20 @@ abstract contract RuleEngineValidation is { /** * @notice Go through all the rule to know if a restriction exists on the transfer - * @param _from the origin address - * @param _to the destination address - * @param _amount to transfer + * @param from the origin address + * @param to the destination address + * @param value to transfer * @return The restricion code or REJECTED_CODE_BASE.TRANSFER_OK **/ function detectTransferRestrictionValidation( - address _from, - address _to, - uint256 _amount + address from, + address to, + uint256 value ) public view override returns (uint8) { uint256 rulesLength = _rulesValidation.length; for (uint256 i = 0; i < rulesLength; ++i) { uint8 restriction = IRuleValidation(_rulesValidation[i]) - .detectTransferRestriction(_from, _to, _amount); + .detectTransferRestriction(from, to, value); if (restriction > 0) { return restriction; } @@ -44,14 +44,14 @@ abstract contract RuleEngineValidation is function detectTransferRestrictionValidationFrom( address spender, - address _from, - address _to, - uint256 _amount + address from, + address to, + uint256 value ) public view override returns (uint8) { uint256 rulesLength = _rulesValidation.length; for (uint256 i = 0; i < rulesLength; ++i) { uint8 restriction = IRuleValidation(_rulesValidation[i]) - .detectTransferRestrictionFrom(spender, _from, _to, _amount); + .detectTransferRestrictionFrom(spender, from, to, value); if (restriction > 0) { return restriction; } @@ -61,36 +61,36 @@ abstract contract RuleEngineValidation is /** * @notice Validate a transfer - * @param _from the origin address - * @param _to the destination address - * @param _amount to transfer + * @param from the origin address + * @param to the destination address + * @param value to transfer * @return True if the transfer is valid, false otherwise **/ function canTransferValidation( - address _from, - address _to, - uint256 _amount + address from, + address to, + uint256 value ) public view returns (bool) { return - detectTransferRestrictionValidation(_from, _to, _amount) == + detectTransferRestrictionValidation(from, to, value) == uint8(IERC1404Extend.REJECTED_CODE_BASE.TRANSFER_OK); } /** * @notice Validate a transfer - * @param _from the origin address - * @param _to the destination address - * @param _amount to transfer + * @param from the origin address + * @param to the destination address + * @param value to transfer * @return True if the transfer is valid, false otherwise **/ function canTransferValidationFrom( address spender, - address _from, - address _to, - uint256 _amount + address from, + address to, + uint256 value ) public view override returns (bool) { return - detectTransferRestrictionValidationFrom(spender, _from, _to, _amount) == + detectTransferRestrictionValidationFrom(spender, from, to, value) == uint8(IERC1404Extend.REJECTED_CODE_BASE.TRANSFER_OK); } } diff --git a/src/rules/operation/RuleConditionalTransfer.sol b/src/rules/operation/RuleConditionalTransfer.sol deleted file mode 100644 index 34458f6..0000000 --- a/src/rules/operation/RuleConditionalTransfer.sol +++ /dev/null @@ -1,416 +0,0 @@ -// SPDX-License-Identifier: MPL-2.0 - -pragma solidity ^0.8.20; - -import "OZ/access/AccessControl.sol"; -import "../../interfaces/IRuleOperation.sol"; -import "./../../modules/MetaTxModuleStandalone.sol"; -import "./abstract/RuleConditionalTransferInvariantStorage.sol"; -import "./abstract/RuleConditionalTransferOperator.sol"; -import "../validation/abstract/RuleValidateTransfer.sol"; -import {IRuleEngine} from "CMTAT/interfaces/engine/IRuleEngine.sol"; - -/** - * @title RuleConditionalTransfer - */ - -contract RuleConditionalTransfer is - RuleValidateTransfer, - IRuleOperation, - RuleConditionalTransferOperator, - MetaTxModuleStandalone -{ - /** - * @param admin Address of the contract (Access Control) - * @param forwarderIrrevocable Address of the forwarder, required for the gasless support - */ - constructor( - address admin, - address forwarderIrrevocable, - IRuleEngine ruleEngineContract, - OPTION memory options_ - ) MetaTxModuleStandalone(forwarderIrrevocable) { - if (admin == address(0)) { - revert RuleConditionalTransfer_AdminWithAddressZeroNotAllowed(); - } - _grantRole(DEFAULT_ADMIN_ROLE, admin); - if (address(ruleEngineContract) != address(0x0)) { - _grantRole(RULE_ENGINE_CONTRACT_ROLE, address(ruleEngineContract)); - } - options = options_; - } - - /*////////////////////////////////////////////////////////////// - PUBLIC/EXTERNAL FUNCTIONS - //////////////////////////////////////////////////////////////*/ - /** - * @notice function called by the RuleEngine - * @dev Returns true if the transfer is valid, and false otherwise. - * Add access control with the RuleEngine - */ - function operateOnTransfer( - address _from, - address _to, - uint256 _amount - ) - public - override - onlyRole(RULE_ENGINE_CONTRACT_ROLE) - returns (bool isValid) - { - if (_validateTransfer(_from, _to)) { - return true; - } else { - bytes32 key = keccak256(abi.encode(_from, _to, _amount)); - if (_validateApproval(key)) { - _updateProcessedTransfer(key); - return true; - } else { - return false; - } - } - } - - /** - * @notice Create a request of transfer for yourselves - * @param to recipient of tokens - * @param value amount of tokens to transfer - */ - function createTransferRequest(address to, uint256 value) public { - // WAIT => Will set a new delay to approve - // APPROVED => will overwrite previous status - // DENIED => reject - address from = _msgSender(); - bytes32 key = keccak256(abi.encode(from, to, value)); - if (transferRequests[key].status == STATUS.DENIED) { - revert RuleConditionalTransfer_TransferDenied(); - } - if (_checkRequestStatus(key)) { - uint256 requestIdLocal = requestId; - TransferRequest memory newTransferApproval = TransferRequest({ - key: key, - id: requestIdLocal, - keyElement: TransferRequestKeyElement({ - from: from, - to: to, - value: value - }), - askTime: block.timestamp, - maxTime: 0, - status: STATUS.WAIT - }); - transferRequests[key] = newTransferApproval; - IdToKey[requestIdLocal] = key; - emit transferWaiting(key, from, to, value, requestId); - ++requestId; - } else { - // Overwrite previous approval - transferRequests[key].askTime = block.timestamp; - transferRequests[key].status = STATUS.WAIT; - emit transferWaiting( - key, - from, - to, - value, - transferRequests[key].id - ); - } - } - - /** - * @notice Batch version of {createTransferRequest} - */ - function createTransferRequestBatch( - address[] memory tos, - uint256[] memory values - ) public { - if (tos.length == 0) { - revert RuleConditionalTransfer_EmptyArray(); - } - if (tos.length != values.length) { - revert RuleConditionalTransfer_InvalidLengthArray(); - } - for (uint256 i = 0; i < tos.length; ++i) { - createTransferRequest(tos[i], values[i]); - } - } - - /** - * @notice allow a token holder to cancel/reset his own request - */ - function cancelTransferRequest(uint256 requestId_) public { - _cancelTransferRequest(requestId_); - } - - /** - * @notice allow a token holder to cancel/reset his own request - */ - function cancelTransferRequestBatch(uint256[] memory requestIds) public { - if (requestIds.length == 0) { - revert RuleConditionalTransfer_EmptyArray(); - } - // Check id validity before performing actions - for (uint256 i = 0; i < requestIds.length; ++i) { - if (requestIds[i] + 1 > requestId) { - revert RuleConditionalTransfer_InvalidId(); - } - } - for (uint256 i = 0; i < requestIds.length; ++i) { - _cancelTransferRequest(requestIds[i]); - } - } - - function getRequestTrade( - address from, - address to, - uint256 value - ) public view returns (TransferRequest memory) { - bytes32 key = keccak256(abi.encode(from, to, value)); - return transferRequests[key]; - } - - /** - * @notice get Trade by status - * @param _targetStatus The status of the transactions you want to retrieve - * @return array with corresponding transactions - */ - function getRequestByStatus( - STATUS _targetStatus - ) public view returns (TransferRequest[] memory) { - uint totalRequestCount = requestId; - uint requestCount = 0; - uint currentIndex = 0; - - // We count the number of requests matching the criteria - for (uint i = 0; i < totalRequestCount; ++i) { - if (transferRequests[IdToKey[i]].status == _targetStatus) { - requestCount += 1; - } - } - - // We reserve the memory to store the trade - TransferRequest[] memory requests = new TransferRequest[](requestCount); - - // We create an array with the list of trade - for (uint i = 0; i < totalRequestCount; ++i) { - if (transferRequests[IdToKey[i]].status == _targetStatus) { - //uint currentId = i + 1; - TransferRequest memory currentRequest = transferRequests[ - IdToKey[i] - ]; - requests[currentIndex] = currentRequest; - currentIndex += 1; - } - } - return requests; - } - - /** - * @notice Check if the transfer is valid - * @param _from the origin address - * @param _to the destination address - * @return The restricion code or REJECTED_CODE_BASE.TRANSFER_OK - **/ - function detectTransferRestriction( - address _from, - address _to, - uint256 _amount - ) public view override returns (uint8) { - // No need of approval if from and to are in the whitelist - if (_validateTransfer(_from, _to)) { - return uint8(REJECTED_CODE_BASE.TRANSFER_OK); - } - bytes32 key = keccak256(abi.encode(_from, _to, _amount)); - if (_validateApproval(key)) { - return uint8(REJECTED_CODE_BASE.TRANSFER_OK); - } else { - return CODE_TRANSFER_REQUEST_NOT_APPROVED; - } - } - - /** - * @notice Check if the transfer is valid - * @param _from the origin address - * @param _to the destination address - * @return The restricion code or REJECTED_CODE_BASE.TRANSFER_OK - **/ - function detectTransferRestrictionFrom( - address /* spender*/, - address _from, - address _to, - uint256 _amount - ) public view override returns (uint8) { - return detectTransferRestriction(_from,_to, _amount ); - } - - /** - * @notice To know if the restriction code is valid for this rule or not. - * @param _restrictionCode The target restriction code - * @return true if the restriction code is known, false otherwise - **/ - function canReturnTransferRestrictionCode( - uint8 _restrictionCode - ) external pure override returns (bool) { - return _restrictionCode == CODE_TRANSFER_REQUEST_NOT_APPROVED; - } - - /** - * @notice Return the corresponding message - * @param _restrictionCode The target restriction code - * @return true if the transfer is valid, false otherwise - **/ - function messageForTransferRestriction( - uint8 _restrictionCode - ) external pure override returns (string memory) { - if (_restrictionCode == CODE_TRANSFER_REQUEST_NOT_APPROVED) { - return TEXT_TRANSFER_REQUEST_NOT_APPROVED; - } else { - return TEXT_CODE_NOT_FOUND; - } - } - - /*////////////////////////////////////////////////////////////// - INTERNAL FUNCTIONS - //////////////////////////////////////////////////////////////*/ - function _validateTransfer( - address _from, - address _to - ) internal view returns (bool) { - // No need of approval if from and to are in the whitelist - if (address(whitelistConditionalTransfer) != address(0)) { - if ( - whitelistConditionalTransfer.addressIsListed(_from) && - whitelistConditionalTransfer.addressIsListed(_to) - ) { - return true; - } - } - - // Mint & Burn - if (_validateBurnMint(_from, _to)) { - return true; - } - return false; - } - - function _cancelTransferRequest(uint256 requestId_) internal { - if (requestId_ + 1 > requestId) { - revert RuleConditionalTransfer_InvalidId(); - } - bytes32 key = IdToKey[requestId_]; - // Check Sender - if (transferRequests[key].keyElement.from != _msgSender()) { - revert RuleConditionalTransfer_InvalidSender(); - } - // Check status - if ( - transferRequests[key].status != STATUS.WAIT && - transferRequests[key].status != STATUS.APPROVED - ) { - revert RuleConditionalTransfer_Wrong_Status(); - } - _resetRequestStatus(key); - } - - /** - * - * @dev - * Test burn and mint condition - * Returns true if the transfer is valid, and false otherwise. - * - */ - function _validateBurnMint( - address _from, - address _to - ) internal view returns (bool isValid) { - // Mint & Burn - if ( - (_from == address(0) && - options.issuance.authorizedMintWithoutApproval) || - (_to == address(0) && - options.issuance.authorizedBurnWithoutApproval) - ) { - return true; - } - return false; - } - - /** - * - * @dev - * Test transfer approval condition - * Returns true if the transfer is valid, and false otherwise. - */ - function _validateApproval( - bytes32 key - ) internal view returns (bool isValid) { - // If automatic approval is activate and time to approve the request has passed - if(transferRequests[key].status == STATUS.NONE - || - transferRequests[key].status == STATUS.DENIED - || - transferRequests[key].status == STATUS.EXECUTED) - { - return false; - } - bool isTransferApproved; - bool automaticApprovalCondition; - if(transferRequests[key].status == - STATUS.APPROVED){ - isTransferApproved = (transferRequests[key].maxTime >= block.timestamp); - } else if(options - .automaticApproval - .isActivate){ - // Warning: overflow possible if timeLimitBeforeAutomaticApproval == max(uint256) - automaticApprovalCondition= block.timestamp >= - (transferRequests[key].askTime + - options.automaticApproval.timeLimitBeforeAutomaticApproval); - } - // If the transfer is approved and delay to perform the transfer is respected - if (automaticApprovalCondition || isTransferApproved) { - return true; - } else { - return false; - } - } - - /*////////////////////////////////////////////////////////////// - ERC-2771 - //////////////////////////////////////////////////////////////*/ - - /** - * @dev This surcharge is not necessary if you do not use the MetaTxModule - */ - function _msgSender() - internal - view - override(ERC2771Context, Context) - returns (address sender) - { - return ERC2771Context._msgSender(); - } - - /** - * @dev This surcharge is not necessary if you do not use the MetaTxModule - */ - function _msgData() - internal - view - override(ERC2771Context, Context) - returns (bytes calldata) - { - return ERC2771Context._msgData(); - } - - /** - * @dev This surcharge is not necessary if you do not use the MetaTxModule - */ - function _contextSuffixLength() - internal - view - override(ERC2771Context, Context) - returns (uint256) - { - return ERC2771Context._contextSuffixLength(); - } -} diff --git a/src/rules/operation/abstract/RuleConditionalTransferInvariantStorage.sol b/src/rules/operation/abstract/RuleConditionalTransferInvariantStorage.sol deleted file mode 100644 index cfd5536..0000000 --- a/src/rules/operation/abstract/RuleConditionalTransferInvariantStorage.sol +++ /dev/null @@ -1,142 +0,0 @@ -// SPDX-License-Identifier: MPL-2.0 - -pragma solidity ^0.8.20; -import "OZ/token/ERC20/IERC20.sol"; - -import "../../validation/abstract/RuleCommonInvariantStorage.sol"; -import "src/rules/validation/RuleWhitelist.sol"; - -abstract contract RuleConditionalTransferInvariantStorage is - RuleCommonInvariantStorage -{ - /* ============ Struct ============ */ - /** - * perform automatically a transfer if the transfer request is approved. - * To perform the transfer, the token holder has to approve the rule to spend tokens on his behalf (standard ERC-20 approval). - * If the allowance is not sufficient, the request will be approved, but without performing the transfer. - */ - struct AUTOMATIC_TRANSFER { - bool isActivate; - IERC20 cmtat; - } - - struct ISSUANCE { - // Authorize mint without the need of approval - bool authorizedMintWithoutApproval; - // Authorize burn without the need of approval - bool authorizedBurnWithoutApproval; - } - - struct TIME_LIMIT { - // time limit for an operator to approve a request - uint256 timeLimitToApprove; - // once a request is approved, time limit for the token holder to perform the transfer - uint256 timeLimitToTransfer; - } - - struct AUTOMATIC_APPROVAL { - bool isActivate; - /** - * If the transfer is not approved or denied within {timeLimitBeforeAutomaticApproval}, - * the request is considered as approved during a transfer. - */ - uint256 timeLimitBeforeAutomaticApproval; - } - - struct OPTION { - ISSUANCE issuance; - TIME_LIMIT timeLimit; - AUTOMATIC_APPROVAL automaticApproval; - AUTOMATIC_TRANSFER automaticTransfer; - } - - struct TransferRequestKeyElement { - address from; - address to; - uint256 value; - } - - struct TransferRequest { - bytes32 key; - uint256 id; - TransferRequestKeyElement keyElement; - uint256 askTime; - uint256 maxTime; - STATUS status; - } - /* ============ Enum ============ */ - enum STATUS { - NONE, - WAIT, - APPROVED, - DENIED, - EXECUTED - } - - /* ============ Role ============ */ - bytes32 public constant RULE_ENGINE_CONTRACT_ROLE = - keccak256("RULE_ENGINE_CONTRACT_ROLE"); - bytes32 public constant RULE_CONDITIONAL_TRANSFER_OPERATOR_ROLE = - keccak256("RULE_CONDITIONAL_TRANSFER_OPERATOR_ROLE"); - - /* ============ State variables ============ */ - string constant TEXT_TRANSFER_REQUEST_NOT_APPROVED = - "The request is not approved"; - // Code - // It is very important that each rule uses an unique code - uint8 public constant CODE_TRANSFER_REQUEST_NOT_APPROVED = 51; - - /* ============ Custom error ============ */ - error RuleConditionalTransfer_AdminWithAddressZeroNotAllowed(); - error RuleConditionalTransfer_TransferAlreadyApproved(); - error RuleConditionalTransfer_Wrong_Status(); - error RuleConditionalTransfer_timeExceeded(); - error RuleConditionalTransfer_TransferDenied(); - error RuleConditionalTransfer_InvalidId(); - error RuleConditionalTransfer_InvalidSender(); - error RuleConditionalTransfer_InvalidValueApproved(); - error RuleConditionalTransfer_CannotDeniedPartially(); - error RuleConditionalTransfer_InvalidLengthArray(); - error RuleConditionalTransfer_EmptyArray(); - - /* ============ Events ============ */ - event transferProcessed( - bytes32 indexed key, - address indexed from, - address indexed to, - uint256 value, - uint256 id - ); - event transferWaiting( - bytes32 indexed key, - address indexed from, - address indexed to, - uint256 value, - uint256 id - ); - event transferApproved( - bytes32 indexed key, - address indexed from, - address indexed to, - uint256 value, - uint256 id - ); - event transferDenied( - bytes32 indexed key, - address indexed from, - address indexed to, - uint256 value, - uint256 id - ); - event transferReset( - bytes32 indexed key, - address indexed from, - address indexed to, - uint256 value, - uint256 id - ); - - event WhitelistConditionalTransfer( - RuleWhitelist indexed whitelistConditionalTransfer - ); -} diff --git a/src/rules/operation/abstract/RuleConditionalTransferOperator.sol b/src/rules/operation/abstract/RuleConditionalTransferOperator.sol deleted file mode 100644 index b96b55a..0000000 --- a/src/rules/operation/abstract/RuleConditionalTransferOperator.sol +++ /dev/null @@ -1,473 +0,0 @@ -// SPDX-License-Identifier: MPL-2.0 - -pragma solidity ^0.8.20; - -import "OZ/access/AccessControl.sol"; -import "./RuleConditionalTransferInvariantStorage.sol"; -import "OZ/token/ERC20/utils/SafeERC20.sol"; - -/** - * @title Restricted functions - */ -abstract contract RuleConditionalTransferOperator is - AccessControl, - RuleConditionalTransferInvariantStorage -{ - // Security - using SafeERC20 for IERC20; - /* ============ State Variables ============ */ - OPTION public options; - uint256 public requestId; - mapping(uint256 => bytes32) public IdToKey; - mapping(bytes32 => TransferRequest) public transferRequests; - RuleWhitelist public whitelistConditionalTransfer; - - /*////////////////////////////////////////////////////////////// - PUBLIC/EXTERNAL FUNCTIONS - //////////////////////////////////////////////////////////////*/ - - /** - * @notice set a whitelist. A transfer does not need of an approved request if from and to are in the whitelist - */ - function setConditionalWhitelist( - RuleWhitelist newWhitelistConditionalTransfer - ) public onlyRole(RULE_CONDITIONAL_TRANSFER_OPERATOR_ROLE) { - whitelistConditionalTransfer = newWhitelistConditionalTransfer; - emit WhitelistConditionalTransfer(newWhitelistConditionalTransfer); - } - - /** - * @notice set/unset the issuance options (mint & burn) - */ - function setIssuanceOptions( - ISSUANCE calldata issuance_ - ) public onlyRole(RULE_CONDITIONAL_TRANSFER_OPERATOR_ROLE) { - if ( - options.issuance.authorizedMintWithoutApproval != - issuance_.authorizedMintWithoutApproval - ) { - options.issuance.authorizedMintWithoutApproval = issuance_ - .authorizedMintWithoutApproval; - } - if ( - options.issuance.authorizedBurnWithoutApproval != - issuance_.authorizedBurnWithoutApproval - ) { - options.issuance.authorizedBurnWithoutApproval = issuance_ - .authorizedBurnWithoutApproval; - } - } - - /** - * @notice set/unset the option to perform the transfer if the request is approved by the rule operator. - * To perform the transfer, the token holder has to approve the rule to spend tokens on his behalf (standard ERC-20 approval). - * If the allowance is not sufficient, the request will be approved, but without performing the transfer. - */ - function setAutomaticTransfer( - AUTOMATIC_TRANSFER calldata automaticTransfer_ - ) public onlyRole(RULE_CONDITIONAL_TRANSFER_OPERATOR_ROLE) { - if ( - automaticTransfer_.isActivate != - options.automaticTransfer.isActivate - ) { - options.automaticTransfer.isActivate = automaticTransfer_ - .isActivate; - } - // No need to put the cmtat to zero to deactivate automaticTransfer - if ( - address(automaticTransfer_.cmtat) != - address(options.automaticTransfer.cmtat) - ) { - options.automaticTransfer.cmtat = automaticTransfer_.cmtat; - } - } - - /** - * @notice set time limit for new requests (Approval and transfer) - * timeLimitToApprove: time limit for an operator to approve a request - * timeLimitToTransfer: once a request is approved, time limit for the token holder to perform the transfer - */ - function setTimeLimit( - TIME_LIMIT memory timeLimit_ - ) public onlyRole(RULE_CONDITIONAL_TRANSFER_OPERATOR_ROLE) { - if ( - options.timeLimit.timeLimitToApprove != - timeLimit_.timeLimitToApprove - ) { - options.timeLimit.timeLimitToApprove = timeLimit_ - .timeLimitToApprove; - } - if ( - options.timeLimit.timeLimitToTransfer != - timeLimit_.timeLimitToTransfer - ) { - options.timeLimit.timeLimitToTransfer = timeLimit_ - .timeLimitToTransfer; - } - } - - /** - * @notice If the transfer is not approved or denied within {timeLimitBeforeAutomaticApproval}, - * the request is considered as approved during a transfer. - * - */ - function setAutomaticApproval( - AUTOMATIC_APPROVAL memory automaticApproval_ - ) public onlyRole(RULE_CONDITIONAL_TRANSFER_OPERATOR_ROLE) { - if ( - options.automaticApproval.isActivate != - automaticApproval_.isActivate - ) { - options.automaticApproval.isActivate = automaticApproval_ - .isActivate; - } - if ( - options.automaticApproval.timeLimitBeforeAutomaticApproval != - automaticApproval_.timeLimitBeforeAutomaticApproval - ) { - options - .automaticApproval - .timeLimitBeforeAutomaticApproval = automaticApproval_ - .timeLimitBeforeAutomaticApproval; - } - } - - /** - * @notice create a transfer request directly approved - */ - function createTransferRequestWithApproval( - TransferRequestKeyElement calldata keyElement - ) public onlyRole(RULE_CONDITIONAL_TRANSFER_OPERATOR_ROLE) { - _createTransferRequestWithApproval(keyElement); - } - - /** - * @notice approve a transferRequest - * @param keyElement contains from, to, value - * @param partialValue amount approved. Put 0 if all the amount specified by value is approved. - * @param isApproved approved (true) or refused (false). Put true if you use partialApproval - */ - function approveTransferRequest( - TransferRequestKeyElement calldata keyElement, - uint256 partialValue, - bool isApproved - ) public onlyRole(RULE_CONDITIONAL_TRANSFER_OPERATOR_ROLE) { - _approveTransferRequestKeyElement(keyElement, partialValue, isApproved); - } - - /** - * @notice approve a transferRequestby using its id - */ - function approveTransferRequestWithId( - uint256 requestId_, - bool isApproved - ) public onlyRole(RULE_CONDITIONAL_TRANSFER_OPERATOR_ROLE) { - if (requestId_ + 1 > requestId) { - revert RuleConditionalTransfer_InvalidId(); - } - TransferRequest memory transferRequest = transferRequests[ - IdToKey[requestId_] - ]; - _approveRequest(transferRequest, isApproved); - } - - /** - * @notice reset to None the status of a request - */ - function resetRequestStatus( - uint256 requestId_ - ) public onlyRole(RULE_CONDITIONAL_TRANSFER_OPERATOR_ROLE) { - if (requestId_ + 1 > requestId) { - revert RuleConditionalTransfer_InvalidId(); - } - bytes32 key = IdToKey[requestId_]; - _resetRequestStatus(key); - } - - /* ============ Batch function ============ */ - /** - * @notice Batch version of {approveTransferRequestWithId} - */ - function approveTransferRequestBatchWithId( - uint256[] calldata requestId_, - bool[] calldata isApproved - ) public onlyRole(RULE_CONDITIONAL_TRANSFER_OPERATOR_ROLE) { - if (requestId_.length == 0) { - revert RuleConditionalTransfer_EmptyArray(); - } - if (requestId_.length != isApproved.length) { - revert RuleConditionalTransfer_InvalidLengthArray(); - } - // Check id validity before performing actions - for (uint256 i = 0; i < requestId_.length; ++i) { - if (requestId_[i] + 1 > requestId) { - revert RuleConditionalTransfer_InvalidId(); - } - } - for (uint256 i = 0; i < requestId_.length; ++i) { - TransferRequest memory transferRequest = transferRequests[ - IdToKey[requestId_[i]] - ]; - _approveRequest(transferRequest, isApproved[i]); - } - } - - /** - * @notice Batch version of {approveTransferRequest} - */ - function approveTransferRequestBatch( - TransferRequestKeyElement[] calldata keyElements, - uint256[] calldata partialValues, - bool[] calldata isApproved - ) public onlyRole(RULE_CONDITIONAL_TRANSFER_OPERATOR_ROLE) { - if (keyElements.length == 0) { - revert RuleConditionalTransfer_EmptyArray(); - } - if ( - (keyElements.length != partialValues.length) || - (partialValues.length != isApproved.length) - ) { - revert RuleConditionalTransfer_InvalidLengthArray(); - } - for (uint256 i = 0; i < keyElements.length; ++i) { - _approveTransferRequestKeyElement( - keyElements[i], - partialValues[i], - isApproved[i] - ); - } - } - - /** - * @notice Batch version of {createTransferRequestWithApproval} - */ - function createTransferRequestWithApprovalBatch( - TransferRequestKeyElement[] calldata keyElements - ) public onlyRole(RULE_CONDITIONAL_TRANSFER_OPERATOR_ROLE) { - if (keyElements.length == 0) { - revert RuleConditionalTransfer_EmptyArray(); - } - for (uint256 i = 0; i < keyElements.length; ++i) { - _createTransferRequestWithApproval(keyElements[i]); - } - } - - /** - * @notice Batch version of {resetRequestStatus} - */ - function resetRequestStatusBatch( - uint256[] memory requestIds - ) public onlyRole(RULE_CONDITIONAL_TRANSFER_OPERATOR_ROLE) { - if (requestIds.length == 0) { - revert RuleConditionalTransfer_EmptyArray(); - } - // Check id validity before performing actions - for (uint256 i = 0; i < requestIds.length; ++i) { - if (requestIds[i] + 1 > requestId) { - revert RuleConditionalTransfer_InvalidId(); - } - } - for (uint256 i = 0; i < requestIds.length; ++i) { - bytes32 key = IdToKey[requestIds[i]]; - _resetRequestStatus(key); - } - } - - /* ============ ACCESS CONTROL ============ */ - /** - * @dev Returns `true` if `account` has been granted `role`. - */ - function hasRole( - bytes32 role, - address account - ) public view virtual override(AccessControl) returns (bool) { - // The Default Admin has all roles - if (AccessControl.hasRole(DEFAULT_ADMIN_ROLE, account)) { - return true; - } - return AccessControl.hasRole(role, account); - } - - /*////////////////////////////////////////////////////////////// - INTERNAL FUNCTIONS - //////////////////////////////////////////////////////////////*/ - function _approveTransferRequestKeyElement( - TransferRequestKeyElement calldata keyElement, - uint256 partialValue, - bool isApproved - ) internal { - if (partialValue > keyElement.value) { - revert RuleConditionalTransfer_InvalidValueApproved(); - } - bytes32 key = keccak256( - abi.encode(keyElement.from, keyElement.to, keyElement.value) - ); - TransferRequest memory transferRequest = transferRequests[key]; - if (partialValue > 0) { - if (!isApproved) { - revert RuleConditionalTransfer_CannotDeniedPartially(); - } - // Denied the first request - _approveRequest(transferRequest, false); - // Create new request - _createTransferRequestWithApproval( - TransferRequestKeyElement({ - from: keyElement.from, - to: keyElement.to, - value: partialValue - }) - ); - } else { - _approveRequest(transferRequest, isApproved); - } - } - - function _createTransferRequestWithApproval( - TransferRequestKeyElement memory keyElement_ - ) internal { - // WAIT => Will overwrite - // APPROVED => will overwrite previous status with a new delay - // DENIED => will overwrite - bytes32 key = keccak256( - abi.encode(keyElement_.from, keyElement_.to, keyElement_.value) - ); - if (_checkRequestStatus(key)) { - // Only if it is a new request - TransferRequest memory newTransferApproval = TransferRequest({ - key: key, - id: requestId, - keyElement: keyElement_, - askTime: 0, - // Warning: overflow possible if timeLimitToTransfer == max(uint256) - maxTime: block.timestamp + - options.timeLimit.timeLimitToTransfer, - status: STATUS.APPROVED - }); - transferRequests[key] = newTransferApproval; - IdToKey[requestId] = key; - emit transferApproved( - key, - keyElement_.from, - keyElement_.to, - keyElement_.value, - requestId - ); - ++requestId; - } else { - // Overwrite previous approval - // Warning: overflow possible if timeLimitToTransfer == max(uint256) - transferRequests[key].maxTime = - block.timestamp + - options.timeLimit.timeLimitToTransfer; - transferRequests[key].status = STATUS.APPROVED; - emit transferApproved( - key, - keyElement_.from, - keyElement_.to, - keyElement_.value, - transferRequests[key].id - ); - } - } - - function _resetRequestStatus(bytes32 key) internal { - transferRequests[key].status = STATUS.NONE; - emit transferReset( - key, - transferRequests[key].keyElement.from, - transferRequests[key].keyElement.to, - transferRequests[key].keyElement.value, - transferRequests[key].id - ); - } - - /** - * @dev check if it is a new request or not - */ - function _checkRequestStatus(bytes32 key) internal view returns (bool) { - // Status NONE not enough because reset is possible - return - (transferRequests[key].status == STATUS.NONE) && - (transferRequests[key].key == 0x0); - } - - function _approveRequest( - TransferRequest memory transferRequest, - bool isApproved - ) internal { - // status - if (transferRequest.status != STATUS.WAIT) { - revert RuleConditionalTransfer_Wrong_Status(); - } - if (isApproved) { - // Time - if ( - block.timestamp > - (transferRequest.askTime + options.timeLimit.timeLimitToApprove) - ) { - revert RuleConditionalTransfer_timeExceeded(); - } - // Set status - transferRequests[transferRequest.key].status = STATUS.APPROVED; - // Set max time - transferRequests[transferRequest.key].maxTime = - block.timestamp + - options.timeLimit.timeLimitToTransfer; - emit transferApproved( - transferRequest.key, - transferRequest.keyElement.from, - transferRequest.keyElement.to, - transferRequest.keyElement.value, - transferRequests[transferRequest.key].id - ); - if ( - options.automaticTransfer.isActivate && - address(options.automaticTransfer.cmtat) != address(0) - ) { - // Transfer with approval - // External call - if ( - options.automaticTransfer.cmtat.allowance( - transferRequest.keyElement.from, - address(this) - ) >= transferRequest.keyElement.value - ) { - // Will call the ruleEngine and the rule again... - options.automaticTransfer.cmtat.safeTransferFrom( - transferRequest.keyElement.from, - transferRequest.keyElement.to, - transferRequest.keyElement.value - ); - } - } - } else { - transferRequests[transferRequest.key].status = STATUS.DENIED; - emit transferDenied( - transferRequest.key, - transferRequest.keyElement.from, - transferRequest.keyElement.to, - transferRequest.keyElement.value, - transferRequests[transferRequest.key].id - ); - } - } - - /** - * @notice update the request during a transfer - */ - function _updateProcessedTransfer(bytes32 key) internal { - // Reset to zero - transferRequests[key].maxTime = 0; - transferRequests[key].askTime = 0; - // Change status - transferRequests[key].status = STATUS.EXECUTED; - // Emit event - emit transferProcessed( - key, - transferRequests[key].keyElement.from, - transferRequests[key].keyElement.to, - transferRequests[key].keyElement.value, - transferRequests[key].id - ); - } -} diff --git a/src/rules/validation/RuleBlacklist.sol b/src/rules/validation/RuleBlacklist.sol deleted file mode 100644 index 693961a..0000000 --- a/src/rules/validation/RuleBlacklist.sol +++ /dev/null @@ -1,94 +0,0 @@ -// SPDX-License-Identifier: MPL-2.0 - -pragma solidity ^0.8.20; - -import "./abstract/RuleAddressList/invariantStorage/RuleBlacklistInvariantStorage.sol"; -import "./abstract/RuleAddressList/RuleAddressList.sol"; -import "./abstract/RuleValidateTransfer.sol"; - -/** - * @title a blacklist manager - */ - -contract RuleBlacklist is - RuleValidateTransfer, - RuleAddressList, - RuleBlacklistInvariantStorage -{ - /** - * @param admin Address of the contract (Access Control) - * @param forwarderIrrevocable Address of the forwarder, required for the gasless support - */ - constructor( - address admin, - address forwarderIrrevocable - ) RuleAddressList(admin, forwarderIrrevocable) {} - - /** - * @notice Check if an addres is in the whitelist or not - * @param _from the origin address - * @param _to the destination address - * @return The restricion code or REJECTED_CODE_BASE.TRANSFER_OK - **/ - function detectTransferRestriction( - address _from, - address _to, - uint256 /*_amount */ - ) public view override returns (uint8) { - if (addressIsListed(_from)) { - return CODE_ADDRESS_FROM_IS_BLACKLISTED; - } else if (addressIsListed(_to)) { - return CODE_ADDRESS_TO_IS_BLACKLISTED; - } else { - return uint8(REJECTED_CODE_BASE.TRANSFER_OK); - } - } - - function detectTransferRestrictionFrom( - address spender, - address from, - address to, - uint256 amount - ) public view override returns (uint8) { - if(addressIsListed(spender)){ - return CODE_ADDRESS_SPENDER_IS_BLACKLISTED; - } else { - return detectTransferRestriction(from, to, amount); - } - } - - - /** - * @notice To know if the restriction code is valid for this rule or not. - * @param _restrictionCode The target restriction code - * @return true if the restriction code is known, false otherwise - **/ - function canReturnTransferRestrictionCode( - uint8 _restrictionCode - ) external pure override returns (bool) { - return - _restrictionCode == CODE_ADDRESS_FROM_IS_BLACKLISTED || - _restrictionCode == CODE_ADDRESS_TO_IS_BLACKLISTED - || _restrictionCode == CODE_ADDRESS_SPENDER_IS_BLACKLISTED; - } - - /** - * @notice Return the corresponding message - * @param _restrictionCode The target restriction code - * @return true if the transfer is valid, false otherwise - **/ - function messageForTransferRestriction( - uint8 _restrictionCode - ) external pure override returns (string memory) { - if (_restrictionCode == CODE_ADDRESS_FROM_IS_BLACKLISTED) { - return TEXT_ADDRESS_FROM_IS_BLACKLISTED; - } else if (_restrictionCode == CODE_ADDRESS_TO_IS_BLACKLISTED) { - return TEXT_ADDRESS_TO_IS_BLACKLISTED; - } else if (_restrictionCode == CODE_ADDRESS_SPENDER_IS_BLACKLISTED) { - return TEXT_ADDRESS_SPENDER_IS_BLACKLISTED; - } - else { - return TEXT_CODE_NOT_FOUND; - } - } -} diff --git a/src/rules/validation/RuleSanctionList.sol b/src/rules/validation/RuleSanctionList.sol deleted file mode 100644 index 4d85966..0000000 --- a/src/rules/validation/RuleSanctionList.sol +++ /dev/null @@ -1,185 +0,0 @@ -// SPDX-License-Identifier: MPL-2.0 - -pragma solidity ^0.8.20; - -import "OZ/access/AccessControl.sol"; -import "../../modules/MetaTxModuleStandalone.sol"; -import "./abstract/RuleSanctionListInvariantStorage.sol"; -import "./abstract/RuleValidateTransfer.sol"; - -interface SanctionsList { - function isSanctioned(address addr) external view returns (bool); -} - -contract RuleSanctionList is - AccessControl, - MetaTxModuleStandalone, - RuleValidateTransfer, - RuleSanctionlistInvariantStorage -{ - SanctionsList public sanctionsList; - - /** - * @param admin Address of the contract (Access Control) - * @param forwarderIrrevocable Address of the forwarder, required for the gasless support - */ - constructor( - address admin, - address forwarderIrrevocable, - address sanctionContractOracle_ - ) MetaTxModuleStandalone(forwarderIrrevocable) { - if (admin == address(0)) { - revert RuleSanctionList_AdminWithAddressZeroNotAllowed(); - } - if (sanctionContractOracle_ != address(0)) { - _setSanctionListOracle(sanctionContractOracle_); - } - _grantRole(DEFAULT_ADMIN_ROLE, admin); - } - - /** - * @notice Set the oracle contract - * @param sanctionContractOracle_ address of your oracle contract - * @dev zero address is authorized to authorize all transfers - */ - function setSanctionListOracle( - address sanctionContractOracle_ - ) public onlyRole(SANCTIONLIST_ROLE) { - _setSanctionListOracle(sanctionContractOracle_); - } - - /** - * @notice Check if an addres is in the whitelist or not - * @param _from the origin address - * @param _to the destination address - * @return The restricion code or REJECTED_CODE_BASE.TRANSFER_OK - **/ - function detectTransferRestriction( - address _from, - address _to, - uint256 /*_amount */ - ) public view override returns (uint8) { - if (address(sanctionsList) != address(0)) { - if (sanctionsList.isSanctioned(_from)) { - return CODE_ADDRESS_FROM_IS_SANCTIONED; - } else if (sanctionsList.isSanctioned(_to)) { - return CODE_ADDRESS_TO_IS_SANCTIONED; - } - } - return uint8(REJECTED_CODE_BASE.TRANSFER_OK); - } - - - function detectTransferRestrictionFrom( - address spender, - address _from, - address _to, - uint256 _amount - ) public view override returns (uint8) { - if(address(sanctionsList) != address(0)){ - if (sanctionsList.isSanctioned(spender)) { - return CODE_ADDRESS_SPENDER_IS_SANCTIONED; - } else { - return detectTransferRestriction(_from,_to,_amount); - } - } - return uint8(REJECTED_CODE_BASE.TRANSFER_OK); - } - - /** - * @notice To know if the restriction code is valid for this rule or not. - * @param _restrictionCode The target restriction code - * @return true if the restriction code is known, false otherwise - **/ - function canReturnTransferRestrictionCode( - uint8 _restrictionCode - ) external pure override returns (bool) { - return - _restrictionCode == CODE_ADDRESS_FROM_IS_SANCTIONED || - _restrictionCode == CODE_ADDRESS_TO_IS_SANCTIONED|| - _restrictionCode == CODE_ADDRESS_SPENDER_IS_SANCTIONED; - } - - /** - * @notice Return the corresponding message - * @param _restrictionCode The target restriction code - * @return true if the transfer is valid, false otherwise - **/ - function messageForTransferRestriction( - uint8 _restrictionCode - ) external pure override returns (string memory) { - if (_restrictionCode == CODE_ADDRESS_FROM_IS_SANCTIONED) { - return TEXT_ADDRESS_FROM_IS_SANCTIONED; - } else if (_restrictionCode == CODE_ADDRESS_TO_IS_SANCTIONED) { - return TEXT_ADDRESS_TO_IS_SANCTIONED; - } else if (_restrictionCode == CODE_ADDRESS_SPENDER_IS_SANCTIONED) { - return TEXT_ADDRESS_SPENDER_IS_SANCTIONED; - } else { - return TEXT_CODE_NOT_FOUND; - } - } - - /* ============ ACCESS CONTROL ============ */ - /** - * @dev Returns `true` if `account` has been granted `role`. - */ - function hasRole( - bytes32 role, - address account - ) public view virtual override(AccessControl) returns (bool) { - // The Default Admin has all roles - if (AccessControl.hasRole(DEFAULT_ADMIN_ROLE, account)) { - return true; - } - return AccessControl.hasRole(role, account); - } - - /*////////////////////////////////////////////////////////////// - INTERNAL FUNCTIONS - //////////////////////////////////////////////////////////////*/ - - function _setSanctionListOracle(address sanctionContractOracle_) internal { - sanctionsList = SanctionsList(sanctionContractOracle_); - emit SetSanctionListOracle(address(sanctionContractOracle_)); - } - - /*////////////////////////////////////////////////////////////// - ERC-2771 - //////////////////////////////////////////////////////////////*/ - - /** - * @dev This surcharge is not necessary if you do not use the MetaTxModule - */ - function _msgSender() - internal - view - override(ERC2771Context, Context) - returns (address sender) - { - return ERC2771Context._msgSender(); - } - - /** - * @dev This surcharge is not necessary if you do not use the MetaTxModule - */ - function _msgData() - internal - view - override(ERC2771Context, Context) - returns (bytes calldata) - { - return ERC2771Context._msgData(); - } - - /** - * @dev This surcharge is not necessary if you do not use the MetaTxModule - */ - function _contextSuffixLength() - internal - view - override(ERC2771Context, Context) - returns (uint256) - { - return ERC2771Context._contextSuffixLength(); - } -} diff --git a/src/rules/validation/RuleWhitelistWrapper.sol b/src/rules/validation/RuleWhitelistWrapper.sol deleted file mode 100644 index 619ecc8..0000000 --- a/src/rules/validation/RuleWhitelistWrapper.sol +++ /dev/null @@ -1,175 +0,0 @@ -// SPDX-License-Identifier: MPL-2.0 - -pragma solidity ^0.8.20; - -import "OZ/access/AccessControl.sol"; -import "../../modules/RuleEngineValidationCommon.sol"; -import "../../modules/MetaTxModuleStandalone.sol"; -import "./abstract/RuleAddressList/RuleAddressList.sol"; -import "./abstract/RuleWhitelistCommon.sol"; - -/** - * @title Wrapper to call several different whitelist rules - */ -contract RuleWhitelistWrapper is - RuleEngineValidationCommon, - MetaTxModuleStandalone, - RuleWhitelistCommon -{ - /** - * @param admin Address of the contract (Access Control) - * @param forwarderIrrevocable Address of the forwarder, required for the gasless support - */ - constructor( - address admin, - address forwarderIrrevocable - ) MetaTxModuleStandalone(forwarderIrrevocable) { - if (admin == address(0)) { - revert RuleEngine_AdminWithAddressZeroNotAllowed(); - } - _grantRole(DEFAULT_ADMIN_ROLE, admin); - } - - /** - * @notice Go through all the whitelist rules to know if a restriction exists on the transfer - * @param _from the origin address - * @param _to the destination address - * @return The restricion code or REJECTED_CODE_BASE.TRANSFER_OK - **/ - function detectTransferRestriction( - address _from, - address _to, - uint256 /*_amount*/ - ) public view override returns (uint8) { - address[] memory targetAddress = new address[](2); - bool[] memory isListed = new bool[](2); - bool[] memory result = new bool[](2); - targetAddress[0] = _from; - targetAddress[1] = _to; - uint256 rulesLength = _rulesValidation.length; - // For each whitelist rule, we ask if from or to are in the whitelist - for (uint256 i = 0; i < rulesLength; ++i) { - // External call - isListed = RuleAddressList(_rulesValidation[i]) - .addressIsListedBatch(targetAddress); - if (isListed[0] && !result[0]) { - // Update if from is in the list - result[0] = true; - } - if (isListed[1] && !result[1]) { - // Update if to is in the list - result[1] = true; - } - if (result[0] && result[1]) { - break; - } - } - if (!result[0]) { - return CODE_ADDRESS_FROM_NOT_WHITELISTED; - } else if (!result[1]) { - return CODE_ADDRESS_TO_NOT_WHITELISTED; - } else { - return uint8(REJECTED_CODE_BASE.TRANSFER_OK); - } - } - - function detectTransferRestrictionFrom( - address spender, - address _from, - address _to, - uint256 /*_amount*/ - ) public view override returns (uint8) { - address[] memory targetAddress = new address[](3); - bool[] memory isListed = new bool[](3); - bool[] memory result = new bool[](3); - targetAddress[0] = _from; - targetAddress[1] = _to; - targetAddress[2] = spender; - uint256 rulesLength = _rulesValidation.length; - // For each whitelist rule, we ask if from or to are in the whitelist - for (uint256 i = 0; i < rulesLength; ++i) { - // External call - isListed = RuleAddressList(_rulesValidation[i]) - .addressIsListedBatch(targetAddress); - if (isListed[0] && !result[0]) { - // Update if from is in the list - result[0] = true; - } - if (isListed[1] && !result[1]) { - // Update if to is in the list - result[1] = true; - } - if (isListed[2] && !result[2]) { - // Update if spender is in the list - result[2] = true; - } - if (result[0] && result[1] && result[2]) { - break; - } - } - if (!result[0]) { - return CODE_ADDRESS_FROM_NOT_WHITELISTED; - } else if (!result[1]) { - return CODE_ADDRESS_TO_NOT_WHITELISTED; - } else if (!result[2]) { - return CODE_ADDRESS_SPENDER_NOT_WHITELISTED; - } else { - return uint8(REJECTED_CODE_BASE.TRANSFER_OK); - } - } - - /* ============ ACCESS CONTROL ============ */ - /** - * @dev Returns `true` if `account` has been granted `role`. - */ - function hasRole( - bytes32 role, - address account - ) public view virtual override(AccessControl) returns (bool) { - // The Default Admin has all roles - if (AccessControl.hasRole(DEFAULT_ADMIN_ROLE, account)) { - return true; - } - return AccessControl.hasRole(role, account); - } - - /*////////////////////////////////////////////////////////////// - ERC-2771 - //////////////////////////////////////////////////////////////*/ - - /** - * @dev This surcharge is not necessary if you do not use the MetaTxModule - */ - function _msgSender() - internal - view - override(ERC2771Context, Context) - returns (address sender) - { - return ERC2771Context._msgSender(); - } - - /** - * @dev This surcharge is not necessary if you do not use the MetaTxModule - */ - function _msgData() - internal - view - override(ERC2771Context, Context) - returns (bytes calldata) - { - return ERC2771Context._msgData(); - } - - /** - * @dev This surcharge is not necessary if you do not use the MetaTxModule - */ - function _contextSuffixLength() - internal - view - override(ERC2771Context, Context) - returns (uint256) - { - return ERC2771Context._contextSuffixLength(); - } -} diff --git a/test/HelperContract.sol b/test/HelperContract.sol index c5ebd4d..1baaf34 100644 --- a/test/HelperContract.sol +++ b/test/HelperContract.sol @@ -9,20 +9,13 @@ import {RuleEngineInvariantStorage} from "src/modules/RuleEngineInvariantStorage // RuleEngine import {RuleEngine} from "src/RuleEngine.sol"; // RuleConditionalTransfer -import {RuleConditionalTransferInvariantStorage} from "src/rules/operation/abstract/RuleConditionalTransferInvariantStorage.sol"; -import {RuleConditionalTransfer} from "src/rules/operation/RuleConditionalTransfer.sol"; -// RuleSanctionList -import {RuleSanctionList} from "src/rules/validation/RuleSanctionList.sol"; -// RUleBlackList -import {RuleBlacklist} from "src/rules/validation/RuleBlacklist.sol"; -import {RuleBlacklistInvariantStorage} from "src/rules/validation/abstract/RuleAddressList/invariantStorage/RuleBlacklistInvariantStorage.sol"; +import {RuleConditionalTransferLight} from "src/mocks/rules/operation/RuleConditionalTransferLight.sol"; +import {RuleConditionalTransferLightInvariantStorage} from "src/mocks/rules/operation/abstract/RuleConditionalTransferLightInvariantStorage.sol"; // RuleWhitelist -import {RuleWhitelist} from "src/rules/validation/RuleWhitelist.sol"; -import {RuleWhitelistWrapper} from "src/rules/validation/RuleWhitelistWrapper.sol"; -import {RuleWhitelistInvariantStorage} from "src/rules/validation/abstract/RuleAddressList/invariantStorage/RuleWhitelistInvariantStorage.sol"; -import {RuleAddressListInvariantStorage} from "src/rules/validation/abstract/RuleAddressList/invariantStorage/RuleAddressListInvariantStorage.sol"; +import {RuleWhitelist} from "src/mocks/rules/validation/RuleWhitelist.sol"; +import {RuleWhitelistInvariantStorage} from "src/mocks/rules/validation/abstract/RuleAddressList/invariantStorage/RuleWhitelistInvariantStorage.sol"; +import {RuleAddressListInvariantStorage} from "src/mocks/rules/validation/abstract/RuleAddressList/invariantStorage/RuleAddressListInvariantStorage.sol"; -import {RuleSanctionlistInvariantStorage}from "src/rules/validation/abstract/RuleSanctionListInvariantStorage.sol"; // Rule interface import {IRuleValidation} from "src/interfaces/IRuleValidation.sol"; import {IRuleOperation} from "src/interfaces/IRuleOperation.sol"; @@ -35,11 +28,9 @@ import "./utils/CMTATDeployment.sol"; */ abstract contract HelperContract is RuleWhitelistInvariantStorage, - RuleBlacklistInvariantStorage, RuleAddressListInvariantStorage, - RuleSanctionlistInvariantStorage, RuleEngineInvariantStorage, - RuleConditionalTransferInvariantStorage + RuleConditionalTransferLightInvariantStorage { // Test result uint256 internal resUint256; @@ -52,7 +43,6 @@ abstract contract HelperContract is address constant DEFAULT_ADMIN_ADDRESS = address(1); address constant WHITELIST_OPERATOR_ADDRESS = address(2); address constant RULE_ENGINE_OPERATOR_ADDRESS = address(3); - address constant SANCTIONLIST_OPERATOR_ADDRESS = address(8); address constant CONDITIONAL_TRANSFER_OPERATOR_ADDRESS = address(9); address constant ATTACKER = address(4); address constant ADDRESS1 = address(5); @@ -66,12 +56,10 @@ abstract contract HelperContract is string constant DEFAULT_ADMIN_ROLE_HASH = "0x0000000000000000000000000000000000000000000000000000000000000000"; - uint256 DEFAULT_TIME_LIMIT_TO_APPROVE = 7 days; - uint256 DEFAULT_TIME_LIMIT_TO_TRANSFER = 7 days; + // contract - RuleBlacklist public ruleBlacklist; RuleWhitelist public ruleWhitelist; - RuleConditionalTransfer public ruleConditionalTransfer; + RuleConditionalTransferLight public ruleConditionalTransferLight; // CMTAT CMTATDeployment cmtatDeployment; @@ -80,6 +68,7 @@ abstract contract HelperContract is // RuleEngine Mock RuleEngine public ruleEngineMock; + //bytes32 public constant RULE_ENGINE_ROLE = keccak256("RULE_ENGINE_ROLE"); uint8 constant NO_ERROR = 0; diff --git a/test/RuleBlacklist/CMTATIntegration.t.sol b/test/RuleBlacklist/CMTATIntegration.t.sol deleted file mode 100644 index 245b1a3..0000000 --- a/test/RuleBlacklist/CMTATIntegration.t.sol +++ /dev/null @@ -1,262 +0,0 @@ -// SPDX-License-Identifier: MPL-2.0 -pragma solidity ^0.8.20; - -import "forge-std/Test.sol"; -import "CMTAT/deployment/CMTATStandalone.sol"; -import "../HelperContract.sol"; -import "src/RuleEngine.sol"; - -/** - * @title Integration test with the CMTAT - */ -contract CMTATIntegration is Test, HelperContract { - uint256 ADDRESS1_BALANCE_INIT = 31; - uint256 ADDRESS2_BALANCE_INIT = 32; - uint256 ADDRESS3_BALANCE_INIT = 33; - - uint256 FLAG = 5; - - // Arrange - function setUp() public { - // CMTAT - cmtatDeployment = new CMTATDeployment(); - CMTAT_CONTRACT = cmtatDeployment.cmtat(); - - vm.prank(DEFAULT_ADMIN_ADDRESS); - ruleBlacklist = new RuleBlacklist(DEFAULT_ADMIN_ADDRESS, ZERO_ADDRESS); - - // specific arrange - vm.prank(DEFAULT_ADMIN_ADDRESS); - ruleEngineMock = new RuleEngine( - DEFAULT_ADMIN_ADDRESS, - ZERO_ADDRESS, - address(CMTAT_CONTRACT) - ); - vm.prank(DEFAULT_ADMIN_ADDRESS); - ruleEngineMock.addRuleValidation(ruleBlacklist); - vm.prank(DEFAULT_ADMIN_ADDRESS); - CMTAT_CONTRACT.mint(ADDRESS1, ADDRESS1_BALANCE_INIT); - vm.prank(DEFAULT_ADMIN_ADDRESS); - CMTAT_CONTRACT.mint(ADDRESS2, ADDRESS2_BALANCE_INIT); - vm.prank(DEFAULT_ADMIN_ADDRESS); - CMTAT_CONTRACT.mint(ADDRESS3, ADDRESS3_BALANCE_INIT); - vm.prank(DEFAULT_ADMIN_ADDRESS); - // We set the Rule Engine - CMTAT_CONTRACT.setRuleEngine(ruleEngineMock); - } - - /******* Transfer *******/ - function testCanTransferIfAddressNotBlacklisted() public { - // Arrange - /*vm.prank(ADDRESS1); - vm.expectRevert( - abi.encodeWithSelector(RuleEngine_InvalidTransfer.selector, ADDRESS1, ADDRESS2, 21)); */ - // Act - vm.prank(ADDRESS1); - CMTAT_CONTRACT.transfer(ADDRESS2, 21); - } - - function testCannotTransferIfAddressToIsBlacklisted() public { - // Arrange - uint256 amount = 21; - vm.prank(DEFAULT_ADMIN_ADDRESS); - ruleBlacklist.addAddressToTheList(ADDRESS2); - - vm.prank(ADDRESS1); - vm.expectRevert( - abi.encodeWithSelector( - RuleEngine_InvalidTransfer.selector, - ADDRESS1, - ADDRESS2, - amount - ) - ); - // Act - CMTAT_CONTRACT.transfer(ADDRESS2, amount); - } - - function testCannotTransferIfAddressFronIsBlacklisted() public { - // Arrange - uint256 amount = 21; - vm.prank(DEFAULT_ADMIN_ADDRESS); - ruleBlacklist.addAddressToTheList(ADDRESS1); - - vm.prank(ADDRESS1); - vm.expectRevert( - abi.encodeWithSelector( - RuleEngine_InvalidTransfer.selector, - ADDRESS1, - ADDRESS2, - amount - ) - ); - // Act - CMTAT_CONTRACT.transfer(ADDRESS2, amount); - } - - function testCannotTransferIfBothAddressesAreBlacklisted() public { - uint256 amount = 21; - // Arrange - address[] memory blacklist = new address[](2); - blacklist[0] = ADDRESS1; - blacklist[1] = ADDRESS2; - vm.prank(DEFAULT_ADMIN_ADDRESS); - (bool success, ) = address(ruleBlacklist).call( - abi.encodeWithSignature( - "addAddressesToTheList(address[])", - blacklist - ) - ); - require(success); - - // Act - vm.prank(ADDRESS1); - vm.expectRevert( - abi.encodeWithSelector( - RuleEngine_InvalidTransfer.selector, - ADDRESS1, - ADDRESS2, - amount - ) - ); - CMTAT_CONTRACT.transfer(ADDRESS2, amount); - } - - /******* detectTransferRestriction & messageForTransferRestriction *******/ - function testDetectAndMessageWithToBlacklisted() public { - vm.prank(DEFAULT_ADMIN_ADDRESS); - ruleBlacklist.addAddressToTheList(ADDRESS2); - resBool = ruleBlacklist.addressIsListed(ADDRESS2); - // Assert - assertEq(resBool, true); - uint8 res1 = CMTAT_CONTRACT.detectTransferRestriction( - ADDRESS1, - ADDRESS2, - 11 - ); - // Assert - assertEq(res1, CODE_ADDRESS_TO_IS_BLACKLISTED); - string memory message1 = CMTAT_CONTRACT.messageForTransferRestriction( - res1 - ); - // Assert - assertEq(message1, TEXT_ADDRESS_TO_IS_BLACKLISTED); - } - - function testDetectAndMessageWithFromBlacklisted() public { - // Arrange - // We add the sender to the whitelist - vm.prank(DEFAULT_ADMIN_ADDRESS); - ruleBlacklist.addAddressToTheList(ADDRESS1); - // Arrange - Assert - resBool = ruleBlacklist.addressIsListed(ADDRESS1); - assertEq(resBool, true); - // Act - uint8 res1 = CMTAT_CONTRACT.detectTransferRestriction( - ADDRESS1, - ADDRESS2, - 11 - ); - // Assert - assertEq(res1, CODE_ADDRESS_FROM_IS_BLACKLISTED); - // Act - string memory message1 = CMTAT_CONTRACT.messageForTransferRestriction( - res1 - ); - // Assert - assertEq(message1, TEXT_ADDRESS_FROM_IS_BLACKLISTED); - } - - function testDetectAndMessageWithFromAndToNotBlacklisted() public view { - // Act - uint8 res1 = CMTAT_CONTRACT.detectTransferRestriction( - ADDRESS1, - ADDRESS2, - 11 - ); - - // Assert - assertEq(res1, TRANSFER_OK); - // Act - string memory message1 = CMTAT_CONTRACT.messageForTransferRestriction( - res1 - ); - // Assert - assertEq(message1, TEXT_TRANSFER_OK); - } - - function testDetectAndMessageWithFromAndToBlacklisted() public { - // Arrange - // We add the sender and the recipient to the whitelist. - address[] memory blacklist = new address[](2); - blacklist[0] = ADDRESS1; - blacklist[1] = ADDRESS2; - vm.prank(DEFAULT_ADMIN_ADDRESS); - (bool success, ) = address(ruleBlacklist).call( - abi.encodeWithSignature( - "addAddressesToTheList(address[])", - blacklist - ) - ); - require(success); - // Act - uint8 res1 = CMTAT_CONTRACT.detectTransferRestriction( - ADDRESS1, - ADDRESS2, - 11 - ); - // Assert - assertEq(res1, CODE_ADDRESS_FROM_IS_BLACKLISTED); - // Act - string memory message1 = CMTAT_CONTRACT.messageForTransferRestriction( - res1 - ); - // Assert - assertEq(message1, TEXT_ADDRESS_FROM_IS_BLACKLISTED); - } - - function testCanMintIfAddressNotInTheBlacklist() public { - // Act - vm.prank(DEFAULT_ADMIN_ADDRESS); - CMTAT_CONTRACT.mint(ADDRESS1, 11); - - // Assert - resUint256 = CMTAT_CONTRACT.balanceOf(ADDRESS1); - assertEq(resUint256, ADDRESS1_BALANCE_INIT + 11); - } - - function testCannotMintIfAddressIsInTheBlacklist() public { - uint256 amount = 11; - // Arrange - // Add address zero to the blacklist - vm.prank(DEFAULT_ADMIN_ADDRESS); - ruleBlacklist.addAddressToTheList(ZERO_ADDRESS); - vm.prank(DEFAULT_ADMIN_ADDRESS); - ruleBlacklist.addAddressToTheList(ADDRESS1); - // Arrange - Assert - resBool = ruleBlacklist.addressIsListed(ZERO_ADDRESS); - assertEq(resBool, true); - - // Act - vm.expectRevert( - abi.encodeWithSelector( - RuleEngine_InvalidTransfer.selector, - ZERO_ADDRESS, - ADDRESS1, - amount - ) - ); - vm.prank(DEFAULT_ADMIN_ADDRESS); - CMTAT_CONTRACT.mint(ADDRESS1, amount); - } - - function testCanReturnMessageNotFoundWithUnknownCodeId() public view { - // Act - string memory message1 = CMTAT_CONTRACT.messageForTransferRestriction( - 255 - ); - - // Assert - assertEq(message1, TEXT_CODE_NOT_FOUND); - } -} diff --git a/test/RuleBlacklist/RuleBlacklist.t.sol b/test/RuleBlacklist/RuleBlacklist.t.sol deleted file mode 100644 index 92504d0..0000000 --- a/test/RuleBlacklist/RuleBlacklist.t.sol +++ /dev/null @@ -1,30 +0,0 @@ -// SPDX-License-Identifier: MPL-2.0 -pragma solidity ^0.8.20; - -import "forge-std/Test.sol"; -import "../HelperContract.sol"; -import "src/RuleEngine.sol"; - -/** - * @title Integration test with the CMTAT - */ -contract RuleBlacklistTest is Test, HelperContract { - // Arrange - function setUp() public { - vm.prank(DEFAULT_ADMIN_ADDRESS); - ruleBlacklist = new RuleBlacklist(DEFAULT_ADMIN_ADDRESS, ZERO_ADDRESS); - } - - function testCanRuleBlacklistReturnMessageNotFoundWithUnknownCodeId() - public - view - { - // Act - string memory message1 = ruleBlacklist.messageForTransferRestriction( - 255 - ); - - // Assert - assertEq(message1, TEXT_CODE_NOT_FOUND); - } -} diff --git a/test/RuleConditionalTransfer/CMTATIntegration.t.sol b/test/RuleConditionalTransfer/CMTATIntegration.t.sol deleted file mode 100644 index 1ba0080..0000000 --- a/test/RuleConditionalTransfer/CMTATIntegration.t.sol +++ /dev/null @@ -1,161 +0,0 @@ -// SPDX-License-Identifier: MPL-2.0 -pragma solidity ^0.8.20; - -import "forge-std/Test.sol"; -import "CMTAT/deployment/CMTATStandalone.sol"; -import "../HelperContract.sol"; -import "src/RuleEngine.sol"; -import "./utils/CMTATIntegrationShare.sol"; - -/** - * @title Integration test with the CMTAT - */ -contract CMTATIntegrationConditionalTransfer is Test, HelperContract, CMTATIntegrationShare { - // Arrange - function setUp() public { - TIME_LIMIT memory timeLimit_ = TIME_LIMIT({ - timeLimitToApprove: 7 days, - timeLimitToTransfer: 30 days - }); - ISSUANCE memory issuanceOption_ = ISSUANCE({ - authorizedMintWithoutApproval: true, - authorizedBurnWithoutApproval: true - }); - - AUTOMATIC_APPROVAL memory automaticApproval_ = AUTOMATIC_APPROVAL({ - isActivate: false, - timeLimitBeforeAutomaticApproval: 0 - }); - - AUTOMATIC_TRANSFER memory automaticTransfer_ = AUTOMATIC_TRANSFER({ - isActivate: false, - cmtat: IERC20(address(0)) - }); - OPTION memory options = OPTION({ - issuance: issuanceOption_, - timeLimit: timeLimit_, - automaticApproval: automaticApproval_, - automaticTransfer: automaticTransfer_ - }); - - // global arrange - cmtatDeployment = new CMTATDeployment(); - CMTAT_CONTRACT = cmtatDeployment.cmtat(); - - // RuleEngine - vm.prank(DEFAULT_ADMIN_ADDRESS); - ruleEngineMock = new RuleEngine( - DEFAULT_ADMIN_ADDRESS, - ZERO_ADDRESS, - address(CMTAT_CONTRACT) - ); - - // RuleConditionalTransfer - vm.prank(DEFAULT_ADMIN_ADDRESS); - ruleConditionalTransfer = new RuleConditionalTransfer( - DEFAULT_ADMIN_ADDRESS, - ZERO_ADDRESS, - ruleEngineMock, - options - ); - // specific arrange - vm.prank(DEFAULT_ADMIN_ADDRESS); - ruleConditionalTransfer.grantRole( - RULE_CONDITIONAL_TRANSFER_OPERATOR_ROLE, - CONDITIONAL_TRANSFER_OPERATOR_ADDRESS - ); - - // RuleEngine - vm.prank(DEFAULT_ADMIN_ADDRESS); - ruleEngineMock.addRuleOperation(ruleConditionalTransfer); - - // Mint - vm.prank(DEFAULT_ADMIN_ADDRESS); - CMTAT_CONTRACT.mint(ADDRESS1, ADDRESS1_BALANCE_INIT); - vm.prank(DEFAULT_ADMIN_ADDRESS); - CMTAT_CONTRACT.mint(ADDRESS2, ADDRESS2_BALANCE_INIT); - vm.prank(DEFAULT_ADMIN_ADDRESS); - CMTAT_CONTRACT.mint(ADDRESS3, ADDRESS3_BALANCE_INIT); - vm.prank(DEFAULT_ADMIN_ADDRESS); - - // We set the Rule Engine - CMTAT_CONTRACT.setRuleEngine(ruleEngineMock); - } - - function _createTransferRequest() internal { - vm.prank(ADDRESS1); - // Act - vm.expectEmit(true, true, true, true); - emit transferWaiting(defaultKey, ADDRESS1, ADDRESS2, defaultValue, 0); - ruleConditionalTransfer.createTransferRequest(ADDRESS2, defaultValue); - } - - /******* Transfer *******/ - function testCannotTransferWithoutApproval() public { - CMTATIntegrationShare.testShareCannotTransferWithoutApproval(); - } - - function testCanMakeATransferIfApproved() public { - CMTATIntegrationShare.testShareCanMakeATransferIfApproved(); - } - - function testCanMakeAPartialTransferIfPartiallyApproved() public { - CMTATIntegrationShare.testShareCanMakeAPartialTransferIfPartiallyApproved(); - } - - function testCannotMakeAWholeTransferIfPartiallyApproved() public { - CMTATIntegrationShare.testShareCannotMakeAWholeTransferIfPartiallyApproved(); - } - function testCannotMakeATransferIfDelayExceeded() public { - // // +30 days and one second - CMTATIntegrationShare.testShareCannotMakeATransferIfDelayExceeded(2592001); - } - - function testCannotMakeATransferIfDelayJustInTime() public { - // 30 days - CMTATIntegrationShare.testShareCannotMakeATransferIfDelayJustInTime(2592000); - } - - function testCanSetTimeLimitWithTransferExceeded() public { - // Assert - // Timeout - // >1 days - CMTATIntegrationShare.testShareCanSetTimeLimitWithTransferExceeded(1 days + 1 seconds); - } - - function testCanMintWithoutApproval() public { - CMTATIntegrationShare.testShareCanMintWithoutApproval(); - } - - function testCanBurnWithoutApproval() public { - CMTATIntegrationShare.testShareCanBurnWithoutApproval(); - } - - function testCannotMintWithoutApproval() public { - CMTATIntegrationShare.testShareCannotMintWithoutApproval(); - } - - function testCannotBurnWithoutApproval() public { - CMTATIntegrationShare.testShareCannotBurnWithoutApproval(); - } - - function testAutomaticTransferIfOptionsSet() public { - CMTATIntegrationShare.testShareAutomaticTransferIfOptionsSet(); - } - - function testCanTransferIfAutomaticApprovalSetAndTimeExceedsJustInTime() - public - { - CMTATIntegrationShare.testShareCanTransferIfAutomaticApprovalSetAndTimeExceedsJustInTime(); - } - - function testCanTransferIfAutomaticApprovalSetAndTimeExceeds() public { - CMTATIntegrationShare.testShareCanTransferIfAutomaticApprovalSetAndTimeExceeds(); - } - - function testCannotTransferIfAutomaticApprovalSetAndTimeNotExceeds() - public - { - CMTATIntegrationShare.testShareCannotTransferIfAutomaticApprovalSetAndTimeNotExceeds(); - } -} diff --git a/test/RuleConditionalTransfer/CMTATIntegrationConditionalTransfer.t.sol b/test/RuleConditionalTransfer/CMTATIntegrationConditionalTransfer.t.sol deleted file mode 100644 index b11cb0d..0000000 --- a/test/RuleConditionalTransfer/CMTATIntegrationConditionalTransfer.t.sol +++ /dev/null @@ -1,322 +0,0 @@ -// SPDX-License-Identifier: MPL-2.0 -pragma solidity ^0.8.20; - -import "forge-std/Test.sol"; -import "CMTAT/deployment/CMTATStandalone.sol"; -import "../HelperContract.sol"; -import "src/RuleEngine.sol"; -import "./utils/CMTATIntegrationShare.sol"; - -/** - * @title Integration test with the CMTAT - */ -contract CMTATIntegrationConditionalTransfer is Test, HelperContract, CMTATIntegrationShare { - - // Arrange - function setUp() public { - TIME_LIMIT memory timeLimit_ = TIME_LIMIT({ - timeLimitToApprove: 7 days, - timeLimitToTransfer: 30 days - }); - ISSUANCE memory issuanceOption_ = ISSUANCE({ - authorizedMintWithoutApproval: true, - authorizedBurnWithoutApproval: true - }); - - AUTOMATIC_APPROVAL memory automaticApproval_ = AUTOMATIC_APPROVAL({ - isActivate: false, - timeLimitBeforeAutomaticApproval: 0 - }); - - AUTOMATIC_TRANSFER memory automaticTransfer_ = AUTOMATIC_TRANSFER({ - isActivate: false, - cmtat: IERC20(address(0)) - }); - OPTION memory options = OPTION({ - issuance: issuanceOption_, - timeLimit: timeLimit_, - automaticApproval: automaticApproval_, - automaticTransfer: automaticTransfer_ - }); - - // global arrange - cmtatDeployment = new CMTATDeployment(); - CMTAT_CONTRACT = cmtatDeployment.cmtat(); - - // Whitelist - ruleWhitelist = new RuleWhitelist(DEFAULT_ADMIN_ADDRESS, ZERO_ADDRESS); - - // RuleEngine - vm.prank(DEFAULT_ADMIN_ADDRESS); - ruleEngineMock = new RuleEngine( - DEFAULT_ADMIN_ADDRESS, - ZERO_ADDRESS, - address(CMTAT_CONTRACT) - ); - - // RuleConditionalTransfer - vm.prank(DEFAULT_ADMIN_ADDRESS); - ruleConditionalTransfer = new RuleConditionalTransfer( - DEFAULT_ADMIN_ADDRESS, - ZERO_ADDRESS, - ruleEngineMock, - options - ); - // Add whitelist - vm.prank(DEFAULT_ADMIN_ADDRESS); - ruleConditionalTransfer.setConditionalWhitelist(ruleWhitelist); - // specific arrange - vm.prank(DEFAULT_ADMIN_ADDRESS); - ruleConditionalTransfer.grantRole( - RULE_CONDITIONAL_TRANSFER_OPERATOR_ROLE, - CONDITIONAL_TRANSFER_OPERATOR_ADDRESS - ); - - // RuleEngine - vm.prank(DEFAULT_ADMIN_ADDRESS); - ruleEngineMock.addRuleOperation(ruleConditionalTransfer); - - // Mint - vm.prank(DEFAULT_ADMIN_ADDRESS); - CMTAT_CONTRACT.mint(ADDRESS1, ADDRESS1_BALANCE_INIT); - vm.prank(DEFAULT_ADMIN_ADDRESS); - CMTAT_CONTRACT.mint(ADDRESS2, ADDRESS2_BALANCE_INIT); - vm.prank(DEFAULT_ADMIN_ADDRESS); - CMTAT_CONTRACT.mint(ADDRESS3, ADDRESS3_BALANCE_INIT); - vm.prank(DEFAULT_ADMIN_ADDRESS); - - // We set the Rule Engine - CMTAT_CONTRACT.setRuleEngine(ruleEngineMock); - } - - function _createTransferRequest() internal { - vm.prank(ADDRESS1); - // Act - vm.expectEmit(true, true, true, true); - emit transferWaiting(defaultKey, ADDRESS1, ADDRESS2, defaultValue, 0); - ruleConditionalTransfer.createTransferRequest(ADDRESS2, defaultValue); - } - - /******* Transfer *******/ - function testCanMakeATransferWithoutApprovalIfFromAndToAreInTheWhitelist() - public - { - vm.prank(DEFAULT_ADMIN_ADDRESS); - ruleWhitelist.addAddressToTheList(ADDRESS1); - vm.prank(DEFAULT_ADMIN_ADDRESS); - ruleWhitelist.addAddressToTheList(ADDRESS2); - // Arrange - // Act - vm.prank(ADDRESS1); - CMTAT_CONTRACT.transfer(ADDRESS2, 21); - } - - function testCannotMakeATransferWithoutApprovalIfOnlyFromIsInTheWhitelist() - public - { - vm.prank(DEFAULT_ADMIN_ADDRESS); - ruleWhitelist.addAddressToTheList(ADDRESS1); - // Arrange - // Act - vm.expectRevert( - abi.encodeWithSelector( - RuleEngine_InvalidTransfer.selector, - ADDRESS1, - ADDRESS2, - 21 - ) - ); - vm.prank(ADDRESS1); - CMTAT_CONTRACT.transfer(ADDRESS2, 21); - } - - function testCannotMakeATransferWithoutApprovalIfOnlyToIsInTheWhitelist() - public - { - vm.prank(DEFAULT_ADMIN_ADDRESS); - ruleWhitelist.addAddressToTheList(ADDRESS2); - // Arrange - // Act - vm.expectRevert( - abi.encodeWithSelector( - RuleEngine_InvalidTransfer.selector, - ADDRESS1, - ADDRESS2, - 21 - ) - ); - vm.prank(ADDRESS1); - CMTAT_CONTRACT.transfer(ADDRESS2, 21); - } - - function testCanSetANewWhitelist() public { - RuleWhitelist ruleWhitelist2 = new RuleWhitelist( - DEFAULT_ADMIN_ADDRESS, - ZERO_ADDRESS - ); - vm.prank(DEFAULT_ADMIN_ADDRESS); - vm.expectEmit(true, false, false, false); - emit WhitelistConditionalTransfer(ruleWhitelist2); - ruleConditionalTransfer.setConditionalWhitelist(ruleWhitelist2); - vm.prank(DEFAULT_ADMIN_ADDRESS); - ruleWhitelist2.addAddressToTheList(ADDRESS1); - vm.prank(DEFAULT_ADMIN_ADDRESS); - ruleWhitelist2.addAddressToTheList(ADDRESS2); - - // Arrange - // Act - vm.prank(ADDRESS1); - CMTAT_CONTRACT.transfer(ADDRESS2, 21); - } - - function testCanUnSetWhitelist() public { - // Arrange - RuleWhitelist ruleWhitelist2 = new RuleWhitelist( - DEFAULT_ADMIN_ADDRESS, - ZERO_ADDRESS - ); - vm.prank(DEFAULT_ADMIN_ADDRESS); - vm.expectEmit(true, false, false, false); - emit WhitelistConditionalTransfer(ruleWhitelist2); - ruleConditionalTransfer.setConditionalWhitelist(ruleWhitelist2); - vm.prank(DEFAULT_ADMIN_ADDRESS); - ruleWhitelist2.addAddressToTheList(ADDRESS1); - vm.prank(DEFAULT_ADMIN_ADDRESS); - ruleWhitelist2.addAddressToTheList(ADDRESS2); - - // Act - vm.prank(DEFAULT_ADMIN_ADDRESS); - ruleConditionalTransfer.setConditionalWhitelist( - RuleWhitelist(ZERO_ADDRESS) - ); - - // Assert - vm.prank(ADDRESS1); - vm.expectRevert( - abi.encodeWithSelector( - RuleEngine_InvalidTransfer.selector, - ADDRESS1, - ADDRESS2, - 21 - ) - ); - CMTAT_CONTRACT.transfer(ADDRESS2, 21); - } - - function testCanDetectTransferRestrictionOKWithWhitelist() public { - // Arrange - vm.prank(DEFAULT_ADMIN_ADDRESS); - ruleWhitelist.addAddressToTheList(ADDRESS1); - vm.prank(DEFAULT_ADMIN_ADDRESS); - ruleWhitelist.addAddressToTheList(ADDRESS2); - - // Act - uint8 resUint8 = ruleConditionalTransfer.detectTransferRestriction( - ADDRESS1, - ADDRESS2, - defaultValue - ); - - // Assert - assertEq(resUint8, 0); - } - - function testCanDetectTransferRestrictionWithOnlyFromInTheWhitelist() - public - { - // Arrange - vm.prank(DEFAULT_ADMIN_ADDRESS); - ruleWhitelist.addAddressToTheList(ADDRESS1); - - // Act - uint8 resUint8 = ruleConditionalTransfer.detectTransferRestriction( - ADDRESS1, - ADDRESS2, - defaultValue - ); - - // Assert - assertEq(resUint8, CODE_TRANSFER_REQUEST_NOT_APPROVED); - } - - function testCanDetectTransferRestrictionWithOnlyToInTheWhitelist() public { - // Arrange - vm.prank(DEFAULT_ADMIN_ADDRESS); - ruleWhitelist.addAddressToTheList(ADDRESS2); - - // Act - uint8 resUint8 = ruleConditionalTransfer.detectTransferRestriction( - ADDRESS1, - ADDRESS2, - defaultValue - ); - - // Assert - assertEq(resUint8, CODE_TRANSFER_REQUEST_NOT_APPROVED); - } - - /***** Test from CMTAT integration */ - - function testCannotTransferWithoutApproval() public { - CMTATIntegrationShare.testShareCannotTransferWithoutApproval(); - } - - function testCanMakeATransferIfApproved() public { - CMTATIntegrationShare.testShareCanMakeATransferIfApproved(); - } - function testCanMakeAPartialTransferIfPartiallyApproved() public { - CMTATIntegrationShare.testShareCanMakeAPartialTransferIfPartiallyApproved(); - } - - function testCannotMakeAWholeTransferIfPartiallyApproved() public { - CMTATIntegrationShare.testShareCannotMakeAWholeTransferIfPartiallyApproved(); - } - - function testCannotMakeATransferIfDelayExceeded() public { - CMTATIntegrationShare.testShareCannotMakeATransferIfDelayExceeded(2592001); - } - - function testCannotMakeATransferIfDelayJustInTime() public { - // 30 days - CMTATIntegrationShare.testShareCannotMakeATransferIfDelayJustInTime(2592000); - } - - function testCanSetTimeLimitWithTransferExceeded() public { - CMTATIntegrationShare.testShareCanSetTimeLimitWithTransferExceeded(1 days + 1 seconds); - } - - function testCanMintWithoutApproval() public { - CMTATIntegrationShare.testShareCanMintWithoutApproval(); - } - - function testCanBurnWithoutApproval() public { - CMTATIntegrationShare.testShareCanBurnWithoutApproval(); - } - - function testCannotMintWithoutApproval() public { - CMTATIntegrationShare.testShareCannotMintWithoutApproval(); - } - - function testCannotBurnWithoutApproval() public { - CMTATIntegrationShare.testShareCannotBurnWithoutApproval(); - } - function testAutomaticTransferIfOptionsSet() public { - CMTATIntegrationShare.testShareAutomaticTransferIfOptionsSet(); - } - - function testCanTransferIfAutomaticApprovalSetAndTimeExceedsJustInTime() - public - { - CMTATIntegrationShare.testShareCanTransferIfAutomaticApprovalSetAndTimeExceedsJustInTime(); - } - - function testCanTransferIfAutomaticApprovalSetAndTimeExceeds() public { - CMTATIntegrationShare.testShareCanTransferIfAutomaticApprovalSetAndTimeExceeds(); - } - - function testCannotTransferIfAutomaticApprovalSetAndTimeNotExceeds() - public - { - CMTATIntegrationShare.testShareCannotTransferIfAutomaticApprovalSetAndTimeNotExceeds(); - } -} diff --git a/test/RuleConditionalTransfer/CMTATIntegrationTest2.t.sol b/test/RuleConditionalTransfer/CMTATIntegrationTest2.t.sol deleted file mode 100644 index d05ba53..0000000 --- a/test/RuleConditionalTransfer/CMTATIntegrationTest2.t.sol +++ /dev/null @@ -1,182 +0,0 @@ -// SPDX-License-Identifier: MPL-2.0 -pragma solidity ^0.8.20; - -import "forge-std/Test.sol"; -import "CMTAT/deployment/CMTATStandalone.sol"; -import "../HelperContract.sol"; -import "src/RuleEngine.sol"; -import "./utils/CMTATIntegrationShare.sol"; - -/** - * @title Integration test with the CMTAT - * @dev set blocktimestamp to a value different from 0 - */ -contract CMTATIntegrationConditionalTransferWithTimeStampSet is Test, HelperContract, CMTATIntegrationShare { - uint256 TIME_LIMIT_AUTO_APPROVAL = 259200; //3 days; - uint256 TIME_LIMIT_TO_APPROVE = 432000; //5 days; - uint256 TIME_LIMIT_TO_TRANSFER = 259200; //3 days - // Arrange - function setUp() public { - // global arrange - cmtatDeployment = new CMTATDeployment(); - CMTAT_CONTRACT = cmtatDeployment.cmtat(); - - TIME_LIMIT memory timeLimit_ = TIME_LIMIT({ - timeLimitToApprove: TIME_LIMIT_TO_APPROVE, // 5days - timeLimitToTransfer: TIME_LIMIT_TO_TRANSFER - }); - ISSUANCE memory issuanceOption_ = ISSUANCE({ - authorizedMintWithoutApproval: true, - authorizedBurnWithoutApproval: true - }); - - AUTOMATIC_APPROVAL memory automaticApproval_ = AUTOMATIC_APPROVAL({ - isActivate: true, - timeLimitBeforeAutomaticApproval: TIME_LIMIT_AUTO_APPROVAL - }); - - AUTOMATIC_TRANSFER memory automaticTransfer_ = AUTOMATIC_TRANSFER({ - isActivate: true, - cmtat: IERC20(address(CMTAT_CONTRACT)) - }); - OPTION memory options = OPTION({ - issuance: issuanceOption_, - timeLimit: timeLimit_, - automaticApproval: automaticApproval_, - automaticTransfer: automaticTransfer_ - }); - - - - // RuleEngine - vm.prank(DEFAULT_ADMIN_ADDRESS); - ruleEngineMock = new RuleEngine( - DEFAULT_ADMIN_ADDRESS, - ZERO_ADDRESS, - address(CMTAT_CONTRACT) - ); - - // RuleConditionalTransfer - vm.prank(DEFAULT_ADMIN_ADDRESS); - ruleConditionalTransfer = new RuleConditionalTransfer( - DEFAULT_ADMIN_ADDRESS, - ZERO_ADDRESS, - ruleEngineMock, - options - ); - // specific arrange - vm.prank(DEFAULT_ADMIN_ADDRESS); - ruleConditionalTransfer.grantRole( - RULE_CONDITIONAL_TRANSFER_OPERATOR_ROLE, - CONDITIONAL_TRANSFER_OPERATOR_ADDRESS - ); - - // RuleEngine - vm.prank(DEFAULT_ADMIN_ADDRESS); - ruleEngineMock.addRuleOperation(ruleConditionalTransfer); - - // Mint - vm.prank(DEFAULT_ADMIN_ADDRESS); - CMTAT_CONTRACT.mint(ADDRESS1, ADDRESS1_BALANCE_INIT); - vm.prank(DEFAULT_ADMIN_ADDRESS); - CMTAT_CONTRACT.mint(ADDRESS2, ADDRESS2_BALANCE_INIT); - vm.prank(DEFAULT_ADMIN_ADDRESS); - CMTAT_CONTRACT.mint(ADDRESS3, ADDRESS3_BALANCE_INIT); - vm.prank(DEFAULT_ADMIN_ADDRESS); - - // We set the Rule Engine - CMTAT_CONTRACT.setRuleEngine(ruleEngineMock); - - vm.warp(1734531338); - } - - function _createTransferRequest() internal { - vm.prank(ADDRESS1); - // Act - vm.expectEmit(true, true, true, true); - emit transferWaiting(defaultKey, ADDRESS1, ADDRESS2, defaultValue, 0); - ruleConditionalTransfer.createTransferRequest(ADDRESS2, defaultValue); - } - - /******* Transfer *******/ - function testCannotTransferWithoutApproval() public { - // Arrange - Assert - // ConditionalTransfer - resUint8 = ruleConditionalTransfer.detectTransferRestriction( - address(0xD65Fb7036518F4B34482E0a1905Dc6e3Fc379FF0), - address(0xD65Fb7036518F4B34482E0a1905Dc6e3Fc379FF0), - defaultValue - ); - assertEq(resUint8, CODE_TRANSFER_REQUEST_NOT_APPROVED); - resUint8 = ruleConditionalTransfer.detectTransferRestriction( - ADDRESS1, - ADDRESS2, - 5 - ); - assertEq(resUint8, CODE_TRANSFER_REQUEST_NOT_APPROVED); - // Assert - // Arrange - CMTATIntegrationShare.testShareCannotTransferWithoutApproval(); - } - - function testCanMakeATransferIfApproved() public { - CMTATIntegrationShare.testShareCanMakeATransferIfApproved(); - } - - function testCanMakeAPartialTransferIfPartiallyApproved() public { - CMTATIntegrationShare.testShareCanMakeAPartialTransferIfPartiallyApproved(); - } - - function testCannotMakeAWholeTransferIfPartiallyApproved() public { - CMTATIntegrationShare.testShareCannotMakeAWholeTransferIfPartiallyApproved(); - - } - - function testCannotMakeATransferIfDelayExceeded() public { - CMTATIntegrationShare.testShareCannotMakeATransferIfDelayExceeded(TIME_LIMIT_TO_TRANSFER + 1 seconds); - } - - function testCanMakeATransferIfDelayJustInTime() public { - CMTATIntegrationShare.testShareCannotMakeATransferIfDelayJustInTime(TIME_LIMIT_TO_TRANSFER); - } - - function testCanSetTimeLimitWithTransferExceeded() public { - CMTATIntegrationShare.testShareCanSetTimeLimitWithTransferExceeded(1 days + 1 seconds); - } - - function testCanMintWithoutApproval() public { - CMTATIntegrationShare.testShareCanMintWithoutApproval(); - } - - function testCanBurnWithoutApproval() public { - CMTATIntegrationShare.testShareCanBurnWithoutApproval(); - } - - function testCannotMintWithoutApproval() public { - CMTATIntegrationShare.testShareCannotMintWithoutApproval(); - } - - function testCannotBurnWithoutApproval() public { - CMTATIntegrationShare.testShareCannotBurnWithoutApproval(); - } - - function testAutomaticTransferIfOptionsSet() public { - CMTATIntegrationShare.testShareAutomaticTransferIfOptionsSet(); - } - - function testCanTransferIfAutomaticApprovalSetAndTimeExceedsJustInTime() - public - { - CMTATIntegrationShare.testShareCanTransferIfAutomaticApprovalSetAndTimeExceedsJustInTime(); - } - - function testCanTransferIfAutomaticApprovalSetAndTimeExceeds() public { - CMTATIntegrationShare.testShareCanTransferIfAutomaticApprovalSetAndTimeExceeds(); - } - - function testCannotTransferIfAutomaticApprovalSetAndTimeNotExceeds() - public - { - CMTATIntegrationShare.testShareCannotTransferIfAutomaticApprovalSetAndTimeNotExceeds(); - } -} diff --git a/test/RuleConditionalTransfer/RuleConditionalTransfer.t.sol b/test/RuleConditionalTransfer/RuleConditionalTransfer.t.sol deleted file mode 100644 index fae3211..0000000 --- a/test/RuleConditionalTransfer/RuleConditionalTransfer.t.sol +++ /dev/null @@ -1,980 +0,0 @@ -// SPDX-License-Identifier: MPL-2.0 -pragma solidity ^0.8.20; - -import "forge-std/Test.sol"; -import "../HelperContract.sol"; -import "src/RuleEngine.sol"; -import "OZ/token/ERC20/IERC20.sol"; -/** - * @title General functions of the RuleWhitelist - */ -contract RuleConditionalTransferTest is Test, HelperContract { - uint256 defaultValue = 10; - bytes32 defaultKey = - keccak256(abi.encode(ADDRESS1, ADDRESS2, defaultValue)); - - // Batch test - uint256 value2 = 1; - uint256 value3 = 2; - uint256 value4 = 1000; - uint256 value5 = 2000; - bytes32 key2 = keccak256(abi.encode(ADDRESS1, ADDRESS2, value2)); - bytes32 key3 = keccak256(abi.encode(ADDRESS2, ADDRESS1, value3)); - bytes32 key4 = keccak256(abi.encode(ADDRESS1, ADDRESS2, value4)); - bytes32 key5 = keccak256(abi.encode(ADDRESS1, ADDRESS2, value5)); - - TransferRequestKeyElement transferRequestInput2 = - TransferRequestKeyElement({ - from: ADDRESS1, - to: ADDRESS2, - value: value2 - }); - - TransferRequestKeyElement transferRequestInput3 = - TransferRequestKeyElement({ - from: ADDRESS2, - to: ADDRESS1, - value: value3 - }); - - TransferRequestKeyElement transferRequestInput4 = - TransferRequestKeyElement({ - from: ADDRESS1, - to: ADDRESS2, - value: value4 - }); - TransferRequestKeyElement transferRequestInput5 = - TransferRequestKeyElement({ - from: ADDRESS1, - to: ADDRESS2, - value: value5 - }); - TransferRequestKeyElement transferRequestInput = - TransferRequestKeyElement({ - from: ADDRESS1, - to: ADDRESS2, - value: defaultValue - }); - - // Arrange - function setUp() public { - TIME_LIMIT memory timeLimit_ = TIME_LIMIT({ - timeLimitToApprove: 3 days, - timeLimitToTransfer: 30 days - }); - - AUTOMATIC_APPROVAL memory automaticApproval_ = AUTOMATIC_APPROVAL({ - isActivate: false, - timeLimitBeforeAutomaticApproval: 0 - }); - - ISSUANCE memory issuanceOption_ = ISSUANCE({ - authorizedMintWithoutApproval: false, - authorizedBurnWithoutApproval: false - }); - AUTOMATIC_TRANSFER memory automaticTransfer_ = AUTOMATIC_TRANSFER({ - isActivate: false, - cmtat: IERC20(address(0)) - }); - - OPTION memory options = OPTION({ - issuance: issuanceOption_, - timeLimit: timeLimit_, - automaticApproval: automaticApproval_, - automaticTransfer: automaticTransfer_ - }); - ruleEngineMock = new RuleEngine( - RULE_ENGINE_OPERATOR_ADDRESS, - ZERO_ADDRESS, - ZERO_ADDRESS - ); - vm.prank(DEFAULT_ADMIN_ADDRESS); - ruleConditionalTransfer = new RuleConditionalTransfer( - DEFAULT_ADMIN_ADDRESS, - ZERO_ADDRESS, - ruleEngineMock, - options - ); - vm.prank(DEFAULT_ADMIN_ADDRESS); - ruleConditionalTransfer.grantRole( - RULE_CONDITIONAL_TRANSFER_OPERATOR_ROLE, - CONDITIONAL_TRANSFER_OPERATOR_ADDRESS - ); - } - - function _createTransferRequest() internal { - vm.prank(ADDRESS1); - // Act - vm.expectEmit(true, true, true, true); - emit transferWaiting(defaultKey, ADDRESS1, ADDRESS2, defaultValue, 0); - ruleConditionalTransfer.createTransferRequest(ADDRESS2, defaultValue); - - // Assert - TransferRequest memory transferRequest = ruleConditionalTransfer - .getRequestTrade(ADDRESS1, ADDRESS2, defaultValue); - assertEq(transferRequest.key, defaultKey); - assertEq(transferRequest.id, 0); - assertEq(transferRequest.keyElement.from, ADDRESS1); - assertEq(transferRequest.keyElement.to, ADDRESS2); - assertEq(transferRequest.keyElement.value, defaultValue); - assertEq(uint256(transferRequest.status), uint256(STATUS.WAIT)); - - TransferRequest[] memory transferRequests = ruleConditionalTransfer - .getRequestByStatus(STATUS.WAIT); - assertEq(transferRequests[0].key, defaultKey); - assertEq(transferRequests.length, 1); - } - - function _createTransferRequestBatch() public { - // Arrange - _createTransferRequest(); - - // Second and third request - vm.prank(ADDRESS1); - ruleConditionalTransfer.createTransferRequest(ADDRESS2, value2); - vm.prank(ADDRESS2); - ruleConditionalTransfer.createTransferRequest(ADDRESS1, value3); - //Fourth request => will be not validated - vm.prank(ADDRESS1); - ruleConditionalTransfer.createTransferRequest(ADDRESS2, value4); - //fifth request => will not be treated - vm.prank(ADDRESS1); - ruleConditionalTransfer.createTransferRequest(ADDRESS2, value5); - } - - function _checkRequestPartial() internal view { - TransferRequest memory transferRequest = ruleConditionalTransfer - .getRequestTrade(ADDRESS1, ADDRESS2, defaultValue); - assertEq(transferRequest.key, defaultKey); - assertEq(transferRequest.id, 0); - assertEq(transferRequest.keyElement.from, ADDRESS1); - assertEq(transferRequest.keyElement.to, ADDRESS2); - assertEq(transferRequest.keyElement.value, defaultValue); - assertEq(uint256(transferRequest.status), uint256(STATUS.APPROVED)); - - // 2 - transferRequest = ruleConditionalTransfer.getRequestTrade( - ADDRESS1, - ADDRESS2, - value2 - ); - assertEq(transferRequest.key, key2); - assertEq(transferRequest.id, 1); - assertEq(transferRequest.keyElement.from, ADDRESS1); - assertEq(transferRequest.keyElement.to, ADDRESS2); - assertEq(transferRequest.keyElement.value, value2); - assertEq(uint256(transferRequest.status), uint256(STATUS.APPROVED)); - - // 3 - transferRequest = ruleConditionalTransfer.getRequestTrade( - ADDRESS2, - ADDRESS1, - value3 - ); - assertEq(transferRequest.key, key3); - assertEq(transferRequest.id, 2); - assertEq(transferRequest.keyElement.from, ADDRESS2); - assertEq(transferRequest.keyElement.to, ADDRESS1); - assertEq(transferRequest.keyElement.value, value3); - assertEq(uint256(transferRequest.status), uint256(STATUS.APPROVED)); - - // 4 - transferRequest = ruleConditionalTransfer.getRequestTrade( - ADDRESS1, - ADDRESS2, - value4 - ); - assertEq(transferRequest.key, key4); - assertEq(transferRequest.id, 3); - assertEq(transferRequest.keyElement.from, ADDRESS1); - assertEq(transferRequest.keyElement.to, ADDRESS2); - assertEq(transferRequest.keyElement.value, value4); - assertEq(uint256(transferRequest.status), uint256(STATUS.DENIED)); - } - - function _checkRequestBatch() internal view { - _checkRequestPartial(); - - // 5 - TransferRequest memory transferRequest = ruleConditionalTransfer - .getRequestTrade(ADDRESS1, ADDRESS2, value5); - assertEq(transferRequest.key, key5); - assertEq(transferRequest.id, 4); - assertEq(transferRequest.keyElement.from, ADDRESS1); - assertEq(transferRequest.keyElement.to, ADDRESS2); - assertEq(transferRequest.keyElement.value, value5); - assertEq(uint256(transferRequest.status), uint256(STATUS.WAIT)); - } - - function testCanCreateTransferRequest() public { - _createTransferRequest(); - } - - /** - * @dev test first - */ - function testCanCreateTransferRequestWithApproval() public { - vm.prank(CONDITIONAL_TRANSFER_OPERATOR_ADDRESS); - // Act - vm.expectEmit(true, true, true, true); - emit transferApproved(defaultKey, ADDRESS1, ADDRESS2, defaultValue, 0); - ruleConditionalTransfer.createTransferRequestWithApproval( - transferRequestInput - ); - } - - function testCanCreateTransferRequestWithApprovalBatch() public { - // Arrange - TransferRequestKeyElement[] - memory transferRequestKeyElements = new TransferRequestKeyElement[]( - 4 - ); - transferRequestKeyElements[0] = transferRequestInput; - transferRequestKeyElements[1] = transferRequestInput2; - transferRequestKeyElements[2] = transferRequestInput3; - transferRequestKeyElements[3] = transferRequestInput4; - - // Act - vm.prank(CONDITIONAL_TRANSFER_OPERATOR_ADDRESS); - vm.expectEmit(true, true, true, true); - emit transferApproved(defaultKey, ADDRESS1, ADDRESS2, defaultValue, 0); - vm.expectEmit(true, true, true, true); - emit transferApproved(key2, ADDRESS1, ADDRESS2, value2, 1); - vm.expectEmit(true, true, true, true); - emit transferApproved(key3, ADDRESS2, ADDRESS1, value3, 2); - vm.expectEmit(true, true, true, true); - emit transferApproved(key4, ADDRESS1, ADDRESS2, value4, 3); - ruleConditionalTransfer.createTransferRequestWithApprovalBatch( - transferRequestKeyElements - ); - } - - function testCanCreateTransferRequestWithApprovalBatchWithEmptyArray() - public - { - // Arrange - TransferRequestKeyElement[] - memory transferRequestKeyElements = new TransferRequestKeyElement[]( - 0 - ); - - // Act - vm.prank(CONDITIONAL_TRANSFER_OPERATOR_ADDRESS); - vm.expectRevert(RuleConditionalTransfer_EmptyArray.selector); - ruleConditionalTransfer.createTransferRequestWithApprovalBatch( - transferRequestKeyElements - ); - } - - /** - * @dev test overwrite branch, previous approval - */ - function testCanCreateTransferRequestWithApprovalAgain() public { - vm.prank(CONDITIONAL_TRANSFER_OPERATOR_ADDRESS); - // Arrange - bytes32 key = keccak256(abi.encode(ADDRESS1, ADDRESS2, defaultValue)); - vm.expectEmit(true, true, true, true); - emit transferApproved(key, ADDRESS1, ADDRESS2, defaultValue, 0); - ruleConditionalTransfer.createTransferRequestWithApproval( - transferRequestInput - ); - - // Act - vm.prank(CONDITIONAL_TRANSFER_OPERATOR_ADDRESS); - vm.expectEmit(true, true, true, true); - emit transferApproved(key, ADDRESS1, ADDRESS2, defaultValue, 0); - ruleConditionalTransfer.createTransferRequestWithApproval( - transferRequestInput - ); - } - - /**** Request approval ****** */ - function testCanHolderCreateRequestBatch() public { - // Arrange - uint256[] memory values = new uint256[](3); - values[0] = defaultValue; - values[1] = value2; - values[2] = value4; - address[] memory addresses = new address[](3); - addresses[0] = ADDRESS2; - addresses[1] = ADDRESS2; - addresses[2] = ADDRESS2; - - // Act - vm.prank(ADDRESS1); - vm.expectEmit(true, true, true, true); - emit transferWaiting(defaultKey, ADDRESS1, ADDRESS2, defaultValue, 0); - vm.expectEmit(true, true, true, true); - emit transferWaiting(key2, ADDRESS1, ADDRESS2, value2, 1); - vm.expectEmit(true, true, true, true); - emit transferWaiting(key4, ADDRESS1, ADDRESS2, value4, 2); - ruleConditionalTransfer.createTransferRequestBatch(addresses, values); - } - - function testCannotHolderCreateRequestBatchEmptyArray() public { - // Arrange - uint256[] memory values = new uint256[](0); - address[] memory addresses = new address[](0); - - // Act - vm.prank(ADDRESS1); - vm.expectRevert(RuleConditionalTransfer_EmptyArray.selector); - ruleConditionalTransfer.createTransferRequestBatch(addresses, values); - } - - function testCannotHolderCreateRequestBatchIfLEngthMismatch() public { - // Arrange - uint256[] memory values = new uint256[](3); - address[] memory addresses = new address[](1); - - // Act - vm.prank(ADDRESS1); - vm.expectRevert(RuleConditionalTransfer_InvalidLengthArray.selector); - ruleConditionalTransfer.createTransferRequestBatch(addresses, values); - } - - function testCanApproveRequestCreatedByHolder() public { - // Arrange - _createTransferRequest(); - - // Act - vm.prank(CONDITIONAL_TRANSFER_OPERATOR_ADDRESS); - vm.expectEmit(true, true, true, true); - emit transferApproved(defaultKey, ADDRESS1, ADDRESS2, defaultValue, 0); - ruleConditionalTransfer.approveTransferRequest( - transferRequestInput, - 0, - true - ); - } - - function testCanPartiallyApproveRequestCreatedByHolder() public { - // Arrange - _createTransferRequest(); - uint256 partialValue = 5; - bytes32 key = keccak256(abi.encode(ADDRESS1, ADDRESS2, partialValue)); - // Act - vm.prank(CONDITIONAL_TRANSFER_OPERATOR_ADDRESS); - vm.expectEmit(true, true, true, true); - emit transferDenied(defaultKey, ADDRESS1, ADDRESS2, defaultValue, 0); - emit transferWaiting(key, ADDRESS1, ADDRESS2, partialValue, 1); - ruleConditionalTransfer.approveTransferRequest( - transferRequestInput, - partialValue, - true - ); - } - - function testCannotPartiallyDeniedRequestCreatedByHolder() public { - // Arrange - _createTransferRequest(); - uint256 partialValue = 5; - // Act - vm.prank(CONDITIONAL_TRANSFER_OPERATOR_ADDRESS); - vm.expectRevert(RuleConditionalTransfer_CannotDeniedPartially.selector); - ruleConditionalTransfer.approveTransferRequest( - transferRequestInput, - partialValue, - false - ); - } - - function testCannotPartiallyApprovedRequestCreatedByHolderIfPartialValueIsBiggerThanValue() - public - { - // Arrange - _createTransferRequest(); - uint256 partialValue = 5000; - // Act - vm.prank(CONDITIONAL_TRANSFER_OPERATOR_ADDRESS); - vm.expectRevert(RuleConditionalTransfer_InvalidValueApproved.selector); - ruleConditionalTransfer.approveTransferRequest( - transferRequestInput, - partialValue, - false - ); - } - - function testCanCreateAndApproveRequestCreatedByHolderAgain() public { - // Arrange - // First request - _createTransferRequest(); - - // First approval - vm.prank(CONDITIONAL_TRANSFER_OPERATOR_ADDRESS); - vm.expectEmit(true, true, true, true); - emit transferApproved(defaultKey, ADDRESS1, ADDRESS2, defaultValue, 0); - ruleConditionalTransfer.approveTransferRequest( - transferRequestInput, - 0, - true - ); - - // Second request - vm.prank(ADDRESS1); - ruleConditionalTransfer.createTransferRequest(ADDRESS2, defaultValue); - - // Second approval - vm.prank(CONDITIONAL_TRANSFER_OPERATOR_ADDRESS); - vm.expectEmit(true, true, true, true); - emit transferApproved(defaultKey, ADDRESS1, ADDRESS2, defaultValue, 0); - ruleConditionalTransfer.approveTransferRequest( - transferRequestInput, - 0, - true - ); - - // Assert - TransferRequest memory transferRequest = ruleConditionalTransfer - .getRequestTrade(ADDRESS1, ADDRESS2, defaultValue); - assertEq(transferRequest.key, defaultKey); - assertEq(transferRequest.id, 0); - assertEq(transferRequest.keyElement.from, ADDRESS1); - assertEq(transferRequest.keyElement.to, ADDRESS2); - assertEq(transferRequest.keyElement.value, defaultValue); - assertEq(uint256(transferRequest.status), uint256(STATUS.APPROVED)); - } - - /*** Batch */ - function testCanCreateAndApproveRequestCreatedByHolderInBatch() public { - // Arrange - _createTransferRequestBatch(); - uint256[] memory partialValues = new uint256[](4); - partialValues[0] = 0; - partialValues[1] = 0; - partialValues[2] = 0; - partialValues[3] = 0; - bool[] memory isApproveds = new bool[](4); - isApproveds[0] = true; - isApproveds[1] = true; - isApproveds[2] = true; - isApproveds[3] = false; - - TransferRequestKeyElement[] - memory transferRequestKeyElements = new TransferRequestKeyElement[]( - 4 - ); - transferRequestKeyElements[0] = transferRequestInput; - transferRequestKeyElements[1] = transferRequestInput2; - transferRequestKeyElements[2] = transferRequestInput3; - transferRequestKeyElements[3] = transferRequestInput4; - - // Act - vm.prank(CONDITIONAL_TRANSFER_OPERATOR_ADDRESS); - vm.expectEmit(true, true, true, true); - emit transferApproved(defaultKey, ADDRESS1, ADDRESS2, defaultValue, 0); - vm.expectEmit(true, true, true, true); - emit transferApproved(key2, ADDRESS1, ADDRESS2, value2, 1); - vm.expectEmit(true, true, true, true); - emit transferApproved(key3, ADDRESS2, ADDRESS1, value3, 2); - vm.expectEmit(true, true, true, true); - emit transferDenied(key4, ADDRESS1, ADDRESS2, value4, 3); - ruleConditionalTransfer.approveTransferRequestBatch( - transferRequestKeyElements, - partialValues, - isApproveds - ); - - // Assert - _checkRequestBatch(); - } - - function testCannotCreateAndApproveRequestCreatedByHolderInBatchWithLenghtMismatch() - public - { - // Arrange - uint256[] memory partialValues = new uint256[](4); - // Lenght mismatch - bool[] memory isApproveds = new bool[](3); - - TransferRequestKeyElement[] - memory transferRequestKeyElements = new TransferRequestKeyElement[]( - 4 - ); - // Act - vm.prank(CONDITIONAL_TRANSFER_OPERATOR_ADDRESS); - vm.expectRevert(RuleConditionalTransfer_InvalidLengthArray.selector); - ruleConditionalTransfer.approveTransferRequestBatch( - transferRequestKeyElements, - partialValues, - isApproveds - ); - - // Act - uint256[] memory partialValuesV2 = new uint256[](1); - partialValuesV2[0] = 0; - vm.prank(CONDITIONAL_TRANSFER_OPERATOR_ADDRESS); - vm.expectRevert(RuleConditionalTransfer_InvalidLengthArray.selector); - ruleConditionalTransfer.approveTransferRequestBatch( - transferRequestKeyElements, - partialValuesV2, - isApproveds - ); - - // Act - uint256[] memory partialValuesV3 = new uint256[](4); - // Lenght mismatch - bool[] memory isApprovedsV3 = new bool[](4); - TransferRequestKeyElement[] - memory transferRequestKeyElementsV3 = new TransferRequestKeyElement[]( - 2 - ); - transferRequestKeyElementsV3[0] = transferRequestInput; - transferRequestKeyElementsV3[1] = transferRequestInput2; - vm.expectRevert(RuleConditionalTransfer_InvalidLengthArray.selector); - vm.prank(CONDITIONAL_TRANSFER_OPERATOR_ADDRESS); - ruleConditionalTransfer.approveTransferRequestBatch( - transferRequestKeyElementsV3, - partialValuesV3, - isApprovedsV3 - ); - } - - function testCannotCreateAndApproveRequestCreatedByHolderInBatchWithEmptyArry() - public - { - // Arrange - uint256[] memory partialValues = new uint256[](0); - // Lenght mismatch - bool[] memory isApproveds = new bool[](0); - - TransferRequestKeyElement[] - memory transferRequestKeyElements = new TransferRequestKeyElement[]( - 0 - ); - // Act - vm.prank(CONDITIONAL_TRANSFER_OPERATOR_ADDRESS); - vm.expectRevert(RuleConditionalTransfer_EmptyArray.selector); - ruleConditionalTransfer.approveTransferRequestBatch( - transferRequestKeyElements, - partialValues, - isApproveds - ); - } - - function testCanCreateAndApproveRequestCreatedByHolderInBatchWithPartialValues() - public - { - // Arrange - _createTransferRequestBatch(); - uint256[] memory partialValues = new uint256[](5); - partialValues[0] = 0; - partialValues[1] = 0; - partialValues[2] = 0; - partialValues[3] = 0; - // partial value - partialValues[4] = 500; - bytes32 key5PartialValue = keccak256( - abi.encode(ADDRESS1, ADDRESS2, partialValues[4]) - ); - bool[] memory isApproveds = new bool[](5); - isApproveds[0] = true; - isApproveds[1] = true; - isApproveds[2] = true; - isApproveds[3] = false; - isApproveds[4] = true; - - TransferRequestKeyElement[] - memory transferRequestKeyElements = new TransferRequestKeyElement[]( - 5 - ); - transferRequestKeyElements[0] = transferRequestInput; - transferRequestKeyElements[1] = transferRequestInput2; - transferRequestKeyElements[2] = transferRequestInput3; - transferRequestKeyElements[3] = transferRequestInput4; - transferRequestKeyElements[4] = transferRequestInput5; - // Act - vm.prank(CONDITIONAL_TRANSFER_OPERATOR_ADDRESS); - vm.expectEmit(true, true, true, true); - emit transferApproved(defaultKey, ADDRESS1, ADDRESS2, defaultValue, 0); - vm.expectEmit(true, true, true, true); - emit transferApproved(key2, ADDRESS1, ADDRESS2, value2, 1); - vm.expectEmit(true, true, true, true); - emit transferApproved(key3, ADDRESS2, ADDRESS1, value3, 2); - vm.expectEmit(true, true, true, true); - emit transferDenied(key4, ADDRESS1, ADDRESS2, value4, 3); - //partial value - vm.expectEmit(true, true, true, true); - emit transferDenied(key5, ADDRESS1, ADDRESS2, value5, 4); - vm.expectEmit(true, true, true, true); - emit transferApproved( - key5PartialValue, - ADDRESS1, - ADDRESS2, - partialValues[4], - 5 - ); - ruleConditionalTransfer.approveTransferRequestBatch( - transferRequestKeyElements, - partialValues, - isApproveds - ); - - // Assert - - _checkRequestPartial(); - // 5 - TransferRequest memory transferRequest = ruleConditionalTransfer - .getRequestTrade(ADDRESS1, ADDRESS2, value5); - assertEq(transferRequest.key, key5); - assertEq(transferRequest.id, 4); - assertEq(transferRequest.keyElement.from, ADDRESS1); - assertEq(transferRequest.keyElement.to, ADDRESS2); - assertEq(transferRequest.keyElement.value, value5); - assertEq(uint256(transferRequest.status), uint256(STATUS.DENIED)); - // new request - transferRequest = ruleConditionalTransfer.getRequestTrade( - ADDRESS1, - ADDRESS2, - partialValues[4] - ); - assertEq(transferRequest.key, key5PartialValue); - assertEq(transferRequest.id, 5); - assertEq(transferRequest.keyElement.from, ADDRESS1); - assertEq(transferRequest.keyElement.to, ADDRESS2); - assertEq(transferRequest.keyElement.value, partialValues[4]); - assertEq(uint256(transferRequest.status), uint256(STATUS.APPROVED)); - } - - /****** ID *******/ - function testCanApproveRequestCreatedByHolderWithId() public { - // Arrange - _createTransferRequest(); - // Act - vm.prank(CONDITIONAL_TRANSFER_OPERATOR_ADDRESS); - vm.expectEmit(true, true, true, true); - emit transferApproved(defaultKey, ADDRESS1, ADDRESS2, defaultValue, 0); - ruleConditionalTransfer.approveTransferRequestWithId(0, true); - - // Assert - TransferRequest memory transferRequest = ruleConditionalTransfer - .getRequestTrade(ADDRESS1, ADDRESS2, defaultValue); - assertEq(transferRequest.key, defaultKey); - assertEq(transferRequest.id, 0); - assertEq(transferRequest.keyElement.from, ADDRESS1); - assertEq(transferRequest.keyElement.to, ADDRESS2); - assertEq(transferRequest.keyElement.value, defaultValue); - assertEq(uint256(transferRequest.status), uint256(STATUS.APPROVED)); - } - - /***** Batch */ - - function testCanApproveRequestInBatchCreatedByHolderWithId() public { - _createTransferRequestBatch(); - uint256[] memory ids = new uint256[](4); - ids[0] = 0; - ids[1] = 1; - ids[2] = 2; - ids[3] = 3; - bool[] memory isApproveds = new bool[](4); - isApproveds[0] = true; - isApproveds[1] = true; - isApproveds[2] = true; - isApproveds[3] = false; - // Act - vm.prank(CONDITIONAL_TRANSFER_OPERATOR_ADDRESS); - vm.expectEmit(true, true, true, true); - emit transferApproved(defaultKey, ADDRESS1, ADDRESS2, defaultValue, 0); - vm.expectEmit(true, true, true, true); - emit transferApproved(key2, ADDRESS1, ADDRESS2, value2, 1); - vm.expectEmit(true, true, true, true); - emit transferApproved(key3, ADDRESS2, ADDRESS1, value3, 2); - vm.expectEmit(true, true, true, true); - emit transferDenied(key4, ADDRESS1, ADDRESS2, value4, 3); - ruleConditionalTransfer.approveTransferRequestBatchWithId( - ids, - isApproveds - ); - - // Assert - _checkRequestBatch(); - } - - function testCannotApproveRequestInBatchCreatedByHolderWithIdWithinvalidLength() - public - { - _createTransferRequestBatch(); - uint256[] memory ids = new uint256[](4); - // Wrong length here - bool[] memory isApproveds = new bool[](3); - // Act - vm.prank(CONDITIONAL_TRANSFER_OPERATOR_ADDRESS); - vm.expectRevert(RuleConditionalTransfer_InvalidLengthArray.selector); - ruleConditionalTransfer.approveTransferRequestBatchWithId( - ids, - isApproveds - ); - } - - function testCannotApproveRequestInBatchCreatedByHolderWithIdWithEmptyArray() - public - { - _createTransferRequestBatch(); - uint256[] memory ids = new uint256[](0); - // Wrong length here - bool[] memory isApproveds = new bool[](0); - // Act - vm.prank(CONDITIONAL_TRANSFER_OPERATOR_ADDRESS); - vm.expectRevert(RuleConditionalTransfer_EmptyArray.selector); - ruleConditionalTransfer.approveTransferRequestBatchWithId( - ids, - isApproveds - ); - } - - function testCannotApproveRequestInBatchCreatedByHolderWithWrongId() - public - { - _createTransferRequestBatch(); - uint256[] memory ids = new uint256[](4); - ids[0] = 0; - ids[1] = 1; - ////// Wrong id here !!! - ids[2] = 6; - ids[3] = 3; - bool[] memory isApproveds = new bool[](4); - isApproveds[0] = true; - isApproveds[1] = true; - isApproveds[2] = true; - isApproveds[3] = false; - // Act - vm.prank(CONDITIONAL_TRANSFER_OPERATOR_ADDRESS); - vm.expectRevert(RuleConditionalTransfer_InvalidId.selector); - ruleConditionalTransfer.approveTransferRequestBatchWithId( - ids, - isApproveds - ); - } - - function testCannotApproveRequestInBatchCreatedByHolderIfTimeExceed() - public - { - _createTransferRequestBatch(); - // Jump - vm.warp(block.timestamp + 604801); - uint256[] memory ids = new uint256[](4); - ids[0] = 0; - ids[1] = 1; - ids[2] = 2; - ids[3] = 3; - bool[] memory isApproveds = new bool[](4); - isApproveds[0] = true; - isApproveds[1] = true; - isApproveds[2] = true; - isApproveds[3] = false; - // Act - vm.prank(CONDITIONAL_TRANSFER_OPERATOR_ADDRESS); - vm.expectRevert(RuleConditionalTransfer_timeExceeded.selector); - ruleConditionalTransfer.approveTransferRequestBatchWithId( - ids, - isApproveds - ); - } - - function testCannotApproveOrDeniedRequestCreatedByHolderWithWrongId() - public - { - // Arrange - _createTransferRequest(); - - // Act - // Approve - vm.prank(CONDITIONAL_TRANSFER_OPERATOR_ADDRESS); - vm.expectRevert(RuleConditionalTransfer_InvalidId.selector); - ruleConditionalTransfer.approveTransferRequestWithId(1, true); - // Denied - vm.prank(CONDITIONAL_TRANSFER_OPERATOR_ADDRESS); - vm.expectRevert(RuleConditionalTransfer_InvalidId.selector); - ruleConditionalTransfer.approveTransferRequestWithId(1, false); - } - - function testCanDeniedRequestCreatedByHolderWithId() public { - // Arrange - _createTransferRequest(); - // can still approve - vm.warp(block.timestamp + 1); - - // Act - vm.prank(CONDITIONAL_TRANSFER_OPERATOR_ADDRESS); - vm.expectEmit(true, true, true, true); - emit transferDenied(defaultKey, ADDRESS1, ADDRESS2, defaultValue, 0); - ruleConditionalTransfer.approveTransferRequestWithId(0, false); - - // Assert - TransferRequest memory transferRequest = ruleConditionalTransfer - .getRequestTrade(ADDRESS1, ADDRESS2, defaultValue); - assertEq(transferRequest.key, defaultKey); - assertEq(transferRequest.id, 0); - assertEq(transferRequest.keyElement.from, ADDRESS1); - assertEq(transferRequest.keyElement.to, ADDRESS2); - assertEq(transferRequest.keyElement.value, defaultValue); - assertEq(uint256(transferRequest.status), uint256(STATUS.DENIED)); - } - - /***** with key ******/ - function testCanDeniedRequestCreatedByHolder() public { - // Arrange - _createTransferRequest(); - - // Act - vm.prank(CONDITIONAL_TRANSFER_OPERATOR_ADDRESS); - vm.expectEmit(true, true, true, true); - emit transferDenied(defaultKey, ADDRESS1, ADDRESS2, defaultValue, 0); - ruleConditionalTransfer.approveTransferRequest( - transferRequestInput, - 0, - false - ); - - // Assert - TransferRequest memory transferRequest = ruleConditionalTransfer - .getRequestTrade(ADDRESS1, ADDRESS2, defaultValue); - assertEq(transferRequest.key, defaultKey); - assertEq(transferRequest.id, 0); - assertEq(transferRequest.keyElement.from, ADDRESS1); - assertEq(transferRequest.keyElement.to, ADDRESS2); - assertEq(transferRequest.keyElement.value, defaultValue); - assertEq(uint256(transferRequest.status), uint256(STATUS.DENIED)); - - TransferRequest[] memory transferRequests = ruleConditionalTransfer - .getRequestByStatus(STATUS.DENIED); - assertEq(transferRequests[0].key, defaultKey); - assertEq(transferRequests.length, 1); - } - - function testCannotHolderCreateRequestIfDenied() public { - // Arrange - _createTransferRequest(); - vm.prank(CONDITIONAL_TRANSFER_OPERATOR_ADDRESS); - vm.expectEmit(true, true, true, true); - emit transferDenied(defaultKey, ADDRESS1, ADDRESS2, defaultValue, 0); - ruleConditionalTransfer.approveTransferRequest( - transferRequestInput, - 0, - false - ); - - // Act - vm.prank(ADDRESS1); - vm.expectRevert(RuleConditionalTransfer_TransferDenied.selector); - ruleConditionalTransfer.createTransferRequest(ADDRESS2, defaultValue); - } - - /****** Getter *****/ - function testCanReturnTradeByStatus() public { - // Arrange - // First request - _createTransferRequest(); - - // Change the status request to APPROVE - vm.prank(CONDITIONAL_TRANSFER_OPERATOR_ADDRESS); - vm.expectEmit(true, true, true, true); - emit transferDenied(defaultKey, ADDRESS1, ADDRESS2, defaultValue, 0); - ruleConditionalTransfer.approveTransferRequest( - transferRequestInput, - 0, - false - ); - - // Second request - uint256 value = 100; - vm.prank(ADDRESS1); - ruleConditionalTransfer.createTransferRequest(ADDRESS2, value); - - // Act - TransferRequest[] memory transferRequest = ruleConditionalTransfer - .getRequestByStatus(STATUS.WAIT); - // Assert - assertEq(transferRequest.length, 1); - bytes32 key = keccak256(abi.encode(ADDRESS1, ADDRESS2, value)); - assertEq(transferRequest[0].key, key); - assertEq(transferRequest[0].id, 1); - assertEq(transferRequest[0].keyElement.from, ADDRESS1); - assertEq(transferRequest[0].keyElement.to, ADDRESS2); - assertEq(transferRequest[0].keyElement.value, value); - assertEq(uint256(transferRequest[0].status), uint256(STATUS.WAIT)); - - // third request - uint256 valueThird = 200; - vm.prank(ADDRESS1); - ruleConditionalTransfer.createTransferRequest(ADDRESS2, valueThird); - - // Act - transferRequest = ruleConditionalTransfer.getRequestByStatus( - STATUS.WAIT - ); - // Assert - assertEq(transferRequest.length, 2); - bytes32 keyThird = keccak256( - abi.encode(ADDRESS1, ADDRESS2, valueThird) - ); - assertEq(transferRequest[1].key, keyThird); - assertEq(transferRequest[1].id, 2); - assertEq(transferRequest[1].keyElement.from, ADDRESS1); - assertEq(transferRequest[1].keyElement.to, ADDRESS2); - assertEq(transferRequest[1].keyElement.value, valueThird); - assertEq(uint256(transferRequest[1].status), uint256(STATUS.WAIT)); - } - - function testCannotApproveRequestIfTimeExceeded() public { - // Arrange - _createTransferRequest(); - - // Timeout - // 7 days *24*60*60 = 604800 seconds - vm.warp(block.timestamp + 604801); - // Act - vm.prank(CONDITIONAL_TRANSFER_OPERATOR_ADDRESS); - vm.expectRevert(RuleConditionalTransfer_timeExceeded.selector); - ruleConditionalTransfer.approveTransferRequest( - transferRequestInput, - 0, - true - ); - } - - /*** Edge case ******/ - - function testCannotApproveRequestIfWrongStatus() public { - // Arrange - // No create request - - // Timeout - // 7 days *24*60*60 = 604800 seconds - vm.warp(block.timestamp + 604801); - // Act - vm.prank(CONDITIONAL_TRANSFER_OPERATOR_ADDRESS); - vm.expectRevert(RuleConditionalTransfer_Wrong_Status.selector); - ruleConditionalTransfer.approveTransferRequest( - transferRequestInput, - 0, - true - ); - } - - function testCanSetTimeLimitWithTransferApprovalExceeded() public { - TIME_LIMIT memory timeLimit_ = TIME_LIMIT({ - timeLimitToApprove: 1 days, - timeLimitToTransfer: 1 days - }); - // Arrange - _createTransferRequest(); - - // Act - vm.prank(CONDITIONAL_TRANSFER_OPERATOR_ADDRESS); - ruleConditionalTransfer.setTimeLimit(timeLimit_); - - // Assert - // Timeout - // >1 days - vm.warp(block.timestamp + 1 days + 1 seconds); - - vm.prank(CONDITIONAL_TRANSFER_OPERATOR_ADDRESS); - vm.expectRevert(RuleConditionalTransfer_timeExceeded.selector); - ruleConditionalTransfer.approveTransferRequest( - transferRequestInput, - 0, - true - ); - } -} diff --git a/test/RuleConditionalTransfer/RuleConditionalTransferAccessControl.t.sol b/test/RuleConditionalTransfer/RuleConditionalTransferAccessControl.t.sol deleted file mode 100644 index 07cf3dd..0000000 --- a/test/RuleConditionalTransfer/RuleConditionalTransferAccessControl.t.sol +++ /dev/null @@ -1,247 +0,0 @@ -// SPDX-License-Identifier: MPL-2.0 -pragma solidity ^0.8.20; - -import "forge-std/Test.sol"; -import "../HelperContract.sol"; -import "src/RuleEngine.sol"; -import "./utils/RuleCTDeployment.sol"; - -/** - * @title Tests on the Access Control - */ -contract RuleConditionalTransferAccessControl is Test, HelperContract { - // Custom error openZeppelin - error AccessControlUnauthorizedAccount(address account, bytes32 neededRole); - uint256 defaultValue = 10; - bytes32 defaultKey = - keccak256(abi.encode(ADDRESS1, ADDRESS2, defaultValue)); - - TransferRequestKeyElement transferRequestInput = - TransferRequestKeyElement({ - from: ADDRESS1, - to: ADDRESS2, - value: defaultValue - }); - RuleCTDeployment ruleCTDeployment; - - // Arrange - function setUp() public { - ruleCTDeployment = new RuleCTDeployment(); - ruleEngineMock = ruleCTDeployment.ruleEngineMock(); - ruleConditionalTransfer = ruleCTDeployment.ruleConditionalTransfer(); - } - - function _createTransferRequest() internal { - vm.prank(ADDRESS1); - // Act - vm.expectEmit(true, true, true, true); - emit transferWaiting(defaultKey, ADDRESS1, ADDRESS2, defaultValue, 0); - ruleConditionalTransfer.createTransferRequest(ADDRESS2, defaultValue); - } - - function testCannotAttackerApproveARequestCreatedByTokenHolder() public { - _createTransferRequest(); - - vm.expectRevert( - abi.encodeWithSelector( - AccessControlUnauthorizedAccount.selector, - ATTACKER, - RULE_CONDITIONAL_TRANSFER_OPERATOR_ROLE - ) - ); - vm.prank(ATTACKER); - ruleConditionalTransfer.approveTransferRequest( - transferRequestInput, - 0, - true - ); - } - - function testCannotAttackerApproveWithIdARequestCreatedByTokenHolder() - public - { - _createTransferRequest(); - - vm.expectRevert( - abi.encodeWithSelector( - AccessControlUnauthorizedAccount.selector, - ATTACKER, - RULE_CONDITIONAL_TRANSFER_OPERATOR_ROLE - ) - ); - vm.prank(ATTACKER); - ruleConditionalTransfer.approveTransferRequestWithId(0, true); - } - - function testCannotAttackerResetARequest() public { - _createTransferRequest(); - - vm.expectRevert( - abi.encodeWithSelector( - AccessControlUnauthorizedAccount.selector, - ATTACKER, - RULE_CONDITIONAL_TRANSFER_OPERATOR_ROLE - ) - ); - vm.prank(ATTACKER); - ruleConditionalTransfer.resetRequestStatus(0); - } - - function testCannotAttackerCreateTransferRequestWithApproval() public { - vm.expectRevert( - abi.encodeWithSelector( - AccessControlUnauthorizedAccount.selector, - ATTACKER, - RULE_CONDITIONAL_TRANSFER_OPERATOR_ROLE - ) - ); - vm.prank(ATTACKER); - ruleConditionalTransfer.createTransferRequestWithApproval( - transferRequestInput - ); - } - - /*** Batch */ - - function testCannotAttackerApproveBatchWithIdARequestCreatedByTokenHolder() - public - { - _createTransferRequest(); - uint256[] memory ids = new uint256[](1); - ids[0] = 0; - bool[] memory isApproveds = new bool[](1); - isApproveds[0] = true; - vm.expectRevert( - abi.encodeWithSelector( - AccessControlUnauthorizedAccount.selector, - ATTACKER, - RULE_CONDITIONAL_TRANSFER_OPERATOR_ROLE - ) - ); - vm.prank(ATTACKER); - ruleConditionalTransfer.approveTransferRequestBatchWithId( - ids, - isApproveds - ); - } - - function testCannotAttackerApproveBatchRequestCreatedByTokenHolder() - public - { - TransferRequestKeyElement[] - memory keyElements = new TransferRequestKeyElement[](0); - uint256[] memory partialValues = new uint256[](0); - bool[] memory boolIsApproved = new bool[](0); - vm.expectRevert( - abi.encodeWithSelector( - AccessControlUnauthorizedAccount.selector, - ATTACKER, - RULE_CONDITIONAL_TRANSFER_OPERATOR_ROLE - ) - ); - vm.prank(ATTACKER); - ruleConditionalTransfer.approveTransferRequestBatch( - keyElements, - partialValues, - boolIsApproved - ); - } - - function testCannotAttackerResetBatch() public { - uint256[] memory ids = new uint256[](0); - bool[] memory boolIsApproved = new bool[](0); - vm.expectRevert( - abi.encodeWithSelector( - AccessControlUnauthorizedAccount.selector, - ATTACKER, - RULE_CONDITIONAL_TRANSFER_OPERATOR_ROLE - ) - ); - vm.prank(ATTACKER); - ruleConditionalTransfer.approveTransferRequestBatchWithId( - ids, - boolIsApproved - ); - } - - function testCannotAttackerCreateTransferRequestWithApprovalBatch() public { - TransferRequestKeyElement[] - memory keyElements = new TransferRequestKeyElement[](0); - vm.expectRevert( - abi.encodeWithSelector( - AccessControlUnauthorizedAccount.selector, - ATTACKER, - RULE_CONDITIONAL_TRANSFER_OPERATOR_ROLE - ) - ); - vm.prank(ATTACKER); - ruleConditionalTransfer.createTransferRequestWithApprovalBatch( - keyElements - ); - } - - /******** OPTIONS CONFIGURATION *********/ - function testCannotAttackerSetTimeLimit() public { - TIME_LIMIT memory timeLimit_ = TIME_LIMIT({ - timeLimitToApprove: 7 days, - timeLimitToTransfer: 200 days - }); - vm.expectRevert( - abi.encodeWithSelector( - AccessControlUnauthorizedAccount.selector, - ATTACKER, - RULE_CONDITIONAL_TRANSFER_OPERATOR_ROLE - ) - ); - vm.prank(ATTACKER); - ruleConditionalTransfer.setTimeLimit(timeLimit_); - } - - function testCannotAttackerSetAutomaticTransfer() public { - AUTOMATIC_TRANSFER memory automaticTransfer_ = AUTOMATIC_TRANSFER({ - isActivate: false, - cmtat: IERC20(address(0)) - }); - vm.expectRevert( - abi.encodeWithSelector( - AccessControlUnauthorizedAccount.selector, - ATTACKER, - RULE_CONDITIONAL_TRANSFER_OPERATOR_ROLE - ) - ); - vm.prank(ATTACKER); - ruleConditionalTransfer.setAutomaticTransfer(automaticTransfer_); - } - - function testCannotAttackerSetIssuanceOptions() public { - ISSUANCE memory issuanceOption_ = ISSUANCE({ - authorizedMintWithoutApproval: false, - authorizedBurnWithoutApproval: false - }); - vm.expectRevert( - abi.encodeWithSelector( - AccessControlUnauthorizedAccount.selector, - ATTACKER, - RULE_CONDITIONAL_TRANSFER_OPERATOR_ROLE - ) - ); - vm.prank(ATTACKER); - ruleConditionalTransfer.setIssuanceOptions(issuanceOption_); - } - - function testCannotAttackerSetAuomaticApproval() public { - AUTOMATIC_APPROVAL memory automaticApproval_ = AUTOMATIC_APPROVAL({ - isActivate: false, - timeLimitBeforeAutomaticApproval: 0 - }); - vm.expectRevert( - abi.encodeWithSelector( - AccessControlUnauthorizedAccount.selector, - ATTACKER, - RULE_CONDITIONAL_TRANSFER_OPERATOR_ROLE - ) - ); - vm.prank(ATTACKER); - ruleConditionalTransfer.setAutomaticApproval(automaticApproval_); - } -} diff --git a/test/RuleConditionalTransfer/RuleConditionalTransferDeployment.t.sol b/test/RuleConditionalTransfer/RuleConditionalTransferDeployment.t.sol deleted file mode 100644 index fa6cf9f..0000000 --- a/test/RuleConditionalTransfer/RuleConditionalTransferDeployment.t.sol +++ /dev/null @@ -1,81 +0,0 @@ -// SPDX-License-Identifier: MPL-2.0 -pragma solidity ^0.8.20; - -import "forge-std/Test.sol"; -import "../HelperContract.sol"; -import "src/RuleEngine.sol"; -import "./utils/RuleCTDeployment.sol"; - -/** - * @title General functions of the RuleWhitelist - */ -contract RuleConditionalTransferDeploymentTest is Test, HelperContract { - RuleCTDeployment ruleCTDeployment; - - // Arrange - function setUp() public {} - - function testSetMaxLimitIfZeroForAutomaticApprovalAndAutomaticTransfer() - public - { - TIME_LIMIT memory timeLimit_ = TIME_LIMIT({ - timeLimitToApprove: 7 days, - timeLimitToTransfer: 30 days - }); - - AUTOMATIC_APPROVAL memory automaticApproval_ = AUTOMATIC_APPROVAL({ - isActivate: false, - timeLimitBeforeAutomaticApproval: 0 - }); - - ISSUANCE memory issuanceOption_ = ISSUANCE({ - authorizedMintWithoutApproval: false, - authorizedBurnWithoutApproval: false - }); - AUTOMATIC_TRANSFER memory automaticTransfer_ = AUTOMATIC_TRANSFER({ - isActivate: false, - cmtat: IERC20(address(0)) - }); - - OPTION memory options = OPTION({ - issuance: issuanceOption_, - timeLimit: timeLimit_, - automaticApproval: automaticApproval_, - automaticTransfer: automaticTransfer_ - }); - ruleEngineMock = new RuleEngine( - RULE_ENGINE_OPERATOR_ADDRESS, - ZERO_ADDRESS, - ZERO_ADDRESS - ); - // Test 1 - vm.prank(DEFAULT_ADMIN_ADDRESS); - vm.expectRevert( - abi.encodeWithSelector( - RuleConditionalTransfer_AdminWithAddressZeroNotAllowed.selector - ) - ); - ruleConditionalTransfer = new RuleConditionalTransfer( - ZERO_ADDRESS, - ZERO_ADDRESS, - ruleEngineMock, - options - ); - - // Test 2 - ruleCTDeployment = new RuleCTDeployment(); - ruleConditionalTransfer = ruleCTDeployment.ruleConditionalTransfer(); - ISSUANCE memory issuance; - TIME_LIMIT memory timeLimit; - AUTOMATIC_APPROVAL memory automaticApproval; - AUTOMATIC_TRANSFER memory automaticTransfer; - ( - issuance, - timeLimit, - automaticApproval, - automaticTransfer - ) = ruleConditionalTransfer.options(); - assertEq(timeLimit.timeLimitToApprove, 7 days); - assertEq(timeLimit.timeLimitToTransfer, 30 days); - } -} diff --git a/test/RuleConditionalTransfer/RuleConditionalTransferReset.t.sol b/test/RuleConditionalTransfer/RuleConditionalTransferReset.t.sol deleted file mode 100644 index 7b6404f..0000000 --- a/test/RuleConditionalTransfer/RuleConditionalTransferReset.t.sol +++ /dev/null @@ -1,441 +0,0 @@ -// SPDX-License-Identifier: MPL-2.0 -pragma solidity ^0.8.20; - -import "forge-std/Test.sol"; -import "../HelperContract.sol"; -import "src/RuleEngine.sol"; -import "OZ/token/ERC20/IERC20.sol"; -/** - * @title General functions of the RuleWhitelist - */ -contract RuleConditionalTransferResetTest is Test, HelperContract { - uint256 defaultValue = 10; - bytes32 defaultKey = - keccak256(abi.encode(ADDRESS1, ADDRESS2, defaultValue)); - - TransferRequestKeyElement transferRequestInput = - TransferRequestKeyElement({ - from: ADDRESS1, - to: ADDRESS2, - value: defaultValue - }); - - uint256 value2 = 1; - uint256 value3 = 2; - uint256 value4 = 1000; - uint256 value5 = 2000; - bytes32 key2 = keccak256(abi.encode(ADDRESS1, ADDRESS2, value2)); - bytes32 key3 = keccak256(abi.encode(ADDRESS2, ADDRESS1, value3)); - bytes32 key3Hodler = keccak256(abi.encode(ADDRESS1, ADDRESS2, value3)); - bytes32 key4 = keccak256(abi.encode(ADDRESS1, ADDRESS2, value4)); - bytes32 key5 = keccak256(abi.encode(ADDRESS1, ADDRESS2, value5)); - - TransferRequestKeyElement transferRequestInput2 = - TransferRequestKeyElement({ - from: ADDRESS1, - to: ADDRESS2, - value: value2 - }); - - TransferRequestKeyElement transferRequestInput3 = - TransferRequestKeyElement({ - from: ADDRESS2, - to: ADDRESS1, - value: value3 - }); - - // Arrange - function setUp() public { - TIME_LIMIT memory timeLimit_ = TIME_LIMIT({ - timeLimitToApprove: 7 days, - timeLimitToTransfer: 30 days - }); - - AUTOMATIC_APPROVAL memory automaticApproval_ = AUTOMATIC_APPROVAL({ - isActivate: false, - timeLimitBeforeAutomaticApproval: 0 - }); - - ISSUANCE memory issuanceOption_ = ISSUANCE({ - authorizedMintWithoutApproval: false, - authorizedBurnWithoutApproval: false - }); - AUTOMATIC_TRANSFER memory automaticTransfer_ = AUTOMATIC_TRANSFER({ - isActivate: false, - cmtat: IERC20(address(0)) - }); - - OPTION memory options = OPTION({ - issuance: issuanceOption_, - timeLimit: timeLimit_, - automaticApproval: automaticApproval_, - automaticTransfer: automaticTransfer_ - }); - ruleEngineMock = new RuleEngine( - RULE_ENGINE_OPERATOR_ADDRESS, - ZERO_ADDRESS, - ZERO_ADDRESS - ); - vm.prank(DEFAULT_ADMIN_ADDRESS); - ruleConditionalTransfer = new RuleConditionalTransfer( - DEFAULT_ADMIN_ADDRESS, - ZERO_ADDRESS, - ruleEngineMock, - options - ); - vm.prank(DEFAULT_ADMIN_ADDRESS); - ruleConditionalTransfer.grantRole( - RULE_CONDITIONAL_TRANSFER_OPERATOR_ROLE, - CONDITIONAL_TRANSFER_OPERATOR_ADDRESS - ); - } - - function _createTransferRequestBatch() public { - // Arrange - _createTransferRequest(); - - // Second and third request - vm.prank(ADDRESS1); - ruleConditionalTransfer.createTransferRequest(ADDRESS2, value2); - vm.prank(ADDRESS2); - ruleConditionalTransfer.createTransferRequest(ADDRESS1, value3); - } - - function _createTransferRequestBatchByHodler() public { - // Arrange - _createTransferRequest(); - - // Second and third request - vm.prank(ADDRESS1); - ruleConditionalTransfer.createTransferRequest(ADDRESS2, value2); - vm.prank(ADDRESS1); - ruleConditionalTransfer.createTransferRequest(ADDRESS2, value3); - } - - function _createTransferRequest() internal { - vm.prank(ADDRESS1); - // Act - vm.expectEmit(true, true, true, true); - emit transferWaiting(defaultKey, ADDRESS1, ADDRESS2, defaultValue, 0); - ruleConditionalTransfer.createTransferRequest(ADDRESS2, defaultValue); - - // Assert - TransferRequest memory transferRequest = ruleConditionalTransfer - .getRequestTrade(ADDRESS1, ADDRESS2, defaultValue); - assertEq(transferRequest.key, defaultKey); - assertEq(transferRequest.id, 0); - assertEq(transferRequest.keyElement.from, ADDRESS1); - assertEq(transferRequest.keyElement.to, ADDRESS2); - assertEq(transferRequest.keyElement.value, defaultValue); - assertEq(uint256(transferRequest.status), uint256(STATUS.WAIT)); - - TransferRequest[] memory transferRequests = ruleConditionalTransfer - .getRequestByStatus(STATUS.WAIT); - assertEq(transferRequests[0].key, defaultKey); - assertEq(transferRequests.length, 1); - } - - /***** Reset ********/ - - function testHolderCanResetHisRequest() public { - // Arrange - _createTransferRequest(); - - // Act - // Reset - vm.prank(ADDRESS1); - vm.expectEmit(true, true, true, true); - emit transferReset(defaultKey, ADDRESS1, ADDRESS2, defaultValue, 0); - ruleConditionalTransfer.cancelTransferRequest(0); - - // Arrange - // Second request with approval - vm.prank(ADDRESS1); - ruleConditionalTransfer.createTransferRequest(ADDRESS2, defaultValue); - vm.prank(CONDITIONAL_TRANSFER_OPERATOR_ADDRESS); - ruleConditionalTransfer.approveTransferRequest( - transferRequestInput, - 0, - true - ); - - // Reset - vm.prank(ADDRESS1); - vm.expectEmit(true, true, true, true); - emit transferReset(defaultKey, ADDRESS1, ADDRESS2, defaultValue, 0); - ruleConditionalTransfer.cancelTransferRequest(0); - - // Can create a new request - // Id different from 0 - vm.prank(ADDRESS1); - // Act - vm.expectEmit(true, true, true, true); - emit transferWaiting(key2, ADDRESS1, ADDRESS2, value2, 1); - ruleConditionalTransfer.createTransferRequest(ADDRESS2, value2); - - // Can be cancel again - vm.prank(ADDRESS1); - vm.expectEmit(true, true, true, true); - emit transferReset(key2, ADDRESS1, ADDRESS2, value2, 1); - ruleConditionalTransfer.cancelTransferRequest(1); - } - - function testHolderCanBatchResetHisRequest() public { - // Arrange - _createTransferRequestBatchByHodler(); - uint256[] memory ids = new uint256[](3); - ids[0] = 0; - ids[1] = 1; - ids[2] = 2; - // Act - // Reset - vm.prank(ADDRESS1); - vm.expectEmit(true, true, true, true); - emit transferReset(defaultKey, ADDRESS1, ADDRESS2, defaultValue, 0); - vm.expectEmit(true, true, true, true); - emit transferReset(key2, ADDRESS1, ADDRESS2, value2, 1); - vm.expectEmit(true, true, true, true); - emit transferReset(key3Hodler, ADDRESS1, ADDRESS2, value3, 2); - ruleConditionalTransfer.cancelTransferRequestBatch(ids); - } - - function testHolderCannotBatchResetHisRequestWithWrongId() public { - // Arrange - _createTransferRequestBatchByHodler(); - uint256[] memory ids = new uint256[](3); - ids[0] = 0; - ids[1] = 4; - ids[2] = 2; - // Act - // Reset - vm.prank(ADDRESS1); - vm.expectRevert(RuleConditionalTransfer_InvalidId.selector); - ruleConditionalTransfer.cancelTransferRequestBatch(ids); - } - - function testHolderCannotBatchResetHisRequestWithEmptyArray() public { - // Arrange - _createTransferRequestBatchByHodler(); - uint256[] memory ids = new uint256[](0); - // Act - // Reset - vm.prank(ADDRESS1); - vm.expectRevert(RuleConditionalTransfer_EmptyArray.selector); - ruleConditionalTransfer.cancelTransferRequestBatch(ids); - } - - function testHolderCannotResetRequestCreatedByOther() public { - // Arrange - _createTransferRequest(); - - // Act - // Reset - vm.prank(ADDRESS2); - vm.expectRevert(RuleConditionalTransfer_InvalidSender.selector); - ruleConditionalTransfer.cancelTransferRequest(0); - } - - function testCannotHolderResetRequestWithWrongId() public { - // Arrange - _createTransferRequest(); - - // Act - // Reset - vm.prank(ADDRESS1); - vm.expectRevert(RuleConditionalTransfer_InvalidId.selector); - ruleConditionalTransfer.cancelTransferRequest(1); - } - - function testCannotHolderResetRequestWithWrongStatus() public { - // Arrange - _createTransferRequest(); - - // Denied - vm.prank(CONDITIONAL_TRANSFER_OPERATOR_ADDRESS); - ruleConditionalTransfer.approveTransferRequest( - transferRequestInput, - 0, - false - ); - - // Act - // Reset - vm.prank(ADDRESS1); - vm.expectRevert(RuleConditionalTransfer_Wrong_Status.selector); - ruleConditionalTransfer.cancelTransferRequest(0); - } - - /***** Reset */ - - function testCanResetADeniedRequestCreatedByHolder() public { - // Arrange - _createTransferRequest(); - - vm.prank(CONDITIONAL_TRANSFER_OPERATOR_ADDRESS); - vm.expectEmit(true, true, true, true); - emit transferDenied(defaultKey, ADDRESS1, ADDRESS2, defaultValue, 0); - ruleConditionalTransfer.approveTransferRequest( - transferRequestInput, - 0, - false - ); - - // Act - vm.prank(CONDITIONAL_TRANSFER_OPERATOR_ADDRESS); - vm.expectEmit(true, true, true, true); - emit transferReset(defaultKey, ADDRESS1, ADDRESS2, defaultValue, 0); - ruleConditionalTransfer.resetRequestStatus(0); - - // Assert - TransferRequest memory transferRequest = ruleConditionalTransfer - .getRequestTrade(ADDRESS1, ADDRESS2, defaultValue); - assertEq(transferRequest.key, defaultKey); - assertEq(transferRequest.id, 0); - assertEq(transferRequest.keyElement.from, ADDRESS1); - assertEq(transferRequest.keyElement.to, ADDRESS2); - assertEq(transferRequest.keyElement.value, defaultValue); - assertEq(uint256(transferRequest.status), uint256(STATUS.NONE)); - - // Assert - vm.prank(ADDRESS1); - // Act - vm.expectEmit(true, true, true, true); - emit transferWaiting(defaultKey, ADDRESS1, ADDRESS2, defaultValue, 0); - ruleConditionalTransfer.createTransferRequest(ADDRESS2, defaultValue); - - // Assert - transferRequest = ruleConditionalTransfer.getRequestTrade( - ADDRESS1, - ADDRESS2, - defaultValue - ); - assertEq(transferRequest.key, defaultKey); - assertEq(transferRequest.id, 0); - assertEq(transferRequest.keyElement.from, ADDRESS1); - assertEq(transferRequest.keyElement.to, ADDRESS2); - assertEq(transferRequest.keyElement.value, defaultValue); - assertEq(uint256(transferRequest.status), uint256(STATUS.WAIT)); - - // Id different from 0 - vm.prank(ADDRESS1); - // Act - vm.expectEmit(true, true, true, true); - emit transferWaiting(key2, ADDRESS1, ADDRESS2, value2, 1); - ruleConditionalTransfer.createTransferRequest(ADDRESS2, value2); - } - - function testCanBatchResetADeniedRequestCreatedByHolder() public { - // Arrange - _createTransferRequestBatchByHodler(); - uint256[] memory ids = new uint256[](3); - ids[0] = 0; - ids[1] = 1; - ids[2] = 2; - - vm.prank(CONDITIONAL_TRANSFER_OPERATOR_ADDRESS); - vm.expectEmit(true, true, true, true); - emit transferDenied(defaultKey, ADDRESS1, ADDRESS2, defaultValue, 0); - ruleConditionalTransfer.approveTransferRequest( - transferRequestInput, - 0, - false - ); - - // Act - vm.prank(CONDITIONAL_TRANSFER_OPERATOR_ADDRESS); - vm.expectEmit(true, true, true, true); - emit transferReset(defaultKey, ADDRESS1, ADDRESS2, defaultValue, 0); - vm.expectEmit(true, true, true, true); - emit transferReset(key2, ADDRESS1, ADDRESS2, value2, 1); - vm.expectEmit(true, true, true, true); - emit transferReset(key3Hodler, ADDRESS1, ADDRESS2, value3, 2); - ruleConditionalTransfer.resetRequestStatusBatch(ids); - - // Assert - TransferRequest memory transferRequest = ruleConditionalTransfer - .getRequestTrade(ADDRESS1, ADDRESS2, defaultValue); - assertEq(transferRequest.key, defaultKey); - assertEq(transferRequest.id, 0); - assertEq(transferRequest.keyElement.from, ADDRESS1); - assertEq(transferRequest.keyElement.to, ADDRESS2); - assertEq(transferRequest.keyElement.value, defaultValue); - assertEq(uint256(transferRequest.status), uint256(STATUS.NONE)); - - transferRequest = ruleConditionalTransfer.getRequestTrade( - ADDRESS1, - ADDRESS2, - value2 - ); - assertEq(transferRequest.key, key2); - assertEq(transferRequest.id, 1); - assertEq(transferRequest.keyElement.from, ADDRESS1); - assertEq(transferRequest.keyElement.to, ADDRESS2); - assertEq(transferRequest.keyElement.value, value2); - assertEq(uint256(transferRequest.status), uint256(STATUS.NONE)); - - transferRequest = ruleConditionalTransfer.getRequestTrade( - ADDRESS1, - ADDRESS2, - value3 - ); - assertEq(transferRequest.key, key3Hodler); - assertEq(transferRequest.id, 2); - assertEq(transferRequest.keyElement.from, ADDRESS1); - assertEq(transferRequest.keyElement.to, ADDRESS2); - assertEq(transferRequest.keyElement.value, value3); - assertEq(uint256(transferRequest.status), uint256(STATUS.NONE)); - } - - function testCannotBatchResetADeniedRequestCreatedByHolderWithWrongId() - public - { - // Arrange - _createTransferRequestBatchByHodler(); - uint256[] memory ids = new uint256[](3); - ids[0] = 3; - ids[1] = 1; - ids[2] = 2; - - vm.prank(CONDITIONAL_TRANSFER_OPERATOR_ADDRESS); - vm.expectEmit(true, true, true, true); - emit transferDenied(defaultKey, ADDRESS1, ADDRESS2, defaultValue, 0); - ruleConditionalTransfer.approveTransferRequest( - transferRequestInput, - 0, - false - ); - - // Act - vm.prank(CONDITIONAL_TRANSFER_OPERATOR_ADDRESS); - vm.expectRevert(RuleConditionalTransfer_InvalidId.selector); - ruleConditionalTransfer.resetRequestStatusBatch(ids); - } - - function testCannotBatchResetADeniedRequestCreatedByHolderWithEmptyArray() - public - { - // Arrange - _createTransferRequestBatchByHodler(); - uint256[] memory ids = new uint256[](0); - vm.prank(CONDITIONAL_TRANSFER_OPERATOR_ADDRESS); - vm.expectEmit(true, true, true, true); - emit transferDenied(defaultKey, ADDRESS1, ADDRESS2, defaultValue, 0); - ruleConditionalTransfer.approveTransferRequest( - transferRequestInput, - 0, - false - ); - - // Act - vm.prank(CONDITIONAL_TRANSFER_OPERATOR_ADDRESS); - vm.expectRevert(RuleConditionalTransfer_EmptyArray.selector); - ruleConditionalTransfer.resetRequestStatusBatch(ids); - } - - function testCannotResetARequestIfWrongId() public { - // Act - vm.prank(CONDITIONAL_TRANSFER_OPERATOR_ADDRESS); - vm.expectRevert(RuleConditionalTransfer_InvalidId.selector); - ruleConditionalTransfer.resetRequestStatus(10); - } -} diff --git a/test/RuleConditionalTransfer/RuleConditionalTransferRestriction.t.sol b/test/RuleConditionalTransfer/RuleConditionalTransferRestriction.t.sol deleted file mode 100644 index e08b17c..0000000 --- a/test/RuleConditionalTransfer/RuleConditionalTransferRestriction.t.sol +++ /dev/null @@ -1,118 +0,0 @@ -// SPDX-License-Identifier: MPL-2.0 -pragma solidity ^0.8.20; - -import "forge-std/Test.sol"; -import "../HelperContract.sol"; -import "src/RuleEngine.sol"; -import "OZ/token/ERC20/IERC20.sol"; -//ADmin, forwarder irrect /RuleEngine -/** - * @title General functions of the RuleEngine - */ -contract RuleEngineOperationTest is Test, HelperContract { - uint256 defaultValue = 20; - - TIME_LIMIT timeLimit_ = - TIME_LIMIT({ - timeLimitToApprove: DEFAULT_TIME_LIMIT_TO_APPROVE, - timeLimitToTransfer: DEFAULT_TIME_LIMIT_TO_TRANSFER - }); - ISSUANCE issuanceOption_ = - ISSUANCE({ - authorizedMintWithoutApproval: false, - authorizedBurnWithoutApproval: false - }); - - AUTOMATIC_APPROVAL automaticApproval_ = - AUTOMATIC_APPROVAL({ - isActivate: false, - timeLimitBeforeAutomaticApproval: 0 - }); - AUTOMATIC_TRANSFER automaticTransfer_ = - AUTOMATIC_TRANSFER({isActivate: false, cmtat: IERC20(address(0))}); - OPTION options = - OPTION({ - issuance: issuanceOption_, - timeLimit: timeLimit_, - automaticApproval: automaticApproval_, - automaticTransfer: automaticTransfer_ - }); - - TransferRequestKeyElement transferRequestInput = - TransferRequestKeyElement({ - from: ADDRESS1, - to: ADDRESS2, - value: defaultValue - }); - - // Arrange - function setUp() public { - ruleConditionalTransfer = new RuleConditionalTransfer( - CONDITIONAL_TRANSFER_OPERATOR_ADDRESS, - ZERO_ADDRESS, - ruleEngineMock, - options - ); - } - - function testCanDetectTransferRestrictionOK() public { - // Arrange - Assert - resUint8 = ruleConditionalTransfer.detectTransferRestriction( - ADDRESS1, - ADDRESS2, - defaultValue - ); - - // Assert - assertEq(resUint8, CODE_TRANSFER_REQUEST_NOT_APPROVED); - // Arrange - vm.prank(CONDITIONAL_TRANSFER_OPERATOR_ADDRESS); - bytes32 key = keccak256(abi.encode(ADDRESS1, ADDRESS2, defaultValue)); - vm.expectEmit(true, true, true, true); - emit transferApproved(key, ADDRESS1, ADDRESS2, defaultValue, 0); - ruleConditionalTransfer.createTransferRequestWithApproval( - transferRequestInput - ); - // Act - resUint8 = ruleConditionalTransfer.detectTransferRestriction( - ADDRESS1, - ADDRESS2, - defaultValue - ); - - // Assert - assertEq(resUint8, 0); - } - - function testCanDetectTransferRestrictionNotOk() public { - // Act - resUint8 = ruleConditionalTransfer.detectTransferRestriction( - ADDRESS1, - ADDRESS2, - 20 - ); - - // Assert - assertEq(resUint8, CODE_TRANSFER_REQUEST_NOT_APPROVED); - } - - function testMessageForTransferRestrictionWithUnknownRestrictionCode() - public - { - // Act - resString = ruleConditionalTransfer.messageForTransferRestriction(50); - - // Assert - assertEq(resString, "Unknown restriction code"); - } - - function testMessageForTransferRestrictionWithValidRC() public { - // Act - resString = ruleConditionalTransfer.messageForTransferRestriction( - CODE_TRANSFER_REQUEST_NOT_APPROVED - ); - - // Assert - assertEq(resString, TEXT_TRANSFER_REQUEST_NOT_APPROVED); - } -} diff --git a/test/RuleConditionalTransfer/utils/CMTATIntegrationShare.sol b/test/RuleConditionalTransfer/utils/CMTATIntegrationShare.sol deleted file mode 100644 index 30c0611..0000000 --- a/test/RuleConditionalTransfer/utils/CMTATIntegrationShare.sol +++ /dev/null @@ -1,483 +0,0 @@ -// SPDX-License-Identifier: MPL-2.0 -pragma solidity ^0.8.20; - -import "forge-std/Test.sol"; -import {CMTATStandalone} from "CMTAT/deployment/CMTATStandalone.sol"; -import "../../HelperContract.sol"; -import "src/RuleEngine.sol"; -import "OZ/token/ERC20/IERC20.sol"; -/** - * @title Integration testShare with the CMTAT - */ -contract CMTATIntegrationShare is Test, HelperContract { - uint256 ADDRESS1_BALANCE_INIT = 31; - uint256 ADDRESS2_BALANCE_INIT = 32; - uint256 ADDRESS3_BALANCE_INIT = 33; - - uint256 FLAG = 5; - - uint256 defaultValue = 10; - bytes32 defaultKey = - keccak256(abi.encode(ADDRESS1, ADDRESS2, defaultValue)); - - TransferRequestKeyElement transferRequestInput = - TransferRequestKeyElement({ - from: ADDRESS1, - to: ADDRESS2, - value: defaultValue - }); - - function _createTransferRequestShare() internal { - vm.prank(ADDRESS1); - // Act - vm.expectEmit(true, true, true, true); - emit transferWaiting(defaultKey, ADDRESS1, ADDRESS2, defaultValue, 0); - ruleConditionalTransfer.createTransferRequest(ADDRESS2, defaultValue); - } - - /******* Transfer *******/ - function testShareCannotTransferWithoutApproval() internal { - // Arrange - vm.prank(ADDRESS1); - vm.expectRevert( - abi.encodeWithSelector( - RuleEngine_InvalidTransfer.selector, - ADDRESS1, - ADDRESS2, - 21 - ) - ); - // Act - CMTAT_CONTRACT.transfer(ADDRESS2, 21); - } - - function testShareCanMakeATransferIfApproved() internal { - // Arrange - Assert - // ConditionalTransfer - resUint8 = ruleConditionalTransfer.detectTransferRestriction( - ADDRESS1, - ADDRESS2, - defaultValue - ); - // Assert - assertEq(resUint8, CODE_TRANSFER_REQUEST_NOT_APPROVED); - // CMTAT - // Arrange - Assert - resUint8 = CMTAT_CONTRACT.detectTransferRestriction( - ADDRESS1, - ADDRESS2, - defaultValue - ); - // Assert - assertEq(resUint8, CODE_TRANSFER_REQUEST_NOT_APPROVED); - // Arrange - vm.prank(ADDRESS1); - // Act - bytes32 key = keccak256(abi.encode(ADDRESS1, ADDRESS2, defaultValue)); - ruleConditionalTransfer.createTransferRequest(ADDRESS2, defaultValue); - - // Act - vm.prank(CONDITIONAL_TRANSFER_OPERATOR_ADDRESS); - vm.expectEmit(true, true, true, true); - emit transferApproved(key, ADDRESS1, ADDRESS2, defaultValue, 0); - ruleConditionalTransfer.approveTransferRequest( - transferRequestInput, - 0, - true - ); - - // Act - vm.expectEmit(true, true, true, true); - emit transferProcessed(defaultKey, ADDRESS1, ADDRESS2, defaultValue, 0); - vm.prank(ADDRESS1); - CMTAT_CONTRACT.transfer(ADDRESS2, defaultValue); - - // Assert - resUint256 = CMTAT_CONTRACT.balanceOf(ADDRESS1); - assertEq(resUint256, ADDRESS1_BALANCE_INIT - defaultValue); - resUint256 = CMTAT_CONTRACT.balanceOf(ADDRESS2); - assertEq(resUint256, ADDRESS2_BALANCE_INIT + defaultValue); - resUint256 = CMTAT_CONTRACT.balanceOf(ADDRESS3); - assertEq(resUint256, 33); - } - - function testShareCanMakeAPartialTransferIfPartiallyApproved() internal { - // Arrange - _createTransferRequestShare(); - - uint256 partialValue = 5; - bytes32 key = keccak256(abi.encode(ADDRESS1, ADDRESS2, partialValue)); - // Act - vm.prank(CONDITIONAL_TRANSFER_OPERATOR_ADDRESS); - vm.expectEmit(true, true, true, true); - emit transferApproved(key, ADDRESS1, ADDRESS2, partialValue, 1); - emit transferDenied(defaultKey, ADDRESS1, ADDRESS2, defaultValue, 0); - ruleConditionalTransfer.approveTransferRequest( - transferRequestInput, - partialValue, - true - ); - - // Act - vm.expectEmit(true, true, true, true); - emit transferProcessed(key, ADDRESS1, ADDRESS2, partialValue, 1); - vm.prank(ADDRESS1); - CMTAT_CONTRACT.transfer(ADDRESS2, partialValue); - - // Assert - resUint256 = CMTAT_CONTRACT.balanceOf(ADDRESS1); - assertEq(resUint256, ADDRESS1_BALANCE_INIT - partialValue); - resUint256 = CMTAT_CONTRACT.balanceOf(ADDRESS2); - assertEq(resUint256, ADDRESS2_BALANCE_INIT + partialValue); - resUint256 = CMTAT_CONTRACT.balanceOf(ADDRESS3); - assertEq(resUint256, 33); - } - - function testShareCannotMakeAWholeTransferIfPartiallyApproved() internal { - // Arrange - _createTransferRequestShare(); - uint256 partialValue = 5; - bytes32 key = keccak256(abi.encode(ADDRESS1, ADDRESS2, partialValue)); - // Act - vm.prank(CONDITIONAL_TRANSFER_OPERATOR_ADDRESS); - vm.expectEmit(true, true, true, true); - emit transferApproved(key, ADDRESS1, ADDRESS2, partialValue, 1); - emit transferDenied(defaultKey, ADDRESS1, ADDRESS2, defaultValue, 0); - ruleConditionalTransfer.approveTransferRequest( - transferRequestInput, - partialValue, - true - ); - - // Act - vm.expectRevert( - abi.encodeWithSelector( - RuleEngine_InvalidTransfer.selector, - ADDRESS1, - ADDRESS2, - defaultValue - ) - ); - vm.prank(ADDRESS1); - CMTAT_CONTRACT.transfer(ADDRESS2, defaultValue); - } - - function testShareCannotMakeATransferIfDelayExceeded(uint256 timeDelay) internal { - // Arrange - vm.prank(ADDRESS1); - // Act - bytes32 key = keccak256(abi.encode(ADDRESS1, ADDRESS2, defaultValue)); - ruleConditionalTransfer.createTransferRequest(ADDRESS2, defaultValue); - - // Act - vm.prank(CONDITIONAL_TRANSFER_OPERATOR_ADDRESS); - vm.expectEmit(true, true, true, true); - emit transferApproved(key, ADDRESS1, ADDRESS2, defaultValue, 0); - ruleConditionalTransfer.approveTransferRequest( - transferRequestInput, - 0, - true - ); - - - vm.warp(block.timestamp + timeDelay); - // Act - vm.expectRevert( - abi.encodeWithSelector( - RuleEngine_InvalidTransfer.selector, - ADDRESS1, - ADDRESS2, - defaultValue - ) - ); - vm.prank(ADDRESS1); - CMTAT_CONTRACT.transfer(ADDRESS2, defaultValue); - } - - function testShareCannotMakeATransferIfDelayJustInTime(uint256 timeDelay) internal { - // Arrange - _createTransferRequestShare(); - - // Act - vm.prank(CONDITIONAL_TRANSFER_OPERATOR_ADDRESS); - vm.expectEmit(true, true, true, true); - emit transferApproved(defaultKey, ADDRESS1, ADDRESS2, defaultValue, 0); - ruleConditionalTransfer.approveTransferRequest( - transferRequestInput, - 0, - true - ); - // 30 days - vm.warp(block.timestamp + timeDelay); - // Act - vm.prank(ADDRESS1); - CMTAT_CONTRACT.transfer(ADDRESS2, defaultValue); - } - - function testShareCanSetTimeLimitWithTransferExceeded(uint256 timeDelay) internal { - TIME_LIMIT memory timeLimit_ = TIME_LIMIT({ - timeLimitToApprove: 1 days, - timeLimitToTransfer: 1 days - }); - // Act - vm.prank(CONDITIONAL_TRANSFER_OPERATOR_ADDRESS); - ruleConditionalTransfer.setTimeLimit(timeLimit_); - // Arrange - _createTransferRequestShare(); - vm.prank(CONDITIONAL_TRANSFER_OPERATOR_ADDRESS); - ruleConditionalTransfer.approveTransferRequest( - transferRequestInput, - 0, - true - ); - - // Assert - // Timeout - // >1 days - vm.warp(block.timestamp + timeDelay); - - vm.expectRevert( - abi.encodeWithSelector( - RuleEngine_InvalidTransfer.selector, - ADDRESS1, - ADDRESS2, - defaultValue - ) - ); - vm.prank(ADDRESS1); - CMTAT_CONTRACT.transfer(ADDRESS2, defaultValue); - } - - function testShareCanMintWithoutApproval() internal { - // Act - vm.prank(DEFAULT_ADMIN_ADDRESS); - CMTAT_CONTRACT.mint(ADDRESS1, 11); - - // Assert - resUint256 = CMTAT_CONTRACT.balanceOf(ADDRESS1); - assertEq(resUint256, ADDRESS1_BALANCE_INIT + 11); - } - - function testShareCanBurnWithoutApproval() internal { - // Act - vm.prank(DEFAULT_ADMIN_ADDRESS); - CMTAT_CONTRACT.burn(ADDRESS1, defaultValue, "testShare"); - - // Assert - resUint256 = CMTAT_CONTRACT.balanceOf(ADDRESS1); - assertEq(resUint256, ADDRESS1_BALANCE_INIT - defaultValue); - } - - function testShareCannotMintWithoutApproval() internal { - ISSUANCE memory issuanceOption_ = ISSUANCE({ - authorizedMintWithoutApproval: false, - authorizedBurnWithoutApproval: true - }); - vm.prank(CONDITIONAL_TRANSFER_OPERATOR_ADDRESS); - ruleConditionalTransfer.setIssuanceOptions(issuanceOption_); - // Act - vm.prank(DEFAULT_ADMIN_ADDRESS); - vm.expectRevert( - abi.encodeWithSelector( - RuleEngine_InvalidTransfer.selector, - ZERO_ADDRESS, - ADDRESS1, - 11 - ) - ); - CMTAT_CONTRACT.mint(ADDRESS1, 11); - } - - function testShareCannotBurnWithoutApproval() internal { - ISSUANCE memory issuanceOption_ = ISSUANCE({ - authorizedMintWithoutApproval: true, - authorizedBurnWithoutApproval: false - }); - vm.prank(CONDITIONAL_TRANSFER_OPERATOR_ADDRESS); - ruleConditionalTransfer.setIssuanceOptions(issuanceOption_); - // Act - vm.prank(DEFAULT_ADMIN_ADDRESS); - vm.expectRevert( - abi.encodeWithSelector( - RuleEngine_InvalidTransfer.selector, - ADDRESS1, - ZERO_ADDRESS, - defaultValue - ) - ); - CMTAT_CONTRACT.burn(ADDRESS1, defaultValue, "testShare"); - } - - function testShareAutomaticTransferIfOptionsSet() internal { - AUTOMATIC_TRANSFER memory automaticTransfertestShare = AUTOMATIC_TRANSFER({ - isActivate: true, - cmtat: IERC20(address(CMTAT_CONTRACT)) - }); - vm.prank(CONDITIONAL_TRANSFER_OPERATOR_ADDRESS); - ruleConditionalTransfer.setAutomaticTransfer(automaticTransfertestShare); - - // Aproval - vm.prank(ADDRESS1); - CMTAT_CONTRACT.approve(address(ruleConditionalTransfer), defaultValue); - - // Arrange - _createTransferRequestShare(); - - // Act - vm.prank(CONDITIONAL_TRANSFER_OPERATOR_ADDRESS); - vm.expectEmit(true, true, true, true); - emit transferApproved(defaultKey, ADDRESS1, ADDRESS2, defaultValue, 0); - vm.expectEmit(true, true, true, true); - emit transferProcessed(defaultKey, ADDRESS1, ADDRESS2, defaultValue, 0); - ruleConditionalTransfer.approveTransferRequest( - transferRequestInput, - 0, - true - ); - } - - function testShareCanTransferIfAutomaticApprovalSetAndTimeExceedsJustInTime() - internal - { - AUTOMATIC_APPROVAL memory automaticApproval_ = AUTOMATIC_APPROVAL({ - isActivate: true, - timeLimitBeforeAutomaticApproval: 90 days - }); - - resBool = ruleConditionalTransfer.canTransfer( - ADDRESS1, - ADDRESS2, - defaultValue - ); - assertFalse(resBool); - vm.prank(CONDITIONAL_TRANSFER_OPERATOR_ADDRESS); - ruleConditionalTransfer.setAutomaticApproval(automaticApproval_); - - resBool = ruleConditionalTransfer.canTransfer( - ADDRESS1, - ADDRESS2, - defaultValue - ); - assertFalse(resBool); - // Arrange - _createTransferRequestShare(); - - resBool = ruleConditionalTransfer.canTransfer( - ADDRESS1, - ADDRESS2, - defaultValue - ); - assertFalse(resBool); - - vm.warp(block.timestamp + 90 days); - // Act - resBool = ruleConditionalTransfer.canTransfer( - ADDRESS1, - ADDRESS2, - defaultValue - ); - assertEq(resBool, true); - vm.prank(ADDRESS1); - vm.expectEmit(true, true, true, true); - emit transferProcessed(defaultKey, ADDRESS1, ADDRESS2, defaultValue, 0); - CMTAT_CONTRACT.transfer(ADDRESS2, defaultValue); - } - - function testShareCanTransferIfAutomaticApprovalSetAndTimeExceeds() internal { - AUTOMATIC_APPROVAL memory automaticApproval_ = AUTOMATIC_APPROVAL({ - isActivate: true, - timeLimitBeforeAutomaticApproval: 90 days - }); - - resBool = ruleConditionalTransfer.canTransfer( - ADDRESS1, - ADDRESS2, - defaultValue - ); - assertFalse(resBool); - vm.prank(CONDITIONAL_TRANSFER_OPERATOR_ADDRESS); - ruleConditionalTransfer.setAutomaticApproval(automaticApproval_); - - resBool = ruleConditionalTransfer.canTransfer( - ADDRESS1, - ADDRESS2, - defaultValue - ); - assertFalse(resBool); - // Arrange - _createTransferRequestShare(); - - resBool = ruleConditionalTransfer.canTransfer( - ADDRESS1, - ADDRESS2, - defaultValue - ); - assertFalse(resBool); - - vm.warp(block.timestamp + 91 days); - // Act - resBool = ruleConditionalTransfer.canTransfer( - ADDRESS1, - ADDRESS2, - defaultValue - ); - assertEq(resBool, true); - vm.prank(ADDRESS1); - vm.expectEmit(true, true, true, true); - emit transferProcessed(defaultKey, ADDRESS1, ADDRESS2, defaultValue, 0); - CMTAT_CONTRACT.transfer(ADDRESS2, defaultValue); - } - - function testShareCannotTransferIfAutomaticApprovalSetAndTimeNotExceeds() - internal - { - AUTOMATIC_APPROVAL memory automaticApproval_ = AUTOMATIC_APPROVAL({ - isActivate: true, - timeLimitBeforeAutomaticApproval: 90 days - }); - resBool = ruleConditionalTransfer.canTransfer( - ADDRESS1, - ADDRESS2, - defaultValue - ); - assertFalse(resBool); - vm.prank(CONDITIONAL_TRANSFER_OPERATOR_ADDRESS); - ruleConditionalTransfer.setAutomaticApproval(automaticApproval_); - - resBool = ruleConditionalTransfer.canTransfer( - ADDRESS1, - ADDRESS2, - defaultValue - ); - assertFalse(resBool); - // Arrange - _createTransferRequestShare(); - - resBool = ruleConditionalTransfer.canTransfer( - ADDRESS1, - ADDRESS2, - defaultValue - ); - assertFalse(resBool); - - resBool = CMTAT_CONTRACT.canTransfer( - ADDRESS1, - ADDRESS2, - defaultValue - ); - assertFalse(resBool); - // Time not exceeds - vm.warp(block.timestamp + 85 days); - // Act - vm.prank(ADDRESS1); - vm.expectRevert( - abi.encodeWithSelector( - RuleEngine_InvalidTransfer.selector, - ADDRESS1, - ADDRESS2, - defaultValue - ) - ); - CMTAT_CONTRACT.transfer(ADDRESS2, defaultValue); - } -} diff --git a/test/RuleConditionalTransfer/utils/RuleCTDeployment.sol b/test/RuleConditionalTransfer/utils/RuleCTDeployment.sol deleted file mode 100644 index 946c0d9..0000000 --- a/test/RuleConditionalTransfer/utils/RuleCTDeployment.sol +++ /dev/null @@ -1,57 +0,0 @@ -// SPDX-License-Identifier: MPL-2.0 -pragma solidity ^0.8.20; - -import "forge-std/Test.sol"; -import "../../HelperContract.sol"; -import "src/RuleEngine.sol"; -import "OZ/token/ERC20/IERC20.sol"; -/** - * @title Tests on the Access Control - */ -contract RuleCTDeployment is Test, HelperContract { - // Arrange - constructor() { - TIME_LIMIT memory timeLimit_ = TIME_LIMIT({ - timeLimitToApprove: 7 days, - timeLimitToTransfer: 30 days - }); - - AUTOMATIC_APPROVAL memory automaticApproval_ = AUTOMATIC_APPROVAL({ - isActivate: false, - timeLimitBeforeAutomaticApproval: 0 - }); - - ISSUANCE memory issuanceOption_ = ISSUANCE({ - authorizedMintWithoutApproval: false, - authorizedBurnWithoutApproval: false - }); - AUTOMATIC_TRANSFER memory automaticTransfer_ = AUTOMATIC_TRANSFER({ - isActivate: false, - cmtat: IERC20(address(0)) - }); - - OPTION memory options = OPTION({ - issuance: issuanceOption_, - timeLimit: timeLimit_, - automaticApproval: automaticApproval_, - automaticTransfer: automaticTransfer_ - }); - ruleEngineMock = new RuleEngine( - RULE_ENGINE_OPERATOR_ADDRESS, - ZERO_ADDRESS, - ZERO_ADDRESS - ); - vm.prank(DEFAULT_ADMIN_ADDRESS); - ruleConditionalTransfer = new RuleConditionalTransfer( - DEFAULT_ADMIN_ADDRESS, - ZERO_ADDRESS, - ruleEngineMock, - options - ); - vm.prank(DEFAULT_ADMIN_ADDRESS); - ruleConditionalTransfer.grantRole( - RULE_CONDITIONAL_TRANSFER_OPERATOR_ROLE, - CONDITIONAL_TRANSFER_OPERATOR_ADDRESS - ); - } -} diff --git a/test/RuleEngine/AccessControl/RuleEngineAccessControl.sol b/test/RuleEngine/AccessControl/RuleEngineAccessControl.sol index 42aca5e..44b40eb 100644 --- a/test/RuleEngine/AccessControl/RuleEngineAccessControl.sol +++ b/test/RuleEngine/AccessControl/RuleEngineAccessControl.sol @@ -1,3 +1,4 @@ + // SPDX-License-Identifier: MPL-2.0 pragma solidity ^0.8.20; diff --git a/test/RuleEngine/AccessControl/RuleEngineAccessControlOZ.t.sol b/test/RuleEngine/AccessControl/RuleEngineAccessControlOZ.t.sol index 1bfe450..e751ad5 100644 --- a/test/RuleEngine/AccessControl/RuleEngineAccessControlOZ.t.sol +++ b/test/RuleEngine/AccessControl/RuleEngineAccessControlOZ.t.sol @@ -115,4 +115,4 @@ contract RuleEngineAccessControlTest is Test, HelperContract, AccessControl { bool res3 = ruleEngineMock.hasRole(RULE_ENGINE_OPERATOR_ROLE, ADDRESS1); assertEq(res3, true); } -} +} \ No newline at end of file diff --git a/test/RuleEngine/ruleEngineOperation/RuleEngineOperation.t.sol b/test/RuleEngine/ruleEngineOperation/RuleEngineOperation.t.sol index afec4da..dad6248 100644 --- a/test/RuleEngine/ruleEngineOperation/RuleEngineOperation.t.sol +++ b/test/RuleEngine/ruleEngineOperation/RuleEngineOperation.t.sol @@ -9,32 +9,7 @@ import "OZ/token/ERC20/IERC20.sol"; * @title General functions of the RuleEngine */ contract RuleEngineOperationTest is Test, HelperContract { - TIME_LIMIT timeLimit_ = - TIME_LIMIT({ - timeLimitToApprove: DEFAULT_TIME_LIMIT_TO_APPROVE, - timeLimitToTransfer: DEFAULT_TIME_LIMIT_TO_TRANSFER - }); - ISSUANCE issuanceOption_ = - ISSUANCE({ - authorizedMintWithoutApproval: false, - authorizedBurnWithoutApproval: false - }); - - AUTOMATIC_APPROVAL automaticApproval_ = - AUTOMATIC_APPROVAL({ - isActivate: false, - timeLimitBeforeAutomaticApproval: 0 - }); - AUTOMATIC_TRANSFER automaticTransfer_ = - AUTOMATIC_TRANSFER({isActivate: false, cmtat: IERC20(address(0))}); - OPTION options = - OPTION({ - issuance: issuanceOption_, - timeLimit: timeLimit_, - automaticApproval: automaticApproval_, - automaticTransfer: automaticTransfer_ - }); - + // Arrange function setUp() public { vm.prank(RULE_ENGINE_OPERATOR_ADDRESS); @@ -43,15 +18,13 @@ contract RuleEngineOperationTest is Test, HelperContract { ZERO_ADDRESS, ZERO_ADDRESS ); - ruleConditionalTransfer = new RuleConditionalTransfer( + ruleConditionalTransferLight = new RuleConditionalTransferLight( CONDITIONAL_TRANSFER_OPERATOR_ADDRESS, - ZERO_ADDRESS, - ruleEngineMock, - options + ruleEngineMock ); vm.prank(RULE_ENGINE_OPERATOR_ADDRESS); - ruleEngineMock.addRuleOperation(ruleConditionalTransfer); + ruleEngineMock.addRuleOperation(ruleConditionalTransferLight); // Arrange - Assert resUint256 = ruleEngineMock.rulesCountOperation(); assertEq(resUint256, 1); @@ -60,36 +33,32 @@ contract RuleEngineOperationTest is Test, HelperContract { function testCanSetRulesOperation() public { // Arrange vm.prank(WHITELIST_OPERATOR_ADDRESS); - RuleConditionalTransfer RuleConditionalTransfer1 = new RuleConditionalTransfer( + RuleConditionalTransferLight ruleConditionalTransferLight1 = new RuleConditionalTransferLight( CONDITIONAL_TRANSFER_OPERATOR_ADDRESS, - ZERO_ADDRESS, - ruleEngineMock, - options + ruleEngineMock ); vm.prank(WHITELIST_OPERATOR_ADDRESS); - RuleConditionalTransfer RuleConditionalTransfer2 = new RuleConditionalTransfer( + RuleConditionalTransferLight ruleConditionalTransferLight2 = new RuleConditionalTransferLight( CONDITIONAL_TRANSFER_OPERATOR_ADDRESS, - ZERO_ADDRESS, - ruleEngineMock, - options + ruleEngineMock ); - address[] memory RuleConditionalTransferTab = new address[](2); - RuleConditionalTransferTab[0] = address( - IRuleOperation(RuleConditionalTransfer1) + address[] memory ruleConditionalTransferLightTab = new address[](2); + ruleConditionalTransferLightTab[0] = address( + IRuleOperation(ruleConditionalTransferLight1) ); - RuleConditionalTransferTab[1] = address( - IRuleOperation(RuleConditionalTransfer2) + ruleConditionalTransferLightTab[1] = address( + IRuleOperation(ruleConditionalTransferLight2) ); // Act vm.expectEmit(true, false, false, false); - emit AddRule(address(RuleConditionalTransfer1)); + emit AddRule(address(ruleConditionalTransferLight1)); vm.expectEmit(true, false, false, false); - emit AddRule(address(RuleConditionalTransfer2)); + emit AddRule(address(ruleConditionalTransferLight2)); vm.prank(RULE_ENGINE_OPERATOR_ADDRESS); (bool resCallBool, ) = address(ruleEngineMock).call( abi.encodeCall( ruleEngineMock.setRulesOperation, - RuleConditionalTransferTab + ruleConditionalTransferLightTab ) ); @@ -102,15 +71,13 @@ contract RuleEngineOperationTest is Test, HelperContract { function testCannotSetRuleIfARuleIsAlreadyPresent() public { // Arrange vm.prank(WHITELIST_OPERATOR_ADDRESS); - RuleConditionalTransfer RuleConditionalTransfer1 = new RuleConditionalTransfer( + RuleConditionalTransferLight ruleConditionalTransferLight1 = new RuleConditionalTransferLight( CONDITIONAL_TRANSFER_OPERATOR_ADDRESS, - ZERO_ADDRESS, - ruleEngineMock, - options + ruleEngineMock ); - address[] memory RuleConditionalTransferTab = new address[](2); - RuleConditionalTransferTab[0] = address(RuleConditionalTransfer1); - RuleConditionalTransferTab[1] = address(RuleConditionalTransfer1); + address[] memory ruleConditionalTransferLightTab = new address[](2); + ruleConditionalTransferLightTab[0] = address(ruleConditionalTransferLight1); + ruleConditionalTransferLightTab[1] = address(ruleConditionalTransferLight1); // Act vm.prank(RULE_ENGINE_OPERATOR_ADDRESS); @@ -118,7 +85,7 @@ contract RuleEngineOperationTest is Test, HelperContract { (bool resCallBool, ) = address(ruleEngineMock).call( abi.encodeCall( ruleEngineMock.setRulesOperation, - RuleConditionalTransferTab + ruleConditionalTransferLightTab ) ); @@ -133,7 +100,7 @@ contract RuleEngineOperationTest is Test, HelperContract { function testCannotSetEmptyRulesT1WithEmptyTab() public { // Arrange - address[] memory RuleConditionalTransferTab = new address[](0); + address[] memory ruleConditionalTransferLightTab = new address[](0); resBool = ruleEngineMock.canTransfer(ADDRESS1, ADDRESS2, 20); assertFalse(resBool); @@ -142,7 +109,7 @@ contract RuleEngineOperationTest is Test, HelperContract { (bool resCallBool, ) = address(ruleEngineMock).call( abi.encodeCall( ruleEngineMock.setRulesOperation, - RuleConditionalTransferTab + ruleConditionalTransferLightTab ) ); @@ -159,7 +126,7 @@ contract RuleEngineOperationTest is Test, HelperContract { function testCannotSetEmptyRulesT2WithZeroAddress() public { // Arrange - address[] memory RuleConditionalTransferTab = new address[](2); + address[] memory ruleConditionalTransferLightTab = new address[](2); // Act vm.prank(RULE_ENGINE_OPERATOR_ADDRESS); @@ -168,7 +135,7 @@ contract RuleEngineOperationTest is Test, HelperContract { (bool resCallBool, ) = address(ruleEngineMock).call( abi.encodeCall( ruleEngineMock.setRulesOperation, - RuleConditionalTransferTab + ruleConditionalTransferLightTab ) ); @@ -188,32 +155,28 @@ contract RuleEngineOperationTest is Test, HelperContract { function testCanClearRules() public { // Arrange vm.prank(WHITELIST_OPERATOR_ADDRESS); - RuleConditionalTransfer RuleConditionalTransfer1 = new RuleConditionalTransfer( + RuleConditionalTransferLight ruleConditionalTransferLight1 = new RuleConditionalTransferLight( CONDITIONAL_TRANSFER_OPERATOR_ADDRESS, - ZERO_ADDRESS, - ruleEngineMock, - options + ruleEngineMock ); vm.prank(WHITELIST_OPERATOR_ADDRESS); - RuleConditionalTransfer RuleConditionalTransfer2 = new RuleConditionalTransfer( + RuleConditionalTransferLight ruleConditionalTransferLight2 = new RuleConditionalTransferLight( CONDITIONAL_TRANSFER_OPERATOR_ADDRESS, - ZERO_ADDRESS, - ruleEngineMock, - options + ruleEngineMock ); - address[] memory RuleConditionalTransferTab = new address[](2); - RuleConditionalTransferTab[0] = address( - IRuleOperation(RuleConditionalTransfer1) + address[] memory ruleConditionalTransferLightTab = new address[](2); + ruleConditionalTransferLightTab[0] = address( + IRuleOperation(ruleConditionalTransferLight1) ); - RuleConditionalTransferTab[1] = address( - IRuleOperation(RuleConditionalTransfer2) + ruleConditionalTransferLightTab[1] = address( + IRuleOperation(ruleConditionalTransferLight2) ); vm.prank(RULE_ENGINE_OPERATOR_ADDRESS); (bool resCallBool, ) = address(ruleEngineMock).call( abi.encodeCall( ruleEngineMock.setRulesOperation, - RuleConditionalTransferTab + ruleConditionalTransferLightTab ) ); ruleEngineMock.rulesOperation(); @@ -234,32 +197,28 @@ contract RuleEngineOperationTest is Test, HelperContract { function testCanClearRulesAndAddAgain() public { // Arrange vm.prank(WHITELIST_OPERATOR_ADDRESS); - RuleConditionalTransfer RuleConditionalTransfer1 = new RuleConditionalTransfer( + RuleConditionalTransferLight ruleConditionalTransferLight1 = new RuleConditionalTransferLight( CONDITIONAL_TRANSFER_OPERATOR_ADDRESS, - ZERO_ADDRESS, - ruleEngineMock, - options + ruleEngineMock ); vm.prank(WHITELIST_OPERATOR_ADDRESS); - RuleConditionalTransfer RuleConditionalTransfer2 = new RuleConditionalTransfer( + RuleConditionalTransferLight ruleConditionalTransferLight2 = new RuleConditionalTransferLight( CONDITIONAL_TRANSFER_OPERATOR_ADDRESS, - ZERO_ADDRESS, - ruleEngineMock, - options + ruleEngineMock ); - address[] memory RuleConditionalTransferTab = new address[](2); - RuleConditionalTransferTab[0] = address( - IRuleOperation(RuleConditionalTransfer1) + address[] memory ruleConditionalTransferLightTab = new address[](2); + ruleConditionalTransferLightTab[0] = address( + IRuleOperation(ruleConditionalTransferLight1) ); - RuleConditionalTransferTab[1] = address( - IRuleOperation(RuleConditionalTransfer2) + ruleConditionalTransferLightTab[1] = address( + IRuleOperation(ruleConditionalTransferLight2) ); vm.prank(RULE_ENGINE_OPERATOR_ADDRESS); (bool resCallBool, ) = address(ruleEngineMock).call( abi.encodeCall( ruleEngineMock.setRulesOperation, - RuleConditionalTransferTab + ruleConditionalTransferLightTab ) ); @@ -276,7 +235,7 @@ contract RuleEngineOperationTest is Test, HelperContract { (resCallBool, ) = address(ruleEngineMock).call( abi.encodeCall( ruleEngineMock.setRulesOperation, - RuleConditionalTransferTab + ruleConditionalTransferLightTab ) ); assertEq(resCallBool, true); @@ -290,26 +249,24 @@ contract RuleEngineOperationTest is Test, HelperContract { // Can add previous rule again vm.expectEmit(true, false, false, false); - emit AddRule(address(RuleConditionalTransfer1)); + emit AddRule(address(ruleConditionalTransferLight1)); vm.prank(RULE_ENGINE_OPERATOR_ADDRESS); - ruleEngineMock.addRuleOperation(RuleConditionalTransfer1); + ruleEngineMock.addRuleOperation(ruleConditionalTransferLight1); } function testCanAddRule() public { // Arrange vm.prank(WHITELIST_OPERATOR_ADDRESS); - RuleConditionalTransfer RuleConditionalTransfer1 = new RuleConditionalTransfer( + RuleConditionalTransferLight ruleConditionalTransferLight1 = new RuleConditionalTransferLight( CONDITIONAL_TRANSFER_OPERATOR_ADDRESS, - ZERO_ADDRESS, - ruleEngineMock, - options + ruleEngineMock ); // Act vm.expectEmit(true, false, false, false); - emit AddRule(address(RuleConditionalTransfer1)); + emit AddRule(address(ruleConditionalTransferLight1)); vm.prank(RULE_ENGINE_OPERATOR_ADDRESS); - ruleEngineMock.addRuleOperation(RuleConditionalTransfer1); + ruleEngineMock.addRuleOperation(ruleConditionalTransferLight1); // Assert resUint256 = ruleEngineMock.rulesCountOperation(); @@ -331,7 +288,7 @@ contract RuleEngineOperationTest is Test, HelperContract { // Act vm.expectRevert(RuleEngine_RuleAlreadyExists.selector); vm.prank(RULE_ENGINE_OPERATOR_ADDRESS); - ruleEngineMock.addRuleOperation(ruleConditionalTransfer); + ruleEngineMock.addRuleOperation(ruleConditionalTransferLight); // Assert resUint256 = ruleEngineMock.rulesCountOperation(); @@ -341,17 +298,17 @@ contract RuleEngineOperationTest is Test, HelperContract { function testCanAddARuleAfterThisRuleWasRemoved() public { // Arrange - Assert address[] memory _rules = ruleEngineMock.rulesOperation(); - assertEq(address(_rules[0]), address(ruleConditionalTransfer)); + assertEq(address(_rules[0]), address(ruleConditionalTransferLight)); // Arrange vm.prank(RULE_ENGINE_OPERATOR_ADDRESS); - ruleEngineMock.removeRuleOperation(ruleConditionalTransfer, 0); + ruleEngineMock.removeRuleOperation(ruleConditionalTransferLight, 0); // Act vm.expectEmit(true, false, false, false); - emit AddRule(address(ruleConditionalTransfer)); + emit AddRule(address(ruleConditionalTransferLight)); vm.prank(RULE_ENGINE_OPERATOR_ADDRESS); - ruleEngineMock.addRuleOperation(ruleConditionalTransfer); + ruleEngineMock.addRuleOperation(ruleConditionalTransferLight); // Assert _rules = ruleEngineMock.rulesOperation(); @@ -362,17 +319,15 @@ contract RuleEngineOperationTest is Test, HelperContract { function testCanRemoveNonExistantRule() public { // Arrange vm.prank(WHITELIST_OPERATOR_ADDRESS); - RuleConditionalTransfer RuleConditionalTransfer1 = new RuleConditionalTransfer( + RuleConditionalTransferLight ruleConditionalTransferLight1 = new RuleConditionalTransferLight( CONDITIONAL_TRANSFER_OPERATOR_ADDRESS, - ZERO_ADDRESS, - ruleEngineMock, - options + ruleEngineMock ); // Act vm.expectRevert(RuleEngine_RuleDoNotMatch.selector); vm.prank(RULE_ENGINE_OPERATOR_ADDRESS); - ruleEngineMock.removeRuleOperation(RuleConditionalTransfer1, 0); + ruleEngineMock.removeRuleOperation(ruleConditionalTransferLight1, 0); // Assert resUint256 = ruleEngineMock.rulesCountOperation(); @@ -382,20 +337,18 @@ contract RuleEngineOperationTest is Test, HelperContract { function testCanRemoveLatestRule() public { // Arrange vm.prank(WHITELIST_OPERATOR_ADDRESS); - RuleConditionalTransfer RuleConditionalTransfer1 = new RuleConditionalTransfer( + RuleConditionalTransferLight ruleConditionalTransferLight1 = new RuleConditionalTransferLight( CONDITIONAL_TRANSFER_OPERATOR_ADDRESS, - ZERO_ADDRESS, - ruleEngineMock, - options + ruleEngineMock ); vm.prank(RULE_ENGINE_OPERATOR_ADDRESS); - ruleEngineMock.addRuleOperation(RuleConditionalTransfer1); + ruleEngineMock.addRuleOperation(ruleConditionalTransferLight1); // Act vm.expectEmit(true, false, false, false); - emit RemoveRule(address(RuleConditionalTransfer1)); + emit RemoveRule(address(ruleConditionalTransferLight1)); vm.prank(RULE_ENGINE_OPERATOR_ADDRESS); - ruleEngineMock.removeRuleOperation(RuleConditionalTransfer1, 1); + ruleEngineMock.removeRuleOperation(ruleConditionalTransferLight1, 1); // Assert resUint256 = ruleEngineMock.rulesCountOperation(); @@ -405,20 +358,18 @@ contract RuleEngineOperationTest is Test, HelperContract { function testCanRemoveFirstRule() public { // Arrange vm.prank(WHITELIST_OPERATOR_ADDRESS); - RuleConditionalTransfer RuleConditionalTransfer1 = new RuleConditionalTransfer( + RuleConditionalTransferLight ruleConditionalTransferLight1 = new RuleConditionalTransferLight( CONDITIONAL_TRANSFER_OPERATOR_ADDRESS, - ZERO_ADDRESS, - ruleEngineMock, - options + ruleEngineMock ); vm.prank(RULE_ENGINE_OPERATOR_ADDRESS); - ruleEngineMock.addRuleOperation(RuleConditionalTransfer1); + ruleEngineMock.addRuleOperation(ruleConditionalTransferLight1); // Act vm.expectEmit(true, false, false, false); - emit RemoveRule(address(ruleConditionalTransfer)); + emit RemoveRule(address(ruleConditionalTransferLight)); vm.prank(RULE_ENGINE_OPERATOR_ADDRESS); - ruleEngineMock.removeRuleOperation(ruleConditionalTransfer, 0); + ruleEngineMock.removeRuleOperation(ruleConditionalTransferLight, 0); // Assert resUint256 = ruleEngineMock.rulesCountOperation(); @@ -429,36 +380,32 @@ contract RuleEngineOperationTest is Test, HelperContract { // Arrange // First rule vm.prank(WHITELIST_OPERATOR_ADDRESS); - RuleConditionalTransfer RuleConditionalTransfer1 = new RuleConditionalTransfer( + RuleConditionalTransferLight ruleConditionalTransferLight1 = new RuleConditionalTransferLight( CONDITIONAL_TRANSFER_OPERATOR_ADDRESS, - ZERO_ADDRESS, - ruleEngineMock, - options + ruleEngineMock ); vm.prank(RULE_ENGINE_OPERATOR_ADDRESS); - ruleEngineMock.addRuleOperation(RuleConditionalTransfer1); + ruleEngineMock.addRuleOperation(ruleConditionalTransferLight1); // Second rule vm.prank(WHITELIST_OPERATOR_ADDRESS); - RuleConditionalTransfer RuleConditionalTransfer2 = new RuleConditionalTransfer( + RuleConditionalTransferLight ruleConditionalTransferLight2 = new RuleConditionalTransferLight( CONDITIONAL_TRANSFER_OPERATOR_ADDRESS, - ZERO_ADDRESS, - ruleEngineMock, - options + ruleEngineMock ); vm.prank(RULE_ENGINE_OPERATOR_ADDRESS); - ruleEngineMock.addRuleOperation(RuleConditionalTransfer2); + ruleEngineMock.addRuleOperation(ruleConditionalTransferLight2); // Act vm.expectEmit(true, false, false, false); - emit RemoveRule(address(RuleConditionalTransfer1)); + emit RemoveRule(address(ruleConditionalTransferLight1)); vm.prank(RULE_ENGINE_OPERATOR_ADDRESS); - ruleEngineMock.removeRuleOperation(RuleConditionalTransfer1, 1); + ruleEngineMock.removeRuleOperation(ruleConditionalTransferLight1, 1); // Assert address[] memory _rules = ruleEngineMock.rulesOperation(); - // RuleConditionalTransfer1 has been removed - assertEq(address(_rules[0]), address(ruleConditionalTransfer)); - assertEq(address(_rules[1]), address(RuleConditionalTransfer2)); + // RuleConditionalTransferLight1 has been removed + assertEq(address(_rules[0]), address(ruleConditionalTransferLight)); + assertEq(address(_rules[1]), address(ruleConditionalTransferLight2)); resUint256 = ruleEngineMock.rulesCountOperation(); assertEq(resUint256, 2); @@ -472,30 +419,26 @@ contract RuleEngineOperationTest is Test, HelperContract { assertEq(resUint256, 1); // Arrange - RuleConditionalTransfer RuleConditionalTransfer1 = new RuleConditionalTransfer( + RuleConditionalTransferLight ruleConditionalTransferLight1 = new RuleConditionalTransferLight( CONDITIONAL_TRANSFER_OPERATOR_ADDRESS, - ZERO_ADDRESS, - ruleEngineMock, - options + ruleEngineMock ); - RuleConditionalTransfer RuleConditionalTransfer2 = new RuleConditionalTransfer( + RuleConditionalTransferLight ruleConditionalTransferLight2 = new RuleConditionalTransferLight( CONDITIONAL_TRANSFER_OPERATOR_ADDRESS, - ZERO_ADDRESS, - ruleEngineMock, - options + ruleEngineMock ); - address[] memory RuleConditionalTransferTab = new address[](2); - RuleConditionalTransferTab[0] = address( - IRuleOperation(RuleConditionalTransfer1) + address[] memory ruleConditionalTransferLightTab = new address[](2); + ruleConditionalTransferLightTab[0] = address( + IRuleOperation(ruleConditionalTransferLight1) ); - RuleConditionalTransferTab[1] = address( - IRuleOperation(RuleConditionalTransfer2) + ruleConditionalTransferLightTab[1] = address( + IRuleOperation(ruleConditionalTransferLight2) ); vm.prank(RULE_ENGINE_OPERATOR_ADDRESS); (bool resCallBool, ) = address(ruleEngineMock).call( abi.encodeCall( ruleEngineMock.setRulesOperation, - RuleConditionalTransferTab + ruleConditionalTransferLightTab ) ); @@ -511,30 +454,26 @@ contract RuleEngineOperationTest is Test, HelperContract { function testGetRule() public { // Arrange - RuleConditionalTransfer RuleConditionalTransfer1 = new RuleConditionalTransfer( + RuleConditionalTransferLight ruleConditionalTransferLight1 = new RuleConditionalTransferLight( CONDITIONAL_TRANSFER_OPERATOR_ADDRESS, - ZERO_ADDRESS, - ruleEngineMock, - options + ruleEngineMock ); - RuleConditionalTransfer RuleConditionalTransfer2 = new RuleConditionalTransfer( + RuleConditionalTransferLight ruleConditionalTransferLight2 = new RuleConditionalTransferLight( CONDITIONAL_TRANSFER_OPERATOR_ADDRESS, - ZERO_ADDRESS, - ruleEngineMock, - options + ruleEngineMock ); - address[] memory RuleConditionalTransferTab = new address[](2); - RuleConditionalTransferTab[0] = address( - IRuleOperation(RuleConditionalTransfer1) + address[] memory ruleConditionalTransferLightTab = new address[](2); + ruleConditionalTransferLightTab[0] = address( + IRuleOperation(ruleConditionalTransferLight1) ); - RuleConditionalTransferTab[1] = address( - IRuleOperation(RuleConditionalTransfer2) + ruleConditionalTransferLightTab[1] = address( + IRuleOperation(ruleConditionalTransferLight2) ); vm.prank(RULE_ENGINE_OPERATOR_ADDRESS); (bool resCallBool, ) = address(ruleEngineMock).call( abi.encodeCall( ruleEngineMock.setRulesOperation, - RuleConditionalTransferTab + ruleConditionalTransferLightTab ) ); // Arrange - Assert @@ -544,35 +483,31 @@ contract RuleEngineOperationTest is Test, HelperContract { address rule = ruleEngineMock.ruleOperation(0); // Assert - assertEq(address(rule), address(RuleConditionalTransfer1)); + assertEq(address(rule), address(ruleConditionalTransferLight1)); } function testGetRules() public { // Arrange - RuleConditionalTransfer RuleConditionalTransfer1 = new RuleConditionalTransfer( + RuleConditionalTransferLight ruleConditionalTransferLight1 = new RuleConditionalTransferLight( CONDITIONAL_TRANSFER_OPERATOR_ADDRESS, - ZERO_ADDRESS, - ruleEngineMock, - options + ruleEngineMock ); - RuleConditionalTransfer RuleConditionalTransfer2 = new RuleConditionalTransfer( + RuleConditionalTransferLight ruleConditionalTransferLight2 = new RuleConditionalTransferLight( CONDITIONAL_TRANSFER_OPERATOR_ADDRESS, - ZERO_ADDRESS, - ruleEngineMock, - options + ruleEngineMock ); - address[] memory RuleConditionalTransferTab = new address[](2); - RuleConditionalTransferTab[0] = address( - IRuleOperation(RuleConditionalTransfer1) + address[] memory ruleConditionalTransferLightTab = new address[](2); + ruleConditionalTransferLightTab[0] = address( + IRuleOperation(ruleConditionalTransferLight1) ); - RuleConditionalTransferTab[1] = address( - IRuleOperation(RuleConditionalTransfer2) + ruleConditionalTransferLightTab[1] = address( + IRuleOperation(ruleConditionalTransferLight2) ); vm.prank(RULE_ENGINE_OPERATOR_ADDRESS); (bool resCallBool, ) = address(ruleEngineMock).call( abi.encodeCall( ruleEngineMock.setRulesOperation, - RuleConditionalTransferTab + ruleConditionalTransferLightTab ) ); // Arrange - Assert @@ -582,38 +517,34 @@ contract RuleEngineOperationTest is Test, HelperContract { address[] memory rules = ruleEngineMock.rulesOperation(); // Assert - assertEq(RuleConditionalTransferTab.length, rules.length); + assertEq(ruleConditionalTransferLightTab.length, rules.length); for (uint256 i = 0; i < rules.length; ++i) { - assertEq(address(RuleConditionalTransferTab[i]), address(rules[i])); + assertEq(address(ruleConditionalTransferLightTab[i]), address(rules[i])); } } function testCanGetRuleIndex() public { // Arrange - RuleConditionalTransfer RuleConditionalTransfer1 = new RuleConditionalTransfer( + RuleConditionalTransferLight ruleConditionalTransferLight1 = new RuleConditionalTransferLight( CONDITIONAL_TRANSFER_OPERATOR_ADDRESS, - ZERO_ADDRESS, - ruleEngineMock, - options + ruleEngineMock ); - RuleConditionalTransfer RuleConditionalTransfer2 = new RuleConditionalTransfer( + RuleConditionalTransferLight ruleConditionalTransferLight2 = new RuleConditionalTransferLight( CONDITIONAL_TRANSFER_OPERATOR_ADDRESS, - ZERO_ADDRESS, - ruleEngineMock, - options + ruleEngineMock ); - address[] memory RuleConditionalTransferTab = new address[](2); - RuleConditionalTransferTab[0] = address( - IRuleOperation(RuleConditionalTransfer1) + address[] memory ruleConditionalTransferLightTab = new address[](2); + ruleConditionalTransferLightTab[0] = address( + IRuleOperation(ruleConditionalTransferLight1) ); - RuleConditionalTransferTab[1] = address( - IRuleOperation(RuleConditionalTransfer2) + ruleConditionalTransferLightTab[1] = address( + IRuleOperation(ruleConditionalTransferLight2) ); vm.prank(RULE_ENGINE_OPERATOR_ADDRESS); (bool resCallBool, ) = address(ruleEngineMock).call( abi.encodeCall( ruleEngineMock.setRulesOperation, - RuleConditionalTransferTab + ruleConditionalTransferLightTab ) ); // Arrange - Assert @@ -621,19 +552,19 @@ contract RuleEngineOperationTest is Test, HelperContract { // Act uint256 index1 = ruleEngineMock.getRuleIndexOperation( - RuleConditionalTransfer1 + ruleConditionalTransferLight1 ); uint256 index2 = ruleEngineMock.getRuleIndexOperation( - RuleConditionalTransfer2 + ruleConditionalTransferLight2 ); - // Length of the list because RuleConditionalTransfer is not in the list + // Length of the list because RuleConditionalTransferLight is not in the list uint256 index3 = ruleEngineMock.getRuleIndexOperation( - ruleConditionalTransfer + ruleConditionalTransferLight ); // Assert assertEq(index1, 0); assertEq(index2, 1); - assertEq(index3, RuleConditionalTransferTab.length); + assertEq(index3, ruleConditionalTransferLightTab.length); } -} +} \ No newline at end of file diff --git a/test/RuleEngine/ruleEngineOperation/RuleEngineOperationRevert.t.sol b/test/RuleEngine/ruleEngineOperation/RuleEngineOperationRevert.t.sol new file mode 100644 index 0000000..f6a2dc3 --- /dev/null +++ b/test/RuleEngine/ruleEngineOperation/RuleEngineOperationRevert.t.sol @@ -0,0 +1,45 @@ +// SPDX-License-Identifier: MPL-2.0 +pragma solidity ^0.8.20; + +import "forge-std/Test.sol"; +import "../../HelperContract.sol"; +import "src/RuleEngine.sol"; +import "OZ/token/ERC20/IERC20.sol"; +import "src/mocks/rules/operation/RuleOperationRevert.sol"; +/** + * @title General functions of the RuleEngine + */ +contract RuleEngineOperationTestRevert is Test, HelperContract { + + // Arrange + function setUp() public { + // CMTAT + cmtatDeployment = new CMTATDeployment(); + CMTAT_CONTRACT = cmtatDeployment.cmtat(); + + vm.prank(RULE_ENGINE_OPERATOR_ADDRESS); + ruleEngineMock = new RuleEngine( + RULE_ENGINE_OPERATOR_ADDRESS, + ZERO_ADDRESS, + address(CMTAT_CONTRACT) + ); + RuleOperationRevert ruleOperationRevert = new RuleOperationRevert( + ); + + vm.prank(RULE_ENGINE_OPERATOR_ADDRESS); + ruleEngineMock.addRuleOperation(ruleOperationRevert); + // Arrange - Assert + resUint256 = ruleEngineMock.rulesCountOperation(); + assertEq(resUint256, 1); + + vm.prank(DEFAULT_ADMIN_ADDRESS); + CMTAT_CONTRACT.setRuleEngine(ruleEngineMock); + } + + function testRuleEngineTransferredRevert() public { + // Arrange + vm.expectRevert(RuleOperationRevert.RuleConditionalTransferLight_InvalidTransfer.selector); + // Act + CMTAT_CONTRACT.transfer(ADDRESS2, 21); + } +} \ No newline at end of file diff --git a/test/RuleEngine/ruleEngineOperation/RuleEngineRestriction.t.sol b/test/RuleEngine/ruleEngineOperation/RuleEngineRestriction.t.sol index 336a9d6..64718aa 100644 --- a/test/RuleEngine/ruleEngineOperation/RuleEngineRestriction.t.sol +++ b/test/RuleEngine/ruleEngineOperation/RuleEngineRestriction.t.sol @@ -12,39 +12,6 @@ import "OZ/token/ERC20/IERC20.sol"; contract RuleEngineOperationTest is Test, HelperContract { uint256 defaultValue = 20; - TIME_LIMIT timeLimit_ = - TIME_LIMIT({ - timeLimitToApprove: DEFAULT_TIME_LIMIT_TO_APPROVE, - timeLimitToTransfer: DEFAULT_TIME_LIMIT_TO_TRANSFER - }); - ISSUANCE issuanceOption_ = - ISSUANCE({ - authorizedMintWithoutApproval: false, - authorizedBurnWithoutApproval: false - }); - - AUTOMATIC_APPROVAL automaticApproval_ = - AUTOMATIC_APPROVAL({ - isActivate: false, - timeLimitBeforeAutomaticApproval: 0 - }); - AUTOMATIC_TRANSFER automaticTransfer_ = - AUTOMATIC_TRANSFER({isActivate: false, cmtat: IERC20(address(0))}); - OPTION options = - OPTION({ - issuance: issuanceOption_, - timeLimit: timeLimit_, - automaticApproval: automaticApproval_, - automaticTransfer: automaticTransfer_ - }); - - TransferRequestKeyElement transferRequestInput = - TransferRequestKeyElement({ - from: ADDRESS1, - to: ADDRESS2, - value: defaultValue - }); - // Arrange function setUp() public { vm.prank(RULE_ENGINE_OPERATOR_ADDRESS); @@ -53,15 +20,13 @@ contract RuleEngineOperationTest is Test, HelperContract { ZERO_ADDRESS, ZERO_ADDRESS ); - ruleConditionalTransfer = new RuleConditionalTransfer( + ruleConditionalTransferLight = new RuleConditionalTransferLight( CONDITIONAL_TRANSFER_OPERATOR_ADDRESS, - ZERO_ADDRESS, - ruleEngineMock, - options + ruleEngineMock ); vm.prank(RULE_ENGINE_OPERATOR_ADDRESS); - ruleEngineMock.addRuleOperation(ruleConditionalTransfer); + ruleEngineMock.addRuleOperation(ruleConditionalTransferLight); // Arrange - Assert resUint256 = ruleEngineMock.rulesCountOperation(); assertEq(resUint256, 1); @@ -70,11 +35,11 @@ contract RuleEngineOperationTest is Test, HelperContract { function testCanDetectTransferRestrictionOK() public { // Arrange vm.prank(CONDITIONAL_TRANSFER_OPERATOR_ADDRESS); - bytes32 key = keccak256(abi.encode(ADDRESS1, ADDRESS2, defaultValue)); + vm.expectEmit(true, true, true, true); - emit transferApproved(key, ADDRESS1, ADDRESS2, defaultValue, 0); - ruleConditionalTransfer.createTransferRequestWithApproval( - transferRequestInput + emit TransferApproved(ADDRESS1, ADDRESS2, defaultValue, 1); + ruleConditionalTransferLight.approveTransfer( + ADDRESS1, ADDRESS2, defaultValue ); // Act resUint8 = ruleEngineMock.detectTransferRestriction( @@ -85,6 +50,36 @@ contract RuleEngineOperationTest is Test, HelperContract { // Assert assertEq(resUint8, 0); + + resUint8 = ruleEngineMock.detectTransferRestrictionFrom( + address(0), + ADDRESS1, + ADDRESS2, + defaultValue + ); + + // Assert + assertEq(resUint8, 0); + + resBool = ruleEngineMock.canTransfer( + ADDRESS1, + ADDRESS2, + defaultValue + ); + + // Assert + assertEq(resBool, true ); + + + resBool = ruleEngineMock.canTransferFrom( + ADDRESS3, + ADDRESS1, + ADDRESS2, + defaultValue + ); + + // Assert + assertEq(resBool,true); } function testCanDetectTransferRestrictionNotOk() public { @@ -97,6 +92,38 @@ contract RuleEngineOperationTest is Test, HelperContract { // Assert assertEq(resUint8, CODE_TRANSFER_REQUEST_NOT_APPROVED); + + // Act + resUint8 = ruleEngineMock.detectTransferRestrictionFrom( + ADDRESS3, + ADDRESS1, + ADDRESS2, + 20 + ); + + // Assert + assertEq(resUint8, CODE_TRANSFER_REQUEST_NOT_APPROVED); + + // Act + resBool = ruleEngineMock.canTransfer( + ADDRESS1, + ADDRESS2, + 20 + ); + + // Assert + assertFalse(resBool); + + // Act + resBool = ruleEngineMock.canTransferFrom( + ADDRESS3, + ADDRESS1, + ADDRESS2, + 20 + ); + + // Assert + assertFalse(resBool); } function testMessageForTransferRestrictionNoRule() public { @@ -130,4 +157,4 @@ contract RuleEngineOperationTest is Test, HelperContract { // Assert assertEq(resString, TEXT_TRANSFER_REQUEST_NOT_APPROVED); } -} +} \ No newline at end of file diff --git a/test/RuleEngine/ruleEngineValidation/RuleEngineRestriction.t.sol b/test/RuleEngine/ruleEngineValidation/RuleEngineRestriction.t.sol index 02a55dd..4168acc 100644 --- a/test/RuleEngine/ruleEngineValidation/RuleEngineRestriction.t.sol +++ b/test/RuleEngine/ruleEngineValidation/RuleEngineRestriction.t.sol @@ -75,7 +75,35 @@ contract RuleEngineRestrictionTest is Test, HelperContract { assertEq(resUint8, 0); } + function testCanDetectTransferRestrictionWithSpender() public { + // Act + resUint8 = ruleEngineMock.detectTransferRestrictionFrom( + ADDRESS3, + ADDRESS1, + ADDRESS2, + 20 + ); + + // Assert + assertEq(resUint8, CODE_ADDRESS_SPENDER_NOT_WHITELISTED); + + // ruleEngineValidation + + // Act + resBool = ruleEngineMock.canTransferFrom( + ADDRESS3, + ADDRESS1, + ADDRESS2, + 20 + ); + // Assert + assertFalse(resBool); + } + function testCanDetectTransferRestrictionWithFrom() public { + // Arrange + vm.prank(WHITELIST_OPERATOR_ADDRESS); + ruleWhitelist1.addAddressToTheList(ADDRESS3); // Act resUint8 = ruleEngineMock.detectTransferRestriction( ADDRESS1, @@ -86,6 +114,18 @@ contract RuleEngineRestrictionTest is Test, HelperContract { // Assert assertEq(resUint8, CODE_ADDRESS_FROM_NOT_WHITELISTED); + + // Act + resUint8 = ruleEngineMock.detectTransferRestrictionFrom( + ADDRESS3, + ADDRESS1, + ADDRESS2, + 20 + ); + + // Assert + assertEq(resUint8, CODE_ADDRESS_FROM_NOT_WHITELISTED); + // ruleEngineValidation // Act @@ -97,8 +137,27 @@ contract RuleEngineRestrictionTest is Test, HelperContract { // Assert assertEq(resUint8, CODE_ADDRESS_FROM_NOT_WHITELISTED); + + // Act + resBool = ruleEngineMock.canTransferFrom( + ADDRESS3, + ADDRESS1, + ADDRESS2, + 20 + ); + // Assert + assertFalse(resBool); + + resBool = ruleEngineMock.canTransfer( + ADDRESS1, + ADDRESS2, + 20 + ); + // Assert + assertFalse(resBool); } + function testCanDetectTransferRestrictionWithTo() public { // Arrange vm.prank(WHITELIST_OPERATOR_ADDRESS); @@ -125,6 +184,24 @@ contract RuleEngineRestrictionTest is Test, HelperContract { // Assert assertEq(resUint8, CODE_ADDRESS_TO_NOT_WHITELISTED); + + // Assert + resBool = ruleEngineMock.canTransfer( + ADDRESS1, + ADDRESS2, + 20 + ); + // Assert + assertFalse(resBool); + + resBool = ruleEngineMock.canTransferFrom( + ADDRESS3, + ADDRESS1, + ADDRESS2, + 20 + ); + // Assert + assertFalse(resBool); } function testMessageForTransferRestrictionWithValidRC() public { @@ -204,4 +281,4 @@ contract RuleEngineRestrictionTest is Test, HelperContract { // Assert assertFalse(resBool); } -} +} \ No newline at end of file diff --git a/test/RuleEngine/ruleEngineValidation/RuleEngineValidation.t.sol b/test/RuleEngine/ruleEngineValidation/RuleEngineValidation.t.sol index a84cffc..b80cd93 100644 --- a/test/RuleEngine/ruleEngineValidation/RuleEngineValidation.t.sol +++ b/test/RuleEngine/ruleEngineValidation/RuleEngineValidation.t.sol @@ -134,6 +134,15 @@ contract RuleEngineValidationTest is Test, HelperContract { // false because the ruleWhitelist is still present resBool = ruleEngineMock.canTransfer(ADDRESS1, ADDRESS2, 20); assertFalse(resBool); + + resBool = ruleEngineMock.canTransferFrom( + ADDRESS3, + ADDRESS1, + ADDRESS2, + 20 + ); + // Assert + assertFalse(resBool); } function testCannotSetEmptyRulesT2() public { @@ -159,6 +168,15 @@ contract RuleEngineValidationTest is Test, HelperContract { // false because the ruleWhitelist is still present resBool = ruleEngineMock.canTransfer(ADDRESS1, ADDRESS2, 20); assertFalse(resBool); + + resBool = ruleEngineMock.canTransferFrom( + ADDRESS3, + ADDRESS1, + ADDRESS2, + 20 + ); + // Assert + assertFalse(resBool); } function testCanClearRules() public { diff --git a/test/RuleSanctionList/RuleSanctionListAddTest.t.sol b/test/RuleSanctionList/RuleSanctionListAddTest.t.sol deleted file mode 100644 index 2a92081..0000000 --- a/test/RuleSanctionList/RuleSanctionListAddTest.t.sol +++ /dev/null @@ -1,62 +0,0 @@ -// SPDX-License-Identifier: MPL-2.0 -pragma solidity ^0.8.20; - -import "forge-std/Test.sol"; -import "../HelperContract.sol"; -import "src/RuleEngine.sol"; -import "../utils/SanctionListOracle.sol"; -import {RuleSanctionList, SanctionsList} from "src/rules/validation/RuleSanctionList.sol"; -/** - * @title General functions of the ruleSanctionList - */ -contract RuleSanctionlistAddTest is Test, HelperContract { - // Custom error openZeppelin - error AccessControlUnauthorizedAccount(address account, bytes32 neededRole); - SanctionListOracle sanctionlistOracle; - RuleSanctionList ruleSanctionList; - - // Arrange - function setUp() public { - vm.prank(SANCTIONLIST_OPERATOR_ADDRESS); - sanctionlistOracle = new SanctionListOracle(); - sanctionlistOracle.addToSanctionsList(ATTACKER); - ruleSanctionList = new RuleSanctionList( - SANCTIONLIST_OPERATOR_ADDRESS, - ZERO_ADDRESS, - ZERO_ADDRESS - ); - } - - function testCanSetandRemoveOracle() public { - // ADD - vm.prank(SANCTIONLIST_OPERATOR_ADDRESS); - emit SetSanctionListOracle(address(sanctionlistOracle)); - ruleSanctionList.setSanctionListOracle(address(sanctionlistOracle)); - - SanctionsList sanctionListOracleGet = ruleSanctionList.sanctionsList(); - // Assert - vm.assertEq( - address(sanctionListOracleGet), - address(sanctionlistOracle) - ); - // Remove - vm.prank(SANCTIONLIST_OPERATOR_ADDRESS); - emit SetSanctionListOracle(ZERO_ADDRESS); - ruleSanctionList.setSanctionListOracle(ZERO_ADDRESS); - // Assert - sanctionListOracleGet = ruleSanctionList.sanctionsList(); - vm.assertEq(address(sanctionListOracleGet), address(ZERO_ADDRESS)); - } - - function testCannotAttackerSetOracle() public { - vm.prank(ATTACKER); - vm.expectRevert( - abi.encodeWithSelector( - AccessControlUnauthorizedAccount.selector, - ATTACKER, - SANCTIONLIST_ROLE - ) - ); - ruleSanctionList.setSanctionListOracle(address(sanctionlistOracle)); - } -} diff --git a/test/RuleSanctionList/RuleSanctionListDeploymentTest.t.sol b/test/RuleSanctionList/RuleSanctionListDeploymentTest.t.sol deleted file mode 100644 index ee2e75f..0000000 --- a/test/RuleSanctionList/RuleSanctionListDeploymentTest.t.sol +++ /dev/null @@ -1,74 +0,0 @@ -// SPDX-License-Identifier: MPL-2.0 -pragma solidity ^0.8.20; - -import "forge-std/Test.sol"; -import "../HelperContract.sol"; -import "CMTAT/mocks/MinimalForwarderMock.sol"; -import "../utils/SanctionListOracle.sol"; -import {RuleSanctionList, SanctionsList} from "src/rules/validation/RuleSanctionList.sol"; -/** - * @title General functions of the ruleSanctionList - */ -contract RuleSanctionListDeploymentTest is Test, HelperContract { - RuleSanctionList ruleSanctionList; - SanctionListOracle sanctionlistOracle; - event Testa(); - - // Arrange - function setUp() public {} - - function testRightDeployment() public { - // Arrange - vm.prank(SANCTIONLIST_OPERATOR_ADDRESS); - MinimalForwarderMock forwarder = new MinimalForwarderMock(); - forwarder.initialize(ERC2771ForwarderDomain); - vm.prank(SANCTIONLIST_OPERATOR_ADDRESS); - ruleSanctionList = new RuleSanctionList( - SANCTIONLIST_OPERATOR_ADDRESS, - address(forwarder), - ZERO_ADDRESS - ); - - // assert - resBool = ruleSanctionList.hasRole( - SANCTIONLIST_ROLE, - SANCTIONLIST_OPERATOR_ADDRESS - ); - assertEq(resBool, true); - resBool = ruleSanctionList.isTrustedForwarder(address(forwarder)); - assertEq(resBool, true); - } - - function testCannotDeployContractIfAdminAddressIsZero() public { - // Arrange - vm.prank(SANCTIONLIST_OPERATOR_ADDRESS); - MinimalForwarderMock forwarder = new MinimalForwarderMock(); - forwarder.initialize(ERC2771ForwarderDomain); - vm.expectRevert( - RuleSanctionList_AdminWithAddressZeroNotAllowed.selector - ); - vm.prank(SANCTIONLIST_OPERATOR_ADDRESS); - ruleSanctionList = new RuleSanctionList( - address(0), - address(forwarder), - ZERO_ADDRESS - ); - } - - function testCanSetAnOracleAtDeployment() public { - sanctionlistOracle = new SanctionListOracle(); - vm.prank(SANCTIONLIST_OPERATOR_ADDRESS); - // TODO: Event seems not checked by Foundry at deployment - emit SetSanctionListOracle(address(sanctionlistOracle)); - - ruleSanctionList = new RuleSanctionList( - SANCTIONLIST_OPERATOR_ADDRESS, - ZERO_ADDRESS, - address(sanctionlistOracle) - ); - assertEq( - address(ruleSanctionList.sanctionsList()), - address(sanctionlistOracle) - ); - } -} diff --git a/test/RuleSanctionList/RuleSanctionListTest.t.sol b/test/RuleSanctionList/RuleSanctionListTest.t.sol deleted file mode 100644 index 7060d40..0000000 --- a/test/RuleSanctionList/RuleSanctionListTest.t.sol +++ /dev/null @@ -1,128 +0,0 @@ -// SPDX-License-Identifier: MPL-2.0 -pragma solidity ^0.8.20; - -import "forge-std/Test.sol"; -import "../HelperContract.sol"; -import "src/RuleEngine.sol"; -import "../utils/SanctionListOracle.sol"; -import {RuleSanctionList, SanctionsList} from "src/rules/validation/RuleSanctionList.sol"; -/** - * @title General functions of the ruleSanctionList - */ -contract RuleSanctionlistTest is Test, HelperContract { - SanctionListOracle sanctionlistOracle; - RuleSanctionList ruleSanctionList; - - // Arrange - function setUp() public { - vm.prank(SANCTIONLIST_OPERATOR_ADDRESS); - sanctionlistOracle = new SanctionListOracle(); - sanctionlistOracle.addToSanctionsList(ATTACKER); - ruleSanctionList = new RuleSanctionList( - SANCTIONLIST_OPERATOR_ADDRESS, - ZERO_ADDRESS, - ZERO_ADDRESS - ); - vm.prank(SANCTIONLIST_OPERATOR_ADDRESS); - ruleSanctionList.setSanctionListOracle(address(sanctionlistOracle)); - } - - function testCanReturnTransferRestrictionCode() public { - // Act - resBool = ruleSanctionList.canReturnTransferRestrictionCode( - CODE_ADDRESS_FROM_IS_SANCTIONED - ); - // Assert - assertEq(resBool, true); - // Act - resBool = ruleSanctionList.canReturnTransferRestrictionCode( - CODE_ADDRESS_TO_IS_SANCTIONED - ); - // Assert - assertEq(resBool, true); - // Act - resBool = ruleSanctionList.canReturnTransferRestrictionCode( - CODE_NONEXISTENT - ); - // Assert - assertFalse(resBool); - } - - function testReturnTheRightMessageForAGivenCode() public { - // Assert - resString = ruleSanctionList.messageForTransferRestriction( - CODE_ADDRESS_FROM_IS_SANCTIONED - ); - // Assert - assertEq(resString, TEXT_ADDRESS_FROM_IS_SANCTIONED); - // Act - resString = ruleSanctionList.messageForTransferRestriction( - CODE_ADDRESS_TO_IS_SANCTIONED - ); - // Assert - assertEq(resString, TEXT_ADDRESS_TO_IS_SANCTIONED); - // Act - resString = ruleSanctionList.messageForTransferRestriction( - CODE_NONEXISTENT - ); - // Assert - assertEq(resString, TEXT_CODE_NOT_FOUND); - } - - function testcanTransfer() public { - // Act - // ADDRESS1 -> ADDRESS2 - resBool = ruleSanctionList.canTransfer(ADDRESS1, ADDRESS2, 20); - assertEq(resBool, true); - // ADDRESS2 -> ADDRESS1 - resBool = ruleSanctionList.canTransfer(ADDRESS2, ADDRESS1, 20); - assertEq(resBool, true); - } - - function testTransferFromDetectedAsInvalid() public { - // Act - resBool = ruleSanctionList.canTransfer(ATTACKER, ADDRESS2, 20); - // Assert - assertFalse(resBool); - } - - function testTransferToDetectedAsInvalid() public { - // Act - resBool = ruleSanctionList.canTransfer(ADDRESS1, ATTACKER, 20); - // Assert - assertFalse(resBool); - } - - function testDetectTransferRestrictionFrom() public { - // Act - resUint8 = ruleSanctionList.detectTransferRestriction( - ATTACKER, - ADDRESS2, - 20 - ); - // Assert - assertEq(resUint8, CODE_ADDRESS_FROM_IS_SANCTIONED); - } - - function testDetectTransferRestrictionTo() public { - // Act - resUint8 = ruleSanctionList.detectTransferRestriction( - ADDRESS1, - ATTACKER, - 20 - ); - // Assert - assertEq(resUint8, CODE_ADDRESS_TO_IS_SANCTIONED); - } - - function testDetectTransferRestrictionOk() public { - // Act - resUint8 = ruleSanctionList.detectTransferRestriction( - ADDRESS1, - ADDRESS2, - 20 - ); - // Assert - assertEq(resUint8, NO_ERROR); - } -} diff --git a/test/RuleWhitelist/CMTATIntegration.t.sol b/test/RuleWhitelist/CMTATIntegration.t.sol index 246d9db..d64707b 100644 --- a/test/RuleWhitelist/CMTATIntegration.t.sol +++ b/test/RuleWhitelist/CMTATIntegration.t.sol @@ -98,6 +98,32 @@ contract CMTATIntegration is Test, HelperContract { CMTAT_CONTRACT.transfer(ADDRESS2, amount); } + function testCannotTransferWithoutSpenderAddressWhitelisted() public { + // Arrange + uint256 amount = 21; + vm.prank(ADDRESS1); + CMTAT_CONTRACT.approve(ADDRESS3, amount); + + vm.prank(DEFAULT_ADMIN_ADDRESS); + ruleWhitelist.addAddressToTheList(ADDRESS1); + vm.prank(DEFAULT_ADMIN_ADDRESS); + ruleWhitelist.addAddressToTheList(ADDRESS2); + + + + vm.prank(ADDRESS3); + vm.expectRevert( + abi.encodeWithSelector( + RuleEngine_InvalidTransfer.selector, + ADDRESS1, + ADDRESS2, + amount + ) + ); + // Act + CMTAT_CONTRACT.transferFrom(ADDRESS1, ADDRESS2, amount); + } + function testCanMakeATransfer() public { // Arrange address[] memory whitelist = new address[](2); diff --git a/test/RuleWhitelist/CMTATIntegrationWhitelistWrapper.t.sol b/test/RuleWhitelist/CMTATIntegrationWhitelistWrapper.t.sol deleted file mode 100644 index 5786da9..0000000 --- a/test/RuleWhitelist/CMTATIntegrationWhitelistWrapper.t.sol +++ /dev/null @@ -1,322 +0,0 @@ -// SPDX-License-Identifier: MPL-2.0 -pragma solidity ^0.8.20; - -import "forge-std/Test.sol"; -import "CMTAT/deployment/CMTATStandalone.sol"; -import "../HelperContract.sol"; -import "src/RuleEngine.sol"; - -/** - * @title Integration test with the CMTAT - */ -contract CMTATIntegrationWhitelistWrapper is Test, HelperContract { - uint256 ADDRESS1_BALANCE_INIT = 31; - uint256 ADDRESS2_BALANCE_INIT = 32; - uint256 ADDRESS3_BALANCE_INIT = 33; - - uint256 FLAG = 5; - RuleWhitelist ruleWhitelist2; - RuleWhitelist ruleWhitelist3; - RuleWhitelistWrapper ruleWhitelistWrapper; - - // Arrange - function setUp() public { - vm.prank(DEFAULT_ADMIN_ADDRESS); - ruleWhitelist = new RuleWhitelist(DEFAULT_ADMIN_ADDRESS, ZERO_ADDRESS); - ruleWhitelist2 = new RuleWhitelist(DEFAULT_ADMIN_ADDRESS, ZERO_ADDRESS); - ruleWhitelist3 = new RuleWhitelist(DEFAULT_ADMIN_ADDRESS, ZERO_ADDRESS); - ruleWhitelistWrapper = new RuleWhitelistWrapper( - DEFAULT_ADMIN_ADDRESS, - ZERO_ADDRESS - ); - vm.prank(DEFAULT_ADMIN_ADDRESS); - ruleWhitelistWrapper.addRuleValidation(ruleWhitelist); - vm.prank(DEFAULT_ADMIN_ADDRESS); - ruleWhitelistWrapper.addRuleValidation(ruleWhitelist2); - vm.prank(DEFAULT_ADMIN_ADDRESS); - ruleWhitelistWrapper.addRuleValidation(ruleWhitelist3); - // global arrange - cmtatDeployment = new CMTATDeployment(); - CMTAT_CONTRACT = cmtatDeployment.cmtat(); - // specific arrange - vm.prank(DEFAULT_ADMIN_ADDRESS); - ruleEngineMock = new RuleEngine( - DEFAULT_ADMIN_ADDRESS, - ZERO_ADDRESS, - address(CMTAT_CONTRACT) - ); - vm.prank(DEFAULT_ADMIN_ADDRESS); - ruleEngineMock.addRuleValidation(ruleWhitelistWrapper); - vm.prank(DEFAULT_ADMIN_ADDRESS); - CMTAT_CONTRACT.mint(ADDRESS1, ADDRESS1_BALANCE_INIT); - vm.prank(DEFAULT_ADMIN_ADDRESS); - CMTAT_CONTRACT.mint(ADDRESS2, ADDRESS2_BALANCE_INIT); - vm.prank(DEFAULT_ADMIN_ADDRESS); - CMTAT_CONTRACT.mint(ADDRESS3, ADDRESS3_BALANCE_INIT); - vm.prank(DEFAULT_ADMIN_ADDRESS); - // We set the Rule Engine - CMTAT_CONTRACT.setRuleEngine(ruleEngineMock); - } - - /******* Deployment *******/ - - function testCannotDeployContractIfAdminAddressIsZero() public { - vm.prank(WHITELIST_OPERATOR_ADDRESS); - vm.expectRevert(RuleEngine_AdminWithAddressZeroNotAllowed.selector); - ruleWhitelistWrapper = new RuleWhitelistWrapper( - ZERO_ADDRESS, - ZERO_ADDRESS - ); - } - - /******* Transfer *******/ - function testCannotTransferWithoutAddressWhitelisted() public { - // Arrange - vm.prank(ADDRESS1); - vm.expectRevert( - abi.encodeWithSelector( - RuleEngine_InvalidTransfer.selector, - ADDRESS1, - ADDRESS2, - 21 - ) - ); - // Act - CMTAT_CONTRACT.transfer(ADDRESS2, 21); - } - - function testCannotTransferWithoutFromAddressWhitelisted() public { - // Arrange - uint256 amount = 21; - vm.prank(DEFAULT_ADMIN_ADDRESS); - ruleWhitelist.addAddressToTheList(ADDRESS2); - - vm.prank(ADDRESS1); - vm.expectRevert( - abi.encodeWithSelector( - RuleEngine_InvalidTransfer.selector, - ADDRESS1, - ADDRESS2, - amount - ) - ); - // Act - CMTAT_CONTRACT.transfer(ADDRESS2, amount); - } - - function testCannotTransferWithoutToAddressWhitelisted() public { - // Arrange - uint256 amount = 21; - vm.prank(DEFAULT_ADMIN_ADDRESS); - ruleWhitelist.addAddressToTheList(ADDRESS1); - - vm.prank(ADDRESS1); - vm.expectRevert( - abi.encodeWithSelector( - RuleEngine_InvalidTransfer.selector, - ADDRESS1, - ADDRESS2, - amount - ) - ); - // Act - CMTAT_CONTRACT.transfer(ADDRESS2, amount); - } - - function testCanMakeATransferIfWhitelistedInSeveralDifferentList() public { - // Arrange - vm.prank(DEFAULT_ADMIN_ADDRESS); - ruleWhitelist.addAddressToTheList(ADDRESS1); - vm.prank(DEFAULT_ADMIN_ADDRESS); - ruleWhitelist3.addAddressToTheList(ADDRESS1); - - vm.prank(DEFAULT_ADMIN_ADDRESS); - ruleWhitelist2.addAddressToTheList(ADDRESS2); - vm.prank(DEFAULT_ADMIN_ADDRESS); - ruleWhitelist3.addAddressToTheList(ADDRESS2); - - // Act - vm.prank(ADDRESS1); - CMTAT_CONTRACT.transfer(ADDRESS2, 11); - - // Assert - resUint256 = CMTAT_CONTRACT.balanceOf(ADDRESS1); - assertEq(resUint256, 20); - resUint256 = CMTAT_CONTRACT.balanceOf(ADDRESS2); - assertEq(resUint256, 43); - resUint256 = CMTAT_CONTRACT.balanceOf(ADDRESS3); - assertEq(resUint256, 33); - } - - function testCanMakeATransferIfWhitelistedInDifferentList() public { - // Arrange - vm.prank(DEFAULT_ADMIN_ADDRESS); - ruleWhitelist.addAddressToTheList(ADDRESS1); - - vm.prank(DEFAULT_ADMIN_ADDRESS); - ruleWhitelist2.addAddressToTheList(ADDRESS2); - - // Act - vm.prank(ADDRESS1); - CMTAT_CONTRACT.transfer(ADDRESS2, 11); - - // Assert - resUint256 = CMTAT_CONTRACT.balanceOf(ADDRESS1); - assertEq(resUint256, 20); - resUint256 = CMTAT_CONTRACT.balanceOf(ADDRESS2); - assertEq(resUint256, 43); - resUint256 = CMTAT_CONTRACT.balanceOf(ADDRESS3); - assertEq(resUint256, 33); - } - - function testCanMakeATransfer() public { - // Arrange - address[] memory whitelist = new address[](2); - whitelist[0] = ADDRESS1; - whitelist[1] = ADDRESS2; - vm.prank(DEFAULT_ADMIN_ADDRESS); - (bool success, ) = address(ruleWhitelist).call( - abi.encodeWithSignature( - "addAddressesToTheList(address[])", - whitelist - ) - ); - require(success); - - // Act - vm.prank(ADDRESS1); - CMTAT_CONTRACT.transfer(ADDRESS2, 11); - - // Assert - resUint256 = CMTAT_CONTRACT.balanceOf(ADDRESS1); - assertEq(resUint256, 20); - resUint256 = CMTAT_CONTRACT.balanceOf(ADDRESS2); - assertEq(resUint256, 43); - resUint256 = CMTAT_CONTRACT.balanceOf(ADDRESS3); - assertEq(resUint256, 33); - } - - /******* detectTransferRestriction & messageForTransferRestriction *******/ - function testDetectAndMessageWithFromNotWhitelisted() public { - vm.prank(DEFAULT_ADMIN_ADDRESS); - ruleWhitelist.addAddressToTheList(ADDRESS2); - resBool = ruleWhitelist.addressIsListed(ADDRESS2); - // Assert - assertEq(resBool, true); - uint8 res1 = CMTAT_CONTRACT.detectTransferRestriction( - ADDRESS1, - ADDRESS2, - 11 - ); - // Assert - assertEq(res1, CODE_ADDRESS_FROM_NOT_WHITELISTED); - string memory message1 = CMTAT_CONTRACT.messageForTransferRestriction( - res1 - ); - // Assert - assertEq(message1, TEXT_ADDRESS_FROM_NOT_WHITELISTED); - } - - function testDetectAndMessageWithToNotWhitelisted() public { - // Arrange - // We add the sender to the whitelist - vm.prank(DEFAULT_ADMIN_ADDRESS); - ruleWhitelist.addAddressToTheList(ADDRESS1); - // Arrange - Assert - resBool = ruleWhitelist.addressIsListed(ADDRESS1); - assertEq(resBool, true); - // Act - uint8 res1 = CMTAT_CONTRACT.detectTransferRestriction( - ADDRESS1, - ADDRESS2, - 11 - ); - // Assert - assertEq(res1, CODE_ADDRESS_TO_NOT_WHITELISTED); - // Act - string memory message1 = CMTAT_CONTRACT.messageForTransferRestriction( - res1 - ); - // Assert - assertEq(message1, TEXT_ADDRESS_TO_NOT_WHITELISTED); - } - - function testDetectAndMessageWithFromAndToNotWhitelisted() public view { - // Act - uint8 res1 = CMTAT_CONTRACT.detectTransferRestriction( - ADDRESS1, - ADDRESS2, - 11 - ); - - // Assert - assertEq(res1, CODE_ADDRESS_FROM_NOT_WHITELISTED); - // Act - string memory message1 = CMTAT_CONTRACT.messageForTransferRestriction( - res1 - ); - - // Assert - assertEq(message1, TEXT_ADDRESS_FROM_NOT_WHITELISTED); - } - - function testCanReturnUnknownTextMessage() public view { - // Act - string memory message1 = CMTAT_CONTRACT.messageForTransferRestriction( - 200 - ); - - // Assert - assertEq(message1, TEXT_CODE_NOT_FOUND); - } - - function testDetectAndMessageWithAValidTransfer() public { - // Arrange - // We add the sender and the recipient to the whitelist. - address[] memory whitelist = new address[](2); - whitelist[0] = ADDRESS1; - whitelist[1] = ADDRESS2; - vm.prank(DEFAULT_ADMIN_ADDRESS); - (bool success, ) = address(ruleWhitelist).call( - abi.encodeWithSignature( - "addAddressesToTheList(address[])", - whitelist - ) - ); - require(success); - // Act - uint8 res1 = CMTAT_CONTRACT.detectTransferRestriction( - ADDRESS1, - ADDRESS2, - 11 - ); - // Assert - assertEq(res1, TRANSFER_OK); - // Act - string memory message1 = CMTAT_CONTRACT.messageForTransferRestriction( - res1 - ); - // Assert - assertEq(message1, TEXT_TRANSFER_OK); - } - - function testCanMint() public { - // Arrange - // Add address zero to the whitelist - vm.prank(DEFAULT_ADMIN_ADDRESS); - ruleWhitelist.addAddressToTheList(ZERO_ADDRESS); - vm.prank(DEFAULT_ADMIN_ADDRESS); - ruleWhitelist.addAddressToTheList(ADDRESS1); - // Arrange - Assert - resBool = ruleWhitelist.addressIsListed(ZERO_ADDRESS); - assertEq(resBool, true); - - // Act - vm.prank(DEFAULT_ADMIN_ADDRESS); - CMTAT_CONTRACT.mint(ADDRESS1, 11); - - // Assert - resUint256 = CMTAT_CONTRACT.balanceOf(ADDRESS1); - assertEq(resUint256, ADDRESS1_BALANCE_INIT + 11); - } -} diff --git a/test/RuleWhitelist/RuleWhitelist.t.sol b/test/RuleWhitelist/RuleWhitelist.t.sol index 76af66b..127baaa 100644 --- a/test/RuleWhitelist/RuleWhitelist.t.sol +++ b/test/RuleWhitelist/RuleWhitelist.t.sol @@ -131,7 +131,7 @@ contract RuleWhitelistTest is Test, HelperContract { assertEq(resString, TEXT_CODE_NOT_FOUND); } - function testcanTransfer() public { + function testCanTransfer() public { // Arrange _addAddressesToTheList(); // Act @@ -141,6 +141,16 @@ contract RuleWhitelistTest is Test, HelperContract { // ADDRESS2 -> ADDRESS1 resBool = ruleWhitelist.canTransfer(ADDRESS2, ADDRESS1, 20); assertEq(resBool, true); + + // Spender is not whitelisted + resBool = ruleWhitelist.canTransferFrom(ADDRESS3, ADDRESS2, ADDRESS1, 20); + assertEq(resBool, false); + + vm.prank(WHITELIST_OPERATOR_ADDRESS); + ruleWhitelist.addAddressToTheList(ADDRESS3); + + resBool = ruleWhitelist.canTransferFrom(ADDRESS3, ADDRESS2, ADDRESS1, 20); + assertEq(resBool, true); } function testTransferDetectedAsInvalid() public { From 3a30f6ba44448e1344434f0ca950d8305e77ddba Mon Sep 17 00:00:00 2001 From: Ryan Sauge <71391932+rya-sge@users.noreply.github.com> Date: Tue, 22 Jul 2025 14:50:13 +0200 Subject: [PATCH 02/17] Update release version, improve tests --- CHANGELOG.md | 5 + doc/coverage/coverage/index-sort-b.html | 44 ++-- doc/coverage/coverage/index-sort-f.html | 34 +-- doc/coverage/coverage/index-sort-l.html | 34 +-- doc/coverage/coverage/index.html | 34 +-- .../src/RuleEngine.sol.func-sort-c.html | 34 +-- .../coverage/src/RuleEngine.sol.func.html | 30 +-- .../coverage/src/RuleEngine.sol.gcov.html | 116 ++++----- doc/coverage/coverage/src/index-sort-b.html | 20 +- doc/coverage/coverage/src/index-sort-f.html | 20 +- doc/coverage/coverage/src/index-sort-l.html | 20 +- doc/coverage/coverage/src/index.html | 20 +- .../RuleEngineOperation.sol.func-sort-c.html | 14 +- .../modules/RuleEngineOperation.sol.func.html | 8 +- .../modules/RuleEngineOperation.sol.gcov.html | 20 +- .../RuleEngineValidation.sol.func-sort-c.html | 16 +- .../RuleEngineValidation.sol.func.html | 16 +- .../RuleEngineValidation.sol.gcov.html | 48 ++-- ...ngineValidationCommon.sol.func-sort-c.html | 4 +- .../RuleEngineValidationCommon.sol.func.html | 4 +- .../RuleEngineValidationCommon.sol.gcov.html | 8 +- .../modules/RuleInternal.sol.func-sort-c.html | 4 +- .../src/modules/RuleInternal.sol.func.html | 4 +- .../src/modules/RuleInternal.sol.gcov.html | 10 +- .../coverage/src/modules/index-sort-b.html | 32 +-- .../coverage/src/modules/index-sort-f.html | 30 +-- .../coverage/src/modules/index-sort-l.html | 20 +- doc/coverage/coverage/src/modules/index.html | 20 +- .../CMTATDeployment.sol.func-sort-c.html | 85 ------ .../test/utils/CMTATDeployment.sol.func.html | 85 ------ .../test/utils/CMTATDeployment.sol.gcov.html | 135 ---------- .../SanctionListOracle.sol.func-sort-c.html | 93 ------- .../utils/SanctionListOracle.sol.func.html | 93 ------- .../utils/SanctionListOracle.sol.gcov.html | 109 -------- .../coverage/test/utils/index-sort-b.html | 119 --------- .../coverage/test/utils/index-sort-f.html | 119 --------- .../coverage/test/utils/index-sort-l.html | 119 --------- doc/coverage/coverage/test/utils/index.html | 119 --------- doc/coverage/lcov.info | 242 ++++++++--------- src/RuleEngine.sol | 6 +- .../CMTATIntegration.t.sol | 246 ++++++++++++++++++ test/RuleWhitelist/CMTATIntegration.t.sol | 104 +++++++- test/RuleWhitelist/RuleWhitelist.t.sol | 16 +- 43 files changed, 825 insertions(+), 1534 deletions(-) delete mode 100644 doc/coverage/coverage/test/utils/CMTATDeployment.sol.func-sort-c.html delete mode 100644 doc/coverage/coverage/test/utils/CMTATDeployment.sol.func.html delete mode 100644 doc/coverage/coverage/test/utils/CMTATDeployment.sol.gcov.html delete mode 100644 doc/coverage/coverage/test/utils/SanctionListOracle.sol.func-sort-c.html delete mode 100644 doc/coverage/coverage/test/utils/SanctionListOracle.sol.func.html delete mode 100644 doc/coverage/coverage/test/utils/SanctionListOracle.sol.gcov.html delete mode 100644 doc/coverage/coverage/test/utils/index-sort-b.html delete mode 100644 doc/coverage/coverage/test/utils/index-sort-f.html delete mode 100644 doc/coverage/coverage/test/utils/index-sort-l.html delete mode 100644 doc/coverage/coverage/test/utils/index.html create mode 100644 test/RuleEngine/ruleEngineOperation/CMTATIntegration.t.sol diff --git a/CHANGELOG.md b/CHANGELOG.md index 22cc998..1431cd5 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -19,6 +19,11 @@ Please follow [https://changelog.md/](https://changelog.md/) conventions. +## v3.0.0-rc0 + +- Improve test +- Move rules contracts to a dedicated repository, only keep some rules as mock contracts for testing purpose + ## v2.1.0 - Update RuleEngine to CMTAT v3.0.0-rc5 diff --git a/doc/coverage/coverage/index-sort-b.html b/doc/coverage/coverage/index-sort-b.html index 1b0fac1..4df1d23 100644 --- a/doc/coverage/coverage/index-sort-b.html +++ b/doc/coverage/coverage/index-sort-b.html @@ -31,27 +31,27 @@ lcov.info Lines: - 172 + 175 177 - 97.2 % + 98.9 % Date: - 2025-07-21 17:42:16 + 2025-07-22 14:36:48 Functions: - 37 + 39 40 - 92.5 % + 97.5 % Branches: - 24 25 - 96.0 % + 25 + 100.0 % @@ -82,28 +82,28 @@ Branches Sort by branch coverage - src + src/modules -
95.2%95.2%
+
100.0%
- 95.2 % - 59 / 62 - 90.9 % - 10 / 11 - 92.3 % - 12 / 13 + 100.0 % + 115 / 115 + 100.0 % + 29 / 29 + 100.0 % + 12 / 12 - src/modules + src -
98.3%98.3%
+
96.8%96.8%
- 98.3 % - 113 / 115 - 93.1 % - 27 / 29 + 96.8 % + 60 / 62 + 90.9 % + 10 / 11 100.0 % - 12 / 12 + 13 / 13 diff --git a/doc/coverage/coverage/index-sort-f.html b/doc/coverage/coverage/index-sort-f.html index b7344ab..f424e13 100644 --- a/doc/coverage/coverage/index-sort-f.html +++ b/doc/coverage/coverage/index-sort-f.html @@ -31,27 +31,27 @@ lcov.info Lines: - 172 + 175 177 - 97.2 % + 98.9 % Date: - 2025-07-21 17:42:16 + 2025-07-22 14:36:48 Functions: - 37 + 39 40 - 92.5 % + 97.5 % Branches: - 24 25 - 96.0 % + 25 + 100.0 % @@ -84,24 +84,24 @@ src -
95.2%95.2%
+
96.8%96.8%
- 95.2 % - 59 / 62 + 96.8 % + 60 / 62 90.9 % 10 / 11 - 92.3 % - 12 / 13 + 100.0 % + 13 / 13 src/modules -
98.3%98.3%
+
100.0%
- 98.3 % - 113 / 115 - 93.1 % - 27 / 29 + 100.0 % + 115 / 115 + 100.0 % + 29 / 29 100.0 % 12 / 12 diff --git a/doc/coverage/coverage/index-sort-l.html b/doc/coverage/coverage/index-sort-l.html index edd4c6b..3a899d6 100644 --- a/doc/coverage/coverage/index-sort-l.html +++ b/doc/coverage/coverage/index-sort-l.html @@ -31,27 +31,27 @@ lcov.info Lines: - 172 + 175 177 - 97.2 % + 98.9 % Date: - 2025-07-21 17:42:16 + 2025-07-22 14:36:48 Functions: - 37 + 39 40 - 92.5 % + 97.5 % Branches: - 24 25 - 96.0 % + 25 + 100.0 % @@ -84,24 +84,24 @@ src -
95.2%95.2%
+
96.8%96.8%
- 95.2 % - 59 / 62 + 96.8 % + 60 / 62 90.9 % 10 / 11 - 92.3 % - 12 / 13 + 100.0 % + 13 / 13 src/modules -
98.3%98.3%
+
100.0%
- 98.3 % - 113 / 115 - 93.1 % - 27 / 29 + 100.0 % + 115 / 115 + 100.0 % + 29 / 29 100.0 % 12 / 12 diff --git a/doc/coverage/coverage/index.html b/doc/coverage/coverage/index.html index 79043b9..bc2511d 100644 --- a/doc/coverage/coverage/index.html +++ b/doc/coverage/coverage/index.html @@ -31,27 +31,27 @@ lcov.info Lines: - 172 + 175 177 - 97.2 % + 98.9 % Date: - 2025-07-21 17:42:16 + 2025-07-22 14:36:48 Functions: - 37 + 39 40 - 92.5 % + 97.5 % Branches: - 24 25 - 96.0 % + 25 + 100.0 % @@ -84,24 +84,24 @@ src -
95.2%95.2%
+
96.8%96.8%
- 95.2 % - 59 / 62 + 96.8 % + 60 / 62 90.9 % 10 / 11 - 92.3 % - 12 / 13 + 100.0 % + 13 / 13 src/modules -
98.3%98.3%
+
100.0%
- 98.3 % - 113 / 115 - 93.1 % - 27 / 29 + 100.0 % + 115 / 115 + 100.0 % + 29 / 29 100.0 % 12 / 12 diff --git a/doc/coverage/coverage/src/RuleEngine.sol.func-sort-c.html b/doc/coverage/coverage/src/RuleEngine.sol.func-sort-c.html index efb464a..0cb47e3 100644 --- a/doc/coverage/coverage/src/RuleEngine.sol.func-sort-c.html +++ b/doc/coverage/coverage/src/RuleEngine.sol.func-sort-c.html @@ -31,13 +31,13 @@ lcov.info Lines: - 59 + 60 62 - 95.2 % + 96.8 % Date: - 2025-07-21 17:42:16 + 2025-07-22 14:36:48 Functions: 10 @@ -49,9 +49,9 @@ Branches: - 12 13 - 92.3 % + 13 + 100.0 % @@ -74,43 +74,43 @@ RuleEngine.detectTransferRestrictionFrom - 4 + 9 - RuleEngine.canTransferFrom - 7 + RuleEngine.transferred + 10 - RuleEngine.transferred - 8 + RuleEngine.canTransferFrom + 13 RuleEngine.detectTransferRestriction - 9 + 13 RuleEngine.messageForTransferRestriction - 10 + 13 RuleEngine.canTransfer - 13 + 17 RuleEngine.constructor - 74 + 78 RuleEngine.hasRole - 93 + 101 RuleEngine._contextSuffixLength - 248 + 262 RuleEngine._msgSender - 248 + 262
diff --git a/doc/coverage/coverage/src/RuleEngine.sol.func.html b/doc/coverage/coverage/src/RuleEngine.sol.func.html index 24dcfda..1aa88ac 100644 --- a/doc/coverage/coverage/src/RuleEngine.sol.func.html +++ b/doc/coverage/coverage/src/RuleEngine.sol.func.html @@ -31,13 +31,13 @@ lcov.info Lines: - 59 + 60 62 - 95.2 % + 96.8 % Date: - 2025-07-21 17:42:16 + 2025-07-22 14:36:48 Functions: 10 @@ -49,9 +49,9 @@ Branches: - 12 13 - 92.3 % + 13 + 100.0 % @@ -70,7 +70,7 @@ RuleEngine._contextSuffixLength - 248 + 262 RuleEngine._msgData @@ -78,39 +78,39 @@ RuleEngine._msgSender - 248 + 262 RuleEngine.canTransfer - 13 + 17 RuleEngine.canTransferFrom - 7 + 13 RuleEngine.constructor - 74 + 78 RuleEngine.detectTransferRestriction - 9 + 13 RuleEngine.detectTransferRestrictionFrom - 4 + 9 RuleEngine.hasRole - 93 + 101 RuleEngine.messageForTransferRestriction - 10 + 13 RuleEngine.transferred - 8 + 10
diff --git a/doc/coverage/coverage/src/RuleEngine.sol.gcov.html b/doc/coverage/coverage/src/RuleEngine.sol.gcov.html index f8c0be1..d9cf2cf 100644 --- a/doc/coverage/coverage/src/RuleEngine.sol.gcov.html +++ b/doc/coverage/coverage/src/RuleEngine.sol.gcov.html @@ -31,13 +31,13 @@ lcov.info Lines: - 59 + 60 62 - 95.2 % + 96.8 % Date: - 2025-07-21 17:42:16 + 2025-07-22 14:36:48 Functions: 10 @@ -49,9 +49,9 @@ Branches: - 12 13 - 92.3 % + 13 + 100.0 % @@ -98,18 +98,18 @@ 27 : : * @param admin Address of the contract (Access Control) 28 : : * @param forwarderIrrevocable Address of the forwarder, required for the gasless support 29 : : */ - 30 : 74 : constructor( + 30 : 78 : constructor( 31 : : address admin, 32 : : address forwarderIrrevocable, 33 : : address tokenContract 34 : : ) MetaTxModuleStandalone(forwarderIrrevocable) { - 35 [ + ]: 74 : if (admin == address(0)) { + 35 [ + ]: 78 : if (admin == address(0)) { 36 : 1 : revert RuleEngine_AdminWithAddressZeroNotAllowed(); 37 : : } - 38 [ + ]: 73 : if (tokenContract != address(0)) { - 39 : 11 : _grantRole(TOKEN_CONTRACT_ROLE, tokenContract); + 38 [ + ]: 77 : if (tokenContract != address(0)) { + 39 : 15 : _grantRole(TOKEN_CONTRACT_ROLE, tokenContract); 40 : : } - 41 : 73 : _grantRole(DEFAULT_ADMIN_ROLE, admin); + 41 : 77 : _grantRole(DEFAULT_ADMIN_ROLE, admin); 42 : : } 43 : : 44 : : /** @@ -119,61 +119,61 @@ 48 : : * @param value to transfer 49 : : * @return The restricion code or REJECTED_CODE_BASE.TRANSFER_OK 50 : : **/ - 51 : 9 : function detectTransferRestriction( + 51 : 13 : function detectTransferRestriction( 52 : : address from, 53 : : address to, 54 : : uint256 value 55 : : ) public view override returns (uint8) { 56 : : // Validation - 57 : 29 : uint8 code = RuleEngineValidation.detectTransferRestrictionValidation( + 57 : 30 : uint8 code = RuleEngineValidation.detectTransferRestrictionValidation( 58 : : from, 59 : : to, 60 : : value 61 : : ); - 62 [ + ]: 29 : if (code != uint8(REJECTED_CODE_BASE.TRANSFER_OK)) { - 63 : 16 : return code; + 62 [ + ]: 30 : if (code != uint8(REJECTED_CODE_BASE.TRANSFER_OK)) { + 63 : 11 : return code; 64 : : } 65 : : 66 : : // Operation - 67 : 13 : uint256 rulesLength = _rulesOperation.length; - 68 : 13 : for (uint256 i = 0; i < rulesLength; ++i) { - 69 : 10 : uint8 restriction = IRuleValidation(_rulesOperation[i]) + 67 : 19 : uint256 rulesLength = _rulesOperation.length; + 68 : 19 : for (uint256 i = 0; i < rulesLength; ++i) { + 69 : 16 : uint8 restriction = IRuleValidation(_rulesOperation[i]) 70 : : .detectTransferRestriction(from, to, value); - 71 [ + ]: 10 : if (restriction > 0) { - 72 : 7 : return restriction; + 71 [ + ]: 16 : if (restriction > 0) { + 72 : 10 : return restriction; 73 : : } 74 : : } 75 : : - 76 : 6 : return uint8(REJECTED_CODE_BASE.TRANSFER_OK); + 76 : 9 : return uint8(REJECTED_CODE_BASE.TRANSFER_OK); 77 : : } 78 : : - 79 : 4 : function detectTransferRestrictionFrom( + 79 : 9 : function detectTransferRestrictionFrom( 80 : : address spender, 81 : : address from, 82 : : address to, 83 : : uint256 value 84 : : ) public view override returns (uint8) { 85 : : // Validation - 86 : 4 : uint8 code = RuleEngineValidation.detectTransferRestrictionValidationFrom(spender, + 86 : 22 : uint8 code = RuleEngineValidation.detectTransferRestrictionValidationFrom(spender, 87 : : from, 88 : : to, 89 : : value 90 : : ); - 91 [ + ]: 4 : if (code != uint8(REJECTED_CODE_BASE.TRANSFER_OK)) { - 92 : 2 : return code; + 91 [ + ]: 22 : if (code != uint8(REJECTED_CODE_BASE.TRANSFER_OK)) { + 92 : 10 : return code; 93 : : } 94 : : 95 : : // Operation - 96 : 2 : uint256 rulesLength = _rulesOperation.length; - 97 : 2 : for (uint256 i = 0; i < rulesLength; ++i) { - 98 : 2 : uint8 restriction = IRuleValidation(_rulesOperation[i]) + 96 : 12 : uint256 rulesLength = _rulesOperation.length; + 97 : 12 : for (uint256 i = 0; i < rulesLength; ++i) { + 98 : 12 : uint8 restriction = IRuleValidation(_rulesOperation[i]) 99 : : .detectTransferRestrictionFrom(spender,from, to, value); - 100 [ + ]: 2 : if (restriction > 0) { - 101 : 1 : return restriction; + 100 [ + ]: 12 : if (restriction > 0) { + 101 : 6 : return restriction; 102 : : } 103 : : } 104 : : - 105 : 1 : return uint8(REJECTED_CODE_BASE.TRANSFER_OK); + 105 : 6 : return uint8(REJECTED_CODE_BASE.TRANSFER_OK); 106 : : } 107 : : 108 : : /** @@ -183,13 +183,13 @@ 112 : : * @param value to transfer 113 : : * @return True if the transfer is valid, false otherwise 114 : : **/ - 115 : 13 : function canTransfer( + 115 : 17 : function canTransfer( 116 : : address from, 117 : : address to, 118 : : uint256 value 119 : : ) public view override returns (bool) { - 120 : 13 : return - 121 : 13 : detectTransferRestriction(from, to, value) == + 120 : 17 : return + 121 : 17 : detectTransferRestriction(from, to, value) == 122 : : uint8(REJECTED_CODE_BASE.TRANSFER_OK); 123 : : } 124 : : @@ -200,14 +200,14 @@ 129 : : * @param value to transfer 130 : : * @return True if the transfer is valid, false otherwise 131 : : **/ - 132 : 7 : function canTransferFrom( - 133 : : address /*spender*/, + 132 : 13 : function canTransferFrom( + 133 : : address spender, 134 : : address from, 135 : : address to, 136 : : uint256 value 137 : : ) public view override returns (bool) { - 138 : 7 : return - 139 : 7 : detectTransferRestriction(from, to, value) == + 138 : 13 : return + 139 : 13 : detectTransferRestrictionFrom(spender, from, to, value) == 140 : : uint8(REJECTED_CODE_BASE.TRANSFER_OK); 141 : : } 142 : : @@ -216,18 +216,18 @@ 145 : : * @param restrictionCode The target restriction code 146 : : * @return True if the transfer is valid, false otherwise 147 : : **/ - 148 : 10 : function messageForTransferRestriction( + 148 : 13 : function messageForTransferRestriction( 149 : : uint8 restrictionCode 150 : : ) external view override returns (string memory) { 151 : : // Validation - 152 : 10 : uint256 rulesLength = _rulesValidation.length; - 153 : 10 : for (uint256 i = 0; i < rulesLength; ++i) { + 152 : 13 : uint256 rulesLength = _rulesValidation.length; + 153 : 13 : for (uint256 i = 0; i < rulesLength; ++i) { 154 : : if ( - 155 : 5 : IRuleValidation(_rulesValidation[i]) + 155 : 8 : IRuleValidation(_rulesValidation[i]) 156 : : .canReturnTransferRestrictionCode(restrictionCode) - 157 [ + ]: 4 : ) { - 158 : 4 : return - 159 : 4 : IRuleValidation(_rulesValidation[i]) + 157 [ + ]: 7 : ) { + 158 : 7 : return + 159 : 7 : IRuleValidation(_rulesValidation[i]) 160 : : .messageForTransferRestriction(restrictionCode); 161 : : } 162 : : } @@ -249,44 +249,44 @@ 178 : : /* 179 : : * @notice function protected by access control 180 : : */ - 181 : 2 : function transferred( + 181 : 3 : function transferred( 182 : : address spender, 183 : : address from, 184 : : address to, 185 : : uint256 value 186 : : ) public override onlyRole(TOKEN_CONTRACT_ROLE) { 187 : : // Validate transfer - 188 [ + # ]: 1 : require(RuleEngineValidation.canTransferValidationFrom(spender, from, to, value), RuleEngine_InvalidTransfer(from, to, value)); + 188 [ + + ]: 2 : require(RuleEngineValidation.canTransferValidationFrom(spender, from, to, value), RuleEngine_InvalidTransfer(from, to, value)); 189 : : 190 : : // Apply operation on RuleEngine - 191 : 0 : RuleEngineOperation._transferred(from, to, value); + 191 : 1 : RuleEngineOperation._transferred(from, to, value); 192 : : } 193 : : - 194 : 6 : function transferred( + 194 : 7 : function transferred( 195 : : address from, 196 : : address to, 197 : : uint256 value 198 : : ) public override onlyRole(TOKEN_CONTRACT_ROLE) { 199 : : // Validate transfer - 200 [ + + ]: 6 : require(RuleEngineValidation.canTransferValidation(from, to, value),RuleEngine_InvalidTransfer(from, to, value)); + 200 [ + + ]: 7 : require(RuleEngineValidation.canTransferValidation(from, to, value),RuleEngine_InvalidTransfer(from, to, value)); 201 : : 202 : : // Apply operation on RuleEngine - 203 : 3 : RuleEngineOperation._transferred(from, to, value); + 203 : 4 : RuleEngineOperation._transferred(from, to, value); 204 : : } 205 : : 206 : : /* ============ ACCESS CONTROL ============ */ 207 : : /** 208 : : * @dev Returns `true` if `account` has been granted `role`. 209 : : */ - 210 : 93 : function hasRole( + 210 : 101 : function hasRole( 211 : : bytes32 role, 212 : : address account 213 : : ) public view virtual override(AccessControl) returns (bool) { 214 : : // The Default Admin has all roles - 215 [ + ]: 257 : if (AccessControl.hasRole(DEFAULT_ADMIN_ROLE, account)) { - 216 : 147 : return true; + 215 [ + ]: 271 : if (AccessControl.hasRole(DEFAULT_ADMIN_ROLE, account)) { + 216 : 151 : return true; 217 : : } - 218 : 110 : return AccessControl.hasRole(role, account); + 218 : 120 : return AccessControl.hasRole(role, account); 219 : : } 220 : : 221 : : /*////////////////////////////////////////////////////////////// @@ -296,13 +296,13 @@ 225 : : /** 226 : : * @dev This surcharge is not necessary if you do not use the MetaTxModule 227 : : */ - 228 : 248 : function _msgSender() + 228 : 262 : function _msgSender() 229 : : internal 230 : : view 231 : : override(ERC2771Context, Context) 232 : : returns (address sender) 233 : : { - 234 : 248 : return ERC2771Context._msgSender(); + 234 : 262 : return ERC2771Context._msgSender(); 235 : : } 236 : : 237 : : /** @@ -320,13 +320,13 @@ 249 : : /** 250 : : * @dev This surcharge is not necessary if you do not use the MetaTxModule 251 : : */ - 252 : 248 : function _contextSuffixLength() + 252 : 262 : function _contextSuffixLength() 253 : : internal 254 : : view 255 : : override(ERC2771Context, Context) 256 : : returns (uint256) 257 : : { - 258 : 248 : return ERC2771Context._contextSuffixLength(); + 258 : 262 : return ERC2771Context._contextSuffixLength(); 259 : : } 260 : : } diff --git a/doc/coverage/coverage/src/index-sort-b.html b/doc/coverage/coverage/src/index-sort-b.html index 1a62508..36b8157 100644 --- a/doc/coverage/coverage/src/index-sort-b.html +++ b/doc/coverage/coverage/src/index-sort-b.html @@ -31,13 +31,13 @@ lcov.info Lines: - 59 + 60 62 - 95.2 % + 96.8 % Date: - 2025-07-21 17:42:16 + 2025-07-22 14:36:48 Functions: 10 @@ -49,9 +49,9 @@ Branches: - 12 13 - 92.3 % + 13 + 100.0 % @@ -84,14 +84,14 @@ RuleEngine.sol -
95.2%95.2%
+
96.8%96.8%
- 95.2 % - 59 / 62 + 96.8 % + 60 / 62 90.9 % 10 / 11 - 92.3 % - 12 / 13 + 100.0 % + 13 / 13 diff --git a/doc/coverage/coverage/src/index-sort-f.html b/doc/coverage/coverage/src/index-sort-f.html index 8834dc3..5190946 100644 --- a/doc/coverage/coverage/src/index-sort-f.html +++ b/doc/coverage/coverage/src/index-sort-f.html @@ -31,13 +31,13 @@ lcov.info Lines: - 59 + 60 62 - 95.2 % + 96.8 % Date: - 2025-07-21 17:42:16 + 2025-07-22 14:36:48 Functions: 10 @@ -49,9 +49,9 @@ Branches: - 12 13 - 92.3 % + 13 + 100.0 % @@ -84,14 +84,14 @@ RuleEngine.sol -
95.2%95.2%
+
96.8%96.8%
- 95.2 % - 59 / 62 + 96.8 % + 60 / 62 90.9 % 10 / 11 - 92.3 % - 12 / 13 + 100.0 % + 13 / 13 diff --git a/doc/coverage/coverage/src/index-sort-l.html b/doc/coverage/coverage/src/index-sort-l.html index 3350e5a..9bcd297 100644 --- a/doc/coverage/coverage/src/index-sort-l.html +++ b/doc/coverage/coverage/src/index-sort-l.html @@ -31,13 +31,13 @@ lcov.info Lines: - 59 + 60 62 - 95.2 % + 96.8 % Date: - 2025-07-21 17:42:16 + 2025-07-22 14:36:48 Functions: 10 @@ -49,9 +49,9 @@ Branches: - 12 13 - 92.3 % + 13 + 100.0 % @@ -84,14 +84,14 @@ RuleEngine.sol -
95.2%95.2%
+
96.8%96.8%
- 95.2 % - 59 / 62 + 96.8 % + 60 / 62 90.9 % 10 / 11 - 92.3 % - 12 / 13 + 100.0 % + 13 / 13 diff --git a/doc/coverage/coverage/src/index.html b/doc/coverage/coverage/src/index.html index 4aad7ed..8f9c9d2 100644 --- a/doc/coverage/coverage/src/index.html +++ b/doc/coverage/coverage/src/index.html @@ -31,13 +31,13 @@ lcov.info Lines: - 59 + 60 62 - 95.2 % + 96.8 % Date: - 2025-07-21 17:42:16 + 2025-07-22 14:36:48 Functions: 10 @@ -49,9 +49,9 @@ Branches: - 12 13 - 92.3 % + 13 + 100.0 % @@ -84,14 +84,14 @@ RuleEngine.sol -
95.2%95.2%
+
96.8%96.8%
- 95.2 % - 59 / 62 + 96.8 % + 60 / 62 90.9 % 10 / 11 - 92.3 % - 12 / 13 + 100.0 % + 13 / 13 diff --git a/doc/coverage/coverage/src/modules/RuleEngineOperation.sol.func-sort-c.html b/doc/coverage/coverage/src/modules/RuleEngineOperation.sol.func-sort-c.html index 5aef140..4a0c428 100644 --- a/doc/coverage/coverage/src/modules/RuleEngineOperation.sol.func-sort-c.html +++ b/doc/coverage/coverage/src/modules/RuleEngineOperation.sol.func-sort-c.html @@ -37,7 +37,7 @@ Date: - 2025-07-21 17:42:16 + 2025-07-22 14:36:48 Functions: 11 @@ -72,10 +72,6 @@ RuleEngineOperation.ruleOperation 1 - - RuleEngineOperation._transferred - 3 - RuleEngineOperation.getRuleIndexOperation 3 @@ -84,6 +80,10 @@ RuleEngineOperation.clearRulesOperation 4 + + RuleEngineOperation._transferred + 5 + RuleEngineOperation.removeRuleOperation 5 @@ -106,11 +106,11 @@ RuleEngineOperation.addRuleOperation - 33 + 36 RuleEngineOperation.rulesCountOperation - 42 + 45
diff --git a/doc/coverage/coverage/src/modules/RuleEngineOperation.sol.func.html b/doc/coverage/coverage/src/modules/RuleEngineOperation.sol.func.html index 8099564..f38ca20 100644 --- a/doc/coverage/coverage/src/modules/RuleEngineOperation.sol.func.html +++ b/doc/coverage/coverage/src/modules/RuleEngineOperation.sol.func.html @@ -37,7 +37,7 @@ Date: - 2025-07-21 17:42:16 + 2025-07-22 14:36:48 Functions: 11 @@ -78,11 +78,11 @@ RuleEngineOperation._transferred - 3 + 5 RuleEngineOperation.addRuleOperation - 33 + 36 RuleEngineOperation.clearRulesOperation @@ -102,7 +102,7 @@ RuleEngineOperation.rulesCountOperation - 42 + 45 RuleEngineOperation.rulesOperation diff --git a/doc/coverage/coverage/src/modules/RuleEngineOperation.sol.gcov.html b/doc/coverage/coverage/src/modules/RuleEngineOperation.sol.gcov.html index 4ddcfef..6506b68 100644 --- a/doc/coverage/coverage/src/modules/RuleEngineOperation.sol.gcov.html +++ b/doc/coverage/coverage/src/modules/RuleEngineOperation.sol.gcov.html @@ -37,7 +37,7 @@ Date: - 2025-07-21 17:42:16 + 2025-07-22 14:36:48 Functions: 11 @@ -134,11 +134,11 @@ 63 : : * Revert if one rule is a zero address or if the rule is already present 64 : : * 65 : : */ - 66 : 33 : function addRuleOperation( + 66 : 36 : function addRuleOperation( 67 : : IRuleOperation rule_ 68 : : ) public onlyRole(RULE_ENGINE_OPERATOR_ROLE) { - 69 : 33 : RuleInternal._addRule(_rulesOperation, address(rule_)); - 70 : 31 : emit AddRule(address(rule_)); + 69 : 36 : RuleInternal._addRule(_rulesOperation, address(rule_)); + 70 : 34 : emit AddRule(address(rule_)); 71 : : } 72 : : 73 : : /** @@ -176,8 +176,8 @@ 105 : : /** 106 : : * @return The number of rules inside the array 107 : : */ - 108 : 42 : function rulesCountOperation() external view override returns (uint256) { - 109 : 42 : return _rulesOperation.length; + 108 : 45 : function rulesCountOperation() external view override returns (uint256) { + 109 : 45 : return _rulesOperation.length; 110 : : } 111 : : 112 : : /** @@ -220,14 +220,14 @@ 149 : : * @param to the destination address 150 : : * @param value to transfer 151 : : **/ - 152 : 3 : function _transferred( + 152 : 5 : function _transferred( 153 : : address from, 154 : : address to, 155 : : uint256 value 156 : : ) internal { - 157 : 3 : uint256 rulesLength = _rulesOperation.length; - 158 : 3 : for (uint256 i = 0; i < rulesLength; ++i) { - 159 : 1 : IRuleOperation(_rulesOperation[i]).transferred( + 157 : 5 : uint256 rulesLength = _rulesOperation.length; + 158 : 5 : for (uint256 i = 0; i < rulesLength; ++i) { + 159 : 3 : IRuleOperation(_rulesOperation[i]).transferred( 160 : : from, 161 : : to, 162 : : value diff --git a/doc/coverage/coverage/src/modules/RuleEngineValidation.sol.func-sort-c.html b/doc/coverage/coverage/src/modules/RuleEngineValidation.sol.func-sort-c.html index bf91abf..eef517b 100644 --- a/doc/coverage/coverage/src/modules/RuleEngineValidation.sol.func-sort-c.html +++ b/doc/coverage/coverage/src/modules/RuleEngineValidation.sol.func-sort-c.html @@ -31,18 +31,18 @@ lcov.info Lines: - 18 20 - 90.0 % + 20 + 100.0 % Date: - 2025-07-21 17:42:16 + 2025-07-22 14:36:48 Functions: - 2 4 - 50.0 % + 4 + 100.0 % @@ -70,11 +70,11 @@ RuleEngineValidation.canTransferValidationFrom - 0 + 1 RuleEngineValidation.detectTransferRestrictionValidationFrom - 0 + 1 RuleEngineValidation.canTransferValidation @@ -82,7 +82,7 @@ RuleEngineValidation.detectTransferRestrictionValidation - 3 + 5
diff --git a/doc/coverage/coverage/src/modules/RuleEngineValidation.sol.func.html b/doc/coverage/coverage/src/modules/RuleEngineValidation.sol.func.html index e7efa90..fbb4eff 100644 --- a/doc/coverage/coverage/src/modules/RuleEngineValidation.sol.func.html +++ b/doc/coverage/coverage/src/modules/RuleEngineValidation.sol.func.html @@ -31,18 +31,18 @@ lcov.info Lines: - 18 20 - 90.0 % + 20 + 100.0 % Date: - 2025-07-21 17:42:16 + 2025-07-22 14:36:48 Functions: - 2 4 - 50.0 % + 4 + 100.0 % @@ -74,15 +74,15 @@ RuleEngineValidation.canTransferValidationFrom - 0 + 1 RuleEngineValidation.detectTransferRestrictionValidation - 3 + 5 RuleEngineValidation.detectTransferRestrictionValidationFrom - 0 + 1
diff --git a/doc/coverage/coverage/src/modules/RuleEngineValidation.sol.gcov.html b/doc/coverage/coverage/src/modules/RuleEngineValidation.sol.gcov.html index 50947ee..f2e5bcf 100644 --- a/doc/coverage/coverage/src/modules/RuleEngineValidation.sol.gcov.html +++ b/doc/coverage/coverage/src/modules/RuleEngineValidation.sol.gcov.html @@ -31,18 +31,18 @@ lcov.info Lines: - 18 20 - 90.0 % + 20 + 100.0 % Date: - 2025-07-21 17:42:16 + 2025-07-22 14:36:48 Functions: - 2 4 - 50.0 % + 4 + 100.0 % @@ -96,38 +96,38 @@ 25 : : * @param value to transfer 26 : : * @return The restricion code or REJECTED_CODE_BASE.TRANSFER_OK 27 : : **/ - 28 : 3 : function detectTransferRestrictionValidation( + 28 : 5 : function detectTransferRestrictionValidation( 29 : : address from, 30 : : address to, 31 : : uint256 value 32 : : ) public view override returns (uint8) { - 33 : 40 : uint256 rulesLength = _rulesValidation.length; - 34 : 40 : for (uint256 i = 0; i < rulesLength; ++i) { - 35 : 29 : uint8 restriction = IRuleValidation(_rulesValidation[i]) + 33 : 44 : uint256 rulesLength = _rulesValidation.length; + 34 : 44 : for (uint256 i = 0; i < rulesLength; ++i) { + 35 : 26 : uint8 restriction = IRuleValidation(_rulesValidation[i]) 36 : : .detectTransferRestriction(from, to, value); - 37 [ + ]: 29 : if (restriction > 0) { - 38 : 22 : return restriction; + 37 [ + ]: 26 : if (restriction > 0) { + 38 : 19 : return restriction; 39 : : } 40 : : } 41 : : - 42 : 18 : return uint8(IERC1404Extend.REJECTED_CODE_BASE.TRANSFER_OK); + 42 : 25 : return uint8(IERC1404Extend.REJECTED_CODE_BASE.TRANSFER_OK); 43 : : } 44 : : - 45 : 0 : function detectTransferRestrictionValidationFrom( + 45 : 1 : function detectTransferRestrictionValidationFrom( 46 : : address spender, 47 : : address from, 48 : : address to, 49 : : uint256 value 50 : : ) public view override returns (uint8) { - 51 : 5 : uint256 rulesLength = _rulesValidation.length; - 52 : 5 : for (uint256 i = 0; i < rulesLength; ++i) { - 53 : 3 : uint8 restriction = IRuleValidation(_rulesValidation[i]) + 51 : 26 : uint256 rulesLength = _rulesValidation.length; + 52 : 26 : for (uint256 i = 0; i < rulesLength; ++i) { + 53 : 13 : uint8 restriction = IRuleValidation(_rulesValidation[i]) 54 : : .detectTransferRestrictionFrom(spender, from, to, value); - 55 [ + ]: 3 : if (restriction > 0) { - 56 : 3 : return restriction; + 55 [ + ]: 13 : if (restriction > 0) { + 56 : 13 : return restriction; 57 : : } 58 : : } - 59 : 2 : return uint8(IERC1404Extend.REJECTED_CODE_BASE.TRANSFER_OK); + 59 : 13 : return uint8(IERC1404Extend.REJECTED_CODE_BASE.TRANSFER_OK); 60 : : } 61 : : 62 : : /** @@ -142,8 +142,8 @@ 71 : : address to, 72 : : uint256 value 73 : : ) public view returns (bool) { - 74 : 8 : return - 75 : 8 : detectTransferRestrictionValidation(from, to, value) == + 74 : 9 : return + 75 : 9 : detectTransferRestrictionValidation(from, to, value) == 76 : : uint8(IERC1404Extend.REJECTED_CODE_BASE.TRANSFER_OK); 77 : : } 78 : : @@ -154,14 +154,14 @@ 83 : : * @param value to transfer 84 : : * @return True if the transfer is valid, false otherwise 85 : : **/ - 86 : 0 : function canTransferValidationFrom( + 86 : 1 : function canTransferValidationFrom( 87 : : address spender, 88 : : address from, 89 : : address to, 90 : : uint256 value 91 : : ) public view override returns (bool) { - 92 : 1 : return - 93 : 1 : detectTransferRestrictionValidationFrom(spender, from, to, value) == + 92 : 3 : return + 93 : 3 : detectTransferRestrictionValidationFrom(spender, from, to, value) == 94 : : uint8(IERC1404Extend.REJECTED_CODE_BASE.TRANSFER_OK); 95 : : } 96 : : } diff --git a/doc/coverage/coverage/src/modules/RuleEngineValidationCommon.sol.func-sort-c.html b/doc/coverage/coverage/src/modules/RuleEngineValidationCommon.sol.func-sort-c.html index ffe6403..72c98ef 100644 --- a/doc/coverage/coverage/src/modules/RuleEngineValidationCommon.sol.func-sort-c.html +++ b/doc/coverage/coverage/src/modules/RuleEngineValidationCommon.sol.func-sort-c.html @@ -37,7 +37,7 @@ Date: - 2025-07-21 17:42:16 + 2025-07-22 14:36:48 Functions: 10 @@ -102,7 +102,7 @@ RuleEngineValidationCommon.addRuleValidation - 58 + 59 RuleEngineValidationCommon.rulesCountValidation diff --git a/doc/coverage/coverage/src/modules/RuleEngineValidationCommon.sol.func.html b/doc/coverage/coverage/src/modules/RuleEngineValidationCommon.sol.func.html index 1a03f28..6fe949e 100644 --- a/doc/coverage/coverage/src/modules/RuleEngineValidationCommon.sol.func.html +++ b/doc/coverage/coverage/src/modules/RuleEngineValidationCommon.sol.func.html @@ -37,7 +37,7 @@ Date: - 2025-07-21 17:42:16 + 2025-07-22 14:36:48 Functions: 10 @@ -78,7 +78,7 @@ RuleEngineValidationCommon.addRuleValidation - 58 + 59 RuleEngineValidationCommon.clearRulesValidation diff --git a/doc/coverage/coverage/src/modules/RuleEngineValidationCommon.sol.gcov.html b/doc/coverage/coverage/src/modules/RuleEngineValidationCommon.sol.gcov.html index 1c66dc8..da305a1 100644 --- a/doc/coverage/coverage/src/modules/RuleEngineValidationCommon.sol.gcov.html +++ b/doc/coverage/coverage/src/modules/RuleEngineValidationCommon.sol.gcov.html @@ -37,7 +37,7 @@ Date: - 2025-07-21 17:42:16 + 2025-07-22 14:36:48 Functions: 10 @@ -121,11 +121,11 @@ 50 : : * Revert if one rule is a zero address or if the rule is already present 51 : : * 52 : : */ - 53 : 58 : function addRuleValidation( + 53 : 59 : function addRuleValidation( 54 : : IRuleValidation rule_ 55 : : ) public onlyRole(RULE_ENGINE_OPERATOR_ROLE) { - 56 : 57 : RuleInternal._addRule(_rulesValidation, address(rule_)); - 57 : 55 : emit AddRule(address(rule_)); + 56 : 58 : RuleInternal._addRule(_rulesValidation, address(rule_)); + 57 : 56 : emit AddRule(address(rule_)); 58 : : } 59 : : 60 : : /** diff --git a/doc/coverage/coverage/src/modules/RuleInternal.sol.func-sort-c.html b/doc/coverage/coverage/src/modules/RuleInternal.sol.func-sort-c.html index 73b3ecb..0455061 100644 --- a/doc/coverage/coverage/src/modules/RuleInternal.sol.func-sort-c.html +++ b/doc/coverage/coverage/src/modules/RuleInternal.sol.func-sort-c.html @@ -37,7 +37,7 @@ Date: - 2025-07-21 17:42:16 + 2025-07-22 14:36:48 Functions: 4 @@ -82,7 +82,7 @@ RuleInternal._addRule - 90 + 94
diff --git a/doc/coverage/coverage/src/modules/RuleInternal.sol.func.html b/doc/coverage/coverage/src/modules/RuleInternal.sol.func.html index 88c2d21..c227cae 100644 --- a/doc/coverage/coverage/src/modules/RuleInternal.sol.func.html +++ b/doc/coverage/coverage/src/modules/RuleInternal.sol.func.html @@ -37,7 +37,7 @@ Date: - 2025-07-21 17:42:16 + 2025-07-22 14:36:48 Functions: 4 @@ -70,7 +70,7 @@ RuleInternal._addRule - 90 + 94 RuleInternal._getRuleIndex diff --git a/doc/coverage/coverage/src/modules/RuleInternal.sol.gcov.html b/doc/coverage/coverage/src/modules/RuleInternal.sol.gcov.html index 9b855bb..bab89f3 100644 --- a/doc/coverage/coverage/src/modules/RuleInternal.sol.gcov.html +++ b/doc/coverage/coverage/src/modules/RuleInternal.sol.gcov.html @@ -37,7 +37,7 @@ Date: - 2025-07-21 17:42:16 + 2025-07-22 14:36:48 Functions: 4 @@ -111,15 +111,15 @@ 40 : : * Revert if one rule is a zero address or if the rule is already present 41 : : * 42 : : */ - 43 : 90 : function _addRule(address[] storage _rules, address rule_) internal { - 44 [ + ]: 90 : if (address(rule_) == address(0x0)) { + 43 : 94 : function _addRule(address[] storage _rules, address rule_) internal { + 44 [ + ]: 94 : if (address(rule_) == address(0x0)) { 45 : 2 : revert RuleEngine_RuleAddressZeroNotAllowed(); 46 : : } 47 [ + ]: 2 : if (_ruleIsPresent[rule_]) { 48 : 2 : revert RuleEngine_RuleAlreadyExists(); 49 : : } - 50 : 86 : _rules.push(rule_); - 51 : 86 : _ruleIsPresent[rule_] = true; + 50 : 90 : _rules.push(rule_); + 51 : 90 : _ruleIsPresent[rule_] = true; 52 : : } 53 : : 54 : : /** diff --git a/doc/coverage/coverage/src/modules/index-sort-b.html b/doc/coverage/coverage/src/modules/index-sort-b.html index dde184c..533458d 100644 --- a/doc/coverage/coverage/src/modules/index-sort-b.html +++ b/doc/coverage/coverage/src/modules/index-sort-b.html @@ -31,18 +31,18 @@ lcov.info Lines: - 113 115 - 98.3 % + 115 + 100.0 % Date: - 2025-07-21 17:42:16 + 2025-07-22 14:36:48 Functions: - 27 29 - 93.1 % + 29 + 100.0 % @@ -82,38 +82,38 @@ Branches Sort by branch coverage - RuleEngineOperation.sol + RuleEngineValidationCommon.sol
100.0%
100.0 % - 33 / 33 + 29 / 29 100.0 % - 11 / 11 + 10 / 10 100.0 % 1 / 1 - RuleEngineValidationCommon.sol + RuleEngineOperation.sol
100.0%
100.0 % - 29 / 29 + 33 / 33 100.0 % - 10 / 10 + 11 / 11 100.0 % 1 / 1 RuleEngineValidation.sol -
90.0%90.0%
+
100.0%
- 90.0 % - 18 / 20 - 50.0 % - 2 / 4 + 100.0 % + 20 / 20 + 100.0 % + 4 / 4 100.0 % 2 / 2 diff --git a/doc/coverage/coverage/src/modules/index-sort-f.html b/doc/coverage/coverage/src/modules/index-sort-f.html index 6d3c954..a30c08b 100644 --- a/doc/coverage/coverage/src/modules/index-sort-f.html +++ b/doc/coverage/coverage/src/modules/index-sort-f.html @@ -31,18 +31,18 @@ lcov.info Lines: - 113 115 - 98.3 % + 115 + 100.0 % Date: - 2025-07-21 17:42:16 + 2025-07-22 14:36:48 Functions: - 27 29 - 93.1 % + 29 + 100.0 % @@ -82,28 +82,28 @@ Branches Sort by branch coverage - RuleEngineValidation.sol + RuleInternal.sol -
90.0%90.0%
+
100.0%
- 90.0 % - 18 / 20 - 50.0 % - 2 / 4 100.0 % - 2 / 2 + 33 / 33 + 100.0 % + 4 / 4 + 100.0 % + 8 / 8 - RuleInternal.sol + RuleEngineValidation.sol
100.0%
100.0 % - 33 / 33 + 20 / 20 100.0 % 4 / 4 100.0 % - 8 / 8 + 2 / 2 RuleEngineValidationCommon.sol diff --git a/doc/coverage/coverage/src/modules/index-sort-l.html b/doc/coverage/coverage/src/modules/index-sort-l.html index f159a9d..ab98283 100644 --- a/doc/coverage/coverage/src/modules/index-sort-l.html +++ b/doc/coverage/coverage/src/modules/index-sort-l.html @@ -31,18 +31,18 @@ lcov.info Lines: - 113 115 - 98.3 % + 115 + 100.0 % Date: - 2025-07-21 17:42:16 + 2025-07-22 14:36:48 Functions: - 27 29 - 93.1 % + 29 + 100.0 % @@ -84,12 +84,12 @@ RuleEngineValidation.sol -
90.0%90.0%
+
100.0%
- 90.0 % - 18 / 20 - 50.0 % - 2 / 4 + 100.0 % + 20 / 20 + 100.0 % + 4 / 4 100.0 % 2 / 2 diff --git a/doc/coverage/coverage/src/modules/index.html b/doc/coverage/coverage/src/modules/index.html index d45d484..3594cd5 100644 --- a/doc/coverage/coverage/src/modules/index.html +++ b/doc/coverage/coverage/src/modules/index.html @@ -31,18 +31,18 @@ lcov.info Lines: - 113 115 - 98.3 % + 115 + 100.0 % Date: - 2025-07-21 17:42:16 + 2025-07-22 14:36:48 Functions: - 27 29 - 93.1 % + 29 + 100.0 % @@ -96,12 +96,12 @@ RuleEngineValidation.sol -
90.0%90.0%
+
100.0%
- 90.0 % - 18 / 20 - 50.0 % - 2 / 4 + 100.0 % + 20 / 20 + 100.0 % + 4 / 4 100.0 % 2 / 2 diff --git a/doc/coverage/coverage/test/utils/CMTATDeployment.sol.func-sort-c.html b/doc/coverage/coverage/test/utils/CMTATDeployment.sol.func-sort-c.html deleted file mode 100644 index 45a0afa..0000000 --- a/doc/coverage/coverage/test/utils/CMTATDeployment.sol.func-sort-c.html +++ /dev/null @@ -1,85 +0,0 @@ - - - - - - - LCOV - lcov.info - test/utils/CMTATDeployment.sol - functions - - - - - - - - - - - - - - -
LCOV - code coverage report
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Current view:top level - test/utils - CMTATDeployment.sol (source / functions)HitTotalCoverage
Test:lcov.infoLines:55100.0 %
Date:2025-07-08 14:58:25Functions:11100.0 %
Branches:00-
-
- -
- - - - - - - - - - -

Function Name Sort by function nameHit count Sort by hit count
CMTATDeployment.constructor9
-
-
- - - -
Generated by: LCOV version 1.16
-
- - - diff --git a/doc/coverage/coverage/test/utils/CMTATDeployment.sol.func.html b/doc/coverage/coverage/test/utils/CMTATDeployment.sol.func.html deleted file mode 100644 index 312b1ba..0000000 --- a/doc/coverage/coverage/test/utils/CMTATDeployment.sol.func.html +++ /dev/null @@ -1,85 +0,0 @@ - - - - - - - LCOV - lcov.info - test/utils/CMTATDeployment.sol - functions - - - - - - - - - - - - - - -
LCOV - code coverage report
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Current view:top level - test/utils - CMTATDeployment.sol (source / functions)HitTotalCoverage
Test:lcov.infoLines:55100.0 %
Date:2025-07-08 14:58:25Functions:11100.0 %
Branches:00-
-
- -
- - - - - - - - - - -

Function Name Sort by function nameHit count Sort by hit count
CMTATDeployment.constructor9
-
-
- - - -
Generated by: LCOV version 1.16
-
- - - diff --git a/doc/coverage/coverage/test/utils/CMTATDeployment.sol.gcov.html b/doc/coverage/coverage/test/utils/CMTATDeployment.sol.gcov.html deleted file mode 100644 index c3c6c75..0000000 --- a/doc/coverage/coverage/test/utils/CMTATDeployment.sol.gcov.html +++ /dev/null @@ -1,135 +0,0 @@ - - - - - - - LCOV - lcov.info - test/utils/CMTATDeployment.sol - - - - - - - - - - - - - - -
LCOV - code coverage report
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Current view:top level - test/utils - CMTATDeployment.sol (source / functions)HitTotalCoverage
Test:lcov.infoLines:55100.0 %
Date:2025-07-08 14:58:25Functions:11100.0 %
Branches:00-
-
- - - - - - - - -

-
           Branch data     Line data    Source code
-
-       1                 :            : //SPDX-License-Identifier: MPL-2.0
-       2                 :            : pragma solidity ^0.8.20;
-       3                 :            : 
-       4                 :            : import "forge-std/Test.sol";
-       5                 :            : import "OZ/access/AccessControl.sol";
-       6                 :            : import {ICMTATConstructor, CMTATStandalone} from "CMTAT/deployment/CMTATStandalone.sol";
-       7                 :            : import {IRuleEngine} from "CMTAT/interfaces/engine/IRuleEngine.sol";
-       8                 :            : import {ISnapshotEngine} from "CMTAT/interfaces/engine/ISnapshotEngine.sol";
-       9                 :            : import {IDocumentEngine} from "CMTAT/interfaces/engine/IDocumentEngine.sol";
-      10                 :            : import {IERC1643CMTAT} from "CMTAT/interfaces/tokenization/draft-IERC1643CMTAT.sol";
-      11                 :            : contract CMTATDeployment {
-      12                 :            :     // Share with helper contract
-      13                 :            :     address constant ZERO_ADDRESS = address(0);
-      14                 :            :     address constant DEFAULT_ADMIN_ADDRESS = address(1);
-      15                 :            : 
-      16                 :            :     CMTATStandalone public cmtat;
-      17                 :            : 
-      18                 :          9 :     constructor() {
-      19                 :            :         // CMTAT
-      20                 :          9 :         ICMTATConstructor.ERC20Attributes
-      21                 :            :             memory erc20Attributes = ICMTATConstructor.ERC20Attributes(
-      22                 :            :                 "CMTA Token",
-      23                 :            :                 "CMTAT",
-      24                 :            :                 0
-      25                 :            :             );
-      26                 :          9 :         ICMTATConstructor.ExtraInformationAttributes
-      27                 :            :             memory ExtraInformationAttributes = ICMTATConstructor
-      28                 :            :                 .ExtraInformationAttributes(
-      29                 :            :                     "CMTAT_ISIN",
-      30                 :            :                     IERC1643CMTAT.DocumentInfo(
-      31                 :            :                         "Terms",
-      32                 :            :                         "https://cmta.ch",
-      33                 :            :                         0x9ff867f6592aa9d6d039e7aad6bd71f1659720cbc4dd9eae1554f6eab490098b
-      34                 :            :                     ),
-      35                 :            :                     "CMTAT_info"
-      36                 :            :                 );
-      37                 :          9 :         ICMTATConstructor.Engine memory engines = ICMTATConstructor.Engine(
-      38                 :            :             IRuleEngine(ZERO_ADDRESS),
-      39                 :            :             ISnapshotEngine(ZERO_ADDRESS),
-      40                 :            :             IDocumentEngine(ZERO_ADDRESS)
-      41                 :            :         );
-      42                 :          9 :         cmtat = new CMTATStandalone(
-      43                 :            :             ZERO_ADDRESS,
-      44                 :            :             DEFAULT_ADMIN_ADDRESS,
-      45                 :            :             erc20Attributes,
-      46                 :            :             ExtraInformationAttributes,
-      47                 :            :             engines
-      48                 :            :         );
-      49                 :            :     }
-      50                 :            : }
-
-
-
- - - - -
Generated by: LCOV version 1.16
-
- - - diff --git a/doc/coverage/coverage/test/utils/SanctionListOracle.sol.func-sort-c.html b/doc/coverage/coverage/test/utils/SanctionListOracle.sol.func-sort-c.html deleted file mode 100644 index c5bd17d..0000000 --- a/doc/coverage/coverage/test/utils/SanctionListOracle.sol.func-sort-c.html +++ /dev/null @@ -1,93 +0,0 @@ - - - - - - - LCOV - lcov.info - test/utils/SanctionListOracle.sol - functions - - - - - - - - - - - - - - -
LCOV - code coverage report
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Current view:top level - test/utils - SanctionListOracle.sol (source / functions)HitTotalCoverage
Test:lcov.infoLines:060.0 %
Date:2025-07-08 14:58:25Functions:030.0 %
Branches:00-
-
- -
- - - - - - - - - - - - - - - - - - -

Function Name Sort by function nameHit count Sort by hit count
SanctionListOracle.addToSanctionsList0
SanctionListOracle.isSanctioned0
SanctionListOracle.removeFromSanctionsList0
-
-
- - - -
Generated by: LCOV version 1.16
-
- - - diff --git a/doc/coverage/coverage/test/utils/SanctionListOracle.sol.func.html b/doc/coverage/coverage/test/utils/SanctionListOracle.sol.func.html deleted file mode 100644 index f10a507..0000000 --- a/doc/coverage/coverage/test/utils/SanctionListOracle.sol.func.html +++ /dev/null @@ -1,93 +0,0 @@ - - - - - - - LCOV - lcov.info - test/utils/SanctionListOracle.sol - functions - - - - - - - - - - - - - - -
LCOV - code coverage report
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Current view:top level - test/utils - SanctionListOracle.sol (source / functions)HitTotalCoverage
Test:lcov.infoLines:060.0 %
Date:2025-07-08 14:58:25Functions:030.0 %
Branches:00-
-
- -
- - - - - - - - - - - - - - - - - - -

Function Name Sort by function nameHit count Sort by hit count
SanctionListOracle.addToSanctionsList0
SanctionListOracle.isSanctioned0
SanctionListOracle.removeFromSanctionsList0
-
-
- - - -
Generated by: LCOV version 1.16
-
- - - diff --git a/doc/coverage/coverage/test/utils/SanctionListOracle.sol.gcov.html b/doc/coverage/coverage/test/utils/SanctionListOracle.sol.gcov.html deleted file mode 100644 index 021ac64..0000000 --- a/doc/coverage/coverage/test/utils/SanctionListOracle.sol.gcov.html +++ /dev/null @@ -1,109 +0,0 @@ - - - - - - - LCOV - lcov.info - test/utils/SanctionListOracle.sol - - - - - - - - - - - - - - -
LCOV - code coverage report
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Current view:top level - test/utils - SanctionListOracle.sol (source / functions)HitTotalCoverage
Test:lcov.infoLines:060.0 %
Date:2025-07-08 14:58:25Functions:030.0 %
Branches:00-
-
- - - - - - - - -

-
           Branch data     Line data    Source code
-
-       1                 :            : // SPDX-License-Identifier: MPL-2.0
-       2                 :            : pragma solidity ^0.8.20;
-       3                 :            : 
-       4                 :            : /**
-       5                 :            :  * @notice Test contract from
-       6                 :            :  * https://etherscan.io/address/0x40c57923924b5c5c5455c48d93317139addac8fb#code
-       7                 :            :  */
-       8                 :            : contract SanctionListOracle {
-       9                 :            :     constructor() {}
-      10                 :            : 
-      11                 :            :     mapping(address => bool) private sanctionedAddresses;
-      12                 :            : 
-      13                 :          0 :     function addToSanctionsList(address newSanction) public {
-      14                 :          0 :         sanctionedAddresses[newSanction] = true;
-      15                 :            :     }
-      16                 :            : 
-      17                 :          0 :     function removeFromSanctionsList(address removeSanction) public {
-      18                 :          0 :         sanctionedAddresses[removeSanction] = true;
-      19                 :            :     }
-      20                 :            : 
-      21                 :          0 :     function isSanctioned(address addr) public view returns (bool) {
-      22                 :          0 :         return sanctionedAddresses[addr] == true;
-      23                 :            :     }
-      24                 :            : }
-
-
-
- - - - -
Generated by: LCOV version 1.16
-
- - - diff --git a/doc/coverage/coverage/test/utils/index-sort-b.html b/doc/coverage/coverage/test/utils/index-sort-b.html deleted file mode 100644 index 671f207..0000000 --- a/doc/coverage/coverage/test/utils/index-sort-b.html +++ /dev/null @@ -1,119 +0,0 @@ - - - - - - - LCOV - lcov.info - test/utils - - - - - - - - - - - - - - -
LCOV - code coverage report
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Current view:top level - test/utilsHitTotalCoverage
Test:lcov.infoLines:51145.5 %
Date:2025-07-08 14:58:25Functions:1425.0 %
Branches:00-
-
- -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

Filename Sort by nameLine Coverage Sort by line coverageFunctions Sort by function coverageBranches Sort by branch coverage
SanctionListOracle.sol -
0.0%
-
0.0 %0 / 60.0 %0 / 3-0 / 0
CMTATDeployment.sol -
100.0%
-
100.0 %5 / 5100.0 %1 / 1-0 / 0
-
-
- - - - -
Generated by: LCOV version 1.16
-
- - - diff --git a/doc/coverage/coverage/test/utils/index-sort-f.html b/doc/coverage/coverage/test/utils/index-sort-f.html deleted file mode 100644 index 70b9444..0000000 --- a/doc/coverage/coverage/test/utils/index-sort-f.html +++ /dev/null @@ -1,119 +0,0 @@ - - - - - - - LCOV - lcov.info - test/utils - - - - - - - - - - - - - - -
LCOV - code coverage report
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Current view:top level - test/utilsHitTotalCoverage
Test:lcov.infoLines:51145.5 %
Date:2025-07-08 14:58:25Functions:1425.0 %
Branches:00-
-
- -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

Filename Sort by nameLine Coverage Sort by line coverageFunctions Sort by function coverageBranches Sort by branch coverage
SanctionListOracle.sol -
0.0%
-
0.0 %0 / 60.0 %0 / 3-0 / 0
CMTATDeployment.sol -
100.0%
-
100.0 %5 / 5100.0 %1 / 1-0 / 0
-
-
- - - - -
Generated by: LCOV version 1.16
-
- - - diff --git a/doc/coverage/coverage/test/utils/index-sort-l.html b/doc/coverage/coverage/test/utils/index-sort-l.html deleted file mode 100644 index 303d495..0000000 --- a/doc/coverage/coverage/test/utils/index-sort-l.html +++ /dev/null @@ -1,119 +0,0 @@ - - - - - - - LCOV - lcov.info - test/utils - - - - - - - - - - - - - - -
LCOV - code coverage report
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Current view:top level - test/utilsHitTotalCoverage
Test:lcov.infoLines:51145.5 %
Date:2025-07-08 14:58:25Functions:1425.0 %
Branches:00-
-
- -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

Filename Sort by nameLine Coverage Sort by line coverageFunctions Sort by function coverageBranches Sort by branch coverage
SanctionListOracle.sol -
0.0%
-
0.0 %0 / 60.0 %0 / 3-0 / 0
CMTATDeployment.sol -
100.0%
-
100.0 %5 / 5100.0 %1 / 1-0 / 0
-
-
- - - - -
Generated by: LCOV version 1.16
-
- - - diff --git a/doc/coverage/coverage/test/utils/index.html b/doc/coverage/coverage/test/utils/index.html deleted file mode 100644 index b473285..0000000 --- a/doc/coverage/coverage/test/utils/index.html +++ /dev/null @@ -1,119 +0,0 @@ - - - - - - - LCOV - lcov.info - test/utils - - - - - - - - - - - - - - -
LCOV - code coverage report
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Current view:top level - test/utilsHitTotalCoverage
Test:lcov.infoLines:51145.5 %
Date:2025-07-08 14:58:25Functions:1425.0 %
Branches:00-
-
- -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

Filename Sort by nameLine Coverage Sort by line coverageFunctions Sort by function coverageBranches Sort by branch coverage
CMTATDeployment.sol -
100.0%
-
100.0 %5 / 5100.0 %1 / 1-0 / 0
SanctionListOracle.sol -
0.0%
-
0.0 %0 / 60.0 %0 / 3-0 / 0
-
-
- - - - -
Generated by: LCOV version 1.16
-
- - - diff --git a/doc/coverage/lcov.info b/doc/coverage/lcov.info index 7617737..b9b83e1 100644 --- a/doc/coverage/lcov.info +++ b/doc/coverage/lcov.info @@ -1,63 +1,63 @@ TN: SF:src/RuleEngine.sol -DA:30,74 +DA:30,78 FN:30,RuleEngine.constructor -FNDA:74,RuleEngine.constructor -DA:35,74 +FNDA:78,RuleEngine.constructor +DA:35,78 BRDA:35,0,0,1 DA:36,1 -DA:38,73 -BRDA:38,1,0,11 -DA:39,11 -DA:41,73 -DA:51,9 +DA:38,77 +BRDA:38,1,0,15 +DA:39,15 +DA:41,77 +DA:51,13 FN:51,RuleEngine.detectTransferRestriction -FNDA:9,RuleEngine.detectTransferRestriction -DA:57,29 -DA:62,29 -BRDA:62,2,0,16 -DA:63,16 -DA:67,13 -DA:68,13 -DA:69,10 -DA:71,10 -BRDA:71,3,0,7 -DA:72,7 -DA:76,6 -DA:79,4 +FNDA:13,RuleEngine.detectTransferRestriction +DA:57,30 +DA:62,30 +BRDA:62,2,0,11 +DA:63,11 +DA:67,19 +DA:68,19 +DA:69,16 +DA:71,16 +BRDA:71,3,0,10 +DA:72,10 +DA:76,9 +DA:79,9 FN:79,RuleEngine.detectTransferRestrictionFrom -FNDA:4,RuleEngine.detectTransferRestrictionFrom -DA:86,4 -DA:91,4 -BRDA:91,4,0,2 -DA:92,2 -DA:96,2 -DA:97,2 -DA:98,2 -DA:100,2 -BRDA:100,5,0,1 -DA:101,1 -DA:105,1 -DA:115,13 +FNDA:9,RuleEngine.detectTransferRestrictionFrom +DA:86,22 +DA:91,22 +BRDA:91,4,0,10 +DA:92,10 +DA:96,12 +DA:97,12 +DA:98,12 +DA:100,12 +BRDA:100,5,0,6 +DA:101,6 +DA:105,6 +DA:115,17 FN:115,RuleEngine.canTransfer -FNDA:13,RuleEngine.canTransfer -DA:120,13 -DA:121,13 -DA:132,7 +FNDA:17,RuleEngine.canTransfer +DA:120,17 +DA:121,17 +DA:132,13 FN:132,RuleEngine.canTransferFrom -FNDA:7,RuleEngine.canTransferFrom -DA:138,7 -DA:139,7 -DA:148,10 +FNDA:13,RuleEngine.canTransferFrom +DA:138,13 +DA:139,13 +DA:148,13 FN:148,RuleEngine.messageForTransferRestriction -FNDA:10,RuleEngine.messageForTransferRestriction -DA:152,10 -DA:153,10 -DA:155,5 -DA:157,4 -BRDA:157,6,0,4 -DA:158,4 -DA:159,4 +FNDA:13,RuleEngine.messageForTransferRestriction +DA:152,13 +DA:153,13 +DA:155,8 +DA:157,7 +BRDA:157,6,0,7 +DA:158,7 +DA:159,7 DA:164,6 DA:165,6 DA:167,2 @@ -66,45 +66,45 @@ BRDA:169,7,0,1 DA:170,1 DA:171,1 DA:175,5 -DA:181,2 +DA:181,3 FN:181,RuleEngine.transferred -FNDA:2,RuleEngine.transferred -DA:188,1 +FNDA:3,RuleEngine.transferred +DA:188,2 BRDA:188,8,0,1 -BRDA:188,8,1,- -DA:191,0 -DA:194,6 +BRDA:188,8,1,1 +DA:191,1 +DA:194,7 FN:194,RuleEngine.transferred -FNDA:6,RuleEngine.transferred -DA:200,6 +FNDA:7,RuleEngine.transferred +DA:200,7 BRDA:200,9,0,3 -BRDA:200,9,1,3 -DA:203,3 -DA:210,93 +BRDA:200,9,1,4 +DA:203,4 +DA:210,101 FN:210,RuleEngine.hasRole -FNDA:93,RuleEngine.hasRole -DA:215,257 -BRDA:215,10,0,147 -DA:216,147 -DA:218,110 -DA:228,248 +FNDA:101,RuleEngine.hasRole +DA:215,271 +BRDA:215,10,0,151 +DA:216,151 +DA:218,120 +DA:228,262 FN:228,RuleEngine._msgSender -FNDA:248,RuleEngine._msgSender -DA:234,248 +FNDA:262,RuleEngine._msgSender +DA:234,262 DA:240,0 FN:240,RuleEngine._msgData FNDA:0,RuleEngine._msgData DA:246,0 -DA:252,248 +DA:252,262 FN:252,RuleEngine._contextSuffixLength -FNDA:248,RuleEngine._contextSuffixLength -DA:258,248 +FNDA:262,RuleEngine._contextSuffixLength +DA:258,262 FNF:12 FNH:11 LF:62 -LH:59 +LH:60 BRF:13 -BRH:12 +BRH:13 end_of_record TN: SF:src/modules/RuleEngineOperation.sol @@ -128,11 +128,11 @@ DA:51,14 DA:54,17 DA:56,17 DA:58,14 -DA:66,33 +DA:66,36 FN:66,RuleEngineOperation.addRuleOperation -FNDA:33,RuleEngineOperation.addRuleOperation -DA:69,33 -DA:70,31 +FNDA:36,RuleEngineOperation.addRuleOperation +DA:69,36 +DA:70,34 DA:83,5 FN:83,RuleEngineOperation.removeRuleOperation FNDA:5,RuleEngineOperation.removeRuleOperation @@ -142,10 +142,10 @@ FN:100,RuleEngineOperation._removeRuleOperation FNDA:22,RuleEngineOperation._removeRuleOperation DA:101,22 DA:102,21 -DA:108,42 +DA:108,45 FN:108,RuleEngineOperation.rulesCountOperation -FNDA:42,RuleEngineOperation.rulesCountOperation -DA:109,42 +FNDA:45,RuleEngineOperation.rulesCountOperation +DA:109,45 DA:116,3 FN:116,RuleEngineOperation.getRuleIndexOperation FNDA:3,RuleEngineOperation.getRuleIndexOperation @@ -158,12 +158,12 @@ DA:137,5 FN:137,RuleEngineOperation.rulesOperation FNDA:5,RuleEngineOperation.rulesOperation DA:143,5 -DA:152,3 +DA:152,5 FN:152,RuleEngineOperation._transferred -FNDA:3,RuleEngineOperation._transferred -DA:157,3 -DA:158,3 -DA:159,1 +FNDA:5,RuleEngineOperation._transferred +DA:157,5 +DA:158,5 +DA:159,3 FNF:11 FNH:11 LF:33 @@ -173,40 +173,40 @@ BRH:1 end_of_record TN: SF:src/modules/RuleEngineValidation.sol -DA:28,3 +DA:28,5 FN:28,RuleEngineValidation.detectTransferRestrictionValidation -FNDA:3,RuleEngineValidation.detectTransferRestrictionValidation -DA:33,40 -DA:34,40 -DA:35,29 -DA:37,29 -BRDA:37,0,0,22 -DA:38,22 -DA:42,18 -DA:45,0 +FNDA:5,RuleEngineValidation.detectTransferRestrictionValidation +DA:33,44 +DA:34,44 +DA:35,26 +DA:37,26 +BRDA:37,0,0,19 +DA:38,19 +DA:42,25 +DA:45,1 FN:45,RuleEngineValidation.detectTransferRestrictionValidationFrom -FNDA:0,RuleEngineValidation.detectTransferRestrictionValidationFrom -DA:51,5 -DA:52,5 -DA:53,3 -DA:55,3 -BRDA:55,1,0,3 -DA:56,3 -DA:59,2 +FNDA:1,RuleEngineValidation.detectTransferRestrictionValidationFrom +DA:51,26 +DA:52,26 +DA:53,13 +DA:55,13 +BRDA:55,1,0,13 +DA:56,13 +DA:59,13 DA:69,2 FN:69,RuleEngineValidation.canTransferValidation FNDA:2,RuleEngineValidation.canTransferValidation -DA:74,8 -DA:75,8 -DA:86,0 +DA:74,9 +DA:75,9 +DA:86,1 FN:86,RuleEngineValidation.canTransferValidationFrom -FNDA:0,RuleEngineValidation.canTransferValidationFrom -DA:92,1 -DA:93,1 +FNDA:1,RuleEngineValidation.canTransferValidationFrom +DA:92,3 +DA:93,3 FNF:4 -FNH:2 +FNH:4 LF:20 -LH:18 +LH:20 BRF:2 BRH:2 end_of_record @@ -224,11 +224,11 @@ DA:44,6 FN:44,RuleEngineValidationCommon.clearRulesValidation FNDA:6,RuleEngineValidationCommon.clearRulesValidation DA:45,5 -DA:53,58 +DA:53,59 FN:53,RuleEngineValidationCommon.addRuleValidation -FNDA:58,RuleEngineValidationCommon.addRuleValidation -DA:56,57 -DA:57,55 +FNDA:59,RuleEngineValidationCommon.addRuleValidation +DA:56,58 +DA:57,56 DA:70,6 FN:70,RuleEngineValidationCommon.removeRuleValidation FNDA:6,RuleEngineValidationCommon.removeRuleValidation @@ -287,17 +287,17 @@ DA:28,2 DA:30,45 DA:31,45 DA:33,45 -DA:43,90 +DA:43,94 FN:43,RuleInternal._addRule -FNDA:90,RuleInternal._addRule -DA:44,90 +FNDA:94,RuleInternal._addRule +DA:44,94 BRDA:44,3,0,2 DA:45,2 DA:47,2 BRDA:47,4,0,2 DA:48,2 -DA:50,86 -DA:51,86 +DA:50,90 +DA:51,90 DA:64,56 FN:64,RuleInternal._removeRule FNDA:56,RuleInternal._removeRule diff --git a/src/RuleEngine.sol b/src/RuleEngine.sol index 41f0ac6..c7052ed 100644 --- a/src/RuleEngine.sol +++ b/src/RuleEngine.sol @@ -21,7 +21,7 @@ contract RuleEngine is * @notice * Get the current version of the smart contract */ - string public constant VERSION = "2.2.0"; + string public constant VERSION = "3.0.0"; /** * @param admin Address of the contract (Access Control) @@ -130,13 +130,13 @@ contract RuleEngine is * @return True if the transfer is valid, false otherwise **/ function canTransferFrom( - address /*spender*/, + address spender, address from, address to, uint256 value ) public view override returns (bool) { return - detectTransferRestriction(from, to, value) == + detectTransferRestrictionFrom(spender, from, to, value) == uint8(REJECTED_CODE_BASE.TRANSFER_OK); } diff --git a/test/RuleEngine/ruleEngineOperation/CMTATIntegration.t.sol b/test/RuleEngine/ruleEngineOperation/CMTATIntegration.t.sol new file mode 100644 index 0000000..9bdf865 --- /dev/null +++ b/test/RuleEngine/ruleEngineOperation/CMTATIntegration.t.sol @@ -0,0 +1,246 @@ +// SPDX-License-Identifier: MPL-2.0 +pragma solidity ^0.8.20; + +import "forge-std/Test.sol"; +import "CMTAT/deployment/CMTATStandalone.sol"; +import "../../HelperContract.sol"; +import "src/RuleEngine.sol"; +import "OZ/token/ERC20/IERC20.sol"; +/** + * @title General functions of the RuleEngine + */ +contract RuleEngineOperationCMTATIntegrationTest is Test, HelperContract { + uint256 defaultValue = 20; + // Arrange + function setUp() public { + // global arrange + cmtatDeployment = new CMTATDeployment(); + CMTAT_CONTRACT = cmtatDeployment.cmtat(); + + // CMTAT + vm.prank(DEFAULT_ADMIN_ADDRESS); + CMTAT_CONTRACT.mint(ADDRESS1, defaultValue * 2); + vm.prank(DEFAULT_ADMIN_ADDRESS); + CMTAT_CONTRACT.mint(ADDRESS2, defaultValue); + + vm.prank(RULE_ENGINE_OPERATOR_ADDRESS); + ruleEngineMock = new RuleEngine( + RULE_ENGINE_OPERATOR_ADDRESS, + ZERO_ADDRESS, + address(CMTAT_CONTRACT) + ); + ruleConditionalTransferLight = new RuleConditionalTransferLight( + CONDITIONAL_TRANSFER_OPERATOR_ADDRESS, + ruleEngineMock + ); + + vm.prank(RULE_ENGINE_OPERATOR_ADDRESS); + ruleEngineMock.addRuleOperation(ruleConditionalTransferLight); + // Arrange - Assert + resUint256 = ruleEngineMock.rulesCountOperation(); + assertEq(resUint256, 1); + + // We set the Rule Engine + vm.prank(DEFAULT_ADMIN_ADDRESS); + CMTAT_CONTRACT.setRuleEngine(ruleEngineMock); + } + + function testCanDetectTransferRestrictionOK() public { + // Arrange + vm.prank(CONDITIONAL_TRANSFER_OPERATOR_ADDRESS); + + vm.expectEmit(true, true, true, true); + emit TransferApproved(ADDRESS1, ADDRESS2, defaultValue, 1); + ruleConditionalTransferLight.approveTransfer( + ADDRESS1, ADDRESS2, defaultValue + ); + // Act + // RuleEngine + resUint8 = ruleEngineMock.detectTransferRestriction( + ADDRESS1, + ADDRESS2, + defaultValue + ); + + // Assert + assertEq(resUint8, 0); + + resUint8 = ruleEngineMock.detectTransferRestrictionFrom( + address(0), + ADDRESS1, + ADDRESS2, + defaultValue + ); + + // Assert + assertEq(resUint8, 0); + + // CMTAT + resUint8 = CMTAT_CONTRACT.detectTransferRestriction( + ADDRESS1, + ADDRESS2, + defaultValue + ); + + // Assert + assertEq(resUint8, 0); + + resUint8 = CMTAT_CONTRACT.detectTransferRestrictionFrom( + address(0), + ADDRESS1, + ADDRESS2, + defaultValue + ); + + // Assert + assertEq(resUint8, 0); + + // RuleEngine + resBool = ruleEngineMock.canTransfer( + ADDRESS1, + ADDRESS2, + defaultValue + ); + + // Assert + assertEq(resBool, true ); + + + resBool = ruleEngineMock.canTransferFrom( + ADDRESS3, + ADDRESS1, + ADDRESS2, + defaultValue + ); + + // Assert + assertEq(resBool,true); + + // CMTAT + resBool = CMTAT_CONTRACT.canTransfer( + ADDRESS1, + ADDRESS2, + defaultValue + ); + + // Assert + assertEq(resBool, true ); + + + resBool = CMTAT_CONTRACT.canTransferFrom( + ADDRESS3, + ADDRESS1, + ADDRESS2, + defaultValue + ); + + // Assert + assertEq(resBool,true); + + } + + function testCanDetectTransferRestrictionNotOk() public { + // Act + resUint8 = ruleEngineMock.detectTransferRestriction( + ADDRESS1, + ADDRESS2, + 20 + ); + + // Assert + assertEq(resUint8, CODE_TRANSFER_REQUEST_NOT_APPROVED); + + // CMTAT + resUint8 = CMTAT_CONTRACT.detectTransferRestriction( + ADDRESS1, + ADDRESS2, + 20 + ); + + // Assert + assertEq(resUint8, CODE_TRANSFER_REQUEST_NOT_APPROVED); + + // Act + resUint8 = ruleEngineMock.detectTransferRestrictionFrom( + ADDRESS3, + ADDRESS1, + ADDRESS2, + 20 + ); + + // Assert + assertEq(resUint8, CODE_TRANSFER_REQUEST_NOT_APPROVED); + + // CMTAT + resUint8 = CMTAT_CONTRACT.detectTransferRestrictionFrom( + ADDRESS3, + ADDRESS1, + ADDRESS2, + 20 + ); + + // Assert + assertEq(resUint8, CODE_TRANSFER_REQUEST_NOT_APPROVED); + + // Act + resBool = ruleEngineMock.canTransfer( + ADDRESS1, + ADDRESS2, + 20 + ); + + // Assert + assertFalse(resBool); + + // CMTAT + resBool = CMTAT_CONTRACT.canTransfer( + ADDRESS1, + ADDRESS2, + 20 + ); + + // Assert + assertFalse(resBool); + + // Act + resBool = ruleEngineMock.canTransferFrom( + ADDRESS3, + ADDRESS1, + ADDRESS2, + 20 + ); + + // Assert + assertFalse(resBool); + + // CMTAT + resBool = CMTAT_CONTRACT.canTransferFrom( + ADDRESS3, + ADDRESS1, + ADDRESS2, + 20 + ); + + // Assert + assertFalse(resBool); + } + + function testCanPerfromATransfer() public { + vm.prank(CONDITIONAL_TRANSFER_OPERATOR_ADDRESS); + ruleConditionalTransferLight.approveTransfer( + ADDRESS1, ADDRESS2, defaultValue + ); + vm.prank(ADDRESS1); + CMTAT_CONTRACT.transfer(ADDRESS2, defaultValue); + + vm.prank(CONDITIONAL_TRANSFER_OPERATOR_ADDRESS); + ruleConditionalTransferLight.approveTransfer( + ADDRESS1, ADDRESS2, defaultValue + ); + vm.prank(ADDRESS1); + CMTAT_CONTRACT.approve(ADDRESS3, defaultValue); + vm.prank(ADDRESS3); + CMTAT_CONTRACT.transferFrom(ADDRESS1, ADDRESS2, defaultValue); + } + +} \ No newline at end of file diff --git a/test/RuleWhitelist/CMTATIntegration.t.sol b/test/RuleWhitelist/CMTATIntegration.t.sol index d64707b..1598887 100644 --- a/test/RuleWhitelist/CMTATIntegration.t.sol +++ b/test/RuleWhitelist/CMTATIntegration.t.sol @@ -39,8 +39,9 @@ contract CMTATIntegration is Test, HelperContract { CMTAT_CONTRACT.mint(ADDRESS2, ADDRESS2_BALANCE_INIT); vm.prank(DEFAULT_ADMIN_ADDRESS); CMTAT_CONTRACT.mint(ADDRESS3, ADDRESS3_BALANCE_INIT); - vm.prank(DEFAULT_ADMIN_ADDRESS); + // We set the Rule Engine + vm.prank(DEFAULT_ADMIN_ADDRESS); CMTAT_CONTRACT.setRuleEngine(ruleEngineMock); } @@ -194,6 +195,22 @@ contract CMTATIntegration is Test, HelperContract { ); // Assert assertEq(message1, TEXT_ADDRESS_TO_NOT_WHITELISTED); + + // res1 + res1 = ruleEngineMock.detectTransferRestrictionValidation( + ADDRESS1, + ADDRESS2, + 11 + ); + // Assert + assertEq(res1, CODE_ADDRESS_TO_NOT_WHITELISTED); + + message1 = ruleEngineMock.messageForTransferRestriction( + res1 + ); + + // Assert + assertEq(message1, TEXT_ADDRESS_TO_NOT_WHITELISTED); } function testDetectAndMessageWithFromAndToNotWhitelisted() public view { @@ -213,6 +230,23 @@ contract CMTATIntegration is Test, HelperContract { // Assert assertEq(message1, TEXT_ADDRESS_FROM_NOT_WHITELISTED); + + + // RuleEngine + res1 = ruleEngineMock.detectTransferRestrictionValidation( + ADDRESS1, + ADDRESS2, + 11 + ); + // Assert + assertEq(res1, CODE_ADDRESS_FROM_NOT_WHITELISTED); + + message1 = ruleEngineMock.messageForTransferRestriction( + res1 + ); + + // Assert + assertEq(message1, TEXT_ADDRESS_FROM_NOT_WHITELISTED); } function testDetectAndMessageWithAValidTransfer() public { @@ -245,6 +279,74 @@ contract CMTATIntegration is Test, HelperContract { assertEq(message1, TEXT_TRANSFER_OK); } + function testDetectAndMessageWithInvalidTransferFrom() public { + // Arrange + // We add the sender and the recipient to the whitelist. + address[] memory whitelist = new address[](2); + whitelist[0] = ADDRESS1; + whitelist[1] = ADDRESS2; + vm.prank(DEFAULT_ADMIN_ADDRESS); + (bool success, ) = address(ruleWhitelist).call( + abi.encodeWithSignature( + "addAddressesToTheList(address[])", + whitelist + ) + ); + require(success); + // Act + uint8 res1 = CMTAT_CONTRACT.detectTransferRestrictionFrom( + ADDRESS3, + ADDRESS1, + ADDRESS2, + 11 + ); + // Assert + assertEq(res1, CODE_ADDRESS_SPENDER_NOT_WHITELISTED); + + res1 = ruleEngineMock.detectTransferRestrictionValidationFrom( + ADDRESS3, + ADDRESS1, + ADDRESS2, + 11 + ); + // Assert + assertEq(res1, CODE_ADDRESS_SPENDER_NOT_WHITELISTED); + + resBool = CMTAT_CONTRACT.canTransferFrom( + ADDRESS3, + ADDRESS1, + ADDRESS2, + 11 + ); + // Assert + assertFalse(resBool); + + resBool = ruleEngineMock.canTransferFrom( + ADDRESS3, + ADDRESS1, + ADDRESS2, + 11 + ); + // Assert + assertFalse(resBool); + + resBool = ruleEngineMock.canTransferValidationFrom( + ADDRESS3, + ADDRESS1, + ADDRESS2, + 11 + ); + // Assert + assertFalse(resBool); + // Act + string memory message1 = CMTAT_CONTRACT.messageForTransferRestriction( + res1 + ); + // Assert + assertEq(message1, TEXT_ADDRESS_SPENDER_NOT_WHITELISTED); + } + + function testCanMint() public { // Arrange // Add address zero to the whitelist diff --git a/test/RuleWhitelist/RuleWhitelist.t.sol b/test/RuleWhitelist/RuleWhitelist.t.sol index 127baaa..7b3e7e1 100644 --- a/test/RuleWhitelist/RuleWhitelist.t.sol +++ b/test/RuleWhitelist/RuleWhitelist.t.sol @@ -129,6 +129,7 @@ contract RuleWhitelistTest is Test, HelperContract { ); // Assert assertEq(resString, TEXT_CODE_NOT_FOUND); + } function testCanTransfer() public { @@ -150,7 +151,7 @@ contract RuleWhitelistTest is Test, HelperContract { ruleWhitelist.addAddressToTheList(ADDRESS3); resBool = ruleWhitelist.canTransferFrom(ADDRESS3, ADDRESS2, ADDRESS1, 20); - assertEq(resBool, true); + assertEq(resBool, true); } function testTransferDetectedAsInvalid() public { @@ -209,6 +210,19 @@ contract RuleWhitelistTest is Test, HelperContract { assertEq(resUint8, CODE_ADDRESS_FROM_NOT_WHITELISTED); } + function testDetectTransferRestrictionSpender() public { + // Act + resUint8 = ruleWhitelist.detectTransferRestrictionFrom( + ADDRESS3, + ADDRESS1, + ADDRESS2, + 20 + ); + // Assert + assertEq(resUint8, CODE_ADDRESS_SPENDER_NOT_WHITELISTED); + } + + function testDetectTransferRestrictionTo() public { // Arrange vm.prank(WHITELIST_OPERATOR_ADDRESS); From 1c91cf8f2c5031c6cc9c315a4a3c643d80efc3f6 Mon Sep 17 00:00:00 2001 From: Ryan Sauge <71391932+rya-sge@users.noreply.github.com> Date: Tue, 22 Jul 2025 16:17:11 +0200 Subject: [PATCH 03/17] clean up --- src/RuleEngine.sol | 18 +++-- src/modules/RuleEngineOperation.sol | 89 ++++++++++++---------- src/modules/RuleEngineValidation.sol | 8 +- src/modules/RuleEngineValidationCommon.sol | 21 ++--- src/modules/RuleInternal.sol | 13 ++-- 5 files changed, 79 insertions(+), 70 deletions(-) diff --git a/src/RuleEngine.sol b/src/RuleEngine.sol index c7052ed..c926747 100644 --- a/src/RuleEngine.sol +++ b/src/RuleEngine.sol @@ -116,13 +116,13 @@ contract RuleEngine is address from, address to, uint256 value - ) public view override returns (bool) { + ) public virtual view override returns (bool) { return detectTransferRestriction(from, to, value) == uint8(REJECTED_CODE_BASE.TRANSFER_OK); } - /** + /** * @notice Validate a transfer * @param from the origin address * @param to the destination address @@ -134,7 +134,7 @@ contract RuleEngine is address from, address to, uint256 value - ) public view override returns (bool) { + ) public virtual view override returns (bool) { return detectTransferRestrictionFrom(spender, from, to, value) == uint8(REJECTED_CODE_BASE.TRANSFER_OK); @@ -147,7 +147,7 @@ contract RuleEngine is **/ function messageForTransferRestriction( uint8 restrictionCode - ) external view override returns (string memory) { + ) public virtual view override returns (string memory) { // Validation uint256 rulesLength = _rulesValidation.length; for (uint256 i = 0; i < rulesLength; ++i) { @@ -183,7 +183,7 @@ contract RuleEngine is address from, address to, uint256 value - ) public override onlyRole(TOKEN_CONTRACT_ROLE) { + ) public virtual override onlyRole(TOKEN_CONTRACT_ROLE) { // Validate transfer require(RuleEngineValidation.canTransferValidationFrom(spender, from, to, value), RuleEngine_InvalidTransfer(from, to, value)); @@ -195,7 +195,7 @@ contract RuleEngine is address from, address to, uint256 value - ) public override onlyRole(TOKEN_CONTRACT_ROLE) { + ) public virtual override onlyRole(TOKEN_CONTRACT_ROLE) { // Validate transfer require(RuleEngineValidation.canTransferValidation(from, to, value),RuleEngine_InvalidTransfer(from, to, value)); @@ -214,8 +214,9 @@ contract RuleEngine is // The Default Admin has all roles if (AccessControl.hasRole(DEFAULT_ADMIN_ROLE, account)) { return true; + } else { + return AccessControl.hasRole(role, account); } - return AccessControl.hasRole(role, account); } /*////////////////////////////////////////////////////////////// @@ -228,6 +229,7 @@ contract RuleEngine is function _msgSender() internal view + virtual override(ERC2771Context, Context) returns (address sender) { @@ -240,6 +242,7 @@ contract RuleEngine is function _msgData() internal view + virtual override(ERC2771Context, Context) returns (bytes calldata) { @@ -252,6 +255,7 @@ contract RuleEngine is function _contextSuffixLength() internal view + virtual override(ERC2771Context, Context) returns (uint256) { diff --git a/src/modules/RuleEngineOperation.sol b/src/modules/RuleEngineOperation.sol index 95eaabe..cefa10e 100644 --- a/src/modules/RuleEngineOperation.sol +++ b/src/modules/RuleEngineOperation.sol @@ -25,7 +25,7 @@ abstract contract RuleEngineOperation is */ function setRulesOperation( address[] calldata rules_ - ) public onlyRole(RULE_ENGINE_OPERATOR_ROLE) { + ) public virtual onlyRole(RULE_ENGINE_OPERATOR_ROLE) { if (_rulesOperation.length > 0) { _clearRulesOperation(); } @@ -37,27 +37,11 @@ abstract contract RuleEngineOperation is * @notice Clear all the rules of the array of rules * */ - function clearRulesOperation() public onlyRole(RULE_ENGINE_OPERATOR_ROLE) { + function clearRulesOperation() public virtual onlyRole(RULE_ENGINE_OPERATOR_ROLE) { _clearRulesOperation(); } - /** - * @notice Clear all the rules of the array of rules - * - */ - function _clearRulesOperation() internal { - uint256 index; - // we remove the last element first since it is more optimized. - for (uint256 i = _rulesOperation.length; i > 0; --i) { - unchecked { - // don't underflow since i > 0 - index = i - 1; - } - _removeRuleOperation(_rulesOperation[index], index); - } - emit ClearRules(_rulesOperation); - } - + /** * @notice Add a rule to the array of rules * Revert if one rule is a zero address or if the rule is already present @@ -65,7 +49,7 @@ abstract contract RuleEngineOperation is */ function addRuleOperation( IRuleOperation rule_ - ) public onlyRole(RULE_ENGINE_OPERATOR_ROLE) { + ) public virtual onlyRole(RULE_ENGINE_OPERATOR_ROLE) { RuleInternal._addRule(_rulesOperation, address(rule_)); emit AddRule(address(rule_)); } @@ -83,29 +67,15 @@ abstract contract RuleEngineOperation is function removeRuleOperation( IRuleOperation rule_, uint256 index - ) public onlyRole(RULE_ENGINE_OPERATOR_ROLE) { + ) public virtual onlyRole(RULE_ENGINE_OPERATOR_ROLE) { _removeRuleOperation(address(rule_), index); } - /** - * @notice Remove a rule from the array of rules - * Revert if the rule found at the specified index does not match the rule in argument - * @param rule_ address of the target rule - * @param index the position inside the array of rule - * @dev To reduce the array size, the last rule is moved to the location occupied - * by the rule to remove - * - * - */ - function _removeRuleOperation(address rule_, uint256 index) internal { - RuleInternal._removeRule(_rulesOperation, rule_, index); - emit RemoveRule(address(rule_)); - } - + /** * @return The number of rules inside the array */ - function rulesCountOperation() external view override returns (uint256) { + function rulesCountOperation() public view virtual override returns (uint256) { return _rulesOperation.length; } @@ -115,7 +85,7 @@ abstract contract RuleEngineOperation is */ function getRuleIndexOperation( IRuleOperation rule_ - ) external view returns (uint256 index) { + ) public view virtual returns (uint256 index) { return RuleInternal._getRuleIndex(_rulesOperation, address(rule_)); } @@ -126,7 +96,7 @@ abstract contract RuleEngineOperation is */ function ruleOperation( uint256 ruleId - ) external view override returns (address) { + ) public view virtual override returns (address) { return _rulesOperation[ruleId]; } @@ -135,14 +105,36 @@ abstract contract RuleEngineOperation is * @return An array of rules */ function rulesOperation() - external + public view + virtual override returns (address[] memory) { return _rulesOperation; } + /*////////////////////////////////////////////////////////////// + INTERNAL/PRIVATE FUNCTIONS + //////////////////////////////////////////////////////////////*/ + /** + * @notice Clear all the rules of the array of rules + * + */ + function _clearRulesOperation() internal virtual { + uint256 index; + // we remove the last element first since it is more optimized. + for (uint256 i = _rulesOperation.length; i > 0; --i) { + unchecked { + // don't underflow since i > 0 + index = i - 1; + } + _removeRuleOperation(_rulesOperation[index], index); + } + emit ClearRules(_rulesOperation); + } + + /** * @notice Go through all the rule to know if a restriction exists on the transfer * @param from the origin address @@ -153,7 +145,7 @@ abstract contract RuleEngineOperation is address from, address to, uint256 value - ) internal { + ) internal virtual{ uint256 rulesLength = _rulesOperation.length; for (uint256 i = 0; i < rulesLength; ++i) { IRuleOperation(_rulesOperation[i]).transferred( @@ -163,4 +155,19 @@ abstract contract RuleEngineOperation is ); } } + + /** + * @notice Remove a rule from the array of rules + * Revert if the rule found at the specified index does not match the rule in argument + * @param rule_ address of the target rule + * @param index the position inside the array of rule + * @dev To reduce the array size, the last rule is moved to the location occupied + * by the rule to remove + * + * + */ + function _removeRuleOperation(address rule_, uint256 index) internal virtual { + RuleInternal._removeRule(_rulesOperation, rule_, index); + emit RemoveRule(address(rule_)); + } } diff --git a/src/modules/RuleEngineValidation.sol b/src/modules/RuleEngineValidation.sol index a5780fa..e236831 100644 --- a/src/modules/RuleEngineValidation.sol +++ b/src/modules/RuleEngineValidation.sol @@ -29,7 +29,7 @@ abstract contract RuleEngineValidation is address from, address to, uint256 value - ) public view override returns (uint8) { + ) public view virtual override returns (uint8) { uint256 rulesLength = _rulesValidation.length; for (uint256 i = 0; i < rulesLength; ++i) { uint8 restriction = IRuleValidation(_rulesValidation[i]) @@ -47,7 +47,7 @@ abstract contract RuleEngineValidation is address from, address to, uint256 value - ) public view override returns (uint8) { + ) public view virtual override returns (uint8) { uint256 rulesLength = _rulesValidation.length; for (uint256 i = 0; i < rulesLength; ++i) { uint8 restriction = IRuleValidation(_rulesValidation[i]) @@ -70,7 +70,7 @@ abstract contract RuleEngineValidation is address from, address to, uint256 value - ) public view returns (bool) { + ) public view virtual returns (bool) { return detectTransferRestrictionValidation(from, to, value) == uint8(IERC1404Extend.REJECTED_CODE_BASE.TRANSFER_OK); @@ -88,7 +88,7 @@ abstract contract RuleEngineValidation is address from, address to, uint256 value - ) public view override returns (bool) { + ) public view virtual override returns (bool) { return detectTransferRestrictionValidationFrom(spender, from, to, value) == uint8(IERC1404Extend.REJECTED_CODE_BASE.TRANSFER_OK); diff --git a/src/modules/RuleEngineValidationCommon.sol b/src/modules/RuleEngineValidationCommon.sol index c1cccc2..bb372c7 100644 --- a/src/modules/RuleEngineValidationCommon.sol +++ b/src/modules/RuleEngineValidationCommon.sol @@ -29,7 +29,7 @@ abstract contract RuleEngineValidationCommon is */ function setRulesValidation( address[] calldata rules_ - ) public override onlyRole(RULE_ENGINE_OPERATOR_ROLE) { + ) public virtual override onlyRole(RULE_ENGINE_OPERATOR_ROLE) { if (_rulesValidation.length > 0) { _clearRulesValidation(); } @@ -41,7 +41,7 @@ abstract contract RuleEngineValidationCommon is * @notice Clear all the rules of the array of rules * */ - function clearRulesValidation() public onlyRole(RULE_ENGINE_OPERATOR_ROLE) { + function clearRulesValidation() public virtual onlyRole(RULE_ENGINE_OPERATOR_ROLE) { _clearRulesValidation(); } @@ -52,7 +52,7 @@ abstract contract RuleEngineValidationCommon is */ function addRuleValidation( IRuleValidation rule_ - ) public onlyRole(RULE_ENGINE_OPERATOR_ROLE) { + ) public virtual onlyRole(RULE_ENGINE_OPERATOR_ROLE) { RuleInternal._addRule(_rulesValidation, address(rule_)); emit AddRule(address(rule_)); } @@ -70,14 +70,14 @@ abstract contract RuleEngineValidationCommon is function removeRuleValidation( IRuleValidation rule_, uint256 index - ) public onlyRole(RULE_ENGINE_OPERATOR_ROLE) { + ) public virtual onlyRole(RULE_ENGINE_OPERATOR_ROLE) { _removeRuleValidation(address(rule_), index); } /** * @return The number of rules inside the array */ - function rulesCountValidation() external view override returns (uint256) { + function rulesCountValidation() public view virtual override returns (uint256) { return _rulesValidation.length; } @@ -87,7 +87,7 @@ abstract contract RuleEngineValidationCommon is */ function getRuleIndexValidation( IRuleValidation rule_ - ) external view returns (uint256 index) { + ) public view virtual returns (uint256 index) { return RuleInternal._getRuleIndex(_rulesValidation, address(rule_)); } @@ -98,7 +98,7 @@ abstract contract RuleEngineValidationCommon is */ function ruleValidation( uint256 ruleId - ) external view override returns (address) { + ) public view virtual override returns (address) { return _rulesValidation[ruleId]; } @@ -107,8 +107,9 @@ abstract contract RuleEngineValidationCommon is * @return An array of rules */ function rulesValidation() - external + public view + virtual override returns (address[] memory) { @@ -122,7 +123,7 @@ abstract contract RuleEngineValidationCommon is * @notice Clear all the rules of the array of rules * */ - function _clearRulesValidation() internal { + function _clearRulesValidation() internal virtual { uint256 index; // we remove the last element first since it is more optimized. for (uint256 i = _rulesValidation.length; i > 0; --i) { @@ -145,7 +146,7 @@ abstract contract RuleEngineValidationCommon is * * */ - function _removeRuleValidation(address rule_, uint256 index) internal { + function _removeRuleValidation(address rule_, uint256 index) internal virtual { RuleInternal._removeRule(_rulesValidation, rule_, index); emit RemoveRule(address(rule_)); } diff --git a/src/modules/RuleInternal.sol b/src/modules/RuleInternal.sol index 15bc236..7e0f851 100644 --- a/src/modules/RuleInternal.sol +++ b/src/modules/RuleInternal.sol @@ -11,6 +11,9 @@ abstract contract RuleInternal is RuleEngineInvariantStorage { // Can be shared betwen RuleOperation and RuleValidation since it is a mapping mapping(address => bool) _ruleIsPresent; + /*////////////////////////////////////////////////////////////// + INTERNAL/PRIVATE FUNCTIONS + //////////////////////////////////////////////////////////////*/ /** * @notice Set all the rules, will overwrite all the previous rules. \n * Revert if one rule is a zero address or if the rule is already present @@ -20,7 +23,7 @@ abstract contract RuleInternal is RuleEngineInvariantStorage { if (rules_.length == 0) { revert RuleEngine_ArrayIsEmpty(); } - for (uint256 i = 0; i < rules_.length; ) { + for (uint256 i = 0; i < rules_.length; ++i) { if (address(rules_[i]) == address(0x0)) { revert RuleEngine_RuleAddressZeroNotAllowed(); } @@ -29,9 +32,6 @@ abstract contract RuleInternal is RuleEngineInvariantStorage { } _ruleIsPresent[rules_[i]] = true; emit AddRule(rules_[i]); - unchecked { - ++i; - } } } @@ -86,13 +86,10 @@ abstract contract RuleInternal is RuleEngineInvariantStorage { address rule_ ) internal view returns (uint256 index) { uint256 rulesLength = _rules.length; - for (index = 0; index < rulesLength; ) { + for (index = 0; index < rulesLength; ++index) { if (_rules[index] == rule_) { return index; } - unchecked { - ++index; - } } return _rules.length; } From ae7840330dc3855a0897ca20c9db6a0daf0971f6 Mon Sep 17 00:00:00 2001 From: Ryan Sauge <71391932+rya-sge@users.noreply.github.com> Date: Tue, 5 Aug 2025 16:22:27 +0200 Subject: [PATCH 04/17] Use EnumerableSet to store rules --- src/RuleEngine.sol | 20 ++-- .../rules/operation/RuleOperationRevert.sol | 17 ++-- src/modules/RuleEngineInvariantStorage.sol | 5 +- src/modules/RuleEngineOperation.sol | 83 +++++++++------- src/modules/RuleEngineValidation.sol | 11 +-- src/modules/RuleEngineValidationCommon.sol | 83 ++++++++++------ src/modules/RuleInternal.sol | 96 ------------------- .../AccessControl/RuleEngineAccessControl.sol | 2 +- .../RuleEngineOperation.t.sol | 16 ++-- .../RuleEngineValidation.t.sol | 14 +-- 10 files changed, 139 insertions(+), 208 deletions(-) delete mode 100644 src/modules/RuleInternal.sol diff --git a/src/RuleEngine.sol b/src/RuleEngine.sol index c926747..2b38eff 100644 --- a/src/RuleEngine.sol +++ b/src/RuleEngine.sol @@ -64,9 +64,9 @@ contract RuleEngine is } // Operation - uint256 rulesLength = _rulesOperation.length; + uint256 rulesLength = rulesCountOperation(); for (uint256 i = 0; i < rulesLength; ++i) { - uint8 restriction = IRuleValidation(_rulesOperation[i]) + uint8 restriction = IRuleValidation(ruleOperation(i)) .detectTransferRestriction(from, to, value); if (restriction > 0) { return restriction; @@ -93,9 +93,9 @@ contract RuleEngine is } // Operation - uint256 rulesLength = _rulesOperation.length; + uint256 rulesLength = rulesCountOperation(); for (uint256 i = 0; i < rulesLength; ++i) { - uint8 restriction = IRuleValidation(_rulesOperation[i]) + uint8 restriction = IRuleValidation(ruleOperation(i)) .detectTransferRestrictionFrom(spender,from, to, value); if (restriction > 0) { return restriction; @@ -149,26 +149,26 @@ contract RuleEngine is uint8 restrictionCode ) public virtual view override returns (string memory) { // Validation - uint256 rulesLength = _rulesValidation.length; + uint256 rulesLength = rulesCountValidation(); for (uint256 i = 0; i < rulesLength; ++i) { if ( - IRuleValidation(_rulesValidation[i]) + IRuleValidation(ruleValidation(i)) .canReturnTransferRestrictionCode(restrictionCode) ) { return - IRuleValidation(_rulesValidation[i]) + IRuleValidation(ruleValidation(i)) .messageForTransferRestriction(restrictionCode); } } // operation - rulesLength = _rulesOperation.length; + rulesLength = rulesCountOperation(); for (uint256 i = 0; i < rulesLength; ++i) { if ( - IRuleValidation(_rulesOperation[i]) + IRuleValidation(ruleOperation(i)) .canReturnTransferRestrictionCode(restrictionCode) ) { return - IRuleValidation(_rulesOperation[i]) + IRuleValidation(ruleOperation(i)) .messageForTransferRestriction(restrictionCode); } } diff --git a/src/mocks/rules/operation/RuleOperationRevert.sol b/src/mocks/rules/operation/RuleOperationRevert.sol index 854b18b..882ee4e 100644 --- a/src/mocks/rules/operation/RuleOperationRevert.sol +++ b/src/mocks/rules/operation/RuleOperationRevert.sol @@ -21,22 +21,20 @@ contract RuleOperationRevert is AccessControl, RuleValidateTransfer, * @notice Called when a transfer occurs. Decrements approval count if allowed. * @dev `spender` is part of the interface but unused. */ - function transferred(address from, address to, uint256 value) public { + function transferred(address /*from*/, address /* to */, uint256 /* value */) public pure { revert RuleConditionalTransferLight_InvalidTransfer(); } /** * @notice Check if the transfer is valid - * @param from the origin address - * @param to the destination address * @return The restricion code or REJECTED_CODE_BASE.TRANSFER_OK **/ function detectTransferRestriction( - address from, - address to, - uint256 value - ) public view override returns (uint8) { + address /* from */, + address /* to */, + uint256 /* value */ + ) public pure override returns (uint8) { return uint8(REJECTED_CODE_BASE.TRANSFER_OK); } @@ -52,7 +50,7 @@ contract RuleOperationRevert is AccessControl, RuleValidateTransfer, address from, address to, uint256 value - ) public view override returns (uint8) { + ) public pure override returns (uint8) { return detectTransferRestriction(from,to, value ); } @@ -69,11 +67,10 @@ contract RuleOperationRevert is AccessControl, RuleValidateTransfer, /** * @notice Return the corresponding message - * @param restrictionCode The target restriction code * @return true if the transfer is valid, false otherwise **/ function messageForTransferRestriction( - uint8 restrictionCode + uint8 /* restrictionCode */ ) external pure override returns (string memory) { return TEXT_CODE_NOT_FOUND; } diff --git a/src/modules/RuleEngineInvariantStorage.sol b/src/modules/RuleEngineInvariantStorage.sol index e1e28e2..ab6967b 100644 --- a/src/modules/RuleEngineInvariantStorage.sol +++ b/src/modules/RuleEngineInvariantStorage.sol @@ -1,8 +1,9 @@ // SPDX-License-Identifier: MPL-2.0 - +import "OZ/utils/structs/EnumerableSet.sol"; pragma solidity ^0.8.20; abstract contract RuleEngineInvariantStorage { + using EnumerableSet for EnumerableSet.AddressSet; error RuleEngine_RuleAddressZeroNotAllowed(); error RuleEngine_RuleAlreadyExists(); error RuleEngine_RuleDoNotMatch(); @@ -15,7 +16,7 @@ abstract contract RuleEngineInvariantStorage { /// @notice Generate when a rule is removed event RemoveRule(address indexed rule); /// @notice Generate when all the rules are cleared - event ClearRules(address[] rulesRemoved); + event ClearRules(); /// @notice Role to manage the ruleEngine bytes32 public constant RULE_ENGINE_OPERATOR_ROLE = diff --git a/src/modules/RuleEngineOperation.sol b/src/modules/RuleEngineOperation.sol index cefa10e..2a00a86 100644 --- a/src/modules/RuleEngineOperation.sol +++ b/src/modules/RuleEngineOperation.sol @@ -2,21 +2,35 @@ pragma solidity ^0.8.20; -import "./RuleInternal.sol"; import "../interfaces/IRuleEngineOperation.sol"; import "../interfaces/IRuleOperation.sol"; import "OZ/access/AccessControl.sol"; - +import "./RuleEngineInvariantStorage.sol"; /** * @title Implementation of a ruleEngine defined by the CMTAT */ abstract contract RuleEngineOperation is AccessControl, - RuleInternal, + RuleEngineInvariantStorage, IRuleEngineOperation { + /// @dev Array of rules - address[] internal _rulesOperation; + //address[] internal _rulesOperation; + // Add the library methods + using EnumerableSet for EnumerableSet.AddressSet; + + // Declare a set state variable + EnumerableSet.AddressSet internal _rulesOperation; + + function _checkRule(address rule_) internal{ + if (rule_ == address(0x0)) { + revert RuleEngine_RuleAddressZeroNotAllowed(); + } + if (_rulesOperation.contains(rule_)) { + revert RuleEngine_RuleAlreadyExists(); + } + } /** * @notice Set all the rules, will overwrite all the previous rules. \n @@ -26,11 +40,18 @@ abstract contract RuleEngineOperation is function setRulesOperation( address[] calldata rules_ ) public virtual onlyRole(RULE_ENGINE_OPERATOR_ROLE) { - if (_rulesOperation.length > 0) { + if (rules_.length == 0) { + revert RuleEngine_ArrayIsEmpty(); + } + if (_rulesOperation.length() > 0) { _clearRulesOperation(); } - _setRules(rules_); - _rulesOperation = rules_; + for(uint256 i = 0; i < rules_.length; ++i){ + _checkRule(address(rules_[i])); + _rulesOperation.add(address(rules_[i])); + emit AddRule(rules_[i]); + } + } /** @@ -50,7 +71,8 @@ abstract contract RuleEngineOperation is function addRuleOperation( IRuleOperation rule_ ) public virtual onlyRole(RULE_ENGINE_OPERATOR_ROLE) { - RuleInternal._addRule(_rulesOperation, address(rule_)); + _checkRule(address(rule_)); + _rulesOperation.add(address(rule_)); emit AddRule(address(rule_)); } @@ -58,17 +80,16 @@ abstract contract RuleEngineOperation is * @notice Remove a rule from the array of rules * Revert if the rule found at the specified index does not match the rule in argument * @param rule_ address of the target rule - * @param index the position inside the array of rule * @dev To reduce the array size, the last rule is moved to the location occupied * by the rule to remove * * */ function removeRuleOperation( - IRuleOperation rule_, - uint256 index + IRuleOperation rule_ ) public virtual onlyRole(RULE_ENGINE_OPERATOR_ROLE) { - _removeRuleOperation(address(rule_), index); + require(rulesOperationIsPresent(rule_), RuleEngine_RuleDoNotMatch()); + _removeRuleOperation(address(rule_)); } @@ -76,19 +97,14 @@ abstract contract RuleEngineOperation is * @return The number of rules inside the array */ function rulesCountOperation() public view virtual override returns (uint256) { - return _rulesOperation.length; + return _rulesOperation.length(); } - /** - * @notice Get the index of a rule inside the list - * @return index if the rule is found, _rulesOperation.length otherwise - */ - function getRuleIndexOperation( - IRuleOperation rule_ - ) public view virtual returns (uint256 index) { - return RuleInternal._getRuleIndex(_rulesOperation, address(rule_)); + function rulesOperationIsPresent(IRuleOperation rule_) public view virtual returns (bool){ + return _rulesOperation.contains(address(rule_)); } + /** * @notice Get the rule at the position specified by ruleId * @param ruleId index of the rule @@ -97,7 +113,7 @@ abstract contract RuleEngineOperation is function ruleOperation( uint256 ruleId ) public view virtual override returns (address) { - return _rulesOperation[ruleId]; + return _rulesOperation.at(ruleId); } /** @@ -111,7 +127,7 @@ abstract contract RuleEngineOperation is override returns (address[] memory) { - return _rulesOperation; + return _rulesOperation.values(); } /*////////////////////////////////////////////////////////////// @@ -122,16 +138,10 @@ abstract contract RuleEngineOperation is * */ function _clearRulesOperation() internal virtual { - uint256 index; // we remove the last element first since it is more optimized. - for (uint256 i = _rulesOperation.length; i > 0; --i) { - unchecked { - // don't underflow since i > 0 - index = i - 1; - } - _removeRuleOperation(_rulesOperation[index], index); - } - emit ClearRules(_rulesOperation); + + emit ClearRules(); + _rulesOperation.clear(); } @@ -146,9 +156,9 @@ abstract contract RuleEngineOperation is address to, uint256 value ) internal virtual{ - uint256 rulesLength = _rulesOperation.length; + uint256 rulesLength = _rulesOperation.length(); for (uint256 i = 0; i < rulesLength; ++i) { - IRuleOperation(_rulesOperation[i]).transferred( + IRuleOperation(_rulesOperation.at(i)).transferred( from, to, value @@ -160,14 +170,13 @@ abstract contract RuleEngineOperation is * @notice Remove a rule from the array of rules * Revert if the rule found at the specified index does not match the rule in argument * @param rule_ address of the target rule - * @param index the position inside the array of rule * @dev To reduce the array size, the last rule is moved to the location occupied * by the rule to remove * * */ - function _removeRuleOperation(address rule_, uint256 index) internal virtual { - RuleInternal._removeRule(_rulesOperation, rule_, index); + function _removeRuleOperation(address rule_) internal virtual { + _rulesOperation.remove(rule_); emit RemoveRule(address(rule_)); } } diff --git a/src/modules/RuleEngineValidation.sol b/src/modules/RuleEngineValidation.sol index e236831..5161e21 100644 --- a/src/modules/RuleEngineValidation.sol +++ b/src/modules/RuleEngineValidation.sol @@ -3,7 +3,6 @@ pragma solidity ^0.8.20; import "OZ/access/AccessControl.sol"; -import "./RuleInternal.sol"; import "./RuleEngineValidationCommon.sol"; import "../interfaces/IRuleEngineValidation.sol"; import "../interfaces/IRuleValidation.sol"; @@ -14,7 +13,6 @@ import "CMTAT/interfaces/tokenization/draft-IERC1404.sol"; */ abstract contract RuleEngineValidation is AccessControl, - RuleInternal, RuleEngineValidationCommon, IRuleEngineValidation { @@ -30,9 +28,10 @@ abstract contract RuleEngineValidation is address to, uint256 value ) public view virtual override returns (uint8) { - uint256 rulesLength = _rulesValidation.length; + //uint256 rulesLength = _rulesValidation.length(); + uint256 rulesLength = rulesCountValidation(); for (uint256 i = 0; i < rulesLength; ++i) { - uint8 restriction = IRuleValidation(_rulesValidation[i]) + uint8 restriction = IRuleValidation(ruleValidation(i)) .detectTransferRestriction(from, to, value); if (restriction > 0) { return restriction; @@ -48,9 +47,9 @@ abstract contract RuleEngineValidation is address to, uint256 value ) public view virtual override returns (uint8) { - uint256 rulesLength = _rulesValidation.length; + uint256 rulesLength = rulesCountValidation(); for (uint256 i = 0; i < rulesLength; ++i) { - uint8 restriction = IRuleValidation(_rulesValidation[i]) + uint8 restriction = IRuleValidation(ruleValidation(i)) .detectTransferRestrictionFrom(spender, from, to, value); if (restriction > 0) { return restriction; diff --git a/src/modules/RuleEngineValidationCommon.sol b/src/modules/RuleEngineValidationCommon.sol index bb372c7..fb00b67 100644 --- a/src/modules/RuleEngineValidationCommon.sol +++ b/src/modules/RuleEngineValidationCommon.sol @@ -3,20 +3,35 @@ pragma solidity ^0.8.20; import "OZ/access/AccessControl.sol"; -import "./RuleInternal.sol"; import "../interfaces/IRuleEngineValidation.sol"; import "../interfaces/IRuleValidation.sol"; - +import "OZ/utils/structs/EnumerableSet.sol"; +import "./RuleEngineInvariantStorage.sol"; /** * @title Implementation of a ruleEngine defined by the CMTAT */ abstract contract RuleEngineValidationCommon is AccessControl, - RuleInternal, - IRuleEngineValidationCommon + IRuleEngineValidationCommon, + RuleEngineInvariantStorage { + // Add the library methods + using EnumerableSet for EnumerableSet.AddressSet; + + // Declare a set state variable + EnumerableSet.AddressSet internal _rulesValidation; /// @dev Array of rules - address[] internal _rulesValidation; + //address[] internal _rulesValidation; + + + function _checkRuleValidation(address rule_) internal virtual{ + if (rule_ == address(0x0)) { + revert RuleEngine_RuleAddressZeroNotAllowed(); + } + if (_rulesValidation.contains(rule_)) { + revert RuleEngine_RuleAlreadyExists(); + } + } /*////////////////////////////////////////////////////////////// PUBLIC/EXTERNAL FUNCTIONS @@ -30,11 +45,22 @@ abstract contract RuleEngineValidationCommon is function setRulesValidation( address[] calldata rules_ ) public virtual override onlyRole(RULE_ENGINE_OPERATOR_ROLE) { - if (_rulesValidation.length > 0) { + if (rules_.length == 0) { + revert RuleEngine_ArrayIsEmpty(); + } + uint256 rulesLength = _rulesValidation.length(); + if ( rulesLength > 0) { _clearRulesValidation(); } - _setRules(rules_); - _rulesValidation = rules_; + for(uint256 i = 0; i < rules_.length; ++i){ + _checkRuleValidation(address(rules_[i])); + _rulesValidation.add(address(rules_[i])); + emit AddRule(rules_[i]); + } + } + + function rulesValidationIsPresent(IRuleValidation rule_) public view virtual returns (bool){ + return _rulesValidation.contains(address(rule_)); } /** @@ -53,7 +79,8 @@ abstract contract RuleEngineValidationCommon is function addRuleValidation( IRuleValidation rule_ ) public virtual onlyRole(RULE_ENGINE_OPERATOR_ROLE) { - RuleInternal._addRule(_rulesValidation, address(rule_)); + _checkRuleValidation(address(rule_)); + _rulesValidation.add(address(rule_)); emit AddRule(address(rule_)); } @@ -61,35 +88,36 @@ abstract contract RuleEngineValidationCommon is * @notice Remove a rule from the array of rules * Revert if the rule found at the specified index does not match the rule in argument * @param rule_ address of the target rule - * @param index the position inside the array of rule * @dev To reduce the array size, the last rule is moved to the location occupied * by the rule to remove * * */ function removeRuleValidation( - IRuleValidation rule_, - uint256 index + IRuleValidation rule_ ) public virtual onlyRole(RULE_ENGINE_OPERATOR_ROLE) { - _removeRuleValidation(address(rule_), index); + require(rulesValidationIsPresent(rule_), RuleEngine_RuleDoNotMatch()); + _removeRuleValidation(address(rule_)); } /** * @return The number of rules inside the array */ function rulesCountValidation() public view virtual override returns (uint256) { - return _rulesValidation.length; + return _rulesValidation.length(); } + + /** * @notice Get the index of a rule inside the list * @return index if the rule is found, _rulesValidation.length otherwise */ - function getRuleIndexValidation( + /* function getRuleIndexValidation( IRuleValidation rule_ ) public view virtual returns (uint256 index) { return RuleInternal._getRuleIndex(_rulesValidation, address(rule_)); - } + }*/ /** * @notice Get the rule at the position specified by ruleId @@ -99,9 +127,10 @@ abstract contract RuleEngineValidationCommon is function ruleValidation( uint256 ruleId ) public view virtual override returns (address) { - return _rulesValidation[ruleId]; + return _rulesValidation.at(ruleId); } + /** * @notice Get all the rules * @return An array of rules @@ -113,7 +142,7 @@ abstract contract RuleEngineValidationCommon is override returns (address[] memory) { - return _rulesValidation; + return _rulesValidation.values(); } /*////////////////////////////////////////////////////////////// @@ -124,30 +153,22 @@ abstract contract RuleEngineValidationCommon is * */ function _clearRulesValidation() internal virtual { - uint256 index; - // we remove the last element first since it is more optimized. - for (uint256 i = _rulesValidation.length; i > 0; --i) { - unchecked { - // don't underflow since i > 0 - index = i - 1; - } - _removeRuleValidation(_rulesValidation[index], index); - } - emit ClearRules(_rulesValidation); + emit ClearRules(); + // O(N) + _rulesValidation.clear(); } /** * @notice Remove a rule from the array of rules * Revert if the rule found at the specified index does not match the rule in argument * @param rule_ address of the target rule - * @param index the position inside the array of rule * @dev To reduce the array size, the last rule is moved to the location occupied * by the rule to remove * * */ - function _removeRuleValidation(address rule_, uint256 index) internal virtual { - RuleInternal._removeRule(_rulesValidation, rule_, index); + function _removeRuleValidation(address rule_) internal virtual { + _rulesValidation.remove(rule_); emit RemoveRule(address(rule_)); } } diff --git a/src/modules/RuleInternal.sol b/src/modules/RuleInternal.sol deleted file mode 100644 index 7e0f851..0000000 --- a/src/modules/RuleInternal.sol +++ /dev/null @@ -1,96 +0,0 @@ -// SPDX-License-Identifier: MPL-2.0 - -pragma solidity ^0.8.20; -import "./RuleEngineInvariantStorage.sol"; - -/** - * @title Implementation of a ruleEngine defined by the CMTAT - */ -abstract contract RuleInternal is RuleEngineInvariantStorage { - /// @dev Indicate if a rule already exists - // Can be shared betwen RuleOperation and RuleValidation since it is a mapping - mapping(address => bool) _ruleIsPresent; - - /*////////////////////////////////////////////////////////////// - INTERNAL/PRIVATE FUNCTIONS - //////////////////////////////////////////////////////////////*/ - /** - * @notice Set all the rules, will overwrite all the previous rules. \n - * Revert if one rule is a zero address or if the rule is already present - * - */ - function _setRules(address[] calldata rules_) internal { - if (rules_.length == 0) { - revert RuleEngine_ArrayIsEmpty(); - } - for (uint256 i = 0; i < rules_.length; ++i) { - if (address(rules_[i]) == address(0x0)) { - revert RuleEngine_RuleAddressZeroNotAllowed(); - } - if (_ruleIsPresent[rules_[i]]) { - revert RuleEngine_RuleAlreadyExists(); - } - _ruleIsPresent[rules_[i]] = true; - emit AddRule(rules_[i]); - } - } - - /** - * @notice Add a rule to the array of rules - * Revert if one rule is a zero address or if the rule is already present - * - */ - function _addRule(address[] storage _rules, address rule_) internal { - if (address(rule_) == address(0x0)) { - revert RuleEngine_RuleAddressZeroNotAllowed(); - } - if (_ruleIsPresent[rule_]) { - revert RuleEngine_RuleAlreadyExists(); - } - _rules.push(rule_); - _ruleIsPresent[rule_] = true; - } - - /** - * @notice Remove a rule from the array of rules - * Revert if the rule found at the specified index does not match the rule in argument - * @param rule_ address of the target rule - * @param index the position inside the array of rule - * @dev To reduce the array size, the last rule is moved to the location occupied - * by the rule to remove - * - * - */ - function _removeRule( - address[] storage _rules, - address rule_, - uint256 index - ) internal { - if (_rules[index] != rule_) { - revert RuleEngine_RuleDoNotMatch(); - } - if (index != _rules.length - 1) { - _rules[index] = _rules[_rules.length - 1]; - } - _rules.pop(); - _ruleIsPresent[rule_] = false; - emit RemoveRule(rule_); - } - - /** - * @notice Get the index of a rule inside the list - * @return index if the rule is found, _rules.length otherwise - */ - function _getRuleIndex( - address[] storage _rules, - address rule_ - ) internal view returns (uint256 index) { - uint256 rulesLength = _rules.length; - for (index = 0; index < rulesLength; ++index) { - if (_rules[index] == rule_) { - return index; - } - } - return _rules.length; - } -} diff --git a/test/RuleEngine/AccessControl/RuleEngineAccessControl.sol b/test/RuleEngine/AccessControl/RuleEngineAccessControl.sol index 44b40eb..e5f2be3 100644 --- a/test/RuleEngine/AccessControl/RuleEngineAccessControl.sol +++ b/test/RuleEngine/AccessControl/RuleEngineAccessControl.sol @@ -113,7 +113,7 @@ contract RuleEngineAccessControlTest is Test, HelperContract { RULE_ENGINE_OPERATOR_ROLE ) ); - ruleEngineMock.removeRuleValidation(ruleWhitelist, 0); + ruleEngineMock.removeRuleValidation(ruleWhitelist); // Assert resUint256 = ruleEngineMock.rulesCountValidation(); diff --git a/test/RuleEngine/ruleEngineOperation/RuleEngineOperation.t.sol b/test/RuleEngine/ruleEngineOperation/RuleEngineOperation.t.sol index dad6248..b400b54 100644 --- a/test/RuleEngine/ruleEngineOperation/RuleEngineOperation.t.sol +++ b/test/RuleEngine/ruleEngineOperation/RuleEngineOperation.t.sol @@ -302,7 +302,7 @@ contract RuleEngineOperationTest is Test, HelperContract { // Arrange vm.prank(RULE_ENGINE_OPERATOR_ADDRESS); - ruleEngineMock.removeRuleOperation(ruleConditionalTransferLight, 0); + ruleEngineMock.removeRuleOperation(ruleConditionalTransferLight); // Act vm.expectEmit(true, false, false, false); @@ -316,7 +316,7 @@ contract RuleEngineOperationTest is Test, HelperContract { assertEq(resUint256, 1); } - function testCanRemoveNonExistantRule() public { + function testCannotRemoveNonExistantRule() public { // Arrange vm.prank(WHITELIST_OPERATOR_ADDRESS); RuleConditionalTransferLight ruleConditionalTransferLight1 = new RuleConditionalTransferLight( @@ -327,7 +327,7 @@ contract RuleEngineOperationTest is Test, HelperContract { // Act vm.expectRevert(RuleEngine_RuleDoNotMatch.selector); vm.prank(RULE_ENGINE_OPERATOR_ADDRESS); - ruleEngineMock.removeRuleOperation(ruleConditionalTransferLight1, 0); + ruleEngineMock.removeRuleOperation(ruleConditionalTransferLight1); // Assert resUint256 = ruleEngineMock.rulesCountOperation(); @@ -348,7 +348,7 @@ contract RuleEngineOperationTest is Test, HelperContract { vm.expectEmit(true, false, false, false); emit RemoveRule(address(ruleConditionalTransferLight1)); vm.prank(RULE_ENGINE_OPERATOR_ADDRESS); - ruleEngineMock.removeRuleOperation(ruleConditionalTransferLight1, 1); + ruleEngineMock.removeRuleOperation(ruleConditionalTransferLight1); // Assert resUint256 = ruleEngineMock.rulesCountOperation(); @@ -369,7 +369,7 @@ contract RuleEngineOperationTest is Test, HelperContract { vm.expectEmit(true, false, false, false); emit RemoveRule(address(ruleConditionalTransferLight)); vm.prank(RULE_ENGINE_OPERATOR_ADDRESS); - ruleEngineMock.removeRuleOperation(ruleConditionalTransferLight, 0); + ruleEngineMock.removeRuleOperation(ruleConditionalTransferLight); // Assert resUint256 = ruleEngineMock.rulesCountOperation(); @@ -399,7 +399,7 @@ contract RuleEngineOperationTest is Test, HelperContract { vm.expectEmit(true, false, false, false); emit RemoveRule(address(ruleConditionalTransferLight1)); vm.prank(RULE_ENGINE_OPERATOR_ADDRESS); - ruleEngineMock.removeRuleOperation(ruleConditionalTransferLight1, 1); + ruleEngineMock.removeRuleOperation(ruleConditionalTransferLight1); // Assert address[] memory _rules = ruleEngineMock.rulesOperation(); @@ -551,7 +551,7 @@ contract RuleEngineOperationTest is Test, HelperContract { assertEq(resCallBool, true); // Act - uint256 index1 = ruleEngineMock.getRuleIndexOperation( + /* uint256 index1 = ruleEngineMock.getRuleIndexOperation( ruleConditionalTransferLight1 ); uint256 index2 = ruleEngineMock.getRuleIndexOperation( @@ -565,6 +565,6 @@ contract RuleEngineOperationTest is Test, HelperContract { // Assert assertEq(index1, 0); assertEq(index2, 1); - assertEq(index3, ruleConditionalTransferLightTab.length); + assertEq(index3, ruleConditionalTransferLightTab.length);*/ } } \ No newline at end of file diff --git a/test/RuleEngine/ruleEngineValidation/RuleEngineValidation.t.sol b/test/RuleEngine/ruleEngineValidation/RuleEngineValidation.t.sol index b80cd93..2acee37 100644 --- a/test/RuleEngine/ruleEngineValidation/RuleEngineValidation.t.sol +++ b/test/RuleEngine/ruleEngineValidation/RuleEngineValidation.t.sol @@ -312,7 +312,7 @@ contract RuleEngineValidationTest is Test, HelperContract { // Arrange vm.prank(RULE_ENGINE_OPERATOR_ADDRESS); - ruleEngineMock.removeRuleValidation(ruleWhitelist, 0); + ruleEngineMock.removeRuleValidation(ruleWhitelist); // Act vm.expectEmit(true, false, false, false); @@ -337,7 +337,7 @@ contract RuleEngineValidationTest is Test, HelperContract { // Act vm.expectRevert(RuleEngine_RuleDoNotMatch.selector); vm.prank(RULE_ENGINE_OPERATOR_ADDRESS); - ruleEngineMock.removeRuleValidation(ruleWhitelist1, 0); + ruleEngineMock.removeRuleValidation(ruleWhitelist1); // Assert resUint256 = ruleEngineMock.rulesCountValidation(); @@ -358,7 +358,7 @@ contract RuleEngineValidationTest is Test, HelperContract { vm.expectEmit(true, false, false, false); emit RemoveRule(address(ruleWhitelist1)); vm.prank(RULE_ENGINE_OPERATOR_ADDRESS); - ruleEngineMock.removeRuleValidation(ruleWhitelist1, 1); + ruleEngineMock.removeRuleValidation(ruleWhitelist1); // Assert resUint256 = ruleEngineMock.rulesCountValidation(); @@ -379,7 +379,7 @@ contract RuleEngineValidationTest is Test, HelperContract { vm.expectEmit(true, false, false, false); emit RemoveRule(address(ruleWhitelist)); vm.prank(RULE_ENGINE_OPERATOR_ADDRESS); - ruleEngineMock.removeRuleValidation(ruleWhitelist, 0); + ruleEngineMock.removeRuleValidation(ruleWhitelist); // Assert resUint256 = ruleEngineMock.rulesCountValidation(); @@ -409,7 +409,7 @@ contract RuleEngineValidationTest is Test, HelperContract { vm.expectEmit(true, false, false, false); emit RemoveRule(address(ruleWhitelist1)); vm.prank(RULE_ENGINE_OPERATOR_ADDRESS); - ruleEngineMock.removeRuleValidation(ruleWhitelist1, 1); + ruleEngineMock.removeRuleValidation(ruleWhitelist1); // Assert address[] memory _rules = ruleEngineMock.rulesValidation(); @@ -533,7 +533,7 @@ contract RuleEngineValidationTest is Test, HelperContract { assertEq(resCallBool, true); // Act - uint256 index1 = ruleEngineMock.getRuleIndexValidation(ruleWhitelist1); + /* uint256 index1 = ruleEngineMock.getRuleIndexValidation(ruleWhitelist1); uint256 index2 = ruleEngineMock.getRuleIndexValidation(ruleWhitelist2); // Length of the list because ruleWhitelist is not in the list uint256 index3 = ruleEngineMock.getRuleIndexValidation(ruleWhitelist); @@ -541,7 +541,7 @@ contract RuleEngineValidationTest is Test, HelperContract { // Assert assertEq(index1, 0); assertEq(index2, 1); - assertEq(index3, ruleWhitelistTab.length); + assertEq(index3, ruleWhitelistTab.length);*/ } function testMessageForTransferRestrictionWithUnknownRestrictionCodeAndNoRuless() From 4930a35714a44880358588238158896f970597bd Mon Sep 17 00:00:00 2001 From: Ryan Sauge <71391932+rya-sge@users.noreply.github.com> Date: Thu, 7 Aug 2025 15:46:22 +0200 Subject: [PATCH 05/17] clean up --- src/RuleEngine.sol | 77 +++---- src/interfaces/IRuleEngineValidation.sol | 4 +- src/modules/MetaTxModuleStandalone.sol | 2 +- src/modules/RuleEngineInvariantStorage.sol | 3 +- src/modules/RuleEngineOperation.sol | 34 ++-- src/modules/RuleEngineValidation.sol | 224 ++++++++++++++------- src/modules/RuleEngineValidationCommon.sol | 174 ---------------- src/modules/RuleEngineValidationRead.sol | 97 +++++++++ 8 files changed, 311 insertions(+), 304 deletions(-) delete mode 100644 src/modules/RuleEngineValidationCommon.sol create mode 100644 src/modules/RuleEngineValidationRead.sol diff --git a/src/RuleEngine.sol b/src/RuleEngine.sol index 2b38eff..5bff5d1 100644 --- a/src/RuleEngine.sol +++ b/src/RuleEngine.sol @@ -2,10 +2,15 @@ pragma solidity ^0.8.20; -import "CMTAT/interfaces/engine/IRuleEngine.sol"; -import "./modules/MetaTxModuleStandalone.sol"; -import "./modules/RuleEngineOperation.sol"; -import {RuleEngineValidation} from "./modules/RuleEngineValidation.sol"; +// OpenZeppelin +import {AccessControl} from "OZ/access/AccessControl.sol"; +import {Context} from "OZ/utils/Context.sol"; +// CMTAT +import {IRuleEngine}from "CMTAT/interfaces/engine/IRuleEngine.sol"; +import {MetaTxModuleStandalone, ERC2771Context} from "./modules/MetaTxModuleStandalone.sol"; +// Other +import {RuleEngineOperation} from "./modules/RuleEngineOperation.sol"; +import {RuleEngineValidationRead, RuleEngineValidation} from "./modules/RuleEngineValidationRead.sol"; import {IRuleValidation} from "./interfaces/IRuleValidation.sol"; /** * @title Implementation of a ruleEngine as defined by the CMTAT @@ -13,7 +18,7 @@ import {IRuleValidation} from "./interfaces/IRuleValidation.sol"; contract RuleEngine is IRuleEngine, RuleEngineOperation, - RuleEngineValidation, + RuleEngineValidationRead, MetaTxModuleStandalone { @@ -41,6 +46,36 @@ contract RuleEngine is _grantRole(DEFAULT_ADMIN_ROLE, admin); } + /* ============ State functions ============ */ + /* + * @notice function protected by access control + */ + function transferred( + address spender, + address from, + address to, + uint256 value + ) public virtual override onlyRole(TOKEN_CONTRACT_ROLE) { + // Validate transfer + require(RuleEngineValidationRead.canTransferValidationFrom(spender, from, to, value), RuleEngine_InvalidTransfer(from, to, value)); + + // Apply operation on RuleEngine + RuleEngineOperation._transferred(from, to, value); + } + + function transferred( + address from, + address to, + uint256 value + ) public virtual override onlyRole(TOKEN_CONTRACT_ROLE) { + // Validate transfer + require(RuleEngineValidationRead.canTransferValidation(from, to, value),RuleEngine_InvalidTransfer(from, to, value)); + + // Apply operation on RuleEngine + RuleEngineOperation._transferred(from, to, value); + } + + /* ============ View functions ============ */ /** * @notice Go through all the rule to know if a restriction exists on the transfer * @param from the origin address @@ -54,7 +89,7 @@ contract RuleEngine is uint256 value ) public view override returns (uint8) { // Validation - uint8 code = RuleEngineValidation.detectTransferRestrictionValidation( + uint8 code = RuleEngineValidationRead.detectTransferRestrictionValidation( from, to, value @@ -83,7 +118,7 @@ contract RuleEngine is uint256 value ) public view override returns (uint8) { // Validation - uint8 code = RuleEngineValidation.detectTransferRestrictionValidationFrom(spender, + uint8 code = RuleEngineValidationRead.detectTransferRestrictionValidationFrom(spender, from, to, value @@ -175,34 +210,6 @@ contract RuleEngine is return "Unknown restriction code"; } - /* - * @notice function protected by access control - */ - function transferred( - address spender, - address from, - address to, - uint256 value - ) public virtual override onlyRole(TOKEN_CONTRACT_ROLE) { - // Validate transfer - require(RuleEngineValidation.canTransferValidationFrom(spender, from, to, value), RuleEngine_InvalidTransfer(from, to, value)); - - // Apply operation on RuleEngine - RuleEngineOperation._transferred(from, to, value); - } - - function transferred( - address from, - address to, - uint256 value - ) public virtual override onlyRole(TOKEN_CONTRACT_ROLE) { - // Validate transfer - require(RuleEngineValidation.canTransferValidation(from, to, value),RuleEngine_InvalidTransfer(from, to, value)); - - // Apply operation on RuleEngine - RuleEngineOperation._transferred(from, to, value); - } - /* ============ ACCESS CONTROL ============ */ /** * @dev Returns `true` if `account` has been granted `role`. diff --git a/src/interfaces/IRuleEngineValidation.sol b/src/interfaces/IRuleEngineValidation.sol index f471dde..ecd75a5 100644 --- a/src/interfaces/IRuleEngineValidation.sol +++ b/src/interfaces/IRuleEngineValidation.sol @@ -2,7 +2,7 @@ pragma solidity ^0.8.20; -interface IRuleEngineValidation { +interface IRuleEngineValidationRead { /** * @dev See ERC-1404 * @@ -31,7 +31,7 @@ interface IRuleEngineValidation { ) external view returns (bool isValid); } -interface IRuleEngineValidationCommon { +interface IRuleEngineValidation { /** * @dev define the rules, the precedent rules will be overwritten */ diff --git a/src/modules/MetaTxModuleStandalone.sol b/src/modules/MetaTxModuleStandalone.sol index a234a35..88c1df5 100644 --- a/src/modules/MetaTxModuleStandalone.sol +++ b/src/modules/MetaTxModuleStandalone.sol @@ -2,7 +2,7 @@ pragma solidity ^0.8.20; -import "OZ/metatx/ERC2771Context.sol"; +import {ERC2771Context} from "OZ/metatx/ERC2771Context.sol"; /** * @dev Meta transaction (gasless) module. diff --git a/src/modules/RuleEngineInvariantStorage.sol b/src/modules/RuleEngineInvariantStorage.sol index ab6967b..2788f5f 100644 --- a/src/modules/RuleEngineInvariantStorage.sol +++ b/src/modules/RuleEngineInvariantStorage.sol @@ -1,9 +1,8 @@ // SPDX-License-Identifier: MPL-2.0 -import "OZ/utils/structs/EnumerableSet.sol"; + pragma solidity ^0.8.20; abstract contract RuleEngineInvariantStorage { - using EnumerableSet for EnumerableSet.AddressSet; error RuleEngine_RuleAddressZeroNotAllowed(); error RuleEngine_RuleAlreadyExists(); error RuleEngine_RuleDoNotMatch(); diff --git a/src/modules/RuleEngineOperation.sol b/src/modules/RuleEngineOperation.sol index 2a00a86..74398ea 100644 --- a/src/modules/RuleEngineOperation.sol +++ b/src/modules/RuleEngineOperation.sol @@ -2,12 +2,15 @@ pragma solidity ^0.8.20; -import "../interfaces/IRuleEngineOperation.sol"; -import "../interfaces/IRuleOperation.sol"; -import "OZ/access/AccessControl.sol"; -import "./RuleEngineInvariantStorage.sol"; +// OpenZeppelin +import {EnumerableSet} from "OZ/utils/structs/EnumerableSet.sol"; +import {AccessControl} from "OZ/access/AccessControl.sol"; +// Other +import {IRuleEngineOperation} from "../interfaces/IRuleEngineOperation.sol"; +import {IRuleOperation} from "../interfaces/IRuleOperation.sol"; +import {RuleEngineInvariantStorage} from "./RuleEngineInvariantStorage.sol"; /** - * @title Implementation of a ruleEngine defined by the CMTAT + * @title RuleEngine - Operation part */ abstract contract RuleEngineOperation is AccessControl, @@ -23,15 +26,7 @@ abstract contract RuleEngineOperation is // Declare a set state variable EnumerableSet.AddressSet internal _rulesOperation; - function _checkRule(address rule_) internal{ - if (rule_ == address(0x0)) { - revert RuleEngine_RuleAddressZeroNotAllowed(); - } - if (_rulesOperation.contains(rule_)) { - revert RuleEngine_RuleAlreadyExists(); - } - } - + /* ============ State functions ============ */ /** * @notice Set all the rules, will overwrite all the previous rules. \n * Revert if one rule is a zero address or if the rule is already present @@ -92,7 +87,7 @@ abstract contract RuleEngineOperation is _removeRuleOperation(address(rule_)); } - + /* ============ View functions ============ */ /** * @return The number of rules inside the array */ @@ -179,4 +174,13 @@ abstract contract RuleEngineOperation is _rulesOperation.remove(rule_); emit RemoveRule(address(rule_)); } + + function _checkRule(address rule_) internal{ + if (rule_ == address(0x0)) { + revert RuleEngine_RuleAddressZeroNotAllowed(); + } + if (_rulesOperation.contains(rule_)) { + revert RuleEngine_RuleAlreadyExists(); + } + } } diff --git a/src/modules/RuleEngineValidation.sol b/src/modules/RuleEngineValidation.sol index 5161e21..297d37f 100644 --- a/src/modules/RuleEngineValidation.sol +++ b/src/modules/RuleEngineValidation.sol @@ -2,94 +2,168 @@ pragma solidity ^0.8.20; -import "OZ/access/AccessControl.sol"; -import "./RuleEngineValidationCommon.sol"; -import "../interfaces/IRuleEngineValidation.sol"; -import "../interfaces/IRuleValidation.sol"; -import "CMTAT/interfaces/tokenization/draft-IERC1404.sol"; - -/** - * @title Implementation of a ruleEngine defined by the CMTAT - */ +// OpenZeppelin +import {AccessControl} from "OZ/access/AccessControl.sol"; +import "OZ/utils/structs/EnumerableSet.sol"; +// Other +import {IRuleEngineValidation} from "../interfaces/IRuleEngineValidation.sol"; +import {IRuleValidation} from "../interfaces/IRuleValidation.sol"; +import {RuleEngineInvariantStorage} from "./RuleEngineInvariantStorage.sol"; + abstract contract RuleEngineValidation is AccessControl, - RuleEngineValidationCommon, - IRuleEngineValidation + IRuleEngineValidation, + RuleEngineInvariantStorage { + // Add the library methods + using EnumerableSet for EnumerableSet.AddressSet; + + // Declare a set state variable + EnumerableSet.AddressSet internal _rulesValidation; + + /*////////////////////////////////////////////////////////////// + PUBLIC/EXTERNAL FUNCTIONS + //////////////////////////////////////////////////////////////*/ + /* ============ State functions ============ */ /** - * @notice Go through all the rule to know if a restriction exists on the transfer - * @param from the origin address - * @param to the destination address - * @param value to transfer - * @return The restricion code or REJECTED_CODE_BASE.TRANSFER_OK - **/ - function detectTransferRestrictionValidation( - address from, - address to, - uint256 value - ) public view virtual override returns (uint8) { - //uint256 rulesLength = _rulesValidation.length(); - uint256 rulesLength = rulesCountValidation(); - for (uint256 i = 0; i < rulesLength; ++i) { - uint8 restriction = IRuleValidation(ruleValidation(i)) - .detectTransferRestriction(from, to, value); - if (restriction > 0) { - return restriction; - } + * @notice Set all the rules, will overwrite all the previous rules. \n + * Revert if one rule is a zero address or if the rule is already present + * @dev take address[] instead of IRuleEngineValidation[] since it is not possible to cast IRuleEngineValidation[] -> address[] + * + */ + function setRulesValidation( + address[] calldata rules_ + ) public virtual override onlyRole(RULE_ENGINE_OPERATOR_ROLE) { + if (rules_.length == 0) { + revert RuleEngine_ArrayIsEmpty(); + } + uint256 rulesLength = _rulesValidation.length(); + if ( rulesLength > 0) { + _clearRulesValidation(); } + for(uint256 i = 0; i < rules_.length; ++i){ + _checkRuleValidation(address(rules_[i])); + _rulesValidation.add(address(rules_[i])); + emit AddRule(rules_[i]); + } + } + + + /** + * @notice Clear all the rules of the array of rules + * + */ + function clearRulesValidation() public virtual onlyRole(RULE_ENGINE_OPERATOR_ROLE) { + _clearRulesValidation(); + } - return uint8(IERC1404Extend.REJECTED_CODE_BASE.TRANSFER_OK); + /** + * @notice Add a rule to the array of rules + * @dev Revert if one rule is a zero address or if the rule is already present + * + */ + function addRuleValidation( + IRuleValidation rule_ + ) public virtual onlyRole(RULE_ENGINE_OPERATOR_ROLE) { + _checkRuleValidation(address(rule_)); + _rulesValidation.add(address(rule_)); + emit AddRule(address(rule_)); } - function detectTransferRestrictionValidationFrom( - address spender, - address from, - address to, - uint256 value - ) public view virtual override returns (uint8) { - uint256 rulesLength = rulesCountValidation(); - for (uint256 i = 0; i < rulesLength; ++i) { - uint8 restriction = IRuleValidation(ruleValidation(i)) - .detectTransferRestrictionFrom(spender, from, to, value); - if (restriction > 0) { - return restriction; - } - } - return uint8(IERC1404Extend.REJECTED_CODE_BASE.TRANSFER_OK); + /** + * @notice Remove a rule from the array of rules + * Revert if the rule found at the specified index does not match the rule in argument + * @param rule_ address of the target rule + * @dev To reduce the array size, the last rule is moved to the location occupied + * by the rule to remove + * + * + */ + function removeRuleValidation( + IRuleValidation rule_ + ) public virtual onlyRole(RULE_ENGINE_OPERATOR_ROLE) { + require(rulesValidationIsPresent(rule_), RuleEngine_RuleDoNotMatch()); + _removeRuleValidation(address(rule_)); } + /* ============ View functions ============ */ + /** - * @notice Validate a transfer - * @param from the origin address - * @param to the destination address - * @param value to transfer - * @return True if the transfer is valid, false otherwise - **/ - function canTransferValidation( - address from, - address to, - uint256 value - ) public view virtual returns (bool) { - return - detectTransferRestrictionValidation(from, to, value) == - uint8(IERC1404Extend.REJECTED_CODE_BASE.TRANSFER_OK); + * @notice Check if a rule is present + * + */ + function rulesValidationIsPresent(IRuleValidation rule_) public view virtual returns (bool){ + return _rulesValidation.contains(address(rule_)); } + /** - * @notice Validate a transfer - * @param from the origin address - * @param to the destination address - * @param value to transfer - * @return True if the transfer is valid, false otherwise - **/ - function canTransferValidationFrom( - address spender, - address from, - address to, - uint256 value - ) public view virtual override returns (bool) { - return - detectTransferRestrictionValidationFrom(spender, from, to, value) == - uint8(IERC1404Extend.REJECTED_CODE_BASE.TRANSFER_OK); + * @return The number of rules inside the array + */ + function rulesCountValidation() public view virtual override returns (uint256) { + return _rulesValidation.length(); } + + /** + * @notice Get the rule at the position specified by ruleId + * @param ruleId index of the rule + * @return a rule address + */ + function ruleValidation( + uint256 ruleId + ) public view virtual override returns (address) { + return _rulesValidation.at(ruleId); + } + + + /** + * @notice Get all the rules + * @return An array of rules + */ + function rulesValidation() + public + view + virtual + override + returns (address[] memory) + { + return _rulesValidation.values(); + } + + /*////////////////////////////////////////////////////////////// + INTERNAL FUNCTIONS + //////////////////////////////////////////////////////////////*/ + /** + * @notice Clear all the rules of the array of rules + * + */ + function _clearRulesValidation() internal virtual { + emit ClearRules(); + // O(N) + _rulesValidation.clear(); + } + + /** + * @notice Remove a rule from the array of rules + * Revert if the rule found at the specified index does not match the rule in argument + * @param rule_ address of the target rule + * @dev To reduce the array size, the last rule is moved to the location occupied + * by the rule to remove + * + * + */ + function _removeRuleValidation(address rule_) internal virtual { + _rulesValidation.remove(rule_); + emit RemoveRule(address(rule_)); + } + + function _checkRuleValidation(address rule_) internal virtual{ + if (rule_ == address(0x0)) { + revert RuleEngine_RuleAddressZeroNotAllowed(); + } + if (_rulesValidation.contains(rule_)) { + revert RuleEngine_RuleAlreadyExists(); + } + } + } diff --git a/src/modules/RuleEngineValidationCommon.sol b/src/modules/RuleEngineValidationCommon.sol deleted file mode 100644 index fb00b67..0000000 --- a/src/modules/RuleEngineValidationCommon.sol +++ /dev/null @@ -1,174 +0,0 @@ -// SPDX-License-Identifier: MPL-2.0 - -pragma solidity ^0.8.20; - -import "OZ/access/AccessControl.sol"; -import "../interfaces/IRuleEngineValidation.sol"; -import "../interfaces/IRuleValidation.sol"; -import "OZ/utils/structs/EnumerableSet.sol"; -import "./RuleEngineInvariantStorage.sol"; -/** - * @title Implementation of a ruleEngine defined by the CMTAT - */ -abstract contract RuleEngineValidationCommon is - AccessControl, - IRuleEngineValidationCommon, - RuleEngineInvariantStorage -{ - // Add the library methods - using EnumerableSet for EnumerableSet.AddressSet; - - // Declare a set state variable - EnumerableSet.AddressSet internal _rulesValidation; - /// @dev Array of rules - //address[] internal _rulesValidation; - - - function _checkRuleValidation(address rule_) internal virtual{ - if (rule_ == address(0x0)) { - revert RuleEngine_RuleAddressZeroNotAllowed(); - } - if (_rulesValidation.contains(rule_)) { - revert RuleEngine_RuleAlreadyExists(); - } - } - - /*////////////////////////////////////////////////////////////// - PUBLIC/EXTERNAL FUNCTIONS - //////////////////////////////////////////////////////////////*/ - /** - * @notice Set all the rules, will overwrite all the previous rules. \n - * Revert if one rule is a zero address or if the rule is already present - * @dev take address[] instead of IRuleEngineValidation[] since it is not possible to cast IRuleEngineValidation[] -> address[] - * - */ - function setRulesValidation( - address[] calldata rules_ - ) public virtual override onlyRole(RULE_ENGINE_OPERATOR_ROLE) { - if (rules_.length == 0) { - revert RuleEngine_ArrayIsEmpty(); - } - uint256 rulesLength = _rulesValidation.length(); - if ( rulesLength > 0) { - _clearRulesValidation(); - } - for(uint256 i = 0; i < rules_.length; ++i){ - _checkRuleValidation(address(rules_[i])); - _rulesValidation.add(address(rules_[i])); - emit AddRule(rules_[i]); - } - } - - function rulesValidationIsPresent(IRuleValidation rule_) public view virtual returns (bool){ - return _rulesValidation.contains(address(rule_)); - } - - /** - * @notice Clear all the rules of the array of rules - * - */ - function clearRulesValidation() public virtual onlyRole(RULE_ENGINE_OPERATOR_ROLE) { - _clearRulesValidation(); - } - - /** - * @notice Add a rule to the array of rules - * Revert if one rule is a zero address or if the rule is already present - * - */ - function addRuleValidation( - IRuleValidation rule_ - ) public virtual onlyRole(RULE_ENGINE_OPERATOR_ROLE) { - _checkRuleValidation(address(rule_)); - _rulesValidation.add(address(rule_)); - emit AddRule(address(rule_)); - } - - /** - * @notice Remove a rule from the array of rules - * Revert if the rule found at the specified index does not match the rule in argument - * @param rule_ address of the target rule - * @dev To reduce the array size, the last rule is moved to the location occupied - * by the rule to remove - * - * - */ - function removeRuleValidation( - IRuleValidation rule_ - ) public virtual onlyRole(RULE_ENGINE_OPERATOR_ROLE) { - require(rulesValidationIsPresent(rule_), RuleEngine_RuleDoNotMatch()); - _removeRuleValidation(address(rule_)); - } - - /** - * @return The number of rules inside the array - */ - function rulesCountValidation() public view virtual override returns (uint256) { - return _rulesValidation.length(); - } - - - - /** - * @notice Get the index of a rule inside the list - * @return index if the rule is found, _rulesValidation.length otherwise - */ - /* function getRuleIndexValidation( - IRuleValidation rule_ - ) public view virtual returns (uint256 index) { - return RuleInternal._getRuleIndex(_rulesValidation, address(rule_)); - }*/ - - /** - * @notice Get the rule at the position specified by ruleId - * @param ruleId index of the rule - * @return a rule address - */ - function ruleValidation( - uint256 ruleId - ) public view virtual override returns (address) { - return _rulesValidation.at(ruleId); - } - - - /** - * @notice Get all the rules - * @return An array of rules - */ - function rulesValidation() - public - view - virtual - override - returns (address[] memory) - { - return _rulesValidation.values(); - } - - /*////////////////////////////////////////////////////////////// - INTERNAL FUNCTIONS - //////////////////////////////////////////////////////////////*/ - /** - * @notice Clear all the rules of the array of rules - * - */ - function _clearRulesValidation() internal virtual { - emit ClearRules(); - // O(N) - _rulesValidation.clear(); - } - - /** - * @notice Remove a rule from the array of rules - * Revert if the rule found at the specified index does not match the rule in argument - * @param rule_ address of the target rule - * @dev To reduce the array size, the last rule is moved to the location occupied - * by the rule to remove - * - * - */ - function _removeRuleValidation(address rule_) internal virtual { - _rulesValidation.remove(rule_); - emit RemoveRule(address(rule_)); - } -} diff --git a/src/modules/RuleEngineValidationRead.sol b/src/modules/RuleEngineValidationRead.sol new file mode 100644 index 0000000..cd74cb6 --- /dev/null +++ b/src/modules/RuleEngineValidationRead.sol @@ -0,0 +1,97 @@ +// SPDX-License-Identifier: MPL-2.0 + +pragma solidity ^0.8.20; + +import "OZ/access/AccessControl.sol"; +import {RuleEngineValidation} from "./RuleEngineValidation.sol"; +import {IRuleEngineValidationRead} from "../interfaces/IRuleEngineValidation.sol"; +import {IRuleValidation} from "../interfaces/IRuleValidation.sol"; +import {IERC1404, IERC1404Extend} from "CMTAT/interfaces/tokenization/draft-IERC1404.sol"; + +/** + * @title RuleEngine - Validation part + */ +abstract contract RuleEngineValidationRead is + AccessControl, + RuleEngineValidation, + IRuleEngineValidationRead +{ + + /* ============ View functions ============ */ + /** + * @notice Go through all the rule to know if a restriction exists on the transfer + * @param from the origin address + * @param to the destination address + * @param value to transfer + * @return The restricion code or REJECTED_CODE_BASE.TRANSFER_OK + **/ + function detectTransferRestrictionValidation( + address from, + address to, + uint256 value + ) public view virtual override returns (uint8) { + //uint256 rulesLength = _rulesValidation.length(); + uint256 rulesLength = rulesCountValidation(); + for (uint256 i = 0; i < rulesLength; ++i) { + uint8 restriction = IRuleValidation(ruleValidation(i)) + .detectTransferRestriction(from, to, value); + if (restriction > 0) { + return restriction; + } + } + + return uint8(IERC1404Extend.REJECTED_CODE_BASE.TRANSFER_OK); + } + + function detectTransferRestrictionValidationFrom( + address spender, + address from, + address to, + uint256 value + ) public view virtual override returns (uint8) { + uint256 rulesLength = rulesCountValidation(); + for (uint256 i = 0; i < rulesLength; ++i) { + uint8 restriction = IRuleValidation(ruleValidation(i)) + .detectTransferRestrictionFrom(spender, from, to, value); + if (restriction > 0) { + return restriction; + } + } + return uint8(IERC1404Extend.REJECTED_CODE_BASE.TRANSFER_OK); + } + + /** + * @notice Validate a transfer + * @param from the origin address + * @param to the destination address + * @param value to transfer + * @return True if the transfer is valid, false otherwise + **/ + function canTransferValidation( + address from, + address to, + uint256 value + ) public view virtual returns (bool) { + return + detectTransferRestrictionValidation(from, to, value) == + uint8(IERC1404Extend.REJECTED_CODE_BASE.TRANSFER_OK); + } + + /** + * @notice Validate a transfer + * @param from the origin address + * @param to the destination address + * @param value to transfer + * @return True if the transfer is valid, false otherwise + **/ + function canTransferValidationFrom( + address spender, + address from, + address to, + uint256 value + ) public view virtual override returns (bool) { + return + detectTransferRestrictionValidationFrom(spender, from, to, value) == + uint8(IERC1404Extend.REJECTED_CODE_BASE.TRANSFER_OK); + } +} From 762d8e2f25f610ba111f95582afc1c3d8de86da5 Mon Sep 17 00:00:00 2001 From: Ryan Sauge <71391932+rya-sge@users.noreply.github.com> Date: Mon, 11 Aug 2025 11:13:30 +0200 Subject: [PATCH 06/17] Add ERC-3643 support --- README.md | 97 +++- coverage/amber.png | Bin 0 -> 141 bytes coverage/emerald.png | Bin 0 -> 141 bytes coverage/gcov.css | 519 ++++++++++++++++++ coverage/glass.png | Bin 0 -> 167 bytes coverage/index-sort-b.html | 119 ++++ coverage/index-sort-f.html | 119 ++++ coverage/index-sort-l.html | 119 ++++ coverage/index.html | 119 ++++ coverage/ruby.png | Bin 0 -> 141 bytes coverage/snow.png | Bin 0 -> 141 bytes coverage/src/RuleEngine.sol.func-sort-c.html | 137 +++++ coverage/src/RuleEngine.sol.func.html | 137 +++++ coverage/src/RuleEngine.sol.gcov.html | 384 +++++++++++++ coverage/src/index-sort-b.html | 107 ++++ coverage/src/index-sort-f.html | 107 ++++ coverage/src/index-sort-l.html | 107 ++++ coverage/src/index.html | 107 ++++ .../ERC3643Compliance.sol.func-sort-c.html | 113 ++++ .../modules/ERC3643Compliance.sol.func.html | 113 ++++ .../modules/ERC3643Compliance.sol.gcov.html | 167 ++++++ .../RuleEngineOperation.sol.func-sort-c.html | 129 +++++ .../modules/RuleEngineOperation.sol.func.html | 129 +++++ .../modules/RuleEngineOperation.sol.gcov.html | 275 ++++++++++ .../RuleEngineValidation.sol.func-sort-c.html | 125 +++++ .../RuleEngineValidation.sol.func.html | 125 +++++ .../RuleEngineValidation.sol.gcov.html | 254 +++++++++ ...eEngineValidationRead.sol.func-sort-c.html | 97 ++++ .../RuleEngineValidationRead.sol.func.html | 97 ++++ .../RuleEngineValidationRead.sol.gcov.html | 185 +++++++ coverage/src/modules/index-sort-b.html | 143 +++++ coverage/src/modules/index-sort-f.html | 143 +++++ coverage/src/modules/index-sort-l.html | 143 +++++ coverage/src/modules/index.html | 143 +++++ coverage/updown.png | Bin 0 -> 117 bytes .../surya_inheritance_IRuleEngine.sol.png | Bin 0 -> 23313 bytes lcov.info | 373 +++++++++++++ src/RuleEngine.sol | 40 +- src/interfaces/IERC3643Compliance.sol | 24 + src/modules/ERC3643Compliance.sol | 82 +++ src/modules/RuleEngineOperation.sol | 4 + src/modules/RuleEngineValidationRead.sol | 3 + .../AccessControl/RuleEngineAccessControl.sol | 8 +- test/RuleEngine/ERC3643Compliance.t.sol | 157 ++++++ 44 files changed, 5227 insertions(+), 23 deletions(-) create mode 100644 coverage/amber.png create mode 100644 coverage/emerald.png create mode 100644 coverage/gcov.css create mode 100644 coverage/glass.png create mode 100644 coverage/index-sort-b.html create mode 100644 coverage/index-sort-f.html create mode 100644 coverage/index-sort-l.html create mode 100644 coverage/index.html create mode 100644 coverage/ruby.png create mode 100644 coverage/snow.png create mode 100644 coverage/src/RuleEngine.sol.func-sort-c.html create mode 100644 coverage/src/RuleEngine.sol.func.html create mode 100644 coverage/src/RuleEngine.sol.gcov.html create mode 100644 coverage/src/index-sort-b.html create mode 100644 coverage/src/index-sort-f.html create mode 100644 coverage/src/index-sort-l.html create mode 100644 coverage/src/index.html create mode 100644 coverage/src/modules/ERC3643Compliance.sol.func-sort-c.html create mode 100644 coverage/src/modules/ERC3643Compliance.sol.func.html create mode 100644 coverage/src/modules/ERC3643Compliance.sol.gcov.html create mode 100644 coverage/src/modules/RuleEngineOperation.sol.func-sort-c.html create mode 100644 coverage/src/modules/RuleEngineOperation.sol.func.html create mode 100644 coverage/src/modules/RuleEngineOperation.sol.gcov.html create mode 100644 coverage/src/modules/RuleEngineValidation.sol.func-sort-c.html create mode 100644 coverage/src/modules/RuleEngineValidation.sol.func.html create mode 100644 coverage/src/modules/RuleEngineValidation.sol.gcov.html create mode 100644 coverage/src/modules/RuleEngineValidationRead.sol.func-sort-c.html create mode 100644 coverage/src/modules/RuleEngineValidationRead.sol.func.html create mode 100644 coverage/src/modules/RuleEngineValidationRead.sol.gcov.html create mode 100644 coverage/src/modules/index-sort-b.html create mode 100644 coverage/src/modules/index-sort-f.html create mode 100644 coverage/src/modules/index-sort-l.html create mode 100644 coverage/src/modules/index.html create mode 100644 coverage/updown.png create mode 100644 doc/schema/surya_inheritance_IRuleEngine.sol.png create mode 100644 lcov.info create mode 100644 src/interfaces/IERC3643Compliance.sol create mode 100644 src/modules/ERC3643Compliance.sol create mode 100644 test/RuleEngine/ERC3643Compliance.t.sol diff --git a/README.md b/README.md index d42a3ef..8416183 100644 --- a/README.md +++ b/README.md @@ -2,9 +2,86 @@ # RuleEngine -This repository includes the RuleEngine contract for the [CMTAT](https://github.com/CMTA/CMTAT) token. +This repository includes the RuleEngine contract for [CMTAT](https://github.com/CMTA/CMTAT) and [ERC-3643](https://eips.ethereum.org/EIPS/eip-3643) tokens. + +The RuleEngine is an external contract used to apply transfer restrictions to another contract, such as CMTAT and ERC-3643 tokens. Acting as a controller, it can call different contract rules and apply these rules on each transfer. + +## Interface + +### CMTAT + +The RuleEngine base interface is defined in CMTAT reposotiry. + +![surya_inheritance_IRuleEngine.sol](./doc/schema/surya_inheritance_IRuleEngine.sol.png) + +It inherits from several others interace: + +- IERC1404 which contains ERC-1404 related functions + +```solidity + function detectTransferRestriction( + address from, + address to, + uint256 value + ) external view returns (uint8); + + function messageForTransferRestriction( + uint8 restrictionCode + ) external view returns (string memory); +``` + + + +``` +enum REJECTED_CODE_BASE { + TRANSFER_OK, + TRANSFER_REJECTED_DEACTIVATED, + TRANSFER_REJECTED_PAUSED, + TRANSFER_REJECTED_FROM_FROZEN, + TRANSFER_REJECTED_TO_FROZEN, + TRANSFER_REJECTED_SPENDER_FROZEN, + TRANSFER_REJECTED_FROM_INSUFFICIENT_ACTIVE_BALANCE + } + + function detectTransferRestrictionFrom( + address spender, + address from, + address to, + uint256 value + ) external view returns (uint8); +``` + + + +- IERC7551Compliance which includes function related to ERC-7551: + +``` + function canTransferFrom(address spender,address from,address to,uint256 value) external view returns (bool); +``` + + + +- canTransfer + +``` + function canTransfer(address from,address to,uint256 value) external view returns (bool isValid); +``` + + + +- IERC3643IComplianceContract + +``` + function transferred(address from, address to, uint256 value) external; +``` + + + +### ERC-3643 + + + -The RuleEngine is an external contract used to apply transfer restrictions to another contract, initially the CMTAT. Acting as a controller, it can call different contract rules and apply these rules on each transfer. ## Dependencies @@ -55,17 +132,17 @@ Before each transfer, your contract must call the function `operateOnTransfer` w ## Available Rules -Rules have their own dedicated repository: +Rules have their own dedicated repository: [github.com/CMTA/Rules](https://github.com/CMTA/Rules) The following rules are available: -| Rule | Type | Description | Doc | -| ------------------------------------------------------------ | -------------- | ------------------------------------------------------------ | ------------------------------------------------------------ | -| [RuleWhitelist](src/rules/validation/RuleWhitelist.sol) | RuleValidation | This rule can be used to restrict transfers from/to only addresses inside a whitelist. | [RuleWhitelist.md](./doc/technical/RuleWhitelist.md)
[surya-report](./doc/surya/surya_report/surya_report_RuleWhitelist.sol.md) | -| [RuleWhitelistWrapper](src/rules/validation/RuleWhitelistWrapper.sol) | RuleValidation | This rule can be used to restrict transfers from/to only addresses inside a group of whitelist rules managed by different operators. | [RuleWhitelistWrapper.md](./doc/technical/RuleWhitelistWrapper.md)
[surya-report](./doc/surya/surya_report/surya_report_RuleWhitelistWrapper.sol.md) | -| [RuleBlacklist](src/rules/validation/RuleBlacklist.sol) | RuleValidation | This rule can be used to forbid transfer from/to addresses in the blacklist | [RuleBlacklist.md](./doc/technical/RuleBlacklist.md)
[surya-report](./doc/surya/surya_report/surya_report_RuleBlacklist.sol.md) | -| [RuleSanctionList](src/rules/validation/RuleSanctionList.sol) | RuleValidation | The purpose of this contract is to use the oracle contract from Chainalysis to forbid transfer from/to an address included in a sanctions designation (US, EU, or UN). | [RuleSanctionList.md](./doc/technical/RuleSanctionList.md)
[surya-report](./doc/surya/surya_report/surya_report_RuleSanctionList.sol.md) | -| [RuleConditionalTransfer](src/rules/operation/RuleConditionalTransfer.sol) | RuleOperation | This page describes a Conditional Transfer implementation. This rule requires that transfers have to be approved before being executed by the token holders. | [RuleConditionalTransfer.md](./doc/technical/RuleConditionalTransfer.md)
[surya-report](./doc/surya/surya_report/surya_report_RuleConditionalTransfer.sol.md) | +| Rule | Type
[Validation/Operation] | Audit planned | Description | Doc | +| ------------------------------------------------------------ | -------------------------------- | --------------------------------- | ------------------------------------------------------------ | ------------------------------------------------------------ | +| [RuleWhitelist](src/rules/validation/RuleWhitelist.sol) | RuleValidation | ☑ | This rule can be used to restrict transfers from/to only addresses inside a whitelist. | [RuleWhitelist.md](./doc/technical/RuleWhitelist.md)
[surya-report](./doc/surya/surya_report/surya_report_RuleWhitelist.sol.md) | +| [RuleWhitelistWrapper](src/rules/validation/RuleWhitelistWrapper.sol) | RuleValidation | ☑ | This rule can be used to restrict transfers from/to only addresses inside a group of whitelist rules managed by different operators. | [RuleWhitelistWrapper.md](./doc/technical/RuleWhitelistWrapper.md)
[surya-report](./doc/surya/surya_report/surya_report_RuleWhitelistWrapper.sol.md) | +| [RuleBlacklist](src/rules/validation/RuleBlacklist.sol) | RuleValidation | ☑ | This rule can be used to forbid transfer from/to addresses in the blacklist | [RuleBlacklist.md](./doc/technical/RuleBlacklist.md)
[surya-report](./doc/surya/surya_report/surya_report_RuleBlacklist.sol.md) | +| [RuleSanctionList](src/rules/validation/RuleSanctionList.sol) | RuleValidation | ☑ | The purpose of this contract is to use the oracle contract from Chainalysis to forbid transfer from/to an address included in a sanctions designation (US, EU, or UN). | [RuleSanctionList.md](./doc/technical/RuleSanctionList.md)
[surya-report](./doc/surya/surya_report/surya_report_RuleSanctionList.sol.md) | +| [RuleConditionalTransfer](src/rules/operation/RuleConditionalTransfer.sol) | RuleOperation | ☒
(experimental rule) | This page describes a Conditional Transfer implementation. This rule requires that transfers have to be approved before being executed by the token holders. | [RuleConditionalTransfer.md](./doc/technical/RuleConditionalTransfer.md)
[surya-report](./doc/surya/surya_report/surya_report_RuleConditionalTransfer.sol.md) | diff --git a/coverage/amber.png b/coverage/amber.png new file mode 100644 index 0000000000000000000000000000000000000000..2cab170d8359081983a4e343848dfe06bc490f12 GIT binary patch literal 141 zcmeAS@N?(olHy`uVBq!ia0vp^j3CU&3?x-=hn)ga>?NMQuI!iC1^G2tW}LqE04T&+ z;1OBOz`!j8!i<;h*8KqrvZOouIx;Y9?C1WI$O`1M1^9%x{(levWG?NMQuI!iC1^Jb!lvI6;R0X`wF(yt=9xVZRt1vCRixIA4P dLn>}1Cji+@42)0J?}79&c)I$ztaD0e0sy@GAL0N2 literal 0 HcmV?d00001 diff --git a/coverage/gcov.css b/coverage/gcov.css new file mode 100644 index 0000000..0fcdff1 --- /dev/null +++ b/coverage/gcov.css @@ -0,0 +1,519 @@ +/* All views: initial background and text color */ +body +{ + color: #000000; + background-color: #ffffff; +} + +/* All views: standard link format*/ +a:link +{ + color: #284fa8; + text-decoration: underline; +} + +/* All views: standard link - visited format */ +a:visited +{ + color: #00cb40; + text-decoration: underline; +} + +/* All views: standard link - activated format */ +a:active +{ + color: #ff0040; + text-decoration: underline; +} + +/* All views: main title format */ +td.title +{ + text-align: center; + padding-bottom: 10px; + font-family: sans-serif; + font-size: 20pt; + font-style: italic; + font-weight: bold; +} + +/* All views: header item format */ +td.headerItem +{ + text-align: right; + padding-right: 6px; + font-family: sans-serif; + font-weight: bold; + vertical-align: top; + white-space: nowrap; +} + +/* All views: header item value format */ +td.headerValue +{ + text-align: left; + color: #284fa8; + font-family: sans-serif; + font-weight: bold; + white-space: nowrap; +} + +/* All views: header item coverage table heading */ +td.headerCovTableHead +{ + text-align: center; + padding-right: 6px; + padding-left: 6px; + padding-bottom: 0px; + font-family: sans-serif; + font-size: 80%; + white-space: nowrap; +} + +/* All views: header item coverage table entry */ +td.headerCovTableEntry +{ + text-align: right; + color: #284fa8; + font-family: sans-serif; + font-weight: bold; + white-space: nowrap; + padding-left: 12px; + padding-right: 4px; + background-color: #dae7fe; +} + +/* All views: header item coverage table entry for high coverage rate */ +td.headerCovTableEntryHi +{ + text-align: right; + color: #000000; + font-family: sans-serif; + font-weight: bold; + white-space: nowrap; + padding-left: 12px; + padding-right: 4px; + background-color: #a7fc9d; +} + +/* All views: header item coverage table entry for medium coverage rate */ +td.headerCovTableEntryMed +{ + text-align: right; + color: #000000; + font-family: sans-serif; + font-weight: bold; + white-space: nowrap; + padding-left: 12px; + padding-right: 4px; + background-color: #ffea20; +} + +/* All views: header item coverage table entry for ow coverage rate */ +td.headerCovTableEntryLo +{ + text-align: right; + color: #000000; + font-family: sans-serif; + font-weight: bold; + white-space: nowrap; + padding-left: 12px; + padding-right: 4px; + background-color: #ff0000; +} + +/* All views: header legend value for legend entry */ +td.headerValueLeg +{ + text-align: left; + color: #000000; + font-family: sans-serif; + font-size: 80%; + white-space: nowrap; + padding-top: 4px; +} + +/* All views: color of horizontal ruler */ +td.ruler +{ + background-color: #6688d4; +} + +/* All views: version string format */ +td.versionInfo +{ + text-align: center; + padding-top: 2px; + font-family: sans-serif; + font-style: italic; +} + +/* Directory view/File view (all)/Test case descriptions: + table headline format */ +td.tableHead +{ + text-align: center; + color: #ffffff; + background-color: #6688d4; + font-family: sans-serif; + font-size: 120%; + font-weight: bold; + white-space: nowrap; + padding-left: 4px; + padding-right: 4px; +} + +span.tableHeadSort +{ + padding-right: 4px; +} + +/* Directory view/File view (all): filename entry format */ +td.coverFile +{ + text-align: left; + padding-left: 10px; + padding-right: 20px; + color: #284fa8; + background-color: #dae7fe; + font-family: monospace; +} + +/* Directory view/File view (all): bar-graph entry format*/ +td.coverBar +{ + padding-left: 10px; + padding-right: 10px; + background-color: #dae7fe; +} + +/* Directory view/File view (all): bar-graph outline color */ +td.coverBarOutline +{ + background-color: #000000; +} + +/* Directory view/File view (all): percentage entry for files with + high coverage rate */ +td.coverPerHi +{ + text-align: right; + padding-left: 10px; + padding-right: 10px; + background-color: #a7fc9d; + font-weight: bold; + font-family: sans-serif; +} + +/* Directory view/File view (all): line count entry for files with + high coverage rate */ +td.coverNumHi +{ + text-align: right; + padding-left: 10px; + padding-right: 10px; + background-color: #a7fc9d; + white-space: nowrap; + font-family: sans-serif; +} + +/* Directory view/File view (all): percentage entry for files with + medium coverage rate */ +td.coverPerMed +{ + text-align: right; + padding-left: 10px; + padding-right: 10px; + background-color: #ffea20; + font-weight: bold; + font-family: sans-serif; +} + +/* Directory view/File view (all): line count entry for files with + medium coverage rate */ +td.coverNumMed +{ + text-align: right; + padding-left: 10px; + padding-right: 10px; + background-color: #ffea20; + white-space: nowrap; + font-family: sans-serif; +} + +/* Directory view/File view (all): percentage entry for files with + low coverage rate */ +td.coverPerLo +{ + text-align: right; + padding-left: 10px; + padding-right: 10px; + background-color: #ff0000; + font-weight: bold; + font-family: sans-serif; +} + +/* Directory view/File view (all): line count entry for files with + low coverage rate */ +td.coverNumLo +{ + text-align: right; + padding-left: 10px; + padding-right: 10px; + background-color: #ff0000; + white-space: nowrap; + font-family: sans-serif; +} + +/* File view (all): "show/hide details" link format */ +a.detail:link +{ + color: #B8D0FF; + font-size:80%; +} + +/* File view (all): "show/hide details" link - visited format */ +a.detail:visited +{ + color: #B8D0FF; + font-size:80%; +} + +/* File view (all): "show/hide details" link - activated format */ +a.detail:active +{ + color: #ffffff; + font-size:80%; +} + +/* File view (detail): test name entry */ +td.testName +{ + text-align: right; + padding-right: 10px; + background-color: #dae7fe; + font-family: sans-serif; +} + +/* File view (detail): test percentage entry */ +td.testPer +{ + text-align: right; + padding-left: 10px; + padding-right: 10px; + background-color: #dae7fe; + font-family: sans-serif; +} + +/* File view (detail): test lines count entry */ +td.testNum +{ + text-align: right; + padding-left: 10px; + padding-right: 10px; + background-color: #dae7fe; + font-family: sans-serif; +} + +/* Test case descriptions: test name format*/ +dt +{ + font-family: sans-serif; + font-weight: bold; +} + +/* Test case descriptions: description table body */ +td.testDescription +{ + padding-top: 10px; + padding-left: 30px; + padding-bottom: 10px; + padding-right: 30px; + background-color: #dae7fe; +} + +/* Source code view: function entry */ +td.coverFn +{ + text-align: left; + padding-left: 10px; + padding-right: 20px; + color: #284fa8; + background-color: #dae7fe; + font-family: monospace; +} + +/* Source code view: function entry zero count*/ +td.coverFnLo +{ + text-align: right; + padding-left: 10px; + padding-right: 10px; + background-color: #ff0000; + font-weight: bold; + font-family: sans-serif; +} + +/* Source code view: function entry nonzero count*/ +td.coverFnHi +{ + text-align: right; + padding-left: 10px; + padding-right: 10px; + background-color: #dae7fe; + font-weight: bold; + font-family: sans-serif; +} + +/* Source code view: source code format */ +pre.source +{ + font-family: monospace; + white-space: pre; + margin-top: 2px; +} + +/* Source code view: line number format */ +span.lineNum +{ + background-color: #efe383; +} + +/* Source code view: format for lines which were executed */ +td.lineCov, +span.lineCov +{ + background-color: #cad7fe; +} + +/* Source code view: format for Cov legend */ +span.coverLegendCov +{ + padding-left: 10px; + padding-right: 10px; + padding-bottom: 2px; + background-color: #cad7fe; +} + +/* Source code view: format for lines which were not executed */ +td.lineNoCov, +span.lineNoCov +{ + background-color: #ff6230; +} + +/* Source code view: format for NoCov legend */ +span.coverLegendNoCov +{ + padding-left: 10px; + padding-right: 10px; + padding-bottom: 2px; + background-color: #ff6230; +} + +/* Source code view (function table): standard link - visited format */ +td.lineNoCov > a:visited, +td.lineCov > a:visited +{ + color: #000000; + text-decoration: underline; +} + +/* Source code view: format for lines which were executed only in a + previous version */ +span.lineDiffCov +{ + background-color: #b5f7af; +} + +/* Source code view: format for branches which were executed + * and taken */ +span.branchCov +{ + background-color: #cad7fe; +} + +/* Source code view: format for branches which were executed + * but not taken */ +span.branchNoCov +{ + background-color: #ff6230; +} + +/* Source code view: format for branches which were not executed */ +span.branchNoExec +{ + background-color: #ff6230; +} + +/* Source code view: format for the source code heading line */ +pre.sourceHeading +{ + white-space: pre; + font-family: monospace; + font-weight: bold; + margin: 0px; +} + +/* All views: header legend value for low rate */ +td.headerValueLegL +{ + font-family: sans-serif; + text-align: center; + white-space: nowrap; + padding-left: 4px; + padding-right: 2px; + background-color: #ff0000; + font-size: 80%; +} + +/* All views: header legend value for med rate */ +td.headerValueLegM +{ + font-family: sans-serif; + text-align: center; + white-space: nowrap; + padding-left: 2px; + padding-right: 2px; + background-color: #ffea20; + font-size: 80%; +} + +/* All views: header legend value for hi rate */ +td.headerValueLegH +{ + font-family: sans-serif; + text-align: center; + white-space: nowrap; + padding-left: 2px; + padding-right: 4px; + background-color: #a7fc9d; + font-size: 80%; +} + +/* All views except source code view: legend format for low coverage */ +span.coverLegendCovLo +{ + padding-left: 10px; + padding-right: 10px; + padding-top: 2px; + background-color: #ff0000; +} + +/* All views except source code view: legend format for med coverage */ +span.coverLegendCovMed +{ + padding-left: 10px; + padding-right: 10px; + padding-top: 2px; + background-color: #ffea20; +} + +/* All views except source code view: legend format for hi coverage */ +span.coverLegendCovHi +{ + padding-left: 10px; + padding-right: 10px; + padding-top: 2px; + background-color: #a7fc9d; +} diff --git a/coverage/glass.png b/coverage/glass.png new file mode 100644 index 0000000000000000000000000000000000000000..e1abc00680a3093c49fdb775ae6bdb6764c95af2 GIT binary patch literal 167 zcmeAS@N?(olHy`uVBq!ia0vp^j3CU&3?x-=hn)gaEa{HEjtmSN`?>!lvI6;R0X`wF z|Ns97GD8ntt^-nxB|(0{3=Yq3q=7g|-tI089jvk*Kn`btM`SSr1Gf+eGhVt|_XjA* zUgGKN%6^Gmn4d%Ph(nkFP>9RZ#WAE}PI3Z}&BVayv3^M*kj3EX>gTe~DWM4f=_Dpv literal 0 HcmV?d00001 diff --git a/coverage/index-sort-b.html b/coverage/index-sort-b.html new file mode 100644 index 0000000..26d0528 --- /dev/null +++ b/coverage/index-sort-b.html @@ -0,0 +1,119 @@ + + + + + + + LCOV - lcov.info + + + + + + + + + + + + + + +
LCOV - code coverage report
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Current view:top levelHitTotalCoverage
Test:lcov.infoLines:18719197.9 %
Date:2025-08-08 14:05:19Functions:464993.9 %
Branches:343791.9 %
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Directory Sort by nameLine Coverage Sort by line coverageFunctions Sort by function coverageBranches Sort by branch coverage
src/modules +
98.4%98.4%
+
98.4 %121 / 12394.3 %33 / 3587.0 %20 / 23
src +
97.1%97.1%
+
97.1 %66 / 6892.9 %13 / 14100.0 %14 / 14
+
+
+ + + + +
Generated by: LCOV version 1.16
+
+ + + diff --git a/coverage/index-sort-f.html b/coverage/index-sort-f.html new file mode 100644 index 0000000..127ecee --- /dev/null +++ b/coverage/index-sort-f.html @@ -0,0 +1,119 @@ + + + + + + + LCOV - lcov.info + + + + + + + + + + + + + + +
LCOV - code coverage report
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Current view:top levelHitTotalCoverage
Test:lcov.infoLines:18719197.9 %
Date:2025-08-08 14:05:19Functions:464993.9 %
Branches:343791.9 %
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Directory Sort by nameLine Coverage Sort by line coverageFunctions Sort by function coverageBranches Sort by branch coverage
src +
97.1%97.1%
+
97.1 %66 / 6892.9 %13 / 14100.0 %14 / 14
src/modules +
98.4%98.4%
+
98.4 %121 / 12394.3 %33 / 3587.0 %20 / 23
+
+
+ + + + +
Generated by: LCOV version 1.16
+
+ + + diff --git a/coverage/index-sort-l.html b/coverage/index-sort-l.html new file mode 100644 index 0000000..912627e --- /dev/null +++ b/coverage/index-sort-l.html @@ -0,0 +1,119 @@ + + + + + + + LCOV - lcov.info + + + + + + + + + + + + + + +
LCOV - code coverage report
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Current view:top levelHitTotalCoverage
Test:lcov.infoLines:18719197.9 %
Date:2025-08-08 14:05:19Functions:464993.9 %
Branches:343791.9 %
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Directory Sort by nameLine Coverage Sort by line coverageFunctions Sort by function coverageBranches Sort by branch coverage
src +
97.1%97.1%
+
97.1 %66 / 6892.9 %13 / 14100.0 %14 / 14
src/modules +
98.4%98.4%
+
98.4 %121 / 12394.3 %33 / 3587.0 %20 / 23
+
+
+ + + + +
Generated by: LCOV version 1.16
+
+ + + diff --git a/coverage/index.html b/coverage/index.html new file mode 100644 index 0000000..8e3f67c --- /dev/null +++ b/coverage/index.html @@ -0,0 +1,119 @@ + + + + + + + LCOV - lcov.info + + + + + + + + + + + + + + +
LCOV - code coverage report
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Current view:top levelHitTotalCoverage
Test:lcov.infoLines:18719197.9 %
Date:2025-08-08 14:05:19Functions:464993.9 %
Branches:343791.9 %
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Directory Sort by nameLine Coverage Sort by line coverageFunctions Sort by function coverageBranches Sort by branch coverage
src +
97.1%97.1%
+
97.1 %66 / 6892.9 %13 / 14100.0 %14 / 14
src/modules +
98.4%98.4%
+
98.4 %121 / 12394.3 %33 / 3587.0 %20 / 23
+
+
+ + + + +
Generated by: LCOV version 1.16
+
+ + + diff --git a/coverage/ruby.png b/coverage/ruby.png new file mode 100644 index 0000000000000000000000000000000000000000..991b6d4ec9e78be165e3ef757eed1aada287364d GIT binary patch literal 141 zcmeAS@N?(olHy`uVBq!ia0vp^j3CU&3?x-=hn)ga>?NMQuI!iC1^FceV#7`HfI^%F z9+AZi4BSE>%y{W;-5;PJOS+@4BLl<6e(pbstUx|nfKQ0)e^Y%R^MdiLxj>4`)5S5Q b;#P73kj=!v_*DHKNFRfztDnm{r-UW|iOwIS literal 0 HcmV?d00001 diff --git a/coverage/snow.png b/coverage/snow.png new file mode 100644 index 0000000000000000000000000000000000000000..2cdae107fceec6e7f02ac7acb4a34a82a540caa5 GIT binary patch literal 141 zcmeAS@N?(olHy`uVBq!ia0vp^j3CU&3?x-=hn)ga>?NMQuI!iC1^MM!lvI6;R0X`wF|Ns97GD8ntt^-nBo-U3d c6}OTTfNUlP#;5A{K>8RwUHx3vIVCg!071?oo&W#< literal 0 HcmV?d00001 diff --git a/coverage/src/RuleEngine.sol.func-sort-c.html b/coverage/src/RuleEngine.sol.func-sort-c.html new file mode 100644 index 0000000..26ca1b4 --- /dev/null +++ b/coverage/src/RuleEngine.sol.func-sort-c.html @@ -0,0 +1,137 @@ + + + + + + + LCOV - lcov.info - src/RuleEngine.sol - functions + + + + + + + + + + + + + + +
LCOV - code coverage report
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Current view:top level - src - RuleEngine.sol (source / functions)HitTotalCoverage
Test:lcov.infoLines:666897.1 %
Date:2025-08-08 14:05:19Functions:131492.9 %
Branches:1414100.0 %
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Function Name Sort by function nameHit count Sort by hit count
RuleEngine._msgData0
RuleEngine.created2
RuleEngine.destroyed2
RuleEngine.detectTransferRestrictionFrom9
RuleEngine._transferred10
RuleEngine.transferred12
RuleEngine.canTransferFrom13
RuleEngine.detectTransferRestriction13
RuleEngine.messageForTransferRestriction13
RuleEngine.canTransfer17
RuleEngine.constructor85
RuleEngine.hasRole93
RuleEngine._contextSuffixLength285
RuleEngine._msgSender285
+
+
+ + + +
Generated by: LCOV version 1.16
+
+ + + diff --git a/coverage/src/RuleEngine.sol.func.html b/coverage/src/RuleEngine.sol.func.html new file mode 100644 index 0000000..5462974 --- /dev/null +++ b/coverage/src/RuleEngine.sol.func.html @@ -0,0 +1,137 @@ + + + + + + + LCOV - lcov.info - src/RuleEngine.sol - functions + + + + + + + + + + + + + + +
LCOV - code coverage report
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Current view:top level - src - RuleEngine.sol (source / functions)HitTotalCoverage
Test:lcov.infoLines:666897.1 %
Date:2025-08-08 14:05:19Functions:131492.9 %
Branches:1414100.0 %
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Function Name Sort by function nameHit count Sort by hit count
RuleEngine._contextSuffixLength285
RuleEngine._msgData0
RuleEngine._msgSender285
RuleEngine._transferred10
RuleEngine.canTransfer17
RuleEngine.canTransferFrom13
RuleEngine.constructor85
RuleEngine.created2
RuleEngine.destroyed2
RuleEngine.detectTransferRestriction13
RuleEngine.detectTransferRestrictionFrom9
RuleEngine.hasRole93
RuleEngine.messageForTransferRestriction13
RuleEngine.transferred12
+
+
+ + + +
Generated by: LCOV version 1.16
+
+ + + diff --git a/coverage/src/RuleEngine.sol.gcov.html b/coverage/src/RuleEngine.sol.gcov.html new file mode 100644 index 0000000..63d0041 --- /dev/null +++ b/coverage/src/RuleEngine.sol.gcov.html @@ -0,0 +1,384 @@ + + + + + + + LCOV - lcov.info - src/RuleEngine.sol + + + + + + + + + + + + + + +
LCOV - code coverage report
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Current view:top level - src - RuleEngine.sol (source / functions)HitTotalCoverage
Test:lcov.infoLines:666897.1 %
Date:2025-08-08 14:05:19Functions:131492.9 %
Branches:1414100.0 %
+
+ + + + + + + + +

+
           Branch data     Line data    Source code
+
+       1                 :            : // SPDX-License-Identifier: MPL-2.0
+       2                 :            : 
+       3                 :            : pragma solidity ^0.8.20;
+       4                 :            : 
+       5                 :            : // OpenZeppelin
+       6                 :            : import {AccessControl} from "OZ/access/AccessControl.sol";
+       7                 :            : import {Context} from "OZ/utils/Context.sol";
+       8                 :            : // CMTAT
+       9                 :            : import {IRuleEngine}from "CMTAT/interfaces/engine/IRuleEngine.sol";
+      10                 :            : import {MetaTxModuleStandalone, ERC2771Context} from "./modules/MetaTxModuleStandalone.sol";
+      11                 :            : import {ERC3643Compliance, IERC3643Compliance} from "./modules/ERC3643Compliance.sol";
+      12                 :            : // Other
+      13                 :            : import {RuleEngineOperation} from "./modules/RuleEngineOperation.sol";
+      14                 :            : import {RuleEngineValidationRead, RuleEngineValidation} from "./modules/RuleEngineValidationRead.sol";
+      15                 :            : import {IRuleValidation} from "./interfaces/IRuleValidation.sol";
+      16                 :            : /**
+      17                 :            :  * @title Implementation of a ruleEngine as defined by the CMTAT
+      18                 :            :  */
+      19                 :            : contract RuleEngine is
+      20                 :            :     IRuleEngine,
+      21                 :            :     RuleEngineOperation,
+      22                 :            :     RuleEngineValidationRead,
+      23                 :            :     MetaTxModuleStandalone,
+      24                 :            :     ERC3643Compliance
+      25                 :            : {
+      26                 :            :     
+      27                 :            :     /**
+      28                 :            :      * @notice
+      29                 :            :      * Get the current version of the smart contract
+      30                 :            :      */
+      31                 :            :     string public constant VERSION = "3.0.0";
+      32                 :            : 
+      33                 :            :     /**
+      34                 :            :      * @param admin Address of the contract (Access Control)
+      35                 :            :      * @param forwarderIrrevocable Address of the forwarder, required for the gasless support
+      36                 :            :      */
+      37                 :         85 :     constructor(
+      38                 :            :         address admin,
+      39                 :            :         address forwarderIrrevocable,
+      40                 :            :         address tokenContract
+      41                 :            :     ) MetaTxModuleStandalone(forwarderIrrevocable) {
+      42            [ + ]:         85 :         if (admin == address(0)) {
+      43                 :          1 :             revert RuleEngine_AdminWithAddressZeroNotAllowed();
+      44                 :            :         }
+      45            [ + ]:         84 :         if (tokenContract != address(0)) {
+      46                 :         15 :            _bindToken(tokenContract);
+      47                 :            :         }
+      48                 :         84 :         _grantRole(DEFAULT_ADMIN_ROLE, admin);
+      49                 :            :     }
+      50                 :            : 
+      51                 :            :     /* ============ State functions ============ */
+      52                 :            :     /*
+      53                 :            :      * @notice function protected by access control
+      54                 :            :      */
+      55                 :          3 :     function transferred(
+      56                 :            :         address spender,
+      57                 :            :         address from,
+      58                 :            :         address to,
+      59                 :            :         uint256 value
+      60                 :            :     ) public virtual override onlyBoundToken {
+      61                 :            :         // Validate transfer
+      62         [ +  + ]:          2 :         require(RuleEngineValidationRead.canTransferValidationFrom(spender, from, to, value), RuleEngine_InvalidTransfer(from, to, value));
+      63                 :            :         
+      64                 :            :         // Apply operation on RuleEngine
+      65                 :          1 :         RuleEngineOperation._transferred(from, to, value);
+      66                 :            :     }
+      67                 :            :     /**
+      68                 :            :     * @dev ERC-3643 function transferred
+      69                 :            :     */
+      70                 :          9 :     function transferred(
+      71                 :            :         address from,
+      72                 :            :         address to,
+      73                 :            :         uint256 value
+      74                 :            :     ) public virtual override onlyBoundToken {
+      75                 :          8 :        _transferred(from, to, value);
+      76                 :            :     }
+      77                 :            : 
+      78                 :            :     /// @inheritdoc IERC3643Compliance
+      79                 :          2 :     function created(address to, uint256 value) public virtual override onlyBoundToken{
+      80                 :          1 :        _transferred(address(0), to, value);
+      81                 :            :     }
+      82                 :            : 
+      83                 :            :     /// @inheritdoc IERC3643Compliance
+      84                 :          2 :     function destroyed(address from, uint256 value) public virtual override onlyBoundToken {
+      85                 :          1 :         _transferred(from, address(0), value);
+      86                 :            :     }
+      87                 :            : 
+      88                 :            :     /**
+      89                 :            :      * @notice Go through all the rule to know if a restriction exists on the transfer
+      90                 :            :      * @param from the origin address
+      91                 :            :      * @param to the destination address
+      92                 :            :      * @param value to transfer
+      93                 :            :      **/
+      94                 :         10 :     function _transferred(
+      95                 :            :         address from,
+      96                 :            :         address to,
+      97                 :            :         uint256 value
+      98                 :            :     ) internal virtual override(RuleEngineOperation){
+      99                 :            :          // Validate transfer
+     100         [ +  + ]:         10 :         require(RuleEngineValidationRead.canTransferValidation(from, to, value),RuleEngine_InvalidTransfer(from, to, value));
+     101                 :            :         
+     102                 :            :         // Apply operation on RuleEngine
+     103                 :          7 :         RuleEngineOperation._transferred(from, to, value);
+     104                 :            :     }
+     105                 :            : 
+     106                 :            :     /* ============ View functions ============ */
+     107                 :            :     /**
+     108                 :            :      * @notice Go through all the rule to know if a restriction exists on the transfer
+     109                 :            :      * @param from the origin address
+     110                 :            :      * @param to the destination address
+     111                 :            :      * @param value to transfer
+     112                 :            :      * @return The restricion code or REJECTED_CODE_BASE.TRANSFER_OK
+     113                 :            :      **/
+     114                 :         13 :     function detectTransferRestriction(
+     115                 :            :         address from,
+     116                 :            :         address to,
+     117                 :            :         uint256 value
+     118                 :            :     ) public view override returns (uint8) {
+     119                 :            :         // Validation
+     120                 :         30 :         uint8 code = RuleEngineValidationRead.detectTransferRestrictionValidation(
+     121                 :            :             from,
+     122                 :            :             to,
+     123                 :            :             value
+     124                 :            :         );
+     125            [ + ]:         30 :         if (code != uint8(REJECTED_CODE_BASE.TRANSFER_OK)) {
+     126                 :         11 :             return code;
+     127                 :            :         }
+     128                 :            : 
+     129                 :            :         // Operation
+     130                 :         19 :         uint256 rulesLength =  rulesCountOperation();
+     131                 :         19 :         for (uint256 i = 0; i < rulesLength; ++i) {
+     132                 :         16 :             uint8 restriction = IRuleValidation(ruleOperation(i))
+     133                 :            :                 .detectTransferRestriction(from, to, value);
+     134            [ + ]:         16 :             if (restriction > 0) {
+     135                 :         10 :                 return restriction;
+     136                 :            :             }
+     137                 :            :         }
+     138                 :            : 
+     139                 :          9 :         return uint8(REJECTED_CODE_BASE.TRANSFER_OK);
+     140                 :            :     }
+     141                 :            : 
+     142                 :          9 :     function detectTransferRestrictionFrom(
+     143                 :            :         address spender,
+     144                 :            :         address from,
+     145                 :            :         address to,
+     146                 :            :         uint256 value
+     147                 :            :     ) public view override returns (uint8) {
+     148                 :            :         // Validation
+     149                 :         22 :         uint8 code = RuleEngineValidationRead.detectTransferRestrictionValidationFrom(spender,
+     150                 :            :             from,
+     151                 :            :             to,
+     152                 :            :             value
+     153                 :            :         );
+     154            [ + ]:         22 :         if (code != uint8(REJECTED_CODE_BASE.TRANSFER_OK)) {
+     155                 :         10 :             return code;
+     156                 :            :         }
+     157                 :            : 
+     158                 :            :         // Operation
+     159                 :         12 :         uint256 rulesLength =  rulesCountOperation();
+     160                 :         12 :         for (uint256 i = 0; i < rulesLength; ++i) {
+     161                 :         12 :             uint8 restriction = IRuleValidation(ruleOperation(i))
+     162                 :            :                 .detectTransferRestrictionFrom(spender,from, to, value);
+     163            [ + ]:         12 :             if (restriction > 0) {
+     164                 :          6 :                 return restriction;
+     165                 :            :             }
+     166                 :            :         }
+     167                 :            : 
+     168                 :          6 :         return uint8(REJECTED_CODE_BASE.TRANSFER_OK);
+     169                 :            :     }
+     170                 :            : 
+     171                 :            :     /**
+     172                 :            :      * @notice Validate a transfer
+     173                 :            :      * @param from the origin address
+     174                 :            :      * @param to the destination address
+     175                 :            :      * @param value to transfer
+     176                 :            :      * @return True if the transfer is valid, false otherwise
+     177                 :            :      **/
+     178                 :         17 :     function canTransfer(
+     179                 :            :         address from,
+     180                 :            :         address to,
+     181                 :            :         uint256 value
+     182                 :            :     ) public virtual view override returns (bool) {
+     183                 :         17 :         return
+     184                 :         17 :             detectTransferRestriction(from, to, value) ==
+     185                 :            :             uint8(REJECTED_CODE_BASE.TRANSFER_OK);
+     186                 :            :     }
+     187                 :            : 
+     188                 :            :     /**
+     189                 :            :      * @notice Validate a transfer
+     190                 :            :      * @param from the origin address
+     191                 :            :      * @param to the destination address
+     192                 :            :      * @param value to transfer
+     193                 :            :      * @return True if the transfer is valid, false otherwise
+     194                 :            :      **/
+     195                 :         13 :     function canTransferFrom(
+     196                 :            :         address spender,
+     197                 :            :         address from,
+     198                 :            :         address to,
+     199                 :            :         uint256 value
+     200                 :            :     ) public virtual view override returns (bool) {
+     201                 :         13 :         return
+     202                 :         13 :             detectTransferRestrictionFrom(spender, from, to, value) ==
+     203                 :            :             uint8(REJECTED_CODE_BASE.TRANSFER_OK);
+     204                 :            :     }
+     205                 :            : 
+     206                 :            :     /**
+     207                 :            :      * @notice Return the message corresponding to the code
+     208                 :            :      * @param restrictionCode The target restriction code
+     209                 :            :      * @return True if the transfer is valid, false otherwise
+     210                 :            :      **/
+     211                 :         13 :     function messageForTransferRestriction(
+     212                 :            :         uint8 restrictionCode
+     213                 :            :     ) public virtual view override returns (string memory) {
+     214                 :            :         // Validation
+     215                 :         13 :         uint256 rulesLength = rulesCountValidation();
+     216                 :         13 :         for (uint256 i = 0; i < rulesLength; ++i) {
+     217                 :            :             if (
+     218                 :          8 :                 IRuleValidation(ruleValidation(i))
+     219                 :            :                     .canReturnTransferRestrictionCode(restrictionCode)
+     220            [ + ]:          7 :             ) {
+     221                 :          7 :                 return
+     222                 :          7 :                     IRuleValidation(ruleValidation(i))
+     223                 :            :                         .messageForTransferRestriction(restrictionCode);
+     224                 :            :             }
+     225                 :            :         }
+     226                 :            :         // operation
+     227                 :          6 :         rulesLength =  rulesCountOperation();
+     228                 :          6 :         for (uint256 i = 0; i < rulesLength; ++i) {
+     229                 :            :             if (
+     230                 :          2 :                 IRuleValidation(ruleOperation(i))
+     231                 :            :                     .canReturnTransferRestrictionCode(restrictionCode)
+     232            [ + ]:          1 :             ) {
+     233                 :          1 :                 return
+     234                 :          1 :                     IRuleValidation(ruleOperation(i))
+     235                 :            :                         .messageForTransferRestriction(restrictionCode);
+     236                 :            :             }
+     237                 :            :         }
+     238                 :          5 :         return "Unknown restriction code";
+     239                 :            :     }
+     240                 :            : 
+     241                 :            :     /* ============ ACCESS CONTROL ============ */
+     242                 :            :     /**
+     243                 :            :      * @dev Returns `true` if `account` has been granted `role`.
+     244                 :            :      */
+     245                 :         93 :     function hasRole(
+     246                 :            :         bytes32 role,
+     247                 :            :         address account
+     248                 :            :     ) public view virtual override(AccessControl) returns (bool) {
+     249                 :            :         // The Default Admin has all roles
+     250         [ +  + ]:        278 :         if (AccessControl.hasRole(DEFAULT_ADMIN_ROLE, account)) {
+     251                 :        158 :             return true;
+     252                 :            :         } else {
+     253                 :        120 :             return AccessControl.hasRole(role, account);
+     254                 :            :         }
+     255                 :            :     }
+     256                 :            : 
+     257                 :            :     /*//////////////////////////////////////////////////////////////
+     258                 :            :                            ERC-2771
+     259                 :            :     //////////////////////////////////////////////////////////////*/
+     260                 :            : 
+     261                 :            :     /**
+     262                 :            :      * @dev This surcharge is not necessary if you do not use the MetaTxModule
+     263                 :            :      */
+     264                 :        285 :     function _msgSender()
+     265                 :            :         internal
+     266                 :            :         view
+     267                 :            :         virtual 
+     268                 :            :         override(ERC2771Context, Context)
+     269                 :            :         returns (address sender)
+     270                 :            :     {
+     271                 :        285 :         return ERC2771Context._msgSender();
+     272                 :            :     }
+     273                 :            : 
+     274                 :            :     /**
+     275                 :            :      * @dev This surcharge is not necessary if you do not use the MetaTxModule
+     276                 :            :      */
+     277                 :          0 :     function _msgData()
+     278                 :            :         internal
+     279                 :            :         view
+     280                 :            :         virtual 
+     281                 :            :         override(ERC2771Context, Context)
+     282                 :            :         returns (bytes calldata)
+     283                 :            :     {
+     284                 :          0 :         return ERC2771Context._msgData();
+     285                 :            :     }
+     286                 :            : 
+     287                 :            :     /**
+     288                 :            :      * @dev This surcharge is not necessary if you do not use the MetaTxModule
+     289                 :            :      */
+     290                 :        285 :     function _contextSuffixLength()
+     291                 :            :         internal
+     292                 :            :         view
+     293                 :            :         virtual 
+     294                 :            :         override(ERC2771Context, Context)
+     295                 :            :         returns (uint256)
+     296                 :            :     {
+     297                 :        285 :         return ERC2771Context._contextSuffixLength();
+     298                 :            :     }
+     299                 :            : }
+
+
+
+ + + + +
Generated by: LCOV version 1.16
+
+ + + diff --git a/coverage/src/index-sort-b.html b/coverage/src/index-sort-b.html new file mode 100644 index 0000000..e1e8715 --- /dev/null +++ b/coverage/src/index-sort-b.html @@ -0,0 +1,107 @@ + + + + + + + LCOV - lcov.info - src + + + + + + + + + + + + + + +
LCOV - code coverage report
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Current view:top level - srcHitTotalCoverage
Test:lcov.infoLines:666897.1 %
Date:2025-08-08 14:05:19Functions:131492.9 %
Branches:1414100.0 %
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Filename Sort by nameLine Coverage Sort by line coverageFunctions Sort by function coverageBranches Sort by branch coverage
RuleEngine.sol +
97.1%97.1%
+
97.1 %66 / 6892.9 %13 / 14100.0 %14 / 14
+
+
+ + + + +
Generated by: LCOV version 1.16
+
+ + + diff --git a/coverage/src/index-sort-f.html b/coverage/src/index-sort-f.html new file mode 100644 index 0000000..b171fe3 --- /dev/null +++ b/coverage/src/index-sort-f.html @@ -0,0 +1,107 @@ + + + + + + + LCOV - lcov.info - src + + + + + + + + + + + + + + +
LCOV - code coverage report
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Current view:top level - srcHitTotalCoverage
Test:lcov.infoLines:666897.1 %
Date:2025-08-08 14:05:19Functions:131492.9 %
Branches:1414100.0 %
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Filename Sort by nameLine Coverage Sort by line coverageFunctions Sort by function coverageBranches Sort by branch coverage
RuleEngine.sol +
97.1%97.1%
+
97.1 %66 / 6892.9 %13 / 14100.0 %14 / 14
+
+
+ + + + +
Generated by: LCOV version 1.16
+
+ + + diff --git a/coverage/src/index-sort-l.html b/coverage/src/index-sort-l.html new file mode 100644 index 0000000..0b952df --- /dev/null +++ b/coverage/src/index-sort-l.html @@ -0,0 +1,107 @@ + + + + + + + LCOV - lcov.info - src + + + + + + + + + + + + + + +
LCOV - code coverage report
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Current view:top level - srcHitTotalCoverage
Test:lcov.infoLines:666897.1 %
Date:2025-08-08 14:05:19Functions:131492.9 %
Branches:1414100.0 %
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Filename Sort by nameLine Coverage Sort by line coverageFunctions Sort by function coverageBranches Sort by branch coverage
RuleEngine.sol +
97.1%97.1%
+
97.1 %66 / 6892.9 %13 / 14100.0 %14 / 14
+
+
+ + + + +
Generated by: LCOV version 1.16
+
+ + + diff --git a/coverage/src/index.html b/coverage/src/index.html new file mode 100644 index 0000000..600c807 --- /dev/null +++ b/coverage/src/index.html @@ -0,0 +1,107 @@ + + + + + + + LCOV - lcov.info - src + + + + + + + + + + + + + + +
LCOV - code coverage report
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Current view:top level - srcHitTotalCoverage
Test:lcov.infoLines:666897.1 %
Date:2025-08-08 14:05:19Functions:131492.9 %
Branches:1414100.0 %
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Filename Sort by nameLine Coverage Sort by line coverageFunctions Sort by function coverageBranches Sort by branch coverage
RuleEngine.sol +
97.1%97.1%
+
97.1 %66 / 6892.9 %13 / 14100.0 %14 / 14
+
+
+ + + + +
Generated by: LCOV version 1.16
+
+ + + diff --git a/coverage/src/modules/ERC3643Compliance.sol.func-sort-c.html b/coverage/src/modules/ERC3643Compliance.sol.func-sort-c.html new file mode 100644 index 0000000..5b4f063 --- /dev/null +++ b/coverage/src/modules/ERC3643Compliance.sol.func-sort-c.html @@ -0,0 +1,113 @@ + + + + + + + LCOV - lcov.info - src/modules/ERC3643Compliance.sol - functions + + + + + + + + + + + + + + +
LCOV - code coverage report
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Current view:top level - src/modules - ERC3643Compliance.sol (source / functions)HitTotalCoverage
Test:lcov.infoLines:2424100.0 %
Date:2025-08-08 14:05:19Functions:88100.0 %
Branches:6966.7 %
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Function Name Sort by function nameHit count Sort by hit count
ERC3643Compliance.getTokenBound2
ERC3643Compliance.getTokenBounds2
ERC3643Compliance._unbindToken3
ERC3643Compliance.onlyBoundToken3
ERC3643Compliance.unbindToken3
ERC3643Compliance.isTokenBound6
ERC3643Compliance.bindToken8
ERC3643Compliance._bindToken23
+
+
+ + + +
Generated by: LCOV version 1.16
+
+ + + diff --git a/coverage/src/modules/ERC3643Compliance.sol.func.html b/coverage/src/modules/ERC3643Compliance.sol.func.html new file mode 100644 index 0000000..051e9b7 --- /dev/null +++ b/coverage/src/modules/ERC3643Compliance.sol.func.html @@ -0,0 +1,113 @@ + + + + + + + LCOV - lcov.info - src/modules/ERC3643Compliance.sol - functions + + + + + + + + + + + + + + +
LCOV - code coverage report
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Current view:top level - src/modules - ERC3643Compliance.sol (source / functions)HitTotalCoverage
Test:lcov.infoLines:2424100.0 %
Date:2025-08-08 14:05:19Functions:88100.0 %
Branches:6966.7 %
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Function Name Sort by function nameHit count Sort by hit count
ERC3643Compliance._bindToken23
ERC3643Compliance._unbindToken3
ERC3643Compliance.bindToken8
ERC3643Compliance.getTokenBound2
ERC3643Compliance.getTokenBounds2
ERC3643Compliance.isTokenBound6
ERC3643Compliance.onlyBoundToken3
ERC3643Compliance.unbindToken3
+
+
+ + + +
Generated by: LCOV version 1.16
+
+ + + diff --git a/coverage/src/modules/ERC3643Compliance.sol.gcov.html b/coverage/src/modules/ERC3643Compliance.sol.gcov.html new file mode 100644 index 0000000..955334e --- /dev/null +++ b/coverage/src/modules/ERC3643Compliance.sol.gcov.html @@ -0,0 +1,167 @@ + + + + + + + LCOV - lcov.info - src/modules/ERC3643Compliance.sol + + + + + + + + + + + + + + +
LCOV - code coverage report
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Current view:top level - src/modules - ERC3643Compliance.sol (source / functions)HitTotalCoverage
Test:lcov.infoLines:2424100.0 %
Date:2025-08-08 14:05:19Functions:88100.0 %
Branches:6966.7 %
+
+ + + + + + + + +

+
           Branch data     Line data    Source code
+
+       1                 :            : //SPDX-License-Identifier: MPL-2.0
+       2                 :            : 
+       3                 :            : pragma solidity ^0.8.20;
+       4                 :            : 
+       5                 :            : import {IERC3643Compliance} from "../interfaces/IERC3643Compliance.sol";
+       6                 :            : import {AccessControl}  from "OZ/access/AccessControl.sol";
+       7                 :            : import "OZ/utils/structs/EnumerableSet.sol";
+       8                 :            : abstract contract ERC3643Compliance is IERC3643Compliance, AccessControl {
+       9                 :            :     bytes32 public constant COMPLIANCE_MANAGER_ROLE = keccak256("COMPLIANCE_MANAGER_ROLE");
+      10                 :            :     // Add the library methods
+      11                 :            :     using EnumerableSet for EnumerableSet.AddressSet;
+      12                 :            :     // Errors
+      13                 :            :     error RuleEngine_ERC3643Compliance_NotComplianceManager();
+      14                 :            :     error RuleEngine_ERC3643Compliance_InvalidTokenAddress();
+      15                 :            :     error RuleEngine_ERC3643Compliance_TokenAlreadyBound();
+      16                 :            :     error RuleEngine_ERC3643Compliance_TokenNotBound();
+      17                 :            :     error RuleEngine_ERC3643Compliance_UnauthorizedCaller();
+      18                 :            : 
+      19                 :            :     // Token binding tracking
+      20                 :            :     EnumerableSet.AddressSet private _boundTokens;
+      21                 :            : 
+      22                 :          3 :     modifier onlyBoundToken() {
+      23            [ + ]:          3 :     if (!_boundTokens.contains(_msgSender())) {
+      24                 :          1 :         revert RuleEngine_ERC3643Compliance_UnauthorizedCaller();
+      25                 :            :     }
+      26                 :            :     _;
+      27                 :            :     }
+      28                 :            : 
+      29                 :            :     /*//////////////////////////////////////////////////////////////
+      30                 :            :                             PUBLIC/EXTERNAL FUNCTIONS
+      31                 :            :     //////////////////////////////////////////////////////////////*/
+      32                 :            : 
+      33                 :            :     /* ============ State functions ============ */
+      34                 :            :     /// @inheritdoc IERC3643Compliance
+      35                 :          8 :     function bindToken(address token) public override virtual onlyRole(COMPLIANCE_MANAGER_ROLE) {
+      36                 :          8 :        _bindToken(token);
+      37                 :            :     }
+      38                 :            : 
+      39                 :            :     /// @inheritdoc IERC3643Compliance
+      40                 :          3 :     function unbindToken(address token) public override virtual onlyRole(COMPLIANCE_MANAGER_ROLE) {
+      41                 :          3 :         _unbindToken(token);
+      42                 :            :     }
+      43                 :            : 
+      44                 :            :     /// @inheritdoc IERC3643Compliance
+      45                 :          6 :     function isTokenBound(address token) public view override returns (bool) {
+      46                 :          6 :         return _boundTokens.contains(token);
+      47                 :            :     }
+      48                 :            : 
+      49                 :            :     /// @inheritdoc IERC3643Compliance
+      50                 :          2 :     function getTokenBound() external view override returns (address) {
+      51         [ +  + ]:          2 :         if(_boundTokens.length() > 0){
+      52                 :          1 :             return _boundTokens.at(0);
+      53                 :            :         } else {
+      54                 :          1 :             return address(0);
+      55                 :            :         }
+      56                 :            :     }
+      57                 :            : 
+      58                 :            :     /// @inheritdoc IERC3643Compliance
+      59                 :          2 :     function getTokenBounds() external view override returns (address[] memory) {
+      60                 :          2 :         return _boundTokens.values();
+      61                 :            :     }
+      62                 :            : 
+      63                 :            : 
+      64                 :            : 
+      65                 :            :     /*//////////////////////////////////////////////////////////////
+      66                 :            :                             INTERNAL/PRIVATE FUNCTIONS
+      67                 :            :     //////////////////////////////////////////////////////////////*/
+      68                 :            : 
+      69                 :          3 :     function _unbindToken(address token)  internal {
+      70         [ #  + ]:          3 :         require (_boundTokens.contains(token), RuleEngine_ERC3643Compliance_TokenNotBound()); 
+      71                 :          3 :         _boundTokens.remove(token);
+      72                 :            : 
+      73                 :          3 :         emit TokenUnbound(token);
+      74                 :            :     }
+      75                 :         23 :     function _bindToken(address token) internal{
+      76         [ #  + ]:         23 :         require(token != address(0), RuleEngine_ERC3643Compliance_InvalidTokenAddress());
+      77         [ #  + ]:         23 :         require(!_boundTokens.contains(token), RuleEngine_ERC3643Compliance_TokenAlreadyBound());
+      78                 :         23 :         _boundTokens.add(token);
+      79                 :            : 
+      80                 :         23 :         emit TokenBound(token);
+      81                 :            :     }
+      82                 :            : }
+
+
+
+ + + + +
Generated by: LCOV version 1.16
+
+ + + diff --git a/coverage/src/modules/RuleEngineOperation.sol.func-sort-c.html b/coverage/src/modules/RuleEngineOperation.sol.func-sort-c.html new file mode 100644 index 0000000..75fccb5 --- /dev/null +++ b/coverage/src/modules/RuleEngineOperation.sol.func-sort-c.html @@ -0,0 +1,129 @@ + + + + + + + LCOV - lcov.info - src/modules/RuleEngineOperation.sol - functions + + + + + + + + + + + + + + +
LCOV - code coverage report
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Current view:top level - src/modules - RuleEngineOperation.sol (source / functions)HitTotalCoverage
Test:lcov.infoLines:404197.6 %
Date:2025-08-08 14:05:19Functions:111291.7 %
Branches:66100.0 %
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Function Name Sort by function nameHit count Sort by hit count
RuleEngineOperation.rulesOperationIsPresent0
RuleEngineOperation.ruleOperation1
RuleEngineOperation._removeRuleOperation4
RuleEngineOperation.clearRulesOperation4
RuleEngineOperation.removeRuleOperation5
RuleEngineOperation.rulesOperation5
RuleEngineOperation._transferred8
RuleEngineOperation.setRulesOperation11
RuleEngineOperation._clearRulesOperation13
RuleEngineOperation.addRuleOperation36
RuleEngineOperation.rulesCountOperation45
RuleEngineOperation._checkRule55
+
+
+ + + +
Generated by: LCOV version 1.16
+
+ + + diff --git a/coverage/src/modules/RuleEngineOperation.sol.func.html b/coverage/src/modules/RuleEngineOperation.sol.func.html new file mode 100644 index 0000000..57bafc0 --- /dev/null +++ b/coverage/src/modules/RuleEngineOperation.sol.func.html @@ -0,0 +1,129 @@ + + + + + + + LCOV - lcov.info - src/modules/RuleEngineOperation.sol - functions + + + + + + + + + + + + + + +
LCOV - code coverage report
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Current view:top level - src/modules - RuleEngineOperation.sol (source / functions)HitTotalCoverage
Test:lcov.infoLines:404197.6 %
Date:2025-08-08 14:05:19Functions:111291.7 %
Branches:66100.0 %
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Function Name Sort by function nameHit count Sort by hit count
RuleEngineOperation._checkRule55
RuleEngineOperation._clearRulesOperation13
RuleEngineOperation._removeRuleOperation4
RuleEngineOperation._transferred8
RuleEngineOperation.addRuleOperation36
RuleEngineOperation.clearRulesOperation4
RuleEngineOperation.removeRuleOperation5
RuleEngineOperation.ruleOperation1
RuleEngineOperation.rulesCountOperation45
RuleEngineOperation.rulesOperation5
RuleEngineOperation.rulesOperationIsPresent0
RuleEngineOperation.setRulesOperation11
+
+
+ + + +
Generated by: LCOV version 1.16
+
+ + + diff --git a/coverage/src/modules/RuleEngineOperation.sol.gcov.html b/coverage/src/modules/RuleEngineOperation.sol.gcov.html new file mode 100644 index 0000000..ac679d8 --- /dev/null +++ b/coverage/src/modules/RuleEngineOperation.sol.gcov.html @@ -0,0 +1,275 @@ + + + + + + + LCOV - lcov.info - src/modules/RuleEngineOperation.sol + + + + + + + + + + + + + + +
LCOV - code coverage report
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Current view:top level - src/modules - RuleEngineOperation.sol (source / functions)HitTotalCoverage
Test:lcov.infoLines:404197.6 %
Date:2025-08-08 14:05:19Functions:111291.7 %
Branches:66100.0 %
+
+ + + + + + + + +

+
           Branch data     Line data    Source code
+
+       1                 :            : // SPDX-License-Identifier: MPL-2.0
+       2                 :            : 
+       3                 :            : pragma solidity ^0.8.20;
+       4                 :            : 
+       5                 :            : // OpenZeppelin
+       6                 :            : import {EnumerableSet} from "OZ/utils/structs/EnumerableSet.sol";
+       7                 :            : import {AccessControl}  from "OZ/access/AccessControl.sol";
+       8                 :            : // Other
+       9                 :            : import {IRuleEngineOperation} from "../interfaces/IRuleEngineOperation.sol";
+      10                 :            : import {IRuleOperation} from "../interfaces/IRuleOperation.sol";
+      11                 :            : import {RuleEngineInvariantStorage} from "./RuleEngineInvariantStorage.sol";
+      12                 :            : /**
+      13                 :            :  * @title RuleEngine - Operation part
+      14                 :            :  */
+      15                 :            : abstract contract RuleEngineOperation is
+      16                 :            :     AccessControl,
+      17                 :            :     RuleEngineInvariantStorage,
+      18                 :            :     IRuleEngineOperation
+      19                 :            : {
+      20                 :            :        
+      21                 :            :     /// @dev Array of rules
+      22                 :            :     //address[] internal _rulesOperation;
+      23                 :            :     // Add the library methods
+      24                 :            :     using EnumerableSet for EnumerableSet.AddressSet;
+      25                 :            : 
+      26                 :            :     // Declare a set state variable
+      27                 :            :     EnumerableSet.AddressSet internal _rulesOperation;
+      28                 :            : 
+      29                 :            :     /*//////////////////////////////////////////////////////////////
+      30                 :            :                             PUBLIC/EXTERNAL FUNCTIONS
+      31                 :            :     //////////////////////////////////////////////////////////////*/
+      32                 :            : 
+      33                 :            :     /* ============ State functions ============ */
+      34                 :            :     /**
+      35                 :            :      * @notice Set all the rules, will overwrite all the previous rules. \n
+      36                 :            :      * Revert if one rule is a zero address or if the rule is already present
+      37                 :            :      *
+      38                 :            :      */
+      39                 :         11 :     function setRulesOperation(
+      40                 :            :         address[] calldata rules_
+      41                 :            :     ) public virtual onlyRole(RULE_ENGINE_OPERATOR_ROLE) {
+      42            [ + ]:         11 :         if (rules_.length == 0) {
+      43                 :          1 :             revert RuleEngine_ArrayIsEmpty();
+      44                 :            :         }
+      45            [ + ]:         10 :         if (_rulesOperation.length() > 0) {
+      46                 :          9 :             _clearRulesOperation();
+      47                 :            :         }
+      48                 :         10 :         for(uint256 i = 0; i < rules_.length; ++i){
+      49                 :         19 :            _checkRule(address(rules_[i]));
+      50                 :         17 :             _rulesOperation.add(address(rules_[i]));
+      51                 :         17 :             emit AddRule(rules_[i]);
+      52                 :            :         }
+      53                 :            :        
+      54                 :            :     }
+      55                 :            : 
+      56                 :            :     /**
+      57                 :            :      * @notice Clear all the rules of the array of rules
+      58                 :            :      *
+      59                 :            :      */
+      60                 :          4 :     function clearRulesOperation() public virtual onlyRole(RULE_ENGINE_OPERATOR_ROLE) {
+      61                 :          4 :         _clearRulesOperation();
+      62                 :            :     }
+      63                 :            : 
+      64                 :            :     
+      65                 :            :     /**
+      66                 :            :      * @notice Add a rule to the array of rules
+      67                 :            :      * Revert if one rule is a zero address or if the rule is already present
+      68                 :            :      *
+      69                 :            :      */
+      70                 :         36 :     function addRuleOperation(
+      71                 :            :         IRuleOperation rule_
+      72                 :            :     ) public virtual onlyRole(RULE_ENGINE_OPERATOR_ROLE) {
+      73                 :         36 :         _checkRule(address(rule_));
+      74                 :         34 :         _rulesOperation.add(address(rule_));
+      75                 :         34 :         emit AddRule(address(rule_));
+      76                 :            :     }
+      77                 :            : 
+      78                 :            :     /**
+      79                 :            :      * @notice Remove a rule from the array of rules
+      80                 :            :      * Revert if the rule found at the specified index does not match the rule in argument
+      81                 :            :      * @param rule_ address of the target rule
+      82                 :            :      * @dev To reduce the array size, the last rule is moved to the location occupied
+      83                 :            :      * by the rule to remove
+      84                 :            :      *
+      85                 :            :      *
+      86                 :            :      */
+      87                 :          5 :     function removeRuleOperation(
+      88                 :            :         IRuleOperation rule_
+      89                 :            :     ) public virtual onlyRole(RULE_ENGINE_OPERATOR_ROLE) {
+      90         [ +  + ]:          5 :         require(rulesOperationIsPresent(rule_), RuleEngine_RuleDoNotMatch());
+      91                 :          4 :         _removeRuleOperation(address(rule_));
+      92                 :            :     }
+      93                 :            : 
+      94                 :            :     /* ============ View functions ============ */
+      95                 :            :     /**
+      96                 :            :      * @return The number of rules inside the array
+      97                 :            :      */
+      98                 :         45 :     function rulesCountOperation() public view virtual override returns (uint256) {
+      99                 :         82 :         return _rulesOperation.length();
+     100                 :            :     }
+     101                 :            : 
+     102                 :          0 :     function rulesOperationIsPresent(IRuleOperation rule_) public view virtual returns (bool){
+     103                 :          5 :         return _rulesOperation.contains(address(rule_));
+     104                 :            :     }
+     105                 :            : 
+     106                 :            : 
+     107                 :            :     /**
+     108                 :            :      * @notice Get the rule at the position specified by ruleId
+     109                 :            :      * @param ruleId index of the rule
+     110                 :            :      * @return a rule address
+     111                 :            :      */
+     112                 :          1 :     function ruleOperation(
+     113                 :            :         uint256 ruleId
+     114                 :            :     ) public view virtual override returns (address) {
+     115                 :         32 :         return _rulesOperation.at(ruleId);
+     116                 :            :     }
+     117                 :            : 
+     118                 :            :     /**
+     119                 :            :      * @notice Get all the rules
+     120                 :            :      * @return An array of rules
+     121                 :            :      */
+     122                 :          5 :     function rulesOperation()
+     123                 :            :         public
+     124                 :            :         view
+     125                 :            :         virtual
+     126                 :            :         override
+     127                 :            :         returns (address[] memory)
+     128                 :            :     {
+     129                 :          5 :         return _rulesOperation.values();
+     130                 :            :     }
+     131                 :            : 
+     132                 :            :     /*//////////////////////////////////////////////////////////////
+     133                 :            :                             INTERNAL/PRIVATE FUNCTIONS
+     134                 :            :     //////////////////////////////////////////////////////////////*/
+     135                 :            :     /**
+     136                 :            :      * @notice Clear all the rules of the array of rules
+     137                 :            :      *
+     138                 :            :      */
+     139                 :         13 :     function _clearRulesOperation() internal virtual {
+     140                 :            :         // we remove the last element first since it is more optimized.
+     141                 :            : 
+     142                 :         13 :         emit ClearRules();
+     143                 :         13 :         _rulesOperation.clear();
+     144                 :            :     }
+     145                 :            : 
+     146                 :            : 
+     147                 :            :     /**
+     148                 :            :      * @notice Go through all the rule to know if a restriction exists on the transfer
+     149                 :            :      * @param from the origin address
+     150                 :            :      * @param to the destination address
+     151                 :            :      * @param value to transfer
+     152                 :            :      **/
+     153                 :          8 :     function _transferred(
+     154                 :            :         address from,
+     155                 :            :         address to,
+     156                 :            :         uint256 value
+     157                 :            :     ) internal virtual{
+     158                 :          8 :         uint256 rulesLength = _rulesOperation.length();
+     159                 :          8 :         for (uint256 i = 0; i < rulesLength; ++i) {
+     160                 :          3 :             IRuleOperation(_rulesOperation.at(i)).transferred(
+     161                 :            :                 from,
+     162                 :            :                 to,
+     163                 :            :                 value
+     164                 :            :             );
+     165                 :            :         }
+     166                 :            :     }
+     167                 :            : 
+     168                 :            :     /**
+     169                 :            :      * @notice Remove a rule from the array of rules
+     170                 :            :      * Revert if the rule found at the specified index does not match the rule in argument
+     171                 :            :      * @param rule_ address of the target rule
+     172                 :            :      * @dev To reduce the array size, the last rule is moved to the location occupied
+     173                 :            :      * by the rule to remove
+     174                 :            :      *
+     175                 :            :      *
+     176                 :            :      */
+     177                 :          4 :     function _removeRuleOperation(address rule_) internal virtual {
+     178                 :          4 :         _rulesOperation.remove(rule_);
+     179                 :          4 :         emit RemoveRule(address(rule_));
+     180                 :            :     }
+     181                 :            : 
+     182                 :         55 :     function _checkRule(address rule_) internal{
+     183            [ + ]:         55 :           if (rule_ == address(0x0)) {
+     184                 :          2 :                 revert RuleEngine_RuleAddressZeroNotAllowed();
+     185                 :            :             }
+     186            [ + ]:         53 :         if (_rulesOperation.contains(rule_)) {
+     187                 :          2 :             revert RuleEngine_RuleAlreadyExists();
+     188                 :            :         }
+     189                 :            :     }
+     190                 :            : }
+
+
+
+ + + + +
Generated by: LCOV version 1.16
+
+ + + diff --git a/coverage/src/modules/RuleEngineValidation.sol.func-sort-c.html b/coverage/src/modules/RuleEngineValidation.sol.func-sort-c.html new file mode 100644 index 0000000..f6f9ce7 --- /dev/null +++ b/coverage/src/modules/RuleEngineValidation.sol.func-sort-c.html @@ -0,0 +1,125 @@ + + + + + + + LCOV - lcov.info - src/modules/RuleEngineValidation.sol - functions + + + + + + + + + + + + + + +
LCOV - code coverage report
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Current view:top level - src/modules - RuleEngineValidation.sol (source / functions)HitTotalCoverage
Test:lcov.infoLines:373897.4 %
Date:2025-08-08 14:05:19Functions:101190.9 %
Branches:66100.0 %
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Function Name Sort by function nameHit count Sort by hit count
RuleEngineValidation.rulesValidationIsPresent0
RuleEngineValidation.ruleValidation1
RuleEngineValidation._removeRuleValidation4
RuleEngineValidation.rulesValidation5
RuleEngineValidation.clearRulesValidation6
RuleEngineValidation.removeRuleValidation6
RuleEngineValidation.setRulesValidation23
RuleEngineValidation._clearRulesValidation25
RuleEngineValidation.addRuleValidation59
RuleEngineValidation.rulesCountValidation70
RuleEngineValidation._checkRuleValidation88
+
+
+ + + +
Generated by: LCOV version 1.16
+
+ + + diff --git a/coverage/src/modules/RuleEngineValidation.sol.func.html b/coverage/src/modules/RuleEngineValidation.sol.func.html new file mode 100644 index 0000000..3e34d47 --- /dev/null +++ b/coverage/src/modules/RuleEngineValidation.sol.func.html @@ -0,0 +1,125 @@ + + + + + + + LCOV - lcov.info - src/modules/RuleEngineValidation.sol - functions + + + + + + + + + + + + + + +
LCOV - code coverage report
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Current view:top level - src/modules - RuleEngineValidation.sol (source / functions)HitTotalCoverage
Test:lcov.infoLines:373897.4 %
Date:2025-08-08 14:05:19Functions:101190.9 %
Branches:66100.0 %
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Function Name Sort by function nameHit count Sort by hit count
RuleEngineValidation._checkRuleValidation88
RuleEngineValidation._clearRulesValidation25
RuleEngineValidation._removeRuleValidation4
RuleEngineValidation.addRuleValidation59
RuleEngineValidation.clearRulesValidation6
RuleEngineValidation.removeRuleValidation6
RuleEngineValidation.ruleValidation1
RuleEngineValidation.rulesCountValidation70
RuleEngineValidation.rulesValidation5
RuleEngineValidation.rulesValidationIsPresent0
RuleEngineValidation.setRulesValidation23
+
+
+ + + +
Generated by: LCOV version 1.16
+
+ + + diff --git a/coverage/src/modules/RuleEngineValidation.sol.gcov.html b/coverage/src/modules/RuleEngineValidation.sol.gcov.html new file mode 100644 index 0000000..090bbcf --- /dev/null +++ b/coverage/src/modules/RuleEngineValidation.sol.gcov.html @@ -0,0 +1,254 @@ + + + + + + + LCOV - lcov.info - src/modules/RuleEngineValidation.sol + + + + + + + + + + + + + + +
LCOV - code coverage report
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Current view:top level - src/modules - RuleEngineValidation.sol (source / functions)HitTotalCoverage
Test:lcov.infoLines:373897.4 %
Date:2025-08-08 14:05:19Functions:101190.9 %
Branches:66100.0 %
+
+ + + + + + + + +

+
           Branch data     Line data    Source code
+
+       1                 :            : // SPDX-License-Identifier: MPL-2.0
+       2                 :            : 
+       3                 :            : pragma solidity ^0.8.20;
+       4                 :            : 
+       5                 :            : // OpenZeppelin
+       6                 :            : import {AccessControl} from "OZ/access/AccessControl.sol";
+       7                 :            : import "OZ/utils/structs/EnumerableSet.sol";
+       8                 :            : // Other
+       9                 :            : import {IRuleEngineValidation} from "../interfaces/IRuleEngineValidation.sol";
+      10                 :            : import {IRuleValidation} from "../interfaces/IRuleValidation.sol";
+      11                 :            : import {RuleEngineInvariantStorage} from "./RuleEngineInvariantStorage.sol";
+      12                 :            : 
+      13                 :            : abstract contract RuleEngineValidation is
+      14                 :            :     AccessControl,
+      15                 :            :     IRuleEngineValidation,
+      16                 :            :     RuleEngineInvariantStorage
+      17                 :            : {
+      18                 :            :     // Add the library methods
+      19                 :            :     using EnumerableSet for EnumerableSet.AddressSet;
+      20                 :            : 
+      21                 :            :     // Declare a set state variable
+      22                 :            :     EnumerableSet.AddressSet internal _rulesValidation;
+      23                 :            : 
+      24                 :            :     /*//////////////////////////////////////////////////////////////
+      25                 :            :                            PUBLIC/EXTERNAL FUNCTIONS
+      26                 :            :     //////////////////////////////////////////////////////////////*/
+      27                 :            :     /* ============ State functions ============ */
+      28                 :            :     /**
+      29                 :            :      * @notice Set all the rules, will overwrite all the previous rules. \n
+      30                 :            :      * Revert if one rule is a zero address or if the rule is already present
+      31                 :            :      * @dev take address[] instead of IRuleEngineValidation[] since it is not possible to cast IRuleEngineValidation[] -> address[]
+      32                 :            :      *
+      33                 :            :      */
+      34                 :         23 :     function setRulesValidation(
+      35                 :            :         address[] calldata rules_
+      36                 :            :     ) public virtual override onlyRole(RULE_ENGINE_OPERATOR_ROLE) {
+      37            [ + ]:         22 :         if (rules_.length == 0) {
+      38                 :          1 :             revert RuleEngine_ArrayIsEmpty();
+      39                 :            :         }
+      40                 :         21 :         uint256 rulesLength = _rulesValidation.length();
+      41            [ + ]:         21 :         if ( rulesLength > 0) {
+      42                 :         20 :             _clearRulesValidation();
+      43                 :            :         }
+      44                 :         21 :         for(uint256 i = 0; i < rules_.length; ++i){
+      45                 :         30 :             _checkRuleValidation(address(rules_[i]));
+      46                 :         28 :             _rulesValidation.add(address(rules_[i]));
+      47                 :         28 :             emit AddRule(rules_[i]);
+      48                 :            :         }
+      49                 :            :     }
+      50                 :            : 
+      51                 :            : 
+      52                 :            :     /**
+      53                 :            :      * @notice Clear all the rules of the array of rules
+      54                 :            :      *
+      55                 :            :      */
+      56                 :          6 :     function clearRulesValidation() public virtual  onlyRole(RULE_ENGINE_OPERATOR_ROLE) {
+      57                 :          5 :         _clearRulesValidation();
+      58                 :            :     }
+      59                 :            : 
+      60                 :            :     /**
+      61                 :            :      * @notice Add a rule to the array of rules
+      62                 :            :      * @dev Revert if one rule is a zero address or if the rule is already present
+      63                 :            :      *
+      64                 :            :      */
+      65                 :         59 :     function addRuleValidation(
+      66                 :            :         IRuleValidation rule_
+      67                 :            :     ) public virtual  onlyRole(RULE_ENGINE_OPERATOR_ROLE) {
+      68                 :         58 :          _checkRuleValidation(address(rule_));
+      69                 :         56 :         _rulesValidation.add(address(rule_));
+      70                 :         56 :         emit AddRule(address(rule_));
+      71                 :            :     }
+      72                 :            : 
+      73                 :            :     /**
+      74                 :            :      * @notice Remove a rule from the array of rules
+      75                 :            :      * Revert if the rule found at the specified index does not match the rule in argument
+      76                 :            :      * @param rule_ address of the target rule
+      77                 :            :      * @dev To reduce the array size, the last rule is moved to the location occupied
+      78                 :            :      * by the rule to remove
+      79                 :            :      *
+      80                 :            :      *
+      81                 :            :      */
+      82                 :          6 :     function removeRuleValidation(
+      83                 :            :         IRuleValidation rule_
+      84                 :            :     ) public virtual  onlyRole(RULE_ENGINE_OPERATOR_ROLE) {
+      85         [ +  + ]:          5 :          require(rulesValidationIsPresent(rule_), RuleEngine_RuleDoNotMatch());
+      86                 :          4 :         _removeRuleValidation(address(rule_));
+      87                 :            :     }
+      88                 :            : 
+      89                 :            :     /* ============ View functions ============ */
+      90                 :            : 
+      91                 :            :     /**
+      92                 :            :      * @notice Check if a rule is present
+      93                 :            :      *
+      94                 :            :      */
+      95                 :          0 :     function rulesValidationIsPresent(IRuleValidation rule_) public view virtual returns (bool){
+      96                 :          5 :         return _rulesValidation.contains(address(rule_));
+      97                 :            :     }
+      98                 :            : 
+      99                 :            : 
+     100                 :            :     /**
+     101                 :            :      * @return The number of rules inside the array
+     102                 :            :      */
+     103                 :         70 :     function rulesCountValidation() public view virtual override returns (uint256) {
+     104                 :        156 :         return _rulesValidation.length();
+     105                 :            :     }
+     106                 :            : 
+     107                 :            :     /**
+     108                 :            :      * @notice Get the rule at the position specified by ruleId
+     109                 :            :      * @param ruleId index of the rule
+     110                 :            :      * @return a rule address
+     111                 :            :      */
+     112                 :          1 :     function ruleValidation(
+     113                 :            :         uint256 ruleId
+     114                 :            :     ) public view virtual override returns (address) {
+     115                 :         55 :         return _rulesValidation.at(ruleId);
+     116                 :            :     }
+     117                 :            : 
+     118                 :            : 
+     119                 :            :     /**
+     120                 :            :      * @notice Get all the rules
+     121                 :            :      * @return An array of rules
+     122                 :            :      */
+     123                 :          5 :     function rulesValidation()
+     124                 :            :         public
+     125                 :            :         view
+     126                 :            :         virtual 
+     127                 :            :         override
+     128                 :            :         returns (address[] memory)
+     129                 :            :     {
+     130                 :          5 :         return _rulesValidation.values();
+     131                 :            :     }
+     132                 :            : 
+     133                 :            :     /*//////////////////////////////////////////////////////////////
+     134                 :            :                            INTERNAL FUNCTIONS
+     135                 :            :     //////////////////////////////////////////////////////////////*/
+     136                 :            :     /**
+     137                 :            :      * @notice Clear all the rules of the array of rules
+     138                 :            :      *
+     139                 :            :      */
+     140                 :         25 :     function _clearRulesValidation() internal virtual  {
+     141                 :         25 :         emit ClearRules();
+     142                 :            :         // O(N)
+     143                 :         25 :        _rulesValidation.clear();
+     144                 :            :     }
+     145                 :            : 
+     146                 :            :     /**
+     147                 :            :      * @notice Remove a rule from the array of rules
+     148                 :            :      * Revert if the rule found at the specified index does not match the rule in argument
+     149                 :            :      * @param rule_ address of the target rule
+     150                 :            :      * @dev To reduce the array size, the last rule is moved to the location occupied
+     151                 :            :      * by the rule to remove
+     152                 :            :      *
+     153                 :            :      *
+     154                 :            :      */
+     155                 :          4 :     function _removeRuleValidation(address rule_) internal virtual {
+     156                 :          4 :         _rulesValidation.remove(rule_);
+     157                 :          4 :         emit RemoveRule(address(rule_));
+     158                 :            :     }
+     159                 :            : 
+     160                 :         88 :     function _checkRuleValidation(address rule_) internal virtual{
+     161            [ + ]:         88 :          if (rule_ == address(0x0)) {
+     162                 :          2 :                 revert RuleEngine_RuleAddressZeroNotAllowed();
+     163                 :            :             }
+     164            [ + ]:         86 :             if (_rulesValidation.contains(rule_)) {
+     165                 :          2 :                 revert RuleEngine_RuleAlreadyExists();
+     166                 :            :             }
+     167                 :            :     }
+     168                 :            : 
+     169                 :            : }
+
+
+
+ + + + +
Generated by: LCOV version 1.16
+
+ + + diff --git a/coverage/src/modules/RuleEngineValidationRead.sol.func-sort-c.html b/coverage/src/modules/RuleEngineValidationRead.sol.func-sort-c.html new file mode 100644 index 0000000..14237a4 --- /dev/null +++ b/coverage/src/modules/RuleEngineValidationRead.sol.func-sort-c.html @@ -0,0 +1,97 @@ + + + + + + + LCOV - lcov.info - src/modules/RuleEngineValidationRead.sol - functions + + + + + + + + + + + + + + +
LCOV - code coverage report
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Current view:top level - src/modules - RuleEngineValidationRead.sol (source / functions)HitTotalCoverage
Test:lcov.infoLines:2020100.0 %
Date:2025-08-08 14:05:19Functions:44100.0 %
Branches:22100.0 %
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + +

Function Name Sort by function nameHit count Sort by hit count
RuleEngineValidationRead.canTransferValidationFrom1
RuleEngineValidationRead.detectTransferRestrictionValidationFrom1
RuleEngineValidationRead.canTransferValidation2
RuleEngineValidationRead.detectTransferRestrictionValidation5
+
+
+ + + +
Generated by: LCOV version 1.16
+
+ + + diff --git a/coverage/src/modules/RuleEngineValidationRead.sol.func.html b/coverage/src/modules/RuleEngineValidationRead.sol.func.html new file mode 100644 index 0000000..99e3c1c --- /dev/null +++ b/coverage/src/modules/RuleEngineValidationRead.sol.func.html @@ -0,0 +1,97 @@ + + + + + + + LCOV - lcov.info - src/modules/RuleEngineValidationRead.sol - functions + + + + + + + + + + + + + + +
LCOV - code coverage report
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Current view:top level - src/modules - RuleEngineValidationRead.sol (source / functions)HitTotalCoverage
Test:lcov.infoLines:2020100.0 %
Date:2025-08-08 14:05:19Functions:44100.0 %
Branches:22100.0 %
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + +

Function Name Sort by function nameHit count Sort by hit count
RuleEngineValidationRead.canTransferValidation2
RuleEngineValidationRead.canTransferValidationFrom1
RuleEngineValidationRead.detectTransferRestrictionValidation5
RuleEngineValidationRead.detectTransferRestrictionValidationFrom1
+
+
+ + + +
Generated by: LCOV version 1.16
+
+ + + diff --git a/coverage/src/modules/RuleEngineValidationRead.sol.gcov.html b/coverage/src/modules/RuleEngineValidationRead.sol.gcov.html new file mode 100644 index 0000000..c2a59ca --- /dev/null +++ b/coverage/src/modules/RuleEngineValidationRead.sol.gcov.html @@ -0,0 +1,185 @@ + + + + + + + LCOV - lcov.info - src/modules/RuleEngineValidationRead.sol + + + + + + + + + + + + + + +
LCOV - code coverage report
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Current view:top level - src/modules - RuleEngineValidationRead.sol (source / functions)HitTotalCoverage
Test:lcov.infoLines:2020100.0 %
Date:2025-08-08 14:05:19Functions:44100.0 %
Branches:22100.0 %
+
+ + + + + + + + +

+
           Branch data     Line data    Source code
+
+       1                 :            : // SPDX-License-Identifier: MPL-2.0
+       2                 :            : 
+       3                 :            : pragma solidity ^0.8.20;
+       4                 :            : 
+       5                 :            : import "OZ/access/AccessControl.sol";
+       6                 :            : import {RuleEngineValidation} from "./RuleEngineValidation.sol";
+       7                 :            : import {IRuleEngineValidationRead} from "../interfaces/IRuleEngineValidation.sol";
+       8                 :            : import {IRuleValidation} from "../interfaces/IRuleValidation.sol";
+       9                 :            : import {IERC1404, IERC1404Extend} from "CMTAT/interfaces/tokenization/draft-IERC1404.sol";
+      10                 :            : 
+      11                 :            : /**
+      12                 :            :  * @title RuleEngine - Validation part
+      13                 :            :  */
+      14                 :            : abstract contract RuleEngineValidationRead is
+      15                 :            :     AccessControl,
+      16                 :            :     RuleEngineValidation,
+      17                 :            :     IRuleEngineValidationRead
+      18                 :            : {
+      19                 :            : 
+      20                 :            :     /*//////////////////////////////////////////////////////////////
+      21                 :            :                             PUBLIC/EXTERNAL FUNCTIONS
+      22                 :            :     //////////////////////////////////////////////////////////////*/
+      23                 :            :     /* ============ View functions ============ */
+      24                 :            :     /**
+      25                 :            :      * @notice Go through all the rule to know if a restriction exists on the transfer
+      26                 :            :      * @param from the origin address
+      27                 :            :      * @param to the destination address
+      28                 :            :      * @param value to transfer
+      29                 :            :      * @return The restricion code or REJECTED_CODE_BASE.TRANSFER_OK
+      30                 :            :      **/
+      31                 :          5 :     function detectTransferRestrictionValidation(
+      32                 :            :         address from,
+      33                 :            :         address to,
+      34                 :            :         uint256 value
+      35                 :            :     ) public view virtual override returns (uint8) {
+      36                 :            :         //uint256 rulesLength = _rulesValidation.length();
+      37                 :         47 :         uint256 rulesLength = rulesCountValidation();
+      38                 :         47 :         for (uint256 i = 0; i < rulesLength; ++i) {
+      39                 :         26 :             uint8 restriction = IRuleValidation(ruleValidation(i))
+      40                 :            :                 .detectTransferRestriction(from, to, value);
+      41            [ + ]:         26 :             if (restriction > 0) {
+      42                 :         19 :                 return restriction;
+      43                 :            :             }
+      44                 :            :         }
+      45                 :            : 
+      46                 :         28 :         return uint8(IERC1404Extend.REJECTED_CODE_BASE.TRANSFER_OK);
+      47                 :            :     }
+      48                 :            : 
+      49                 :          1 :     function detectTransferRestrictionValidationFrom(
+      50                 :            :         address spender,
+      51                 :            :         address from,
+      52                 :            :         address to,
+      53                 :            :         uint256 value
+      54                 :            :     ) public view virtual override returns (uint8) {
+      55                 :         26 :         uint256 rulesLength = rulesCountValidation();
+      56                 :         26 :         for (uint256 i = 0; i < rulesLength; ++i) {
+      57                 :         13 :             uint8 restriction = IRuleValidation(ruleValidation(i))
+      58                 :            :                 .detectTransferRestrictionFrom(spender, from, to, value);
+      59            [ + ]:         13 :             if (restriction > 0) {
+      60                 :         13 :                 return restriction;
+      61                 :            :             }
+      62                 :            :         }
+      63                 :         13 :         return uint8(IERC1404Extend.REJECTED_CODE_BASE.TRANSFER_OK);
+      64                 :            :     }
+      65                 :            : 
+      66                 :            :     /**
+      67                 :            :      * @notice Validate a transfer
+      68                 :            :      * @param from the origin address
+      69                 :            :      * @param to the destination address
+      70                 :            :      * @param value to transfer
+      71                 :            :      * @return True if the transfer is valid, false otherwise
+      72                 :            :      **/
+      73                 :          2 :     function canTransferValidation(
+      74                 :            :         address from,
+      75                 :            :         address to,
+      76                 :            :         uint256 value
+      77                 :            :     ) public view virtual returns (bool) {
+      78                 :         12 :         return
+      79                 :         12 :             detectTransferRestrictionValidation(from, to, value) ==
+      80                 :            :             uint8(IERC1404Extend.REJECTED_CODE_BASE.TRANSFER_OK);
+      81                 :            :     }
+      82                 :            : 
+      83                 :            :     /**
+      84                 :            :      * @notice Validate a transfer
+      85                 :            :      * @param from the origin address
+      86                 :            :      * @param to the destination address
+      87                 :            :      * @param value to transfer
+      88                 :            :      * @return True if the transfer is valid, false otherwise
+      89                 :            :      **/
+      90                 :          1 :     function canTransferValidationFrom(
+      91                 :            :         address spender,
+      92                 :            :         address from,
+      93                 :            :         address to,
+      94                 :            :         uint256 value
+      95                 :            :     ) public view virtual override returns (bool) {
+      96                 :          3 :         return
+      97                 :          3 :             detectTransferRestrictionValidationFrom(spender, from, to, value) ==
+      98                 :            :             uint8(IERC1404Extend.REJECTED_CODE_BASE.TRANSFER_OK);
+      99                 :            :     }
+     100                 :            : }
+
+
+
+ + + + +
Generated by: LCOV version 1.16
+
+ + + diff --git a/coverage/src/modules/index-sort-b.html b/coverage/src/modules/index-sort-b.html new file mode 100644 index 0000000..699a523 --- /dev/null +++ b/coverage/src/modules/index-sort-b.html @@ -0,0 +1,143 @@ + + + + + + + LCOV - lcov.info - src/modules + + + + + + + + + + + + + + +
LCOV - code coverage report
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Current view:top level - src/modulesHitTotalCoverage
Test:lcov.infoLines:12112398.4 %
Date:2025-08-08 14:05:19Functions:333594.3 %
Branches:202387.0 %
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Filename Sort by nameLine Coverage Sort by line coverageFunctions Sort by function coverageBranches Sort by branch coverage
ERC3643Compliance.sol +
100.0%
+
100.0 %24 / 24100.0 %8 / 866.7 %6 / 9
RuleEngineValidationRead.sol +
100.0%
+
100.0 %20 / 20100.0 %4 / 4100.0 %2 / 2
RuleEngineOperation.sol +
97.6%97.6%
+
97.6 %40 / 4191.7 %11 / 12100.0 %6 / 6
RuleEngineValidation.sol +
97.4%97.4%
+
97.4 %37 / 3890.9 %10 / 11100.0 %6 / 6
+
+
+ + + + +
Generated by: LCOV version 1.16
+
+ + + diff --git a/coverage/src/modules/index-sort-f.html b/coverage/src/modules/index-sort-f.html new file mode 100644 index 0000000..2cf357d --- /dev/null +++ b/coverage/src/modules/index-sort-f.html @@ -0,0 +1,143 @@ + + + + + + + LCOV - lcov.info - src/modules + + + + + + + + + + + + + + +
LCOV - code coverage report
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Current view:top level - src/modulesHitTotalCoverage
Test:lcov.infoLines:12112398.4 %
Date:2025-08-08 14:05:19Functions:333594.3 %
Branches:202387.0 %
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Filename Sort by nameLine Coverage Sort by line coverageFunctions Sort by function coverageBranches Sort by branch coverage
RuleEngineValidation.sol +
97.4%97.4%
+
97.4 %37 / 3890.9 %10 / 11100.0 %6 / 6
RuleEngineOperation.sol +
97.6%97.6%
+
97.6 %40 / 4191.7 %11 / 12100.0 %6 / 6
RuleEngineValidationRead.sol +
100.0%
+
100.0 %20 / 20100.0 %4 / 4100.0 %2 / 2
ERC3643Compliance.sol +
100.0%
+
100.0 %24 / 24100.0 %8 / 866.7 %6 / 9
+
+
+ + + + +
Generated by: LCOV version 1.16
+
+ + + diff --git a/coverage/src/modules/index-sort-l.html b/coverage/src/modules/index-sort-l.html new file mode 100644 index 0000000..d749143 --- /dev/null +++ b/coverage/src/modules/index-sort-l.html @@ -0,0 +1,143 @@ + + + + + + + LCOV - lcov.info - src/modules + + + + + + + + + + + + + + +
LCOV - code coverage report
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Current view:top level - src/modulesHitTotalCoverage
Test:lcov.infoLines:12112398.4 %
Date:2025-08-08 14:05:19Functions:333594.3 %
Branches:202387.0 %
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Filename Sort by nameLine Coverage Sort by line coverageFunctions Sort by function coverageBranches Sort by branch coverage
RuleEngineValidation.sol +
97.4%97.4%
+
97.4 %37 / 3890.9 %10 / 11100.0 %6 / 6
RuleEngineOperation.sol +
97.6%97.6%
+
97.6 %40 / 4191.7 %11 / 12100.0 %6 / 6
RuleEngineValidationRead.sol +
100.0%
+
100.0 %20 / 20100.0 %4 / 4100.0 %2 / 2
ERC3643Compliance.sol +
100.0%
+
100.0 %24 / 24100.0 %8 / 866.7 %6 / 9
+
+
+ + + + +
Generated by: LCOV version 1.16
+
+ + + diff --git a/coverage/src/modules/index.html b/coverage/src/modules/index.html new file mode 100644 index 0000000..a079cda --- /dev/null +++ b/coverage/src/modules/index.html @@ -0,0 +1,143 @@ + + + + + + + LCOV - lcov.info - src/modules + + + + + + + + + + + + + + +
LCOV - code coverage report
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Current view:top level - src/modulesHitTotalCoverage
Test:lcov.infoLines:12112398.4 %
Date:2025-08-08 14:05:19Functions:333594.3 %
Branches:202387.0 %
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Filename Sort by nameLine Coverage Sort by line coverageFunctions Sort by function coverageBranches Sort by branch coverage
ERC3643Compliance.sol +
100.0%
+
100.0 %24 / 24100.0 %8 / 866.7 %6 / 9
RuleEngineOperation.sol +
97.6%97.6%
+
97.6 %40 / 4191.7 %11 / 12100.0 %6 / 6
RuleEngineValidation.sol +
97.4%97.4%
+
97.4 %37 / 3890.9 %10 / 11100.0 %6 / 6
RuleEngineValidationRead.sol +
100.0%
+
100.0 %20 / 20100.0 %4 / 4100.0 %2 / 2
+
+
+ + + + +
Generated by: LCOV version 1.16
+
+ + + diff --git a/coverage/updown.png b/coverage/updown.png new file mode 100644 index 0000000000000000000000000000000000000000..aa56a238b3e6c435265250f9266cd1b8caba0f20 GIT binary patch literal 117 zcmeAS@N?(olHy`uVBq!ia0vp^AT}Qd8;}%R+`Ae`*?77*hG?8mPH5^{)z4*}Q$iB}huR`+ literal 0 HcmV?d00001 diff --git a/doc/schema/surya_inheritance_IRuleEngine.sol.png b/doc/schema/surya_inheritance_IRuleEngine.sol.png new file mode 100644 index 0000000000000000000000000000000000000000..f7119f41dc1a4ac0ff696578aedbbb23e75dc4db GIT binary patch literal 23313 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 z%0Dfw?HCsUaHrbo?@7q@rmDY1zKf-It6SH0MkP<;c;B8;nq#|SEgYQ}NW`v%RnpD> zZAic_Z^$hI%wyOy9bAg~&dtpw!BIE*yf_@<;cxX(wE+0GVSi5#5yo)zHPq1g2pKCd zyrH6~F>|1{Ypl zDJ=H)GSy*-BbpfwMk|G0bmNPM+cMAhJ*<-C=j1#Mq6ji6j`b|{w|P$BNnx%lXTo3_ zr=CL3hl6umaaCPvjWE|66viQidnv#wwf7R;E{ksG2U~#e+b8EO^oaOJz3tl@9!Z`9 zu5#T?>qk`eQR0nw)}<6;bjPMEPF8FEjjW!B)+cqG4s8-C6KyBpt+cP>gfShn1Fu#2 zgzqk_jgi+HM@z^sL-OZild`{N=9ZC!vGnw$pl6kkF0}DQE{$4wY4H$z5l)A&kIGL! zHronJjrq1M5M&_SVC3P#P25CSF`eju_=OTg8YUxOSa3bzW&$LEfP~N46fdSD8R!E) zs+@MHz(E*!nTgbF8$bnZ;ayH{s)Ke3hlA3d8+Al55N4$WtkPf!X zvgR^S7tU%aFR-9XGYnHxDwU7~L?}t8+m+oZ(cVP(+H~&B&mKcAT*>@9K){Lq?FkLP zlLi{gxd7?_M9=_O_zeDo4Zv5|rlb}HFZCE;i$cAr(qB4M7-%hash95Se-B_E?#SC6 zKiZ6wKaaprE$!>Kb#TbrY>L$Ysh@22a4~XB5N2fnnB0^2O7q=gUMA#){=>w`dNZZY zfVAz!8SjNwZdV74#}a__&jg-qOL!oc%gYiPoNh2^qHdIa40gW|&aNK#@N>5Dgd>%> zM=yj%Thjc6*-&vd&)&VC?2V3@xKpQ|$$r`a(i$bY#B)?s1mkY3{xpAwQPc}nzR{!7 z#`P!BsZ$qc+njJ4DSMQWXx^#%Mi#H--L9}W$h0m`Or=qcg41$bJrvO_l~M zMd#lCRJK;U&x>`x-!YlHDtWSQ22oPbP0ek*3z6tS7n}36*as^@Z=XyWld|--N?&pX z1AJev(~Idd74Rg0T$PA#XfxJ1MV%p8YmlBFm+?upB<0HWv&w;(Xlkk5s|;woni@%YqcZ(A%1n#n2dh_Hd2`b literal 0 HcmV?d00001 diff --git a/lcov.info b/lcov.info new file mode 100644 index 0000000..8df861d --- /dev/null +++ b/lcov.info @@ -0,0 +1,373 @@ +TN: +SF:src/RuleEngine.sol +DA:37,85 +FN:37,RuleEngine.constructor +FNDA:85,RuleEngine.constructor +DA:42,85 +BRDA:42,0,0,1 +DA:43,1 +DA:45,84 +BRDA:45,1,0,15 +DA:46,15 +DA:48,84 +DA:55,3 +FN:55,RuleEngine.transferred +FNDA:3,RuleEngine.transferred +DA:62,2 +BRDA:62,2,0,1 +BRDA:62,2,1,1 +DA:65,1 +DA:70,9 +FN:70,RuleEngine.transferred +FNDA:9,RuleEngine.transferred +DA:75,8 +DA:79,2 +FN:79,RuleEngine.created +FNDA:2,RuleEngine.created +DA:80,1 +DA:84,2 +FN:84,RuleEngine.destroyed +FNDA:2,RuleEngine.destroyed +DA:85,1 +DA:94,10 +FN:94,RuleEngine._transferred +FNDA:10,RuleEngine._transferred +DA:100,10 +BRDA:100,3,0,3 +BRDA:100,3,1,7 +DA:103,7 +DA:114,13 +FN:114,RuleEngine.detectTransferRestriction +FNDA:13,RuleEngine.detectTransferRestriction +DA:120,30 +DA:125,30 +BRDA:125,4,0,11 +DA:126,11 +DA:130,19 +DA:131,19 +DA:132,16 +DA:134,16 +BRDA:134,5,0,10 +DA:135,10 +DA:139,9 +DA:142,9 +FN:142,RuleEngine.detectTransferRestrictionFrom +FNDA:9,RuleEngine.detectTransferRestrictionFrom +DA:149,22 +DA:154,22 +BRDA:154,6,0,10 +DA:155,10 +DA:159,12 +DA:160,12 +DA:161,12 +DA:163,12 +BRDA:163,7,0,6 +DA:164,6 +DA:168,6 +DA:178,17 +FN:178,RuleEngine.canTransfer +FNDA:17,RuleEngine.canTransfer +DA:183,17 +DA:184,17 +DA:195,13 +FN:195,RuleEngine.canTransferFrom +FNDA:13,RuleEngine.canTransferFrom +DA:201,13 +DA:202,13 +DA:211,13 +FN:211,RuleEngine.messageForTransferRestriction +FNDA:13,RuleEngine.messageForTransferRestriction +DA:215,13 +DA:216,13 +DA:218,8 +DA:220,7 +BRDA:220,8,0,7 +DA:221,7 +DA:222,7 +DA:227,6 +DA:228,6 +DA:230,2 +DA:232,1 +BRDA:232,9,0,1 +DA:233,1 +DA:234,1 +DA:238,5 +DA:245,93 +FN:245,RuleEngine.hasRole +FNDA:93,RuleEngine.hasRole +DA:250,278 +BRDA:250,10,0,158 +BRDA:250,10,1,120 +DA:251,158 +DA:253,120 +DA:264,285 +FN:264,RuleEngine._msgSender +FNDA:285,RuleEngine._msgSender +DA:271,285 +DA:277,0 +FN:277,RuleEngine._msgData +FNDA:0,RuleEngine._msgData +DA:284,0 +DA:290,285 +FN:290,RuleEngine._contextSuffixLength +FNDA:285,RuleEngine._contextSuffixLength +DA:297,285 +FNF:15 +FNH:14 +LF:68 +LH:66 +BRF:14 +BRH:14 +end_of_record +TN: +SF:src/modules/ERC3643Compliance.sol +DA:22,3 +FN:22,ERC3643Compliance.onlyBoundToken +FNDA:3,ERC3643Compliance.onlyBoundToken +DA:23,3 +BRDA:23,0,0,1 +DA:24,1 +DA:35,8 +FN:35,ERC3643Compliance.bindToken +FNDA:8,ERC3643Compliance.bindToken +DA:36,8 +DA:40,3 +FN:40,ERC3643Compliance.unbindToken +FNDA:3,ERC3643Compliance.unbindToken +DA:41,3 +DA:45,6 +FN:45,ERC3643Compliance.isTokenBound +FNDA:6,ERC3643Compliance.isTokenBound +DA:46,6 +DA:50,2 +FN:50,ERC3643Compliance.getTokenBound +FNDA:2,ERC3643Compliance.getTokenBound +DA:51,2 +BRDA:51,1,0,1 +BRDA:51,1,1,1 +DA:52,1 +DA:54,1 +DA:59,2 +FN:59,ERC3643Compliance.getTokenBounds +FNDA:2,ERC3643Compliance.getTokenBounds +DA:60,2 +DA:69,3 +FN:69,ERC3643Compliance._unbindToken +FNDA:3,ERC3643Compliance._unbindToken +DA:70,3 +BRDA:70,2,0,- +BRDA:70,2,1,3 +DA:71,3 +DA:73,3 +DA:75,23 +FN:75,ERC3643Compliance._bindToken +FNDA:23,ERC3643Compliance._bindToken +DA:76,23 +BRDA:76,3,0,- +BRDA:76,3,1,23 +DA:77,23 +BRDA:77,4,0,- +BRDA:77,4,1,23 +DA:78,23 +DA:80,23 +FNF:8 +FNH:8 +LF:24 +LH:24 +BRF:9 +BRH:6 +end_of_record +TN: +SF:src/modules/RuleEngineOperation.sol +DA:39,11 +FN:39,RuleEngineOperation.setRulesOperation +FNDA:11,RuleEngineOperation.setRulesOperation +DA:42,11 +BRDA:42,0,0,1 +DA:43,1 +DA:45,10 +BRDA:45,1,0,9 +DA:46,9 +DA:48,10 +DA:49,19 +DA:50,17 +DA:51,17 +DA:60,4 +FN:60,RuleEngineOperation.clearRulesOperation +FNDA:4,RuleEngineOperation.clearRulesOperation +DA:61,4 +DA:70,36 +FN:70,RuleEngineOperation.addRuleOperation +FNDA:36,RuleEngineOperation.addRuleOperation +DA:73,36 +DA:74,34 +DA:75,34 +DA:87,5 +FN:87,RuleEngineOperation.removeRuleOperation +FNDA:5,RuleEngineOperation.removeRuleOperation +DA:90,5 +BRDA:90,2,0,1 +BRDA:90,2,1,4 +DA:91,4 +DA:98,45 +FN:98,RuleEngineOperation.rulesCountOperation +FNDA:45,RuleEngineOperation.rulesCountOperation +DA:99,82 +DA:102,0 +FN:102,RuleEngineOperation.rulesOperationIsPresent +FNDA:0,RuleEngineOperation.rulesOperationIsPresent +DA:103,5 +DA:112,1 +FN:112,RuleEngineOperation.ruleOperation +FNDA:1,RuleEngineOperation.ruleOperation +DA:115,32 +DA:122,5 +FN:122,RuleEngineOperation.rulesOperation +FNDA:5,RuleEngineOperation.rulesOperation +DA:129,5 +DA:139,13 +FN:139,RuleEngineOperation._clearRulesOperation +FNDA:13,RuleEngineOperation._clearRulesOperation +DA:142,13 +DA:143,13 +DA:153,8 +FN:153,RuleEngineOperation._transferred +FNDA:8,RuleEngineOperation._transferred +DA:158,8 +DA:159,8 +DA:160,3 +DA:177,4 +FN:177,RuleEngineOperation._removeRuleOperation +FNDA:4,RuleEngineOperation._removeRuleOperation +DA:178,4 +DA:179,4 +DA:182,55 +FN:182,RuleEngineOperation._checkRule +FNDA:55,RuleEngineOperation._checkRule +DA:183,55 +BRDA:183,3,0,2 +DA:184,2 +DA:186,53 +BRDA:186,4,0,2 +DA:187,2 +FNF:12 +FNH:11 +LF:41 +LH:40 +BRF:6 +BRH:6 +end_of_record +TN: +SF:src/modules/RuleEngineValidation.sol +DA:34,23 +FN:34,RuleEngineValidation.setRulesValidation +FNDA:23,RuleEngineValidation.setRulesValidation +DA:37,22 +BRDA:37,0,0,1 +DA:38,1 +DA:40,21 +DA:41,21 +BRDA:41,1,0,20 +DA:42,20 +DA:44,21 +DA:45,30 +DA:46,28 +DA:47,28 +DA:56,6 +FN:56,RuleEngineValidation.clearRulesValidation +FNDA:6,RuleEngineValidation.clearRulesValidation +DA:57,5 +DA:65,59 +FN:65,RuleEngineValidation.addRuleValidation +FNDA:59,RuleEngineValidation.addRuleValidation +DA:68,58 +DA:69,56 +DA:70,56 +DA:82,6 +FN:82,RuleEngineValidation.removeRuleValidation +FNDA:6,RuleEngineValidation.removeRuleValidation +DA:85,5 +BRDA:85,2,0,1 +BRDA:85,2,1,4 +DA:86,4 +DA:95,0 +FN:95,RuleEngineValidation.rulesValidationIsPresent +FNDA:0,RuleEngineValidation.rulesValidationIsPresent +DA:96,5 +DA:103,70 +FN:103,RuleEngineValidation.rulesCountValidation +FNDA:70,RuleEngineValidation.rulesCountValidation +DA:104,156 +DA:112,1 +FN:112,RuleEngineValidation.ruleValidation +FNDA:1,RuleEngineValidation.ruleValidation +DA:115,55 +DA:123,5 +FN:123,RuleEngineValidation.rulesValidation +FNDA:5,RuleEngineValidation.rulesValidation +DA:130,5 +DA:140,25 +FN:140,RuleEngineValidation._clearRulesValidation +FNDA:25,RuleEngineValidation._clearRulesValidation +DA:141,25 +DA:143,25 +DA:155,4 +FN:155,RuleEngineValidation._removeRuleValidation +FNDA:4,RuleEngineValidation._removeRuleValidation +DA:156,4 +DA:157,4 +DA:160,88 +FN:160,RuleEngineValidation._checkRuleValidation +FNDA:88,RuleEngineValidation._checkRuleValidation +DA:161,88 +BRDA:161,3,0,2 +DA:162,2 +DA:164,86 +BRDA:164,4,0,2 +DA:165,2 +FNF:11 +FNH:10 +LF:38 +LH:37 +BRF:6 +BRH:6 +end_of_record +TN: +SF:src/modules/RuleEngineValidationRead.sol +DA:31,5 +FN:31,RuleEngineValidationRead.detectTransferRestrictionValidation +FNDA:5,RuleEngineValidationRead.detectTransferRestrictionValidation +DA:37,47 +DA:38,47 +DA:39,26 +DA:41,26 +BRDA:41,0,0,19 +DA:42,19 +DA:46,28 +DA:49,1 +FN:49,RuleEngineValidationRead.detectTransferRestrictionValidationFrom +FNDA:1,RuleEngineValidationRead.detectTransferRestrictionValidationFrom +DA:55,26 +DA:56,26 +DA:57,13 +DA:59,13 +BRDA:59,1,0,13 +DA:60,13 +DA:63,13 +DA:73,2 +FN:73,RuleEngineValidationRead.canTransferValidation +FNDA:2,RuleEngineValidationRead.canTransferValidation +DA:78,12 +DA:79,12 +DA:90,1 +FN:90,RuleEngineValidationRead.canTransferValidationFrom +FNDA:1,RuleEngineValidationRead.canTransferValidationFrom +DA:96,3 +DA:97,3 +FNF:4 +FNH:4 +LF:20 +LH:20 +BRF:2 +BRH:2 +end_of_record diff --git a/src/RuleEngine.sol b/src/RuleEngine.sol index 5bff5d1..a87bc99 100644 --- a/src/RuleEngine.sol +++ b/src/RuleEngine.sol @@ -8,6 +8,7 @@ import {Context} from "OZ/utils/Context.sol"; // CMTAT import {IRuleEngine}from "CMTAT/interfaces/engine/IRuleEngine.sol"; import {MetaTxModuleStandalone, ERC2771Context} from "./modules/MetaTxModuleStandalone.sol"; +import {ERC3643Compliance, IERC3643Compliance} from "./modules/ERC3643Compliance.sol"; // Other import {RuleEngineOperation} from "./modules/RuleEngineOperation.sol"; import {RuleEngineValidationRead, RuleEngineValidation} from "./modules/RuleEngineValidationRead.sol"; @@ -19,7 +20,8 @@ contract RuleEngine is IRuleEngine, RuleEngineOperation, RuleEngineValidationRead, - MetaTxModuleStandalone + MetaTxModuleStandalone, + ERC3643Compliance { /** @@ -41,7 +43,7 @@ contract RuleEngine is revert RuleEngine_AdminWithAddressZeroNotAllowed(); } if (tokenContract != address(0)) { - _grantRole(TOKEN_CONTRACT_ROLE, tokenContract); + _bindToken(tokenContract); } _grantRole(DEFAULT_ADMIN_ROLE, admin); } @@ -55,20 +57,46 @@ contract RuleEngine is address from, address to, uint256 value - ) public virtual override onlyRole(TOKEN_CONTRACT_ROLE) { + ) public virtual override onlyBoundToken { // Validate transfer require(RuleEngineValidationRead.canTransferValidationFrom(spender, from, to, value), RuleEngine_InvalidTransfer(from, to, value)); // Apply operation on RuleEngine RuleEngineOperation._transferred(from, to, value); } - + /** + * @dev ERC-3643 function transferred + */ function transferred( address from, address to, uint256 value - ) public virtual override onlyRole(TOKEN_CONTRACT_ROLE) { - // Validate transfer + ) public virtual override onlyBoundToken { + _transferred(from, to, value); + } + + /// @inheritdoc IERC3643Compliance + function created(address to, uint256 value) public virtual override onlyBoundToken{ + _transferred(address(0), to, value); + } + + /// @inheritdoc IERC3643Compliance + function destroyed(address from, uint256 value) public virtual override onlyBoundToken { + _transferred(from, address(0), value); + } + + /** + * @notice Go through all the rule to know if a restriction exists on the transfer + * @param from the origin address + * @param to the destination address + * @param value to transfer + **/ + function _transferred( + address from, + address to, + uint256 value + ) internal virtual override(RuleEngineOperation){ + // Validate transfer require(RuleEngineValidationRead.canTransferValidation(from, to, value),RuleEngine_InvalidTransfer(from, to, value)); // Apply operation on RuleEngine diff --git a/src/interfaces/IERC3643Compliance.sol b/src/interfaces/IERC3643Compliance.sol new file mode 100644 index 0000000..c262b1e --- /dev/null +++ b/src/interfaces/IERC3643Compliance.sol @@ -0,0 +1,24 @@ +//SPDX-License-Identifier: MPL-2.0 + +pragma solidity ^0.8.20; +import {IERC3643ComplianceRead, IERC3643IComplianceContract} from "CMTAT/interfaces/tokenization/IERC3643Partial.sol"; +interface IERC3643Compliance is IERC3643ComplianceRead, IERC3643IComplianceContract { + + // events + event TokenBound(address token); + event TokenUnbound(address token); + + // functions + // initialization of the compliance contract + function bindToken(address token) external; + function unbindToken(address token) external; + + // check the parameters of the compliance contract + function isTokenBound(address token) external view returns (bool); + function getTokenBound() external view returns (address); + function getTokenBounds() external view returns (address[] memory); + + // compliance check and state update + function created(address to, uint256 value)external; + function destroyed(address from, uint256 value) external; +} \ No newline at end of file diff --git a/src/modules/ERC3643Compliance.sol b/src/modules/ERC3643Compliance.sol new file mode 100644 index 0000000..b0938f5 --- /dev/null +++ b/src/modules/ERC3643Compliance.sol @@ -0,0 +1,82 @@ +//SPDX-License-Identifier: MPL-2.0 + +pragma solidity ^0.8.20; + +import {IERC3643Compliance} from "../interfaces/IERC3643Compliance.sol"; +import {AccessControl} from "OZ/access/AccessControl.sol"; +import "OZ/utils/structs/EnumerableSet.sol"; +abstract contract ERC3643Compliance is IERC3643Compliance, AccessControl { + bytes32 public constant COMPLIANCE_MANAGER_ROLE = keccak256("COMPLIANCE_MANAGER_ROLE"); + // Add the library methods + using EnumerableSet for EnumerableSet.AddressSet; + // Errors + error RuleEngine_ERC3643Compliance_NotComplianceManager(); + error RuleEngine_ERC3643Compliance_InvalidTokenAddress(); + error RuleEngine_ERC3643Compliance_TokenAlreadyBound(); + error RuleEngine_ERC3643Compliance_TokenNotBound(); + error RuleEngine_ERC3643Compliance_UnauthorizedCaller(); + + // Token binding tracking + EnumerableSet.AddressSet private _boundTokens; + + modifier onlyBoundToken() { + if (!_boundTokens.contains(_msgSender())) { + revert RuleEngine_ERC3643Compliance_UnauthorizedCaller(); + } + _; + } + + /*////////////////////////////////////////////////////////////// + PUBLIC/EXTERNAL FUNCTIONS + //////////////////////////////////////////////////////////////*/ + + /* ============ State functions ============ */ + /// @inheritdoc IERC3643Compliance + function bindToken(address token) public override virtual onlyRole(COMPLIANCE_MANAGER_ROLE) { + _bindToken(token); + } + + /// @inheritdoc IERC3643Compliance + function unbindToken(address token) public override virtual onlyRole(COMPLIANCE_MANAGER_ROLE) { + _unbindToken(token); + } + + /// @inheritdoc IERC3643Compliance + function isTokenBound(address token) public view override returns (bool) { + return _boundTokens.contains(token); + } + + /// @inheritdoc IERC3643Compliance + function getTokenBound() external view override returns (address) { + if(_boundTokens.length() > 0){ + return _boundTokens.at(0); + } else { + return address(0); + } + } + + /// @inheritdoc IERC3643Compliance + function getTokenBounds() external view override returns (address[] memory) { + return _boundTokens.values(); + } + + + + /*////////////////////////////////////////////////////////////// + INTERNAL/PRIVATE FUNCTIONS + //////////////////////////////////////////////////////////////*/ + + function _unbindToken(address token) internal { + require (_boundTokens.contains(token), RuleEngine_ERC3643Compliance_TokenNotBound()); + _boundTokens.remove(token); + + emit TokenUnbound(token); + } + function _bindToken(address token) internal{ + require(token != address(0), RuleEngine_ERC3643Compliance_InvalidTokenAddress()); + require(!_boundTokens.contains(token), RuleEngine_ERC3643Compliance_TokenAlreadyBound()); + _boundTokens.add(token); + + emit TokenBound(token); + } +} \ No newline at end of file diff --git a/src/modules/RuleEngineOperation.sol b/src/modules/RuleEngineOperation.sol index 74398ea..8eca719 100644 --- a/src/modules/RuleEngineOperation.sol +++ b/src/modules/RuleEngineOperation.sol @@ -26,6 +26,10 @@ abstract contract RuleEngineOperation is // Declare a set state variable EnumerableSet.AddressSet internal _rulesOperation; + /*////////////////////////////////////////////////////////////// + PUBLIC/EXTERNAL FUNCTIONS + //////////////////////////////////////////////////////////////*/ + /* ============ State functions ============ */ /** * @notice Set all the rules, will overwrite all the previous rules. \n diff --git a/src/modules/RuleEngineValidationRead.sol b/src/modules/RuleEngineValidationRead.sol index cd74cb6..adff5fa 100644 --- a/src/modules/RuleEngineValidationRead.sol +++ b/src/modules/RuleEngineValidationRead.sol @@ -17,6 +17,9 @@ abstract contract RuleEngineValidationRead is IRuleEngineValidationRead { + /*////////////////////////////////////////////////////////////// + PUBLIC/EXTERNAL FUNCTIONS + //////////////////////////////////////////////////////////////*/ /* ============ View functions ============ */ /** * @notice Go through all the rule to know if a restriction exists on the transfer diff --git a/test/RuleEngine/AccessControl/RuleEngineAccessControl.sol b/test/RuleEngine/AccessControl/RuleEngineAccessControl.sol index e5f2be3..0926191 100644 --- a/test/RuleEngine/AccessControl/RuleEngineAccessControl.sol +++ b/test/RuleEngine/AccessControl/RuleEngineAccessControl.sol @@ -123,13 +123,7 @@ contract RuleEngineAccessControlTest is Test, HelperContract { function testCannotAttackerOperateOnTransfer() public { // Act vm.prank(ATTACKER); - vm.expectRevert( - abi.encodeWithSelector( - AccessControlUnauthorizedAccount.selector, - ATTACKER, - TOKEN_CONTRACT_ROLE - ) - ); + vm.expectRevert(ERC3643Compliance.RuleEngine_ERC3643Compliance_UnauthorizedCaller.selector); ruleEngineMock.transferred(address(0), ADDRESS1, ADDRESS2, 10); } } diff --git a/test/RuleEngine/ERC3643Compliance.t.sol b/test/RuleEngine/ERC3643Compliance.t.sol new file mode 100644 index 0000000..e6ea9b7 --- /dev/null +++ b/test/RuleEngine/ERC3643Compliance.t.sol @@ -0,0 +1,157 @@ +// SPDX-License-Identifier: MIT +pragma solidity ^0.8.20; + +import "forge-std/Test.sol"; +import "../HelperContract.sol"; +import "../../src/RuleEngine.sol"; // your concrete contract inheriting ERC3643Compliance +import {IERC3643Compliance} from "../../src/interfaces/IERC3643Compliance.sol"; +import {ERC3643Compliance} from "../../src/modules/ERC3643Compliance.sol"; +// Minimal mock ERC-3643 token to simulate calls to RuleEngine +contract ERC3643MockToken { + IERC3643Compliance public ruleEngine; + + constructor(address _ruleEngine) { + ruleEngine = IERC3643Compliance(_ruleEngine); + } + + function simulateCreated(address to, uint256 amount) external { + ruleEngine.created(to, amount); + } + + function simulateDestroyed(address from, uint256 amount) external { + ruleEngine.destroyed(from, amount); + } + + function simulateTransferred(address from, address to, uint256 amount) external { + ruleEngine.transferred(from, to, amount); + } +} + +contract RuleEngineTest is Test, HelperContract { + RuleEngine public ruleEngine; + ERC3643MockToken public token1; + ERC3643MockToken public token2; + ERC3643MockToken public token3; + + address public admin = address(0xA11CE); + address public operator = address(0x7); + address public user1 = address(0xB0B); + address public user2 = address(0xC0C); + + function setUp() public { + // Deploy RuleEngine with admin + ruleEngine = new RuleEngine(admin, ZERO_ADDRESS, ZERO_ADDRESS); + + // Deploy multiple mock tokens + token1 = new ERC3643MockToken(address(ruleEngine)); + token2 = new ERC3643MockToken(address(ruleEngine)); + token3 = new ERC3643MockToken(address(ruleEngine)); + + + vm.startPrank(admin); + ruleEngine.grantRole(ruleEngine.COMPLIANCE_MANAGER_ROLE(), operator); + vm.stopPrank(); + } + + function testBindToken() public { + // Expect events for each bound token + vm.startPrank(operator); + + vm.expectEmit(true, false, false, true); + emit IERC3643Compliance.TokenBound(address(token1)); + ruleEngine.bindToken(address(token1)); + + vm.expectEmit(true, false, false, true); + emit IERC3643Compliance.TokenBound(address(token2)); + ruleEngine.bindToken(address(token2)); + + vm.expectEmit(true, false, false, true); + emit IERC3643Compliance.TokenBound(address(token3)); + ruleEngine.bindToken(address(token3)); + + vm.stopPrank(); + + // Check bindings + assertTrue(ruleEngine.isTokenBound(address(token1))); + assertTrue(ruleEngine.isTokenBound(address(token2))); + assertTrue(ruleEngine.isTokenBound(address(token3))); + + // getTokenBound() should return a value different from 0 + // Since we use EnumerableSet, we can not guarantee the address returned if there are mot than 1 token bound + assertNotEq(ruleEngine.getTokenBound(), address(0)); + + // getTokenBounds() should return all 3 + address[] memory tokens = ruleEngine.getTokenBounds(); + assertEq(tokens.length, 3); + assertEq(tokens[0], address(token1)); + assertEq(tokens[1], address(token2)); + assertEq(tokens[2], address(token3)); + } + + function testCanUnbindToken() public { + // Bind all first + vm.startPrank(operator); + + ruleEngine.bindToken(address(token1)); + ruleEngine.bindToken(address(token2)); + ruleEngine.bindToken(address(token3)); + + + // Expect events for each unbind + vm.expectEmit(true, false, false, true); + emit IERC3643Compliance.TokenUnbound(address(token2)); + ruleEngine.unbindToken(address(token2)); + + vm.expectEmit(true, false, false, true); + emit IERC3643Compliance.TokenUnbound(address(token1)); + ruleEngine.unbindToken(address(token1)); + + vm.expectEmit(true, false, false, true); + emit IERC3643Compliance.TokenUnbound(address(token3)); + ruleEngine.unbindToken(address(token3)); + + vm.stopPrank(); + + // All should be unbound now + assertFalse(ruleEngine.isTokenBound(address(token1))); + assertFalse(ruleEngine.isTokenBound(address(token2))); + assertFalse(ruleEngine.isTokenBound(address(token3))); + + assertEq(ruleEngine.getTokenBound(), address(0)); + assertEq(ruleEngine.getTokenBounds().length, 0); + } + + function testCanCreatedAndDestroyed() public { + vm.prank(operator); + ruleEngine.bindToken(address(token1)); + + vm.startPrank(address(user1)); + token1.simulateCreated(user1, 100); + token1.simulateDestroyed(user2, 50); + vm.stopPrank(); + } + + function testCanTransferred() public { + vm.startPrank(address(operator)); + ruleEngine.bindToken(address(token1)); + + vm.startPrank(address(user1)); + token1.simulateTransferred(user1, user2, 200); + vm.stopPrank(); + } + + function testCannotCreatedIfNotBound() public { + vm.expectRevert(ERC3643Compliance.RuleEngine_ERC3643Compliance_UnauthorizedCaller.selector); + ruleEngine.created(user1, 100); + } + + function testCannotDestroyedIfNotBound() public { + vm.expectRevert(ERC3643Compliance.RuleEngine_ERC3643Compliance_UnauthorizedCaller.selector); + ruleEngine.destroyed(user2, 50); + } + + function testCannotTransferredIfNotBound() public { + vm.expectRevert(ERC3643Compliance.RuleEngine_ERC3643Compliance_UnauthorizedCaller.selector); + ruleEngine.transferred(user1, user2, 200); + } +} \ No newline at end of file From f9a2a220f18771bd85f4aa71a26dbafca4acd030 Mon Sep 17 00:00:00 2001 From: Ryan Sauge <71391932+rya-sge@users.noreply.github.com> Date: Tue, 12 Aug 2025 14:07:51 +0200 Subject: [PATCH 07/17] Clean up --- src/RuleEngine.sol | 4 +- src/interfaces/IRuleEngineOperation.sol | 55 +++++++++-- src/interfaces/IRuleEngineValidation.sol | 50 ++++++++-- src/interfaces/IRuleOperation.sol | 12 +-- src/modules/RuleEngineInvariantStorage.sol | 27 ----- src/modules/RuleEngineOperation.sol | 32 +++--- src/modules/RuleEngineValidation.sol | 84 ++++++---------- .../library/RuleEngineInvariantStorage.sol | 8 ++ .../RuleEngineInvariantStorageCommon.sol | 14 +++ test/HelperContract.sol | 9 +- .../AccessControl/RuleEngineAccessControl.sol | 7 +- .../RuleEngineAccessControlOZ.t.sol | 1 - test/RuleEngine/ERC3643Compliance.t.sol | 1 - test/RuleEngine/RuleEngineDeployment.t.sol | 2 - .../CMTATIntegration.t.sol | 1 - .../RuleEngineOperation.t.sol | 98 +++++++------------ .../RuleEngineOperationRevert.t.sol | 1 - .../RuleEngineRestriction.t.sol | 1 - .../RuleEngineRestriction.t.sol | 5 +- .../RuleEngineValidation.t.sol | 71 +++++++------- .../RuleWhitelistAccessControl.t.sol | 1 - .../RuleWhitelistAccessControlOZ.t.sol | 1 - test/RuleWhitelist/CMTATIntegration.t.sol | 1 - test/RuleWhitelist/RuleWhitelist.t.sol | 2 - test/RuleWhitelist/RuleWhitelistAdd.t.sol | 1 - .../RuleWhitelistDeployment.t.sol | 1 - test/RuleWhitelist/RuleWhitelistRemove.t.sol | 1 - test/utils/SanctionListOracle.sol | 24 ----- 28 files changed, 252 insertions(+), 263 deletions(-) delete mode 100644 src/modules/RuleEngineInvariantStorage.sol create mode 100644 src/modules/library/RuleEngineInvariantStorage.sol create mode 100644 src/modules/library/RuleEngineInvariantStorageCommon.sol delete mode 100644 test/utils/SanctionListOracle.sol diff --git a/src/RuleEngine.sol b/src/RuleEngine.sol index a87bc99..388ea21 100644 --- a/src/RuleEngine.sol +++ b/src/RuleEngine.sol @@ -13,6 +13,7 @@ import {ERC3643Compliance, IERC3643Compliance} from "./modules/ERC3643Compliance import {RuleEngineOperation} from "./modules/RuleEngineOperation.sol"; import {RuleEngineValidationRead, RuleEngineValidation} from "./modules/RuleEngineValidationRead.sol"; import {IRuleValidation} from "./interfaces/IRuleValidation.sol"; +import {RuleEngineInvariantStorage} from "./modules/library/RuleEngineInvariantStorage.sol"; /** * @title Implementation of a ruleEngine as defined by the CMTAT */ @@ -21,7 +22,8 @@ contract RuleEngine is RuleEngineOperation, RuleEngineValidationRead, MetaTxModuleStandalone, - ERC3643Compliance + ERC3643Compliance, + RuleEngineInvariantStorage { /** diff --git a/src/interfaces/IRuleEngineOperation.sol b/src/interfaces/IRuleEngineOperation.sol index 7b17e2d..807b83b 100644 --- a/src/interfaces/IRuleEngineOperation.sol +++ b/src/interfaces/IRuleEngineOperation.sol @@ -1,25 +1,68 @@ //SPDX-License-Identifier: MPL-2.0 pragma solidity ^0.8.20; - +import {IRuleOperation} from "./IRuleOperation.sol"; interface IRuleEngineOperation { /** - * @dev define the rules, the precedent rules will be overwritten + * @notice Defines the operation rules for the rule engine. + * @dev Sets the list of rule contract addresses for operations. + * Any previously set rules will be completely overwritten by the new list. + * Rules should be deployed contracts that implement the expected interface. + * @param rules_ The array of addresses representing the new rules to be set. + * @dev Revert if one rule is a zero address or if the rule is already present */ - function setRulesOperation(address[] calldata rules_) external; + function setRulesOperation(IRuleOperation[] calldata rules_) external; /** - * @dev return the number of rules + * @notice Returns the number of rules currently set for operations. + * @dev The count corresponds to the total number of elements in the rules array. + * @return The number of operation rules. */ function rulesCountOperation() external view returns (uint256); /** - * @dev return the rule at the index specified by ruleId + * @notice Retrieves the rule address at a specific index. + * @dev The index corresponds to the position in the rules array. + * Reverts if `ruleId` is out of bounds. + * @param ruleId The index of the rule to retrieve. + * @return The address of the rule contract. */ function ruleOperation(uint256 ruleId) external view returns (address); /** - * @dev return all the rules + * @notice Returns the full list of operation rules. + * @dev This is a view-only function that returns all the currently stored rule addresses. + * @return An array containing all the rule contract addresses. */ function rulesOperation() external view returns (address[] memory); + + + /** + * @notice Clear all the rules of the array of rules + * + */ + function clearRulesOperation() external; + + /** + * @notice Add a rule to the array of rules + * Revert if one rule is a zero address or if the rule is already present + * + */ + function addRuleOperation( + IRuleOperation rule_ + ) external; + + + /** + * @notice Remove a rule from the array of rules + * Revert if the rule found at the specified index does not match the rule in argument + * @param rule_ address of the target rule + * @dev To reduce the array size, the last rule is moved to the location occupied + * by the rule to remove + * + * + */ + function removeRuleOperation( + IRuleOperation rule_ + ) external; } diff --git a/src/interfaces/IRuleEngineValidation.sol b/src/interfaces/IRuleEngineValidation.sol index ecd75a5..df58cfa 100644 --- a/src/interfaces/IRuleEngineValidation.sol +++ b/src/interfaces/IRuleEngineValidation.sol @@ -2,6 +2,7 @@ pragma solidity ^0.8.20; +import {IRuleValidation} from "./IRuleValidation.sol"; interface IRuleEngineValidationRead { /** * @dev See ERC-1404 @@ -35,20 +36,57 @@ interface IRuleEngineValidation { /** * @dev define the rules, the precedent rules will be overwritten */ - function setRulesValidation(address[] calldata rules_) external; + function setRulesValidation(IRuleValidation[] calldata rules_) external; - /** - * @dev return the number of rules + /** + * @return The number of rules inside the array */ function rulesCountValidation() external view returns (uint256); - /** - * @dev return the rule at the index specified by ruleId + /** + * @notice Get the rule at the position specified by ruleId + * @param ruleId index of the rule + * @return a rule address */ function ruleValidation(uint256 ruleId) external view returns (address); /** - * @dev return all the rules + * @notice Get all the rules + * @return An array of rules */ function rulesValidation() external view returns (address[] memory); + + /** + * @notice Remove a rule from the array of rules + * Revert if the rule found at the specified index does not match the rule in argument + * @param rule_ address of the target rule + * @dev To reduce the array size, the last rule is moved to the location occupied + * by the rule to remove + * + * + */ + function removeRuleValidation( + IRuleValidation rule_ + ) external; + + /** + * @notice Clear all the rules of the array of rules + * + */ + function clearRulesValidation() external; + + /** + * @notice Add a rule to the array of rules + * @dev Revert if one rule is a zero address or if the rule is already present + * + */ + function addRuleValidation( + IRuleValidation rule_ + ) external; + + /** + * @notice Check if a rule is present + * + */ + function rulesValidationIsPresent(IRuleValidation rule_) external returns (bool); } diff --git a/src/interfaces/IRuleOperation.sol b/src/interfaces/IRuleOperation.sol index 9da3114..e64384e 100644 --- a/src/interfaces/IRuleOperation.sol +++ b/src/interfaces/IRuleOperation.sol @@ -2,13 +2,7 @@ pragma solidity ^0.8.20; -interface IRuleOperation { - /** - * @dev Returns true if the transfer is valid, and false otherwise. - */ - function transferred( - address from, - address to, - uint256 value - ) external; +import {IERC3643IComplianceContract} from "CMTAT/interfaces/tokenization/IERC3643Partial.sol"; + +interface IRuleOperation is IERC3643IComplianceContract { } diff --git a/src/modules/RuleEngineInvariantStorage.sol b/src/modules/RuleEngineInvariantStorage.sol deleted file mode 100644 index 2788f5f..0000000 --- a/src/modules/RuleEngineInvariantStorage.sol +++ /dev/null @@ -1,27 +0,0 @@ -// SPDX-License-Identifier: MPL-2.0 - -pragma solidity ^0.8.20; - -abstract contract RuleEngineInvariantStorage { - error RuleEngine_RuleAddressZeroNotAllowed(); - error RuleEngine_RuleAlreadyExists(); - error RuleEngine_RuleDoNotMatch(); - error RuleEngine_AdminWithAddressZeroNotAllowed(); - error RuleEngine_ArrayIsEmpty(); - error RuleEngine_InvalidTransfer(address from, address to, uint256 value); - - /// @notice Generate when a rule is added - event AddRule(address indexed rule); - /// @notice Generate when a rule is removed - event RemoveRule(address indexed rule); - /// @notice Generate when all the rules are cleared - event ClearRules(); - - /// @notice Role to manage the ruleEngine - bytes32 public constant RULE_ENGINE_OPERATOR_ROLE = - keccak256("RULE_ENGINE_OPERATOR_ROLE"); - - /// @notice token contract - bytes32 public constant TOKEN_CONTRACT_ROLE = - keccak256("TOKEN_CONTRACT_ROLE"); -} diff --git a/src/modules/RuleEngineOperation.sol b/src/modules/RuleEngineOperation.sol index 8eca719..7bd5eaf 100644 --- a/src/modules/RuleEngineOperation.sol +++ b/src/modules/RuleEngineOperation.sol @@ -8,22 +8,28 @@ import {AccessControl} from "OZ/access/AccessControl.sol"; // Other import {IRuleEngineOperation} from "../interfaces/IRuleEngineOperation.sol"; import {IRuleOperation} from "../interfaces/IRuleOperation.sol"; -import {RuleEngineInvariantStorage} from "./RuleEngineInvariantStorage.sol"; +import {RuleEngineInvariantStorageCommon} from "./library/RuleEngineInvariantStorageCommon.sol"; /** * @title RuleEngine - Operation part */ abstract contract RuleEngineOperation is AccessControl, - RuleEngineInvariantStorage, + RuleEngineInvariantStorageCommon, IRuleEngineOperation { - - /// @dev Array of rules - //address[] internal _rulesOperation; // Add the library methods using EnumerableSet for EnumerableSet.AddressSet; + /// @notice Generate when a rule is added + event AddRuleOperation(IRuleOperation indexed rule); + /// @notice Generate when a rule is removed + event RemoveRuleOperation(IRuleOperation indexed rule); + /// @notice Generate when all the rules are cleared + event ClearRulesOperation(); + + // Declare a set state variable + /// @dev Array of rules EnumerableSet.AddressSet internal _rulesOperation; /*////////////////////////////////////////////////////////////// @@ -37,7 +43,7 @@ abstract contract RuleEngineOperation is * */ function setRulesOperation( - address[] calldata rules_ + IRuleOperation[] calldata rules_ ) public virtual onlyRole(RULE_ENGINE_OPERATOR_ROLE) { if (rules_.length == 0) { revert RuleEngine_ArrayIsEmpty(); @@ -48,7 +54,7 @@ abstract contract RuleEngineOperation is for(uint256 i = 0; i < rules_.length; ++i){ _checkRule(address(rules_[i])); _rulesOperation.add(address(rules_[i])); - emit AddRule(rules_[i]); + emit AddRuleOperation(rules_[i]); } } @@ -72,7 +78,7 @@ abstract contract RuleEngineOperation is ) public virtual onlyRole(RULE_ENGINE_OPERATOR_ROLE) { _checkRule(address(rule_)); _rulesOperation.add(address(rule_)); - emit AddRule(address(rule_)); + emit AddRuleOperation(rule_); } /** @@ -88,7 +94,7 @@ abstract contract RuleEngineOperation is IRuleOperation rule_ ) public virtual onlyRole(RULE_ENGINE_OPERATOR_ROLE) { require(rulesOperationIsPresent(rule_), RuleEngine_RuleDoNotMatch()); - _removeRuleOperation(address(rule_)); + _removeRuleOperation(rule_); } /* ============ View functions ============ */ @@ -139,7 +145,7 @@ abstract contract RuleEngineOperation is function _clearRulesOperation() internal virtual { // we remove the last element first since it is more optimized. - emit ClearRules(); + emit ClearRulesOperation(); _rulesOperation.clear(); } @@ -174,9 +180,9 @@ abstract contract RuleEngineOperation is * * */ - function _removeRuleOperation(address rule_) internal virtual { - _rulesOperation.remove(rule_); - emit RemoveRule(address(rule_)); + function _removeRuleOperation(IRuleOperation rule_) internal virtual { + _rulesOperation.remove(address(rule_)); + emit RemoveRuleOperation(rule_); } function _checkRule(address rule_) internal{ diff --git a/src/modules/RuleEngineValidation.sol b/src/modules/RuleEngineValidation.sol index 297d37f..3b16c08 100644 --- a/src/modules/RuleEngineValidation.sol +++ b/src/modules/RuleEngineValidation.sol @@ -8,12 +8,12 @@ import "OZ/utils/structs/EnumerableSet.sol"; // Other import {IRuleEngineValidation} from "../interfaces/IRuleEngineValidation.sol"; import {IRuleValidation} from "../interfaces/IRuleValidation.sol"; -import {RuleEngineInvariantStorage} from "./RuleEngineInvariantStorage.sol"; +import {RuleEngineInvariantStorageCommon} from "./library/RuleEngineInvariantStorageCommon.sol"; abstract contract RuleEngineValidation is AccessControl, IRuleEngineValidation, - RuleEngineInvariantStorage + RuleEngineInvariantStorageCommon { // Add the library methods using EnumerableSet for EnumerableSet.AddressSet; @@ -21,6 +21,13 @@ abstract contract RuleEngineValidation is // Declare a set state variable EnumerableSet.AddressSet internal _rulesValidation; + /// @notice Generate when a rule is added + event AddRuleValidation(IRuleValidation indexed rule); + /// @notice Generate when a rule is removed + event RemoveRuleValidation(IRuleValidation indexed rule); + /// @notice Generate when all the rules are cleared + event ClearRulesValidation(); + /*////////////////////////////////////////////////////////////// PUBLIC/EXTERNAL FUNCTIONS //////////////////////////////////////////////////////////////*/ @@ -32,8 +39,8 @@ abstract contract RuleEngineValidation is * */ function setRulesValidation( - address[] calldata rules_ - ) public virtual override onlyRole(RULE_ENGINE_OPERATOR_ROLE) { + IRuleValidation[] calldata rules_ + ) public virtual override(IRuleEngineValidation) onlyRole(RULE_ENGINE_OPERATOR_ROLE) { if (rules_.length == 0) { revert RuleEngine_ArrayIsEmpty(); } @@ -44,87 +51,60 @@ abstract contract RuleEngineValidation is for(uint256 i = 0; i < rules_.length; ++i){ _checkRuleValidation(address(rules_[i])); _rulesValidation.add(address(rules_[i])); - emit AddRule(rules_[i]); + emit AddRuleValidation(rules_[i]); } } - /** - * @notice Clear all the rules of the array of rules - * - */ - function clearRulesValidation() public virtual onlyRole(RULE_ENGINE_OPERATOR_ROLE) { + + function clearRulesValidation() public virtual override(IRuleEngineValidation) onlyRole(RULE_ENGINE_OPERATOR_ROLE) { _clearRulesValidation(); } - /** - * @notice Add a rule to the array of rules - * @dev Revert if one rule is a zero address or if the rule is already present - * - */ + function addRuleValidation( IRuleValidation rule_ - ) public virtual onlyRole(RULE_ENGINE_OPERATOR_ROLE) { + ) public virtual override(IRuleEngineValidation) onlyRole(RULE_ENGINE_OPERATOR_ROLE) { _checkRuleValidation(address(rule_)); _rulesValidation.add(address(rule_)); - emit AddRule(address(rule_)); + emit AddRuleValidation(rule_); } - /** - * @notice Remove a rule from the array of rules - * Revert if the rule found at the specified index does not match the rule in argument - * @param rule_ address of the target rule - * @dev To reduce the array size, the last rule is moved to the location occupied - * by the rule to remove - * - * - */ + function removeRuleValidation( IRuleValidation rule_ - ) public virtual onlyRole(RULE_ENGINE_OPERATOR_ROLE) { + ) public virtual override(IRuleEngineValidation) onlyRole(RULE_ENGINE_OPERATOR_ROLE) { require(rulesValidationIsPresent(rule_), RuleEngine_RuleDoNotMatch()); - _removeRuleValidation(address(rule_)); + _removeRuleValidation(rule_); } /* ============ View functions ============ */ - /** - * @notice Check if a rule is present - * - */ - function rulesValidationIsPresent(IRuleValidation rule_) public view virtual returns (bool){ + + function rulesValidationIsPresent(IRuleValidation rule_) public view virtual override(IRuleEngineValidation) returns (bool){ return _rulesValidation.contains(address(rule_)); } - /** - * @return The number of rules inside the array - */ - function rulesCountValidation() public view virtual override returns (uint256) { + + function rulesCountValidation() public view virtual override(IRuleEngineValidation) returns (uint256) { return _rulesValidation.length(); } - /** - * @notice Get the rule at the position specified by ruleId - * @param ruleId index of the rule - * @return a rule address - */ + function ruleValidation( uint256 ruleId - ) public view virtual override returns (address) { + ) public view virtual override(IRuleEngineValidation) returns (address) { return _rulesValidation.at(ruleId); } - /** - * @notice Get all the rules - * @return An array of rules - */ + function rulesValidation() public view virtual - override + override(IRuleEngineValidation) returns (address[] memory) { return _rulesValidation.values(); @@ -138,7 +118,7 @@ abstract contract RuleEngineValidation is * */ function _clearRulesValidation() internal virtual { - emit ClearRules(); + emit ClearRulesValidation(); // O(N) _rulesValidation.clear(); } @@ -152,9 +132,9 @@ abstract contract RuleEngineValidation is * * */ - function _removeRuleValidation(address rule_) internal virtual { - _rulesValidation.remove(rule_); - emit RemoveRule(address(rule_)); + function _removeRuleValidation(IRuleValidation rule_) internal virtual { + _rulesValidation.remove(address(rule_)); + emit RemoveRuleValidation(rule_); } function _checkRuleValidation(address rule_) internal virtual{ diff --git a/src/modules/library/RuleEngineInvariantStorage.sol b/src/modules/library/RuleEngineInvariantStorage.sol new file mode 100644 index 0000000..eeaa449 --- /dev/null +++ b/src/modules/library/RuleEngineInvariantStorage.sol @@ -0,0 +1,8 @@ +// SPDX-License-Identifier: MPL-2.0 + +pragma solidity ^0.8.20; + +abstract contract RuleEngineInvariantStorage { + error RuleEngine_AdminWithAddressZeroNotAllowed(); + error RuleEngine_InvalidTransfer(address from, address to, uint256 value); +} diff --git a/src/modules/library/RuleEngineInvariantStorageCommon.sol b/src/modules/library/RuleEngineInvariantStorageCommon.sol new file mode 100644 index 0000000..175f721 --- /dev/null +++ b/src/modules/library/RuleEngineInvariantStorageCommon.sol @@ -0,0 +1,14 @@ +// SPDX-License-Identifier: MPL-2.0 + +pragma solidity ^0.8.20; + +abstract contract RuleEngineInvariantStorageCommon { + error RuleEngine_RuleAddressZeroNotAllowed(); + error RuleEngine_RuleAlreadyExists(); + error RuleEngine_RuleDoNotMatch(); + error RuleEngine_ArrayIsEmpty(); + + /// @notice Role to manage the ruleEngine + bytes32 public constant RULE_ENGINE_OPERATOR_ROLE = + keccak256("RULE_ENGINE_OPERATOR_ROLE"); +} diff --git a/test/HelperContract.sol b/test/HelperContract.sol index 1baaf34..4b86ac5 100644 --- a/test/HelperContract.sol +++ b/test/HelperContract.sol @@ -5,9 +5,13 @@ import "forge-std/Test.sol"; import "CMTAT/deployment/CMTATStandalone.sol"; import "CMTAT/libraries/Errors.sol"; -import {RuleEngineInvariantStorage} from "src/modules/RuleEngineInvariantStorage.sol"; +import {RuleEngineInvariantStorage} from "src/modules/library/RuleEngineInvariantStorage.sol"; +import {RuleEngineInvariantStorageCommon} from "src/modules/library/RuleEngineInvariantStorageCommon.sol"; // RuleEngine import {RuleEngine} from "src/RuleEngine.sol"; +import {RuleEngineValidation} from "src/RuleEngine.sol"; +import {RuleEngineOperation} from "src/RuleEngine.sol"; +import {ERC3643Compliance} from "src/RuleEngine.sol"; // RuleConditionalTransfer import {RuleConditionalTransferLight} from "src/mocks/rules/operation/RuleConditionalTransferLight.sol"; import {RuleConditionalTransferLightInvariantStorage} from "src/mocks/rules/operation/abstract/RuleConditionalTransferLightInvariantStorage.sol"; @@ -30,7 +34,8 @@ abstract contract HelperContract is RuleWhitelistInvariantStorage, RuleAddressListInvariantStorage, RuleEngineInvariantStorage, - RuleConditionalTransferLightInvariantStorage + RuleConditionalTransferLightInvariantStorage, + RuleEngineInvariantStorageCommon { // Test result uint256 internal resUint256; diff --git a/test/RuleEngine/AccessControl/RuleEngineAccessControl.sol b/test/RuleEngine/AccessControl/RuleEngineAccessControl.sol index 0926191..2e554f3 100644 --- a/test/RuleEngine/AccessControl/RuleEngineAccessControl.sol +++ b/test/RuleEngine/AccessControl/RuleEngineAccessControl.sol @@ -4,7 +4,6 @@ pragma solidity ^0.8.20; import "forge-std/Test.sol"; import "../../HelperContract.sol"; -import "src/RuleEngine.sol"; /** * @title Tests on the Access Control @@ -46,9 +45,9 @@ contract RuleEngineAccessControlTest is Test, HelperContract { WHITELIST_OPERATOR_ADDRESS, ZERO_ADDRESS ); - address[] memory ruleWhitelistTab = new address[](2); - ruleWhitelistTab[0] = address(ruleWhitelist1); - ruleWhitelistTab[1] = address(ruleWhitelist2); + IRuleValidation[] memory ruleWhitelistTab = new IRuleValidation[](2); + ruleWhitelistTab[0] = ruleWhitelist1; + ruleWhitelistTab[1] = ruleWhitelist2; // Act vm.prank(ATTACKER); diff --git a/test/RuleEngine/AccessControl/RuleEngineAccessControlOZ.t.sol b/test/RuleEngine/AccessControl/RuleEngineAccessControlOZ.t.sol index e751ad5..3be5ec8 100644 --- a/test/RuleEngine/AccessControl/RuleEngineAccessControlOZ.t.sol +++ b/test/RuleEngine/AccessControl/RuleEngineAccessControlOZ.t.sol @@ -4,7 +4,6 @@ pragma solidity ^0.8.20; import "forge-std/Test.sol"; import "../../../lib/openzeppelin-contracts/contracts/access/AccessControl.sol"; import "../../HelperContract.sol"; -import "src/RuleEngine.sol"; /** * @title Tests on the provided functions by OpenZeppelin diff --git a/test/RuleEngine/ERC3643Compliance.t.sol b/test/RuleEngine/ERC3643Compliance.t.sol index e6ea9b7..94f7358 100644 --- a/test/RuleEngine/ERC3643Compliance.t.sol +++ b/test/RuleEngine/ERC3643Compliance.t.sol @@ -3,7 +3,6 @@ pragma solidity ^0.8.20; import "forge-std/Test.sol"; import "../HelperContract.sol"; -import "../../src/RuleEngine.sol"; // your concrete contract inheriting ERC3643Compliance import {IERC3643Compliance} from "../../src/interfaces/IERC3643Compliance.sol"; import {ERC3643Compliance} from "../../src/modules/ERC3643Compliance.sol"; // Minimal mock ERC-3643 token to simulate calls to RuleEngine diff --git a/test/RuleEngine/RuleEngineDeployment.t.sol b/test/RuleEngine/RuleEngineDeployment.t.sol index 67b27d4..362c009 100644 --- a/test/RuleEngine/RuleEngineDeployment.t.sol +++ b/test/RuleEngine/RuleEngineDeployment.t.sol @@ -4,8 +4,6 @@ pragma solidity ^0.8.20; import "forge-std/Test.sol"; import "../HelperContract.sol"; import "CMTAT/mocks/MinimalForwarderMock.sol"; -import "src/RuleEngine.sol"; -import "src/RuleEngine.sol"; /** * @title General functions of the RuleEngine diff --git a/test/RuleEngine/ruleEngineOperation/CMTATIntegration.t.sol b/test/RuleEngine/ruleEngineOperation/CMTATIntegration.t.sol index 9bdf865..8eea10c 100644 --- a/test/RuleEngine/ruleEngineOperation/CMTATIntegration.t.sol +++ b/test/RuleEngine/ruleEngineOperation/CMTATIntegration.t.sol @@ -4,7 +4,6 @@ pragma solidity ^0.8.20; import "forge-std/Test.sol"; import "CMTAT/deployment/CMTATStandalone.sol"; import "../../HelperContract.sol"; -import "src/RuleEngine.sol"; import "OZ/token/ERC20/IERC20.sol"; /** * @title General functions of the RuleEngine diff --git a/test/RuleEngine/ruleEngineOperation/RuleEngineOperation.t.sol b/test/RuleEngine/ruleEngineOperation/RuleEngineOperation.t.sol index b400b54..c847c0e 100644 --- a/test/RuleEngine/ruleEngineOperation/RuleEngineOperation.t.sol +++ b/test/RuleEngine/ruleEngineOperation/RuleEngineOperation.t.sol @@ -3,13 +3,12 @@ pragma solidity ^0.8.20; import "forge-std/Test.sol"; import "../../HelperContract.sol"; -import "src/RuleEngine.sol"; import "OZ/token/ERC20/IERC20.sol"; /** * @title General functions of the RuleEngine */ contract RuleEngineOperationTest is Test, HelperContract { - + IRuleOperation[] ruleConditionalTransferLightTab = new IRuleOperation[](2); // Arrange function setUp() public { vm.prank(RULE_ENGINE_OPERATOR_ADDRESS); @@ -28,6 +27,7 @@ contract RuleEngineOperationTest is Test, HelperContract { // Arrange - Assert resUint256 = ruleEngineMock.rulesCountOperation(); assertEq(resUint256, 1); + } function testCanSetRulesOperation() public { @@ -42,18 +42,13 @@ contract RuleEngineOperationTest is Test, HelperContract { CONDITIONAL_TRANSFER_OPERATOR_ADDRESS, ruleEngineMock ); - address[] memory ruleConditionalTransferLightTab = new address[](2); - ruleConditionalTransferLightTab[0] = address( - IRuleOperation(ruleConditionalTransferLight1) - ); - ruleConditionalTransferLightTab[1] = address( - IRuleOperation(ruleConditionalTransferLight2) - ); + ruleConditionalTransferLightTab[0] = IRuleOperation(ruleConditionalTransferLight1); + ruleConditionalTransferLightTab[1] = IRuleOperation(ruleConditionalTransferLight2); // Act vm.expectEmit(true, false, false, false); - emit AddRule(address(ruleConditionalTransferLight1)); + emit RuleEngineOperation.AddRuleOperation(ruleConditionalTransferLight1); vm.expectEmit(true, false, false, false); - emit AddRule(address(ruleConditionalTransferLight2)); + emit RuleEngineOperation.AddRuleOperation(ruleConditionalTransferLight2); vm.prank(RULE_ENGINE_OPERATOR_ADDRESS); (bool resCallBool, ) = address(ruleEngineMock).call( abi.encodeCall( @@ -75,9 +70,8 @@ contract RuleEngineOperationTest is Test, HelperContract { CONDITIONAL_TRANSFER_OPERATOR_ADDRESS, ruleEngineMock ); - address[] memory ruleConditionalTransferLightTab = new address[](2); - ruleConditionalTransferLightTab[0] = address(ruleConditionalTransferLight1); - ruleConditionalTransferLightTab[1] = address(ruleConditionalTransferLight1); + ruleConditionalTransferLightTab[0] = ruleConditionalTransferLight1; + ruleConditionalTransferLightTab[1] = ruleConditionalTransferLight1; // Act vm.prank(RULE_ENGINE_OPERATOR_ADDRESS); @@ -100,7 +94,7 @@ contract RuleEngineOperationTest is Test, HelperContract { function testCannotSetEmptyRulesT1WithEmptyTab() public { // Arrange - address[] memory ruleConditionalTransferLightTab = new address[](0); + ruleConditionalTransferLightTab = new IRuleOperation[](0); resBool = ruleEngineMock.canTransfer(ADDRESS1, ADDRESS2, 20); assertFalse(resBool); @@ -126,7 +120,6 @@ contract RuleEngineOperationTest is Test, HelperContract { function testCannotSetEmptyRulesT2WithZeroAddress() public { // Arrange - address[] memory ruleConditionalTransferLightTab = new address[](2); // Act vm.prank(RULE_ENGINE_OPERATOR_ADDRESS); @@ -164,13 +157,8 @@ contract RuleEngineOperationTest is Test, HelperContract { CONDITIONAL_TRANSFER_OPERATOR_ADDRESS, ruleEngineMock ); - address[] memory ruleConditionalTransferLightTab = new address[](2); - ruleConditionalTransferLightTab[0] = address( - IRuleOperation(ruleConditionalTransferLight1) - ); - ruleConditionalTransferLightTab[1] = address( - IRuleOperation(ruleConditionalTransferLight2) - ); + ruleConditionalTransferLightTab[0] = IRuleOperation(ruleConditionalTransferLight1); + ruleConditionalTransferLightTab[1] = IRuleOperation(ruleConditionalTransferLight2); vm.prank(RULE_ENGINE_OPERATOR_ADDRESS); (bool resCallBool, ) = address(ruleEngineMock).call( @@ -186,6 +174,8 @@ contract RuleEngineOperationTest is Test, HelperContract { assertEq(resUint256, 2); // Act + vm.expectEmit(true, false, false, false); + emit RuleEngineOperation.ClearRulesOperation(); vm.prank(RULE_ENGINE_OPERATOR_ADDRESS); ruleEngineMock.clearRulesOperation(); @@ -206,13 +196,8 @@ contract RuleEngineOperationTest is Test, HelperContract { CONDITIONAL_TRANSFER_OPERATOR_ADDRESS, ruleEngineMock ); - address[] memory ruleConditionalTransferLightTab = new address[](2); - ruleConditionalTransferLightTab[0] = address( - IRuleOperation(ruleConditionalTransferLight1) - ); - ruleConditionalTransferLightTab[1] = address( - IRuleOperation(ruleConditionalTransferLight2) - ); + ruleConditionalTransferLightTab[0] = IRuleOperation(ruleConditionalTransferLight1); + ruleConditionalTransferLightTab[1] = IRuleOperation(ruleConditionalTransferLight2); vm.prank(RULE_ENGINE_OPERATOR_ADDRESS); (bool resCallBool, ) = address(ruleEngineMock).call( @@ -223,6 +208,8 @@ contract RuleEngineOperationTest is Test, HelperContract { ); // Act + vm.expectEmit(true, false, false, false); + emit RuleEngineOperation.ClearRulesOperation(); vm.prank(RULE_ENGINE_OPERATOR_ADDRESS); ruleEngineMock.clearRulesOperation(); @@ -242,6 +229,8 @@ contract RuleEngineOperationTest is Test, HelperContract { // Arrange before assert // Act + vm.expectEmit(true, false, false, false); + emit RuleEngineOperation.ClearRulesOperation(); vm.prank(RULE_ENGINE_OPERATOR_ADDRESS); ruleEngineMock.clearRulesOperation(); resUint256 = ruleEngineMock.rulesCountOperation(); @@ -249,7 +238,7 @@ contract RuleEngineOperationTest is Test, HelperContract { // Can add previous rule again vm.expectEmit(true, false, false, false); - emit AddRule(address(ruleConditionalTransferLight1)); + emit RuleEngineOperation.AddRuleOperation(ruleConditionalTransferLight1); vm.prank(RULE_ENGINE_OPERATOR_ADDRESS); ruleEngineMock.addRuleOperation(ruleConditionalTransferLight1); } @@ -264,7 +253,7 @@ contract RuleEngineOperationTest is Test, HelperContract { // Act vm.expectEmit(true, false, false, false); - emit AddRule(address(ruleConditionalTransferLight1)); + emit RuleEngineOperation.AddRuleOperation(ruleConditionalTransferLight1); vm.prank(RULE_ENGINE_OPERATOR_ADDRESS); ruleEngineMock.addRuleOperation(ruleConditionalTransferLight1); @@ -306,7 +295,7 @@ contract RuleEngineOperationTest is Test, HelperContract { // Act vm.expectEmit(true, false, false, false); - emit AddRule(address(ruleConditionalTransferLight)); + emit RuleEngineOperation.AddRuleOperation(ruleConditionalTransferLight); vm.prank(RULE_ENGINE_OPERATOR_ADDRESS); ruleEngineMock.addRuleOperation(ruleConditionalTransferLight); @@ -346,7 +335,7 @@ contract RuleEngineOperationTest is Test, HelperContract { // Act vm.expectEmit(true, false, false, false); - emit RemoveRule(address(ruleConditionalTransferLight1)); + emit RuleEngineOperation.RemoveRuleOperation(ruleConditionalTransferLight1); vm.prank(RULE_ENGINE_OPERATOR_ADDRESS); ruleEngineMock.removeRuleOperation(ruleConditionalTransferLight1); @@ -367,7 +356,7 @@ contract RuleEngineOperationTest is Test, HelperContract { // Act vm.expectEmit(true, false, false, false); - emit RemoveRule(address(ruleConditionalTransferLight)); + emit RuleEngineOperation.RemoveRuleOperation(ruleConditionalTransferLight); vm.prank(RULE_ENGINE_OPERATOR_ADDRESS); ruleEngineMock.removeRuleOperation(ruleConditionalTransferLight); @@ -397,7 +386,7 @@ contract RuleEngineOperationTest is Test, HelperContract { // Act vm.expectEmit(true, false, false, false); - emit RemoveRule(address(ruleConditionalTransferLight1)); + emit RuleEngineOperation.RemoveRuleOperation(ruleConditionalTransferLight1); vm.prank(RULE_ENGINE_OPERATOR_ADDRESS); ruleEngineMock.removeRuleOperation(ruleConditionalTransferLight1); @@ -427,13 +416,8 @@ contract RuleEngineOperationTest is Test, HelperContract { CONDITIONAL_TRANSFER_OPERATOR_ADDRESS, ruleEngineMock ); - address[] memory ruleConditionalTransferLightTab = new address[](2); - ruleConditionalTransferLightTab[0] = address( - IRuleOperation(ruleConditionalTransferLight1) - ); - ruleConditionalTransferLightTab[1] = address( - IRuleOperation(ruleConditionalTransferLight2) - ); + ruleConditionalTransferLightTab[0] = IRuleOperation(ruleConditionalTransferLight1); + ruleConditionalTransferLightTab[1] = IRuleOperation(ruleConditionalTransferLight2); vm.prank(RULE_ENGINE_OPERATOR_ADDRESS); (bool resCallBool, ) = address(ruleEngineMock).call( abi.encodeCall( @@ -462,13 +446,8 @@ contract RuleEngineOperationTest is Test, HelperContract { CONDITIONAL_TRANSFER_OPERATOR_ADDRESS, ruleEngineMock ); - address[] memory ruleConditionalTransferLightTab = new address[](2); - ruleConditionalTransferLightTab[0] = address( - IRuleOperation(ruleConditionalTransferLight1) - ); - ruleConditionalTransferLightTab[1] = address( - IRuleOperation(ruleConditionalTransferLight2) - ); + ruleConditionalTransferLightTab[0] = IRuleOperation(ruleConditionalTransferLight1); + ruleConditionalTransferLightTab[1] = IRuleOperation(ruleConditionalTransferLight2); vm.prank(RULE_ENGINE_OPERATOR_ADDRESS); (bool resCallBool, ) = address(ruleEngineMock).call( abi.encodeCall( @@ -496,13 +475,8 @@ contract RuleEngineOperationTest is Test, HelperContract { CONDITIONAL_TRANSFER_OPERATOR_ADDRESS, ruleEngineMock ); - address[] memory ruleConditionalTransferLightTab = new address[](2); - ruleConditionalTransferLightTab[0] = address( - IRuleOperation(ruleConditionalTransferLight1) - ); - ruleConditionalTransferLightTab[1] = address( - IRuleOperation(ruleConditionalTransferLight2) - ); + ruleConditionalTransferLightTab[0] = IRuleOperation(ruleConditionalTransferLight1); + ruleConditionalTransferLightTab[1] = IRuleOperation(ruleConditionalTransferLight2); vm.prank(RULE_ENGINE_OPERATOR_ADDRESS); (bool resCallBool, ) = address(ruleEngineMock).call( abi.encodeCall( @@ -533,13 +507,9 @@ contract RuleEngineOperationTest is Test, HelperContract { CONDITIONAL_TRANSFER_OPERATOR_ADDRESS, ruleEngineMock ); - address[] memory ruleConditionalTransferLightTab = new address[](2); - ruleConditionalTransferLightTab[0] = address( - IRuleOperation(ruleConditionalTransferLight1) - ); - ruleConditionalTransferLightTab[1] = address( - IRuleOperation(ruleConditionalTransferLight2) - ); + ruleConditionalTransferLightTab[0] = IRuleOperation(ruleConditionalTransferLight1); + ruleConditionalTransferLightTab[1] = + IRuleOperation(ruleConditionalTransferLight2); vm.prank(RULE_ENGINE_OPERATOR_ADDRESS); (bool resCallBool, ) = address(ruleEngineMock).call( abi.encodeCall( diff --git a/test/RuleEngine/ruleEngineOperation/RuleEngineOperationRevert.t.sol b/test/RuleEngine/ruleEngineOperation/RuleEngineOperationRevert.t.sol index f6a2dc3..7991c79 100644 --- a/test/RuleEngine/ruleEngineOperation/RuleEngineOperationRevert.t.sol +++ b/test/RuleEngine/ruleEngineOperation/RuleEngineOperationRevert.t.sol @@ -3,7 +3,6 @@ pragma solidity ^0.8.20; import "forge-std/Test.sol"; import "../../HelperContract.sol"; -import "src/RuleEngine.sol"; import "OZ/token/ERC20/IERC20.sol"; import "src/mocks/rules/operation/RuleOperationRevert.sol"; /** diff --git a/test/RuleEngine/ruleEngineOperation/RuleEngineRestriction.t.sol b/test/RuleEngine/ruleEngineOperation/RuleEngineRestriction.t.sol index 64718aa..5cece08 100644 --- a/test/RuleEngine/ruleEngineOperation/RuleEngineRestriction.t.sol +++ b/test/RuleEngine/ruleEngineOperation/RuleEngineRestriction.t.sol @@ -3,7 +3,6 @@ pragma solidity ^0.8.20; import "forge-std/Test.sol"; import "../../HelperContract.sol"; -import "src/RuleEngine.sol"; import "OZ/token/ERC20/IERC20.sol"; //ADmin, forwarder irrect /RuleEngine /** diff --git a/test/RuleEngine/ruleEngineValidation/RuleEngineRestriction.t.sol b/test/RuleEngine/ruleEngineValidation/RuleEngineRestriction.t.sol index 4168acc..2c6cb60 100644 --- a/test/RuleEngine/ruleEngineValidation/RuleEngineRestriction.t.sol +++ b/test/RuleEngine/ruleEngineValidation/RuleEngineRestriction.t.sol @@ -3,7 +3,6 @@ pragma solidity ^0.8.20; import "forge-std/Test.sol"; import "../../HelperContract.sol"; -import "src/RuleEngine.sol"; import "OZ/token/ERC20/IERC20.sol"; /** * @title tests concerning the restrictions and validation for the transfers @@ -34,8 +33,8 @@ contract RuleEngineRestrictionTest is Test, HelperContract { WHITELIST_OPERATOR_ADDRESS, ZERO_ADDRESS ); - address[] memory ruleWhitelistTab = new address[](1); - ruleWhitelistTab[0] = address(ruleWhitelist1); + IRuleValidation[] memory ruleWhitelistTab = new IRuleValidation[](1); + ruleWhitelistTab[0] = ruleWhitelist1; vm.prank(RULE_ENGINE_OPERATOR_ADDRESS); (bool success, ) = address(ruleEngineMock).call( abi.encodeCall(ruleEngineMock.setRulesValidation, ruleWhitelistTab) diff --git a/test/RuleEngine/ruleEngineValidation/RuleEngineValidation.t.sol b/test/RuleEngine/ruleEngineValidation/RuleEngineValidation.t.sol index 2acee37..f0a866b 100644 --- a/test/RuleEngine/ruleEngineValidation/RuleEngineValidation.t.sol +++ b/test/RuleEngine/ruleEngineValidation/RuleEngineValidation.t.sol @@ -3,12 +3,12 @@ pragma solidity ^0.8.20; import "forge-std/Test.sol"; import "../../HelperContract.sol"; -import "src/RuleEngine.sol"; /** * @title General functions of the RuleEngine */ contract RuleEngineValidationTest is Test, HelperContract { + IRuleValidation[] ruleWhitelistTab = new IRuleValidation[](2); // Arrange function setUp() public { ruleWhitelist = new RuleWhitelist( @@ -41,14 +41,13 @@ contract RuleEngineValidationTest is Test, HelperContract { WHITELIST_OPERATOR_ADDRESS, ZERO_ADDRESS ); - address[] memory ruleWhitelistTab = new address[](2); - ruleWhitelistTab[0] = address(IRuleValidation(ruleWhitelist1)); - ruleWhitelistTab[1] = address(IRuleValidation(ruleWhitelist2)); + ruleWhitelistTab[0] = IRuleValidation(ruleWhitelist1); + ruleWhitelistTab[1] = IRuleValidation(ruleWhitelist2); // Act vm.expectEmit(true, false, false, false); - emit AddRule(address(ruleWhitelist1)); + emit RuleEngineValidation.AddRuleValidation(ruleWhitelist1); vm.expectEmit(true, false, false, false); - emit AddRule(address(ruleWhitelist2)); + emit RuleEngineValidation.AddRuleValidation(ruleWhitelist2); vm.prank(RULE_ENGINE_OPERATOR_ADDRESS); (bool resCallBool, ) = address(ruleEngineMock).call( abi.encodeCall(ruleEngineMock.setRulesValidation, ruleWhitelistTab) @@ -67,9 +66,8 @@ contract RuleEngineValidationTest is Test, HelperContract { WHITELIST_OPERATOR_ADDRESS, ZERO_ADDRESS ); - address[] memory ruleWhitelistTab = new address[](2); - ruleWhitelistTab[0] = address(ruleWhitelist1); - ruleWhitelistTab[1] = address(ruleWhitelist1); + ruleWhitelistTab[0] = ruleWhitelist1; + ruleWhitelistTab[1] = ruleWhitelist1; // Act vm.expectRevert(RuleEngine_RuleAlreadyExists.selector); @@ -94,8 +92,8 @@ contract RuleEngineValidationTest is Test, HelperContract { WHITELIST_OPERATOR_ADDRESS, ZERO_ADDRESS ); - address[] memory ruleWhitelistTab = new address[](1); - ruleWhitelistTab[0] = address(ruleWhitelist1); + ruleWhitelistTab = new IRuleValidation[](1); + ruleWhitelistTab[0] = ruleWhitelist1; // Arrange vm.prank(RULE_ENGINE_OPERATOR_ADDRESS); @@ -117,7 +115,7 @@ contract RuleEngineValidationTest is Test, HelperContract { function testCannotSetEmptyRulesT1() public { // Arrange - address[] memory ruleWhitelistTab = new address[](0); + ruleWhitelistTab = new IRuleValidation[](0); // Act vm.prank(RULE_ENGINE_OPERATOR_ADDRESS); @@ -147,7 +145,6 @@ contract RuleEngineValidationTest is Test, HelperContract { function testCannotSetEmptyRulesT2() public { // Arrange - address[] memory ruleWhitelistTab = new address[](2); // Act vm.prank(RULE_ENGINE_OPERATOR_ADDRESS); @@ -191,9 +188,8 @@ contract RuleEngineValidationTest is Test, HelperContract { WHITELIST_OPERATOR_ADDRESS, ZERO_ADDRESS ); - address[] memory ruleWhitelistTab = new address[](2); - ruleWhitelistTab[0] = address(IRuleValidation(ruleWhitelist1)); - ruleWhitelistTab[1] = address(IRuleValidation(ruleWhitelist2)); + ruleWhitelistTab[0] = IRuleValidation(ruleWhitelist1); + ruleWhitelistTab[1] = IRuleValidation(ruleWhitelist2); vm.prank(RULE_ENGINE_OPERATOR_ADDRESS); (bool resCallBool, ) = address(ruleEngineMock).call( @@ -206,6 +202,8 @@ contract RuleEngineValidationTest is Test, HelperContract { assertEq(resUint256, 2); // Act + vm.expectEmit(true, false, false, false); + emit RuleEngineValidation.ClearRulesValidation(); vm.prank(RULE_ENGINE_OPERATOR_ADDRESS); ruleEngineMock.clearRulesValidation(); @@ -226,9 +224,8 @@ contract RuleEngineValidationTest is Test, HelperContract { WHITELIST_OPERATOR_ADDRESS, ZERO_ADDRESS ); - address[] memory ruleWhitelistTab = new address[](2); - ruleWhitelistTab[0] = address(IRuleValidation(ruleWhitelist1)); - ruleWhitelistTab[1] = address(IRuleValidation(ruleWhitelist2)); + ruleWhitelistTab[0] = IRuleValidation(ruleWhitelist1); + ruleWhitelistTab[1] = IRuleValidation(ruleWhitelist2); vm.prank(RULE_ENGINE_OPERATOR_ADDRESS); (bool resCallBool, ) = address(ruleEngineMock).call( @@ -236,6 +233,8 @@ contract RuleEngineValidationTest is Test, HelperContract { ); // Act + vm.expectEmit(true, false, false, false); + emit RuleEngineValidation.ClearRulesValidation(); vm.prank(RULE_ENGINE_OPERATOR_ADDRESS); ruleEngineMock.clearRulesValidation(); @@ -252,6 +251,8 @@ contract RuleEngineValidationTest is Test, HelperContract { // Arrange before assert // Act + vm.expectEmit(true, false, false, false); + emit RuleEngineValidation.ClearRulesValidation(); vm.prank(RULE_ENGINE_OPERATOR_ADDRESS); ruleEngineMock.clearRulesValidation(); resUint256 = ruleEngineMock.rulesCountValidation(); @@ -259,7 +260,7 @@ contract RuleEngineValidationTest is Test, HelperContract { // Can add previous rule again vm.expectEmit(true, false, false, false); - emit AddRule(address(ruleWhitelist1)); + emit RuleEngineValidation.AddRuleValidation(ruleWhitelist1); vm.prank(RULE_ENGINE_OPERATOR_ADDRESS); ruleEngineMock.addRuleValidation(ruleWhitelist1); } @@ -274,7 +275,7 @@ contract RuleEngineValidationTest is Test, HelperContract { // Act vm.expectEmit(true, false, false, false); - emit AddRule(address(ruleWhitelist1)); + emit RuleEngineValidation.AddRuleValidation(ruleWhitelist1); vm.prank(RULE_ENGINE_OPERATOR_ADDRESS); ruleEngineMock.addRuleValidation(ruleWhitelist1); @@ -316,7 +317,7 @@ contract RuleEngineValidationTest is Test, HelperContract { // Act vm.expectEmit(true, false, false, false); - emit AddRule(address(ruleWhitelist)); + emit RuleEngineValidation.AddRuleValidation(ruleWhitelist); vm.prank(RULE_ENGINE_OPERATOR_ADDRESS); ruleEngineMock.addRuleValidation(ruleWhitelist); @@ -356,7 +357,7 @@ contract RuleEngineValidationTest is Test, HelperContract { // Act vm.expectEmit(true, false, false, false); - emit RemoveRule(address(ruleWhitelist1)); + emit RuleEngineValidation.RemoveRuleValidation(ruleWhitelist1); vm.prank(RULE_ENGINE_OPERATOR_ADDRESS); ruleEngineMock.removeRuleValidation(ruleWhitelist1); @@ -377,7 +378,7 @@ contract RuleEngineValidationTest is Test, HelperContract { // Act vm.expectEmit(true, false, false, false); - emit RemoveRule(address(ruleWhitelist)); + emit RuleEngineValidation.RemoveRuleValidation(ruleWhitelist); vm.prank(RULE_ENGINE_OPERATOR_ADDRESS); ruleEngineMock.removeRuleValidation(ruleWhitelist); @@ -407,7 +408,7 @@ contract RuleEngineValidationTest is Test, HelperContract { // Act vm.expectEmit(true, false, false, false); - emit RemoveRule(address(ruleWhitelist1)); + emit RuleEngineValidation.RemoveRuleValidation(ruleWhitelist1); vm.prank(RULE_ENGINE_OPERATOR_ADDRESS); ruleEngineMock.removeRuleValidation(ruleWhitelist1); @@ -437,9 +438,8 @@ contract RuleEngineValidationTest is Test, HelperContract { WHITELIST_OPERATOR_ADDRESS, ZERO_ADDRESS ); - address[] memory ruleWhitelistTab = new address[](2); - ruleWhitelistTab[0] = address(IRuleValidation(ruleWhitelist1)); - ruleWhitelistTab[1] = address(IRuleValidation(ruleWhitelist2)); + ruleWhitelistTab[0] = IRuleValidation(ruleWhitelist1); + ruleWhitelistTab[1] = IRuleValidation(ruleWhitelist2); vm.prank(RULE_ENGINE_OPERATOR_ADDRESS); (bool resCallBool, ) = address(ruleEngineMock).call( abi.encodeCall(ruleEngineMock.setRulesValidation, ruleWhitelistTab) @@ -465,9 +465,8 @@ contract RuleEngineValidationTest is Test, HelperContract { WHITELIST_OPERATOR_ADDRESS, ZERO_ADDRESS ); - address[] memory ruleWhitelistTab = new address[](2); - ruleWhitelistTab[0] = address(IRuleValidation(ruleWhitelist1)); - ruleWhitelistTab[1] = address(IRuleValidation(ruleWhitelist2)); + ruleWhitelistTab[0] = IRuleValidation(ruleWhitelist1); + ruleWhitelistTab[1] = IRuleValidation(ruleWhitelist2); vm.prank(RULE_ENGINE_OPERATOR_ADDRESS); (bool resCallBool, ) = address(ruleEngineMock).call( abi.encodeCall(ruleEngineMock.setRulesValidation, ruleWhitelistTab) @@ -492,9 +491,8 @@ contract RuleEngineValidationTest is Test, HelperContract { WHITELIST_OPERATOR_ADDRESS, ZERO_ADDRESS ); - address[] memory ruleWhitelistTab = new address[](2); - ruleWhitelistTab[0] = address(IRuleValidation(ruleWhitelist1)); - ruleWhitelistTab[1] = address(IRuleValidation(ruleWhitelist2)); + ruleWhitelistTab[0] = IRuleValidation(ruleWhitelist1); + ruleWhitelistTab[1] = IRuleValidation(ruleWhitelist2); vm.prank(RULE_ENGINE_OPERATOR_ADDRESS); (bool resCallBool, ) = address(ruleEngineMock).call( abi.encodeCall(ruleEngineMock.setRulesValidation, ruleWhitelistTab) @@ -522,9 +520,8 @@ contract RuleEngineValidationTest is Test, HelperContract { WHITELIST_OPERATOR_ADDRESS, ZERO_ADDRESS ); - address[] memory ruleWhitelistTab = new address[](2); - ruleWhitelistTab[0] = address(IRuleValidation(ruleWhitelist1)); - ruleWhitelistTab[1] = address(IRuleValidation(ruleWhitelist2)); + ruleWhitelistTab[0] = IRuleValidation(ruleWhitelist1); + ruleWhitelistTab[1] = IRuleValidation(ruleWhitelist2); vm.prank(RULE_ENGINE_OPERATOR_ADDRESS); (bool resCallBool, ) = address(ruleEngineMock).call( abi.encodeCall(ruleEngineMock.setRulesValidation, ruleWhitelistTab) diff --git a/test/RuleWhitelist/AccessControl/RuleWhitelistAccessControl.t.sol b/test/RuleWhitelist/AccessControl/RuleWhitelistAccessControl.t.sol index c87e62b..5e5aff6 100644 --- a/test/RuleWhitelist/AccessControl/RuleWhitelistAccessControl.t.sol +++ b/test/RuleWhitelist/AccessControl/RuleWhitelistAccessControl.t.sol @@ -3,7 +3,6 @@ pragma solidity ^0.8.20; import "forge-std/Test.sol"; import "../../HelperContract.sol"; -import "src/RuleEngine.sol"; /** * @title Tests on the Access Control diff --git a/test/RuleWhitelist/AccessControl/RuleWhitelistAccessControlOZ.t.sol b/test/RuleWhitelist/AccessControl/RuleWhitelistAccessControlOZ.t.sol index 4aacfac..2fb3bbe 100644 --- a/test/RuleWhitelist/AccessControl/RuleWhitelistAccessControlOZ.t.sol +++ b/test/RuleWhitelist/AccessControl/RuleWhitelistAccessControlOZ.t.sol @@ -4,7 +4,6 @@ pragma solidity ^0.8.20; import "forge-std/Test.sol"; import "../../HelperContract.sol"; import "../../../lib/openzeppelin-contracts/contracts/access/AccessControl.sol"; -import "src/RuleEngine.sol"; /** * @title Tests on the provided functions by OpenZeppelin diff --git a/test/RuleWhitelist/CMTATIntegration.t.sol b/test/RuleWhitelist/CMTATIntegration.t.sol index 1598887..d1885a1 100644 --- a/test/RuleWhitelist/CMTATIntegration.t.sol +++ b/test/RuleWhitelist/CMTATIntegration.t.sol @@ -4,7 +4,6 @@ pragma solidity ^0.8.20; import "forge-std/Test.sol"; import "CMTAT/deployment/CMTATStandalone.sol"; import "../HelperContract.sol"; -import "src/RuleEngine.sol"; /** * @title Integration test with the CMTAT diff --git a/test/RuleWhitelist/RuleWhitelist.t.sol b/test/RuleWhitelist/RuleWhitelist.t.sol index 7b3e7e1..77e898b 100644 --- a/test/RuleWhitelist/RuleWhitelist.t.sol +++ b/test/RuleWhitelist/RuleWhitelist.t.sol @@ -3,8 +3,6 @@ pragma solidity ^0.8.20; import "forge-std/Test.sol"; import "../HelperContract.sol"; -import "src/RuleEngine.sol"; - /** * @title General functions of the RuleWhitelist */ diff --git a/test/RuleWhitelist/RuleWhitelistAdd.t.sol b/test/RuleWhitelist/RuleWhitelistAdd.t.sol index 6cadac7..054af69 100644 --- a/test/RuleWhitelist/RuleWhitelistAdd.t.sol +++ b/test/RuleWhitelist/RuleWhitelistAdd.t.sol @@ -3,7 +3,6 @@ pragma solidity ^0.8.20; import "forge-std/Test.sol"; import "../HelperContract.sol"; -import "src/RuleEngine.sol"; /** * @title Tests the functions to add addresses to the whitelist diff --git a/test/RuleWhitelist/RuleWhitelistDeployment.t.sol b/test/RuleWhitelist/RuleWhitelistDeployment.t.sol index 9f3b11f..ef219a9 100644 --- a/test/RuleWhitelist/RuleWhitelistDeployment.t.sol +++ b/test/RuleWhitelist/RuleWhitelistDeployment.t.sol @@ -3,7 +3,6 @@ pragma solidity ^0.8.20; import "forge-std/Test.sol"; import "../HelperContract.sol"; -import "src/RuleEngine.sol"; import "CMTAT/mocks/MinimalForwarderMock.sol"; /** diff --git a/test/RuleWhitelist/RuleWhitelistRemove.t.sol b/test/RuleWhitelist/RuleWhitelistRemove.t.sol index 0da5d26..f992563 100644 --- a/test/RuleWhitelist/RuleWhitelistRemove.t.sol +++ b/test/RuleWhitelist/RuleWhitelistRemove.t.sol @@ -3,7 +3,6 @@ pragma solidity ^0.8.20; import "forge-std/Test.sol"; import "../HelperContract.sol"; -import "src/RuleEngine.sol"; /** * @title Tests the functions to remove addresses from the whitelist diff --git a/test/utils/SanctionListOracle.sol b/test/utils/SanctionListOracle.sol deleted file mode 100644 index 2edaee7..0000000 --- a/test/utils/SanctionListOracle.sol +++ /dev/null @@ -1,24 +0,0 @@ -// SPDX-License-Identifier: MPL-2.0 -pragma solidity ^0.8.20; - -/** - * @notice Test contract from - * https://etherscan.io/address/0x40c57923924b5c5c5455c48d93317139addac8fb#code - */ -contract SanctionListOracle { - constructor() {} - - mapping(address => bool) private sanctionedAddresses; - - function addToSanctionsList(address newSanction) public { - sanctionedAddresses[newSanction] = true; - } - - function removeFromSanctionsList(address removeSanction) public { - sanctionedAddresses[removeSanction] = true; - } - - function isSanctioned(address addr) public view returns (bool) { - return sanctionedAddresses[addr] == true; - } -} From c19000879d9b2f084cba89a49f134951e9838705 Mon Sep 17 00:00:00 2001 From: Ryan Sauge <71391932+rya-sge@users.noreply.github.com> Date: Tue, 12 Aug 2025 14:19:36 +0200 Subject: [PATCH 08/17] clean up + create ruleEngine base contract --- src/RuleEngine.sol | 233 +--------------------- src/RuleEngineBase.sol | 241 +++++++++++++++++++++++ src/interfaces/IERC3643Compliance.sol | 2 + src/interfaces/IRuleEngineOperation.sol | 2 + src/interfaces/IRuleEngineValidation.sol | 1 + src/interfaces/IRuleOperation.sol | 1 + src/interfaces/IRuleValidation.sol | 1 + src/modules/ERC3643Compliance.sol | 6 +- src/modules/MetaTxModuleStandalone.sol | 1 + src/modules/RuleEngineBaseModule.sol | 24 +++ src/modules/RuleEngineOperation.sol | 4 +- src/modules/RuleEngineValidation.sol | 6 +- src/modules/RuleEngineValidationRead.sol | 5 + test/HelperContract.sol | 6 +- 14 files changed, 295 insertions(+), 238 deletions(-) create mode 100644 src/RuleEngineBase.sol create mode 100644 src/modules/RuleEngineBaseModule.sol diff --git a/src/RuleEngine.sol b/src/RuleEngine.sol index 388ea21..e35bcdf 100644 --- a/src/RuleEngine.sol +++ b/src/RuleEngine.sol @@ -2,36 +2,19 @@ pragma solidity ^0.8.20; -// OpenZeppelin -import {AccessControl} from "OZ/access/AccessControl.sol"; +/* ==== OpenZeppelin === */ import {Context} from "OZ/utils/Context.sol"; -// CMTAT -import {IRuleEngine}from "CMTAT/interfaces/engine/IRuleEngine.sol"; +/* ==== Modules === */ import {MetaTxModuleStandalone, ERC2771Context} from "./modules/MetaTxModuleStandalone.sol"; -import {ERC3643Compliance, IERC3643Compliance} from "./modules/ERC3643Compliance.sol"; -// Other -import {RuleEngineOperation} from "./modules/RuleEngineOperation.sol"; -import {RuleEngineValidationRead, RuleEngineValidation} from "./modules/RuleEngineValidationRead.sol"; -import {IRuleValidation} from "./interfaces/IRuleValidation.sol"; -import {RuleEngineInvariantStorage} from "./modules/library/RuleEngineInvariantStorage.sol"; +/* ==== Base contract === */ +import {RuleEngineBase} from "./RuleEngineBase.sol"; /** * @title Implementation of a ruleEngine as defined by the CMTAT */ contract RuleEngine is - IRuleEngine, - RuleEngineOperation, - RuleEngineValidationRead, MetaTxModuleStandalone, - ERC3643Compliance, - RuleEngineInvariantStorage + RuleEngineBase { - - /** - * @notice - * Get the current version of the smart contract - */ - string public constant VERSION = "3.0.0"; - /** * @param admin Address of the contract (Access Control) * @param forwarderIrrevocable Address of the forwarder, required for the gasless support @@ -50,212 +33,6 @@ contract RuleEngine is _grantRole(DEFAULT_ADMIN_ROLE, admin); } - /* ============ State functions ============ */ - /* - * @notice function protected by access control - */ - function transferred( - address spender, - address from, - address to, - uint256 value - ) public virtual override onlyBoundToken { - // Validate transfer - require(RuleEngineValidationRead.canTransferValidationFrom(spender, from, to, value), RuleEngine_InvalidTransfer(from, to, value)); - - // Apply operation on RuleEngine - RuleEngineOperation._transferred(from, to, value); - } - /** - * @dev ERC-3643 function transferred - */ - function transferred( - address from, - address to, - uint256 value - ) public virtual override onlyBoundToken { - _transferred(from, to, value); - } - - /// @inheritdoc IERC3643Compliance - function created(address to, uint256 value) public virtual override onlyBoundToken{ - _transferred(address(0), to, value); - } - - /// @inheritdoc IERC3643Compliance - function destroyed(address from, uint256 value) public virtual override onlyBoundToken { - _transferred(from, address(0), value); - } - - /** - * @notice Go through all the rule to know if a restriction exists on the transfer - * @param from the origin address - * @param to the destination address - * @param value to transfer - **/ - function _transferred( - address from, - address to, - uint256 value - ) internal virtual override(RuleEngineOperation){ - // Validate transfer - require(RuleEngineValidationRead.canTransferValidation(from, to, value),RuleEngine_InvalidTransfer(from, to, value)); - - // Apply operation on RuleEngine - RuleEngineOperation._transferred(from, to, value); - } - - /* ============ View functions ============ */ - /** - * @notice Go through all the rule to know if a restriction exists on the transfer - * @param from the origin address - * @param to the destination address - * @param value to transfer - * @return The restricion code or REJECTED_CODE_BASE.TRANSFER_OK - **/ - function detectTransferRestriction( - address from, - address to, - uint256 value - ) public view override returns (uint8) { - // Validation - uint8 code = RuleEngineValidationRead.detectTransferRestrictionValidation( - from, - to, - value - ); - if (code != uint8(REJECTED_CODE_BASE.TRANSFER_OK)) { - return code; - } - - // Operation - uint256 rulesLength = rulesCountOperation(); - for (uint256 i = 0; i < rulesLength; ++i) { - uint8 restriction = IRuleValidation(ruleOperation(i)) - .detectTransferRestriction(from, to, value); - if (restriction > 0) { - return restriction; - } - } - - return uint8(REJECTED_CODE_BASE.TRANSFER_OK); - } - - function detectTransferRestrictionFrom( - address spender, - address from, - address to, - uint256 value - ) public view override returns (uint8) { - // Validation - uint8 code = RuleEngineValidationRead.detectTransferRestrictionValidationFrom(spender, - from, - to, - value - ); - if (code != uint8(REJECTED_CODE_BASE.TRANSFER_OK)) { - return code; - } - - // Operation - uint256 rulesLength = rulesCountOperation(); - for (uint256 i = 0; i < rulesLength; ++i) { - uint8 restriction = IRuleValidation(ruleOperation(i)) - .detectTransferRestrictionFrom(spender,from, to, value); - if (restriction > 0) { - return restriction; - } - } - - return uint8(REJECTED_CODE_BASE.TRANSFER_OK); - } - - /** - * @notice Validate a transfer - * @param from the origin address - * @param to the destination address - * @param value to transfer - * @return True if the transfer is valid, false otherwise - **/ - function canTransfer( - address from, - address to, - uint256 value - ) public virtual view override returns (bool) { - return - detectTransferRestriction(from, to, value) == - uint8(REJECTED_CODE_BASE.TRANSFER_OK); - } - - /** - * @notice Validate a transfer - * @param from the origin address - * @param to the destination address - * @param value to transfer - * @return True if the transfer is valid, false otherwise - **/ - function canTransferFrom( - address spender, - address from, - address to, - uint256 value - ) public virtual view override returns (bool) { - return - detectTransferRestrictionFrom(spender, from, to, value) == - uint8(REJECTED_CODE_BASE.TRANSFER_OK); - } - - /** - * @notice Return the message corresponding to the code - * @param restrictionCode The target restriction code - * @return True if the transfer is valid, false otherwise - **/ - function messageForTransferRestriction( - uint8 restrictionCode - ) public virtual view override returns (string memory) { - // Validation - uint256 rulesLength = rulesCountValidation(); - for (uint256 i = 0; i < rulesLength; ++i) { - if ( - IRuleValidation(ruleValidation(i)) - .canReturnTransferRestrictionCode(restrictionCode) - ) { - return - IRuleValidation(ruleValidation(i)) - .messageForTransferRestriction(restrictionCode); - } - } - // operation - rulesLength = rulesCountOperation(); - for (uint256 i = 0; i < rulesLength; ++i) { - if ( - IRuleValidation(ruleOperation(i)) - .canReturnTransferRestrictionCode(restrictionCode) - ) { - return - IRuleValidation(ruleOperation(i)) - .messageForTransferRestriction(restrictionCode); - } - } - return "Unknown restriction code"; - } - - /* ============ ACCESS CONTROL ============ */ - /** - * @dev Returns `true` if `account` has been granted `role`. - */ - function hasRole( - bytes32 role, - address account - ) public view virtual override(AccessControl) returns (bool) { - // The Default Admin has all roles - if (AccessControl.hasRole(DEFAULT_ADMIN_ROLE, account)) { - return true; - } else { - return AccessControl.hasRole(role, account); - } - } - /*////////////////////////////////////////////////////////////// ERC-2771 //////////////////////////////////////////////////////////////*/ diff --git a/src/RuleEngineBase.sol b/src/RuleEngineBase.sol new file mode 100644 index 0000000..e2bcd10 --- /dev/null +++ b/src/RuleEngineBase.sol @@ -0,0 +1,241 @@ +// SPDX-License-Identifier: MPL-2.0 + +pragma solidity ^0.8.20; + +/* ==== OpenZeppelin === */ +import {AccessControl} from "OZ/access/AccessControl.sol"; +import {Context} from "OZ/utils/Context.sol"; +/* ==== CMTAT === */ +import {IRuleEngine}from "CMTAT/interfaces/engine/IRuleEngine.sol"; +/* ==== Modules === */ +import {ERC3643Compliance, IERC3643Compliance} from "./modules/ERC3643Compliance.sol"; +import {RuleEngineBaseModule} from "./modules/RuleEngineBaseModule.sol"; +import {RuleEngineOperation} from "./modules/RuleEngineOperation.sol"; +import {RuleEngineValidationRead, RuleEngineValidation} from "./modules/RuleEngineValidationRead.sol"; + +/* ==== Interface and other library === */ +import {IRuleValidation} from "./interfaces/IRuleValidation.sol"; +import {RuleEngineInvariantStorage} from "./modules/library/RuleEngineInvariantStorage.sol"; +/** + * @title Implementation of a ruleEngine as defined by the CMTAT + */ +abstract contract RuleEngineBase is + RuleEngineBaseModule, + RuleEngineOperation, + RuleEngineValidationRead, + ERC3643Compliance, + RuleEngineInvariantStorage, + IRuleEngine +{ + /* ============ State functions ============ */ + /* + * @notice function protected by access control + */ + function transferred( + address spender, + address from, + address to, + uint256 value + ) public virtual override onlyBoundToken { + // Validate transfer + require(RuleEngineValidationRead.canTransferValidationFrom(spender, from, to, value), RuleEngine_InvalidTransfer(from, to, value)); + + // Apply operation on RuleEngine + RuleEngineOperation._transferred(from, to, value); + } + /** + * @dev ERC-3643 function transferred + */ + function transferred( + address from, + address to, + uint256 value + ) public virtual override onlyBoundToken { + _transferred(from, to, value); + } + + /// @inheritdoc IERC3643Compliance + function created(address to, uint256 value) public virtual override onlyBoundToken{ + _transferred(address(0), to, value); + } + + /// @inheritdoc IERC3643Compliance + function destroyed(address from, uint256 value) public virtual override onlyBoundToken { + _transferred(from, address(0), value); + } + + + + /* ============ View functions ============ */ + /** + * @notice Go through all the rule to know if a restriction exists on the transfer + * @param from the origin address + * @param to the destination address + * @param value to transfer + * @return The restricion code or REJECTED_CODE_BASE.TRANSFER_OK + **/ + function detectTransferRestriction( + address from, + address to, + uint256 value + ) public view virtual override returns (uint8) { + // Validation + uint8 code = RuleEngineValidationRead.detectTransferRestrictionValidation( + from, + to, + value + ); + if (code != uint8(REJECTED_CODE_BASE.TRANSFER_OK)) { + return code; + } + + // Operation + uint256 rulesLength = rulesCountOperation(); + for (uint256 i = 0; i < rulesLength; ++i) { + uint8 restriction = IRuleValidation(ruleOperation(i)) + .detectTransferRestriction(from, to, value); + if (restriction > 0) { + return restriction; + } + } + + return uint8(REJECTED_CODE_BASE.TRANSFER_OK); + } + + function detectTransferRestrictionFrom( + address spender, + address from, + address to, + uint256 value + ) public view virtual override returns (uint8) { + // Validation + uint8 code = RuleEngineValidationRead.detectTransferRestrictionValidationFrom(spender, + from, + to, + value + ); + if (code != uint8(REJECTED_CODE_BASE.TRANSFER_OK)) { + return code; + } + + // Operation + uint256 rulesLength = rulesCountOperation(); + for (uint256 i = 0; i < rulesLength; ++i) { + uint8 restriction = IRuleValidation(ruleOperation(i)) + .detectTransferRestrictionFrom(spender,from, to, value); + if (restriction > 0) { + return restriction; + } + } + + return uint8(REJECTED_CODE_BASE.TRANSFER_OK); + } + + /** + * @notice Validate a transfer + * @param from the origin address + * @param to the destination address + * @param value to transfer + * @return True if the transfer is valid, false otherwise + **/ + function canTransfer( + address from, + address to, + uint256 value + ) public virtual view override returns (bool) { + return + detectTransferRestriction(from, to, value) == + uint8(REJECTED_CODE_BASE.TRANSFER_OK); + } + + /** + * @notice Validate a transfer + * @param from the origin address + * @param to the destination address + * @param value to transfer + * @return True if the transfer is valid, false otherwise + **/ + function canTransferFrom( + address spender, + address from, + address to, + uint256 value + ) public virtual view override returns (bool) { + return + detectTransferRestrictionFrom(spender, from, to, value) == + uint8(REJECTED_CODE_BASE.TRANSFER_OK); + } + + /** + * @notice Return the message corresponding to the code + * @param restrictionCode The target restriction code + * @return True if the transfer is valid, false otherwise + **/ + function messageForTransferRestriction( + uint8 restrictionCode + ) public virtual view override returns (string memory) { + // Validation + uint256 rulesLength = rulesCountValidation(); + for (uint256 i = 0; i < rulesLength; ++i) { + if ( + IRuleValidation(ruleValidation(i)) + .canReturnTransferRestrictionCode(restrictionCode) + ) { + return + IRuleValidation(ruleValidation(i)) + .messageForTransferRestriction(restrictionCode); + } + } + // operation + rulesLength = rulesCountOperation(); + for (uint256 i = 0; i < rulesLength; ++i) { + if ( + IRuleValidation(ruleOperation(i)) + .canReturnTransferRestrictionCode(restrictionCode) + ) { + return + IRuleValidation(ruleOperation(i)) + .messageForTransferRestriction(restrictionCode); + } + } + return "Unknown restriction code"; + } + + /* ============ ACCESS CONTROL ============ */ + /** + * @dev Returns `true` if `account` has been granted `role`. + */ + function hasRole( + bytes32 role, + address account + ) public view virtual override(AccessControl) returns (bool) { + // The Default Admin has all roles + if (AccessControl.hasRole(DEFAULT_ADMIN_ROLE, account)) { + return true; + } else { + return AccessControl.hasRole(role, account); + } + } + + /*////////////////////////////////////////////////////////////// + INTERNAL FUNCTIONS + //////////////////////////////////////////////////////////////*/ + + /** + * @notice Go through all the rule to know if a restriction exists on the transfer + * @param from the origin address + * @param to the destination address + * @param value to transfer + **/ + function _transferred( + address from, + address to, + uint256 value + ) internal virtual override(RuleEngineOperation){ + // Validate transfer + require(RuleEngineValidationRead.canTransferValidation(from, to, value),RuleEngine_InvalidTransfer(from, to, value)); + + // Apply operation on RuleEngine + RuleEngineOperation._transferred(from, to, value); + } +} diff --git a/src/interfaces/IERC3643Compliance.sol b/src/interfaces/IERC3643Compliance.sol index c262b1e..5d38447 100644 --- a/src/interfaces/IERC3643Compliance.sol +++ b/src/interfaces/IERC3643Compliance.sol @@ -1,6 +1,8 @@ //SPDX-License-Identifier: MPL-2.0 pragma solidity ^0.8.20; + +/* ==== CMTAT === */ import {IERC3643ComplianceRead, IERC3643IComplianceContract} from "CMTAT/interfaces/tokenization/IERC3643Partial.sol"; interface IERC3643Compliance is IERC3643ComplianceRead, IERC3643IComplianceContract { diff --git a/src/interfaces/IRuleEngineOperation.sol b/src/interfaces/IRuleEngineOperation.sol index 807b83b..5de9950 100644 --- a/src/interfaces/IRuleEngineOperation.sol +++ b/src/interfaces/IRuleEngineOperation.sol @@ -1,6 +1,8 @@ //SPDX-License-Identifier: MPL-2.0 pragma solidity ^0.8.20; + +/* ==== Interfaces === */ import {IRuleOperation} from "./IRuleOperation.sol"; interface IRuleEngineOperation { /** diff --git a/src/interfaces/IRuleEngineValidation.sol b/src/interfaces/IRuleEngineValidation.sol index df58cfa..2de3c33 100644 --- a/src/interfaces/IRuleEngineValidation.sol +++ b/src/interfaces/IRuleEngineValidation.sol @@ -2,6 +2,7 @@ pragma solidity ^0.8.20; +/* ==== Interfaces === */ import {IRuleValidation} from "./IRuleValidation.sol"; interface IRuleEngineValidationRead { /** diff --git a/src/interfaces/IRuleOperation.sol b/src/interfaces/IRuleOperation.sol index e64384e..c5fdf58 100644 --- a/src/interfaces/IRuleOperation.sol +++ b/src/interfaces/IRuleOperation.sol @@ -2,6 +2,7 @@ pragma solidity ^0.8.20; +/* ==== CMTAT === */ import {IERC3643IComplianceContract} from "CMTAT/interfaces/tokenization/IERC3643Partial.sol"; interface IRuleOperation is IERC3643IComplianceContract { diff --git a/src/interfaces/IRuleValidation.sol b/src/interfaces/IRuleValidation.sol index 37b61de..4d3dcbf 100644 --- a/src/interfaces/IRuleValidation.sol +++ b/src/interfaces/IRuleValidation.sol @@ -2,6 +2,7 @@ pragma solidity ^0.8.20; +/* ==== CMTAT === */ import {IERC1404Extend} from "CMTAT/interfaces/tokenization/draft-IERC1404.sol"; import {IERC7551Compliance} from "CMTAT/interfaces//tokenization/draft-IERC7551.sol"; interface IRuleValidation is IERC1404Extend, IERC7551Compliance { diff --git a/src/modules/ERC3643Compliance.sol b/src/modules/ERC3643Compliance.sol index b0938f5..5c7a5e6 100644 --- a/src/modules/ERC3643Compliance.sol +++ b/src/modules/ERC3643Compliance.sol @@ -2,9 +2,11 @@ pragma solidity ^0.8.20; -import {IERC3643Compliance} from "../interfaces/IERC3643Compliance.sol"; +/* ==== OpenZeppelin === */ import {AccessControl} from "OZ/access/AccessControl.sol"; -import "OZ/utils/structs/EnumerableSet.sol"; +import {EnumerableSet} from "OZ/utils/structs/EnumerableSet.sol"; +/* ==== Interface and other library === */ +import {IERC3643Compliance} from "../interfaces/IERC3643Compliance.sol"; abstract contract ERC3643Compliance is IERC3643Compliance, AccessControl { bytes32 public constant COMPLIANCE_MANAGER_ROLE = keccak256("COMPLIANCE_MANAGER_ROLE"); // Add the library methods diff --git a/src/modules/MetaTxModuleStandalone.sol b/src/modules/MetaTxModuleStandalone.sol index 88c1df5..4dca9a3 100644 --- a/src/modules/MetaTxModuleStandalone.sol +++ b/src/modules/MetaTxModuleStandalone.sol @@ -2,6 +2,7 @@ pragma solidity ^0.8.20; +/* ==== OpenZeppelin === */ import {ERC2771Context} from "OZ/metatx/ERC2771Context.sol"; /** diff --git a/src/modules/RuleEngineBaseModule.sol b/src/modules/RuleEngineBaseModule.sol new file mode 100644 index 0000000..f142fbe --- /dev/null +++ b/src/modules/RuleEngineBaseModule.sol @@ -0,0 +1,24 @@ +// SPDX-License-Identifier: MPL-2.0 + +pragma solidity ^0.8.20; + +/* ==== CMTAT === */ +import {IERC3643Base} from "CMTAT/interfaces/tokenization/IERC3643Partial.sol"; +abstract contract RuleEngineBaseModule is IERC3643Base { + /* ============ State Variables ============ */ + /** + * @dev + * Get the current version of the smart contract + */ + string private constant VERSION = "3.0.0"; + /* ============ Events ============ */ + /*////////////////////////////////////////////////////////////// + PUBLIC/EXTERNAL FUNCTIONS + //////////////////////////////////////////////////////////////*/ + /** + * @inheritdoc IERC3643Base + */ + function version() public view virtual override(IERC3643Base) returns (string memory version_) { + return VERSION; + } +} diff --git a/src/modules/RuleEngineOperation.sol b/src/modules/RuleEngineOperation.sol index 7bd5eaf..7de2152 100644 --- a/src/modules/RuleEngineOperation.sol +++ b/src/modules/RuleEngineOperation.sol @@ -2,10 +2,10 @@ pragma solidity ^0.8.20; -// OpenZeppelin +/* ==== OpenZeppelin === */ import {EnumerableSet} from "OZ/utils/structs/EnumerableSet.sol"; import {AccessControl} from "OZ/access/AccessControl.sol"; -// Other +/* ==== Interface and other library === */ import {IRuleEngineOperation} from "../interfaces/IRuleEngineOperation.sol"; import {IRuleOperation} from "../interfaces/IRuleOperation.sol"; import {RuleEngineInvariantStorageCommon} from "./library/RuleEngineInvariantStorageCommon.sol"; diff --git a/src/modules/RuleEngineValidation.sol b/src/modules/RuleEngineValidation.sol index 3b16c08..9f9f1ed 100644 --- a/src/modules/RuleEngineValidation.sol +++ b/src/modules/RuleEngineValidation.sol @@ -2,10 +2,10 @@ pragma solidity ^0.8.20; -// OpenZeppelin +/* ==== OpenZeppelin === */ import {AccessControl} from "OZ/access/AccessControl.sol"; -import "OZ/utils/structs/EnumerableSet.sol"; -// Other +import {EnumerableSet} from "OZ/utils/structs/EnumerableSet.sol"; +/* ==== Interface and other library === */ import {IRuleEngineValidation} from "../interfaces/IRuleEngineValidation.sol"; import {IRuleValidation} from "../interfaces/IRuleValidation.sol"; import {RuleEngineInvariantStorageCommon} from "./library/RuleEngineInvariantStorageCommon.sol"; diff --git a/src/modules/RuleEngineValidationRead.sol b/src/modules/RuleEngineValidationRead.sol index adff5fa..cd2d763 100644 --- a/src/modules/RuleEngineValidationRead.sol +++ b/src/modules/RuleEngineValidationRead.sol @@ -2,8 +2,13 @@ pragma solidity ^0.8.20; +/* ==== OpenZeppelin === */ import "OZ/access/AccessControl.sol"; + +/* ==== Modules === */ import {RuleEngineValidation} from "./RuleEngineValidation.sol"; + +/* ==== Interface and other library === */ import {IRuleEngineValidationRead} from "../interfaces/IRuleEngineValidation.sol"; import {IRuleValidation} from "../interfaces/IRuleValidation.sol"; import {IERC1404, IERC1404Extend} from "CMTAT/interfaces/tokenization/draft-IERC1404.sol"; diff --git a/test/HelperContract.sol b/test/HelperContract.sol index 4b86ac5..6dcf1fb 100644 --- a/test/HelperContract.sol +++ b/test/HelperContract.sol @@ -9,9 +9,9 @@ import {RuleEngineInvariantStorage} from "src/modules/library/RuleEngineInvarian import {RuleEngineInvariantStorageCommon} from "src/modules/library/RuleEngineInvariantStorageCommon.sol"; // RuleEngine import {RuleEngine} from "src/RuleEngine.sol"; -import {RuleEngineValidation} from "src/RuleEngine.sol"; -import {RuleEngineOperation} from "src/RuleEngine.sol"; -import {ERC3643Compliance} from "src/RuleEngine.sol"; +import {RuleEngineValidation} from "src/RuleEngineBase.sol"; +import {RuleEngineOperation} from "src/RuleEngineBase.sol"; +import {ERC3643Compliance} from "src/RuleEngineBase.sol"; // RuleConditionalTransfer import {RuleConditionalTransferLight} from "src/mocks/rules/operation/RuleConditionalTransferLight.sol"; import {RuleConditionalTransferLightInvariantStorage} from "src/mocks/rules/operation/abstract/RuleConditionalTransferLightInvariantStorage.sol"; From c9f45960a4dc8a2d51d7949dc7401141a1e3c078 Mon Sep 17 00:00:00 2001 From: Ryan Sauge <71391932+rya-sge@users.noreply.github.com> Date: Tue, 12 Aug 2025 16:21:51 +0200 Subject: [PATCH 09/17] Improve code comment --- README.md | 169 ++++++++++++++---- package-lock.json | 2 +- src/interfaces/IRuleEngineOperation.sol | 8 +- src/interfaces/IRuleEngineValidation.sol | 9 +- src/interfaces/IRuleOperation.sol | 5 +- src/modules/ERC3643Compliance.sol | 15 +- src/modules/RuleEngineOperation.sol | 80 ++++----- src/modules/RuleEngineValidation.sol | 44 +++-- .../library/RuleEngineInvariantStorage.sol | 1 + .../RuleEngineInvariantStorageCommon.sol | 2 + 10 files changed, 224 insertions(+), 111 deletions(-) diff --git a/README.md b/README.md index 8416183..496859c 100644 --- a/README.md +++ b/README.md @@ -6,33 +6,85 @@ This repository includes the RuleEngine contract for [CMTAT](https://github.com/ The RuleEngine is an external contract used to apply transfer restrictions to another contract, such as CMTAT and ERC-3643 tokens. Acting as a controller, it can call different contract rules and apply these rules on each transfer. -## Interface +## Motivation + +Why use a dedicated contract with rules instead of implementing it directly in CMTAT or ERC-3643 tokens? + +1. Flexibility: These different features are not standard and common to all tokens. From an implementation perspective, using a rule engine with custom rules allows for each issuer or contract user to decide which rules to apply. +2. Code efficiency: The CMTAT token (and generally also all ERC-3643 tokens) is currently "heavy," meaning its contract code size is close to the maximum limit. This makes it challenging to add new features directly inside the CMTAT contract. +3. Reusability: + - We can use the RuleEngine inside other contracts besides CMTAT. For instance, the RuleEngine has been used it in [our contract to distribute dividends](https://www.taurushq.com/blog/equity-tokenization-how-to-pay-dividend-on-chain-using-cmtat/). + - A same deployed `RuleEngine`can also be used with several different tokens if the rules allowed it, which is the case for all validation rule. + +## How it works + +This diagram illustrates how a transfer of CMTAT with a RuleEngine works: + + ![Engine-RuleEngine.drawio](./doc/schema/Engine-RuleEngine.drawio.png) + +1. The token holders initiate a transfer transaction on CMTAT contract. +2. The validation module inside the CMTAT calls the ERC-3643 function `transferred` from the RuleEngine if set with the following parameters inside: `from, to, value`. +3. The Rule Engine calls each rule separately. +4. If the rule returns the value 0, the RuleEngine considers the transfer authorized. If one rule returns a different value, the RuleEngine considers the transfer as not authorized and the transaction is directly reverted (no return value) stopping the transfer. + +## How to include it + +While the RuleEngine has been designed for CMTAT and ERC-3643 tokens, it can be used with other contracts to apply transfer restrictions. + +For that, the only thing to do is to import in your contract the interface `IRuleEngine`(CMTAT) or `IERC3643Compliance`(ERC-3643), which declares the corresponding functions to call by the token contract. This interface can be found [here](https://github.com/CMTA/CMTAT/blob/23a1e59f913d079d0c09d32fafbd95ab2d426093/contracts/interfaces/engine/IRuleEngine.sol). ### CMTAT -The RuleEngine base interface is defined in CMTAT reposotiry. +Before each transfer, the CMTAT calls the function `transferred` which is the entrypoint for the RuleEngine. -![surya_inheritance_IRuleEngine.sol](./doc/schema/surya_inheritance_IRuleEngine.sol.png) +For example, CMTAT defines the interaction with the RuleEngine inside a specific module, [ValidationModuleRuleEngine](https://github.com/CMTA/CMTAT/blob/master/contracts/modules/wrapper/extensions/ValidationModule/ValidationModuleRuleEngine.sol) and [CMTATBaseRuleEngine](https://github.com/CMTA/CMTAT/blob/master/contracts/modules/1_CMTATBaseRuleEngine.sol). -It inherits from several others interace: +- ValidationModuleRuleEngine +- CMTATBaseRuleEngine + + -- IERC1404 which contains ERC-1404 related functions +This function `_transferred` is called before each transfer/burn/mint through the internal function `_checkTransferred` defined in [CMTAT_BASE](https://github.com/CMTA/CMTAT/blob/23a1e59f913d079d0c09d32fafbd95ab2d426093/contracts/modules/CMTAT_BASE.sol#L198). + +### ERC-3643 + +The ERC-3643 defines several functions used as entrypoint for an ERC-3643 token. + +They are the following ```solidity - function detectTransferRestriction( - address from, - address to, - uint256 value - ) external view returns (uint8); - - function messageForTransferRestriction( - uint8 restrictionCode - ) external view returns (string memory); + // compliance check and state update + function canTransfer(address from, address to, uint256 value) external view returns (bool); + function transferred(address from, address to, uint256 value) external; + function created(address to, uint256 value) external; + function destroyed(address from, uint256 value) external; ``` +## Interface +### CMTAT -``` +The RuleEngine base interface is defined in CMTAT repository. + +![surya_inheritance_IRuleEngine.sol](./doc/schema/surya_inheritance_IRuleEngine.sol.png) + +It inherits from several others interace: + + + +```solidity +// IRuleEngine +function transferred(address spender, address from, address to, uint256 value) +external; + +// IERC-1404 +function detectTransferRestriction(address from,address to,uint256 value) +external view returns (uint8); + +function messageForTransferRestriction(uint8 restrictionCode) +external view returns (string memory); + +// IERC-1404Extend enum REJECTED_CODE_BASE { TRANSFER_OK, TRANSFER_REJECTED_DEACTIVATED, @@ -43,45 +95,79 @@ enum REJECTED_CODE_BASE { TRANSFER_REJECTED_FROM_INSUFFICIENT_ACTIVE_BALANCE } - function detectTransferRestrictionFrom( - address spender, - address from, - address to, - uint256 value - ) external view returns (uint8); +function detectTransferRestrictionFrom(address spender,address from,address to,uint256 value) +external view returns (uint8); + + +// IERC7551Compliance +function canTransferFrom(address spender,address from,address to,uint256 value) +external view returns (bool); + + +// IER3643ComplianceRead +function canTransfer(address from,address to,uint256 value) +external view returns (bool isValid); + +// IERC3643IComplianceContract +function transferred(address from, address to, uint256 value) +external; ``` -- IERC7551Compliance which includes function related to ERC-7551: +### ERC-3643 -``` - function canTransferFrom(address spender,address from,address to,uint256 value) external view returns (bool); -``` +The [ERC-3643](https://eips.ethereum.org/EIPS/eip-3643) compliance interface is defined in [IERC3643Compliance.sol](src/interfaces/IERC3643Compliance.sol). -- canTransfer -``` - function canTransfer(address from,address to,uint256 value) external view returns (bool isValid); -``` -- IERC3643IComplianceContract +A specific module implements this interface for the RuleEngine: [ERC3643Compliance.sol](src/modules/ERC3643Compliance.sol) -``` - function transferred(address from, address to, uint256 value) external; -``` -### ERC-3643 +### Contracts Description Table + +### Access Control (RBAC) +CMTAT uses a RBAC access control by using the contract `AccessControl`from OpenZeppelin. +Each module defines the roles useful to restrict its functions. +The `AccessControlModule`which is used by all base and deployment contracts override the OpenZeppelin function `hasRole`to give by default all the roles to the `admin`. + +See also [docs.openzeppelin.com - AccessControl](https://docs.openzeppelin.com/contracts/5.x/api/access#AccessControl) + +#### Role list + +Here is the list of roles and their 32 bytes identifier. + +| | Defined in | 32 bytes identifier | +| ------------------------- | -------------------------------- | ------------------------------------------------------------ | +| DEFAULT_ADMIN_ROLE | OpenZeppelin
AccessControl | 0x0000000000000000000000000000000000000000000000000000000000000000 | +| **Modules** | | | +| COMPLIANCE_MANAGER_ROLE | ERC3643Compliance | | +| RULE_ENGINE_OPERATOR_ROLE | RuleEngineInvariantStorageCommon | | + + + +#### Role by modules + +Here a summary tab for each restricted functions defined in a module +For function signatures, struct arguments are represented with their corresponding native type. + +| | Function signature | Visibility [public/external] | Input variables (Function arguments) | Output variables
(return value) | Role Required | +| -------------------- | ------------------ | ---------------------------- | ------------------------------------ | ------------------------------------ | ------------- | +| **Modules** | | | | | | +| RuleEngineOperation | | | | | | +| | `` | public | `` | - | | +| | `` | public | `` | - | | +| RuleEngineValidation | | | | | | ## Dependencies @@ -157,18 +243,23 @@ If we need a new on, we just issue a new one, and set inside the CMTAT token (or ### Urgency mechanism -- Pause +### Pause + +There are no functionalities to put in pause the contracts. -There are no functionalities to put in pause the contracts. +The RuleEngine can be removed from the main token contract by calling the dedicated function -* Kill / Deactivate the contracts +- CMTAT v3.0.0: `setRuleEngine(address ruleEngine)` +- ERC-3643 token: `setCompliance(address _compliance)` + +### Kill / Deactivate the contracts There are no functionalities to kill/deactivate the contracts. +Similar to the pause functionality, the RuleEngine can be directly removed from the main token contract -### Gasless support (ERC-2771) -> The gasless integration was not part of the audit performed by ABDK on the version [1.0.1](https://github.com/CMTA/RuleEngine/releases/tag/1.0.1) +### Gasless support (ERC-2771) The RuleEngine contracts and the other rules support client-side gasless transactions using the [Gas Station Network](https://docs.opengsn.org/#the-problem) (GSN) pattern, the main open standard for transfering fee payment to another account than that of the transaction issuer. The contract uses the OpenZeppelin contract `ERC2771Context`, which allows a contract to get the original client with `_msgSender()` instead of the fee payer given by `msg.sender` . diff --git a/package-lock.json b/package-lock.json index 755c254..05686eb 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,5 +1,5 @@ { - "name": "RuleEngine", + "name": "RuleEngineNew", "lockfileVersion": 2, "requires": true, "packages": { diff --git a/src/interfaces/IRuleEngineOperation.sol b/src/interfaces/IRuleEngineOperation.sol index 5de9950..8ce9bbb 100644 --- a/src/interfaces/IRuleEngineOperation.sol +++ b/src/interfaces/IRuleEngineOperation.sol @@ -59,12 +59,16 @@ interface IRuleEngineOperation { * @notice Remove a rule from the array of rules * Revert if the rule found at the specified index does not match the rule in argument * @param rule_ address of the target rule - * @dev To reduce the array size, the last rule is moved to the location occupied - * by the rule to remove * * */ function removeRuleOperation( IRuleOperation rule_ ) external; + + /** + * @notice Check if a rule is present + * + */ + function ruleOperationIsPresent(IRuleOperation rule_) external returns (bool); } diff --git a/src/interfaces/IRuleEngineValidation.sol b/src/interfaces/IRuleEngineValidation.sol index 2de3c33..8f5384a 100644 --- a/src/interfaces/IRuleEngineValidation.sol +++ b/src/interfaces/IRuleEngineValidation.sol @@ -34,8 +34,11 @@ interface IRuleEngineValidationRead { } interface IRuleEngineValidation { - /** - * @dev define the rules, the precedent rules will be overwritten + /** + * @notice Set all the rules, will overwrite all the previous rules. \n + * Revert if one rule is a zero address or if the rule is already present + * @dev take address[] instead of IRuleEngineValidation[] since it is not possible to cast IRuleEngineValidation[] -> address[] + * */ function setRulesValidation(IRuleValidation[] calldata rules_) external; @@ -89,5 +92,5 @@ interface IRuleEngineValidation { * @notice Check if a rule is present * */ - function rulesValidationIsPresent(IRuleValidation rule_) external returns (bool); + function ruleValidationIsPresent(IRuleValidation rule_) external returns (bool); } diff --git a/src/interfaces/IRuleOperation.sol b/src/interfaces/IRuleOperation.sol index c5fdf58..c5cf861 100644 --- a/src/interfaces/IRuleOperation.sol +++ b/src/interfaces/IRuleOperation.sol @@ -4,6 +4,7 @@ pragma solidity ^0.8.20; /* ==== CMTAT === */ import {IERC3643IComplianceContract} from "CMTAT/interfaces/tokenization/IERC3643Partial.sol"; - -interface IRuleOperation is IERC3643IComplianceContract { +/* ==== Interfaces === */ +import {IRuleValidation} from "./IRuleValidation.sol"; +interface IRuleOperation is IERC3643IComplianceContract, IRuleValidation { } diff --git a/src/modules/ERC3643Compliance.sol b/src/modules/ERC3643Compliance.sol index 5c7a5e6..09d6529 100644 --- a/src/modules/ERC3643Compliance.sol +++ b/src/modules/ERC3643Compliance.sol @@ -8,19 +8,22 @@ import {EnumerableSet} from "OZ/utils/structs/EnumerableSet.sol"; /* ==== Interface and other library === */ import {IERC3643Compliance} from "../interfaces/IERC3643Compliance.sol"; abstract contract ERC3643Compliance is IERC3643Compliance, AccessControl { - bytes32 public constant COMPLIANCE_MANAGER_ROLE = keccak256("COMPLIANCE_MANAGER_ROLE"); - // Add the library methods + /* ==== Type declaration === */ using EnumerableSet for EnumerableSet.AddressSet; - // Errors + /* ==== State Variables === */ + // Token binding tracking + EnumerableSet.AddressSet private _boundTokens; + // Access Control + bytes32 public constant COMPLIANCE_MANAGER_ROLE = keccak256("COMPLIANCE_MANAGER_ROLE"); + + /* ==== Errors === */ error RuleEngine_ERC3643Compliance_NotComplianceManager(); error RuleEngine_ERC3643Compliance_InvalidTokenAddress(); error RuleEngine_ERC3643Compliance_TokenAlreadyBound(); error RuleEngine_ERC3643Compliance_TokenNotBound(); error RuleEngine_ERC3643Compliance_UnauthorizedCaller(); - // Token binding tracking - EnumerableSet.AddressSet private _boundTokens; - + /* ==== Modifier === */ modifier onlyBoundToken() { if (!_boundTokens.contains(_msgSender())) { revert RuleEngine_ERC3643Compliance_UnauthorizedCaller(); diff --git a/src/modules/RuleEngineOperation.sol b/src/modules/RuleEngineOperation.sol index 7de2152..133407b 100644 --- a/src/modules/RuleEngineOperation.sol +++ b/src/modules/RuleEngineOperation.sol @@ -17,9 +17,14 @@ abstract contract RuleEngineOperation is RuleEngineInvariantStorageCommon, IRuleEngineOperation { - // Add the library methods + /* ==== Type declaration === */ using EnumerableSet for EnumerableSet.AddressSet; + /* ==== State Variables === */ + /// @dev Array of rules + EnumerableSet.AddressSet internal _rulesOperation; + + /* ============ Events ============ */ /// @notice Generate when a rule is added event AddRuleOperation(IRuleOperation indexed rule); /// @notice Generate when a rule is removed @@ -28,23 +33,19 @@ abstract contract RuleEngineOperation is event ClearRulesOperation(); - // Declare a set state variable - /// @dev Array of rules - EnumerableSet.AddressSet internal _rulesOperation; /*////////////////////////////////////////////////////////////// PUBLIC/EXTERNAL FUNCTIONS //////////////////////////////////////////////////////////////*/ /* ============ State functions ============ */ + /** - * @notice Set all the rules, will overwrite all the previous rules. \n - * Revert if one rule is a zero address or if the rule is already present - * - */ + * @inheritdoc IRuleEngineOperation + */ function setRulesOperation( IRuleOperation[] calldata rules_ - ) public virtual onlyRole(RULE_ENGINE_OPERATOR_ROLE) { + ) public virtual override(IRuleEngineOperation) onlyRole(RULE_ENGINE_OPERATOR_ROLE) { if (rules_.length == 0) { revert RuleEngine_ArrayIsEmpty(); } @@ -60,76 +61,67 @@ abstract contract RuleEngineOperation is } /** - * @notice Clear all the rules of the array of rules - * - */ - function clearRulesOperation() public virtual onlyRole(RULE_ENGINE_OPERATOR_ROLE) { + * @inheritdoc IRuleEngineOperation + */ + function clearRulesOperation() public virtual override(IRuleEngineOperation) onlyRole(RULE_ENGINE_OPERATOR_ROLE) { _clearRulesOperation(); } - /** - * @notice Add a rule to the array of rules - * Revert if one rule is a zero address or if the rule is already present - * - */ + * @inheritdoc IRuleEngineOperation + */ function addRuleOperation( IRuleOperation rule_ - ) public virtual onlyRole(RULE_ENGINE_OPERATOR_ROLE) { + ) public virtual override(IRuleEngineOperation) onlyRole(RULE_ENGINE_OPERATOR_ROLE) { _checkRule(address(rule_)); _rulesOperation.add(address(rule_)); emit AddRuleOperation(rule_); } - /** - * @notice Remove a rule from the array of rules - * Revert if the rule found at the specified index does not match the rule in argument - * @param rule_ address of the target rule - * @dev To reduce the array size, the last rule is moved to the location occupied - * by the rule to remove - * - * - */ + /** + * @inheritdoc IRuleEngineOperation + */ function removeRuleOperation( IRuleOperation rule_ - ) public virtual onlyRole(RULE_ENGINE_OPERATOR_ROLE) { - require(rulesOperationIsPresent(rule_), RuleEngine_RuleDoNotMatch()); + ) public virtual override(IRuleEngineOperation) onlyRole(RULE_ENGINE_OPERATOR_ROLE) { + require(_rulesOperation.contains(address(rule_)), RuleEngine_RuleDoNotMatch()); _removeRuleOperation(rule_); } /* ============ View functions ============ */ - /** - * @return The number of rules inside the array - */ - function rulesCountOperation() public view virtual override returns (uint256) { + + /** + * @inheritdoc IRuleEngineOperation + */ + function rulesCountOperation() public view virtual override(IRuleEngineOperation) returns (uint256) { return _rulesOperation.length(); } - function rulesOperationIsPresent(IRuleOperation rule_) public view virtual returns (bool){ + /** + * @inheritdoc IRuleEngineOperation + */ + function ruleOperationIsPresent(IRuleOperation rule_) public view virtual override(IRuleEngineOperation) returns (bool){ return _rulesOperation.contains(address(rule_)); } /** - * @notice Get the rule at the position specified by ruleId - * @param ruleId index of the rule - * @return a rule address - */ + * @inheritdoc IRuleEngineOperation + */ function ruleOperation( uint256 ruleId - ) public view virtual override returns (address) { + ) public view virtual override(IRuleEngineOperation) returns (address) { return _rulesOperation.at(ruleId); } /** - * @notice Get all the rules - * @return An array of rules - */ + * @inheritdoc IRuleEngineOperation + */ function rulesOperation() public view virtual - override + override(IRuleEngineOperation) returns (address[] memory) { return _rulesOperation.values(); diff --git a/src/modules/RuleEngineValidation.sol b/src/modules/RuleEngineValidation.sol index 9f9f1ed..7956a16 100644 --- a/src/modules/RuleEngineValidation.sol +++ b/src/modules/RuleEngineValidation.sol @@ -15,12 +15,13 @@ abstract contract RuleEngineValidation is IRuleEngineValidation, RuleEngineInvariantStorageCommon { - // Add the library methods + /* ==== Type declaration === */ using EnumerableSet for EnumerableSet.AddressSet; - // Declare a set state variable + /* ==== State Variables === */ EnumerableSet.AddressSet internal _rulesValidation; + /* ============ Events ============ */ /// @notice Generate when a rule is added event AddRuleValidation(IRuleValidation indexed rule); /// @notice Generate when a rule is removed @@ -32,12 +33,10 @@ abstract contract RuleEngineValidation is PUBLIC/EXTERNAL FUNCTIONS //////////////////////////////////////////////////////////////*/ /* ============ State functions ============ */ + /** - * @notice Set all the rules, will overwrite all the previous rules. \n - * Revert if one rule is a zero address or if the rule is already present - * @dev take address[] instead of IRuleEngineValidation[] since it is not possible to cast IRuleEngineValidation[] -> address[] - * - */ + * @inheritdoc IRuleEngineValidation + */ function setRulesValidation( IRuleValidation[] calldata rules_ ) public virtual override(IRuleEngineValidation) onlyRole(RULE_ENGINE_OPERATOR_ROLE) { @@ -56,12 +55,17 @@ abstract contract RuleEngineValidation is } - + /** + * @inheritdoc IRuleEngineValidation + */ function clearRulesValidation() public virtual override(IRuleEngineValidation) onlyRole(RULE_ENGINE_OPERATOR_ROLE) { _clearRulesValidation(); } + /** + * @inheritdoc IRuleEngineValidation + */ function addRuleValidation( IRuleValidation rule_ ) public virtual override(IRuleEngineValidation) onlyRole(RULE_ENGINE_OPERATOR_ROLE) { @@ -71,27 +75,37 @@ abstract contract RuleEngineValidation is } + /** + * @inheritdoc IRuleEngineValidation + */ function removeRuleValidation( IRuleValidation rule_ ) public virtual override(IRuleEngineValidation) onlyRole(RULE_ENGINE_OPERATOR_ROLE) { - require(rulesValidationIsPresent(rule_), RuleEngine_RuleDoNotMatch()); + require(_rulesValidation.contains(address(rule_)), RuleEngine_RuleDoNotMatch()); _removeRuleValidation(rule_); } /* ============ View functions ============ */ - function rulesValidationIsPresent(IRuleValidation rule_) public view virtual override(IRuleEngineValidation) returns (bool){ + /** + * @inheritdoc IRuleEngineValidation + */ + function ruleValidationIsPresent(IRuleValidation rule_) public view virtual override(IRuleEngineValidation) returns (bool){ return _rulesValidation.contains(address(rule_)); } - - + /** + * @inheritdoc IRuleEngineValidation + */ function rulesCountValidation() public view virtual override(IRuleEngineValidation) returns (uint256) { return _rulesValidation.length(); } - + + /** + * @inheritdoc IRuleEngineValidation + */ function ruleValidation( uint256 ruleId ) public view virtual override(IRuleEngineValidation) returns (address) { @@ -99,7 +113,9 @@ abstract contract RuleEngineValidation is } - + /** + * @inheritdoc IRuleEngineValidation + */ function rulesValidation() public view diff --git a/src/modules/library/RuleEngineInvariantStorage.sol b/src/modules/library/RuleEngineInvariantStorage.sol index eeaa449..ca55295 100644 --- a/src/modules/library/RuleEngineInvariantStorage.sol +++ b/src/modules/library/RuleEngineInvariantStorage.sol @@ -3,6 +3,7 @@ pragma solidity ^0.8.20; abstract contract RuleEngineInvariantStorage { + /* ==== Errors === */ error RuleEngine_AdminWithAddressZeroNotAllowed(); error RuleEngine_InvalidTransfer(address from, address to, uint256 value); } diff --git a/src/modules/library/RuleEngineInvariantStorageCommon.sol b/src/modules/library/RuleEngineInvariantStorageCommon.sol index 175f721..545d501 100644 --- a/src/modules/library/RuleEngineInvariantStorageCommon.sol +++ b/src/modules/library/RuleEngineInvariantStorageCommon.sol @@ -3,11 +3,13 @@ pragma solidity ^0.8.20; abstract contract RuleEngineInvariantStorageCommon { + /* ==== Errors === */ error RuleEngine_RuleAddressZeroNotAllowed(); error RuleEngine_RuleAlreadyExists(); error RuleEngine_RuleDoNotMatch(); error RuleEngine_ArrayIsEmpty(); + /* ==== Constant === */ /// @notice Role to manage the ruleEngine bytes32 public constant RULE_ENGINE_OPERATOR_ROLE = keccak256("RULE_ENGINE_OPERATOR_ROLE"); From 41f7ececa9511a777a9c375a5083d5f5ceab1d9d Mon Sep 17 00:00:00 2001 From: Ryan Sauge <71391932+rya-sge@users.noreply.github.com> Date: Fri, 15 Aug 2025 10:09:11 +0200 Subject: [PATCH 10/17] Update role value, improve doc, update library --- README.md | 811 ++- RuleEngine.sol | 4973 +++++++++++++++++ classDiagram.svg | 1458 +++++ coverage/amber.png | Bin 141 -> 0 bytes coverage/emerald.png | Bin 141 -> 0 bytes coverage/gcov.css | 519 -- coverage/glass.png | Bin 167 -> 0 bytes coverage/index-sort-b.html | 119 - coverage/index-sort-f.html | 119 - coverage/index-sort-l.html | 119 - coverage/index.html | 119 - coverage/ruby.png | Bin 141 -> 0 bytes coverage/snow.png | Bin 141 -> 0 bytes coverage/src/RuleEngine.sol.func-sort-c.html | 137 - coverage/src/RuleEngine.sol.func.html | 137 - coverage/src/RuleEngine.sol.gcov.html | 384 -- coverage/src/index-sort-b.html | 107 - coverage/src/index-sort-f.html | 107 - coverage/src/index-sort-l.html | 107 - coverage/src/index.html | 107 - .../ERC3643Compliance.sol.func-sort-c.html | 113 - .../modules/ERC3643Compliance.sol.func.html | 113 - .../modules/ERC3643Compliance.sol.gcov.html | 167 - .../RuleEngineOperation.sol.func-sort-c.html | 129 - .../modules/RuleEngineOperation.sol.func.html | 129 - .../modules/RuleEngineOperation.sol.gcov.html | 275 - .../RuleEngineValidation.sol.func-sort-c.html | 125 - .../RuleEngineValidation.sol.func.html | 125 - .../RuleEngineValidation.sol.gcov.html | 254 - ...eEngineValidationRead.sol.func-sort-c.html | 97 - .../RuleEngineValidationRead.sol.func.html | 97 - .../RuleEngineValidationRead.sol.gcov.html | 185 - coverage/src/modules/index-sort-b.html | 143 - coverage/src/modules/index-sort-f.html | 143 - coverage/src/modules/index-sort-l.html | 143 - coverage/src/modules/index.html | 143 - coverage/updown.png | Bin 117 -> 0 bytes doc/TOOLCHAIN.md | 9 - doc/codelist.md | 20 - doc/functionalities.odt | Bin 36011 -> 0 bytes doc/functionalities.pdf | Bin 31278 -> 0 bytes doc/other/CMTAT/checkTransferred.png | Bin 0 -> 50568 bytes doc/other/CMTAT/transferred.png | Bin 0 -> 79290 bytes doc/schema/Engine-RuleEngine.drawio.png | Bin 208724 -> 0 bytes doc/schema/RuleEngine | 1 - doc/schema/RuleEngine.drawio | 1 + doc/schema/RuleEngine.drawio.png | Bin 0 -> 47811 bytes doc/schema/RuleEngine.png | Bin 97335 -> 0 bytes doc/schema/RuleEngine.svg | 596 -- doc/schema/classDiagram.svg | 2232 +++++--- ...tat_surya_inheritance_IRuleEngine.sol.png} | Bin .../rule/IncomeVault-claimDividend.drawio.png | Bin 100066 -> 0 bytes .../conditionalTransfer-Storage.drawio.png | Bin 89794 -> 0 bytes ...ionalTransfer-automaticTransfer.drawio.png | Bin 83764 -> 0 bytes ...nditionalTransfer-state machine.drawio.png | Bin 53914 -> 0 bytes doc/schema/rule/conditionalTransfer.drawio | 1 - .../rule/conditionalTransferCMTAT.drawio.png | Bin 84882 -> 0 bytes doc/schema/rule/conditionalTransferTime.png | Bin 29921 -> 0 bytes doc/schema/rule/ruleWhitelistWrapper.drawio | 1 - .../rule/ruleWhitelistWrapper.drawio.png | Bin 53602 -> 0 bytes .../rule/ruleWhitelistWrapperV2.drawio.png | Bin 111165 -> 0 bytes ...urya_graph_ERC3643ComplianceModule.sol.png | Bin 0 -> 199776 bytes .../surya_graph_IERC3643Compliance.sol.png | Bin 0 -> 51370 bytes .../surya_graph/surya_graph_IRule.sol.png | Bin 0 -> 19645 bytes ...surya_graph_IRulesManagementModule.sol.png | Bin 0 -> 50444 bytes ...surya_graph_MetaTxModuleStandalone.sol.png | Bin .../surya_graph_RuleAddressList.sol.png | Bin ...urya_graph_RuleAddressListInternal.sol.png | Bin ...ph_RuleAddressListInvariantStorage.sol.png | Bin ...raph_RuleBlacklistInvariantStorage.sol.png | Bin ...a_graph_RuleCommonInvariantStorage.sol.png | Bin ...graph_RuleConditionalTransferLight.sol.png | Bin 0 -> 107865 bytes ...onalTransferLightInvariantStorage.sol.png} | Bin .../surya_graph_RuleEngine.sol.png | Bin 0 -> 91902 bytes .../surya_graph_RuleEngineBase.sol.png | Bin 0 -> 122782 bytes ...a_graph_RuleEngineInvariantStorage.sol.png | Bin .../surya_graph_RuleOperationRevert.sol.png | Bin 0 -> 68741 bytes .../surya_graph_RuleWhitelist.sol.png | Bin 0 -> 70966 bytes .../surya_graph_RuleWhitelistCommon.sol.png | Bin ...raph_RuleWhitelistInvariantStorage.sol.png | Bin .../surya_graph_RulesManagementModule.sol.png | Bin 0 -> 286307 bytes ...sManagementModuleInvariantStorage.sol.png} | Bin .../surya_graph_VersionModule.sol.png | Bin 0 -> 12663 bytes ...nheritance_ERC3643ComplianceModule.sol.png | Bin 0 -> 20713 bytes ...rya_inheritance_IERC3643Compliance.sol.png | Bin 0 -> 21438 bytes .../surya_inheritance_IRule.sol.png | Bin 0 -> 7961 bytes ...inheritance_IRulesManagementModule.sol.png | Bin 0 -> 6843 bytes ...inheritance_MetaTxModuleStandalone.sol.png | Bin .../surya_inheritance_RuleAddressList.sol.png | Bin ...nheritance_RuleAddressListInternal.sol.png | Bin ...ce_RuleAddressListInvariantStorage.sol.png | Bin ...ance_RuleBlacklistInvariantStorage.sol.png | Bin ...ritance_RuleCommonInvariantStorage.sol.png | Bin ...tance_RuleConditionalTransferLight.sol.png | Bin 0 -> 26255 bytes ...ionalTransferLightInvariantStorage.sol.png | Bin 0 -> 16885 bytes .../surya_inheritance_RuleEngine.sol.png | Bin 0 -> 18472 bytes .../surya_inheritance_RuleEngineBase.sol.png | Bin 0 -> 36333 bytes ...ritance_RuleEngineInvariantStorage.sol.png | Bin ...ya_inheritance_RuleOperationRevert.sol.png | Bin 0 -> 22557 bytes .../surya_inheritance_RuleWhitelist.sol.png | Bin ...ya_inheritance_RuleWhitelistCommon.sol.png | Bin 0 -> 18570 bytes ...ance_RuleWhitelistInvariantStorage.sol.png | Bin ..._inheritance_RulesManagementModule.sol.png | Bin 0 -> 26273 bytes ...esManagementModuleInvariantStorage.sol.png | Bin 0 -> 8186 bytes .../surya_inheritance_VersionModule.sol.png | Bin 0 -> 10895 bytes ...rya_report_ERC3643ComplianceModule.sol.md} | 15 +- .../surya_report_IERC3643Compliance.sol.md | 33 + .../surya_report/surya_report_IRule.sol.md} | 4 +- ...surya_report_IRulesManagementModule.sol.md | 34 + ...surya_report_MetaTxModuleStandalone.sol.md | 2 +- .../surya_report_RuleAddressList.sol.md | 2 +- ...urya_report_RuleAddressListInternal.sol.md | 2 +- ...ort_RuleAddressListInvariantStorage.sol.md | 2 +- ...eport_RuleBlacklistInvariantStorage.sol.md | 2 +- ...a_report_RuleCommonInvariantStorage.sol.md | 2 +- ...eport_RuleConditionalTransferLight.sol.md} | 22 +- ...ionalTransferLightInvariantStorage.sol.md} | 4 +- .../surya_report_RuleEngine.sol.md} | 6 +- .../surya_report_RuleEngineBase.sol.md | 36 + ...a_report_RuleEngineInvariantStorage.sol.md | 2 +- .../surya_report_RuleOperationRevert.sol.md} | 10 +- .../surya_report_RuleWhitelist.sol.md | 7 +- .../surya_report_RuleWhitelistCommon.sol.md | 4 +- ...eport_RuleWhitelistInvariantStorage.sol.md | 2 +- .../surya_report_RulesManagementModule.sol.md | 39 + ...esManagementModuleInvariantStorage.sol.md} | 5 +- .../surya_report_VersionModule.sol.md} | 5 +- .../vscode-uml/ERC3643ComplianceModuleUML.png | Bin 0 -> 136700 bytes doc/schema/vscode-uml/IERC1404ExtendUML.png | Bin 0 -> 46283 bytes doc/schema/vscode-uml/IERC1404UML.png | Bin 0 -> 24573 bytes .../vscode-uml/IERC3643ComplianceReadUML.png | Bin 0 -> 17029 bytes .../IERC3643IComplianceContractUML.png | Bin 0 -> 17220 bytes .../vscode-uml/IERC7551ComplianceUML.png | Bin 0 -> 37332 bytes doc/schema/vscode-uml/IRuleEngineUML.png | Bin 0 -> 65716 bytes doc/schema/vscode-uml/RuleEngineBaseUML.png | Bin 0 -> 134826 bytes doc/schema/vscode-uml/RuleEngineUML.png | Bin 0 -> 66509 bytes .../vscode-uml/RuleManagementModuleUML.png | Bin 0 -> 183204 bytes doc/schema/vscode-uml/VersionModuleUML.png | Bin 0 -> 32198 bytes .../access-control-RuleEngine.png | Bin 30462 -> 52379 bytes ...access-control-RuleSanctionList.drawio.png | Bin 24610 -> 0 bytes .../access-control-RuleWhitelist.png | Bin 41965 -> 0 bytes .../accessControl/access-control.drawio | 2 +- doc/security/audits/tools/aderyn-report.md | 299 + doc/security/audits/tools/slither-report.md | 630 +-- .../surya_graph_IRuleEngineOperation.sol.png | Bin 39826 -> 0 bytes .../surya_graph_IRuleEngineValidation.sol.png | Bin 60403 -> 0 bytes .../surya_graph_IRuleOperation.sol.png | Bin 20896 -> 0 bytes .../surya_graph_IRuleValidation.sol.png | Bin 20715 -> 0 bytes .../surya_graph_RuleBlacklist.sol.png | Bin 43182 -> 0 bytes ...urya_graph_RuleConditionalTransfer.sol.png | Bin 446424 -> 0 bytes ...ph_RuleConditionalTransferOperator.sol.png | Bin 360699 -> 0 bytes .../surya_graph_RuleEngine.sol.png | Bin 193554 -> 0 bytes .../surya_graph_RuleEngineOperation.sol.png | Bin 127575 -> 0 bytes .../surya_graph_RuleEngineValidation.sol.png | Bin 29066 -> 0 bytes ...a_graph_RuleEngineValidationCommon.sol.png | Bin 132775 -> 0 bytes .../surya_graph_RuleInternal.sol.png | Bin 87221 -> 0 bytes .../surya_graph_RuleSanctionList.sol.png | Bin 203676 -> 0 bytes .../surya_graph_RuleValidateTransfer.sol.png | Bin 22927 -> 0 bytes .../surya_graph_RuleWhitelist.sol.png | Bin 27681 -> 0 bytes .../surya_graph_RuleWhitelistWrapper.sol.png | Bin 132320 -> 0 bytes ...a_inheritance_IRuleEngineOperation.sol.png | Bin 6484 -> 0 bytes ..._inheritance_IRuleEngineValidation.sol.png | Bin 10994 -> 0 bytes .../surya_inheritance_IRuleOperation.sol.png | Bin 5311 -> 0 bytes .../surya_inheritance_IRuleValidation.sol.png | Bin 11676 -> 0 bytes .../surya_inheritance_RuleBlacklist.sol.png | Bin 25450 -> 0 bytes ...nheritance_RuleConditionalTransfer.sol.png | Bin 32364 -> 0 bytes ...onditionalTransferInvariantStorage.sol.png | Bin 16328 -> 0 bytes ...ce_RuleConditionalTransferOperator.sol.png | Bin 21956 -> 0 bytes .../surya_inheritance_RuleEngine.sol.png | Bin 29248 -> 0 bytes ...ya_inheritance_RuleEngineOperation.sol.png | Bin 23797 -> 0 bytes ...a_inheritance_RuleEngineValidation.sol.png | Bin 36633 -> 0 bytes ...ritance_RuleEngineValidationCommon.sol.png | Bin 25911 -> 0 bytes .../surya_inheritance_RuleInternal.sol.png | Bin 12167 -> 0 bytes ...surya_inheritance_RuleSanctionList.sol.png | Bin 32931 -> 0 bytes ...e_RuleSanctionListInvariantStorage.sol.png | Bin 15225 -> 0 bytes ...a_inheritance_RuleValidateTransfer.sol.png | Bin 11664 -> 0 bytes ...ya_inheritance_RuleWhitelistCommon.sol.png | Bin 21618 -> 0 bytes ...a_inheritance_RuleWhitelistWrapper.sol.png | Bin 27537 -> 0 bytes .../surya_report_IRuleEngineValidation.sol.md | 34 - ...urya_report_RuleConditionalTransfer.sol.md | 44 - ...ort_RuleConditionalTransferOperator.sol.md | 46 - .../surya_report_RuleEngine.sol.md | 35 - .../surya_report_RuleEngineOperation.sol.md | 37 - .../surya_report_RuleEngineValidation.sol.md | 28 - ...a_report_RuleEngineValidationCommon.sol.md | 36 - .../surya_report_RuleInternal.sol.md | 30 - .../surya_report_RuleValidateTransfer.sol.md | 27 - doc/technical/RuleBlacklist.md | 49 - doc/technical/RuleConditionalTransfer.md | 191 - doc/technical/RuleEngine.md | 58 - doc/technical/RuleSanctionList.md | 38 - doc/technical/RuleWhitelist.md | 50 - doc/technical/RuleWhitelistWrapper.md | 32 - lcov.info | 593 +- lib/CMTAT | 2 +- lib/forge-std | 2 +- lib/openzeppelin-contracts | 2 +- script/CMTATWithRuleEngineScript.s.sol | 5 +- script/RuleEngineScript.s.sol | 5 +- src/RuleEngineBase.sol | 181 +- src/interfaces/IERC3643Compliance.sol | 69 +- src/interfaces/IRule.sol | 16 + src/interfaces/IRuleEngineOperation.sol | 74 - src/interfaces/IRuleEngineValidation.sol | 96 - src/interfaces/IRuleOperation.sol | 10 - src/interfaces/IRuleValidation.sol | 23 - src/interfaces/IRulesManagementModule.sol | 73 + .../RuleConditionalTransferLight.sol | 41 +- .../rules/operation/RuleOperationRevert.sol | 36 +- src/mocks/rules/validation/RuleWhitelist.sol | 40 + .../RuleSanctionListInvariantStorage.sol | 32 - .../abstract/RuleValidateTransfer.sol | 35 - .../abstract/RuleWhitelistCommon.sol | 6 +- ...liance.sol => ERC3643ComplianceModule.sol} | 17 +- src/modules/RuleEngineOperation.sol | 188 - src/modules/RuleEngineValidation.sol | 165 - src/modules/RuleEngineValidationRead.sol | 105 - src/modules/RulesManagementModule.sol | 204 + ...EngineBaseModule.sol => VersionModule.sol} | 2 +- .../library/RuleEngineInvariantStorage.sol | 1 - .../RuleEngineInvariantStorageCommon.sol | 16 - .../RulesManagementModuleInvariantStorage.sol | 28 + test/HelperContract.sol | 13 +- .../AccessControl/RuleEngineAccessControl.sol | 36 +- .../RuleEngineAccessControlOZ.t.sol | 38 +- test/RuleEngine/ERC3643Compliance.t.sol | 8 +- test/RuleEngine/RuleEngineDeployment.t.sol | 14 +- .../CMTATIntegration.t.sol | 6 +- .../RuleEngineOperation.t.sol | 256 +- .../RuleEngineOperationRevert.t.sol | 4 +- .../RuleEngineRestriction.t.sol | 8 +- ...iction.t.sol => RuleEngineRestriction.sol} | 34 +- ...idation.t.sol => RuleEngineValidation.sol} | 243 +- test/RuleWhitelist/CMTATIntegration.t.sol | 59 +- 234 files changed, 10138 insertions(+), 9119 deletions(-) create mode 100644 RuleEngine.sol create mode 100644 classDiagram.svg delete mode 100644 coverage/amber.png delete mode 100644 coverage/emerald.png delete mode 100644 coverage/gcov.css delete mode 100644 coverage/glass.png delete mode 100644 coverage/index-sort-b.html delete mode 100644 coverage/index-sort-f.html delete mode 100644 coverage/index-sort-l.html delete mode 100644 coverage/index.html delete mode 100644 coverage/ruby.png delete mode 100644 coverage/snow.png delete mode 100644 coverage/src/RuleEngine.sol.func-sort-c.html delete mode 100644 coverage/src/RuleEngine.sol.func.html delete mode 100644 coverage/src/RuleEngine.sol.gcov.html delete mode 100644 coverage/src/index-sort-b.html delete mode 100644 coverage/src/index-sort-f.html delete mode 100644 coverage/src/index-sort-l.html delete mode 100644 coverage/src/index.html delete mode 100644 coverage/src/modules/ERC3643Compliance.sol.func-sort-c.html delete mode 100644 coverage/src/modules/ERC3643Compliance.sol.func.html delete mode 100644 coverage/src/modules/ERC3643Compliance.sol.gcov.html delete mode 100644 coverage/src/modules/RuleEngineOperation.sol.func-sort-c.html delete mode 100644 coverage/src/modules/RuleEngineOperation.sol.func.html delete mode 100644 coverage/src/modules/RuleEngineOperation.sol.gcov.html delete mode 100644 coverage/src/modules/RuleEngineValidation.sol.func-sort-c.html delete mode 100644 coverage/src/modules/RuleEngineValidation.sol.func.html delete mode 100644 coverage/src/modules/RuleEngineValidation.sol.gcov.html delete mode 100644 coverage/src/modules/RuleEngineValidationRead.sol.func-sort-c.html delete mode 100644 coverage/src/modules/RuleEngineValidationRead.sol.func.html delete mode 100644 coverage/src/modules/RuleEngineValidationRead.sol.gcov.html delete mode 100644 coverage/src/modules/index-sort-b.html delete mode 100644 coverage/src/modules/index-sort-f.html delete mode 100644 coverage/src/modules/index-sort-l.html delete mode 100644 coverage/src/modules/index.html delete mode 100644 coverage/updown.png delete mode 100644 doc/codelist.md delete mode 100644 doc/functionalities.odt delete mode 100644 doc/functionalities.pdf create mode 100644 doc/other/CMTAT/checkTransferred.png create mode 100644 doc/other/CMTAT/transferred.png delete mode 100644 doc/schema/Engine-RuleEngine.drawio.png delete mode 100644 doc/schema/RuleEngine create mode 100644 doc/schema/RuleEngine.drawio create mode 100644 doc/schema/RuleEngine.drawio.png delete mode 100644 doc/schema/RuleEngine.png delete mode 100644 doc/schema/RuleEngine.svg rename doc/schema/{surya_inheritance_IRuleEngine.sol.png => cmtat_surya_inheritance_IRuleEngine.sol.png} (100%) delete mode 100644 doc/schema/rule/IncomeVault-claimDividend.drawio.png delete mode 100644 doc/schema/rule/conditionalTransfer-Storage.drawio.png delete mode 100644 doc/schema/rule/conditionalTransfer-automaticTransfer.drawio.png delete mode 100644 doc/schema/rule/conditionalTransfer-state machine.drawio.png delete mode 100644 doc/schema/rule/conditionalTransfer.drawio delete mode 100644 doc/schema/rule/conditionalTransferCMTAT.drawio.png delete mode 100644 doc/schema/rule/conditionalTransferTime.png delete mode 100644 doc/schema/rule/ruleWhitelistWrapper.drawio delete mode 100644 doc/schema/rule/ruleWhitelistWrapper.drawio.png delete mode 100644 doc/schema/rule/ruleWhitelistWrapperV2.drawio.png create mode 100644 doc/schema/surya/surya_graph/surya_graph_ERC3643ComplianceModule.sol.png create mode 100644 doc/schema/surya/surya_graph/surya_graph_IERC3643Compliance.sol.png create mode 100644 doc/schema/surya/surya_graph/surya_graph_IRule.sol.png create mode 100644 doc/schema/surya/surya_graph/surya_graph_IRulesManagementModule.sol.png rename doc/{ => schema}/surya/surya_graph/surya_graph_MetaTxModuleStandalone.sol.png (100%) rename doc/{ => schema}/surya/surya_graph/surya_graph_RuleAddressList.sol.png (100%) rename doc/{ => schema}/surya/surya_graph/surya_graph_RuleAddressListInternal.sol.png (100%) rename doc/{ => schema}/surya/surya_graph/surya_graph_RuleAddressListInvariantStorage.sol.png (100%) rename doc/{ => schema}/surya/surya_graph/surya_graph_RuleBlacklistInvariantStorage.sol.png (100%) rename doc/{ => schema}/surya/surya_graph/surya_graph_RuleCommonInvariantStorage.sol.png (100%) create mode 100644 doc/schema/surya/surya_graph/surya_graph_RuleConditionalTransferLight.sol.png rename doc/{surya/surya_graph/surya_graph_RuleConditionalTransferInvariantStorage.sol.png => schema/surya/surya_graph/surya_graph_RuleConditionalTransferLightInvariantStorage.sol.png} (100%) create mode 100644 doc/schema/surya/surya_graph/surya_graph_RuleEngine.sol.png create mode 100644 doc/schema/surya/surya_graph/surya_graph_RuleEngineBase.sol.png rename doc/{ => schema}/surya/surya_graph/surya_graph_RuleEngineInvariantStorage.sol.png (100%) create mode 100644 doc/schema/surya/surya_graph/surya_graph_RuleOperationRevert.sol.png create mode 100644 doc/schema/surya/surya_graph/surya_graph_RuleWhitelist.sol.png rename doc/{ => schema}/surya/surya_graph/surya_graph_RuleWhitelistCommon.sol.png (100%) rename doc/{ => schema}/surya/surya_graph/surya_graph_RuleWhitelistInvariantStorage.sol.png (100%) create mode 100644 doc/schema/surya/surya_graph/surya_graph_RulesManagementModule.sol.png rename doc/{surya/surya_graph/surya_graph_RuleSanctionListInvariantStorage.sol.png => schema/surya/surya_graph/surya_graph_RulesManagementModuleInvariantStorage.sol.png} (100%) create mode 100644 doc/schema/surya/surya_graph/surya_graph_VersionModule.sol.png create mode 100644 doc/schema/surya/surya_inheritance/surya_inheritance_ERC3643ComplianceModule.sol.png create mode 100644 doc/schema/surya/surya_inheritance/surya_inheritance_IERC3643Compliance.sol.png create mode 100644 doc/schema/surya/surya_inheritance/surya_inheritance_IRule.sol.png create mode 100644 doc/schema/surya/surya_inheritance/surya_inheritance_IRulesManagementModule.sol.png rename doc/{ => schema}/surya/surya_inheritance/surya_inheritance_MetaTxModuleStandalone.sol.png (100%) rename doc/{ => schema}/surya/surya_inheritance/surya_inheritance_RuleAddressList.sol.png (100%) rename doc/{ => schema}/surya/surya_inheritance/surya_inheritance_RuleAddressListInternal.sol.png (100%) rename doc/{ => schema}/surya/surya_inheritance/surya_inheritance_RuleAddressListInvariantStorage.sol.png (100%) rename doc/{ => schema}/surya/surya_inheritance/surya_inheritance_RuleBlacklistInvariantStorage.sol.png (100%) rename doc/{ => schema}/surya/surya_inheritance/surya_inheritance_RuleCommonInvariantStorage.sol.png (100%) create mode 100644 doc/schema/surya/surya_inheritance/surya_inheritance_RuleConditionalTransferLight.sol.png create mode 100644 doc/schema/surya/surya_inheritance/surya_inheritance_RuleConditionalTransferLightInvariantStorage.sol.png create mode 100644 doc/schema/surya/surya_inheritance/surya_inheritance_RuleEngine.sol.png create mode 100644 doc/schema/surya/surya_inheritance/surya_inheritance_RuleEngineBase.sol.png rename doc/{ => schema}/surya/surya_inheritance/surya_inheritance_RuleEngineInvariantStorage.sol.png (100%) create mode 100644 doc/schema/surya/surya_inheritance/surya_inheritance_RuleOperationRevert.sol.png rename doc/{ => schema}/surya/surya_inheritance/surya_inheritance_RuleWhitelist.sol.png (100%) create mode 100644 doc/schema/surya/surya_inheritance/surya_inheritance_RuleWhitelistCommon.sol.png rename doc/{ => schema}/surya/surya_inheritance/surya_inheritance_RuleWhitelistInvariantStorage.sol.png (100%) create mode 100644 doc/schema/surya/surya_inheritance/surya_inheritance_RulesManagementModule.sol.png create mode 100644 doc/schema/surya/surya_inheritance/surya_inheritance_RulesManagementModuleInvariantStorage.sol.png create mode 100644 doc/schema/surya/surya_inheritance/surya_inheritance_VersionModule.sol.png rename doc/{surya/surya_report/surya_report_IRuleEngineOperation.sol.md => schema/surya/surya_report/surya_report_ERC3643ComplianceModule.sol.md} (52%) create mode 100644 doc/schema/surya/surya_report/surya_report_IERC3643Compliance.sol.md rename doc/{surya/surya_report/surya_report_IRuleValidation.sol.md => schema/surya/surya_report/surya_report_IRule.sol.md} (83%) create mode 100644 doc/schema/surya/surya_report/surya_report_IRulesManagementModule.sol.md rename doc/{ => schema}/surya/surya_report/surya_report_MetaTxModuleStandalone.sol.md (89%) rename doc/{ => schema}/surya/surya_report/surya_report_RuleAddressList.sol.md (92%) rename doc/{ => schema}/surya/surya_report/surya_report_RuleAddressListInternal.sol.md (88%) rename doc/{ => schema}/surya/surya_report/surya_report_RuleAddressListInvariantStorage.sol.md (81%) rename doc/{ => schema}/surya/surya_report/surya_report_RuleBlacklistInvariantStorage.sol.md (82%) rename doc/{ => schema}/surya/surya_report/surya_report_RuleCommonInvariantStorage.sol.md (85%) rename doc/{surya/surya_report/surya_report_RuleSanctionList.sol.md => schema/surya/surya_report/surya_report_RuleConditionalTransferLight.sol.md} (53%) rename doc/{surya/surya_report/surya_report_RuleConditionalTransferInvariantStorage.sol.md => schema/surya/surya_report/surya_report_RuleConditionalTransferLightInvariantStorage.sol.md} (72%) rename doc/{surya/surya_report/surya_report_RuleWhitelistWrapper.sol.md => schema/surya/surya_report/surya_report_RuleEngine.sol.md} (71%) create mode 100644 doc/schema/surya/surya_report/surya_report_RuleEngineBase.sol.md rename doc/{ => schema}/surya/surya_report/surya_report_RuleEngineInvariantStorage.sol.md (87%) rename doc/{surya/surya_report/surya_report_RuleBlacklist.sol.md => schema/surya/surya_report/surya_report_RuleOperationRevert.sol.md} (62%) rename doc/{ => schema}/surya/surya_report/surya_report_RuleWhitelist.sol.md (68%) rename doc/{ => schema}/surya/surya_report/surya_report_RuleWhitelistCommon.sol.md (78%) rename doc/{ => schema}/surya/surya_report/surya_report_RuleWhitelistInvariantStorage.sol.md (82%) create mode 100644 doc/schema/surya/surya_report/surya_report_RulesManagementModule.sol.md rename doc/{surya/surya_report/surya_report_IRuleOperation.sol.md => schema/surya/surya_report/surya_report_RulesManagementModuleInvariantStorage.sol.md} (76%) rename doc/{surya/surya_report/surya_report_RuleSanctionListInvariantStorage.sol.md => schema/surya/surya_report/surya_report_VersionModule.sol.md} (74%) create mode 100644 doc/schema/vscode-uml/ERC3643ComplianceModuleUML.png create mode 100644 doc/schema/vscode-uml/IERC1404ExtendUML.png create mode 100644 doc/schema/vscode-uml/IERC1404UML.png create mode 100644 doc/schema/vscode-uml/IERC3643ComplianceReadUML.png create mode 100644 doc/schema/vscode-uml/IERC3643IComplianceContractUML.png create mode 100644 doc/schema/vscode-uml/IERC7551ComplianceUML.png create mode 100644 doc/schema/vscode-uml/IRuleEngineUML.png create mode 100644 doc/schema/vscode-uml/RuleEngineBaseUML.png create mode 100644 doc/schema/vscode-uml/RuleEngineUML.png create mode 100644 doc/schema/vscode-uml/RuleManagementModuleUML.png create mode 100644 doc/schema/vscode-uml/VersionModuleUML.png delete mode 100644 doc/security/accessControl/access-control-RuleSanctionList.drawio.png delete mode 100644 doc/security/accessControl/access-control-RuleWhitelist.png create mode 100644 doc/security/audits/tools/aderyn-report.md delete mode 100644 doc/surya/surya_graph/surya_graph_IRuleEngineOperation.sol.png delete mode 100644 doc/surya/surya_graph/surya_graph_IRuleEngineValidation.sol.png delete mode 100644 doc/surya/surya_graph/surya_graph_IRuleOperation.sol.png delete mode 100644 doc/surya/surya_graph/surya_graph_IRuleValidation.sol.png delete mode 100644 doc/surya/surya_graph/surya_graph_RuleBlacklist.sol.png delete mode 100644 doc/surya/surya_graph/surya_graph_RuleConditionalTransfer.sol.png delete mode 100644 doc/surya/surya_graph/surya_graph_RuleConditionalTransferOperator.sol.png delete mode 100644 doc/surya/surya_graph/surya_graph_RuleEngine.sol.png delete mode 100644 doc/surya/surya_graph/surya_graph_RuleEngineOperation.sol.png delete mode 100644 doc/surya/surya_graph/surya_graph_RuleEngineValidation.sol.png delete mode 100644 doc/surya/surya_graph/surya_graph_RuleEngineValidationCommon.sol.png delete mode 100644 doc/surya/surya_graph/surya_graph_RuleInternal.sol.png delete mode 100644 doc/surya/surya_graph/surya_graph_RuleSanctionList.sol.png delete mode 100644 doc/surya/surya_graph/surya_graph_RuleValidateTransfer.sol.png delete mode 100644 doc/surya/surya_graph/surya_graph_RuleWhitelist.sol.png delete mode 100644 doc/surya/surya_graph/surya_graph_RuleWhitelistWrapper.sol.png delete mode 100644 doc/surya/surya_inheritance/surya_inheritance_IRuleEngineOperation.sol.png delete mode 100644 doc/surya/surya_inheritance/surya_inheritance_IRuleEngineValidation.sol.png delete mode 100644 doc/surya/surya_inheritance/surya_inheritance_IRuleOperation.sol.png delete mode 100644 doc/surya/surya_inheritance/surya_inheritance_IRuleValidation.sol.png delete mode 100644 doc/surya/surya_inheritance/surya_inheritance_RuleBlacklist.sol.png delete mode 100644 doc/surya/surya_inheritance/surya_inheritance_RuleConditionalTransfer.sol.png delete mode 100644 doc/surya/surya_inheritance/surya_inheritance_RuleConditionalTransferInvariantStorage.sol.png delete mode 100644 doc/surya/surya_inheritance/surya_inheritance_RuleConditionalTransferOperator.sol.png delete mode 100644 doc/surya/surya_inheritance/surya_inheritance_RuleEngine.sol.png delete mode 100644 doc/surya/surya_inheritance/surya_inheritance_RuleEngineOperation.sol.png delete mode 100644 doc/surya/surya_inheritance/surya_inheritance_RuleEngineValidation.sol.png delete mode 100644 doc/surya/surya_inheritance/surya_inheritance_RuleEngineValidationCommon.sol.png delete mode 100644 doc/surya/surya_inheritance/surya_inheritance_RuleInternal.sol.png delete mode 100644 doc/surya/surya_inheritance/surya_inheritance_RuleSanctionList.sol.png delete mode 100644 doc/surya/surya_inheritance/surya_inheritance_RuleSanctionListInvariantStorage.sol.png delete mode 100644 doc/surya/surya_inheritance/surya_inheritance_RuleValidateTransfer.sol.png delete mode 100644 doc/surya/surya_inheritance/surya_inheritance_RuleWhitelistCommon.sol.png delete mode 100644 doc/surya/surya_inheritance/surya_inheritance_RuleWhitelistWrapper.sol.png delete mode 100644 doc/surya/surya_report/surya_report_IRuleEngineValidation.sol.md delete mode 100644 doc/surya/surya_report/surya_report_RuleConditionalTransfer.sol.md delete mode 100644 doc/surya/surya_report/surya_report_RuleConditionalTransferOperator.sol.md delete mode 100644 doc/surya/surya_report/surya_report_RuleEngine.sol.md delete mode 100644 doc/surya/surya_report/surya_report_RuleEngineOperation.sol.md delete mode 100644 doc/surya/surya_report/surya_report_RuleEngineValidation.sol.md delete mode 100644 doc/surya/surya_report/surya_report_RuleEngineValidationCommon.sol.md delete mode 100644 doc/surya/surya_report/surya_report_RuleInternal.sol.md delete mode 100644 doc/surya/surya_report/surya_report_RuleValidateTransfer.sol.md delete mode 100644 doc/technical/RuleBlacklist.md delete mode 100644 doc/technical/RuleConditionalTransfer.md delete mode 100644 doc/technical/RuleEngine.md delete mode 100644 doc/technical/RuleSanctionList.md delete mode 100644 doc/technical/RuleWhitelist.md delete mode 100644 doc/technical/RuleWhitelistWrapper.md create mode 100644 src/interfaces/IRule.sol delete mode 100644 src/interfaces/IRuleEngineOperation.sol delete mode 100644 src/interfaces/IRuleEngineValidation.sol delete mode 100644 src/interfaces/IRuleOperation.sol delete mode 100644 src/interfaces/IRuleValidation.sol create mode 100644 src/interfaces/IRulesManagementModule.sol delete mode 100644 src/mocks/rules/validation/abstract/RuleSanctionListInvariantStorage.sol delete mode 100644 src/mocks/rules/validation/abstract/RuleValidateTransfer.sol rename src/modules/{ERC3643Compliance.sol => ERC3643ComplianceModule.sol} (79%) delete mode 100644 src/modules/RuleEngineOperation.sol delete mode 100644 src/modules/RuleEngineValidation.sol delete mode 100644 src/modules/RuleEngineValidationRead.sol create mode 100644 src/modules/RulesManagementModule.sol rename src/modules/{RuleEngineBaseModule.sol => VersionModule.sol} (92%) delete mode 100644 src/modules/library/RuleEngineInvariantStorageCommon.sol create mode 100644 src/modules/library/RulesManagementModuleInvariantStorage.sol rename test/RuleEngine/{ruleEngineOperation => RulesManagementModuleTest}/CMTATIntegration.t.sol (96%) rename test/RuleEngine/{ruleEngineOperation => RulesManagementModuleTest}/RuleEngineOperation.t.sol (61%) rename test/RuleEngine/{ruleEngineOperation => RulesManagementModuleTest}/RuleEngineOperationRevert.t.sol (91%) rename test/RuleEngine/{ruleEngineOperation => RulesManagementModuleTest}/RuleEngineRestriction.t.sol (94%) rename test/RuleEngine/ruleEngineValidation/{RuleEngineRestriction.t.sol => RuleEngineRestriction.sol} (87%) rename test/RuleEngine/ruleEngineValidation/{RuleEngineValidation.t.sol => RuleEngineValidation.sol} (58%) diff --git a/README.md b/README.md index 496859c..4e8fef1 100644 --- a/README.md +++ b/README.md @@ -6,9 +6,13 @@ This repository includes the RuleEngine contract for [CMTAT](https://github.com/ The RuleEngine is an external contract used to apply transfer restrictions to another contract, such as CMTAT and ERC-3643 tokens. Acting as a controller, it can call different contract rules and apply these rules on each transfer. +[TOC] + + + ## Motivation -Why use a dedicated contract with rules instead of implementing it directly in CMTAT or ERC-3643 tokens? +- Why use a dedicated contract with rules instead of implementing it directly in CMTAT or [ERC-3643](https://eips.ethereum.org/EIPS/eip-3643) tokens? 1. Flexibility: These different features are not standard and common to all tokens. From an implementation perspective, using a rule engine with custom rules allows for each issuer or contract user to decide which rules to apply. 2. Code efficiency: The CMTAT token (and generally also all ERC-3643 tokens) is currently "heavy," meaning its contract code size is close to the maximum limit. This makes it challenging to add new features directly inside the CMTAT contract. @@ -18,59 +22,96 @@ Why use a dedicated contract with rules instead of implementing it directly in C ## How it works -This diagram illustrates how a transfer of CMTAT with a RuleEngine works: +This diagram illustrates how a transfer with a CMTAT or ERC-3643 token with a RuleEngine works: + +![RuleEngine.drawio](./doc/schema/RuleEngine.drawio.png) + + + +1. The token holders initiate a transfer transaction on the token contract. +2. The transfer function inside the token calls the ERC-3643 function `transferred` from the RuleEngine with the following parameters inside: `from, to, value`. +3. The Rule Engine calls each rule separately. If the transfer is not authorized by the rule, the rule must directly revert (no return value). + +### How to set it + +#### CMTAT v3.0.0 + +CMTAT provides the following function to set a RuleEngine inside a CMTAT token: + +```solidity + setRuleEngine(IRuleEngine ruleEngine_) +``` + +This function is defined in the extension module `ValidationModuleRuleEngine` + +### ERC-3643 token + +[ERC-3643](https://eips.ethereum.org/EIPS/eip-3643) defined the following function in the standard interface to set a compliance contract + +```solidity +setCompliance(address _compliance) +``` - ![Engine-RuleEngine.drawio](./doc/schema/Engine-RuleEngine.drawio.png) -1. The token holders initiate a transfer transaction on CMTAT contract. -2. The validation module inside the CMTAT calls the ERC-3643 function `transferred` from the RuleEngine if set with the following parameters inside: `from, to, value`. -3. The Rule Engine calls each rule separately. -4. If the rule returns the value 0, the RuleEngine considers the transfer authorized. If one rule returns a different value, the RuleEngine considers the transfer as not authorized and the transaction is directly reverted (no return value) stopping the transfer. ## How to include it While the RuleEngine has been designed for CMTAT and ERC-3643 tokens, it can be used with other contracts to apply transfer restrictions. -For that, the only thing to do is to import in your contract the interface `IRuleEngine`(CMTAT) or `IERC3643Compliance`(ERC-3643), which declares the corresponding functions to call by the token contract. This interface can be found [here](https://github.com/CMTA/CMTAT/blob/23a1e59f913d079d0c09d32fafbd95ab2d426093/contracts/interfaces/engine/IRuleEngine.sol). +For that, the only thing to do is to import in your contract the interface `IRuleEngine`(CMTAT) or `IERC3643Compliance` (ERC-3643), which declares the corresponding functions to call by the token contract. This interface can be found [here](https://github.com/CMTA/CMTAT/blob/23a1e59f913d079d0c09d32fafbd95ab2d426093/contracts/interfaces/engine/IRuleEngine.sol). -### CMTAT +### Like CMTAT -Before each transfer, the CMTAT calls the function `transferred` which is the entrypoint for the RuleEngine. +Before each ERC-20 transfer, the CMTAT calls the function `transferred` which is the entrypoint for the RuleEngine. + +```solidity +function transferred(address from,address to,uint256 value) +``` + +If you want to apply restriction on the spender address, you have to call the `transferred` function which takes the spender argument in your ERC-20 function `transferFrom`. + +```solidity +function transferred(address spender,address from,address to,uint256 value) +``` For example, CMTAT defines the interaction with the RuleEngine inside a specific module, [ValidationModuleRuleEngine](https://github.com/CMTA/CMTAT/blob/master/contracts/modules/wrapper/extensions/ValidationModule/ValidationModuleRuleEngine.sol) and [CMTATBaseRuleEngine](https://github.com/CMTA/CMTAT/blob/master/contracts/modules/1_CMTATBaseRuleEngine.sol). - ValidationModuleRuleEngine + +![transferred](./doc/other/CMTAT/transferred.png) + - CMTATBaseRuleEngine - +![checkTransferred](./doc/other/CMTAT/checkTransferred.png) This function `_transferred` is called before each transfer/burn/mint through the internal function `_checkTransferred` defined in [CMTAT_BASE](https://github.com/CMTA/CMTAT/blob/23a1e59f913d079d0c09d32fafbd95ab2d426093/contracts/modules/CMTAT_BASE.sol#L198). -### ERC-3643 +### Like ERC-3643 The ERC-3643 defines several functions used as entrypoint for an ERC-3643 token. -They are the following +They are the following: ```solidity - // compliance check and state update - function canTransfer(address from, address to, uint256 value) external view returns (bool); - function transferred(address from, address to, uint256 value) external; - function created(address to, uint256 value) external; - function destroyed(address from, uint256 value) external; +// read-only function +function canTransfer(address from, address to, uint256 value) external view returns (bool); +// ERC-20 transfer +function transferred(address from, address to, uint256 value) external; +// mint +function created(address to, uint256 value) external; +// burn +function destroyed(address from, uint256 value) external; ``` ## Interface ### CMTAT -The RuleEngine base interface is defined in CMTAT repository. - -![surya_inheritance_IRuleEngine.sol](./doc/schema/surya_inheritance_IRuleEngine.sol.png) - -It inherits from several others interace: +The `RuleEngine` base interface is defined in CMTAT repository. +![cmtat_surya_inheritance_IRuleEngine.sol](./doc/schema/cmtat_surya_inheritance_IRuleEngine.sol.png) +It inherits from several others interface: `IERC1404Extend`, `IERC7551Compliance`, `IERC3643ComplianceContract` ```solidity // IRuleEngine @@ -121,13 +162,20 @@ The [ERC-3643](https://eips.ethereum.org/EIPS/eip-3643) compliance interface is +A specific module implements this interface for the RuleEngine: [ERC3643Compliance.sol](src/modules/ERC3643Compliance.sol) +![ERC3643ComplianceModuleUML](./doc/schema/vscode-uml/ERC3643ComplianceModuleUML.png) +## Technical +### Dependencies -A specific module implements this interface for the RuleEngine: [ERC3643Compliance.sol](src/modules/ERC3643Compliance.sol) - +The toolchain includes the following components, where the versions are the latest ones that we tested: +- Foundry (forge-std) [v1.10.0](https://github.com/foundry-rs/forge-std/releases/tag/v1.10.0) +- Solidity [0.8.30](https://docs.soliditylang.org/en/v0.8.30/) (via solc-js) +- OpenZeppelin Contracts (submodule) [v5.4.0](https://github.com/OpenZeppelin/openzeppelin-contracts/releases/tag/v5.4.0) +- CMTAT [v3.0.0-rc7](https://github.com/CMTA/CMTAT/releases/tag/v3.0.0-rc7) @@ -147,12 +195,25 @@ See also [docs.openzeppelin.com - AccessControl](https://docs.openzeppelin.com/c Here is the list of roles and their 32 bytes identifier. -| | Defined in | 32 bytes identifier | -| ------------------------- | -------------------------------- | ------------------------------------------------------------ | -| DEFAULT_ADMIN_ROLE | OpenZeppelin
AccessControl | 0x0000000000000000000000000000000000000000000000000000000000000000 | -| **Modules** | | | -| COMPLIANCE_MANAGER_ROLE | ERC3643Compliance | | -| RULE_ENGINE_OPERATOR_ROLE | RuleEngineInvariantStorageCommon | | +The default admin is the address put in argument(`admin`) inside the constructor. + +It is set in the constructor when the contract is deployed. + +| | Defined in | 32 bytes identifier | +| ----------------------- | -------------------------------- | ------------------------------------------------------------ | +| DEFAULT_ADMIN_ROLE | OpenZeppelin
AccessControl | 0x0000000000000000000000000000000000000000000000000000000000000000 | +| **Modules** | | | +| COMPLIANCE_MANAGER_ROLE | ERC3643Compliance | e5c50d0927e06141e032cb9a67e1d7092dc85c0b0825191f7e1cede600028568 | +| RULES_MANAGEMENT_ROLE | RuleEngineInvariantStorageCommon | ea5f4eb72290e50c32abd6c23e45de3d8300b3286e1cbc2e293114b92e034e5e | + + + +#### Schema + +Here a schema of the Access Control. +![alt text](./doc/security/accessControl/access-control-RuleEngine.png) + + @@ -164,108 +225,628 @@ For function signatures, struct arguments are represented with their correspond | | Function signature | Visibility [public/external] | Input variables (Function arguments) | Output variables
(return value) | Role Required | | -------------------- | ------------------ | ---------------------------- | ------------------------------------ | ------------------------------------ | ------------- | | **Modules** | | | | | | -| RuleEngineOperation | | | | | | -| | `` | public | `` | - | | -| | `` | public | `` | - | | -| RuleEngineValidation | | | | | | - -## Dependencies +| RulesManagementModule | | | | | | +| | `setRules(address[] rules_)` | public | `IRule[] rules_` | - | RULES_MANAGEMENT_ROLE | +| | `clearRules()` | public | - |-|RULES_MANAGEMENT_ROLE| +| | `addRule(address rule_)` | public | `IRule rule_` |-|RULES_MANAGEMENT_ROLE| +| | `removeRule(address rule_)` | public | `IRule rule_` |-|RULES_MANAGEMENT_ROLE| +| ERC3643ComplianceModule | | | | | | +| | `bindToken(address token)` | public | `address token` | - | COMPLIANCE_MANAGER_ROLE | +| | `unbindToken(address token)` | public | `address token` | - | COMPLIANCE_MANAGER_ROLE | +| RuleEngineBase | | | | | | +| | `transferred(address from,address to,uint256 value)` | public | `address from,address to, uint256 value` | - | onlyBoundToken (modifier) | +| | `transferred(address spender,address from,address to,uint256 value)` | public | `address spender,address from,address to, uint256 value` | - | onlyBoundToken (modifier) | -The toolchain includes the following components, where the versions are the latest ones that we tested: - -- Foundry [v1.9.4](https://github.com/foundry-rs/forge-std/releases/tag/v1.9.4) -- Solidity 0.8.30 (via solc-js) -- OpenZeppelin Contracts (submodule) [v5.3.0](https://github.com/OpenZeppelin/openzeppelin-contracts/releases/tag/v5.3.0) -- CMTAT [v3.0.0](https://github.com/CMTA/CMTAT/releases/tag/v3.0.0) -## How to include it -While it has been designed for the CMTAT, the ruleEngine can be used with others contracts to apply restriction on transfer. - -For that, the only thing to do is to import in your contract the interface `IRuleEngine` which declares the function `operateOnTransfer` +### UML -This interface can be found in [CMTAT/[...]/IRuleEngine.sol](https://github.com/CMTA/CMTAT/blob/23a1e59f913d079d0c09d32fafbd95ab2d426093/contracts/interfaces/engine/IRuleEngine.sol) +![RuleEngineUML](./doc/schema/vscode-uml/RuleEngineUML.png) -Before each transfer, your contract must call the function `operateOnTransfer` which is the entrypoint for the RuleEngine. -## Schema -![Engine-RuleEngine.drawio](./doc/schema/Engine-RuleEngine.drawio.png) -### UML -#### Global +### Graph -> npm run-script uml -> -> No longer works, generate the following error: RangeError: Maximum call stack size exceeded -![uml](./doc/schema/classDiagram.svg) +![surya_graph_RuleEngine](./doc/schema/surya/surya_graph/surya_graph_RuleEngine.sol.png) +## Functionality -#### RuleEngine +Several functionalities are not implemented because it makes more sense to directly implement them in the token smart contract -> npm run-script uml:ruleEngine -> -> No longer works, instead: -> -> forge flatten src/RuleEngine.sol -o RuleEngine.sol -> -> npx sol2uml class RuleEngine.sol +The RuleEngine can be removed from the main token contract by calling these dedicated functions -![uml](./doc/schema/RuleEngine.svg) +- CMTAT v3.0.0: `setRuleEngine(address ruleEngine)` +- ERC-3643 token: `setCompliance(address _compliance)` -## Available Rules +### Available Rules Rules have their own dedicated repository: [github.com/CMTA/Rules](https://github.com/CMTA/Rules) The following rules are available: -| Rule | Type
[Validation/Operation] | Audit planned | Description | Doc | -| ------------------------------------------------------------ | -------------------------------- | --------------------------------- | ------------------------------------------------------------ | ------------------------------------------------------------ | -| [RuleWhitelist](src/rules/validation/RuleWhitelist.sol) | RuleValidation | ☑ | This rule can be used to restrict transfers from/to only addresses inside a whitelist. | [RuleWhitelist.md](./doc/technical/RuleWhitelist.md)
[surya-report](./doc/surya/surya_report/surya_report_RuleWhitelist.sol.md) | -| [RuleWhitelistWrapper](src/rules/validation/RuleWhitelistWrapper.sol) | RuleValidation | ☑ | This rule can be used to restrict transfers from/to only addresses inside a group of whitelist rules managed by different operators. | [RuleWhitelistWrapper.md](./doc/technical/RuleWhitelistWrapper.md)
[surya-report](./doc/surya/surya_report/surya_report_RuleWhitelistWrapper.sol.md) | -| [RuleBlacklist](src/rules/validation/RuleBlacklist.sol) | RuleValidation | ☑ | This rule can be used to forbid transfer from/to addresses in the blacklist | [RuleBlacklist.md](./doc/technical/RuleBlacklist.md)
[surya-report](./doc/surya/surya_report/surya_report_RuleBlacklist.sol.md) | -| [RuleSanctionList](src/rules/validation/RuleSanctionList.sol) | RuleValidation | ☑ | The purpose of this contract is to use the oracle contract from Chainalysis to forbid transfer from/to an address included in a sanctions designation (US, EU, or UN). | [RuleSanctionList.md](./doc/technical/RuleSanctionList.md)
[surya-report](./doc/surya/surya_report/surya_report_RuleSanctionList.sol.md) | -| [RuleConditionalTransfer](src/rules/operation/RuleConditionalTransfer.sol) | RuleOperation | ☒
(experimental rule) | This page describes a Conditional Transfer implementation. This rule requires that transfers have to be approved before being executed by the token holders. | [RuleConditionalTransfer.md](./doc/technical/RuleConditionalTransfer.md)
[surya-report](./doc/surya/surya_report/surya_report_RuleConditionalTransfer.sol.md) | +| Rule | Type
[ready-only / read-write] | Audit planned | Description | +| ----------------------- | ----------------------------------- | --------------------------------- | ------------------------------------------------------------ | +| RuleWhitelist | Ready-only | ☑ | This rule can be used to restrict transfers from/to only addresses inside a whitelist. | +| RuleWhitelistWrapper | Ready-only | ☑ | This rule can be used to restrict transfers from/to only addresses inside a group of whitelist rules managed by different operators. | +| RuleBlacklist | Ready-only | ☑ | This rule can be used to forbid transfer from/to addresses in the blacklist | +| RuleSanctionList | Ready-only | ☑ | The purpose of this contract is to use the oracle contract from Chainalysis to forbid transfer from/to an address included in a sanctions designation (US, EU, or UN). | +| RuleConditionalTransfer | Ready-Write | ☒
(experimental rule) | This rule requires that transfers have to be approved before being executed by the token holders. | +### Gasless support (ERC-2771) +The RuleEngine contracts and the other rules support client-side gasless transactions using the [Gas Station Network](https://docs.opengsn.org/#the-problem) (GSN) pattern, the main open standard for transfering fee payment to another account than that of the transaction issuer. The contract uses the OpenZeppelin contract `ERC2771Context`, which allows a contract to get the original client with `_msgSender()` instead of the fee payer given by `msg.sender` . -## Functionality +At deployment, the parameter `forwarder` inside the contract constructor has to be set with the defined address of the forwarder. Please note that the forwarder can not be changed after deployment. + +Please see the OpenGSN [documentation](https://docs.opengsn.org/contracts/#receiving-a-relayed-call) for more details on what is done to support GSN in the contract. ### Upgradeable -The Rule Engine and the other rules are not upgradeable. The reason is the following: -If we need a new on, we just issue a new one, and set inside the CMTAT token (or the RuleEngine for the rules) to use the new. +A proxy architecture (upgradeable) increases the code complexity as well as the runtime gas cost for each transaction. This is why the RuleEngine is not upgradeable. -### Urgency mechanism +Moreover, in a proxy architecture, each new implementation must be compatible (storage) with the precedent implementation, which can reduce the ability to improve the code. -### Pause +In case you use the same RuleEngine for several different tokens, unfortunately, you will have to update the address of the RuleEngine set in each token contract separately. -There are no functionalities to put in pause the contracts. +### Urgency mechanism -The RuleEngine can be removed from the main token contract by calling the dedicated function +#### Pause -- CMTAT v3.0.0: `setRuleEngine(address ruleEngine)` -- ERC-3643 token: `setCompliance(address _compliance)` +There are no functionalities to put in pause the RuleEngine. + +The RuleEngine can be removed from the main token contract by calling the dedicated functions to manage the RuleEngine -### Kill / Deactivate the contracts +#### Kill / Deactivate the contracts There are no functionalities to kill/deactivate the contracts. -Similar to the pause functionality, the RuleEngine can be directly removed from the main token contract +Similar to the pause functionality, the RuleEngine can be directly removed from the main token contract. +## Ethereum API -### Gasless support (ERC-2771) +### RuleEngineBase -The RuleEngine contracts and the other rules support client-side gasless transactions using the [Gas Station Network](https://docs.opengsn.org/#the-problem) (GSN) pattern, the main open standard for transfering fee payment to another account than that of the transaction issuer. The contract uses the OpenZeppelin contract `ERC2771Context`, which allows a contract to get the original client with `_msgSender()` instead of the fee payer given by `msg.sender` . +![RuleEngineBaseUML](./doc/schema/vscode-uml/RuleEngineBaseUML.png) -At deployment, the parameter `forwarder` inside the contract constructor has to be set with the defined address of the forwarder. Please note that the forwarder can not be changed after deployment. +#### IRuleEngine + +![IRuleEngineUML](./doc/schema/vscode-uml/IRuleEngineUML.png) + +##### transferred(address spender, address from, address to, uint256 value) + +Function called whenever tokens are transferred from one wallet to another. + +Must revert if the transfer is invalid. + Same name as ERC-3643 but with an additional `spender` parameter. + This function can be used to update state variables of the RuleEngine contract. + Can only be called by the token contract bound to the RuleEngine. + +**Input Parameters:** + +| Name | Type | Description | +| ------- | ------- | ---------------------------------------------- | +| spender | address | The spender address initiating the transfer. | +| from | address | The token holder address. | +| to | address | The receiver address. | +| value | uint256 | The amount of tokens involved in the transfer. | + +#### IERC7551Compliance + +![IERC7551ComplianceUML](./doc/schema/vscode-uml/IERC7551ComplianceUML.png) + +##### canTransferFrom(address spender, address from, address to, uint256 value) -> bool + +Checks if `spender` can transfer `value` tokens from `from` to `to` under compliance rules. + +Does not check balances or access rights (Access Control). + +**Input Parameters:** + +| Name | Type | Description | +| ------- | ------- | ------------------------------------ | +| spender | address | The address performing the transfer. | +| from | address | The source address. | +| to | address | The destination address. | +| value | uint256 | The number of tokens to transfer. | + + + +**Return Values:** + +| Type | Description | +| ---- | ------------------------------------------ | +| bool | True if the transfer complies with policy. | + +#### IERC3643ComplianceRead + +![IERC3643ComplianceReadUML](./doc/schema/vscode-uml/IERC3643ComplianceReadUML.png) + +------ + +##### canTransfer(address from, address to, uint256 value) -> bool + +Returns true if the transfer is valid, and false otherwise. + +Does not check balances or access rights (Access Control). + +**Input Parameters:** + +| Name | Type | Description | +| ----- | ------- | --------------------------------- | +| from | address | The source address. | +| to | address | The destination address. | +| value | uint256 | The number of tokens to transfer. | + + + +**Return Values:** + +| Type | Description | +| ---- | ----------------------------------------------- | +| bool | True if the transfer is valid, false otherwise. | + +#### IERC3643IComplianceContract + +![IERC3643IComplianceContractUML](./doc/schema/vscode-uml/IERC3643IComplianceContractUML.png) + +------ + +##### transferred(address from, address to, uint256 value) + +Updates the compliance contract state whenever tokens are transferred. + +Can only be called by the token contract bound to this compliance logic. + This function can be used to update internal state variables. + +**Input Parameters:** + +| Name | Type | Description | +| ----- | ------- | ---------------------------------------------- | +| from | address | The address of the sender. | +| to | address | The address of the receiver. | +| value | uint256 | The number of tokens involved in the transfer. | + +#### IERC1404 + +![IERC1404UML](./doc/schema/vscode-uml/IERC1404UML.png) + +------ + +##### detectTransferRestriction(address from, address to, uint256 value) -> uint8 + +Returns a uint8 code to indicate if a transfer is restricted or not. + +Implements the restriction logic of {ERC-1404}. + Examples of restriction logic include: + +- checking if the recipient is whitelisted, +- checking if the sender’s tokens are frozen during a lock-up period, etc. + +**Input Parameters:** + +| Name | Type | Description | +| ----- | ------- | --------------------------------- | +| from | address | The source address. | +| to | address | The destination address. | +| value | uint256 | The number of tokens to transfer. | + + + +**Return Values:** + +| Type | Description | +| ----- | ------------------------------------------------------ | +| uint8 | Restriction code (0 means the transfer is authorized). | + + + +------ + +##### messageForTransferRestriction(uint8 restrictionCode) -> string + +Returns a human-readable explanation for a transfer restriction code. + +Implements {ERC-1404} standard message accessor. + +**Input Parameters:** + +| Name | Type | Description | +| --------------- | ----- | ---------------------------------- | +| restrictionCode | uint8 | The restriction code to interpret. | + + + +**Return Values:** + +| Type | Description | +| ------ | ---------------------------------------------------- | +| string | A message describing why the transfer is restricted. | + + + +------ + +#### IERC1404Extend + +![IERC1404ExtendUML](./doc/schema/vscode-uml/IERC1404ExtendUML.png) + +##### enum REJECTED_CODE_BASE + +Error codes for transfer restrictions. + Codes `6–9` are reserved for future CMTAT ruleEngine extensions. + +| Name | Value | Description | +| -------------------------------------------------- | ----- | ------------------------------------------------------------ | +| TRANSFER_OK | 0 | Transfer authorized. | +| TRANSFER_REJECTED_PAUSED | 1 | Transfer rejected because the token is paused. | +| TRANSFER_REJECTED_FROM_FROZEN | 2 | Transfer rejected because the sender’s address is frozen. | +| TRANSFER_REJECTED_TO_FROZEN | 3 | Transfer rejected because the recipient’s address is frozen. | +| TRANSFER_REJECTED_SPENDER_FROZEN | 4 | Transfer rejected because the spender’s address is frozen. | +| TRANSFER_REJECTED_FROM_INSUFFICIENT_ACTIVE_BALANCE | 5 | Transfer rejected because the sender does not have enough active (unfrozen) balance. | + + + +------ + +##### detectTransferRestrictionFrom(address spender, address from, address to, uint256 value) -> uint8 + +Returns a uint8 code to indicate if a transfer is restricted or not. + +This is an extension of {ERC-1404} with an additional `spender` parameter to enforce restriction logic on delegated transfers. + Examples of restriction logic include: + +- verifying if the recipient is whitelisted, +- verifying if tokens are locked for either sender or spender, etc. + +**Input Parameters:** + +| Name | Type | Description | +| ------- | ------- | ------------------------------------------------------------ | +| spender | address | The address initiating the transfer (for delegated transfers). | +| from | address | The source address. | +| to | address | The destination address. | +| value | uint256 | The number of tokens to transfer. | + + + +**Return Values:** + +| Type | Description | +| ----- | ------------------------------------------------------ | +| uint8 | Restriction code (0 means the transfer is authorized). | + + + +------ + +### VersionModule + +![VersionModuleUML](./doc/schema/vscode-uml/VersionModuleUML.png) + +#### version() + +```solidity +function version() external view returns (string memory version_); +``` + +```solidity +function version() +public view virtual override(IERC3643Base) +returns (string memory version_) +``` + + **Description** + +Returns the current version of the token contract. +Useful for identifying which version of the smart contract is deployed and in use. + +**Return** + +| Name | Type | Description | +| ---------- | ------ | ------------------------------------------------------------ | +| `version_` | string | The version string of the token implementation (e.g., "1.0.0"). | -Please see the OpenGSN [documentation](https://docs.opengsn.org/contracts/#receiving-a-relayed-call) for more details on what is done to support GSN in the contract. + + +### ERC3643ComplianceModule + +![ERC3643ComplianceModuleUML](./doc/schema/vscode-uml/ERC3643ComplianceModuleUML.png) + +#### Events + +##### TokenBound(address token) + +Emitted when a token is successfully bound to the compliance contract. + +**Event Parameters:** + +| Name | Type | Description | +| ----- | ------- | ---------------------------------------- | +| token | address | The address of the token that was bound. | + + + +------ + +##### TokenUnbound(address token) + +Emitted when a token is successfully unbound from the compliance contract. + +**Event Parameters:** + +| Name | Type | Description | +| ----- | ------- | ------------------------------------------ | +| token | address | The address of the token that was unbound. | + + + +------ + +#### Functions + +##### bindToken(address token) + +Associates a token contract with this compliance contract. + +The compliance contract may restrict operations on the bound token according to its internal compliance logic. + Reverts if the token is already bound. + +**Input Parameters:** + +| Name | Type | Description | +| ----- | ------- | --------------------------------- | +| token | address | The address of the token to bind. | + + + +------ + +##### unbindToken(address token) + +Removes the association of a token contract from this compliance contract. + +Reverts if the token is not currently bound. + +**Input Parameters:** + +| Name | Type | Description | +| ----- | ------- | ----------------------------------- | +| token | address | The address of the token to unbind. | + + + +------ + +##### isTokenBound(address token) -> bool + +Checks whether a token is currently bound to this compliance contract. + +**Input Parameters:** + +| Name | Type | Description | +| ----- | ------- | ---------------------------- | +| token | address | The token address to verify. | + + + +**Return Values:** + +| Type | Description | +| ---- | -------------------------------------------- | +| bool | True if the token is bound, false otherwise. | + + + +------ + +##### getTokenBound() -> address + +Returns the single token currently bound to this compliance contract. + +If multiple tokens are supported, consider using `getTokenBounds()`. + +**Return Values:** + +| Type | Description | +| ------- | ----------------------------------------- | +| address | The address of the currently bound token. | + + + +------ + +##### getTokenBounds() -> address[] + +Returns all tokens currently bound to this compliance contract. + +This is a view-only function and does not modify state. + This function is not part of the original ERC-3643 specification. + +**Return Values:** + +| Type | Description | +| --------- | ----------------------------------------------- | +| address[] | An array of addresses of bound token contracts. | + + + +------ + +##### created(address to, uint256 value) + +Updates the compliance contract state when tokens are created (minted). + +Called by the token contract when new tokens are issued to an account. + Reverts if the minting does not comply with the rules. + +**Input Parameters:** + +| Name | Type | Description | +| ----- | ------- | ---------------------------------------- | +| to | address | The address receiving the minted tokens. | +| value | uint256 | The number of tokens created. | + + + +------ + +##### destroyed(address from, uint256 value) + +Updates the compliance contract state when tokens are destroyed (burned). + +Called by the token contract when tokens are redeemed or burned. + Reverts if the burning does not comply with the rules. + +**Input Parameters:** + +| Name | Type | Description | +| ----- | ------- | --------------------------------------------- | +| from | address | The address whose tokens are being destroyed. | +| value | uint256 | The number of tokens destroyed. | + + + +### RulesManagementModule + +![RuleManagementModuleUML](./doc/schema/vscode-uml/RuleManagementModuleUML.png) + +#### setRules(IRule[] rules_) + +Defines the complete list of rules for the rule engine. + +Any previously configured rules are completely replaced. + Rules must be deployed contracts implementing the expected `IRule` interface. + Reverts if any rule address is zero or if duplicates are detected. + +**Input Parameters:** + +| Name | Type | Description | +| ------ | ------- | ------------------------------------------------------------ | +| rules_ | IRule[] | The array of IRule contracts to configure as the active rules. | + + + +------ + +#### rulesCount() -> uint256 + +Returns the total number of currently configured rules. + +Equivalent to the length of the internal rules array. + +**Return Values:** + +| Type | Description | +| ------- | --------------------------- | +| uint256 | The number of active rules. | + + + +------ + +#### rule(uint256 ruleId) -> address + +Retrieves the rule address at a specific index. + +Reverts if `ruleId` is out of bounds. + +**Input Parameters:** + +| Name | Type | Description | +| ------ | ------- | ------------------------------------------- | +| ruleId | uint256 | The index of the desired rule in the array. | + + + +**Return Values:** + +| Type | Description | +| ------- | ------------------------------------------------ | +| address | The address of the corresponding IRule contract. | + + + +------ + +#### rules() -> address[] + +Returns the full list of currently configured rules. + +This is a view-only function and does not modify state. + +**Return Values:** + +| Type | Description | +| --------- | ------------------------------------------------------- | +| address[] | An array containing all active rule contract addresses. | + + + +------ + +#### clearRules() + +Removes all configured rules. + +After calling this function, no rules will remain set. + +------ + +#### addRule(IRule rule_) + +Adds a new rule to the current rule set. + +Reverts if the rule address is zero or already exists in the set. + +**Input Parameters:** + +| Name | Type | Description | +| ----- | ----- | -------------------------- | +| rule_ | IRule | The IRule contract to add. | + + + +------ + +#### removeRule(IRule rule_) + +Removes a specific rule from the current rule set. + +Reverts if the provided rule is not found or does not match the stored rule at its index. + +**Input Parameters:** + +| Name | Type | Description | +| ----- | ----- | ----------------------------- | +| rule_ | IRule | The IRule contract to remove. | + + + +------ + +#### containsRule(IRule rule_) -> bool + +Checks whether a specific rule is currently configured. + +**Input Parameters:** + +| Name | Type | Description | +| ----- | ----- | ------------------------------------------- | +| rule_ | IRule | The IRule contract to check for membership. | + + + +**Return Values:** + +| Type | Description | +| ---- | --------------------------------------------- | +| bool | True if the rule is present, false otherwise. | ## Audit @@ -285,26 +866,42 @@ The final report is available in [ABDK_CMTA_CMTATRuleEngine_v_1_0.pdf](https://g ### Tools -You will find the report performed with [Slither](https://github.com/crytic/slither) in +#### Slither + +Here is the list of report performed with [Slither](https://github.com/crytic/slither) | Version | File | | ------- | ------------------------------------------------------------ | | latest | [slither-report.md](./doc/security/audits/tools/slither-report.md) | +```bash +slither . --checklist --filter-paths "openzeppelin-contracts|test|CMTAT|forge-std|mocks" > slither-report.md +``` + +#### Aderyn + +Here is the list of report performed with [Aderyn](https://github.com/Cyfrin/aderyn) + +```bash +aderyn -x mocks --output aderyn-report.md +``` + +| Version | File | +| ------- | ------------------------------------------------------------ | +| latest | [aderyn-report.md](./doc/security/audits/tools/aderyn-report.md) | + ## Documentation Here a summary of the main documentation -| Document | Link/Files | -| ----------------------- | ---------------------------------------------------- | -| Technical documentation | [doc/technical/](./doc/technical/) | -| Toolchain | [doc/TOOLCHAIN.md](./doc/TOOLCHAIN.md) | -| Functionalities | [doc/functionalities.pdf](./doc/functionalities.pdf) | -| Surya report | [doc/surya](./doc/surya/) | +| Document | Link/Files | +| ------------ | --------------------------------------- | +| Toolchain | [doc/TOOLCHAIN.md](./doc/TOOLCHAIN.md) | +| Surya report | [doc/schema/surya](./doc/schema/surya/) | -See also [Taurus - Token Transfer Management: How to Apply Restrictions with CMTAT and ERC-1404](https://www.taurushq.com/blog/token-transfer-management-how-to-apply-restrictions-with-cmtat-and-erc-1404/) (CMTAT v2.4.0) +See also [Taurus - Token Transfer Management: How to Apply Restrictions with CMTAT and ERC-1404](https://www.taurushq.com/blog/token-transfer-management-how-to-apply-restrictions-with-cmtat-and-erc-1404/) (RuleEngine v2.02 and CMTAT v2.4.0) ## Usage @@ -334,8 +931,6 @@ forge update See also the command's [documentation](https://book.getfoundry.sh/reference/forge/forge-update). - - ### Compilation The official documentation is available in the Foundry [website](https://book.getfoundry.sh/reference/forge/build-commands) @@ -387,7 +982,7 @@ forge coverage --no-match-coverage "(script|mocks|test)" --report lcov && genhtm See [Solidity Coverage in VS Code with Foundry](https://mirror.xyz/devanon.eth/RrDvKPnlD-pmpuW7hQeR5wWdVjklrpOgPCOA-PJkWFU) & [Foundry forge coverage](https://www.rareskills.io/post/foundry-forge-coverage) ### Deployment -The official documentation is available in the Foundry [website](https://book.getfoundry.sh/reference/forge/deploy-commands) +The official documentation is available in the Foundry [website](https://getfoundry.sh/forge/deploying) #### Script > This documentation has been written for the version v1.0.2 @@ -407,7 +1002,13 @@ CMTAT with RuleEngine ```bash forge script script/CMTATWithRuleEngineScript.s.sol:CMTATWithRuleEngineScript --rpc-url=$RPC_URL --broadcast --verify -vvv ``` -Value of YOUR_RPC_URL with a local instance of anvil : [127.0.0.1:8545](http://127.0.0.1:8545) + + +- Value of YOUR_RPC_URL with a local instance of anvil : [127.0.0.1:8545](http://127.0.0.1:8545) + +```bash +forge script script/CMTATWithRuleEngineScript.s.sol:CMTATWithRuleEngineScript --rpc-url=127.0.0.1:8545 --broadcast --verify -vvv +``` Only RuleEngine with a Whitelist contract @@ -415,6 +1016,14 @@ Only RuleEngine with a Whitelist contract forge script script/RuleEngineScript.s.sol:RuleEngineScript --rpc-url=$RPC_URL --broadcast --verify -vvv ``` +- With anvil + +```bash +forge script script/RuleEngineScript.s.sol:RuleEngineScript --rpc-url=127.0.0.1:8545 --broadcast --verify -vvv +``` + + + ## Intellectual property The code is copyright (c) Capital Market and Technology Association, 2018-2024, and is released under [Mozilla Public License 2.0](https://github.com/CMTA/CMTAT/blob/master/LICENSE.md). diff --git a/RuleEngine.sol b/RuleEngine.sol new file mode 100644 index 0000000..96c86c2 --- /dev/null +++ b/RuleEngine.sol @@ -0,0 +1,4973 @@ +// SPDX-License-Identifier: MPL-2.0 +pragma solidity ^0.8.20; + +// lib/CMTAT/contracts/interfaces/tokenization/IERC3643Partial.sol + +/** +* Note: +* Parameter names may differ slightly from the original ERC3643 spec +* to align with OpenZeppelin v5.3.0 naming conventions +* (e.g., `amount` → `value`). +*/ + +/** + * @title IERC3643Pause + * @dev Interface for pausing and unpausing token transfers. + * Common interface shared between CMTAT and ERC3643 implementations. + * + */ +interface IERC3643Pause { + /** + * @notice Indicates whether the contract is currently paused. + * @dev When paused, token transfers are disabled. + * @return True if the contract is paused, false otherwise. + */ + function paused() external view returns (bool); + /** + * @notice Pauses all token transfers. + * @dev Once paused, calls to transfer-related functions will revert. + * Can only be called by an account with the appropriate permission. + * + * Emits a {Paused} event. + */ + function pause() external; + + /** + * @notice Unpauses token transfers. + * @dev Restores normal token transfer behavior after a pause. + * Can only be called by an account with the appropriate permission. + * + * Emits an {Unpaused} event. + */ + function unpause() external; +} +/** + * @title ERC-3643 Base Interface for ERC-20 Token Metadata + * @dev Provides functions to update token name and symbol. + */ +interface IERC3643ERC20Base { + /** + * @notice Updates the name of the token. + * @dev Can be used to rename the token post-deployment. + * @param name The new name to assign to the token. + */ + function setName(string calldata name) external; + + /** + * @notice Updates the symbol of the token. + * @dev Can be used to change the token's symbol (e.g. for branding or reissuance). + * @param symbol The new symbol to assign to the token. + */ + function setSymbol(string calldata symbol) external; +} + +/** + * @title IERC3643BatchTransfer + * @notice Interface for batch token transfers under the ERC-3643 standard. + */ +interface IERC3643BatchTransfer { + /** + * @notice Transfers tokens to multiple recipient addresses in a single transaction. + * @dev + * Batch version of `transfer` + * - Each recipient receives the number of tokens specified in the `values` array. + * Requirement: + * - The `tos` array must not be empty. + * - `tos.length` must equal `values.length`. + * - `tos`cannot contain a zero address + * - the caller must have a balance cooresponding to the total values + * Events: + * - Emits one `Transfer` event per recipient (i.e., `tos.length` total). + * + * Enforcement-specific behavior: + * - If `IERC3643Enforcement` is implemented: + * - The sender (`msg.sender`) and each recipient in `tos` MUST NOT be frozen. + * - If `IERC3643ERC20Enforcement` is implemented: + * - The total amount transferred MUST NOT exceed the sender's available (unfrozen) balance. + * + * Note: This implementation differs from the base ERC-3643 specification by returning a `bool` + * value for compatibility with the ERC-20 `transfer` function semantics. + * + * @param tos The list of recipient addresses. + * @param values The list of token amounts corresponding to each recipient. + * @return success_ A boolean indicating whether the batch transfer was successful. + */ + function batchTransfer(address[] calldata tos,uint256[] calldata values) external returns (bool success_); +} + +/** + * @title IERC3643Base + * @notice Interface to retrieve version + */ +interface IERC3643Base { + /** + * @notice Returns the current version of the token contract. + * @dev This value is useful to know which smart contract version has been used + * @return version_ A string representing the version of the token implementation (e.g., "1.0.0"). + */ + function version() external view returns (string memory version_); +} + +/** + * @title IERC3643EnforcementEvent + * @notice Interface defining the event for account freezing and unfreezing. + */ +interface IERC3643EnforcementEvent { + /** + * @notice Emitted when an account's frozen status is changed. + * @dev + * - `account` is the address whose status changed. + * - `isFrozen` reflects the new status after the function execution: + * - `true`: account is frozen. + * - `false`: account is unfrozen. + * - `enforcer` is the address that executed the freezing/unfreezing. + * - `data` provides optional contextual information for auditing or documentation purposes. + * The event is emitted by `setAddressFrozen` and `batchSetAddressFrozen` functions + * Note: This event extends the ERC-3643 specification by including the `data` field. + * + * @param account The address that was frozen or unfrozen. + * @param isFrozen The resulting freeze status of the account. + * @param enforcer The address that initiated the change. + * @param data Additional data related to the freezing action. + */ + event AddressFrozen(address indexed account, bool indexed isFrozen, address indexed enforcer, bytes data); +} + +/** + * @title IERC3643Enforcement + * @notice Interface for account-level freezing logic. + * @dev Provides methods to check and update whether an address is frozen. + */ +interface IERC3643Enforcement { + /** + * @notice Checks whether a given account is currently frozen. + * @param account The address to query. + * @return isFrozen_ A boolean indicating if the account is frozen (`true`) or not (`false`). + */ + function isFrozen(address account) external view returns (bool isFrozen_); + /** + * @notice Sets the frozen status of a specific address. + * @dev Emits an `AddressFrozen` event. + * @param account The address whose frozen status is being updated. + * @param freeze The new frozen status (`true` to freeze, `false` to unfreeze). + */ + function setAddressFrozen(address account, bool freeze) external; + /** + * @notice Batch version of {setAddressFrozen}, allowing multiple addresses to be updated in one call. + * @param accounts An array of addresses to update. + * @param freeze An array of corresponding frozen statuses for each address. + * Requirements: + * - `accounts.length` must be equal to `freeze.length`. + */ + function batchSetAddressFrozen(address[] calldata accounts, bool[] calldata freeze) external; +} + +/** + * @title IERC3643ERC20Enforcement + * @notice Interface for enforcing partial token freezes and forced transfers, typically used in compliance-sensitive ERC-1400 scenarios. + * @dev For event definitions, see {IERC7551ERC20Enforcement}. + */ +interface IERC3643ERC20Enforcement { + /* ============ View Functions ============ */ + /** + * @notice Returns the number of tokens that are currently frozen (i.e., non-transferable) for a given account. + * @dev The frozen amount is always less than or equal to the total balance of the account. + * @param account The address of the wallet being queried. + * @return frozenBalance_ The amount of frozen tokens held by the account. + */ + function getFrozenTokens(address account) external view returns (uint256 frozenBalance_); + + /* ============ State Functions ============ */ + + /** + * @notice Freezes a specific amount of tokens for a given account. + * @dev Emits a `TokensFrozen` event. Prevents the frozen amount from being transferred. + * @param account The wallet address whose tokens are to be frozen. + * @param value The amount of tokens to freeze. + */ + function freezePartialTokens(address account, uint256 value) external; + + /** + * @notice unfreezes token amount specified for given address + * @dev Emits a TokensUnfrozen event + * @param account The address for which to update frozen tokens + * @param value Amount of Tokens to be unfrozen + */ + function unfreezePartialTokens(address account, uint256 value) external; + /** + * + * @notice Triggers a forced transfer. + * @dev +* * Force a transfer of tokens between 2 token holders + * If IERC364320Enforcement is implemented: + * Require that the total value should not exceed available balance. + * In case the `from` address has not enough free tokens (unfrozen tokens) + * but has a total balance higher or equal to the `amount` + * the amount of frozen tokens is reduced in order to have enough free tokens + * to proceed the transfer, in such a case, the remaining balance on the `from` + * account is 100% composed of frozen tokens post-transfer. + * emits a `TokensUnfrozen` event if `value` is higher than the free balance of `from` + * Emits a `Transfer` event + * @param from The address of the token holder + * @param to The address of the receiver + * @param value amount of tokens to transfer + * @return success_ `true` if successful and revert if unsuccessful + + */ + function forcedTransfer(address from, address to, uint256 value) external returns (bool success_); + +} +/** +* @title IERC3643Mint — Token Minting Interface +* @dev Interface for mintint ERC-20 compatible tokens under the ERC-3643 standard. +* Implements both single and batch mint functionalities, with support for frozen address logic if enforced. +*/ +interface IERC3643Mint{ + /** + * @notice Creates (`mints`) a specified `value` of tokens and assigns them to the `account`. + * @dev Tokens are minted by transferring them from the zero address (`address(0)`). + * Emits a {Mint} event and a {Transfer} event with `from` set to `address(0)`. + * Requirement: + * Account must not be the zero address. + * @param account The address that will receive the newly minted tokens. + * @param value The amount of tokens to mint to `account`. + */ + function mint(address account, uint256 value) external; + /** + * @notice Batch version of {mint}, allowing multiple mint operations in a single transaction. + * @dev + * For each mint action: + * - Emits a {Mint} event. + * - Emits a {Transfer} event with `from` set to the zero address. + * - Requires that `accounts` and `values` arrays have the same length. + * - None of the addresses in `accounts` can be the zero address. + * - Be cautious with large arrays as the transaction may run out of gas. + * @param accounts The list of recipient addresses for the minted tokens. + * @param values The respective amounts of tokens to mint for each recipient. + */ + function batchMint( address[] calldata accounts,uint256[] calldata values) external; +} + +/** +* @title IERC3643Burn — Token Burning Interface +* @dev Interface for burning ERC-20 compatible tokens under the ERC-3643 standard. +* Implements both single and batch burn functionalities, with support for frozen token logic if enforced. +*/ +interface IERC3643Burn{ + /** + * @notice Burns a specified amount of tokens from a given account by transferring them to `address(0)`. + * @dev + * - Decreases the total token supply by the specified `value`. + * - Emits a `Transfer` event to indicate the burn (with `to` set to `address(0)`). + * - If `IERC364320Enforcement` is implemented: + * - If the account has insufficient free (unfrozen) tokens but a sufficient total balance, + * frozen tokens are reduced to complete the burn. + * - The remaining balance on the account will consist entirely of frozen tokens after the burn. + * - Emits a `TokensUnfrozen` event if frozen tokens are unfrozen to allow the burn. + * + * @param account The address from which tokens will be burned. + * @param value The amount of tokens to burn. + */ + function burn(address account,uint256 value) external; + /** + * @notice Performs a batch burn operation, removing tokens from multiple accounts in a single transaction. + * @dev + * - Batch version of {burn} + * - Executes the burn operation for each account in the `accounts` array, using corresponding amounts in the `values` array. + * - Emits a `Transfer` event for each burn (with `to` set to `address(0)`). + * - This operation is gas-intensive and may fail if the number of accounts (`accounts.length`) is too large, causing an "out of gas" error. + * - Use with caution to avoid unnecessary transaction fees. + * Requirement: + * - `accounts` and `values` must have the same length + * @param accounts An array of addresses from which tokens will be burned. + * @param values An array of token amounts to burn, corresponding to each address in `accounts`. + */ + function batchBurn(address[] calldata accounts,uint256[] calldata values) external; +} + +interface IERC3643ComplianceRead { + /** + * @notice Returns true if the transfer is valid, and false otherwise. + * @dev Don't check the balance and the user's right (access control) + */ + function canTransfer( + address from, + address to, + uint256 value + ) external view returns (bool isValid); +} + +interface IERC3643IComplianceContract { + /** + * @notice + * Function called whenever tokens are transferred + * from one wallet to another + * @dev + * This function can be used to update state variables of the compliance contract + * This function can be called ONLY by the token contract bound to the compliance + * @param from The address of the sender + * @param to The address of the receiver + * @param value value of tokens involved in the transfer + */ + function transferred(address from, address to, uint256 value) external; +} + +// lib/CMTAT/contracts/interfaces/tokenization/draft-IERC1404.sol + +/* +* @dev Contrary to the ERC-1404, +* this interface does not inherit directly from the ERC20 interface +*/ +interface IERC1404 { + + /** + * @notice Returns a uint8 code to indicate if a transfer is restricted or not + * @dev + * See {ERC-1404} + * This function is where an issuer enforces the restriction logic of their token transfers. + * Some examples of this might include: + * - checking if the token recipient is whitelisted, + * - checking if a sender's tokens are frozen in a lock-up period, etc. + * @return uint8 restricted code, 0 means the transfer is authorized + * + */ + function detectTransferRestriction( + address from, + address to, + uint256 value + ) external view returns (uint8); + + /** + * @dev See {ERC-1404} + * This function is effectively an accessor for the "message", + * a human-readable explanation as to why a transaction is restricted. + * + */ + function messageForTransferRestriction( + uint8 restrictionCode + ) external view returns (string memory); +} + +/** +* @title IERC1404 with custom related extensions +*/ +interface IERC1404Extend is IERC1404{ + /* + * @dev leave the code 6-9 free/unused for further CMTAT additions in your ruleEngine implementation + */ + enum REJECTED_CODE_BASE { + TRANSFER_OK, + TRANSFER_REJECTED_PAUSED, + TRANSFER_REJECTED_FROM_FROZEN, + TRANSFER_REJECTED_TO_FROZEN, + TRANSFER_REJECTED_SPENDER_FROZEN, + TRANSFER_REJECTED_FROM_INSUFFICIENT_ACTIVE_BALANCE + } + + /** + * @notice Returns a uint8 code to indicate if a transfer is restricted or not + * @dev + * See {ERC-1404} + * Add an additionnal argument `spender` + * This function is where an issuer enforces the restriction logic of their token transfers. + * Some examples of this might include: + * - checking if the token recipient is whitelisted, + * - checking if a sender's tokens are frozen in a lock-up period, etc. + * @return uint8 restricted code, 0 means the transfer is authorized + * + */ + function detectTransferRestrictionFrom( + address spender, + address from, + address to, + uint256 value + ) external view returns (uint8); +} + +// lib/openzeppelin-contracts/contracts/access/IAccessControl.sol + +// OpenZeppelin Contracts (last updated v5.3.0) (access/IAccessControl.sol) + +/** + * @dev External interface of AccessControl declared to support ERC-165 detection. + */ +interface IAccessControl { + /** + * @dev The `account` is missing a role. + */ + error AccessControlUnauthorizedAccount(address account, bytes32 neededRole); + + /** + * @dev The caller of a function is not the expected one. + * + * NOTE: Don't confuse with {AccessControlUnauthorizedAccount}. + */ + error AccessControlBadConfirmation(); + + /** + * @dev Emitted when `newAdminRole` is set as ``role``'s admin role, replacing `previousAdminRole` + * + * `DEFAULT_ADMIN_ROLE` is the starting admin for all roles, despite + * {RoleAdminChanged} not being emitted to signal this. + */ + event RoleAdminChanged(bytes32 indexed role, bytes32 indexed previousAdminRole, bytes32 indexed newAdminRole); + + /** + * @dev Emitted when `account` is granted `role`. + * + * `sender` is the account that originated the contract call. This account bears the admin role (for the granted role). + * Expected in cases where the role was granted using the internal {AccessControl-_grantRole}. + */ + event RoleGranted(bytes32 indexed role, address indexed account, address indexed sender); + + /** + * @dev Emitted when `account` is revoked `role`. + * + * `sender` is the account that originated the contract call: + * - if using `revokeRole`, it is the admin role bearer + * - if using `renounceRole`, it is the role bearer (i.e. `account`) + */ + event RoleRevoked(bytes32 indexed role, address indexed account, address indexed sender); + + /** + * @dev Returns `true` if `account` has been granted `role`. + */ + function hasRole(bytes32 role, address account) external view returns (bool); + + /** + * @dev Returns the admin role that controls `role`. See {grantRole} and + * {revokeRole}. + * + * To change a role's admin, use {AccessControl-_setRoleAdmin}. + */ + function getRoleAdmin(bytes32 role) external view returns (bytes32); + + /** + * @dev Grants `role` to `account`. + * + * If `account` had not been already granted `role`, emits a {RoleGranted} + * event. + * + * Requirements: + * + * - the caller must have ``role``'s admin role. + */ + function grantRole(bytes32 role, address account) external; + + /** + * @dev Revokes `role` from `account`. + * + * If `account` had been granted `role`, emits a {RoleRevoked} event. + * + * Requirements: + * + * - the caller must have ``role``'s admin role. + */ + function revokeRole(bytes32 role, address account) external; + + /** + * @dev Revokes `role` from the calling account. + * + * Roles are often managed via {grantRole} and {revokeRole}: this function's + * purpose is to provide a mechanism for accounts to lose their privileges + * if they are compromised (such as when a trusted device is misplaced). + * + * If the calling account had been granted `role`, emits a {RoleRevoked} + * event. + * + * Requirements: + * + * - the caller must be `callerConfirmation`. + */ + function renounceRole(bytes32 role, address callerConfirmation) external; +} + +// lib/openzeppelin-contracts/contracts/utils/Comparators.sol + +// OpenZeppelin Contracts (last updated v5.1.0) (utils/Comparators.sol) + +/** + * @dev Provides a set of functions to compare values. + * + * _Available since v5.1._ + */ +library Comparators { + function lt(uint256 a, uint256 b) internal pure returns (bool) { + return a < b; + } + + function gt(uint256 a, uint256 b) internal pure returns (bool) { + return a > b; + } +} + +// lib/openzeppelin-contracts/contracts/utils/Context.sol + +// OpenZeppelin Contracts (last updated v5.0.1) (utils/Context.sol) + +/** + * @dev Provides information about the current execution context, including the + * sender of the transaction and its data. While these are generally available + * via msg.sender and msg.data, they should not be accessed in such a direct + * manner, since when dealing with meta-transactions the account sending and + * paying for execution may not be the actual sender (as far as an application + * is concerned). + * + * This contract is only required for intermediate, library-like contracts. + */ +abstract contract Context { + function _msgSender() internal view virtual returns (address) { + return msg.sender; + } + + function _msgData() internal view virtual returns (bytes calldata) { + return msg.data; + } + + function _contextSuffixLength() internal view virtual returns (uint256) { + return 0; + } +} + +// lib/openzeppelin-contracts/contracts/utils/Panic.sol + +// OpenZeppelin Contracts (last updated v5.1.0) (utils/Panic.sol) + +/** + * @dev Helper library for emitting standardized panic codes. + * + * ```solidity + * contract Example { + * using Panic for uint256; + * + * // Use any of the declared internal constants + * function foo() { Panic.GENERIC.panic(); } + * + * // Alternatively + * function foo() { Panic.panic(Panic.GENERIC); } + * } + * ``` + * + * Follows the list from https://github.com/ethereum/solidity/blob/v0.8.24/libsolutil/ErrorCodes.h[libsolutil]. + * + * _Available since v5.1._ + */ +// slither-disable-next-line unused-state +library Panic { + /// @dev generic / unspecified error + uint256 internal constant GENERIC = 0x00; + /// @dev used by the assert() builtin + uint256 internal constant ASSERT = 0x01; + /// @dev arithmetic underflow or overflow + uint256 internal constant UNDER_OVERFLOW = 0x11; + /// @dev division or modulo by zero + uint256 internal constant DIVISION_BY_ZERO = 0x12; + /// @dev enum conversion error + uint256 internal constant ENUM_CONVERSION_ERROR = 0x21; + /// @dev invalid encoding in storage + uint256 internal constant STORAGE_ENCODING_ERROR = 0x22; + /// @dev empty array pop + uint256 internal constant EMPTY_ARRAY_POP = 0x31; + /// @dev array out of bounds access + uint256 internal constant ARRAY_OUT_OF_BOUNDS = 0x32; + /// @dev resource error (too large allocation or too large array) + uint256 internal constant RESOURCE_ERROR = 0x41; + /// @dev calling invalid internal function + uint256 internal constant INVALID_INTERNAL_FUNCTION = 0x51; + + /// @dev Reverts with a panic code. Recommended to use with + /// the internal constants with predefined codes. + function panic(uint256 code) internal pure { + assembly ("memory-safe") { + mstore(0x00, 0x4e487b71) + mstore(0x20, code) + revert(0x1c, 0x24) + } + } +} + +// lib/openzeppelin-contracts/contracts/utils/SlotDerivation.sol + +// OpenZeppelin Contracts (last updated v5.3.0) (utils/SlotDerivation.sol) +// This file was procedurally generated from scripts/generate/templates/SlotDerivation.js. + +/** + * @dev Library for computing storage (and transient storage) locations from namespaces and deriving slots + * corresponding to standard patterns. The derivation method for array and mapping matches the storage layout used by + * the solidity language / compiler. + * + * See https://docs.soliditylang.org/en/v0.8.20/internals/layout_in_storage.html#mappings-and-dynamic-arrays[Solidity docs for mappings and dynamic arrays.]. + * + * Example usage: + * ```solidity + * contract Example { + * // Add the library methods + * using StorageSlot for bytes32; + * using SlotDerivation for bytes32; + * + * // Declare a namespace + * string private constant _NAMESPACE = ""; // eg. OpenZeppelin.Slot + * + * function setValueInNamespace(uint256 key, address newValue) internal { + * _NAMESPACE.erc7201Slot().deriveMapping(key).getAddressSlot().value = newValue; + * } + * + * function getValueInNamespace(uint256 key) internal view returns (address) { + * return _NAMESPACE.erc7201Slot().deriveMapping(key).getAddressSlot().value; + * } + * } + * ``` + * + * TIP: Consider using this library along with {StorageSlot}. + * + * NOTE: This library provides a way to manipulate storage locations in a non-standard way. Tooling for checking + * upgrade safety will ignore the slots accessed through this library. + * + * _Available since v5.1._ + */ +library SlotDerivation { + /** + * @dev Derive an ERC-7201 slot from a string (namespace). + */ + function erc7201Slot(string memory namespace) internal pure returns (bytes32 slot) { + assembly ("memory-safe") { + mstore(0x00, sub(keccak256(add(namespace, 0x20), mload(namespace)), 1)) + slot := and(keccak256(0x00, 0x20), not(0xff)) + } + } + + /** + * @dev Add an offset to a slot to get the n-th element of a structure or an array. + */ + function offset(bytes32 slot, uint256 pos) internal pure returns (bytes32 result) { + unchecked { + return bytes32(uint256(slot) + pos); + } + } + + /** + * @dev Derive the location of the first element in an array from the slot where the length is stored. + */ + function deriveArray(bytes32 slot) internal pure returns (bytes32 result) { + assembly ("memory-safe") { + mstore(0x00, slot) + result := keccak256(0x00, 0x20) + } + } + + /** + * @dev Derive the location of a mapping element from the key. + */ + function deriveMapping(bytes32 slot, address key) internal pure returns (bytes32 result) { + assembly ("memory-safe") { + mstore(0x00, and(key, shr(96, not(0)))) + mstore(0x20, slot) + result := keccak256(0x00, 0x40) + } + } + + /** + * @dev Derive the location of a mapping element from the key. + */ + function deriveMapping(bytes32 slot, bool key) internal pure returns (bytes32 result) { + assembly ("memory-safe") { + mstore(0x00, iszero(iszero(key))) + mstore(0x20, slot) + result := keccak256(0x00, 0x40) + } + } + + /** + * @dev Derive the location of a mapping element from the key. + */ + function deriveMapping(bytes32 slot, bytes32 key) internal pure returns (bytes32 result) { + assembly ("memory-safe") { + mstore(0x00, key) + mstore(0x20, slot) + result := keccak256(0x00, 0x40) + } + } + + /** + * @dev Derive the location of a mapping element from the key. + */ + function deriveMapping(bytes32 slot, uint256 key) internal pure returns (bytes32 result) { + assembly ("memory-safe") { + mstore(0x00, key) + mstore(0x20, slot) + result := keccak256(0x00, 0x40) + } + } + + /** + * @dev Derive the location of a mapping element from the key. + */ + function deriveMapping(bytes32 slot, int256 key) internal pure returns (bytes32 result) { + assembly ("memory-safe") { + mstore(0x00, key) + mstore(0x20, slot) + result := keccak256(0x00, 0x40) + } + } + + /** + * @dev Derive the location of a mapping element from the key. + */ + function deriveMapping(bytes32 slot, string memory key) internal pure returns (bytes32 result) { + assembly ("memory-safe") { + let length := mload(key) + let begin := add(key, 0x20) + let end := add(begin, length) + let cache := mload(end) + mstore(end, slot) + result := keccak256(begin, add(length, 0x20)) + mstore(end, cache) + } + } + + /** + * @dev Derive the location of a mapping element from the key. + */ + function deriveMapping(bytes32 slot, bytes memory key) internal pure returns (bytes32 result) { + assembly ("memory-safe") { + let length := mload(key) + let begin := add(key, 0x20) + let end := add(begin, length) + let cache := mload(end) + mstore(end, slot) + result := keccak256(begin, add(length, 0x20)) + mstore(end, cache) + } + } +} + +// lib/openzeppelin-contracts/contracts/utils/StorageSlot.sol + +// OpenZeppelin Contracts (last updated v5.1.0) (utils/StorageSlot.sol) +// This file was procedurally generated from scripts/generate/templates/StorageSlot.js. + +/** + * @dev Library for reading and writing primitive types to specific storage slots. + * + * Storage slots are often used to avoid storage conflict when dealing with upgradeable contracts. + * This library helps with reading and writing to such slots without the need for inline assembly. + * + * The functions in this library return Slot structs that contain a `value` member that can be used to read or write. + * + * Example usage to set ERC-1967 implementation slot: + * ```solidity + * contract ERC1967 { + * // Define the slot. Alternatively, use the SlotDerivation library to derive the slot. + * bytes32 internal constant _IMPLEMENTATION_SLOT = 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc; + * + * function _getImplementation() internal view returns (address) { + * return StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value; + * } + * + * function _setImplementation(address newImplementation) internal { + * require(newImplementation.code.length > 0); + * StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value = newImplementation; + * } + * } + * ``` + * + * TIP: Consider using this library along with {SlotDerivation}. + */ +library StorageSlot { + struct AddressSlot { + address value; + } + + struct BooleanSlot { + bool value; + } + + struct Bytes32Slot { + bytes32 value; + } + + struct Uint256Slot { + uint256 value; + } + + struct Int256Slot { + int256 value; + } + + struct StringSlot { + string value; + } + + struct BytesSlot { + bytes value; + } + + /** + * @dev Returns an `AddressSlot` with member `value` located at `slot`. + */ + function getAddressSlot(bytes32 slot) internal pure returns (AddressSlot storage r) { + assembly ("memory-safe") { + r.slot := slot + } + } + + /** + * @dev Returns a `BooleanSlot` with member `value` located at `slot`. + */ + function getBooleanSlot(bytes32 slot) internal pure returns (BooleanSlot storage r) { + assembly ("memory-safe") { + r.slot := slot + } + } + + /** + * @dev Returns a `Bytes32Slot` with member `value` located at `slot`. + */ + function getBytes32Slot(bytes32 slot) internal pure returns (Bytes32Slot storage r) { + assembly ("memory-safe") { + r.slot := slot + } + } + + /** + * @dev Returns a `Uint256Slot` with member `value` located at `slot`. + */ + function getUint256Slot(bytes32 slot) internal pure returns (Uint256Slot storage r) { + assembly ("memory-safe") { + r.slot := slot + } + } + + /** + * @dev Returns a `Int256Slot` with member `value` located at `slot`. + */ + function getInt256Slot(bytes32 slot) internal pure returns (Int256Slot storage r) { + assembly ("memory-safe") { + r.slot := slot + } + } + + /** + * @dev Returns a `StringSlot` with member `value` located at `slot`. + */ + function getStringSlot(bytes32 slot) internal pure returns (StringSlot storage r) { + assembly ("memory-safe") { + r.slot := slot + } + } + + /** + * @dev Returns an `StringSlot` representation of the string storage pointer `store`. + */ + function getStringSlot(string storage store) internal pure returns (StringSlot storage r) { + assembly ("memory-safe") { + r.slot := store.slot + } + } + + /** + * @dev Returns a `BytesSlot` with member `value` located at `slot`. + */ + function getBytesSlot(bytes32 slot) internal pure returns (BytesSlot storage r) { + assembly ("memory-safe") { + r.slot := slot + } + } + + /** + * @dev Returns an `BytesSlot` representation of the bytes storage pointer `store`. + */ + function getBytesSlot(bytes storage store) internal pure returns (BytesSlot storage r) { + assembly ("memory-safe") { + r.slot := store.slot + } + } +} + +// lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol + +// OpenZeppelin Contracts (last updated v5.1.0) (utils/introspection/IERC165.sol) + +/** + * @dev Interface of the ERC-165 standard, as defined in the + * https://eips.ethereum.org/EIPS/eip-165[ERC]. + * + * Implementers can declare support of contract interfaces, which can then be + * queried by others ({ERC165Checker}). + * + * For an implementation, see {ERC165}. + */ +interface IERC165 { + /** + * @dev Returns true if this contract implements the interface defined by + * `interfaceId`. See the corresponding + * https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[ERC section] + * to learn more about how these ids are created. + * + * This function call must use less than 30 000 gas. + */ + function supportsInterface(bytes4 interfaceId) external view returns (bool); +} + +// lib/openzeppelin-contracts/contracts/utils/math/SafeCast.sol + +// OpenZeppelin Contracts (last updated v5.1.0) (utils/math/SafeCast.sol) +// This file was procedurally generated from scripts/generate/templates/SafeCast.js. + +/** + * @dev Wrappers over Solidity's uintXX/intXX/bool casting operators with added overflow + * checks. + * + * Downcasting from uint256/int256 in Solidity does not revert on overflow. This can + * easily result in undesired exploitation or bugs, since developers usually + * assume that overflows raise errors. `SafeCast` restores this intuition by + * reverting the transaction when such an operation overflows. + * + * Using this library instead of the unchecked operations eliminates an entire + * class of bugs, so it's recommended to use it always. + */ +library SafeCast { + /** + * @dev Value doesn't fit in an uint of `bits` size. + */ + error SafeCastOverflowedUintDowncast(uint8 bits, uint256 value); + + /** + * @dev An int value doesn't fit in an uint of `bits` size. + */ + error SafeCastOverflowedIntToUint(int256 value); + + /** + * @dev Value doesn't fit in an int of `bits` size. + */ + error SafeCastOverflowedIntDowncast(uint8 bits, int256 value); + + /** + * @dev An uint value doesn't fit in an int of `bits` size. + */ + error SafeCastOverflowedUintToInt(uint256 value); + + /** + * @dev Returns the downcasted uint248 from uint256, reverting on + * overflow (when the input is greater than largest uint248). + * + * Counterpart to Solidity's `uint248` operator. + * + * Requirements: + * + * - input must fit into 248 bits + */ + function toUint248(uint256 value) internal pure returns (uint248) { + if (value > type(uint248).max) { + revert SafeCastOverflowedUintDowncast(248, value); + } + return uint248(value); + } + + /** + * @dev Returns the downcasted uint240 from uint256, reverting on + * overflow (when the input is greater than largest uint240). + * + * Counterpart to Solidity's `uint240` operator. + * + * Requirements: + * + * - input must fit into 240 bits + */ + function toUint240(uint256 value) internal pure returns (uint240) { + if (value > type(uint240).max) { + revert SafeCastOverflowedUintDowncast(240, value); + } + return uint240(value); + } + + /** + * @dev Returns the downcasted uint232 from uint256, reverting on + * overflow (when the input is greater than largest uint232). + * + * Counterpart to Solidity's `uint232` operator. + * + * Requirements: + * + * - input must fit into 232 bits + */ + function toUint232(uint256 value) internal pure returns (uint232) { + if (value > type(uint232).max) { + revert SafeCastOverflowedUintDowncast(232, value); + } + return uint232(value); + } + + /** + * @dev Returns the downcasted uint224 from uint256, reverting on + * overflow (when the input is greater than largest uint224). + * + * Counterpart to Solidity's `uint224` operator. + * + * Requirements: + * + * - input must fit into 224 bits + */ + function toUint224(uint256 value) internal pure returns (uint224) { + if (value > type(uint224).max) { + revert SafeCastOverflowedUintDowncast(224, value); + } + return uint224(value); + } + + /** + * @dev Returns the downcasted uint216 from uint256, reverting on + * overflow (when the input is greater than largest uint216). + * + * Counterpart to Solidity's `uint216` operator. + * + * Requirements: + * + * - input must fit into 216 bits + */ + function toUint216(uint256 value) internal pure returns (uint216) { + if (value > type(uint216).max) { + revert SafeCastOverflowedUintDowncast(216, value); + } + return uint216(value); + } + + /** + * @dev Returns the downcasted uint208 from uint256, reverting on + * overflow (when the input is greater than largest uint208). + * + * Counterpart to Solidity's `uint208` operator. + * + * Requirements: + * + * - input must fit into 208 bits + */ + function toUint208(uint256 value) internal pure returns (uint208) { + if (value > type(uint208).max) { + revert SafeCastOverflowedUintDowncast(208, value); + } + return uint208(value); + } + + /** + * @dev Returns the downcasted uint200 from uint256, reverting on + * overflow (when the input is greater than largest uint200). + * + * Counterpart to Solidity's `uint200` operator. + * + * Requirements: + * + * - input must fit into 200 bits + */ + function toUint200(uint256 value) internal pure returns (uint200) { + if (value > type(uint200).max) { + revert SafeCastOverflowedUintDowncast(200, value); + } + return uint200(value); + } + + /** + * @dev Returns the downcasted uint192 from uint256, reverting on + * overflow (when the input is greater than largest uint192). + * + * Counterpart to Solidity's `uint192` operator. + * + * Requirements: + * + * - input must fit into 192 bits + */ + function toUint192(uint256 value) internal pure returns (uint192) { + if (value > type(uint192).max) { + revert SafeCastOverflowedUintDowncast(192, value); + } + return uint192(value); + } + + /** + * @dev Returns the downcasted uint184 from uint256, reverting on + * overflow (when the input is greater than largest uint184). + * + * Counterpart to Solidity's `uint184` operator. + * + * Requirements: + * + * - input must fit into 184 bits + */ + function toUint184(uint256 value) internal pure returns (uint184) { + if (value > type(uint184).max) { + revert SafeCastOverflowedUintDowncast(184, value); + } + return uint184(value); + } + + /** + * @dev Returns the downcasted uint176 from uint256, reverting on + * overflow (when the input is greater than largest uint176). + * + * Counterpart to Solidity's `uint176` operator. + * + * Requirements: + * + * - input must fit into 176 bits + */ + function toUint176(uint256 value) internal pure returns (uint176) { + if (value > type(uint176).max) { + revert SafeCastOverflowedUintDowncast(176, value); + } + return uint176(value); + } + + /** + * @dev Returns the downcasted uint168 from uint256, reverting on + * overflow (when the input is greater than largest uint168). + * + * Counterpart to Solidity's `uint168` operator. + * + * Requirements: + * + * - input must fit into 168 bits + */ + function toUint168(uint256 value) internal pure returns (uint168) { + if (value > type(uint168).max) { + revert SafeCastOverflowedUintDowncast(168, value); + } + return uint168(value); + } + + /** + * @dev Returns the downcasted uint160 from uint256, reverting on + * overflow (when the input is greater than largest uint160). + * + * Counterpart to Solidity's `uint160` operator. + * + * Requirements: + * + * - input must fit into 160 bits + */ + function toUint160(uint256 value) internal pure returns (uint160) { + if (value > type(uint160).max) { + revert SafeCastOverflowedUintDowncast(160, value); + } + return uint160(value); + } + + /** + * @dev Returns the downcasted uint152 from uint256, reverting on + * overflow (when the input is greater than largest uint152). + * + * Counterpart to Solidity's `uint152` operator. + * + * Requirements: + * + * - input must fit into 152 bits + */ + function toUint152(uint256 value) internal pure returns (uint152) { + if (value > type(uint152).max) { + revert SafeCastOverflowedUintDowncast(152, value); + } + return uint152(value); + } + + /** + * @dev Returns the downcasted uint144 from uint256, reverting on + * overflow (when the input is greater than largest uint144). + * + * Counterpart to Solidity's `uint144` operator. + * + * Requirements: + * + * - input must fit into 144 bits + */ + function toUint144(uint256 value) internal pure returns (uint144) { + if (value > type(uint144).max) { + revert SafeCastOverflowedUintDowncast(144, value); + } + return uint144(value); + } + + /** + * @dev Returns the downcasted uint136 from uint256, reverting on + * overflow (when the input is greater than largest uint136). + * + * Counterpart to Solidity's `uint136` operator. + * + * Requirements: + * + * - input must fit into 136 bits + */ + function toUint136(uint256 value) internal pure returns (uint136) { + if (value > type(uint136).max) { + revert SafeCastOverflowedUintDowncast(136, value); + } + return uint136(value); + } + + /** + * @dev Returns the downcasted uint128 from uint256, reverting on + * overflow (when the input is greater than largest uint128). + * + * Counterpart to Solidity's `uint128` operator. + * + * Requirements: + * + * - input must fit into 128 bits + */ + function toUint128(uint256 value) internal pure returns (uint128) { + if (value > type(uint128).max) { + revert SafeCastOverflowedUintDowncast(128, value); + } + return uint128(value); + } + + /** + * @dev Returns the downcasted uint120 from uint256, reverting on + * overflow (when the input is greater than largest uint120). + * + * Counterpart to Solidity's `uint120` operator. + * + * Requirements: + * + * - input must fit into 120 bits + */ + function toUint120(uint256 value) internal pure returns (uint120) { + if (value > type(uint120).max) { + revert SafeCastOverflowedUintDowncast(120, value); + } + return uint120(value); + } + + /** + * @dev Returns the downcasted uint112 from uint256, reverting on + * overflow (when the input is greater than largest uint112). + * + * Counterpart to Solidity's `uint112` operator. + * + * Requirements: + * + * - input must fit into 112 bits + */ + function toUint112(uint256 value) internal pure returns (uint112) { + if (value > type(uint112).max) { + revert SafeCastOverflowedUintDowncast(112, value); + } + return uint112(value); + } + + /** + * @dev Returns the downcasted uint104 from uint256, reverting on + * overflow (when the input is greater than largest uint104). + * + * Counterpart to Solidity's `uint104` operator. + * + * Requirements: + * + * - input must fit into 104 bits + */ + function toUint104(uint256 value) internal pure returns (uint104) { + if (value > type(uint104).max) { + revert SafeCastOverflowedUintDowncast(104, value); + } + return uint104(value); + } + + /** + * @dev Returns the downcasted uint96 from uint256, reverting on + * overflow (when the input is greater than largest uint96). + * + * Counterpart to Solidity's `uint96` operator. + * + * Requirements: + * + * - input must fit into 96 bits + */ + function toUint96(uint256 value) internal pure returns (uint96) { + if (value > type(uint96).max) { + revert SafeCastOverflowedUintDowncast(96, value); + } + return uint96(value); + } + + /** + * @dev Returns the downcasted uint88 from uint256, reverting on + * overflow (when the input is greater than largest uint88). + * + * Counterpart to Solidity's `uint88` operator. + * + * Requirements: + * + * - input must fit into 88 bits + */ + function toUint88(uint256 value) internal pure returns (uint88) { + if (value > type(uint88).max) { + revert SafeCastOverflowedUintDowncast(88, value); + } + return uint88(value); + } + + /** + * @dev Returns the downcasted uint80 from uint256, reverting on + * overflow (when the input is greater than largest uint80). + * + * Counterpart to Solidity's `uint80` operator. + * + * Requirements: + * + * - input must fit into 80 bits + */ + function toUint80(uint256 value) internal pure returns (uint80) { + if (value > type(uint80).max) { + revert SafeCastOverflowedUintDowncast(80, value); + } + return uint80(value); + } + + /** + * @dev Returns the downcasted uint72 from uint256, reverting on + * overflow (when the input is greater than largest uint72). + * + * Counterpart to Solidity's `uint72` operator. + * + * Requirements: + * + * - input must fit into 72 bits + */ + function toUint72(uint256 value) internal pure returns (uint72) { + if (value > type(uint72).max) { + revert SafeCastOverflowedUintDowncast(72, value); + } + return uint72(value); + } + + /** + * @dev Returns the downcasted uint64 from uint256, reverting on + * overflow (when the input is greater than largest uint64). + * + * Counterpart to Solidity's `uint64` operator. + * + * Requirements: + * + * - input must fit into 64 bits + */ + function toUint64(uint256 value) internal pure returns (uint64) { + if (value > type(uint64).max) { + revert SafeCastOverflowedUintDowncast(64, value); + } + return uint64(value); + } + + /** + * @dev Returns the downcasted uint56 from uint256, reverting on + * overflow (when the input is greater than largest uint56). + * + * Counterpart to Solidity's `uint56` operator. + * + * Requirements: + * + * - input must fit into 56 bits + */ + function toUint56(uint256 value) internal pure returns (uint56) { + if (value > type(uint56).max) { + revert SafeCastOverflowedUintDowncast(56, value); + } + return uint56(value); + } + + /** + * @dev Returns the downcasted uint48 from uint256, reverting on + * overflow (when the input is greater than largest uint48). + * + * Counterpart to Solidity's `uint48` operator. + * + * Requirements: + * + * - input must fit into 48 bits + */ + function toUint48(uint256 value) internal pure returns (uint48) { + if (value > type(uint48).max) { + revert SafeCastOverflowedUintDowncast(48, value); + } + return uint48(value); + } + + /** + * @dev Returns the downcasted uint40 from uint256, reverting on + * overflow (when the input is greater than largest uint40). + * + * Counterpart to Solidity's `uint40` operator. + * + * Requirements: + * + * - input must fit into 40 bits + */ + function toUint40(uint256 value) internal pure returns (uint40) { + if (value > type(uint40).max) { + revert SafeCastOverflowedUintDowncast(40, value); + } + return uint40(value); + } + + /** + * @dev Returns the downcasted uint32 from uint256, reverting on + * overflow (when the input is greater than largest uint32). + * + * Counterpart to Solidity's `uint32` operator. + * + * Requirements: + * + * - input must fit into 32 bits + */ + function toUint32(uint256 value) internal pure returns (uint32) { + if (value > type(uint32).max) { + revert SafeCastOverflowedUintDowncast(32, value); + } + return uint32(value); + } + + /** + * @dev Returns the downcasted uint24 from uint256, reverting on + * overflow (when the input is greater than largest uint24). + * + * Counterpart to Solidity's `uint24` operator. + * + * Requirements: + * + * - input must fit into 24 bits + */ + function toUint24(uint256 value) internal pure returns (uint24) { + if (value > type(uint24).max) { + revert SafeCastOverflowedUintDowncast(24, value); + } + return uint24(value); + } + + /** + * @dev Returns the downcasted uint16 from uint256, reverting on + * overflow (when the input is greater than largest uint16). + * + * Counterpart to Solidity's `uint16` operator. + * + * Requirements: + * + * - input must fit into 16 bits + */ + function toUint16(uint256 value) internal pure returns (uint16) { + if (value > type(uint16).max) { + revert SafeCastOverflowedUintDowncast(16, value); + } + return uint16(value); + } + + /** + * @dev Returns the downcasted uint8 from uint256, reverting on + * overflow (when the input is greater than largest uint8). + * + * Counterpart to Solidity's `uint8` operator. + * + * Requirements: + * + * - input must fit into 8 bits + */ + function toUint8(uint256 value) internal pure returns (uint8) { + if (value > type(uint8).max) { + revert SafeCastOverflowedUintDowncast(8, value); + } + return uint8(value); + } + + /** + * @dev Converts a signed int256 into an unsigned uint256. + * + * Requirements: + * + * - input must be greater than or equal to 0. + */ + function toUint256(int256 value) internal pure returns (uint256) { + if (value < 0) { + revert SafeCastOverflowedIntToUint(value); + } + return uint256(value); + } + + /** + * @dev Returns the downcasted int248 from int256, reverting on + * overflow (when the input is less than smallest int248 or + * greater than largest int248). + * + * Counterpart to Solidity's `int248` operator. + * + * Requirements: + * + * - input must fit into 248 bits + */ + function toInt248(int256 value) internal pure returns (int248 downcasted) { + downcasted = int248(value); + if (downcasted != value) { + revert SafeCastOverflowedIntDowncast(248, value); + } + } + + /** + * @dev Returns the downcasted int240 from int256, reverting on + * overflow (when the input is less than smallest int240 or + * greater than largest int240). + * + * Counterpart to Solidity's `int240` operator. + * + * Requirements: + * + * - input must fit into 240 bits + */ + function toInt240(int256 value) internal pure returns (int240 downcasted) { + downcasted = int240(value); + if (downcasted != value) { + revert SafeCastOverflowedIntDowncast(240, value); + } + } + + /** + * @dev Returns the downcasted int232 from int256, reverting on + * overflow (when the input is less than smallest int232 or + * greater than largest int232). + * + * Counterpart to Solidity's `int232` operator. + * + * Requirements: + * + * - input must fit into 232 bits + */ + function toInt232(int256 value) internal pure returns (int232 downcasted) { + downcasted = int232(value); + if (downcasted != value) { + revert SafeCastOverflowedIntDowncast(232, value); + } + } + + /** + * @dev Returns the downcasted int224 from int256, reverting on + * overflow (when the input is less than smallest int224 or + * greater than largest int224). + * + * Counterpart to Solidity's `int224` operator. + * + * Requirements: + * + * - input must fit into 224 bits + */ + function toInt224(int256 value) internal pure returns (int224 downcasted) { + downcasted = int224(value); + if (downcasted != value) { + revert SafeCastOverflowedIntDowncast(224, value); + } + } + + /** + * @dev Returns the downcasted int216 from int256, reverting on + * overflow (when the input is less than smallest int216 or + * greater than largest int216). + * + * Counterpart to Solidity's `int216` operator. + * + * Requirements: + * + * - input must fit into 216 bits + */ + function toInt216(int256 value) internal pure returns (int216 downcasted) { + downcasted = int216(value); + if (downcasted != value) { + revert SafeCastOverflowedIntDowncast(216, value); + } + } + + /** + * @dev Returns the downcasted int208 from int256, reverting on + * overflow (when the input is less than smallest int208 or + * greater than largest int208). + * + * Counterpart to Solidity's `int208` operator. + * + * Requirements: + * + * - input must fit into 208 bits + */ + function toInt208(int256 value) internal pure returns (int208 downcasted) { + downcasted = int208(value); + if (downcasted != value) { + revert SafeCastOverflowedIntDowncast(208, value); + } + } + + /** + * @dev Returns the downcasted int200 from int256, reverting on + * overflow (when the input is less than smallest int200 or + * greater than largest int200). + * + * Counterpart to Solidity's `int200` operator. + * + * Requirements: + * + * - input must fit into 200 bits + */ + function toInt200(int256 value) internal pure returns (int200 downcasted) { + downcasted = int200(value); + if (downcasted != value) { + revert SafeCastOverflowedIntDowncast(200, value); + } + } + + /** + * @dev Returns the downcasted int192 from int256, reverting on + * overflow (when the input is less than smallest int192 or + * greater than largest int192). + * + * Counterpart to Solidity's `int192` operator. + * + * Requirements: + * + * - input must fit into 192 bits + */ + function toInt192(int256 value) internal pure returns (int192 downcasted) { + downcasted = int192(value); + if (downcasted != value) { + revert SafeCastOverflowedIntDowncast(192, value); + } + } + + /** + * @dev Returns the downcasted int184 from int256, reverting on + * overflow (when the input is less than smallest int184 or + * greater than largest int184). + * + * Counterpart to Solidity's `int184` operator. + * + * Requirements: + * + * - input must fit into 184 bits + */ + function toInt184(int256 value) internal pure returns (int184 downcasted) { + downcasted = int184(value); + if (downcasted != value) { + revert SafeCastOverflowedIntDowncast(184, value); + } + } + + /** + * @dev Returns the downcasted int176 from int256, reverting on + * overflow (when the input is less than smallest int176 or + * greater than largest int176). + * + * Counterpart to Solidity's `int176` operator. + * + * Requirements: + * + * - input must fit into 176 bits + */ + function toInt176(int256 value) internal pure returns (int176 downcasted) { + downcasted = int176(value); + if (downcasted != value) { + revert SafeCastOverflowedIntDowncast(176, value); + } + } + + /** + * @dev Returns the downcasted int168 from int256, reverting on + * overflow (when the input is less than smallest int168 or + * greater than largest int168). + * + * Counterpart to Solidity's `int168` operator. + * + * Requirements: + * + * - input must fit into 168 bits + */ + function toInt168(int256 value) internal pure returns (int168 downcasted) { + downcasted = int168(value); + if (downcasted != value) { + revert SafeCastOverflowedIntDowncast(168, value); + } + } + + /** + * @dev Returns the downcasted int160 from int256, reverting on + * overflow (when the input is less than smallest int160 or + * greater than largest int160). + * + * Counterpart to Solidity's `int160` operator. + * + * Requirements: + * + * - input must fit into 160 bits + */ + function toInt160(int256 value) internal pure returns (int160 downcasted) { + downcasted = int160(value); + if (downcasted != value) { + revert SafeCastOverflowedIntDowncast(160, value); + } + } + + /** + * @dev Returns the downcasted int152 from int256, reverting on + * overflow (when the input is less than smallest int152 or + * greater than largest int152). + * + * Counterpart to Solidity's `int152` operator. + * + * Requirements: + * + * - input must fit into 152 bits + */ + function toInt152(int256 value) internal pure returns (int152 downcasted) { + downcasted = int152(value); + if (downcasted != value) { + revert SafeCastOverflowedIntDowncast(152, value); + } + } + + /** + * @dev Returns the downcasted int144 from int256, reverting on + * overflow (when the input is less than smallest int144 or + * greater than largest int144). + * + * Counterpart to Solidity's `int144` operator. + * + * Requirements: + * + * - input must fit into 144 bits + */ + function toInt144(int256 value) internal pure returns (int144 downcasted) { + downcasted = int144(value); + if (downcasted != value) { + revert SafeCastOverflowedIntDowncast(144, value); + } + } + + /** + * @dev Returns the downcasted int136 from int256, reverting on + * overflow (when the input is less than smallest int136 or + * greater than largest int136). + * + * Counterpart to Solidity's `int136` operator. + * + * Requirements: + * + * - input must fit into 136 bits + */ + function toInt136(int256 value) internal pure returns (int136 downcasted) { + downcasted = int136(value); + if (downcasted != value) { + revert SafeCastOverflowedIntDowncast(136, value); + } + } + + /** + * @dev Returns the downcasted int128 from int256, reverting on + * overflow (when the input is less than smallest int128 or + * greater than largest int128). + * + * Counterpart to Solidity's `int128` operator. + * + * Requirements: + * + * - input must fit into 128 bits + */ + function toInt128(int256 value) internal pure returns (int128 downcasted) { + downcasted = int128(value); + if (downcasted != value) { + revert SafeCastOverflowedIntDowncast(128, value); + } + } + + /** + * @dev Returns the downcasted int120 from int256, reverting on + * overflow (when the input is less than smallest int120 or + * greater than largest int120). + * + * Counterpart to Solidity's `int120` operator. + * + * Requirements: + * + * - input must fit into 120 bits + */ + function toInt120(int256 value) internal pure returns (int120 downcasted) { + downcasted = int120(value); + if (downcasted != value) { + revert SafeCastOverflowedIntDowncast(120, value); + } + } + + /** + * @dev Returns the downcasted int112 from int256, reverting on + * overflow (when the input is less than smallest int112 or + * greater than largest int112). + * + * Counterpart to Solidity's `int112` operator. + * + * Requirements: + * + * - input must fit into 112 bits + */ + function toInt112(int256 value) internal pure returns (int112 downcasted) { + downcasted = int112(value); + if (downcasted != value) { + revert SafeCastOverflowedIntDowncast(112, value); + } + } + + /** + * @dev Returns the downcasted int104 from int256, reverting on + * overflow (when the input is less than smallest int104 or + * greater than largest int104). + * + * Counterpart to Solidity's `int104` operator. + * + * Requirements: + * + * - input must fit into 104 bits + */ + function toInt104(int256 value) internal pure returns (int104 downcasted) { + downcasted = int104(value); + if (downcasted != value) { + revert SafeCastOverflowedIntDowncast(104, value); + } + } + + /** + * @dev Returns the downcasted int96 from int256, reverting on + * overflow (when the input is less than smallest int96 or + * greater than largest int96). + * + * Counterpart to Solidity's `int96` operator. + * + * Requirements: + * + * - input must fit into 96 bits + */ + function toInt96(int256 value) internal pure returns (int96 downcasted) { + downcasted = int96(value); + if (downcasted != value) { + revert SafeCastOverflowedIntDowncast(96, value); + } + } + + /** + * @dev Returns the downcasted int88 from int256, reverting on + * overflow (when the input is less than smallest int88 or + * greater than largest int88). + * + * Counterpart to Solidity's `int88` operator. + * + * Requirements: + * + * - input must fit into 88 bits + */ + function toInt88(int256 value) internal pure returns (int88 downcasted) { + downcasted = int88(value); + if (downcasted != value) { + revert SafeCastOverflowedIntDowncast(88, value); + } + } + + /** + * @dev Returns the downcasted int80 from int256, reverting on + * overflow (when the input is less than smallest int80 or + * greater than largest int80). + * + * Counterpart to Solidity's `int80` operator. + * + * Requirements: + * + * - input must fit into 80 bits + */ + function toInt80(int256 value) internal pure returns (int80 downcasted) { + downcasted = int80(value); + if (downcasted != value) { + revert SafeCastOverflowedIntDowncast(80, value); + } + } + + /** + * @dev Returns the downcasted int72 from int256, reverting on + * overflow (when the input is less than smallest int72 or + * greater than largest int72). + * + * Counterpart to Solidity's `int72` operator. + * + * Requirements: + * + * - input must fit into 72 bits + */ + function toInt72(int256 value) internal pure returns (int72 downcasted) { + downcasted = int72(value); + if (downcasted != value) { + revert SafeCastOverflowedIntDowncast(72, value); + } + } + + /** + * @dev Returns the downcasted int64 from int256, reverting on + * overflow (when the input is less than smallest int64 or + * greater than largest int64). + * + * Counterpart to Solidity's `int64` operator. + * + * Requirements: + * + * - input must fit into 64 bits + */ + function toInt64(int256 value) internal pure returns (int64 downcasted) { + downcasted = int64(value); + if (downcasted != value) { + revert SafeCastOverflowedIntDowncast(64, value); + } + } + + /** + * @dev Returns the downcasted int56 from int256, reverting on + * overflow (when the input is less than smallest int56 or + * greater than largest int56). + * + * Counterpart to Solidity's `int56` operator. + * + * Requirements: + * + * - input must fit into 56 bits + */ + function toInt56(int256 value) internal pure returns (int56 downcasted) { + downcasted = int56(value); + if (downcasted != value) { + revert SafeCastOverflowedIntDowncast(56, value); + } + } + + /** + * @dev Returns the downcasted int48 from int256, reverting on + * overflow (when the input is less than smallest int48 or + * greater than largest int48). + * + * Counterpart to Solidity's `int48` operator. + * + * Requirements: + * + * - input must fit into 48 bits + */ + function toInt48(int256 value) internal pure returns (int48 downcasted) { + downcasted = int48(value); + if (downcasted != value) { + revert SafeCastOverflowedIntDowncast(48, value); + } + } + + /** + * @dev Returns the downcasted int40 from int256, reverting on + * overflow (when the input is less than smallest int40 or + * greater than largest int40). + * + * Counterpart to Solidity's `int40` operator. + * + * Requirements: + * + * - input must fit into 40 bits + */ + function toInt40(int256 value) internal pure returns (int40 downcasted) { + downcasted = int40(value); + if (downcasted != value) { + revert SafeCastOverflowedIntDowncast(40, value); + } + } + + /** + * @dev Returns the downcasted int32 from int256, reverting on + * overflow (when the input is less than smallest int32 or + * greater than largest int32). + * + * Counterpart to Solidity's `int32` operator. + * + * Requirements: + * + * - input must fit into 32 bits + */ + function toInt32(int256 value) internal pure returns (int32 downcasted) { + downcasted = int32(value); + if (downcasted != value) { + revert SafeCastOverflowedIntDowncast(32, value); + } + } + + /** + * @dev Returns the downcasted int24 from int256, reverting on + * overflow (when the input is less than smallest int24 or + * greater than largest int24). + * + * Counterpart to Solidity's `int24` operator. + * + * Requirements: + * + * - input must fit into 24 bits + */ + function toInt24(int256 value) internal pure returns (int24 downcasted) { + downcasted = int24(value); + if (downcasted != value) { + revert SafeCastOverflowedIntDowncast(24, value); + } + } + + /** + * @dev Returns the downcasted int16 from int256, reverting on + * overflow (when the input is less than smallest int16 or + * greater than largest int16). + * + * Counterpart to Solidity's `int16` operator. + * + * Requirements: + * + * - input must fit into 16 bits + */ + function toInt16(int256 value) internal pure returns (int16 downcasted) { + downcasted = int16(value); + if (downcasted != value) { + revert SafeCastOverflowedIntDowncast(16, value); + } + } + + /** + * @dev Returns the downcasted int8 from int256, reverting on + * overflow (when the input is less than smallest int8 or + * greater than largest int8). + * + * Counterpart to Solidity's `int8` operator. + * + * Requirements: + * + * - input must fit into 8 bits + */ + function toInt8(int256 value) internal pure returns (int8 downcasted) { + downcasted = int8(value); + if (downcasted != value) { + revert SafeCastOverflowedIntDowncast(8, value); + } + } + + /** + * @dev Converts an unsigned uint256 into a signed int256. + * + * Requirements: + * + * - input must be less than or equal to maxInt256. + */ + function toInt256(uint256 value) internal pure returns (int256) { + // Note: Unsafe cast below is okay because `type(int256).max` is guaranteed to be positive + if (value > uint256(type(int256).max)) { + revert SafeCastOverflowedUintToInt(value); + } + return int256(value); + } + + /** + * @dev Cast a boolean (false or true) to a uint256 (0 or 1) with no jump. + */ + function toUint(bool b) internal pure returns (uint256 u) { + assembly ("memory-safe") { + u := iszero(iszero(b)) + } + } +} + +// src/modules/library/RuleEngineInvariantStorage.sol + +abstract contract RuleEngineInvariantStorage { + /* ==== Errors === */ + error RuleEngine_AdminWithAddressZeroNotAllowed(); +} + +// lib/CMTAT/contracts/interfaces/tokenization/draft-IERC7551.sol + +/** + * @title IERC7551Mint + * @dev Interface for token minting operations. + */ +interface IERC7551Mint { + /** + * @notice Emitted when new tokens are minted and assigned to an account. + * @param minter The address that initiated the mint operation. + * @param account The address receiving the newly minted tokens. + * @param value The amount of tokens created. + * @param data Optional metadata associated with the mint (e.g., reason, reference ID). + */ + event Mint(address indexed minter, address indexed account, uint256 value, bytes data); + /** + * @notice Creates a `value` amount of tokens and assigns them to `account`, by transferring it from address(0) + * @dev + * - Increases the total supply of tokens. + * - Emits both a `Mint` event and a standard ERC-20 `Transfer` event (with `from` set to the zero address). + * - The `data` parameter can be used to attach off-chain metadata or audit information. + * - If {IERC7551Pause} is implemented: + * - Token issuance MUST NOT be blocked by paused transfer state. + * Requirements: + * - `account` cannot be the zero address + * @param account The address that will receive the newly minted tokens. + * @param value The amount of tokens to mint. + * @param data Additional contextual data to include with the mint (optional). + */ + function mint(address account, uint256 value, bytes calldata data) external; +} + +/** +* @title interface for burn operation +*/ +interface IERC7551Burn { + /** + * @notice Emitted when tokens are burned from an account. + * @param burner The address that initiated the burn. + * @param account The address from which tokens were burned. + * @param value The amount of tokens burned. + * @param data Additional data related to the burn. + */ + event Burn(address indexed burner, address indexed account, uint256 value, bytes data); + + /** + * @notice Burns a specific number of tokens from the given account by transferring it to address(0) + * @dev + * - The account's balance is decreased by the specified amount. + * - Emits a `Burn` event and a standard `Transfer` event with `to` set to `address(0)`. + * - If the account balance (including frozen tokens) is less than the burn amount, the transaction MUST revert. + * - If the token contract supports {IERC7551Pause}, paused transfers MUST NOT prevent this burn operation. + * - The `data` parameter MAY be used to provide additional context (e.g., audit trail or documentation). + * @param account The address whose tokens will be burned. + * @param amount The number of tokens to remove from circulation. + * @param data Arbitrary additional data to document the burn. + */ + function burn(address account, uint256 amount, bytes calldata data) external; +} + +interface IERC7551Pause { + /** + * @notice Returns true if token transfers are currently paused. + * @return True if paused, false otherwise. + * @dev + * If this function returns true, it MUST NOT be possible to transfer tokens to other accounts + * and the function canTransfer() MUST return false. + */ + function paused() external view returns (bool); + /** + * @notice Pauses token transfers. + * @dev Reverts if already paused. + * Emits a `Paused` event + */ + function pause() external; + /** + * @notice Unpauses token transfers. + * @dev Reverts if token is not in pause state. + * emits an `Unpaused` event + */ + function unpause() external; +} +interface IERC7551ERC20EnforcementEvent { + /** + * @notice Emitted when a forced transfer or burn occurs. + * @param enforcer The address that initiated the enforcement. + * @param account The address affected by the enforcement. + * @param amount The number of tokens involved. + * @param data Additional data related to the enforcement. + */ + event Enforcement (address indexed enforcer, address indexed account, uint256 amount, bytes data); +} + +interface IERC7551ERC20EnforcementTokenFrozenEvent { + /** + * @notice Emitted when a specific amount of tokens are frozen on an address. + * @param account The address whose tokens are frozen. + * @param value The number of tokens frozen. + * @param data Additional data related to the freezing action. + * @dev + * Same name as ERC-3643 but with a supplementary data parameter + * The event is emitted by freezePartialTokens and batchFreezePartialTokens functions + */ + event TokensFrozen(address indexed account, uint256 value, bytes data); + + /** + * @notice Emitted when a specific amount of tokens are unfrozen on an address. + * @param account The address whose tokens are unfrozen. + * @param value The number of tokens unfrozen. + * @param data Additional data related to the unfreezing action. + * @dev + * Same name as ERC-3643 but with a supplementary data parameter + * The event is emitted by `unfreezePartialTokens`, `batchUnfreezePartialTokens`and potentially `forcedTransfer` functions + */ + event TokensUnfrozen(address indexed account, uint256 value, bytes data); +} + +interface IERC7551ERC20Enforcement { + /* ============ View Functions ============ */ + /** + * @notice Returns the active (unfrozen) token balance of a given account. + * @param account The address to query. + * @return activeBalance_ The amount of tokens that can be transferred using standard ERC-20 functions. + */ + function getActiveBalanceOf(address account) external view returns (uint256 activeBalance_); + + /** + * @notice Returns the frozen token balance of a given account. + * @dev Frozen tokens cannot be transferred using standard ERC-20 functions. + * Implementations MAY support transferring frozen tokens using other mechanisms like `forcedTransfer`. + * If the active balance is insufficient to cover a transfer, `canTransfer` and `canTransferFrom` MUST return false. + * @param account The address to query. + * @return frozenBalance_ The amount of tokens that are frozen and non-transferable via ERC-20 `transfer` and `transferFrom`. + */ + function getFrozenTokens(address account) external view returns (uint256 frozenBalance_); + + /* ============ State Functions ============ */ + /** + * @notice Freezes a specified amount of tokens for a given account. + * @dev Emits a `TokensFrozen` event. + * @param account The address whose tokens will be frozen. + * @param amount The number of tokens to freeze. + * @param data Arbitrary additional data for logging or business logic. + */ + function freezePartialTokens(address account, uint256 amount, bytes memory data) external; + + + /** + * @notice Unfreezes a specified amount of tokens for a given account. + * @dev Emits a `TokensUnfrozen` event. + * @param account The address whose tokens will be unfrozen. + * @param amount The number of tokens to unfreeze. + * @param data Arbitrary additional data for logging or business logic. + */ + function unfreezePartialTokens(address account, uint256 amount, bytes memory data) external; + /** + * @notice Executes a forced transfer of tokens from one account to another. + * @dev Transfers `value` tokens from `account` to `to` without requiring the account’s consent. + * If the `account` does not have enough active (unfrozen) tokens, frozen tokens may be automatically unfrozen to fulfill the transfer. + * Emits a `Transfer` event. Emits a `TokensUnfrozen` event if frozen tokens are used. + * @param account The address to debit tokens from. + * @param to The address to credit tokens to. + * @param value The amount of tokens to transfer. + * @param data Optional additional metadata to accompany the transfer. + * @return success_ Returns true if the transfer was successful. + */ + function forcedTransfer(address account, address to, uint256 value, bytes calldata data) external returns (bool success_); +} + +interface IERC7551Compliance is IERC3643ComplianceRead { + /** + * @notice Checks if `spender` can transfer `value` tokens from `from` to `to` under compliance rules. + * @dev Does not check balances or access rights (Access Control). + * @param spender The address performing the transfer. + * @param from The source address. + * @param to The destination address. + * @param value The number of tokens to transfer. + * @return isCompliant True if the transfer complies with policy. + */ + function canTransferFrom( + address spender, + address from, + address to, + uint256 value + ) external view returns (bool); +} + +interface IERC7551Document { + /** + * @notice Returns the hash of the "Terms" document. + * @return hash_ The `bytes32` hash of the terms document. + */ + function termsHash() external view returns (bytes32 hash_); + + /** + * @notice Sets the terms hash and URI. + * @param _hash The new hash of the document. + * @param _uri The corresponding URI. + */ + function setTerms(bytes32 _hash, string calldata _uri) external; + + /** + * @notice Returns the metadata string (e.g. URL). + * @return metadata_ The metadata string. + */ + function metaData() external view returns (string memory metadata_); + + /** + * @notice Sets a new metadata string (e.g. URL). + * @param metaData_ The new metadata value. + */ + function setMetaData(string calldata metaData_) external; +} + +// lib/openzeppelin-contracts/contracts/metatx/ERC2771Context.sol + +// OpenZeppelin Contracts (last updated v5.1.0) (metatx/ERC2771Context.sol) + +/** + * @dev Context variant with ERC-2771 support. + * + * WARNING: Avoid using this pattern in contracts that rely in a specific calldata length as they'll + * be affected by any forwarder whose `msg.data` is suffixed with the `from` address according to the ERC-2771 + * specification adding the address size in bytes (20) to the calldata size. An example of an unexpected + * behavior could be an unintended fallback (or another function) invocation while trying to invoke the `receive` + * function only accessible if `msg.data.length == 0`. + * + * WARNING: The usage of `delegatecall` in this contract is dangerous and may result in context corruption. + * Any forwarded request to this contract triggering a `delegatecall` to itself will result in an invalid {_msgSender} + * recovery. + */ +abstract contract ERC2771Context is Context { + /// @custom:oz-upgrades-unsafe-allow state-variable-immutable + address private immutable _trustedForwarder; + + /** + * @dev Initializes the contract with a trusted forwarder, which will be able to + * invoke functions on this contract on behalf of other accounts. + * + * NOTE: The trusted forwarder can be replaced by overriding {trustedForwarder}. + */ + /// @custom:oz-upgrades-unsafe-allow constructor + constructor(address trustedForwarder_) { + _trustedForwarder = trustedForwarder_; + } + + /** + * @dev Returns the address of the trusted forwarder. + */ + function trustedForwarder() public view virtual returns (address) { + return _trustedForwarder; + } + + /** + * @dev Indicates whether any particular address is the trusted forwarder. + */ + function isTrustedForwarder(address forwarder) public view virtual returns (bool) { + return forwarder == trustedForwarder(); + } + + /** + * @dev Override for `msg.sender`. Defaults to the original `msg.sender` whenever + * a call is not performed by the trusted forwarder or the calldata length is less than + * 20 bytes (an address length). + */ + function _msgSender() internal view virtual override returns (address) { + uint256 calldataLength = msg.data.length; + uint256 contextSuffixLength = _contextSuffixLength(); + if (isTrustedForwarder(msg.sender) && calldataLength >= contextSuffixLength) { + return address(bytes20(msg.data[calldataLength - contextSuffixLength:])); + } else { + return super._msgSender(); + } + } + + /** + * @dev Override for `msg.data`. Defaults to the original `msg.data` whenever + * a call is not performed by the trusted forwarder or the calldata length is less than + * 20 bytes (an address length). + */ + function _msgData() internal view virtual override returns (bytes calldata) { + uint256 calldataLength = msg.data.length; + uint256 contextSuffixLength = _contextSuffixLength(); + if (isTrustedForwarder(msg.sender) && calldataLength >= contextSuffixLength) { + return msg.data[:calldataLength - contextSuffixLength]; + } else { + return super._msgData(); + } + } + + /** + * @dev ERC-2771 specifies the context as being a single address (20 bytes). + */ + function _contextSuffixLength() internal view virtual override returns (uint256) { + return 20; + } +} + +// lib/openzeppelin-contracts/contracts/utils/introspection/ERC165.sol + +// OpenZeppelin Contracts (last updated v5.1.0) (utils/introspection/ERC165.sol) + +/** + * @dev Implementation of the {IERC165} interface. + * + * Contracts that want to implement ERC-165 should inherit from this contract and override {supportsInterface} to check + * for the additional interface id that will be supported. For example: + * + * ```solidity + * function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) { + * return interfaceId == type(MyInterface).interfaceId || super.supportsInterface(interfaceId); + * } + * ``` + */ +abstract contract ERC165 is IERC165 { + /** + * @dev See {IERC165-supportsInterface}. + */ + function supportsInterface(bytes4 interfaceId) public view virtual returns (bool) { + return interfaceId == type(IERC165).interfaceId; + } +} + +// src/interfaces/IERC3643Compliance.sol + +/* ==== CMTAT === */ + +interface IERC3643Compliance is IERC3643ComplianceRead, IERC3643IComplianceContract { + + // events + event TokenBound(address token); + event TokenUnbound(address token); + + // functions + // initialization of the compliance contract + function bindToken(address token) external; + function unbindToken(address token) external; + + // check the parameters of the compliance contract + function isTokenBound(address token) external view returns (bool); + function getTokenBound() external view returns (address); + function getTokenBounds() external view returns (address[] memory); + + // compliance check and state update + function created(address to, uint256 value)external; + function destroyed(address from, uint256 value) external; +} + +// src/modules/VersionModule.sol + +/* ==== CMTAT === */ + +abstract contract VersionModule is IERC3643Base { + /* ============ State Variables ============ */ + /** + * @dev + * Get the current version of the smart contract + */ + string private constant VERSION = "3.0.0"; + /* ============ Events ============ */ + /*////////////////////////////////////////////////////////////// + PUBLIC/EXTERNAL FUNCTIONS + //////////////////////////////////////////////////////////////*/ + /** + * @inheritdoc IERC3643Base + */ + function version() public view virtual override(IERC3643Base) returns (string memory version_) { + return VERSION; + } +} + +// lib/openzeppelin-contracts/contracts/utils/math/Math.sol + +// OpenZeppelin Contracts (last updated v5.3.0) (utils/math/Math.sol) + +/** + * @dev Standard math utilities missing in the Solidity language. + */ +library Math { + enum Rounding { + Floor, // Toward negative infinity + Ceil, // Toward positive infinity + Trunc, // Toward zero + Expand // Away from zero + } + + /** + * @dev Return the 512-bit addition of two uint256. + * + * The result is stored in two 256 variables such that sum = high * 2²⁵⁶ + low. + */ + function add512(uint256 a, uint256 b) internal pure returns (uint256 high, uint256 low) { + assembly ("memory-safe") { + low := add(a, b) + high := lt(low, a) + } + } + + /** + * @dev Return the 512-bit multiplication of two uint256. + * + * The result is stored in two 256 variables such that product = high * 2²⁵⁶ + low. + */ + function mul512(uint256 a, uint256 b) internal pure returns (uint256 high, uint256 low) { + // 512-bit multiply [high low] = x * y. Compute the product mod 2²⁵⁶ and mod 2²⁵⁶ - 1, then use + // the Chinese Remainder Theorem to reconstruct the 512 bit result. The result is stored in two 256 + // variables such that product = high * 2²⁵⁶ + low. + assembly ("memory-safe") { + let mm := mulmod(a, b, not(0)) + low := mul(a, b) + high := sub(sub(mm, low), lt(mm, low)) + } + } + + /** + * @dev Returns the addition of two unsigned integers, with a success flag (no overflow). + */ + function tryAdd(uint256 a, uint256 b) internal pure returns (bool success, uint256 result) { + unchecked { + uint256 c = a + b; + success = c >= a; + result = c * SafeCast.toUint(success); + } + } + + /** + * @dev Returns the subtraction of two unsigned integers, with a success flag (no overflow). + */ + function trySub(uint256 a, uint256 b) internal pure returns (bool success, uint256 result) { + unchecked { + uint256 c = a - b; + success = c <= a; + result = c * SafeCast.toUint(success); + } + } + + /** + * @dev Returns the multiplication of two unsigned integers, with a success flag (no overflow). + */ + function tryMul(uint256 a, uint256 b) internal pure returns (bool success, uint256 result) { + unchecked { + uint256 c = a * b; + assembly ("memory-safe") { + // Only true when the multiplication doesn't overflow + // (c / a == b) || (a == 0) + success := or(eq(div(c, a), b), iszero(a)) + } + // equivalent to: success ? c : 0 + result = c * SafeCast.toUint(success); + } + } + + /** + * @dev Returns the division of two unsigned integers, with a success flag (no division by zero). + */ + function tryDiv(uint256 a, uint256 b) internal pure returns (bool success, uint256 result) { + unchecked { + success = b > 0; + assembly ("memory-safe") { + // The `DIV` opcode returns zero when the denominator is 0. + result := div(a, b) + } + } + } + + /** + * @dev Returns the remainder of dividing two unsigned integers, with a success flag (no division by zero). + */ + function tryMod(uint256 a, uint256 b) internal pure returns (bool success, uint256 result) { + unchecked { + success = b > 0; + assembly ("memory-safe") { + // The `MOD` opcode returns zero when the denominator is 0. + result := mod(a, b) + } + } + } + + /** + * @dev Unsigned saturating addition, bounds to `2²⁵⁶ - 1` instead of overflowing. + */ + function saturatingAdd(uint256 a, uint256 b) internal pure returns (uint256) { + (bool success, uint256 result) = tryAdd(a, b); + return ternary(success, result, type(uint256).max); + } + + /** + * @dev Unsigned saturating subtraction, bounds to zero instead of overflowing. + */ + function saturatingSub(uint256 a, uint256 b) internal pure returns (uint256) { + (, uint256 result) = trySub(a, b); + return result; + } + + /** + * @dev Unsigned saturating multiplication, bounds to `2²⁵⁶ - 1` instead of overflowing. + */ + function saturatingMul(uint256 a, uint256 b) internal pure returns (uint256) { + (bool success, uint256 result) = tryMul(a, b); + return ternary(success, result, type(uint256).max); + } + + /** + * @dev Branchless ternary evaluation for `a ? b : c`. Gas costs are constant. + * + * IMPORTANT: This function may reduce bytecode size and consume less gas when used standalone. + * However, the compiler may optimize Solidity ternary operations (i.e. `a ? b : c`) to only compute + * one branch when needed, making this function more expensive. + */ + function ternary(bool condition, uint256 a, uint256 b) internal pure returns (uint256) { + unchecked { + // branchless ternary works because: + // b ^ (a ^ b) == a + // b ^ 0 == b + return b ^ ((a ^ b) * SafeCast.toUint(condition)); + } + } + + /** + * @dev Returns the largest of two numbers. + */ + function max(uint256 a, uint256 b) internal pure returns (uint256) { + return ternary(a > b, a, b); + } + + /** + * @dev Returns the smallest of two numbers. + */ + function min(uint256 a, uint256 b) internal pure returns (uint256) { + return ternary(a < b, a, b); + } + + /** + * @dev Returns the average of two numbers. The result is rounded towards + * zero. + */ + function average(uint256 a, uint256 b) internal pure returns (uint256) { + // (a + b) / 2 can overflow. + return (a & b) + (a ^ b) / 2; + } + + /** + * @dev Returns the ceiling of the division of two numbers. + * + * This differs from standard division with `/` in that it rounds towards infinity instead + * of rounding towards zero. + */ + function ceilDiv(uint256 a, uint256 b) internal pure returns (uint256) { + if (b == 0) { + // Guarantee the same behavior as in a regular Solidity division. + Panic.panic(Panic.DIVISION_BY_ZERO); + } + + // The following calculation ensures accurate ceiling division without overflow. + // Since a is non-zero, (a - 1) / b will not overflow. + // The largest possible result occurs when (a - 1) / b is type(uint256).max, + // but the largest value we can obtain is type(uint256).max - 1, which happens + // when a = type(uint256).max and b = 1. + unchecked { + return SafeCast.toUint(a > 0) * ((a - 1) / b + 1); + } + } + + /** + * @dev Calculates floor(x * y / denominator) with full precision. Throws if result overflows a uint256 or + * denominator == 0. + * + * Original credit to Remco Bloemen under MIT license (https://xn--2-umb.com/21/muldiv) with further edits by + * Uniswap Labs also under MIT license. + */ + function mulDiv(uint256 x, uint256 y, uint256 denominator) internal pure returns (uint256 result) { + unchecked { + (uint256 high, uint256 low) = mul512(x, y); + + // Handle non-overflow cases, 256 by 256 division. + if (high == 0) { + // Solidity will revert if denominator == 0, unlike the div opcode on its own. + // The surrounding unchecked block does not change this fact. + // See https://docs.soliditylang.org/en/latest/control-structures.html#checked-or-unchecked-arithmetic. + return low / denominator; + } + + // Make sure the result is less than 2²⁵⁶. Also prevents denominator == 0. + if (denominator <= high) { + Panic.panic(ternary(denominator == 0, Panic.DIVISION_BY_ZERO, Panic.UNDER_OVERFLOW)); + } + + /////////////////////////////////////////////// + // 512 by 256 division. + /////////////////////////////////////////////// + + // Make division exact by subtracting the remainder from [high low]. + uint256 remainder; + assembly ("memory-safe") { + // Compute remainder using mulmod. + remainder := mulmod(x, y, denominator) + + // Subtract 256 bit number from 512 bit number. + high := sub(high, gt(remainder, low)) + low := sub(low, remainder) + } + + // Factor powers of two out of denominator and compute largest power of two divisor of denominator. + // Always >= 1. See https://cs.stackexchange.com/q/138556/92363. + + uint256 twos = denominator & (0 - denominator); + assembly ("memory-safe") { + // Divide denominator by twos. + denominator := div(denominator, twos) + + // Divide [high low] by twos. + low := div(low, twos) + + // Flip twos such that it is 2²⁵⁶ / twos. If twos is zero, then it becomes one. + twos := add(div(sub(0, twos), twos), 1) + } + + // Shift in bits from high into low. + low |= high * twos; + + // Invert denominator mod 2²⁵⁶. Now that denominator is an odd number, it has an inverse modulo 2²⁵⁶ such + // that denominator * inv ≡ 1 mod 2²⁵⁶. Compute the inverse by starting with a seed that is correct for + // four bits. That is, denominator * inv ≡ 1 mod 2⁴. + uint256 inverse = (3 * denominator) ^ 2; + + // Use the Newton-Raphson iteration to improve the precision. Thanks to Hensel's lifting lemma, this also + // works in modular arithmetic, doubling the correct bits in each step. + inverse *= 2 - denominator * inverse; // inverse mod 2⁸ + inverse *= 2 - denominator * inverse; // inverse mod 2¹⁶ + inverse *= 2 - denominator * inverse; // inverse mod 2³² + inverse *= 2 - denominator * inverse; // inverse mod 2⁶⁴ + inverse *= 2 - denominator * inverse; // inverse mod 2¹²⁸ + inverse *= 2 - denominator * inverse; // inverse mod 2²⁵⁶ + + // Because the division is now exact we can divide by multiplying with the modular inverse of denominator. + // This will give us the correct result modulo 2²⁵⁶. Since the preconditions guarantee that the outcome is + // less than 2²⁵⁶, this is the final result. We don't need to compute the high bits of the result and high + // is no longer required. + result = low * inverse; + return result; + } + } + + /** + * @dev Calculates x * y / denominator with full precision, following the selected rounding direction. + */ + function mulDiv(uint256 x, uint256 y, uint256 denominator, Rounding rounding) internal pure returns (uint256) { + return mulDiv(x, y, denominator) + SafeCast.toUint(unsignedRoundsUp(rounding) && mulmod(x, y, denominator) > 0); + } + + /** + * @dev Calculates floor(x * y >> n) with full precision. Throws if result overflows a uint256. + */ + function mulShr(uint256 x, uint256 y, uint8 n) internal pure returns (uint256 result) { + unchecked { + (uint256 high, uint256 low) = mul512(x, y); + if (high >= 1 << n) { + Panic.panic(Panic.UNDER_OVERFLOW); + } + return (high << (256 - n)) | (low >> n); + } + } + + /** + * @dev Calculates x * y >> n with full precision, following the selected rounding direction. + */ + function mulShr(uint256 x, uint256 y, uint8 n, Rounding rounding) internal pure returns (uint256) { + return mulShr(x, y, n) + SafeCast.toUint(unsignedRoundsUp(rounding) && mulmod(x, y, 1 << n) > 0); + } + + /** + * @dev Calculate the modular multiplicative inverse of a number in Z/nZ. + * + * If n is a prime, then Z/nZ is a field. In that case all elements are inversible, except 0. + * If n is not a prime, then Z/nZ is not a field, and some elements might not be inversible. + * + * If the input value is not inversible, 0 is returned. + * + * NOTE: If you know for sure that n is (big) a prime, it may be cheaper to use Fermat's little theorem and get the + * inverse using `Math.modExp(a, n - 2, n)`. See {invModPrime}. + */ + function invMod(uint256 a, uint256 n) internal pure returns (uint256) { + unchecked { + if (n == 0) return 0; + + // The inverse modulo is calculated using the Extended Euclidean Algorithm (iterative version) + // Used to compute integers x and y such that: ax + ny = gcd(a, n). + // When the gcd is 1, then the inverse of a modulo n exists and it's x. + // ax + ny = 1 + // ax = 1 + (-y)n + // ax ≡ 1 (mod n) # x is the inverse of a modulo n + + // If the remainder is 0 the gcd is n right away. + uint256 remainder = a % n; + uint256 gcd = n; + + // Therefore the initial coefficients are: + // ax + ny = gcd(a, n) = n + // 0a + 1n = n + int256 x = 0; + int256 y = 1; + + while (remainder != 0) { + uint256 quotient = gcd / remainder; + + (gcd, remainder) = ( + // The old remainder is the next gcd to try. + remainder, + // Compute the next remainder. + // Can't overflow given that (a % gcd) * (gcd // (a % gcd)) <= gcd + // where gcd is at most n (capped to type(uint256).max) + gcd - remainder * quotient + ); + + (x, y) = ( + // Increment the coefficient of a. + y, + // Decrement the coefficient of n. + // Can overflow, but the result is casted to uint256 so that the + // next value of y is "wrapped around" to a value between 0 and n - 1. + x - y * int256(quotient) + ); + } + + if (gcd != 1) return 0; // No inverse exists. + return ternary(x < 0, n - uint256(-x), uint256(x)); // Wrap the result if it's negative. + } + } + + /** + * @dev Variant of {invMod}. More efficient, but only works if `p` is known to be a prime greater than `2`. + * + * From https://en.wikipedia.org/wiki/Fermat%27s_little_theorem[Fermat's little theorem], we know that if p is + * prime, then `a**(p-1) ≡ 1 mod p`. As a consequence, we have `a * a**(p-2) ≡ 1 mod p`, which means that + * `a**(p-2)` is the modular multiplicative inverse of a in Fp. + * + * NOTE: this function does NOT check that `p` is a prime greater than `2`. + */ + function invModPrime(uint256 a, uint256 p) internal view returns (uint256) { + unchecked { + return Math.modExp(a, p - 2, p); + } + } + + /** + * @dev Returns the modular exponentiation of the specified base, exponent and modulus (b ** e % m) + * + * Requirements: + * - modulus can't be zero + * - underlying staticcall to precompile must succeed + * + * IMPORTANT: The result is only valid if the underlying call succeeds. When using this function, make + * sure the chain you're using it on supports the precompiled contract for modular exponentiation + * at address 0x05 as specified in https://eips.ethereum.org/EIPS/eip-198[EIP-198]. Otherwise, + * the underlying function will succeed given the lack of a revert, but the result may be incorrectly + * interpreted as 0. + */ + function modExp(uint256 b, uint256 e, uint256 m) internal view returns (uint256) { + (bool success, uint256 result) = tryModExp(b, e, m); + if (!success) { + Panic.panic(Panic.DIVISION_BY_ZERO); + } + return result; + } + + /** + * @dev Returns the modular exponentiation of the specified base, exponent and modulus (b ** e % m). + * It includes a success flag indicating if the operation succeeded. Operation will be marked as failed if trying + * to operate modulo 0 or if the underlying precompile reverted. + * + * IMPORTANT: The result is only valid if the success flag is true. When using this function, make sure the chain + * you're using it on supports the precompiled contract for modular exponentiation at address 0x05 as specified in + * https://eips.ethereum.org/EIPS/eip-198[EIP-198]. Otherwise, the underlying function will succeed given the lack + * of a revert, but the result may be incorrectly interpreted as 0. + */ + function tryModExp(uint256 b, uint256 e, uint256 m) internal view returns (bool success, uint256 result) { + if (m == 0) return (false, 0); + assembly ("memory-safe") { + let ptr := mload(0x40) + // | Offset | Content | Content (Hex) | + // |-----------|------------|--------------------------------------------------------------------| + // | 0x00:0x1f | size of b | 0x0000000000000000000000000000000000000000000000000000000000000020 | + // | 0x20:0x3f | size of e | 0x0000000000000000000000000000000000000000000000000000000000000020 | + // | 0x40:0x5f | size of m | 0x0000000000000000000000000000000000000000000000000000000000000020 | + // | 0x60:0x7f | value of b | 0x<.............................................................b> | + // | 0x80:0x9f | value of e | 0x<.............................................................e> | + // | 0xa0:0xbf | value of m | 0x<.............................................................m> | + mstore(ptr, 0x20) + mstore(add(ptr, 0x20), 0x20) + mstore(add(ptr, 0x40), 0x20) + mstore(add(ptr, 0x60), b) + mstore(add(ptr, 0x80), e) + mstore(add(ptr, 0xa0), m) + + // Given the result < m, it's guaranteed to fit in 32 bytes, + // so we can use the memory scratch space located at offset 0. + success := staticcall(gas(), 0x05, ptr, 0xc0, 0x00, 0x20) + result := mload(0x00) + } + } + + /** + * @dev Variant of {modExp} that supports inputs of arbitrary length. + */ + function modExp(bytes memory b, bytes memory e, bytes memory m) internal view returns (bytes memory) { + (bool success, bytes memory result) = tryModExp(b, e, m); + if (!success) { + Panic.panic(Panic.DIVISION_BY_ZERO); + } + return result; + } + + /** + * @dev Variant of {tryModExp} that supports inputs of arbitrary length. + */ + function tryModExp( + bytes memory b, + bytes memory e, + bytes memory m + ) internal view returns (bool success, bytes memory result) { + if (_zeroBytes(m)) return (false, new bytes(0)); + + uint256 mLen = m.length; + + // Encode call args in result and move the free memory pointer + result = abi.encodePacked(b.length, e.length, mLen, b, e, m); + + assembly ("memory-safe") { + let dataPtr := add(result, 0x20) + // Write result on top of args to avoid allocating extra memory. + success := staticcall(gas(), 0x05, dataPtr, mload(result), dataPtr, mLen) + // Overwrite the length. + // result.length > returndatasize() is guaranteed because returndatasize() == m.length + mstore(result, mLen) + // Set the memory pointer after the returned data. + mstore(0x40, add(dataPtr, mLen)) + } + } + + /** + * @dev Returns whether the provided byte array is zero. + */ + function _zeroBytes(bytes memory byteArray) private pure returns (bool) { + for (uint256 i = 0; i < byteArray.length; ++i) { + if (byteArray[i] != 0) { + return false; + } + } + return true; + } + + /** + * @dev Returns the square root of a number. If the number is not a perfect square, the value is rounded + * towards zero. + * + * This method is based on Newton's method for computing square roots; the algorithm is restricted to only + * using integer operations. + */ + function sqrt(uint256 a) internal pure returns (uint256) { + unchecked { + // Take care of easy edge cases when a == 0 or a == 1 + if (a <= 1) { + return a; + } + + // In this function, we use Newton's method to get a root of `f(x) := x² - a`. It involves building a + // sequence x_n that converges toward sqrt(a). For each iteration x_n, we also define the error between + // the current value as `ε_n = | x_n - sqrt(a) |`. + // + // For our first estimation, we consider `e` the smallest power of 2 which is bigger than the square root + // of the target. (i.e. `2**(e-1) ≤ sqrt(a) < 2**e`). We know that `e ≤ 128` because `(2¹²⁸)² = 2²⁵⁶` is + // bigger than any uint256. + // + // By noticing that + // `2**(e-1) ≤ sqrt(a) < 2**e → (2**(e-1))² ≤ a < (2**e)² → 2**(2*e-2) ≤ a < 2**(2*e)` + // we can deduce that `e - 1` is `log2(a) / 2`. We can thus compute `x_n = 2**(e-1)` using a method similar + // to the msb function. + uint256 aa = a; + uint256 xn = 1; + + if (aa >= (1 << 128)) { + aa >>= 128; + xn <<= 64; + } + if (aa >= (1 << 64)) { + aa >>= 64; + xn <<= 32; + } + if (aa >= (1 << 32)) { + aa >>= 32; + xn <<= 16; + } + if (aa >= (1 << 16)) { + aa >>= 16; + xn <<= 8; + } + if (aa >= (1 << 8)) { + aa >>= 8; + xn <<= 4; + } + if (aa >= (1 << 4)) { + aa >>= 4; + xn <<= 2; + } + if (aa >= (1 << 2)) { + xn <<= 1; + } + + // We now have x_n such that `x_n = 2**(e-1) ≤ sqrt(a) < 2**e = 2 * x_n`. This implies ε_n ≤ 2**(e-1). + // + // We can refine our estimation by noticing that the middle of that interval minimizes the error. + // If we move x_n to equal 2**(e-1) + 2**(e-2), then we reduce the error to ε_n ≤ 2**(e-2). + // This is going to be our x_0 (and ε_0) + xn = (3 * xn) >> 1; // ε_0 := | x_0 - sqrt(a) | ≤ 2**(e-2) + + // From here, Newton's method give us: + // x_{n+1} = (x_n + a / x_n) / 2 + // + // One should note that: + // x_{n+1}² - a = ((x_n + a / x_n) / 2)² - a + // = ((x_n² + a) / (2 * x_n))² - a + // = (x_n⁴ + 2 * a * x_n² + a²) / (4 * x_n²) - a + // = (x_n⁴ + 2 * a * x_n² + a² - 4 * a * x_n²) / (4 * x_n²) + // = (x_n⁴ - 2 * a * x_n² + a²) / (4 * x_n²) + // = (x_n² - a)² / (2 * x_n)² + // = ((x_n² - a) / (2 * x_n))² + // ≥ 0 + // Which proves that for all n ≥ 1, sqrt(a) ≤ x_n + // + // This gives us the proof of quadratic convergence of the sequence: + // ε_{n+1} = | x_{n+1} - sqrt(a) | + // = | (x_n + a / x_n) / 2 - sqrt(a) | + // = | (x_n² + a - 2*x_n*sqrt(a)) / (2 * x_n) | + // = | (x_n - sqrt(a))² / (2 * x_n) | + // = | ε_n² / (2 * x_n) | + // = ε_n² / | (2 * x_n) | + // + // For the first iteration, we have a special case where x_0 is known: + // ε_1 = ε_0² / | (2 * x_0) | + // ≤ (2**(e-2))² / (2 * (2**(e-1) + 2**(e-2))) + // ≤ 2**(2*e-4) / (3 * 2**(e-1)) + // ≤ 2**(e-3) / 3 + // ≤ 2**(e-3-log2(3)) + // ≤ 2**(e-4.5) + // + // For the following iterations, we use the fact that, 2**(e-1) ≤ sqrt(a) ≤ x_n: + // ε_{n+1} = ε_n² / | (2 * x_n) | + // ≤ (2**(e-k))² / (2 * 2**(e-1)) + // ≤ 2**(2*e-2*k) / 2**e + // ≤ 2**(e-2*k) + xn = (xn + a / xn) >> 1; // ε_1 := | x_1 - sqrt(a) | ≤ 2**(e-4.5) -- special case, see above + xn = (xn + a / xn) >> 1; // ε_2 := | x_2 - sqrt(a) | ≤ 2**(e-9) -- general case with k = 4.5 + xn = (xn + a / xn) >> 1; // ε_3 := | x_3 - sqrt(a) | ≤ 2**(e-18) -- general case with k = 9 + xn = (xn + a / xn) >> 1; // ε_4 := | x_4 - sqrt(a) | ≤ 2**(e-36) -- general case with k = 18 + xn = (xn + a / xn) >> 1; // ε_5 := | x_5 - sqrt(a) | ≤ 2**(e-72) -- general case with k = 36 + xn = (xn + a / xn) >> 1; // ε_6 := | x_6 - sqrt(a) | ≤ 2**(e-144) -- general case with k = 72 + + // Because e ≤ 128 (as discussed during the first estimation phase), we know have reached a precision + // ε_6 ≤ 2**(e-144) < 1. Given we're operating on integers, then we can ensure that xn is now either + // sqrt(a) or sqrt(a) + 1. + return xn - SafeCast.toUint(xn > a / xn); + } + } + + /** + * @dev Calculates sqrt(a), following the selected rounding direction. + */ + function sqrt(uint256 a, Rounding rounding) internal pure returns (uint256) { + unchecked { + uint256 result = sqrt(a); + return result + SafeCast.toUint(unsignedRoundsUp(rounding) && result * result < a); + } + } + + /** + * @dev Return the log in base 2 of a positive value rounded towards zero. + * Returns 0 if given 0. + */ + function log2(uint256 x) internal pure returns (uint256 r) { + // If value has upper 128 bits set, log2 result is at least 128 + r = SafeCast.toUint(x > 0xffffffffffffffffffffffffffffffff) << 7; + // If upper 64 bits of 128-bit half set, add 64 to result + r |= SafeCast.toUint((x >> r) > 0xffffffffffffffff) << 6; + // If upper 32 bits of 64-bit half set, add 32 to result + r |= SafeCast.toUint((x >> r) > 0xffffffff) << 5; + // If upper 16 bits of 32-bit half set, add 16 to result + r |= SafeCast.toUint((x >> r) > 0xffff) << 4; + // If upper 8 bits of 16-bit half set, add 8 to result + r |= SafeCast.toUint((x >> r) > 0xff) << 3; + // If upper 4 bits of 8-bit half set, add 4 to result + r |= SafeCast.toUint((x >> r) > 0xf) << 2; + + // Shifts value right by the current result and use it as an index into this lookup table: + // + // | x (4 bits) | index | table[index] = MSB position | + // |------------|---------|-----------------------------| + // | 0000 | 0 | table[0] = 0 | + // | 0001 | 1 | table[1] = 0 | + // | 0010 | 2 | table[2] = 1 | + // | 0011 | 3 | table[3] = 1 | + // | 0100 | 4 | table[4] = 2 | + // | 0101 | 5 | table[5] = 2 | + // | 0110 | 6 | table[6] = 2 | + // | 0111 | 7 | table[7] = 2 | + // | 1000 | 8 | table[8] = 3 | + // | 1001 | 9 | table[9] = 3 | + // | 1010 | 10 | table[10] = 3 | + // | 1011 | 11 | table[11] = 3 | + // | 1100 | 12 | table[12] = 3 | + // | 1101 | 13 | table[13] = 3 | + // | 1110 | 14 | table[14] = 3 | + // | 1111 | 15 | table[15] = 3 | + // + // The lookup table is represented as a 32-byte value with the MSB positions for 0-15 in the last 16 bytes. + assembly ("memory-safe") { + r := or(r, byte(shr(r, x), 0x0000010102020202030303030303030300000000000000000000000000000000)) + } + } + + /** + * @dev Return the log in base 2, following the selected rounding direction, of a positive value. + * Returns 0 if given 0. + */ + function log2(uint256 value, Rounding rounding) internal pure returns (uint256) { + unchecked { + uint256 result = log2(value); + return result + SafeCast.toUint(unsignedRoundsUp(rounding) && 1 << result < value); + } + } + + /** + * @dev Return the log in base 10 of a positive value rounded towards zero. + * Returns 0 if given 0. + */ + function log10(uint256 value) internal pure returns (uint256) { + uint256 result = 0; + unchecked { + if (value >= 10 ** 64) { + value /= 10 ** 64; + result += 64; + } + if (value >= 10 ** 32) { + value /= 10 ** 32; + result += 32; + } + if (value >= 10 ** 16) { + value /= 10 ** 16; + result += 16; + } + if (value >= 10 ** 8) { + value /= 10 ** 8; + result += 8; + } + if (value >= 10 ** 4) { + value /= 10 ** 4; + result += 4; + } + if (value >= 10 ** 2) { + value /= 10 ** 2; + result += 2; + } + if (value >= 10 ** 1) { + result += 1; + } + } + return result; + } + + /** + * @dev Return the log in base 10, following the selected rounding direction, of a positive value. + * Returns 0 if given 0. + */ + function log10(uint256 value, Rounding rounding) internal pure returns (uint256) { + unchecked { + uint256 result = log10(value); + return result + SafeCast.toUint(unsignedRoundsUp(rounding) && 10 ** result < value); + } + } + + /** + * @dev Return the log in base 256 of a positive value rounded towards zero. + * Returns 0 if given 0. + * + * Adding one to the result gives the number of pairs of hex symbols needed to represent `value` as a hex string. + */ + function log256(uint256 x) internal pure returns (uint256 r) { + // If value has upper 128 bits set, log2 result is at least 128 + r = SafeCast.toUint(x > 0xffffffffffffffffffffffffffffffff) << 7; + // If upper 64 bits of 128-bit half set, add 64 to result + r |= SafeCast.toUint((x >> r) > 0xffffffffffffffff) << 6; + // If upper 32 bits of 64-bit half set, add 32 to result + r |= SafeCast.toUint((x >> r) > 0xffffffff) << 5; + // If upper 16 bits of 32-bit half set, add 16 to result + r |= SafeCast.toUint((x >> r) > 0xffff) << 4; + // Add 1 if upper 8 bits of 16-bit half set, and divide accumulated result by 8 + return (r >> 3) | SafeCast.toUint((x >> r) > 0xff); + } + + /** + * @dev Return the log in base 256, following the selected rounding direction, of a positive value. + * Returns 0 if given 0. + */ + function log256(uint256 value, Rounding rounding) internal pure returns (uint256) { + unchecked { + uint256 result = log256(value); + return result + SafeCast.toUint(unsignedRoundsUp(rounding) && 1 << (result << 3) < value); + } + } + + /** + * @dev Returns whether a provided rounding mode is considered rounding up for unsigned integers. + */ + function unsignedRoundsUp(Rounding rounding) internal pure returns (bool) { + return uint8(rounding) % 2 == 1; + } +} + +// src/modules/MetaTxModuleStandalone.sol + +/* ==== OpenZeppelin === */ + +/** + * @dev Meta transaction (gasless) module. + */ +abstract contract MetaTxModuleStandalone is ERC2771Context { + constructor(address trustedForwarder) ERC2771Context(trustedForwarder) { + // Nothing to do + } +} + +// lib/CMTAT/contracts/interfaces/engine/IRuleEngine.sol + +/* +* @title Minimum interface to define a RuleEngine +*/ +interface IRuleEngine is IERC1404Extend, IERC7551Compliance, IERC3643IComplianceContract { + /** + * @notice + * Function called whenever tokens are transferred from one wallet to another + * @dev + * Must revert if the transfer is invalid + * Same name as ERC-3643 but with one supplementary argument `spender` + * This function can be used to update state variables of the RuleEngine contract + * This function can be called ONLY by the token contract bound to the RuleEngine + * @param spender spender address (sender) + * @param from token holder address + * @param to receiver address + * @param value value of tokens involved in the transfer + */ + function transferred(address spender, address from, address to, uint256 value) external; +} + +// lib/openzeppelin-contracts/contracts/access/AccessControl.sol + +// OpenZeppelin Contracts (last updated v5.3.0) (access/AccessControl.sol) + +/** + * @dev Contract module that allows children to implement role-based access + * control mechanisms. This is a lightweight version that doesn't allow enumerating role + * members except through off-chain means by accessing the contract event logs. Some + * applications may benefit from on-chain enumerability, for those cases see + * {AccessControlEnumerable}. + * + * Roles are referred to by their `bytes32` identifier. These should be exposed + * in the external API and be unique. The best way to achieve this is by + * using `public constant` hash digests: + * + * ```solidity + * bytes32 public constant MY_ROLE = keccak256("MY_ROLE"); + * ``` + * + * Roles can be used to represent a set of permissions. To restrict access to a + * function call, use {hasRole}: + * + * ```solidity + * function foo() public { + * require(hasRole(MY_ROLE, msg.sender)); + * ... + * } + * ``` + * + * Roles can be granted and revoked dynamically via the {grantRole} and + * {revokeRole} functions. Each role has an associated admin role, and only + * accounts that have a role's admin role can call {grantRole} and {revokeRole}. + * + * By default, the admin role for all roles is `DEFAULT_ADMIN_ROLE`, which means + * that only accounts with this role will be able to grant or revoke other + * roles. More complex role relationships can be created by using + * {_setRoleAdmin}. + * + * WARNING: The `DEFAULT_ADMIN_ROLE` is also its own admin: it has permission to + * grant and revoke this role. Extra precautions should be taken to secure + * accounts that have been granted it. We recommend using {AccessControlDefaultAdminRules} + * to enforce additional security measures for this role. + */ +abstract contract AccessControl is Context, IAccessControl, ERC165 { + struct RoleData { + mapping(address account => bool) hasRole; + bytes32 adminRole; + } + + mapping(bytes32 role => RoleData) private _roles; + + bytes32 public constant DEFAULT_ADMIN_ROLE = 0x00; + + /** + * @dev Modifier that checks that an account has a specific role. Reverts + * with an {AccessControlUnauthorizedAccount} error including the required role. + */ + modifier onlyRole(bytes32 role) { + _checkRole(role); + _; + } + + /** + * @dev See {IERC165-supportsInterface}. + */ + function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) { + return interfaceId == type(IAccessControl).interfaceId || super.supportsInterface(interfaceId); + } + + /** + * @dev Returns `true` if `account` has been granted `role`. + */ + function hasRole(bytes32 role, address account) public view virtual returns (bool) { + return _roles[role].hasRole[account]; + } + + /** + * @dev Reverts with an {AccessControlUnauthorizedAccount} error if `_msgSender()` + * is missing `role`. Overriding this function changes the behavior of the {onlyRole} modifier. + */ + function _checkRole(bytes32 role) internal view virtual { + _checkRole(role, _msgSender()); + } + + /** + * @dev Reverts with an {AccessControlUnauthorizedAccount} error if `account` + * is missing `role`. + */ + function _checkRole(bytes32 role, address account) internal view virtual { + if (!hasRole(role, account)) { + revert AccessControlUnauthorizedAccount(account, role); + } + } + + /** + * @dev Returns the admin role that controls `role`. See {grantRole} and + * {revokeRole}. + * + * To change a role's admin, use {_setRoleAdmin}. + */ + function getRoleAdmin(bytes32 role) public view virtual returns (bytes32) { + return _roles[role].adminRole; + } + + /** + * @dev Grants `role` to `account`. + * + * If `account` had not been already granted `role`, emits a {RoleGranted} + * event. + * + * Requirements: + * + * - the caller must have ``role``'s admin role. + * + * May emit a {RoleGranted} event. + */ + function grantRole(bytes32 role, address account) public virtual onlyRole(getRoleAdmin(role)) { + _grantRole(role, account); + } + + /** + * @dev Revokes `role` from `account`. + * + * If `account` had been granted `role`, emits a {RoleRevoked} event. + * + * Requirements: + * + * - the caller must have ``role``'s admin role. + * + * May emit a {RoleRevoked} event. + */ + function revokeRole(bytes32 role, address account) public virtual onlyRole(getRoleAdmin(role)) { + _revokeRole(role, account); + } + + /** + * @dev Revokes `role` from the calling account. + * + * Roles are often managed via {grantRole} and {revokeRole}: this function's + * purpose is to provide a mechanism for accounts to lose their privileges + * if they are compromised (such as when a trusted device is misplaced). + * + * If the calling account had been revoked `role`, emits a {RoleRevoked} + * event. + * + * Requirements: + * + * - the caller must be `callerConfirmation`. + * + * May emit a {RoleRevoked} event. + */ + function renounceRole(bytes32 role, address callerConfirmation) public virtual { + if (callerConfirmation != _msgSender()) { + revert AccessControlBadConfirmation(); + } + + _revokeRole(role, callerConfirmation); + } + + /** + * @dev Sets `adminRole` as ``role``'s admin role. + * + * Emits a {RoleAdminChanged} event. + */ + function _setRoleAdmin(bytes32 role, bytes32 adminRole) internal virtual { + bytes32 previousAdminRole = getRoleAdmin(role); + _roles[role].adminRole = adminRole; + emit RoleAdminChanged(role, previousAdminRole, adminRole); + } + + /** + * @dev Attempts to grant `role` to `account` and returns a boolean indicating if `role` was granted. + * + * Internal function without access restriction. + * + * May emit a {RoleGranted} event. + */ + function _grantRole(bytes32 role, address account) internal virtual returns (bool) { + if (!hasRole(role, account)) { + _roles[role].hasRole[account] = true; + emit RoleGranted(role, account, _msgSender()); + return true; + } else { + return false; + } + } + + /** + * @dev Attempts to revoke `role` from `account` and returns a boolean indicating if `role` was revoked. + * + * Internal function without access restriction. + * + * May emit a {RoleRevoked} event. + */ + function _revokeRole(bytes32 role, address account) internal virtual returns (bool) { + if (hasRole(role, account)) { + _roles[role].hasRole[account] = false; + emit RoleRevoked(role, account, _msgSender()); + return true; + } else { + return false; + } + } +} + +// src/interfaces/IRule.sol + +/* ==== CMTAT === */ + +/* ==== Interfaces === */ + +interface IRule is IRuleEngine { + /** + * @dev Returns true if the restriction code exists, and false otherwise. + */ + function canReturnTransferRestrictionCode( + uint8 restrictionCode + ) external view returns (bool); +} + +// src/interfaces/IRulesManagementModule.sol + +/* ==== Interfaces === */ + +interface IRulesManagementModule { + /** + * @notice Defines the rules for the rule engine. + * @dev Sets the list of rule contract addresses for s. + * Any previously set rules will be completely overwritten by the new list. + * Rules should be deployed contracts that implement the expected interface. + * @param rules_ The array of addresses representing the new rules to be set. + * @dev Revert if one rule is a zero address or if the rule is already present + */ + function setRules(IRule[] calldata rules_) external; + + /** + * @notice Returns the number of rules currently set for s. + * @dev The count corresponds to the total number of elements in the rules array. + * @return The number of rules. + */ + function rulesCount() external view returns (uint256); + + /** + * @notice Retrieves the rule address at a specific index. + * @dev The index corresponds to the position in the rules array. + * Reverts if `ruleId` is out of bounds. + * @param ruleId The index of the rule to retrieve. + * @return The address of the rule contract. + */ + function rule(uint256 ruleId) external view returns (address); + + /** + * @notice Returns the full list of rules. + * @dev This is a view-only function that returns all the currently stored rule addresses. + * @return An array containing all the rule contract addresses. + */ + function rules() external view returns (address[] memory); + + /** + * @notice Clear all the rules of the array of rules + * + */ + function clearRules() external; + + /** + * @notice Add a rule to the array of rules + * Revert if one rule is a zero address or if the rule is already present + * + */ + function addRule( + IRule rule_ + ) external; + + /** + * @notice Remove a rule from the array of rules + * Revert if the rule found at the specified index does not match the rule in argument + * @param rule_ address of the target rule + * + * + */ + function removeRule( + IRule rule_ + ) external; + + /** + * @notice Check if a rule is present + * + */ + function containsRule(IRule rule_) external returns (bool); +} + +// src/modules/library/RulesManagementModuleInvariantStorage.sol + +abstract contract RulesManagementModuleInvariantStorage { + /* ==== Errors === */ + error RuleEngine_RuleAddressZeroNotAllowed(); + error RuleEngine_RuleAlreadyExists(); + error RuleEngine_RuleDoNotMatch(); + error RuleEngine_ArrayIsEmpty(); + + /* ============ Events ============ */ + /// @notice Generate when a rule is added + event AddRule(IRule indexed rule); + /// @notice Generate when a rule is removed + event RemoveRule(IRule indexed rule); + /// @notice Generate when all the rules are cleared + event ClearRules(); + + /* ==== Constant === */ + /// @notice Role to manage the ruleEngine + bytes32 public constant RULE_ENGINE_OPERATOR_ROLE = + keccak256("RULE_ENGINE_OPERATOR_ROLE"); +} + +// lib/openzeppelin-contracts/contracts/utils/Arrays.sol + +// OpenZeppelin Contracts (last updated v5.3.0) (utils/Arrays.sol) +// This file was procedurally generated from scripts/generate/templates/Arrays.js. + +/** + * @dev Collection of functions related to array types. + */ +library Arrays { + using SlotDerivation for bytes32; + using StorageSlot for bytes32; + + /** + * @dev Sort an array of uint256 (in memory) following the provided comparator function. + * + * This function does the sorting "in place", meaning that it overrides the input. The object is returned for + * convenience, but that returned value can be discarded safely if the caller has a memory pointer to the array. + * + * NOTE: this function's cost is `O(n · log(n))` in average and `O(n²)` in the worst case, with n the length of the + * array. Using it in view functions that are executed through `eth_call` is safe, but one should be very careful + * when executing this as part of a transaction. If the array being sorted is too large, the sort operation may + * consume more gas than is available in a block, leading to potential DoS. + * + * IMPORTANT: Consider memory side-effects when using custom comparator functions that access memory in an unsafe way. + */ + function sort( + uint256[] memory array, + function(uint256, uint256) pure returns (bool) comp + ) internal pure returns (uint256[] memory) { + _quickSort(_begin(array), _end(array), comp); + return array; + } + + /** + * @dev Variant of {sort} that sorts an array of uint256 in increasing order. + */ + function sort(uint256[] memory array) internal pure returns (uint256[] memory) { + sort(array, Comparators.lt); + return array; + } + + /** + * @dev Sort an array of address (in memory) following the provided comparator function. + * + * This function does the sorting "in place", meaning that it overrides the input. The object is returned for + * convenience, but that returned value can be discarded safely if the caller has a memory pointer to the array. + * + * NOTE: this function's cost is `O(n · log(n))` in average and `O(n²)` in the worst case, with n the length of the + * array. Using it in view functions that are executed through `eth_call` is safe, but one should be very careful + * when executing this as part of a transaction. If the array being sorted is too large, the sort operation may + * consume more gas than is available in a block, leading to potential DoS. + * + * IMPORTANT: Consider memory side-effects when using custom comparator functions that access memory in an unsafe way. + */ + function sort( + address[] memory array, + function(address, address) pure returns (bool) comp + ) internal pure returns (address[] memory) { + sort(_castToUint256Array(array), _castToUint256Comp(comp)); + return array; + } + + /** + * @dev Variant of {sort} that sorts an array of address in increasing order. + */ + function sort(address[] memory array) internal pure returns (address[] memory) { + sort(_castToUint256Array(array), Comparators.lt); + return array; + } + + /** + * @dev Sort an array of bytes32 (in memory) following the provided comparator function. + * + * This function does the sorting "in place", meaning that it overrides the input. The object is returned for + * convenience, but that returned value can be discarded safely if the caller has a memory pointer to the array. + * + * NOTE: this function's cost is `O(n · log(n))` in average and `O(n²)` in the worst case, with n the length of the + * array. Using it in view functions that are executed through `eth_call` is safe, but one should be very careful + * when executing this as part of a transaction. If the array being sorted is too large, the sort operation may + * consume more gas than is available in a block, leading to potential DoS. + * + * IMPORTANT: Consider memory side-effects when using custom comparator functions that access memory in an unsafe way. + */ + function sort( + bytes32[] memory array, + function(bytes32, bytes32) pure returns (bool) comp + ) internal pure returns (bytes32[] memory) { + sort(_castToUint256Array(array), _castToUint256Comp(comp)); + return array; + } + + /** + * @dev Variant of {sort} that sorts an array of bytes32 in increasing order. + */ + function sort(bytes32[] memory array) internal pure returns (bytes32[] memory) { + sort(_castToUint256Array(array), Comparators.lt); + return array; + } + + /** + * @dev Performs a quick sort of a segment of memory. The segment sorted starts at `begin` (inclusive), and stops + * at end (exclusive). Sorting follows the `comp` comparator. + * + * Invariant: `begin <= end`. This is the case when initially called by {sort} and is preserved in subcalls. + * + * IMPORTANT: Memory locations between `begin` and `end` are not validated/zeroed. This function should + * be used only if the limits are within a memory array. + */ + function _quickSort(uint256 begin, uint256 end, function(uint256, uint256) pure returns (bool) comp) private pure { + unchecked { + if (end - begin < 0x40) return; + + // Use first element as pivot + uint256 pivot = _mload(begin); + // Position where the pivot should be at the end of the loop + uint256 pos = begin; + + for (uint256 it = begin + 0x20; it < end; it += 0x20) { + if (comp(_mload(it), pivot)) { + // If the value stored at the iterator's position comes before the pivot, we increment the + // position of the pivot and move the value there. + pos += 0x20; + _swap(pos, it); + } + } + + _swap(begin, pos); // Swap pivot into place + _quickSort(begin, pos, comp); // Sort the left side of the pivot + _quickSort(pos + 0x20, end, comp); // Sort the right side of the pivot + } + } + + /** + * @dev Pointer to the memory location of the first element of `array`. + */ + function _begin(uint256[] memory array) private pure returns (uint256 ptr) { + assembly ("memory-safe") { + ptr := add(array, 0x20) + } + } + + /** + * @dev Pointer to the memory location of the first memory word (32bytes) after `array`. This is the memory word + * that comes just after the last element of the array. + */ + function _end(uint256[] memory array) private pure returns (uint256 ptr) { + unchecked { + return _begin(array) + array.length * 0x20; + } + } + + /** + * @dev Load memory word (as a uint256) at location `ptr`. + */ + function _mload(uint256 ptr) private pure returns (uint256 value) { + assembly { + value := mload(ptr) + } + } + + /** + * @dev Swaps the elements memory location `ptr1` and `ptr2`. + */ + function _swap(uint256 ptr1, uint256 ptr2) private pure { + assembly { + let value1 := mload(ptr1) + let value2 := mload(ptr2) + mstore(ptr1, value2) + mstore(ptr2, value1) + } + } + + /// @dev Helper: low level cast address memory array to uint256 memory array + function _castToUint256Array(address[] memory input) private pure returns (uint256[] memory output) { + assembly { + output := input + } + } + + /// @dev Helper: low level cast bytes32 memory array to uint256 memory array + function _castToUint256Array(bytes32[] memory input) private pure returns (uint256[] memory output) { + assembly { + output := input + } + } + + /// @dev Helper: low level cast address comp function to uint256 comp function + function _castToUint256Comp( + function(address, address) pure returns (bool) input + ) private pure returns (function(uint256, uint256) pure returns (bool) output) { + assembly { + output := input + } + } + + /// @dev Helper: low level cast bytes32 comp function to uint256 comp function + function _castToUint256Comp( + function(bytes32, bytes32) pure returns (bool) input + ) private pure returns (function(uint256, uint256) pure returns (bool) output) { + assembly { + output := input + } + } + + /** + * @dev Searches a sorted `array` and returns the first index that contains + * a value greater or equal to `element`. If no such index exists (i.e. all + * values in the array are strictly less than `element`), the array length is + * returned. Time complexity O(log n). + * + * NOTE: The `array` is expected to be sorted in ascending order, and to + * contain no repeated elements. + * + * IMPORTANT: Deprecated. This implementation behaves as {lowerBound} but lacks + * support for repeated elements in the array. The {lowerBound} function should + * be used instead. + */ + function findUpperBound(uint256[] storage array, uint256 element) internal view returns (uint256) { + uint256 low = 0; + uint256 high = array.length; + + if (high == 0) { + return 0; + } + + while (low < high) { + uint256 mid = Math.average(low, high); + + // Note that mid will always be strictly less than high (i.e. it will be a valid array index) + // because Math.average rounds towards zero (it does integer division with truncation). + if (unsafeAccess(array, mid).value > element) { + high = mid; + } else { + low = mid + 1; + } + } + + // At this point `low` is the exclusive upper bound. We will return the inclusive upper bound. + if (low > 0 && unsafeAccess(array, low - 1).value == element) { + return low - 1; + } else { + return low; + } + } + + /** + * @dev Searches an `array` sorted in ascending order and returns the first + * index that contains a value greater or equal than `element`. If no such index + * exists (i.e. all values in the array are strictly less than `element`), the array + * length is returned. Time complexity O(log n). + * + * See C++'s https://en.cppreference.com/w/cpp/algorithm/lower_bound[lower_bound]. + */ + function lowerBound(uint256[] storage array, uint256 element) internal view returns (uint256) { + uint256 low = 0; + uint256 high = array.length; + + if (high == 0) { + return 0; + } + + while (low < high) { + uint256 mid = Math.average(low, high); + + // Note that mid will always be strictly less than high (i.e. it will be a valid array index) + // because Math.average rounds towards zero (it does integer division with truncation). + if (unsafeAccess(array, mid).value < element) { + // this cannot overflow because mid < high + unchecked { + low = mid + 1; + } + } else { + high = mid; + } + } + + return low; + } + + /** + * @dev Searches an `array` sorted in ascending order and returns the first + * index that contains a value strictly greater than `element`. If no such index + * exists (i.e. all values in the array are strictly less than `element`), the array + * length is returned. Time complexity O(log n). + * + * See C++'s https://en.cppreference.com/w/cpp/algorithm/upper_bound[upper_bound]. + */ + function upperBound(uint256[] storage array, uint256 element) internal view returns (uint256) { + uint256 low = 0; + uint256 high = array.length; + + if (high == 0) { + return 0; + } + + while (low < high) { + uint256 mid = Math.average(low, high); + + // Note that mid will always be strictly less than high (i.e. it will be a valid array index) + // because Math.average rounds towards zero (it does integer division with truncation). + if (unsafeAccess(array, mid).value > element) { + high = mid; + } else { + // this cannot overflow because mid < high + unchecked { + low = mid + 1; + } + } + } + + return low; + } + + /** + * @dev Same as {lowerBound}, but with an array in memory. + */ + function lowerBoundMemory(uint256[] memory array, uint256 element) internal pure returns (uint256) { + uint256 low = 0; + uint256 high = array.length; + + if (high == 0) { + return 0; + } + + while (low < high) { + uint256 mid = Math.average(low, high); + + // Note that mid will always be strictly less than high (i.e. it will be a valid array index) + // because Math.average rounds towards zero (it does integer division with truncation). + if (unsafeMemoryAccess(array, mid) < element) { + // this cannot overflow because mid < high + unchecked { + low = mid + 1; + } + } else { + high = mid; + } + } + + return low; + } + + /** + * @dev Same as {upperBound}, but with an array in memory. + */ + function upperBoundMemory(uint256[] memory array, uint256 element) internal pure returns (uint256) { + uint256 low = 0; + uint256 high = array.length; + + if (high == 0) { + return 0; + } + + while (low < high) { + uint256 mid = Math.average(low, high); + + // Note that mid will always be strictly less than high (i.e. it will be a valid array index) + // because Math.average rounds towards zero (it does integer division with truncation). + if (unsafeMemoryAccess(array, mid) > element) { + high = mid; + } else { + // this cannot overflow because mid < high + unchecked { + low = mid + 1; + } + } + } + + return low; + } + + /** + * @dev Access an array in an "unsafe" way. Skips solidity "index-out-of-range" check. + * + * WARNING: Only use if you are certain `pos` is lower than the array length. + */ + function unsafeAccess(address[] storage arr, uint256 pos) internal pure returns (StorageSlot.AddressSlot storage) { + bytes32 slot; + assembly ("memory-safe") { + slot := arr.slot + } + return slot.deriveArray().offset(pos).getAddressSlot(); + } + + /** + * @dev Access an array in an "unsafe" way. Skips solidity "index-out-of-range" check. + * + * WARNING: Only use if you are certain `pos` is lower than the array length. + */ + function unsafeAccess(bytes32[] storage arr, uint256 pos) internal pure returns (StorageSlot.Bytes32Slot storage) { + bytes32 slot; + assembly ("memory-safe") { + slot := arr.slot + } + return slot.deriveArray().offset(pos).getBytes32Slot(); + } + + /** + * @dev Access an array in an "unsafe" way. Skips solidity "index-out-of-range" check. + * + * WARNING: Only use if you are certain `pos` is lower than the array length. + */ + function unsafeAccess(uint256[] storage arr, uint256 pos) internal pure returns (StorageSlot.Uint256Slot storage) { + bytes32 slot; + assembly ("memory-safe") { + slot := arr.slot + } + return slot.deriveArray().offset(pos).getUint256Slot(); + } + + /** + * @dev Access an array in an "unsafe" way. Skips solidity "index-out-of-range" check. + * + * WARNING: Only use if you are certain `pos` is lower than the array length. + */ + function unsafeMemoryAccess(address[] memory arr, uint256 pos) internal pure returns (address res) { + assembly { + res := mload(add(add(arr, 0x20), mul(pos, 0x20))) + } + } + + /** + * @dev Access an array in an "unsafe" way. Skips solidity "index-out-of-range" check. + * + * WARNING: Only use if you are certain `pos` is lower than the array length. + */ + function unsafeMemoryAccess(bytes32[] memory arr, uint256 pos) internal pure returns (bytes32 res) { + assembly { + res := mload(add(add(arr, 0x20), mul(pos, 0x20))) + } + } + + /** + * @dev Access an array in an "unsafe" way. Skips solidity "index-out-of-range" check. + * + * WARNING: Only use if you are certain `pos` is lower than the array length. + */ + function unsafeMemoryAccess(uint256[] memory arr, uint256 pos) internal pure returns (uint256 res) { + assembly { + res := mload(add(add(arr, 0x20), mul(pos, 0x20))) + } + } + + /** + * @dev Helper to set the length of a dynamic array. Directly writing to `.length` is forbidden. + * + * WARNING: this does not clear elements if length is reduced, of initialize elements if length is increased. + */ + function unsafeSetLength(address[] storage array, uint256 len) internal { + assembly ("memory-safe") { + sstore(array.slot, len) + } + } + + /** + * @dev Helper to set the length of a dynamic array. Directly writing to `.length` is forbidden. + * + * WARNING: this does not clear elements if length is reduced, of initialize elements if length is increased. + */ + function unsafeSetLength(bytes32[] storage array, uint256 len) internal { + assembly ("memory-safe") { + sstore(array.slot, len) + } + } + + /** + * @dev Helper to set the length of a dynamic array. Directly writing to `.length` is forbidden. + * + * WARNING: this does not clear elements if length is reduced, of initialize elements if length is increased. + */ + function unsafeSetLength(uint256[] storage array, uint256 len) internal { + assembly ("memory-safe") { + sstore(array.slot, len) + } + } +} + +// lib/openzeppelin-contracts/contracts/utils/structs/EnumerableSet.sol + +// OpenZeppelin Contracts (last updated v5.3.0) (utils/structs/EnumerableSet.sol) +// This file was procedurally generated from scripts/generate/templates/EnumerableSet.js. + +/** + * @dev Library for managing + * https://en.wikipedia.org/wiki/Set_(abstract_data_type)[sets] of primitive + * types. + * + * Sets have the following properties: + * + * - Elements are added, removed, and checked for existence in constant time + * (O(1)). + * - Elements are enumerated in O(n). No guarantees are made on the ordering. + * - Set can be cleared (all elements removed) in O(n). + * + * ```solidity + * contract Example { + * // Add the library methods + * using EnumerableSet for EnumerableSet.AddressSet; + * + * // Declare a set state variable + * EnumerableSet.AddressSet private mySet; + * } + * ``` + * + * As of v3.3.0, sets of type `bytes32` (`Bytes32Set`), `address` (`AddressSet`) + * and `uint256` (`UintSet`) are supported. + * + * [WARNING] + * ==== + * Trying to delete such a structure from storage will likely result in data corruption, rendering the structure + * unusable. + * See https://github.com/ethereum/solidity/pull/11843[ethereum/solidity#11843] for more info. + * + * In order to clean an EnumerableSet, you can either remove all elements one by one or create a fresh instance using an + * array of EnumerableSet. + * ==== + */ +library EnumerableSet { + // To implement this library for multiple types with as little code + // repetition as possible, we write it in terms of a generic Set type with + // bytes32 values. + // The Set implementation uses private functions, and user-facing + // implementations (such as AddressSet) are just wrappers around the + // underlying Set. + // This means that we can only create new EnumerableSets for types that fit + // in bytes32. + + struct Set { + // Storage of set values + bytes32[] _values; + // Position is the index of the value in the `values` array plus 1. + // Position 0 is used to mean a value is not in the set. + mapping(bytes32 value => uint256) _positions; + } + + /** + * @dev Add a value to a set. O(1). + * + * Returns true if the value was added to the set, that is if it was not + * already present. + */ + function _add(Set storage set, bytes32 value) private returns (bool) { + if (!_contains(set, value)) { + set._values.push(value); + // The value is stored at length-1, but we add 1 to all indexes + // and use 0 as a sentinel value + set._positions[value] = set._values.length; + return true; + } else { + return false; + } + } + + /** + * @dev Removes a value from a set. O(1). + * + * Returns true if the value was removed from the set, that is if it was + * present. + */ + function _remove(Set storage set, bytes32 value) private returns (bool) { + // We cache the value's position to prevent multiple reads from the same storage slot + uint256 position = set._positions[value]; + + if (position != 0) { + // Equivalent to contains(set, value) + // To delete an element from the _values array in O(1), we swap the element to delete with the last one in + // the array, and then remove the last element (sometimes called as 'swap and pop'). + // This modifies the order of the array, as noted in {at}. + + uint256 valueIndex = position - 1; + uint256 lastIndex = set._values.length - 1; + + if (valueIndex != lastIndex) { + bytes32 lastValue = set._values[lastIndex]; + + // Move the lastValue to the index where the value to delete is + set._values[valueIndex] = lastValue; + // Update the tracked position of the lastValue (that was just moved) + set._positions[lastValue] = position; + } + + // Delete the slot where the moved value was stored + set._values.pop(); + + // Delete the tracked position for the deleted slot + delete set._positions[value]; + + return true; + } else { + return false; + } + } + + /** + * @dev Removes all the values from a set. O(n). + * + * WARNING: Developers should keep in mind that this function has an unbounded cost and using it may render the + * function uncallable if the set grows to the point where clearing it consumes too much gas to fit in a block. + */ + function _clear(Set storage set) private { + uint256 len = _length(set); + for (uint256 i = 0; i < len; ++i) { + delete set._positions[set._values[i]]; + } + Arrays.unsafeSetLength(set._values, 0); + } + + /** + * @dev Returns true if the value is in the set. O(1). + */ + function _contains(Set storage set, bytes32 value) private view returns (bool) { + return set._positions[value] != 0; + } + + /** + * @dev Returns the number of values on the set. O(1). + */ + function _length(Set storage set) private view returns (uint256) { + return set._values.length; + } + + /** + * @dev Returns the value stored at position `index` in the set. O(1). + * + * Note that there are no guarantees on the ordering of values inside the + * array, and it may change when more values are added or removed. + * + * Requirements: + * + * - `index` must be strictly less than {length}. + */ + function _at(Set storage set, uint256 index) private view returns (bytes32) { + return set._values[index]; + } + + /** + * @dev Return the entire set in an array + * + * WARNING: This operation will copy the entire storage to memory, which can be quite expensive. This is designed + * to mostly be used by view accessors that are queried without any gas fees. Developers should keep in mind that + * this function has an unbounded cost, and using it as part of a state-changing function may render the function + * uncallable if the set grows to a point where copying to memory consumes too much gas to fit in a block. + */ + function _values(Set storage set) private view returns (bytes32[] memory) { + return set._values; + } + + // Bytes32Set + + struct Bytes32Set { + Set _inner; + } + + /** + * @dev Add a value to a set. O(1). + * + * Returns true if the value was added to the set, that is if it was not + * already present. + */ + function add(Bytes32Set storage set, bytes32 value) internal returns (bool) { + return _add(set._inner, value); + } + + /** + * @dev Removes a value from a set. O(1). + * + * Returns true if the value was removed from the set, that is if it was + * present. + */ + function remove(Bytes32Set storage set, bytes32 value) internal returns (bool) { + return _remove(set._inner, value); + } + + /** + * @dev Removes all the values from a set. O(n). + * + * WARNING: Developers should keep in mind that this function has an unbounded cost and using it may render the + * function uncallable if the set grows to the point where clearing it consumes too much gas to fit in a block. + */ + function clear(Bytes32Set storage set) internal { + _clear(set._inner); + } + + /** + * @dev Returns true if the value is in the set. O(1). + */ + function contains(Bytes32Set storage set, bytes32 value) internal view returns (bool) { + return _contains(set._inner, value); + } + + /** + * @dev Returns the number of values in the set. O(1). + */ + function length(Bytes32Set storage set) internal view returns (uint256) { + return _length(set._inner); + } + + /** + * @dev Returns the value stored at position `index` in the set. O(1). + * + * Note that there are no guarantees on the ordering of values inside the + * array, and it may change when more values are added or removed. + * + * Requirements: + * + * - `index` must be strictly less than {length}. + */ + function at(Bytes32Set storage set, uint256 index) internal view returns (bytes32) { + return _at(set._inner, index); + } + + /** + * @dev Return the entire set in an array + * + * WARNING: This operation will copy the entire storage to memory, which can be quite expensive. This is designed + * to mostly be used by view accessors that are queried without any gas fees. Developers should keep in mind that + * this function has an unbounded cost, and using it as part of a state-changing function may render the function + * uncallable if the set grows to a point where copying to memory consumes too much gas to fit in a block. + */ + function values(Bytes32Set storage set) internal view returns (bytes32[] memory) { + bytes32[] memory store = _values(set._inner); + bytes32[] memory result; + + assembly ("memory-safe") { + result := store + } + + return result; + } + + // AddressSet + + struct AddressSet { + Set _inner; + } + + /** + * @dev Add a value to a set. O(1). + * + * Returns true if the value was added to the set, that is if it was not + * already present. + */ + function add(AddressSet storage set, address value) internal returns (bool) { + return _add(set._inner, bytes32(uint256(uint160(value)))); + } + + /** + * @dev Removes a value from a set. O(1). + * + * Returns true if the value was removed from the set, that is if it was + * present. + */ + function remove(AddressSet storage set, address value) internal returns (bool) { + return _remove(set._inner, bytes32(uint256(uint160(value)))); + } + + /** + * @dev Removes all the values from a set. O(n). + * + * WARNING: Developers should keep in mind that this function has an unbounded cost and using it may render the + * function uncallable if the set grows to the point where clearing it consumes too much gas to fit in a block. + */ + function clear(AddressSet storage set) internal { + _clear(set._inner); + } + + /** + * @dev Returns true if the value is in the set. O(1). + */ + function contains(AddressSet storage set, address value) internal view returns (bool) { + return _contains(set._inner, bytes32(uint256(uint160(value)))); + } + + /** + * @dev Returns the number of values in the set. O(1). + */ + function length(AddressSet storage set) internal view returns (uint256) { + return _length(set._inner); + } + + /** + * @dev Returns the value stored at position `index` in the set. O(1). + * + * Note that there are no guarantees on the ordering of values inside the + * array, and it may change when more values are added or removed. + * + * Requirements: + * + * - `index` must be strictly less than {length}. + */ + function at(AddressSet storage set, uint256 index) internal view returns (address) { + return address(uint160(uint256(_at(set._inner, index)))); + } + + /** + * @dev Return the entire set in an array + * + * WARNING: This operation will copy the entire storage to memory, which can be quite expensive. This is designed + * to mostly be used by view accessors that are queried without any gas fees. Developers should keep in mind that + * this function has an unbounded cost, and using it as part of a state-changing function may render the function + * uncallable if the set grows to a point where copying to memory consumes too much gas to fit in a block. + */ + function values(AddressSet storage set) internal view returns (address[] memory) { + bytes32[] memory store = _values(set._inner); + address[] memory result; + + assembly ("memory-safe") { + result := store + } + + return result; + } + + // UintSet + + struct UintSet { + Set _inner; + } + + /** + * @dev Add a value to a set. O(1). + * + * Returns true if the value was added to the set, that is if it was not + * already present. + */ + function add(UintSet storage set, uint256 value) internal returns (bool) { + return _add(set._inner, bytes32(value)); + } + + /** + * @dev Removes a value from a set. O(1). + * + * Returns true if the value was removed from the set, that is if it was + * present. + */ + function remove(UintSet storage set, uint256 value) internal returns (bool) { + return _remove(set._inner, bytes32(value)); + } + + /** + * @dev Removes all the values from a set. O(n). + * + * WARNING: Developers should keep in mind that this function has an unbounded cost and using it may render the + * function uncallable if the set grows to the point where clearing it consumes too much gas to fit in a block. + */ + function clear(UintSet storage set) internal { + _clear(set._inner); + } + + /** + * @dev Returns true if the value is in the set. O(1). + */ + function contains(UintSet storage set, uint256 value) internal view returns (bool) { + return _contains(set._inner, bytes32(value)); + } + + /** + * @dev Returns the number of values in the set. O(1). + */ + function length(UintSet storage set) internal view returns (uint256) { + return _length(set._inner); + } + + /** + * @dev Returns the value stored at position `index` in the set. O(1). + * + * Note that there are no guarantees on the ordering of values inside the + * array, and it may change when more values are added or removed. + * + * Requirements: + * + * - `index` must be strictly less than {length}. + */ + function at(UintSet storage set, uint256 index) internal view returns (uint256) { + return uint256(_at(set._inner, index)); + } + + /** + * @dev Return the entire set in an array + * + * WARNING: This operation will copy the entire storage to memory, which can be quite expensive. This is designed + * to mostly be used by view accessors that are queried without any gas fees. Developers should keep in mind that + * this function has an unbounded cost, and using it as part of a state-changing function may render the function + * uncallable if the set grows to a point where copying to memory consumes too much gas to fit in a block. + */ + function values(UintSet storage set) internal view returns (uint256[] memory) { + bytes32[] memory store = _values(set._inner); + uint256[] memory result; + + assembly ("memory-safe") { + result := store + } + + return result; + } +} + +// src/modules/ERC3643ComplianceModule.sol + +/* ==== OpenZeppelin === */ + +/* ==== Interface and other library === */ + +abstract contract ERC3643ComplianceModule is IERC3643Compliance, AccessControl { + /* ==== Type declaration === */ + using EnumerableSet for EnumerableSet.AddressSet; + /* ==== State Variables === */ + // Token binding tracking + EnumerableSet.AddressSet private _boundTokens; + // Access Control + bytes32 public constant COMPLIANCE_MANAGER_ROLE = keccak256("COMPLIANCE_MANAGER_ROLE"); + + /* ==== Errors === */ + error RuleEngine_ERC3643Compliance_InvalidTokenAddress(); + error RuleEngine_ERC3643Compliance_TokenAlreadyBound(); + error RuleEngine_ERC3643Compliance_TokenNotBound(); + error RuleEngine_ERC3643Compliance_UnauthorizedCaller(); + + /* ==== Modifier === */ + modifier onlyBoundToken() { + if (!_boundTokens.contains(_msgSender())) { + revert RuleEngine_ERC3643Compliance_UnauthorizedCaller(); + } + _; + } + + /*////////////////////////////////////////////////////////////// + PUBLIC/EXTERNAL FUNCTIONS + //////////////////////////////////////////////////////////////*/ + + /* ============ State functions ============ */ + /// @inheritdoc IERC3643Compliance + function bindToken(address token) public override virtual onlyRole(COMPLIANCE_MANAGER_ROLE) { + _bindToken(token); + } + + /// @inheritdoc IERC3643Compliance + function unbindToken(address token) public override virtual onlyRole(COMPLIANCE_MANAGER_ROLE) { + _unbindToken(token); + } + + /// @inheritdoc IERC3643Compliance + function isTokenBound(address token) public view override returns (bool) { + return _boundTokens.contains(token); + } + + /// @inheritdoc IERC3643Compliance + function getTokenBound() external view override returns (address) { + if(_boundTokens.length() > 0){ + return _boundTokens.at(0); + } else { + return address(0); + } + } + + /// @inheritdoc IERC3643Compliance + function getTokenBounds() external view override returns (address[] memory) { + return _boundTokens.values(); + } + + /*////////////////////////////////////////////////////////////// + INTERNAL/PRIVATE FUNCTIONS + //////////////////////////////////////////////////////////////*/ + + function _unbindToken(address token) internal { + require (_boundTokens.contains(token), RuleEngine_ERC3643Compliance_TokenNotBound()); + _boundTokens.remove(token); + + emit TokenUnbound(token); + } + function _bindToken(address token) internal{ + require(token != address(0), RuleEngine_ERC3643Compliance_InvalidTokenAddress()); + require(!_boundTokens.contains(token), RuleEngine_ERC3643Compliance_TokenAlreadyBound()); + _boundTokens.add(token); + + emit TokenBound(token); + } +} + +// src/modules/RulesManagementModule.sol + +/* ==== OpenZeppelin === */ + +/* ==== Interface and other library === */ + +/** + * @title RuleEngine - part + */ +abstract contract RulesManagementModule is + AccessControl, + RulesManagementModuleInvariantStorage, + IRulesManagementModule +{ + /* ==== Type declaration === */ + using EnumerableSet for EnumerableSet.AddressSet; + + /* ==== State Variables === */ + /// @dev Array of rules + EnumerableSet.AddressSet internal _rules; + + /*////////////////////////////////////////////////////////////// + PUBLIC/EXTERNAL FUNCTIONS + //////////////////////////////////////////////////////////////*/ + + /* ============ State functions ============ */ + + /** + * @inheritdoc IRulesManagementModule + */ + function setRules( + IRule[] calldata rules_ + ) public virtual override(IRulesManagementModule) onlyRole(RULE_ENGINE_OPERATOR_ROLE) { + if (rules_.length == 0) { + revert RuleEngine_ArrayIsEmpty(); + } + if (_rules.length() > 0) { + _clearRules(); + } + for(uint256 i = 0; i < rules_.length; ++i){ + _checkRule(address(rules_[i])); + _rules.add(address(rules_[i])); + emit AddRule(rules_[i]); + } + + } + + /** + * @inheritdoc IRulesManagementModule + */ + function clearRules() public virtual override(IRulesManagementModule) onlyRole(RULE_ENGINE_OPERATOR_ROLE) { + _clearRules(); + } + + /** + * @inheritdoc IRulesManagementModule + */ + function addRule( + IRule rule_ + ) public virtual override(IRulesManagementModule) onlyRole(RULE_ENGINE_OPERATOR_ROLE) { + _checkRule(address(rule_)); + _rules.add(address(rule_)); + emit AddRule(rule_); + } + + /** + * @inheritdoc IRulesManagementModule + */ + function removeRule( + IRule rule_ + ) public virtual override(IRulesManagementModule) onlyRole(RULE_ENGINE_OPERATOR_ROLE) { + require(_rules.contains(address(rule_)), RuleEngine_RuleDoNotMatch()); + _removeRule(rule_); + } + + /* ============ View functions ============ */ + + /** + * @inheritdoc IRulesManagementModule + */ + function rulesCount() public view virtual override(IRulesManagementModule) returns (uint256) { + return _rules.length(); + } + + /** + * @inheritdoc IRulesManagementModule + */ + function containsRule(IRule rule_) public view virtual override(IRulesManagementModule) returns (bool){ + return _rules.contains(address(rule_)); + } + + /** + * @inheritdoc IRulesManagementModule + */ + function rule( + uint256 ruleId + ) public view virtual override(IRulesManagementModule) returns (address) { + return _rules.at(ruleId); + } + + /** + * @inheritdoc IRulesManagementModule + */ + function rules() + public + view + virtual + override(IRulesManagementModule) + returns (address[] memory) + { + return _rules.values(); + } + + /*////////////////////////////////////////////////////////////// + INTERNAL/PRIVATE FUNCTIONS + //////////////////////////////////////////////////////////////*/ + /** + * @notice Clear all the rules of the array of rules + * + */ + function _clearRules() internal virtual { + emit ClearRules(); + _rules.clear(); + } + + /** + * @notice Remove a rule from the array of rules + * Revert if the rule found at the specified index does not match the rule in argument + * @param rule_ address of the target rule + * + * + */ + function _removeRule(IRule rule_) internal virtual { + _rules.remove(address(rule_)); + emit RemoveRule(rule_); + } + + /** + * @dev check if a rule is valid, revert otherwise + */ + function _checkRule(address rule_) internal view{ + if (rule_ == address(0x0)) { + revert RuleEngine_RuleAddressZeroNotAllowed(); + } + if (_rules.contains(rule_)) { + revert RuleEngine_RuleAlreadyExists(); + } + } + + /* ============ Transferred functions ============ */ + + /** + * @notice Go through all the rule to know if a restriction exists on the transfer + * @param from the origin address + * @param to the destination address + * @param value to transfer + **/ + function _transferred( + address from, + address to, + uint256 value + ) internal virtual{ + uint256 rulesLength = _rules.length(); + for (uint256 i = 0; i < rulesLength; ++i) { + IRule(_rules.at(i)).transferred( + from, + to, + value + ); + } + } + + /** + * @notice Go through all the rule to know if a restriction exists on the transfer + * @param spender the spender address (transferFrom) + * @param from the origin address + * @param to the destination address + * @param value to transfer + **/ + function _transferred( + address spender, + address from, + address to, + uint256 value + ) internal virtual{ + uint256 rulesLength = _rules.length(); + for (uint256 i = 0; i < rulesLength; ++i) { + IRule(_rules.at(i)).transferred( + spender, + from, + to, + value + ); + } + } +} + +// src/RuleEngineBase.sol + +/* ==== OpenZeppelin === */ + +/* ==== CMTAT === */ + +/* ==== Modules === */ + +/* ==== Interface and other library === */ + +/** + * @title Implementation of a ruleEngine as defined by the CMTAT + */ +abstract contract RuleEngineBase is + VersionModule, + RulesManagementModule, + ERC3643ComplianceModule, + RuleEngineInvariantStorage, + IRuleEngine +{ + /* ============ State functions ============ */ + /* + * @notice function protected by access control + */ + function transferred( + address spender, + address from, + address to, + uint256 value + ) public virtual override onlyBoundToken { + // Apply on RuleEngine + RulesManagementModule._transferred(spender, from, to, value); + } + /** + * @dev ERC-3643 function transferred + */ + function transferred( + address from, + address to, + uint256 value + ) public virtual override onlyBoundToken { + _transferred(from, to, value); + } + + /// @inheritdoc IERC3643Compliance + function created(address to, uint256 value) public virtual override onlyBoundToken{ + _transferred(address(0), to, value); + } + + /// @inheritdoc IERC3643Compliance + function destroyed(address from, uint256 value) public virtual override onlyBoundToken { + _transferred(from, address(0), value); + } + + /* ============ View functions ============ */ + /** + * @notice Go through all the rule to know if a restriction exists on the transfer + * @param from the origin address + * @param to the destination address + * @param value to transfer + * @return The restricion code or REJECTED_CODE_BASE.TRANSFER_OK + **/ + function detectTransferRestriction( + address from, + address to, + uint256 value + ) public view virtual override returns (uint8) { + + // + uint256 rulesLength = rulesCount(); + for (uint256 i = 0; i < rulesLength; ++i) { + uint8 restriction = IRule(rule(i)) + .detectTransferRestriction(from, to, value); + if (restriction > 0) { + return restriction; + } + } + + return uint8(REJECTED_CODE_BASE.TRANSFER_OK); + } + + function detectTransferRestrictionFrom( + address spender, + address from, + address to, + uint256 value + ) public view virtual override returns (uint8) { + // + uint256 rulesLength = rulesCount(); + for (uint256 i = 0; i < rulesLength; ++i) { + uint8 restriction = IRule(rule(i)) + .detectTransferRestrictionFrom(spender,from, to, value); + if (restriction > 0) { + return restriction; + } + } + + return uint8(REJECTED_CODE_BASE.TRANSFER_OK); + } + + /** + * @notice Validate a transfer + * @param from the origin address + * @param to the destination address + * @param value to transfer + * @return True if the transfer is valid, false otherwise + **/ + function canTransfer( + address from, + address to, + uint256 value + ) public virtual view override returns (bool) { + return + detectTransferRestriction(from, to, value) == + uint8(REJECTED_CODE_BASE.TRANSFER_OK); + } + + /** + * @notice Validate a transfer + * @param from the origin address + * @param to the destination address + * @param value to transfer + * @return True if the transfer is valid, false otherwise + **/ + function canTransferFrom( + address spender, + address from, + address to, + uint256 value + ) public virtual view override returns (bool) { + return + detectTransferRestrictionFrom(spender, from, to, value) == + uint8(REJECTED_CODE_BASE.TRANSFER_OK); + } + + /** + * @notice Return the message corresponding to the code + * @param restrictionCode The target restriction code + * @return True if the transfer is valid, false otherwise + **/ + function messageForTransferRestriction( + uint8 restrictionCode + ) public virtual view override returns (string memory) { + // + uint256 rulesLength = rulesCount(); + for (uint256 i = 0; i < rulesLength; ++i) { + if ( + IRule(rule(i)) + .canReturnTransferRestrictionCode(restrictionCode) + ) { + return + IRule(rule(i)) + .messageForTransferRestriction(restrictionCode); + } + } + return "Unknown restriction code"; + } + + /* ============ ACCESS CONTROL ============ */ + /** + * @dev Returns `true` if `account` has been granted `role`. + */ + function hasRole( + bytes32 role, + address account + ) public view virtual override(AccessControl) returns (bool) { + // The Default Admin has all roles + if (AccessControl.hasRole(DEFAULT_ADMIN_ROLE, account)) { + return true; + } else { + return AccessControl.hasRole(role, account); + } + } +} + +// src/RuleEngine.sol + +/* ==== OpenZeppelin === */ + +/* ==== Modules === */ + +/* ==== Base contract === */ + +/** + * @title Implementation of a ruleEngine as defined by the CMTAT + */ +contract RuleEngine is + MetaTxModuleStandalone, + RuleEngineBase +{ + /** + * @param admin Address of the contract (Access Control) + * @param forwarderIrrevocable Address of the forwarder, required for the gasless support + */ + constructor( + address admin, + address forwarderIrrevocable, + address tokenContract + ) MetaTxModuleStandalone(forwarderIrrevocable) { + if (admin == address(0)) { + revert RuleEngine_AdminWithAddressZeroNotAllowed(); + } + if (tokenContract != address(0)) { + _bindToken(tokenContract); + } + _grantRole(DEFAULT_ADMIN_ROLE, admin); + } + + /*////////////////////////////////////////////////////////////// + ERC-2771 + //////////////////////////////////////////////////////////////*/ + + /** + * @dev This surcharge is not necessary if you do not use the MetaTxModule + */ + function _msgSender() + internal + view + virtual + override(ERC2771Context, Context) + returns (address sender) + { + return ERC2771Context._msgSender(); + } + + /** + * @dev This surcharge is not necessary if you do not use the MetaTxModule + */ + function _msgData() + internal + view + virtual + override(ERC2771Context, Context) + returns (bytes calldata) + { + return ERC2771Context._msgData(); + } + + /** + * @dev This surcharge is not necessary if you do not use the MetaTxModule + */ + function _contextSuffixLength() + internal + view + virtual + override(ERC2771Context, Context) + returns (uint256) + { + return ERC2771Context._contextSuffixLength(); + } +} diff --git a/classDiagram.svg b/classDiagram.svg new file mode 100644 index 0000000..1c87a90 --- /dev/null +++ b/classDiagram.svg @@ -0,0 +1,1458 @@ + + + + + + +UmlClassDiagram + + + +0 + +<<Interface>> +IERC3643Pause +RuleEngine.sol + +External: +     paused(): bool +     pause() +     unpause() + + + +1 + +<<Interface>> +IERC3643ERC20Base +RuleEngine.sol + +External: +     setName(name: string) +     setSymbol(symbol: string) + + + +2 + +<<Interface>> +IERC3643BatchTransfer +RuleEngine.sol + +External: +     batchTransfer(tos: address[], values: uint256[]): (success_: bool) + + + +3 + +<<Interface>> +IERC3643Base +RuleEngine.sol + +External: +     version(): (version_: string) + + + +4 + +<<Interface>> +IERC3643EnforcementEvent +RuleEngine.sol + +Public: +    <<event>> AddressFrozen(account: address, isFrozen: bool, enforcer: address, data: bytes) + + + +5 + +<<Interface>> +IERC3643Enforcement +RuleEngine.sol + +External: +     isFrozen(account: address): (isFrozen_: bool) +     setAddressFrozen(account: address, freeze: bool) +     batchSetAddressFrozen(accounts: address[], freeze: bool[]) + + + +6 + +<<Interface>> +IERC3643ERC20Enforcement +RuleEngine.sol + +External: +     getFrozenTokens(account: address): (frozenBalance_: uint256) +     freezePartialTokens(account: address, value: uint256) +     unfreezePartialTokens(account: address, value: uint256) +     forcedTransfer(from: address, to: address, value: uint256): (success_: bool) + + + +7 + +<<Interface>> +IERC3643Mint +RuleEngine.sol + +External: +     mint(account: address, value: uint256) +     batchMint(accounts: address[], values: uint256[]) + + + +8 + +<<Interface>> +IERC3643Burn +RuleEngine.sol + +External: +     burn(account: address, value: uint256) +     batchBurn(accounts: address[], values: uint256[]) + + + +9 + +<<Interface>> +IERC3643ComplianceRead +RuleEngine.sol + +External: +     canTransfer(from: address, to: address, value: uint256): (isValid: bool) + + + +10 + +<<Interface>> +IERC3643IComplianceContract +RuleEngine.sol + +External: +     transferred(from: address, to: address, value: uint256) + + + +11 + +<<Interface>> +IERC1404 +RuleEngine.sol + +External: +     detectTransferRestriction(from: address, to: address, value: uint256): uint8 +     messageForTransferRestriction(restrictionCode: uint8): string + + + +12 + +<<Interface>> +IERC1404Extend +RuleEngine.sol + +External: +     detectTransferRestrictionFrom(spender: address, from: address, to: address, value: uint256): uint8 + + + +12->11 + + + + + +13 + +<<Enum>> +REJECTED_CODE_BASE +RuleEngine.sol + +TRANSFER_OK: 0 +TRANSFER_REJECTED_PAUSED: 1 +TRANSFER_REJECTED_FROM_FROZEN: 2 +TRANSFER_REJECTED_TO_FROZEN: 3 +TRANSFER_REJECTED_SPENDER_FROZEN: 4 +TRANSFER_REJECTED_FROM_INSUFFICIENT_ACTIVE_BALANCE: 5 + + + +13->12 + + + + + +14 + +<<Interface>> +IAccessControl +RuleEngine.sol + +External: +     hasRole(role: bytes32, account: address): bool +     getRoleAdmin(role: bytes32): bytes32 +     grantRole(role: bytes32, account: address) +     revokeRole(role: bytes32, account: address) +     renounceRole(role: bytes32, callerConfirmation: address) +Public: +    <<event>> RoleAdminChanged(role: bytes32, previousAdminRole: bytes32, newAdminRole: bytes32) +    <<event>> RoleGranted(role: bytes32, account: address, sender: address) +    <<event>> RoleRevoked(role: bytes32, account: address, sender: address) + + + +15 + +<<Library>> +Comparators +RuleEngine.sol + +Internal: +    lt(a: uint256, b: uint256): bool +    gt(a: uint256, b: uint256): bool + + + +16 + +<<Abstract>> +Context +RuleEngine.sol + +Internal: +    _msgSender(): address +    _msgData(): bytes +    _contextSuffixLength(): uint256 + + + +17 + +<<Library>> +Panic +RuleEngine.sol + +Internal: +   GENERIC: uint256 +   ASSERT: uint256 +   UNDER_OVERFLOW: uint256 +   DIVISION_BY_ZERO: uint256 +   ENUM_CONVERSION_ERROR: uint256 +   STORAGE_ENCODING_ERROR: uint256 +   EMPTY_ARRAY_POP: uint256 +   ARRAY_OUT_OF_BOUNDS: uint256 +   RESOURCE_ERROR: uint256 +   INVALID_INTERNAL_FUNCTION: uint256 + +Internal: +    panic(code: uint256) + + + +18 + +<<Library>> +SlotDerivation +RuleEngine.sol + +Internal: +    erc7201Slot(namespace: string): (slot: bytes32) +    offset(slot: bytes32, pos: uint256): (result: bytes32) +    deriveArray(slot: bytes32): (result: bytes32) +    deriveMapping(slot: bytes32, key: address): (result: bytes32) +    deriveMapping(slot: bytes32, key: bool): (result: bytes32) +    deriveMapping(slot: bytes32, key: bytes32): (result: bytes32) +    deriveMapping(slot: bytes32, key: uint256): (result: bytes32) +    deriveMapping(slot: bytes32, key: int256): (result: bytes32) +    deriveMapping(slot: bytes32, key: string): (result: bytes32) +    deriveMapping(slot: bytes32, key: bytes): (result: bytes32) + + + +19 + +<<Library>> +StorageSlot +RuleEngine.sol + +Internal: +    getAddressSlot(slot: bytes32): (r: AddressSlot) +    getBooleanSlot(slot: bytes32): (r: BooleanSlot) +    getBytes32Slot(slot: bytes32): (r: Bytes32Slot) +    getUint256Slot(slot: bytes32): (r: Uint256Slot) +    getInt256Slot(slot: bytes32): (r: Int256Slot) +    getStringSlot(slot: bytes32): (r: StringSlot) +    getStringSlot(store: string): (r: StringSlot) +    getBytesSlot(slot: bytes32): (r: BytesSlot) +    getBytesSlot(store: bytes): (r: BytesSlot) + + + +20 + +<<Struct>> +AddressSlot +RuleEngine.sol + +value: address + + + +19->20 + + + + + +21 + +<<Struct>> +BooleanSlot +RuleEngine.sol + +value: bool + + + +19->21 + + + + + +22 + +<<Struct>> +Bytes32Slot +RuleEngine.sol + +value: bytes32 + + + +19->22 + + + + + +23 + +<<Struct>> +Uint256Slot +RuleEngine.sol + +value: uint256 + + + +19->23 + + + + + +24 + +<<Struct>> +Int256Slot +RuleEngine.sol + +value: int256 + + + +19->24 + + + + + +25 + +<<Struct>> +StringSlot +RuleEngine.sol + +value: string + + + +19->25 + + + + + +26 + +<<Struct>> +BytesSlot +RuleEngine.sol + +value: bytes + + + +19->26 + + + + + +20->19 + + + + + +21->19 + + + + + +22->19 + + + + + +23->19 + + + + + +24->19 + + + + + +25->19 + + + + + +26->19 + + + + + +27 + +<<Interface>> +IERC165 +RuleEngine.sol + +External: +     supportsInterface(interfaceId: bytes4): bool + + + +28 + +<<Library>> +SafeCast +RuleEngine.sol + +Internal: +    toUint248(value: uint256): uint248 +    toUint240(value: uint256): uint240 +    toUint232(value: uint256): uint232 +    toUint224(value: uint256): uint224 +    toUint216(value: uint256): uint216 +    toUint208(value: uint256): uint208 +    toUint200(value: uint256): uint200 +    toUint192(value: uint256): uint192 +    toUint184(value: uint256): uint184 +    toUint176(value: uint256): uint176 +    toUint168(value: uint256): uint168 +    toUint160(value: uint256): uint160 +    toUint152(value: uint256): uint152 +    toUint144(value: uint256): uint144 +    toUint136(value: uint256): uint136 +    toUint128(value: uint256): uint128 +    toUint120(value: uint256): uint120 +    toUint112(value: uint256): uint112 +    toUint104(value: uint256): uint104 +    toUint96(value: uint256): uint96 +    toUint88(value: uint256): uint88 +    toUint80(value: uint256): uint80 +    toUint72(value: uint256): uint72 +    toUint64(value: uint256): uint64 +    toUint56(value: uint256): uint56 +    toUint48(value: uint256): uint48 +    toUint40(value: uint256): uint40 +    toUint32(value: uint256): uint32 +    toUint24(value: uint256): uint24 +    toUint16(value: uint256): uint16 +    toUint8(value: uint256): uint8 +    toUint256(value: int256): uint256 +    toInt248(value: int256): (downcasted: int248) +    toInt240(value: int256): (downcasted: int240) +    toInt232(value: int256): (downcasted: int232) +    toInt224(value: int256): (downcasted: int224) +    toInt216(value: int256): (downcasted: int216) +    toInt208(value: int256): (downcasted: int208) +    toInt200(value: int256): (downcasted: int200) +    toInt192(value: int256): (downcasted: int192) +    toInt184(value: int256): (downcasted: int184) +    toInt176(value: int256): (downcasted: int176) +    toInt168(value: int256): (downcasted: int168) +    toInt160(value: int256): (downcasted: int160) +    toInt152(value: int256): (downcasted: int152) +    toInt144(value: int256): (downcasted: int144) +    toInt136(value: int256): (downcasted: int136) +    toInt128(value: int256): (downcasted: int128) +    toInt120(value: int256): (downcasted: int120) +    toInt112(value: int256): (downcasted: int112) +    toInt104(value: int256): (downcasted: int104) +    toInt96(value: int256): (downcasted: int96) +    toInt88(value: int256): (downcasted: int88) +    toInt80(value: int256): (downcasted: int80) +    toInt72(value: int256): (downcasted: int72) +    toInt64(value: int256): (downcasted: int64) +    toInt56(value: int256): (downcasted: int56) +    toInt48(value: int256): (downcasted: int48) +    toInt40(value: int256): (downcasted: int40) +    toInt32(value: int256): (downcasted: int32) +    toInt24(value: int256): (downcasted: int24) +    toInt16(value: int256): (downcasted: int16) +    toInt8(value: int256): (downcasted: int8) +    toInt256(value: uint256): int256 +    toUint(b: bool): (u: uint256) + + + +29 + +<<Abstract>> +RuleEngineInvariantStorage +RuleEngine.sol + + + +30 + +<<Interface>> +IERC7551Mint +RuleEngine.sol + +External: +     mint(account: address, value: uint256, data: bytes) +Public: +    <<event>> Mint(minter: address, account: address, value: uint256, data: bytes) + + + +31 + +<<Interface>> +IERC7551Burn +RuleEngine.sol + +External: +     burn(account: address, amount: uint256, data: bytes) +Public: +    <<event>> Burn(burner: address, account: address, value: uint256, data: bytes) + + + +32 + +<<Interface>> +IERC7551Pause +RuleEngine.sol + +External: +     paused(): bool +     pause() +     unpause() + + + +33 + +<<Interface>> +IERC7551ERC20EnforcementEvent +RuleEngine.sol + +Public: +    <<event>> Enforcement(enforcer: address, account: address, amount: uint256, data: bytes) + + + +34 + +<<Interface>> +IERC7551ERC20EnforcementTokenFrozenEvent +RuleEngine.sol + +Public: +    <<event>> TokensFrozen(account: address, value: uint256, data: bytes) +    <<event>> TokensUnfrozen(account: address, value: uint256, data: bytes) + + + +35 + +<<Interface>> +IERC7551ERC20Enforcement +RuleEngine.sol + +External: +     getActiveBalanceOf(account: address): (activeBalance_: uint256) +     getFrozenTokens(account: address): (frozenBalance_: uint256) +     freezePartialTokens(account: address, amount: uint256, data: bytes) +     unfreezePartialTokens(account: address, amount: uint256, data: bytes) +     forcedTransfer(account: address, to: address, value: uint256, data: bytes): (success_: bool) + + + +36 + +<<Interface>> +IERC7551Compliance +RuleEngine.sol + +External: +     canTransferFrom(spender: address, from: address, to: address, value: uint256): bool + + + +36->9 + + + + + +37 + +<<Interface>> +IERC7551Document +RuleEngine.sol + +External: +     termsHash(): (hash_: bytes32) +     setTerms(_hash: bytes32, _uri: string) +     metaData(): (metadata_: string) +     setMetaData(metaData_: string) + + + +38 + +<<Abstract>> +ERC2771Context +RuleEngine.sol + +Private: +   _trustedForwarder: address + +Internal: +    _msgSender(): address +    _msgData(): bytes +    _contextSuffixLength(): uint256 +Public: +    constructor(trustedForwarder_: address) +    trustedForwarder(): address +    isTrustedForwarder(forwarder: address): bool + + + +38->16 + + + + + +39 + +<<Abstract>> +ERC165 +RuleEngine.sol + +Public: +    supportsInterface(interfaceId: bytes4): bool + + + +39->27 + + + + + +40 + +<<Interface>> +IERC3643Compliance +RuleEngine.sol + +External: +     bindToken(token: address) +     unbindToken(token: address) +     isTokenBound(token: address): bool +     getTokenBound(): address +     getTokenBounds(): address[] +     created(to: address, value: uint256) +     destroyed(from: address, value: uint256) +Public: +    <<event>> TokenBound(token: address) +    <<event>> TokenUnbound(token: address) + + + +40->9 + + + + + +40->10 + + + + + +41 + +<<Abstract>> +VersionModule +RuleEngine.sol + +Private: +   VERSION: string + +Public: +    version(): (version_: string) + + + +41->3 + + + + + +42 + +<<Library>> +Math +RuleEngine.sol + +Private: +    _zeroBytes(byteArray: bytes): bool +Internal: +    add512(a: uint256, b: uint256): (high: uint256, low: uint256) +    mul512(a: uint256, b: uint256): (high: uint256, low: uint256) +    tryAdd(a: uint256, b: uint256): (success: bool, result: uint256) +    trySub(a: uint256, b: uint256): (success: bool, result: uint256) +    tryMul(a: uint256, b: uint256): (success: bool, result: uint256) +    tryDiv(a: uint256, b: uint256): (success: bool, result: uint256) +    tryMod(a: uint256, b: uint256): (success: bool, result: uint256) +    saturatingAdd(a: uint256, b: uint256): uint256 +    saturatingSub(a: uint256, b: uint256): uint256 +    saturatingMul(a: uint256, b: uint256): uint256 +    ternary(condition: bool, a: uint256, b: uint256): uint256 +    max(a: uint256, b: uint256): uint256 +    min(a: uint256, b: uint256): uint256 +    average(a: uint256, b: uint256): uint256 +    ceilDiv(a: uint256, b: uint256): uint256 +    mulDiv(x: uint256, y: uint256, denominator: uint256): (result: uint256) +    mulDiv(x: uint256, y: uint256, denominator: uint256, rounding: Rounding): uint256 +    mulShr(x: uint256, y: uint256, n: uint8): (result: uint256) +    mulShr(x: uint256, y: uint256, n: uint8, rounding: Rounding): uint256 +    invMod(a: uint256, n: uint256): uint256 +    invModPrime(a: uint256, p: uint256): uint256 +    modExp(b: uint256, e: uint256, m: uint256): uint256 +    tryModExp(b: uint256, e: uint256, m: uint256): (success: bool, result: uint256) +    modExp(b: bytes, e: bytes, m: bytes): bytes +    tryModExp(b: bytes, e: bytes, m: bytes): (success: bool, result: bytes) +    sqrt(a: uint256): uint256 +    sqrt(a: uint256, rounding: Rounding): uint256 +    log2(x: uint256): (r: uint256) +    log2(value: uint256, rounding: Rounding): uint256 +    log10(value: uint256): uint256 +    log10(value: uint256, rounding: Rounding): uint256 +    log256(x: uint256): (r: uint256) +    log256(value: uint256, rounding: Rounding): uint256 +    unsignedRoundsUp(rounding: Rounding): bool + + + +42->17 + + + + + +42->28 + + + + + +43 + +<<Enum>> +Rounding +RuleEngine.sol + +Floor: 0 +Ceil: 1 +Trunc: 2 +Expand: 3 + + + +42->43 + + + + + +43->42 + + + + + +44 + +<<Abstract>> +MetaTxModuleStandalone +RuleEngine.sol + +Public: +    constructor(trustedForwarder: address) + + + +44->38 + + + + + +45 + +<<Interface>> +IRuleEngine +RuleEngine.sol + +External: +     transferred(spender: address, from: address, to: address, value: uint256) + + + +45->10 + + + + + +45->12 + + + + + +45->36 + + + + + +46 + +<<Abstract>> +AccessControl +RuleEngine.sol + +Private: +   _roles: mapping(bytes32=>RoleData) +Public: +   DEFAULT_ADMIN_ROLE: bytes32 + +Internal: +    _checkRole(role: bytes32) +    _checkRole(role: bytes32, account: address) +    _setRoleAdmin(role: bytes32, adminRole: bytes32) +    _grantRole(role: bytes32, account: address): bool +    _revokeRole(role: bytes32, account: address): bool +Public: +    <<modifier>> onlyRole(role: bytes32) +    supportsInterface(interfaceId: bytes4): bool +    hasRole(role: bytes32, account: address): bool +    getRoleAdmin(role: bytes32): bytes32 +    grantRole(role: bytes32, account: address) <<onlyRole>> +    revokeRole(role: bytes32, account: address) <<onlyRole>> +    renounceRole(role: bytes32, callerConfirmation: address) + + + +46->14 + + + + + +46->16 + + + + + +46->39 + + + + + +47 + +<<Struct>> +RoleData +RuleEngine.sol + +hasRole: mapping(address=>bool) +adminRole: bytes32 + + + +46->47 + + + + + +47->46 + + + + + +48 + +<<Interface>> +IRule +RuleEngine.sol + +External: +     canReturnTransferRestrictionCode(restrictionCode: uint8): bool + + + +48->45 + + + + + +49 + +<<Interface>> +IRulesManagementModule +RuleEngine.sol + +External: +     setRules(rules_: IRule[]) +     rulesCount(): uint256 +     rule(ruleId: uint256): address +     rules(): address[] +     clearRules() +     addRule(rule_: IRule) +     removeRule(rule_: IRule) +     containsRule(rule_: IRule): bool + + + +49->48 + + + + + +50 + +<<Abstract>> +RulesManagementModuleInvariantStorage +RuleEngine.sol + +Public: +   RULE_ENGINE_OPERATOR_ROLE: bytes32 + +Public: +    <<event>> AddRule(rule: IRule) +    <<event>> RemoveRule(rule: IRule) +    <<event>> ClearRules() + + + +50->48 + + + + + +51 + +<<Library>> +Arrays +RuleEngine.sol + +Private: +    _quickSort(begin: uint256, end: uint256, comp: FunctionTypeName()) +    _begin(array: uint256[]): (ptr: uint256) +    _end(array: uint256[]): (ptr: uint256) +    _mload(ptr: uint256): (value: uint256) +    _swap(ptr1: uint256, ptr2: uint256) +    _castToUint256Array(input: address[]): (output: uint256[]) +    _castToUint256Array(input: bytes32[]): (output: uint256[]) +    _castToUint256Comp(input: FunctionTypeName()): (output: FunctionTypeName()) +    _castToUint256Comp(input: FunctionTypeName()): (output: FunctionTypeName()) +Internal: +    sort(array: uint256[], comp: FunctionTypeName()): uint256[] +    sort(array: uint256[]): uint256[] +    sort(array: address[], comp: FunctionTypeName()): address[] +    sort(array: address[]): address[] +    sort(array: bytes32[], comp: FunctionTypeName()): bytes32[] +    sort(array: bytes32[]): bytes32[] +    findUpperBound(array: uint256[], element: uint256): uint256 +    lowerBound(array: uint256[], element: uint256): uint256 +    upperBound(array: uint256[], element: uint256): uint256 +    lowerBoundMemory(array: uint256[], element: uint256): uint256 +    upperBoundMemory(array: uint256[], element: uint256): uint256 +    unsafeAccess(arr: address[], pos: uint256): StorageSlot.AddressSlot +    unsafeAccess(arr: bytes32[], pos: uint256): StorageSlot.Bytes32Slot +    unsafeAccess(arr: uint256[], pos: uint256): StorageSlot.Uint256Slot +    unsafeMemoryAccess(arr: address[], pos: uint256): (res: address) +    unsafeMemoryAccess(arr: bytes32[], pos: uint256): (res: bytes32) +    unsafeMemoryAccess(arr: uint256[], pos: uint256): (res: uint256) +    unsafeSetLength(array: address[], len: uint256) +    unsafeSetLength(array: bytes32[], len: uint256) +    unsafeSetLength(array: uint256[], len: uint256) + + + +51->15 + + + + + +51->18 + + + + + +51->19 + + + + + +51->20 + + + + + +51->22 + + + + + +51->23 + + + + + +51->42 + + + + + +52 + +<<Library>> +EnumerableSet +RuleEngine.sol + +Private: +    _add(set: Set, value: bytes32): bool +    _remove(set: Set, value: bytes32): bool +    _clear(set: Set) +    _contains(set: Set, value: bytes32): bool +    _length(set: Set): uint256 +    _at(set: Set, index: uint256): bytes32 +    _values(set: Set): bytes32[] +Internal: +    add(set: Bytes32Set, value: bytes32): bool +    remove(set: Bytes32Set, value: bytes32): bool +    clear(set: Bytes32Set) +    contains(set: Bytes32Set, value: bytes32): bool +    length(set: Bytes32Set): uint256 +    at(set: Bytes32Set, index: uint256): bytes32 +    values(set: Bytes32Set): bytes32[] +    add(set: AddressSet, value: address): bool +    remove(set: AddressSet, value: address): bool +    clear(set: AddressSet) +    contains(set: AddressSet, value: address): bool +    length(set: AddressSet): uint256 +    at(set: AddressSet, index: uint256): address +    values(set: AddressSet): address[] +    add(set: UintSet, value: uint256): bool +    remove(set: UintSet, value: uint256): bool +    clear(set: UintSet) +    contains(set: UintSet, value: uint256): bool +    length(set: UintSet): uint256 +    at(set: UintSet, index: uint256): uint256 +    values(set: UintSet): uint256[] + + + +52->51 + + + + + +53 + +<<Struct>> +Set +RuleEngine.sol + +_values: bytes32[] +_positions: mapping(bytes32=>uint256) + + + +52->53 + + + + + +54 + +<<Struct>> +Bytes32Set +RuleEngine.sol + +_inner: Set + + + +52->54 + + + + + +55 + +<<Struct>> +AddressSet +RuleEngine.sol + +_inner: Set + + + +52->55 + + + + + +56 + +<<Struct>> +UintSet +RuleEngine.sol + +_inner: Set + + + +52->56 + + + + + +53->52 + + + + + +54->52 + + + + + +54->53 + + + + + +55->52 + + + + + +55->53 + + + + + +56->52 + + + + + +56->53 + + + + + +57 + +<<Abstract>> +ERC3643ComplianceModule +RuleEngine.sol + +Private: +   _boundTokens: EnumerableSet.AddressSet +Public: +   COMPLIANCE_MANAGER_ROLE: bytes32 + +Internal: +    _unbindToken(token: address) +    _bindToken(token: address) +External: +    getTokenBound(): address +    getTokenBounds(): address[] +Public: +    <<modifier>> onlyBoundToken() +    bindToken(token: address) <<onlyRole>> +    unbindToken(token: address) <<onlyRole>> +    isTokenBound(token: address): bool + + + +57->40 + + + + + +57->46 + + + + + +57->52 + + + + + +57->55 + + + + + +58 + +<<Abstract>> +RulesManagementModule +RuleEngine.sol + +Internal: +   _rules: EnumerableSet.AddressSet + +Internal: +    _clearRules() +    _removeRule(rule_: IRule) +    _checkRule(rule_: address) +    _transferred(from: address, to: address, value: uint256) +    _transferred(spender: address, from: address, to: address, value: uint256) +Public: +    setRules(rules_: IRule[]) <<onlyRole>> +    clearRules() <<onlyRole>> +    addRule(rule_: IRule) <<onlyRole>> +    removeRule(rule_: IRule) <<onlyRole>> +    rulesCount(): uint256 +    containsRule(rule_: IRule): bool +    rule(ruleId: uint256): address +    rules(): address[] + + + +58->46 + + + + + +58->48 + + + + + +58->49 + + + + + +58->50 + + + + + +58->52 + + + + + +58->55 + + + + + +59 + +<<Abstract>> +RuleEngineBase +RuleEngine.sol + +Public: +    transferred(spender: address, from: address, to: address, value: uint256) <<onlyBoundToken>> +    transferred(from: address, to: address, value: uint256) <<onlyBoundToken>> +    created(to: address, value: uint256) <<onlyBoundToken>> +    destroyed(from: address, value: uint256) <<onlyBoundToken>> +    detectTransferRestriction(from: address, to: address, value: uint256): uint8 +    detectTransferRestrictionFrom(spender: address, from: address, to: address, value: uint256): uint8 +    canTransfer(from: address, to: address, value: uint256): bool +    canTransferFrom(spender: address, from: address, to: address, value: uint256): bool +    messageForTransferRestriction(restrictionCode: uint8): string +    hasRole(role: bytes32, account: address): bool + + + +59->13 + + + + + +59->29 + + + + + +59->41 + + + + + +59->45 + + + + + +59->46 + + + + + +59->48 + + + + + +59->57 + + + + + +59->58 + + + + + +60 + +RuleEngine +RuleEngine.sol + +Internal: +    _msgSender(): (sender: address) +    _msgData(): bytes +    _contextSuffixLength(): uint256 +Public: +    constructor(admin: address, forwarderIrrevocable: address, tokenContract: address) + + + +60->38 + + + + + +60->44 + + + + + +60->59 + + + + + diff --git a/coverage/amber.png b/coverage/amber.png deleted file mode 100644 index 2cab170d8359081983a4e343848dfe06bc490f12..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 141 zcmeAS@N?(olHy`uVBq!ia0vp^j3CU&3?x-=hn)ga>?NMQuI!iC1^G2tW}LqE04T&+ z;1OBOz`!j8!i<;h*8KqrvZOouIx;Y9?C1WI$O`1M1^9%x{(levWG?NMQuI!iC1^Jb!lvI6;R0X`wF(yt=9xVZRt1vCRixIA4P dLn>}1Cji+@42)0J?}79&c)I$ztaD0e0sy@GAL0N2 diff --git a/coverage/gcov.css b/coverage/gcov.css deleted file mode 100644 index 0fcdff1..0000000 --- a/coverage/gcov.css +++ /dev/null @@ -1,519 +0,0 @@ -/* All views: initial background and text color */ -body -{ - color: #000000; - background-color: #ffffff; -} - -/* All views: standard link format*/ -a:link -{ - color: #284fa8; - text-decoration: underline; -} - -/* All views: standard link - visited format */ -a:visited -{ - color: #00cb40; - text-decoration: underline; -} - -/* All views: standard link - activated format */ -a:active -{ - color: #ff0040; - text-decoration: underline; -} - -/* All views: main title format */ -td.title -{ - text-align: center; - padding-bottom: 10px; - font-family: sans-serif; - font-size: 20pt; - font-style: italic; - font-weight: bold; -} - -/* All views: header item format */ -td.headerItem -{ - text-align: right; - padding-right: 6px; - font-family: sans-serif; - font-weight: bold; - vertical-align: top; - white-space: nowrap; -} - -/* All views: header item value format */ -td.headerValue -{ - text-align: left; - color: #284fa8; - font-family: sans-serif; - font-weight: bold; - white-space: nowrap; -} - -/* All views: header item coverage table heading */ -td.headerCovTableHead -{ - text-align: center; - padding-right: 6px; - padding-left: 6px; - padding-bottom: 0px; - font-family: sans-serif; - font-size: 80%; - white-space: nowrap; -} - -/* All views: header item coverage table entry */ -td.headerCovTableEntry -{ - text-align: right; - color: #284fa8; - font-family: sans-serif; - font-weight: bold; - white-space: nowrap; - padding-left: 12px; - padding-right: 4px; - background-color: #dae7fe; -} - -/* All views: header item coverage table entry for high coverage rate */ -td.headerCovTableEntryHi -{ - text-align: right; - color: #000000; - font-family: sans-serif; - font-weight: bold; - white-space: nowrap; - padding-left: 12px; - padding-right: 4px; - background-color: #a7fc9d; -} - -/* All views: header item coverage table entry for medium coverage rate */ -td.headerCovTableEntryMed -{ - text-align: right; - color: #000000; - font-family: sans-serif; - font-weight: bold; - white-space: nowrap; - padding-left: 12px; - padding-right: 4px; - background-color: #ffea20; -} - -/* All views: header item coverage table entry for ow coverage rate */ -td.headerCovTableEntryLo -{ - text-align: right; - color: #000000; - font-family: sans-serif; - font-weight: bold; - white-space: nowrap; - padding-left: 12px; - padding-right: 4px; - background-color: #ff0000; -} - -/* All views: header legend value for legend entry */ -td.headerValueLeg -{ - text-align: left; - color: #000000; - font-family: sans-serif; - font-size: 80%; - white-space: nowrap; - padding-top: 4px; -} - -/* All views: color of horizontal ruler */ -td.ruler -{ - background-color: #6688d4; -} - -/* All views: version string format */ -td.versionInfo -{ - text-align: center; - padding-top: 2px; - font-family: sans-serif; - font-style: italic; -} - -/* Directory view/File view (all)/Test case descriptions: - table headline format */ -td.tableHead -{ - text-align: center; - color: #ffffff; - background-color: #6688d4; - font-family: sans-serif; - font-size: 120%; - font-weight: bold; - white-space: nowrap; - padding-left: 4px; - padding-right: 4px; -} - -span.tableHeadSort -{ - padding-right: 4px; -} - -/* Directory view/File view (all): filename entry format */ -td.coverFile -{ - text-align: left; - padding-left: 10px; - padding-right: 20px; - color: #284fa8; - background-color: #dae7fe; - font-family: monospace; -} - -/* Directory view/File view (all): bar-graph entry format*/ -td.coverBar -{ - padding-left: 10px; - padding-right: 10px; - background-color: #dae7fe; -} - -/* Directory view/File view (all): bar-graph outline color */ -td.coverBarOutline -{ - background-color: #000000; -} - -/* Directory view/File view (all): percentage entry for files with - high coverage rate */ -td.coverPerHi -{ - text-align: right; - padding-left: 10px; - padding-right: 10px; - background-color: #a7fc9d; - font-weight: bold; - font-family: sans-serif; -} - -/* Directory view/File view (all): line count entry for files with - high coverage rate */ -td.coverNumHi -{ - text-align: right; - padding-left: 10px; - padding-right: 10px; - background-color: #a7fc9d; - white-space: nowrap; - font-family: sans-serif; -} - -/* Directory view/File view (all): percentage entry for files with - medium coverage rate */ -td.coverPerMed -{ - text-align: right; - padding-left: 10px; - padding-right: 10px; - background-color: #ffea20; - font-weight: bold; - font-family: sans-serif; -} - -/* Directory view/File view (all): line count entry for files with - medium coverage rate */ -td.coverNumMed -{ - text-align: right; - padding-left: 10px; - padding-right: 10px; - background-color: #ffea20; - white-space: nowrap; - font-family: sans-serif; -} - -/* Directory view/File view (all): percentage entry for files with - low coverage rate */ -td.coverPerLo -{ - text-align: right; - padding-left: 10px; - padding-right: 10px; - background-color: #ff0000; - font-weight: bold; - font-family: sans-serif; -} - -/* Directory view/File view (all): line count entry for files with - low coverage rate */ -td.coverNumLo -{ - text-align: right; - padding-left: 10px; - padding-right: 10px; - background-color: #ff0000; - white-space: nowrap; - font-family: sans-serif; -} - -/* File view (all): "show/hide details" link format */ -a.detail:link -{ - color: #B8D0FF; - font-size:80%; -} - -/* File view (all): "show/hide details" link - visited format */ -a.detail:visited -{ - color: #B8D0FF; - font-size:80%; -} - -/* File view (all): "show/hide details" link - activated format */ -a.detail:active -{ - color: #ffffff; - font-size:80%; -} - -/* File view (detail): test name entry */ -td.testName -{ - text-align: right; - padding-right: 10px; - background-color: #dae7fe; - font-family: sans-serif; -} - -/* File view (detail): test percentage entry */ -td.testPer -{ - text-align: right; - padding-left: 10px; - padding-right: 10px; - background-color: #dae7fe; - font-family: sans-serif; -} - -/* File view (detail): test lines count entry */ -td.testNum -{ - text-align: right; - padding-left: 10px; - padding-right: 10px; - background-color: #dae7fe; - font-family: sans-serif; -} - -/* Test case descriptions: test name format*/ -dt -{ - font-family: sans-serif; - font-weight: bold; -} - -/* Test case descriptions: description table body */ -td.testDescription -{ - padding-top: 10px; - padding-left: 30px; - padding-bottom: 10px; - padding-right: 30px; - background-color: #dae7fe; -} - -/* Source code view: function entry */ -td.coverFn -{ - text-align: left; - padding-left: 10px; - padding-right: 20px; - color: #284fa8; - background-color: #dae7fe; - font-family: monospace; -} - -/* Source code view: function entry zero count*/ -td.coverFnLo -{ - text-align: right; - padding-left: 10px; - padding-right: 10px; - background-color: #ff0000; - font-weight: bold; - font-family: sans-serif; -} - -/* Source code view: function entry nonzero count*/ -td.coverFnHi -{ - text-align: right; - padding-left: 10px; - padding-right: 10px; - background-color: #dae7fe; - font-weight: bold; - font-family: sans-serif; -} - -/* Source code view: source code format */ -pre.source -{ - font-family: monospace; - white-space: pre; - margin-top: 2px; -} - -/* Source code view: line number format */ -span.lineNum -{ - background-color: #efe383; -} - -/* Source code view: format for lines which were executed */ -td.lineCov, -span.lineCov -{ - background-color: #cad7fe; -} - -/* Source code view: format for Cov legend */ -span.coverLegendCov -{ - padding-left: 10px; - padding-right: 10px; - padding-bottom: 2px; - background-color: #cad7fe; -} - -/* Source code view: format for lines which were not executed */ -td.lineNoCov, -span.lineNoCov -{ - background-color: #ff6230; -} - -/* Source code view: format for NoCov legend */ -span.coverLegendNoCov -{ - padding-left: 10px; - padding-right: 10px; - padding-bottom: 2px; - background-color: #ff6230; -} - -/* Source code view (function table): standard link - visited format */ -td.lineNoCov > a:visited, -td.lineCov > a:visited -{ - color: #000000; - text-decoration: underline; -} - -/* Source code view: format for lines which were executed only in a - previous version */ -span.lineDiffCov -{ - background-color: #b5f7af; -} - -/* Source code view: format for branches which were executed - * and taken */ -span.branchCov -{ - background-color: #cad7fe; -} - -/* Source code view: format for branches which were executed - * but not taken */ -span.branchNoCov -{ - background-color: #ff6230; -} - -/* Source code view: format for branches which were not executed */ -span.branchNoExec -{ - background-color: #ff6230; -} - -/* Source code view: format for the source code heading line */ -pre.sourceHeading -{ - white-space: pre; - font-family: monospace; - font-weight: bold; - margin: 0px; -} - -/* All views: header legend value for low rate */ -td.headerValueLegL -{ - font-family: sans-serif; - text-align: center; - white-space: nowrap; - padding-left: 4px; - padding-right: 2px; - background-color: #ff0000; - font-size: 80%; -} - -/* All views: header legend value for med rate */ -td.headerValueLegM -{ - font-family: sans-serif; - text-align: center; - white-space: nowrap; - padding-left: 2px; - padding-right: 2px; - background-color: #ffea20; - font-size: 80%; -} - -/* All views: header legend value for hi rate */ -td.headerValueLegH -{ - font-family: sans-serif; - text-align: center; - white-space: nowrap; - padding-left: 2px; - padding-right: 4px; - background-color: #a7fc9d; - font-size: 80%; -} - -/* All views except source code view: legend format for low coverage */ -span.coverLegendCovLo -{ - padding-left: 10px; - padding-right: 10px; - padding-top: 2px; - background-color: #ff0000; -} - -/* All views except source code view: legend format for med coverage */ -span.coverLegendCovMed -{ - padding-left: 10px; - padding-right: 10px; - padding-top: 2px; - background-color: #ffea20; -} - -/* All views except source code view: legend format for hi coverage */ -span.coverLegendCovHi -{ - padding-left: 10px; - padding-right: 10px; - padding-top: 2px; - background-color: #a7fc9d; -} diff --git a/coverage/glass.png b/coverage/glass.png deleted file mode 100644 index e1abc00680a3093c49fdb775ae6bdb6764c95af2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 167 zcmeAS@N?(olHy`uVBq!ia0vp^j3CU&3?x-=hn)gaEa{HEjtmSN`?>!lvI6;R0X`wF z|Ns97GD8ntt^-nxB|(0{3=Yq3q=7g|-tI089jvk*Kn`btM`SSr1Gf+eGhVt|_XjA* zUgGKN%6^Gmn4d%Ph(nkFP>9RZ#WAE}PI3Z}&BVayv3^M*kj3EX>gTe~DWM4f=_Dpv diff --git a/coverage/index-sort-b.html b/coverage/index-sort-b.html deleted file mode 100644 index 26d0528..0000000 --- a/coverage/index-sort-b.html +++ /dev/null @@ -1,119 +0,0 @@ - - - - - - - LCOV - lcov.info - - - - - - - - - - - - - - -
LCOV - code coverage report
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Current view:top levelHitTotalCoverage
Test:lcov.infoLines:18719197.9 %
Date:2025-08-08 14:05:19Functions:464993.9 %
Branches:343791.9 %
-
- -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

Directory Sort by nameLine Coverage Sort by line coverageFunctions Sort by function coverageBranches Sort by branch coverage
src/modules -
98.4%98.4%
-
98.4 %121 / 12394.3 %33 / 3587.0 %20 / 23
src -
97.1%97.1%
-
97.1 %66 / 6892.9 %13 / 14100.0 %14 / 14
-
-
- - - - -
Generated by: LCOV version 1.16
-
- - - diff --git a/coverage/index-sort-f.html b/coverage/index-sort-f.html deleted file mode 100644 index 127ecee..0000000 --- a/coverage/index-sort-f.html +++ /dev/null @@ -1,119 +0,0 @@ - - - - - - - LCOV - lcov.info - - - - - - - - - - - - - - -
LCOV - code coverage report
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Current view:top levelHitTotalCoverage
Test:lcov.infoLines:18719197.9 %
Date:2025-08-08 14:05:19Functions:464993.9 %
Branches:343791.9 %
-
- -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

Directory Sort by nameLine Coverage Sort by line coverageFunctions Sort by function coverageBranches Sort by branch coverage
src -
97.1%97.1%
-
97.1 %66 / 6892.9 %13 / 14100.0 %14 / 14
src/modules -
98.4%98.4%
-
98.4 %121 / 12394.3 %33 / 3587.0 %20 / 23
-
-
- - - - -
Generated by: LCOV version 1.16
-
- - - diff --git a/coverage/index-sort-l.html b/coverage/index-sort-l.html deleted file mode 100644 index 912627e..0000000 --- a/coverage/index-sort-l.html +++ /dev/null @@ -1,119 +0,0 @@ - - - - - - - LCOV - lcov.info - - - - - - - - - - - - - - -
LCOV - code coverage report
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Current view:top levelHitTotalCoverage
Test:lcov.infoLines:18719197.9 %
Date:2025-08-08 14:05:19Functions:464993.9 %
Branches:343791.9 %
-
- -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

Directory Sort by nameLine Coverage Sort by line coverageFunctions Sort by function coverageBranches Sort by branch coverage
src -
97.1%97.1%
-
97.1 %66 / 6892.9 %13 / 14100.0 %14 / 14
src/modules -
98.4%98.4%
-
98.4 %121 / 12394.3 %33 / 3587.0 %20 / 23
-
-
- - - - -
Generated by: LCOV version 1.16
-
- - - diff --git a/coverage/index.html b/coverage/index.html deleted file mode 100644 index 8e3f67c..0000000 --- a/coverage/index.html +++ /dev/null @@ -1,119 +0,0 @@ - - - - - - - LCOV - lcov.info - - - - - - - - - - - - - - -
LCOV - code coverage report
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Current view:top levelHitTotalCoverage
Test:lcov.infoLines:18719197.9 %
Date:2025-08-08 14:05:19Functions:464993.9 %
Branches:343791.9 %
-
- -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

Directory Sort by nameLine Coverage Sort by line coverageFunctions Sort by function coverageBranches Sort by branch coverage
src -
97.1%97.1%
-
97.1 %66 / 6892.9 %13 / 14100.0 %14 / 14
src/modules -
98.4%98.4%
-
98.4 %121 / 12394.3 %33 / 3587.0 %20 / 23
-
-
- - - - -
Generated by: LCOV version 1.16
-
- - - diff --git a/coverage/ruby.png b/coverage/ruby.png deleted file mode 100644 index 991b6d4ec9e78be165e3ef757eed1aada287364d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 141 zcmeAS@N?(olHy`uVBq!ia0vp^j3CU&3?x-=hn)ga>?NMQuI!iC1^FceV#7`HfI^%F z9+AZi4BSE>%y{W;-5;PJOS+@4BLl<6e(pbstUx|nfKQ0)e^Y%R^MdiLxj>4`)5S5Q b;#P73kj=!v_*DHKNFRfztDnm{r-UW|iOwIS diff --git a/coverage/snow.png b/coverage/snow.png deleted file mode 100644 index 2cdae107fceec6e7f02ac7acb4a34a82a540caa5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 141 zcmeAS@N?(olHy`uVBq!ia0vp^j3CU&3?x-=hn)ga>?NMQuI!iC1^MM!lvI6;R0X`wF|Ns97GD8ntt^-nBo-U3d c6}OTTfNUlP#;5A{K>8RwUHx3vIVCg!071?oo&W#< diff --git a/coverage/src/RuleEngine.sol.func-sort-c.html b/coverage/src/RuleEngine.sol.func-sort-c.html deleted file mode 100644 index 26ca1b4..0000000 --- a/coverage/src/RuleEngine.sol.func-sort-c.html +++ /dev/null @@ -1,137 +0,0 @@ - - - - - - - LCOV - lcov.info - src/RuleEngine.sol - functions - - - - - - - - - - - - - - -
LCOV - code coverage report
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Current view:top level - src - RuleEngine.sol (source / functions)HitTotalCoverage
Test:lcov.infoLines:666897.1 %
Date:2025-08-08 14:05:19Functions:131492.9 %
Branches:1414100.0 %
-
- -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

Function Name Sort by function nameHit count Sort by hit count
RuleEngine._msgData0
RuleEngine.created2
RuleEngine.destroyed2
RuleEngine.detectTransferRestrictionFrom9
RuleEngine._transferred10
RuleEngine.transferred12
RuleEngine.canTransferFrom13
RuleEngine.detectTransferRestriction13
RuleEngine.messageForTransferRestriction13
RuleEngine.canTransfer17
RuleEngine.constructor85
RuleEngine.hasRole93
RuleEngine._contextSuffixLength285
RuleEngine._msgSender285
-
-
- - - -
Generated by: LCOV version 1.16
-
- - - diff --git a/coverage/src/RuleEngine.sol.func.html b/coverage/src/RuleEngine.sol.func.html deleted file mode 100644 index 5462974..0000000 --- a/coverage/src/RuleEngine.sol.func.html +++ /dev/null @@ -1,137 +0,0 @@ - - - - - - - LCOV - lcov.info - src/RuleEngine.sol - functions - - - - - - - - - - - - - - -
LCOV - code coverage report
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Current view:top level - src - RuleEngine.sol (source / functions)HitTotalCoverage
Test:lcov.infoLines:666897.1 %
Date:2025-08-08 14:05:19Functions:131492.9 %
Branches:1414100.0 %
-
- -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

Function Name Sort by function nameHit count Sort by hit count
RuleEngine._contextSuffixLength285
RuleEngine._msgData0
RuleEngine._msgSender285
RuleEngine._transferred10
RuleEngine.canTransfer17
RuleEngine.canTransferFrom13
RuleEngine.constructor85
RuleEngine.created2
RuleEngine.destroyed2
RuleEngine.detectTransferRestriction13
RuleEngine.detectTransferRestrictionFrom9
RuleEngine.hasRole93
RuleEngine.messageForTransferRestriction13
RuleEngine.transferred12
-
-
- - - -
Generated by: LCOV version 1.16
-
- - - diff --git a/coverage/src/RuleEngine.sol.gcov.html b/coverage/src/RuleEngine.sol.gcov.html deleted file mode 100644 index 63d0041..0000000 --- a/coverage/src/RuleEngine.sol.gcov.html +++ /dev/null @@ -1,384 +0,0 @@ - - - - - - - LCOV - lcov.info - src/RuleEngine.sol - - - - - - - - - - - - - - -
LCOV - code coverage report
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Current view:top level - src - RuleEngine.sol (source / functions)HitTotalCoverage
Test:lcov.infoLines:666897.1 %
Date:2025-08-08 14:05:19Functions:131492.9 %
Branches:1414100.0 %
-
- - - - - - - - -

-
           Branch data     Line data    Source code
-
-       1                 :            : // SPDX-License-Identifier: MPL-2.0
-       2                 :            : 
-       3                 :            : pragma solidity ^0.8.20;
-       4                 :            : 
-       5                 :            : // OpenZeppelin
-       6                 :            : import {AccessControl} from "OZ/access/AccessControl.sol";
-       7                 :            : import {Context} from "OZ/utils/Context.sol";
-       8                 :            : // CMTAT
-       9                 :            : import {IRuleEngine}from "CMTAT/interfaces/engine/IRuleEngine.sol";
-      10                 :            : import {MetaTxModuleStandalone, ERC2771Context} from "./modules/MetaTxModuleStandalone.sol";
-      11                 :            : import {ERC3643Compliance, IERC3643Compliance} from "./modules/ERC3643Compliance.sol";
-      12                 :            : // Other
-      13                 :            : import {RuleEngineOperation} from "./modules/RuleEngineOperation.sol";
-      14                 :            : import {RuleEngineValidationRead, RuleEngineValidation} from "./modules/RuleEngineValidationRead.sol";
-      15                 :            : import {IRuleValidation} from "./interfaces/IRuleValidation.sol";
-      16                 :            : /**
-      17                 :            :  * @title Implementation of a ruleEngine as defined by the CMTAT
-      18                 :            :  */
-      19                 :            : contract RuleEngine is
-      20                 :            :     IRuleEngine,
-      21                 :            :     RuleEngineOperation,
-      22                 :            :     RuleEngineValidationRead,
-      23                 :            :     MetaTxModuleStandalone,
-      24                 :            :     ERC3643Compliance
-      25                 :            : {
-      26                 :            :     
-      27                 :            :     /**
-      28                 :            :      * @notice
-      29                 :            :      * Get the current version of the smart contract
-      30                 :            :      */
-      31                 :            :     string public constant VERSION = "3.0.0";
-      32                 :            : 
-      33                 :            :     /**
-      34                 :            :      * @param admin Address of the contract (Access Control)
-      35                 :            :      * @param forwarderIrrevocable Address of the forwarder, required for the gasless support
-      36                 :            :      */
-      37                 :         85 :     constructor(
-      38                 :            :         address admin,
-      39                 :            :         address forwarderIrrevocable,
-      40                 :            :         address tokenContract
-      41                 :            :     ) MetaTxModuleStandalone(forwarderIrrevocable) {
-      42            [ + ]:         85 :         if (admin == address(0)) {
-      43                 :          1 :             revert RuleEngine_AdminWithAddressZeroNotAllowed();
-      44                 :            :         }
-      45            [ + ]:         84 :         if (tokenContract != address(0)) {
-      46                 :         15 :            _bindToken(tokenContract);
-      47                 :            :         }
-      48                 :         84 :         _grantRole(DEFAULT_ADMIN_ROLE, admin);
-      49                 :            :     }
-      50                 :            : 
-      51                 :            :     /* ============ State functions ============ */
-      52                 :            :     /*
-      53                 :            :      * @notice function protected by access control
-      54                 :            :      */
-      55                 :          3 :     function transferred(
-      56                 :            :         address spender,
-      57                 :            :         address from,
-      58                 :            :         address to,
-      59                 :            :         uint256 value
-      60                 :            :     ) public virtual override onlyBoundToken {
-      61                 :            :         // Validate transfer
-      62         [ +  + ]:          2 :         require(RuleEngineValidationRead.canTransferValidationFrom(spender, from, to, value), RuleEngine_InvalidTransfer(from, to, value));
-      63                 :            :         
-      64                 :            :         // Apply operation on RuleEngine
-      65                 :          1 :         RuleEngineOperation._transferred(from, to, value);
-      66                 :            :     }
-      67                 :            :     /**
-      68                 :            :     * @dev ERC-3643 function transferred
-      69                 :            :     */
-      70                 :          9 :     function transferred(
-      71                 :            :         address from,
-      72                 :            :         address to,
-      73                 :            :         uint256 value
-      74                 :            :     ) public virtual override onlyBoundToken {
-      75                 :          8 :        _transferred(from, to, value);
-      76                 :            :     }
-      77                 :            : 
-      78                 :            :     /// @inheritdoc IERC3643Compliance
-      79                 :          2 :     function created(address to, uint256 value) public virtual override onlyBoundToken{
-      80                 :          1 :        _transferred(address(0), to, value);
-      81                 :            :     }
-      82                 :            : 
-      83                 :            :     /// @inheritdoc IERC3643Compliance
-      84                 :          2 :     function destroyed(address from, uint256 value) public virtual override onlyBoundToken {
-      85                 :          1 :         _transferred(from, address(0), value);
-      86                 :            :     }
-      87                 :            : 
-      88                 :            :     /**
-      89                 :            :      * @notice Go through all the rule to know if a restriction exists on the transfer
-      90                 :            :      * @param from the origin address
-      91                 :            :      * @param to the destination address
-      92                 :            :      * @param value to transfer
-      93                 :            :      **/
-      94                 :         10 :     function _transferred(
-      95                 :            :         address from,
-      96                 :            :         address to,
-      97                 :            :         uint256 value
-      98                 :            :     ) internal virtual override(RuleEngineOperation){
-      99                 :            :          // Validate transfer
-     100         [ +  + ]:         10 :         require(RuleEngineValidationRead.canTransferValidation(from, to, value),RuleEngine_InvalidTransfer(from, to, value));
-     101                 :            :         
-     102                 :            :         // Apply operation on RuleEngine
-     103                 :          7 :         RuleEngineOperation._transferred(from, to, value);
-     104                 :            :     }
-     105                 :            : 
-     106                 :            :     /* ============ View functions ============ */
-     107                 :            :     /**
-     108                 :            :      * @notice Go through all the rule to know if a restriction exists on the transfer
-     109                 :            :      * @param from the origin address
-     110                 :            :      * @param to the destination address
-     111                 :            :      * @param value to transfer
-     112                 :            :      * @return The restricion code or REJECTED_CODE_BASE.TRANSFER_OK
-     113                 :            :      **/
-     114                 :         13 :     function detectTransferRestriction(
-     115                 :            :         address from,
-     116                 :            :         address to,
-     117                 :            :         uint256 value
-     118                 :            :     ) public view override returns (uint8) {
-     119                 :            :         // Validation
-     120                 :         30 :         uint8 code = RuleEngineValidationRead.detectTransferRestrictionValidation(
-     121                 :            :             from,
-     122                 :            :             to,
-     123                 :            :             value
-     124                 :            :         );
-     125            [ + ]:         30 :         if (code != uint8(REJECTED_CODE_BASE.TRANSFER_OK)) {
-     126                 :         11 :             return code;
-     127                 :            :         }
-     128                 :            : 
-     129                 :            :         // Operation
-     130                 :         19 :         uint256 rulesLength =  rulesCountOperation();
-     131                 :         19 :         for (uint256 i = 0; i < rulesLength; ++i) {
-     132                 :         16 :             uint8 restriction = IRuleValidation(ruleOperation(i))
-     133                 :            :                 .detectTransferRestriction(from, to, value);
-     134            [ + ]:         16 :             if (restriction > 0) {
-     135                 :         10 :                 return restriction;
-     136                 :            :             }
-     137                 :            :         }
-     138                 :            : 
-     139                 :          9 :         return uint8(REJECTED_CODE_BASE.TRANSFER_OK);
-     140                 :            :     }
-     141                 :            : 
-     142                 :          9 :     function detectTransferRestrictionFrom(
-     143                 :            :         address spender,
-     144                 :            :         address from,
-     145                 :            :         address to,
-     146                 :            :         uint256 value
-     147                 :            :     ) public view override returns (uint8) {
-     148                 :            :         // Validation
-     149                 :         22 :         uint8 code = RuleEngineValidationRead.detectTransferRestrictionValidationFrom(spender,
-     150                 :            :             from,
-     151                 :            :             to,
-     152                 :            :             value
-     153                 :            :         );
-     154            [ + ]:         22 :         if (code != uint8(REJECTED_CODE_BASE.TRANSFER_OK)) {
-     155                 :         10 :             return code;
-     156                 :            :         }
-     157                 :            : 
-     158                 :            :         // Operation
-     159                 :         12 :         uint256 rulesLength =  rulesCountOperation();
-     160                 :         12 :         for (uint256 i = 0; i < rulesLength; ++i) {
-     161                 :         12 :             uint8 restriction = IRuleValidation(ruleOperation(i))
-     162                 :            :                 .detectTransferRestrictionFrom(spender,from, to, value);
-     163            [ + ]:         12 :             if (restriction > 0) {
-     164                 :          6 :                 return restriction;
-     165                 :            :             }
-     166                 :            :         }
-     167                 :            : 
-     168                 :          6 :         return uint8(REJECTED_CODE_BASE.TRANSFER_OK);
-     169                 :            :     }
-     170                 :            : 
-     171                 :            :     /**
-     172                 :            :      * @notice Validate a transfer
-     173                 :            :      * @param from the origin address
-     174                 :            :      * @param to the destination address
-     175                 :            :      * @param value to transfer
-     176                 :            :      * @return True if the transfer is valid, false otherwise
-     177                 :            :      **/
-     178                 :         17 :     function canTransfer(
-     179                 :            :         address from,
-     180                 :            :         address to,
-     181                 :            :         uint256 value
-     182                 :            :     ) public virtual view override returns (bool) {
-     183                 :         17 :         return
-     184                 :         17 :             detectTransferRestriction(from, to, value) ==
-     185                 :            :             uint8(REJECTED_CODE_BASE.TRANSFER_OK);
-     186                 :            :     }
-     187                 :            : 
-     188                 :            :     /**
-     189                 :            :      * @notice Validate a transfer
-     190                 :            :      * @param from the origin address
-     191                 :            :      * @param to the destination address
-     192                 :            :      * @param value to transfer
-     193                 :            :      * @return True if the transfer is valid, false otherwise
-     194                 :            :      **/
-     195                 :         13 :     function canTransferFrom(
-     196                 :            :         address spender,
-     197                 :            :         address from,
-     198                 :            :         address to,
-     199                 :            :         uint256 value
-     200                 :            :     ) public virtual view override returns (bool) {
-     201                 :         13 :         return
-     202                 :         13 :             detectTransferRestrictionFrom(spender, from, to, value) ==
-     203                 :            :             uint8(REJECTED_CODE_BASE.TRANSFER_OK);
-     204                 :            :     }
-     205                 :            : 
-     206                 :            :     /**
-     207                 :            :      * @notice Return the message corresponding to the code
-     208                 :            :      * @param restrictionCode The target restriction code
-     209                 :            :      * @return True if the transfer is valid, false otherwise
-     210                 :            :      **/
-     211                 :         13 :     function messageForTransferRestriction(
-     212                 :            :         uint8 restrictionCode
-     213                 :            :     ) public virtual view override returns (string memory) {
-     214                 :            :         // Validation
-     215                 :         13 :         uint256 rulesLength = rulesCountValidation();
-     216                 :         13 :         for (uint256 i = 0; i < rulesLength; ++i) {
-     217                 :            :             if (
-     218                 :          8 :                 IRuleValidation(ruleValidation(i))
-     219                 :            :                     .canReturnTransferRestrictionCode(restrictionCode)
-     220            [ + ]:          7 :             ) {
-     221                 :          7 :                 return
-     222                 :          7 :                     IRuleValidation(ruleValidation(i))
-     223                 :            :                         .messageForTransferRestriction(restrictionCode);
-     224                 :            :             }
-     225                 :            :         }
-     226                 :            :         // operation
-     227                 :          6 :         rulesLength =  rulesCountOperation();
-     228                 :          6 :         for (uint256 i = 0; i < rulesLength; ++i) {
-     229                 :            :             if (
-     230                 :          2 :                 IRuleValidation(ruleOperation(i))
-     231                 :            :                     .canReturnTransferRestrictionCode(restrictionCode)
-     232            [ + ]:          1 :             ) {
-     233                 :          1 :                 return
-     234                 :          1 :                     IRuleValidation(ruleOperation(i))
-     235                 :            :                         .messageForTransferRestriction(restrictionCode);
-     236                 :            :             }
-     237                 :            :         }
-     238                 :          5 :         return "Unknown restriction code";
-     239                 :            :     }
-     240                 :            : 
-     241                 :            :     /* ============ ACCESS CONTROL ============ */
-     242                 :            :     /**
-     243                 :            :      * @dev Returns `true` if `account` has been granted `role`.
-     244                 :            :      */
-     245                 :         93 :     function hasRole(
-     246                 :            :         bytes32 role,
-     247                 :            :         address account
-     248                 :            :     ) public view virtual override(AccessControl) returns (bool) {
-     249                 :            :         // The Default Admin has all roles
-     250         [ +  + ]:        278 :         if (AccessControl.hasRole(DEFAULT_ADMIN_ROLE, account)) {
-     251                 :        158 :             return true;
-     252                 :            :         } else {
-     253                 :        120 :             return AccessControl.hasRole(role, account);
-     254                 :            :         }
-     255                 :            :     }
-     256                 :            : 
-     257                 :            :     /*//////////////////////////////////////////////////////////////
-     258                 :            :                            ERC-2771
-     259                 :            :     //////////////////////////////////////////////////////////////*/
-     260                 :            : 
-     261                 :            :     /**
-     262                 :            :      * @dev This surcharge is not necessary if you do not use the MetaTxModule
-     263                 :            :      */
-     264                 :        285 :     function _msgSender()
-     265                 :            :         internal
-     266                 :            :         view
-     267                 :            :         virtual 
-     268                 :            :         override(ERC2771Context, Context)
-     269                 :            :         returns (address sender)
-     270                 :            :     {
-     271                 :        285 :         return ERC2771Context._msgSender();
-     272                 :            :     }
-     273                 :            : 
-     274                 :            :     /**
-     275                 :            :      * @dev This surcharge is not necessary if you do not use the MetaTxModule
-     276                 :            :      */
-     277                 :          0 :     function _msgData()
-     278                 :            :         internal
-     279                 :            :         view
-     280                 :            :         virtual 
-     281                 :            :         override(ERC2771Context, Context)
-     282                 :            :         returns (bytes calldata)
-     283                 :            :     {
-     284                 :          0 :         return ERC2771Context._msgData();
-     285                 :            :     }
-     286                 :            : 
-     287                 :            :     /**
-     288                 :            :      * @dev This surcharge is not necessary if you do not use the MetaTxModule
-     289                 :            :      */
-     290                 :        285 :     function _contextSuffixLength()
-     291                 :            :         internal
-     292                 :            :         view
-     293                 :            :         virtual 
-     294                 :            :         override(ERC2771Context, Context)
-     295                 :            :         returns (uint256)
-     296                 :            :     {
-     297                 :        285 :         return ERC2771Context._contextSuffixLength();
-     298                 :            :     }
-     299                 :            : }
-
-
-
- - - - -
Generated by: LCOV version 1.16
-
- - - diff --git a/coverage/src/index-sort-b.html b/coverage/src/index-sort-b.html deleted file mode 100644 index e1e8715..0000000 --- a/coverage/src/index-sort-b.html +++ /dev/null @@ -1,107 +0,0 @@ - - - - - - - LCOV - lcov.info - src - - - - - - - - - - - - - - -
LCOV - code coverage report
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Current view:top level - srcHitTotalCoverage
Test:lcov.infoLines:666897.1 %
Date:2025-08-08 14:05:19Functions:131492.9 %
Branches:1414100.0 %
-
- -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

Filename Sort by nameLine Coverage Sort by line coverageFunctions Sort by function coverageBranches Sort by branch coverage
RuleEngine.sol -
97.1%97.1%
-
97.1 %66 / 6892.9 %13 / 14100.0 %14 / 14
-
-
- - - - -
Generated by: LCOV version 1.16
-
- - - diff --git a/coverage/src/index-sort-f.html b/coverage/src/index-sort-f.html deleted file mode 100644 index b171fe3..0000000 --- a/coverage/src/index-sort-f.html +++ /dev/null @@ -1,107 +0,0 @@ - - - - - - - LCOV - lcov.info - src - - - - - - - - - - - - - - -
LCOV - code coverage report
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Current view:top level - srcHitTotalCoverage
Test:lcov.infoLines:666897.1 %
Date:2025-08-08 14:05:19Functions:131492.9 %
Branches:1414100.0 %
-
- -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

Filename Sort by nameLine Coverage Sort by line coverageFunctions Sort by function coverageBranches Sort by branch coverage
RuleEngine.sol -
97.1%97.1%
-
97.1 %66 / 6892.9 %13 / 14100.0 %14 / 14
-
-
- - - - -
Generated by: LCOV version 1.16
-
- - - diff --git a/coverage/src/index-sort-l.html b/coverage/src/index-sort-l.html deleted file mode 100644 index 0b952df..0000000 --- a/coverage/src/index-sort-l.html +++ /dev/null @@ -1,107 +0,0 @@ - - - - - - - LCOV - lcov.info - src - - - - - - - - - - - - - - -
LCOV - code coverage report
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Current view:top level - srcHitTotalCoverage
Test:lcov.infoLines:666897.1 %
Date:2025-08-08 14:05:19Functions:131492.9 %
Branches:1414100.0 %
-
- -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

Filename Sort by nameLine Coverage Sort by line coverageFunctions Sort by function coverageBranches Sort by branch coverage
RuleEngine.sol -
97.1%97.1%
-
97.1 %66 / 6892.9 %13 / 14100.0 %14 / 14
-
-
- - - - -
Generated by: LCOV version 1.16
-
- - - diff --git a/coverage/src/index.html b/coverage/src/index.html deleted file mode 100644 index 600c807..0000000 --- a/coverage/src/index.html +++ /dev/null @@ -1,107 +0,0 @@ - - - - - - - LCOV - lcov.info - src - - - - - - - - - - - - - - -
LCOV - code coverage report
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Current view:top level - srcHitTotalCoverage
Test:lcov.infoLines:666897.1 %
Date:2025-08-08 14:05:19Functions:131492.9 %
Branches:1414100.0 %
-
- -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

Filename Sort by nameLine Coverage Sort by line coverageFunctions Sort by function coverageBranches Sort by branch coverage
RuleEngine.sol -
97.1%97.1%
-
97.1 %66 / 6892.9 %13 / 14100.0 %14 / 14
-
-
- - - - -
Generated by: LCOV version 1.16
-
- - - diff --git a/coverage/src/modules/ERC3643Compliance.sol.func-sort-c.html b/coverage/src/modules/ERC3643Compliance.sol.func-sort-c.html deleted file mode 100644 index 5b4f063..0000000 --- a/coverage/src/modules/ERC3643Compliance.sol.func-sort-c.html +++ /dev/null @@ -1,113 +0,0 @@ - - - - - - - LCOV - lcov.info - src/modules/ERC3643Compliance.sol - functions - - - - - - - - - - - - - - -
LCOV - code coverage report
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Current view:top level - src/modules - ERC3643Compliance.sol (source / functions)HitTotalCoverage
Test:lcov.infoLines:2424100.0 %
Date:2025-08-08 14:05:19Functions:88100.0 %
Branches:6966.7 %
-
- -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

Function Name Sort by function nameHit count Sort by hit count
ERC3643Compliance.getTokenBound2
ERC3643Compliance.getTokenBounds2
ERC3643Compliance._unbindToken3
ERC3643Compliance.onlyBoundToken3
ERC3643Compliance.unbindToken3
ERC3643Compliance.isTokenBound6
ERC3643Compliance.bindToken8
ERC3643Compliance._bindToken23
-
-
- - - -
Generated by: LCOV version 1.16
-
- - - diff --git a/coverage/src/modules/ERC3643Compliance.sol.func.html b/coverage/src/modules/ERC3643Compliance.sol.func.html deleted file mode 100644 index 051e9b7..0000000 --- a/coverage/src/modules/ERC3643Compliance.sol.func.html +++ /dev/null @@ -1,113 +0,0 @@ - - - - - - - LCOV - lcov.info - src/modules/ERC3643Compliance.sol - functions - - - - - - - - - - - - - - -
LCOV - code coverage report
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Current view:top level - src/modules - ERC3643Compliance.sol (source / functions)HitTotalCoverage
Test:lcov.infoLines:2424100.0 %
Date:2025-08-08 14:05:19Functions:88100.0 %
Branches:6966.7 %
-
- -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

Function Name Sort by function nameHit count Sort by hit count
ERC3643Compliance._bindToken23
ERC3643Compliance._unbindToken3
ERC3643Compliance.bindToken8
ERC3643Compliance.getTokenBound2
ERC3643Compliance.getTokenBounds2
ERC3643Compliance.isTokenBound6
ERC3643Compliance.onlyBoundToken3
ERC3643Compliance.unbindToken3
-
-
- - - -
Generated by: LCOV version 1.16
-
- - - diff --git a/coverage/src/modules/ERC3643Compliance.sol.gcov.html b/coverage/src/modules/ERC3643Compliance.sol.gcov.html deleted file mode 100644 index 955334e..0000000 --- a/coverage/src/modules/ERC3643Compliance.sol.gcov.html +++ /dev/null @@ -1,167 +0,0 @@ - - - - - - - LCOV - lcov.info - src/modules/ERC3643Compliance.sol - - - - - - - - - - - - - - -
LCOV - code coverage report
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Current view:top level - src/modules - ERC3643Compliance.sol (source / functions)HitTotalCoverage
Test:lcov.infoLines:2424100.0 %
Date:2025-08-08 14:05:19Functions:88100.0 %
Branches:6966.7 %
-
- - - - - - - - -

-
           Branch data     Line data    Source code
-
-       1                 :            : //SPDX-License-Identifier: MPL-2.0
-       2                 :            : 
-       3                 :            : pragma solidity ^0.8.20;
-       4                 :            : 
-       5                 :            : import {IERC3643Compliance} from "../interfaces/IERC3643Compliance.sol";
-       6                 :            : import {AccessControl}  from "OZ/access/AccessControl.sol";
-       7                 :            : import "OZ/utils/structs/EnumerableSet.sol";
-       8                 :            : abstract contract ERC3643Compliance is IERC3643Compliance, AccessControl {
-       9                 :            :     bytes32 public constant COMPLIANCE_MANAGER_ROLE = keccak256("COMPLIANCE_MANAGER_ROLE");
-      10                 :            :     // Add the library methods
-      11                 :            :     using EnumerableSet for EnumerableSet.AddressSet;
-      12                 :            :     // Errors
-      13                 :            :     error RuleEngine_ERC3643Compliance_NotComplianceManager();
-      14                 :            :     error RuleEngine_ERC3643Compliance_InvalidTokenAddress();
-      15                 :            :     error RuleEngine_ERC3643Compliance_TokenAlreadyBound();
-      16                 :            :     error RuleEngine_ERC3643Compliance_TokenNotBound();
-      17                 :            :     error RuleEngine_ERC3643Compliance_UnauthorizedCaller();
-      18                 :            : 
-      19                 :            :     // Token binding tracking
-      20                 :            :     EnumerableSet.AddressSet private _boundTokens;
-      21                 :            : 
-      22                 :          3 :     modifier onlyBoundToken() {
-      23            [ + ]:          3 :     if (!_boundTokens.contains(_msgSender())) {
-      24                 :          1 :         revert RuleEngine_ERC3643Compliance_UnauthorizedCaller();
-      25                 :            :     }
-      26                 :            :     _;
-      27                 :            :     }
-      28                 :            : 
-      29                 :            :     /*//////////////////////////////////////////////////////////////
-      30                 :            :                             PUBLIC/EXTERNAL FUNCTIONS
-      31                 :            :     //////////////////////////////////////////////////////////////*/
-      32                 :            : 
-      33                 :            :     /* ============ State functions ============ */
-      34                 :            :     /// @inheritdoc IERC3643Compliance
-      35                 :          8 :     function bindToken(address token) public override virtual onlyRole(COMPLIANCE_MANAGER_ROLE) {
-      36                 :          8 :        _bindToken(token);
-      37                 :            :     }
-      38                 :            : 
-      39                 :            :     /// @inheritdoc IERC3643Compliance
-      40                 :          3 :     function unbindToken(address token) public override virtual onlyRole(COMPLIANCE_MANAGER_ROLE) {
-      41                 :          3 :         _unbindToken(token);
-      42                 :            :     }
-      43                 :            : 
-      44                 :            :     /// @inheritdoc IERC3643Compliance
-      45                 :          6 :     function isTokenBound(address token) public view override returns (bool) {
-      46                 :          6 :         return _boundTokens.contains(token);
-      47                 :            :     }
-      48                 :            : 
-      49                 :            :     /// @inheritdoc IERC3643Compliance
-      50                 :          2 :     function getTokenBound() external view override returns (address) {
-      51         [ +  + ]:          2 :         if(_boundTokens.length() > 0){
-      52                 :          1 :             return _boundTokens.at(0);
-      53                 :            :         } else {
-      54                 :          1 :             return address(0);
-      55                 :            :         }
-      56                 :            :     }
-      57                 :            : 
-      58                 :            :     /// @inheritdoc IERC3643Compliance
-      59                 :          2 :     function getTokenBounds() external view override returns (address[] memory) {
-      60                 :          2 :         return _boundTokens.values();
-      61                 :            :     }
-      62                 :            : 
-      63                 :            : 
-      64                 :            : 
-      65                 :            :     /*//////////////////////////////////////////////////////////////
-      66                 :            :                             INTERNAL/PRIVATE FUNCTIONS
-      67                 :            :     //////////////////////////////////////////////////////////////*/
-      68                 :            : 
-      69                 :          3 :     function _unbindToken(address token)  internal {
-      70         [ #  + ]:          3 :         require (_boundTokens.contains(token), RuleEngine_ERC3643Compliance_TokenNotBound()); 
-      71                 :          3 :         _boundTokens.remove(token);
-      72                 :            : 
-      73                 :          3 :         emit TokenUnbound(token);
-      74                 :            :     }
-      75                 :         23 :     function _bindToken(address token) internal{
-      76         [ #  + ]:         23 :         require(token != address(0), RuleEngine_ERC3643Compliance_InvalidTokenAddress());
-      77         [ #  + ]:         23 :         require(!_boundTokens.contains(token), RuleEngine_ERC3643Compliance_TokenAlreadyBound());
-      78                 :         23 :         _boundTokens.add(token);
-      79                 :            : 
-      80                 :         23 :         emit TokenBound(token);
-      81                 :            :     }
-      82                 :            : }
-
-
-
- - - - -
Generated by: LCOV version 1.16
-
- - - diff --git a/coverage/src/modules/RuleEngineOperation.sol.func-sort-c.html b/coverage/src/modules/RuleEngineOperation.sol.func-sort-c.html deleted file mode 100644 index 75fccb5..0000000 --- a/coverage/src/modules/RuleEngineOperation.sol.func-sort-c.html +++ /dev/null @@ -1,129 +0,0 @@ - - - - - - - LCOV - lcov.info - src/modules/RuleEngineOperation.sol - functions - - - - - - - - - - - - - - -
LCOV - code coverage report
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Current view:top level - src/modules - RuleEngineOperation.sol (source / functions)HitTotalCoverage
Test:lcov.infoLines:404197.6 %
Date:2025-08-08 14:05:19Functions:111291.7 %
Branches:66100.0 %
-
- -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

Function Name Sort by function nameHit count Sort by hit count
RuleEngineOperation.rulesOperationIsPresent0
RuleEngineOperation.ruleOperation1
RuleEngineOperation._removeRuleOperation4
RuleEngineOperation.clearRulesOperation4
RuleEngineOperation.removeRuleOperation5
RuleEngineOperation.rulesOperation5
RuleEngineOperation._transferred8
RuleEngineOperation.setRulesOperation11
RuleEngineOperation._clearRulesOperation13
RuleEngineOperation.addRuleOperation36
RuleEngineOperation.rulesCountOperation45
RuleEngineOperation._checkRule55
-
-
- - - -
Generated by: LCOV version 1.16
-
- - - diff --git a/coverage/src/modules/RuleEngineOperation.sol.func.html b/coverage/src/modules/RuleEngineOperation.sol.func.html deleted file mode 100644 index 57bafc0..0000000 --- a/coverage/src/modules/RuleEngineOperation.sol.func.html +++ /dev/null @@ -1,129 +0,0 @@ - - - - - - - LCOV - lcov.info - src/modules/RuleEngineOperation.sol - functions - - - - - - - - - - - - - - -
LCOV - code coverage report
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Current view:top level - src/modules - RuleEngineOperation.sol (source / functions)HitTotalCoverage
Test:lcov.infoLines:404197.6 %
Date:2025-08-08 14:05:19Functions:111291.7 %
Branches:66100.0 %
-
- -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

Function Name Sort by function nameHit count Sort by hit count
RuleEngineOperation._checkRule55
RuleEngineOperation._clearRulesOperation13
RuleEngineOperation._removeRuleOperation4
RuleEngineOperation._transferred8
RuleEngineOperation.addRuleOperation36
RuleEngineOperation.clearRulesOperation4
RuleEngineOperation.removeRuleOperation5
RuleEngineOperation.ruleOperation1
RuleEngineOperation.rulesCountOperation45
RuleEngineOperation.rulesOperation5
RuleEngineOperation.rulesOperationIsPresent0
RuleEngineOperation.setRulesOperation11
-
-
- - - -
Generated by: LCOV version 1.16
-
- - - diff --git a/coverage/src/modules/RuleEngineOperation.sol.gcov.html b/coverage/src/modules/RuleEngineOperation.sol.gcov.html deleted file mode 100644 index ac679d8..0000000 --- a/coverage/src/modules/RuleEngineOperation.sol.gcov.html +++ /dev/null @@ -1,275 +0,0 @@ - - - - - - - LCOV - lcov.info - src/modules/RuleEngineOperation.sol - - - - - - - - - - - - - - -
LCOV - code coverage report
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Current view:top level - src/modules - RuleEngineOperation.sol (source / functions)HitTotalCoverage
Test:lcov.infoLines:404197.6 %
Date:2025-08-08 14:05:19Functions:111291.7 %
Branches:66100.0 %
-
- - - - - - - - -

-
           Branch data     Line data    Source code
-
-       1                 :            : // SPDX-License-Identifier: MPL-2.0
-       2                 :            : 
-       3                 :            : pragma solidity ^0.8.20;
-       4                 :            : 
-       5                 :            : // OpenZeppelin
-       6                 :            : import {EnumerableSet} from "OZ/utils/structs/EnumerableSet.sol";
-       7                 :            : import {AccessControl}  from "OZ/access/AccessControl.sol";
-       8                 :            : // Other
-       9                 :            : import {IRuleEngineOperation} from "../interfaces/IRuleEngineOperation.sol";
-      10                 :            : import {IRuleOperation} from "../interfaces/IRuleOperation.sol";
-      11                 :            : import {RuleEngineInvariantStorage} from "./RuleEngineInvariantStorage.sol";
-      12                 :            : /**
-      13                 :            :  * @title RuleEngine - Operation part
-      14                 :            :  */
-      15                 :            : abstract contract RuleEngineOperation is
-      16                 :            :     AccessControl,
-      17                 :            :     RuleEngineInvariantStorage,
-      18                 :            :     IRuleEngineOperation
-      19                 :            : {
-      20                 :            :        
-      21                 :            :     /// @dev Array of rules
-      22                 :            :     //address[] internal _rulesOperation;
-      23                 :            :     // Add the library methods
-      24                 :            :     using EnumerableSet for EnumerableSet.AddressSet;
-      25                 :            : 
-      26                 :            :     // Declare a set state variable
-      27                 :            :     EnumerableSet.AddressSet internal _rulesOperation;
-      28                 :            : 
-      29                 :            :     /*//////////////////////////////////////////////////////////////
-      30                 :            :                             PUBLIC/EXTERNAL FUNCTIONS
-      31                 :            :     //////////////////////////////////////////////////////////////*/
-      32                 :            : 
-      33                 :            :     /* ============ State functions ============ */
-      34                 :            :     /**
-      35                 :            :      * @notice Set all the rules, will overwrite all the previous rules. \n
-      36                 :            :      * Revert if one rule is a zero address or if the rule is already present
-      37                 :            :      *
-      38                 :            :      */
-      39                 :         11 :     function setRulesOperation(
-      40                 :            :         address[] calldata rules_
-      41                 :            :     ) public virtual onlyRole(RULE_ENGINE_OPERATOR_ROLE) {
-      42            [ + ]:         11 :         if (rules_.length == 0) {
-      43                 :          1 :             revert RuleEngine_ArrayIsEmpty();
-      44                 :            :         }
-      45            [ + ]:         10 :         if (_rulesOperation.length() > 0) {
-      46                 :          9 :             _clearRulesOperation();
-      47                 :            :         }
-      48                 :         10 :         for(uint256 i = 0; i < rules_.length; ++i){
-      49                 :         19 :            _checkRule(address(rules_[i]));
-      50                 :         17 :             _rulesOperation.add(address(rules_[i]));
-      51                 :         17 :             emit AddRule(rules_[i]);
-      52                 :            :         }
-      53                 :            :        
-      54                 :            :     }
-      55                 :            : 
-      56                 :            :     /**
-      57                 :            :      * @notice Clear all the rules of the array of rules
-      58                 :            :      *
-      59                 :            :      */
-      60                 :          4 :     function clearRulesOperation() public virtual onlyRole(RULE_ENGINE_OPERATOR_ROLE) {
-      61                 :          4 :         _clearRulesOperation();
-      62                 :            :     }
-      63                 :            : 
-      64                 :            :     
-      65                 :            :     /**
-      66                 :            :      * @notice Add a rule to the array of rules
-      67                 :            :      * Revert if one rule is a zero address or if the rule is already present
-      68                 :            :      *
-      69                 :            :      */
-      70                 :         36 :     function addRuleOperation(
-      71                 :            :         IRuleOperation rule_
-      72                 :            :     ) public virtual onlyRole(RULE_ENGINE_OPERATOR_ROLE) {
-      73                 :         36 :         _checkRule(address(rule_));
-      74                 :         34 :         _rulesOperation.add(address(rule_));
-      75                 :         34 :         emit AddRule(address(rule_));
-      76                 :            :     }
-      77                 :            : 
-      78                 :            :     /**
-      79                 :            :      * @notice Remove a rule from the array of rules
-      80                 :            :      * Revert if the rule found at the specified index does not match the rule in argument
-      81                 :            :      * @param rule_ address of the target rule
-      82                 :            :      * @dev To reduce the array size, the last rule is moved to the location occupied
-      83                 :            :      * by the rule to remove
-      84                 :            :      *
-      85                 :            :      *
-      86                 :            :      */
-      87                 :          5 :     function removeRuleOperation(
-      88                 :            :         IRuleOperation rule_
-      89                 :            :     ) public virtual onlyRole(RULE_ENGINE_OPERATOR_ROLE) {
-      90         [ +  + ]:          5 :         require(rulesOperationIsPresent(rule_), RuleEngine_RuleDoNotMatch());
-      91                 :          4 :         _removeRuleOperation(address(rule_));
-      92                 :            :     }
-      93                 :            : 
-      94                 :            :     /* ============ View functions ============ */
-      95                 :            :     /**
-      96                 :            :      * @return The number of rules inside the array
-      97                 :            :      */
-      98                 :         45 :     function rulesCountOperation() public view virtual override returns (uint256) {
-      99                 :         82 :         return _rulesOperation.length();
-     100                 :            :     }
-     101                 :            : 
-     102                 :          0 :     function rulesOperationIsPresent(IRuleOperation rule_) public view virtual returns (bool){
-     103                 :          5 :         return _rulesOperation.contains(address(rule_));
-     104                 :            :     }
-     105                 :            : 
-     106                 :            : 
-     107                 :            :     /**
-     108                 :            :      * @notice Get the rule at the position specified by ruleId
-     109                 :            :      * @param ruleId index of the rule
-     110                 :            :      * @return a rule address
-     111                 :            :      */
-     112                 :          1 :     function ruleOperation(
-     113                 :            :         uint256 ruleId
-     114                 :            :     ) public view virtual override returns (address) {
-     115                 :         32 :         return _rulesOperation.at(ruleId);
-     116                 :            :     }
-     117                 :            : 
-     118                 :            :     /**
-     119                 :            :      * @notice Get all the rules
-     120                 :            :      * @return An array of rules
-     121                 :            :      */
-     122                 :          5 :     function rulesOperation()
-     123                 :            :         public
-     124                 :            :         view
-     125                 :            :         virtual
-     126                 :            :         override
-     127                 :            :         returns (address[] memory)
-     128                 :            :     {
-     129                 :          5 :         return _rulesOperation.values();
-     130                 :            :     }
-     131                 :            : 
-     132                 :            :     /*//////////////////////////////////////////////////////////////
-     133                 :            :                             INTERNAL/PRIVATE FUNCTIONS
-     134                 :            :     //////////////////////////////////////////////////////////////*/
-     135                 :            :     /**
-     136                 :            :      * @notice Clear all the rules of the array of rules
-     137                 :            :      *
-     138                 :            :      */
-     139                 :         13 :     function _clearRulesOperation() internal virtual {
-     140                 :            :         // we remove the last element first since it is more optimized.
-     141                 :            : 
-     142                 :         13 :         emit ClearRules();
-     143                 :         13 :         _rulesOperation.clear();
-     144                 :            :     }
-     145                 :            : 
-     146                 :            : 
-     147                 :            :     /**
-     148                 :            :      * @notice Go through all the rule to know if a restriction exists on the transfer
-     149                 :            :      * @param from the origin address
-     150                 :            :      * @param to the destination address
-     151                 :            :      * @param value to transfer
-     152                 :            :      **/
-     153                 :          8 :     function _transferred(
-     154                 :            :         address from,
-     155                 :            :         address to,
-     156                 :            :         uint256 value
-     157                 :            :     ) internal virtual{
-     158                 :          8 :         uint256 rulesLength = _rulesOperation.length();
-     159                 :          8 :         for (uint256 i = 0; i < rulesLength; ++i) {
-     160                 :          3 :             IRuleOperation(_rulesOperation.at(i)).transferred(
-     161                 :            :                 from,
-     162                 :            :                 to,
-     163                 :            :                 value
-     164                 :            :             );
-     165                 :            :         }
-     166                 :            :     }
-     167                 :            : 
-     168                 :            :     /**
-     169                 :            :      * @notice Remove a rule from the array of rules
-     170                 :            :      * Revert if the rule found at the specified index does not match the rule in argument
-     171                 :            :      * @param rule_ address of the target rule
-     172                 :            :      * @dev To reduce the array size, the last rule is moved to the location occupied
-     173                 :            :      * by the rule to remove
-     174                 :            :      *
-     175                 :            :      *
-     176                 :            :      */
-     177                 :          4 :     function _removeRuleOperation(address rule_) internal virtual {
-     178                 :          4 :         _rulesOperation.remove(rule_);
-     179                 :          4 :         emit RemoveRule(address(rule_));
-     180                 :            :     }
-     181                 :            : 
-     182                 :         55 :     function _checkRule(address rule_) internal{
-     183            [ + ]:         55 :           if (rule_ == address(0x0)) {
-     184                 :          2 :                 revert RuleEngine_RuleAddressZeroNotAllowed();
-     185                 :            :             }
-     186            [ + ]:         53 :         if (_rulesOperation.contains(rule_)) {
-     187                 :          2 :             revert RuleEngine_RuleAlreadyExists();
-     188                 :            :         }
-     189                 :            :     }
-     190                 :            : }
-
-
-
- - - - -
Generated by: LCOV version 1.16
-
- - - diff --git a/coverage/src/modules/RuleEngineValidation.sol.func-sort-c.html b/coverage/src/modules/RuleEngineValidation.sol.func-sort-c.html deleted file mode 100644 index f6f9ce7..0000000 --- a/coverage/src/modules/RuleEngineValidation.sol.func-sort-c.html +++ /dev/null @@ -1,125 +0,0 @@ - - - - - - - LCOV - lcov.info - src/modules/RuleEngineValidation.sol - functions - - - - - - - - - - - - - - -
LCOV - code coverage report
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Current view:top level - src/modules - RuleEngineValidation.sol (source / functions)HitTotalCoverage
Test:lcov.infoLines:373897.4 %
Date:2025-08-08 14:05:19Functions:101190.9 %
Branches:66100.0 %
-
- -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

Function Name Sort by function nameHit count Sort by hit count
RuleEngineValidation.rulesValidationIsPresent0
RuleEngineValidation.ruleValidation1
RuleEngineValidation._removeRuleValidation4
RuleEngineValidation.rulesValidation5
RuleEngineValidation.clearRulesValidation6
RuleEngineValidation.removeRuleValidation6
RuleEngineValidation.setRulesValidation23
RuleEngineValidation._clearRulesValidation25
RuleEngineValidation.addRuleValidation59
RuleEngineValidation.rulesCountValidation70
RuleEngineValidation._checkRuleValidation88
-
-
- - - -
Generated by: LCOV version 1.16
-
- - - diff --git a/coverage/src/modules/RuleEngineValidation.sol.func.html b/coverage/src/modules/RuleEngineValidation.sol.func.html deleted file mode 100644 index 3e34d47..0000000 --- a/coverage/src/modules/RuleEngineValidation.sol.func.html +++ /dev/null @@ -1,125 +0,0 @@ - - - - - - - LCOV - lcov.info - src/modules/RuleEngineValidation.sol - functions - - - - - - - - - - - - - - -
LCOV - code coverage report
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Current view:top level - src/modules - RuleEngineValidation.sol (source / functions)HitTotalCoverage
Test:lcov.infoLines:373897.4 %
Date:2025-08-08 14:05:19Functions:101190.9 %
Branches:66100.0 %
-
- -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

Function Name Sort by function nameHit count Sort by hit count
RuleEngineValidation._checkRuleValidation88
RuleEngineValidation._clearRulesValidation25
RuleEngineValidation._removeRuleValidation4
RuleEngineValidation.addRuleValidation59
RuleEngineValidation.clearRulesValidation6
RuleEngineValidation.removeRuleValidation6
RuleEngineValidation.ruleValidation1
RuleEngineValidation.rulesCountValidation70
RuleEngineValidation.rulesValidation5
RuleEngineValidation.rulesValidationIsPresent0
RuleEngineValidation.setRulesValidation23
-
-
- - - -
Generated by: LCOV version 1.16
-
- - - diff --git a/coverage/src/modules/RuleEngineValidation.sol.gcov.html b/coverage/src/modules/RuleEngineValidation.sol.gcov.html deleted file mode 100644 index 090bbcf..0000000 --- a/coverage/src/modules/RuleEngineValidation.sol.gcov.html +++ /dev/null @@ -1,254 +0,0 @@ - - - - - - - LCOV - lcov.info - src/modules/RuleEngineValidation.sol - - - - - - - - - - - - - - -
LCOV - code coverage report
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Current view:top level - src/modules - RuleEngineValidation.sol (source / functions)HitTotalCoverage
Test:lcov.infoLines:373897.4 %
Date:2025-08-08 14:05:19Functions:101190.9 %
Branches:66100.0 %
-
- - - - - - - - -

-
           Branch data     Line data    Source code
-
-       1                 :            : // SPDX-License-Identifier: MPL-2.0
-       2                 :            : 
-       3                 :            : pragma solidity ^0.8.20;
-       4                 :            : 
-       5                 :            : // OpenZeppelin
-       6                 :            : import {AccessControl} from "OZ/access/AccessControl.sol";
-       7                 :            : import "OZ/utils/structs/EnumerableSet.sol";
-       8                 :            : // Other
-       9                 :            : import {IRuleEngineValidation} from "../interfaces/IRuleEngineValidation.sol";
-      10                 :            : import {IRuleValidation} from "../interfaces/IRuleValidation.sol";
-      11                 :            : import {RuleEngineInvariantStorage} from "./RuleEngineInvariantStorage.sol";
-      12                 :            : 
-      13                 :            : abstract contract RuleEngineValidation is
-      14                 :            :     AccessControl,
-      15                 :            :     IRuleEngineValidation,
-      16                 :            :     RuleEngineInvariantStorage
-      17                 :            : {
-      18                 :            :     // Add the library methods
-      19                 :            :     using EnumerableSet for EnumerableSet.AddressSet;
-      20                 :            : 
-      21                 :            :     // Declare a set state variable
-      22                 :            :     EnumerableSet.AddressSet internal _rulesValidation;
-      23                 :            : 
-      24                 :            :     /*//////////////////////////////////////////////////////////////
-      25                 :            :                            PUBLIC/EXTERNAL FUNCTIONS
-      26                 :            :     //////////////////////////////////////////////////////////////*/
-      27                 :            :     /* ============ State functions ============ */
-      28                 :            :     /**
-      29                 :            :      * @notice Set all the rules, will overwrite all the previous rules. \n
-      30                 :            :      * Revert if one rule is a zero address or if the rule is already present
-      31                 :            :      * @dev take address[] instead of IRuleEngineValidation[] since it is not possible to cast IRuleEngineValidation[] -> address[]
-      32                 :            :      *
-      33                 :            :      */
-      34                 :         23 :     function setRulesValidation(
-      35                 :            :         address[] calldata rules_
-      36                 :            :     ) public virtual override onlyRole(RULE_ENGINE_OPERATOR_ROLE) {
-      37            [ + ]:         22 :         if (rules_.length == 0) {
-      38                 :          1 :             revert RuleEngine_ArrayIsEmpty();
-      39                 :            :         }
-      40                 :         21 :         uint256 rulesLength = _rulesValidation.length();
-      41            [ + ]:         21 :         if ( rulesLength > 0) {
-      42                 :         20 :             _clearRulesValidation();
-      43                 :            :         }
-      44                 :         21 :         for(uint256 i = 0; i < rules_.length; ++i){
-      45                 :         30 :             _checkRuleValidation(address(rules_[i]));
-      46                 :         28 :             _rulesValidation.add(address(rules_[i]));
-      47                 :         28 :             emit AddRule(rules_[i]);
-      48                 :            :         }
-      49                 :            :     }
-      50                 :            : 
-      51                 :            : 
-      52                 :            :     /**
-      53                 :            :      * @notice Clear all the rules of the array of rules
-      54                 :            :      *
-      55                 :            :      */
-      56                 :          6 :     function clearRulesValidation() public virtual  onlyRole(RULE_ENGINE_OPERATOR_ROLE) {
-      57                 :          5 :         _clearRulesValidation();
-      58                 :            :     }
-      59                 :            : 
-      60                 :            :     /**
-      61                 :            :      * @notice Add a rule to the array of rules
-      62                 :            :      * @dev Revert if one rule is a zero address or if the rule is already present
-      63                 :            :      *
-      64                 :            :      */
-      65                 :         59 :     function addRuleValidation(
-      66                 :            :         IRuleValidation rule_
-      67                 :            :     ) public virtual  onlyRole(RULE_ENGINE_OPERATOR_ROLE) {
-      68                 :         58 :          _checkRuleValidation(address(rule_));
-      69                 :         56 :         _rulesValidation.add(address(rule_));
-      70                 :         56 :         emit AddRule(address(rule_));
-      71                 :            :     }
-      72                 :            : 
-      73                 :            :     /**
-      74                 :            :      * @notice Remove a rule from the array of rules
-      75                 :            :      * Revert if the rule found at the specified index does not match the rule in argument
-      76                 :            :      * @param rule_ address of the target rule
-      77                 :            :      * @dev To reduce the array size, the last rule is moved to the location occupied
-      78                 :            :      * by the rule to remove
-      79                 :            :      *
-      80                 :            :      *
-      81                 :            :      */
-      82                 :          6 :     function removeRuleValidation(
-      83                 :            :         IRuleValidation rule_
-      84                 :            :     ) public virtual  onlyRole(RULE_ENGINE_OPERATOR_ROLE) {
-      85         [ +  + ]:          5 :          require(rulesValidationIsPresent(rule_), RuleEngine_RuleDoNotMatch());
-      86                 :          4 :         _removeRuleValidation(address(rule_));
-      87                 :            :     }
-      88                 :            : 
-      89                 :            :     /* ============ View functions ============ */
-      90                 :            : 
-      91                 :            :     /**
-      92                 :            :      * @notice Check if a rule is present
-      93                 :            :      *
-      94                 :            :      */
-      95                 :          0 :     function rulesValidationIsPresent(IRuleValidation rule_) public view virtual returns (bool){
-      96                 :          5 :         return _rulesValidation.contains(address(rule_));
-      97                 :            :     }
-      98                 :            : 
-      99                 :            : 
-     100                 :            :     /**
-     101                 :            :      * @return The number of rules inside the array
-     102                 :            :      */
-     103                 :         70 :     function rulesCountValidation() public view virtual override returns (uint256) {
-     104                 :        156 :         return _rulesValidation.length();
-     105                 :            :     }
-     106                 :            : 
-     107                 :            :     /**
-     108                 :            :      * @notice Get the rule at the position specified by ruleId
-     109                 :            :      * @param ruleId index of the rule
-     110                 :            :      * @return a rule address
-     111                 :            :      */
-     112                 :          1 :     function ruleValidation(
-     113                 :            :         uint256 ruleId
-     114                 :            :     ) public view virtual override returns (address) {
-     115                 :         55 :         return _rulesValidation.at(ruleId);
-     116                 :            :     }
-     117                 :            : 
-     118                 :            : 
-     119                 :            :     /**
-     120                 :            :      * @notice Get all the rules
-     121                 :            :      * @return An array of rules
-     122                 :            :      */
-     123                 :          5 :     function rulesValidation()
-     124                 :            :         public
-     125                 :            :         view
-     126                 :            :         virtual 
-     127                 :            :         override
-     128                 :            :         returns (address[] memory)
-     129                 :            :     {
-     130                 :          5 :         return _rulesValidation.values();
-     131                 :            :     }
-     132                 :            : 
-     133                 :            :     /*//////////////////////////////////////////////////////////////
-     134                 :            :                            INTERNAL FUNCTIONS
-     135                 :            :     //////////////////////////////////////////////////////////////*/
-     136                 :            :     /**
-     137                 :            :      * @notice Clear all the rules of the array of rules
-     138                 :            :      *
-     139                 :            :      */
-     140                 :         25 :     function _clearRulesValidation() internal virtual  {
-     141                 :         25 :         emit ClearRules();
-     142                 :            :         // O(N)
-     143                 :         25 :        _rulesValidation.clear();
-     144                 :            :     }
-     145                 :            : 
-     146                 :            :     /**
-     147                 :            :      * @notice Remove a rule from the array of rules
-     148                 :            :      * Revert if the rule found at the specified index does not match the rule in argument
-     149                 :            :      * @param rule_ address of the target rule
-     150                 :            :      * @dev To reduce the array size, the last rule is moved to the location occupied
-     151                 :            :      * by the rule to remove
-     152                 :            :      *
-     153                 :            :      *
-     154                 :            :      */
-     155                 :          4 :     function _removeRuleValidation(address rule_) internal virtual {
-     156                 :          4 :         _rulesValidation.remove(rule_);
-     157                 :          4 :         emit RemoveRule(address(rule_));
-     158                 :            :     }
-     159                 :            : 
-     160                 :         88 :     function _checkRuleValidation(address rule_) internal virtual{
-     161            [ + ]:         88 :          if (rule_ == address(0x0)) {
-     162                 :          2 :                 revert RuleEngine_RuleAddressZeroNotAllowed();
-     163                 :            :             }
-     164            [ + ]:         86 :             if (_rulesValidation.contains(rule_)) {
-     165                 :          2 :                 revert RuleEngine_RuleAlreadyExists();
-     166                 :            :             }
-     167                 :            :     }
-     168                 :            : 
-     169                 :            : }
-
-
-
- - - - -
Generated by: LCOV version 1.16
-
- - - diff --git a/coverage/src/modules/RuleEngineValidationRead.sol.func-sort-c.html b/coverage/src/modules/RuleEngineValidationRead.sol.func-sort-c.html deleted file mode 100644 index 14237a4..0000000 --- a/coverage/src/modules/RuleEngineValidationRead.sol.func-sort-c.html +++ /dev/null @@ -1,97 +0,0 @@ - - - - - - - LCOV - lcov.info - src/modules/RuleEngineValidationRead.sol - functions - - - - - - - - - - - - - - -
LCOV - code coverage report
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Current view:top level - src/modules - RuleEngineValidationRead.sol (source / functions)HitTotalCoverage
Test:lcov.infoLines:2020100.0 %
Date:2025-08-08 14:05:19Functions:44100.0 %
Branches:22100.0 %
-
- -
- - - - - - - - - - - - - - - - - - - - - - -

Function Name Sort by function nameHit count Sort by hit count
RuleEngineValidationRead.canTransferValidationFrom1
RuleEngineValidationRead.detectTransferRestrictionValidationFrom1
RuleEngineValidationRead.canTransferValidation2
RuleEngineValidationRead.detectTransferRestrictionValidation5
-
-
- - - -
Generated by: LCOV version 1.16
-
- - - diff --git a/coverage/src/modules/RuleEngineValidationRead.sol.func.html b/coverage/src/modules/RuleEngineValidationRead.sol.func.html deleted file mode 100644 index 99e3c1c..0000000 --- a/coverage/src/modules/RuleEngineValidationRead.sol.func.html +++ /dev/null @@ -1,97 +0,0 @@ - - - - - - - LCOV - lcov.info - src/modules/RuleEngineValidationRead.sol - functions - - - - - - - - - - - - - - -
LCOV - code coverage report
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Current view:top level - src/modules - RuleEngineValidationRead.sol (source / functions)HitTotalCoverage
Test:lcov.infoLines:2020100.0 %
Date:2025-08-08 14:05:19Functions:44100.0 %
Branches:22100.0 %
-
- -
- - - - - - - - - - - - - - - - - - - - - - -

Function Name Sort by function nameHit count Sort by hit count
RuleEngineValidationRead.canTransferValidation2
RuleEngineValidationRead.canTransferValidationFrom1
RuleEngineValidationRead.detectTransferRestrictionValidation5
RuleEngineValidationRead.detectTransferRestrictionValidationFrom1
-
-
- - - -
Generated by: LCOV version 1.16
-
- - - diff --git a/coverage/src/modules/RuleEngineValidationRead.sol.gcov.html b/coverage/src/modules/RuleEngineValidationRead.sol.gcov.html deleted file mode 100644 index c2a59ca..0000000 --- a/coverage/src/modules/RuleEngineValidationRead.sol.gcov.html +++ /dev/null @@ -1,185 +0,0 @@ - - - - - - - LCOV - lcov.info - src/modules/RuleEngineValidationRead.sol - - - - - - - - - - - - - - -
LCOV - code coverage report
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Current view:top level - src/modules - RuleEngineValidationRead.sol (source / functions)HitTotalCoverage
Test:lcov.infoLines:2020100.0 %
Date:2025-08-08 14:05:19Functions:44100.0 %
Branches:22100.0 %
-
- - - - - - - - -

-
           Branch data     Line data    Source code
-
-       1                 :            : // SPDX-License-Identifier: MPL-2.0
-       2                 :            : 
-       3                 :            : pragma solidity ^0.8.20;
-       4                 :            : 
-       5                 :            : import "OZ/access/AccessControl.sol";
-       6                 :            : import {RuleEngineValidation} from "./RuleEngineValidation.sol";
-       7                 :            : import {IRuleEngineValidationRead} from "../interfaces/IRuleEngineValidation.sol";
-       8                 :            : import {IRuleValidation} from "../interfaces/IRuleValidation.sol";
-       9                 :            : import {IERC1404, IERC1404Extend} from "CMTAT/interfaces/tokenization/draft-IERC1404.sol";
-      10                 :            : 
-      11                 :            : /**
-      12                 :            :  * @title RuleEngine - Validation part
-      13                 :            :  */
-      14                 :            : abstract contract RuleEngineValidationRead is
-      15                 :            :     AccessControl,
-      16                 :            :     RuleEngineValidation,
-      17                 :            :     IRuleEngineValidationRead
-      18                 :            : {
-      19                 :            : 
-      20                 :            :     /*//////////////////////////////////////////////////////////////
-      21                 :            :                             PUBLIC/EXTERNAL FUNCTIONS
-      22                 :            :     //////////////////////////////////////////////////////////////*/
-      23                 :            :     /* ============ View functions ============ */
-      24                 :            :     /**
-      25                 :            :      * @notice Go through all the rule to know if a restriction exists on the transfer
-      26                 :            :      * @param from the origin address
-      27                 :            :      * @param to the destination address
-      28                 :            :      * @param value to transfer
-      29                 :            :      * @return The restricion code or REJECTED_CODE_BASE.TRANSFER_OK
-      30                 :            :      **/
-      31                 :          5 :     function detectTransferRestrictionValidation(
-      32                 :            :         address from,
-      33                 :            :         address to,
-      34                 :            :         uint256 value
-      35                 :            :     ) public view virtual override returns (uint8) {
-      36                 :            :         //uint256 rulesLength = _rulesValidation.length();
-      37                 :         47 :         uint256 rulesLength = rulesCountValidation();
-      38                 :         47 :         for (uint256 i = 0; i < rulesLength; ++i) {
-      39                 :         26 :             uint8 restriction = IRuleValidation(ruleValidation(i))
-      40                 :            :                 .detectTransferRestriction(from, to, value);
-      41            [ + ]:         26 :             if (restriction > 0) {
-      42                 :         19 :                 return restriction;
-      43                 :            :             }
-      44                 :            :         }
-      45                 :            : 
-      46                 :         28 :         return uint8(IERC1404Extend.REJECTED_CODE_BASE.TRANSFER_OK);
-      47                 :            :     }
-      48                 :            : 
-      49                 :          1 :     function detectTransferRestrictionValidationFrom(
-      50                 :            :         address spender,
-      51                 :            :         address from,
-      52                 :            :         address to,
-      53                 :            :         uint256 value
-      54                 :            :     ) public view virtual override returns (uint8) {
-      55                 :         26 :         uint256 rulesLength = rulesCountValidation();
-      56                 :         26 :         for (uint256 i = 0; i < rulesLength; ++i) {
-      57                 :         13 :             uint8 restriction = IRuleValidation(ruleValidation(i))
-      58                 :            :                 .detectTransferRestrictionFrom(spender, from, to, value);
-      59            [ + ]:         13 :             if (restriction > 0) {
-      60                 :         13 :                 return restriction;
-      61                 :            :             }
-      62                 :            :         }
-      63                 :         13 :         return uint8(IERC1404Extend.REJECTED_CODE_BASE.TRANSFER_OK);
-      64                 :            :     }
-      65                 :            : 
-      66                 :            :     /**
-      67                 :            :      * @notice Validate a transfer
-      68                 :            :      * @param from the origin address
-      69                 :            :      * @param to the destination address
-      70                 :            :      * @param value to transfer
-      71                 :            :      * @return True if the transfer is valid, false otherwise
-      72                 :            :      **/
-      73                 :          2 :     function canTransferValidation(
-      74                 :            :         address from,
-      75                 :            :         address to,
-      76                 :            :         uint256 value
-      77                 :            :     ) public view virtual returns (bool) {
-      78                 :         12 :         return
-      79                 :         12 :             detectTransferRestrictionValidation(from, to, value) ==
-      80                 :            :             uint8(IERC1404Extend.REJECTED_CODE_BASE.TRANSFER_OK);
-      81                 :            :     }
-      82                 :            : 
-      83                 :            :     /**
-      84                 :            :      * @notice Validate a transfer
-      85                 :            :      * @param from the origin address
-      86                 :            :      * @param to the destination address
-      87                 :            :      * @param value to transfer
-      88                 :            :      * @return True if the transfer is valid, false otherwise
-      89                 :            :      **/
-      90                 :          1 :     function canTransferValidationFrom(
-      91                 :            :         address spender,
-      92                 :            :         address from,
-      93                 :            :         address to,
-      94                 :            :         uint256 value
-      95                 :            :     ) public view virtual override returns (bool) {
-      96                 :          3 :         return
-      97                 :          3 :             detectTransferRestrictionValidationFrom(spender, from, to, value) ==
-      98                 :            :             uint8(IERC1404Extend.REJECTED_CODE_BASE.TRANSFER_OK);
-      99                 :            :     }
-     100                 :            : }
-
-
-
- - - - -
Generated by: LCOV version 1.16
-
- - - diff --git a/coverage/src/modules/index-sort-b.html b/coverage/src/modules/index-sort-b.html deleted file mode 100644 index 699a523..0000000 --- a/coverage/src/modules/index-sort-b.html +++ /dev/null @@ -1,143 +0,0 @@ - - - - - - - LCOV - lcov.info - src/modules - - - - - - - - - - - - - - -
LCOV - code coverage report
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Current view:top level - src/modulesHitTotalCoverage
Test:lcov.infoLines:12112398.4 %
Date:2025-08-08 14:05:19Functions:333594.3 %
Branches:202387.0 %
-
- -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

Filename Sort by nameLine Coverage Sort by line coverageFunctions Sort by function coverageBranches Sort by branch coverage
ERC3643Compliance.sol -
100.0%
-
100.0 %24 / 24100.0 %8 / 866.7 %6 / 9
RuleEngineValidationRead.sol -
100.0%
-
100.0 %20 / 20100.0 %4 / 4100.0 %2 / 2
RuleEngineOperation.sol -
97.6%97.6%
-
97.6 %40 / 4191.7 %11 / 12100.0 %6 / 6
RuleEngineValidation.sol -
97.4%97.4%
-
97.4 %37 / 3890.9 %10 / 11100.0 %6 / 6
-
-
- - - - -
Generated by: LCOV version 1.16
-
- - - diff --git a/coverage/src/modules/index-sort-f.html b/coverage/src/modules/index-sort-f.html deleted file mode 100644 index 2cf357d..0000000 --- a/coverage/src/modules/index-sort-f.html +++ /dev/null @@ -1,143 +0,0 @@ - - - - - - - LCOV - lcov.info - src/modules - - - - - - - - - - - - - - -
LCOV - code coverage report
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Current view:top level - src/modulesHitTotalCoverage
Test:lcov.infoLines:12112398.4 %
Date:2025-08-08 14:05:19Functions:333594.3 %
Branches:202387.0 %
-
- -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

Filename Sort by nameLine Coverage Sort by line coverageFunctions Sort by function coverageBranches Sort by branch coverage
RuleEngineValidation.sol -
97.4%97.4%
-
97.4 %37 / 3890.9 %10 / 11100.0 %6 / 6
RuleEngineOperation.sol -
97.6%97.6%
-
97.6 %40 / 4191.7 %11 / 12100.0 %6 / 6
RuleEngineValidationRead.sol -
100.0%
-
100.0 %20 / 20100.0 %4 / 4100.0 %2 / 2
ERC3643Compliance.sol -
100.0%
-
100.0 %24 / 24100.0 %8 / 866.7 %6 / 9
-
-
- - - - -
Generated by: LCOV version 1.16
-
- - - diff --git a/coverage/src/modules/index-sort-l.html b/coverage/src/modules/index-sort-l.html deleted file mode 100644 index d749143..0000000 --- a/coverage/src/modules/index-sort-l.html +++ /dev/null @@ -1,143 +0,0 @@ - - - - - - - LCOV - lcov.info - src/modules - - - - - - - - - - - - - - -
LCOV - code coverage report
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Current view:top level - src/modulesHitTotalCoverage
Test:lcov.infoLines:12112398.4 %
Date:2025-08-08 14:05:19Functions:333594.3 %
Branches:202387.0 %
-
- -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

Filename Sort by nameLine Coverage Sort by line coverageFunctions Sort by function coverageBranches Sort by branch coverage
RuleEngineValidation.sol -
97.4%97.4%
-
97.4 %37 / 3890.9 %10 / 11100.0 %6 / 6
RuleEngineOperation.sol -
97.6%97.6%
-
97.6 %40 / 4191.7 %11 / 12100.0 %6 / 6
RuleEngineValidationRead.sol -
100.0%
-
100.0 %20 / 20100.0 %4 / 4100.0 %2 / 2
ERC3643Compliance.sol -
100.0%
-
100.0 %24 / 24100.0 %8 / 866.7 %6 / 9
-
-
- - - - -
Generated by: LCOV version 1.16
-
- - - diff --git a/coverage/src/modules/index.html b/coverage/src/modules/index.html deleted file mode 100644 index a079cda..0000000 --- a/coverage/src/modules/index.html +++ /dev/null @@ -1,143 +0,0 @@ - - - - - - - LCOV - lcov.info - src/modules - - - - - - - - - - - - - - -
LCOV - code coverage report
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Current view:top level - src/modulesHitTotalCoverage
Test:lcov.infoLines:12112398.4 %
Date:2025-08-08 14:05:19Functions:333594.3 %
Branches:202387.0 %
-
- -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

Filename Sort by nameLine Coverage Sort by line coverageFunctions Sort by function coverageBranches Sort by branch coverage
ERC3643Compliance.sol -
100.0%
-
100.0 %24 / 24100.0 %8 / 866.7 %6 / 9
RuleEngineOperation.sol -
97.6%97.6%
-
97.6 %40 / 4191.7 %11 / 12100.0 %6 / 6
RuleEngineValidation.sol -
97.4%97.4%
-
97.4 %37 / 3890.9 %10 / 11100.0 %6 / 6
RuleEngineValidationRead.sol -
100.0%
-
100.0 %20 / 20100.0 %4 / 4100.0 %2 / 2
-
-
- - - - -
Generated by: LCOV version 1.16
-
- - - diff --git a/coverage/updown.png b/coverage/updown.png deleted file mode 100644 index aa56a238b3e6c435265250f9266cd1b8caba0f20..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 117 zcmeAS@N?(olHy`uVBq!ia0vp^AT}Qd8;}%R+`Ae`*?77*hG?8mPH5^{)z4*}Q$iB}huR`+ diff --git a/doc/TOOLCHAIN.md b/doc/TOOLCHAIN.md index f5d9cc1..8a82720 100644 --- a/doc/TOOLCHAIN.md +++ b/doc/TOOLCHAIN.md @@ -98,15 +98,6 @@ To generate graphs with Surya, you can run the following command npm run-script surya:graph ``` -OR - -- RuleWhitelist - -```bash - npx surya graph src/RuleWhitelist.sol | dot -Tpng > surya_graph_Whitelist.png -``` -- RuleEngine - ```bash npx surya graph src/RuleEngine.sol | dot -Tpng > surya_graph_RuleEngine.png ``` diff --git a/doc/codelist.md b/doc/codelist.md deleted file mode 100644 index 2ad6da6..0000000 --- a/doc/codelist.md +++ /dev/null @@ -1,20 +0,0 @@ -# Rule - Code list - -> It is very important that each rule uses an unique code - -Here the list of codes used by the different rules - -| Contract | Constant name | Value | -| ----------------------- | ---------------------------------- | ----- | -| All | TRANSFER_OK (from CMTAT) | 0 | -| RuleWhitelist | CODE_ADDRESS_FROM_NOT_WHITELISTED | 21 | -| RuleWhitelist | CODE_ADDRESS_TO_NOT_WHITELISTED | 22 | -| RuleSanctionList | CODE_ADDRESS_FROM_IS_SANCTIONED | 31 | -| RuleSanctionList | CODE_ADDRESS_TO_IS_SANCTIONED | 32 | -| RuleBlacklist | CODE_ADDRESS_FROM_IS_BLACKLISTED | 41 | -| RuleBlacklist | CODE_ADDRESS_TO_IS_BLACKLISTED | 42 | -| RuleConditionalTransfer | CODE_TRANSFER_REQUEST_NOT_APPROVED | 51 | - - - -Warning: the CMTAT already uses the code 0-4 and the code 5-9 should be left free to allow further additions in the CMTAT diff --git a/doc/functionalities.odt b/doc/functionalities.odt deleted file mode 100644 index 3ff1fd4b8577ce748e5822910e6498b848f1221a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 36011 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 diff --git a/doc/functionalities.pdf b/doc/functionalities.pdf deleted file mode 100644 index 7c5cf1c97b07557890b567b76ebde6dfe363e552..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 31278 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 O$P7YN+qQ1cx##}-Zaq)bZ&lZe>b+O3 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%0A7KuA=Z_E7=9-l*iu+75Fjhk|rZW<=- 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 KqNT$6e*Xsm9zpB? literal 0 HcmV?d00001 diff --git a/doc/other/CMTAT/transferred.png b/doc/other/CMTAT/transferred.png new file mode 100644 index 0000000000000000000000000000000000000000..f378b43094ec7192357207f53e5e7b3577e52ffb GIT binary patch literal 79290 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 }ithRKlJ76}s@ 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

+QyKN>Va%)O`jAc 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%0Db(Vxbp;pTGj*! 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 Zc;SEZlJ1UkMRVY9*LE}Gn?_DQ{ukNcCzJpH diff --git a/doc/schema/RuleEngine b/doc/schema/RuleEngine deleted file mode 100644 index e908186..0000000 --- a/doc/schema/RuleEngine +++ /dev/null @@ -1 +0,0 @@ -1VpLc+I4EP41VO0e4rIkP/AxkMzMYac2NWEnm70JW4AqxqJkMcD8+pWxbCzJBEIwIblEar3s7q+/7hbuoeF8/ZXjxew7S0jag26y7qG7HoQA+VD+KySbUuL3+6VgymmiJu0Ej/Q3UUJXSZc0Ibk2UTCWCrrQhTHLMhILTYY5Zyt92oSl+qkLPCWW4DHGqS19oomYlVKIULAb+EbodFYdHfheOTLH1Wz1KvkMJ2zVEKH7HhpyxkTZmq+HJC20VymmXPdlz2j9ZJxk4pgF3og/hzzA5Gnz9/PLqj/65+d/N2qXXzhdqjcefh/djtQTi02lh9WMCvK4wHHRX0lb99BgJuap7AHZxPmi1P6Erok8b2A/XHUS4YKsGyL1sF8JmxPBN3KKGoWhUpyCDvD9sr/aGQJUc2ZNG1RCrIw/rffeqUc2lIbeoC1oaQs4guMsnxD+h2A9OKxG/7Q0SLLktgCk7MUpznMa6yrkbJklhe7uXNmTauObf2XnxnVcACvJczHseCisBHfr5oK7TbP3QDiV7024Eu61icB8SsRhlJBEcxbbcg3L+C2GqWScpFjQX7qLtRlLnfDAqHziGhgA6sCAyLB3zpY8JmpV0yOMjWBgICwyNioVY220xU792qfDCVlwGrEXkhVakzwl7WZiSFLIomgu5+ltLJg07KDwJyr56i88JukDy6mgLJNTxkwINm9MuE3ptBgQzPBdthQpzciwZtBXsXK8//qGlSpKb4AEtYAk6Mp5PUvb5/JRV3dP/4Bz7tVtidvDfnjQX/2r8tcA6UhA7on+GkQGpEysdOyvgYUg6MgOTbAgIxUGbExJI2yd04iYyh1jCQLCW/x0TpOk2GPASU5/4/F2vwI+i+L1ti/sD3r+XSugXnUA04Pr7EkdouUnbZ7tOqgfIt0UZ0HKDQy1XW/6+g5sMslJJ6b1LdP+WKbkPptKZrRM+gHJkN+/umQo7IxPgc6n4cmE+skSG9PIsI9OJErP3OiyRNm3oCG4bEFXpiyyCMNpbjvV9fBkBewz8KQXeUBnNPA+pHTPhJFlO4SdRJYRsahi3A+SC07jbab5MSkUWVNRM4VsPzfkuyVF5/1Jl38sl7hXRSaBb0UMx238GRseSy1916AWeFlqqbRsRGopqa5ZdljUsXYgap8hSEeGbiK74qlr14uUPMC+sFDKAlenLOi2ZDSX1ZZdj3sXp77uUh14VfQUmtcD3olFYWgWhf6FCelt9woZy4pkJcH5bAsFoGOkkD9gIVOdbCuBLpJSiTn2Ul9AQxtLKhyqwNlxQARHR8TrglzkehpSUFVDvRVykZleB8ZGXUOuvVqVEpuUPprWkffhtN5WqAapPHYwlo1p0SDO1JFTngr1pDQvbM23Gi3nyXPrqZaGpWKErsbSXYcsLW5oK4+f0DQ1RMfXNm120y17BtMBFxzOX7wW03X3e4sdkf3LFyPwlGoEdES+R3Pvdd0Bh4EVpc9RjUTmT0Heq0VOx7wM7VTAGzt8B9AhS1ouPi5zSVbnCM0MQS3rIkmARwL1unEKgrNUzZHBrMD8yXIPMiUw8KYxTd1p7X18qzoPtW8CZKPc8bywtwOs3xnsm0h/brrBG2DfFTcfnRhfF+YtEg3Ows0W5UfQOS5P3o/6szO2fVONxl0RtuMCXydt4KEuWPttX38chrX7OWENPg2s95A5NGPRu8hcdncfm5XTd9/sofv/AQ== \ No newline at end of file diff --git a/doc/schema/RuleEngine.drawio b/doc/schema/RuleEngine.drawio new file mode 100644 index 0000000..dfe33f6 --- /dev/null +++ b/doc/schema/RuleEngine.drawio @@ -0,0 +1 @@ +5VpNk+I2EP01VG0OULbkD3zkY7I5ZGtmdyaZmdwMFqBaYxFZLLC/PpItY8sS4CEYSIULVlu07NdPr9USHThabj/TcLX4QiIUd4AVbTtw3AHA9nzIv4Rll1u8AOSGOcWR7FQanvFPJI2WtK5xhFKlIyMkZnilGqckSdCUKbaQUrJRu81IrI66CudIMzxPw1i3vuKILXIrgNArb/yG8HxRDO25Tn5nGRa95aukizAim4oJPnTgiBLC8qvldoRigV4BTP67Xw/c3T8ZRQlr8gPnhb771AvR6+7x/fum//LHn391pZcfYbyWbzz68jJ4kU/MdgUOmwVm6HkVTkV7w2PdgcMFW8a8ZfPLMF3l6M/wFvHxhjOSMBlN2+Vt/WGLkRFlaFsxyYf/jMgSMbrjXeRd4AS9oPrxcw+SWbYvcd6UcbKhtC2qISqMoeTGfD9UiR6/kAB+AEyogflCvqNEjM95h6iGKqfESlyul/FgygjlQAk8MOff7+EExU8kxQyThHeZEMbIstJhEOO5uMFILRZkzWKcoNF+RljtxMOzFPyB5Wr4m+D32kLf0dDX8EZJNBCiwFvTOExTPFWho2SdRIK/GWZoi9mbuNOzrL5sv4t7PRcW7fG20nm8qzSeEMX8xXjUzRHgwNPdW/ED0ZC+i2bpOmsVvg9GLiVrOkWn5zoL6RyxI/1kHFGkSKPOg0qgXUOgCxtFccjwD1VQTdGXIzwRzN+spBnk+AOVar6reslfXf6wKoE1X65f46xTI2OOjeYo4+P+zc+nqKdRFPQYDZN0hijlvAPWpxnlsxyMsjyXf2e9f9G5zMOTiURNiaUsTDk9EDXoxRJHkfAxpCjFP8NJ5k8QayXeOsPBHXbccSPRODoR60qyz9JyUCUPmhTG6sF+sYAoInYRTnWh6rVr91UXZDZLUSsUcDUKfFvH6CGZc8m+x6zrWeqUsV1d5vepV0mzfltCH2gQwlCdRv9O9s8U5n26qKaKo2micbhOSrvbUNqLZfW9aLuvkYvn2vJTc9hU5vugJvPgujJfoFyb5NxSlAIlN1XunZjwLczvoIZVYFhFg2su42xwCDz77sEzrYGvjJ5eg8BJT0jDzfWxMf6nVQzclYr5p1aVjXXLrjlyr6xbHyuhEpKIdWQUpouMHLbKGmF/ChlfhSaZBViQW1NGeU1c7KWAg0WX5NOV86jdOJHeFwUD4CjMge6ZFVJQr+q9mqO2KWheH3NLcvfqD52bq79vmMBezIcdThTsvL/XYtsxQ6WbZrAMRIZ1V9sMm+I+v5qLb9SbiyTyKjCOcSoIQ7Ow5M75w06KrlqYOJpMjUWuASMSix2vQkZmOI5rpua1rCn4Kj1aiL9tOf2TayfHEP/WKiNgyP7T62R/cE55ZF9J1hur+n1tffl9bT1wifIocOrrlaNV1+UUfzbZvD0uif01XbtfHzeDYDFeGE4gWmLoeevTGhXO4x9syr9bss0G+kYrPHMZYfuaL7vf2krCyCu9jLSrSsgvP93rDmvjnVOVjYen18EU1rV6ju0FatAvwibgKk73helFd1iNb6znwIdvoy70HCjCLw7kUi3Ul9loNcRNU4tzjzehZ1hctHa8aQT28gdsV1fqqgIfJs/NqrhaXj5XfUGgK7lzXfXVyzjwf1Rf59rqK704bZxnGd/QVHHeRBSMxy/7TaSPVBgfXfIdy0LNDttvJTgOn5WWW8k5atLOUhKs3HbO0yPXD3oQlAVGXZrsntc/PErLStU3KNV/7kz+kprlH9Ws9s7kgbrg6V5Awniz/H9d3r38myJ8+Ac= \ No newline at end of file diff --git a/doc/schema/RuleEngine.drawio.png b/doc/schema/RuleEngine.drawio.png new file mode 100644 index 0000000000000000000000000000000000000000..00049663c2df9af6140ef72a9142cd806cc343b7 GIT binary patch literal 47811 zcmeFYXH=72*DeZ(5>X^zM5PBrvCxxHrGyX?dgvW#fk3E%P^32l2m)4`NTgY?&;`T- z0!ou29Z`B$M3Aa`@%TRPd40aK$2ouY9%G;LjS(Ou_kFLm=A3KIIj?!mcmq96Hdby{ z1_lN;JPu>Xz`z{Kz`&RW*#|xeE%Z4J{xDJuHPH-@+IeRg81|$5G|c@x0*NHDGlPhX z`tNrl(vq%T6h9FejEJ$cJV4Z3N=ifq4c_UHJpBW~-#|H(9SU(8yi@b` zCOexsJ7|;qM5M7u8Ch`|)b1_XIAdKM5ovYso=kFg27ff29o@ZlZ*lUq4-hALfy<>O z#ZltBQ&e~L_3{80VWlKd;*#P>X@tDEl)OCn=Kop>R$5A2MqCDbW@Jya_a*(uaJ!Fi z_Oo~Sy}}?5PfKT9uss1mz>7%*OS^mGOng-D)0kQlgq`wE>z1c6w+xhpWPR>-4 zBbbS_h>Qjht`o`L#n;{gTtfPn{Pc`b=JqCP+RkFAU~ey7EXBye=l9b+?ZFcMdbFWG z*;&KWh2;6K2O&+p_1s0I(RgVM14$`UO-X$d9S3)eOt8C!EFNj8>F41TWN+!=6rhXs zLEBpdVl8!afaI_S-grL?If@ZNUBki%Z=z#L_Lr2^b29LiH!;E)yV^Urfs2eCb<7b2 z65hlKp=Rn}>=z)ThEtRG48~IthGepoznq%Bk*2<*nV~F}VDCxA8ff9A&HS{Hfv#9> zGCoMx-O`gp*7R|7H*!)p(RQ#WnD}ZL`pZe-eeo!iy1x@%H#pEBK#C+o_1DJhnB#q2 z^wfMEz`#M8a=1W4jJ`C|*c0igX=pExwD)%>1*?%f5MEjap2jXDw2r!*50&iXWk_-{ zMWBrhP_pI$;8sT&V>wGh0@+v2#lX|mK~`2ujcN$&1}zJ$3rq9|0>^@v4$f0XUdr3j zk!ax%WabbYjFNNHLb#iNuXLSUO!PehOg&IIcT;0`Q`rD%11A?pU96d$y__Y{Kt~rV zLq_R>D+91pT%fC)zL74PtOt~hHr=&UGff?LLoC@IO9>3JAc7CvbX|;e9emx)oehB? zjpV%yd;=Z9T+v2m4i;2LCzOe!gSM-my0j18$Vb=9*;tc^kvAdj&Km2k1~vy;O(V$5 zg-BMX`siu6>B=KrQ6x=mAEJg4Imn+3uEM$mxww%DYVLBn`b45ExI;rD&_vEXkPu|- zigUKq&~?C5{Ipy(^!1Vcx>&r9p{0AUnYN>s9*_mvknH9csH-20H3&i@&3q9+L}-kR zw7U*b(g|ZOr(vn3hgK(n#Tx5t1R5J)&0M{tjhqbe+F)c&GfOX$yoZCoo_?^e4w6De z_{ka=I-1E6HKipzJ>-0Xjhr=f&E*2k-AsZFaV`OR22N(+J`IedC9p#@N!r0%--BXG zb&=Q9A({H>yPJ6;gS~W6hCzXNaGjJp4y);Iq-~(@BI)B|Zldp^9_WX4baV^ANSP9h zoixqy!2yQBdf-tMZ?xy`R#4M7wf9B&I#b9*b0R80+e<^r9EBtzP=UsHX?=Y+XA3U` zxXb|j1UrIXo<7=6hFAlF1;$cO(v{>!rm7j3c?Wuuf&O$UZb9ZmX=iz&ye2YOSKpXq zVyH*5H=!6~+~qYe=3aq@S~z#2TA;VO8`eNhPYdZTN3ahvch;vEpmF97j*dnKhWZ#U zLzJXXP_VpKkcqm9frqQHCW^8vd5VRa7v9st(Ad+=73FK{D=%eYZi%tfF)^Z;IATn+ ziNL^6>YA30a=SVSL$>R_Vhqhm=llegFLr@C8EJ*BBy#*Xr?CP=Ekix$84y|P@>4pg=ng!|-QJ$uRU`MirFVb7e-qg+9T*udq9OR1%bif7qyJ~oA8qw|h_{q7m8a5-YDI94Axmw1L0!kq2uN3Of}YY zHP=T3%2R@TF@2`^&rO82K7eT&M=}GQJoO zs+*^&zNwpqv!|4thKZD~Day@X5^L|LMhzf2xM;h}%D6g{u})GXJqJ{J=m_ ziBoq|*9nkyHzCQGkmbod5&Y;R;>igp3}8SfM%siTMS^8@zlqVI_`Gc%KON80=8=$p7|Q)F-s`jSBg z<`@|-0$I&e)7;XR;^_xAIo3eKSI5ZDL`GW=IBcw}d+@H9ynV?yc{7SUMb_QL!Pf<4 zic|~mB!RE6IC&=-Ul}=%AT2p?p_=2a^Of24n}2)lzg#%@|6d`JjK-rXzY+!pK?XcV z%{b6@A$xzn$@u24oV&@b_wvS|>1nwzJlqFED2z$j$K4|@GU;@N%~enf#)e6S8^zF~ z6|O&3OU4yAHACNB;Bk2JZFCH{>Oktm-XQvmKTe^RDapp z=$>lJl;uHkKpFphMfM+F@6P!N+d{fBIv;*7T&vWe&lH{}I&n&GRfI`M@Q>GL4pms1 zE0q7&9nBk|(I>4#cC=wXg`FrTkKQkpcLV;1B*6HbY-x*oO1w%Ic^c^h+19v>(bcQpQ(*Y-@ z{)c9O+)i+x7-ISVyHU~4aerSL8Pd5WX`g8FYoj9^W%9rjS(p=6{cN@%vsF)VaU%Ym z%C8Om(hIMcR^FX`9H^i?q9#LZmF%;oByCJw)z=xR_HQe${OFdfFjthdb+&=!E_oFF z(9UsPUzMKnOXtJge<~;jE%=VkNPlmnf8Lq@;=)r-)QjzJi5ov&{PK8Ix9LWCwfE?) z_`|1y$8J0p{l2}@k=d=M*v6{X#21itT!wf#X#Ml0wu@h$yJ*}mst_HLz2Ay>T(Tbr zOS|;vPKVG`(GZLULKTL-9Q0!(ppw3GC49Sn7~D$S*<8JSF7>gf-@DU=x44mRw`#uB z4JH3*5(vMw=aAe>zs121*8U$%ZcjlQ)d*k%C?SYHnNP4zb{L%hFN1tyR^D2Wp=>Qy zW|np+5AlYreZ!~xbzAL^=9`7DAi{U%?b?b6ceQ%ocIcg7 zHKvUC_oW*XXpo$rJ6oAIZG+z~l(dNN>zr=n@j{r~Hy%hh%mi(^ETHnyZ?-Fc;s@qT zu}w{HYr4!SZ>uQ<)oY8H^BLctd4u({-h6>Q`j2CgQJ=Zmf1Y@kR8(IYv_iD{6$dLi zshe@jFdWhLOxsnxQmB7b>^Q4Sqf|@_`%_n`he|=+p{7ReGi=B!$G)(nD z0cE8w`unT;%A^AditNAgA~_agilQN(%E(Ay%m^lLeo2K?Nh9L zzRhq`m;-!>ew&xczd!fkT^L{7~k~)7CfFLOWw3Y)^6?xqV@ z)`sD$o8z^vpBccN2oO$lo6ZiXSWRDl*j;oQbFHacUxm-&ar^^Oj33YGD9>dU9>-t4 zlkY4(=B*Ou_j9m+hP?9rKGS&{lWQCeS4vB!u}=!KI?qF%UCwMf#u;0ZoA3Bvd=!?M zM)qkCnEov>ja}6=c$Mq&dR9_uNY5i=AQ&EcjC-3wil#<;UO_ zUcdKhrgCV5yl34_a+<^C^!4Xgf4)(OW8)zjF+VVQKveLbbBa57+~ICdZQd2Brd;() zgD_b)lMnZdno_9Efi(U6r1_~mn%ilwXC!LBMjb(LVA8vgg zZOS_w3#HA@Pu{dcDK0#TE-v=()|DMt4I*g?tf28t|2$M9I+&qS!$R-Dwy%IjK%))s zTHj)F*vG!61i9)q?iohgrz}yLSJQ>b{q^(53sh80cGCq_ScmgX8{$&!iXJ#Tewa%^ zI-_h}i9ef2E5^W;FX4bj_FUvmJ$2MB|3-W1doluA3sLJW!ZR82<;o^q}no&GDx?cC*^@qcU;XI*b<(7E0#EK$Kc; zN>t8T3xs@)JmNA;hYFc>+&=FS!}q#*|Ea7Cz_wgE%4OQ+>IZ*(@79;qzA0YrPQ~2P zp+ntOneSUaD@h98Ty7F54vc;wb*d_lN7f|E2LmU^&$Nuv)B{HR&3ft3J}3rB-}f26 znD3Gk+RGa}lS>WlM;cufy%wJmCh^ZuP8s@%u}6&Q>B-ALG{e6F-d{M}&MZG^meih^H@SY^Ml5dRbWBz+wr#LgiE+tRHRIWNS>aRhP* zHj0G^S~`q|{t)w5R*I?rnkZ5CgbrK1w66G0%x;VGL-a9hqz9ei`jCg?5FxJUK@Ya= zq!2mFPdx0)cB^|HG{+}~X94YZkRXA1A;?NlXO&{{Ii#W*5(M1rqA@R_`Ls~dv1mzk zT`{4XqTIJFT@`G&k2)GuLOLhFxmnq%g^?h%W~{JA=08Mt_pG3G6vk-653fj%hX2|c zMJcdx?0d12raVPML((61;&Y-yD^k(@%(r{$>2};CO8;?=)gB}LwwZR$SZSdy#(zek zDSVN-nJACztXMI@N(knfs`w&s{b%tNxZ74Ttr~ zt7p5uKu3mSpJh9|AE2Qfo07{xex4Irk@QLE%w@iDx88@O?&f~AD?R6!4+XGZ7iN79 zPFqw-T;npPg<~MLDh&^#C&NxVV6^hxX&QNsH$+&aPQFenRph&8Nz=~b<&4C%U}5yQ z4?Xvcvtl(ez8G`nFFLw(gOljZ=l=}KoCLpqFthW3Go@Ce zC$3mAqhYMolV`b^&#SEF2t7|{m@Bx)re ze3$BakFybecL^sc^pSRq4!d| z`!N%T(cA=`C2R(1PN6#}2a~(qjt{l`Gq}G4*`J~{rnh$sM30sCSuhItTq~fL-026) zCBi9>Lpfxi>`rTw=lwMpOj}YsNQzg^6m-tIKq^_RQujoY4IAEq! zp;)=w9X?7q+I>ZbV_vQR*D_!ye1;&KfU`Kaf_Zlxy z^Sw*k15PSTP3x`nva^zn&oC=Pc?|Y5E#$|e^K`mc%F~x>z9?@UPj)s#hh55+LB^xg zA+taJVW1lN5k(A@kOuXeimbG1QGzSjz6A5=DFX$d$rf?<^)o`yavvO9rj%ox7_K$h zuIC#*sXABhFv&3Q0zvbVLnCIr>VWRWkuxLNOMbv9?Z#gHZ-kn8L%zOR8|{J6O;fsk zIbw@e>$C93g(nl6dFTm6mC@!GKL$+?I1Ke{IIxtEx(l3#Lod6&EYQugG=*5g>Q2(* zGmQ0MCe=P1sl&wx0&Q%>+Q@aG8oQX+XM3@&-~-Swfn|Rtycxb`FC3%d=0$i6NfrN} z9a&QFl*g{ntIk}Dh@B@A1P@FqGzq52g(EL;gbEG(Y%a zqTjj4bm%<;y-2^QSIJI#L%>t8sZcbZf32~`!0G9FXGI4ETz?2ugovX)Q6Z^Du zKz=&Q5u40Qilyt+T!EKC`813<95_?;dt~TS?48DCU5%?ktUd>8ra7L)HrMNUJtt{gbWuzP zTQ?5HOM%5np>7w5|KZkb_bY9Gt*16+KYsCZ(D$)I^9mRae`Qy06r0m*sD@Y&=N)}~| z7C`mO?H$VAVZg+$~!dWI=9>y7{?>;c7XJ(zhgHoUfWH2TEXdh;f&cMa=^;7&v88D z`|koqLtTQ`7Dzu=ABPXv1c9tuv?kgBg#C-XEe~5rQ#ca2l=n#+Rz`Lp3G{ z0tUbWGCzhX`uIqTAH$-E7HY>8<;@~p0rj%aUJd*hL1sQ?e#73~Kyyno#J-QNud>tg z5JWZ@n1j_M$kF@CJcfGPL9$DYn<>~m0~c@IJK9jux0^K_mv*9M4`m?TA2v5geYkHT zQ#l$|Gh&$`c9$b&UByv2grE}tb2skQfX^L*BjB*7N7iftM#?{Q^oL~%Rg(|vA~-1* zDn%+5uum+X2bUiiD0)yo%jlma~Tp?sgM9U3Pn4q=4*dNA4 zIH77k0}`f8kYEqu_=VhEX`-6EJ~5=8BEs9U_&NE-vTpKXZqJPj<+xkjbd3Wt;Xgwt z!#+&|^{1K6yR`GlTzDCgcBPcUF~;7hotMKQQU=`p(0Ep3RbiHI!V#wol!u$q$KB)p zEIJf~J*YVv?gafhlz!jrvFDp}LVh%FZbj&31`E?@(tnu+Ai$S24y!0k zF6}s`o8v!GgvdMl1>*$WtbN~#n4Sm%NfsHy?y)rdjQFuO2z8xRZF(eNw0zd^E;eb< z&2raEkvX1?mr1&ZhVieBvM+4vmEt(UyF;RfKg9`dq>ZU`_~S zt;@eQD%8tCgb_phH0rd5mLcylgj>D7dGaqdX#=uHb)P%x^I-7fycqAQJ-@$TqXN4owj~;qn!n z`|ua>_f`IIbu>Z71ckoGcB4zTV_ns>j)n`j8VIJp;D`{tb{Vn)4#WOIIT@GsvYKmf zszD2j+VsQH_L5W#0>g*7%YQ!jR)_LdYXS9{2Hb7`Na&9d)N2;Txo6Y2OPdV6xl`jd zvFR9if}T;O%eRTQQxf4DiMo9bOCVB7DYJq(==H3^OJ;kmyvjTAu>7Tu&uey6G|Hc2 zS)Z03^H1#8y)19kpHYTvI8A?`{A-(1Gk)yN{n@L=ism7!AIvyog#r(qu-D>@O}p^M zwOEaAP_~de@JGt3dVv{N>9FOG5oDEB+?y9)o%>X=&&15eS$SjP@L4FFx(%`tRJAKW zKBzy6cOgbDTjI1d_iGNtTiF0Mqn_O~CP0>1)M70)%IXg(wkGK0*}`GV&vfYT!TCbo z5#GF`Lfz(8@GBbezkK5iD~DK&D8>nML(2gjc9$|tG6%;0@9ywzyYN?F3s{&;pEA#(( zndEEy%d?MbOJX5qBLLiiGkthq)=`++qst2s*?8me>yLb_Grk^i`lb~q9Y;{|6b zHh<~>ZU)}Jk%Z59@K@-e8Uw+>5>liPNB(0^MUI_(LLMj)!`uOW*b~kKAc~?YM$+o< zLF#r9*Ry*5C;xC;A0gzyG7@um4+db%)>ASA4;JuxDVNC}dPM zx%vAW3yu`gYe&TS&i%b6C<{|?e{%G7gyzP*kl!^WK{AMyUspsl{yXaYnjOJk5vqCr z&>k=*8^itT-_^tB1h9yQ-m@3}y$Ctz`+6$x!#w$S`jdNpk7$1wggzB}5p{n{B;pJ6 z_a}>rhW^JG7&k}^1|RZ&E65a>f^)1kOXA;4ZHNS;j$aUIBZQq1_?Osr1L7xQcb5MR zEry)BbID^g^?p4Aq*;GY#C`GK-;@Xev7NP6F#p>T2p$5X^0AyHC4V#8_&tJZKNvCA zgE8sfSk5O!#`EN@WMjU4s;Xh!495Py3w9|-Ky+;Jx$D)xrRyVj=hC8_Ii7MY=N-#$ zMZMlt6#0N_$ltDQXN0Km(g>x2gAUWDeJ`r;eY~s8%UT@(4AHb%wz>ybm;f!-%fzh z^&>W`Ac62ZnaUE^(!wuq3vQr#S?{W=PFwkrbJMTssfL~T@((#CMn!mTCcJJve)P0T zGY!W=i|}IhtJ{b(h`{DUb`iOfc$N3|HrN4zvuq{MeF=;t^T)G|MJ`at50Lq360$4@uo}= zbES)D-?+6~ec#2mdO-3~M(S?dWju5X`KLfY+#wrkZzae*-oj3|XKAC$L1seE9#U)y zz5cDc%1Sb0rRi}`n(l>_skXPacTCL;m{O0#-VXVO?*`~BrH7!IzFU(9)tbyRCiicF zVqZGQ1k(XY;Z~nr_{e1*+4iik&Dp)N1+OrIR!r5iEjP@iuiO+k(f!EM1hIc6B(cB- z@jwiC!buJ_Xo}rlHKao5ySmP&8iqtpJYnYJ#V^R+Y85DsXMmEh$-RfWMOcM^C9>zU zNiNFIjpYVMCI-8qV3(4f9g_?b8qSebEqvF;xd%iaPHb z{f=G8g;Q7b74WPg{Z;!dGqw?GjhEjWPM85E5`$4{=$;762^*{)Okt%}rubOTi}3J{ zf?cMD?&*sF<~tvbWl2zlgGt)p20Qt*!=N@puEe*(cUHuLP`YCY6NUIPw{`b4yI8Mi zK^MWTefUbbt>kN>-`}3fxdjmNbWm3Z*{d*!t0d3bp8c>5COZ?O!W1Aef{G@sEU3oZL#PKuo>O zU9MA%*VgRFH(*?+e z+QG|tr%%QK6*kN@4 z;e2t^FhLb)Vu-+@}LT&^A0Udo}-Xik--i;=g!K8d@;J+*wI$RY$HUFwfXK zygO18ES;69#9O=|4oY)uIq?`1mfb0R#%K zUC{0$NWmW}eY$%^SsIiwWy80IMoTuca#((St!FO?-CCQ9J!&fnb_DWq-R6C-kzara zQQ$M)IF+opBzcLCdMo~Q@JQla$)E?O#jU&0kh|98&|f^7Z*Nao#VLNNrPPgF53xP! zHEPgUeHXp{>Y+txE2u@fn?AB8?Q%V=LUJtKhdgUMEU5&!!syyK=Xps04Bb8dBj@6h z{7T=8pXEJQ>No1PmSlEOg(ho&Y!Js9;tQ;w`A%gAe3aVF>8LZR$ycI6M-FUFtNbEy zoio2+8#H;ut~ZgdKtIQGmsC-_dA4C=szs;=PdJ>C!&Sbq$EtSwjAU8rjQLtp%yCX+ zd~-b7>-p*pc>p!Hy^cLld@S`IAj~v_ysv>(hQ{>_5fi)13-WZyDHinu_+L7Z+2C;C zc+#_ji!Cm@2=37~_{%Ilx@lmgvkx<7i>i0~Nf;SJwj9yr9)zf5@I zl>)}BuMPO}aS9+YgHev}r>!nvjhaC68fIxcCEo8aX|`9L@11IimuUat^R5#ZxT}%X z%vhoXs=Gk9lpvU2K2YkC*`BSKY32D$q_B7fa7@g0PtLP}phDU7^%q$q7hsdU2)7d0QwiI6FOuE@NK)4xv|9qjr{?f zWdeQ+{hh2Cl&RL!_Wtw5l^KAdkO2%Ye{y%-MegR}yXzLZ|9!D?R6L&3vNrIk{I_Od zw$tw~E|!~#*Y8_P7wwmICD1N13Z<<7oZ_We{y!}Aga({;m@(?Y-wvR^C>I?6{VY86 zXkzOvd)x3Ge;LnVIm+g2;k45U!`Q&+uzEJxTf5L%0s&Nh^SHL>?S7Rw3iF2mo|LKJ znAr00GfEpE-MR4x&%n2ycu!t8%K%)o;fH|g^(fj;f^(#=cTD|ENX>)E!!7 zI+Psu9pZHr-W!NhQ>xki*0LD5o$R<I{0tPNScnBK%_O?BmKFFt!6r0aBW8rG-Sl}|&{H9m7UuAUq5 zUj!aOW@qb1C1n&4Kn_l$=EoIu#xF*6)PbsZ0U-TMRnI??$yV?`gA64D(=U6cq>E}@ZV6!^)vkX$aU%)o~k%ChH1q_ck$8k^bCPMa=_*-N@)9!jJ5;W z0CXSpQ~t4|3M}iSEhxSR!Ua`U0q@00TQ%&u*wa8hiLJ&KTc2AVP8x6){xJsRo*U;Z z9KhM7Xmrm|#OOs>D3~`7kNA?=xSF69VFuv1rDM9F=;QGhXKsNFMVX9@%ry3V7vvob zj)=v!&?Ii;Lj8V+_VYi69loS3+Nv8QW0%@aRt4_ zh=xudu1i+U9yIJA@o#d(uJt>zpM|VkWbWMsQ*95>Qa*FnKT~7oTy=wH-}PowzkqxG z$R`vt?9oY&eNKEGJ%1Q^8A>#ln5_VWwg*Xalha3S{8E!R&lMLyPX}A`#ODozc|D}* zhw?ruw04hwG~ui^XAMm&+GyB{63}@SujkmrTzT^luml!Ry9u)|h;MjWZ4=7herMKUn6J5@-20bTI^i|o! zYz^d!fkj{g6;zqKpeZ@;#G(WRU$92G`E6bcz3Z5m*Lva`J%z_F<&>&89ZJz=Ytw}7 zmPE9LXma})qgdF(ZtAUnicH|~`}pabfojb}nszH-B$5yC8;!?_!uhd*pYCwPH?*CX zU8SL6a+8rUjq1EnF!n=wpuE^b_Tywf4}mM4XvQe0nHRIxQrJk=9 ze5v`GSNKJmcGnxN2B7ownkoX9PWWDiM zmt7%&a!Il)u&lb~y2JSWv z&Bm!;p5FBR9D8(-#>I{FuUhlw8&isZjXd~NaTO3~I)+t%drfQRZYMSD!3bdBF&7`H zW5l|k_Eq9HPO`%3-Zp3`g*)UKzwk`G{D?K}A(~-YVbOXzKJLV~t2w0>j4IQ?dQL}^ zZVJ(Q=ldQ@oDS*m=X@#<*{)3)`Y~IWQxT;oR13;A=?t^owK&z8mY!Wz0Y)IDt&t@s zaBM%1|9lzxwpV%;AX^x4GXk_x7{c`JfnX7~P=7#Hp#t|#=LG9cM_O0{8ltL%sN!MQ zrzrqh2|8j%jhm5OY`9fuP>?2}eDN;n}}&F!btA)nG2!Z@XLt7FlK!FHM;nia~7xY2F!IjM0~L6Ug0#MikokQr(v4+3K%12DKCR zgz{5brHFuNGIjsKqmr7UX8{GL6KzoR_qQ)DkNcPy{TG z=JQ8|IMOxU8n{x`j#_(1>dvBJV?Ss?2)g#hZSTJ5u}LP5`yl~=B+o4&SD$QuyZM>u zvKkPb4ISNQYpL9~K*r>f9}VOUbNFZ{ly|fG*9F-ZIAZP~m;e-tg)&c=sTm~c<&=2& zkyEdw<6xUPB0I3yDtl@lJ-3cI^;BL$s;V^)=gnp;oE{KdG30}EFWvD6GLkRBm;$8f(=3S$-&@m zv;w;=_dPGATgwJ$U7;=|T)(MCL}dOa6}$KsF*Y>e5KTGlSz@n{;iwfZxx z+;5Th!?A@4XiPYuvUK;l0*UWsyk~&Gz`I67`IpKKF<1U443@>;uzrfLCD_-|JPAEeV%f0{EGloy3oIX{a&8kKlV9YGQ{Bd9$KQd7G9ooK+f+O7xBy z3PT@Uc(rE_dpShjwjWdh`Ku~Ms8-|2zJg;k(GwW>Tm*EdAv0jk0USQlO0aJ?2HFx? z+=W;_rFeC}QM8MCyB_jBEJDEOnt+OCk9Wf9n;IRVdWy4-o&=ivzCM0B>5S<^*P5|y z&-ZsC`J&zNz{+PqH8|kWSxCENE(accLKxZd>5cy@yxHUr>q=VlIkC`#pCjjm`c4%F zam3=9g!6BHmvY;Bj}uUb1Tg;;#K0><@A=2P*JwE7Pj{uwV$?a`V#JUVVma;=R|x?>FS1f|I+Uua)U!P<@T*@7Mt_e`Ojw>uw^YeXTt0cL66_qkA78H} zBlqg!D}DRYaW)dNW3W7DS>D3;2-%(5$Z4@1GrLgdc@YkgNj)iTzAK|w#Wh1Y`BPl~ z(#pprqwkq<2C*}H_XKvzva9!}vuO1Cjm4iDq>n-@w{w_E^?2lc^FkwpLtC#DBvuN* z#z!@QUix3PU(O20ysqMz=6X$L>9x9D8&iFCI?k;KMA!nFD&`o$d4zm$TIphF#C zlw4|xk!v-e;8SH~F{r5<#iA3Fn{yQsqX$CR1slEFD6G1|c`__h)A{kvA)fW-aZqA@_&r`T}QNerI8!Lb$nvKL53)% z(?AGIE5Y{#29Aj-upb`Qq10z*C}YJAxlMj09*?9UnE08CemwR5{Q5G;vV>iq-aSe{ zU_L;dV+@$D_JBAV&&Srq92hbFDmL2BXpBRV3UM0?m zbn)S~=*t#{y2Jj`T|RzO4SEzMguK|{8gQO*>p+~9dI%5pplHe%tL2C$E5H)&-K(9f zmPP6MkmVEf^3I*Jt=q0@n~wxmj09rg&^!Tean27|Exqa~%)SEK?%`=fpJ-PQU?_*e zoha?^S!P|cB(?=oAwCLMMU83h=A=Gk!&yVa(}GD5%z1u#XjYlR+-izj;<`qgz@u{O z!&Mc4`dt<0%~$A|Wwh0lD9WsvtX@Ps%-Dz~-)(1)eVi>eTZ$K0@eS1lQBih*IOn_u zuTWZ=yU=S3_@jY)^b`6R9t7vnn+ub#9}~h%0;ghm32R~} z7RQch(+zz3Y?=gr&-$fsEhN#x#2hRFTQ-2|Kg6y%79DGz@U2GwW|4plQNIQ zKW@C&Zg-hvdHY0!kb~(Jtcn?ls;b-9>5`H~ix9EAc~oqvjm@uaFWx3}3uL`>NAauU zCk0<80ftkDWa*w#kjjQ7eV-O(|17h5m3{f7P!Kd4oe0pLWnkqmeR&j%8PrjP!-6D5DVXG)PY8vszr zAv>d^6APssDA?zGoO}{rX34DZ{X<-*RA^_^0k@@=^Zmxu^=ruou10JlbT;4eDZUHS z;Cr$E@JTXb&dny!fL30uM3N+E z)9{9!$)Z-_NF>u?fUjNn#4Uab;A>e=j_h3OulfY~y3So!zqa#kU^p`ANLFJgf6c{` zr+azUtG;lwNLSd=p_$rW(Y}D`cth0qyNj6*Q;Mi@7Paqw=*bB0SC23YbM<lN&_HnEW}Rz z;z{o-5i(w0aEtU2U#$)17an@fRI zm%R34^BOT1WCx#cD;}cQHJ`sKkojo0rDtlFbYH_)dN==KpN30P?Ailzzrz*KQ>I+J z{`%1Cg=4j0JHh%kQy|y7D597QSi;!_faewW>#Sk(;b6XNl0coDL<6x?yiDVbNiw^9 z#f|YRDho*_FT!>zpqJ>|lM7G~KnRsSuKo7T6#C-lru!CUPVDJ*)N3|^`qh)V(hChe z&oBN+>p*yY94_-587v3~nPn3H`9aV9?MjyAZqAivc4e-qm|X8+%ex7x5BE2GuI6!n znNcgj%sN}B@@uNMGMv$94ejTL6h*+p&4R;T8Rl02JjyFq$%l&Cc>|oNzk~&1$Qg@PG(mXNb}Rfq zTc;8k?Bw$FIzhxUB-Q}0yM^-l$UD3DYTbuib(YMQ?0az5RS@S1aur)Y>rw(J{F?A+ z$V$>*{cnG<#rhquJk)@9HTQpruSR3`r>0egZ20nApYTk8y>o)^*fL}8q_7Xs#h9LP zist1Q3jV5HX)hfeIdayt%xFr4i~T+5Kv~s*eN#7ocRhcLQfod4;9n1BT)!BEFauaF zPipMGNvC0ZjuPeSeSH3W&UC5L&@D9h1ZXt*^xnF zeq8cGgxL9)2ZjW~)?d|K$UA|yU`xdVDu_#BBYUE1Ck=fn%R4Gv*2~sB3+b84dB>Zd zAhTcq^CuLcV_8u*FM^()H6dn!z~raJ~?wVX7h$p-KC@W864 z;us>?auaBIR$k9d=myvaGYo*vARCERCU5B~x1t{|AT~j(Re=p>DqZQ*W+zk#uuF-; zOgQA3UQ?V(ey@N7lZ0IscJ3hicx{9aGoKI@U~oPwfQQFp+xs=*BWNztKPjX|`xndC z<5&YL9T_-_aXP>Rn;nB3TW3@@0l;M@>m-K%D)*ZlAlh3;Z3ABwJTh8|r5)m5TIR9U zBlJPlJ{R3hmd5Z<1fBw1cF1305x~VIJ4W3pOih;o8P?Tb zF$((q#N&&6dfz?g6=A^DUzrPash;Oq(JY#nJb{|BR0rx3%7BEAzsVD3;0Q{VgIruP zYjNX@RmvVy5Y1&yz``;>7s2xgqv@CfRT+?V-3y@mv6Q4=CWmER1pK_UIQNDAr^h?x z=+J4{uan=iDiu#<`=znjO^psDpeIsG%Mo6|pyKKyr7yUBvb! z7;Dw5KejAvXVcX6vol+HP!=2fUC9yB=mM{X+u>P92!@7Uhpqhtm@s*cT`@su;>pnA z9|!V+mYEHP z4UpI}hkcF$J`EhEGfpffbmI$K01z{`j|#7kmS3sd8f^!Smb!MH%ZV5Dna|vMt@sW& zvTS>OVVgvRC*)XmD0mXPu=Txq3F>y zCt=p*wKTpK+99Ed0aAM5pW;glGrU-<;~Qs`Mal-+^MeTPda z@(IY94kT;Q61y|t8K96iEZAcV%I`$en z`!BE;a*uerVkV(JN&!pOHCv~DaMO%1{EBR&dDw$dIspG%eBKC79TyGJC4v5zQB1A0 zo5Q7o4xgJIM#92vgW)ITlSEI`Z%lRMcxk|we4tQXg3w3@w5(qt8|Pa1G?6QcnF+eL z_FiPP`FM}in9D-%oLMfZQ6yvk=R_$B6^ThGlD1I79vHr9l&6u~gYG7)cIDv@TaCX9 zT~w2E@>t41ub+#u-fcZiETW~{8vH7D%DDs~a6|Ok>_YFCt2%dzFz|zKc^F>n4DjJ~ znYV>fVlG_;q8zNthkt0>Uq~I5OXZIHq>i};dJZ;|dF1MJ_K#2PYkzk7J4g)xLHHUp zeAwzCXeFVPkA`if-?R&R)?f|9{mpt+m}yz$FL8HDXv2JuI{3R?_a2$Fzkb8=#fc&G zLt6}dnp@wGrBfiUQ;=6uw#x|sK78zyyl#Z&aKG}5$}SaK`en9qqk8dSF+1rTH!E3(Z9IeFnC(*=B55fQSJcDF~zIjD5py9o@?JFbj!fA&Sqf^!NkNooqwW-jFzY3>_Uf07H*^WMgG!}av7H-{ziXlLN) zstFkMS-ICRbSj=j|!GskBQ#{kK$SN*LgK)P!geWCe)UPwANXitpl zW@FAfa5mMN>o=XauG$%oK9(kN$oH=N#s|zxb|yUDvFcOQfrIyMV17aQ+uFG7$G0zM zFzG#d0rGJo?bnLnYjy5Wr?aeZY-&q~fTz>2$JbA<;wo?SR0&RGa=8#71>1O!d-Ls$ z5|kaXwKB_rwsOBK&DV9as%}&?RvlfJXuEHF;3*Lxyr&xyL>u-Lu0W@53v(RX_Ib3N z*Wa3fY*F@JxuA8QV^&eAELAxM;tjC+p`$Di224T<$~Z&R*fgAmbIxCMqO@J^db*C1 zIJ;9Mb@d*5!2Q(vh$6nZkHg`=c2Ij+moJqqf*$??=EEebJcN%#%019J^(;WxQHPGE zF;9u~z%TJS2yAa82PC3vPrMG#ic|drDC-9$%Af}}hSC)Y`T+LuH*%pJHCQ^T-;PWf z=ZK)$!X4g_X2Y;f1VdrA-Af&ctUJsKH@4js;0Ub~rfu@G2O zSR)UQP<&QYHz=RMLh@AjPs*J#;tBPwkAq?s87#8^a&_oy;~AS4>Ls}7ZUpoq(&} zCOiB8pzFQkv3%eEaiomMjax**ZSPI?y3MTHN<@_Gl0w-dm>dpur$^mvuad7amJ9_Mi$&vCRg1$-^YBdZ1ICoP|A{IFV? z6t1jtSEBgmQ%>2|TATVyH-bOcMaB(%)w^%1L3%{N-$Zqk)=GDehndkcfl(?)MKL^O z^jnVqkL$1ZbW=VIm^>-E+4lzS(7jtts+g>H-FXfZe3b8-V3Wh_?cRHF%<6c|#)){d z)0oT#M*9cwY2;|-!X7RY-nxw4Wanac_G5_nt$~TtnY_+St2!oI^8iXPgU5~Eyjcon zcDX`c6;zUN`H@EIqQbkF@NhO<#K2ww55002QRD^GU_{3XuszNtiH@hOqV=6-#ZA_q z@}QR5W34eK{v#jM52Gk&-^^CjlS*^+g9=Z1By{c_Tmj9 zg7&!RBr5gREfE8>!2Rd?E(+M}wiPmgf8{+9Jld3vNqrf<3|efn&XG0z3jq6?R^VuKb{h)0HkOI}Z0 z>Wxuny2rvOGI#zntMv0>R`u^RkwB(+c`e@h;qvXL=k!F8dsPc+QsrKv26 zX*-8rHo*^$%)hlU?a(E=PM{l;j%Y$(>@F!uTp@zD$;qS5RO32AGiLaXi}LQ^g_7Fb z)7q2_eMY*}8oxD2F?vyR?1ZzlmaO&(dpCALF~IAy?MLuhI?DX)3dd^E{S$M;nNn&5 z$Gf5CL>#`=azdZLCcVLy&M+w8;$o!nC-5HBid%+FwjT(dxfv)yA7sP&6Nkf>Mw3o59)2e}&hy zIk9Xjw1tu2ntAKPnIHy_?aNusKe9o_o+lhiV2mL82$Uo1@_RPvuyDzN%0s3m9TeC} zGvy@NeY%kpkIjD}?%inX|5G}fM5EA$42SYmp46j{=wrBeWw^S)Mz;4P)+X_zI?mk0 z3$J%g`(OCBn84Z>xfQi1GHYew&S8$Nxec2qH?kLfPgHI@kMDAfD)oAnaPY0>{9H#Q zV;|?W-}M#mvIer1;D5+gpkx*i*?dJV+r+y1tXEcUbz1j+bjT#B*V1~nv*LCNTU-Ct zEN?H0#CA13^fL?Gg(8z;J)fiBL6|C=L_nqK2)F4Cpf%4m7-6_0(Za69sKdEX3f$C> zuzV*V)jfLw*aq2psk-Rv;Q}Td!^R@1Y2Ft=L>sxbDtBXMW29w7P{VgLP-^9xgyqBctc@4WtSpqFcQ`_0us!3P5MYK_&KPY~)cFBA%imii^%MCL5 zNyWmxP!77pyhw7Dmm2RL(z%}>H{$v9l%q-{nP4n~Q&s!O*vbRkmL`{8f~M}5&cq)@ z_LmG*FT59*%{S^#XWJk(8AnqS$7rd5xs(N}!urWoi|-#d(?Ilbk`4qHI-lv4D|ZA& zj-(wpuQAHu_&)imjhxC8o(5t=#@9Ov@4+o+%xkWP<5R--TeQ`%jMF$fXr>QgKIgtb zh%^1K5rPq{s;m$7^NrcU;;d{(;K@t_DJmuKWSReZa(YLeJ0|veXcM?!2~y#1WeIx> z?o&B$Ih_&8eDjVb+2w3i=LHhBz||y%aFEnE@#tqH-k6o2yslMBb38F*r#7TI)|qe9 z{87B{foqwF3Bg!dI&68flJPg6PqWpf3I-uf8dj>#^C>?{pMlVDa_6mc9eSUH{K;PvANdob%2T;vR)61Jh##3b0w= zDRX&6oK=v7?$Gq1w2+pzZ{!#-0RU-!=GF1W5wDu{pPy#q^=7Rn$OqMkL4tCWsDV5R zVGPdwXB}`*ZkjW8JPhiTz=B0dH*jFwfg5)!vRTSeA0c3xzS>m0vKjh8buWx7H$}}Cw#Ts?+>Ooo?8?>IOZ&5$AK0^5f zal*PRZ}yy#_>3x}hg{f>DyT{3DG>I-K2Hi&fh&yk$nY9pqb`=GgsGKMeX2QD2UF0V z{%EKVRluK(=?)kA~{_o_O(J?;eT?@Nx=Atiz; zFX>P8!~lIWr;=gp{5P_fHRd0dFuy@vYo&%)(TJp?a9Ea~Bzak37zlf9?L=AQW2CI_ zL;7z67euS84ee1h2FJnr73we4rg_FWqDIDwj{FN#49kI)UgNN$!KT`akikG9@~#}Y z{us3;rUe*<-Hnf%$C<3We{cdJAwg`=oProuTCUnZK+2h5+>@mEf=Yt!t@y{Mo?qQr z!#7uEvmsh3Q?a;qF`;^1D;&`hc!B;#b~vPx17l!^a0s9bRzH~ymN!Se9>BO?-+v#7 zfpJq5HI5*`eB>C%zlDs(@y%taTuqE%x*xo^i@I~jb4#>;j0Tp$HU~GO#fCir3fW8tNcK%>tN^AdD}9rzyhEtva}zoxH9&%_xQbE z!!?ETpPqOazbc!|po1AIiCpm=T|Sf-TJfxd-m)d2fgv1WiD|_%oA+!k1PJn7rA~wS zce(R|60Pstp)9_4wjSR)oQ! zQqmfx#65cc)`80FIhY(QXP1e~m^ed?&gcFX97m*LVU2Mt#N(^4yDz@%Iva$dI=jX! zOoI5oA^bOn@MCh*i9I}}E5cH%%%_jS^Mvf?jSsY8s-O*{B)u|9|jD@fbpvbDF@}5s1Z0#buV1<2d?^>p5B}2eRUftqL4Iph_BHs zy*cKoE$KPcMx>1!0^wSA%V|sg4Y^L5FsDk|R*q`dK>P(F45-CiU|wRB8T~xXtb;LU7FiVf+mE7*gHh@@BgXoc!2F-juSkn`&Py-HKXi+0Cic=D>gt z;S-9Ey#Q??m74+AO+d*ya&wjWNl-{Y{*gy-c>3io4pg5V_dwD2BlGfF^#4A5?tfVL zJdJ`kzwVy-L2sH23EYJ`pP|Ml1vo|h{6(Nd#txvpTQoaQX6f@ojJ!@w+mZ01+Wu8n zPk}~vB8SG0Nmr2Ujer6%Rq1i1O3nX0guV~PBp|}K4>R)?LU6cqMH4-X?S{ZWsjhv> z*I_yhzV>yV-tYrb8J1mz1nT?=dCI~hpwBjASAo40c>;X;7$Skz^^hdK!k(ZGN(fvH z_UTF@Tll*Rh1=TsV2kGnV}vsp+{A)ew}(^S%d**5+<$>66*cbPIZ!Gp(rxquy-|kk z+6&^#r-HzEYuJytSXzAz7=f3epgZF^ymPED=p~T(-4QRG1Lh>&cLJ-y4alFEN4- zs%b4i=UMM&choN^?SZ%~rO}`7Lm#{rCz?BKs!yjq%x;;gzENV{Nwc5N>Vyo;g3TwK zzyUX37sGtU7RUJCTkfB#e{QiaX~nT8;?P?lI5^Xm2MqGph=eCbnp_ba*=oEG!>#^V z(wN`(D()~;tRg~x2L};{hP+cJb zGAJjYrn-k~E*ZRzVE{vez{-vA>gmhxuj0sY^T3UhK`PQeqr8)5>R|flaD4sDsF15o zOIq6vh%ws_fHr3GZyysFY)9PLz6SxLQXh0eg`baRX@rn^^)s@MF?kEC;FD^k%+G`@ zO0}FF5#qR-%{3R0LjNWdvX^5PeJ2a`Ri7njj>uT50~W$_IuZC%lCU~t5KC4DZJ!BW zCr~`(2nPit?xx=#K5sF@bu_@qv?w&K6jM{&>5Kp8eHZ7&V?$DMb9%)JdMN4|zM66}0>H<=bHeA61d% zk2(q=5+9K%^_HBTNya@R@Hi`YwEVR;AjPu#lbp~5_Y19rQ&(C501@_E>?@8n_~Zvk z?N16kQ+P=0RlCKel{+I)-T%1+SE*;4+mm}&3w_7pFTO*BC0!acN)DO@V1$qbB!SeE ztsiuZIO+K6Dp>qT*JiqL}mNh}7y& z<Q-LG$`(6}AAdGz5>&YPd0Lg~Jbs5n}kv;$KMKn9+|V4LzcE zxQ44v8HLfQa~-VY!~QG)6HecwIKDNf_oDq*bQi&VP7~eMB{d679ns4s4LR*TYXgR= zXfS@UYL{lG6c;7LJi3Aq+euh@4PD=I!P)09D*eg)EzKkDlCMboWgj73ZBBIGcJ z2xKt20>oi<=3(&P`@)2P7sO=4(n$a=+=EbT#qq|*6yH$*2C2Q2LfFrz=P$v6m4wS! z07VMOG+6px!Re$psaXJih>~A(#tEpEQs*_q<|ujVbt50?PeV3AH|kBix@tkB$-kUz z>a%Rtr8HO(>D<-fr%pw(C6>hK7*dMS=KMG*?cBru7=%$J#XDf7k_jOCC!P1z%xhox z){WYDL{Hd)IahVb#h{%f?d%DCE2+tdV(HT>>aD&Uty+iCPCVS1=@{UF(p;hb6E{L2hhI4@CI;DZi z?-z&a*(K|)ncQU4`2FQb)>LXyiYMn^@K5|S{<2IE+lh9$JT`aZ)#A+})ay#g?vX&w ztzeVa`^?r8fE* zz?f=eKY$NcwRDJcP^|jEiB756fhQ?Hj`$#V&Q;N?3y^@j0tr_)&xLw3M*Z4n17)Ey z`_!vLb%d4oq{5c6ffN#sr_S)#vaw6tQ1W41x+z0u`Q)n2=-q47;75TgBcQ?t!DGhp z_1)_1bRCYE^DQ8u;Kr#VMzj3Ad7!48_W2PL7I^!3gd@ls7v*lfd?i=PLxSTmo?DFI zd)zbjFNx!*zRQPxFC|r>5yEWH)LZ)73v8SZ^Kc-G4-Wr^I7BBP*?SMaYFL=B5++L$ zxNu04HmQiJU&rZNLDr}TnBEMyL%cXboC^&tY<-L4yI<*Rk^BhiQW2~)r|`G|G4%}l=Aw$E^)8;HJ3E9}kw?;@P&L-+5XG) zuFoS9rn=RPqbrE1cvVlDJYzUlU+JbCfg&%8QQ?LN$W#cm{kPQUOu@LwI)CR#obTUZvzh_&87J;KUP zVoyiD?a$Fw2R<#oZ-@A>t$^h;pAXz2F$=_sW=Ub64Y%=gX41kmu!UxcO=wTjm9U|D z!|=;+D;SYFhmH2?&b7sIQ4+u{691zB&gYx;Af;ynHv{%0i28EHmloTqS(@~AH}o}bRGm39cxaK$eAD5b6I@hd=aXl>@!jukB+yA zoi5Ejnq-dWuk5wQI#Aqt0 zlf?LVF34~%X`T*m(eEzLYx~1+L#;yrJiD%>p1_=RM~&iDuV-0Hbpmd_N6WVer4! z96qX}HVk5&pBiyiO~~bZVtvJJ-F}l8$5%A;`^BB7FE#vKgmd}Y+DXX83^jx>5{EeK zKzJroF^!nzVq{2;(M;oI;%0+%c&8$w{viH%F~`Ws$d43V!|gDOhk*+ehjL9MC4)ff zsy6l**iT#HMafl*=;hS!a<)AUZf7388}q#aKnD`?Bq?&cBAi^jlt_CZfIa=clq2nK zGc9d>f0!OnvM&NamSjSdcwB~>vD9Jr<4QT5F9xi zHunOE2ONEowcPExAbQZ%=&{!>AJEcErsogW3Aad2&a34_$Fdr z*0513R(Y?Eg~#%z<&or^)jC`*1x`bn0WgNDKYW)~x@my#hR3;IMF{|=_qE(A?qh>B?GCc+H^H8 zjp@T)C-sg-iQ1`iCWo7GJ*fFjP)f`@ZO~71qPxZlz6bgZ*vH8>6)~{F02#{rigX-rF;rxzwJ=>hTWbN#t^3YGoYp zv1nOlA0QbwRtZj@G>SQuq`7ky%<80nbw~vnqUm;OsC_s)@m5-foaz*xXirQ_El6>= zHoTS>b?X(!7(0_h?Ar3JZb{ucuxDC@Qddk%yq>F-vHRU88?H;7kWFul2;omKj?$nM z5aBMT9X{Ms)^!h6-g-znEQCHj?5TRqC5#HnwTyrIcm&)cvZ8WxQOAa<<2sJJJ~@pO z2DI6vPA5UVr(pdUzb2N1qwAlnVrulwor~BH``*8?wB71$bkDMjV=49iNQNI;7-P5N z(5Vh`U1e__$<9Jn=1 zGJ<#S5(f1r2z?*b<={Ix!USz#OO}XX<6iO@7Pw$f%)HoXT77#uF52VsS-h3hEl#4B ziB>e&(;SgFyBv8{yy34^ab=C98_aO#ZC11Pv5!7*V9 z@j6_jGBNr0qg7KW&|Cf-okCKw2Nk|+NQE!T|6}1Ykrw3%8ulWSve&V2q)%ObnD1z< zqoUfA&m_(-H=jjsuEF8Z_YU7!z(GX&^3`ngDtqo5P;*extQS%BlJP4QQ7#2zG2ywe zpaM;)u0vH+rXrk=9;1zlu}fvkvwI0{z1*mJunkzOz;9wg^I@N3LyiQ$}_$lcra*NGIWU zb$RW+$vhcz`Rn}f*O1esJ1PwRh(-Y>HXvyP4S{T(e9)=#&;C8j4SlV?yR4ia( z=h+j-J0o;4*Bcw>1@#_#)H!deN&F3w;{Si51MbdpM58bmKQ$aw%f7XG$@cP^8YR0+ zD7wLdKD3O!=a2e;aM7k_E+h;{jqCYoC>o;41dF?pvQXjcrq*i0r;s2+qi|U1%qHT# z_dQRFA7hr|CvV>!juvyJ-5d#<>;JIXu#M^dji?P?R{>}S24>AD#J~*4qnag4TZR3( z>;XNb06_#lv3uv{@;-M9D|Dd4U+GQF#4R*6DR7o1r^E3HUMN4F$mc zRxBbmjilmOq3waq<7XZ-j2C??)pWWpyl=FILFRE*Fa5~&9nMHGz%SJ z^l<*XOwzutx~az1P4``QpI83#{jc+I3yxj0+PT;CUKR{5pMyfq=yraE^1*j`!~vsY zv7%M<0b|zsIVtPG$I_3jq$sZS!}SJbr{E(EX_+dN$9_I=B3Fkh!E)g{>{>z8Pi&@S zO)MCHe5|#~K*CpBBvhG)Gb&c2*B2)zD{Y(QS4m1KRLi;dtAo>s-QYw?EEvujTA;uz z`26(j$#&AUYF6mklqn2_#QHX`rUU=FNnn(38b}rGA_54+aUO6n`aUYD%7ZA`Lz*Uf z;p*W6s1{@agm+l!eC77gE1$~lvr;MPdB@|+>-H=Ccp*4_lB5lM=s!L6EEHB8ueqcR z#txG|lq(AlUL9j(hnQ%i)TsazJv%+ivW|=g@zG-hfLt`yD~=ot-JT`9Rlu?b!(qSd z#FTjovG#aUktgMn>;g6x4l~8k2ljx|+IDb5aRe@&j7=OLM_m_q;pJu~-679|GFkwO z^N}SUF|RpeN%vtfNoZvD>iHnt7$5P%QX>E{t7$5~o+BVK&|PQ{$BI00Z!Xx2KYPi*YL2jCu{hoZ2U@@q9x``bG zb17sjW5S5hu%X;H^o>FDv)lp2R{JMrTiy$(q`CP0`E{lLH7pj!y~7btNtE29_QfLr z)x_zM9T?F##TBAn2Ejcs+Gfvugi4cZOJ5c*L2j*N|+P))VFORAe zuR`!JXPh^BTl*EM7wBb;sbOeKqjMU4Tj;sJ5#qmoeNgyb}DNG_8L56DeZQn9PpU(&fts?a^z(Q*tV#3f~Zh<8O)q2GZ^bVn|1jj@r}TPa8x+@p-m|A#m@Myyyq)J#DPIN?CqK+3XEQ1d`+ zdn5z5R?CcJX;)xSn68Ws%?=}akBh>_$gjj8?=@|J9wT)E@W^j<&K@CiyAC~I9aCL6 zhy06}j2Ba{W2@M`VEVJ5yHh=07wt3eH!LFL5ue5atLf_4D*yg!BHn{JUQW0yMkSayvkKGpuW6e#ST8TB)K2XPby^F()1 z=Xts(_&jGLz7)UL5zGSFMoOW8PWCDOhlcb(4B33D7Np=s?-1MfY|reWZQ#+QGM}HL z=hn(^9~^sFb{2TzqXKh>H$DpkZ-0QJM&y&v2#O2;?P-4o@S%GCB8!ZBbyyD+5d{>H zzxjML6x{!>aM0D9z$+y0Q)l7|4YBMLq_x|Ybd_b&|Lk$`8yip~lt$d)8x|_=W0Xw| zjF6#HY9KaTkHU<>bEPYsf}T>cObgZ{pA`wTn3_=MB9sNXcAf*2D>g0Rxa}Be**DpL zC#Cg}(E&gMV|KDI%d>p!7(brm4!sykG@_1a*7*oqAiuzb;6Lk6pIhVzi^BqCqD0dW z3*TaZq6tdrGf?mrp^ZTt3#v@s3z(Im)-F2-9ZdOQ@G~wWN|X*iIP(MkC!0tsfRT_1 zix@2&3KnG7@25TM8OQXvt8WSas+G_iQuxXYSFb=KWiHZ#dG?9P$kV z{3q!IxX}s8?<~+sZqp{T^IK>5<<(_VQ>_`*bFUkB)=j6Gm4;6zQ`&GP=@DYx_GT4! zpEm@%J^VP~_N#8_-io@WKxS!F{?m<=^{Ww)};PzMsad)(yn3HRirkl&07fe|CaOHu`u4g&T9 zsx|_x>;&`vYBJh5>;=P#-m>F~l&!aD>|@knAxkGHF5@?WkQLB9;!z4$gio@=5N*WY zoV*d&EJV4UR=*GGAU6M5z;PM7))+ZCsIEe;`a(2x-?dAvP&;8CU7dV4N47r!s1Vf` zq^ARg>^@U5olyPn`wmm}2EU+)3mKuB!7sYx+ggt25e{SMo6Sbbxh2m@losbqmH7rZim zop=$)0iPGXv>aA-5{KC1ZQDe2Oq{%~SmJnB6<}a9iv_O3#YwtSa{%63p^)9l;DNMh zD3lV+eZ-DKdP3GFDZs+aXTTr~1xS({zAu;I%g|2Ia-iUoMTAuh+=vZYqu2b!{~YD- zPk*K24Ar}EYG5(V`l`6!GodB0Zr5F31c)kHZlSEO@>&7c~Q-ibULCeNQP5fy@NAy06MxL7sqb!+v8QkP3QN@t*{_N)B z)eBStqgJB3Gw*ZVF6`WejnK9(;A-3ZdGYyPQ1qgCG7BHcg*EJ&3C{nc*q>;;I`YX_g!>^^#N?wfa$$gUyr#5lzA9=c z=Hl6tIGwP(jQQAeQ|S`9i5wh@fJ=9C@qr5fe#q--A*_-?neA1R5+%z!@ zzDD~?42X$3tCcI5E^hqyZ^g&1y=~`j9%T_6RdUDaT&6%9h}5Y3hy){jGA3Zb|JGm! zU$a(W>sn`fPDk`Ht1;OV)~_JFy+R8x$-AhpmrbRP?q=3#zwjt2g~?pSp4Z_ZFI^A*>nCJ4lb z4KKnxT<~!)dc;>$c-Q>l9Qa_ZJ=Stx_yqO_mti+ucBA8$Hk`leIzP-EqaM7wSz5j)i%5`EWVI(et)i8YYzz~gF;6jls-(hI~?^Du|f z?3#X&8XQ!3$$f&cj=$#p`}3cVX*#<-Ul_cas#;_g)a=!N&#ZTJE9F6XQy3_`yK1j%}2A> z16}<%?&AZ09)_+^H@7cZ@O%1=lq=N_HTe;;Zexm49g7$%Mkn1oL_Q6g46+QKPjO3h zy*IyL+bME4Y6HkaKW`F6U%jZiW!cEkw#Y#gDnE)>j+j;nyme+Qg|DOp&#B3wi%x#HW?w}v93kazK&wZWU^c{` zl-~Cn?a6&?KS6lSkv~hgC+Qc&`%zHvz0%xK_&6`jN&I?w3$RH;e$i#gqyiuE2Lc#= z4k{Z=#p*>cqp>%r3(t?sw+olBfTzJfDhkg@tdT!5mElYtov z!cmkLA(#kARXw3m@?Wp53rZFF2zHa!mR4-+l+A0Ll=Fwq#7VUbCI1{Gdt}JhPgZr- z*{b!9p_-{>6(x1dLqZXqX;-rS!XLf#en&Nr)Peo)wko5e`FwCSLZ7YUBD-zllbE3I z1}PI%Z%dF4XHVqmYFGb2H)oDuD_{#hVxepfEI@V*-!bAq@gBwmAbL%gZXTcY+k&`> zx|SJ&@#gAs_7E=6n2O0V=~zuRrCqe`-^I~N%TsaNoH1le*&w8+(>XR}EKcJy^3?Q15Ll z>ENEAz+1u0e81GY0_KlIx$1`W%{`{3^EXT1X@rbYIR|ucxcPqxGKnZ79L< z$`jfFDoCXqvumq8f0pl>JL%AJ`o$(y@GGg(D#lDC5n;Y?%LVH5T9;eg!Cc@%&0mS^ zdu*nm!)6R{#klnw_5}@9oK#E&E;T6}6Zn}YRy}JLdQ;`G-McT#EdN$tJ*w~PPK^3i zzPW4qO|Ir&+3pW#N@xtDRq2}0%|$dW5i=F@R?TX?pW+G1znkT_XLCz0r3+EcSEYnY zMC@4Hx9EP9G*|dUZR>L?6YNBv=;AG%oRz*oMK;0JvmP03aYv9XLPK2KrAKwPsDzYb zP@oX`6dlqekO$Okn`%~mFV0(!7=0{2qAkiVsq|6dE?<$U2Y9Bekl?+0qSx;W5a;{l zjIy{I@p5#~N7Op~=^JaxD?gHKOXap$mL3xmIW&QDv3m51{vMqsN3_xC4PKQ+ZnOD_ z!u2A$kmT?2JbU^wMfd&7H|Mx(DbK^kE}x3yGxOW)JRMlMI(&V0j01HJ$9MC5VngxP zwNz)qwF`?sb$D)qSiDA`tx}{G?lr@s8lyUVYYE89u(J|3>!z_6#kY`pGw)v)n6{@3 zxT$JO`(Co@HRx4Ro1N5x6Nf@RI->NhA9pWSl-Hb7XDw_s3>OF^)GR#XfLp;9wB_-4 z+7`2=KA6ef5cE{-RgESj-rKJ5C`wOwYp@o?CBf}PTXtdjLsS2)*a{fEt5L4yZC%>m zelWO&q;N6{65@U$rWjsECY1A(xbpdyGP()nw%(VZp)20OtH(GPo&94HQFd22-vniA>U&gk zflQc^J8fKNRyJsnhxqdC9`;0G61@5d=0sm$>etFGJ-s~B?tJ~MUtc1|9Ipo^4)N*f zY)|$4WG45)A#o&$XwXqDrZ(%>=02P%z_X<7?Ta|;3+C*B z8+KjkUjd~v7b8vnuH6_cG4o5q_@N8>f#aIG!PPQnb=TCG)ri9QEg{j>V}ZNq-dp(q z>>rEpq_z_b$%YIJsT-1m^d_lKU2h1OpOKD4a}&_QgVcRW^qL&aSTkBz%>lQd3bi7g zVxV7*LTvx^SsR`F5{^Z^91|O!K^Iq`3*i=Wu+rlyR5cW^|_n=2#38^X(m5G`!AGyu5NEL zMC=SS2SAb3oiYW>J5sE1UdjktKy>`pG3rphRE_t?I?S*IA*!=~dgO{telQUFuiz(D$iqb~wXN0b`Fatm}B6_ador z>TzO3YM?1^`yIO@=Q)LCVHUD4gU;=8 zIz%aub@cJD6I+EPny{`m?Vkb2k0v2M+Wg-?dgo4gKL&0Bj!+=ITSzL#0*8e#i5|Ua z^HEj>{R&qX+)T^IdoL#;9$kcb|epTLf zJ5)%>V^ZW2h!B$xbC{UrdUMhv^^ngeL%}=?A@$De?NjaH_HuLw=lMOK1)7bu-DaiP zJMvC}QA-2ed014ts~yHPniAqw%e%i-b;-xT#>w$*GPeZ^BVEVE)o^@&GW7K9pdx9( zj;LZ4n**03t(^B_gt~Vaq^&SmO%26a3bB)t2>Vi7?B`A`BIkqca z3dXVDVI#TITLQPqfbqUrdGZO_tLN)IKKw;K0Bk63p5IX8X25eL+i~Ie#IwpkqjVx3 zIvFzG=-`MdYC7J_&RO*Se0XrK=Uqv9P4xA4^QEjgK(()Ay+N8GE-x=nT|W5{o>Z&{ z40z@0Fk^%;2VdEy;*#eL(iOJBEy5^@_l&iRF5Q{(dnk$6Q zOyADygGea&b$ufA(?xcs31^RI-;jm9XhDk9HjdDoa{o@2>;3Uu%_Hhd|0WBAh_rG| z-mfl8iGS0_sr!j9BXu`;+3^8zr`MYFpLf6?S+YIzU+Z4dk(gxs*-cr$GZMbb4jssR z=;*3)ELXf{SDOPDxNy4t!$y_eiM%UY_94s>6bD8}v4}i$r2a~F?TNrXyI7BCdq=y8~8 zuXz*1ntR*C{BCH6@jQK@9J@U z0>GsU(SJU8Iz?%n75W$Ir$hwffIybC%XoGBB&V@l^0}(0@B%=NGXX(vk3rEaS~f^t zx@1YV+Y6=ZZc241?IBL=%fTE<|H?e#Jo#4Yw$nerUfX41=%EMVyM>^U);D$H|7yiC z679x6xuNms7>Yik#Sv-BKW?H8D7^Tw&+&o9T#93bpsyRbo7nZyB>tO4mI@Cyh$WHzA z+F|k7i?nAY7&8r==w}QCup#5o<#(gZ8V_VoO+4@yQ&@3gEt+`>`W+YxtW%`J@knU5 z&A)XarxyZm#+vZ|LazL!EuJ1QKS@bXcY^Bq*X=AmpXo2Gnh!};ct5^;-vvq$m%{}B zu7be$|5jM_wBRvsH#Gmc?yz{%G{~v|?=2wBR1$d2bxKL@h->^)zq2ef9%q%($9*3k zqg)>FY@Fa10CkXyk3F*W_Cv)TI=knz9&f(>_bPvl5%XVn7o;lxy;@#+&#Ka`urD*} zrkNt`FGWkTy*GOZw;DjJ$7{C@p?T&t)>m`;L7ga+i54El=~N7uKJ*dq zb|INiL_~ysgf#ns&2xNvt6KE)7uI?*g1GYc&wJYi09H9dl(j&~&*k4Hd^zbzydNx4 zcnbJ*;+_s1j{jp9o}guta!yo=*KbX9i;sHZc1kdJb7o84@|jN+g1S^zE5H`(3+=M` zPnpt?y>mMrk#>}7a07@TdjqWAv!Ipl2jJulq>5gcNGJ0LC^Ho&<}smo;qTWz{?6U_ zqhHTI2FmP^;;*O80G5kEqAd=k$(x;YrzQ*=?ho)}zx!^tyR%uJU%LxELs*O3GgvhK zovOL2sef4LB9Klcl9xME17zV1yVIiQpbd2c==r*#4M<=E3fIBNBd^9TOpGn4#m}Ln zNf7J^Q3`>eBw=)bGS?_oB_}tO>2~zYg8VHYg;p_1`K>yGfP1LzMM}oMWr-IF{8mh(Rb?Xdt`?F(Ke3I08mQ8=`d15aIZQG4j~>7Z7gUzs!TSJQI}V+E@Je zXX(GuIPns-J0v$eJqBbTdAyFXb_zwZ~huf#U#KTi?c8G zK0>nrGluL~k;V@FEUCBWuf05+WTS~&_i!i>7YD0eRYeN@T=_vQN`A5iILwn|lA~@G zjnfZLU%$+XRBDf>S`_F|sN;e@9nV-fLH;jvqmXZA!jN@54amV6NXX~Q1xH2(YqW_} zk}Iw7g%-u&$$}qYkbz|)jjEtkjRWr%UBvo?zlVQf{1C#AzHoXHN>9YT_cvZ)N1nfa z5-CVf4bds!yA>+upl=5VVf|cfcmaea$AG-Pmc*!=F7!TMcN?mYA=UQ71(2gLkpJ;{ zrO`!qFsRSU{}vLk!)2JY4eBCNkN7}=+X|=6o8(&sTBLntA+WSo4s$P_0v(|Y)Nu20 z&4g(l90IZ)Hq_|tSfv%^ADs7 z51&4~4X%5=lWH%4x$J#IjIq{U(KW=CW7|@Z-7E>Sg8%V(4^7mPj!K$8uyty z1)Br?T^G$vb%q`Qv|SR$jr1Y;poJ->i{Mf$UoRK}+RUENEt=y>7gPVTNLzHhVS^Mi zIA@N*lLQ*mN`Ql{G?+35b2)XsQb@i^5n$qJOXhd9v~cFGNJ&7@zr31=QGQem}v zKO(M1bZ@@U06`yA9zv%nq$=oF=L!=>pYH)lTZXj~oM08A)!_S)YqKhhl4ZJ=ro_nOkN(CxHQix_wn1MrFhmf$a z=ln1)U@PN+0w5y#Na^G`6j2AgevOSl_x8TBGVclr`f@@T9!=@HBoV+ziUK(JeSWc; z-F#oM1rt!4QkB%$^@Kaw-s7gwe;V4Zu+GKjw$=r2|CALZ_l@BA`b+x3w8cf(Te-<45+D0PU-F;ny!>Lh>Qqn5VDVz z!8KUjNL3RZvn=3vRSmKt%4C^KcjZHYMr5g`6H&TW&mpis8vE3vEBJnS%X;@rhHz#n zXJd9o6~-NW{J-Oej~?G2#MzniDvM>8IyNBS4LtIp$BmDVAZr+=Kg3044$+71kd;NWd-<|MHl$GX(bu2rppXE5 z4#-cL%7K1dGp}AL&|M`Dr1P{SlV`vlK6O{b2UbVq`&5ekvlX6ZoTz$oon@o;8p%fb zVA2)jHqO)e7o(96k-okx$CWB#{MN0gpP|lii(B%E!}8E8$balUrCi^?TmgkYMLhI} zrI(Yr>cp2x=S|LIkJZpIw;5{+j7b0|k?{5P1^7_8z+~zRtH5pt)vsmw#E! zdK4N0idBWYubkmQ`KOx2ZLG<*o^Yzo!5*Pe8Wr)IaM1eq7-za`SDw=vz+)Kx$73M< zfD35M*%zu$`7aO>5uaUWIhG$cjb8HL8lPG%LPg~Gu%(EKgd)uZ;cUx*-i3^R`smhX zzt~^`Y8r+kyb)vI4DK^&mTJhgxyC+$&W^p}GUJ-?env@0y9 z@yj?70;?cqmK^HQFLS_L12I5F8oPxKe|V*U>Plkcs`&mtFNv(acl1#QFG&Ph$9bDW zxN)PI3Y954S%UG&COq|Pp6Y8~)cr9d({ED@Y;A389*X`ttk@KLM(Ez(!l%dX1@HO_ zlE*WNx7NB1iQM~K^KZryHAo3hCp$QHimwXn3VXN7$-X6} zL`se*I=bjW9KJ)?JHsaIZx4(U-SlEFb=DqDS-d2dGa<`%#1HW~^lg=2hByMX3al<)i!(X2Q% z-jU_l`X{?iWfGN{G|WVbw93NMM96P0Mno8FhsqBqV6WQF4i|Yp+G%;MjP*b?9&<$& zVJVV1pplyjeau&6j&GbwFp0-gC@06`%aihcjgxuWgD3S#*+CfJfS3EUMI5pG>Y<*< zvxgJsvfD97Le>YE?<*^9yN=xFKq1J#Y6I+G8Gko5OeM&23`b(gSDUfa7Sdwu$SxCd z;4vD+s*+jKYH~=3LLr*H7otkl#%&Ptxa7@w(D>x44gUW%zpB z`*)Tb0LiOjTshit!alwSm z9hHESbH6X2e4A{jtWmNHPjs5LZDd4meoe>b&7H5FLM3Gg164NYg(@(=%Uh+Vr`I*Yq)2|u{GCFQsVMhhb z;K5OQGRuINCllaA#xl9eC{aP_0geigt8Al*RLsA-Aqr$&qzH0f*1eMf(pU|Lj2*o4 zOVK%~mfI(luP#N{r@C2AJJRob6w+%t)Ve7Ndavg`G?7AB-Sk(SaSa9*k*lYG!gWJR z-fnZqAF!8+cy3g@ymTZyMH;d& z1#$iHET_r_OpipXK_d3z1zAM>Q%Xx0_WVjI^LU$!-cXoqDC6auh<~pN`FjR4h^} zbFdgTzMsElAu?hcPupnHfY~C^qScCJR>_(N5AB$g$;*Lc!?tt1#xz6e`|!~IfN1&t zK*JmogR-SL=-=Smsg%N=!?3_8XAqAMntxa1(b-Z10zW_-U#L0sTjCFIMJWd$iT>EC zS+5=o()}DntZ`I30~1nUBx28rE&Xh-DN=(oHlJpbzw z;DYxf)sM#ca4F9O#o-WT)V+m@$o`&*ZXROCyolRgw8kO<|#m8 zdM?&!LN)P6_JC9*51XRr&WV`>)IbNN#~4y}Vrg}HyhTJZa$J}qGxa;OwRGlu_x+`jcS`$PADJVH7U1MWbt z`zp!suRv|;bUEV@HmF_}JiICWZZK-y0bskE&!(@8BS6hz2of*`w#q?55Ha$M^lC!r z393_ooK^A}{=FFqoeZ}r-eTpV7F?fih*<>?&8ms^!5fU4dti_XHQPZy|B?If96o41 z1G$A{)h#iY#3Y0vDVG;_GySVNpw(INrlleXhfjYT6euF30aKMF9+wo?Hr9PZ@BIsE zF^{JSct=>&PgLRfFg7FLhLVMdMn${VJ9^Ibs9EX2dwcA-&F+)HlVtr8b|h0EnwHhN zAv;pQ5zaEu>UOCP3wnq28*0Ft^h7FfyI28h9s&#|k1QZ{mZFZ1?YD(mC@t?tu9rwi zu^P;V7ERLqKHd))1P|G()w=@0TJc>o@Rz-KX(^hx&q}1vtC=E;DL&@@&}K=eLZA*Z zdb5=<7`X{Mnl*bnaNR)b$@P5JimQ{1mhU0)`#g7pkam%tINoP0CS!=<}rCQ3DIaYhj?7j43|ieG?ZS1%!RSrVW>O=d^qs?Sa2{=*?cRTpxLYq*{dR zjEpU?RXOkgrPez(#~Ejlg*%V3(8RGGrMQ~mJ z(?Y|o2SK!3gc?^HbJ(msPfE8&#p}II%T0z_#v7ex5YB?=y4hkaHrwTycbpl2sdHGW z>M=_va<}5Gj}J%FE_GUcdo!;r@Necm>It0T8r~R`FCyrB-wE9|nJdnz+v2(d@95eT zZDP7vJd2hu*?syCR+i->n~=CipbX|;oSsG_e-&h!FZB?tL*Q2YSSQe?N^YKJs9adf z@0xGBWGh$PJ?P=O7%!)>ll|IarH~$1l2@VgsTq4FWdnTGdewWEFKA{LD$(1JkxOOG zTBqEpKPakJQjHt$ds-;0UBiMaw+|KK&@kdpew2XHRlh6 zN}3Znz`5uKBdeUYn67PiSwOCU!_5wJOMXUJpTO3yp>_6(Yo2tahr6Lyr6S(`EeBVW zC1`E8v}SyCt;*t%?4+IJ^Pvvk(83533WGJRcYrRVNuupwAc%RHBBM{%$0|^MKN@Wr z$1Fahmcz7a?@3;CdZ3ie$~`^?j=iHM>XXcYnUmfgg8SB1pP>w5c9qqUC4mf^n1Xeu z87o6^I>x#JYifKhs67;F>DtdDFT z{_{90{;`^xI*y9p2ats4tL0ktH@Wx|Y{KSXU&}ZS|1$GSHOIUt;-hj%*VepfZy$&% z{tGi#pANH+QJ8n4R?RSO@>p`_XYW9t{R8It3v6V4g6hZCCNVO*h{d5BW~Nl8)zI*8CNCCT~}MvO*j0SVP#aFE1e$7dqiu!(MFH!a$|L zpaVZkP^v1R3+$j9)S}V;fU#>Fg})QYGwFs8=VvQu;1o=3idSj!srYa9%l#pAF$tMB7JG_M*gNDuDKi`C2A2{HorHWuK!)GR|;R!IYS z()x7YTMPNioki-O9Wzi50{LBio3+CiQXS*ReL4_cS@i{8gJ3H@NXxP3;l<(2nfnzC`)A^Q7UV^p~&UJY`IKY+W8BhpBDA)=$NM4r#WSrS2d|`Pll;S42hKxJPi3uh z^@F7czXa&u?8wYYS88hOQ{yboJT3ZN?ky`9p^zV{lg4 z7Bxwg%iaPZ6>L>@?INYH&BhQ!EubQ9^l&d7CrUMHYHJn@2s_w&80}}I%T#?^;|1DZ zwcjwp=*GSY#UZE0!&svUYE014vX$iEU~N8Ce`YrtaqYdqn^nMLe|x?bqK1FNF$d>0 znmDbw_Q3Q5FS2Tnm3a;By&0{yombM99r@N`xNgRqNcSOpV99Pnjl+(_O!6u5M!asK z8?fE|=D)~IIORHaGNH)PGSMS9_O&Y*tn5=wbbxt$ww-__tF8qpu!^gnaIuw!V~%)hVz;yyJA17wLAKE!WSC zE{N3>+4}N4a(opk!a+s4yAV$iyQ9iJ7lPAytgSLgd{Jwyaa@1On#jDT<2HqRU zcyoXn({3xE@(*>wx%n?j!$4jvuMi^3_s~$ut6&zoXv?;Na-;l*Mg57b4;oC9^$S+b z*CNzenH-+EMPRV|@%#k2n;94{O8-zVPyH3q;Yq`SnJ<0W5qM1pRJl1s2QPneAQJm_gm(%Nv0PhXKqWc;eLTVM>agg zh&5nlWf1BJ8)u18woA{v9i`3`#<-_&KsvHnhA8EISI@!qqHJ#;%P(?9oQoKT`*nR> zw!n;nF{l&Ml+>rUS!0eXiO;;9+z1OE-BjD0O57tJE0$XJ`~BpSD6>#`x0%oWbT!=X z`Z-iTXVuRI_%l}h4C_C4K*$^ZkI6!un6Y#$0;Mtk sgQfxQ3%UO@DUJX6{r9~3kow33<_1IY)xxNUwHWxZqdU;fQ9Td+2S=!}{{R30 literal 0 HcmV?d00001 diff --git a/doc/schema/RuleEngine.png b/doc/schema/RuleEngine.png deleted file mode 100644 index 3e891c69ef217bf35e797c769105b5144155f526..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 97335 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 z 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 diff --git a/doc/schema/RuleEngine.svg b/doc/schema/RuleEngine.svg deleted file mode 100644 index f597ee9..0000000 --- a/doc/schema/RuleEngine.svg +++ /dev/null @@ -1,596 +0,0 @@ - - - - - - -UmlClassDiagram - - - -0 - -<<Interface>> -IERC1404 -RuleEngine.sol - -External: -     detectTransferRestriction(_from: address, _to: address, _amount: uint256): uint8 -     messageForTransferRestriction(_restrictionCode: uint8): string - - - -1 - -<<Interface>> -IERC1404EnumCode -RuleEngine.sol - - - -2 - -<<Enum>> -REJECTED_CODE_BASE -RuleEngine.sol - -TRANSFER_OK: 0 -TRANSFER_REJECTED_PAUSED: 1 -TRANSFER_REJECTED_FROM_FROZEN: 2 -TRANSFER_REJECTED_TO_FROZEN: 3 - - - -2->1 - - - - - -3 - -<<Interface>> -IAccessControl -RuleEngine.sol - -External: -     hasRole(role: bytes32, account: address): bool -     getRoleAdmin(role: bytes32): bytes32 -     grantRole(role: bytes32, account: address) -     revokeRole(role: bytes32, account: address) -     renounceRole(role: bytes32, callerConfirmation: address) -Public: -    <<event>> RoleAdminChanged(role: bytes32, previousAdminRole: bytes32, newAdminRole: bytes32) -    <<event>> RoleGranted(role: bytes32, account: address, sender: address) -    <<event>> RoleRevoked(role: bytes32, account: address, sender: address) - - - -4 - -<<Abstract>> -Context -RuleEngine.sol - -Internal: -    _msgSender(): address -    _msgData(): bytes -    _contextSuffixLength(): uint256 - - - -5 - -<<Interface>> -IERC165 -RuleEngine.sol - -External: -     supportsInterface(interfaceId: bytes4): bool - - - -6 - -<<Interface>> -IRuleEngineOperation -RuleEngine.sol - -External: -     setRulesOperation(rules_: address[]) -     rulesCountOperation(): uint256 -     ruleOperation(ruleId: uint256): address -     rulesOperation(): address[] - - - -7 - -<<Interface>> -IRuleEngineValidation -RuleEngine.sol - -External: -     detectTransferRestrictionValidation(_from: address, _to: address, _amount: uint256): uint8 -     validateTransferValidation(_from: address, _to: address, _amount: uint256): (isValid: bool) - - - -8 - -<<Interface>> -IRuleEngineValidationCommon -RuleEngine.sol - -External: -     setRulesValidation(rules_: address[]) -     rulesCountValidation(): uint256 -     ruleValidation(ruleId: uint256): address -     rulesValidation(): address[] - - - -9 - -<<Interface>> -IRuleOperation -RuleEngine.sol - -External: -     operateOnTransfer(_from: address, _to: address, _amount: uint256): (isValid: bool) - - - -10 - -<<Abstract>> -RuleEngineInvariantStorage -RuleEngine.sol - -Public: -   RULE_ENGINE_OPERATOR_ROLE: bytes32 -   TOKEN_CONTRACT_ROLE: bytes32 - -Public: -    <<event>> AddRule(rule: address) -    <<event>> RemoveRule(rule: address) -    <<event>> ClearRules(rulesRemoved: address[]) - - - -11 - -<<Abstract>> -ERC2771Context -RuleEngine.sol - -Private: -   _trustedForwarder: address - -Internal: -    _msgSender(): address -    _msgData(): bytes -    _contextSuffixLength(): uint256 -Public: -    constructor(trustedForwarder_: address) -    trustedForwarder(): address -    isTrustedForwarder(forwarder: address): bool - - - -11->4 - - - - - -12 - -<<Abstract>> -ERC165 -RuleEngine.sol - -Public: -    supportsInterface(interfaceId: bytes4): bool - - - -12->5 - - - - - -13 - -<<Abstract>> -RuleInternal -RuleEngine.sol - -Public: -   _ruleIsPresent: mapping(address=>bool) - -Internal: -    _setRules(rules_: address[]) -    _addRule(_rules: address[], rule_: address) -    _removeRule(_rules: address[], rule_: address, index: uint256) -    _getRuleIndex(_rules: address[], rule_: address): (index: uint256) - - - -13->10 - - - - - -14 - -<<Interface>> -IERC1404Wrapper -RuleEngine.sol - -External: -     validateTransfer(_from: address, _to: address, _amount: uint256): (isValid: bool) - - - -14->0 - - - - - -14->1 - - - - - -15 - -<<Abstract>> -MetaTxModuleStandalone -RuleEngine.sol - -Public: -    constructor(trustedForwarder: address) - - - -15->11 - - - - - -16 - -<<Interface>> -IRuleEngine -RuleEngine.sol - -External: -     operateOnTransfer(_from: address, _to: address, _amount: uint256): (isValid: bool) - - - -16->14 - - - - - -17 - -<<Interface>> -IRuleValidation -RuleEngine.sol - -External: -     canReturnTransferRestrictionCode(_restrictionCode: uint8): bool - - - -17->14 - - - - - -18 - -<<Abstract>> -AccessControl -RuleEngine.sol - -Private: -   _roles: mapping(bytes32=>RoleData) -Public: -   DEFAULT_ADMIN_ROLE: bytes32 - -Internal: -    _checkRole(role: bytes32) -    _checkRole(role: bytes32, account: address) -    _setRoleAdmin(role: bytes32, adminRole: bytes32) -    _grantRole(role: bytes32, account: address): bool -    _revokeRole(role: bytes32, account: address): bool -Public: -    <<modifier>> onlyRole(role: bytes32) -    supportsInterface(interfaceId: bytes4): bool -    hasRole(role: bytes32, account: address): bool -    getRoleAdmin(role: bytes32): bytes32 -    grantRole(role: bytes32, account: address) <<onlyRole>> -    revokeRole(role: bytes32, account: address) <<onlyRole>> -    renounceRole(role: bytes32, callerConfirmation: address) - - - -18->3 - - - - - -18->4 - - - - - -18->12 - - - - - -19 - -<<Struct>> -RoleData -RuleEngine.sol - -hasRole: mapping(address=>bool) -adminRole: bytes32 - - - -18->19 - - - - - -19->18 - - - - - -20 - -<<Abstract>> -RuleEngineOperation -RuleEngine.sol - -Internal: -   _rulesOperation: address[] - -Internal: -    _clearRulesOperation() -    _removeRuleOperation(rule_: address, index: uint256) -    _operateOnTransfer(_from: address, _to: address, _amount: uint256): (isValid: bool) -External: -    rulesCountOperation(): uint256 -    getRuleIndexOperation(rule_: IRuleOperation): (index: uint256) -    ruleOperation(ruleId: uint256): address -    rulesOperation(): address[] -Public: -    setRulesOperation(rules_: address[]) <<onlyRole>> -    clearRulesOperation() <<onlyRole>> -    addRuleOperation(rule_: IRuleOperation) <<onlyRole>> -    removeRuleOperation(rule_: IRuleOperation, index: uint256) <<onlyRole>> - - - -20->6 - - - - - -20->9 - - - - - -20->13 - - - - - -20->18 - - - - - -21 - -<<Abstract>> -RuleEngineValidationCommon -RuleEngine.sol - -Internal: -   _rulesValidation: address[] - -Internal: -    _clearRulesValidation() -    _removeRuleValidation(rule_: address, index: uint256) -External: -    rulesCountValidation(): uint256 -    getRuleIndexValidation(rule_: IRuleValidation): (index: uint256) -    ruleValidation(ruleId: uint256): address -    rulesValidation(): address[] -Public: -    setRulesValidation(rules_: address[]) <<onlyRole>> -    clearRulesValidation() <<onlyRole>> -    addRuleValidation(rule_: IRuleValidation) <<onlyRole>> -    removeRuleValidation(rule_: IRuleValidation, index: uint256) <<onlyRole>> - - - -21->8 - - - - - -21->13 - - - - - -21->17 - - - - - -21->18 - - - - - -22 - -<<Abstract>> -RuleEngineValidation -RuleEngine.sol - -Public: -    detectTransferRestrictionValidation(_from: address, _to: address, _amount: uint256): uint8 -    validateTransferValidation(_from: address, _to: address, _amount: uint256): bool - - - -22->1 - - - - - -22->2 - - - - - -22->7 - - - - - -22->13 - - - - - -22->17 - - - - - -22->18 - - - - - -22->21 - - - - - -23 - -RuleEngine -RuleEngine.sol - -Public: -   VERSION: string - -Internal: -    _msgSender(): (sender: address) -    _msgData(): bytes -    _contextSuffixLength(): uint256 -External: -    messageForTransferRestriction(_restrictionCode: uint8): string -    operateOnTransfer(from: address, to: address, amount: uint256): (isValid: bool) <<onlyRole>> -Public: -    constructor(admin: address, forwarderIrrevocable: address, tokenContract: address) -    detectTransferRestriction(_from: address, _to: address, _amount: uint256): uint8 -    validateTransfer(_from: address, _to: address, _amount: uint256): bool -    hasRole(role: bytes32, account: address): bool - - - -23->2 - - - - - -23->11 - - - - - -23->15 - - - - - -23->16 - - - - - -23->17 - - - - - -23->18 - - - - - -23->20 - - - - - -23->22 - - - - - diff --git a/doc/schema/classDiagram.svg b/doc/schema/classDiagram.svg index f407eb7..1c87a90 100644 --- a/doc/schema/classDiagram.svg +++ b/doc/schema/classDiagram.svg @@ -4,1005 +4,1455 @@ - - + + UmlClassDiagram - + 0 - -RuleEngine -src/RuleEngine.sol - -Internal: -    _msgSender(): (sender: address) -    _msgData(): bytes -    _contextSuffixLength(): uint256 -External: -    messageForTransferRestriction(_restrictionCode: uint8): string -    operateOnTransfer(from: address, to: address, amount: uint256): (isValid: bool) <<onlyRole>> -Public: -    constructor(admin: address, forwarderIrrevocable: address, tokenContract: address) -    detectTransferRestriction(_from: address, _to: address, _amount: uint256): uint8 -    validateTransfer(_from: address, _to: address, _amount: uint256): bool - - - -5 - -<<Interface>> -IRuleValidation -src/interfaces/IRuleValidation.sol - -External: -     canReturnTransferRestrictionCode(_restrictionCode: uint8): bool - - - -0->5 - - - - - -6 - -<<Abstract>> -MetaTxModuleStandalone -src/modules/MetaTxModuleStandalone.sol - -Public: -    constructor(trustedForwarder: address) - - - -0->6 - - - - - -8 - -<<Abstract>> -RuleEngineOperation -src/modules/RuleEngineOperation.sol - -Internal: -   _rulesOperation: address[] - -Internal: -    _clearRulesOperation() -    _removeRuleOperation(rule_: address, index: uint256) -    _operateOnTransfer(_from: address, _to: address, _amount: uint256): (isValid: bool) -External: -    rulesCountOperation(): uint256 -    getRuleIndexOperation(rule_: IRuleOperation): (index: uint256) -    ruleOperation(ruleId: uint256): address -    rulesOperation(): address[] -Public: -    setRulesOperation(rules_: address[]) <<onlyRole>> -    clearRulesOperation() <<onlyRole>> -    addRuleOperation(rule_: IRuleOperation) <<onlyRole>> -    removeRuleOperation(rule_: IRuleOperation, index: uint256) <<onlyRole>> - - - -0->8 - - - - - -9 - -<<Abstract>> -RuleEngineValidation -src/modules/RuleEngineValidation.sol - -Public: -    detectTransferRestrictionValidation(_from: address, _to: address, _amount: uint256): uint8 -    validateTransferValidation(_from: address, _to: address, _amount: uint256): bool - - - -0->9 - - + +<<Interface>> +IERC3643Pause +RuleEngine.sol + +External: +     paused(): bool +     pause() +     unpause() 1 - -<<Interface>> -IRuleEngineOperation -src/interfaces/IRuleEngineOperation.sol - -External: -     setRulesOperation(rules_: address[]) -     rulesCountOperation(): uint256 -     ruleOperation(ruleId: uint256): address -     rulesOperation(): address[] + +<<Interface>> +IERC3643ERC20Base +RuleEngine.sol + +External: +     setName(name: string) +     setSymbol(symbol: string) 2 - -<<Interface>> -IRuleEngineValidation -src/interfaces/IRuleEngineValidation.sol - -External: -     detectTransferRestrictionValidation(_from: address, _to: address, _amount: uint256): uint8 -     validateTransferValidation(_from: address, _to: address, _amount: uint256): (isValid: bool) + +<<Interface>> +IERC3643BatchTransfer +RuleEngine.sol + +External: +     batchTransfer(tos: address[], values: uint256[]): (success_: bool) 3 - -<<Interface>> -IRuleEngineValidationCommon -src/interfaces/IRuleEngineValidation.sol - -External: -     setRulesValidation(rules_: address[]) -     rulesCountValidation(): uint256 -     ruleValidation(ruleId: uint256): address -     rulesValidation(): address[] + +<<Interface>> +IERC3643Base +RuleEngine.sol + +External: +     version(): (version_: string) 4 - -<<Interface>> -IRuleOperation -src/interfaces/IRuleOperation.sol - -External: -     operateOnTransfer(_from: address, _to: address, _amount: uint256): (isValid: bool) + +<<Interface>> +IERC3643EnforcementEvent +RuleEngine.sol + +Public: +    <<event>> AddressFrozen(account: address, isFrozen: bool, enforcer: address, data: bytes) + + + +5 + +<<Interface>> +IERC3643Enforcement +RuleEngine.sol + +External: +     isFrozen(account: address): (isFrozen_: bool) +     setAddressFrozen(account: address, freeze: bool) +     batchSetAddressFrozen(accounts: address[], freeze: bool[]) + + + +6 + +<<Interface>> +IERC3643ERC20Enforcement +RuleEngine.sol + +External: +     getFrozenTokens(account: address): (frozenBalance_: uint256) +     freezePartialTokens(account: address, value: uint256) +     unfreezePartialTokens(account: address, value: uint256) +     forcedTransfer(from: address, to: address, value: uint256): (success_: bool) 7 - -<<Abstract>> -RuleEngineInvariantStorage -src/modules/RuleEngineInvariantStorage.sol - -Public: -   RULE_ENGINE_OPERATOR_ROLE: bytes32 -   TOKEN_CONTRACT_ROLE: bytes32 - -Public: -    <<event>> AddRule(rule: address) -    <<event>> RemoveRule(rule: address) -    <<event>> ClearRules(rulesRemoved: address[]) - - - -8->1 - - + +<<Interface>> +IERC3643Mint +RuleEngine.sol + +External: +     mint(account: address, value: uint256) +     batchMint(accounts: address[], values: uint256[]) - - -8->4 - - + + +8 + +<<Interface>> +IERC3643Burn +RuleEngine.sol + +External: +     burn(account: address, value: uint256) +     batchBurn(accounts: address[], values: uint256[]) + + + +9 + +<<Interface>> +IERC3643ComplianceRead +RuleEngine.sol + +External: +     canTransfer(from: address, to: address, value: uint256): (isValid: bool) + + + +10 + +<<Interface>> +IERC3643IComplianceContract +RuleEngine.sol + +External: +     transferred(from: address, to: address, value: uint256) 11 - -<<Abstract>> -RuleInternal -src/modules/RuleInternal.sol - -Public: -   _ruleIsPresent: mapping(address=>bool) - -Internal: -    _setRules(rules_: address[]) -    _addRule(_rules: address[], rule_: address) -    _removeRule(_rules: address[], rule_: address, index: uint256) -    _getRuleIndex(_rules: address[], rule_: address): (index: uint256) - - - -8->11 - - + +<<Interface>> +IERC1404 +RuleEngine.sol + +External: +     detectTransferRestriction(from: address, to: address, value: uint256): uint8 +     messageForTransferRestriction(restrictionCode: uint8): string - - -9->2 - - + + +12 + +<<Interface>> +IERC1404Extend +RuleEngine.sol + +External: +     detectTransferRestrictionFrom(spender: address, from: address, to: address, value: uint256): uint8 + + + +12->11 + + - - -9->5 - - + + +13 + +<<Enum>> +REJECTED_CODE_BASE +RuleEngine.sol + +TRANSFER_OK: 0 +TRANSFER_REJECTED_PAUSED: 1 +TRANSFER_REJECTED_FROM_FROZEN: 2 +TRANSFER_REJECTED_TO_FROZEN: 3 +TRANSFER_REJECTED_SPENDER_FROZEN: 4 +TRANSFER_REJECTED_FROM_INSUFFICIENT_ACTIVE_BALANCE: 5 + + + +13->12 + + - - -10 - -<<Abstract>> -RuleEngineValidationCommon -src/modules/RuleEngineValidationCommon.sol - -Internal: -   _rulesValidation: address[] - -Internal: -    _clearRulesValidation() -    _removeRuleValidation(rule_: address, index: uint256) -External: -    rulesCountValidation(): uint256 -    getRuleIndexValidation(rule_: IRuleValidation): (index: uint256) -    ruleValidation(ruleId: uint256): address -    rulesValidation(): address[] -Public: -    setRulesValidation(rules_: address[]) <<onlyRole>> -    clearRulesValidation() <<onlyRole>> -    addRuleValidation(rule_: IRuleValidation) <<onlyRole>> -    removeRuleValidation(rule_: IRuleValidation, index: uint256) <<onlyRole>> - - - -9->10 - - + + +14 + +<<Interface>> +IAccessControl +RuleEngine.sol + +External: +     hasRole(role: bytes32, account: address): bool +     getRoleAdmin(role: bytes32): bytes32 +     grantRole(role: bytes32, account: address) +     revokeRole(role: bytes32, account: address) +     renounceRole(role: bytes32, callerConfirmation: address) +Public: +    <<event>> RoleAdminChanged(role: bytes32, previousAdminRole: bytes32, newAdminRole: bytes32) +    <<event>> RoleGranted(role: bytes32, account: address, sender: address) +    <<event>> RoleRevoked(role: bytes32, account: address, sender: address) - - -9->11 - - + + +15 + +<<Library>> +Comparators +RuleEngine.sol + +Internal: +    lt(a: uint256, b: uint256): bool +    gt(a: uint256, b: uint256): bool - - -10->3 - - + + +16 + +<<Abstract>> +Context +RuleEngine.sol + +Internal: +    _msgSender(): address +    _msgData(): bytes +    _contextSuffixLength(): uint256 - - -10->5 - - + + +17 + +<<Library>> +Panic +RuleEngine.sol + +Internal: +   GENERIC: uint256 +   ASSERT: uint256 +   UNDER_OVERFLOW: uint256 +   DIVISION_BY_ZERO: uint256 +   ENUM_CONVERSION_ERROR: uint256 +   STORAGE_ENCODING_ERROR: uint256 +   EMPTY_ARRAY_POP: uint256 +   ARRAY_OUT_OF_BOUNDS: uint256 +   RESOURCE_ERROR: uint256 +   INVALID_INTERNAL_FUNCTION: uint256 + +Internal: +    panic(code: uint256) - - -10->11 - - + + +18 + +<<Library>> +SlotDerivation +RuleEngine.sol + +Internal: +    erc7201Slot(namespace: string): (slot: bytes32) +    offset(slot: bytes32, pos: uint256): (result: bytes32) +    deriveArray(slot: bytes32): (result: bytes32) +    deriveMapping(slot: bytes32, key: address): (result: bytes32) +    deriveMapping(slot: bytes32, key: bool): (result: bytes32) +    deriveMapping(slot: bytes32, key: bytes32): (result: bytes32) +    deriveMapping(slot: bytes32, key: uint256): (result: bytes32) +    deriveMapping(slot: bytes32, key: int256): (result: bytes32) +    deriveMapping(slot: bytes32, key: string): (result: bytes32) +    deriveMapping(slot: bytes32, key: bytes): (result: bytes32) - - -11->7 - - + + +19 + +<<Library>> +StorageSlot +RuleEngine.sol + +Internal: +    getAddressSlot(slot: bytes32): (r: AddressSlot) +    getBooleanSlot(slot: bytes32): (r: BooleanSlot) +    getBytes32Slot(slot: bytes32): (r: Bytes32Slot) +    getUint256Slot(slot: bytes32): (r: Uint256Slot) +    getInt256Slot(slot: bytes32): (r: Int256Slot) +    getStringSlot(slot: bytes32): (r: StringSlot) +    getStringSlot(store: string): (r: StringSlot) +    getBytesSlot(slot: bytes32): (r: BytesSlot) +    getBytesSlot(store: bytes): (r: BytesSlot) - - -12 - -RuleConditionalTransfer -src/rules/operation/RuleConditionalTransfer.sol - -Internal: -    _cancelTransferRequest(requestId_: uint256) -    _validateBurnMint(_from: address, _to: address): (isValid: bool) -    _validateApproval(key: bytes32): (isValid: bool) -    _msgSender(): (sender: address) -    _msgData(): bytes -    _contextSuffixLength(): uint256 -External: -    canReturnTransferRestrictionCode(_restrictionCode: uint8): bool -    messageForTransferRestriction(_restrictionCode: uint8): string -Public: -    constructor(admin: address, forwarderIrrevocable: address, ruleEngineContract: IRuleEngine, options_: OPTION) -    operateOnTransfer(_from: address, _to: address, _amount: uint256): (isValid: bool) <<onlyRole>> -    createTransferRequest(to: address, value: uint256) -    createTransferRequestBatch(tos: address[], values: uint256[]) -    cancelTransferRequest(requestId_: uint256) -    cancelTransferRequestBatch(requestIds: uint256[]) -    getRequestTrade(from: address, to: address, value: uint256): TransferRequest -    getRequestByStatus(_targetStatus: STATUS): TransferRequest[] -    detectTransferRestriction(_from: address, _to: address, _amount: uint256): uint8 - - - -12->4 - - + + +20 + +<<Struct>> +AddressSlot +RuleEngine.sol + +value: address + + + +19->20 + + - - -12->6 - - + + +21 + +<<Struct>> +BooleanSlot +RuleEngine.sol + +value: bool + + + +19->21 + + + + + +22 + +<<Struct>> +Bytes32Slot +RuleEngine.sol + +value: bytes32 + + + +19->22 + + - + 23 - -<<Struct>> -OPTION -src/rules/operation/abstract/RuleConditionalTransferInvariantStorage.sol - -issuance: ISSUANCE -timeLimit: TIME_LIMIT -automaticApproval: AUTOMATIC_APPROVAL -automaticTransfer: AUTOMATIC_TRANSFER - - - -12->23 - - + +<<Struct>> +Uint256Slot +RuleEngine.sol + +value: uint256 + + + +19->23 + + - + 24 - -<<Struct>> -TransferRequestKeyElement -src/rules/operation/abstract/RuleConditionalTransferInvariantStorage.sol - -from: address -to: address -value: uint256 - - - -12->24 - - + +<<Struct>> +Int256Slot +RuleEngine.sol + +value: int256 + + + +19->24 + + - + 25 - -<<Struct>> -TransferRequest -src/rules/operation/abstract/RuleConditionalTransferInvariantStorage.sol - -key: bytes32 -id: uint256 -keyElement: TransferRequestKeyElement -askTime: uint256 -maxTime: uint256 -status: STATUS - - - -12->25 - - + +<<Struct>> +StringSlot +RuleEngine.sol + +value: string + + + +19->25 + + - + 26 - -<<Enum>> -STATUS -src/rules/operation/abstract/RuleConditionalTransferInvariantStorage.sol - -NONE: 0 -WAIT: 1 -APPROVED: 2 -DENIED: 3 -EXECUTED: 4 - - - -12->26 - - - - - -27 - -<<Abstract>> -RuleConditionalTransferOperator -src/rules/operation/abstract/RuleConditionalTransferOperator.sol - -Public: -   options: OPTION -   requestId: uint256 -   IdToKey: mapping(uint256=>bytes32) -   transferRequests: mapping(bytes32=>TransferRequest) -   whitelistConditionalTransfer: RuleWhitelist - -Internal: -    _approveTransferRequestKeyElement(keyElement: TransferRequestKeyElement, partialValue: uint256, isApproved: bool) -    _resetRequestStatus(key: bytes32) -    _checkRequestStatus(key: bytes32): bool -    _approveRequest(transferRequest: TransferRequest, isApproved: bool) -    _updateProcessedTransfer(key: bytes32) -Public: -    setConditionalWhitelist(newWhitelistConditionalTransfer: RuleWhitelist) <<onlyRole>> -    setIssuanceOptions(issuance_: ISSUANCE) <<onlyRole>> -    setAutomaticTransfer(automaticTransfer_: AUTOMATIC_TRANSFER) <<onlyRole>> -    setTimeLimit(timeLimit_: TIME_LIMIT) <<onlyRole>> -    setAutomaticApproval(automaticApproval_: AUTOMATIC_APPROVAL) <<onlyRole>> -    createTransferRequestWithApproval(keyElement: TransferRequestKeyElement) <<onlyRole>> -    approveTransferRequest(keyElement: TransferRequestKeyElement, partialValue: uint256, isApproved: bool) <<onlyRole>> -    approveTransferRequestWithId(requestId_: uint256, isApproved: bool) <<onlyRole>> -    resetRequestStatus(requestId_: uint256) <<onlyRole>> -    approveTransferRequestBatchWithId(requestId_: uint256[], isApproved: bool[]) <<onlyRole>> -    approveTransferRequestBatch(keyElements: TransferRequestKeyElement[], partialValues: uint256[], isApproved: bool[]) <<onlyRole>> -    createTransferRequestWithApprovalBatch(keyElements: TransferRequestKeyElement[]) <<onlyRole>> -    resetRequestStatusBatch(requestIds: uint256[]) <<onlyRole>> -    _createTransferRequestWithApproval(keyElement_: TransferRequestKeyElement) <<onlyRole>> - - - -12->27 - - - - - -30 - -<<Abstract>> -RuleValidateTransfer -src/rules/validation/abstract/RuleValidateTransfer.sol - -Public: -    validateTransfer(_from: address, _to: address, _amount: uint256): (isValid: bool) - - + +<<Struct>> +BytesSlot +RuleEngine.sol + +value: bytes + + -12->30 - - +19->26 + + - - -19 - -<<Struct>> -AUTOMATIC_TRANSFER -src/rules/operation/abstract/RuleConditionalTransferInvariantStorage.sol - -isActivate: bool -cmtat: IERC20 - - - -18 - -<<Abstract>> -RuleConditionalTransferInvariantStorage -src/rules/operation/abstract/RuleConditionalTransferInvariantStorage.sol - -Public: -   RULE_ENGINE_CONTRACT_ROLE: bytes32 -   RULE_CONDITIONAL_TRANSFER_OPERATOR_ROLE: bytes32 -   TEXT_TRANSFER_REQUEST_NOT_APPROVED: string -   CODE_TRANSFER_REQUEST_NOT_APPROVED: uint8 - -Public: -    <<event>> transferProcessed(key: bytes32, from: address, to: address, value: uint256, id: uint256) -    <<event>> transferWaiting(key: bytes32, from: address, to: address, value: uint256, id: uint256) -    <<event>> transferApproved(key: bytes32, from: address, to: address, value: uint256, id: uint256) -    <<event>> transferDenied(key: bytes32, from: address, to: address, value: uint256, id: uint256) -    <<event>> transferReset(key: bytes32, from: address, to: address, value: uint256, id: uint256) -    <<event>> WhitelistConditionalTransfer(whitelistConditionalTransfer: RuleWhitelist) - - - -19->18 - - - - - -20 - -<<Struct>> -ISSUANCE -src/rules/operation/abstract/RuleConditionalTransferInvariantStorage.sol - -authorizedMintWithoutApproval: bool -authorizedBurnWithoutApproval: bool - - - -20->18 - - + + +20->19 + + - - -21 - -<<Struct>> -TIME_LIMIT -src/rules/operation/abstract/RuleConditionalTransferInvariantStorage.sol - -timeLimitToApprove: uint256 -timeLimitToTransfer: uint256 - - - -21->18 - - + + +21->19 + + - - -22 - -<<Struct>> -AUTOMATIC_APPROVAL -src/rules/operation/abstract/RuleConditionalTransferInvariantStorage.sol - -isActivate: bool -timeLimitBeforeAutomaticApproval: uint256 - - - -22->18 - - + + +22->19 + + - + 23->19 - - + + - - -23->20 - - + + +24->19 + + - - -23->21 - - + + +25->19 + + - - -23->22 - - + + +26->19 + + - - -23->18 - - + + +27 + +<<Interface>> +IERC165 +RuleEngine.sol + +External: +     supportsInterface(interfaceId: bytes4): bool - - -24->18 - - + + +28 + +<<Library>> +SafeCast +RuleEngine.sol + +Internal: +    toUint248(value: uint256): uint248 +    toUint240(value: uint256): uint240 +    toUint232(value: uint256): uint232 +    toUint224(value: uint256): uint224 +    toUint216(value: uint256): uint216 +    toUint208(value: uint256): uint208 +    toUint200(value: uint256): uint200 +    toUint192(value: uint256): uint192 +    toUint184(value: uint256): uint184 +    toUint176(value: uint256): uint176 +    toUint168(value: uint256): uint168 +    toUint160(value: uint256): uint160 +    toUint152(value: uint256): uint152 +    toUint144(value: uint256): uint144 +    toUint136(value: uint256): uint136 +    toUint128(value: uint256): uint128 +    toUint120(value: uint256): uint120 +    toUint112(value: uint256): uint112 +    toUint104(value: uint256): uint104 +    toUint96(value: uint256): uint96 +    toUint88(value: uint256): uint88 +    toUint80(value: uint256): uint80 +    toUint72(value: uint256): uint72 +    toUint64(value: uint256): uint64 +    toUint56(value: uint256): uint56 +    toUint48(value: uint256): uint48 +    toUint40(value: uint256): uint40 +    toUint32(value: uint256): uint32 +    toUint24(value: uint256): uint24 +    toUint16(value: uint256): uint16 +    toUint8(value: uint256): uint8 +    toUint256(value: int256): uint256 +    toInt248(value: int256): (downcasted: int248) +    toInt240(value: int256): (downcasted: int240) +    toInt232(value: int256): (downcasted: int232) +    toInt224(value: int256): (downcasted: int224) +    toInt216(value: int256): (downcasted: int216) +    toInt208(value: int256): (downcasted: int208) +    toInt200(value: int256): (downcasted: int200) +    toInt192(value: int256): (downcasted: int192) +    toInt184(value: int256): (downcasted: int184) +    toInt176(value: int256): (downcasted: int176) +    toInt168(value: int256): (downcasted: int168) +    toInt160(value: int256): (downcasted: int160) +    toInt152(value: int256): (downcasted: int152) +    toInt144(value: int256): (downcasted: int144) +    toInt136(value: int256): (downcasted: int136) +    toInt128(value: int256): (downcasted: int128) +    toInt120(value: int256): (downcasted: int120) +    toInt112(value: int256): (downcasted: int112) +    toInt104(value: int256): (downcasted: int104) +    toInt96(value: int256): (downcasted: int96) +    toInt88(value: int256): (downcasted: int88) +    toInt80(value: int256): (downcasted: int80) +    toInt72(value: int256): (downcasted: int72) +    toInt64(value: int256): (downcasted: int64) +    toInt56(value: int256): (downcasted: int56) +    toInt48(value: int256): (downcasted: int48) +    toInt40(value: int256): (downcasted: int40) +    toInt32(value: int256): (downcasted: int32) +    toInt24(value: int256): (downcasted: int24) +    toInt16(value: int256): (downcasted: int16) +    toInt8(value: int256): (downcasted: int8) +    toInt256(value: uint256): int256 +    toUint(b: bool): (u: uint256) - - -25->24 - - + + +29 + +<<Abstract>> +RuleEngineInvariantStorage +RuleEngine.sol - - -25->26 - - + + +30 + +<<Interface>> +IERC7551Mint +RuleEngine.sol + +External: +     mint(account: address, value: uint256, data: bytes) +Public: +    <<event>> Mint(minter: address, account: address, value: uint256, data: bytes) - - -25->18 - - + + +31 + +<<Interface>> +IERC7551Burn +RuleEngine.sol + +External: +     burn(account: address, amount: uint256, data: bytes) +Public: +    <<event>> Burn(burner: address, account: address, value: uint256, data: bytes) - - -26->18 - - + + +32 + +<<Interface>> +IERC7551Pause +RuleEngine.sol + +External: +     paused(): bool +     pause() +     unpause() - + -28 - -<<Abstract>> -RuleCommonInvariantStorage -src/rules/validation/abstract/RuleCommonInvariantStorage.sol - -Public: -   TEXT_CODE_NOT_FOUND: string - - - -18->28 - - +33 + +<<Interface>> +IERC7551ERC20EnforcementEvent +RuleEngine.sol + +Public: +    <<event>> Enforcement(enforcer: address, account: address, amount: uint256, data: bytes) - - -27->19 - - + + +34 + +<<Interface>> +IERC7551ERC20EnforcementTokenFrozenEvent +RuleEngine.sol + +Public: +    <<event>> TokensFrozen(account: address, value: uint256, data: bytes) +    <<event>> TokensUnfrozen(account: address, value: uint256, data: bytes) - - -27->20 - - + + +35 + +<<Interface>> +IERC7551ERC20Enforcement +RuleEngine.sol + +External: +     getActiveBalanceOf(account: address): (activeBalance_: uint256) +     getFrozenTokens(account: address): (frozenBalance_: uint256) +     freezePartialTokens(account: address, amount: uint256, data: bytes) +     unfreezePartialTokens(account: address, amount: uint256, data: bytes) +     forcedTransfer(account: address, to: address, value: uint256, data: bytes): (success_: bool) - - -27->21 - - + + +36 + +<<Interface>> +IERC7551Compliance +RuleEngine.sol + +External: +     canTransferFrom(spender: address, from: address, to: address, value: uint256): bool + + + +36->9 + + + + + +37 + +<<Interface>> +IERC7551Document +RuleEngine.sol + +External: +     termsHash(): (hash_: bytes32) +     setTerms(_hash: bytes32, _uri: string) +     metaData(): (metadata_: string) +     setMetaData(metaData_: string) + + + +38 + +<<Abstract>> +ERC2771Context +RuleEngine.sol + +Private: +   _trustedForwarder: address + +Internal: +    _msgSender(): address +    _msgData(): bytes +    _contextSuffixLength(): uint256 +Public: +    constructor(trustedForwarder_: address) +    trustedForwarder(): address +    isTrustedForwarder(forwarder: address): bool + + + +38->16 + + + + + +39 + +<<Abstract>> +ERC165 +RuleEngine.sol + +Public: +    supportsInterface(interfaceId: bytes4): bool + + + +39->27 + + + + + +40 + +<<Interface>> +IERC3643Compliance +RuleEngine.sol + +External: +     bindToken(token: address) +     unbindToken(token: address) +     isTokenBound(token: address): bool +     getTokenBound(): address +     getTokenBounds(): address[] +     created(to: address, value: uint256) +     destroyed(from: address, value: uint256) +Public: +    <<event>> TokenBound(token: address) +    <<event>> TokenUnbound(token: address) + + + +40->9 + + - - -27->22 - - + + +40->10 + + + + + +41 + +<<Abstract>> +VersionModule +RuleEngine.sol + +Private: +   VERSION: string + +Public: +    version(): (version_: string) + + + +41->3 + + + + + +42 + +<<Library>> +Math +RuleEngine.sol + +Private: +    _zeroBytes(byteArray: bytes): bool +Internal: +    add512(a: uint256, b: uint256): (high: uint256, low: uint256) +    mul512(a: uint256, b: uint256): (high: uint256, low: uint256) +    tryAdd(a: uint256, b: uint256): (success: bool, result: uint256) +    trySub(a: uint256, b: uint256): (success: bool, result: uint256) +    tryMul(a: uint256, b: uint256): (success: bool, result: uint256) +    tryDiv(a: uint256, b: uint256): (success: bool, result: uint256) +    tryMod(a: uint256, b: uint256): (success: bool, result: uint256) +    saturatingAdd(a: uint256, b: uint256): uint256 +    saturatingSub(a: uint256, b: uint256): uint256 +    saturatingMul(a: uint256, b: uint256): uint256 +    ternary(condition: bool, a: uint256, b: uint256): uint256 +    max(a: uint256, b: uint256): uint256 +    min(a: uint256, b: uint256): uint256 +    average(a: uint256, b: uint256): uint256 +    ceilDiv(a: uint256, b: uint256): uint256 +    mulDiv(x: uint256, y: uint256, denominator: uint256): (result: uint256) +    mulDiv(x: uint256, y: uint256, denominator: uint256, rounding: Rounding): uint256 +    mulShr(x: uint256, y: uint256, n: uint8): (result: uint256) +    mulShr(x: uint256, y: uint256, n: uint8, rounding: Rounding): uint256 +    invMod(a: uint256, n: uint256): uint256 +    invModPrime(a: uint256, p: uint256): uint256 +    modExp(b: uint256, e: uint256, m: uint256): uint256 +    tryModExp(b: uint256, e: uint256, m: uint256): (success: bool, result: uint256) +    modExp(b: bytes, e: bytes, m: bytes): bytes +    tryModExp(b: bytes, e: bytes, m: bytes): (success: bool, result: bytes) +    sqrt(a: uint256): uint256 +    sqrt(a: uint256, rounding: Rounding): uint256 +    log2(x: uint256): (r: uint256) +    log2(value: uint256, rounding: Rounding): uint256 +    log10(value: uint256): uint256 +    log10(value: uint256, rounding: Rounding): uint256 +    log256(x: uint256): (r: uint256) +    log256(value: uint256, rounding: Rounding): uint256 +    unsignedRoundsUp(rounding: Rounding): bool + + + +42->17 + + - - -27->23 - - + + +42->28 + + + + + +43 + +<<Enum>> +Rounding +RuleEngine.sol + +Floor: 0 +Ceil: 1 +Trunc: 2 +Expand: 3 + + + +42->43 + + - - -27->24 - - + + +43->42 + + + + + +44 + +<<Abstract>> +MetaTxModuleStandalone +RuleEngine.sol + +Public: +    constructor(trustedForwarder: address) + + + +44->38 + + + + + +45 + +<<Interface>> +IRuleEngine +RuleEngine.sol + +External: +     transferred(spender: address, from: address, to: address, value: uint256) + + + +45->10 + + - - -27->25 - - + + +45->12 + + - - -27->26 - - + + +45->36 + + + + + +46 + +<<Abstract>> +AccessControl +RuleEngine.sol + +Private: +   _roles: mapping(bytes32=>RoleData) +Public: +   DEFAULT_ADMIN_ROLE: bytes32 + +Internal: +    _checkRole(role: bytes32) +    _checkRole(role: bytes32, account: address) +    _setRoleAdmin(role: bytes32, adminRole: bytes32) +    _grantRole(role: bytes32, account: address): bool +    _revokeRole(role: bytes32, account: address): bool +Public: +    <<modifier>> onlyRole(role: bytes32) +    supportsInterface(interfaceId: bytes4): bool +    hasRole(role: bytes32, account: address): bool +    getRoleAdmin(role: bytes32): bytes32 +    grantRole(role: bytes32, account: address) <<onlyRole>> +    revokeRole(role: bytes32, account: address) <<onlyRole>> +    renounceRole(role: bytes32, callerConfirmation: address) + + + +46->14 + + - - -27->18 - - + + +46->16 + + - - -13 - -RuleBlacklist -src/rules/validation/RuleBlacklist.sol - -External: -    canReturnTransferRestrictionCode(_restrictionCode: uint8): bool -    messageForTransferRestriction(_restrictionCode: uint8): string -Public: -    constructor(admin: address, forwarderIrrevocable: address) -    detectTransferRestriction(_from: address, _to: address, uint256): uint8 + + +46->39 + + + + + +47 + +<<Struct>> +RoleData +RuleEngine.sol + +hasRole: mapping(address=>bool) +adminRole: bytes32 + + + +46->47 + + - - -32 - -<<Abstract>> -RuleAddressList -src/rules/validation/abstract/RuleAddressList/RuleAddressList.sol - -Private: -   numAddressesWhitelisted: uint256 - -Internal: -    _msgSender(): (sender: address) -    _msgData(): bytes -    _contextSuffixLength(): uint256 -Public: -    constructor(admin: address, forwarderIrrevocable: address) -    addAddressesToTheList(listWhitelistedAddress: address[]) <<onlyRole>> -    removeAddressesFromTheList(listWhitelistedAddress: address[]) <<onlyRole>> -    addAddressToTheList(_newWhitelistAddress: address) <<onlyRole>> -    removeAddressFromTheList(_removeWhitelistAddress: address) <<onlyRole>> -    numberListedAddress(): uint256 -    addressIsListed(_targetAddress: address): bool -    addressIsListedBatch(_targetAddresses: address[]): bool[] - - - -13->32 - - + + +47->46 + + + + + +48 + +<<Interface>> +IRule +RuleEngine.sol + +External: +     canReturnTransferRestrictionCode(restrictionCode: uint8): bool + + + +48->45 + + + + + +49 + +<<Interface>> +IRulesManagementModule +RuleEngine.sol + +External: +     setRules(rules_: IRule[]) +     rulesCount(): uint256 +     rule(ruleId: uint256): address +     rules(): address[] +     clearRules() +     addRule(rule_: IRule) +     removeRule(rule_: IRule) +     containsRule(rule_: IRule): bool + + + +49->48 + + + + + +50 + +<<Abstract>> +RulesManagementModuleInvariantStorage +RuleEngine.sol + +Public: +   RULE_ENGINE_OPERATOR_ROLE: bytes32 + +Public: +    <<event>> AddRule(rule: IRule) +    <<event>> RemoveRule(rule: IRule) +    <<event>> ClearRules() + + + +50->48 + + + + + +51 + +<<Library>> +Arrays +RuleEngine.sol + +Private: +    _quickSort(begin: uint256, end: uint256, comp: FunctionTypeName()) +    _begin(array: uint256[]): (ptr: uint256) +    _end(array: uint256[]): (ptr: uint256) +    _mload(ptr: uint256): (value: uint256) +    _swap(ptr1: uint256, ptr2: uint256) +    _castToUint256Array(input: address[]): (output: uint256[]) +    _castToUint256Array(input: bytes32[]): (output: uint256[]) +    _castToUint256Comp(input: FunctionTypeName()): (output: FunctionTypeName()) +    _castToUint256Comp(input: FunctionTypeName()): (output: FunctionTypeName()) +Internal: +    sort(array: uint256[], comp: FunctionTypeName()): uint256[] +    sort(array: uint256[]): uint256[] +    sort(array: address[], comp: FunctionTypeName()): address[] +    sort(array: address[]): address[] +    sort(array: bytes32[], comp: FunctionTypeName()): bytes32[] +    sort(array: bytes32[]): bytes32[] +    findUpperBound(array: uint256[], element: uint256): uint256 +    lowerBound(array: uint256[], element: uint256): uint256 +    upperBound(array: uint256[], element: uint256): uint256 +    lowerBoundMemory(array: uint256[], element: uint256): uint256 +    upperBoundMemory(array: uint256[], element: uint256): uint256 +    unsafeAccess(arr: address[], pos: uint256): StorageSlot.AddressSlot +    unsafeAccess(arr: bytes32[], pos: uint256): StorageSlot.Bytes32Slot +    unsafeAccess(arr: uint256[], pos: uint256): StorageSlot.Uint256Slot +    unsafeMemoryAccess(arr: address[], pos: uint256): (res: address) +    unsafeMemoryAccess(arr: bytes32[], pos: uint256): (res: bytes32) +    unsafeMemoryAccess(arr: uint256[], pos: uint256): (res: uint256) +    unsafeSetLength(array: address[], len: uint256) +    unsafeSetLength(array: bytes32[], len: uint256) +    unsafeSetLength(array: uint256[], len: uint256) + + + +51->15 + + - - -35 - -<<Abstract>> -RuleBlacklistInvariantStorage -src/rules/validation/abstract/RuleAddressList/invariantStorage/RuleBlacklistInvariantStorage.sol - -Public: -   TEXT_ADDRESS_FROM_IS_BLACKLISTED: string -   TEXT_ADDRESS_TO_IS_BLACKLISTED: string -   CODE_ADDRESS_FROM_IS_BLACKLISTED: uint8 -   CODE_ADDRESS_TO_IS_BLACKLISTED: uint8 - - - -13->35 - - + + +51->18 + + - - -13->30 - - + + +51->19 + + - - -14 - -<<Interface>> -SanctionsList -src/rules/validation/RuleSanctionList.sol - -External: -     isSanctioned(addr: address): bool + + +51->20 + + - - -15 - -RuleSanctionList -src/rules/validation/RuleSanctionList.sol - -Public: -   sanctionsList: SanctionsList - -Internal: -    _msgSender(): (sender: address) -    _msgData(): bytes -    _contextSuffixLength(): uint256 -External: -    canReturnTransferRestrictionCode(_restrictionCode: uint8): bool -    messageForTransferRestriction(_restrictionCode: uint8): string -Public: -    constructor(admin: address, forwarderIrrevocable: address) -    setSanctionListOracle(sanctionContractOracle_: address) <<onlyRole>> -    detectTransferRestriction(_from: address, _to: address, uint256): uint8 - - - -15->6 - - + + +51->22 + + - - -15->14 - - + + +51->23 + + - - -29 - -<<Abstract>> -RuleSanctionlistInvariantStorage -src/rules/validation/abstract/RuleSanctionListInvariantStorage.sol - -Public: -   SANCTIONLIST_ROLE: bytes32 -   TEXT_ADDRESS_FROM_IS_SANCTIONED: string -   TEXT_ADDRESS_TO_IS_SANCTIONED: string -   CODE_ADDRESS_FROM_IS_SANCTIONED: uint8 -   CODE_ADDRESS_TO_IS_SANCTIONED: uint8 - - + + +51->42 + + + + + +52 + +<<Library>> +EnumerableSet +RuleEngine.sol + +Private: +    _add(set: Set, value: bytes32): bool +    _remove(set: Set, value: bytes32): bool +    _clear(set: Set) +    _contains(set: Set, value: bytes32): bool +    _length(set: Set): uint256 +    _at(set: Set, index: uint256): bytes32 +    _values(set: Set): bytes32[] +Internal: +    add(set: Bytes32Set, value: bytes32): bool +    remove(set: Bytes32Set, value: bytes32): bool +    clear(set: Bytes32Set) +    contains(set: Bytes32Set, value: bytes32): bool +    length(set: Bytes32Set): uint256 +    at(set: Bytes32Set, index: uint256): bytes32 +    values(set: Bytes32Set): bytes32[] +    add(set: AddressSet, value: address): bool +    remove(set: AddressSet, value: address): bool +    clear(set: AddressSet) +    contains(set: AddressSet, value: address): bool +    length(set: AddressSet): uint256 +    at(set: AddressSet, index: uint256): address +    values(set: AddressSet): address[] +    add(set: UintSet, value: uint256): bool +    remove(set: UintSet, value: uint256): bool +    clear(set: UintSet) +    contains(set: UintSet, value: uint256): bool +    length(set: UintSet): uint256 +    at(set: UintSet, index: uint256): uint256 +    values(set: UintSet): uint256[] + + + +52->51 + + + + + +53 + +<<Struct>> +Set +RuleEngine.sol + +_values: bytes32[] +_positions: mapping(bytes32=>uint256) + + + +52->53 + + + + + +54 + +<<Struct>> +Bytes32Set +RuleEngine.sol + +_inner: Set + + + +52->54 + + + + + +55 + +<<Struct>> +AddressSet +RuleEngine.sol + +_inner: Set + + -15->29 - - +52->55 + + + + + +56 + +<<Struct>> +UintSet +RuleEngine.sol + +_inner: Set + + + +52->56 + + - - -15->30 - - + + +53->52 + + - - -16 - -RuleWhitelist -src/rules/validation/RuleWhitelist.sol - -Public: -    constructor(admin: address, forwarderIrrevocable: address) -    detectTransferRestriction(_from: address, _to: address, uint256): uint8 - - + + +54->52 + + + + -16->32 - - +54->53 + + - - -31 - -<<Abstract>> -RuleWhitelistCommon -src/rules/validation/abstract/RuleWhitelistCommon.sol - -External: -    canReturnTransferRestrictionCode(_restrictionCode: uint8): bool -    messageForTransferRestriction(_restrictionCode: uint8): string - - + + +55->52 + + + + -16->31 - - +55->53 + + - - -17 - -RuleWhitelistWrapper -src/rules/validation/RuleWhitelistWrapper.sol - -Internal: -    _msgSender(): (sender: address) -    _msgData(): bytes -    _contextSuffixLength(): uint256 -Public: -    constructor(admin: address, forwarderIrrevocable: address) -    detectTransferRestriction(_from: address, _to: address, uint256): uint8 - - - -17->6 - - + + +56->52 + + - + -17->10 - - - - - -17->32 - - +56->53 + + + + + +57 + +<<Abstract>> +ERC3643ComplianceModule +RuleEngine.sol + +Private: +   _boundTokens: EnumerableSet.AddressSet +Public: +   COMPLIANCE_MANAGER_ROLE: bytes32 + +Internal: +    _unbindToken(token: address) +    _bindToken(token: address) +External: +    getTokenBound(): address +    getTokenBounds(): address[] +Public: +    <<modifier>> onlyBoundToken() +    bindToken(token: address) <<onlyRole>> +    unbindToken(token: address) <<onlyRole>> +    isTokenBound(token: address): bool + + + +57->40 + + - + -17->31 - - +57->46 + + - - -32->6 - - + + +57->52 + + - - -33 - -<<Abstract>> -RuleAddressListInternal -src/rules/validation/abstract/RuleAddressList/RuleAddressListInternal.sol - -Private: -   list: mapping(address=>bool) -   numAddressesList: uint256 - -Internal: -    _addAddressesToThelist(listAddresses: address[]) -    _removeAddressesFromThelist(listAddresses: address[]) -    _addAddressToThelist(_newlistAddress: address) -    _removeAddressFromThelist(_removelistAddress: address) -    _numberListedAddress(): uint256 -    _addressIsListed(_targetAddress: address): bool - - + + +57->55 + + + + + +58 + +<<Abstract>> +RulesManagementModule +RuleEngine.sol + +Internal: +   _rules: EnumerableSet.AddressSet + +Internal: +    _clearRules() +    _removeRule(rule_: IRule) +    _checkRule(rule_: address) +    _transferred(from: address, to: address, value: uint256) +    _transferred(spender: address, from: address, to: address, value: uint256) +Public: +    setRules(rules_: IRule[]) <<onlyRole>> +    clearRules() <<onlyRole>> +    addRule(rule_: IRule) <<onlyRole>> +    removeRule(rule_: IRule) <<onlyRole>> +    rulesCount(): uint256 +    containsRule(rule_: IRule): bool +    rule(ruleId: uint256): address +    rules(): address[] + + -32->33 - - +58->46 + + - - -34 - -<<Abstract>> -RuleAddressListInvariantStorage -src/rules/validation/abstract/RuleAddressList/invariantStorage/RuleAddressListInvariantStorage.sol - -Public: -   ADDRESS_LIST_REMOVE_ROLE: bytes32 -   ADDRESS_LIST_ADD_ROLE: bytes32 - - - -32->34 - - + + +58->48 + + - + -35->28 - - +58->49 + + - - -36 - -<<Abstract>> -RuleWhitelistInvariantStorage -src/rules/validation/abstract/RuleAddressList/invariantStorage/RuleWhitelistInvariantStorage.sol - -Public: -   TEXT_ADDRESS_FROM_NOT_WHITELISTED: string -   TEXT_ADDRESS_TO_NOT_WHITELISTED: string -   CODE_ADDRESS_FROM_NOT_WHITELISTED: uint8 -   CODE_ADDRESS_TO_NOT_WHITELISTED: uint8 - - + + +58->50 + + + + -36->28 - - +58->52 + + - + -29->28 - - - - - -30->5 - - - - - -31->36 - - - - +58->55 + + + + + +59 + +<<Abstract>> +RuleEngineBase +RuleEngine.sol + +Public: +    transferred(spender: address, from: address, to: address, value: uint256) <<onlyBoundToken>> +    transferred(from: address, to: address, value: uint256) <<onlyBoundToken>> +    created(to: address, value: uint256) <<onlyBoundToken>> +    destroyed(from: address, value: uint256) <<onlyBoundToken>> +    detectTransferRestriction(from: address, to: address, value: uint256): uint8 +    detectTransferRestrictionFrom(spender: address, from: address, to: address, value: uint256): uint8 +    canTransfer(from: address, to: address, value: uint256): bool +    canTransferFrom(spender: address, from: address, to: address, value: uint256): bool +    messageForTransferRestriction(restrictionCode: uint8): string +    hasRole(role: bytes32, account: address): bool + + + +59->13 + + + + + +59->29 + + + + -31->30 - - +59->41 + + + + + +59->45 + + + + + +59->46 + + + + + +59->48 + + + + + +59->57 + + + + + +59->58 + + + + + +60 + +RuleEngine +RuleEngine.sol + +Internal: +    _msgSender(): (sender: address) +    _msgData(): bytes +    _contextSuffixLength(): uint256 +Public: +    constructor(admin: address, forwarderIrrevocable: address, tokenContract: address) + + + +60->38 + + + + + +60->44 + + + + + +60->59 + + diff --git a/doc/schema/surya_inheritance_IRuleEngine.sol.png b/doc/schema/cmtat_surya_inheritance_IRuleEngine.sol.png similarity index 100% rename from doc/schema/surya_inheritance_IRuleEngine.sol.png rename to doc/schema/cmtat_surya_inheritance_IRuleEngine.sol.png diff --git a/doc/schema/rule/IncomeVault-claimDividend.drawio.png b/doc/schema/rule/IncomeVault-claimDividend.drawio.png deleted file mode 100644 index 3056bfe4aa200c30a237a45cadcbc8974e60fc2c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 100066 zcmeFZcT`kY`#*{VqmkGW6^+rLiAE*j%$%uK=1lLsBAV%Qrkv^Rs3;mWb`xV4dq+eg zih_!77%-sB6jTH-J_WI``&f$THkg5y}z{#9L_m=pS_>*c|Onc?3Ec(F{gdI zui7OfB(&#onev2$PmqL!*2mj^3hvZ1RetcRRY1;x6SklEx;7!9?}i{t8+1plh|7}D z4`O_{>PNuYJ%M09h}n-oV7V-&px=XnOK{)qF(X#QV*c=qfFlqGYcqJa+526!E z;0KAAj>l2;AKo|EENII_q;wpZV1PFMCJe5G2pWol-%%=gESWeET+zK=mqlYS3Xotw z0-FR;(jjtuh=8jU3HuQk;M#>aE#Mc&Vsd)oL(G0dBpva9*9o|Ea(aA;47=as1~0Mk zIC45JokSqg((yDJc=DgEunG8dC>;X#6b7rokNl6%#iy_Y4Ym(E6w?%g?S4H!I@l71 z@I0b7q5*4F;y=CypdYqo?D6Ie<7t`|rm@ZmNoeg|R!ahnl? z&2Mmn$4HArX>1#2u=5oZ7vFDYJMf6vANnu>Y5<#h|1plsV>GxvOaiIBW+$0PWJ_^) zbqEL;Hqcpifd_0CR;p-Wnl2gwGGrSiQm)3u*Z2rFwoRrX;jPjLi{Z4%z%xydjrW52 zV1t&$XJ8H-iAE#Ym{uhfQ%QI(PaupJsV$gNXi~}`oPnfcyF)mzCwA0q4Ej*ELGSbG zmF8X^b8TIe3PMpBUov$N`&&Cb#Qj0iBmA<5Bf`p4hHnn`1P*8_yS`S_6-S zw_y%}m5(D+z?>|-F03-xxH3o#5gj5I)v1EacCMZr#hLX+3P)w&u}vX_tcwWf91Fs6 z358Hhj6s2@#qNp-lv1nNi;00|VT?t$23&Nr30zZXC@a9U$G``eLX(68ZbfKZA_dPi zE1YJMoJJD(g^1LJ$q=P5f)NOM9#O;$MtRH_J}76ZR0_A)44Xw_Fo6U1imi53rVcR? z3z!k6$F0>#vD56qFrG)?=yXgG)d2(qLrSK>>^6FgM30mvv>7R-2)y7A8=d9TImkRML!vQod33Q?4(5#t@G!?F zB`^h0d`l*(jfAiuI?E$b@zlO3#ODbZY+`_6Rq~Ap6Jo`LL6Hnm5Tzn87>#jEW|c{( zbpvx@dl3$oCQgiDMny&NN67j*GsW-KaEqIwkbp&?nwii5*iArBSA7*dQU(UJIgt|%xW zQkZts?g`T6VhBS*VU`Y(!(0;GOjb}0Lb4GNxk$JGN2~V-xKxEKZlWOtMvOvUnHSaD zRX8s%MzcG`K7tF5=|VP^hXi~Q)^Yt3BjS>15e4{*ZH;;j5ipb-QQIxTC@ZGdTd6c# z96s1~C&5fN1z@u$iZ>DzL0!nmMU{deiYYZfL~I%?&~PJ~kYC2pQalohjY<)Tj5Z?$ zj)+6J0F&r3M2z4ge2G;`py|X^cEo6t>j(@y$Hlu)u6&pUUqEkd3$)8RGlM#u$ZR;z+!1L6Aj6 zbzvlcxIG4+EG!jv+)GfZ-;aYCnr z5av15K$D8F*6)B|8pJn1)Ck8zwDRL{D2fJ5E-?ool0+zzEWqJO z3>^{J39K?1JleRPy>hP_WBI)Z7i;a>CU_$Zyi|$AXowUq zlIqQ22aPH)`)oX}H14E2Gl1N<^D+hCCz}cz2vqPF7LEmI8i&gvG`MUm9wrFbHC()c z&mvi!evelI$@!+305w}}B5z1(^HcnoOBwLHt%9(^!xOUjWIY8zOtz37@3aS%Ry8$> zMa)(oCe!*5k3@s|ED;<}B^QbmTqDIw5*d6#A!-llAhVh+B*&N$E-u=D;)`Bi;W?*mJ39_JBzoln{(saYRe7$Z1A`Nk_!oQlr^Sa4Pj7l|d7RL@tg| z;&!m~d|N;f-ztqK(nsmsus9IV<27WrkH}yU!F>spYo<_C^r!{H%hlYtmRwwyo9nY{ z$pmVEZWKmhOaVPYqgli#nd)IU$+8%UA9Y$>e21G4Q~bO*_y-XZ&+ZI5JZ^@F;ow0I zh11XQMg$R}j;O~4F@l}oAi1QdKxC2V^gM*@@_~;#RZ)?E5a7wg5m8tqa-uYY)Zu2U z9HyvDst$&|`WWJ1;31`isQ@c9iPRjt-WL!m`D$`d$yAeQB!YtzkE9|GQ5Y~$xo#Fi zYl4KaxZV4?dM=(XrA4JNnUjb!gsE~=VFv|$6A^QGaCHxw}I7?g-1U~$Tg4u;8LVfevll}al2 zlL!dQppd~fyqZd2+9`g4S!~8f_(3@z;Ephe^H972gMVJ4&QxV$wMJOS_5MtotD-W20Q2-ivTkQkJ( znG!U@Ifi#-15=3S=Xz|j-f?$a5wc71cn--Bo;~3+%X*?FpgDEKtpj?7bM+^xK zQ3soC3r7ePBAo!t6b_(Pj={;IJMknUmg=%S7gVH>-Kv>Vfu|1vuZ1CB+EDgcM zAVOB7T}S6}F$Pt^;J8V&08fXRWw4My0q6spjlf751{qLO|BOqAVyvv|LsIyhjje5zNA51!ztt4{QhA z;uCZsN>mzuYLRjfk^p6MFg)MFB(qT&*IWt42p~89>%qN*p41+NT&&<}l8FGozr^3W`gFq6~Vq7*9a7d^Y4i1&XV1f)6x6qi1 zESBlx5{pE_`XEY@D<~9Y03wC7CXo=*n^Yks&F*uF1Q<#|7&wDI6sJlakAehQ0J{pY z1R|%i;N}-$Z23Lc<>*U7JvjqCd!p->2V>2ynH4*9Ec)Bhm8;WNu-z} zVv$H96bThG#JE--2Zx||8^x`M0flG75GxwC#26%k#vahi&`3la2?R_5rZsNtB#nik zQP~W1)dvlP8C+P(6j_*2lx~d23!*Usaitugm+ezq_&Q?*wWC@dM}}}2N@mn1Gh+sk z*68C9Pb<}7g zi$DM;;?basz_+_uAtuEg4hFphH$jPNh*m@aSQV2QV>sMV8qKVwd$@AGlFQNY#a^u~ z%7{q}CJKa+F)x<~SaJ}Lnw**dB}|pcTs&IH;AdGQ7Prz!7kc6_4*t=DZZgkBV=?6- zhBPYYDh*->#*&iQo*+x<7kJ4wrNqk$G7Z~L%I~dH?hQt9)JgN#H zp@C-rskJ%klDtoGsWPPmp&5)aghtV6r2;-h{2rzWT7iWa@Hhleh%XPIPF%zQX2SDP z8)kEvSUSANBsA-_0tr_mh~SkF*Gh>7wLVvrqrxFN$ic?PnJ+CIH`A~fN3&?j97v-i zTSZbUL(j43+zOZ0fe52cNFNol;{n>hcg5^%CoLMW^W)yf4NLrDK%Ozb6$w}nw-`3) ziBzo;aiLTysDD+rR2Uh1Zb17m}Xacbi zWCIY9YSobOAv~FfBN{kZm?^;coDh}G;9-0wjUV@Lo=qr|^E^RF3t|QZ(NMgWn8QGK zdcqtbm(Ox*iLP+`HLru_mZ?Rqs4!|%0i!o*u^1Hc*(@@Vorx22oHlOE!({7>aya0# zt1vvlg2`c~3a_OB5jvtir`aaAf=of^^bD3!_s!VJ9Rc@t8rG z$LI_a^oOoj9t8WYj>2Loq=lw^j+MaSB~D=0s4d*iGQmA))~$#xp~< z6S76sFjMPN%B?(l1cW+RL?bz!JSQQjAql~X;-Zb1DPeoW$kWSMEM>qW55-h24#BJz z@^Bir9#jp$JI=VZM7(&MpP)97j3}Nf(3(^@0Yd=plUZB_BqdR3A{i^l!n6uyRA{l# zBLprxpar=j!gn#ka=MlsW;-JR3z5%2gjSqh3g*??Oc4>^V&pO*Q%G(R6NR`?loJZL zWUdfZqjiM*417Rt!8_21RzW8*3IU=gKyE|K!H+u?PL7M&Ng4)08#CxRbT18qL0kjOMx+77ESL*Z zy)rV7&ee)7F#!9p0yYK63bDna7dhj6S_pIE#;K+e!9%}C;bv196mFO#XDFl=jHU_G z4YK#CM*x&aViBc>t_L1vRf{cpoCQE6n=iHMSqcSB6BJ`kzYfG`woQqULQV!5B*X@X z50-j0IGKk|@cZdz0|R!_6al|OOydxIp|IMGF<21?DB%giI2opM7^JRnB;q03jYhUp z>GH>bwa6ij7eNhzIBLNZ7LmzO`j{*}6LlK}0v^yA%w$tE;KL4|$>a+MWFn#nV&h2> z6)F^}_!*VagcJ%txlFB-?nc=JJw@SD6U1bjB`yG#j~*1$!3EtD#L18VC*p){fI7kgfXiYM&n#BR zA%@7IQh<9xJ&mQ3>Vaz-3_J)H#23Yu3yC_vPsVqX$tEovr$=U&&u#HV0jjgfVHi|K z?2y`ShQt!c>-O5r6lXvwWQtG%LFV%#Vmg=aQOo>Zj)Fw@pl*o_5`~yiDUGaWg$!7*GJO+?rqaqrt1|Fi3Q4&tj6 zY8R2F@~NYEK3-*~i70Wq)C$=!!Aey)7+Rh=&UPeJx`i!wTG>vJh%gLLyy5|%o*gto zVZV_^4&#kxtF{Pwq8RC^n(oACW*D6)3qV@fw*#4w$Jgq6^YBVqGlkH;Xt? znMMTBMR-a~PUB*HSRuuk0YiahQ7LK-!&oQ;syH~gUuz`W3~Vurfn$WICVnI=RcY8} ze?WzIKr*X9AtV_<<^q#^bP`RVBvZ(WfFuNplk6zX7_kNAM7NS_H&Q%oG5}w;P3re3 zl{!$DRkP$VD%D~YNo;1jMjr{qIjYDChppf@xMu6=QVrF}ri7V32-AfPnAYTV2i>5=9=ZNJ7Wl1Sw0xcXL6_pA9h$R2x|oQ=k^5 zn@{o4meX!lubxF#**c4)fz6!Gx_^12Fse zy0i++O_e$UQnIa5Bb6WpnGRC|fwC&hlT-aRn~To}^d?N?I|y1xCU>xmLa~_}fJ}0P zgJYAzVzpkXQ(EaXFP&$%dCWSY29{ZDL?PcB*08M-87LQ9Jb*z^0-~^2gpu5C6(~8I z`Bo@|;~MN{gsIaawlE{iCA&qSH31ASDxuL}oK4LQS}X>gksxG{WMY|<8}}hO-e=?l zm=qJvuC+*c0X{=RitwyF zp$>(l0zkU0FIm!S~jxGFe;@<54^Vv0$`0R zdmKR(o5vvt_0nLRD8KjoIQIsLOc;byNjylZwTRt_abrr3!DPl0Q59E0cS}r+P{11@#d{fUOoQU|Q4pA^R3<`Jl6eGfoScCbN5fX7KkTJq zas8qIfP5Ae+p7wah+&Qtco@uafCn4_L8Ud?xD=`^LO_&!)GZQNFgi}-vxuazh>XwH zX}CZDY!l6G(kt9nx{_>iGPG8X7EEDP(|IZ>SUBu)iishP+QRf2Bc8B~M3s8U3RL9u z(CHj2foN7~i4iX#NN~uYfGK1_Os5ACpBW_E)gB(->xsx?pi)dSGeEtUP&+ zFhv-ZU}(gqwBk4cN=QS9JDrPVw$j*mpPRxI=^@A@B48l`MZ-~2ln|;F8n~_yE*P(J zh^SnfKf+?_r7AVc>C}+S8kbLtks_RU=>lXyD20z|gjBxN!jIE`sh!QCtKzhegbTx5 zgN`qaDclB^R08~g9rH^;O-KnD1wp@9;f}xN_WA`h2*G$xr;%t9%3^YmJaJ_@kWPkl zhJcxaS>w1LUrR{sknmIii<}M8by(mw@!@cYA>vE%PPHYBmoX`LfgjJ8qptYc)H1UK zm@(aEVDasKpBv{8XuNJbQ5}j4Tk7V~1O%ZO4a1;PVPvC1I1Fy<Kz&*vO~nh+U3e5G^1?<+C_s|3Tv8U@ zts)AopkW9`kxUGM!K7Azs zg~%B5ftI5S?<6~51k}ixehM?F;4>ojh?k{|*d2V10}~-^uF~n}N4RQBP-~ZjC^C(V z=Fs>JAdS?i0BN+*`4OYjhxf2uRs@bAmW%kLA^cZ3HV><`I$&I<4ESWodzp zo4g33#F!2^q(x;kvKh6<7~GgCLS-sx5uVs$Gcc(IAk}Yr~oFbIq^&d z#awtlJ#6>mE~R?)fD5x}dMDjOlB=x%u3!Ppg$p=iQ9o53q6ExllgS`( zV-t85mrRA|&oGz3JV z&PezNFG#XH#gGnwJZ-;1sh!iie znKWo9P8pT))PX>;;(T;qC!m4zzY2wvu|x>waaB=-28T4HvD^?BM2G(lg;H=fU@+-J z7&Pm-Fw-NlF?j~7-5+3z&15qnMx+22(JL4xr-4q0#iW2;5@9UL06P^@z+!}CRZyqV zqL@b~rFuLJv4F!j@nmL(LBn;i1u>K*qe@L~LBu1~2w=8|Lw2Yc5x$6y;yi%XI)gli z!G~}-OskG2X6iv0Lrl6LkUyZ;LIBF|)uD^BVn*g;>y z^Z&#wz~hz^DG;mweR(@q>9kQo20{CO!e zy{mEKl+hkd2J)vv1?DXauxb|IiqAmQc z`oW4_9%sXW^n%9d%l5ekO6%WD$UeB~I`;6P{(6?F{$hUSoKIRMb;?Ni_eW}{L{eKM zXY(hy|Klcjydt5`oEei665FQ!`y+`vX@0lW#dmBa z|18wFn%};JY}dXn?vDL$X? zsxA&auidn&cu)45s_T`TW$Uh%&g+gp+yuEU<4S7Q&MIG-mQ~uW^J*}6VW<5cwUGEN z5SVaaP20qqU;Is8|Ie^uCU;!(t9$u@duO)q+q5dX^32FLt~bqZ9yY9-H}dzU=T$?l zpTGa88BW>^uQ(Fu{uQ%jrt3* z{4Hrcq7saHS9QJF+LMA7PU$f8??HnG-7h>Z4ircZ=1X(&xOI_=q0QvLY)yXGS2 z(?5H93Nz7t#~N=>O&R0uQ!wtugXb3%68EJcO>b|{8@1=!fpJyNf&T78T zS^newp5K_#vG~VJV1|a*8=e-qt1e!f@FL53X?rdSDL$hB>EXo4n)J@)&nulnD06GiZz?$y`J;8pt923?}vTXB13zn-`sC)Jh>0iMtcUIt%D89V-_`h4(f z-_g#`pI3QG7Jlb`B)h`bPx-X{{as}v19T}}M7JIO>9dQwY?6|vXNKjEEzMS|)prv| ztI`mCMe*Hb&a2~|UAr)cF?ZMl>T<|7x9SGdASzoua6rCx=i$OvTz~19iA|xD{n<|z zthzkz;QS zoVh3HuA8uQ#gu_FT0rMrwCC28xOoV(YIx*lRfQ>GI*R z->Y(DMZ>d!dLIndw?FStTl(aSmXpbzYr|g@11q~`EnC^poH?=iETiL->$GgHE12Sv`2B>94ufeb&$ENjcMy@T%l`)0ygUv~J6$;&%rh9(;2(w&2Z% z`I|C-nAlW5wxsHZ(16W@mJIqC=_<;3QspVF{)17lbZDq<&-{&tUhP`dbV^+?#y#gN z((j*i9DX*oaoF^+!?=Ws&L7Y*bvOW!M;B(U>?@VF8Ubybv^!WUcUBf|8CHbWpC3GX z=&y`r>X{uzz4b6sn-S6|mcYfh4L-T}gN#^T$-;BD} zaAryR`ldQfslSL>*8`uwf5Z0mwO7dbE0N)K>(G$0`-OIy4zA$piOuhsx{8yH{j#_x?|gl% zVC0CFu#;nK*QtEwma=`F+wPcz>h7OiGo|VoBTw9J^y|KL;~wn$E4}pXlLol5_qh8v z)m3#D^Xt{C@1Du64`*KZ<>l|r0(E(pqrsJp^_NN(4jeIdqpkee=ga4wICx6G=E-d6 zjCYh|`0YijB~1k99Gz)Y)3ftgHRss_my_L<-O3ATGtlW5>Q;IVTbLXuCatWt{=JJ`Jqob z?rnGg9JpS+q>HzZv2Nv;=bswKOfCFr14_FA@jp(^p%RB!DEo}-HEm%+f=G=*8>dN4(O>>2? zzW=?p^()p~Z;9&jOMzM^GW7o)zlVRBx<1C{G5$yBPo0#}49xd!d!*HW1?xw`N%Qaa z=-0l_za$|Z*k2`gDt|&*-}=9J!Xc;?yv+6+@u&ad6nBPXa8F*J-|fF5eycJN$5zV9 zJN*}d_&Z@1hG-QoOtM`aRT9=_yKU(^Cz?@G3Z)m&W(Cg&%9Ya>d{@gxh z*Pkm-{+P6B>6NU;`l>Ou6^4HEhX4A^j&yv|hckazbQS?V}_4&12s!YaAE*s-zsQwJ z>#yebOmnPMO`X=_Ylj5DAr~(z1j}r0CtPNJS9kue=b5|uKYTh~UV5-$Sonvs&HoJM zebNF0H+CoVIqj5H0#Li2bn$*k!NT;cW#=G!?a(#03;l^sYva4dg5Z#U?tO%f40`Lf zNb7&@nt{%C9eP&#oQ`a1x|3JnNBcI;d1pU+sKZiRPQ$AaUvB8r0u+y6fF@J>x>F}j zdYFiH%YS>0)9|AA%Gx3;`Oe#?G4g4KVj0|msc*sLuX>gzCbsR8kx?{sWnpm3>8FoI zyHDTmhsK^sf7|$Rm&st4DKiUm5)uz4kJps!AzdvzK0&ryGyUKrER?U`bMntQV@SMV z|E~HPz`6aOA>cFZ`byVLt9W#inOSjH{bC~RBSz(906b5WeL57(S(~Kg3BEsC_A$s0 z0;4x8fAyty^0ivYn-$IJ(Yr-8E`X}|9>A2kBvw}Y&aRtRncMsM^RJ+uCmzi0J+r(^ z%WKg-8QiDvFXT=chbFc<`2FdLrZXS0H3#HIt=E1YOl*}z=zMnYybXfIm4T)Esi&P{ zXxC@1(uXV^^?E9r4{|rvt_3VtxADa zXCE(52P67_G|w{wHxFE$8+>_F{jOkQWBx?q?2kTh2jn;>IrCohos@Adsc`M{f1t9< z70!$1XS0{Bq?hD@Mb*!SwDdH61r^^S3UgmDggN692tK&h{YAf%E{*l9%Ga50AAEhH z*=l`9+!eB_FP-W@-qpbxMy7naC(`s<{qA{H?9;(Z7OvN{XmmcvMomM(94}jMloT~i ze7#@-W!#>H+q8xfSEc!S#a2swPs*OGp}`%$2FghF<^A5?HYc@=?F5WR|HFw>ssC;o zSZeAIK*u|jGqd}CR1A1K;|Cy(odcjLA5*coN$2bUhH_Xw@HL>cOOvmT-?g;)=D(p9 z9srU)!?_wlV%zndH_MK=Kc<5c!GeCC#ktfuV|BY$ z@K=hD**yFMn9cXNW@wyiEcxiOokoDypE*wa+$m$yLgL+zy7);868T%V&V`aX{n&2~ z?c+Ai0SjdnY@FS;6)@_5ll6?Bfo1eb@0|r;QT>0W2CDx5mq2j4+I&MC*A&|2yWKpB z<%>NFdwp2jufnzqM09d{F=R=*GKgJ9e5PpCfu!mF=5d%Ta#S=R^MW zmdT)glni&R0fFw$_w$RFEdmU8P^FBsbi(U_dG=SIJw;mpZrOeSF~%DG`Z|L~BlqVsPK|syNmY1QJ!w}9mz~4` z5IQdv`LtD1V(RJ&Vs&NoU6Xb3m=n9~tp(yRgP+ zx51l3Ysa=Ytu!Ch(mtDQ9=JMZ_|VD30fTn0XCR5(7JnITLn zTo$fSStHj^&z*}ONIUWYPEsB5u%i0yacZYP4ydoZc>e6Xq-v>cC30zWKy-@KePjz{ z{v-pQ{pZ$mwxmv%={Mqamg~*Wi}qwUVI_52^X@+=dAR4-U%!Z__YIRi>5%dHzq*(M zbV1y(b{!}rEIhQ=cl+wrE1?1qJz+X3W#lUz@Q}7+F4-G zzC$y+rj4d%?r|+mHgZ6fp~H~z_4!3toy*AXx-sYX`b^Z17@Cs-(u2gT-b1G+B&t3W zuArWqT5xhm=~eVVE-tlHGj?R1);W!+jI{OxU2Sr9_DX)D8K!$_ z7Z0l47dFdi3Xt@bZ4@rOMebS)YNKZw91P2JT4vhMA= zBR#A5PIdFM+Vj<0_4m%?W@+<4CVkCa{t;YLZ%hS5DVbFXR&YJZdS*rKVdeA=y+&u` zWtHr)-K*T|Tjw12{Qi~g4dUFPv5VyYHu=mJ`lP9xMi=UiG`{aBnsGjZJK@QeP z;|0LP^FxLLH+kj}?Cu7O#gdcRkUaeBUM(RyXB%)` z-GaxTCUyFollpl7B~VTteS>y?$B`$<_SFw3yr_-<6|ZB@nb~}GG`-EoQb@+?)nGr9 z{Q*MKt--5vzwGLN-B@oceN+7qp0%defKdH9*oqIY{(SJ)y;>59oY{aI^uRyv8~;$o zb^1o{M%&pg=-NlU%rhSPomYO}knEiLGQDWLsX*ypZaKC(X zbIsR`P;PHf+Y>Fp{V}zy_Xv!Mj{h8l?DyQE9Z09s_S0<4)NYAD|K6J}U}@-vEs9Oz zUwXYbwG^u68{)>Ot#TJt_Z_DGbXtqJn}JWhrQH3z?NRZMubk|*-2LN? z77(3(0O)ocbPaIsfr+4K`TI`OU&Y>dv2uL#_c-4zX39mdZWCkL=YRa$Pxu=&EEaYC zatNG|b0X>5_@|;G44?#5WV`_IXtg{^y-j;__M-Hxy4iDwKjF^)mwh>aVF)_`ZShvG zU3++1hhBA)IS;QL2spkKd%mKeE0Uf6{PPc}jdt6#22!^G#@}-At$y8ya8e&6KD}2K zDSEWTsOh#rAn)`TMtWS$bj&cBKuhK*Eq$l0F zkH89(d$hAnc=P;p$$`D(Nv6?hWqUtZ#owUVvS{g-1#s%c#N%lh?dps*%+d8{^#* zGN?fZhWF`C`Y;j?DDJUsH$G3vG3P9WY{i|GLr|nn^!p8fYDmobCW%}QqcWOK1Uu<5{Saa^%?+(oMP`(!}yK`8NAY0mhGjjOB zPP4!M5ZJrN1H05b?dOc&53QgDuGZ;JE*e~YLU?3a`&R8{90FLI)zB?{bdBTE!3l5X zKU;yeq!bxsAW&CfbZ}yylFIXZJl(zhQ_ zCUq?s@^iOEhCcIuc#qD>ui10H+BXTH^Ouw0^c~}0`BN@{9@#&WBcOB%kL+7Kuf>Ny zi=%og&@h<|I#nl5oES|l0oeTQ$jX=PJ*Sr7)3>RVO6|MmrrT`}{rtfYe+C?D@MM;S z+m`#|<6Flb+{&7ssDFC*bk2;;3A^Xo4Lv{>33###xY5qRBR-k;dqQ5CY&%+ED!Dy( z*tY%qSE$ZM7p;=L4`IxBQ*n)v&?PA$)$*L<3%)P;7flEBk#6~@PSnz{B5;QOSX4l5rq@?~8>kpf zjW=z_xF6qr*-n@{v|{S+2h}B2ps{!>`H#OpXyZR${4V(v@U#4tyFsrhf6|3KO~=%v zCtqkw!uiV;Ks|xLR)DFo-G41_i86Wu%GS_Uw+gsxMzrvg*EyWCTpSsrJ3iTc}r&S?c7O3CS(rrx_6 z_$48d*6<6bckRiTy-SN!3BUm@caP?E8nF4$4#SbFTc;h?0ccIeP;s}hIlkL}?%T1k zqAKT;Hh-o}{^bM5k(z;$e@Q-6+nL)<3y`jan?7)$ua)~<(~CB3b0)X@0U+z?KjO$r zy9`43VBG2_n&t{@WRg+$IzjOk6pETs80xz8` zZT-5FGw062@BD;NY7F_2Eh8qI0V?vzy;<;U^t%j=Oc|UP#*we}38Yz*r<% zHFEqA)qu3_55>-Vf5l^9$CT{Gys^i6PC55MTsIZ~`uV+f87o!wBWOpbuQ;7M>{8Z^ z@cql3ze|D#;+z+Mpe(N1?Ywu_4<0jU9pXiXxVuV$yMk^`)6Cxv6(Z-avfM2!`IoPH zPMJ}VQJUT4I`P}U^v$7$O47d&*J>UZ)q6_$*8slbG~uS}&)Gd5&{m!o4{M*A)VJTG ztAVn8y;6ro9^5}%2}tADTOQ-Pe{hwVK$L0IhTfY!^$;K?Ss8#D-oARQ9zd~m;=4E3 z8+IJ&uuC%X)lv7M8x_7AIc=7$>k))Z@7Kp{-#lA%_tetcXp`gI+NsI* z_C3j0x1Xc~d!Rhan^-ZmFl9{ikEylb2td@2O*nRVUiPzfvl;sB-&Z(l{+!cu!n*|S z^=ln?BbSt~!EGE;k_`l~r@k4ethx+zc<-Q(MK4~MwwvyO{3f2eFm;m_7Jj|8 z1UcV7o*5kgIq8FoyMt}|49=Ajv$IbQF4`-icR91QxB*96e|qJJs;skhw_Z#i^>$6x zgvN?+!|qG!c57pshU{O7Gfb|%E*a6N>3xiuB*;+FY*)w{QUW$n1MMe*0G@6f4lKs((H66NQAe>-o< z%IaZ{L8X3s$pimQ_Vm|re!6^UXls3D-jPfnip*<$R4YR@8AL}C9BXqzTLO+Qx;7RBBi_j`ex$Q#IbTt|QI{2+N{+3=^raW!kE?|I5g>d~~O^8ASfXG(z&T)uOBLH?KnSQr@9GWB7( z^T`$4s-?|m=EoQ40Per*+&WH4$7#RLYdIEkzqtm~1$N9E`FcP>rTX5MRRa$J9QS9Y z5dVrFUN|qFx3HJL;_AhE^Kn4L-z#z{$Q%eo{(`rcN}DZj8bFI856k!7ws%uE>oI^6o=UU+ykUKSO%>E2HxG z_p4mjC%!w7Yz0R+X4M+UjAiaOAOE#iV$S6G>X8?=ul(hFtZR4DrZRBAr~Z0r=|HaI z*msR*SJf`!wcZ7epQJFmoDKT2&(QAeP1sO%^TMb(_28^aq$D$4yW>z}=IxauClpr) z%0{G{2R^E~`g-Q%+;HV_&`TE|xI3TGVJGmT;=q6%wbZ)J>s+fQJonKp4VAkeT&*ij zob!5PMi_`C6J$=Kmoy#uruoL1rC*hI>GbaHy-_8Z&z_Cj^yB)8no*!MGcsk{vyn|` z{gkB((=^4`eYs=ZwK_)i$YtYe1SkI4;>FI=+w4#f$3`OY6s~rcd6I zO(Aw@Ld{RssB~tNf}Qh{duRQWmzAGn53y6WI~IQ%P1K9d)h$ZT_%e-K(MX`JZ@STD z6s~EVYTMDN+sR|jo>&ZPpR7stO>KREyt86oC3bhI?dq{{ey-qt-!0zNjHk+!8}*k8 zA~}5<;W0(6`cIw(|CA``+jih;q$@9P%<(*i;{`CZ-N_70bnEQ?OAVglpEX>?H=$(v zt(V7!WZxVaJUi&u?CHdN5^z%Ng(;Uo*Q7<;CA32-@zOs*xTxIYuFrn=?BS*r{+Y>3 zzFIK%(%6aB`7e=1>6*Hx7uT9CwCC8Ly&>5ZJ?Ia5E&e@+A^)bd}B_Wsd&;r11SHakhYG@?F7Fd}~HWLlTh zG2>TB!?qv2F|b86wR3)IzYh5W5RxvBTO1OXet-O?gf9OkIy!vC0=6;M>1j>Vx170G!)X5Jb&LhUKBAm{ou3D1S#O;kG#@R!@UlyJ zm%Z7q&#zMJpPzu2sasb(Ji4aim!r(1e*Gczq)K;Z+=rK?w+-PJm#tCFxif#` zo{sCt~XzLq@dw53LAjYEFrm*ao-X@`6@B~e#*@m0IvvM-A(6uYI`3dnb5TA|RHSCyIf zR5<+JrqW?upY7If?KqDxLd!d;oO$U3iGDN|P}mMoA8>APS7O%Yx)LxA8b4puVMNIW zRo}D5zwsp>hg@wW) zcNCiPXID2QX4N&!ZP!(gSC+KPt+U;d+LZ|v9hLyjA6Y(az{{GmgO*JG4V|j|CNCKw zXt)=kwKFnvDpK<6YM1UkI`c>W^}@OhUCV-LNaX-#>8y#bPL2)lt(FxL(^jlcMwYt% z7z@rac0Yf;Rb{mQPHaQLn*l?HM9L0t=)EQL(LH^pyIGcNyR}F@6+Qhu&GB?Wuua+e z4PV}BX>=<=o_Nw=T|bSOb#~z9eqo1T^y=DJpDgM3>hi)*Mu$><#5%B2Hdby+_0_=I z<O$esB}N=ppjr z&{2M6*~I2Rq<;P6RqF9U!OCV$5wEWA*n6iM;gLWuyR~#_K!1~8_R~PK{dR{r19$p< zCLcQM_$55&!rflQtraC~$0_~b@>O~7+V$1z1oxA4S={qaW3Mxq9V$D^Z_@v;f?O)% zuKT*(PsJha8tEURB5mE$65x#ww&uKETb0mwb@jocuK?}YH13Qjueug^;>|8UtJ>s_ zEkieCFAaecf-|Z%{~d4?;AfJJ<3QPTSit^Mn)(jl9f$)tn9L9MuhXpX2!bj_;q}|LXAE_kG>hbzbLnp0C&IJnvVi22ore*BjtkBF_IhkG=WKCC`m#VpdDJ*D;ZpzLsA*Q`JqqbR|csxs&7v4y5i8++J$R=1L1kwad+_U8^!7fs1)4a!X zHH~jEy_Essm<8%7?BwMOmFi#fg*e*MUc}dxk1IEF@o(PM?74(Q^8phOb=}O=4@VXYsdZx}kj|%x<&7&OD|5ff1M& zRP;LOXLw!o!aXH|v3+Jb*!M0|frQ+BcC<>xSb(tVS-yTgwI8M@|4THnGBfr|xmd};1MpVh0b>R@3j7m9v%l8d0}A=qD}|07#W$z;aO;EZ zQSD$6KTT$k(Ci_907R{gJ)$93=FKSX++d7uj5MIF8zy>mIDmy@R<&beGO*F^qFWV! z7Z;ZW{PskDEPa5HXeCC!4>30T^ul$yMbGqe(Ms#IEK4XpH8u6}f;`oGit&52t#@!- zdoPj22FQX6#|b4Hf&@N;slZ{N6-JN8fPDD)lK!k07WJh&eFfvIs-kjDb_BG~*`l(F zdwHm=Eac#L{KrPa)0<~|vW@k7U%QMq`XPATVUA|sV^`159^1|EJK?p3c+b5et!fS= zAi1VxIm0&S5q@*!p`PbPz{NsLahBAzwmn8bmIdw^z(?{Vylxk#c^@rxnCfS;*5E2v zT5R9(2ZxUy=UePJ&#*s7`{EYDJb%yL-ZfbW8*hj=_z!TO9>qCj8@@D#wD`8b!%@X- z9fP*rAP0?sV@01=smYQ(LpKTmo(L+_q;I!beL98}#HZxaaK}Sr+S9jx5np<5u)E4= zWq`+2Ra;5W+>Ome1{I%z-AAe%fqw&vYgJN#OpYHR1;w8sq~MpUKnh-xJ}I#Wa>_n} zH`gxUv<$01z%iB+uuh}33U}&{eP9j%ex%mOwr-ED`2O`2Hhe$1Igf0!-03JnDkX## zaU#e8P+6d;A0B^>X|gDja`DgObAEK7yKKG%NZ?9q>Y;!Z!bs2-2a6g%8VBir z@Od62fog}%z;pIhWc8tL9)*%WQg`VZ9t#6UhjpLdc>& zw9_3_%;X@n3?*T!{;rYSKu~6ZqNS=4C!qntFCWB#rDz#i9I6CZCcH(q4lJ$L}yu|?My@*c?8VBq_FqIicam;WkNq|2| zk#XI?sG<0+SGXr(e5l4P=h4yB3jn$ zXh0YxS8eIQGfid?8W746P|%&ViHTy890;xeuRt?fl)5LCz(WNhbiSd&EEzr?xqg{N zuu+det$V(at|Z9Q4&y3jJ*Kv=diWRf=-{# z(GCC;U0hVemqvKufzM#6xl^UiWYMjau?uNox%&|Le_}77wm4K10M`aF1uZ9N=yhAi zcX!u-mIXF1pyF&~W-PTM8bo%bG@fi-KcPTMP(4o=0Ub$2&Z+4{G+4soussiPAxPE_yP-p8|Mf&`33L(@%_0&#Vb3c%2lFl=N1Fdzx6ob%AUa;3TTH7&Sq+H zB-CF9IYbcJJniY*m_+Me!a-9v_8!Y(7Ic;qG!visGK`5lep$lw55|`gD|mKvdi$*I z%Ns1flSVksoj8X-M)d8sNxac_Kew?iA;Z0iV$p!J>zr;%8QVnmuA?n5L^#?+p^t@n z-ES%g>gEuR@9PglLyw`8goR!_-YdDcq-erN@IG2I86t#1rWsH|B6i~~6|F|C=Mw!N zyc_2OVOeTQhZ}C+Vi2{vny~U^W`ETF{;O*Aaj^61X_EkJAvuj0sk!6VC%1n5IfZBM z3cQ(9C*o!;mjOg?_EEmIH+_g2uP7(@sm?lOKn#(?VCl=z@8Y+AIM5nGT?SP-`Sr0; zgy-`gKzP2wuK+G5Y^8W}?5`0^3>>@mH4d-nlKCD@J3a7TY^bIEAZ>b(!Ig1qV2PYpS=L$gvqu(AUTT0 zx+C_@=}*ddu=L>%nE-lGyFoCe zWO5*SuLmHKi)QFXi)bUx+;qmJ-vJO2sq|?X0=yyl4{1FJO!sEDT^qq@C%xd9|9qy@ zribm;LiX|CbmW8`&wInqXHq{He3@yOQNBCFb&rt)WcLm@ubsZ9j=-NQPe83u>G$v7 zn~QZgFu#CFxBF;(%UIEJQsH3TWgEfRdtHULa+)&q|C;7a6( z_soJiquMHKC`uY$?#qv}cI^FE;t*2^`$q5l7%V!$Zd6f6?Fv+ifSSh~j$_3Qc%M-M z?E5E@bw;P{2a1w!rJO}T^t}M}pJX_L1s~!I5A)(Z4m~fmd+2~dw+6KLT@BNJma&Ok zbtztqT(((!m$auY1$9l0Zsh|eNh{yyAZn`lSp`I5Lp1=%Cz=vz|H)m0;e4f5dAtVO z=Gktj7O?RB-I;1AuoHD0`KRAX{lDqA_)9Hb6Vvu3@Ed(;`ADwBSavDJxnU#WwmL`v zM(q)e#ZPZUg1u*k->!gW@0oxjyT9y36z~mS0|yVpY46YPi_=J~8*cv;P&PgHPd^`1 z0yAoQaSTqX0Q4rH`lGpQ04-J*KCgWXT$>Xwu!t%57+sq20%qC&t9}(G2Mjc;)gFYt zXYmb189=LEk1j}Fz%)C6f` zBK-5rg|P!6v;ydwsA~?To=3Rr(r4zEqb}&{pJ)I+aL4a%#_@=Vc;`bC-PQtZbeaYH;YmU~1kzM6|_W~VS z25-~$+In_x%<{5u;{Y~c6vz!t;GU5OCzT+aR4vz}w;vqBk4It|y8U-VTfv=@3YEsm z;mUt?!~Z*uqW{W&Svp}9f_l-7Ky32b9_Rwlp-`I4f0N^eEFnv?%B~)5*GgIt1+?47 ztRy}-z5lnjmfb-qK41g|I%)ZcQ(f2gk0txCcq~vWBc$S=%mA7%gGyJiJA#pP`>Q4g zXa~uSq1m(egr`V~jH=($Lk9o=im@QhG-~jvTq=8WvI;DJtyFh~xj zJY2ZvG77ECCFn9C3kT^VKOh)JOll#1HbiJz2xaER-XGK?913U#^TEGDjA-k&2yH|i zfd#=risopa3xbfUn=>kyp6>xO4F`7U0&DcL<2=ZdHaTMIAGe);Z2A@(vF~l}z{>8> z4;^V%S5bXQ_6n+?{#U6BgP_X-? zJu*6A|3HwH0=r$!6Umlm`HtW8_xFn9?1#(&h%xE__gw;RwTkCTuD-W-jj>yoXe_hL zVfj7J5-xe?|)a0GQ-=8#w{Ta(ZVxXbYJ^G7`;zo)o= znG5Wi7Tq&GFeQH}lMo??nFLj{1cbd$)x}B(4i*{BT?Kn}ka}VVygYmecnD=0*yhIwD_^`38Q zOSHHJOr^8#0pJ(=OBVACwuGka7;Lvc#HTzRuF77?z!B?TzI=I%%ed)IgHfz1_MJwI zcicafsuxs6tPwu6f-;la0dhrN-ZgSx8xHXw=#Lm-{#}bCEEQQM@cWkrXZ1b~5#i1l z4Dac^4h106o}utnA2{XISqSR{k7SZH;`JVA{Qk4iEdH482T^xAN-1+p%m3NX9IV$| z(B^rhas++<>r3L*YpKr7|7t}t5xH5pgFAhI3(01sWwz<*MbzA`WP2}jJ5a4sU1jOy zy<)Dv#cLyU{>1)VY(hl0796h#4pBFQPEu@Jm%uY{T{XdTKLP{o%GoavA8(#U&x}%J zONp6s5k&1NClK*E1kZ%cdT6NBH0yyUX~8Mv$zy!C34WVRxlnCE1wslR+(@=Zbi z8@B;$jdIRuQi!sWWd}VS)(gY`ci?Dd*jK)GUCQL&)cvV*m~5x(vt~!+v(5LsvIPu0 z;&SE*PW(HB^0sdjWqkWMB`o-30z3LfcfXZek(c|YaegD~ubV(eb^bhb%V1=z_-+hST6I|!=F?x*MtSD8GsDQ%kMtsd4M<{y^ z7IdbRtB;k82xQ)r53)TS7!Psm+!@pMLXe z?~mL?;Gjy!Qb_|+39$4!kP?8q!vgLC4zCNc2s&px&%nrAzfbJyE@i*LBVU$~OGnlm z>ZXQ-Wb>SFn)Nz);(o5&4pBzJ(UZ;!&6)wg%#47va&$f!^L||uENMrI!|{z4iwBpo z^tir`4#g#+`+E_QtP41UT_Z3{ImFATc3+O9)WXQd_5EJj+b05Fpsd5f-zo27-~RZIWr*M2{b$ry}dDdYkUY=HaH}j_~a|` zHV2}1YoEoE}5+`z`}Cg z#{8H`G#w5&dU7@p!Kc0k8iF=(3HqK?BUr8enYGLtb(WTZKowuScSP*Y&Ss~k&THPd z!y5osEh0GxC=aiWIMsf9dVjrMGP$q$Q;plww^wAk0 z1Tqa1$197dWR1t^d#8pL)Wz~oRqXQY*f`A#Lx|W=@eg!?!7$*EPBVbO2p7NQIBuLV zcY?|o`}%kLjn~a3F;y;;a<>ungGgvU)0|17^SS)xPp(9^(6Qs;6GWT^veCMUK$2@O zyrCb(rx1oKxoTygEMPB;NqBB$^5-Py$2<_w4^%lC{hB1ZYXjPuo6O&?A<~=0GLQxO z2%pzCf4^Hki5#1yhF+P%Ohwi{}+iIsN! z!&c?qYgWHrlHD=;`}6K!+7r(ljy^<=@nEdO8?F8YBHO?59sL(23r<4rG?0IVi}o!j z0vP=!Rw33Jwv3j>e29Ok_EqU7kc{!59!dQr`1OsDl38~JAPwSZ?n>k`Pe5XijlLt(te?>dYmuOx`=?!GXh z_h2oie!w0rg){Nn(A6t!<#$CySw>9#r)|FLongG$&iZ4)^zSgD`&x2}D0;5Gky&d^ zQBpg9dIW15_xsoQ-zr262RZ8Eh0iah!g;U#MEW+o-+=nIVUSVW@bQBfyr6z`6|_*E zya7mFJLhQ(0)Sc2U^vvpb9F61vCBJY_AOw)hL~=Bnsj>AUy-nFJiwnGa?&Ty=yz=F zgENhrEl-R@uQuC^)z^%|Uhu?S=Bi28`|9%TaYXct$Y^bmwUVgDXgE?7R6B0W z)L(N|FWb54_rU1sVxy~+AsGAa^IsXQU%V5jyS`Hw=aos@bjcw7k@$YBAsnC|f|Wnl z8$1k{(kMZc(@gIgt@e4H>IpqUP;DV4K(yV6PHt30L}J~xNkHFY($vJn36P0O0uq{} zz~tk`JAON>ZzNIGc}cor$IskyP&;l5MHAJK2n-ivPM_tD*#VPw2~e+Y=U_(Ilae`T z>QVR(H1yYIC7?p5io}+f8*1O8>R#M|48oYQAYCp(ZVODSkw53Dy~wCY7_qTsTcoR- zTp=&0+45|kVya)*&M2@d7An$zgf=HLVyW6%`HRVCjn{c2joo_`o|AT|6ORn)S3OU<>V(c?ZBG(B4ncnb=> zQT}*DQSs|1A_;TS=vXYOcz@F^Ln6_^4(qdFS6!ZaK97v{`*{fHn5D;d6EU<$fd2in zem9FWM<^%N(rFfK21_$Mz!JNRRWDD3;ng1{g$I{cym zM3VWeFdF{}X5}mw)$qggeznw!qM}Y|hCH)WTV+-8AAK>oA1bZ7=xIM!UJMaiO#(j3 zXcFfNT3`vX-x_*fv&JXY>~mO#8vSm6EuKhRYCEHAa7yN5{;+*E+wQ@Rhnf;Vzl+J$ zO!OdsYOR#z%k4iWw@ll#8EpGnk#?@ORQNnzB51nv ze54+0^h6B(VadK0-49T06gOpUJk#jOJlzw;=X_jGg`5qJzoIGKZ@kDWYhOWBd>#7B zxQAS^jn}KLwbec23cf;m#4f(}a7IgY3l@{=UYPB4>FP*FiRwoy@K2)7RP>b;N$1?( zfvj~?srq4VKa(G~PPLQqPs?Jv{4=^s%XwP`)|KGZq<y5TOLnqPWu*11A3BD%9 z0~|73PmP2;-aU8X|5Sb>g2Z=Q`orn$;eod?m_Cn%>mF4SAs5=U2yw;1+qa6p8-uD# zvhQ-W`U3N)=VM#t-h~2&+n_~QF`GKfAXpI7hegVHJp1Uqpx<2O{oHNzR-U zac_lnw`ZYYE#1f0wN97&h^@YB8)V?##yPF18bhxesvK%}_sr*q^7`qE13}Z%;h1}y zQ=3)Y{37j2hxz4h6`oJ057|f=8uw*DT zI`cU6<;5~ocxtF!pyFPi48-(b)%4TKG`daA=#f?+XIOr3xOdHw__kpguHf-@VgJuQ z_SN4(9plnTUQzRz{hF28Bf6BPJTXp-pk-MOD=}0KI@@)k_*m|J?EE!s!<}4FiJ3=N zKB+v#3^z#WUtZIRtJ)35v)B;him+gE_2T3|O<6fO{cR!nY_JGHOzRiQ+KB<;B#ixf zy}|d)E^+t5{4`$GpfqTRHeBp*6}k|8&nI!I{0*^5ZI`6`DbsJyc0C~I%N!qM8qK-$ zW;!+XW>Sk2G=YXL@QKqU%r_OOzj^(_qY2!9L1zVfV}#eJ((VS7JdTTrMH#;=@mLsG zW*(&k@k*cVmqJN=MIG0+ZU$NU|-t*1d1| zQ>Ito-tgy4fYT*|upR$*pa*@{9}DcSl$0zdw}LjyT&-K$wqNCC9~BkRYKs^azjdW=|3{g7?o^x#nU>(_`Y?<+{eRGj_Ox)i;A zycGcZe(5*4U6-(zgVUC9Zg$X<_Q}0ry>q=*47DC-S5u93*YpZ=w&#h9@$Ed+tDWr* zC$<(?fL2%B)9-xMc7YM&#^N=xYRO!;4y@v1=V32}#u`RnO+x{@`lGu!z;j4#USQH( zZ?nbhNJU{Bv4*e6jqx1QGE1I)&@*zm&Y97#;-@t+b38x!NwVG^aE&&Bi9*te!)zJ+ zpDHb~NVEw=e@|~L-@-d#=TMh9s=dMZ7_&iPYE5nwdF<%(k|Q5hT{XwpIZLZhslHv4?JpoD3_8ndqP$^<+XOhA>K{|U__Fn?~wSICh}lX_{K+;^eF(58ezjk_$b>7P^sg(wN7hZ?OFg^da#LeA?ohYsHcGW( z58K(%1T_4rY=%GNrv|bP8Z$L;wU34hv_?RT=jv%-DJ@vEPt$KUw+x{#dv1tjQtc+R`*Xzuicw^aIuTq&*=aVAopYp(K{3EKoRg zldzQXy06`n73HBap*_+Exw$!vJb2@a1EH5dvztO%oMP_9H0ww;o)ZA_!JiKVQBk?F z^T+-6k!73X3EEGo%`W6{OcCtOKgtlEGW-3*c~m*2*~}@)67I&w@%`MGc%j`vw5r3O ztHVXc^pQdEy{#W*@m3VNBWm5cdwCDMfkJgvXH3%Z?vBQNPMRd^^*mShljb|az!2^`|1j>&z_{opBC_xGgP*R1JESj9Im)T zyr~F!SxhRuCp~J`1Q}3zEjCIv6g9{pczlbz* z&8J@{fOf5b&P|5DTnh-U_@cHqrl5;3MfXqlD51g;Z0=9X^g_v*;=Kg=pA?LoJL3?q z^q6IZ&Rhe}J`|0n2IIPVy5k(0+uuJenO?#@4?2dnLz!w37K=S(9W}t?_2tZN&Ht`7 z{$n*mUmU6WS_(G2Zj za&oYxi8DLTqv1B)dQ19dY10v#Io4i#H`)Z<(;9+%g~rLwYXl?3-~efH;foI-Rfu1I zAk{7NS$~kK`$a~&162GoA`~8da0@z*aNxU|T(nS#H6_|Ja`b`um{`yn1!e&8VS8>rgTH8B}~!(3QsMN z!cB$b6Q}Td$lI-V2mM~k>_Fs-)LG8V3yY!H_+q*QB8Te5TCN}4#j#+b3 z1WzoWHM%=fMSGa_p#VXcsTO_FZ9p?62~Wvbdrk(^4kM@^0@r;1ezOkxrlJpoeJDAQ z6_BXs&w}gAp;TT(orlH+3quvp;`i`&Ttn18ssuYK0NGImjP78P^=PR0z3(_$+aHl@ zbAZL8!Jo1gPkc@V1bPQp<*kF$2Dl^OgSs@0hZPS6WPv4zx4gf+Pk%JC!z?MqoCRk2 zB@o>N&uG?ByC#o^DhE3HhI5-FpxF~}qWIH>{!`r@@FMbvqPOOuFw33=S#ZFd>eig# z!(T@2T!j7aqE@yX+y98yLS4W=9cJFf7i9%||G?cs6(DV|MfWWkc<(Yo+x$XXUj_l74l`4xED}UMJ+|iSjDeT=@ z)b?*(O;9_qyj#wl(1C83cW9Og(1+AJ7lA&0KzrO(zQ=dn!V}23Yr&{yIWi9KO%_W` zh%Bkd$m2J^yzL25RZdS^S-B~V*R^0LvT~{;yIKgn3C)O#p-G7l9nYm>_nMK0+X6YR z#Z$zSNb|^n0Ja1AGd)qU%MhM>*!WS4=u>!1BnDzNEExm;B5jBVunq- zP5D@03{9ADE;EX@a4yPAVI7t9v!{?}SN*pGE^8}abz}&BTHZsvYG0#I3f33$`{MV_UY-m#P{1C873K9aIEE%} z8-@}mC(^kD&ru^p)+WFK7GlU|)ldek{?7c7JVyb{VQ5^gBMA4{Edz(gK)VIQQ*Y_Q zF76I`{oaIyXajjkXxgE*3qGPZ5GMVA=#pfBpNbi>-r=V$L>jPl8#KT3ZgLuxkOTl` z38@XMk*V)73P2hiBSp{9HL1Fqw3i;AuoVOQbOd+QX#$aiw5A{T_AZ;(B(tT)TOp`V z`-yZxUVz=h-mt>QZ^bVwy~kR{D1yyW5rqR#%pL!&hS|ilX#11#W2I(FyppfKp~bJ& zuf>Y!xicCVXDJ?SlPIm|`b{r5{;z_6v@}G4ccyuyviXUuGzKHwfT4wlS%#9Oulk%J8ScOlV5&w=4 z?Z!8RxD7?v?KBUvsXQXvi$&pNe&44p`a_&>r=T;_rs#@6!zxzITU=54J7*4<*Je6& z+sa2%!Q5$`o^+Ghsny@8895s*Yl45L>o&&u`{{_U&bcSk;&3eZWk_6JwI0B5j+Nhq zWA)jkJH|!Zy+(!#%?x-lU!@Dh$NJg}F?k_+53%=T_Y#V`F^ZbXBs!wLixKIxg%>?6Oo4dWc=haP~uI_a8y+V{`ED7M~^b@3G?s4W2l=F?RHMiC1k6O)TEsg#qhf0)Arnpbev z)}!~%*~uBA3#Trn6T6npU#hmH2&mutaYv#2e|JVs@xq%&eM*C{vWai%-cwIm^w*7n z;$V!B$`00NTD_s(F4)J513G86LJUIF^!TVpYbKE`^j9x2c707favs|Azk4idZv`^L zYUuV(`+76~Sz0-C0C^AOLrGSuOm7^`yoG4*pKlT9XBtaE88))dUO8Xv zezMd->{0gEvB^ssB#BfvkwIH?R5+*jT;Dz9nj>S{_z1&g^W=89DX7C98A49j<5J&b zB^Qb+7NM;BOx^;tHCt4Y*(PT#&X`X<7SKsRd;+K6&`~cC?8ULc9VGl!mc<9wdba;; z5j(M;GNmt+Q52~r3PA0>i{8;w+t}6VH_nB1n006dby$*& z*t?8gA02%Fhe*-1sOHi`s04)y0 zprJ_}H2o?9Doh}9&JT(qDuGwTH7w_4KiJhid5$=WBXrcPliM|{O)Qi9hl^DJ*AjRR zP;Fa?mZIJHF!;e~Ka0jt_CDItX8rfZ_K*>}0;=c>_fO|Mbz;n-SZeq==DF4-KJqlt zWd8I(nWd8CpUvsfbdCoIzZP5wlFt#IXQ>uY8{=86cn5yz^eP%;zKBe@2$(^E&re)h zh?a|i&MX$S>uX19`*+)H*&;z1P>D6^ZgrMYcP`W2@FE~)!kv0OuU`6vWP=bRJxhvz z5zLODL2h-<6ifpVZ~+&SHFq8h>d53jM%B!m_>bS_MoB@hKw$P9bw2?sWF&MO_zVQ> z_2hMC_FIodWVlPmYM{eAQdCP~0Rr(6s82kMls5C)*EVRgBJWs{{%8Fe^hVoxAc#Yg zP_gHf`A`-SU6KyeCG)u_`vDG-izQmV+q4BS3AL{6K}3{`fzUn}9Pxm3T<#@aQ%G1n z+fGT9=m-y8!xkjuTYo9MUIzbyJWF6iZ5di?h32<=y>JW3-O zfsSZPgO<@A3}K%@aXeChXiFt`zP;K7>wi@sjcGLRe5d>cpD%Dm*yi0fG)es>rsIzE z551oJS=?Fcu7=_D6n}Vn|7_Jn^!S-$?8g&j%jD<_#a}+=>SNd6$Pgz)A;I|P`PM?` zOfp-;Asuccg#NVrVEd+RFrOm|2fQfK`rpU^ntFWvqi1I5Ty<#cJoIF#5u!9CoM!d`;Ljo;$KWccCL+F(usq;0@w~gG27}A z87n_$C0WaBJGHzMR{p3!VK{w=KI90B%##=Sd|*HYg5C^H&8bmZIYYI1=0_3zNiHIt z{)DI-;Fl?5h*q1NwD#S>DLA=f3dmO)p?8+f-;8TTZ9ysKN90+QA(lw-R}25^aqnQ5 z5X}YZ5N%&nj_6<{#KFVcPgos71)fD7-W;SnkAE;sB-MFJv3?I;=R7(G9v&mod593@ zh&;L!7%sRjNXGlPAK{4#X6Ws$ya>kvLC+q=@yD3TN`m{x_11gjh}#kPPY@) zD>l4=So;&dA43FsAOEt0kRi+uK1oppACU0z{PWop^xAV<=k?Xsimn=nyZ7trC4X6@ z)Rc>78ZwMG{@J#d{E}q(=@<1v} zR_ke$8s}cNJz%njK2qb$JD``YK$>SlE4$b#rV`Vbt`$GlUqc1DyjP-T9xlZ$uf&nF zD-MF+v~{juRjg94`cN`fcW6WCj2Csh*z}&NuPtW2) zw|bin&8xHJAk8>EoAHh=YK0zZUvzG+eJ zjNy}=u|#KO#NU$A2{uD5L%fG_@9W=4(1(1{f=3Ms?PQ@4Ja$TM80c<$;L~k1EVf&Hpfwe!p*Qr^-%)gCCw^tX8DeeB z#Xq@R(qLVJ57d-GAH_ikR)p!hU`3pdp4|L9C`l%$8b0s*@u8dH%||R3Wy=Et_)eTU zeNpxyVYu?6(pC;WTl0<=*Ds<`r?@&EYHJJ6n+9ITBS0l!$JYj|qi+d_h@k2*_t zOVx=~*Uk6cE^z)>(w#p~&;l*BXcB-#^V0D6MXK8uaPM)=GPUhrw`S-+#4I-EHC+lF zjr`v8hGUN(yIROdfu}GWQ#!MfW1@*!Q&NkFkj?lwjePZl47&K(Mh+kvc0Y?^37_6j z+CHV)5wvuvaFx&Im?Cx23*YxK4FpdV&bp;^BOBP@l@N~WPI%`_6O(K{v5x1 z2Q(l<3)>-&MBcNX_5cycYvpB42%Z{ePu&@ZgYFfarwp9Q*B_SlC^7^?jY|+uZW7yr zqc|_?B=h?&@I|2zxF07Y>|Vd=s9Nyd6D}Pbi9wLSOFpOoBNKh#fjhneG_(!#NBrrh z!lUGMbiIW|9!XvLXcNy_(B$D!i}7 zoL)@cFNH=%O1F9Xmr9_$kKf#b6IX^$2wBM2JBbaN-P^o7?*#$tw5VzmZ1@NI%#O?+ zecD3C5AA&cx|l39{cSf|V)i_9e&Hm;PdIB`K-m4}j&s>-nljTkbuoiH8e918jNc2G z`zf-Izu-is?dFJov~nN*RjrBoXz{kvz&KQkqIjy7^Jd3SoPqTd>c-V5=hjR1Lk7S7 zzC%ZJW(zfc-Xgtl0MHlbnmotyYpSqWiSsHPG0 zg%%6TUyF#iQU%qdR$Et{)!H>Am$2VJBhyB-aKbv3JgHetwEwE>P1RFTM9h>^p!>Q| z_3}Kn8Z_+pp~sbw#zS&jH8rHOSLsZGQ5zA}f)v^xUfYSvUCrctNEj)lC+EicVe|Xa zYUr}WzDz^5C?X0<&24WGKPj?)8(q00uA!1F%hu-gSltM5eb;z{Hd`M!w&_&1QZ~?Lb@%#cpfWyN$qX&Ap2+ZcPTH3 zy8ocLMsv8A!9vR}$jenKv+K0!%YAc+Dr(%GUmcb$Vy!JD({8P78TUT)as&J6=DXLA z6zQZP$=9Z`Sh)LVExqyT8$`rn`b%oIeIVxs8)<-2Iy&iEZ&4y53K>;{?bo@k3Fp;+iPMZ4YnlSV2mL&zizzP}>~tq@+Xc{jJd zu)fANKxI3VdM0PkUcoTjWX@l`A+5+WLlwglP>a%``zc=*s-c~Pwz7yK5^P#)Z5(K0 zl}DFHktQ(;pEs92MtO;I3=G7ns7`n(jQeoJ6x_K>_H6V`sJ(pCerU;z zV}&>$8RXmx^Wl_Fp0H%zxTTt7enmUmwkTdM1}$V({*JDNOU-8-wi-7MO}3d3nD_E4 zQf^>LMTjSobT{dRb48b!_M#w$n~*=~Xq>J5(X6PlSFLm}l}{m`?}~&n^5fdah*P}L zH*P$kn-1?dKYa(Hfv9v5%n8d#rZ(SV_cv-%-(A>LML8e89-Q%Er;kK$LAN971w}!J z@(xaI#v26Ys(m5cR6kgj(Sio~4ox~c*V#yqgt8O2tniv{sZgm<4Zl1p&s=llg+N8S zaQd2TkXQw`fob;PooBFGHk3@$waK2tw$nZ9)Z;g!kPKn0t< zxpQZqoh)oQN=H%F~>6 z_rlI*QL4Fzy&%1sgcTC9rchY-_enm>PE*H&LvyHg7I3-oM5Sa726iWV32!M*u)mn& zBF|FOLW_2Yb(<|txS^<@Ccxq{gECM^C!V^EkesgV$P|H4>plFSqp_6^KegK!*wE&& z)ND+lc|%qy#VY}FVnSc(7P(p!QN?M>mRV7x1}~4JczOy|V%x4W;e{o2o%C`!uD#N< zGjnFuoRFLrM@@dzAfF325u%mJ@+0pyQcBzuO)q+S;9X^>Xxqk>WMSoDq0~*MJiXH; zw_BM5Q>dnjCS%#9PjY4K~{-2gVkZ59mdr_ zRO~p~qr--&Ys&c+S?@?$cn>>%ZoVE?8_FiwVU?wTdhm#ajY>^wAq?x#Kx(VeAKbyL zeMAS;V_0QQOTZ{RJ}MY$v)c+Pg`!0Rcw554Bzp*OgyaIDmhwjlV()jKFxuF8^*NbJ zD2v{Jl{lo?+(PYQsLx6JOmahTzQp+G%;1cd={bCC=vxqkc&Wz?T)s&4a5>y2pRdUNQqI(Z zp<3Zm(O94irR|`9bHNR+{GLjA`f;9|5Zp6lqFr0*U(U>gxMc zxlnw2r@j|OW&4CPRrz-~R-Q5Q#8Woe0ftv!WL`x1s=DojmVP{e5{C@>q zxu~NmEewViA+?X=-gc^)N#MRP$d-Oqm3W2D(wN--Dg3ha@KmttwI|D=gx7x?6!UK` z5QWdXE8&F6wd3a=gv#I1keJI!D!+^prZiZ8TK+o#$HYKw+ZUC=TKkCF_w_3hlx>5K z_b4UlDcm`&T6T-%b)3TzCwr~r>DkH?o)pD* zHfn|{mpdicpN-gN6)aX2>r&UPwo>cGH+2|!&y9*x3=a)u9f2v;T}Dr zowG5BCuXXG-?hA~{3w#h-Geny_G&~2Phe;zyL^ZKT408GV8E<}k~n94C^Ki8nw|2B z#c$fU8}n9dZEdVwp=UV@RW(QGf^u@Jrm{#@ofjSic(>gG&+fHIJi^7y85UBt8%Q@eBi=?#gng;0#?>K`6@r@l9VE z1$jo+YhjhRt46quH6VvxAdS~|V-Sr2>Ibpflp+Tii_n*C0 zJDcP#L}WD;;BRp=%*9gYUCs$SB^AvIwkWPHHM60XbPor$A!X5bYdszzW!7AsBV)CaW)T=L9`;3>HY;jcc^cVs&%(SoE#56~4w93X zB`Vw}caDrx8^p5VCR)F6g8nx(l&_4E$6kgfN9tiNQB%>?D$T1ld2CVJgSymz(XsL_ zEQ;mpO08#8B3z!VeaosX9l0^%q4_z&K7392GAHh`-(km>nokI?q1Z}ZPi)H{V-K>1 zWNnZO#s2gOThvjF%Eh8F{)CO9!4MaY0!_oyWclU%oAyJ}Ny@M8E>3k|{`4!vVpiUN z`8vv$p}asdcd|NLd7L;HR$=qMA4B%Y8RKh*ntyYvW_Si3Vh0mCE(J!pQoO7El8xiobNfw}0M4&6qI>|UCR+__)%lW{9lEtxw4Ufn@-CsLpS)`;t>yPp~W<&OX zM}*uso$rb@j&qc@)2e6h-G!5Fn&zcL(_5NK8X{#`{3oZ(`f}skQ%a2Pp6%`wIi*Dd z(^T#y@%v5!1kexY#!OqI9w!zWo??N!hr`|BdkcmQ+m<$;q*U>5ux2RpMm+0Xv7VEs z*FHNYDhxoZ;9O4JeWbL;#&CQ3DhWr75x$}$?&g#I5%nP>T2uC3;(4OX9xmpyKKl(2 zl-EBk7i+$zDfYgV{IgVpl2B>RQ&(CQGp_k#vpdV~Fj-ICyvvyc;*|>{vu>OedYrI0 z*e6KzISs~yg;m6T4;fHqQGn4?HRx!hsBqv;XWJy#Mdil3O^nzRxj#n6PU-ag&hH+^ zGtmjM21MMrxAR-;+s5>6H@Sk54=pRz;{0HY<`Z@Y=IWCbHmv6 zwr4b#S*l^Rb7mxd$0o>N74h>av~r%#Cx0K(rH^fMdH~IR2!RYC27u;vyUDT?^r$HX zs6H6U^p}6w#QLL7eK?JmEmln7u(GwC-5^!0j<3K8Q&@g$t-l%m{<}6&C>{8L>gc7JGR;`bNz;)lM9LYj;34jGE^++}(VPL^ zFHon@RJO+huOdsd8srJ)QNxAU9PRv`&9xr}Q#@IJ^*EezGv6v29{Hmr)L^AT@Wc%o z{@73?g{aEn$NIB%1;h};FHfg^I1X>}araFw?7xXO*vz|#XW`Dz*orqVRE5AWLtvP5 zf)kvDADPwh*IZy+(Xs{#!~J@uOi**g^anmheIGJesUoOKnFKA17}LDJB!2@;@&5SE7jbjQv>Dv5GI>n|tp09&gnaj72dWXs zAnml#w+Q2y8W)34LA$)B);s3&2f!eDjH%y7OSGYa;iR#{Q4W>>4N5_~UfY(g{t}tT z(=$C3G0lGoA8F?>`K|X%g1jKAW!`9f8?y-s>8s0JPpF`SZ3kqHWI<5cA|8%CeEb}X znsCRdNzn0ICqb^Wox%E^#^8FaAQX9VKc;drzt_iV$=eO3dQq=AH$755=?yN1YaE! zp}I488b`chA;}Fp_90^RILAh(-#t@!LyS_Y^F42!cQ0*oYj)e~}SFBV3SRoKz4qZ6U@j+AK z-}i?RNUaL8dl&d9wR~**&!6&?>U}G8!$@HgBLZ>aNUtau&Ruf~f%){LfceyTT>SB= zjG?s+DFwGkK)C|$2c)jMSQb(unC|uqxIzlfB(p&70kkcxvAZ^vAz?lwvlT0w2%v)G zjOLK9I;!M2R`z2ip&;ov@}*uX&z#Fnr7w?!WB}cOOZGxKo>25Ab_%DTEjAq~avx?|M6n;{y2u3@$h_XL1HRYm z726U{^-NU$gKyBVb?7ip91tzaUV!wyf^Q`Ka?sA`OTNx+0&tp zviMI~w8Ubo0PF|>N?Ky)dt#G=a!wh^Gyo`!G)4|(E`V5ufVD|FH2wY|^mrgrnY}o6 z!x3mDGl!pm`je9IW3|o!5b|s3SibU=ocO7THySFk_)F|?O8D`OXvh7rIjXRL*bygg zuyh(|J3^!)O6IGt7@@hILe(po$skG#l~Zg{r1FE${{l)v1icCLBJY=7RL*9L^029R zFJb>_G*;BvV5@(%3e;Z=4;k1P*|A)OdkEZf%--kb>Oko=n3ELb( z$q;4Q*rq~dDrGF&P$`6DD8n|}=18QS5(*(@j0}y2Bx4d~4#^PFdtRHKr|s{;p z<6Z0bTkH9+-21-n>pHLL9FFrizl|=&(+CR$ZGoeKfH|7N{Epw6+HEhJI2A}zzU-yg zE|laM>Q>gB(^AjxH=|*A#$iM^+qFAQ9@hi-Z_d-8Zlq@8?+dA@9E2DvQ)CI$6lnBx zyVU2dTT}2u23Brunqt|fCea9zybwWTsi!Csj-m=W_};b`3mv!Bdg|NY)(gVi)|AXI z)Ero;ep%}PghGShy<~!@g|3Bt^uEuRTZxIR*7g&>;LN$3iNE$@S6)7w&`HS9q6aI= z`UutyIYOq7qb$tjL6JHIa0dqi{rbMLyZDvg_HB5p?GH3pV5gR#bMzHmuT{{RljI@E z1obg`IAsPsu!PF{E5il?f693cGsp3(_3egNqOVKcN&RsrNMECnQWR=5-*J~i0=&>)#@RqJ7dQ<@R2 zbE*sMMx(K!Ha_=YJ!0V0*Gg5r#|YQ8b)YLds+4~?DEot98W#;*Y)>?lLN8Rj~__h7>p>Xd(y%D*Q2c=fmk>34%NHt@Onm;bH<-{ z&^;#vw^GI{2A4u?LE(c^`@bH&fj;ijdS$Por%vkBd)g@to!j_c951LFedYIOLjQH* z{(00&2ci&4RL$XqkM(D{^8VH03%JZhrnB3*@8Kn*^QJ&>Xuy<_NmED2H|g$zcXGWo zRsQw&KpJ0t`1+Aw3MVzxNng+Z5fbGcIt|iSSx^`$>R{MkjU5IR$2Vf2F`67A3*0Gi z<#^Lx`}gxe8Z4D|+9p9xYMnpV{hv<$NQC*gyX4k~Pb0}cr2f}{1%lR~Yca&5bliFd z4eULF|CUAT5s<~r&yU@O2s-VR41aY!imbe)UD!rg+Nj1U>EEAMPod}5o7i(cofkg# z=Gk9O2~b_SHnJ$Dz8HS2LDVErDY*POi(av2(}BMIe+!yM+|7~ zAB!G;p-74D-(sVJp34pkwo}Y9WFv6L2ERk1A8Yj>p<9 zzdxy$bp+-u1M5=t2DZ#TgV#eMFrKZNf#N;D{Iz}H(Ox*0nsb|Ie(1*X+03yu3qs4x z8D_=_oP^Du`TcO&JUt8t)Z+CI&L$fN!cG|f_fK~&bipbP%bdFNA5>B{B7BuO_-}nu z6zP+TV;lM;BYfth>M=hRPC~@`>wVL%d(^d(j3%#ID?3Xr|h7wDXnPE+j$5?vIlS&>%FqxP|?4`E>AXZ;cPjpZ8huX91BMzGtxh8YmLl6|D^dk2>NFh z5=hM70ue+)HUA@!y+|Nc=2E>NkneY^!0hv2O zY>yZ+xQtB8|0R%d81Q@TVJd56qO&=r!-u}3MPhZZW4#q)8fXRUUBrFGn9NxpyPyec zTNX4HzAb$Y^UJsOYR;Xl5G>xEDeZ<>cpW0(d#m>Q*SDYv zV*~9O-LO^*WV(q$XBC1<(vqRGRyt0bVMHeM9D>es5K@!%105{{Lx5kKJmg#v3HlGi zr==rvmp=K?ZcvZZ|F2-wobUJi5CSlU-L8Ndw*@yl3*_?KA^>y!{k#V}vDZOUszX6* zW(c3-&p>=PmJo|Hvn9y;-&s8qBJ;e4Kj7EwAVg(6!B(QJQ=k70v>gn9FJOdBf3xzR zU(@R$f1BqBb9k%gBl2kM*@b~JSfAfuc09u#6?DLnoY&GU1b<>Y8WOVgmk))ANup9tw(*^1^2TTQZ=676@8ZkJPqZ@A!V! zJ=~_3m!G+e>LfLZ^JdFPzBAlwgjAM#fG`Xs6(!tPd)n^93*UH(ZscQq3TB|YyctB- zS5}1jeG^{rgh=6dzQ8w`Bc+P*sdf<(bwHN6>^loctEOgDEUK>rpO+7gbYSVwM@$RL z<6>WCOWqw~Om{8TGjBX}e{EEM#0>}AWfyD;bNAjKsv&&6!mfRh0tzTxW~((nD6Jtos3e2>Plcm+dD)bZAPIu zosU2>uy7uzB0`{eRk|%8I~ak*!Ii@unJ!(x@lXfgg$7}5tMRp&I+&aYIIPW7GryMV z!a3%9r~lhhjUKqQ8mP4u2JvHMzcGVT5q@hkVQRt1$OaQ$%>7am zfJB7OZu$PWW>xyE!uP3j0V=4puGG%_G2X%Z!n;1g-r4wxL9_ppUtLUZKIK5NeZOt(Se1ekZ9Hc>X=pJ zKL@O-*_zehm?Zox%vk&Mo+`h=zCO|S%U!iq0?dU_SPt zkoz^W_lEplV5Fw@_`(ivTK2Bto8SOH*4omAiwX(Kp8_}4fu;G5I3~?szyAf`r-G-! zdeeFk*{=Z!p%zcOHMf ziG!g1!};I}8UO0;K#3JKo0AX>)GfF>^nTBmSb*YQOg5)Lf zf=iXyso#+$2D_gKS9h#|^N1OWusJ9#eY$oV|LQ@3)eZnE5x1W5n{Du|f72q;Y66FJ z%;(YzV2XHBSKhlmH35}(f(u{oc||^Zc5uq&t{O21qdi)R&-1VMB6F9z z5vENJtBDhlL?QiDD9=?7CrVrM;3vj{&BdE!1@Gi*BN68mKrDd@l2#=E#Q}PVx8^ay~`NwQu1J`jW zojh+o>gf!jRq4x98V5*?!M=cHBR(;$sQ$;%w+_5 zNEC`8vi}A$N$H!kcVFw0f1|oQ$ba+g^33|rlB!0lB)jRv6v`Mza@a|hCvxJ`GYi8U{){7-RcKyVi-wCHxy9a(mA>9 z<|iXbcU1fV)P%0n*lEpQ$Vc%b0WZbEzlSQe1}f_|mmiq`S*vE@Z)YN$!SG=pxV!6t zb?K3K5B}Qf@`sw8+%ik|tjOZlMw0nOQ<3{RDTtU^(h~u zv(LX!W$bKyq-y!?p8g{9VYkO=aIeV0y^?rSUFC!NovjzM=zSs<%3kps#?`=ujhn5l z_=GtO+{!07PSYuf=F`cG4j@oZCf;82wXcBa4Kgj8=TkVDDL1It4LXMB+++5ro?MiL z?3nOA(vY59AAmmWS4%7n$Oz2l&eoz#r+!kY8f4J0aJ}4oG3ZjST(_9xEbqXQjzAKd zNmEg;>mwsI(gGYDDh$|3yU$U^pJ``FNjf+lSK@Pr1=(A=!r$9Hf|&wp(4~nkf91AL z*ljztk2wl6RSd@7%c|Y(9z@)cFK_~*civ7jHtSwPo+-I#Ax6RboWM|^xv>q))y=1{ z9X8QQ8l&yoXlSN)3||aBFtmyPHKbr&0nE;Y_aQ0u_18*IM3G?D_ug=C++I|(6!F1M zmKmIr-~0`oVlR3#ZJ`c#uU}SC+Oq{?8YMB#bI{LwxFOZPKyXzff3_zYvfM(DSNXe! zaXm-+&y1m(xs2)Or9`4qXGdEn;QhC)q(m!!%)}2!YV){kcZpWS@p#s=y1(^4b48@u zuJ6~lc}>KWjoQ$bqR@Z70<^rZ^J$Lnd_NgK!Rga`jJ%ri&tWm2tByz=`6tLr`MK$Ndnj*e+zAB$18) zJoTXC@OX9EhE?x}vvq3bi%ftr!(E80I`IqEI`E{IFS5ET12om1Baf97x^(S}{5wPT zUYxi97NbVTJ308`57gS|j z?w<6kYQ{!Bcb;X>6uMe`^}tLu9DsJGFr9Q+`K@PYMiB^9o9C*1p(bwYvk+pRLxNE@ zv4x?I-o&UQH~xjGfi$PK^nxkg=u5~Pg0Swm_|8bt+To1~lLW5Q!o>?Nzb1b<1^jVs z2h;nC%rAO$aqWvpw~O$?aj-~=f@9m8&OXf7o6Z=)JQN!_?eZ_&I0p{l*;{mNTFdIa zxFm_FGtaSV#ENGRa`nBgQ7>+yPYnErg(@ss=DM8;ImyPMSDRj5Bg?uiT{LZS`IZkG zVQNMfkZs4d4nD^zOB#BG->(9HmI+z#WGbCdd8+uCkkNPO#H;4my>`fXhl*mc-X?6c zcmpu9a~&3Rt`knX$H*F&e>75F^tLPZD*iPCtE}kAuV`M6`KSA{F+@&bHR`R@HvCfZJ zIr#>TBR>o-UxCBW-hrX$O;_!2qKCd{`%IhR-ZvaVgcG!MM<+EsW@YRr5lxb63Z9n` zOEjQy_IzqzFdI4*b-7W~%toV^tlGZqfnu<~XYM7V_d7WJ#e>)Y!jRP5?RAWrjXPC+ zXEuRIhutnyIior7JUS8EPEO_C%PRIhV)P$^5yd?XbtvuAj?V{I`W~Sbb;2ol_q_2H z?~Idm7db$G>)CLmlg1a}#|iei#{xj;*hBgC*e|;z$xWo)sRgCjXcGM%lReM3nZ&r( zwY&?+rb%*qDRDQ7-4Vx=kKsr(B$M<*Et>UV#;*p6-|K6ok|UnCsWY;&x`P)QZ(8^X z4pm!2el3r9(H9QYR%BKQ!S=A)ds36KdcU2*U*5-ez!d^R$`cJifRvd;b$?BfQJZr{6up-SrOM zK3YH`VJT!*Kas8Ih$Z(Ca^M~XOhAX;3!K$_qacOz4ho-y66GFTY~<36pHCtx?zA`> zS>g-mqAibKn(v%B5On4IZJDUUrW$#SO&w2j#-kb4QqAt{U%$2xv$a*>byK@b}#nDZtOV#8xR?JW40!K zBd+3ncbyW7qh|{CF-!Ge|0z_JzbC%Y;rb8dM*XtzO(U{JqQ1n#tVhTP+5_6##mS~@ z%CB%d?5;E_btFyl*4>6n*R$AX?V}t+d@=fT$>X$CvW|vzk+YF;`R2PGe|p#yDQ>-R zQyzPZs5vQAfVqqr#PL7s-)(tKn@l&@$xPCDD&)eYXI@~~J!JJctfWR?l;|34>LqnB z(>_KyyLs43XmhfsXOtX+iTp1OU*Vx_6H;gmrZLJB$5$6Fm*W1Zr!kCJ`VwzdHEVX5 z%vu$Cz&@c)k_sP!s}=g;Vtr)3F(lIBD#xI;lW%ORZ(bH!Hd+1W(1UqKo9wDww? zaGS=$aW}kuTW~3BarZ+;aj8cm=P9LK&oWbI1c#%B3h zX<7R|)JR5Ggo?sKpYYG*nrGR zz*($;EMj>d*9MD=UBMZf?-6v492L=i@rbaFaT7&^?1Q{jA2I;;=W0XIOa{}E9O%^OupV#)VA5h?fS3cottNCao6Sd z2XnFSZ|~*dBy=zH2CJK;w(fm#`YQ3>s1D&hKao{5gScI^(h$=v7psRIJ4v^xeNOzn z%%jk~nX3>cjY@DaT~2jnKW0}PEBm6IKWtaKQ%d;WvZ7m?v)OF%{p326T`TGi*WO4H zx!tAGJp_C)g2cz;`v_ezh4ywW+*vIiT)9AqI^Y8=*H`&!X`{ zOp1}?-vi3AS6MwQ_fM-sl7MbCyG26Ssh@8JuEbB%HS(GmWq-rXVLn?jNY+IV1xzf0 ztqahuu%#UeS`*~*ajI2%S*-?oaQ~8j5flAz5QH^YPPXfScSVxMD*U5Iy?T2`s?DD8 z(|cOBY$9SrPmopi5WdpyW91P2PCf!iJ7V&T!@o|)=+k}6;;F;Ln?I^G&f?rGA5wI+jTi^Td;eRc)%iybuRwR} z)lufd6XCTp@;8o(+)QK_d0ECM*1iB}{Kw~3O&o=z=fZc#jcW^PM_6}Z2sq_br8)Tw zPXb5hMZqoM#f}nj{i7~Bf3-0&S2^7V0F=A_ei1?f&cFNF9^Om1<~?#BBmH}FAT|S;qPXMD75m(4$<#Pwe`c zCOU`@jz!3KZY~O^o=8$ko_eDf{krUvZeNjCh!L*^e}fJy?ptxn?n@1Jk9Q9Vg@{TnM%FhWLTs&uZ^JW= zd_^8N!9g__uiTX(XqPl@cK_RdG;4SJ@F6)${q948y*p^b+x12Z z=uifG5(c~Qy+i@NQA-)@iN6Nhg9dvrxlZNa6c~B47khtId-GgY5%0B;_;G0ZLq|DUAzdG*%Yq(%`&K1V}oHA~| zzs4PUNS&nM;dK*~m_*9Bw*>yx11)f0^X^w^f!kLY1M6cS-H-LS0h(lP9!OMcE%!-A z>kO@2t4$hzO~x%yV40%R&!AO4Dg;Zf;91sRy_$nwz1cgr6@>#=(LB4TZ(#T+lcfqW zoqMf{Lf^F`l*h(@Ki&b4FIK98uPm-MkcRm2PgpSC7)xUYzKipaEF6l^9;}h_8{zX- zZg|K3hN?dDM}DK<%Bvs+p5udytA(4^1H3`mC}`1Nzi=3}8URPm4u*{p7B6j!6hm|7fo#Q0TAjpYbRPtWIIb3ektN!(vQ{)#G?Q8B^Ycn ziy8rk6KV_k`uBm&2G~MU2^W>`)AeUr2GBbSUIv=;HG%=Uuyj>#Jd=Z& zYE<$`L_O?-b@1h5h}XI(^g&E!Y`VQh=)-_R`12)xXzk}rf*D*5Y);o<13Ctqp)R0t zAe^7MY%fA*1bu|o=0DO}Z9H=dhM%(P@1#ifA82Fq`D|*54i|4!6@chrA()c>7F-#2!M4YAijWr;dqw5tQg;+=a)3V#E@CjoZZulSk^9pmWa zya#Zyum2$Du(2^U1SHRLgMT{JDLcH5aN67y~VBTPeZwjDz#62|DVwpqEZ*CM6ese*B0Uk5fMgYQ^_4#RBwG z0IFsaCKsB|#yrq=VaTBUbN7Nu*6BH{0AW#l)(QzSGQ;0t4$Mz}134V3l0+7F-E8a=1i-U@uYyda!gL5T@=-aPoAWA$Ce2sa(xYX0p zY}>mTUJUk4F-%Zc1jh|<-!3RFa{R%-zffvUYH*FMT(`Q7K5>(M2?{0fG;~AMVog~i znf@^fl=+v{QZxSOJIO>5KXmI;09?3&Uh3mtT`dI-|PS5%@sw8@iLX6%fFg(#3nwMeX_gRRD`!I4q!T>%idf zEi8$TBCntwNUyBbO9M$H#;T7?gy!~|SF_s3Qno`D9=-ZK=L&2Gcr^t2CYZxL=F;I6 z3ve#fI@u6DUVN#<2v!)9(ssLGJPpuuL{zVy^I&_OXMp-(>vLKkN${lFR#@NNL#YtrUV-(;( zxJCIc2f!)|#BY}H!(|7%x)Fyo9i!-(MzM+qcuURGAS2MZCij*fXv2W zr@lWk%!>Y6-^XPDN8x2d7-F8lrp4dMOX#Z zt9R$2nOHh;@%^+X2Yc5|V`%#)tkYLvnI)jN;faB{;CBwaQBmJ*wm#kiFy0@2+1l`G zHcixw$AFxUR7FeQ`jMA~@Vr%vL0r&GIJ>dUPuh zW&Q6Hj3YHL*W;(h1OE;10Z4WW0+M<_m+pw!;6#6G)zUewU2$Te^yyz4JgbD}M%T8M zd4_MFe|GFd#(=mGNNIc3*-Y>W*hHKtq77P;E(@5-fVuhGwi?x~#T)o+2`06FU+TGu zjzw{>B(2(1ode*9RP;)=GSjujsVN^87fzsgJBg0Wapfu4aXg|nq zdJ&D30nMEFrJn6D(D*=BjwY>rR6_S-=+`H1JvWDpya`8WZV(ki@)Bt!KN*a9sZb7Y zMG){4_oPthMKnhC4pPh$SkG4~ajnnYdg4^J5xo75CMrrk`ZfESL2Yv$1=JEqV+xj# z!5g6-(B3&oNx5hI;#6M-tU*B=f35sy1rs%VC24f17#r396BZUvkWP;kAnhPXnOu>+qJ$x z2r$Xe>{V!hkvb=9{_0b=(=mUAk1O zPKn~q-b2(e@4VVec2kCQ57~XF`!6uErE=TNo$%LaqL%*Ez+bl(jM&gaH;S7TW!{v3 za|I&TN!;E}2{>hCHy7JG6oKYBt0eI=0`f%fxH%~o01PE{EdDdsW&kM>g0hfq00PAp zVyDx&RgSzZ2SVJ2D2oYBR5P2Ao_%n(X65HbPhkiM!qWwOI`vS%xgLG`JOJ&&)Kaqp11=pH7S#;y~)3t8fnl@9GA?J_3}gb?~jQp1}K~g$PGI z2`H99NR(hoFx;cp<#apRZrO$_X+NM1DajO@pCJ?*$}_88e*aLXv9iW3ub_;<+}iWl zi6f68wYI6G0%6W(FRm>hcqYI;glr+XBz&apQ1Ul#$U+J^u+SxhN+`rgT!zr_xl=sY zkt=|X8HBt>Cg4-^D+i1V1r@?Aai4>LbiLHGPsg(HLVWS!@1D`}@7P_v^mzu#eCbl@ z4o@MRS4plZ`MpZn$=^1MQ1(RW*TUl(CV+i=8mhgOCb&5sjdI{{$_J!C^JxFN$9^XS;vU6kqY?B=>$^eKdi>L)D2*cYZ9W$dx zNc|d)r~5vf*vo) zKT&>CIWR4){EBkIvUxyKm^R4^V(v}zr!8|oDhaQwK$TPK2th-UhIU)p{p=nIT` zn^1D;OW5+;5K5#u&hs>}|K(L~VP9|9j`OQON7R1%Pz)PrDPhvnp24B`L7OZ({`6SI zGw}9R)Crj#42OfS+r+(;hZGaoE;7&cI&DHaq}mgAWnvY3#d?bHSqU@!E5cold1`vY+mj#LK24+DNAY5%A!3kQ<6-O+HD zG;uBoKTE+nPvD!uk#y4O?!Nq?_Fw{mKNwUX99|~*u(EjC53sjt)so^UA#6BON$^6b z_bp7R)}(C<)DCJY&us=9j91A0y-T|@-|@TvIz-yKyVKhGEwFZRE9dn!2Twl%nzR7* zwxo>MTKlT)t3kYVbFiL%_AT0$?RE4No&w_}Qd4=pZg(OM%Q^-s2Swr97i0=i&#UEw z7unBD;q*gZFeY5j{532lcV`SCr;O%$1lvu=Ysxqh)K6jwtzwR(du)VAB5&|Ei4cTA zwpo3*h1a#UMGx0V7z4W9omWWy%>zU>|0$PKkuHP&a3S~~T3;9s0418*vjmXV zsf(Mqy>Q!T*+u~c{$Zr^&MM4x_`sX|krl|o<9nw$$nZOeVeB@s{N?VqaY~_V2D(Ij@)RITXUC)%+w~;$b7vfGmI|vxH96XM)^J=h;*?A-8Bkk`s|Wo?G^5cRS&0QyY*Sn*ipFPV-b*%5YlnM z#N{G6x{zs$W!?MOu^6)S>EoXt<yx(alxG zAVWBb?K1QJ(X7PKfRcuNgcnb6*U-5rY?LJrSe_n)aKUJix#WK8i=;IQhc^7Ow7sBp z-?*T^dzZGAq{=&y1N-+qI8S5R|7G{_iiS`wGFx#kmJo&`;B|3PMG~8HLjmOH!{OcF|%F zK}Nt~Lm!;_G2r)U>YU(bx$YF{-+IcF0n;Fq;SLvz+p9wRDn6D{ z{N?8|L{|l0y*sHrsS#o&NNZJJqf68zAJb{uv+WL-k$v9T_5knpx5=IJUMKP(j5KMO zQX`nxpe-18fx*FqyEpbDsCh+-eQp3#ic=^3d3OZfg&o>u>C#lHPwIU6)>EZB2L)$aG$f{!sS*YWnR#?8EPCOm80PEjY(7zTN$4o3&(M*GaAE+BKH znKq~{vcy>tXb1K!A|Q~;1IQV$>b|~vA2aCsbg6s3DnZhJ6Jcj1GAtmH0t!|#ap1nT zRTbZdjkVu?_Ip*n9%|^Q$|(@>bMeglwEGfBM}tjpYlF@Xb zfA;K&JGcI)DU^6EkbUIB(vy^`A3^FeW4&b*Swol!VqNNI=~J&JAO9fYRz9?gu;_$5 z6@SGZ8boZK-!8A7@@k1{^-3?FLY7@ztqmytF-%}$VQ6mHY^#etFcz#?Bi7}16dnRJ z2mBbys?dxktL(7?<8PDRXLiW&>AJ2*)?`t}lc4$>2YAcesC9JO7Y;LYZuc>I#@GX6 zf)%|xH4Dg3q}~QPPQ*9c6>te{)d$;kc1swk z{XZGK{$LT01gMLb&rNGxULV?Tq(sW2enK|Hk>T&k96yd9T+Mlpq$Vt@1PKziDcf!{ zmC&A_+nIIL=Y}MuAutZY_zKalb#euDJv#A!+C57&_gfD*U0>feVXzVo>?lA9kK$BE z#@a9B{}s3WpAq(Eqv;HS!=uH6t?N0fqdP&Mix$0*OAd|$hLCS6#zB2ozLp_>9OQUxHL7imcUrVI7S9#6?2?c3@=d-YJW1FPhwO+-2SM`B(5# zSYKVE?O>C*UoRzY4owRTz`GksX5kpweGm8PHa}dCT0`3nkS`~htTq)5v#dp}b2TmO zoN%$v>6_~runo{D$?DiC@ISRWQZvLZ*K(HpN4HNHeQKSetj!Y-?@yNC+JZ>{E)=Zv z;_ec(@?X+Kaj&+h=x`s|ncD+SLHMo&ti3zKOm5(0V=%~iO|5;)s>{}`3B8HW(t;lI zQM;6)+1i3NE<0LNJpaK&hVmkt6D^2QMcfJ{7YB*bB?=ZF{n~8HuJuf7!<)Sc9Kp)6 zl*@yt&KhF4oyI9PH1f^5BRCvpSAW>G0(^C3y)1EwAnh^TwA;A6^$#1uhaJC{U4fMl zFA_IGca$}S&RgIQ7C`9g3uX=`iWBg!jmy@|7^F&nQmWfbic3c(5lT|mC*chd_H zD97JWAJ4s(+nZ8;c^~pt!gJ#U0Mk=J8Y5o7gc^4r-SsnIU{e79K!sj7lKfSo{li5I zp7piN#tl2M2lLD)4K;n16|cd4y{Ak1TyG3T(0BnFSk36PP(MWXV^>3=`PA3v(rGAW z4u5n~0crJ;tdIvW=q>B$X$A)d*2=e}lGBvOaq3Ue%39WWg#@rwUx3{h_*b0-+DpN~ zToRp}8||h=03RAlRw&qJDm4b&_`k z=e6$#_Tw84-$amE!43b%A7Gfz=sWb$+n?S(zP$eB%kbsCidJUS688;tM}}b_Lgi?T z;p0VK4%rLC&4q)Zyb&AjXMrFZI9k{|B1BQ&oD``{d7&2X4Y0{nf*}v7q{4S%!_$k; ziU#qx1rv^;@0f~iByBGx8g&4k1zv`~YSKl>hau!aP&^7GKX3CoLizgz03{?}-qu4I zUo?nrU*n5EF7_($5l@uTx}HL_mI6!iDNWC5$`S;I5Li2vag5gUL4;L}!hBQMZ@ze9`3{HF+L2EeDA4)X3>d%Or8{AD+fLt?i zPWV-BpW7MAUIug&2SM5EW)8Y4oI;_!?N&P_Hx>*Z{BpXhw-`zO0m#gg^KtaXkVC

IAr=X1u9tjwW56t|_iOZKk8i`TRpab*c3QGTg84A|W(?gJX3vNXOOG3;{ zXx)Pn8UeqAEEsdjbU_PGxAuMAm@X~Q9C)!xhtZ1JNZmHPOzC}AK7846zH${>(T4`j z_NVmPu1}W)^!*Uu-EQ>dG&EhwsZASUC|{U{PTp^2D438n0WDbTp1nrtp+L~z8?c!l z+F0|;X`nnaJ_NnLu-tzVS`mRBN#1%lg(L$@2-rZS|EM`{K+^jVvlcvnsjNbgp3R=U z=+J821TE}Te@sEffaZaLDGL4P%@Il)FqP7=C*Q4~8GrkmP0>NuKIMfFK@cv%!xGZE zOQ6ijE!YiAA!#EU+vF+2=xp3}0N#Pxy}`0}&xx`?>Qe}gsxU)x^!B}?li+?BguE;| z^A{T=mb>Kta8olI098nuMhl z;3mk(J4nc@f8@XzJU$OO1`Zd%M4`mCj8e>>KLN@8XUbHyIXpj3fe2M z4Q^Nzt-%8p@;tCSY5R0`0P!8^0grfH}F_Z1oVWNgUl# zop({$BA+?lp!E+D?*MUM^hOPfE3F48ud4KZqpVqVK@c~?ppFV9bywlv0m_Rd8}e(1 zBg3Fq%?bs`vZViKc=9;WDtu#<7h#kc_AYOGW4!;wL zLyq_C7>P%gA17Z)uoi`E+3v8VGP4OjE6^<35;ly`TS;{4T29i(s~t++B$H_@Wt#OzgO5{Y7lb# z>=Tjm1s?$oVY1{uqB4*hJ`6Auh7Tt$8V#!%n~+QQWUD^@0H?)#&!#e&pwFOEakkuj zGEGvf=&O+JW|jiJI9tffKSJL3Nf1lW-QoUx1RIWW@-1vbIO~p?TXR;gPMuRUK4KpR z0LP(W69OBYTREpn^r?MN(EiaPgL8#q#nt^~P5oBj5U&SrEY1S(Mf24G9U0$Ah+q@~ z+g&htHVzodKBKV(LI=7gzDp+zS@L7ZZivNzw|_7L!UEAOm#QPMCV4J;u4dz5~;GaYe6`k zDTF=QI@h8WpoD@6?R+RC7y9IDn&b}fvfD!MC+8MYs(;*}1Vn%{Z^vr8E~^jSX+KIu zfPnB;$FUehh7r|6(tk1>ZxH$?WxMF3uir$`=&W(cPim0kG4;DWBJ@8}K~rjCF8tZT zK685H-Y5-K`#cw203b~*J{t!s>Ey%>HAYK5d z6~YZMnt>1*zd^=92*|}!)7yr2Y20()U3U%$79+5qA^({L(reHDq7;fiVU&6pB>!oM zEr_?@8+s}EaPq@@6bkChEYRx(iBeDGB4#^;V|sp6<9R1PFf1TefCY8}nRgA6QNtB} z0n#Rd608_yC!jb@D#Q`D55Rm|PDXQ}X40}Ir?Hurx+Amj~|ELd^ds6RjfMH}HU5)10gll-9VnySbP;#En;+>Ah=*&-8 zPTe0+X-K{nF{>~l;#bM8efbh)+oI54ArSWIQlZesR%Z#U8=}-_Ek~)qwun5giS4?O zRl|O{=SEz5y*AgF>X0{jO7Nw&#!>83Vk0RVu|hTZ8-WHkdlC0eU$TJXLxLbzIM(zx z%ox8Kzf?b|r7M3J*; z1S|;6TXTb0)P9}kk45x=wok`$A_KH4fga-Y>?5Fpk<%e!tT?h&i5#YzA89%;2hG9i z!LdH8*^$6WvyJtskwUj{L>bo-u{Db zwiB^>k|}vQPX;tLq0NKG}&iK_#MF535kfQm&tkv_&#IXj1$-XS)om zJK4YUvjMr7i&5K(AoDxMt8c}O0&37lacBL z(%CjdsrIk<6|F=8Dg2Au0$g}S6i8kfw6W&JZf1SPwUX4^E~JV%i1Is2pvIPxP7Kil z(rh4=&X>evA>EF-em(A2@4yyhm2>^ z7Kq;!o+TW@o->c@L6OD}1%mCEh7PUZ!s6N>bB>PB27FzL+%Sfl4?lUhEmkK{U~@iT z6oK22!S%6X1+~iKChNSutC>@u!tqRyf>|h#mQ*Dc?e>**E3ON(lXj=K4TnPh6U|f; zi-1sB&GJ$$a?wfVBF+0Yo==4c2`EbzXb4iY+xfb=)Ks{rA_Q>cwr%ZvnNT*PJSS3f zmnd&A#<2pZcX+u7L@R|En||(z#rxVk6LT0nS1Zln7$=cCres#@Ya$Y4ORyztb|8R& zcst%wxV_P;GT)eg`ifRo=jT^nca>TIcEpdBtHfveIEAcCodvX7U%G)DTG3B$-jdoR zs1aApjbH5hu=hh{1&+lT~>-xBb{Sd&i{?~Jx*B_M1;U*I)y z-U_97eLeZud;E3@!~u1ZyjQZr2OS39hpG@tk<(^n4LN^j>yJGyG+%*M1%u*_;=y^^ zJh`_~iJB7^bxPRMSsz0kp~Da&GJMWmhNZDo!#hOJyDb&oq9oY5w z_f!?len>ayq`%+U%|><3OL}l_n1=?V;%Y@Q`W5a+df6PxoBsv-B}Tp~sO;035gg6V zxEs@bubBPC)Ef*OIi|~0D zBFXobvfJ9blu`4J-z%B?u<~r+KzHphIpI(QuisYDcBO-ou1b4aROg=0dv|2Gsqcxy zUlXiL;gh-xx=l;C{F-`j+$gup+zjo+N>}%u-m95>{CaH;iUu@to~OrR=a)L|2eq+5 zUhFf~@6Tp;g3X0|_%B#zPN&>3kjGOjCTGk{^_LkioqAAC1N`d49yD&Dk_~S!7EBZC zV7DV|;`E>#>Fvn4d)D{StAxiT$O94x=eqJ1FrB=>A}>w9H(zR4n{NGzt^kxNc=!|# z))>Y2zL5qolAHc<@?RbkXgLO%f&E~MO^G^Rk%r6m!yZjZcoUl34Y%=o?Jfn8KMpCM z@zXNryj<_D0q~?DWwulD{dC*?OMZJZ6`yKfF4*s*HwV-XoNH@~HBAL?@)%|Ie*IG0 z%{BF=tEtE}sT!`Y#S8_=b6>1_9C;~ppD7~sSvn;1F(Jun@Cu=;VWopdB1siUcIuZ- zKDv9;_x`t^z-!~sSDl&ZwQ}!ff8|Q_2L`|C%L9zSC%cptHg{6~;|B$c!BzLl#=w*_ zA0*!o#hWwE#K?a%YC2O%^aa>&%=8W5#~K?y_Tl>oV%+7Hv%~qdEgCaC@->yoR)tis*5ql97d24I)B{Hp9ec(j`BDuYkc&W9$S_J2xZ zLZzmDc;5bSRC4vf;_3(e{!JOZuU5<|R_v~TbBG7zNm$a5+(q}}`{~Dj6xdnqn)wK< z+flzW-0UU{cCnXEWq{H$7(~01NL_eR&xC9Zx*{S+jJWbCFnJlr;o zv5!BIXS`@${XL1wr*s#2qWea82|@x_lT{>%W#e*l#y?|sK|~3tviqtNF9T2XpKb$p(*IkeJa37BUKjvGY4 z?JAV;4xz$;k8Qs#FuJqACw%*>Jv5Cyv){gqfoR_4AdiLZ)ZyE7rh&xCbL9;cjw*a7 zvo=}K4j8&d3qkRlFP#SnkM7_y;Eg0uS*x?np|^H+MBuejzuV11&60f>y$4d20yn1P zPezvLr*DaDWodkX1|*+-zcT9=5Nv7>59;sOP$Xx%sn$JFthv{2lD`QU65O)5t&6e5%C102Nc5-?y(Vn|u?Y2TWK zXFpwIVg94pZ#vunD5VZr2pczb6utClf*NpQhjM@nDjz$={X$dDT>7+k%Mc z5Z4?s$i%D+JBev+u|Qz5`yfdy#94sUIGi@BsW5wn&Cp>OQ6(QS+II}W$?5=vvJ(|( z8@&e2TQzmsZ)ria-^R4Rb#2<1O$4y?IA=txJp(_~Ss86{h1K_INx(Xx+H_mnjo{M{5xJ28dF)OvnJ7 z6ZZpXUyz4h<4d@L=AO8RH+Mq?u-nFYQb>!n@EyBT4#pnW>?ri03qd))P#b0rp zN*9foyb3OyfHdjpt=Nk=rJpD7?el-MHpq{4_{DsVQUPzJdtd9~OPc}rP4hw163c-z zpI5F<(C)@XNx;5#lCs~dW|nj0a|IA`i}))t{fG;NWb*G&=Zmu@c1CQ#4fiSM#)X&7 zm!tP}5~oP_feLFP6sfe8pc_;Dp6x#f1-0gR&zuN2;ewcD_*ouYgNn*~;1J$t)StOU zrQCY4pp4sI1Wu%Nw_u~4=jY!=mv*+sbG+x@ZQC89ebqrYVpyDx8p}pQ#Y#oBIb1S- zII2)MX&CE6f7QX{XnbJ&W?{UkEQaQ2+zl>_#ns5#wHEWWm2Q>F#nWGnS_~IE%tt1J z`af8EPG55I9sjUsR+U{nX)%Ln(kHhuJ02@#^x)E*d?k1pd1%XHuf`t;-pPPoyb#^R8P^Hh1it!kZA(DmWIYNd79D1_t%AwheX> z2gR#iDRNH1MU&+vDM^jK{y7xmgrjBX5g!uD?N@xuzI=Dq z$KhE^z)#l>g)X@d7}KAjvW_1~a=wsfL!sgwJ;QnGkxyW)!`o*vk_J0m*RXb&TYmmB zV7NC&Z{zr3ay;j_WP2+6rUOF?-3|#XKLg`LPcCg?`MSf7)|PqN?}kltq>Srrna?i= zSgkBwaOA;FL$iGvTjxFx0yH!#(+$VdqI~kf?C(nA;G(U1Eb*vn%MxXA}IpNpHj>}>Jr1pLZfBj}TQvqPlDx9c!lLv}RowRXFD zC*EhS66HVg%$;5VI{B#Uf;@~0T%u5+*xdri)|a^?e!Q`xziejh`QBSPo2@Mbj|ytr zEd)(+chg#lrZpcG;Ie$(8c^1pdq7F}Q9^@Aq%ZdXxM~Jl0@g0RHas2eE^aF{M><7* zU*RQt+T~%D7f0@nqp0d-!!7QV$HP+RU*r_k+LQ2Fc!8T;iU}>=^2-`8xf(ak<{wa^ z$z&~{BcuCZ_arNagKBYuGId@O_n@TR)}RAW;6d9Qa{!SCz4mpqwEil?B=~HHrferW z!Qrii)5TQX&Sq1g$`=p5yyCN@6N>SELQ49F&E+d*F281v{MWsa0SEaVj8Z@BPNSl zx>V`t2DM8mj=PrF9;IijaxEiK#fNW7Cn|rB4<6AH!bZ2a1F>zR&U2wc%xS-md*xn@ zFmrXic%;fsILb8>_VS;bhgEBQxG*V|POd-Z1_nH}{m+%!g)KrnrwT>9REj3IAC6cq zc7ZPj`j8s2v8M7|&X)E?8ajl!V0sg>BduiNr;%u7JED$PR0!jptN#ysZy8l(+indD zf)Yx1v*=Fg5?HVZB~%2Ik`_=@ItA%&0hP8v5D-y8kP;9iEWn^dkra`V`i^s<_j5n{ zx%Ym@_{MnOU;Cf9*1E2<RQeCIw9=;Mix|oO+ zAXj2|AX?dB%3bt>e19dM=$ZT6CrTt4&c0nF_mkE`&IZF_lnyfHo{k>vEx%gLPlfqhw(qrlW?2s>o^ zj-qX!`l?pjrB?H&cIsoy!#|qXhN<>|Y^VLJe0HK4TNO7@8@ob`k-}=Em$jPBbZE1X zZf1*iz0EDb4+AP%elVsz{iLs z`UqEc?19CEO5F$!3BEn=MOv;p5p)yKN=|(W-yS1op8!=QgC^j*5DXN{=tpDCY&SpKbZ`s08O_DPEZk+}fhed~D{o0E~ z!tL(|lnZG?R1C6d*UUuvr&Py(y-$y_)iiYOA&xNTr*a$5;Jot4D3nB4+S);kmD;td zAxMWRRredF=kOPqO@|)4wsB%Asp3=IHgo&!D__)=j&6UuB)w2%X)=5QJ7}*CyW0|6 ztL|_%=Pef8l2Ddr5T#mo%h>hgpa}%A-z)EC2EVK>_abh!(9r9lqjg$O)w1+fMkB(*E_dnN&$y~b}yKR{&_nPUx zaTK+qwS`v6D9_>@_0%@&3W&Ady@%ro4DaPvv#{r+k>EG~`31{T6iK6`&r!9Hnwj0& z^L3o8J~wsZTF=3^>fxCQ9dIOPstSwQb~mzICX9M?Wmb>pl5SL58{yUSDhv}FtQe<) z{39$^8C@L;&Fgq>ble%G3@@)SnR=eT<^FZ3u95qa!hkdV!FH7buZ;6*13zX?iNCwj zP{;PHVWT`yqlEgxT=&DFuln`QC(Cf-*xiG+`k8|g*{vi84>L&6x~ep{n=e=h_^j!; zDqM(SRF4r#TI=Cd&~g>*dFyV((xe(Vs-^y+**RjBtABv!`2_{Hgy-Z$mF@niI#*)} z7B7A!?m2x==nnl-{jm(yWysPwiuiNCq-GQ;AFnxHRu9itRS*?+d%^A>Z%BGL#E6Bp zf2~P?ypixCv15%q=KW%X-$5qs4{=nk4*cd9kF*^-F^9WNYjM#%wJA@S;e5t`fttb&B5{9eWRZs_<|MWiqFQa<>dD`uv1wtb+TKeRFU*tR<0bGpxpYLJfh21p`hFA zd?8;{bb*Uu&5-5lYS)CplC9=)L>J~lI9A~U)fQWgW-%{SVG5&b(4L%TS$z?qi3u!; z#o1blpBKIuT9@3vneHyy6x*YCa@}p!aNpivsxE8e(>W5Cg3bJ6Q@eLp`edYG2EJc< z)cMu7VC}_M?_2nldYL37NaL2{UN&w&zen0xnLSqg{kF-Qb%J-w_Shz+9TPCnf5cbk zZ`QA1OS~LYYgi)XoTF@EZ_U-|*XFc0+W4@+I5F|ck<%{?!iR=wJ5KT};+!bn4>p(| zo&K_7W}-F#c?ZVgu$`Z8)pFB}xvnMJ|G1AzE@*)VCzw2La815Jbh0C_;^G+B{$=ww zd2{WUEG+lC1^)a^wX3Vyj%-x>M9*8eFmU$|P_~?Kl-71=61-lb9T$8cL(R@0BsFce zRl{px`C261yUJe2`%RixMOm+(tE>M~rfi|kU|eT1Z&b1%$Fh(kRw@*HDwN~w0JV>3 z=^$qdh9WOUO`1parFqxaoul6PtRi8qme}`8TY?kz2aRsfs#j!2@{+66ItsMycf7a1 ztqP7l+UXJ51HGc)8@-mL~*pgA2X z5PDvf*(X9ipM5#onN5J?kmgP;>2)iXgp~UxfnCtJWK#<`uhi>LzwNyqVJ6 zVZvFo-|kuM#=g)s=ItKB>{br)Cxtc7{FVj!YdO?nd{%!7^jpT7fT*yagOx>lrFx9w z%RD`OiRoC`IqXRp&dT#rou4YTTm<>-`w~|LlDc@zt0V>9x8!lF9iJgDJ}TDW=S0bH zitK)bOC$ebdPk|mT_yLabVo4f1)X^=XbL%6mvF0fjP-L~pvV^_eF@uxI*eFuUca31 z@|fkUfFPz)j@ZeF}7vC4C6Wkxg5KIn7dfuMYK^VVugb^>vcY3 zqlh=_{-30lt4&_&GK)I~)XdQc>X(>&Y0o>Me^#;NMgz@TGu5TQyT`&m0YUUN@H`X+ z^mU;K{gFF)6F6Hc!jQ9yst_41g7Zck|LIVOm%g~?7~!+Sf@0?#Suxvdr<_4VgE)%3 zy~obKl6WGFH8_E%aW&41eTBHHF>>kc)1EDNBn&|iHwB(URd9)DY!3GT*2k^2;?yXIT@=83(q8>tYL14(GTpT{Z9x-c7g9CLM zu~d!Y9fulb?$G__#St_-yo%Vfeehr`?SqCa(p5)@@+$8{c`0bV2j0C@!LCmj3q&hE zQ0IU2?Xp#7(e*MEK!z%1T|h)5&}}YrDO!fubi)j|JAhvWdff>HjZfzhl@bfFY5GI2w=DTbE<`$&&16m1-EuD4poscz{D+fV&>~7C?+bZT5Lpxxb}#Kp z$lx&{%b}gbd+21)L;BxN{=d}8{5C$nIjSVF!rq-6>>cNr!}vdT2CxfWzKScX6Gq)JwFo8n z39jI`KGbigrh@k{6+R|i97o)*N#ySpt)aY=HHs@hN#me8g(sxlfhlo}&va;q1brKx zcwKGxPhi{Ppb%m?#?w1CS4Xcxk;VvK2chC7!qRa-zjGQtuOV&>2;{VQs4jrYyuGLx zNrgUKzpI55tpMP{(;?r$nsN7VY4uJ<2A-v-ycGaT5#BP&xWan}?h!^q`rCKcI)u=) zL9?(pPh{dJBT%~G&EDxx?eVn&QyxqFVuUY80Wqr8h(B6Q!i0hG@~`18glfeW91I0a z0}{W1@CT(GYAii0Hg`S01M3YI4;d(Gckd4{@kFy%V+Cg2nDN0H+=3t1#u?>KwMnib;#;s|R|<9eASIgBVvtngmilV)>o^ zyaf3oI1oz^dz3Pbq*mY#fl6Bx_6qd${PI>_X_`k@j>{DY|o)|RFi$c_6AS5I^CTP>Gg-tUds65({Zd&70G<|;u+IG zP)3-etn^vbamI(>d#BqD-Nm;C7hd?{)V=4>+jy?#9_xqr4+_phX*0=l_Ml<*M??_i zPojDD3O>8WKj()EwIf3Jo#Hpq+64&2WqP*O(D}H6JMg_@iC2BlGg358!(X?tCqqFf z!2yPJ+Wz{aoex@}(S;c#yHRN+k3#VZ(-zf!4?$=6rqYY|edxtrNI}tUk{xLdpuR)= z*(0@ecnJb;5;o)kl%hpJiiCrZ7JwFiKXOn&L>!cPS^?SXX3x3Bez(c*?Z_MG_qgQ7 z2vXXnE}0&-sQs)A2t>hWID>yqB*I+k0P9(pM}qDFwm*Nr{NEO`YRwVwP2DGO)l<_C z0H5{8%piz_z@a9vNjULsXoukqjo^YDzpgY6fs+zfm^2mF6}joss;F36f#n<-L~jP0 zyDAq)k`%e$Ibf{AFw24%F9`zWF1gmJbv;V z7SAK1F%YFj@&t%Vh1YaIcEaw}eL7+*XLrsP(5rMn^)^#E5{NIVHz9Cc)Qc1Xzdzfn z&f6|MS_34qwtR%uSUo(x8$bM@f~!Dh&#l6n)+AFGR8xmV?P4vhzTY<;urGP;ciZWs z=l-HX3OC3&^0NUewQZt9dwVVSXVEbCg!{*T)Bksf2%SlIE_EW&9uW_BFLMJfR=x@E z-_=`&wevy#eIE2+7uK*M1BUpya*w3<_kT|ZWZV^?Q2Q9F|5H4yFhfpGznKOpAR$o| z)Fi4f@@Gd+m!szmX%@uvgMd*L5eOJr{}wP3%z}|^p0|u|Ko6qF$KnRc&b{B$pM;-_ zK+;E~^+YD`rYXbi~ybFr&n3Pll z4c0+*t8(OaT7{vL=C|LwB04knkG}GQdNPvy)c8AL4QX`s9*?w`z8tRSw_#_ z8_#@8*qKN~B@@5hfNmg4s(4O#M;VrfHPR9;hX9j{S)oq96^wo&g~oDiQ+4P-eJWfT zujGMH5h>CGcO<7n zB6$H2=JLwEm{Txz@k*>{(sk7xTK@xh?HzXYGT5YHS%u8J?_|Tv_aDGM03+|#9%zjN zV=XI{7JaGRb6JbDoRAw?=O;w8q?X zq*xS|1`0-A>KbI9cm77>b0-a876(rzCN)2Q{9XZbG78-M*U_udN}Byh=tc-^6BS;g9zk=*is+KTg9-qDjs5k9Uu-Jp60(v9$%M zPG`u>OHm<^k$#g;=%jI%Q%iMcP1%M6fg&qB)q%9OV!pmtq&86EMgWqZ+Hp!RzSjfA zt0N1;(ZEU3I055oDDK@$ z*m-@ZB**(G?kwjB*halw+j;*-c>gqi@N=NJ=VC^h9toYaKDmp)hJGC^nF@vOw*Bv_|>(VHcjYOE`5)obBm=s36e#Gr_ zJOYPu>Cm>m3_KL@RAG(i37)%f=~F2r36&kM$-j6#an^Z;q?JZ;{Di1c;7-ma^5I?@ zFw9mscPblneVP#qvjRyVEFDfYV@zfAy10w{qZWlCuL@9R&kYaiuzI`>Ghx>xY^AOs zs#M5Y-jPZJXW87{NW5>gML@0Z>nq4~=X|L!p78zJe2~CNU`>ny_DznYhwujm@VcQd ze-U2|hX=W>%_QYH5+s)c)aP@E%GA}>_Y!gszi-Zmssk;9eDp~EucLUC6QIZr9NFi6 zW0A;Gh&d1$Zi_wqK!Xh8A4gTid;)j&u??}uCgOEKEr^r{N`aP@1dr0OPlLR-BE4%esbg+vlC)$U=?N;M$8bS z?v`<+ei}+z>oN`emXFnCOJ{1~#MDeCQcCp+RGd~#@4Q(?Om^fyeiGPE3;qugO-z;N z%IuTOwGT7q);p_iy+Na)C1q=t>2uKQ;pu`#!Y3&po2ZjP*8tBoDd`5&q;q|;piZgr zh4A2IMpscUMAB=-Txy-i6JQcq=&_%WR?2n=&~I8pfcO3bZyk1U)`L zvBov)Q&lsUw6RsoU(3tWaLUNA5yH2$D@AHRejjb2HQI+<4!fQLcXDPyX7jGirtq8_ zd+D1e_w+HdSB5v75Lvq!k^S=%RaOwaY_;gLU^h*Bq46RIe$8%&lf%+L5T0Ch1Go#{ z5o5{e3DuFhU>nF;TUVJlv;bzC4A46D0P&5vA?|W~ja_q8B=A(Z56RxThFI?r(dXaCI%a;Py)YhovuBhPV8-Q8O zff7*zIf(gK`F&2+E%FQ8Sa{xy2-V1v$zK}q!*F+I3?+e%lb8sPJ@q1J`Cu2a4lFk; zKwiqmS9}4n1?{Gi4E=-T;fRbWwfhIKyQ7f-Bw|2?oqsA;Gk|eQ7mB^xU6QJ5XZMox z%L?$$ndkY6HM4Tk9+u9enCg642Mz`c^5OK`e7Ziz+WxsOx1+>FF5wXJ!ZQa!k|sc~ zIc+ZX{+LK|XdBG;g;asoQpTrg#66wt00(~b1nzoULeKhq11EB)@&pb=OPZ6u(wYRE zWr~x?5c9X1Q3~KorWIt>rVe&RgnX}<1v-m6YNf=PS4zcz@oooAu^$P~I7}4J2x!Y5 ziCYD;QKc-+BTCmYm1~+VlM(#-^5_6aezo?ScGj$m_(CEGV{z~*!SNOriIP315s7ED z^Y~MmPhkC~;Ov6erjqaEQsjI1#_V(5**6UHD2l)phV&Ya@f_ZN!U7P=&+Hevr0l>W zE%t1t`ubo`Tk9)i)j}Yk3xOeUh5a0F!SYa4Jt{1OKY&;9hn*M)5T{P&8?4 zEjR=M4uVD1_iI8U$T6{s$=}z2YgROQP`kqS{Ko2n-OtIsbK4A>0uue%FJf4&ZM(qx zb@cjW>o`cJXp1L{U|BKU(&=C=8i`iluq!y4lF#EZ&>YeG3y$lb1o{PO?|Hlstuh<{ zD%QBQOlKrDV+L2%%_(5mkON!kd{CG)60ibaljJ~TP#O*Jvjj>_k*d=ACZ%SQ)c!T& zsS~XBf^Af`F}xe27xbJaA?GJa!n(bHlDD5K#G#*xFDA=#!zR>}%{2`LVdLA7FGqC~~l&^C&KL1oW1 ztwj2%j*~o?NmR!qi0%qJtWc!>KE3T!YNSX!C&LNZkYN^bafT-u2gQL!Gpeip%Y;*k z;mXOxQ=)&k0HU%TW&^yvoM9LP*7a$1n>jy_jv}hG7yaZ6DXD&n5-jaZRRddK+R2I~ zw&1Ds#7o9PHr1H7L;R}$(>f2(F_mm#%`Lkr3iGUN|nrseMB zkhlKO8`EmD{p($O8U0h0K&NZoZ<$!#3%M(xD7eX^KMGv)GF8FFG8(N#wNE(5 z^p!$xRcL(AvzdzP81;`?8Vq``o}#k`T%bM!*MWt>s(wgtyJKF@UVRWqj-119t9plE z5;q@`|43)vYkDVJU4i%g!?yR%6jX&j(nY_zF zSf84jVAcgFXx|Ij<{&RlYuLEFVJm=6W`lJs(Vcp~RC5tqA(ltEjm??T>23D<)sUF) z8YK%h_c~Z4l-ql`9|N%bRYb&Zg<7PG*Lcg zp~Fet&ivHX0|Br=Ee*!855(czA|-P4g?CY%KmmuD`~>cr*UBHMO}d4uS65mkLZsk+ zBvB}>70X^!-(bkHC~$=b+cOLbiy|s;x=Bww@snx!9UDQX{fUp!10Q0nk%A^1v^!#} zt@HOi$dO%+sPOyTEg3KONv&#cbee8w@efQQR`gw(oozCCQ6kpG>?LlEKA!E9IM3FA zv&o6Af$5;7az(;xT_u|%d(~s&7m!e2u#PE9bg!l$SEb+;t$hoX;lY>d>I%4x5tVT@ zr(J$oklU2XHA8x9jIm*IT?&(EYCGrQV8nt+)C%%@ws2h{_;z`Ike;1ddYhWkz3zC~ z%EuDi!GW8$AyxVAww6C%(z~+;OXQ=^uGmDPIL( z5~a1=BZEbP2G^r-FUa|4TFSSySscq_yqABal9seAK+1`a&D(09J?Zq?ufMG1FPwFd zqK?AO=)FjG+2roJeQ{kp?MqQNex`X_*~J-&46kz2R`nJZ0rLq>zkE zXxF@pOFL*SnPR8q$5k*8uU8|atP;NI977Osf*O-}UUxatG$cpD*I}3`RPfP@cv*^J zuJJ6ZcuEomZT`RpLG_Xu2@!ezc%2UJiBytyU>=M`m$I#!4K~1jGmsyRE2_)66iua3 zz2Uv_UjFGqV(oFU7b@Hlqwz2x<{3eR&U~)jT9HDx&@rb0swr_}M8|@Mu=Z1)#o>pa zC22ZUZYvd-aK!GqF;#HuOI~#mt_BaPnrkB?AE+swpk?mE}2TehkpdTxLGg%;vLyL&y-Ct@gwX!iQh@%0ZhM^!j9e05e^ z%<-cl9dzv^8Z6IZbj=`}gCsR616^0nrxiHk3ml`sKs4?KAn#q zxkT)E>nM>idv87vV)V^qMH1Z|?(}n>%9t5e-(Ksfm0v-ElU)_`eQ|j!*Z~JlPKae+ zFhe&gq*HT5wi-)FN+noHlxEYIFmP)0C6Ha8Qc28+*rgtJiX}cDs{8#2S-YLWOw|VB z^-xlbdg(GuXHcbi7r#z6%fJ;&gfKD}rFAh`s2sNGrf6x8ub#2g{s4(r%*3n>bKx`w z+AM^`fkMwdZ&Md%oW)F5@~pys-*tm&eSBcP)mp6b?A43rB2O#b>|(x0O7UIUw0d5? ze357U=$fi~hF2w{lyZ0j{nORxZA3-vdOa#1TK-U=tS_0iD65NgZ-H@VM@LRqvDuaD ziDfi1Gn>c;$VV2YvnRSY$3VZ*6V3{U&BV!22#2u|7_i<|WQS-=!WA=vg1-VnVR2Ly zbfuWE{;ntzg?!egqn+_|uGja)>*#SIV<88v@^KnLO4y9JUW{jEm1sBiw@vAuNHyDJ znhGNdK+f}*i*8HM+)^Mg;1c0zB~zD^y3an1?w?PN|DSC`9I70AJW0 zxM>|baDGS(V7^+e!%!{HSN&~dM7N1)>0QMd7Xj@nfGSrvr4E5GO)mvuR@Q?{cY@{g z8`s_m-k!3)iMxAdrurmdJ&NhXo4gVD>s@?4FAUGbUOH0Y3PRaoLl7e9rGa^Fuv!N? z29tXT7+-!Y$a|aplnN*E$?q=CK;lb)Xc%5#L{SMz4}p>tjjRApnM9#{=-`8mVBwvh zs)jyPvp^PUSkv{ z(2q76hd4taO~p@-Tc7Wo%U>wdx!UP)9aCo5*UJERi_|X&<4)tVy>Wd-^X!f4l~Y4P z$$%$dW)@j-LV+@>qAt=yJQLOHeVJlQQoJLI*LGfOL;zHYN$yZk-iMnWR9vLYuP;4)GEn$Ikru|0G>ZNR zu?(U3EYv4&IkGds5!Us^M)>7R6!gLCP{l>nz`~cwQ&1o%?m#v?Wikd)YVjbV=L$4vICLP{p3}Z4GWmn3i)k}CidjdU)e*5CE_i`X{x|sUb;b*-5W{(_ z!Q~iMWIWpxaiRSN{4Q7L%YLW>EBteaq>wtcui#5 zE_(f{qUh4+SG6cL?<2il;34TxeLWP`eqVKHeh+Ld7tZ|K9z%o6(#VuCuFs}6^uh4Y)MCU&N2VVW>BCqz zYbtO_gNUJcm@sLcF!>8F=j^;IdKVC1;uwm`Yi3lVsC*Jc<@Z8V{yeQt^a*}jey}M* zbQ3!C1TMoTK)&HM<|U9mhIFI-02*ng)@7qcR_2%|oTfI%I)Co(ICxecKm@VD-sxIU z$AjN>R=D7elD4S@FG*Hb_c0ItYc+WQwZB6zQ3k694S#PLP4k(=E1tK!>;DB&f?*e( z>tPr=03Tp_J80Ua9li_Gu^cJ`H9X7K-Jl%>3qD8yk>5giiz`(-(QAbEw0j|_CQ|W? ztG%7z>@7`r2t8TW4Sg;G_%cy=X*@LjJdNOEy8Dw`0hjCYmi`LK8hgMuPCqxAMtvHA z(dQEL@WNb2#tpyr^@fsW#6y3aT`L4#0>UowLRXTTbr@SZjBF9-p)sNY3{fpwZx z*0OS7(winrgA58Gq;0{;XN+78rdsq3&?{sOZ7a|-SlcEe|F!rLqve!}_YeZ30E%3r zX-5JE5ONVgQ9iuZ5UWQu97UJZNPi-Kv;VsA!Gm=!_P0SiPrx05D+rKuo#8J}gK0FG%37i`$Pijjd?E2&}!Von){u6c@ZKg73EYZ0i!olL2S76GJQh#4e#j^|k zh6SZ)P!pYuU;vmQAoF5=vUOrSSxak*~$adG6ZK+(KIR2gY}l6La}TFx9ROpHip@)H(mR>VNBX7{b3jOV);f zfzrEUlvlSSiv_(7fE8}~S;15qkucgmMn_zKyQBRZ+;R%WYTT%c1Rmjmv2+xvX*4|p z@uQ!Jpg_6j*kye59=&YGNdjF4tC9Uieb6kP?{R`u1#&v=KoEo+81ufXUCwH>&rwQk z6J+`^%t7>~;=}nDk!UmrffxcMvbJ7*eN&Ad33648#fh}JfrQ2&UJDNbz&v<)5y+mi z`%rt%4st*|9=w0aXDkO*|BtPCFG*?5&}oobF~f_Z{QMG5E>5D$?tRn`r6-{Xt{g}b$dR#AbpVY|6UUnwBp*ERd}o!d>Rx*W{bA!`$Uv&g*2_vzv_4z6Ny z8W+UXIcH`K#ETs_$^>>iT6}_Z1N`g%GSp#nhMRnH(QM%Gy0y7|;sHWT(ss`fpw+Z^ ze?ky*!H(8+3g3;OHBym6W`rt`EN0gdLv1%2$#~{&w~u((U*OD+%6d}6CqR=_HAdbX zx7iONJKb6kO)sv^g;r{Yj8lAa-?~6-;?T5>+I-?+2-?a24C1IE|&5q=%ldjx7nn70AQe0(g=F z00rkgJi^$piWPM|dA@^hypRjYdGJu{Gq1_(W2$N(7~XOoC+$K~iv(K8REBb#^Oz|> z!XL;Bt1YopA%D?4jL*Q+&p+42bEIUoM<6ja$uViZVLJpxlABOM?EDh|RGJu0xKmfT zLB8slT0oA9B*#BLpSWzJRtkx(3rdH*KJQ9Jv0}u+kScac|JUK$I0Rns<2jBTzn*K` zqC7#Q>;K_O)>))kKi-iHMp7p~RJG|PS*(qN5In8VpyOpv@C3kyMY||NVDy(hH!I6P zJm}d$8>>=jTcv1F!s%nlSkfDCRosDfhB1c zPBw0g7VC&014gIfng$G1-9q%RcwZ-rZo_dQg3;%j7k9yXj*`@p9OCQ$rAP<+PLyVM zApD;XI^o5aZlYp=xG!TNA9>7|j5v6=X{44t!g#TkKaObZf)ju+ln0l+JY1{r ziz@uz6KJC$?As93m!P#6-@9)k{Uj{%EDn)jg5hkSv95CHvY@gscdSZmM{D2LE%K%=K7>u?2z?lOt zP=he5?@0Wh!3fwcAEkTF@fiz4-T$K+60~@O2vUKoRG%O;sU{yy$;ko9$@!8#GXvH> zR>Oa%D7nZ${jU(buSeVZ8JfRSf297R{(Rh*V1F5{)n43vT%h3&rys9XZ*Wz@g=wf= zabggQjF}!chL-xLHYW`WlIs?=)C(_SzK#y_cuuq)06Bc@A=jYNrra8GiLW>myZh>0 zZfjeqUjbCwEh_6Bbl5Cv8hN{Q)HKF~gbuHC07rYNJg>4+l*z@BYpjMQTB~+EZ;CY3 zqOjXMo4wXx>?8P=D87|>ajNAw`jRgZ@+1^Ek07rr$i^~&Fc@j!w= z%{Z_kP(iAjZzWH@$$Y8 zFDWmOd$Km@a18L(jl$z4nd&;0f?*lZGNy4gPxZka3b=L@7n^-|C}XS~=BaNbg(cuv zrvy;_TY`29m}48T6?W&OAmD$EryM5|now=LBQ;Ft5uB-U8SV;?*>*+GqciHeUU`)Y zOqtzLYvfFYE(g0)0PCf35l^o{O0cjvl^3ReheYIZr#>V{}PAU)eH1EEWIZT8#z>c0%@@U}LC zGIYxhi>exEqHkH$=MklWtCu46ZOeBto1uK%-R_{j0i$F!MV2>ZT%iw+(Iv=A2imtK zn3Nn~>Vmyn6`2;rRqyf7oRG#^T3`y`>Q)KW{=iJDR#UOQY1V`1DonUHeNsCkvyakS))z4N!)QLRuLoJ)aSe!r_4uDOxFj@5&fcH4;L|5DY)efT&8l+>~(aDZ*ek4Nt{Z;-}b@CcaXf}gY+f)f(Hh1?k zPhm%EhE8WUpjKaqHHv^2G#F`{)ZjWMSlmjf5zjzFh<}hh$UaEHI0=uY?i&GhI|i)z z(+^UR7?gw{sG%otzKMqFDWj9*xfuwKDlXT9>tM@*AZ2McBoB5{t;sxRyRh%H`~o`f z_<@~MGl;ZtmZJ>n-3cz;8Omewa;hN0Y8T6wMe>|8G)NSC9rBrnK^l!|9N|jmp4#qS z6cK@9CpkD~kxUjRDG8?ps{o=Hjw!QG&d}UzT0$T9>LskK3@~Xei6&=ZM;Ryjftdxj zC$eIlM6#RtApz!&na7IE?d`UJ1=5PWP$Pgx(pa>IpauE;H+76he#EthcHGI3HX2CaS<6hu=%_x?{1tt&Jt>4v5AQd0LO z$^HoDCdxv&fS;3s1#+MK#@l0l7;Vjhc}mQw^e&1f;wMziGnd1=k%7uGl-d)HJlb}U z@cBZUg{^(x9O&UnS+@}PRe=ahH1gH518Dag+gx*U9Zq?&;8M}9D0a0sRagA%Soum; zBYQtWDT{i;kF?DJNHyV*J_kq2giYtbeyTbWv9ZoA>4;Yy0{Ltl{-0ANcktVhpCA;Y zT4`^?We;2lnP7}Zg<`lm$uFeU!3MajU9Rg5()_h9X9(k|)98Cc-0$dUFVmj|n+g_S zT`o{c_#s-=B|VBHnD(SRvNh@9tUQr}(=tDIs}&~2N9W1*RG#KP%m@Ivi5T_<_EOo} zZ2h=gtbp_<%^+$*Qgv{If{w&dXie=0ki% zC(Eg2kj#v?C^zICYxa6|h*4qZHE``}9nl5P;Jmb1NVa7%W9Sa@t}T zN|TOywqIc`oh&O{I6?oZ8Fr&akD)k` zy+v=TSW}}mSF;XC=Q&JLS;fdo-^yV8!g?R`GDfztGQ;bq;VR2|Tbrhp@72OgV*V=_K{;~gD7}s5T z{S0zb{o_U@sryT=ruTObsaj^JgN|y}D4YiqulxRt&Auhj|HGbVSD&X^>>n-wbwGym z7uNOW_82?)aDmVnbwbjH!=U+7>zj~ZZe2o683cKyV2H=5O}(@}y#4g-WS37ZV6NQS z`)1*YYX?Ys?DeSX03Z7cY9SxAu2$p(vJR$4;dmC~LLEe^qOx@*(-h0-U1PcoaWpa^ zNjNPk3OU{E<1w-=oGT88Qr|vu)=%XT>W?dNwSg7$E^KgRG(SUNi?bsHSp{zPjE^QE zy5pj#AI4pBg=UgDBPHik{oi67FTecg1yymn2*q`lu2! zrtY7eMgCEAM+ONw`VQ8(fFDqJ{tS6hTChGWu)FmKY+Cb#S_CxXXu9ff_I>ID12d^S z@7v~2Yi0KhJdbSDsC`50$`&3j+0{v4rv$RDSUc#07o5*1eYKrJCz5_@$%(AjduAA! znv%$zvg(<`XtVGo#`w4RKmCvzY`;-hCkGlCP3_{Ct2xQlqU4Y%*)w8$A;SL_&TVzv z<`+4=>vhW1J^EZiaHcG2DyyQI6c2-v3^Rgeg1Ev50uZUmQMJh+a0={a0Cl6)7nvPx zo;YGn@Sr;rmqSx2qDAk@R&vlLhTYwEG>@H1(}J%lR+Mc0%j%|MhDF+_eZvv!lGNZL zFPeoVI8L=*QZgSoLipT{cXRWTBn8(&wzQ99A(rr!{jBcpL^LNyavWo*yklr62yO$P z#_e;&3nX!qwR}#HBs@+vXfsxJ^}-bYyZh>i{c8He9TAwg`@0FW2c60qV)*Xao#hDk zm3$HpNw9WWuX&aS193q@sU=>Ss}n}PB^z|qq~u@N*8AWl->}5aCOyDbc=TB6+mF!u z#UlUM`ww)#SEJ07?|DZ^xsOyq8%RA2@zL_=b2uTgvR_~WqfHuOG;Nh z;H>+dQcf2TS}|YuRchlY)c+L8ZF*ejPVrguUNg-kN0?4%j`xbFmjg+P;)`u*x7)J1 zjjF(37Jh-iC2dW(ViUj><0^uDp2I(sq8?ulqjH^jHx_{lc~(^>ML2W!v-Y8odIF2% zA&jt+O7X?xEUuURh4FA5gO?rUDIcbpLWt$fFb2%Rxd3H$7s_*mTlFLp{N}l_vT+AVww{QE#xE(|RI@E6V9T4rE!RM3=$CMq zINbNV6?ah#AAmRAD?ICGi?wXNRc8#phR0a$ZtzJ4tXa%>yX~SI#jf5tR<i5`f|DDbrHgp3&U?Hv9>bHpsl7J|;o_uKKmg4Jm)h=caJBbB;d+@{YZD*vhi&gY zzFNhQ-q!T`4ZzY?t@9)B-ThGCBXGAu^&RRpE(a>==&$MW?cQ$S-5vLXMTmcW1?fMR z-fv?G-d;v*LPUT;M|(=7KAa6)(PnfNQ9}n?q?+B1 zkeOT3l1~PPW@+7z&h*W7;GIz+t+Z9;#~g4Fl7vYgjb*fw-FjL@E?&!Js5p^IA5RQW^BQ_@Fm4ipt7q zCgB1;)Jq5=V@4kKCb5%uJRVFW#Z<$INC5c|TI(-+NTwo3#MV+ui$|r2?8B@ zePgkQvK!K{O-nLE34iAq{VOU5)<1v}5|6;~GtdvhtLk2hNS+RweX}qWvfLpI7!s`e zLmi|-Q7AXB^uq!W{U}fX^h0_LtgdbQKAPyVAFvokw`6nMFyg5Hxj8JI35^4Z)F+bs zQ{^BADGAZKNW>4pTb=44q3zMaXpT6{EM8m>B#;q;w!1082i_h93frJE45FCOt`%8sBdl>SaoW}p%bTVdn1h@Za!~o{F-T-$gL;n7X z@Jk1MAaI$@egfEf%~7mpn37|Al19FMy*k(4kpvg8zyUbxBGTt;=Dh))s4|!C{9|SQ zk1-7}!NTUsaHF;AhpzSiza_?&zgrQH#IKG2Q)DGuZ~FW$wx@2ePFQITe{YPdjxzB_ zI!QZ;uVjg>)WfoQQz!(xOOkB z6yjB3btmTmo;bAfYK|4;GAk<(iP5Iu+UX-O2Y&nxAEzKvh<@MOH z86-%?qnor3iPB$5dWlw(PjKx*BKuU%3qQRaXG zio$^SG;`(o=O9KZgkLs)=EEY1v?Yxg5@9)%X9H>PQG~&u0KGXZw9Rm+ry+igSoJ6? zG6e1n%O9(d!70dyDjdSKf82uJOU!ZK^*~ycba3w1XN0o$cmg=2 z8&(ah_7+pz);0tOj+;Y9K{4*VL;9g#+CzvF?FraS6h1Kngp2Kx*Ffd|@?>L>UQyRfvy5 z+$jj9V&vn-S=?Kak#lgL(_APB)!XNc^CYX_FNcz?bVt1W8GM}mu$I2H@-laj7m+oj z$W~v0?eAm6EZoi}c~TzZSSLrQDosg5K~Cllauzm(=-((Po0D;FPU<$pZJZ5(5ACV@ zm@KM5IKJAb#AHgr{Ly$zENwGb2{YXTjHCjjsGo85XszeNq z{)p60=YhJ}9O4j7aHpg}i3oo4$gKcHA8R=&`gHhb-!*J`uOhAL&=8Q`)b2y>&{&hx zkL+WjADhpa&qWu4!P7#Y5@`ua>9%ZHI!=PKK) zntC_fLB=iYM+=ILZCwkjl7q-tWBpG9GYY(=a5QL!3R^d+I`nb)jlhPut#zctd*Ruu zkzNSd9rOqHyqYCSVk+X<7{ML!V%r*~xbKxd3XoTu7E zhud$YIzE9gO%uR4%*e76MLgP69jD71LO!s<$>DhIx3GAWXuu+7ZwVh5`${DJb9JCE=C__+%tGrsw~9eRIqX zGo$q$Weme2LfcAjp&}icp?tnN)Q5?5eL!I(BAraAgUztSpQr&-_9FRORP^zZ0|}jg ze1%Z}g5$lbQVS5AZ9dc^Dyi-kp^5cQY$H-fQ+*)p9*NR5&Yc|s&CxdxLq%ELknS$> z0#NaCK+64yG2c~cQrW&GKLobiAod zk)dZlJcL3bE4R-Hk~v-zl7pF?{P-Vc^6z2Z^aIv2-9Fi)scm*VNF(vX-ZqXJIBED) zx-`JDVh5+NWWZl<2K@lH0}8z6o_9h6TCe-tkhMeb_Dj;lm^u_;%wv0mvbd1smebd% zSXre(2uzMGY&i^13ZT9SeNF$L2dA(MtmWlC<)EFo{>42}(1g1>P=aU@Kv&-T9_$8y zHBR=c#{YOO{y%M7BMq>py^J^taY#JD3(oC-OP~LP9%khsATU;P3Qpty{Qh_qfs7x4 z1fZt8Tmg%xp%Yhwa*7RB3O0%#%=f@#PlE>_zN=n!*S6h}biM(NKJc z);8F!EX13ubqKAvQevyoNhq$8FUuTr5|U{+X z#I~yEP#` zcV=4ac^C$t<=)J>#dR1x!UF+iyVjjbx27Tp;vT6DD4i z#wch5QmY09`cYOG-s=YZ7;emeffryP4TNE#ml|&|<^vNS@nG?QD>qb`^iq+Y6_2q< zzvO37Kqd!s7#qCF8OkXPHDbA`26vr$PGR3VkQi=47wdb2^Nlc&&Z1;5pP(hYk18ht z#lAJrHKhd`3bNY>_1%oEMtfqG5~dTGk6?#Tdo;h}ZBSw~GZycLvBf%)FQEu7b z%QmK$3|FDKq9qC-tNc`g-<9i{ZzCehhB~?zA{qxmDUnv}=@vZ^gcnz%Yv>=XBe-LN zK2jM^HoG>;eO*B)9_MZ`^dtD{-*Qj?2KuAV!g%3EpGH!37!?@#%!(plUF}C|a)e$w ze=L&m*ARlQ=u_`WL=Wpl?1N<)pNJ{MxRUp=6c4jTyq(rtQ|ah&At+M7KqHxs=eynk zB@nYj1=s87qbvkcfV`5bAxe1Md;A@*@joeh2++eDj$+F4|DOAOk;sxC9WNr_zN%iq zgpwE1q5l+l;JN<={zqPvZtpT7CHigv{rJfATdA? zNmJw$6^fze{gWMUg)skrpbo&{{(qtlIQ8rAPzU}a&WhvuQztE$RIFqN=7EYZgvupe zxr`)43LIcc{ALdP2Xw%jf)oLSQ{VRd_p}AzU*m}b(A;-CT@r}Wp!xv6gd+4jf%;@167_G+IH3nuO3#fPtlMteCo?FkJCCIJFs{HErdR-fh7xj# zg&Ze`R|>PKuh>4ue=$sLM4}v5>0!?Pjp@tV%l~iOh6l0tKboNv`Ow0vfPcvYq+uG1 zn($H_Rz$1y0k>uGW6p^5C<=tJoa@&o{b|sMjiiNHarbO}jY)YAay|HJaC(bhD%RVS@LzIE;=*{nwkISd%RzeG!#>@thbn_dHr^zT{(hp&Go?qkk zX#iA_j1lWXiftB4XvIBJRD=iW^{8;OYiYR+dWNU2LCOHMj4&IxGhU1*Lt1sc;ycfO zXtme|^qa81c!iT>1dQ}n&*lnfaN!!KdoI7;ICP3;y5w)9#FIxAkcgTO_0IEWbLG(_ zrb9x3`*Z_AqK>5Y)+Ev)g2Rew;M0;XXKB*S;lN@CT}ZYUJRV1invjHBb^OlrJ>J0q z8%8n{e11w{D4yuCW+N7Ryh8aFQ5sju&?4V~(DdvUC801fSiO!Z_~nX2316bIZ}t26 zPrf7~2GU=u6p$h#F8nzB<3YX@qMfd~(!%>z?{8$u+FPE8jy;RndH(wYXJ!Ko|~F(|=~O0u-FQ+O1#{n>iwAwgL7Bm}K@Z*4$i;*hyp*#o7vSrjQ+?Z5n# z4#~DhB34ZhSO$8Wo?*21*6h^$Gt$@1I%pJ`}Gg)5q z5l-KDzBAf?k)+7<@|!7Qe4q!w02XBQ_x-j}uyEygkF5tVgyVwt=2EVyop?~byfvPr zEIt$nce!X#H;304PtLKw0jY=>?X`zNQN38;`q5MA=pY#Q^hVpumNvu+L05o|xodDa!6YB9MjY`Ckcx;8>8+Rm#g@tAuU`)p zy{0dz4c3^R`DdlPtc935lAOG&mfl6lxaM&~>e;!_1 z=~N$(Xov(tiYqR-I^Y$;W!hz}psIEdt55zYhGb8=vZdmx%|@3mgensqQ~uRu*yG&4 z`Vjn(B;3IT1RqHT7e1j}{@35W8ob)W5Ttc_iy@(B4mP{L(w8QA!wN-((VYtUe702H zLLLsKkEiZPHU9(>mUQkG(5_@RAZeNe?!Lo>VfJE@B|jVX1v@4p@zAtO?U(autDBm ztZ@!cz|I5ELNE8hvl%f~C*Rp(%G5(q%i;|gS1kzA5l;DYGndcP@sT7zY0>{*dsiL~<@@!SMvW}Z*i~xASVMLx+hFV@l58Pc){4rK zeV@p#$Szt`l3fUCY)OiUkRn=8A=_km&r{#u`~LS{*Lz*>pWnZ5d7k^Zw{y;YpYu7N z12U-$wOerrD&KpbH1~WYn_+vAnO}i6ujtBxpF2{Xh14Oy_m2qjV)T&Cm1%?n zWaVpevOmIZ8ZX834-zrFkTx7 zo?nDxXcB!KO{d`pK>Dkbh|`~5P1Iy^Ygi|CZndFHD4V>68?-DT#s}#iT>)UJNCA#J zG68sbeugRCN&^5xXv-NiTPt%7hSgJRmB6vXG0Bxw{JH}iLET-dCKw}HFQDQauvRa4 z6(^VkixK~f6I3dAv<7gOeO~@hvuT0{Jj;fV0e0a{%zaZI}WCEC&v57fqr;s9Ifw_;dguP1|{b0YaOgalm8E2NHia z03VWYgPTTsztY4ln>4(6B#Ko{C(|immav>!y65V~_C20I3q76Zb^rj1qKp0vVU+iN zj2h_~D5nOQl;vw>L4t7{vxE@?O{nndUveI{4SHH=FYa~Ktl&21YAP!sdg!$68xP8! zq1KpXpje7RfX_{tcU2UldQq_x>rhrO=`DYI^J<%*jypFV1bO7y<^|c4 zn>r9p1ina4NF3B+xWUM^>7;^HNMD$*;qxW|kyXb;b|6)2SfeXVU0Lk->AFifpNv< z$l#F7UVz_a4b!Wf$??|CnQ@xMz8Z?R@7|rSG~2@@^PJdq9^4j_3HF(@S%u1WS^J8~ zhv3F{<&{SqTrziopQ&F1S%EiN4DmMl8x|auP^wGUCE~?S!4r^FX<~D%vNu{rg)6O^ zpM}0-B1J}wt8y)djzn<+NP~8XtuJj9Ioo|%#W0|aHvKP8VgQmX)&IiU?sJnC>?&HeX`J1zKaH<$ibk6jfqVV|QB%J_n>Qm;$O? zsFj^<@xY#4GaPBb{<| z+E0kO2$3LF(f+-&i_dIG#RS7EPz1c)=FBEk9>6*cWplgD>JT-%Y|hrOEP+u`bbgE& zmDW>8a?d8Bad^Q2fE+u9#;FsM)>l*M@g7fGlg9blH8ue1{H;hMV0XM3t6%4tzD|o{ ztvZamot@=26WGM{+lOlVALw>RwUQ=x32}60o+b*O9tKJ@{y$Oj_#c1vYik)MC5FyL z(hdN2vjaC9AMvKdbP~?4rd9(R%2GQq``SjH-1AitQL@dk>pCU-T4Mr|=N%v7uVT+? zL5Ozu+5l7f4}flqPJZgu6V81D7+V(^i^etIaDOfqqRs zY%j~7z|H2gBGW+G#VdpM3gu_a-^Wv(aM8~Ir6IX=Ww=w!h=5xE*JDPO1=CvvFCeG4rd)`wKEMxQ5 zRcOw7oHkg1Oqqp9+M2x@pKp1mwzAJE!%ZQ{zHh^-r(2_-Z1XVoxghSTlRy{B^d1HO z@fG{?fh?TcYTG{XJktA6@OP4{MP& zU^}-_*}tvJpFkbjrgeBPlVb(P>^3Xlv2zq9#`{yPOLZLyT?8(1%33IO2XD-JUa1Qi zl-CR+!*h8{n>3czkP3@glOh4Aw8Y{PX#Q@<{V}mA?TUl+OM0Fm^6eC@OTOq(*bhFW zWt#UZgF%tsj>g;?5t*zCwxzny)X@9*cZ3_dB>7kDimOYzG|8cBrLvrmu9T`*Bt4F0 z!MIiUQ$>{a3P|=*aIIG&&9II`?c-~HtL2B7YjWzk#=B(tBzf-vcTPUHtv>Uw?%Z;w zr=3rUS2at-C5371ZmZ=`SiViub+yq+B44jNi0^Li(`kEO^cD%wrah{%6Ycx7(MJS} z(?cPIta5p_x0pG#*XMsZ7#uus`9RL4+>d^*2@ahRrZiWNM7oZRO5uY_%C{aj-1n28 zNXa%(Q83Uc<(>f2SvxOg`{qNqglF~ZHx|=h>0cGB|oqR0HOv?6d*2H|o zvBZLi9ZzQf7)j-Mig6$pmt^cT5s2G8bxi$ev4b>yBtPctHP>G{td)LgxyAENy)PSY z_$^;v&Nt6J*JIUt`HVmJ;;DPa^{MFWTAG60jr@;g0ohKAYpqa{>gDmOc9D?{LF*^H z54Xv)@l=EnygJ9y0x#2N$Ne&(qYHOH4S$y${w7g#9xX&FV5ir#622ON{i4%y`{sVX zGlI$L_`h!tKHAO5Y}t~m@acP(%9Ai7Et()*7)d(Zb0x!biOX6M#g2bB z*e~Rk35&GLR2PPeR6#58Gs`yf?2qruP?RkLa?PreSMOTd3RSaaGX1SlzlFY#DrujW@ zw4Z6ntk@1khv8uV+q3d$q7*$U7sJzc7lcc9Z$1(otS?y3OE|V_&D4N+VS8At5!G2hhkkQ<0r0stv)y3kOJCp#R z*L;`UAiVMm+WwkBM~78yv97YnN&wgb% zX6|84|5nFZx`Q2m%(Nxh-1MX;3XL%nuxGb2ku5gOg+}YI>rzPWpoYIKi{;UU8=@2n zZ`79#)}S6H)i@*ylM0GK$re8xf_~oBZ4s)v>7sk<2sC<0A_W`%2DHJOxs%HDs2gZc z4cSZ9rCtm+`@P!sLJ#zyO}$g)j9C1!6c~h7PqO|cX!M&EKLJ$&3a(_N%pZl8VH}Eb z`Bq~!va?S0UEE>lK`OMFTJOM)Cl&C+AmXwJ*S?``_77B(HPEJ@R!wW|=Fu1@7<Xp2w9aOfe|)TW6am7_pr&_Nq>~5-QEZxdWCa0t53~Qoq~O!b5))sGt#4QF>?3AKsCwg zegLd%;^PaS+o5jGB!DpA7gYp%X{fD!h|E+A4e=bSm!E!dLpD+%U85iuRDEtn5f~XU zFfub@N5IIi*0&(2;{2e6u4ZMUk+(us0dce( zHn07Mb~S>kjQ}MPQKx}udCBl;H>*Xi z_G@A%zw4j=VRZM7Yw)Fx01wcw14EpLah=ea?vcQ2?0Bh2hO9eoJtI7TvY$JZZ!{9j z{!R29^Vz1p+k*DG*<9J&IQ%hPuyYu53$Sy)Bp$8wSB)Ji%)7ZX#`n3*2>xTO^GOq5 z3ue-9>x6Mw3p3ZyZ?|_Zk#EY@ebvvdf$PeK>0N=8b z7)#MHg05%P6Sz@ukRF67M!P&}`EJ}l-IL9ot>CqgkSJR>uAkimEzx{!^}{_$zII3j4(7i`8{_E0WuQTshd0?^?he4*y>m=b;W~Nh(g{E_^PQLy;zh~B z1;PDG#9j<`2u=%?To^1qnN$#vRTH$fU{UU%1?w%W-li|`>L^@+UUt6*W5x-_Y>6`$ zhO>cbT(PAZNNP2%xlnH#;qpUv&(GE3AkoEp)El=rt(6n(O9krQoXhTNhmVMX(PVZ* zj4c|oYM3QYg0zyM{cR>W ztXrKZIk`T10k=z)M_Pu>du!u&P{lHAIw}HEx2`>#0I3hENK8}_ z`2X*Ou5*asZ`>+=-nZhrFzng09=W6jfyqYG2G`zLjv zwt;{8SZrl^dHH;3?fH+b7R@0W7keizq3^*4Ju%Fshtq`(YA|v+8a5~q4Ov4DiXQK$ z{o8p1um5UgDxdp$XEK&$kHhkr{I&;kBa^WyDMP-q<myHA64m5An(9M8j{^W&LA4lRi7$r};(Vw|?pE$gk7d=j;nXiP)k+>;X4ZH3 zyuXq68$yKK5M6$EwN64Lf-d|ca{V0F9=+BPLSb zZf>q1HJ}^=7ZsjUGF1Y7#ZT4C{Ryyzp3PI8T^}FY+Iqj`b#E&OFU|U?y7~=1N#(6s z#=heT*Oq*5o<*U*v4Kzz>>5UPxjU-o%qz&qaF}dY$t&<`n21{q8mnJ@He{i!7OmTS zg`$>_*#6q!I(1e!FEdDMk?gg(zPh^hc`{FJD`5T5pi57dyy}D8i+y_YA7gulJ|`iv z2&ZWR=&r&8Lhy$^lem@K{1m<+c)QnZ1k=PdzwrcvrnTEk!}%%`6bpaaS7}JINGtPF zEgB3e>7*@{2P{q_IbRL~_fAO5$gm+e>(TT0{7{eFLT>0YY;I-PlgdxbMM1S{6|Aif z6O+h|o3w{i>19Cq(+i8Q;)W?wJQrsa35YiiBG^Q3jveS8V*<_~k$ zuUah%%!TjZ2NDTV>t%^QP z1ANd3Pio7#P^I~213eirWb&eA)s{`A&}PH4-Dl${4WTOyUA?#E&jomfe4t5&e*Gz~ z0h553EHxp}SqjjYltB1&X>7yBL90dcj%e!|>efYzXU#fPv4-ZU`JyELgN^5tYAt;I zj}-p%%&QEF~F;8ArcBpYH-bw!F z;ixb|k3RBNGFn-0k7?~EePjse|JWmsj50bpx@~9l$m(V=yaHkRe7zaQ_ikWT;GL(i z`h3bBXZYdwaHiSG5x#SFFhgt6>pS+T@oy6OH@j<uqFf0idR5lqSvcUw)E<0ka_ zQ7gNJmj-{n#+nsIm@6<*!ohP#uz&)k7#tj)ocWnu_R+51*+6+*eRZ5nO=}3<2w|@b zh@YzL)duao;|w<9@4^q|L(8EWn@aG$J3AzJQLN7nFGUWP|7RNx4bh*W&3|#tdF10v zy_Ip4>K@Wb`@0Xr9GU*C8X98=_EkY%SO*#BzVJJFali;id22U*t-nU>A*ES$#l~i# z=TQI4#bHn-b_h9k2oT!v{1p)#aKp{jf#Lnrqbit~>O~(p=+8H-MV0G>-aD2GCQ-$gm?A5Z)iWL=HYlT_n?KZr7NE~#!opZ3otQitm)pVRp}MEKer6aW*zMw1s0 zSC8f0O~{`F;T!2U?%1_QfjZl(8gDsL+p&vCET0>4bR3Lekp5lK&CezIUN(1{(Q0w6 za;lqnw!Wm_i~$<^vlBs@va`~PU_T!#BY_efuDEjAtG4%U_0hUDW-Hm8QrkI3D-UH! z7%DtJ28X%&N{%b=>jtA-zDdK$LM{=Y4)YNP_EY{y@r|DW^R zhXN+KbAg_Dlwg`0HB}JD#6`~W(Wj0+Mvf53Ny55TyKyUo8pDE{8PwYAH%et!w5tq# zH8K_TXFBZdP%&~d$U4fJ6a-W(_Zi@To4wqvpZW?Gy$4p_`M(b#0X_=szsrOW<;7Fg avPDm9iYQbss7?WyqtnwmN`9zeAMsx`uF;?X diff --git a/doc/schema/rule/conditionalTransfer-Storage.drawio.png b/doc/schema/rule/conditionalTransfer-Storage.drawio.png deleted file mode 100644 index 6fa3d10732f85082dad8f67d8c3bb32325cf9610..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 89794 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 z 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

5^ zz26h87NUbAz2LfRH!2tn7rxCnW8JLH4`0 zRr4)Q9h~?nQ1@?=?+CCt$CxiOLaGhb*|YHJm_8+X8%-jb$1&5M=$?Dsd9Juq!2@yZ z@r-(&<26U-bn)=zxRTbhzi)2C8l?-aEc3;zWOqEY|r*N3UG5Z;G5tQ z;g5A)gg~Z)%x1l@O?~+f*HDmv9kfkB!VZ;i4D6lkE-A(*e~Tb|{PS=w9VD)VsvS6V zdBOv`Shm2W+-_m_=6cqe&7gtw_@agn90n(piwrtbq(c!f6L$2RQ1ugBLL6p}#9>2u zrv2n%jwSg<488c+0vqqgh8D9@5V1?``Su%I@9t+|4=5dfqKDR~koe*EBFFTX;+uXW zR{fLEk=_}885YzYw;Ep!K8$g`>3Zh9F37AcpmMgS%kgl$azg$dTF59w;iDZ=I0sfv zDeH?g`4mUPLHs|<(hlb0aA2raZ<(DYQ0u@VC_TYy(Fn>d@j~X@8vGpTEKD$klb0W9 zVOhBIUDRS7Y^*trBVlo>G$J@7ZMFm!>Fkx|T=B!k0YuvbNsBcP?YoM^#_Gl2ka9~T zKlAgsu4;7tLO3ROpJ^i?f0@{%0Hlr~K4qtbXbR-aw>|4klsW!UE3{MryqF;@G@7VMRp$u1@lYZMD14?cK6 zR6|3O;pKkO>Hz|9VvMnS@Gx2Sg3&#B;?hdR!e_icHc!i8rP{IK9C6_4LQ81&B1b4c z%A6;RWDJUFW{|-+PPZz&=Y-M0@+S#0=;N5V4@l}QKfbYY3%YyJOTn)WYLDb=RC88Zu2%2a5-EpkKX zW4($sc9wkI%Q{XU= z2|4iN`jM9PWC~D10#I3Cd5OM6*~>p2eR0ZZH<4rQXN?R`7%1p$@k1^AY%r2eOt=FvaQG)v|Lcf3gncymmkl zVq+kVJ;?0^_cxToPcB7yq;xIlDYRI^To?%=SWee_B^r!qo*ahjz}v~x1<%Mb~*Kf-mNoQOTpQfvFo=X;krnv^nI-RJu(=;yI-XnV)rUft{K0RD=1W&9ED+(JE0`-E`)qY ze^3>^BJ+mw^Mu*J&t`RnFnp18a6rUjbVQS|vM0$rZxmm_@XT#PiTIkN$0*Vfv+Dv_)X}_8edl2!rDNlG^khObD&4I2=*lN zO)2lnejceTsL925IZr$9Wc%9uqB7-^h0Z>aZW|}HuN=>p$?Vcz$M&jMDHlICk?)l# z!H(!qbp46(J#Ha%|L^o&`8$fkSEjSC@}zHb%s?c?%ss4x(DyaLShG=HIJwYYUYluy zS@NO2jbV0=4Lg=LM5WrUXZ>(G`E8vJ@Au$O)&){Xq>_P|EQa>gc|wd0Z7Li>4Dv z{zBtEx*Q#>3lJuc^0CfFp;=CfnV$E2ti26J^brcv1NXr<3yUjS#>=xRZS-1Afp0#i zeR@z=;N&u}BG|@5WB1l<2CH#zL_6iVL*3-;M48ESV@)2$!7Kf%UwUI!u_S`?6Im*K zSG?aQq`nfN6O=xSOeK6RZ{HtXC<&G#grIgaNqK8cw76JHiz+Clbv<$`s>XWK0xvS@ zgOKxfHSA@*W-XC3 z3O@SaM89CwkT1(Q-S_tniuyA{pHB7?$vCya7G=W!L`;`*Z&VE4n*jluNu6QGkzXD7K$wI9PBU$W|Jf%Rfpq!*an{9p*}l!g0=G zIvW9-NIISEKh%PBVEbLqI;tT$5Qc@53^tVX{(kvOl#pa}1FXbRY9ge7iO zDr07Bn%A)|iX$GumX-3Xxc?mUdB9B2(cAU-?~eZj8_^W!6F*R7OHZHQLU^rbK4f?H zqq^gt)cGeBsu#2Ka?|czX*pPrw7*cQ9T`qve%x!`7z9>J>G|g+bFf-|Td3vT4V=Op z-)WQ8tVnUqi$Zn!0geI?T7`TES~M1CW+(Ej2tlLJ6O&SL=YW{j3R{m4hY7{b?Qg?i znW~nHxH~cZnF3w7$2Ba`;@`N&&-Lc9={nA#z5mIOF-F(_`UZ0 z(Om}6r7%Z&>(Nuv@HOLKp~{QHpY@WEhlqQ=hvV)4lxnL#WL+0OXiq;irS|^xrC7UR z9BZ^Y{^Ym2yQMg!`<3`YRpXMQo&=O7x0W{X9}+|qDAv`{F5%XVS~X^6N4mTV&l zQ4M*|1GHSCRllqa@O@Ar-=dqN`swrR?DiSOW3Cm*OyX6b$mt5Dkh84%=HFboUYV5d z^CD*lj+0gHH99T}H^0eir70}Hz(uDw8$0W={`{Tp9j*&mP|*L?uOmINm(lEPoEltE z7MOZ3_*tJ;eZTahbxRKNe-B-4|2384*WUhAF8;XexplSJkg&|F!-g)!OuPU7i1jt* z6M1pgpTvy$mv;e0TEC|{?WD+krdrIyS%0kl+YN(H>&CH`PO@Fo`+wFQe?ELWbYFO} z4ubeU%Qr=a0EG`5ZGE1M0I^uH<2kcg6bL2#+EzJmd^6Bx&9+91+GD`$G7Zh1`dcT7 zB>Lagik46HID)8n9Dy7~sCz!=+kn>T>^zO>}m1|&{3 zRk^-U3&hM>$cXirrMJh?%ZBx#9|zNM8>GG>5Zznz=%(lP=|YON&cCGLg!Jfuo>bkC zkzyFWIfCMe+@Z{lwqTJ14@|BkQyz1PS4~A>joL}kGC`Wb%Gq(dxWm0@vnb!a zA~UM+9eBl6$d{4{H^(R5cL9 zb)(tGW86XX!%;EPAevZ!W(diup(YTpw+xt3=07pqjkgpUOgq{Pb_*{^4batAzgMal znT?fsPL6SVYRR}TY`6)cZ>7o9I$7w!Nd zPUA?rt5JlG=ZQq1xe`cHTG?pWQMaC`Ke^Ai=GFNO9|PW#l~ zr4v}dXNDwyz^P_H&mo$1-)%Ypi0>q0g0^9Tu3N#24^tYgcX;Gi7KkZ_wh>ng&p@;H zim#M~UU+9p>ksg<-Bnssms%A6iebBLOm>b%BQ|Bx*?AKZIuw(CUQRGY`2Exh`V$z0RskwpM-U!OdTjOEkh{AW_*+VDT^iS`KdnjkaKWT-eBGn1 zUV0%Z?(-8%H4u~f&k)9`1+gD>0X96!9lTAQSs}TRG_9Kaeyi{OVqg{J1h`edte40m z{(GD_CG@kaZL?xx4)L|BLt3`|ZuEzr z@#};h^zy)D;tGH0O@gnH5IdXrM^W> z_&vb>{%P}|3_^!>Y!&$7 z&VK)Cr8zHrdvz$?k@T|xpwoHZYh(^C-hBH>jVN?U134jKNgnlh+qO5mE!~D2Ac;-_ z3*c_8z?~lYyS!pEfGvzL*wHrm*Oxa{(12iYS#epB6bWJR{W>-VY=Q|(5#KeE)I;#l zQeS4RK}QSU7S;QfX$%5F>*ZjimvPJ4Pp(uKMngGA&=9U{$Chu}F%~RjS5063lQE;y z(4~PCzJc5v!ttDl7U0d!#NyqUJOlkQ#u>vITsx zU#Q;GG_C`*uVNs^DdEbA9;z9yFl!ijhCg)Be7( zX316t>;6=yejAH96~%1h0w{|oU@OdkqL?)xy_Eke)tlvp+tlXl0~74uUKf8eCe)Ng zmM{7jNF7$ylFE2!_S;85zZFAo(B3gs#K1vVOZJ~mwRKVj-%#mwsy)|lr*i{i(1je=UK_EG$yiR<$yG08+iTT)_{4hzSg8CM<3y@^uab?Ll@XD^ zRzpXf*wa*0leS}pW$gYoOp&R6fIm@hEEe|T(<*2*mtGQQ+H$oGc4Ku#+8y6<=d#ne zC?_U@b+!s<;QKxE*6urrr?uQ1m+IU;BW_j(Cfm+io(4q^2Pn!PB$`<#3MBKGMT8*_ z({6r=-OQ8x@mu($KK$q=MIe|V{tZ-vM3S?94PN7Y49*5;htGSF@Vjh(CE%PE0eNO9iA|fTgFN z^w9GF8@9gk*xf{QJge>M$0{I(I%n*sWzkOIC-sUgM4cOaIGOeKHoM%C%A>yMaFMUj z+dw!P9U_%UNKw-<@`B$6gbzP2Vvhb*66zbLHcV7oTlfBU0I0hYfc?H&PW2c&@Eo-H zJe_WAi#NkM9ME-#a5%L|J`8(~9L2z)n8a~z(#Ij^EyJ{J>BgY4&%actm- zUtYjXY>Pxfqf3AO9tP2g6piB_i4XI=r)+;Uj!v%#6Ggq_-6J<2Fgw=V7urlaI%h5+ zX-9x;PN5>R84)8cxG(?ahYT(9F)h2@HyF*6ecD#9rw|MkIOV&C)jlkDmj5S@2!fqJ zKTdb4H}dpR$-JLkiZv@%(vj?^1U7A%OSa9FE_1#mVn+|k{8(t~m$OCr+kr)y;~@J* zgwKLEtdvOf*C4Z{RNMo5-$UgIF3eW_2LAr$x$hO?{uP^lm(_T1(THR05tnDDz>F@S!Clqq&R->2_mILCyz~>aHQM16jrj^3pf5@+bwXKwmF`4~SY8 z5gZHg*S|$CHtSHet+jp&FS-H)(Qw-h z(C$T(r?vpHw19z}9xM}qw=M*GHo+7aD@(1S4iWOq{G+!L)=YmxHUL`hwdCzMTKr%) zq{Y2Xe>XH!hK8_x-AM48qwk#ueI=R$LhDAHVx}Wu9jBHS+pHzPaI65rd zM0B<9lv%}b?R{y4p2<)?QalDQkeMv1 zUyL;3L#a`VY5QMYIM(A98XcwMNdoSvwAy+C@q!9E_cFF2PB1L^FRAJ^ejGH=T3&EJ z^tF`B18lzsX#OZV;xGABhM0LozsT*^vm>T{nIV?&=@C>Rl?1sR2GT?X@wvNkfN}HK zaDYWcNKaO(GwGWR;xXSChQ5ZsZ1aQC787K)Y2dfC z5$RKUc1A+8@fBZ2;j0)n=19dHggre8++~Y?HS{^e7&fj`ZX6;sg+y{sg%pBju$5nCp7p1`{!p?soJ}`F3`e$THr71i;=b71)@m}te zHBvm3*cKTH>UtrJE49o20UVDLk#+5>lH+nnW)xt-bZHWep(SB_5%^ibNS3&ioxe3T z5Jyk;(u^CL?iHP1=~mzX40bptx=&MnKDt;^_Avc$W@BIwe7@SCKy=c7DKq)Q$aIV? za@y3pasCPO2v3MQ;_0mS3ZKSV`k?}LgufJQ<%?{&ygk-l$;_p0s_9)(>axb_^;CcU zCm0I>C=bAW)hqVteE#|`h7k7LFr=P+bvdTTNmu=>PfHM{mQTQe&hLZ}PTU<6)<^owYKOC6*f!@T^NgrWvKH+r#0|Pb3`sgF@CZc z28|-|$&S`15qq+Pxx0us**eB>f=qIv(j3M1F;WN-%$7?xBnqD6G4C*e8#+o$s@exD zZS?ArX}oF@7HV{nd_Abwxk+Dyq}?$PM!H zIqq+jK$Aeev3Kn$Ktn~dlG(SSPF^vHsTrUJTHhzhIio&k@MFnCt+m0iW<6IP zrx-VX`Cw&?N$Hi9CWzcO8d!FG)cn{F~Mv7_~+*0#QV~v)$soPS^6>XqE84&04QGs_RvyV}zT`QJp3qilK z;66De6!RF$iHbGm zYSjDkmMriGnCVSlh_b8@mU1DC(^cOW;)gXT?XvuHu+-N0X0=o!o3fRb;=36A@X=(K zBD(}EQixR54X*u(AO9a001uP{b_w?Tb=CFoUqg#yI*ODjm@KJ19>CUn*+ubREJsno zYj5T#R~{O4ANomQtW4%TJDf5Y{0=g^4+@}9fXp9^3Rf_V3&hbn$;D^(6??v2OrdE7 z#yr2+b@l%uB?5#Oh$MnhOxgD)e^3L+3ITsrp||2E)dle8H{U#L6+!cu0@gWIt24bysZ#K!5ABVoK`TkFJafNfTU#K@x) zqxzNn(*Z7PQk9+xKWmI~0v1G{t8Uvk*O(p6Y{uLn)8EHOr&EMy`kfyy2LMBKexl&* z`mS!j=VqY_q+JS}wAzQ6GYp?WJvWe?RN4dSBo*W-x3u4f(ho!z{g0 z>SlB|m%a*LWhEO?0P&0VfV=^_#}KJD&?dj-jbNFVCCsEl*NCabekht1g0QtS91uCx zuHhq*2=Z5$uq<@(JnZ93`vZ@UU&A)^lVyp16`)lQeX{r@(nadC3Kx2Kew7$1WLT?% zF|`NK!6mu9Mf)bPB~Mu3e*APK-?qk&RD?TUL86)x5FK+;IS(^CZ}V_h5=4@b(n|Tu z@!Y+dU=BEu4yy73=D}T*S>(}e>1qf;bg~)50smC!8Yea;;-EGdDb|i$Bac?iT7cpP zP!Gym`x2??;j`IW+Z6Bu;Y%`CvK6nEhvIe}LEN?Ci7gto5xDz1-GjmzCX zd$N*j<+L%{mo9Wz1 z>V+|EI0g>SARFo73nUHsGd#lJ^8ZJcHj42mm2@HF=^X<-8L z>R>(*_acleC!VhRr4qb~BMK%kBU_C}60wFR!AmQ{S|#?P3cI{SPDWw>B-jD*xWvpm z)f)$@!f-;m@Og1*MYVB=1V)<($Ay(4AH${iC*lr}Ky8%QjB)xKesTV2upJ$;-grg9 zjZFbG05VE$%Z~c09P?5+e`Sh8-c=xd{tlo&FvRi74N=c(LTYDeZvFmgI;JM;#{QtK zbG9H@RR4ajBIqBh6ND*ANY{O%4R2u=rZo@osgOx%LLn~kIf#Z{!V=g8@#{J|%ZW?3 zYS{bU<F~KTy%dq!4(`H|AyZ>)Lm1SZeur0tjR@fnTdCf zLVbKf^R~jjf!FDnXEY}^R>w!2ap-fn3Z^Dx%StM-J^E#C8LN&Fyw)agI<>ZwC`-r#hT#dYn5< zJH*&N)oEe>BzD-j%Ii5JPr;qz-WKpE=^pz*RA#2C2D+`1uJz(f#%_RBQRn#fPflyR zf5}jyyHbOFZP8m;mn^7mlfl-}VJw7bi2Ex0b6$U*y~U3XlZ$2C_~rGM=D5dfbUbez zk1&gB=+AhDTz#WAv9jpofXp(e z*ZW0Xe}}G{zO9ZQ6U$b$dPNE92KzhjPYf$&-{smtbkFsD6;tbnx9x3Iy<6H}dyOl9L6R2&RM`TaY1MHa&sD}%i{@7KT`05{&I(=yTWoxm2|XePxr)|A~DHX8J) z=$AW+JPjHb3kFi4ZJig!!UXUO(%9w+65lJr+Ql-w?MjKX?>dL2x<*+s?C8o(qLZfH zWu470a#E^>y?!ASZthsG%nr=}W7RFT40&9E!HT|22MYVtmi00aNlEZJbV<-pFCiZl z=BiaW&*F9*yq%+A@JS5*gwpX2a zy>)ndKx0z12fl(aZ!>3BNPYJ;Al-zkIE;Xb@Vo1Bvaf~ zxaafVBWMXg!JRV1LX}ynwWQ9d-rP`tyOa6jnt2OhfXc76{I$7^&~e)TEz%(e5QMw^(SxN_6C$pChg`Vu z)I|>c48;^%;-GnUgzj$J>rc14JlaqL?lWD-bx~Aa##0Jf&2F);2tQ~m2ip_Jc$Q7N z&E+cVkT!cR-2B`Lognp<1zBGB(NV!6JW2@g3;L;gtgR#)yT=EeLK}DZ%~NUp zkLhJCuT^bEnuGNyN;&r;!3h1<%^>-0vFh)Bp=S38t9PH^QNm!%ey2EuYe3`~!H2e! zAycp0%ig^@XQp*m8aRs`*SlM=TW2@h)^-{1&NHA@_)pO3Wt7X_U%st!i2R!+mCq!d z7Qzk|MVC^VASe3y-FRI+`%;mi*Id|yf*23zt%{s9o%7x-a%m^;-E5N+IY|z`SHaqv zsG8iN7Wqj&T=2n+>Thnor^+H6pBcQ5eX?S>6yyK_mc%(4o0*uH_FF4^Xjl4eq{sgWI zrPB@rA|oX_LJgoZ>o(9oNA&DH6vY*|d>~VTaVRT(az#AF$i@efuxd@4%ay^<+U3C| zNzLOgHbPrFgKEW!vG4ChNSRyNf{f@YOaPc!9#@-{`ii^*cI?kSp0M@5egVqBTjN{V z1MkLu80Agw(F;yQV^%*JSjuO9K!>vLaU!+f9?MF{p&84hwJC(bWXZvp<@D8dvY`tw zfiXL{A77#8sc+9=gJ*^agp(u<9SJ7ENseYMTOE!viC7H((rb3dEC8xrsi@^#dtLm=@*U3M z^8#B}T9n)MyTv#2Gil`GSi#jjFR=?%A&AyH4gtp$lj9?foEEP{@b_*RA5o!(L{q8nzOb$bfyx}^IohUJa5Rop2p=LUsgR1u* z5*rmzD?0)<2rdxZf*Dc^#q_;9o(uVW_+e?>T}Sao_awp6h=5|=r^hf&NJgcd3krjw zGN^C2o9&!;!pt?zYky+TSaz){Xq#V&Ofi6JbeWjDRN>X}O3~h*$;}qJO>tkV_E)D^ z>FQLt(I_qOF)^G|PdCq|f?;~K(2WV}9ynw2zL0@JG^!o@)hiWB4O8Lv^33}9G?8(P>+H3i z3WbXQ!e;1r@lLXQd($yi8!hSdnQ$dlG{|c z<>RM!PamQbcI4cc4zv%RTNyG^PYQ+gEWN5EeuLn$BA1#ow+bhzD4HGLkjLYo1L1Tw z{wPC5>SIh2Y$RisoP1=gohfm}r*e36O!f8fY=PH&dY)$u=fE$9H=q9teMLRl=T>U- z<_R%*^?z4ohyZutE0PSeGJ`R_XH`vi7JKGNmty3}xCxu)Q`le=kGZqrUTF0Z%F?W@ z=aTOH{NA^`Fh807d-vz#a*R6s75R*M2=IjlW+wfck_IexyCf?6cC)h6 z&UbFrYL-sybn~vXJ33a#Ruyx9aEfqSxZOKkj9Qz_lwHnRFG;ao?oPJ`lnpW1j3@*L zcj&CjV02L$Sjw`uBeF}{QC&SjHQLryl4Pcl5K0BhNGW~^D^<3_!t(r(J{rP0W+V*k zPVPEMT*K`9=X!C_sCjsXke**_71gY>gASzUM;DckIkvzJqs(gpLd<*o`J#|6lk-=m)+eVJraIwE}cu*59Io{9wM| z)&MKm3K>|k>z8a97)`puTS6F(!_Ipl(?xGPT>o#W`VeLxt@;J9$yZ7q1U8?4KPV>l zbA(%{V(_J*Izfq#_B{TMTT?zm~o3WB$|GmJN{cQNVQCc-Uqg3FcW-SutIY69bn~a zV(m%YCI~Ch*L-DuCm%c1s!LYGs#w{`L^Fq>43leA-9%c_qDF9vg;dX0I zs20Z-MQRi1n0NVbdZGP9v{XaMpri=$>wiaohAv|y{mR{LkYY8LE_^F#C=F_rtBAR> z`oxdG{06D_NCm)s)=Qez8l)}qu#II0cC8&hjE#_zxSic9o8mRJEb$t$Id+erR8jGQy^7Q;Y_ov)p*Scn{>1Y#y3xSEC;JH|h>Z)KO>x@xs zA1Xlx2ocf9QTY%mpUl$(nq5mGS4T%8g+0Ry-(X*Q)}^02{1Y%J@5HJ2jcgYT3AC+( zqCOw7dzr_vtQsv)PYL?hsm8-vGmAnrMYHw10D*|aiU5A$r5UvCt*LocS3vE#70n6y zNHc1KBrI3~#04=XY|f3_{j~g}pU>6T#|x+{alW}vQn|aAgl~a4IYYT=qv*O<9x3_ ze?@lYGeVy_oN+<7(1ARyj!q%l+cxcsgq#2{GxO>^`->2X-36wo2m}|P3K|Ak^JSoy^8tK))MvM3Q(EZxwA;; z`|d)5pbvgh1)z^VIC}Cw6*<7z^vA&pMI&MEpFgS#h_jGG4Rw0OYJFPmVT@vNpDcY^ z6HdBa~~ zZ-iB4zhm@LN-T`fM`w5wVwvUWB91)gObISbFaZ&HUG-xoteim`$Hwiqo#9qyC*=X= z>dP=Y{{ApKQVgOK$VLCAj}FhlxAz~3g5pHPmtAN2>34p!aOftk-8$gLTe>??Ktrrq zWKt4NDLAmdYi8cMW2M@Z`so??aYMKY-?`>m#saR(1&h>ihvbUV8By`KG&_esDALBZ zTyrcT97Iw+O5w68xEFn%=5WDP`rH+>XMP8zmn1X$@!%=G5Gmi`vFBt$K;!yEpMp!+ z18E4ku;z*uwv)=o;DTv2#T++rpq&Gm6w9wF-l8Hu!$>JCe>tcwzwy%^Lv98SBm2+) zUjv%6g8|8(5tV(LyCdM`I^3;b8O`6~?nRW(xMgE;&aHyU-lo46 zEWHRR{JUT1uZRC^h#NaFqR7gGFF=glZrDX4q-CiXnYP^Pe`RHqj(Ap;5l`{S%1jy8 zM%6Pe%O~#qxj~bg+JA2-h5a}5PYMu!x3Jr1FpStCfj11WMn*Sd3cAV>JS~BV`ADU@ zzhrLyLd=iMOLI?84`q;z*3zL+!WbP49?&}@<#XN`%Y ztdU*K^`0Do{23!}Fv;%kVa35-cEz}FE;p=pB0yEs)@=(Tj`@OO1R_pU_xSfjvR0wo z27Owm_S0Pf?g2KQcQsVQRd%nG%`mWN&ycX275p3G;pz0ku=P6T14O!03-(&I%Uw5} zmPX6#w=vz_dM@tyvLvssf5Y1!e#G~*Gv2Aop$`KkQO$yga6=9@e7N(VoZ$%$tty-$ z2+ThLp8Og&o{fO_tWB4V!f|7&r%{B}SW(}H3*0uEed0ZdoVhnPh(5VD)7^C)yi~LL zK@kZzEl-^ALq|x<;2b10L?X^qN=JEkHWCia3N}bnq*N^EPjd7OS`RM<>bs_SS}v?i zIJp$euTZ4`s5AZnE4j@zY@y_;aU@#;6(OrdQ@bEGIAW!kVgF@x*0vx=>~naucp8=? zDhRu9;fe`s$;qM3YpcoXqZ9MV*4$p9gEz}ukbDu#edb5bYpJG&e9{XXx)9iWuS~R! zNMSpZ!sC?WgZNY*VhwK=oNSi^RC!=0N4?o;g=-8jab;$YzE@X3&k*vVVuFq(&56eY z%)_s&;g~|U?*DTz{KuQ`IBg2k94)oFMjzx@$;UAyi!}yhnM3#U9R#KHQ6a^=BZ<2L zI>(QKI$r1{Zm*Ubro#XbQZp0;b*K`fNWt>P6sy0RW?Qfa0g6-vxYo!@>A> zVnO7-n*aooA3OtMNEwW2Zi`v@`Lb+P(3&PO=h%3{P8YoMf7v^1bW|4hFASsO{4B5a zh=a$x}tqOSpg!_ec2Uosnvoot8C24 z@Fin5x^QwTdBDzXPCK`ae91fHOPIY%w}5bf&E6=1`9M+ggoRuIu@c10K&k zt`juZ>J}U(&y5x63-d1|I}~4t%5#}3`~)o=YwF5k1MtWmCvjPgPii+=!yW)l6JK2qgH}h!4Qxv=O{-;=LeNWl8AFBZK`4-p+@Op^X%np{W7TY>GvgSGU*4 zW3;!#17y=8q?lq{#7h7Uf%iZhtH5MaRAeWaEcblg)~ELo#h@$ao!5crj|u(#d2V+P zc&&4Kref$)*?2Z5C}XZl)27}v@WrR(>Ha8}Fhf&HA7|OT1n9$L7f(!4Yc2?SuDoR$ zU3g%4lAYYUud3u?E(Zqy3S8`eNHf8ohj80Q;?i*ZH1ttT~Oz<6+lqyz28bphLM6%;x^eR7AARY9L7)=x8y_9l4U6Ch;f- z`O^%zjxv|P{1W=m5Ji>f)2*3vv4gL2{X$+X1F6C}e~ZmP&gHH5d;$61i&609weaN- za&Yp&PY6k(N~r&bAC0at_+C!swEH`2@Z&Qp{_VDi=%ofea3KHl{)9>gQutnzUZOdUIsu@Aea0RgEQdj{oe$K@=@XB#mfXMM`GWY+D1vt3OXyH-3 z@V9ffI(#hIcA^1r{C@z)PxVOxNm{sp)x1liaa4lm#hw&*F*D1uu-FtJ9$EuiX?cS83}N2<0cPAW~0Hq9Yad98FvT?xa^Kbn`~Z? zN5go2ArXgld%popK_x6cb$miU4+`ZT5l_XcU-#|9r7OP&8Y6@%9cwRS_P`{gU&E1L zoT)$s2VO8A*s*fj!);+mGE-8!YZlwTC&~A_Vs3@pJ=1)iAxVO0D=J@5i~gDCO_6PcqQfneekGShYc;n8w^ zirJoO&~o9=PK86C4$&Y@&(!xrZkG)370nq1W$DW|bCmM1+; zt}Y92p;3~6rFe?{@jJ{c8l?eiu@IWEh5U?&qt; z5Np1KSo4d*fmp;uv61a3c)ESuN_eeSm>G50g+2sruM9J}ol}a0ClgD;Ro_lE|15BN z{R6=E3xD|UN8@1?FX$+->QJc)o%F7_dL<&I_ieMOLRuCLYUc?KKJFFj+6)s zlJ=sCyMf^_36>lx_TECNWsNsIT&v-C@s1YS!hBR3ipbj(;ce>-s59`hW*U@fgXXUR zYayscY(C`NbyP@%aEpq&4|k|DZ)vXn?7-=Tz?BXTammW;$H>>ozyj&-5HZ5|*1G21 z)7VNfTe_gqCl*%yFYyWwz76L8l=yUDbTF`g!6*!jUDHAR576x~$hGb1SNF#?CXV*% z1gTgEuf3d?QcJxWZnxm57>9Fo2KcKy<%Z6Nys$j;1HR#k7ufvRey^D7; z6!d>4+A8@nCt*0jBD~;eUXvtS!+nv^Clt;deJBhH%Yo0BPQc%(@Ooeo5O&H^6rfU7 zL_X%NFH9N>j#9-bwc8cUhMk>vf=mMD+4e`fEYxUAt5~4Qs#;>s!}me&^d%9nmFICX zvLPrY^eIMOqHb6%^aEbfoJOS=z+o{BHxG-!;flXhDpyWttQB73aQV@|X=Gmx7Hujk zGbHZw0#j94vV}=X8#|<5nsC>#c$A}Z3ZR2IYa;RrsUTN&Y+uc{n-}9=&)BCJ35;Od8ja>Tlv@0NC z-GKZN3o|Mo#|=UUece58t1XLg^!OX64jQ0X7`^&C&c`SPu;*(*@YRHkp++E zvA`8V8zZ=2I_QiUhjVVWniKQmJ^w-`(Eu|t>HjlRJ0l4{IGlg*jrNt`g4a%k^%&%1 z!&=~Ae3)WC^}-xteL|?DgA*S1&#HkRuipYQ7jnpo{#`n)Gxqu8oiVFl4t)S37~Ki? zp>oizTRb&uDcBm}ze=;c>&mwZOe~z4sE8|%U`cRwg3|Gq?DI8dFwax}7*R3Fst82}ycIR|>a2Z56%@xIfMBHi~K;s2@hXR0eI0G7z*`dm2y|R0$j_SOvcxnL!t6^)4|q) zf8+D(xg50fsd0(I;24b4IpvVwz}BFy=T(kuS44i}g!dY#yxacAR#qab*Pa5!_w;ib zkzZIga_S(zKt3n6N=cC!c?(w{Xx2Hp>jdG$`M7PVSDxfphI|Yi@-d=}dSAifnS_wj z4gzhs)*E+?lqA=gg@;w9-m8qE>aEk-;a-$E-E%y!%l#={1j3e85 zfguI8(!S+l13}A^9emnBcSj9mo*Ttb_A`#{vA1_Xg1rCew>n%MBLsIeYk=(rH?IO} zmu}?p4>$lzxcxmlxtaQ`O;ORLE0xNEaS@b+pDTEne@R%KtgD%DnGJV3TyI^tXnoTh zpYJEkm!nY)kkBvyu^;XmP3CpTHENBp)+<_m!u$KJ9|nrSMGl?3rtGa$LEAtOiqy6L zM!&K_8^P0vq~Mc}U&&NhPf+sbYgIqb;J0IyZzGbm^}tct`N7eJsq)^O z@7RIPjH3l!+blJ}cwA09IW$#wak!=T2SA_WMhGtwQUi9@lfeFZwtM5K66U{TQP!1B z=IH^D0>6*Ug)pX?0YmO&+~#a~=dSn4cvZ_3Lbl?&m$VAx5x9L9S4_HDD8|5Jf)4U8 zEQCybeBPk7x56m*rUnGu`$y=zUh2G-+e!Xjp8jYkh$DUs03^CiWfn>M%8S+er_S~r zE#d9;P|az{lQ%{YMMy_`US@l%m+BX>$?E7#^FV2IkByGZc- z<=#r&&Zq?&)^5tGN9*xUMZ#G+V5BUBC6Q&gG891ZkZRlb$Ns56uTNH4C%@q*ggJyChi+Fk=|lUIkK| z^pi>7Qa5|e+E_e6@XCFrObhTK=5Z&iFQR6Zki!rCwh^0#UeB%#+0SFph(xD9PL!@3 z5=cAW7}Izdd&nsHj{|8>U^7%xTX<>4=*-NcUDsu-1iZ>uZLm=o}CQ&?OE$#+tt_y>57mo@MdAvd$tK8 z@xyrZ9tHLL<`qgm-}6A5Fy~F5&jf5t;sylwannIReQ`FSc?PTJTmP$XBkc0Eud?~= ze@VrY%T8-aZbdg!>i@lb&k-*8+5l}PZyS#`)Q0<2#ToQ9+3cgg)lztRRrXIuOK0Jz zs_cps+BeIA{L1oh(O2>1Kh(ajEzeqxWVRc|2$T?Qd3cA|$6WA$?ibqcCG?li(^X&Q zPn`vtsO_KpAsvT~q29nE>1%2pRVT*>x^-Vl4fZ>H7htY!a@6yRA(Pi{U9-%!1Z~o5 z!p~D3A8hq0>dM@~I!u~6{8-asO1ef>4XxUeaVDx9GG(~-0gMfII0 z(|LjpbRF#G+UXcib{c)Qa=+zp*~WVe=?}u425jF9;DuH<71%SlM~rg3O+WH99VMnX zny0LJuBo^Lm;v#ezN3G~i88;H3$)~x;G@Zku9r*V>JT>qDimOx3crrG!eAW!7-uXJ zeQ3UYgTv${{*C(?P12^#H#2>xO}v`ye%ijaWgXTJDEutlXkgqx?2FYJq=rFgcc$TW zW;`K^g4?mTa;5OT-h1nLiGW1-82qARgrMP>%p5w#E0P(|Wg^gzNRF!c9ZfH%&7=Th zo2-M7?>PlVz3)rtr}jeM7tzzGX{PBXGa}{I6Qki2lWU3#=;`3-$4LscGk*v2w1n9!dl!NYR(bhznO^fZ+~*SB zWD$nUxqsUviVjLqK7rKM@5P^c4=pHUFbeF z(wF(5g}Z(_RhsqH@jQ1!5n$qm1W%^FC3hzCmW@xKc<_p-ek;wpvA=^sl}jG$?863@{QBAzlAvbo%AAed`a!e>XG*aBsC6qYzWVOE<3pGq!M ziArZA{{i-Go{`+d*|q7zif4T-xO%IbR6ORo=BZV<_K)ivBV9+p7uqF-i@FC6`dXO^UK4H z^QKWuZFefhXDCB^lOrvG2A=XsuG3U2g(+G78krXyd^KWPgwB`_!!KtfIZ{Z@8}USt zbGCPI2jCD8&>tD4p%lpR&VUWh7bvC)vCTBrPB(Eh@Z^=I0N2k(jh<|0hVw)jLqG*s3iHf(xzBX&h${KhJ+R|pgedYR-N$8%lHLi zZ7vT3?=8^0Sn$8dAJya6{j}(6&F-#g3>StBe@1FaTC{+es4O*_U2H-aamaPtE11WHv`;>n)>}*KH#So*czu2p8N=B zXJuMTLelY-t893bhbKR09!qbgeM^<)Oul}!9v<0HsKIdOc~)Z{xvBHp$1ej5-kk== zdbsGvwKFfKv8UTM&n@9aTvC>9Ivdc>K}oN^E6Ydc7iZdgljzOEh2}8yD&-#2^`XM{ z)fB-d9EI!3em|#Kb4^G>M2%IrBN*KOFpcoIX7I=C!`#s^=6hr$2-*f0%XLb2yMeI# z>w%E=UmmZUL((I8JaClJ1?<6!=~G_bPqRtXdVS=1l+er})x@6fjO_=j0^6>Hp}cHp z6xbUtn+j2Y&?Wx9I0c%!knBvp0|Z&s=CxMH6Z*fOa9#~xlUg#CV!>OycH ztbuyHT~Cq5;A;IY`tV5v&U#~HLmd4^`)+7mj^5vWp?i_Ry!Q!J@NO`$TBDp~SSBwJ zdSo2zZ$KrAC)(f4P`Q(xZLh&7bNFs!h*_ra<@S>l@rRfiAaJ#9Q6H~etaw4niq6-1 z0UFPTYd>&OF+WU$g@pBbZMA+HJPgY{TTJP~MO4PXk}fb4mrF3;NQS=S(6M=Qy3>&H zh9r(@YIMT>w?-;oO8)8H%j+E+*zXi@L48wgFZo=)@1LV!I}DcIag8k3E3*C%9T4WT z4cHoPv<2O9kR6(*gkY=IskqXtIxsmbqmV)L}hWm?n!o_)y%k0w! zGe_M_L#62d#L<(Y&$0~iF!1Q{oXN zo);n?yE3Fzxam_|=w)P^LU3+yeb#$Gee|V>VM7e>_xYBT7*Ia%r*XdO)SP;x` zO|6aZmTD6j=Bypr_+}`IHs%(b7`w$vVu_aKw?tbFrOa>1L=Mm1t?l>yOjEbT?!6Z_ zCM;W%HAAY+;P=9mi7TWI`^vpbUKg~7u@$vU-d)gU&vBXK_HF+9XuaLS(Is_lT+umL zYmMVg31Lg)W#wn(*=wF+XEe~Y8=gKC0sC(>yr%x9(jM+96rTZxW)@>W<_^`ZaMVI7 z=<9sz;7A}WCAnJQWe_VzzbIEGdoAtInS0Ey@IK^1bmDCXx7sh_VN#yS0)YS+AGS^^ zb*H(-V3Ocumu9;!1}MjPQgiS2+_a0>H!td-_I)otxP=b3j(cuPl8&|hVz_C2rZu@# zd2x3pF3yIs;3qR@#La^kDLe66;_VG(&VBzr8DT=!U=2!qN}Nj zlK&|jCNqo?HI8m$a&)J_+rhhqZX&z&>&n);H{+Op0PVFr&C)0L&S`I4#0MqL!eJI) z&c02*0J!3Zm_^lhxf~gzz4IV*<2O4{VKM&C6{M(>!yp?i?rhg7E zEYonv(i{4J_orSa$NorKB3~RRNHGh zpW3WJGhM$%(e4m+R7hMv@5R}$6I8U?Q6bHtQMp^ml}phvFZO;|=yk@KySBSY3Lhx(q|yKPNOCsqM>(r zeJ`l(vni3naN1XIse6*88?Fzx!s{~5H?wpVtzI`k3wlYqoPAi$P1KjZGB19$h%ByJ zul!ulxpl!_2f?Ctyc;dPZ?~ZZR7qIO3s*a$)lI*z)qklZ=whCVUAvs7pZrnxjmw-v zLYIc#*1A?>s>14L27eThd@60pXa2$vOOmErlrtfsUW(H0E%B~CZKhZWS25B7^g-=$ zk7_qYM4rczQ3ji1+Ha}V{-VQ@f511%lRzCbxt{RtJD24*Q*3rRsq>Mf1%Da5zO2%8 z5h>4?oTJ#_^sb=OJG#@!;IR|av2PF;2EE}o8j=W4+YgCg_llt&&BTe{$kJma*D7qi zcFlmbmJrpynQy$dh&n^WLFxAJ*9&njJgjRTfOcZWJHJCp++*~mEB$3K7T$BkTH zuWQQd*V01R(udi@fmohr&?w!grj7KS=RP$da{|rA+#J+hPcxL8& z=Gk%`DbT$u6x}Bc!@*{3WOQ21&`1+*Pu`M^4HLg?^Cl}y3MC)?K+Y>L zYA#&(V21~VYquDpp_2W#l_sT`*u9pJa8iwzbw+BAmg-7T=-N{|$=h24V`6 zFDo=9m5MY2i=1WH8$Tlkan`eC>D-AiQM&=FF;3J*$dk`Om)JgQS*jAQ2J2qSz}X)b zeL(Kh;U&aQqpeh1ynz2Dv|y8CR9>RCW#{`tgXHmc-_!@k!=l*&K?hBGajJLCSAx_C zmzCGDlU=aFTRlM{eXz=1hehr0RMrUd zzpTR_dO{F})4SSSu@a(jtskv?>6&7#+aKK#%A9=#{Ihy`C_};Z#6;e>(V3A7PUyX*sFQEUwit856gxy(5SdY!*&=H~=!o@>ut4XE=ss0up4)EWHIwTKls6xk zMb&Vn|5W2u=FXT$pt?d>%6gcfE^=}^XHTchO1BIi3G(3U_QQcD<_1 zs2r2Z{6I5{TG6YoYaUh=``7&a*Us$|c6#;j6=s`omOAY8-(8Az+j(*9+M^eCEMM!n zAd11TTA#^$K8Fp}dmixhJnr{l4CvVSa*_IZR@3+dg2hK+J)|dWZuU~rve5a%NXY4Z zb9>%0N2Mq?Wzy(m>#OROe@0f1gZ;RcO|NzsWZ#ScQNP2PFf3EET3^$V%-e?q&1)rY zr!|=S4^ie}M{;*nslU(@l6p^8ImCxka(_2h&oRq%vLM&_`ESvGp?pNbGtYL^?eDIx5?J?64*B=|K^EmQQ828vSY^NbXI%7`vvlHf`1>^40XdeztfxUYaD-AU3$w!uD95Ym@ZHvEs35r8LQvU8Np52 z!DTYQmpz?SRQHV9v#<6_Fj6KGoJ~XFcBh{4SG0uc-g*@V2<-NI;;L?61b?obeasNT z8i0Q{ZV{TTXP-;DKXYyoLAAB+fGCP9x?9 zfQ`qshBtNNXc++-8qDl-mu=_0IbKK3FYLzoE|wu{r^YhR&FaDTb=C|_RTn=2;u$cY z!pMq4qCpEVWXmy%LUy}#EiB`!qeVuN2T;Grg)+-}_R<0}tSC+_18s~cek>osd7ry` zo3KBt1@o!2m!D0Ha^jrV#|PdbVnnQKGo-XdyW7Rz*-A{)JO|x&S9CKbS|X`!kdg%y zCLU@0YO4Y7fTf6%3p@J!wf{_s0*dvx)^gy2bM{*FMb1LDivwMJ-1w(vg8nS*qZF+1 z@vCP6BreN#mdD0koIR&=wH#zB%gqOvX-D@P@z{r<+OQlgdDCvUCi`@Gx^exV7EwQs zAlJW(DyvH*=!9uMJN;0YJ~H&||;?qCfY30jGlh0wk8YdxSUwM$IG5gNg0 zxs?TD%JWx{er?)qQd35LP%MwS9CidKm6PdPgwMV8N<9GL)9O4vMj-s8Ywg8=6yo%N zV1(nZP}?%f_S>6j&J>wDCCam&f!~DF(WtiL!&!EViJL<)H4lmi?(75;J9V6HVSA+A zs6v8v3I2YcWKwQ;0|%Pb5;25+pv9Sx;V%VO}Z4`EcsiMNO1as&=OLe2eXV48Kf=1jo{YbetY5#99cPudXJ#BfmARf3e&bt%#FA6`Nf}H;Q@2`@)5%#WE%Tj6HfmWA>+MQd5!p(h; z9B85k>rxqkJ2cg;f7_gR*qEN^%g>~hZY>h7ORpXD> z4sIlr@_lo~N?2Q{5I*`=uUiR%3fXb(a{>-$Pp3nNme6gzz0nrBu$O}hugA%&Bfa9T z9`7%v1A`|OA=KBr7O%GO-q<-zKk)oBEvXqaH|LvH^*1X9<8f4)lFj#roOX6ob+p39 zhQs8Ct=ji^_EjNjq$f9vP74j)T6LWAQXE9iW87E^bt<}4@`x>j(tO9AiPLU;Z zU@pQ9hJT_GsI8f}^Y21&=)_Pv0g}uC4)+a5DP)UhrFNz8 zAI^RXMvO!JQ`{#l{=DbGPT6hMkH3geqoYu!rvO|rfNPazIDPA*msDlqU8pv{?3RNI zrSO#ftwH5kU2G4o~M& zMeYfJ`db`%FH${MD!P;DR+KjL>=Q4M6s*C~UV!wbW#8*%C$H6W#N>X=|6Yzxf|r*r z=ZwH)VZRY!CObHr`Z4e|Ew;*BSC@RU1wRsFMOZ}B{(2yP>VwWUKoENLN=5M0wcPW0 zbZ19ZfR&RGOPWY3Kv?)FjaR*TOCLy$iHw{V1W&yb4WSjFH+sqoOpx&F309US=Aw%m z`Qr#8rYzyen%DtK;;FO!@AR+_7BOpHg3!wn z;aF5TER4Rq!C~KKoCtU`kw-XmHN%nZhn$gSL{cqjh^hc>YezBPfOCo0M4|*kB5@;4i-I4)F)w^k#b7${1mBL7h9{f|b5z@{NA4?(MyopA0eZcTNIp$X zl(Z&f>P++2F8Q`>C%E-OF!$gKzQeg-lhdRa4a~X^SwYB(seGwddr0;})zhzm_$44FyCA;+-7ZT2YcZFk2k@3$Kogx31`t+^eA1%tUg3!TYzG^h z2bc|w)hv3Y?liIj%~k)Uq9Cqvg}kK?Sg9?NrLX>x6F`O{1Bj4+pW@NaIYLpBV*HE@Lvi^*(v%;Fw8+o(tUcZJdGWr zW;oRj)Kv!*e&)UTb><51FT&klP-V6O7*xB(d1WA>WR3#ZN*@CL)UbTFnYiB=7*KRU ztA@Vkz`zNJx8?$zLOMbsGDKtr-q|6TB+q)@C>8Bt`7IHKe|kR*0)vPwpze2iSSV=$0_8&7 z;*SK5Whm_YI5h5mkK>OZ+@$a`4aj89c&ApFmDLa|ynLUeRdciyd}?S>hDAYL?yec9W7?3kSepl`aXanv?r<^b&r5r3s+`D zQXP;s%S#0f<@cYq8yj#f0zDn9kTcn-?-L$l_b1njOAbACPEG~a5Wau`lF^5MKCvV? zu`cqau@B;U#$&Z_;o(m{?~~v8>33z6+WS!1c$IS8|GFpeuQr-2zO;k1dn?k{=jPavfyin=?)IdP!cH{ta-H>O2` z+VvL^nd?NYYf0Q4?egwa0>0lUi;?1|^=(T{AtX@sWYNfffNcxYY6Vi8>IJC^ujJlW z^*={Llqb<&$jf(U&mn?bukRGOdzl#LC1@)dKS+t5xID^Auj^`9|4Fbw=UvH=p8LrA zNFj4FeGj{L?s^bDSinp<1_{FYcQC8xzIj!YMMTs_iuD*^@*f{X|mZZS#K4)O~Si#x312W%QU}_sTM*v`g@LVddnF2hZIh9KQj@YH%4`I4q zdvk2~THrB13!lBSb5x?z@slJ<_~MiVInaCH6itEn+JYD}|*+R)EMPZ?8=7zfTW}9Rc1Bh3A5s7GR!%ljLbV#mtCXk`{OF z4Z_ZbS-2bjY7b+qwY*2vGVm@HelB`!^rbpu7oQaXz?)7-uk|ykIt}R)Sz$&%$hqJ)y(z z;Xb=pV)H2bUlbfg2Y*8M<bYr><^s6>ba-apgm0PYS7 z8@qJ)icj{Yn@zK31{Z09=r0J4^F1xpqYTIX}!Fy8dpfiG>8o}{wuv7WyC}iz;#`D<`)a@#-b)ROE3A+W`V7d4BjDpP zLwYOVOz0f|uVtrzcbA|mh5c*i&Yb02LaF>cQ+9% z?TTiv);s9cV9iPoDgM?9c)6iC5Y_w(sH0`6^sqj`b~KKEaqVDau3%DC7AE3xsyT3e z!3KVIVb6pPL1PQe0=+s*h~S+NS|<{n0ph&^UdmsUR(ITi-1984*= zt&3?lNX(E6W@w|%! zl)o1dop&y{9nS4-$PkT3s+&a3C^@WzQf(uQ@o2m2wOAC2rO znZbUY(>?VDdn05B5-cN&gLz95q1|+9E^9x(lshh|$Crl<%RZ{T>DaGa4lrZJLn&!5 z06bd(PZs1Q1Q=5>(sh5V?wT z)%6KU3~gB~6YZZGxKTT8%A;%T%}6c^-MSuvb~|t9+=$CqiDU6a^jA#qlD18q8l67+ zfoM!H+e}>W0$jZ}7ik4}r9$}7{y<)}>JmQjnCu!+bsv3}S>^Y3SQwgXw2s1L7-Nh+ zphiP@`sy_%U1sr@`Z6O)Hnwggan)K+@G*Xx_8;DDcU?#^g~h4r0CH={kmOC*rcd8D z4Q{_2>Z;e#Q~FC(b-u6nYvaS&t3J;WPe%1ItKzxKYYy|ig2$P{#?Gv=#Aolx96#RdnTpr<8u>sT zv%+uGa(Vaivic{bTWK!hZ|z-3mO=UDenA@0!dnOn(dGp;D|}?(^fZ*s#jcws`ZQ$u zUgG&Xa}qtO4>C33F#k@S4(A~yy@fd&;zJ1Ku*6qf#p!^BItZ3+j5JILC1t6;Q3^0_ zsq+yNo9%jr1j6h7|j*H#+P4O^x(ivB1lFG3N=D^?s2WEH1C2Kizcw6|E5Ev^3a3!1MDA zl3pbF9uT6D|HJ3u!}Wcn^Um^zxzF@811YsyQkIIJE2K})zUqHNV?@X8&j)Yf z0=?0@&SkF%Fr)->iz6kOV~URpZPV|%YmAV|Jm)Mg+>L$k3!v5CC!ynpvlKB%?dJmc zHatfr)&cfaIUaj$w{`8hL_C*VHoLoFU88g}rp9xnYGGWk7_Dd2yi~Q2y0r5bx%awu z-92eITDFnszdlXnu14Vd+H4JawP2vtNt=716OvkW{vFd~F_Zt2{qIP;Y@kT385@np zfjvouPpT9B$+GN!S)_x^LQ8eJ`Aiur(RSNYcyyufDE49LlzRrxazIX+k0~l4MPmBx_^e zB5z6zQQ1OFwoqAOCR=!A$x@n<2qU|p?6PLdUiQi^Le}qkcz@e>9KWxlqkl^C%yZw* z{hZf%o#%PQ+I!eM+w)W-TJ$8oXHu(POwp>5{$`Tud5kZNTW3^x>Qh4Rt;Z6`u&@Z7 z^e3sXn|qtjFX)iEBsbk6_y?_F(KyzLrqd0&FDV^&6_5?c`|lgjxmu{=Ie;tCYIiW^ z*K{SsBKGW(zb*B8#+0y`@1P0ka!wpO(wu5PMG6Z2R*p->5r4ufB;g9b zS*(yFD*TW>^_Tool&DE=-9TwQjo#u2Yg>>kl_YK7`SvE@)AuDa#SN+#88BHyqpAtA zW|S!g7cYx?yl6GC{G+uJq2s}a9)@ZEu(_JPCYFlfyWI0$dok9=ert2XjPo(|))xD& ztpz?8(#k5jsAGTo(6yd|hiVs}z)SKM2|RR)>Yw7{gAp7{8}$&ARnBFyZs0i_-R@sx zsjfO8#g5!PwR zcMZN6aB4b%)-Pt(0la<_6YONz14sGc3^HQUL%M>{A?&+<#3$^a#fJjG3W<Fe-GJ~#ESD3`0#)w(TL-ZhR^N*T-zsfcd=`_SVTivf3fQ%Td`Qd zpu)fb)>DP$x8Y5tVSa1YsmNul-=_r33~vBv%Q$75ObJ-a$g}D|Nnp{tP1Qha4+wT_WHIMNP~IfZa9ZeC@MJzo>;AzTO|KUF8bZxf{TZ?!j{Zcg9)x%m;999rw9D zQHINBthj89tk08|Q1lQw=Hl~V8?Mq*0XVr0lLUIfVKHt<41y_7V8Y3Tf>GW))nqEQ zWuKkw!h;oy{kwLt@oM6fjgb9ioym<*Sv+0H{)(@bGDq$NrW;adTqim{C5n63@dh30 zNoHHKm3efojt8Eyeb>{Wf&!w;0CtD0orf+mgK-TudP^CTq+bUdF{xp%Om@hLlaR=j zetz4eo`Zt|QP|hGz?PTifgZzUscj<@7IguN$O|)bAX)APAbbl(NF{crU83@}LvlPQuT32BsPiI#$6VkwFAg!C*lhJAZ;eILNq?@4~=#~Ia zR38ilLQv}I3B)iW4M8??b07Br2C}`%>Gb5>7fVH?G=-9P)6~%K9)7#v;Ngai?h#-( zx4@#f{yFU2#K{tH8D)UVUD~>tOQ0E*&2oNDDaoT0;&i8<`!nYx%DEruasX4&R<_fJ zjW6RZ$y=%Zcti1wkJ9ttp*yRF=Kw{)QSh`N1LnT_%p#@OudxPeZ)QMJuXU3Z2Dl%r zJKOgcQl^2>+8wNncQ$)yfrVB+#uuMh3erc`%)NytNI>ZfSz+xqd#GxM+f08CAocIKLqB`YSU2ZF{LopN zxiK;csP=S5vR%JK40XQ(JBqr*Q_$|GVn_QG(`=N?QVarH9 zQ#Sz$spcAD5hw?Ge%G2MH?pp^AIncU8en#PIGUZSpQe6=!r8*wrQqWYgZ*QVoxa|00nG@>)v!0u5SuFSU?y@RYy$(tCoL3nGaOAGIa6rdG zqh1bu_jXvRRkgxqIm0tQQyb_;f4jR>sergPrGfBx_6~~Zz^ureP9syV0<&*?iXN1u6-s&QI{8J7+!Rd3(n4^{ zgozps`=%y@V}$J&Z2h%M;Y7@m8aCUp^!Me0kJh~UM(k*0M1nwv!p7pIu4YYv#L*Nh zTr~7mbT>H)F1hgkTVGu7wSOXP`~Y#U7bize5hWSEf#sV-S1}(NJ3L6MD{A?79QO7 z0}QKvLw^~Y-BjFKe~+0>^4NevcFKHfHAZ_#Z7Rv7UQkW)kOH|lC)u@%h}L_7Qr?d)ze5RrM80tMI2| zaq}M3FBTyPWp03L^^-~d?Vm{(K1Q}RZee~d3*kq8muoXkE!GQVouxGQuf%(LSo*Y) zHT7_nw7h@7|5~fCwN8+c!QcHj2!_YIwsR|jVhRUbhOAdc!3sNc1sQ)bGe*1o>X&fY zJ!AwH`_XQe56Z{0%u2rekuOtwD{qBR7bWIWKUDw2BO5))5wJf(4MVir@X?|&8{&-1GQ0-+b_1h9heg-B4eL`S4|;3FwCKURmnau4&_k9ngo z^a>SmydLOfWI(KQ1>NZ%(?^B7rEFgiUx<~hRO~;DO~%QTN*YuhsSuXVBfuO=QQgBY zv?UqPg}~BzqxDlRcko&gJ$%5O*>6iZl#)Sq+=OG{PoRIDk_O6$Y=&dBef>&1#?5jc zjqb#$X)17Lo`ThQzPam}2pn9H*1yTa3^Vf{MO`24(92m4T6 z!*1M32NbV>i|%~8f`Qe67SFw{At!&sSRUHiXM50=c&))yuG|2{h?-^sGQsKkCkA@& zDxpWDEVi(j21%Ik5!324?(gx)9^5jf?IC;m?kz00^;@-*qt;!U>a0wrtZCn$ z`-B3h6sVNWxeb-B161OWQ1ClAR5N^}wZgAoNcCuURSP-*N7dLPdWA?m$Z=C2n-aTd z(B`aZ9tva2R!B*ndzE$UL=04MCq`7LH3!78b{)KXS?9I1&Qye|ycJJ-4LWix%V|xc zFiaGQ8(UAjlGBAjemjPO|mpRMi7gY-F=e{p}2on_EIwe82m=ehxMTsdD{BXNiZ&lM1r;JR=$s z_z$MU*x#_2N%gss6C@>_qZbeFbg*J`yFJp+i1ptu_=T!e&N9;ED;u#IoSk|!)wl5uka-G*qbJJh}7-n)elg-Og)(B1VbLRHE*# zEcOkQ6fV|t<6g`AtS6FY%>2KWsMuJIJ~Ao~M~^Az!(P2e{l)e39ZtG*O+%A&{Ig)n zyCiYyO!1`YsxZTm-UX~PnJFrzA>lCRBcfnh!Ib;x^OWvkV``*=uAQKPP1c=mw3jkk zq4DMOi?8rg%cws%j?z6zsA$|D;^p@HaQm7=lIf+e1450MXHjL7#?)WJw*AC10CfFF z+eTA;R)=ry#gbYBnpo_qQi54Tu z)etZKV!o}y!HXQdzkX~+rCkIWzS)s3yi8)Tuo0h@mV6W>!h(J{x z(ih%lB3BgmwCdzA$@uVfmZc-_kHsyHZ&Sy2u)UPw=+l<$RcE<~OOapekCu5e)#89- zc2+_MVdf=h6y|#cv>MB-3_W|k*LS1iaMctR1E<+nv_TiqY2%W1XGavN0mLpk!V8Ch z<6>t#o_09lB~kpL^!yWXXAZbTCjZ$aPpd37hlXLbDU4l6cPrA6BCWa&J0%k(MSU_5s<< zrC2DfnrJA-bVk}C_CD!vtRGs5cpU3VJUh#C)JfFzh5s(K^=dX+Y0CwmzTE^mTZYJncnz2vc4*a*mS& zqfY52f8`zn348>8DKaO#OD^C|;SvYN(xvVRuc%7+lQ9%u%@oPFn@@tIaYiBF#O`Or zQ^QhUx#q6-UPzEoU%EipVDfufeM+#3XsvfcjrzVIwv>X?mJJ9V7WkzlkFP>e)B@UB zRJewInng$1jIx$D=jl?`ZfMU(-Ywl!{e_I##&CxN94<^Fdv~=lG)n8%nt( zDjd)1d^{rgD-i5A$uswcr8qGsc6%YzJ3Cj8DE(c0&Rpbi8w5&R#f=E=hhtXr$Iq+C zF^i&6g#T#c;sNKQq%IVv*rykC%G8_(F>eF~PI!4aMk05B2V8+NBK0r_6U=4`p;Ae z7DWRbqWVW-yb3o!)`WkC)(^m?wd-D)Ml?1`XoMHC|NnR)91k7Rq1dC={6erknNZh_ zNQj`*g=EM+{g{3Y`L3TW%@t7ma1&2ny+qh=~jB6}lu1^cj~i3fcFbEw*$+o2YT zN+03;-q*-;L~owfv2bYLv$M{YiJJbveT8!GHj?fR^2TeR*tiYC6X`pHO6ChkpgM+hlR8Kp@u#jL%@Wri zpUc^VuULRwF$>|5GB-c~(fVqiJG76IJcjp!tUZY}gv#wbSN^5c%e@5t-9qn(S1lJI z9kBCrx`h=8=%E;|553Ek5Yf&Q94rWML&c5KY5C z1v(y?`5jU>36$*=lvNZc)VI}`5KEI=d+b3!BCAIf7YNCdY8J^FDH)zha{ zSAa+R)(L%z1|;`2lLa>!ZH%{t1`;(7njZUmk)Q#jqTrNuxlsWF8NC5!_aS*SrC!VV z2+bi{G039&v$~H@wb%izfGH;$(Mq)TBe}Pt)HxL|z|o->QuO4ebE)~3 z)eb2U#@K9V7P(n=3n5_@)9oyN2@=qJ7IKt{EiN;xWCk6y?bmt474q0 zxQuq5#BEFgup$M5bEPKO!n)Tjt0!S!Tfty=3x(F&yIT;>+6(J;8>FD~QeK9>%Y9CY zF)3b%NDFH4X;>TQmYjlZrTpf`8mE`>&smUY5$M!dPvHANrmB9_)u>E9>->es;$HZk z5v{*n;beVqqz@u~;{@zrBsN3WF~2xU+W%dgOoT^vWufm`x5}y?a{MdhB_eNU5G~|! zIx(fW0j(kjXk(XIy94Gb@yP%->0v2E6uI>~*A`hX_gEi88i{LV#>7TsuJ%B+iMT@{ z^v-9V^W((!(wIS)9~s^Ru4xAkxKlOwYgwq@N9FJ3!agEgrdX;jJCv!LrQ{aRb{25# z$mVz87mlX_Ii7F#pVSNW4?F7{vnQ_j?$2S`AtbSuSs&i~#Ymph&(!4nGcD)ac?*H| zN_c*Lb7dqLSFr%XhdfL;RMbs!e_}LF2{7{6G(-!1U&XF!OR_qfUZmm)O;VZ6UMA>w zAu(RIJpv6^QX!@q$T8^&ioQFftsv@vt4LeC{1X0pW3F;<_TwFh^WT4F)<>`egzV}X zxf9Bm5+3CR8QRvMeNV@vgAgef3~)eg6#Z{C26f6ucc~qzI(fldDesx>qkK-NN!M z*{;;3a<5^Y@S#t`+)zz5TEjf(Ft;0%%0f$574Q+g# zL%0j_jf6&e-EeTED;Na7{LfTyw`-(lqzBwf7b``*{%^xMU6fnJ>Y*8G0VYLz4L=_W zpfMBk1FoN9twb+PJc zSiy$Uwc4w^7KGsU%3s=_bSZONB5D770OMFsRCf zIm)ovdZb=qwX&87*4S=BtW}VvfTkNVnHRyMVn}q!&dMTYmC1PGXhiG6ad$d{vSGQ5 z*I^jgD&7Xxjl*c2;A3$gnyOM=)o+tb5i|>vO|DC3WRk#=9lfn0mXRkt*6F zjRHCGk^u)$mX*VffxA`P60mNWN!4<-2w5$cjVkL`n!r;Lge`ST?HYIrTxp!kB{)0n zf-&%|;4Zu39y-|N6ldx+xB>n)!K>=VJvB)|l!6uw&V%oC>jRY}VfqctA)bwJCU%`<$8?7A!A4wmcCyeX#{AHfGAbPy}ZIu@>BHr=Mv?rN3J z$DPh3pKQ?$v5tzB0_P9FtkX{y4b@6vC60OB>4;60X*QgTMcPa>9cLQ6L=yEB!6quK z89^f%EH0JuG8Pf)5^aDUu^jlrHN`sRO?pCPFnDmBEZwm?OgfN@6brPs*6xJqcsi8D zS;dop-Ejf4S+5mzAqm7!b{!YQOXW5h@Y`a(l?p>aEz>A5LE4wEYt3vko5`SBr=6&V z6go>gHi1g0M&+weT?*+*mdi7AAj{C@5(-r{F;=wVz&h}>QEVmDpqO`-rXBWh)mA|* zD~dlZG8OPUxWrnP(Ce)nE`Tq!hL-VXB~OiO!DWhIp%NG3JaLkZ(?!+iOEtra(TEUX zcM?2Yj7QB(!$+x2x2v40yM4tdPXx6z-;7|bOi4w&cwFd4yA3fd6x`XWm)3Gfj3`va zjMN|@hCXNp5#Vt+TGePHl+nOPsQ~_j(=9rh6=gr#@|v`52=zkBm2L3hYL>`KjEjak ztvVBWlB5CwpGNZDP9$I@xH4qa8Np0t zeJw28Dl^$oJwR}T>V{oxioo2>T#mKjq>LsKNh6?$5!EoXcDBrtvAm&$2u5oM8*ol+ zhr|w%&SX;w+)a6Lt|}(&x<3gOsY)F|nn;6X{l!S2Rb|v1%g8Z?YUBz{2nz<0QUZ@R zHH1r+vPv!%bR{ybRMxiKIuO&J@T;D9NzKRsp_+_kXe2EPCTuIT;^a%b7NJzBQfR{6 z6c8xpZ#wSS%4tDSl|wm&4dmQ*z2%Fr^>Vj}>P$Q+Qr(i$^;U$0Uokn1E!4s}xt(!A zCS|BmNbdv-bfB#2m2R20X`j}ub`xDiYT9G~q)R;RVbkCZTzoKSBmyAr;D@ zW|BF`aH9$pYE@92A0S6UkfNJdjNGBpFL{OL~pd*Ec+Lt))^sY}OEiHPyJ7UXJr(@a(+Lfu#`5YKYFi(oQ# zHJ9?ha6TVMInkt2%c$vCOip)#YO7VzlDZVnYF%Aov%xI*9ggH9Mhtuid0KI+L-1WL z-XKi26po>kT=zrO0;G}MjMqoF-1&&oO#4|@0#atXp+*ue`lEPT)(lLq_>m6jH=#CM zC{ba?o%RQthC58DH7?Uejc{4iyNOz{+VR(scsp8Rng-%V*nu0}AzO{$dFLfg7m#dX8YMqmO+;K4yMjy3=e!Q&w8A$q!Px?6BW zLpio+qO9PHQ6eS>QJga^52htu)j|$NiIyjbN%6446NZ+-&{CdsmW2n=AFqmR-c!l} zC=rhU?cutvHT5)8vE?`zpi~qJ-h`{wU?B$c#MEZj%4Sj}e-kw#rlEU^Wtl*1NaDOT zU%-PzrJ%oqSp@Cqx$O3P24+Ej~0-QltU~k z1w6{@2WCkIi{H?q$QZosV<{N8KGuL zaNz+ED|jb)Ixi?d+aAFNhAvuFJCLZxC0j^j(`q%|;;FpIFnm&IL2NLXCquv@@VFFG zq74Mb8%-yNR_KP?R(-S)?U*4eT1f~6&JWidTNdVNwPnrH@$YP>hETQJlpXn0GP&oq+{=a zFo3q;{a@(zzo71a09gme0<&}w^1mQ(t&^BUloRb1j&`$tMrpdUKs*OA`?D=x2&yoi zfL&c8St*3O-j2+Ki+qLir+JoBT3#Hlho}J8;W#{0v0StzwFd2u`Z8RR%o5z(fnq zC)#x-CPF#LFpii=b@S>rK7!D+QxOUSttDp8TVSu&Ygf?^9@mXuAhi$`+4V9u%< zP}W2W2N%3dB}k_27-o?PI*Je0>jgb-0vr~h9PzSPSLT6CnG97Z=~+Sagj5Buz%|~J z?&i`CN~6I`&O6`~S3N;b(4F^MS|AoQeaT!v%d2RuuGvtLYdAAdJz+;`aG9w@oQTLa zFF>3q^8wghV@)sSrff6YBwVf-Q3MT;Kv@7LQ|i_#K88YT!3d^@L#b#tT0;>6K)blh zjkR%Cpp7XBy;^sno+=t>H0=U`rQj?U4Z%!-t7ofm%8hnQ4My=YaJm~{^>8)S(fnPK zi!?Y-C1m>S2<=Wo-ZtY7fN^;WPXjy5l4#wF7BjFXRz~$sDdh2`*Z_lM+*C6I=0j;V z4<*EO5D7+;bO^HZP`1P4kd|vWYZ~;Bf>npnTDMCS>v9l4D1@Pb8RL1#bh)&)?luue zAqn2E*?Lj%N^yg;y?7w%HHlWSP)}2oNc*)|u$y-gu^<4c?ocR$091`=ZN3_hWNQ}f zcay-3k*1z3F`#C{LApdLQMnYdR0d)}{fy-JfKVva^D-W<*n$eV*<3dptAfSBqKbSl zFmtApWkZbw6%SiR)^WL3wVlp-6@QKHssNgKvK1*t2!hZtV{k{Tb2)#?&eZDJXb>vr z_#zQSLrJ4iunSf_rPk|Qp`rpS!d+smhC?=_GGd@)=15F8P#Z`{Xz4gWcr{NXtmGp? z0oMU`utLE=rVz7}N;?g}SDc|zOupXA#z;3R1k1s8xe&;NGooC@6KFu?D8i-SsNxI6 zi&#wSR8_16WiwDA&u~=$J*Z+ZUrq%`cbu*vexQkv8r3>UBW8l&gmep4pDWGEIjAKd z9a}7QC99&9in$Jy6*F$da2AnDM-y5&noHXPXppM6;~*#ihhZy%WAqU>l@7@;NyQ|H z^cnRADq1L&MrbC>FbqTZKOqX{aRQ{ zhp8m)C9o3hEM!U%)Q}1)rW{t#tFAN$FgMZ;im{kYg_=g)9Z9M2q^{RBPRvRe01-S{ ztm$}*?3Se%rgm(lfeJ!3LX`rUCLfL^Z5A&(;(HU-4hr*`vWSOjKC)Y_m9lk?mxGR<_qq0KM zmn3bA)NGlox;2B3QM}HG)viTjVmpth#ky!@Vxd;5Ae7=nTk%m`tD{n8ER}$SU_q|Z zj1_fU$)nq%@?V2|tYe`&5RA?az!x4k>Sq-7VrZO2V&+$gH-hg9KMvJMfcvO|VX(i66QaW$P z!vrEb5f-d?6gLY^G*POy>pJ5P078hYbVvoOyV^-I+veQaHn0GXnj+bbN8B0#N3t*!Ew%tKqA8sjc&`R=e=Y;!^uv8i`D^F(%Ytq2tE*q zd`@YJ5S6M3)iDPYI$ASIv5Hy?Fx`VF!ECaYi?G5)K%jX*(#PC-#Gle=qUg6}DO_+@ z^9ss0YAyohL(wE?pRN_OOoU(xgi|IYBVClrs4WOZaG{V*1*BxT9$|`*XvJM7f=4of z4jOrlR>Pm`C=zdobc;&{E0HD}@Rw>?#cVk1<`5#>l)btcDiu?mbQ9OQbt3@R+L^fIH-e?SQID}8 z_$FO(#NGALxk|(>H=<@cPT_&4fXs0}?2*91WJHQw5WW11M&|(-h1l7vb zstJ-LKqSUBBq+v%{t%y$lRlG5gTx%n`HQ?;Dm4w5jLJa^JcR{JpJQv_;=6h`h_)Rn z(z*VRfL_sTsdBMZ7g)Wh7?m=x0wD1JLVP2*SR<>BXq!P-xTM3iT&c?(LVVtTCpX1N zB13V3Hrq}&jE>AnG{^E$%CEy*4n}k_o=bU?4!Kzg2O7C_m@T0)K;&5vja518X+d5O z={4hkF0>Lg#*#~(S_sROia^t%qGYQnq=1n;tk{?lh84}LMYM2|sWsc_1e^&pYLQ}+ zlZjA9ZqxxmSTCd_(MqaIcIa}t8)h&ops*AOLs`fjpi2=<^uu{yi3Su;s2fSdQh5mg#{)qGu=8c@pwDQb(3_V zn`|a>fi|3E$t;#k88Hd&c#M3^q;$2Bj|BpeoMIE@2-M8+5fzTxNEy$QB_xv%SyDDt zsOl*lDO3RK>y6ZXiU#QZplOF>GC*d%^&)M<9ZvD8Ov1oG$VFm4D3!2bg-yc<_!>64 zwNRBuYwk{`;X_HgLi*ie&SkjEK84XSoJ*O!spb&38?D1Zr2xq`Q_7n4I8y7tAnZET zP&6G&q@+MVb|;KZfu_)8x?7UESPA~;$u#JXaqkg1A3svhii zs-!K^zGNOJ*=kb*&=60j;;Vly4KLJdf! z#aaaIimG5`0?9yLG{Jxtz@sjugyUJKZ#WLV0a;a|UAGHPS<4xfpxYs}k%myrr(I19 z7$%Zy3798^QSOYVtH-P+W)>obnQOY^Njn)Pqb;$@M3a0zRMgXk7)(kf1t>!Y#?kGP z5GaFePHD(!w3@;?xl$!(#sw~u7E3BfHI#{~M%zs$(l#B=2Q!&~9ZkE-o-86rWGg^e z5|O5(`Bu9j;yx%EZ2_c+qzk&0t>tojGS);i22Y0bcra`xDz+|!O;|E;;G8i7%}}bl zjzzqFznjkS)j~x$s8c~gq5-m$kH@3FsI4X3jNlQl786Q@TS;HA)g*j!7~+d6*KD=R zL^4AM^-^5zw2E@38HslYI3eSBJINGck!ZYXv8+dSMML#4RL~1$I^Ql4M$-_qAR<-cC7(ca8f7h@&=JgwmCF=uQ8kP6df}`$ULx&= zQgn(KwwW-4gieUGlOGdVKU6c-fL^P6^6d`n0OGA=oSi ztRmM8;S}ova2mMi!BSLjd+}fhVt4}uc?gNdlz2AQvP!^faKT^6$_XSXD0(ti?TVgC z!d*>uL2BxVn1Mibrr=9q4I61WjzRD+9gJB@h732dHAW`U08A1V5hE|?Y3^_Dz>RSU7vn&B*y5TpDNO)1lq50FWO8vuC( zNaq3txB)aVqT|zX2h*dI37>d;d4Dy?ZthD5Gs%!(?QRNLDP-bqU*v0&i1`G9M zsA`vkSx_?)qChk?20~1@E;qZjx2PvTeNO9u42-WC5#%*Oi)?@cEh+D0Y#q zpI4hA6mFv}w-95aoI+ASXL!un56HDu#)@?U(NM&(M}L{j;}L%v{1W!zY&i@(zh2=z zmhEqPjR=%QbMA&!7j-4#ia>d09>K}6GZgCD6U4c=xS?vu~6l$ zu3Bm6s&)tx{SP^2w2CdjwnB1IsMQtl$zi}eSCNB5@Alv@daD7QI#tel&+vi zF|y%P-64cmU3e`iCi5;ph1n$vskZG_%j8&wE9#xBHyCUsOxW-T2nQ5^D=}-vYnb#tvdR|Z7!UIYI#d7=Nt8iND+<| zCTm6DHDa9sxUP=V9jTR(DGJHwiy_TbO(qI9t3vXjfo*ruc174^C+7{cEic&M@3z2# z1~?c_^A)TKisw!TRh4R!iCZ**8Hrlc(iJ3`O9yQfwGVC^xILK5lTye?N9?wJsUoPB z5Wrm_umNhhga(1H5r2hmqz!+kRtV>THWA#xwE$}sn3y4RW~eI^tZq98hz}dYWF$u; zc8RFO6u<^C-GWo&hQxN-<6=9>W`WVWR9#5Q33sGp!?p=(Lbzxv;X)|VX#?<8Di=Zx zq~?nNpN5Q5EGK2grRmS;!1k*anTjA z#SX;QLLFZQNGh2w;Ac7{MAL9PQ-WbX5G`HyRaB+n@)rt##P_z!cn(c)#R?|nN|BBu zv+eZ*)S*@kh4X-hzF_fuz8B_~Y^942Ihb^Y0xqTkfALTP`0D4ssz}imM_BTN8 zV49$pctgXwxEV4!5ZGc)rX7R#SE5OnkaS$AS-Px9ue!Vcu7lT z!83xKFw1xVvQ<(9u7*Rj1t1UJsOQ7(dNAna+BGlaC$Jh+^%4z8jTCcm1J{U-*rDqt zN}FmqUGvfi9EE8I31ql>nC+yfiXG3HUMre%(wr#!c)XS}{TvVKKQB{nHK<6`m&yo{ zQi%@u!eT0JLUmb;DGeHGqrOBj4CqaqA#_+$t648!M*UI>Nnv))W<`Q7rpn~Ol2v9* zF~`Ud2e!cWpaK~%6VjnXMGM1XA&5aBAL0ztluC9r zVwF?0O8GPXPCcc7E$vXVP<5MnLGTMj;N!pmGrnrN%aMMcX$6$}i zB=X)mBm^>^Ag}qFB7#(D6l*)6p(B=Tlx#MIB1C3lZ4>DNVma)rfSRWn-XjLcvP+6l zRlSS~RhVa`tPOG5LYOx*5bFq|cf8z z&>t^0C{)6uXg5RAhEdBYT-gvEVNG6$g{=}_lFX{Jg~7BUf*kkSp;jkX1CR`HO8!o> z6LBTtg_a8B#uNU$lMTQ{8osiExGl)4v}jMv;<}vxo_A~IXriD{M4D2ye4+@26;1Kh z+)i!PXf&EWw3u!*GK$9O*%aDoxw>V_)ojvSvQ;ks zhobnOe4GFWxJCf@;H2ShwiE?vxP34Uw`e|izK~rx|*~AMZ=eQfRB(C6%t}b3leRg1%)9q6xV&cA8A7+vRg^|FegiS zQ!-FtAOUa>k}gwV!@o(HNl%f^>8)gzDi9Dj7gSUu;TB8qOrQpKZ{tSW>-K7<0P(SG zwgiVbu8zsEW)XlEgiX;&A6iH|=jITs+rYBLXbOPdoI(llTr1;}l{i82wQ4g)f(lfO zNF6B-5lJK)z*$tXu%MzRa(O`zaVnK4gl#96qY9jreWX7~>44{LNl;u-X{5!3y&fA2 zwc1&_8sRzy87wv!51_7*f+ws{a71dPur4RXV}V4nY-a3)KP-mJj*&*Pq{X|KdLbGO z8$4xD&iRf;w3gu{E~3;t@m$#DvZAh3G#8h^5iw3^)4m#HHi99e6$(UM5L7BuAsn?F zjONwKB}2`Zb8M^$GE}>!oAqwfjg>;)4C2UB1rIs!u;xG_3?^_JE1NWvL3IbWih)WZ z&-)U!N{-~vBxJS(Osq zZe%MgE4DDu2ql7yW|0za!c^4d=fl3PRB!+mUWR1^%G+&*EyEaJp#)DX3sj4~aWkOfi?#E6z&F9)5-Q?Rv4R0`D# za6l&78Kvm$l=4yrSCm>Tf~YXyVe6zPfXB_M&PcIvw`=me5Hg8sC7Czesj!H(>jw>x ziDDFA52QiDv2<8%q{YPl4Tv9sPs-vW=!yuB;P`TJgqhC(=lai}VU>+m-7ynLHzlBy zL&2lQ{VRAVa--62)zeYiPr33%Sx&)Fx{}CXJRg!E-krN{+x|zb6 z4nRbR0nQet@j8o@Gv!pq*18QPhlesQmP~}>D2fx3%k7F6-2SGUQ>$zqiD6+osz8lM zA{VxXY09pG<;BNYxPbG#7Oa4M*UJ8p2MAQO!T)Mzb9dEs0=g(l5py4`YY zfE1KQh;3*H8;L0-t)YQ@23T_`RfHvJ!KNS~Cxv2IHW6XSoaN3c-WXeQ=EWC+MV-xoeN(&)n4}=? z&sd3QNoE>xKcGdj8KG#A$p9>X!=kQ26%QzQrestr4mT8xcU$01hP+Trsar0c5F%~3 zT$ap|x0P@u^$MNBNOuV(iF`#1K|}&?Wo#*%@#~7pni;PrVxlgpskNbSp-J-vZ_px) zs;%o4nJOE2$_EZ7rXUh;1`A<_s$?P5#Y%Z4rWOmDpr)E~C`18@S_D-j#-`hCuANCo zQn`GXs%4WdXMQCQ+41RkqL#9|#d@dMjd(gdxZh6sttjHj>q)!;R0^tjmneBd%{H4$ zo3U6%Y55}xNCxp#JB_h&$*osCNPr7RK=Q>^u+NpwrNRdTKq&+EjKHBLe-%PKpexCA z$88~xrA65y8lcz-;@w;;wXNq4JN z0^P&~wX2q$6dUooJarv>$VC!H-P3hYBjIo_2-wyQvN6sJl?4hF6>k~Aiq09J4p;OR zp=vZ3j3QDhS4cB$}@^bSuyJ8*H%XY{^1I4oFy6 zL`kH9+u*8dy9MX88PfJg^JcbdQ3QY#xnM2n6}>LoZaT>`&(_lUnx|7Phe~BS3FUG(pbwh++-JOI;biSGtSBaF8=?$^8@bx@&5xJ zY?Ae5Pp@8sdqvO?Yfs!U>&Ru9^nn8}-TXj^qDXko?L&~M{ce2#zVmwO_5yO|m~w0? z<(~S`(Kn~4N3Kat9Xcm;IE7a3J}>^;q}_WD?A(9fMcws2}}bx2BDob|ksr+QkOz{qNpyseN$Lf63BsO27WM z)Q)OydrTZUxc7fvYaVg^_pRPT&KkUCz~`%yYyU$)N8UM%@Lyt&>w`qc%^9&`)`N4W z|EJi~u0-#B3;p@No9N?l+I``(^u68}Aq~e#h#I4lLNY zaO0}Y?Y(PrOYe_93ZC6^)7X9a{ol-cN?J1qTewkKI`gqhU@W>4M~Ja5wSWxs8o zbl}+;1O43AH)hDc{K^~au-*}%tokKDhkvF2 z-ueDZ-{gHe_@_SjlcR}GPn;s$6g+GAj(*5FAJjK5G1om&@a+HR-{REm-j9S&Ui$UB zw~ybPd;f+>_Gf=u`u(cWJJ;qWjre;0t}Z%o=jh$bzTb4nCDJ$B;WaP-{r&As+r0{UBj9@J+TFowVPXaCgGcl2R{@XMp{t6P+{amNJQ%q2g6 z_l31@eRbn6d$-Hion}4V-1^4)l{3%Vxo@MoXzje*_!|a{*zx4jUC-VyYWc@ot~hYn z#$}!7_HO@Z^{NZDpT8eyaP#idulRM%Z%gC%U+A;Hy=42k`S&t+yI#9nXI>(dc~sKo|lu`QWVRU7xO8{Ozkp?VP`8i+q$q#XIl;m3`6Pg%AH zAOE~Kvw!RMA3PzkY-K@|A~Wms;{izV~-6 z-MwqW^&g#oa(m3Rw;%Dh`3pC!R9^UEKoLPC-5vR1FO}cc?wM*ale!*v# zjr$=w>w>il*H;FP-gcj{#7uxTHD{a*MubIzVElXshM_v^Xx{N}Rn zR-QL&@b%yTpPmL*dTKVr$l*Wd0@w~QH1^`tiKf1e(8GJWK5=AP0=6WSBr zU$`gu#b+}ge8OE``Op6H--gGnALWmqeq}EEIREG@>z>W6515-y+>0#h933082i<0( zrO&62-nDq^rfq#!%|SPQwdTR2zF77Cs^V)?*8}4efKx4dd(@f_27D8`^Xi#5Y+Z)V z8F9oB&)#!p@4L_HM{K>TK6T|m6ZFX&{)w&vHgu~RJZ;X@FRp%S*>~4pea%lVH?FyI z=x;z3v1#TvAO7RZckULx-?nCnGFYMdUkav9iOm;r!ZI9aW zTsjtfed=+i&%Ukp+Wt2$^sg9lqF=wgdjIIp_W>sznObnG>fSYZ*9(sh>C?0N=^gJse1rVbZ~Kmy54-%~t$|Uu z){fF%e!SK*?JtfwJodwkZ_WYca9ZyjuWx9+dD^VLuRZzQ6?g2r?3b?}Riw!gWY`(s z*FwYII`YS7+5S_0{_MKbzns4C)eUdB<0~IoHU}Me|Ja{Cy?WKapZC0Z`cnGw{_*H{`LOc7VXFUv=c_HD5n^|E_(@pV@s(afLdD-0>8$VvqXd z(oe5C>c0G|^FCT)HX0ij$`kwDjOJgT?ptxn+s76D^453b?kIe|=Zs#Ydrfv;cEr-3 zzr1(W;?G`~GA?}aGnalaeo!I5@#Bqm&aDYQpSk9YrS09yj%#1rIyHCmSaHX6;p;Q^ zAHL`JXResf-0O>JpHD#-Jo8R-{j=p=2l^0u_HBCR#E~brSHL~z^}O1bTQPVGuElXAu2>Vm7e2=}4<`F5SM+=N>NjS4 z(R))r9J!)7ap;->zcuF#n0DpvKA+c4z3jTVy$|K>XK|328;?DgN*uI?!pYpZXrDRE z;G5oXZ5aE=h8qs$=5f1@KQvbR&F8qYdY^oT6Bu0fO0tieyz<4-J3bro)~ok;8yDX` z=2-t(O9t=1`=|TP?p|~I@V{QL=ExUU+&!Vs6Q7PN4L$Ps=FQ(fIqkkTCk{Q9J!{UO z>J=bwt-kEZGaa~5JhR`Mo$2WKlZZLroY{MbGr~#Fj&%NU?8+DYM-4b%3mrdT1ouzm zwgVvH#S&{DPrrHO`PU4%>Zs4KOa21hk1kFf7k;es$)rA~BFBcVdpi7SbLt6K9rxLF zz0khhAzuZryZ*VSK+B6xeDUeX-_BaNd-?u1o*w>Tsi)tRr~lBS^k8Cd&y;@0PkXR= zbkYA96^vc7Ytst=2S{6g+^D`Jqu+$j?n#~c83=bD+6#~WY-`W;ec!nDs1q+ZEV5wi zobQ@7*P6flJpbTi)}M7~G7E{jSN5OM*Xi=cOZ<^bAxcm1Dy{Qc^Sb{{+BtWEaS ze?I2Eenb2G+(VrD*_bLgUh-w&h{me>z{tnXU0#0s4h#6+cz_zDJ11C2j-Q!19f*7C zABsBm*pfE_fPu4A9~?dN{=VaSt?@KJN88IkSl0P|(<^WGo!vh^X3gBpya7S-zVWYj z3Vm09{lTN-KX`=M{J@%7qua+m{MC)8UXsc8K?k2RC9sM48E>*@df5L?7eXPw$Xi-T(*DTu9u5r zG|GWWw?zK%HNDR{qk7&-_HM#A1vktTvjdLo2mf=*5rdw-Zcz6vYeRkb_Vv#_I_vUZ zz8*=EPY%Co)|lUa+Pd#!;pX)}esYC+*)KmlW2_$gQD0@wL47_v?2ta|#Ee}hPC2Qc zqtDQyxzjJ~8JvF;MAY(w#Ld>k=a*l$f61q(HJLsc;5avazkEV#4dw*0#e>f~B;3eD z^L+ob5liBIc+^oHzIomwm1({9uT_@r^bNf5(!~yD`t8HHne)Og5EtDGvg0Ov#wlN1 zK62>}_fn9npWi*=m(6nrOdB`2&*ukoN9nQ06Ft)gI6h*goAlD&TivJu~d(U}Hya^!^>s&AN^}$J6KA{Dr@M`4IJB8cm9b*PzBvF^6xj?<`gbx zo^fzR?_GWru$tE$2RVPh^&_X9FvZ(gm*2hR#rc(Y@7cBEd4O?N%>8Y>wBwB#12^BT zK&Owko)8WNjOqUp8WbDV;d9H^_3AkbIJ?p&e@qgm&76f~ zt_L$dv+tppIQ@agsq4o*?Zm{ZhdufJYse+v{qrB|o^RwPe?EQq6X{1|#mBSKH?I2o zXKvr};?l8uKTNNCAbj1&3&tOF0`Qc3#vKfrzhn`tAj`i!F5r~07{h?XSH%>0jf8?8Cz+tdI9Hx2Y<7f9wJNF<4 z**Ei>Sts|l*Y&;NyG_RG^+T>Z^|rgCGwBU|wp{k(gwa5X3EJ^vRL7?G{1IuEy}67V z)%%D~AFL1Vj%&%PD-TP?QGb^VNcF1lj*4d(_g|J5G;>Fpr;e@-7V zzMpPtKYwwb)IqT4K6S!f={^I_&wqN=#OS@gcW=7r_n+<)$B%?70N1U1gc*27Ao{nn z82y2Wcr{StDTmg87XJR#fSzds9oZM}eP%;rA4t6)1Ms5cCUzd)`^{RKM5s$PEpA!> z?yq-ZDL}e^sgKBv0J-X-L+ROIlv@Sn1_zj-~ayMXqU*R;QkB<1!dwOk~!Tg^9@G2$ zN%F>p^G9D4cbZK6qsd1n)F5sszTr@YVHdgjym7ZgB`4~)2Y@q3`u`RhM?E1r3u zzT^C7fZc6;|6y8w>cxH6pV9mILLdGQt$loK+Y7Wd+{uI&oHpTPvo{E-R`Iv>Z$I+a z5xsZFTLV`DEQ`3YiyyxJVCRO$Q|3h9!?ojI z-e`Tm_zR#idvJZPwHz>OFexX-oVN#BbIj0w7di6o+5UySaB<Pkpjy%3b}PnAy4W%{f1xI_I*tM=VjSfK7QzKIA%I?7J(w9UXkobUeLdcVBZyuOYvKvO6~Vm#-cSk0&xul=?W; z+)_}dZ|>>kxXlY7Z90K>)1VK;S$#{_I4KW*`JBHcj?XW(=AWj$eAqrvF<$rV<#X9z z`Z(EY|F^FlHyq4}EX>Ws{v+`zEdLw3n_wVT$wz+8F;J{l&C#*BnG`i5vJ z#?IU5k^flw zP8j`^8;tp!OL*g?>bFix_~#!9R&S4)R~~wc%Q4uKuYUAKgy_{=areYuk4?|H5Pe?y z=*e00)`2oYtlrn0I&V0#qQ87<`swXYF8%$%Z+5H+F91UQqwmUBmXA#}=geRHD*y?@ zof1plvTXgAt7bJoP|%b9*UsKFVARANtF~-i1TxD1A3{C5)u(Uvm7sjhb;qU8J$u7r z17|Oqdd$EL{!cF5I!3ZLT;IR&+I7dZhpMk!^{4FeOMkv`y6@(-S08s_4OEy_+=$NH`DK95Z!h<6qUSi{aNg| z+ot=@UA*|ub9XEW#w-4=^^~3w1@|Qt<+(!NsA2{e4rw#_{|DwS6m@*N!;htPLN}+qd$(rvk^N&YkVsFtw^2`0d9d9X+$ndpZs?2NbLH}Fx9(bg-@Gwf zZtoupywX{D{1xB+ec1kiy)OLe)59IsZPPWs1Hx(AjgQKJezO2CGR>gw6nmd>`5fBx%$X%9U#XD6tuEaI$XfL?lF;P~$rT>B)=4(a*!S|^V_yl=tl zJ@<@yFn;&-fVli>@*sy?y#7oLq>Pg<0)*FHFaG|^_FbQre?RTovGVxOb;U;O{mAf{+=5$29TvO5+ELrl*ba!Bukic#{l`$p%gc`*RzA1) z3z&ld7j>b_=bt>byP$vL-Fv*xIaOo#$6W_Y=)GU9c?}beZu~$F#g!NLu3L2m`PPA5 zo0o3<^p&e;9kJ$yK`(5!HvT4zTL0Q{7fB|>w) zx!>$}mYCZwnEl~-H%8W+@!H4d&HY>7((FU<;qKFkmB~K(O->A2W%AKeuCYT;>;xsD z^~KEG22dIl0gH4~|FP(pGq2ry-@?0Ew?6gmhe3Jy=b0~u_B-WJ2)wrP)8j*j_M7N9 z+-EzFS$qD;hwaM`S@&%Wye_!)jhjx}e#e02fQ0O9c^uG78;%{lahG5(lz1K@)14n-(tQg2`pykp-3j>1m7=Bk%Jd^|lXF9e71$Beq?PQb@j zjySD#%e(glKj>^)_5%nAOUIp(ek6J%HjthEPEYNV_4REpL}&gDxae1Z zfUYIQ$ABOG)ED$T^{Ert2hrZ1$~zjrbKCt_Sd-VrM(5gaL{_e7c z)=qBpr&k`{>SY{z>^aBAhJPFdl%)Q&DLPP+I2eh2Gp_h|Y5O2f?G}5Yr_i%{!`;={ zcP|+9(ZtE~Z|E0ne!k+N`%l;38e(mm)!wj%IQ=woG+X=f$bRc@8+?uf6uo3{{oFHpe|Dx5;aAO`rq2KPZ&UM=LEHQC4%hLQYxe+dWFuhzx9@xAnKwri zmVEuly*GaQ?HTxu(?)%GYUAgJ@0=)R=4HKomO4>N>3^t>Ui9VyZg}sL9oFTp9&P1A zANINM_n(B}>m~vQdC}22pf#~Cf8KiYMH@iH^wm{2F8~$!$9T0O^0yMVBudJ^8p%^9}~oKScfU&F8tZdq3>J!@O8qIrxV@4z+#; z`YT8#r~R^I?p0X-04NJK_Z&NYP5AXFNL1}VBIMGog%SOy+~{D^cTO5p{;SyA@vqB& z`{f+;(#Ix0{?*FnHHW`lJTmnlsPXz8cgT=m7o>SJhbGQ-4Ef>SUv7PO>F(uA9aPp= zo_O1eLK)EK3qTe7Xlvk_lQ#nD`i2unt!n?4$xSFP-L+)i-rb*E^zfxuE&B?r>+^p( z;oSVTRkMzo|K~A%FFq^{09I|&;%9pDj{vh=BV8#1`X|938g-_9*H?e;nFccKDQ`Z# zPhT>}iQ}#6Jv~nhnR)wBb9OHKewAlT9b_x~RtEpD*{9e3FK?fNU3uBf*ZeeUNA0@W z^Z4_i9w28Pa_GlzI(EYF-Y!RDC*85@tW!P*Oqnw2@}D2x2_`f3%^Rm(Z{IR<`A__b z>n{KP%XgLOpA@RI%A;QV;kKiMmq0vO491A|L&JwdJ*KR$XNOI17O!-J>X|Qn-kpk&DyuWSvS9Ns_p!^ z(b-Y~WaQH`&&zQy=wE!77&(67JJ)`G0Lb-3>S4-SJ@&`N;U~|TeE((pnm_iud+Xq# z4i!EG{@e3C>L&n8>~MJeSEz43d|deT-TsfXKe=pC=8628&c{Dp2C~aQ-d|Y1>4?_= zkX(D=FJGO}`0%l0e#ykWXHR_@@MK4i`WJpaeiX3Flm37|_~92bCroKM(dCi1&;8&> zr&Q0rpqCf@x*a5?MIdjknm&KcgTzL#rPKK6Vq-@C(f^{|7k2lG!{_vi_C4d(4aWh@ zG-3OQo5uj^VCNeH)z-wb$B4sc+jI8M_KPu zWDFss*v3q;&GS%(B0?$i7-ho4NJq~io3(>TD{=DUt49{mN9w*Rq^kxnAS5f zD98{e8hK21o(O5}z}k4mC~^^Nfe3Bg2eE65I*xU=mV7k8fFiyAO89tFk@T3s*H2=Q8DgWcBh| zUg}zO)biYD<{TjV)HZ~QT0fG#ap~2`u5nyDgittD#cHk(=6E;87+Q17QtcNm(}Q zAI;S-%7wy1)3ESdl!tz_zEDAI^kfXAhmLLRD;bwh{}dnfryh#FC}}(2Y4(IFwb0~qhkcPp=T`@@wl=IBjH)ZgyEkO!gjV(9^b;^pVvTt5a#4iC` zp`i7VeR1{GoPRH1Z|ju)XyGbj{MT$5ACLAtn$hOnbL)iBOkP#_V%Bpj z0S`H`pC$|2PM<|F)@h&8Bd$s|Ruv*nmWuq}5E%9vlR-2i@l!mJqV{`grEaCK;=Df2 z*sAw~5{b8y?%kL|=f{?sHHF{Ny5(rOXz^NS61fI%{mtiGaWC$$VW^O6kX0`4HcG?0 z+8r0yur?)d@MyVO0dH!JIKG!a)lz`jM>Y@qS+H~KP@4vGB3Ctk>8-03@xDCUo1lWiyO7hQFTW+)RxG?|ua8k31gEjvw(MF|48Ce1LXXWF|5vnhN>`(Dj9FWXJ)`bD&b~ZG#TosS zeSbiap?|Tp)BnQO#Jz}yIU4Av^9wjGr7i7!8Kvgdyr;~R?77~*Xeg2S0aFe%;{rei zrI(*6>BHTBHYVpT63_df^hA(IM{|F^iJu*0@~@pl?T2k4tt#1CeACG^|2U{&Q{I;M zEf7*?qf%C(#BQcS-kLw{=ndgypND#8s`RPn6)$QGD<(UN8rK{!D0fJ6f9}Xqq3wne z3Zt(eHlQSmT<8#G{c2^*(Ek# zPP6-Y&uGQ203&R{A!ES?SRlmXx$u5ghE#2Qn$k!hqIC!=iP4f4my9EKyoglf^$HCp zBYq^5r2q~DmY0scpeJek=1_lh9Y%d2!s7W9{pjt?+w7oOAVETc?3f+U2Y0{!Jn1@t zwdqcO_z%rL?K9raw@1?Vkk-h`zWQhUS{IV63q0F|WbsDqD*)lY-RL|MefmaaAEcmG za7(z@b3dX%@M4@Favq#>d;X)uWAq_yvgJbFyWP9%No)DBYMRCXSZLyZEDVZ@Tt2U^ zIlK351+LsTv?#O2P)A>vks6=bTbWxBZKi6Fw?})VhdFd`#H%iXfZ((n^;k$)t>mXH z&6K%#wN$4Lapz{%Ks|sMzP_7oPnvG%12n^u|J7)13Cv98B*nYE-8bZ)+vr63*`u-q zo_{-iUZMxNSJ}UsoYEOC`i|sW?m^ELLaumU{lJM(!tPh8Wc?E2wgKON`Gam+h2qJB z-HO4yMoOX^CtM&+Z;$HDp@YTiM@SY`Z7l{?XV>Mbl|}}Hxc@B!)$tUA9?=z>H;8wt4p;@DW%CX&VfSl4BdFNc>pqBx0)Xc(i#iyq>5%HVt)bp4zPh#oE7Dqu1}?>D`$ zb8Nc0C^qCejh0VPc3v9(Dqv@Ra^R_)U#?*V*j$=1UvluDO9yWAz0@m6M^0R$2RrxO zp$7k2f?P+GIR^IC=j{(}!P9LZ4=ino;Z`qJT(n6e3-PYV>@p~|1v-mbuh=TeoesHz z#S0o6^jmHc15utN@iEME2=!$K$#yc5JpC$Cfvll);Sm|+MGy33X`L){vxK|5^XK!I zo-ld(EXd@gr7r+7;K1(aI*nzQlw0x30@d76Z-KcrC4k&^LN@Qtob4`Aapb4Mp- zb63U{NhvDtIPyM02icxXJYx~;UeKR&h5Hv{dr5-`neTwm@IaZpy_DOJOXlr{-_1*u zQS!3;)2PU>;}d8HH=l^hqT#Qu2S2)%Z-_Fv&llXec%epb&O0kCGZMvba#qAg1$}81 zVT8-p5CGDEdF+rVI8&8L|7$laU-tr4(jB@9NV$`^d-a&oX!wcNs~tNS__Xw1w5nfX zyPt|53vxBU_`Wh}QM2T00Hk65>Y&CG>8}g-m%7sYBrGp(eO7DKz6J+yh9*+hGQCdu zz0noNhA}`6hRX}{5U%~z=Hpop_I5S%k+S46G$Z@6m1O@`SkeKVim)#1E`$z^<tvLB zr*~LAKL$vpN;9{rB|&U5_7{p2N$`*6@u!~kefY|ttOK+WHn24v4e0vFRl6{aRK8Kw zv*>2nsiMD)KO+D~Gg9Ved`cGx?_!hb`FsG&!%F1YsgCAXPbd;S(MhkI$I_dq!#62H z1SIoq;4(CgS&K1-=sZMCMJkM^0^O zTyRY(Z-A9p8llO4U@Zsqsg+VJA{ncF_1MRrLT#~6(l>ep9}4kfr-{4wSw{0t%py}ksd)<(ckk~Xv()DIbxQwveDI&Yo<{Hc zA{32M9*I(BcC=IgVsPqY9M1A%;jZ+Yn23M22Mu0=wL=rF!Ms02<8vB2wD z&;JaIAbSg~Qk+>U9NyJalVN}Z`~gj^*}Mc2y?*Jf`Ix-7EpMk`Eeg)t4SagY$n8PS8tR!R3lZgKj^#{&4Qq3YULFq#lf+Zkv3d@(EKre(CqpvY9A_WIe>}_uo1Td z%LE=dHnf#OIxrZ?s-UJ5aC-M7k>0p|{hQe!1WQ0i{T&%W77HrOo)gTD{_%&ozOoTV zv0O?ldo}WlQE<>CkZB5)T4l?*be%#@DR<>8WD4AUKpp-20X@@6Wh-mr9sxECP=l+;sOA`xr>f5PpZSh9e*m^fWvRFcG0|3?S&-y~A$b1*Y}ifLQWu zT*)frs(;7q^LNZgj@)1)cI5IdTSyN%T?l}P0q{3wA*LXExBjAKK0KKPBJ0RHtjJprQ$`%3HK4)L9zulW_4d)3!F>@82&r*&3 zEf)ZCyKfry@A*r=Jx_JVOG|t`MV!Vi1jzuPZlx=b(0nUJPSQ^3D5DEb5NYKZYFnMi^B8p&%sYJ7(C8121#ILTs7+c(jh9cxV3Csz8 z5rWRZ$*!|-YE-JAa5c)rg$j@S_`2i8<6Bixg_F>K_qqL?IX7I5CGtA;e~ zS@?xkWD8Dgnw=rLFoX4_5D)M`DiY7vYecYEQC++tS&0 zx`A4&82G47?dMM(6&_icOt|S>=L9EvFEB0Kk1x0^CZF$ig)~>9z!}mdiGoILO-?L< zn5f^6=STD$5Adq8&O8!3FfyhNUPYAJ#RCyY`Hj$_y_xE?-#_KVlt9t-X){2;4`7)A zz#QfQg)D{Jz#xKIDw(7sq9JXR-_N|C$280$36|;*vQ#sipMfDsf+09>T}u~uQ>FVD z9ZNVMr@)LKAyP1$FaD_6TV$yvvGe2OjmSttEtG`o_DT~1c^4rP@dd$siJwDE&vU>A z>s))$HNJX?BvvgcbCH(l8)-B1h8d;DlGrg8VsRXdKum(8J6_=?$9YZ{G$wZ(WYu>q zpN;B%A1t%at(N^qUgUUdh%>=(%r`gooD_&;fNj817c};0b0Yffe!p$0*i-J2ciue! zl)qah?Ouw@u>Snd9HSa?Szq}TTha@e^-)hReR`6RXarzV z!aSTyqVw*mS9tFyiaR|IV-)WZ_|~aYIrrk_ka|6+N3&u%Eu7|$jGq>^D3Y-V^et1M zvODDo@@%wu;DPUT*kizKmI2yc@#K2RZHugBbnGe+_Ji4%pAB^)!c+fiytP;R&NiJ< z3FjGM_Ro(-`=@x%%XLe|zLw&#dnW@jlSW)BY0=Gn&9Z6OQ|(6@{mB!w*Ou;y-MU_! zsU27zBGR9>+{YSJI+hzOP3yytJt1P7hzO7u+vkp5GmMJoKBcaEwCcq025a5&+Z*l+ zB_a+ZH5vEW6@OTRjs`3OUT;8ioX}$&& zyUpwo&}OHE?YJpwCpDo48hX=Y~7v?O%lj@n+=@0FOT%yiCBd z+kSsl=Ioy4S_)u0#bPt<)l)P-ildZk&t!MPx-88(%@;IP8ef}#_7+GW!{L_J%FzG@ z+d6;JJLeB>MYXIUh@KH!$ILcVG`YaGy#5-*2`#II8GnEuSXR6Hmd7%n6ad=ljf@Y#S+xrkaRc;wA7Q7frWI@7X55f`AfA5s4g!k1 z*Cy}`jBJ3q>q6cz;O`c|OQm8pLe5?^8T;u}_*RoqHx!$yzHGdm`e1hxk^Q@b-!8ns z;Wj|_U8_S`AXhqQJcHwMltrL+8GU~~1W?Yez}GZHH_^u1SY{l5gVh&Mq$b?GEBq0z zI))e&1?99!tGV|NV6nw7i$2)(;O@n<@CM1!AdB}+{b9e~4<`*T%XF837E$?e02drg z{XClzZhBQP0p+Htv9bvi$ak)_KJMK;Q2W36hTG%p>jBJgob3R6Ba%A%YPiaiL^)4H zDOb7!b!^F9Lnv;0Yq*NTn2zh63AW;hr1lMx%sHrDBmOdm^I@)<*lb43P`6M}`cX%H zJvst&!x3MyQQ7{YTkUGs$c24G1DRrI(5%UB+x4SS9p@)K?R==Z(~I555#tK}*;5 zQn#F_MVN>($!L#FFKLhv!*j&B&F#Uu;L^)u!E$@^qU=j^&l{JDs{txF{a_#@TOLIL zx4$)$7(EHLl{cpDcTx6l{5Z<-kyGinC{6^};7)brjFy31cfhh-sL4B3aLI&F2N1;P-hK1hs(4p)!}~Wa zjUA=TcD@8zV8gr7dbLm>9}Hjzrtnlw#v3HhXlMj^w%}{|z5rCF+C20CC2jnJeH8I%y7n!!(4!HP7KZP4zE)ar zU72JfmZpxBS|$-%_a>DbChhS2paVh@s)K4H7AE~CskhYPcq@WrOi6qc^N;uwr5|PW zdCFcON-20e=01+8ZC*0123|*oNeTg7S@Vq9ot!vJkS4a==RH3$rzTK z9X~lnH|4uvXZEcb=+W^Hnpd#aQ5VQolk<^N>OMMSF*MB)?*ms>xaLzfO{|f6!s+|! z6y(7o<(EmSoH*je$4u&9;&$|(s}6v0_QnqUKa!EdXH@)84Y#{5RexFjy`oLit^ReT zne%zW+l(UvGeIKp^gRjq?`ZG$MUO2KtE?W9|3m~KDS?r=o1^ca2|WB+a?QC`mIE(C zn%(pKVp7I^xHlnVu8z$GN69LF7_y5sG)igy83w z2lBV6(wd_kSI73|ZPaP(@R4MEaRmn4%3JgK7d))`^^nG;L1 z!6L1yS4r02u@1~c)crmi_nT(jE`}*MfGOH)t?Wtc8}tNLujp2o!HZgLa*>2JCGD1z z#8qKatQ1bem34-ys5&Hhbgz!Gc9*RoF)A_VYENz9R3ZOx9;px=-Cd3 zC+zuD;$x?L4>F&r(%UymH2Ywb<_omY1^!m%{nm2bjl;L9+kNrZ5C?)j9mBAmThbmVMTzrKw> zS*ti?jkWi3=H-Nj{CJP81QN_#xrx`G`caU*;7#Md=FF3L=TsO>KKb)bo!g=4d>a4u zdfN#u-b8I@(&eks7bp0+SL55v%MSBiMC~fW-1l{}xMTSDY~#bPh03x*#2w*np?GL< zB*P|lm-#JNFVJrt(n|$_gB%>wXy4y5ZLv~l zWtr^bwU|gIvHJjJ}jcteTk+X8PWQW;1^xSA^K92L#U(9 zgj$3(B@S1k1>f$~Bj7n)NRnxp%~+=e-#+9S`vRFk7nv8%Saw;wsr)Y0dIh9&*q5Fj zFC^{^iIoYbI1DCRXK)aE!RVL$ZcnYnN;OMfnLNP^_0Q;RNc!#QV0c7`(#;p~SXSBC zW^fhsfnbYWdwk=n6R3R`lUdT$c!Ru8qRc6`pU!Ee7Lx2b=)SI{h5@{#)P5!Bh(v^L zbfqRLn6<{$7)ZtYB#yj_eh1pFf%)irN9PqP9}OzFAvxOTCpg_Bp(^2YN0|o}HeI;F zdCUUV?u?@TX2ate@M(Q@6(XlST?}07`^Sp0^zQ)GvH`(}z>UgJKr7|(=-#-0R2cGl zjEg2#H%5wZ>s?N73u!ZjqLVod@}%_stQYs2(f1aI`XBzZ6im`CM(3A><-Y-vD)j1m z-N7z+547DE8Ux{eKU3_iF9AXzSVfsL=N1_3(*-I$Upx-+}}Tx#rI|j%jK>1*Aa)Tm;~Sc#8>=4T5|#7JZH5bi5P+Cz=yY3WK<7FUBzd zwaC!-nGRFmhU|I*5gd-g=9Z4VpC z)LPvgX$1>;H}Apcbbc&L15%<{!-aD%9vVn`QRBzMMCU<};i7ziCrDNmc?JKg=U&H2 z5tL+d;`i8DBx2p4v3A2SCXM!9C~~qaL+NqC@{vxiUIEJG(W@J8dMU(44s1aIp?>el zX$l#i6z72!@Kh+ggaz8*dr2SQ3k4WYWo?2QRHVMTkABO_IyaMKv$pgU!70Hyi_v92 zK@7r_lD+L|nT|Ji`z;bO`G?W(e9R{!>$W(|oYlItDP#kMyE< zY>{f|?e)*EZwxYf{G$)nX@OSS`*J$cw9BSvC`Fhcv*R8E?zvyV*4puQIkzAF8AUmdlRm;APEb~yt&Ty$3j%NZ*&~vdby9ticu$E3>o}!)QYMpJtd~HQC ziO6d;e^{`$Fq``owyHdo1;hSV^~-M$=B}P9ryViZPIW$6GCFXUDsR?Zk;=Sf^ZRYU7(fF31-|pL%h03fbK{Z%qjl8itKivpqxID87IC+?gHIPtSeWBV($(1X35vaj%mYx@V??f~OS0mD+i z4?~blia5{f{bEVK$)%Y*NWJWA|n3%#UIC?&p6r8e96HkT2EueN58s5sjUZQC}WRwdl7H z;djc>mT;48bG_PT*J62uH=}Cd7;t~X6sL5?=PO7JbAdocC|qu;L_=Yd$%SLo_l60= zuG3546nL6+PuSYbbQ^H)3DVDo$Lt7KaEFLl3`j>m7h0%uYvb3N7*yl$v2bOR$JoXD zkCw<1Scfo{`zlGws$+2b-%VxbYTZtH$9`3>v~l$sigL3%q3o-3(su){8OaSej>cO@ zOv*vSaiJTR5`JNhXIgGl;G}7g=<|sdh8xV+0lv6z;mV|LocMHHUruARI`dBPQMqjd zFq#xFl0OpJXMmhZ<)wvH58XQ?*E9?YOdleqk?Q`2aRpE7gJ$tdEb0MP;69LI60E8V zH5*Xa!ld(OntV7DV4XA#-7yRAMXolJcL!wGzl=@1R>*nIXvZY}qWb}Nwr^uZma`c7 zqeRM3=40L%wk4*&Tk+>~8zb`y?^@_9c=ny|ExCv06V~_>SALvgT)8@yqNRa0m?tx% zU99?%wzpwYsQ9insrd~-q)}DQo=Ak?cqwtid`ykGDz;gPtPU3Y1~2<#6#jDPQ7%{Y zr&25N3$CQ;A)DBBL1B|T*Mc!lTauT~c)DhnZ|aI)JJ%8t6#DGONI2AU_#=KS^0j_! zEaF^w$S5eff{Q=QR-h1)Eb-lbM$bE+_Smf== zA+5S+elCY2n75kpgNhFcUaj4U!h7X#n}s&?$jk-hKMO-EQ<)`*tO`v(JeVp)#Wo63 zO-I)?Z)I86Eq*X3jx*O(`9D44PhKU}-AH~UzCAxVqG5vA{+#_4>NVcm8q4}33qZMEV`PInX9^MpZPw#LXHFm|L{@e?Lh;;nim;H&(t{j?GjH z|7sMr@1}D}wK5x8dCrJEdPUOlQ%vmZEIUv-FHXvd{7Swx$c$U4NdJ9U{XloaZWoAa zEI(6Zj#;y3(+YO!F*zXOm%*{j^u?yvCiYdCK`rPtk2<9Xa4WlZ62Bhb3~V3GOiegb zAlcIv635XeJ`mg9aQ0$)JNMX$&4!X9>0{4qi)2|6B<)UI;`)Y{!y7a(xKqW5uUCx( z)v}BR8E+mNe%L@Nxu+zw9NDbfeY_#*etamCV*|FMK1k0*hKiCd-kUYs)jMiA8mmDp z=Wk_p=Hi2B%z$m~tqMkFE`JQAV^ucDZ6$mI!?yK~6UvCYm5e|$;}GM;)f-AeMXAuc zT6B)er2eidRofA)IqXp8^8@mxPma}L3L0=sCMpIPdqQx7KRPWn)ynVSPjlBJb`xi* znAr!K4Gh-}3*Y%Plu!9ImTMdds3SjIb(x^FYW8Rr(xZ{Z6&!<|ZyNW&NL@Yi<;2^@ zakg#)#;SYEJLacyzGxx5l#edi+9lVjkS)o}#jd|FcOG-*5;z-9ee;y`IJAW|A+T81 z;l|$JPO|;ZD<32KC0}cx{pht-J-NyQ)~+HXN9eaoXeDqF#mlbxM$jDAGPvwMka&=t zt3bEPcxdCZFmmm_Rw&N=fT_k7$;5U;xu_w_S zyNf|0lJ_J}=>H~UzX4`p=scRb>M~k_YgFw&n z2UV$g8+%KL#|jnO&~j*`p0?^B{?sLh9M<8}xCFqd1BKguEThN1-Y7H=8vN2orHx|R zn|dX{d@jC}MGv1}bVTs771O;gx!1$_W~yB8^qEyR31YipDk}qxdQE=K%)!2{$1Ls^ zRwVc@F|%QXzjIa@=gWPn&oE|*Zm7&+A6Qlm+1loD@Vyt{DCfR4eymw)>J+102W!pkIMW$6LO7( z=NjnRP!-{#ujgG9G&qArejmMD=NF+W_^U{GXwbf9mzDSqUQRxn#8Y!`)!THFqitD* z-=;REUYaZ1bz})PQ0loV*@=3FOLP8N;SGIho~bUPjv8xJKAchWLFqdhAFvlg&x;JR zf6yBUY6@Hl@wDh?_R&<~*H>a>BcoPi_-QeAKycl6#H7K!rRVru&;cdPn5z;2?@Nch zCX|={)~~;igkMTAS4jBOiHi6o0ng6D0gVumfpC&|Rd%Ap8A>CXOB9|;>4uGT>ScZ91R&Ef2ld*OT}paWasEr7k$gDNq zgwOo{cnm|jZU2!@dZ%<@-pRv6#0B{{=;@)xc8Ln07tXX}VKx?&>D^i{Cil?I6qCbN zDhTT&{WA}jq-CrS`-;{lN+m|ELe85<2S=wNdElJr_2*YNF3PUg*w^)U-dtzd`k-qH zB07q=@S7)=H2-`!^3R6_Ol-t?`Xn~QaJpA?dpIstyWOV^?vu#B&~AIr;0W;S6GmBW z@W+!Ww-7*V@&c(BkWYeOV2Zjg(xQ#E8MsoUae;sCtrwcAq@jQvF=0ORTLA=00odEU z?1yX2{eBMXA-8oUfqWRFQ=AO;h0?PVjLfaXHa#fs_BOSzEbIyc{bJ{KEX1JdZl zaEFl(0-RVCkbB5o_*CZ_F)t^!rC7q73YvnI(Db{Ca)6*sUFn4QK#BPG1Jv{Z6xLao z71sGAotL<5a|(!Empd=YW-ee=)BsQYeGu@o-<~Ia9R~#P0g3|wXrzC>+@FTT1wip` zj08h-n1Foe7uvii1kkV@0Y>RQZ^CzaEKe-F#t)J}_+v|GQ2=njU9`$ANZ38*u0hz> z1e`PIaAW_p7FaZ$R{#mCL1X-H1ivlC*07S;-3kw%7r@TJq?uWk7lSi|cGYP*V*Ll-k*V z3!|Wh0KVvEW^)?Lt7l@Qn#pb*i&ljFq3@rPmL6OPQ$y!#D8#ToG)aTHy)WP?51?S8 zUw!<-4SL`df`q3+Xip79>qPwrWwL+AWX=1?7{=Kw!@zu({B&$CCBw_8$C;Dn#aQvN z<}+4o1E(x3UtCy*2nfV`UJThZmOGAzo*!rYd?`mebI9iDbs91lS=vm1DIcr*C4ROW z7!!D-?wKkbVE&S{K=K12hcTuUr5m;DTJLj@!moH9h|y&Zr?7fEL=!_PzC55qVB z*TZ4H!KA;=GPLt-z#;%*=9bv+IQ19%fyW$)1Rkz%(xD9kw+}&iK++$k^2+JmW26(> ze=I1AE-qHrdE7CNUpHUF{)ysAN}_(&2j%f1U!oBmMNiM^2`^-tlz0XasS46{rvB1h zMsMwW6#Dyvxty$l<w(AdiCQzagAqWi-;XW(m;495ON$$Y-oC}#CUr!GDyE^kUh|GQT537s)!hyz;>QUag9(q2T_F842H8$d9D}ftufOx!nV&D} zEKRyoc}n^EF^{uIcOZ9Yd4bdwy%kQ=BYYY3gql6~(1+5V0lbt%Eq?$(v@CS>AMcf+doZw1U$XROy0+?mrKNu-2wm^9@2)!F@N9!Is zueFOJjiv5p-|x3;1gz!kjo`PGER~E^8?MeAS>L z;b>J@oRkWYxo`rY->GSL3EV{O>Sw+zc_GpJ;b+8MDxYGsBtWE%Nr?w3#A*&xGTXvT zY4JS~8!m=kAV@Nc2>$Ld2RkneyvOYOWO` z?rh^!EhL$Bc|I@qd;VS)ngi%7wFi;%xt~o}^v7X-DLC;MST4*w~5a zT;E!w7Q(5-y8kHJ1h@HDuk&7gVxC};xDMp`vu{ErEQKg4MS5mL);URf&VK;Fw&X9R z2wb^7>~22@Uwi}Fj2T>3U4J@b!s?Fc&kN&aW<^N20tIpQ0sJN8zLN%72bJfs^3*_X z$}2J-$px#75p90;@41)O$Na3GdD@zD??4P`W}Go$f}a(;?s{vCYfhm$`-%1xdbx25 zQORMs-rSoVtFjL~>4l#nBj{1b@_2XUVj;<+K${^@-B z^={VRzNbS6!~6)Ky7VmDJsDAtxT%lOd+h<}xA+Y@i8*e0gS`G0v?g$LznI_a_OW6)Fg_8CIBAS_^o zRoUU4ycZZJ;z00AMfpe?s%{!zUTK+e4I|RqG1+DI)QI&v{`}&8M z_Hx}ypM+PXmTL|oPUT|c&I>wVfr$&PEKv4!J3BhvetK*UK(}Jh#lAUk0_3&McI*X` zfu&>T)vt;oT}`P)+P~dx6L`(Y_M?D%9Eb}SfOzjOYToO~VpLPY!`%jJww)h+nnum-_Y)`x0^p6mbifT+xP zudxof%`2a0NjMfiw^a`34Q(9FE8ZI-Iz0FPoYk=WjO4 z-lhTG7E*V>c~Y!Kb`h5fDWyE8Q`odMJ27o~U?%sVZBZEcvk(1Z+oux&PmO2M&QhS1 z`V`cNh*JaXKL7wCgaX!_OoQC{_9r!0r7Ts33aGRl7ee|ILHO7ro# z7KpUU47+is)_Oi={h&ZW_5m)f)cM6h@b)46#J;JPgv{s@`O1{=2qVitK=Z`HB9I-^ z(#j6UIR}>KX&O^3WOMDkKrR=WEjGceWpG%)L|DHzxuBtqw8|drCP<^ZTY1F#yg^F> z->9o@r``bj5PvQF1mWjH>rZy9QdQJ{WFWELF6#M#-z;F zTnhc1V}eAg9?Ux_Fh(zXA&oY6rWnarN9n74@UKj5{!<}8n>iX5KtF7lVa5Kd=2e*f94NLPXYz(A9#XxB+7=}UK$Ljn5wExw#J1y-T6;5)gvv`c913B zO^dCF_irL63dlbNG4xL-RSk}dn^(?BVFlncDIqRAPeQf0?f)6q_KW zqvF?zOZ|w#yT;9^Dr9iF_26IQ&O=#QGOc5eZDvBI>!(GpBEv-!ZB-Vc;pgnPkrn|G zKsl@hu~c0|^Ga_4tDkIK=hWcE{7(y3=DPX3F_X4;6^p*)ryWd5^O#f7@lmdFl2nez zxd$*d{4(aJSlSNi-wJA?q?A3=t&|}{p{6v%qK361@WtD^rN7EAEhrPz?QUFEO;<)7 zhJECLO-J*X-9IH_ita`4_~7^Y-XT5UxW!gv*#`8cn#~{WQ8T_DbZRmxHy^@&#O319 z>{eJm4d>JEw(nk}#J$vBMnS`-@BWx~{kfe5MDrDC5pe3rOowGI6~=8yub%NHR^Hy$TuNWAqi`{T@&WM*^WA_#ga-tmmDgg-iLX(9l$OhSz3sTcx&Fm z<4zSAQ6A|mMSj#u-q`!G0bAw9OiuK1z!Oq8 z6`eU4HAPw?7E-KJo@GXf_o)v_wjDTFWs4J-dQa^fAV9oYn%Prdsf4T?uQQKTG?ks) zFWKX5307@v^Nf70Ng0!RMW2$D*y~)n!B2v;gI6;6P2C{`yUObz1Xe(Llf} zn%sF~!MrNF{&}J}PU2BEj6W0EV{k!rNj*gxYC>p`ae5+2+1rQGWH zestt}N9p8iEyoYWZxt!}EKu%y_t_)uBxnxTA(^>6BT0-FPaM*%FBDBf6Pem{_8%>P zHI82M2qRn6@onSg^|i2F%RDinl0KKVo&}__784d}(s+mxcOJYu%@=%Z2h(yzg;ah1 zuZL1l8{1pJ&~{>jQi~ytk_j|8+5X&OZBuE&lugKqi*q{5E&b@-)lx;L?d)E*NK)ed zVueT9_FSuxR&A*F=C?QY(ib*ks|%si3~1SPC~mZ2s-GQ*Hb(^8Ub~c6xDxTgAHEesMY{f7IB?1Tv5l< zJ63ae`|)p&{U|)fInWqNX9i$KTv>b8?$uH@j1n=3-%V`F{;!9y_#hXQYfsg|S6FLU zHIRlK(vvvGgd%$P#J;7 z^o2OzNN<_zq$AE*Gz`+>r9e(Rdv`o<4wVs1xQ;xo(h#1ALLrH}N9sA;^>l6o?qSW& ze1YL2mXrDxOl4;>_N)@@KO0&sJQ5QR+QYZpP8oP7zsMp8B+?PR_-3jG_I(4 zxjym7x|cddgGw2hF5QktoTNMwu}ZpUokMU2jhCi6dHyGWp3BJgDrgizo#r>B|`X=>qTao3${+Ce!hmSXM6Ta46WYcm?q)(67?0T{)~%+UIGiJ!DBsHgP<}CY+d9CbHqS@{8jkw_ zs?0Pw3T^sp_Xo>rV)a0RB&|h{>}sT0{oqRqpx!i&r-pnWEydvQK43$vBvkn?-wLNR0S2QxY+aao!tLueEr3+<36xPurAL3 zJ!b9w4rbG;W-^btkxdI;pKBQd&su|J<&aQ>Uo$xlizf-AO=EGF{rA$qFE6C3tko?i zoVvpGg!>|!z^AWSt(kIvB8WaE6Fk4lq$n^rH6W1Pju-{klS{k?SoAR;KryHOo)O?z zwalJ-*$PbpNKrpMVyxQkY4OTn38#IYB6$M9Md>I1IURhcmT`}#RRKz|9j3ERPJrXV z>R0yi0rdU{$)6VKW}y9JWiL7Ns4&7I-W~DJ%;Zw(6`HFKd!6&&Z==O@>qeeYb#AZn z!ywr{K$%W((T+Sk%o-gs=TZpKTfWo!oD ze54$SgfI@VcOH#M+HV-OKj@6p{~mNR58|4Hu(ty}#ipb+WasTxuB{rVyJ3HJfFXnG z?Fe)RvfX37!qgvR;S6T!xY}9&*|Tbj2cqIrt1Ts6a5eiBEYo-;c zprOR&RPM0-1C(`xv*(;Qj-}|&9=9kx8JC2{J=&k>TmLoD9tfP##vH_@Jmcw4F9W6U zaba-Ap8T`4YXw*0O3=8_{SRvV>w{t9J`vKtd7f||MaCGT60&*V@>-GRpGfL`bNx`T ztkwRcqS*d3se_5w{dniS_By#U27Z;`RU-DXlOl`ZpSOHy!$XDTr`Tk_Ahe&oUWIACE)kwcaJH{aMrr1kLd{MzmBDV(7#a+ZbXP&Dr?s7Lb}SRGa7&1Hb6qV zAGytujgI5`*SC6;R)Mk(J^?>g;v}twU~|k4M|G>NtYin? zH_?Xw=bl6y+ddd%!C?=j%RPNTkgeHYY!QRM$6QXjxhs>&s4@WUh?yGPj2Uh=J>L;s zD{MsH`=A)70N4Nc9+-vgb5=EeO(7OyqzNhHANN}IC4Y1&gg3ztw_JIfRZcFmIYEsG zTm_7(%FERiwp>l@$`P;$ejKI*K>oneMWgprO}A$FUXlgN2LFlT%s#nF4V0sG$sI?YF5qbU`~ovz za?m$o|E|rCIPzHwRj7=dG}Xs%}QYneC@5_um z`x=pLFhjCL*-Q9jl7uKKTb8jKyP~8~NRm(_R7gmXrAB4ff+QtNc(0rKyx;HdJ>Eaw z<2??4aMUyNJoj_m*L`j0dA_gv{oVBA#>;?Sy#R3Bz$;a8ay2bLukEIKyj!8v3AkpK z07fZz4^Hxa#b^AkK$=+wRD-mW4~Di}R&WXTy7xk@_qs9jp6@NV-00hI><1veL1*q- zzNb-4evg$=!MC`lHqh_aeE=wp+xY#zh$Jy|=s7`;@7S?i{|rP={Z;+v7^)ZE1^PIc zo_>D<#*91K0E1y(9VFrT3}DPtH!h#_9b?7T!?f<|w+aNYK~s@S&I+@^%yvEL_+@t&5%RTp`t%?K%)5rnl_#WG?R{&S7Z<0$%^Ir)#W?OfM)Ln;ysk% zPeGZh9N^$@k)98q`pMH=EGI zqX>qDI1g0GMooedQ2roo@^}Az9?-3cOjl@7S+hg^3W$ACNWdrf5}5iPsDVMs-FbNv zR&Oz;ZnOp_a$Z#?l>d5rOz4bIJaFC~RIfrwLdBKtjVp*K3J5B_zSf0bsD$$UdDqlT z4w$$sMaU^c?elCVbkojLu4;;Ru4tcIbW2aWjo6RY%%%OuRbNb)qwrd|l>2A1Z8wOK zbWKSl1j6!90k+LA)!#c%^y_%S>{IBp@x;Dw-3(KZXMjQgmdpCMzHawm3QE5;2qlu=8`sUMiQCAMHr%T)72 z;nM5jRMq|n1w|d`{Y^smrVJX2Zv(egufjZW6_lsF9+}bLvq>f>JRD!HRY1`AE>?h@b=!ZhgAqn+Y33xIq2);dVtf6%1nPnQz$TM|=-ElozCY`J(1?SP;4=P7k)@T zT*K^sCaoYzoD@e67IEG;c1^Sf@klCbnY(0Y`wR{y zm%_i!b1_#B9XuE$N_i-5cIm-xmY!j~v%poh$JywoqG$wx>7%rV)>*b{B$BYoMHjUJ zn~qY22V`Iic{b()oB5!X)$q}9ek@a1MY?(-l!rB$sjbc%jT@+2@=f;VZ+d42F;Jw^;`!=RMVA~JI1D>q$4VOO$S7PiJ^ zKbdXE;C`G*v@oSS_5@CXf73=mt+Qou9)MyFI5hyM2vcUPb0>GQT7D`5Q`ZXy;?Gk~ zMXc(8E-(K)kLYtJ#cTGEP z?i2qQe!*9Eb3)6991TA$8rO$IMR5)~WZj*t436alNw=vd;{bHJ0KC4O>7eym~cgrD`9+7hYhK*a# z207aK(a6cd+sIo;e$o8CEs1j9$6tC<6goI`aGKyM=TuAuzmX6~#9G5Gyvk?9D2caA zy^C2&)Ayavvp{@Q_g;Hpud#%Sbq%htZR)g_FB;p@2)7Nsp8aGjLv9tp{a|`LxF#ZsQscq@qNH!WOKbnX(R+=y)st)PhWQtMK9iEi&) z_Jc8>0*c;?$Ll&yd#6-II7xmfWxx}JOP4Gn42ngpM@&?Q-U_GAU^touLJ)~fMwna{C^ z0p}%d^tX*l)RCRstWg%7hpa5K*_INb_Z+fT-)yuRnUq6)P}L%L%0FPqAT3C?14Z^c;pmiYWmRzJgfABPAw z(hMzcPPdpBrc=H#u1G5le=m!xNlVe{37H^5KStzR64{LToJUzP*5sXiLk^lb(s5bc z5Rc#&Nw%0y5msZ`kq4tX7{Q1z$$iIN6FKhS%GublA_?*`xOQ2b?<@%O1%AQNnM6dV ztl<5~y^8V)9!w)cB0@ZFSIPSWM~)=EfR!^a@+2TH_>uk>n52 zb_-H;M47kg&07`Rt_^0}h`VGgN=~!H#!z)r%E|O1FI%|7iH$p|8U3)lvEP)U6IOse zpz&qkD{}nZtHPSiwuB~8*%S{xSBc{64(@P$(Re>lnvk=l-s&RU9XnsPddf}p(^gD3 zpLcC%Tyb(K!7>d1mb>M*M}E`HuWnHccXrl!+P3plLfVlVy=xyt?s@Bqjklrb8<=Lloi*61%3dy2sE)xPVXNPe-G1)1wW55aI&nx2u8A1;b* zxCxpjY?9{u$yH@JV@d`cfeOa)pANa(?;fjAy7RgUYeA+T4hl)F;27??p%|z87Wwq1 zz`dgDuSg1;W%!qctJz zmX2A$&=-|)Q)TAtFV#c&hkD)~vpL-6Xg{u?Y_9RXncw*=RZc$j>qHwZF|fX*K3g-S zMsuls&a;irAZ45{`p%0JvvCt=ecne8^U6Oh|034)E%(bVNr22 zOW|CSvf2ve>~e4tzwQ^C@TGe#Sd}db}{m-qG5#6#6z=mm2u-p9O7&02)cS&7g0>LaGPwJhoO3^d zJt5;$aAVBAqSbrhjCH+^b+pkF!&9hqzR5>?m++IrZ*_BYL#0@RValhD&yK zH-XQu-cCNH^|AF!cUe>E6{Wt+J0RfkI`eKdjKy4d%O$P*TB3AQ?eiZ;B+vOTQk!Txku z%SZ0*S0G6JcGu@bvB#_?w)C$yYw_przuR$V7DW%!k%oFU@ElL+v)rA>0v zTge-hq8sk6h;_>L+V1GWz11fno(YY}jGVAw6l&B$!JGv${J!*o#bQ|wh&m62g6<^NY3I*&h;gp)% z9oQ%p5vq*gEI7G`k|Nv$5t+f~XEG*8Kz7$=4ijVNCt;|kpGZr7Rlb;zCE|!0qyYAO zQZNnl(lcW=w&Gj#@G2|{b4hMdYdKFR)?3ElB0nx*lC6qe#31jJ`o}P_i?$)kM|yx$ zN{92=ZI2y~Ys%ttRrTyVQ~ix8;@fA0=g3NZm|;E@xA+P2F~-r<5rAm+uV`jrvkanl zs%CH>b+TD}T4{e!hesaEj9YBbkezUh#CerCwFbIeaOkBs^wsDE>~O$jT)h~*_H$Wu zl(heEKgBcPW!rUjcGOIUpE&Zu%xsMrFYm;kU4`!x4EgPox!oQtujIjl2Wb@;pQGBw z5&4CMEke|b>}T9Ie=Y_xjgXmSzLV|+#;nyicR?TF;--t=fXqFhHvT7QOJY?|G4e8h zz?UL;;A*5b)XT*Zewtwvi-mAWz=TwmlETWxHp)U`z*B2|Kq8_yP}oMLd3zFU7>vB= zc9;A`Ic!9PFn0@=4%;JqC`%gT$U$lGMiGUO-nw^?cHJ5vvr?q#vyDcReY!!4aWjKu zfyi?O!_!Z5SR}X`a*fh<>giJ{UZWAN!VN$=9Dsp*=|knm(2hB6FY8^ZNahb8NI5&we70~TX0s*zi9|biE8{n2-%LMK z8t$3u_jqr0M!1oiyzNej+B?*N0dyifH~ZH++fBXy{@iwVN)#1bSW3llT<=cQqXOOuK;!4~cm$o%#MPbQYGU{(A}? z47%?^H0YgAlS)>pOFdL7zQ(0!q58+JkyhAEjTD-3TKHDCQHdNu9*A%q0nMB3ZK@LA zt!&kL_7juU2=^|ExM;XMRvRDvqz6aQq>m+RqZD^Xk)fB^@_INcq)4+kG;oY@2hWD-jmLQGmRH~a5H2V{pZVTMj zc!`1Y^VJrq$-rregftIUQkY8q(e_oGe}>Fupd;)5i1A&K<~2~*x?`I`;ip|ih3zr; zs0HmMCgXz|;(mi~bi(7)C`QDzG{2XsF;wg#o;CYn%XI66M4zFs{X@+|KX4D!7CIC` zxb`dmU~AUXrDEFQ;FFJ}k@H~x-_C>MYXFR43lbSyzxmDXH0}~5abUZ*K*)+sRztCh zbc$NOU3=WoE8If87>YhaYpU9oecQ2Jdbs7J(<ze$C`gRh>LR>7m6qk&G(n!Ek0cOA7~2^9y2+r>(`9;PksQi8bd9Rh$)E4<7Rhqk zMN4ZGcX5)fQ_7paedg#D-q~^T1C~IO+}Bb2uomCMXi-_(P?H)n;d_Sr9z7}|Qv2(M z2^_HEbVe#k1Qx05cvfPVs5@qx{uPQMeJYv9munoa!an4_lW$o7>M>Vm^DsQFI(nz$ z?;4m>Xlrr(Nr~Aptpb<|;gn{H z%e8u2nhZoqmXy9=G>Ra6Mli$Il16sJ^yHl~W{K=nO&#bmiXDf_=u}aeo*w1&%WA5u zlNE>eA@a+&DOIs|;-tMSA)-##O`plv?Fc9ErnWt$RD6+3zEl)^TnE|5di>mGNZQpn zdj|q&ITnv~-gE5oxPqQjO?2LkTHf!Ozf!5%J;*G{fDrIMiP1h;OoSiJtWL{rxjW;bW~FVOPQLm3^r zEAh7&oWU`8--E# zJt*f2v-Dk%?6_u1Q_>At`Msd#J4!elxObp{iO6W&$x@};74Bh=f+$^^hp4CzVKRtw zYRfhQk~XTQy=bRMVw^XvN```tS%=5TF57_TD2pnvIaj6e5@4vc~rm43P&Q?pWSZ{ zoWRO>vxn)IzH>zONJUL49Mo^joQUc~AwD={V)G&@*C zxFjlj+f=ttXBI2jCtoNpB-YRF+Jw^d9&i zO5&-Jtl(Q)00TOoy85QTNiD5(-V_GW3|)~AjG|sVHI8u4W35f>85P1)Gr*T1!$Ita zEI}Es_vf}-&iuLZyv`los|=zsf3B?6e>zJWuE~PlKwB;ro_BW&tkWQ|uN1wpJkaO( zxw2(^caqbQn|4n*!g9nd$iL{oSmd97tF1cWw9kdeh(#46DVyC?n8)DZF9=v?G`47= zFaNo6kaGmY)HCdzZzjLI*epjExi3`r`IAUS#_eHL*^4*#Xx))5R!0=1fugdtdHz5W zWNHZhmq)9JmcDNHQgoJ&>bKon|6_q39=2BV$t=zGzAPI@DIJk9b4UkDz$S)Wb1*vxUE$7czmFX@K?e+e!z%_l^<5lb zrUm}e73-YRy7ctyq__>m0U$gtOvk~JT;V>?x^27?I6swSNsOYh{KV^%!Dkgc^8-*} zV{J<_!kty0;_L=`?l66vFsbbu5A%4Xh|6cH@dqH_tO8g|W`%AqJlb9NsO)+9PAwh?GuM(H1-9@nZ>?Kh@%_1~)c`zY^(;R6$9^PItU**P~79q2z^4)pqL zM8oc`UB5}V2MQ*+!Z7OK9z>ZO<_n*OeXtw$!PlHBhMjku)^l&Nt{dDZT-l>JTAOW44KysOpl8?*iJ1qSB6or7^9@kR zc_Fbo!1OdCPTkc<>wXTTh;u`!vY(GxEQ7ZqV8g;GRfrfmHZBgyZp{JTj{}hy!i(M)<(EtXwjXA(p9m(YWJ|9jJ|%{?|&{ zkd>Sd=vIeUbY3i3y=xAj0dJt@djd(D1Goi2pBy7>mr7tu2x_!d8o7P_JA!@$u`liA z`U>Q__mn$!KZRiQvZvF*5M!V-Jz@4+CRjhWTVT1e!%ff_w>5*qi zzdrQ?^Q{ZaD}TrC`u9CBfrX#2=v7?vaVlXsP)xc7RQSz^@dNb0^Fp8_O87V(LXQLs zfN%5X9cV)K0~MO;wArEP_4OG=I|hIEuEMO*jW(DNTYFtta1n7kZU@L9?=i;OB1J-N*|@E7<}f1n6VW^8)~IZ& z1rQE`1}zN_F?a)c#_RJ1YS7zXdm}%Pzc^MPyB69Up!e0MNtXHmhtXpGYshk~A{&qA zI7xdt1FuZoy1KZbL-+c3dRr%?>HvYkcv=mMY@ z7IM^k0}uTDzJ16IhUd?TpgT^-vD~V#)O7_gfHO}yEKvGHbyaC{19J<#Hdt##nZe83sZO7??`I^B$8|Q zzt=^>bpj@|wcA%R6}BSnl9QXu=Q7v+nTGhc?rHaZC^j1eAl^M-yy0td0l#NAwM^Oy z3kyFB=5V{KA8m0!oZq5NMBMF<^uLJ!?b!d&h4$HWDwFGNb2i z*&9ZnCj4xGsT+6dK#|zR4WDlT<;Az3vw!V2Pm3-^&4~})Z1M#lzA3V?V^U(eJ##2%g>e_!gf2e}}`w`YI8TN-?{>5`F$0cn6v3TIb}#)hAuj*d2r68P1YSI3{B)w7Tbt0<5qS5dytH*8{_d?TVh-FGk}crZ{~!=y zuI7Mv_APLNIP@(z4 zy={dUKTJlPVorW9RO{$N|2ix%Vy3mPK2I+#>s8dL23_p-;ifna_qb^-Bi~V&M(BrG zty*6Xciuh*&qt){=vE78rXaK2K^I#gHlkIO34bjZ=5=*(;`_r*Qr^{`o0}wQ4en~q zIL!479gsQ;&&?-63EafrKk55iJWo&u@;aU4SD0sop=sHSR!k&l; zlXkuHyF&pV)M%V%(#4rrr455)0j*Lu-w-8o(*SaMV}I^(7^l6bv;5f{>3vM@-X!DD zkg}QVaqa%iD?zQ--Af)HI>_jj@QIhA8kNaR|Q^@Mlz}yS(;MdPuvBM!Nvsb6UyQ*3lAS@zMjQ5&+b9e5d(C>!2#V@-aBB>cv z;$FrC4(|r!z>!js!ZID1kp@jKaPQx}o|ZRjsTb%SBwO%-Ik<&2KqPho1-CvzFQ14o zF0!Olh3{SFMU!v)=!?a?v>HPu90tCt(tuSmG%L!Y^68c?2w_x~KK!ctxLJiT!-)0b zay%8r$Y{d?A2ZEJz7H)R@SKipxFCtnr~n}3VB(r21Ej0v0=04ZC5 zSOW0*7{XLK{zD3z7xjO155}zCKbw1|v(oti^4P}QWB#`EO2p7}SM0xH7)<%}uW`zT z0q&f8I`>bw^%iF#OS*oU$`lMKS{2}L-R|`9?6$I{y%8ukqLzRpg0uD5r|U^oLrJ&G!ZeV+9q6y|ztsb>Vw)aye3fG- zwaIx4$nwx5?y{s-9T?B60ubigft5LRl%Y6*-r^h}yBBNH@sr-wW1L8mBmUeAqz#Hf zV(ZU?!B4fLhP4sA^lq&YOYX;Clb8EIC!lxQQ0DsMi{HINmK=b&E)8i|(P=C!PltFT zo&-Qrp9@m^C5v79jeI!_Of)ZCxLwj5O??Spe5S8Iu!eZ7b^s|QgEhQ?iKyvc zf!kFmO8Z@F@k6T%FGCg|or2`yr-zo1V`uAd1q>qzDGQ~|gt3^$Ds&(**pFPPzDc2* z6WD(sHS~HksA&E)1OmegJC)jlVfQb2a*#}$2NHwUGFGgGKV46TTJN!Qz>xY|PmCyQ zLqoHFnTl3|Aq#DXY33n|2bMa{)VWg4Qv{!1)Q2Hkr0#}FCz-pvs0QCznrF^Kr`h^7JHTgsHheq+oy9gv?(1 za{76l(H$ER(?fm6Ii+ypEgOXPiV%ljIa_#&27hE$S8v*~qYUv}Ea}%jmz;n5GWehR z#hyEk!W7NMm`{7UnpbsTCTm5n2Qfl2R}r@A43lw=v?n>q`{~&+t{RlVv*6B(r?-lX zK8jd=^~M|}a7JJ%UYQ4NlW%lf;2j$AFH5U%A9~U!vK}%V6|?XnAtf0!l%`N8QB(jk z7!tQi#dCRCTdT~Uzmv8`M_e;#=H{odvmvUV95ZGha- zt9h#@3@d$Kj^@Mc#Rk0_Y01hHaeIB!{5}lNKCBSIvpZn(2?lg;b-KtEw;ijyRs~ct zLiEIAUKRN2Tfm{HfB2;`L1^`<(8>`AWBdaMQbNfhe!o{ho>?JQ@5NP}f!Ey{2a_K+ z%na)C?zxar;Xd5jyLWxfe6w{c3lQV&%I6b6t>_n+^TmOK!TO(EwdW2T8z#hJL__0Q zvUwrM`E@nTFj#y$r^qppPbV$in!T57p*|37_Te z(NUtDads->b#)fnt694^t~q4BiS8 zE~|UbwLXoHWDuCf zwctiHVMOzMolyO;{Q_D+bCaK?F2QKs4|Y>go30!6w(HTVzA!x4$cyX+d*y%HCFz|v zs~U+fDtkvr+H1-ttH+946oyr69LFYm(_6Vm{Lr@giAqCP`-}{NSfqMG+!F0-x}r*w z^UYe1?AB(j9+?30|CwdwGx20@9pwFDR^ z(9fT~!cK)5E$ibJEe;AH1y=Ii&Di7(bVW+~727(Ge&A}-ozK=cqAt$3aDG3)L&9D9 zIeT^W9a1`y55`-v-ii2crKeP+jqm~2Y7 z!T3`}i9ldR40d!j?v|6pKl!aWnmBS#dl+wj9{LEKZXJTps7JPwE}_Z1{ar>86b+B| zS@)3IV+zlhcwp+(N{Z*Yra0*)L2wFWNN2v(k%c~AWtf5Uc*;hMVor3RTRGKjxc>T% zV+yM(d`?@Pn6F4ZPCCAzHwdh`-xfrPPKV`mI>L=8ar9ON344`p?r_OZTL!;9Wo5t~ z-*U*kAYoZVwDt-EJ1Lx9;2OdBm1Mp7M%FIz>;cY|RZtZV@{z34BeO`2M;EAN(C588 z5$C~r`?`Wj@=DA1%>+!3SoZzq=-pJ)@5)RhS7(9QSpt*c@8n+Lv3oN6+f7HZ^!%N$ zfdrxU@aC5U0jVr%Y!_i{^Z|QxzO?*ibHYZkCid*qim~Ctv5O$Tj3R0x9S=qAgIji1 z$Hgf7V3xth38xG4^YedmCmTU2!a|C!s62b|C^f-@r|af=dlar>kqwI{@O@TD%Nl=e zQTbcAp~n0??|$i22=R4?AP?jCpwUNO&(VD|b&aSALzWlf1DU7~3&k#Pm^GdMkwdo~ zMK6(1YC4z&`*>Z4uEmUwCsnQZydra$#+KvH#T#grX&?S^PW+oWAOk}-R!grW?zQ7O zIL^Ak6E$MPBLX#v&YT-FPUW52$no)SI=fZ~0*^T?k!(pq8fRRkw$;Awzi|hci}9hA zIg&C@H7);^tk%2@+|dkMOJRi~zlqU3`VH9&aZ?dji7bu@{UO%nn*WUr0z5M(&HS}S?-NEhm*0$IMW+bzoes^+1chLdu z@;S)6Z2{b-RB>o(y*Bml#lj|ZcIj$c^gH7~p!r$fCO#!MLYnLAIs^KXz~6LOXBrS4 zv%?Di(~h1CLmh2X8!)j<0zW|+6eno_g7!wZJtYsZvP=je?wQIz>dw{yut$gE|9tlv z^hYUG84KGyb*NzRhzrPRz25qo{`!lP zeFJAlm>z=WIBGQr-kpS5{(wDs*VlWWe>OL?to4O&Qf0Y^p!V&gwPgqQAcr^;!>PO3RNKlIedLDuF*NC$lQ_6ZHEpnB7MJlQ_>DU>2$)oJrtSW!?Iy zTwn!)kqefSK#CRAnF0E*Z~B~X0TjvoOu^K;)BJZ$S&f7hyEw;9A{${lAx3?zMU-Jq zfHLNjSBKuchpXNq3oZ^A&pu|qy0UCzckk#4n*M*S$@f@YY=P|VP3`AgbMOC0!vdk& z>@ww?CIRNQ|6R-?Wbjka+Yl%9o^>?V+^}I|H4(384fMr_kD1N(u%6NE zarv)jZea++n>u7Qz|$VV53*cAYPFWe0`7p=DMMO^VC{ZZLCGD^ZRq5bcRqnix@*O% zGhZi%pWFMxH@#>f_U`}pxz~S5F%|Zv%Kl`Ru`6#hBu}$XA9))JB~vKDqs9_cK;B-9 z7Q9rc{0r(8_E3#{1WndD@>w6ByOwT|`O;vYeve1d2*6+8v;IrOw$a-a1y{yV-^(zj z=_W>kK6Y5#nBOM?F@o``o$x>;004SILd;r9_o27u0Dbb>H_w4X&>b;M13Tf#IRL@* z!^0ujZ-v;1^FZ}q1qum=ZyXtEPM8DWQ$JMSP$?ccYllZcm0V1E>=+|XW@F(bjd5K_UJUpcP@J^%m! diff --git a/doc/schema/rule/conditionalTransfer.drawio b/doc/schema/rule/conditionalTransfer.drawio deleted file mode 100644 index 9f632cc..0000000 --- a/doc/schema/rule/conditionalTransfer.drawio +++ /dev/null @@ -1 +0,0 @@ -7VvbcuI4EP0aqrIPoWzJNx4TkrnsTDaZJLPJzsuUwQJcMRYjiwTm61ey5ZtkwBAbSHZTUzV2Y2Tcffr0UUvuwP508ZG4s8kV9lDQAZq36MCLDgC6AUCH/9O8ZWqBTmIZE98Tttxw5/9GwqgJ69z3UFS6kGIcUH9WNg5xGKIhLdlcQvBL+bIRDsp3nbljpBjuhm6gWh98j06EVde0/INPyB9PxK0dU3wwddOLhSGauB5+KZjgZQf2CcY0OZou+ijg3kv9knzvw4pPsx9GUEjrfOHHT9z78vcXf0xurxD03UfPHJ+KUZ7dYC4e+B4/oZCZJsxTiIifTpepP9hTzPjhfBqcDSkmHXj+jAj1mce+ugMU3ODIpz4O2SUDTCmeFi44C/wx/4DiGbNO6DRgJzo7xHMa+CHqZzHUmHGEQyrwoBvsXH3e9Mez4dGiYBLP/xHhKaJkyS5JP01jIdB4CsX5Sx7a1DQpBNUSNleAaZyNnPubHQiXb+F+oLj/ds48DTTmCi/2oxvcEzeMRhWhIHgeesgT7nqZ+BTdzdwh//SFZWPZxS14E/Y2e1O3K9zZnj+h4k+q+g2F3hlnBnY2DNwo8odlV5X9yvxDlo/8pKvpemr4JzbolpUaLhbF6y+WxbMbRHz2fCyEWyKbumSM6Gb8IK9EYmrEChExKwKS2ggKXOo/l6mvKkjiDjfYZ784Ty+zDAhdCnOE52SIxJeKTCWNIwMLSOMkblHGiRGTPfTuIDIUEOldXmEIcilKs/EW/ZqjiJ5Q3AH99Oo/VKyxyMS8WIaYK5hwyCKOSAVFTn3P42OcExT5v91BPB7Hzow/dewH87xjXtRC09pUkdM9K6XipqVqVUUDpywPgAnKVKC/DlDpJXg0ilArQTZXMK8VMKedD0gpjNavOa/SsatPo9jXZ+wC3ZgtYoenn7OjMf//jhVGritWFc/hkpU7Vl3hZt4eJGT0dZAZ3OHTOKao66RqCnskIGC2Q/aOLuUk6Joq21eRi26aLbG9pSbqIEtUdoB5FOczLzkjScY2Vg5KpWBNGYgjUlkH0MKnj+Iu/DgpKsAUp/lY/CStKLVjm7Dt5uKxsciYR1VkbCgVGVlM1K0ytiMNJJerlstMb5X2u54h4nJp/b609yp3H0p7p/cvBOC13CDyWeuapYxen9D8ZGeFuDHJe0eVvKCp5JUlom7sN3l1VT+ArjubEfwsS8QHn04+X5yI8vPZe0siMcuRV6tEVteMVAi8GZGo241TRGE2qWWTx4QmDPPQs8njIosspwVeTHNXspAGMpw9k4WjwAjyGSUVRPF2J5FZgjQxi7Q0aJfiBBqBkTT7aI8tgMoWTMmNMJkWYq0E99BdPFOqpBZQdVnWN91PU1RVxv2r+7P7o3OdoUm8cgQNUKBSjcu4xnKn3B/hIJolfYq4zRHNXN7qj+tWp9jomAWnT8W2xit6ITiezaDrMO9jJzdnz5fcP7nuZETYhCWmwU10uJsoL0ry9YK8eorfzebxK6pzgzPznlqxH89/O3TS//b99sP85/mnq8sv8M9UQW0s2DnJAkfiWBWyLZZ0A4KuBXv5X+m3QMvp2lrhT6LuuvXekPvHvXr1fp/SEqpLFZBP/k8oYecx/EduELUCf70e/MuLHW2Afx2m35palUEHd139MG1pIHu/ahWq6x+5eNHEHNdjhx34QS3JEzwdzKODlGNbWt01q5SMVoGAzNh8OVZb1GMUxgWR344XX8Ry+fhUoSNNmSy9ottfpQrlOVpzrlTV9V+4IXIsN+A3tOvyGbzZOkGuTdCNDJmi70gY0pHzU56G12XInqS7TTl/VzAkQ4a7LFwmpsErf7ByH7u0w4YdJCM2S79qs2CJohZUwDsCejrzPhagy7iBOwLdMqsB2DTQV92nVaCnFaaogEfrcB5ivthdg827ml5egIEG2HoJ5vDwr5oFrs2TI4G/3FFS6Lk2/OW+rSwu2t4IpDZTauDTc6NJjEm9DFZuv3EpQ1gYW4DGt39ElOCnbGspUEDdXHe/bq/gjTX3dWm61OIy/rrpqrSMfxmO+dacY5P1tkT0ME3NoqzvVURd7qDsIusr3aemGBx0lZ5h683BLl97yEvGKV+e275mNN4EOZJkVTZ/7SpoTEsaKGXUPSWr2nR7LYBylWBvJROqp572Afd+vQEcWtIMEsh6uLaysGUc7rdoqC026HVqNX+PYSl4bWo1shJsAqdc1F8Hn0bb+b+08Kx3cx8svjvgx8PgOlxcPVSogOtbJXjMMbQct0T99XHAN/OlAnLkB4Fkqh/fKk2xo6KsLyuAvLfPcBRZYVXQglxGdlEVleHYTrhvw/OxMrDLC4OODjax/X/pNRAgiUx91z6fvG9HGag5lq5EkcrSq/b41den75cDJGmXTSMOxQHq0gvgbwfs532AjZsFtngh4P/3AdZ2myQpZ+y4aUBenTDsrjRSy2yjrm/BYZt4ZXUMljFrO/arUMtGdErItaxDbn1/H3hW+lm7Arq5xhg7zV9bTy7P3/6Hl/8C7Vtdc9o4FP01zGQfYCz5k8cE0m6z202mzW7bR4EFeGos1xYJ9NdXsuUPSaYYB7Nk2kxmYl1kGV8dnXPvlTIwJ+vt2wTFq/fEx+EAGv52YE4HEAILwgH/NfxdbrE9Lzcsk8AXnSrDx+A7FkZDWDeBj1OpIyUkpEEsG+ckivCcSjaUJORZ7rYgofzUGC2xZvg4R6Fu/RT4dCWswDCqD/7EwXIlHu3Z4oM1KjoLQ7pCPnmumczbgTlJCKH51Xo7wSF3XuEX+j3ZzSbI/2Tehfffhnd3/63fDvPB3hxzS/kKCY7oaYcWk/uEwo3w1yP5iiNmWjFH40S8Od0V7mROiPnlZh1ezylJBubNE05owBz+N5rh8IGkAQ1IxLrMCKVkXetwHQZL/gElMbOu6DpkDcAuyYaGQYQnJQQMZlyQiAo4AZu1WzpBOIs/E29rEBBOeYvJGtNkx7psSyjktwiAm6L5XKGlMK1qOHGEDQl8LsuBqzlgF2IajpgSU5uSDxvmfWgw9/iZb1H4mKAoXTRMT0I2kY994cLnVUDxxxjN+afPbH3Lbj+Xhy140MPAa3Bxfz62NB9T3Zc48q85AbHWPERpGsxl98m+Zj5Ldp95Y2QAUBi+ZAbgOIVhuq33n+7qrQecBOz92LSeYgVQlCzxz/oJoGFfIlB9FmvTZDfMUmFLcIho8CTTbtPMiSc8kIC9RrUMbRkkrjL3KdkkcyxuqtOcMo45lsfxlHFyt2jjZDAqX7o7smwNWWDE1S3BiOJi2X7A3zY4pVeUDOCk6P2HDkA2MxmpyrhDgkbnDAY4aeDXdeD7fIybBKfBdzTLxuOAivlbZ36wbwb2tDvEivWjUkAp4+KhklI2UcOQLQ5oQ2nGCgB3BVTRhSwWKe5lkr19FH0f4wRxVfwFZNOT1xlw/2fdHGuT8lJG3wY0J3RbtL5IrYrKeWNXaxwi8lIrhlwsZK1wHNhFK46b5pxMDyP8lWlICTiByTJ0f6mIQOO8KlKEpDUwwxGK44Q8qSLyKaCrd9OrJG+981+TjBRL9sUyYoygZdsnVZFCoCwgD+tAeYj+VAYADQQvZbQyRpU5xz7AOD0HosC6KBYBSrriqpLVmkUUOrLVgfpmET27N3kwSgWDvN74E+wLV7oEoI5hujLbnwRG9tl4Qq8YsDB0QZJ1ba61yb3ISoGjLD2voIZ6qQCeM6oEeqlg8v7x+vF1+FOtvDhNpRe3wZ89OlTPkE3EWMlBa+6kaJbGmUOckH2VmzRGvBiZaVvW2fm24fXWmzgcfq1a0lQURu7kYZp5+Zp1AHa8zUcub3KW/C/JkjZ8H1VVtfzh7P3y5+f9rhYJy8sywjxEnB3zDDCGtUyDJwfGy5ON47B1MDNoLdZlaGZ4Y0dC4djUQNijnFuKCjtw3E3OLduU5dxqJ+fnrEwAR19dPmtf0YS1M8wuUJi+HLNFJClnr7/jyHoAoCSRGl7aAs9W40hLQXDfcaSrgaoKKwyRlnKUDcw3ui6uyHq2SS9HEx2lcFW265roNMCi3Cg6vSbqBcUljjJV4o/jCojZ2nwlQZyrONiDLYM4uzf/6rXBf8iJVBscURvcWwespeBtePTUku62JVjvogjWU7aMPKOjsnuWMpC6+bSHYBlc0K7WTeS3+7+w+hwobdmzi3zEk7J3sdJq4N/h9EToN45Af1e09x3Qtkb/ZRW7PUMGkzvuiH5HXUZmu/DiWPSrwuuBc6BfL6Ka+Gfgj0iEW/F+sc1foh+Mz4P/pqTv1GvCarsm3ItaE2rI7RpKFa71mlCY2gXnDbkh1GDbArQ+SlcZUIGMYG5/QJTBJcos0DB5bYUm5Gt5KA5qSO85W4MXhRyt6G92TNbKclqxL65mDX0jp/n82G20DCKd+C4ygVCrlpbdkKE1HRgb95VAwIai5by3mooxco8SiKqA6NZPKoCfqlHPUZXZlgUuK6hylKDKdK2OAqLQgKVWHfumAb1mc/9BAyhbkFSGZC4KExLyM0qFriyCMFRM7TcBm0jllELTnldYxDkqdLzY6mvYEGmq/ahqcDpm0Us/L6SRpnAxZwfYnh2kE0qGI7HRaGxYhxjpDEeUYNu87bIYBto6CNUzJa13JJSj69qh2b5JRq+r7Tum1H7z7BfjJGvPFJ6BkG5n27+i6d3nqfGw+PfmDQrgJhrq1SJz9nt7NuM9IBEoZ0ZoHVfv7T9zbx1PVedfoKkcwAYG0DDY5watDUeOOa5+pC9jO97I7UiP6tpS84ODG7a7xlfqsn3LmtV/iuXdq/+3M29/AA==5VvbcuI4EP0aqjIPuCz5gnkkJJlNzaQym2ST3X0ztgDXGMsjywnM168E8kWSCTdDmFkqVbHaomV3t053H5uONZzNPxM/nd7hEMUdaIbzjnXVgRDYEHb4nxkuConlrSQTEoVCVgkeo59ICE0hzaMQZdJEinFMo1QWBjhJUEAlmU8IfpOnjXEsr5r6E6QJHgM/1qUvUUinQgpMszrxB4omU7G054gTM7+YLATZ1A/xW01kXXesIcGYro5m8yGKufUKuwwf/nr+cnU7GIBRF3r38+evQdBdKbvZ5SvlLRCU0HZVC++++nEu7IXfEkTEDdNFYUV27yk/zGfxIKCYdKzLV0RoxOz81R+h+BvOIhrhhE0ZYUrxrDZhEEcTfoLilEmndBazAWCHOKdxlKBh6XmTCcc4oSKKgMPGW967sBFfE81rnhe2+IzwDFGyYFPE2b7wqojrLigC9q2KEkuIprX4cIXMF3E5KTVXtmcHwvw7uMLSXPGQM/NDk9knXBrXj5+In2TjBv8QnCchCoUN36YRRY+pH/Czb2xjy3Y/lYltKNvY0i0MvAYTH8/GtmZjqtsSJeGAAw8bBbGfZVEgm0+29WHGRKGEXropa7ZyGkxVyAiKfRq9ypjXZD6xwjccscsrPQVsZTc4igcynJMAiW/VQUZRpLq8p+ihPpkgqulZOrO86/3962j+BSODJxeCfIqK3fOAfuQooxcUd+CwmP5JjwPmmyW4ye73BZwFzMGINODcLApDruOSoCz66Y+W+niopPy2l4ZwLjvO1f7BU4SxuhPLLCoWlRJV0w7tmgaADlSQsJ2QkpXaUFaAx+MMHSUG3HU4ep8i4vPc9fsnt7K6Kaq23gcnt57mlANhF80j+jc/Nhwx+kcaXc1rE68WtcE3RCJ2U3zrNvqEuYIsuGq2OUxQCFbaXRcWgmqB5WhRH6lL7ObmFdZujvAVlm6uKM4kx5QBJ2KyrKt3zTGWUrpB87RJxtNiGQ4MP00JflVTzEtEp7dXF2Q1ug1/pSRTbNmDk4xpQNtxjpFjuvaHZZl+24CmwVAJcD0J4d7HtwK7im8V0AU2wNY4iuMhjnnuY5duhT7yxvxyM0rwd1Q74wYeGo3bxzRrS0wD8KxAreeobaQKRtuimqPC4ZFRrGh36zC2rJWpgLAbgmcXfhgygMku6DTKPq2qZUEQDJdEzi9aQBe7t40C2jWtnpyPWoks51RIVuyoWiAM754GT5o7z5NjUKqKrgUbWIbeSVmGwtlKC3KdTFhD8GuY1VPNCpvM2kTe9I9mVT1OYcAAy/Vn3EjJKEuXBnFjyhNX6id8O/PEu5zs/sg5UXuZxt3v1YgdTfh/vOwN0X1SMWwrPexSV6pW8y7GDBW3A7/d2pkyccsNh7Mpb6+pGoDUFPXe74o+PPkXELQx+8Pzos08pc329sz9bk/WY8P+SWsBqHPP9w9aRDPooHIMywGS4AQp0SRE22f8Jvhrk2/dgUJRmEzY8HygMa9YRwNAnb0+EHXW9xyw3nOAd9FD4ktMV8avvmmfAWECt+0uzowxcYAB+nIUukqHuzUxD5RwPjEzD3VqHl6uYU22T7L/L0iC9hof1sLRPSki6Vz7oXVQiUBAgiCOLdB+v4ppADMVV0qsUnhduLHO+ugSqXx3ojWCpPYIyIIyynQdWwusI+Kc7UDDtfrVR7oYx/WM3p6gp24YtTlZA3qVolbb7y8LhP+1b4Obx2c7uLt7ISRcNDz2h2PjieR6o3hiOsXePohLHGiBK7b6tis77bAYO74H9W4fjA6FwTXt4Gac2pJFNjbUdA3Y2TagtY1nJ3pTwpUhBZi86q0+QNG4NVRZwOh7imrLYMtVH+9YFVtjWOt0C/A5PyxqtguSx+g5Sr7ncYRInkzOnwp+d/ee5bsUxwcvvaeEIfeyRogdjfnap+fcvRzbM7O1Xp5t22GW+dD0lHqo5AFO9IRL4UHAvq+G9Xoacp5dMaY3qS1F90587O//FPfceFxPfT1h33dTXIVm6XuG3bfYnnE9/t86WgoPv9y8zAEM/3QGXzM4zJK7DDaBO+Lgfr7txbu7so0UDR2lvSjqnI9I0WxY/XxgNb36FYZ1/R8=3Vpbc9o6EP41PCZjWbYxjxDoZaYnzcnlNHk6o2ABbo1FhQjQX18ZyxdJBgwxttuZTMZaryV599tPu4s78Ga++UjRYvYP8XDQMQ1v04HDjmkCyzQ70Z/hbWOJ7bqxYEp9Tyhlggf/FxZCQ0hXvoeXkiIjJGD+QhaOSRjiMZNkiFKyltUmJJBXXaAp1gQPYxTo0m++x2ax1ITQyW58wv50lizt2FZ8Z44SbfEqyxnyyDongqMOvKGEsPhqvrnBQWS9xDDxcx/23E13RnHIyjzw6RaN+1NGB4sNotPp0+I7fbkSs7yhYCXe+Fv/86PYMNsmZuAzcYvzwWA98xl+WKBxdGfNnc5lMzYP+AjwS31TyQqYMrzJicQmP2Iyx4xuuYq4axnCYAIywBbjdeYAkBh1lrO9K2RI+HyaTp1ZhV8Iw5xgJFszElosKHnDHpe+RlsnC0wRI1Q3XOj1Ixjy0ThAy6U/lu1FySr0cLS4wUd447NncSe6fonk17YYDTc5teFWDPZafElWdIyP+x57UgjofsnZ3S4weyKjOEDMf5MDp8gXYoU74vMdp263u7LbUwpIpojfRzyVx7kykeMq+OkpEzFuAsy0iXbQSF/7fLQ4Glr6d3f3X/8bDRsNK8dpW1h1NUM1ED7coHT7nB/knoqG2WO70fvDTuAjRuEBPbdV4QktGT5QhUXZ8HS7zYZnT0MdoyhcTjDd0Tne4PGKZczOyA8cRiblmQMu4HfunS/olWc9Ei5R4E/DCLQcHfwpOIji1OdpRV/cmPueF80xoHjp/0Kvu/kiXC2i995Zwh507GEh0g5Gk0oIaW4kFpGyjyKiuDKuoeSh5KB4L4KAPCtUZiCTyRJfxOWu5vLR8+jm6bFhRu7ZbWPk5MitkJIL6RUcIddK86CjROu0imjNnkK0wD6PaC2FaFMGr4logV5beD7lRBRExhxTjGKaReHuf+mMujWMm0ZLFZQLelZP5kfrfXC6PK0CvS46xBbco+Eu0r0PfpC4jY9E0Q/MMqldxgIveRKoJ7U7yiRnVFTAqYg2urYc7caZ+RlU6gSzZH7G3Yy2OTURVvs3rJRpUG1fHNFP8sYM1PEOKoW4CTWIx8TFZY8ibeSX9/jnCi9Zm7kqidVKuMo2e60nJ70Mr5mcQElyyvioTGq0l5yO1p1uSRI7o+6sisRcqHBPVUUmhDXnPqf1NipBH2juYCzbajx+gDYIPlsBH1Dz5XMbkE7N2NM7HB4O/T8rta6sm2FcW9CyZDJo/dmlNyyGo9vPTTeQlQ5g490KU+9W3JIQN2qk9FcLJatt0EpWjUdRltR0bVc+XHq2c6zrE43uMPX5i0c8U39bp6qjBBgKDEw1/yjdxDHqqca0HUNwuBzr2uCQ/oXKMb3j8He1lNJgreDcg4bTlVx0ZVYCbuU0TU+ry5+LZuM1Xdm8Wq7pjCPEt5fjKqvpGmxMuXvShlOZEBjG4YkuxYTWMSI8Sd1yDqlfiDb1avTP7GKlBFDJj5zAkTvu76THGvhPrwsuxn97OakJDlFLDzUJKsshWnZesjQ/ubcNCvdbdlugDlJIMtIcmO5xAtyWhn+C/yqyI1POYtoU/P7Xf//Hs6enB2v0vftK3NvZzy8FX2peLPYnJGSJopXPa0Cnpn5h2W+kkkq6DaSkkUnpZrVRDyt1zeJ1qqKZQtiaGmwpnvOqLK3PUNAE46gQ16F6MAgrICBD+b22Of7hw+wr9Fg9+5gfjn4DzVdLj9owEP41OVIlcRLocXl0e9iqaEFtOa3cZCAuTswah0d/fW3ihDiGLkVlBeLgeXic+ebz2HbQINs9crxKv7AEqOO7yc5BQ8f3vcD3HfV3k32p8f1AaxacJNrrqJiQ36CVrtYWJIG14SgYo4KsTGXM8hxiYegw52xrus0ZNVdd4QVYikmMqa39ThKR6jQQio6Gz0AWabV0FAalJcOVt05lneKEbRsqNHLQgDMmylG2GwBV8FXAlPM+nbHWX8YhF5dMYC9k+Dr4VWyG7tNr2psul0Gno6NsMC10xkMswFGhIpytHNSnMnj/YHKnJIMnkhExZVOO8/UcuE5N7CvAeMqyn4VEvb9NiYDJCsfKspX8kLpUZFRKnhzOWS50vb1QLWGlU30bcAG7hkqn9wgsA8H30kVbg0BDrdnmIS1vG6WrfNJG1eoaYU2XRR37CKgcaEz/AV/fwncisJD4yBWleID1YTx+/vptNLwvLLuhgWXH82wwve4JML3wVmAiC0wLMsiTB7XtpRRTvF6T2ESKsyJPQC3insBNwsX3P5TxQy3OtO9BGO4MaV9JOyIa06Q00+up8XGSEqo5Z2u0ZgWP4S8w9HQfxHwB4m3uQWK0OLvijYKGJ+pZ6ThQLMjGbIynaqxXGDMiM6sJFUZui1BBiydl4npas5G1I3ntSKgVqYTGinQgXZ349TwMLB7O5Bn1n6n4rpTyL6SUd1eUilr9vnsloaKPZpz2aXBjOoU3b2tXcOnaVng9B6vr3VscjO6Lg6HJnaBNnou7Wqs/Bu1j9MYsjCwWPoMoeK5KwqXKupwYlHv/C0rongG+eT/xTxQ+utX1pHfBPqZUvlzABEc+DFbKLje5uhwq65xQOmCU8cM05B5+ylVwtoSGZT7XllsgHLSvgD0bYnQC4fZxfAHCUjy+hEpKH1+UaPQHzVhZc9owEP41nmkfwtiSLx7J1XammR40SfPUEbbAmtiWR5YD9NdXsmV8CBpgIM4Dg7Ta1fHtt7uSDXiVrD4xlEV3NMSxAcxwZcBrAwALOkD8Scm6kji+XwkWjIRKqRFMyV+shKaSFiTEeUeRUxpzknWFAU1THPCODDFGl121OY27q2ZogTXBNECxLn0kIY8qKYDQbQY+Y7KI6qVdx65GElRrq6PkEQrpsiWCNwa8YpTyqpWsrnAs0auBqexud4xudsZwyvcxKH78eXjMp/j+FpFJ9pCy2Ty7ULO8oLhQJ54WiRDQuQSwtC/HcnkATkpBTINnHKpD8XUNFaNFGmK5mGXAy2VEOJ5mKJCjS0EOIYt4EqthtSxmHK92nsfaoCT4hWmCOVsLFWUAXQVsTS3VXTZ+ssZKFrVdVHMLKW4sNlM36ImGAvAAMIEGpgYSTsOJpKXoBTHKcxJ0cWlANEVPIMHWv2Vn5NTdp/bY9arTW9e9FeEtM9F7UvPLdmMkO7VNtVUcavHQ84c4Di1YgF8nFUdsgfl/9Ozt/m050Nniv1rGcIw4eelud5tP1QrfKREH2dDHGXfpA0GPFtUxlVU7rnoTuU53IuD1Jqpw0CYqKbY59vGsgxrrfmJesFR6gAnR0HFq9YC2/T0D1TlXnNoaYpcoRqmAAJgX4jdJBETSwwZwUSIRWXCJhVQ1p/d3Hy6rFPhRxzaiyazI3yb/wR7vLB3XrQFk+ecC1jl5AqwTWSuNNUnt7InM3jORwSETmd2rg3B8ZCID/o5AfSWRCX+idUstkwr57g0D3+lu2OxcXESjmvGkWdI9FzWtA6h5bD0fgNLekJR2QY+JR9dmrxcbe9bmQyntmgNQ2ttd+Ocozoev/I713ir/WIPsi3zo/GrX+rip9TNZ50ecJDjn5eBEaJXjMyZa5a0gL99LBlAmqLw7fBV2XMNfvAAz2cwYDXC+xy1hhoLnRem1bwWPSYpP5xvP7vrG2uIbYG7xjXsu39RkGTZFnzDV7vsMsnZ46o1ybS9ILXhkrvXM7kT9a8iZn0GW/injljKj/oox2cTl+w7LXuVzvJGjx6W9hQ5j51xxqT+XThSXh3yeeAdXJ2vfgB4PGc++tyOxHxrPfu/dbplg1OPY0SEtus2Hz0q9+X4Mb/4B \ No newline at end of file diff --git a/doc/schema/rule/conditionalTransferCMTAT.drawio.png b/doc/schema/rule/conditionalTransferCMTAT.drawio.png deleted file mode 100644 index 83cf65889f028dc201c25ea81ac742ed430337ab..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 84882 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%0DGO>BM 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 A`Tzg` diff --git a/doc/schema/rule/conditionalTransferTime.png b/doc/schema/rule/conditionalTransferTime.png deleted file mode 100644 index 52eefdc978079f395f9b343229a2957d3ad92278..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 29921 zcma&N3E0!r_AiX0qA!Rbs2~WuC<-E&q_c|JG()E}9nv-ph^9%Krc=_iX_5+p%A}}( zA_96GaRLQ|1E_!qBD^X`jt5adj}r)@A~>Na%H2Kw|M!0Pd%ov>_j&TXO?LLMvi90* z{nqf_6^)SRc3j-ity{Nq1AZ(Het+oJ?eqm_p9Svf_ix<{eom{$NwnMYcLyKt)(!GD zaJEq~^Kv=YZG_GD*WCyNDk$~F2pcv6LGW@;XlP0m+=BLsBFcF=C;s&gfe`x`2wWZp z@{F)~ZFcYnLB_%m#QoKumvYtrn#eI00uzj6VR(cM1$SY&s+-`~bUSZ$+DCyqud0@F z>0CA>H%1_Y!{!=mbGCAx3m4{lg$?ypuc*OUc7NxM}AoT&fR4892&VZ#Bt zMVXg0z5-s$|HaWbm1{b6H*14iWuCX?s2b$`Yl12dKI%Vf~51gil3vYAS&TJ#QCX!kpPS?bCqblJOV-8JYAqmB<&!J zH4pD^SuCTZQm~708*;wH@L3twGKFy65*lILh!au2nQ#-ht5r9=ezfA_{B?H{a0eAl zS1kp86E+*15tx*V3Iu#Iz_Vn9s2o<7nE;HSSwQww^$3cVlAuMEaapZ!;@r@riG-J@Hb;Q8qVhMTOIn=%rEWPh~|dJ!cq8&ef07YHky?v)zuc+ROvsdzo1kU=aNSFvW21`|12 z{&GsP7+nZZ9#1{)V9|0pMi&zlF4~zA7XXum3V~#*eM4zJFN}j5nW&}nBD3VpcI^ zRcdmUlg+HNRHRduty;<3YcMN_0X=9W^KFt-QK2T9o{-4rZDFJ3cmOuiA?~kqC!5#T{hw2`UD;t3`XgURR}b4kIa6DEpkX zLe=Fc)wA9dS;F0FE#V7AT2{E_3zg(_rBq9jT7>XPc-#y^ZT=umZ%7d-vSdSLCY>gY zvVeO;)D|rfA=Q_P7s_gi^1xIy#j~cJ)&QZds7qlZc_v5(98w{mB*RrQla3eZVpK08 z-b^7`DFkYcRy^d#+DFqg?Yfc-nMhj-2{oyax?3s8KCnDmqIAin*Ns9TTX*HcE}&rv zNOzQ&h)e}@S+vMn_KIaRaJKaAb%^DPe^wT$Z5~k1woLT(k(fsOcQ4HW0W$h4N+u zhAEpP8kYSwC&Ie(88uuBInpuA<%v2;yej1F{uUqxEktVGCTx#_33L`N7PH=_;bO87 z(zI$mOt+j~GMG)4vZ;JCrlo=$Dm2ptxvcA!VYu81oh^kpd&J=(P`8GcwVc7HQbDo? zp6j3w%KHVCIw3fYxbAnVSx!br%>`z;F!W-1KN<&wZuqs@}STHz4nNI5kNJh!#7 zfMb<3&@F^F>#JrR{)j`VCNLJ&3uK|xii=i^;)SLeN`fx9vlT3{W;j>aQFh`q({k4k9_0b)(Nco;Hp`A! zGFP)l@~*NKvg_eSQ}ETqbdqcqplVv;GjO0OIoNF0Y=v+%ixV}>#1h_kFfXYHoCy(x z*Omh34Q-~ahCKsrQXZC5^hQ>WH4 -=`?kzty}Y84?9o?smJFgV=`(M=b@Q+f(U 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 jHel7`4osP6?};0 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 MC~7E_BP>Jz7vt_aIRF3v diff --git a/doc/schema/rule/ruleWhitelistWrapper.drawio b/doc/schema/rule/ruleWhitelistWrapper.drawio deleted file mode 100644 index 70e72c6..0000000 --- a/doc/schema/rule/ruleWhitelistWrapper.drawio +++ /dev/null @@ -1 +0,0 @@ -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 \ No newline at end of file diff --git a/doc/schema/rule/ruleWhitelistWrapper.drawio.png b/doc/schema/rule/ruleWhitelistWrapper.drawio.png deleted file mode 100644 index 0cadf5d281d79512e67cffdae45951eb35435c36..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 53602 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 B`QZQn diff --git a/doc/schema/rule/ruleWhitelistWrapperV2.drawio.png b/doc/schema/rule/ruleWhitelistWrapperV2.drawio.png deleted file mode 100644 index b8295c7c0fb8c8e7328778a40775d74b98341a5c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 111165 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 PgJ0?@+R9mqrhfkq0-bwP diff --git a/doc/schema/surya/surya_graph/surya_graph_ERC3643ComplianceModule.sol.png b/doc/schema/surya/surya_graph/surya_graph_ERC3643ComplianceModule.sol.png new file mode 100644 index 0000000000000000000000000000000000000000..bb44d1d8d35e3d24a120a5291e799ce5a4589f05 GIT binary patch literal 199776 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%0AAg3adClo%B_7!H!hcrFgUq} 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 literal 0 HcmV?d00001 diff --git a/doc/schema/surya/surya_graph/surya_graph_IERC3643Compliance.sol.png b/doc/schema/surya/surya_graph/surya_graph_IERC3643Compliance.sol.png new file mode 100644 index 0000000000000000000000000000000000000000..49f8124d0e16c5192929ca8639c1bbfabf204127 GIT binary patch literal 51370 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

*@tM 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 literal 0 HcmV?d00001 diff --git a/doc/schema/surya/surya_graph/surya_graph_IRule.sol.png b/doc/schema/surya/surya_graph/surya_graph_IRule.sol.png new file mode 100644 index 0000000000000000000000000000000000000000..b6381f2515bbb034b5e5dbe1f14ee7720597c9dd GIT binary patch literal 19645 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 literal 0 HcmV?d00001 diff --git a/doc/schema/surya/surya_graph/surya_graph_IRulesManagementModule.sol.png b/doc/schema/surya/surya_graph/surya_graph_IRulesManagementModule.sol.png new file mode 100644 index 0000000000000000000000000000000000000000..1c7a02cdeb213a6776dbffeb0536a221ae947df8 GIT binary patch literal 50444 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%0A-*wd@vjW!dW!#!+YanPJ(O7ZqSb>XyYnKV#R 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 literal 0 HcmV?d00001 diff --git a/doc/surya/surya_graph/surya_graph_MetaTxModuleStandalone.sol.png b/doc/schema/surya/surya_graph/surya_graph_MetaTxModuleStandalone.sol.png similarity index 100% rename from doc/surya/surya_graph/surya_graph_MetaTxModuleStandalone.sol.png rename to doc/schema/surya/surya_graph/surya_graph_MetaTxModuleStandalone.sol.png diff --git a/doc/surya/surya_graph/surya_graph_RuleAddressList.sol.png b/doc/schema/surya/surya_graph/surya_graph_RuleAddressList.sol.png similarity index 100% rename from doc/surya/surya_graph/surya_graph_RuleAddressList.sol.png rename to doc/schema/surya/surya_graph/surya_graph_RuleAddressList.sol.png diff --git a/doc/surya/surya_graph/surya_graph_RuleAddressListInternal.sol.png b/doc/schema/surya/surya_graph/surya_graph_RuleAddressListInternal.sol.png similarity index 100% rename from doc/surya/surya_graph/surya_graph_RuleAddressListInternal.sol.png rename to doc/schema/surya/surya_graph/surya_graph_RuleAddressListInternal.sol.png diff --git a/doc/surya/surya_graph/surya_graph_RuleAddressListInvariantStorage.sol.png b/doc/schema/surya/surya_graph/surya_graph_RuleAddressListInvariantStorage.sol.png similarity index 100% rename from doc/surya/surya_graph/surya_graph_RuleAddressListInvariantStorage.sol.png rename to doc/schema/surya/surya_graph/surya_graph_RuleAddressListInvariantStorage.sol.png diff --git a/doc/surya/surya_graph/surya_graph_RuleBlacklistInvariantStorage.sol.png b/doc/schema/surya/surya_graph/surya_graph_RuleBlacklistInvariantStorage.sol.png similarity index 100% rename from doc/surya/surya_graph/surya_graph_RuleBlacklistInvariantStorage.sol.png rename to doc/schema/surya/surya_graph/surya_graph_RuleBlacklistInvariantStorage.sol.png diff --git a/doc/surya/surya_graph/surya_graph_RuleCommonInvariantStorage.sol.png b/doc/schema/surya/surya_graph/surya_graph_RuleCommonInvariantStorage.sol.png similarity index 100% rename from doc/surya/surya_graph/surya_graph_RuleCommonInvariantStorage.sol.png rename to doc/schema/surya/surya_graph/surya_graph_RuleCommonInvariantStorage.sol.png diff --git a/doc/schema/surya/surya_graph/surya_graph_RuleConditionalTransferLight.sol.png b/doc/schema/surya/surya_graph/surya_graph_RuleConditionalTransferLight.sol.png new file mode 100644 index 0000000000000000000000000000000000000000..e453d15325e7a8924ef0fb782ef655f22ecb60ed GIT binary patch literal 107865 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 literal 0 HcmV?d00001 diff --git a/doc/schema/surya/surya_graph/surya_graph_RuleEngineBase.sol.png b/doc/schema/surya/surya_graph/surya_graph_RuleEngineBase.sol.png new file mode 100644 index 0000000000000000000000000000000000000000..c6dae249cc990c038f92ed4b7f84d1890c8c34cb GIT binary patch literal 122782 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

^H`uf-| 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

$UrHod! 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 literal 0 HcmV?d00001 diff --git a/doc/surya/surya_graph/surya_graph_RuleWhitelistCommon.sol.png b/doc/schema/surya/surya_graph/surya_graph_RuleWhitelistCommon.sol.png similarity index 100% rename from doc/surya/surya_graph/surya_graph_RuleWhitelistCommon.sol.png rename to doc/schema/surya/surya_graph/surya_graph_RuleWhitelistCommon.sol.png diff --git a/doc/surya/surya_graph/surya_graph_RuleWhitelistInvariantStorage.sol.png b/doc/schema/surya/surya_graph/surya_graph_RuleWhitelistInvariantStorage.sol.png similarity index 100% rename from doc/surya/surya_graph/surya_graph_RuleWhitelistInvariantStorage.sol.png rename to doc/schema/surya/surya_graph/surya_graph_RuleWhitelistInvariantStorage.sol.png diff --git a/doc/schema/surya/surya_graph/surya_graph_RulesManagementModule.sol.png b/doc/schema/surya/surya_graph/surya_graph_RulesManagementModule.sol.png new file mode 100644 index 0000000000000000000000000000000000000000..aee780340f5079308b1226879cfc8d82cf1132d0 GIT binary patch literal 286307 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¨qryU?$i*;_8u{cPUHU6nVLen#QjLXef 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 literal 0 HcmV?d00001 diff --git a/doc/surya/surya_graph/surya_graph_RuleSanctionListInvariantStorage.sol.png b/doc/schema/surya/surya_graph/surya_graph_RulesManagementModuleInvariantStorage.sol.png similarity index 100% rename from doc/surya/surya_graph/surya_graph_RuleSanctionListInvariantStorage.sol.png rename to doc/schema/surya/surya_graph/surya_graph_RulesManagementModuleInvariantStorage.sol.png diff --git a/doc/schema/surya/surya_graph/surya_graph_VersionModule.sol.png b/doc/schema/surya/surya_graph/surya_graph_VersionModule.sol.png new file mode 100644 index 0000000000000000000000000000000000000000..6d3a741d4cc5658903225d8b6327899fccc1dd02 GIT binary patch literal 12663 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 literal 0 HcmV?d00001 diff --git a/doc/surya/surya_inheritance/surya_inheritance_MetaTxModuleStandalone.sol.png b/doc/schema/surya/surya_inheritance/surya_inheritance_MetaTxModuleStandalone.sol.png similarity index 100% rename from doc/surya/surya_inheritance/surya_inheritance_MetaTxModuleStandalone.sol.png rename to doc/schema/surya/surya_inheritance/surya_inheritance_MetaTxModuleStandalone.sol.png diff --git a/doc/surya/surya_inheritance/surya_inheritance_RuleAddressList.sol.png b/doc/schema/surya/surya_inheritance/surya_inheritance_RuleAddressList.sol.png similarity index 100% rename from doc/surya/surya_inheritance/surya_inheritance_RuleAddressList.sol.png rename to doc/schema/surya/surya_inheritance/surya_inheritance_RuleAddressList.sol.png diff --git a/doc/surya/surya_inheritance/surya_inheritance_RuleAddressListInternal.sol.png b/doc/schema/surya/surya_inheritance/surya_inheritance_RuleAddressListInternal.sol.png similarity index 100% rename from doc/surya/surya_inheritance/surya_inheritance_RuleAddressListInternal.sol.png rename to doc/schema/surya/surya_inheritance/surya_inheritance_RuleAddressListInternal.sol.png diff --git a/doc/surya/surya_inheritance/surya_inheritance_RuleAddressListInvariantStorage.sol.png b/doc/schema/surya/surya_inheritance/surya_inheritance_RuleAddressListInvariantStorage.sol.png similarity index 100% rename from doc/surya/surya_inheritance/surya_inheritance_RuleAddressListInvariantStorage.sol.png rename to doc/schema/surya/surya_inheritance/surya_inheritance_RuleAddressListInvariantStorage.sol.png diff --git a/doc/surya/surya_inheritance/surya_inheritance_RuleBlacklistInvariantStorage.sol.png b/doc/schema/surya/surya_inheritance/surya_inheritance_RuleBlacklistInvariantStorage.sol.png similarity index 100% rename from doc/surya/surya_inheritance/surya_inheritance_RuleBlacklistInvariantStorage.sol.png rename to doc/schema/surya/surya_inheritance/surya_inheritance_RuleBlacklistInvariantStorage.sol.png diff --git a/doc/surya/surya_inheritance/surya_inheritance_RuleCommonInvariantStorage.sol.png b/doc/schema/surya/surya_inheritance/surya_inheritance_RuleCommonInvariantStorage.sol.png similarity index 100% rename from doc/surya/surya_inheritance/surya_inheritance_RuleCommonInvariantStorage.sol.png rename to doc/schema/surya/surya_inheritance/surya_inheritance_RuleCommonInvariantStorage.sol.png diff --git a/doc/schema/surya/surya_inheritance/surya_inheritance_RuleConditionalTransferLight.sol.png b/doc/schema/surya/surya_inheritance/surya_inheritance_RuleConditionalTransferLight.sol.png new file mode 100644 index 0000000000000000000000000000000000000000..754a650e56bc1c9eb05607856c7812911361f929 GIT binary patch literal 26255 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 SZ@ythG27*H=gb+NoBs#gegj7U literal 0 HcmV?d00001 diff --git a/doc/schema/surya/surya_inheritance/surya_inheritance_RuleConditionalTransferLightInvariantStorage.sol.png b/doc/schema/surya/surya_inheritance/surya_inheritance_RuleConditionalTransferLightInvariantStorage.sol.png new file mode 100644 index 0000000000000000000000000000000000000000..f54aa6cd53d6dae8a5ba6d528ce56307af4f1b60 GIT binary patch literal 16885 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

WCfA#8>^3|*SzH9Sp*#;Gr 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 Jk6*s?{{!HitIPlZ literal 0 HcmV?d00001 diff --git a/doc/schema/surya/surya_inheritance/surya_inheritance_RuleEngineBase.sol.png b/doc/schema/surya/surya_inheritance/surya_inheritance_RuleEngineBase.sol.png new file mode 100644 index 0000000000000000000000000000000000000000..2d065b8c4be087198b93508662200b034bb42cae GIT binary patch literal 36333 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 z z_?RFjr0hwK^_62_vEAj%Ygin9&0tB>}Q1pa2Qj;0YouMbunqZ~fV|yhn_U<1_1{ znUQNjt(cpAy%K^HjSaAJr(>EJ2QFy;T0 zqYmF|RD&(z0E+*(!JKmV?AZs}Sy2bw_WwH{%Fj&au79wyn@3+{Gmu$iR8(_E$LPj3 z8Cls?6ol+ZOoTj$IJm_RPkbHvR=Yn{;6qrCZ7oC$62>4L1Km8d{wu7Mnj=gHef)W^ z(}Cb=o}u5jij#}$N2|8c0LGz}@J_W?#l;Dj+W;EG4U&?|98_H@_>#Nwo#S0y%Y`N*#yy>8P3kf;7Qo%bZeZ;0oORA4Lfplq8+ zaIT`5X0zkq`{-u)>1NcxE-$RL%A3D)e$3=?s_DzmO`V;$5gIfp;PYB!0imOKV`pb( z?Z<0EAdd?Q2$b)=I~|k5JQ5f{7WtnH0r(eGLn<79qRB&GfXT!M8#VONqZ-bamd5t> z%p@X?S9Fj8I*iEW=H-!%cY~I%$6mc6K)P_98aMh$|UDx5B2R?RGepdiHw8hHEdj_E`E$&uy(T zXdJL71rm&i6rMBZ&aEjmWI{QKTl^w~x9l9geqCnMZXItNgzz=RDi>aUwui<039}&Z zoS~>yAZzUpRRI_oMv*ZbNaAtg!SJ&Nx*Oy)j{Uig`cB@Klhrk;^U|Eb5LOaK4(4Cw zIxN8C%m#QMC)X9ErQkrp2e+`X@o5?J(b;_rqhGk^LN3{z7i~5Lt$`Yk*?U^R z4_fS~AxwH7gKL0Se+`ZQ^aIc-hdxgRqVXI}K%!icQo-BAXd_gI$A3N^U(d*>nAjYj zm`H_q<3NRho0}|FGrrX-p=GSZZ!JCj;A*(1IKdl`3V@J=8VW6mynGC+fPeEfYP$FP zSKdH07qv6KpkT91%!gf1!IKnHS`^Y+2cfYdM*N-AFyS;mq}d-oejp`w1Ue#|>cUzG zlr~51_*-%fz8GsZ_?JzuS^2 zYm$h-*EEg)d5n^z^+G?8yaE6tobsO!TJDeffj+PqHU{1>3C*1o8JrtNi-Vh8ha)bb zTC6TAa%K+>LKJ5E)O-xY1()z{M#f~ktfs>vpCh%%GsiwRwvAwgJ* z$X?(rQ~DN~!Vh8U+Z-L-{#Px4E2P!xsF|7IW_7vg9)&f9`3tb-BfF^6usU2^>kufy z0%dkN$|t8{_O_>|r~5r#fk;(qcz0&T*& z=Wn@IZbn*w3;V&UwIq5aDJj|i!xhmkMZ8mmg!kO0ifB=7**fE%Xr&!Ja)b)C@CT$F zCb(vW?tjHm*U331*~PE#9ughRT4GuQxafLmueHL2=fvk4{ny`Tx--5)TnS$1G-bT` z-@IVv$Pq)dm;;qse$tDyJS;Z`g7dDsaI?X@^359x zqyk(q8lG`Mmr1scakfrLMFc)mcVTeZxo`H*pAc!@Y#lkPXS4dA*Lz~WnYi|@7-X21o>Nl+07l%>M8A) z5P>qrt1NI9xWt}frUEImtcJ!GCFoS`CaVFrx;cVy$K8+2W+R_tXeN2zti;#YN73p+ zkiT%JCHc7$Qc_o~E0IgbAuoh>PV!l(i>eEn!x3W*rr9`*?f+}p2lI_)CKyQUX=<=m zk?3`Mm;XIGY<1}sgBPAELclr$)RF-%AmrfXWu1SXeg669+tPrk=iLqa@4p+fa~JP+ zE-ZKW0_-p3?O-ij^3Y}{^W}&;iCJ47+U)QC_pc7PaEMp>956Y*EGatO1uU7reE(j( zw_XQWB?@&O(e|ir%lUr)-F4uZjP0zSfUEa3cXKfs*OixaNUsO#UT+$3e(MDwLxP9x zMvhs;+G~mZogLAqKbHLMu?}i}7$;rYegGJ}EUc`B{lLW;mN~;L17R zDFR8r-YqaO&kCCxWOU{$us!pp?Dqy;4`A|SYfg-aDBQl2uf6$o_xZna2drgwhPN>G zNR-*c%lBH_^d2+z=>y_jJDsn7U0=QK&+caJg0=j{->CmE2CL63ZrVjo!O7(XYY%%@U8uu_9FXMfsTKjPTV UufMPxc-}9Ar>mdKI;Vst05FJUX#fBK literal 0 HcmV?d00001 diff --git a/doc/surya/surya_inheritance/surya_inheritance_RuleWhitelist.sol.png b/doc/schema/surya/surya_inheritance/surya_inheritance_RuleWhitelist.sol.png similarity index 100% rename from doc/surya/surya_inheritance/surya_inheritance_RuleWhitelist.sol.png rename to doc/schema/surya/surya_inheritance/surya_inheritance_RuleWhitelist.sol.png diff --git a/doc/schema/surya/surya_inheritance/surya_inheritance_RuleWhitelistCommon.sol.png b/doc/schema/surya/surya_inheritance/surya_inheritance_RuleWhitelistCommon.sol.png new file mode 100644 index 0000000000000000000000000000000000000000..b4891faa3b02e11dfbcd83a9d05aaecd350fd19b GIT binary patch literal 18570 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

GqCS8CM}bsHYnZbLoK48q4oe~ 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 Pn2%6b)6#R?u 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 literal 0 HcmV?d00001 diff --git a/doc/surya/surya_report/surya_report_IRuleEngineOperation.sol.md b/doc/schema/surya/surya_report/surya_report_ERC3643ComplianceModule.sol.md similarity index 52% rename from doc/surya/surya_report/surya_report_IRuleEngineOperation.sol.md rename to doc/schema/surya/surya_report/surya_report_ERC3643ComplianceModule.sol.md index eb41011..842c492 100644 --- a/doc/surya/surya_report/surya_report_IRuleEngineOperation.sol.md +++ b/doc/schema/surya/surya_report/surya_report_ERC3643ComplianceModule.sol.md @@ -5,7 +5,7 @@ | File Name | SHA-1 Hash | |-------------|--------------| -| ./interfaces/IRuleEngineOperation.sol | 4bb16cd4f36ba8ce8133f2313fcded0796fc67b3 | +| ./modules/ERC3643ComplianceModule.sol | 5d853a580045cc1107f0b4b00b012dd7a088b4be | ### Contracts Description Table @@ -15,11 +15,14 @@ |:----------:|:-------------------:|:----------------:|:----------------:|:---------------:| | └ | **Function Name** | **Visibility** | **Mutability** | **Modifiers** | |||||| -| **IRuleEngineOperation** | Interface | ||| -| └ | setRulesOperation | External ❗️ | 🛑 |NO❗️ | -| └ | rulesCountOperation | External ❗️ | |NO❗️ | -| └ | ruleOperation | External ❗️ | |NO❗️ | -| └ | rulesOperation | External ❗️ | |NO❗️ | +| **ERC3643ComplianceModule** | Implementation | IERC3643Compliance, AccessControl ||| +| └ | bindToken | Public ❗️ | 🛑 | onlyRole | +| └ | unbindToken | Public ❗️ | 🛑 | onlyRole | +| └ | isTokenBound | Public ❗️ | |NO❗️ | +| └ | getTokenBound | External ❗️ | |NO❗️ | +| └ | getTokenBounds | External ❗️ | |NO❗️ | +| └ | _unbindToken | Internal 🔒 | 🛑 | | +| └ | _bindToken | Internal 🔒 | 🛑 | | ### Legend diff --git a/doc/schema/surya/surya_report/surya_report_IERC3643Compliance.sol.md b/doc/schema/surya/surya_report/surya_report_IERC3643Compliance.sol.md new file mode 100644 index 0000000..adcb8be --- /dev/null +++ b/doc/schema/surya/surya_report/surya_report_IERC3643Compliance.sol.md @@ -0,0 +1,33 @@ +## Sūrya's Description Report + +### Files Description Table + + +| File Name | SHA-1 Hash | +|-------------|--------------| +| ./interfaces/IERC3643Compliance.sol | f636595955dd26c915cfd870f1b9c1a1c653cd19 | + + +### Contracts Description Table + + +| Contract | Type | Bases | | | +|:----------:|:-------------------:|:----------------:|:----------------:|:---------------:| +| └ | **Function Name** | **Visibility** | **Mutability** | **Modifiers** | +|||||| +| **IERC3643Compliance** | Interface | IERC3643ComplianceRead, IERC3643IComplianceContract ||| +| └ | bindToken | External ❗️ | 🛑 |NO❗️ | +| └ | unbindToken | External ❗️ | 🛑 |NO❗️ | +| └ | isTokenBound | External ❗️ | |NO❗️ | +| └ | getTokenBound | External ❗️ | |NO❗️ | +| └ | getTokenBounds | External ❗️ | |NO❗️ | +| └ | created | External ❗️ | 🛑 |NO❗️ | +| └ | destroyed | External ❗️ | 🛑 |NO❗️ | + + +### Legend + +| Symbol | Meaning | +|:--------:|-----------| +| 🛑 | Function can modify state | +| 💵 | Function is payable | diff --git a/doc/surya/surya_report/surya_report_IRuleValidation.sol.md b/doc/schema/surya/surya_report/surya_report_IRule.sol.md similarity index 83% rename from doc/surya/surya_report/surya_report_IRuleValidation.sol.md rename to doc/schema/surya/surya_report/surya_report_IRule.sol.md index cfbc4c3..ea64fff 100644 --- a/doc/surya/surya_report/surya_report_IRuleValidation.sol.md +++ b/doc/schema/surya/surya_report/surya_report_IRule.sol.md @@ -5,7 +5,7 @@ | File Name | SHA-1 Hash | |-------------|--------------| -| ./interfaces/IRuleValidation.sol | cb3247e70bb4dca270e109cc1f961436165e657b | +| ./interfaces/IRule.sol | a76399a324e73846f5ba41cdc0b0277a27f76aa5 | ### Contracts Description Table @@ -15,7 +15,7 @@ |:----------:|:-------------------:|:----------------:|:----------------:|:---------------:| | └ | **Function Name** | **Visibility** | **Mutability** | **Modifiers** | |||||| -| **IRuleValidation** | Interface | IERC1404Wrapper ||| +| **IRule** | Interface | IRuleEngine ||| | └ | canReturnTransferRestrictionCode | External ❗️ | |NO❗️ | diff --git a/doc/schema/surya/surya_report/surya_report_IRulesManagementModule.sol.md b/doc/schema/surya/surya_report/surya_report_IRulesManagementModule.sol.md new file mode 100644 index 0000000..6adb3c6 --- /dev/null +++ b/doc/schema/surya/surya_report/surya_report_IRulesManagementModule.sol.md @@ -0,0 +1,34 @@ +## Sūrya's Description Report + +### Files Description Table + + +| File Name | SHA-1 Hash | +|-------------|--------------| +| ./interfaces/IRulesManagementModule.sol | 4756338d2051398ca7d89e941296909aea5dc58d | + + +### Contracts Description Table + + +| Contract | Type | Bases | | | +|:----------:|:-------------------:|:----------------:|:----------------:|:---------------:| +| └ | **Function Name** | **Visibility** | **Mutability** | **Modifiers** | +|||||| +| **IRulesManagementModule** | Interface | ||| +| └ | setRules | External ❗️ | 🛑 |NO❗️ | +| └ | rulesCount | External ❗️ | |NO❗️ | +| └ | rule | External ❗️ | |NO❗️ | +| └ | rules | External ❗️ | |NO❗️ | +| └ | clearRules | External ❗️ | 🛑 |NO❗️ | +| └ | addRule | External ❗️ | 🛑 |NO❗️ | +| └ | removeRule | External ❗️ | 🛑 |NO❗️ | +| └ | containsRule | External ❗️ | 🛑 |NO❗️ | + + +### Legend + +| Symbol | Meaning | +|:--------:|-----------| +| 🛑 | Function can modify state | +| 💵 | Function is payable | diff --git a/doc/surya/surya_report/surya_report_MetaTxModuleStandalone.sol.md b/doc/schema/surya/surya_report/surya_report_MetaTxModuleStandalone.sol.md similarity index 89% rename from doc/surya/surya_report/surya_report_MetaTxModuleStandalone.sol.md rename to doc/schema/surya/surya_report/surya_report_MetaTxModuleStandalone.sol.md index 96201b7..4079d57 100644 --- a/doc/surya/surya_report/surya_report_MetaTxModuleStandalone.sol.md +++ b/doc/schema/surya/surya_report/surya_report_MetaTxModuleStandalone.sol.md @@ -5,7 +5,7 @@ | File Name | SHA-1 Hash | |-------------|--------------| -| ./modules/MetaTxModuleStandalone.sol | 9d622167d731e7457db63bcb5f9b070e30d62131 | +| ./modules/MetaTxModuleStandalone.sol | 7f61b75c585854e696ec011ef699a3016282bf9f | ### Contracts Description Table diff --git a/doc/surya/surya_report/surya_report_RuleAddressList.sol.md b/doc/schema/surya/surya_report/surya_report_RuleAddressList.sol.md similarity index 92% rename from doc/surya/surya_report/surya_report_RuleAddressList.sol.md rename to doc/schema/surya/surya_report/surya_report_RuleAddressList.sol.md index 0479115..167da42 100644 --- a/doc/surya/surya_report/surya_report_RuleAddressList.sol.md +++ b/doc/schema/surya/surya_report/surya_report_RuleAddressList.sol.md @@ -5,7 +5,7 @@ | File Name | SHA-1 Hash | |-------------|--------------| -| ./rules/validation/abstract/RuleAddressList/RuleAddressList.sol | a5490babb4ea88b10fd8d5adfceafb4f14fae5e3 | +| ./mocks/rules/validation/abstract/RuleAddressList/RuleAddressList.sol | 75a87c2d2af981e5c3afefb70a9fbcc13e1ba26b | ### Contracts Description Table diff --git a/doc/surya/surya_report/surya_report_RuleAddressListInternal.sol.md b/doc/schema/surya/surya_report/surya_report_RuleAddressListInternal.sol.md similarity index 88% rename from doc/surya/surya_report/surya_report_RuleAddressListInternal.sol.md rename to doc/schema/surya/surya_report/surya_report_RuleAddressListInternal.sol.md index 6c302c5..abdf691 100644 --- a/doc/surya/surya_report/surya_report_RuleAddressListInternal.sol.md +++ b/doc/schema/surya/surya_report/surya_report_RuleAddressListInternal.sol.md @@ -5,7 +5,7 @@ | File Name | SHA-1 Hash | |-------------|--------------| -| ./rules/validation/abstract/RuleAddressList/RuleAddressListInternal.sol | bbe6d63aba425456591b7f2fa12e8aaa81c12bbb | +| ./mocks/rules/validation/abstract/RuleAddressList/RuleAddressListInternal.sol | bbe6d63aba425456591b7f2fa12e8aaa81c12bbb | ### Contracts Description Table diff --git a/doc/surya/surya_report/surya_report_RuleAddressListInvariantStorage.sol.md b/doc/schema/surya/surya_report/surya_report_RuleAddressListInvariantStorage.sol.md similarity index 81% rename from doc/surya/surya_report/surya_report_RuleAddressListInvariantStorage.sol.md rename to doc/schema/surya/surya_report/surya_report_RuleAddressListInvariantStorage.sol.md index bbf441e..893ba96 100644 --- a/doc/surya/surya_report/surya_report_RuleAddressListInvariantStorage.sol.md +++ b/doc/schema/surya/surya_report/surya_report_RuleAddressListInvariantStorage.sol.md @@ -5,7 +5,7 @@ | File Name | SHA-1 Hash | |-------------|--------------| -| ./rules/validation/abstract/RuleAddressList/invariantStorage/RuleAddressListInvariantStorage.sol | 992fb7e7916167eae37d614c6fc47413afebcd82 | +| ./mocks/rules/validation/abstract/RuleAddressList/invariantStorage/RuleAddressListInvariantStorage.sol | 992fb7e7916167eae37d614c6fc47413afebcd82 | ### Contracts Description Table diff --git a/doc/surya/surya_report/surya_report_RuleBlacklistInvariantStorage.sol.md b/doc/schema/surya/surya_report/surya_report_RuleBlacklistInvariantStorage.sol.md similarity index 82% rename from doc/surya/surya_report/surya_report_RuleBlacklistInvariantStorage.sol.md rename to doc/schema/surya/surya_report/surya_report_RuleBlacklistInvariantStorage.sol.md index 641e318..6a7e411 100644 --- a/doc/surya/surya_report/surya_report_RuleBlacklistInvariantStorage.sol.md +++ b/doc/schema/surya/surya_report/surya_report_RuleBlacklistInvariantStorage.sol.md @@ -5,7 +5,7 @@ | File Name | SHA-1 Hash | |-------------|--------------| -| ./rules/validation/abstract/RuleAddressList/invariantStorage/RuleBlacklistInvariantStorage.sol | ba066cb426060eaca152daa5bb489970c2f9c539 | +| ./mocks/rules/validation/abstract/RuleAddressList/invariantStorage/RuleBlacklistInvariantStorage.sol | 463cf8b5eda9e536e9a1e541b193c2856d6b26af | ### Contracts Description Table diff --git a/doc/surya/surya_report/surya_report_RuleCommonInvariantStorage.sol.md b/doc/schema/surya/surya_report/surya_report_RuleCommonInvariantStorage.sol.md similarity index 85% rename from doc/surya/surya_report/surya_report_RuleCommonInvariantStorage.sol.md rename to doc/schema/surya/surya_report/surya_report_RuleCommonInvariantStorage.sol.md index df9fbc9..63a7037 100644 --- a/doc/surya/surya_report/surya_report_RuleCommonInvariantStorage.sol.md +++ b/doc/schema/surya/surya_report/surya_report_RuleCommonInvariantStorage.sol.md @@ -5,7 +5,7 @@ | File Name | SHA-1 Hash | |-------------|--------------| -| ./rules/validation/abstract/RuleCommonInvariantStorage.sol | bd2bf75999a7920aa4d6be476762d747efa15515 | +| ./mocks/rules/validation/abstract/RuleCommonInvariantStorage.sol | bd2bf75999a7920aa4d6be476762d747efa15515 | ### Contracts Description Table diff --git a/doc/surya/surya_report/surya_report_RuleSanctionList.sol.md b/doc/schema/surya/surya_report/surya_report_RuleConditionalTransferLight.sol.md similarity index 53% rename from doc/surya/surya_report/surya_report_RuleSanctionList.sol.md rename to doc/schema/surya/surya_report/surya_report_RuleConditionalTransferLight.sol.md index 0140d39..2113835 100644 --- a/doc/surya/surya_report/surya_report_RuleSanctionList.sol.md +++ b/doc/schema/surya/surya_report/surya_report_RuleConditionalTransferLight.sol.md @@ -5,7 +5,7 @@ | File Name | SHA-1 Hash | |-------------|--------------| -| ./rules/validation/RuleSanctionList.sol | 9d4f8926804ab2569d4f0e26e73c348c831fee3f | +| ./mocks/rules/operation/RuleConditionalTransferLight.sol | 563d9f2f21be53c588c4605313e344de5b74bf36 | ### Contracts Description Table @@ -15,20 +15,18 @@ |:----------:|:-------------------:|:----------------:|:----------------:|:---------------:| | └ | **Function Name** | **Visibility** | **Mutability** | **Modifiers** | |||||| -| **SanctionsList** | Interface | ||| -| └ | isSanctioned | External ❗️ | |NO❗️ | -|||||| -| **RuleSanctionList** | Implementation | AccessControl, MetaTxModuleStandalone, RuleValidateTransfer, RuleSanctionlistInvariantStorage ||| -| └ | | Public ❗️ | 🛑 | MetaTxModuleStandalone | -| └ | setSanctionListOracle | Public ❗️ | 🛑 | onlyRole | +| **RuleConditionalTransferLight** | Implementation | AccessControl, RuleConditionalTransferLightInvariantStorage, IRule ||| +| └ | | Public ❗️ | 🛑 |NO❗️ | +| └ | approveTransfer | Public ❗️ | 🛑 | onlyRole | +| └ | approvedCount | Public ❗️ | |NO❗️ | +| └ | transferred | Public ❗️ | 🛑 |NO❗️ | +| └ | transferred | Public ❗️ | 🛑 |NO❗️ | | └ | detectTransferRestriction | Public ❗️ | |NO❗️ | +| └ | detectTransferRestrictionFrom | Public ❗️ | |NO❗️ | | └ | canReturnTransferRestrictionCode | External ❗️ | |NO❗️ | | └ | messageForTransferRestriction | External ❗️ | |NO❗️ | -| └ | hasRole | Public ❗️ | |NO❗️ | -| └ | _setSanctionListOracle | Internal 🔒 | 🛑 | | -| └ | _msgSender | Internal 🔒 | | | -| └ | _msgData | Internal 🔒 | | | -| └ | _contextSuffixLength | Internal 🔒 | | | +| └ | canTransfer | Public ❗️ | |NO❗️ | +| └ | canTransferFrom | Public ❗️ | |NO❗️ | ### Legend diff --git a/doc/surya/surya_report/surya_report_RuleConditionalTransferInvariantStorage.sol.md b/doc/schema/surya/surya_report/surya_report_RuleConditionalTransferLightInvariantStorage.sol.md similarity index 72% rename from doc/surya/surya_report/surya_report_RuleConditionalTransferInvariantStorage.sol.md rename to doc/schema/surya/surya_report/surya_report_RuleConditionalTransferLightInvariantStorage.sol.md index 944844d..7f453ad 100644 --- a/doc/surya/surya_report/surya_report_RuleConditionalTransferInvariantStorage.sol.md +++ b/doc/schema/surya/surya_report/surya_report_RuleConditionalTransferLightInvariantStorage.sol.md @@ -5,7 +5,7 @@ | File Name | SHA-1 Hash | |-------------|--------------| -| ./rules/operation/abstract/RuleConditionalTransferInvariantStorage.sol | 71ed84800ef21f7f0964ed6dfa744eb444cded98 | +| ./mocks/rules/operation/abstract/RuleConditionalTransferLightInvariantStorage.sol | 2a0e5c5a7a089bf50dc8de38b4a5641a77a58597 | ### Contracts Description Table @@ -15,7 +15,7 @@ |:----------:|:-------------------:|:----------------:|:----------------:|:---------------:| | └ | **Function Name** | **Visibility** | **Mutability** | **Modifiers** | |||||| -| **RuleConditionalTransferInvariantStorage** | Implementation | RuleCommonInvariantStorage ||| +| **RuleConditionalTransferLightInvariantStorage** | Implementation | RuleCommonInvariantStorage ||| ### Legend diff --git a/doc/surya/surya_report/surya_report_RuleWhitelistWrapper.sol.md b/doc/schema/surya/surya_report/surya_report_RuleEngine.sol.md similarity index 71% rename from doc/surya/surya_report/surya_report_RuleWhitelistWrapper.sol.md rename to doc/schema/surya/surya_report/surya_report_RuleEngine.sol.md index 69ab3b3..f4f2d8f 100644 --- a/doc/surya/surya_report/surya_report_RuleWhitelistWrapper.sol.md +++ b/doc/schema/surya/surya_report/surya_report_RuleEngine.sol.md @@ -5,7 +5,7 @@ | File Name | SHA-1 Hash | |-------------|--------------| -| ./rules/validation/RuleWhitelistWrapper.sol | b9e309a42544f758b4cfbe05e1739e2a828ce237 | +| ./RuleEngine.sol | b4007ac9e9f570b4e102d2f29ec30efdba328e37 | ### Contracts Description Table @@ -15,10 +15,8 @@ |:----------:|:-------------------:|:----------------:|:----------------:|:---------------:| | └ | **Function Name** | **Visibility** | **Mutability** | **Modifiers** | |||||| -| **RuleWhitelistWrapper** | Implementation | RuleEngineValidationCommon, MetaTxModuleStandalone, RuleWhitelistCommon ||| +| **RuleEngine** | Implementation | MetaTxModuleStandalone, RuleEngineBase ||| | └ | | Public ❗️ | 🛑 | MetaTxModuleStandalone | -| └ | detectTransferRestriction | Public ❗️ | |NO❗️ | -| └ | hasRole | Public ❗️ | |NO❗️ | | └ | _msgSender | Internal 🔒 | | | | └ | _msgData | Internal 🔒 | | | | └ | _contextSuffixLength | Internal 🔒 | | | diff --git a/doc/schema/surya/surya_report/surya_report_RuleEngineBase.sol.md b/doc/schema/surya/surya_report/surya_report_RuleEngineBase.sol.md new file mode 100644 index 0000000..cad5a96 --- /dev/null +++ b/doc/schema/surya/surya_report/surya_report_RuleEngineBase.sol.md @@ -0,0 +1,36 @@ +## Sūrya's Description Report + +### Files Description Table + + +| File Name | SHA-1 Hash | +|-------------|--------------| +| ./RuleEngineBase.sol | 214152435cd5b2ba8317fb4d2c163137b7ab0f6f | + + +### Contracts Description Table + + +| Contract | Type | Bases | | | +|:----------:|:-------------------:|:----------------:|:----------------:|:---------------:| +| └ | **Function Name** | **Visibility** | **Mutability** | **Modifiers** | +|||||| +| **RuleEngineBase** | Implementation | VersionModule, RulesManagementModule, ERC3643ComplianceModule, RuleEngineInvariantStorage, IRuleEngine ||| +| └ | transferred | Public ❗️ | 🛑 | onlyBoundToken | +| └ | transferred | Public ❗️ | 🛑 | onlyBoundToken | +| └ | created | Public ❗️ | 🛑 | onlyBoundToken | +| └ | destroyed | Public ❗️ | 🛑 | onlyBoundToken | +| └ | detectTransferRestriction | Public ❗️ | |NO❗️ | +| └ | detectTransferRestrictionFrom | Public ❗️ | |NO❗️ | +| └ | canTransfer | Public ❗️ | |NO❗️ | +| └ | canTransferFrom | Public ❗️ | |NO❗️ | +| └ | messageForTransferRestriction | Public ❗️ | |NO❗️ | +| └ | hasRole | Public ❗️ | |NO❗️ | + + +### Legend + +| Symbol | Meaning | +|:--------:|-----------| +| 🛑 | Function can modify state | +| 💵 | Function is payable | diff --git a/doc/surya/surya_report/surya_report_RuleEngineInvariantStorage.sol.md b/doc/schema/surya/surya_report/surya_report_RuleEngineInvariantStorage.sol.md similarity index 87% rename from doc/surya/surya_report/surya_report_RuleEngineInvariantStorage.sol.md rename to doc/schema/surya/surya_report/surya_report_RuleEngineInvariantStorage.sol.md index aca78d7..49b0db0 100644 --- a/doc/surya/surya_report/surya_report_RuleEngineInvariantStorage.sol.md +++ b/doc/schema/surya/surya_report/surya_report_RuleEngineInvariantStorage.sol.md @@ -5,7 +5,7 @@ | File Name | SHA-1 Hash | |-------------|--------------| -| ./modules/RuleEngineInvariantStorage.sol | ae8100bce2e00f37166e10c998d9747a0bdf5ef4 | +| ./modules/library/RuleEngineInvariantStorage.sol | 35d62b0de74e4fbefff915f07d7dc3abe3777e38 | ### Contracts Description Table diff --git a/doc/surya/surya_report/surya_report_RuleBlacklist.sol.md b/doc/schema/surya/surya_report/surya_report_RuleOperationRevert.sol.md similarity index 62% rename from doc/surya/surya_report/surya_report_RuleBlacklist.sol.md rename to doc/schema/surya/surya_report/surya_report_RuleOperationRevert.sol.md index 0ae2161..4bf805c 100644 --- a/doc/surya/surya_report/surya_report_RuleBlacklist.sol.md +++ b/doc/schema/surya/surya_report/surya_report_RuleOperationRevert.sol.md @@ -5,7 +5,7 @@ | File Name | SHA-1 Hash | |-------------|--------------| -| ./rules/validation/RuleBlacklist.sol | bc23ad3743afc27239d05d7787f6f48840373e20 | +| ./mocks/rules/operation/RuleOperationRevert.sol | 1d4329d1dce3a0b4c864ebd2991ef4717da067b6 | ### Contracts Description Table @@ -15,11 +15,15 @@ |:----------:|:-------------------:|:----------------:|:----------------:|:---------------:| | └ | **Function Name** | **Visibility** | **Mutability** | **Modifiers** | |||||| -| **RuleBlacklist** | Implementation | RuleValidateTransfer, RuleAddressList, RuleBlacklistInvariantStorage ||| -| └ | | Public ❗️ | 🛑 | RuleAddressList | +| **RuleOperationRevert** | Implementation | AccessControl, IRule, RuleCommonInvariantStorage ||| +| └ | transferred | Public ❗️ | |NO❗️ | +| └ | transferred | Public ❗️ | |NO❗️ | | └ | detectTransferRestriction | Public ❗️ | |NO❗️ | +| └ | detectTransferRestrictionFrom | Public ❗️ | |NO❗️ | | └ | canReturnTransferRestrictionCode | External ❗️ | |NO❗️ | | └ | messageForTransferRestriction | External ❗️ | |NO❗️ | +| └ | canTransfer | Public ❗️ | |NO❗️ | +| └ | canTransferFrom | Public ❗️ | |NO❗️ | ### Legend diff --git a/doc/surya/surya_report/surya_report_RuleWhitelist.sol.md b/doc/schema/surya/surya_report/surya_report_RuleWhitelist.sol.md similarity index 68% rename from doc/surya/surya_report/surya_report_RuleWhitelist.sol.md rename to doc/schema/surya/surya_report/surya_report_RuleWhitelist.sol.md index 24eadcc..0ec9c8f 100644 --- a/doc/surya/surya_report/surya_report_RuleWhitelist.sol.md +++ b/doc/schema/surya/surya_report/surya_report_RuleWhitelist.sol.md @@ -5,7 +5,7 @@ | File Name | SHA-1 Hash | |-------------|--------------| -| ./rules/validation/RuleWhitelist.sol | c2fba89995e430d0f0965b24bf853772f3a51184 | +| ./mocks/rules/validation/RuleWhitelist.sol | 785ab1e469e09646edb82e842b47237a3c60eab1 | ### Contracts Description Table @@ -17,7 +17,12 @@ |||||| | **RuleWhitelist** | Implementation | RuleAddressList, RuleWhitelistCommon ||| | └ | | Public ❗️ | 🛑 | RuleAddressList | +| └ | canTransfer | Public ❗️ | |NO❗️ | +| └ | canTransferFrom | Public ❗️ | |NO❗️ | | └ | detectTransferRestriction | Public ❗️ | |NO❗️ | +| └ | detectTransferRestrictionFrom | Public ❗️ | |NO❗️ | +| └ | transferred | Public ❗️ | |NO❗️ | +| └ | transferred | Public ❗️ | |NO❗️ | ### Legend diff --git a/doc/surya/surya_report/surya_report_RuleWhitelistCommon.sol.md b/doc/schema/surya/surya_report/surya_report_RuleWhitelistCommon.sol.md similarity index 78% rename from doc/surya/surya_report/surya_report_RuleWhitelistCommon.sol.md rename to doc/schema/surya/surya_report/surya_report_RuleWhitelistCommon.sol.md index 276b8be..88f009c 100644 --- a/doc/surya/surya_report/surya_report_RuleWhitelistCommon.sol.md +++ b/doc/schema/surya/surya_report/surya_report_RuleWhitelistCommon.sol.md @@ -5,7 +5,7 @@ | File Name | SHA-1 Hash | |-------------|--------------| -| ./rules/validation/abstract/RuleWhitelistCommon.sol | 38cb316c3cba0fc3945d7b4ba1069ae4f3480bb0 | +| ./mocks/rules/validation/abstract/RuleWhitelistCommon.sol | acf9b06014d115beee2cad0cb0ee8485d97e7cb0 | ### Contracts Description Table @@ -15,7 +15,7 @@ |:----------:|:-------------------:|:----------------:|:----------------:|:---------------:| | └ | **Function Name** | **Visibility** | **Mutability** | **Modifiers** | |||||| -| **RuleWhitelistCommon** | Implementation | RuleValidateTransfer, RuleWhitelistInvariantStorage ||| +| **RuleWhitelistCommon** | Implementation | RuleWhitelistInvariantStorage, IRule ||| | └ | canReturnTransferRestrictionCode | External ❗️ | |NO❗️ | | └ | messageForTransferRestriction | External ❗️ | |NO❗️ | diff --git a/doc/surya/surya_report/surya_report_RuleWhitelistInvariantStorage.sol.md b/doc/schema/surya/surya_report/surya_report_RuleWhitelistInvariantStorage.sol.md similarity index 82% rename from doc/surya/surya_report/surya_report_RuleWhitelistInvariantStorage.sol.md rename to doc/schema/surya/surya_report/surya_report_RuleWhitelistInvariantStorage.sol.md index 8591a82..3ecf212 100644 --- a/doc/surya/surya_report/surya_report_RuleWhitelistInvariantStorage.sol.md +++ b/doc/schema/surya/surya_report/surya_report_RuleWhitelistInvariantStorage.sol.md @@ -5,7 +5,7 @@ | File Name | SHA-1 Hash | |-------------|--------------| -| ./rules/validation/abstract/RuleAddressList/invariantStorage/RuleWhitelistInvariantStorage.sol | a49ed4b2f4e846464b80004e3d79c797320b6e5b | +| ./mocks/rules/validation/abstract/RuleAddressList/invariantStorage/RuleWhitelistInvariantStorage.sol | 2d91bd8748d0f3b586193da37ce6f9aec5dd089c | ### Contracts Description Table diff --git a/doc/schema/surya/surya_report/surya_report_RulesManagementModule.sol.md b/doc/schema/surya/surya_report/surya_report_RulesManagementModule.sol.md new file mode 100644 index 0000000..222e5d4 --- /dev/null +++ b/doc/schema/surya/surya_report/surya_report_RulesManagementModule.sol.md @@ -0,0 +1,39 @@ +## Sūrya's Description Report + +### Files Description Table + + +| File Name | SHA-1 Hash | +|-------------|--------------| +| ./modules/RulesManagementModule.sol | 01d405489c52d6b0e2feac077bfe0b4a95078119 | + + +### Contracts Description Table + + +| Contract | Type | Bases | | | +|:----------:|:-------------------:|:----------------:|:----------------:|:---------------:| +| └ | **Function Name** | **Visibility** | **Mutability** | **Modifiers** | +|||||| +| **RulesManagementModule** | Implementation | AccessControl, RulesManagementModuleInvariantStorage, IRulesManagementModule ||| +| └ | setRules | Public ❗️ | 🛑 | onlyRole | +| └ | clearRules | Public ❗️ | 🛑 | onlyRole | +| └ | addRule | Public ❗️ | 🛑 | onlyRole | +| └ | removeRule | Public ❗️ | 🛑 | onlyRole | +| └ | rulesCount | Public ❗️ | |NO❗️ | +| └ | containsRule | Public ❗️ | |NO❗️ | +| └ | rule | Public ❗️ | |NO❗️ | +| └ | rules | Public ❗️ | |NO❗️ | +| └ | _clearRules | Internal 🔒 | 🛑 | | +| └ | _removeRule | Internal 🔒 | 🛑 | | +| └ | _checkRule | Internal 🔒 | | | +| └ | _transferred | Internal 🔒 | 🛑 | | +| └ | _transferred | Internal 🔒 | 🛑 | | + + +### Legend + +| Symbol | Meaning | +|:--------:|-----------| +| 🛑 | Function can modify state | +| 💵 | Function is payable | diff --git a/doc/surya/surya_report/surya_report_IRuleOperation.sol.md b/doc/schema/surya/surya_report/surya_report_RulesManagementModuleInvariantStorage.sol.md similarity index 76% rename from doc/surya/surya_report/surya_report_IRuleOperation.sol.md rename to doc/schema/surya/surya_report/surya_report_RulesManagementModuleInvariantStorage.sol.md index e6dfbb1..3f6ddf5 100644 --- a/doc/surya/surya_report/surya_report_IRuleOperation.sol.md +++ b/doc/schema/surya/surya_report/surya_report_RulesManagementModuleInvariantStorage.sol.md @@ -5,7 +5,7 @@ | File Name | SHA-1 Hash | |-------------|--------------| -| ./interfaces/IRuleOperation.sol | 0284e295bdd4e46766290c62aa04841ffba6e056 | +| ./modules/library/RulesManagementModuleInvariantStorage.sol | c749738db35c43ee0591fd7236ee94f923669143 | ### Contracts Description Table @@ -15,8 +15,7 @@ |:----------:|:-------------------:|:----------------:|:----------------:|:---------------:| | └ | **Function Name** | **Visibility** | **Mutability** | **Modifiers** | |||||| -| **IRuleOperation** | Interface | ||| -| └ | operateOnTransfer | External ❗️ | 🛑 |NO❗️ | +| **RulesManagementModuleInvariantStorage** | Implementation | ||| ### Legend diff --git a/doc/surya/surya_report/surya_report_RuleSanctionListInvariantStorage.sol.md b/doc/schema/surya/surya_report/surya_report_VersionModule.sol.md similarity index 74% rename from doc/surya/surya_report/surya_report_RuleSanctionListInvariantStorage.sol.md rename to doc/schema/surya/surya_report/surya_report_VersionModule.sol.md index 5126a0e..5dad684 100644 --- a/doc/surya/surya_report/surya_report_RuleSanctionListInvariantStorage.sol.md +++ b/doc/schema/surya/surya_report/surya_report_VersionModule.sol.md @@ -5,7 +5,7 @@ | File Name | SHA-1 Hash | |-------------|--------------| -| ./rules/validation/abstract/RuleSanctionListInvariantStorage.sol | dfda2a2bbee5719c4820c0df23d78552fa08cc90 | +| ./modules/VersionModule.sol | c0afee6f633c5066a4436b6e61102b6cfbe0d5e9 | ### Contracts Description Table @@ -15,7 +15,8 @@ |:----------:|:-------------------:|:----------------:|:----------------:|:---------------:| | └ | **Function Name** | **Visibility** | **Mutability** | **Modifiers** | |||||| -| **RuleSanctionlistInvariantStorage** | Implementation | RuleCommonInvariantStorage ||| +| **VersionModule** | Implementation | IERC3643Base ||| +| └ | version | Public ❗️ | |NO❗️ | ### Legend diff --git a/doc/schema/vscode-uml/ERC3643ComplianceModuleUML.png b/doc/schema/vscode-uml/ERC3643ComplianceModuleUML.png new file mode 100644 index 0000000000000000000000000000000000000000..47061fee8ef219947a1af80f0803831e7ec24d20 GIT binary patch literal 136700 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 z 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%0D#148_ynE-FcxY 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 E1K!-GY5)KL literal 0 HcmV?d00001 diff --git a/doc/schema/vscode-uml/IERC1404ExtendUML.png b/doc/schema/vscode-uml/IERC1404ExtendUML.png new file mode 100644 index 0000000000000000000000000000000000000000..ff2570cf172201534ac315c2709eaa7a362a6527 GIT binary patch literal 46283 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 literal 0 HcmV?d00001 diff --git a/doc/schema/vscode-uml/IERC1404UML.png b/doc/schema/vscode-uml/IERC1404UML.png new file mode 100644 index 0000000000000000000000000000000000000000..aec3f3b929b4f784579d0c49ce70c65f4cfc9f87 GIT binary patch literal 24573 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≠k)d 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 JE2J{Q{so0J09gP4 literal 0 HcmV?d00001 diff --git a/doc/schema/vscode-uml/IERC3643ComplianceReadUML.png b/doc/schema/vscode-uml/IERC3643ComplianceReadUML.png new file mode 100644 index 0000000000000000000000000000000000000000..d8d9f49bbd1e68c8ac721deb6be48bcaa3aabd3c GIT binary patch literal 17029 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 literal 0 HcmV?d00001 diff --git a/doc/schema/vscode-uml/IERC3643IComplianceContractUML.png b/doc/schema/vscode-uml/IERC3643IComplianceContractUML.png new file mode 100644 index 0000000000000000000000000000000000000000..8eb99936fcdbe41de78f6bbbc4a45fb06516f33a GIT binary patch literal 17220 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 literal 0 HcmV?d00001 diff --git a/doc/schema/vscode-uml/IRuleEngineUML.png b/doc/schema/vscode-uml/IRuleEngineUML.png new file mode 100644 index 0000000000000000000000000000000000000000..a72713e889fc0eb621335bd3375865d0af6ab0ea GIT binary patch literal 65716 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%0Dij7pH?R)p?GhKO3XJ%&B?mVkz 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 K1Y1QoGBS~>*@X%*=% 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 literal 0 HcmV?d00001 diff --git a/doc/schema/vscode-uml/RuleEngineUML.png b/doc/schema/vscode-uml/RuleEngineUML.png new file mode 100644 index 0000000000000000000000000000000000000000..e32c83d9337f7f6b1c39f080dfb8fd44dd57e272 GIT binary patch literal 66509 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 literal 0 HcmV?d00001 diff --git a/doc/schema/vscode-uml/RuleManagementModuleUML.png b/doc/schema/vscode-uml/RuleManagementModuleUML.png new file mode 100644 index 0000000000000000000000000000000000000000..7a66b046810bc03dfa3a640f166545babf4c7c28 GIT binary patch literal 183204 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

r>%gq}S+y@%3qCTH{V}R`JtPLv8LNd``Sxo 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

_60zht2P^^FbA2UR3EYB{}W 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 literal 30462 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 C^0jRM diff --git a/doc/security/accessControl/access-control-RuleSanctionList.drawio.png b/doc/security/accessControl/access-control-RuleSanctionList.drawio.png deleted file mode 100644 index 056590f123308b0e3421163d211144d6484a0622..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 24610 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 diff --git a/doc/security/accessControl/access-control-RuleWhitelist.png b/doc/security/accessControl/access-control-RuleWhitelist.png deleted file mode 100644 index 1c49edd65105bb87b29e18ff04d1aa9b852bcc61..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 41965 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⋙P)Fr$d?)eBnH@_@6y%FFz>_ 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 \ No newline at end of file +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 \ No newline at end of file diff --git a/doc/security/audits/tools/aderyn-report.md b/doc/security/audits/tools/aderyn-report.md new file mode 100644 index 0000000..0d42edc --- /dev/null +++ b/doc/security/audits/tools/aderyn-report.md @@ -0,0 +1,299 @@ +# Aderyn Analysis Report + +This report was generated by [Aderyn](https://github.com/Cyfrin/aderyn), a static analysis tool built by [Cyfrin](https://cyfrin.io), a blockchain security company. This report is not a substitute for manual audit or security review. It should not be relied upon for any purpose other than to assist in the identification of potential security vulnerabilities. +# Table of Contents + +- [Summary](#summary) + - [Files Summary](#files-summary) + - [Files Details](#files-details) + - [Issue Summary](#issue-summary) +- [Low Issues](#low-issues) + - [L-1: Centralization Risk](#l-1-centralization-risk) + - [L-2: Unspecific Solidity Pragma](#l-2-unspecific-solidity-pragma) + - [L-3: PUSH0 Opcode](#l-3-push0-opcode) + - [L-4: Loop Contains `require`/`revert`](#l-4-loop-contains-requirerevert) + + +# Summary + +## Files Summary + +| Key | Value | +| --- | --- | +| .sol Files | 11 | +| Total nSLOC | 389 | + + +## Files Details + +| Filepath | nSLOC | +| --- | --- | +| src/RuleEngine.sol | 49 | +| src/RuleEngineBase.sol | 113 | +| src/interfaces/IERC3643Compliance.sol | 13 | +| src/interfaces/IRule.sol | 7 | +| src/interfaces/IRulesManagementModule.sol | 16 | +| src/modules/ERC3643ComplianceModule.sol | 49 | +| src/modules/MetaTxModuleStandalone.sol | 6 | +| src/modules/RulesManagementModule.sol | 111 | +| src/modules/VersionModule.sol | 8 | +| src/modules/library/RuleEngineInvariantStorage.sol | 4 | +| src/modules/library/RulesManagementModuleInvariantStorage.sol | 13 | +| **Total** | **389** | + + +## Issue Summary + +| Category | No. of Issues | +| --- | --- | +| High | 0 | +| Low | 4 | + + +# Low Issues + +## L-1: Centralization Risk + +> Acknowledge +> Admin and the different operators are considered as trusted. + +Contracts have owners with privileged rights to perform admin tasks and need to be trusted to not perform malicious updates or drain funds. + +

8 Found Instances + + +- Found in src/modules/ERC3643ComplianceModule.sol [Line: 10](src/modules/ERC3643ComplianceModule.sol#L10) + + ```solidity + abstract contract ERC3643ComplianceModule is IERC3643Compliance, AccessControl { + ``` + +- Found in src/modules/ERC3643ComplianceModule.sol [Line: 39](src/modules/ERC3643ComplianceModule.sol#L39) + + ```solidity + function bindToken(address token) public override virtual onlyRole(COMPLIANCE_MANAGER_ROLE) { + ``` + +- Found in src/modules/ERC3643ComplianceModule.sol [Line: 44](src/modules/ERC3643ComplianceModule.sol#L44) + + ```solidity + function unbindToken(address token) public override virtual onlyRole(COMPLIANCE_MANAGER_ROLE) { + ``` + +- Found in src/modules/RulesManagementModule.sol [Line: 16](src/modules/RulesManagementModule.sol#L16) + + ```solidity + AccessControl, + ``` + +- Found in src/modules/RulesManagementModule.sol [Line: 38](src/modules/RulesManagementModule.sol#L38) + + ```solidity + ) public virtual override(IRulesManagementModule) onlyRole(RULE_ENGINE_OPERATOR_ROLE) { + ``` + +- Found in src/modules/RulesManagementModule.sol [Line: 56](src/modules/RulesManagementModule.sol#L56) + + ```solidity + function clearRules() public virtual override(IRulesManagementModule) onlyRole(RULE_ENGINE_OPERATOR_ROLE) { + ``` + +- Found in src/modules/RulesManagementModule.sol [Line: 65](src/modules/RulesManagementModule.sol#L65) + + ```solidity + ) public virtual override(IRulesManagementModule) onlyRole(RULE_ENGINE_OPERATOR_ROLE) { + ``` + +- Found in src/modules/RulesManagementModule.sol [Line: 76](src/modules/RulesManagementModule.sol#L76) + + ```solidity + ) public virtual override(IRulesManagementModule) onlyRole(RULE_ENGINE_OPERATOR_ROLE) { + ``` + +
+ + + +## L-2: Unspecific Solidity Pragma + +> One potential use of RuleEngine is to be used as a library, similar to OpenZeppelin library. +> +> In this sense, we use the same convention of OpenZeppelin which for the moment only imposes that the version is higher than 0.8.20: +> pragma solidity ^0.8.20; +> +> A fixed version is set in the config file (0.8.30). Users are free to use these or conduct their own research before switching to another. + +Consider using a specific version of Solidity in your contracts instead of a wide version. For example, instead of `pragma solidity ^0.8.0;`, use `pragma solidity 0.8.0;` + +
11 Found Instances + + +- Found in src/RuleEngine.sol [Line: 3](src/RuleEngine.sol#L3) + + ```solidity + pragma solidity ^0.8.20; + ``` + +- Found in src/RuleEngineBase.sol [Line: 3](src/RuleEngineBase.sol#L3) + + ```solidity + pragma solidity ^0.8.20; + ``` + +- Found in src/interfaces/IERC3643Compliance.sol [Line: 3](src/interfaces/IERC3643Compliance.sol#L3) + + ```solidity + pragma solidity ^0.8.20; + ``` + +- Found in src/interfaces/IRule.sol [Line: 3](src/interfaces/IRule.sol#L3) + + ```solidity + pragma solidity ^0.8.20; + ``` + +- Found in src/interfaces/IRulesManagementModule.sol [Line: 3](src/interfaces/IRulesManagementModule.sol#L3) + + ```solidity + pragma solidity ^0.8.20; + ``` + +- Found in src/modules/ERC3643ComplianceModule.sol [Line: 3](src/modules/ERC3643ComplianceModule.sol#L3) + + ```solidity + pragma solidity ^0.8.20; + ``` + +- Found in src/modules/MetaTxModuleStandalone.sol [Line: 3](src/modules/MetaTxModuleStandalone.sol#L3) + + ```solidity + pragma solidity ^0.8.20; + ``` + +- Found in src/modules/RulesManagementModule.sol [Line: 3](src/modules/RulesManagementModule.sol#L3) + + ```solidity + pragma solidity ^0.8.20; + ``` + +- Found in src/modules/VersionModule.sol [Line: 3](src/modules/VersionModule.sol#L3) + + ```solidity + pragma solidity ^0.8.20; + ``` + +- Found in src/modules/library/RuleEngineInvariantStorage.sol [Line: 3](src/modules/library/RuleEngineInvariantStorage.sol#L3) + + ```solidity + pragma solidity ^0.8.20; + ``` + +- Found in src/modules/library/RulesManagementModuleInvariantStorage.sol [Line: 3](src/modules/library/RulesManagementModuleInvariantStorage.sol#L3) + + ```solidity + pragma solidity ^0.8.20; + ``` + +
+ + + +## L-3: PUSH0 Opcode + +> Acknowledge + +Solc compiler version 0.8.20 switches the default target EVM version to Shanghai, which means that the generated bytecode will include PUSH0 opcodes. Be sure to select the appropriate EVM version in case you intend to deploy on a chain other than mainnet like L2 chains that may not support PUSH0, otherwise deployment of your contracts will fail. + +
11 Found Instances + + +- Found in src/RuleEngine.sol [Line: 3](src/RuleEngine.sol#L3) + + ```solidity + pragma solidity ^0.8.20; + ``` + +- Found in src/RuleEngineBase.sol [Line: 3](src/RuleEngineBase.sol#L3) + + ```solidity + pragma solidity ^0.8.20; + ``` + +- Found in src/interfaces/IERC3643Compliance.sol [Line: 3](src/interfaces/IERC3643Compliance.sol#L3) + + ```solidity + pragma solidity ^0.8.20; + ``` + +- Found in src/interfaces/IRule.sol [Line: 3](src/interfaces/IRule.sol#L3) + + ```solidity + pragma solidity ^0.8.20; + ``` + +- Found in src/interfaces/IRulesManagementModule.sol [Line: 3](src/interfaces/IRulesManagementModule.sol#L3) + + ```solidity + pragma solidity ^0.8.20; + ``` + +- Found in src/modules/ERC3643ComplianceModule.sol [Line: 3](src/modules/ERC3643ComplianceModule.sol#L3) + + ```solidity + pragma solidity ^0.8.20; + ``` + +- Found in src/modules/MetaTxModuleStandalone.sol [Line: 3](src/modules/MetaTxModuleStandalone.sol#L3) + + ```solidity + pragma solidity ^0.8.20; + ``` + +- Found in src/modules/RulesManagementModule.sol [Line: 3](src/modules/RulesManagementModule.sol#L3) + + ```solidity + pragma solidity ^0.8.20; + ``` + +- Found in src/modules/VersionModule.sol [Line: 3](src/modules/VersionModule.sol#L3) + + ```solidity + pragma solidity ^0.8.20; + ``` + +- Found in src/modules/library/RuleEngineInvariantStorage.sol [Line: 3](src/modules/library/RuleEngineInvariantStorage.sol#L3) + + ```solidity + pragma solidity ^0.8.20; + ``` + +- Found in src/modules/library/RulesManagementModuleInvariantStorage.sol [Line: 3](src/modules/library/RulesManagementModuleInvariantStorage.sol#L3) + + ```solidity + pragma solidity ^0.8.20; + ``` + +
+ + + +## L-4: Loop Contains `require`/`revert` + +> Acknowledge +> The number + +Avoid `require` / `revert` statements in a loop because a single bad item can cause the whole transaction to fail. It's better to forgive on fail and return failed elements post processing of the loop + +
1 Found Instances + + +- Found in src/modules/RulesManagementModule.sol [Line: 45](src/modules/RulesManagementModule.sol#L45) + + ```solidity + for(uint256 i = 0; i < rules_.length; ++i){ + ``` + +
+ + + diff --git a/doc/security/audits/tools/slither-report.md b/doc/security/audits/tools/slither-report.md index fb021eb..d5eab1b 100644 --- a/doc/security/audits/tools/slither-report.md +++ b/doc/security/audits/tools/slither-report.md @@ -1,176 +1,36 @@ **THIS CHECKLIST IS NOT COMPLETE**. Use `--show-ignored-findings` to show all the results. Summary - - [incorrect-equality](#incorrect-equality) (4 results) (Medium) - - [calls-loop](#calls-loop) (8 results) (Low) - - [timestamp](#timestamp) (5 results) (Low) - - [costly-loop](#costly-loop) (2 results) (Informational) - - [dead-code](#dead-code) (5 results) (Informational) - - [solc-version](#solc-version) (1 results) (Informational) - - [naming-convention](#naming-convention) (50 results) (Informational) - - [similar-names](#similar-names) (7 results) (Informational) - - [unused-import](#unused-import) (1 results) (Informational) - - [var-read-using-this](#var-read-using-this) (1 results) (Optimization) -## incorrect-equality - -> Strict equality is required to check the request status - -Impact: Medium -Confidence: High - - [ ] ID-0 - [RuleConditionalTransfer.getRequestByStatus(RuleConditionalTransferInvariantStorage.STATUS)](src/rules/operation/RuleConditionalTransfer.sol#L177-L206) uses a dangerous strict equality: - - [transferRequests[IdToKey[i_scope_0]].status == _targetStatus](src/rules/operation/RuleConditionalTransfer.sol#L196) - -src/rules/operation/RuleConditionalTransfer.sol#L177-L206 - - - - [ ] ID-1 - [RuleConditionalTransfer._validateApproval(bytes32)](src/rules/operation/RuleConditionalTransfer.sol#L329-L349) uses a dangerous strict equality: - - [isTransferApproved = (transferRequests[key].status == STATUS.APPROVED) && (transferRequests[key].maxTime >= block.timestamp)](src/rules/operation/RuleConditionalTransfer.sol#L341-L343) - -src/rules/operation/RuleConditionalTransfer.sol#L329-L349 - - - - [ ] ID-2 - [RuleConditionalTransferOperator._checkRequestStatus(bytes32)](src/rules/operation/abstract/RuleConditionalTransferOperator.sol#L383-L388) uses a dangerous strict equality: - - [(transferRequests[key].status == STATUS.NONE) && (transferRequests[key].key == 0x0)](src/rules/operation/abstract/RuleConditionalTransferOperator.sol#L385-L387) - -src/rules/operation/abstract/RuleConditionalTransferOperator.sol#L383-L388 - - - - [ ] ID-3 - [RuleConditionalTransfer.getRequestByStatus(RuleConditionalTransferInvariantStorage.STATUS)](src/rules/operation/RuleConditionalTransfer.sol#L177-L206) uses a dangerous strict equality: - - [transferRequests[IdToKey[i]].status == _targetStatus](src/rules/operation/RuleConditionalTransfer.sol#L186) - -src/rules/operation/RuleConditionalTransfer.sol#L177-L206 - + - [calls-loop](#calls-loop) (4 results) (Low) + - [dead-code](#dead-code) (1 results) (Informational) ## calls-loop > Acknowledge +> Rule contracts are considered as trusted Impact: Low Confidence: Medium - - [ ] ID-4 -[RuleWhitelistWrapper.detectTransferRestriction(address,address,uint256)](src/rules/validation/RuleWhitelistWrapper.sol#L39-L74) has external calls inside a loop: [isListed = RuleAddressList(_rulesValidation[i]).addressIsListedBatch(targetAddress)](src/rules/validation/RuleWhitelistWrapper.sol#L53-L54) - -src/rules/validation/RuleWhitelistWrapper.sol#L39-L74 - - - - [ ] ID-5 -[RuleEngineValidation.detectTransferRestrictionValidation(address,address,uint256)](src/modules/RuleEngineValidation.sol#L29-L44) has external calls inside a loop: [restriction = IRuleValidation(_rulesValidation[i]).detectTransferRestriction(_from,_to,_amount)](src/modules/RuleEngineValidation.sol#L36-L37) - -src/modules/RuleEngineValidation.sol#L29-L44 - - - - [ ] ID-6 -[RuleEngine.messageForTransferRestriction(uint8)](src/RuleEngine.sol#L100-L128) has external calls inside a loop: [IRuleValidation(_rulesOperation[i_scope_0]).messageForTransferRestriction(_restrictionCode)](src/RuleEngine.sol#L122-L124) - -src/RuleEngine.sol#L100-L128 - - - - [ ] ID-7 -[RuleEngine.messageForTransferRestriction(uint8)](src/RuleEngine.sol#L100-L128) has external calls inside a loop: [IRuleValidation(_rulesValidation[i]).canReturnTransferRestrictionCode(_restrictionCode)](src/RuleEngine.sol#L107-L108) - -src/RuleEngine.sol#L100-L128 - - - - [ ] ID-8 -[RuleEngine.messageForTransferRestriction(uint8)](src/RuleEngine.sol#L100-L128) has external calls inside a loop: [IRuleValidation(_rulesValidation[i]).messageForTransferRestriction(_restrictionCode)](src/RuleEngine.sol#L110-L112) - -src/RuleEngine.sol#L100-L128 - - - - [ ] ID-9 -[RuleConditionalTransferOperator._approveRequest(RuleConditionalTransferInvariantStorage.TransferRequest,bool)](src/rules/operation/abstract/RuleConditionalTransferOperator.sol#L390-L449) has external calls inside a loop: [options.automaticTransfer.cmtat.allowance(transferRequest.keyElement.from,address(this)) >= transferRequest.keyElement.value](src/rules/operation/abstract/RuleConditionalTransferOperator.sol#L426-L429) - -src/rules/operation/abstract/RuleConditionalTransferOperator.sol#L390-L449 - - - - [ ] ID-10 -[RuleEngine.messageForTransferRestriction(uint8)](src/RuleEngine.sol#L100-L128) has external calls inside a loop: [IRuleValidation(_rulesOperation[i_scope_0]).canReturnTransferRestrictionCode(_restrictionCode)](src/RuleEngine.sol#L119-L120) - -src/RuleEngine.sol#L100-L128 - - - - [ ] ID-11 -[RuleEngine.detectTransferRestriction(address,address,uint256)](src/RuleEngine.sol#L50-L76) has external calls inside a loop: [restriction = IRuleValidation(_rulesOperation[i]).detectTransferRestriction(_from,_to,_amount)](src/RuleEngine.sol#L68-L69) - -src/RuleEngine.sol#L50-L76 - -## timestamp - -> With the Proof of Work, it was possible for a miner to modify the timestamp in a range of about 15 seconds -> -> With the Proof Of Stake, a new block is created every 12 seconds -> -> In all cases, we are not looking for such precision -> -> btw, ID-13 and ID-15 don't use timestamp in their comparison - -Impact: Low -Confidence: Medium - - - [ ] ID-12 - [RuleConditionalTransfer._validateApproval(bytes32)](src/rules/operation/RuleConditionalTransfer.sol#L329-L349) uses timestamp for comparisons - Dangerous comparisons: - - [automaticApprovalCondition = options.automaticApproval.isActivate && block.timestamp >= (transferRequests[key].askTime + options.automaticApproval.timeLimitBeforeAutomaticApproval)](src/rules/operation/RuleConditionalTransfer.sol#L334-L339) - - [isTransferApproved = (transferRequests[key].status == STATUS.APPROVED) && (transferRequests[key].maxTime >= block.timestamp)](src/rules/operation/RuleConditionalTransfer.sol#L341-L343) - - [automaticApprovalCondition || isTransferApproved](src/rules/operation/RuleConditionalTransfer.sol#L344) - -src/rules/operation/RuleConditionalTransfer.sol#L329-L349 - - - - [ ] ID-13 - [RuleConditionalTransferOperator._checkRequestStatus(bytes32)](src/rules/operation/abstract/RuleConditionalTransferOperator.sol#L383-L388) uses timestamp for comparisons - Dangerous comparisons: - - [(transferRequests[key].status == STATUS.NONE) && (transferRequests[key].key == 0x0)](src/rules/operation/abstract/RuleConditionalTransferOperator.sol#L385-L387) - -src/rules/operation/abstract/RuleConditionalTransferOperator.sol#L383-L388 - - - - [ ] ID-14 - [RuleConditionalTransfer.getRequestByStatus(RuleConditionalTransferInvariantStorage.STATUS)](src/rules/operation/RuleConditionalTransfer.sol#L177-L206) uses timestamp for comparisons - Dangerous comparisons: - - [transferRequests[IdToKey[i]].status == _targetStatus](src/rules/operation/RuleConditionalTransfer.sol#L186) - - [transferRequests[IdToKey[i_scope_0]].status == _targetStatus](src/rules/operation/RuleConditionalTransfer.sol#L196) - -src/rules/operation/RuleConditionalTransfer.sol#L177-L206 - - - - [ ] ID-15 - [RuleConditionalTransfer._cancelTransferRequest(uint256)](src/rules/operation/RuleConditionalTransfer.sol#L281-L298) uses timestamp for comparisons - Dangerous comparisons: - - [transferRequests[key].keyElement.from != _msgSender()](src/rules/operation/RuleConditionalTransfer.sol#L287) - -src/rules/operation/RuleConditionalTransfer.sol#L281-L298 + - [ ] ID-0 +[RuleEngineBase.detectTransferRestriction(address,address,uint256)](src/RuleEngineBase.sol#L76-L90) has external calls inside a loop: [restriction = IRule(rule(i)).detectTransferRestriction(from,to,value)](src/RuleEngineBase.sol#L83-L84) +src/RuleEngineBase.sol#L76-L90 - - [ ] ID-16 - [RuleConditionalTransferOperator._approveRequest(RuleConditionalTransferInvariantStorage.TransferRequest,bool)](src/rules/operation/abstract/RuleConditionalTransferOperator.sol#L390-L449) uses timestamp for comparisons - Dangerous comparisons: - - [transferRequest.status != STATUS.WAIT](src/rules/operation/abstract/RuleConditionalTransferOperator.sol#L395) - - [block.timestamp > (transferRequest.askTime + options.timeLimit.timeLimitToApprove)](src/rules/operation/abstract/RuleConditionalTransferOperator.sol#L401-L402) - - [options.automaticTransfer.cmtat.allowance(transferRequest.keyElement.from,address(this)) >= transferRequest.keyElement.value](src/rules/operation/abstract/RuleConditionalTransferOperator.sol#L426-L429) -src/rules/operation/abstract/RuleConditionalTransferOperator.sol#L390-L449 + - [ ] ID-1 +[RuleEngineBase.messageForTransferRestriction(uint8)](src/RuleEngineBase.sol#L116-L132) has external calls inside a loop: [IRule(rule(i)).canReturnTransferRestrictionCode(restrictionCode)](src/RuleEngineBase.sol#L123-L124) -## costly-loop +src/RuleEngineBase.sol#L116-L132 -> Acknowledge -Impact: Informational -Confidence: Medium - - [ ] ID-17 - [RuleConditionalTransfer.createTransferRequest(address,uint256)](src/rules/operation/RuleConditionalTransfer.sol#L79-L118) has costly operations inside a loop: - - [++ requestId](src/rules/operation/RuleConditionalTransfer.sol#L105) + - [ ] ID-2 +[RuleEngineBase.messageForTransferRestriction(uint8)](src/RuleEngineBase.sol#L116-L132) has external calls inside a loop: [IRule(rule(i)).messageForTransferRestriction(restrictionCode)](src/RuleEngineBase.sol#L126-L128) -src/rules/operation/RuleConditionalTransfer.sol#L79-L118 +src/RuleEngineBase.sol#L116-L132 - - [ ] ID-18 - [RuleConditionalTransferOperator._createTransferRequestWithApproval(RuleConditionalTransferInvariantStorage.TransferRequestKeyElement)](src/rules/operation/abstract/RuleConditionalTransferOperator.sol#L325-L370) has costly operations inside a loop: - - [++ requestId](src/rules/operation/abstract/RuleConditionalTransferOperator.sol#L354) + - [ ] ID-3 +[RuleEngineBase.detectTransferRestrictionFrom(address,address,address,uint256)](src/RuleEngineBase.sol#L95-L111) has external calls inside a loop: [restriction = IRule(rule(i)).detectTransferRestrictionFrom(spender,from,to,value)](src/RuleEngineBase.sol#L103-L104) -src/rules/operation/abstract/RuleConditionalTransferOperator.sol#L325-L370 +src/RuleEngineBase.sol#L95-L111 ## dead-code @@ -182,462 +42,8 @@ src/rules/operation/abstract/RuleConditionalTransferOperator.sol#L325-L370 Impact: Informational Confidence: Medium + - [ ] ID-4 +[RuleEngine._msgData()](src/RuleEngine.sol#L56-L64) is never used and should be removed - - [ ] ID-19 -[RuleSanctionList._msgData()](src/rules/validation/RuleSanctionList.sol#L145-L152) is never used and should be removed - -src/rules/validation/RuleSanctionList.sol#L145-L152 - - - - [ ] ID-20 -[RuleAddressList._msgData()](src/rules/validation/abstract/RuleAddressList/RuleAddressList.sol#L156-L163) is never used and should be removed - -src/rules/validation/abstract/RuleAddressList/RuleAddressList.sol#L156-L163 - - - - [ ] ID-21 -[RuleWhitelistWrapper._msgData()](src/rules/validation/RuleWhitelistWrapper.sol#L110-L117) is never used and should be removed - -src/rules/validation/RuleWhitelistWrapper.sol#L110-L117 - - - - [ ] ID-22 -[RuleConditionalTransfer._msgData()](src/rules/operation/RuleConditionalTransfer.sol#L370-L377) is never used and should be removed - -src/rules/operation/RuleConditionalTransfer.sol#L370-L377 - - - - [ ] ID-23 -[RuleEngine._msgData()](src/RuleEngine.sol#L182-L189) is never used and should be removed - -src/RuleEngine.sol#L182-L189 - -## solc-version - -> The version set in the config file is 0.8.27 - -Impact: Informational -Confidence: High - - - [ ] ID-24 - Version constraint ^0.8.20 contains known severe issues (https://solidity.readthedocs.io/en/latest/bugs.html) - - VerbatimInvalidDeduplication - - FullInlinerNonExpressionSplitArgumentEvaluationOrder - - MissingSideEffectsOnSelectorAccess. - It is used by: - - lib/CMTAT/contracts/interfaces/draft-IERC1404/draft-IERC1404.sol#3 - - lib/CMTAT/contracts/interfaces/draft-IERC1404/draft-IERC1404EnumCode.sol#3 - - lib/CMTAT/contracts/interfaces/draft-IERC1404/draft-IERC1404Wrapper.sol#3 - - lib/CMTAT/contracts/interfaces/engine/IRuleEngine.sol#3 - - lib/openzeppelin-contracts/contracts/access/AccessControl.sol#4 - - lib/openzeppelin-contracts/contracts/access/IAccessControl.sol#4 - - lib/openzeppelin-contracts/contracts/metatx/ERC2771Context.sol#4 - - lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol#4 - - lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Permit.sol#4 - - lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol#4 - - lib/openzeppelin-contracts/contracts/utils/Address.sol#4 - - lib/openzeppelin-contracts/contracts/utils/Context.sol#4 - - lib/openzeppelin-contracts/contracts/utils/introspection/ERC165.sol#4 - - lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol#4 - - src/RuleEngine.sol#3 - - src/interfaces/IRuleEngineOperation.sol#3 - - src/interfaces/IRuleEngineValidation.sol#3 - - src/interfaces/IRuleOperation.sol#3 - - src/interfaces/IRuleValidation.sol#3 - - src/modules/MetaTxModuleStandalone.sol#3 - - src/modules/RuleEngineInvariantStorage.sol#3 - - src/modules/RuleEngineOperation.sol#3 - - src/modules/RuleEngineValidation.sol#3 - - src/modules/RuleEngineValidationCommon.sol#3 - - src/modules/RuleInternal.sol#3 - - src/rules/operation/RuleConditionalTransfer.sol#3 - - src/rules/operation/abstract/RuleConditionalTransferInvariantStorage.sol#3 - - src/rules/operation/abstract/RuleConditionalTransferOperator.sol#3 - - src/rules/validation/RuleBlacklist.sol#3 - - src/rules/validation/RuleSanctionList.sol#3 - - src/rules/validation/RuleWhitelist.sol#3 - - src/rules/validation/RuleWhitelistWrapper.sol#3 - - src/rules/validation/abstract/RuleAddressList/RuleAddressList.sol#3 - - src/rules/validation/abstract/RuleAddressList/RuleAddressListInternal.sol#3 - - src/rules/validation/abstract/RuleAddressList/invariantStorage/RuleAddressListInvariantStorage.sol#3 - - src/rules/validation/abstract/RuleAddressList/invariantStorage/RuleBlacklistInvariantStorage.sol#3 - - src/rules/validation/abstract/RuleAddressList/invariantStorage/RuleWhitelistInvariantStorage.sol#3 - - src/rules/validation/abstract/RuleCommonInvariantStorage.sol#2 - - src/rules/validation/abstract/RuleSanctionListInvariantStorage.sol#3 - - src/rules/validation/abstract/RuleValidateTransfer.sol#3 - - src/rules/validation/abstract/RuleWhitelistCommon.sol#3 - -## naming-convention - -> Acknowledge - -Impact: Informational -Confidence: High - - - [ ] ID-25 -Event [RuleConditionalTransferInvariantStorage.transferDenied(bytes32,address,address,uint256,uint256)](src/rules/operation/abstract/RuleConditionalTransferInvariantStorage.sol#L124-L130) is not in CapWords - -src/rules/operation/abstract/RuleConditionalTransferInvariantStorage.sol#L124-L130 - - - - [ ] ID-26 -Parameter [RuleConditionalTransfer.operateOnTransfer(address,address,uint256)._amount](src/rules/operation/RuleConditionalTransfer.sol#L54) is not in mixedCase - -src/rules/operation/RuleConditionalTransfer.sol#L54 - - - - [ ] ID-27 -Parameter [RuleWhitelistCommon.canReturnTransferRestrictionCode(uint8)._restrictionCode](src/rules/validation/abstract/RuleWhitelistCommon.sol#L18) is not in mixedCase - -src/rules/validation/abstract/RuleWhitelistCommon.sol#L18 - - - - [ ] ID-28 -Parameter [RuleValidateTransfer.validateTransfer(address,address,uint256)._from](src/rules/validation/abstract/RuleValidateTransfer.sol#L16) is not in mixedCase - -src/rules/validation/abstract/RuleValidateTransfer.sol#L16 - - - - [ ] ID-29 -Parameter [RuleEngine.detectTransferRestriction(address,address,uint256)._amount](src/RuleEngine.sol#L53) is not in mixedCase - -src/RuleEngine.sol#L53 - - - - [ ] ID-30 -Event [RuleConditionalTransferInvariantStorage.transferReset(bytes32,address,address,uint256,uint256)](src/rules/operation/abstract/RuleConditionalTransferInvariantStorage.sol#L131-L137) is not in CapWords - -src/rules/operation/abstract/RuleConditionalTransferInvariantStorage.sol#L131-L137 - - - - [ ] ID-31 -Parameter [RuleEngineValidation.detectTransferRestrictionValidation(address,address,uint256)._amount](src/modules/RuleEngineValidation.sol#L32) is not in mixedCase - -src/modules/RuleEngineValidation.sol#L32 - - - - [ ] ID-32 -Parameter [RuleBlacklist.canReturnTransferRestrictionCode(uint8)._restrictionCode](src/rules/validation/RuleBlacklist.sol#L53) is not in mixedCase - -src/rules/validation/RuleBlacklist.sol#L53 - - - - [ ] ID-33 -Parameter [RuleWhitelistCommon.messageForTransferRestriction(uint8)._restrictionCode](src/rules/validation/abstract/RuleWhitelistCommon.sol#L31) is not in mixedCase - -src/rules/validation/abstract/RuleWhitelistCommon.sol#L31 - - - - [ ] ID-34 -Variable [RuleConditionalTransferOperator.IdToKey](src/rules/operation/abstract/RuleConditionalTransferOperator.sol#L21) is not in mixedCase - -src/rules/operation/abstract/RuleConditionalTransferOperator.sol#L21 - - - - [ ] ID-35 -Parameter [RuleSanctionList.detectTransferRestriction(address,address,uint256)._to](src/rules/validation/RuleSanctionList.sol#L59) is not in mixedCase - -src/rules/validation/RuleSanctionList.sol#L59 - - - - [ ] ID-36 -Parameter [RuleBlacklist.detectTransferRestriction(address,address,uint256)._to](src/rules/validation/RuleBlacklist.sol#L35) is not in mixedCase - -src/rules/validation/RuleBlacklist.sol#L35 - - - - [ ] ID-37 -Parameter [RuleEngine.detectTransferRestriction(address,address,uint256)._to](src/RuleEngine.sol#L52) is not in mixedCase - -src/RuleEngine.sol#L52 - - - - [ ] ID-38 -Parameter [RuleConditionalTransfer.detectTransferRestriction(address,address,uint256)._amount](src/rules/operation/RuleConditionalTransfer.sol#L217) is not in mixedCase - -src/rules/operation/RuleConditionalTransfer.sol#L217 - - - - [ ] ID-39 -Parameter [RuleConditionalTransfer.getRequestByStatus(RuleConditionalTransferInvariantStorage.STATUS)._targetStatus](src/rules/operation/RuleConditionalTransfer.sol#L178) is not in mixedCase - -src/rules/operation/RuleConditionalTransfer.sol#L178 - - - - [ ] ID-40 -Parameter [RuleEngine.detectTransferRestriction(address,address,uint256)._from](src/RuleEngine.sol#L51) is not in mixedCase - -src/RuleEngine.sol#L51 - - - - [ ] ID-41 -Parameter [RuleWhitelistWrapper.detectTransferRestriction(address,address,uint256)._to](src/rules/validation/RuleWhitelistWrapper.sol#L41) is not in mixedCase - -src/rules/validation/RuleWhitelistWrapper.sol#L41 - - - - [ ] ID-42 -Parameter [RuleConditionalTransfer.operateOnTransfer(address,address,uint256)._from](src/rules/operation/RuleConditionalTransfer.sol#L52) is not in mixedCase - -src/rules/operation/RuleConditionalTransfer.sol#L52 - - - - [ ] ID-43 -Parameter [RuleBlacklist.messageForTransferRestriction(uint8)._restrictionCode](src/rules/validation/RuleBlacklist.sol#L66) is not in mixedCase - -src/rules/validation/RuleBlacklist.sol#L66 - - - - [ ] ID-44 -Parameter [RuleEngine.messageForTransferRestriction(uint8)._restrictionCode](src/RuleEngine.sol#L101) is not in mixedCase - -src/RuleEngine.sol#L101 - - - - [ ] ID-45 -Parameter [RuleSanctionList.canReturnTransferRestrictionCode(uint8)._restrictionCode](src/rules/validation/RuleSanctionList.sol#L78) is not in mixedCase - -src/rules/validation/RuleSanctionList.sol#L78 - - - - [ ] ID-46 -Parameter [RuleAddressList.addressIsListed(address)._targetAddress](src/rules/validation/abstract/RuleAddressList/RuleAddressList.sol#L103) is not in mixedCase - -src/rules/validation/abstract/RuleAddressList/RuleAddressList.sol#L103 - - - - [ ] ID-47 -Parameter [RuleEngineValidation.validateTransferValidation(address,address,uint256)._to](src/modules/RuleEngineValidation.sol#L55) is not in mixedCase - -src/modules/RuleEngineValidation.sol#L55 - - - - [ ] ID-48 -Event [RuleConditionalTransferInvariantStorage.transferWaiting(bytes32,address,address,uint256,uint256)](src/rules/operation/abstract/RuleConditionalTransferInvariantStorage.sol#L110-L116) is not in CapWords - -src/rules/operation/abstract/RuleConditionalTransferInvariantStorage.sol#L110-L116 - - - - [ ] ID-49 -Struct [RuleConditionalTransferInvariantStorage.TIME_LIMIT](src/rules/operation/abstract/RuleConditionalTransferInvariantStorage.sol#L30-L35) is not in CapWords - -src/rules/operation/abstract/RuleConditionalTransferInvariantStorage.sol#L30-L35 - - - - [ ] ID-50 -Parameter [RuleConditionalTransfer.canReturnTransferRestrictionCode(uint8)._restrictionCode](src/rules/operation/RuleConditionalTransfer.sol#L237) is not in mixedCase - -src/rules/operation/RuleConditionalTransfer.sol#L237 - - - - [ ] ID-51 -Parameter [RuleEngine.validateTransfer(address,address,uint256)._amount](src/RuleEngine.sol#L88) is not in mixedCase - -src/RuleEngine.sol#L88 - - - - [ ] ID-52 -Struct [RuleConditionalTransferInvariantStorage.AUTOMATIC_APPROVAL](src/rules/operation/abstract/RuleConditionalTransferInvariantStorage.sol#L37-L44) is not in CapWords - -src/rules/operation/abstract/RuleConditionalTransferInvariantStorage.sol#L37-L44 - - - - [ ] ID-53 -Parameter [RuleEngineValidation.validateTransferValidation(address,address,uint256)._from](src/modules/RuleEngineValidation.sol#L54) is not in mixedCase - -src/modules/RuleEngineValidation.sol#L54 - - - - [ ] ID-54 -Parameter [RuleSanctionList.detectTransferRestriction(address,address,uint256)._from](src/rules/validation/RuleSanctionList.sol#L58) is not in mixedCase - -src/rules/validation/RuleSanctionList.sol#L58 - - - - [ ] ID-55 -Parameter [RuleConditionalTransfer.detectTransferRestriction(address,address,uint256)._to](src/rules/operation/RuleConditionalTransfer.sol#L216) is not in mixedCase - -src/rules/operation/RuleConditionalTransfer.sol#L216 - - - - [ ] ID-56 -Parameter [RuleEngineValidation.detectTransferRestrictionValidation(address,address,uint256)._from](src/modules/RuleEngineValidation.sol#L30) is not in mixedCase - -src/modules/RuleEngineValidation.sol#L30 - - - - [ ] ID-57 -Parameter [RuleEngineValidation.validateTransferValidation(address,address,uint256)._amount](src/modules/RuleEngineValidation.sol#L56) is not in mixedCase - -src/modules/RuleEngineValidation.sol#L56 - - - - [ ] ID-58 -Parameter [RuleWhitelistWrapper.detectTransferRestriction(address,address,uint256)._from](src/rules/validation/RuleWhitelistWrapper.sol#L40) is not in mixedCase - -src/rules/validation/RuleWhitelistWrapper.sol#L40 - - - - [ ] ID-59 -Parameter [RuleWhitelist.detectTransferRestriction(address,address,uint256)._to](src/rules/validation/RuleWhitelist.sol#L29) is not in mixedCase - -src/rules/validation/RuleWhitelist.sol#L29 - - - - [ ] ID-60 -Struct [RuleConditionalTransferInvariantStorage.AUTOMATIC_TRANSFER](src/rules/operation/abstract/RuleConditionalTransferInvariantStorage.sol#L18-L21) is not in CapWords - -src/rules/operation/abstract/RuleConditionalTransferInvariantStorage.sol#L18-L21 - - - - [ ] ID-61 -Parameter [RuleValidateTransfer.validateTransfer(address,address,uint256)._to](src/rules/validation/abstract/RuleValidateTransfer.sol#L17) is not in mixedCase - -src/rules/validation/abstract/RuleValidateTransfer.sol#L17 - - - - [ ] ID-62 -Event [RuleConditionalTransferInvariantStorage.transferProcessed(bytes32,address,address,uint256,uint256)](src/rules/operation/abstract/RuleConditionalTransferInvariantStorage.sol#L103-L109) is not in CapWords - -src/rules/operation/abstract/RuleConditionalTransferInvariantStorage.sol#L103-L109 - - - - [ ] ID-63 -Parameter [RuleWhitelist.detectTransferRestriction(address,address,uint256)._from](src/rules/validation/RuleWhitelist.sol#L28) is not in mixedCase - -src/rules/validation/RuleWhitelist.sol#L28 - - - - [ ] ID-64 -Parameter [RuleValidateTransfer.validateTransfer(address,address,uint256)._amount](src/rules/validation/abstract/RuleValidateTransfer.sol#L18) is not in mixedCase - -src/rules/validation/abstract/RuleValidateTransfer.sol#L18 - - - - [ ] ID-65 -Parameter [RuleEngine.validateTransfer(address,address,uint256)._from](src/RuleEngine.sol#L86) is not in mixedCase - -src/RuleEngine.sol#L86 - - - - [ ] ID-66 -Parameter [RuleConditionalTransfer.operateOnTransfer(address,address,uint256)._to](src/rules/operation/RuleConditionalTransfer.sol#L53) is not in mixedCase - -src/rules/operation/RuleConditionalTransfer.sol#L53 - - - - [ ] ID-67 -Parameter [RuleConditionalTransfer.detectTransferRestriction(address,address,uint256)._from](src/rules/operation/RuleConditionalTransfer.sol#L215) is not in mixedCase - -src/rules/operation/RuleConditionalTransfer.sol#L215 - - - - [ ] ID-68 -Parameter [RuleEngineValidation.detectTransferRestrictionValidation(address,address,uint256)._to](src/modules/RuleEngineValidation.sol#L31) is not in mixedCase - -src/modules/RuleEngineValidation.sol#L31 - - - - [ ] ID-69 -Parameter [RuleBlacklist.detectTransferRestriction(address,address,uint256)._from](src/rules/validation/RuleBlacklist.sol#L34) is not in mixedCase - -src/rules/validation/RuleBlacklist.sol#L34 - - - - [ ] ID-70 -Parameter [RuleConditionalTransfer.messageForTransferRestriction(uint8)._restrictionCode](src/rules/operation/RuleConditionalTransfer.sol#L248) is not in mixedCase - -src/rules/operation/RuleConditionalTransfer.sol#L248 - - - - [ ] ID-71 -Parameter [RuleSanctionList.messageForTransferRestriction(uint8)._restrictionCode](src/rules/validation/RuleSanctionList.sol#L91) is not in mixedCase - -src/rules/validation/RuleSanctionList.sol#L91 - - - - [ ] ID-72 -Parameter [RuleAddressList.addressIsListedBatch(address[])._targetAddresses](src/rules/validation/abstract/RuleAddressList/RuleAddressList.sol#L113) is not in mixedCase - -src/rules/validation/abstract/RuleAddressList/RuleAddressList.sol#L113 - - - - [ ] ID-73 -Parameter [RuleEngine.validateTransfer(address,address,uint256)._to](src/RuleEngine.sol#L87) is not in mixedCase - -src/RuleEngine.sol#L87 - - - - [ ] ID-74 -Event [RuleConditionalTransferInvariantStorage.transferApproved(bytes32,address,address,uint256,uint256)](src/rules/operation/abstract/RuleConditionalTransferInvariantStorage.sol#L117-L123) is not in CapWords - -src/rules/operation/abstract/RuleConditionalTransferInvariantStorage.sol#L117-L123 - -## similar-names - -> Acknowlege - -Impact: Informational -Confidence: Medium - - [ ] ID-75 -Variable [RuleSanctionlistInvariantStorage.CODE_ADDRESS_FROM_IS_SANCTIONED](src/rules/validation/abstract/RuleSanctionListInvariantStorage.sol#L27) is too similar to [RuleSanctionlistInvariantStorage.TEXT_ADDRESS_FROM_IS_SANCTIONED](src/rules/validation/abstract/RuleSanctionListInvariantStorage.sol#L20-L21) - -src/rules/validation/abstract/RuleSanctionListInvariantStorage.sol#L27 - - - - [ ] ID-76 -Variable [RuleConditionalTransferOperator._createTransferRequestWithApproval(RuleConditionalTransferInvariantStorage.TransferRequestKeyElement).keyElement_](src/rules/operation/abstract/RuleConditionalTransferOperator.sol#L326) is too similar to [RuleConditionalTransferOperator.createTransferRequestWithApprovalBatch(RuleConditionalTransferInvariantStorage.TransferRequestKeyElement[]).keyElements](src/rules/operation/abstract/RuleConditionalTransferOperator.sol#L245) - -src/rules/operation/abstract/RuleConditionalTransferOperator.sol#L326 - - - - [ ] ID-77 -Variable [RuleConditionalTransferOperator._createTransferRequestWithApproval(RuleConditionalTransferInvariantStorage.TransferRequestKeyElement).keyElement_](src/rules/operation/abstract/RuleConditionalTransferOperator.sol#L326) is too similar to [RuleConditionalTransferOperator.approveTransferRequestBatch(RuleConditionalTransferInvariantStorage.TransferRequestKeyElement[],uint256[],bool[]).keyElements](src/rules/operation/abstract/RuleConditionalTransferOperator.sol#L219) - -src/rules/operation/abstract/RuleConditionalTransferOperator.sol#L326 - - - - [ ] ID-78 -Variable [RuleConditionalTransferInvariantStorage.CODE_TRANSFER_REQUEST_NOT_APPROVED](src/rules/operation/abstract/RuleConditionalTransferInvariantStorage.sol#L87) is too similar to [RuleConditionalTransferInvariantStorage.TEXT_TRANSFER_REQUEST_NOT_APPROVED](src/rules/operation/abstract/RuleConditionalTransferInvariantStorage.sol#L83-L84) - -src/rules/operation/abstract/RuleConditionalTransferInvariantStorage.sol#L87 - - - - [ ] ID-79 -Variable [RuleBlacklistInvariantStorage.CODE_ADDRESS_FROM_IS_BLACKLISTED](src/rules/validation/abstract/RuleAddressList/invariantStorage/RuleBlacklistInvariantStorage.sol#L16) is too similar to [RuleBlacklistInvariantStorage.TEXT_ADDRESS_FROM_IS_BLACKLISTED](src/rules/validation/abstract/RuleAddressList/invariantStorage/RuleBlacklistInvariantStorage.sol#L9-L10) - -src/rules/validation/abstract/RuleAddressList/invariantStorage/RuleBlacklistInvariantStorage.sol#L16 - - - - [ ] ID-80 -Variable [RuleWhitelistInvariantStorage.CODE_ADDRESS_TO_NOT_WHITELISTED](src/rules/validation/abstract/RuleAddressList/invariantStorage/RuleWhitelistInvariantStorage.sol#L17) is too similar to [RuleWhitelistInvariantStorage.TEXT_ADDRESS_TO_NOT_WHITELISTED](src/rules/validation/abstract/RuleAddressList/invariantStorage/RuleWhitelistInvariantStorage.sol#L11-L12) - -src/rules/validation/abstract/RuleAddressList/invariantStorage/RuleWhitelistInvariantStorage.sol#L17 - - - - [ ] ID-81 -Variable [RuleWhitelistInvariantStorage.CODE_ADDRESS_FROM_NOT_WHITELISTED](src/rules/validation/abstract/RuleAddressList/invariantStorage/RuleWhitelistInvariantStorage.sol#L16) is too similar to [RuleWhitelistInvariantStorage.TEXT_ADDRESS_FROM_NOT_WHITELISTED](src/rules/validation/abstract/RuleAddressList/invariantStorage/RuleWhitelistInvariantStorage.sol#L9-L10) - -src/rules/validation/abstract/RuleAddressList/invariantStorage/RuleWhitelistInvariantStorage.sol#L16 - -## unused-import - -> Concerns OpenZeppelin library - -Impact: Informational -Confidence: High - - [ ] ID-82 - The following unused import(s) in lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol should be removed: - -import {IERC20Permit} from "../extensions/IERC20Permit.sol"; (lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol#7) - -## var-read-using-this - -> Don't manage to find a better solution - -Impact: Optimization -Confidence: High - - [ ] ID-83 -The function [RuleValidateTransfer.validateTransfer(address,address,uint256)](src/rules/validation/abstract/RuleValidateTransfer.sol#L15-L24) reads [this.detectTransferRestriction(_from,_to,_amount) == uint8(REJECTED_CODE_BASE.TRANSFER_OK)](src/rules/validation/abstract/RuleValidateTransfer.sol#L21-L23) with `this` which adds an extra STATICCALL. - -src/rules/validation/abstract/RuleValidateTransfer.sol#L15-L24 +src/RuleEngine.sol#L56-L64 diff --git a/doc/surya/surya_graph/surya_graph_IRuleEngineOperation.sol.png b/doc/surya/surya_graph/surya_graph_IRuleEngineOperation.sol.png deleted file mode 100644 index 1187e1419cb5e34f4e251ab87dbd720af6f84688..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 39826 zcmdSBbyQaSyDvI1=|&I*6cCV-QW}&LM7pJ08flPFS_u&eMM^}vq`L%E1PNcdL%Knb zyw6;F?{UsP~VbD>vJ|1&C5GJ$!dA zOiFdeb$wh^GKA@So=!>8lR0@abMwnWVm@9%rOiH~pT z>FMcC3wyG^Va%>q+1+i-got-@;mP(Aw%;NQmyq|7aGr6q}OOu9u={7F1 zP)t*PrNCrUG+J&q^7ZG>DEskRIYB`|K9eulujMnyDJf;8q(TU3=)B;f8uU|uvZg{zyVq(c}`f4IQw||o$)jo&i$`+U$jdT9J zeSJY5hQ5EzlibFA5A76bSJG~4Zdqya%b2amReJ5Rel98LDYF@%UcbS_bOwQyiB3r& zD%0f{HS20^J>PJ&^>W-*y;DEo-8vgv$G_q9P%3O;nUd>f?4bTpcl*Y7QzYFPFK09~&1B&uMd7`n{MB^{s}Z&*QH5 zGj>n^>Noh(AlKqM=pKk)_9lNXLY4a)o@%!hAHvF9vpl`H820KFv0j}Q1t%vb)op9? zPl`z|U>(jPwzjs^dFj_RWceOHeoUl)(KHH=ndr~2>mPLEwba!o57!&oQ||>BnVJR! z;Zf3yh+KtLhUeM7*q2E{N_qyVbeuXvNGBFP(;k(cm4ywzvYp;rliM^7~2n`J-j?>a|b!kbs?zm;76!GJS!f2KAMe8!^u&^)*(wiI{ zt?Lb^kv-|Mu*XS0efp$b?Q-+`_wU4)E(Q1JKWgdkzjShPLM8T80J%m_e+JG0*PT24 zRVH=%HEsf4J5~X%Z(?Jw-??)Maon1fBPM~zu9zfr9uaVwJ_kE^qf2=G8aFoy8IwZe z>PSU2oXfKp2@%A=Yw^a@t#8aqzLGo_HnOW%7P*|JrKZ$}4-DEPX~_DAN*|MXdU(8g z`}VS@xA$_b`^k~#=hD)=GD0n_feXu2Tt@y~LTs9O*XZczlFV%e3Np5~p6HfZk$jtb z0zdb0bEds-Yp&y4N5{+lLPI6_jID2WQvLLN{X?3hAA};O5);O1+)Y;oi_2*1dH;Nr zmXZ08nu@4pDpJHzP*O6$5sqPc*bF7)%6nqVAH+Gdl2<4wf*KneL-LuPD`CtPK7Rbj zsE{I7*Y-Z3s!FihbvaliUB+qJh=cYtn3t(H;tIdx>50#|ix+3$ZLqMg+*MH_DbTBW zzBl1V2aCbw5*jY*23v=0F;>f%k8^OxIrH*VY*toIQv)Aq;@OWGCoG;ieROkXJbT_mFY0vng)$`w5N zUK^SW)i5~GACywWiYh8XpiEsLyb60An~{;xsPzQ}5oWFBOEYal-QY{Z&D^vW4{OIQ zt0u9NeN!_Fi{`#QGK83nEZ_>i{X(5DJQ&SFgX79(vbhNU@y5c2r3O<0_qD6Z-fM!k z!=*Uu^@p5LpkXV9-L~nU{PC7onT7moSC?;=TWec$a(L2USn@(x6zJ{=Bn!I53bAo2y*Mzt@{}Vr(XjC0$}?eRZ5U`_VlO}KDl}GCeoFh(*<1ow!{&*XAk8ktZUrPmbi(_jTN zYJuvwkeGHgmYX+mw&#C_l$7v({`|Sf>>H_okWe!;KkvP@^N2#?9fFYxhl|MI(9k{l z=(`!JSO`4>Lz*(nwU}?+RnC?x6Ag5T<4hYtU{FvKR8S~R*x1(*zdk*@vNTdr*zG1Khl7<02Yp~@09GryxR@JlbdMir z8;r~w4`Y}w{V^lRoC@?hxqQ6)Ga-D@-0N-qr^4)4xCAtR$TBr^aS&-~X;Jyx!Vv_q zr3q7CzI?gH$apSSGhf2WDr*Dh2%}{vt)PIvHeSbu@2a6?U=Vp8@6t6PA>9Oz)1&R5 zo2wNQCa_~eBO;`=wW*q0T6!{-=sdi=88|oykR5BKTns%I7cq1aM<=Ie4GrSH`%@QH zd>+WlOL%$;4wu$jKq#We-cHk)f^)K&VW4G)ETqzFqVR6e#;(fMR;7I$hZ(!@ zFZaV+1n}F8N+ojJX)IngeVe&C2M`D0x_z4>4(*Z%AN9lhWwdP#4Gk^8l_T~@$;hyd zL@B#79#HnIwzg`VY#LTNVnMZSJvlyf{l3f~E>4FSSy+79gEzows&qw>R_P`;*}TS+ zC#>x+`uh58M0v25lJUAT>%znF6_SJ~baZsE2?&BsOh= zM;WS3KYtS4xpOD<<;#{zry1I%zJ|<9W)V@*G<8-I8k*xT!{!fT&XJZ%u-(7bwCzEg zTZH@e>lc!%P3IIQzieU)c#34mKX`zJP*C_qowX^`MPi+=G)~Bp>(ndn>oSmPa*;(wv#=*%hBlH=085VX=ULKc8DH)#uP87aI4R)cm$8u9Oox1Dh z1fWZ0_{ZjLbF;+LzjN_KV+HlaTrFHDHp;Dd2H3I!z0r|)mHvKHhOZ>;Cl_=tDAIE1 z+1qp4Pt+42aKw06Sy`1eHG>BSwUNeeG0gX*0AmQaE|DXXU&6?)(ZhMh%6d;W_}Luq ziL-OD%c3gUi`m)n^B+|NLrsKJ#r<^Ok(`2J3Vt5(&&y-Ke!*wh+12$tvNBpl1_*Dk z#{E{;d%=L|X%oE~H-b#Xq-J;_EOo_wN(u_h(7eAtVmnxbHBe|MTWC`|4t-KyU}>)LC5bzwi()f^~bX-qxe_# z@pit>`-onDnp5CmY;1h)?)==;)V;G8@Vj-&Ov3j6 zJx?2dn0O~TB;+C>q3DVVei~u7@X-62gjITq+rK**=zDAG{%+65l$G5ENT2lK!v`yX z4`#;3_nhauGFn22mftvxRl5cpE8V}J3OA;9_-9p)DJHtEPW11=LGSO*#Ox0rBv_cs z#~5TILnDJkeWS_c;uk+dP1>SfR@cW-*{&4)xi(hA?Y5$AoQ3vS54d?ICZ^CAFC>hN zCR;Sgnp!mf6$$yT>B)cnop(X6Uz6HS)YJI-`g*L_?com>q?s7!-JF{3kw8xmY1qdm zt=&f%%cgKs%B-~#VGgY&{e2-;AYslcp2#VeSZb?Z=og*bB z4V?E4wc9f`F;==O_bH9RBL{lo^>W*x=PN6=m6erunPQ%W25L!5pI22=+ib?W1&v}+ z-}2wvBUO6;#1)6yXNG>q8tYs0T}ds@KSe{};Y^LWPe`k(k^*Haw&7gtsj8}S*$#3E2nbB}W;|$~amKovrfhV4u)DFd^JT6ho~~No z$JAJfm_+#vuHNCTjS-&4a^Y@c`fhuCqc!`51>LJ+TORW0l8%p$FASA115U`|edD_H z>n6K?wfg=^Zee{h^s6GDLpQ`fDTxLe(kqYu{qFb-c3;cT&}FD=+MmsEuF}v<{r(*c z#1)tOQ$~jIuPl{U9dkuRMgE0_g0L=>U3o3Lq=1ak{&OD} zQjeE=8vlkh7QXa%7{L<%i^$pd_XbDZd7DhTo2{;dD=w!jjvMscjOT6FXQ-%4Kn#J8 zk&viB)#ywSPeHn0U6;I{i&4FI4-42AO4PD3*7WrMbWP%Z2KwQ0yDM<)dpZ;OZ!$B7 z$b?hfQ_X%eJw5$(U?4s`JRBSGIathe0nYQp-JKa}-Wn>gRD1eVeQ-Hxtq>?XM)WhyH7DkNVw7233y z_~nt2k(n4Jv3oKy7XS|v)6hf!SD^(8D}DFw-K6E%_;}N%=jTHsBW2*!V<9PiCxZ3I ze;(y&7oRCEF2=^gLt)9m&f-~M+8;AAun-9ei6UzZYhZ9NZpuCoeGO>WlW@GP#;R`v zaXNGM?9}x18A?jZ{lmkV5ISFC%pTx;5CGDF?!5YD=9S+^wc5WlE|@BC+_P+aa5I12 zjF=vwh&8m7Jv)?%Eb^u9Vy7MpG_IQ8wccX4_w)W#-X&UvyV=ZDtoJM%9lWH)GJC4!cR7sY8rEIX zMpv%xHP^=D+l_TC z+04u=y&Wps{@}o7&ng;8Ai)!Ty252CEy@m#M@6!0ztc5tg!`xT-#eOIKPts3^~CC?SCg*r3tY z>^CkR9@6j1WiK~!f-7kA4)1ADo_4;wjd%Y1`Lej1?Cf9SLDlG9UAltDd+l-V_ftD> zq)rp-+2zIu^Zt>2{+j*45&7pQXM3K*k~0VkU$HLJotJ--ulW*y2ha|*2ePoTHiwch zaCvMP8E;iDsgD71pMmDyZCzGWQgT*Vkh#dbzMVbLnh{6x_=aEo=J}N3INh8;HuXVeMYQShs*dtZ2MeZ{s~ULnz}mq>R@pI zJ3G78+Gv#vD11pFg6M;*1&wh)^_Bs5+81wDx_;@l9i^l*v)Kyfjzabl0i)N6O zYHv>VH$0KvS*HI`drnfe_v7vU>}t{vznz?u|6O5dRz_9T&3}_HiT|655R(7DMckh{ zu(b`UDW&(MR#xtZm6{tHW0}tUZdkTE5d}$AR$W~^aA$|v`S1v|zvkiUzZ0}U|MJS| zZx4WKaJeifYwPGVLCb=jAN2AiUfeCi6YY_Qii&O1tuN8$1@|u6UruHEkdis7osoqF zn>0*n9yCK^3yTZx?(X>1eAsMS1y8ehMR<64;7Eo*irKNn@j~=zaSp>04Ia|Hbdyf++DHap~DB;sXmMN_c4aZD5YXA#V zKYTa?8Xb?VogH9x!hB6U`sU~7@o3eeSZTzbQo&*VmAg{qJijsO{L>h=jK|)Xd-R(( zfpE3}r(dw_djCu!?XH`fTY4L4ae_so7&*zkY7q5)9A= zE1pxIl-3vz0fe+XP#6L{h10NpG^_ah#fzXhRjDl7;==v^+K3Lp>VyN2g@sk=x_s%5 z{U{52RCsuxM4G<>lO&wWV!u;gq_Nnv{aW<>BBvP{IPkbF#{3TBUm|IQxr`c-sjO@N z6HNdUmR|5D=e?-+rQ^fB5YVr@{;XsV5b}aN548`Qh-g6WDyH+jpqj_)>xh)BtZAb^ z77AiuyL?hg;l#&T>`Qsv_sJO0G=c~V3*ToX{nFmf0L%k;>iq`~B=6ouu3o+B2rvTL z?tel-4iRQJd%Q5FfMMSYkactpZ4*>bkl)18xU@=Tp9Y|Na6ft5i@>P^sll+RsHrsqkYl zGU+`v;_&#H5r7JywSz*^?3Lnsa8tk5BYJdfY;mC{{l9=r*FOQWh=zKbB4AZP%v;}o{^YkZys|9!{OPQ*5&X(|WzS1$pa5KA*Y*eW zl?MIG(Z%HpEGBIIN9$j<_BUs2ek20EF#>*vutuGMXN&^}r}khe7aArUr2>Q1y5m11 zRIrty-5cB3yabKMxH%AK_YbT94ggCO7Mbzr1dRBHa+$W_gLqB?Te7IM^b6b&DALcN zpPh$i(Vr_`78ViFTI;!u0D#EilK)(i8QWYxq zS%i^^ssB-w9%o^3p0$1RuV3og7WVdpsapnO1ZD1^@at7QIe)8e=e1%TkoVoT*Z&TT zax3&=D=P&?Ydy(ugCs2f0_I256?>QaQmR2KJA+gMdrlvloHPPQ1`ALK)1Q?ghF{LG zgJ)-FC*jdkes^CVr>Ux{O5ibnVQ_4ccVh;}`Rw8G-UOEV+8_u}2(q}i2rE{W<@K@m zUCLSON1FPQtE=O6SMIKcWsAX9CtkYo;eryK;=_mM{i!oKYO1Q5Mn_SNAE91T(qFO` z2WkyfSz1%`68b=FZNmdD5}omPyrhk}V-mhN%|LYaaI51M7TQfonBqWjNVz{kP^RT7 zqou3+F3U?)RCH=_5eKx;k^p=5?~cJAz^TQJSE6_MUGPvfgvFbyu7GpAmDSr2S7S-_m}l; za0*4GUiWA|JY#3a1-@(aBZ1p%_u~E`OS-i{Q8~}ux%bNdO=L0l z#CQRhgL2deyJDm1A{`3gSpZ#uh+b?v^jT=cWaTl)TijqN-GOg~fHQCe4^TN511$t# zOA~BfZud1kaORHoXQI%;mYsbQ_TmcwL?D5t0onyX8U&j)n23%r^+^`^Ocz*Vaha8p z$%lo&*zo_3w=FL(|F5)}H_8S~F_;m9<^KH5|AqHa_DA%87dk00wE(LJL5tgdQ~)Gw zdawxrkhTNcBPJ*RsO1-m4V?>No##dQJm}ikBcBd5HbIpEQY-9E4>}!)o2_qoEtU23 z!a=~B0w~%9xc4G`^JnvpNgzEoHa6ij!k6ydyN4*J=K~d#-M2H&d+S*mQ=k0)w_DDd zO<|o3VqL57@Zqv1u{Ogw6rdh zjaW(MKw2;0Q>B*Jg48)XGm~Co3x|2PTvkfmz(DckB@TMPYH@LKe7;8>C|89p)N`=A zESIg`Uqb^-$qK;ruX-Qv*Wb*{92}IOzLt7!TjXSAb>FOUm=IHCAqRw(1%hy?RS*4? zx}ncuOk&~#kO>&zx+EkdLgwJA0OwV*ayU8qYi4Kn5WrbxRu;=}vFSw}ZS8Kb7J>%R zy^qq~2M-=li+FHB!@ye>AG~B!zpt*}<0c>auALi5Evf|#>V_y$nXae+X36|*to;8{ z61u{`)0XVTvsTFPA6bC%@^UZnZ!sEhF{mNDY#`_$U6!B!E(=8Tm-ZtG!inJIgk1`%{?id^3*Fxrisa(emKbw7% zECUPV-%#CUvI7+6g8*;wGdTkM1=Hy-VS^wqfYLoOIb%QS-hNDMEQX=%kYy+0FId>KYir;_ zx_*F0sp95#hk}Blr?BBf9v~QF^nDga#*ZqdYT4>LKX`vCLzhVJw^=A3jERBX-2n1I zdOv6;iC>&Wa`^hUMLfFFsl%ksz{W=I0^YeE-(mA6T0UcAYfAzw^~sf$qx-8MwS*bW zgI(HO(n@eIB|+^!sa8TW?f-MUN4{BvVSswleDrsFYGoxHbXt^(M@B|EIy<)jz;OMZ z{GYIz&T7**wfGyvdh$x=xNLmYHnEJMQy>TfGwqZu|fH=luhE9A1^56`l; zt2{^CJE=HR!juMA)Lv#fwvi z|2;5N;lBMVS&UnJ;lDw=W(Kn>TiZXyVH;6Erw#?<|MAacQB+9=F^>t*qPrh3B}F7K zjnUB1(6~-X{P+#0LGAsuwKbQW1(l_LZ7&h`L67>1!Ne-2h&=?D$_FUw%-tHd)toYp zejWfi<8Dv3Jp2b|?@94FjEkJPTj4NqDK1~P>;k~cxCULpvK*grJ~LNs$T z;3)Kfe&8CX)tL`!{=LEzVobecinyN`Rw{T4NeAA$OVR)pDC<*z!-0cNPtVH1aRW*x zbQ1D$(9W*`Ya9M-{vgS&_;*xH$hg~95$5cUsA;xWRgNbD5Zd@Hun7O}^XCl#erXlx zH9fdh_fah*K0bb9_g`bUD-Z0Pc?nv7DSID$(Mvo!dW!hJeXCP9mjm+76g)|=L4`Up zA0}Qv1fK2}860Q7giH*Q3I*ZzFaaT98wh6`zY`ry;3-LnQr0B5gg<_s%y&$9FJfh$tBKAQ^&4?!Sx(o^kf zQ#X^JdmLR^jNBkTZ+O!`&o!vz6@bDlCWSpsy2*g&!Qdc91 z1|XBB<=dRFIYD|1L~UEA8)Jbu5mlqxGE zij_YPxOs4J@ERv4;Y?dZpWuh$ii(Q}1RBzNMlA9&CTCUfV4tG62Rt#E{B?)XN)oUF z$m?%$aGXa#HNfupS4olhn3%I*Si_ak6bvvy^d5n6IUVdg1|ouOj`=st*I)P#<{J?H z6g=F={JUCR|A_zp4BG|dj1f*Z@%&@N!|_M8I0#TRZ{_UP*405Fc?Pw6Du76=5uSsJ zwst6(Ii^FO&0Wh|2h}pTnT(PHnQt2_N|DpiDM2s$1vd5p2!?VQsw$v;OUugk6&bf! zL0;k`#yTwP$rIPFudX-070}I(1JoKpeftH{4TVw;q;f|`F053inKl*3qaDL~?espl zMS=iF%!m>{Nq}g;L&U`Z)}EY(=Al$9*$h+?X2fOs3(oa%P@|I(2rECF&{;3#yy(#9G;eI=tC)zfmF)}P*!39@Ip=Pg^H(S z)1OD8NN|Im8qL%YTKx9_?SBQ%NJ)A=Jxu)C(h~6F$B(ZgBZ;6s$Vf?nK#^O_yS=fI z3OjCrU5$m@t6kmDTk50x4_CSWnGu({Qtxwk|DP~hI!H;qAEaLfs`>1$DuKNL@?sQ# zIB6-Vg*VY1b7;9t`>(w}3X{W?lAm7zsIqf#Jl>dW62e(%D%b94{3hujd_$^p2KevV z7?rS_ZN4N+ICno4oHcl8-GE4Ba$`bYB_s@*CC{hzSQ(j^JO`Wz99GQsHi^jme;GSu z`*GPckD8v;$7!W6GzvmFE4RQVjG7B)f#*?bjmZI&!zi`|nq5OeVq!YC-OeYI{cvb^_e=cSt8PEk(a>hb9V6c=tcw zdj*g7$(E7pv@zTN!R?mq&#HhI4rv@hGG@gukhsF9QLKZ~G_}4S#qp?|O6Uz!X0}}- z^syPk(*sKX1JlEqC~+>I0~ZjRi~t4g@AN5wV!f$tf}X1S)04w?Ren<T7?D? z@I)5bok8Y<${R^5np2|38r$64OA6<`9c7FVrc|+`5%;}1H8lmgxa|6P-LCFDRH(af zpabR<-wR+>>2b2s`iKyGjgKD) zOcGRnl(|m$9ujoKaY#OS!ei0-E(r9zFzaRbDJq~oaH@lKN-P%36v3&KiM$&2{P`K^ z%Qzj7vIKnp5_;Uxy!h!oKr<CM?|C++el^fLLJB^*#)Wz=w|?&w*gqnxm0x)^CYfuj>KYm6>?E2Jrk!F=`b@c8w}4OsIaJe#f*@zcN$XJ5Q{!DaD- zDx8Y@%qhGaU3LNNoaW)->S%gXj_@g3Nw)ZoAevZsULSkE1F_XJvb1D=6Z6f?0|K_2 z-|fFi#H~PFvs=9U+-l3ql##DZDO~`wQt&uacAP7r3mmK%jyWg~E_K36PIuV3-M` z>jXMEnI0w93_EnAoz73Br+la{W9Wyc%hE3#cy(w5%{`GIHAm5kcBjh{rHz7iOwVp( zHGk5lBtBI(U?2%e3u0noWz(;DoD)8KG}Z3wkx;v*fnT6o7zOHpSd4%`Z)|V3oF4j} z5{aK4m2`QvN711>b!uiN0F9Huol%Ulv9Yy)na1_Fm+|SJAxq?1&f3Aj*2L)vB}71- zfBztP?cxeMU)sp%+R6S55oEIPAneiZcY0`uPb)$NK0dlu(2_~W$pb;LkuG!txL548 zYmI+ZfEXN2^xFq}>rsJ$=giE_jmK*}JvLh@r&d=ZAcHvrBp&gHi%sl9m=QsMkxRmT zzlx97G96I|U~7oJF-SX^f*-KI(Lw~Bp2h2Mai(UyUJ~#v7_!U9RY~H0w4z=+jR4m{ z0tuRE2aBP9WRDd*UZ~*gkR*S|;DSfB$}j`0PdWAcDi% zyhrzR0}DM(qYZv^s6h!iT}RNdD{E>@!D(xrwStrWyDRA>|G39lNYO|rD-#302!Zzv zfd#Y_G(irOgpx8OCtAv9xuEbCAblAV6M9hB(554FxC@C31o1uElm+?gEF7$6(B?@l zUk*bPqW~7}f!K@2p}}h88(c#z%fk8tT+kySh06k}JRwNekn}MI6AO)-f~|!*C_p8j z?)1n?q|E<#dlnJ!{=<&?&R4EHG95u0!42U8{#U!({|NlkHb^-+Ep%T$+D%R;1maf&<oCrjoMli?GbQ7rmmq6yyu5`Q(*tPy>>p{|I@JRP(2jLuny~!XZX5ewU zT-eYC;x`uJP`7)j+HDmV)SrlFXE zw2KS5w5+~zF<1Uy@gOcER*sx47!1YTIg%D|O}iWX{J`vhST7p-08thH5{K@>jIu z;dchtV8yv%KO_H~?K*GwtD;`y;2s8P=AvREghP4?^o4g;M=0Up7x0#A8F*&2m0zbv zOKH=_R112t0UMYCR88P}ObY3{Vi33L{O%lpc3Jsk4i}`gK_lDU?80?8yx=#;0(SM< zT{{0(As7vCgHHxn@q@2}FmP^AJ^vXl7^EU=xn}ujk%6C|5{^c5W)3xuIn&5IvV6k6A*(OfwWxkvmmlh1YPnvq!Hn{#dU3^rd~T*_d9KY>^nC!fjZwi z2VZ~ukOI*lUz~y4*?M>PxMIRr68aOW38g&+^#ctDr*7>S`S>~HcAc?(;VheHZuR+F z3m9);YBv&zANd1ooQ5D#f|!q2`Y#_yXhYhM*yJbY>y9}pUW@Rq&%?h-X!%^1)WH}x znfo4_04~Mrm>4*?7ybNBy_O$mtpy*bmTgx$&l8sF+9mA*J0ZF|$E=yUre>0qlmv)z zXE@jugPImZV*3avLmtcd6-J=tLuDDjNF%o^B!N;PsimdrmQ^t^WT2-;$Hb^DdlBVY zpX8Mjv6&2K6|QT@N@$Gyxo6_*(An9Eg~(^9uET>&mm_)vs|v_r68w^T5)x;A|4f;f zWVZ5APdfPvXh-bVL1FFIiv_j&=oXNRVVZ&>golKM#c>w8{8lrT!<2~o>^JJ zM4Aor+Kp2rMk%)cc+rRd5?tn$6zIFP((uv8{03$B$yYLj z6(Rzs1U%kP{c_Vlv_Kxbh<5qs&z}d*p%IH;V<3`(gE~!jx*uY&s@bYj*9l`kfKje- zaTRqbt!T)yV`2sZM%o~50tTnRliAR&pC_OMgP-65O>B4A_W(8!7tA?CcIV`-&R;-4 z5k@OheOf*08bPIjU&4k-gs9O`Jv5IAsAnIFj@0qE=J6VT{PHX9ZPTJz=x$E)T{K7| z5KGRZdzR+r*Kge-0_OotOo_j+e~AIGe}M|j1v^x)+64!WyQ91NMFi?~8bB*Rw`iF_ zPzMD9is<|TmiozN+?zKL?z=7^Km}zZSF11>ijjfG)OoN>&!6tMizDi5fol^DL=iF! z_|FhOrD;Ey%z!jfusUliNUK-~$Sdba(qO0r7P(jFPYaRwB=`qCf_0U$QM4Y58S##5 zqk@Q^-$4VsI#@!fnz>iHg<*1?})p=uz~YxD-08%3EJ*7Nh)z)5$G%- z1Xu1X;CB#{pxJ!*7Cfo5An`~8IotfsR>)UL07>V-RRf^;M-rU`7r8InsmAcjU3v`#j61Cw9hbU+P#%NA0 zEbLiLjWBeKK&ageLPFGFwxDJzfE~79z!(_Axz|T3l=jaJWUDcwfghOR@tR0B1C)+# z7MB8_1bzovl$$scv;*)&F)P}w^LB^Hs`MgnJcz^IlRv{66`7Zpx07=S(+pW9w=gi^ zHG}pi1xhk*ZGBcoJD@{0&uz6C%=l>3AaB>-?qklIf+qx`Tf>ol@+ z$3PjuaT*>PGKTCBtSOfA-)%IC08s!G>%%i(e^id2E)&rV=C3m7H1IO?P{i>rv4gAj zIKr+3S{M>rfjd;`!~ki|$;ruU_|ESV5+?I2#(TX1>Y-Cl06jJV{o+(m3c?sr#NfE! zsZaP7enm@tFb9tS7ZUu@2M&Y6C_uImz(&Bl`;jC}2_li5W1<#6Od^4eE7n^^`!q-} zS2nQ8UTLfJ?_y?3s%rMeuuUOO2V}gXAz%ha!W2Sw5qGLasB&J*Vlpi>J%0&4nY~{N zODsfp|J^$X{DsqsQVYAUNx?3ptEN??&7%#j5&hOTiz0A%Gp+>+7g&`p?`~`~f&uqV zeHvkPe-q*KMB)K`tbFm)zfV@iYP9ATGH$BmV)lRfodiH37FC@#%Dev1CJG|~*&@S;EiY{v)tagdqdK5CA}A8Xl%Bh+sg7(3}{Y@(eiw0`g0jK0s5?AIoM0N zZeyCi1O_JgEca92XJlL%M%SK3#591 zF)L^GO}yo~vSF&$R+(-q$X#VAc$8r-B0QIyhO5uGxy`-m=rDFLBowZBA|RycYv*8y zCENZ)KtP={MqY4;>klJ@rX)&r!3@{@`rSH6*qzldb|Ud;*T-Bns|&6`NT?y)feR=a z*Zc50O?E`YTINnpq50=`!Uw-4GI%8JJu7XCR`;zZS)1UOQB<6}BmXe=I&&sZc3kYS z=$5sal;acDklfr0oSfE`m2X;FrO#?Uq2zo}=sXvjvZOxYRdoaYs67|kDz;Fj7w3jVW-u^K4AUmecwDYv^kT&{s9YaCu2 z?6l=^Up|B6^=k#E?N2vP_FKs1V59mF?U?H?B-Dj;h+jSFhF@6kCJea!kmS7xt+Fm_YnhEjr56TYs~}-!NrTtS zvf{bA{KBtne9(}5>GKa#Vx&6MRj%K&&cU%C=c5qg(yOt^*{*^7TdOjQJV+1R!xgt| zoMdC(i)f1qcxGWp^{PxF@hI6Hr=H&+CHT23$icph zC6=8f4QIVN>qwgc1vr{P5f9JT*1epZNtc+Ymj-zMqdQHE2d$b)mRtMB?rQHvZNlKX zByy<% zxqx~fwwSP#6kIpA&UNhAn2WjXebFMY&G#lc9hcrv`0h7d$j;^&9ExojslmQgs~lMG zqhZx2W4FMigO`et-#A?VB;YqrI^U%;xn+)L#YYOaLM2c{9B^R{G}zypH844eNuOgP zqQ53Ken$MrC?JM8KRU)V+->zcmz6Ts1p?N)Ff#q>SFPi_Vi^rpdTE958+dajm z+jJooo$#axi?;C)4?k?pABpbm*Zh>jMQ_5-0WW;= zbT^jaV3)1=aNV*Iv->S6sTJ;!;e*bo@-ytgq9&ZCrd4#O3wUfWF-Km6xu_{XSuK#1 zE{3S7WJsSGfX$YP3A#t+w%jf(AKt#RhDeaU?L_kPygW^8+@(<1umm)hOp$j@`mSZV zIL*z&=<+_@k`oFhv`dylK?FJ^32Mc-&z?Roef4>tY;{y@D0P^ig&2Js%7`~Pro!3vwZ&7FC<&Et zQSXy4-s@#;!t14y9{YCqw4;1oPt24Gnfzuqdt?g)JbQ6LUdy*g6o3Q)I>s_}2;MX~ z0P`T=ZIHqQea0UqGN!@n34!eU>l+V>9``Y+*r6#92sGHNbdvyXAYqW11d_N9l>23g z<0DcRU=|%N z6%a}ii!r`SV@^yj6yBWFG=ORSu zcQ|r+t-j_>m9yzk4S#CJOUB_UO&Z#ir=$upGE{!2-kfrB1NKTez!sBXgjTl?TvV94 z*{vT~bkXxW-aT4%@H;z+ngnj%GfNe>-W#e3xGWIEZGQrU1knp9B8L!S!+}?Z2_68r z;Sh=71@AtuKdu2ODOeqiVf?U1 zVtjZja{&|p7~P5miU~%54h;5!Ou2n>3~1LJ0yChoCP0kWD>nljH%3ViVqd!{14u4A zC#S((8^lrwYij3fI#>omiXD8Z`z9tI_M8E&Z7Xiy7B@7vv8qEEMW=-+BorV&n8vZM|7(H%0tjQE_3qlwLqrag)ka8${4>hJaSF%E6hr{V8#kOfI4aPf zi2@TDlBtyP8-@kVfi%G2z&7}nyfDUPU$?7SZa=o<{K(J__q@p7s17-<$KmSNOB^q) zCUosQo^DECoA1j0+d`)+8~YWcr?(=WJcds<&%*~r%)p%d=7}9B$Pg-j4euGWFjN6i z68p;tZ|w(6KS2=vY!MtX^dk}s3Jcu@QTdWH{v~7_AccaUc|nkMvv#ZY#=WDK3u+3Q zo*c3!7VZi;|HcRD5(-lSOdeu{PvK!95Tt7c4yIFPO##C@ARh!b9L?RzGpM5uX=#Fy zM;L@q4>0!vP2Cfc}vIs)qM1nn6|#Apd(%JOH$Rx2qUygChz- zTXSHO0!bX+bS?o+(z?3b%l$!K4tDHP&NgLJo1Oev_*BXm)?n)*-TbS9PXfWyN$*>v z;xWUH64}B=6f?N1bJnp}3nd_Jbp(uxC%=EZ z_3D7cy8x&qhBog;R(}Uk8W_Qh5I&vQ)jETpH14BKu=`Lw1ym7qc_8S4PN>VIi1~0) z;eY(}$%N-EOvG$v_Z{^+Jx2dSz{Y?qz<1D)Z~Ywy(U?WTWxycu6F+>#kL= zb(z?_50v;6bV+XOaZa?3ByMALp}<2tP#2@uaDXXY`KIh5AcKz%W1v&c zN?Jp~k-f{kX_6Pww4>PHSu)sC?NIM(WltM^&ArL5-_03vq9iAud{VV!yN%SYGN5Vm zrFByD12D$y8}fKC{81l1(1Wg~SP(44ELJ=tRA+ahT?=uS2+!pZ&t&H}Z_bi>tnweo|0HYTQEP?(i`yB4mVImt0y$a&vNCT%`3t0-74%-L`@6D+E~5xQ4xWapsz^@ZswQ z2>h9tm{5!Uj4N_4#LDP>m?9Pz$N9o46N=KPlk9m6M*d{aFR}b^F%}LLYM3mz2z^p` z+Z;@A1>NWn_Ssp&;KAh~52sUZdl_Wagieb;>k~gaZZ+V)7k_PU#h3t(ga?EQvC|{x zOPqSzYo9&$$w;DP4_<_v6O;9jQN`?T&FyFq7b~v!1x&ZYcwKHeY zK`oHvR3Yo)>njF21}sNcvgopY7ic|~VRRJshsaL1B>JgOFIy#GU**!6agpA5SW^ zR|Omqf53LrZZ%Ejl=Kb!OubrJ}p?G?{JAmp$80$qCm4=ZLbTh#^ z`!}5I7TS(hM#FEu2bpowMd&iONniz~PQ<}?KF=*P5d6=1P}hI~{S#IT=PqOyAy#x< zNa!7;2#kxh_m>S%zr&z-Cz+DSvu|cOWl6_JNBey#C$st%AfeW3O*ue@vtr!qCCoqc zKyh*?OViA~!NHN=?|M^7Wb+(!i|sf(w4wa2KU}jJ75~UoWTSP>@5uBjuLU_kGt6om z=UE0^I^EN(>YyO%Pl~HA4A!UpPM9-wWGN^jw8&_0TM~U(v>hUa(C-&6FPEx4iKbk+ zX372T16fSOi_hC#!kNk}ll6zyn}6rGqN;8?SLr?M9lX_5q8ocOLk9s$vJTO`H=m7~ zFhqpcse6}N&Ze5m3bSdN#k@9|j`9mP?Ru~M{kyK+tr@ot+dIxs$n!MWV7P;0n6q1R zWrD8J!M88z^msx!*-tE9(0S|eTwSQNuv6y|FFv;8=FzsL=XPh`)6=@-nzf~-5W3*9 zcLlYpN#D%q1qFwMSH3~IP^ZFPA1{7sSVK8=s%l;+Caym=@LcX_i%h9detl;;XKbvz zfuHCLB60k5$%_~JGAVhDB`yO7SbSmg$hSV&?^O8t?y}@!cT>~KP!NY3+nLAP#A2l< z7n}`o@ouy0Q#TElr3D5FCh*K%bsy7Ebad<>)MJ)1r4jz!zJ#Fxy^@%oensSHLvXD+ z7eC_D9APMD-+W6l2KZk9_{nk*W^F9 zAJaXtkd_!+#r?BJVAK(3RBlhuwy4ha`ed`ySYI!U}u!m&CKJMsjjvSBA}v4*y)MKjI;dk&|xly##N?a%J$z z^XIyjw{rtSHqusuWeMW(>Q4=R{#m`ZGDsq2kQ^6DvxnGs^)Wv z>(j&hXQJNt@X>Gnou7=lQ(0Bj*x=?<)iV42ivR6eA?>Z7KOYShGlY)S5L^|UzR0pL zHqzXk7CY(~@U|%+cVj!|<*3vQImP4s--$^5aepKK1QiRbswtO%oP5sgZ>ZK@Hs_6v z2l}rClhQVa{Gp_!%*j!GvhWHL;b-=LUpcFzbHWm9U+q%dQ&AWMR|Ik6wf$J0YUhpG z_loB;6(9dSIYfAPcdv>rDY=ysLT@WHz~IwZGYM9`UM?)O?HN~Xc!S=z54_hGFZiDB z=_63NocD{8^Vr2#+|H+^DUy=qR;~%*iF)fU4E4#+ca_I+7Fb=lllVM_`B=bLPgb)( zR-^M~NRe9aYXp$E3F|s;BlS&ePbiv3!+N2=6>x=QUd?;xn^c-d|*<$yBltbe54-jEt)lAyCZBY+@7{y_c!z_91;$N_wca z(1vzuYCto<+QzhkjfMS}vU2Km@ri8^bUoMqa#){{D0C;Gv}EAyl7CtoQ7LdmzuM#Z zxY4T;*;gCHV)<{<9w*+%6MaF_?y&A)A6r1D!=nl z^Xpe@L%wB=ZFJQQ#@MN$P|VIfhU2cRyEG)1ESNqudC%|rcae4df?@so9WTlY|4(u6 z0nK$A|Bb8eG(}3X(@=;cDk2{Rhg+>HFV|btyD`bqR$@`oq~-s``m@X4`xe^I|}-4|!JfROtn z%}tu|Ho9E7g$A51E}S&n+K>1o%A>>LyYq5B&H1}ibb1<($UPL>&a6(pgPhr&!iQxL z|BY(JfTs}S33m6Q5PKx$H%lS5z15JC5&w?%O1b!UW{GHNhwaSnhCKg=54x6Pv#D~} zT3|nJ|LNCCL5(tO?8^ANs|%!WvxW8orMDFa?cBPP%7-7;%TUQ3S5l6*5O|ZW__!^e zq|`|HRug(J6{oirXcHjY?IHjtf zHT_ykbzM9CFX)rewVGVaoICEnZ1U z+L`%0YonbzdHnrDT{$_Di^e;Q?32T88oqPGJk!4zeq=7+w|;GHqJK`i!Kf*UQ@DUT zL^tlQxuNY-!seYjtte?6T?{%3?0E+V_h6E;8T)dGr~QIj zkhq-|^$z@a|F?f8eU`%;VrRqC0s`V$Ph#Di*R5G)#e$}h6u%(k;Vv-#xm#+qiSO2} z$;!&E!Wkjk^t;U;-6Aegu(|biNjf{_fdoicDEP}Kgvwzrd95juWN)tXUZ{DFt)%5}UmJt_wB~-e)stSt7_K#H*$!+y^RE%c)t3Ul-C7pD|m$S}GU{jS45+^%_AsE>IdQzN7lca3&+mFK zo>P>lVF!n2a@MK6`R;Q?rI<~JSgNbPlqv6~Re~5X;OJ2`h4w!2d}U%4$xNQ*3Q?Zy zr7m4xbJ|1SV*T@-=pL_!V}?R*+f+|m=p0*Hxq+3O&2(>6H(sW?`X56r%p$K}J7M#s zn|5Ny4ohx}H^(n|?v9Ugb$z{7nJUFTU0rN^ z%yn#LrV9p@9*umnVy$iZ^kZ#t({26l-6f*;u|}4a$(iMrUAD41#y?vJ}nm_gz`+&+*PM2nt-1K22<>tLYj=?dSG??RgQF46OZp@pAoneSH#K z#X0AbF)=~8Q`tM67E{cAabxOZO7WS+D4gu0D}8&V%w&L3LOI~cL`veVF0Os7tope1 zncwqunQ8H!{{TET*)x3he0@V(OL9nnLUcWiNY5pcq~z=M%!ADL4EqKxzq&Kg&_v!_ zzQYADa=f#-e5_S!y0ES5YuryUo^3gFxJwy#u5sPSA;o$+l0R|Mo90^6?>RlyEZO(O zPHMr!tCy_6o=z?8FftZ)S5{r85&Bg7PGPvRhQE1lAVuNL7vDWAfFq1kCDUw;xhlLuf`s@>x@os~7{UX4_<6}% z@)6t-X<4C~pW{_yHmWXtk8r&=^`7=g&kp&D2MMGJ)%dQ=jf9*%dHtpJm91VKM#E60 z>3?sJ2dW+u`}9c4^H#&701F67Fo&kU_T;M@m+!64`L2#%^+;0N+a$7RGg`T$r)}{=<+xuRp`vL3 zrd@-|TmqVQ08>Q3EaC7jL~VB^zpx<-(NCA(%DN_^h6fnGw2;tdU5?X`X7RuMwkc_+yDt*x~uW>IgqXWIzkaiHr^c_6c|T&Pvqc;GtMKI81*G z^Hl=zK>nlbTUX@fe75b>Bu@CGdM4@x`+1bRKMDrco&hf8MwJacd~i{rZM-o9fZ1+1 zm%&PyM=EMEU~)s8iHVf=JDrga4#n&0nzHks*3#0# z5;g!-#1W$49XodXF<9vcY%mo=EWWzb?D`fOOyHlq<5s6?2y+mOZpnAxbG-#}f#51o z{J&9hdL{||Ei^xbpyYBe&toY22qXTRw(;Pi&(sOV3_aXF)s4GOeTz~m_q$sCqikDu zWle*;NYovk-q$r)qF$YR{LR<(qzP{s=rD1h1v#Is2u%#YJwKSi01+4Y(*EH%fZY8! zJ3zQCfy8n{&O$(eP`wy&SYuQn4%;t0ya_7vvq)?uf%Xx!J(Vz&>{$}^BKE7d==K&F@Q=%UH=q+EI5bYeSs_h(r@PKO?8Xq8(YJzbr7YHAL3z0O7 zEYcJ5H4^B$qZbRnq?GGtoWA?Z#N0vyVN(CoM2l&~vP%XmY<>|D&A>p)8u~43C=n zfSVFhf(~CEyc|)#?MBF72?`SQA0e3}Fn%O97yhVcM}SfL@+6Ss8jP#XFTxP^H$&wt zef6pV-XHvQ_M6{TC;MBF6zKsyx(8NbHyxihWXW3z`7i+x+XylMUQ4uJhk+kZ&ZhTB zJt1Hyc;z6Fx(&5IRG|+54IYeZs{^w^tKo}8ybNfdfHq%8lypv?9UZ_&7CydL$UOyc z^cuEPFm0qd5LXdI6F|&o^k>DOWCpd9m{SO!2nkXgJOGxa<9#JQ1~|FvQiHZykrVG8 zFE!ajeQ;7_Zix(bv=H`Ctq~b>!8WB;~9-Pu@$hl-9 zF0=rN^R>UsNs+QR)Y(ErnArKaHn1#ZFiO=D5faFg#A%4aL8&PW6Qu~)&j#%KOZ6z;$qRoZ$y?9{4qCC{SqV-9J|E02YI`R$Qqfl z<5x@hm+R1ejP1g|Tt}ehbbb#ztzyOy=ZO=g!&V(azQMmj@nURVFrR^saMEr?4|BnY zf|61t-2O-_W^0 zBc=GOe^pb;1>H9t8yDZBnw zB@z1jyz;DEVOX`GJ@$g}3~?P3YoGCyc9p`zQ`q)BpR?MK=Of%<4N$Oye*XGk8)K;s z*L&Pigc4a_?{K9y9-nf`+P~ir8N{Nbdw%wHi$7}UFd003N0D{Fg$@RtO^sQ#4T{&M ztSpZhT(NEN5J^l@xyoMy*7(c41&Ky$fW4r?Kx_o*HN3)2aPKzJhrgz9^+y9p?tZ5U z4$L^16_J-kh6&1I_R9qlf`=vn$Neq2I$sShJcef+RMp6(%76(@T@TT1l>l5v!|X9? z+6znG?@So6ZOreWpVH19iU1A97VzXx!1JZhz(63GiQ~ZNb9%Ow>Ss6x?g(eF1-pmL z07DBpEw$`jfq-o5utL7(x+zv(b(E>qREw zE>;YF0b7o=^2eQ8cYQ$R?)(4YElwGWocsM{3-%%;gssZ5pih8)55avHt2Z9J2=Ry> z>}7;t05ceo)sH;R-xW;jr9{R~?-Y17f~Cgv1a;~tp)>CI1^UAgN^mY(AMAOFxt{RK zzZ|2R009izvnTcPS|&kzS05)^6!t$awSS zzVEr^M;Q9tu;9S!P}kH{ZIty9DY}GC9s&pp)T|yJ3R+rCkU10a?C?eCU=`|*{)#o? z4D`dW6B6nU$#ef<3VDv;d+1L$d_ zjYqwI{~Su{23-aXt!$5aMlOvjY0C5h);q?4WgGf#lqurPIMdKqWB%>8(z8 zwGnWX4ofOb(D2qCWnp>yNznh*s~_4M3)=ky7MS!9nkPbL*6GFQR7)pVoZaow*_r8| ze8bIgbXnbV-Rn_z*g0ZF(AI)!!|v(ch({dZ4N>aau^w@5xLdh)Cs* ztWIl54Vu7)4xL4_BeV7N$nJ2@aGE9*H`y=~!hZ;yl+$obt$}9%`j3-&f;@9(e zHphN!j96Ey)wB@B| zwWpC$-(H{zIXvC(feo_Zr>7o1dX|0K(TcTX>B@CK4=J)gmEbO4T0K1@mDD}DpjLoH zLG;&%YF5gJEeNRviCPx^6di7P`3U8OGA88UR&v>5ve76z9pvarWYFV zRiDytc_Rbx;uii$DQG%;^RRkyxft2X;sn8k6tD5!pEO}`Dtbz1_U`DhDhZhC;v@NmIaN^APo$DfcIzHGbM2~D_yIsN0AhC2tJVDlTqM2rB%8Mgw*Jb~cpf%& zQU7iDmTf<8>ythYjJptP)t0Kw3!LTU%Uk-hU+PuPtpA}`rrbfVJnaAn)cjxzK$-1d zW^cOE@7cO{?;dC&T0q`R_az@asw8`rvo+=~a|5g=0=0jr@OVv`n^S#*^6!;`vA%-f z3vO&QJnx<`izfsZ1}a^9K_EVTv$;XtN#9mx7H;b;Sx*LuUi4jl5i*fCAg&hVcFsA0 z0F!(fRr2i?gk$Pud17+auGnQiyB24&I_t(%^K5B;$k#|{_&aN%!%41Yxz*}r+`1-DRoN8w@VU3qPQZOQ!eh| z>OHc&JaxIy7RN*em(^DCjP5i2ZYmQj+#lsGd;0_(q)SU1)vl@PRyXB!f2WO?_p?Uw zqUDHp^@^aVwp-gc&8g#HegG2Y+s?a-gZa62%fx2d#MoN=JAtVj6{d}TFAqN<0MZ3v z0$~K~A68PPZ1~Ra(RLxAspS<6AaEW(vY?>3bDaC*1qt^sP%5To25q$6COe-z<=uZE zftB-TKbjUGu9VM=KwfeUV5t7Zpm$&+XIUj_0CP1{D6E0P&Q! z0KTSzFCelg z_uIGxt4vf640uQlRW~=|Yp=&yN4Dj)8fpGs3LB87-Q6U3@g~`Ji;nB&+M3Cg`UOAR z>j;u3JmN)NOy!h{4j;Q^UX!TmAAUzknblH2c&1VR7)axU1SRl2mstW9i@KAN=8I1W zhOIpOVoPygBt|vWNK7mgT-W1g*=><-VPl5dfE=cb^MN?ox5HN-+TO$G`ep8|4%?Cy z&yMA%f6Umz8zLg~sa__)-s^_)aC|C%h)5d=vd5pN* ziqQN#WCQQ39B@3TzCncCE8336R*;$?L!u^aCJm3XeJ}3}A8nDp=x277xiY|S)==-W zS#5LYOTXyhxCr6qvu6dZtTI8wE==3-(t=4MSQM!5@&-L+qN0R_y54ggkBod4v8Cd% zT<7w$?~VFY$Bu<(ME$U$($iyu-1nbbD4Ip?+JNRi!FqP%YP*gFC6oD)bN!$r12{EJ zDytmB-5!Q=5Td*<2Y7PS_xj2fO>WzEgR*p%UhgF`(|H50rmS z9KTqr>ei9)t%k`KYkPB<+d92q%xF6+gBd@l9lg@~Y%gCX8&NoMj zJ0+=X1?z9!c17Q;u=T^2vVbw0AHD4ap>oM#RS|0w#3#3Uvvr=)&s~hRJYy&yYwy*b zVX(m4$JeT&tjfMLT|iCh4`%>O(4711t~IbMNXv8l&-v8^)HbxG zJ6aPAf+eUKyd-8tSr5UwK{GQP>|rdAHzKu|`@QK6E|k^x)u&jFRehMsp_9JCn^n(f ztQzu1Trp&orvbU*1L%G9YMve1O-c=Vzcmb9A{ zzR>iZ-LYrz8YCIiTD8NX8+C7EBpM0DR?fh)+}k=b%so+dqS?yW>eVnlJtELmCo~iK zb$NpQM*gL*wAOvL%1K(zFR9qe9fy3jgBtt7v>_m_^Jcfl;hq#b=aDo!(-Y((?E&j+ z97!6EiVwv#PG|Krx{)84@4wp(7IG-3WJ<~|J0$+9VIxJ0a+qgPn*Jjf`kZ91 z>9vC0zEI?`h=>HE#(K@0_+FWuDP6Z_&-(gei65YjfS;xSvhnjU7$Q1%({Q^(g-x&x zFb@!V-<`*btx#W<15)DFYz=mOBM7OCTK-R-zI^2~x>D3Kvc1kz?+x90G#xNQ4nvoA z#?fj=$%>}5EOp!klv^x_#d%V^0yltVr>6ZJ_@H!zwA#(|H=e%5h2*w z%vbKaY618fL`fwOnA-aK&0q3H!-sHVNxxLnnI8pi{XgN-Ft^3q73T=ni2$J?)5gu6 zAmD$%P62TJXiZ=JbenWf(yecojx@ZI>DHpcJ^NXuK{obeFF&G9BKXdX(^PV(r~9Bd4CW}T4buAa4K;cMU%YUrLQ<{ z1i_3#02`T^{s^6&4J=vpK-|NSg#eK_goqs@i@b$oL?ryz1i+@C{};~ySac44XW%UB z>ZXWMn7oM&dr-!wp+f~Bfd~EK@O#k9QZS6Lk|6egK(Y}Pk~fvzOJq_ZY=~%N5tp%4 z(A;l*mBx#F#V;_<^q1Z)%Pb6%-z6Ju)@uvOjpyFw><*+45c9OrqgH@uE8?@`j!X5$8!*UmzLAC7;o&-%kQl>sVVHIdsCvzk!$M z*s;ceCSF7NV^AGDbe8y-cHe+S$wePAWy z(6Y@3`oB17ef~s9Y5#jqMD$-z#QcDrN}}yP`pK9~rH;vl17D5qs19O(7?qHqCzlLQf|S31N)L6 z;%?QG2@~2v^5N2B!%YnhTi)d7{}SQFbDBdtg52EPrkO0B9J+)A|EcvR_bAglni~x% z=_qqy44hJBKz!il@a!k~h~tL{go%xvz3#(@B>QuOL5WCnpOZ_RP^XM;h4L?qR>RCW zAt3?u-Zntxgz@OKZZ(g?Cxt-p2P8;DIkgm`o(zo6*6y*0qvA!>ZPR@>id91>uEc73 z)Buhl_Kn}_MoPZtyxlqem9#fFA$r$cl@6OQ4tDk}O{!V#!i)cnS>b=te9(|=EQ08% zvxt@gCi-qM>CK4uaQSS)^?_i=h3USKu`xsB*J&8vMSI6vd?9(@;*Cv9b|p?3Y2`>{ zb-ca8Oh_-=;?_QU$Y(lFu?c(b;oZk%KHSLf%zu=h_g^d>wt3!Ly1JW)j-UsgdLU5F zlAs2rix#yAV13OD=7$4Mw}#2p;2n9=sDFe=-E3DvbkFN^&VoSqNpz5^RETU(u-kK9 zqN@*xJkgxq)3iPWfe8x{1z0dNI8#XMtD3T#M+WFk9$Mm}5M=QNa|Y5VQp$!u<%C0T zX_kP*^Kuiu4BH76An5n2ZVh7jg7Uvv=;tDk+3N*%958_NpNWRE1!!ZdQI_!1H@~3E zECeG379R_){$RPsXPdSw-t=cFLmI0Ah?5Y#_{?(XU@wCm$LNYNCkl8Wh5ozd(ji56 z{0$?Na4KpRvD$pJKFMD7_BjUjBFsw4ml0iJ_8=`p7oC)nkWq}bhSMb*E`-5gH>um={C^KR6VsHZmzQpq zI-)?La~746eukJcv3MnJWPZSYgLtQ-n1|p*mB-ZUy4LCH*m?I~?AZq0{g9FN0?KYPT;vS6^;^;u-0Mx*ShVZMnh z$ty$>PMBQv2&JvyXHIj{EQ_1RVIl-0B`2+1zIA=Mvm_mQjhSw@-+KKHM_#(Fu|I@f zg-6^|EQ!shkmK_dGF8Q!e+=0rteKK?b67PCp&bWzkzXvO9uUJ$>9=P&p3 z(h$J3rl*(61X@r<5JGD5b6o*sbYklHmpGdK!zwUA<@<#lnn`Z>NzIF>%Cy&C*2GBb zacCZ8PI+QS!}uj{WT<3A2&Qb=-}4c=zgGr?6gB(K@q7L25ct&opBw^y5KVn=PXU67 zm=(D*cNFi)QcFKde5;x5sA1CfmO{%R^2mh?a^a3FzW)2I@iPr^6hG!A3}xwhdkKtK zblnndCtuOjy{Q&liUI~lstrTbHb8A(#xBkc}u{{cTVprPm>iS|;WmR3%`Os0j3To|t zAQ#$8ly*yQ-u#k$-0B)G-5qu>q8fw$OE%^z8p|!(8%tNTS|P!y}6W+F~2) zuxAAuUVsFBs@DyECJUnOykVaF<;BG(fSpb47GM1-+kPwVJKXTf!y1w<=N0wbm1#vO zU%vW7_EVQ2-}d(Ag2c)nveEc>D&n+E`FM=}ElN58(wFq5`*9emuh6 z;@cxpW@b6~0}h`3Slbdwd9*Vt^OVQme@`-()?`6E!-pKdH!ziE&A#n0TgLASF z#1{&M%#?Hvp_C*lUBAWk@OBasI%;W&3rg%X=L+GENC~qn={XW8TLwJ#-n*4+Tzix=I0>*znYslv4sBSmC`x}98_fnsSv=tI`{(eLK+UKZ_ zlZ>p3EK_&^#tzlk-rH~{8MwEPV0D8U*#vEWtjggZq7?Nmaa|$v-bFAJ5T25Pg#bR# z{kPV}+EX#EM8RNc09hdE?pa|JB~r;|+RDt0b%sio@GZD)TOeF6*h<7hN!yQvk zcW`db%2SQ{Z~1NwItC~??< z#vQrn@3{(c7kbg@ieCh zp>r^-DL7T+8Z`egGeEy`nCIt5A=W3JfA5XDAIj$%-@6ZE^lN^%T@?fYliT-3Nent( zI7$et**kL|!;~Wf)$k#~9x20j^T7q<6vRXMdW#G|7*HIL?I+lN2vZ+00%oAYlR(n^ zt`=(2uR|hbJ+V&%w2BhOKPA(KP50bb{PcI+SaQ5q59sFtvvk9FR9)@e;ODcv)ay@3 z-Tn%f_W(H+6%|fhaH19rdkU?-i%Ymy83E=-suU=&^&Q-uMdwXMs+w$;pprhCbfe-^b ztIIm(^%Ph`Mc=4sm(}B=HM8S{t7{;CB`~ku2X&YQy5`UEv`ahWy47A1Vi3F(;!BYn z=6;dx4Rq4&by9J1K6It6w-gjLlVj39&RYmlftot`s>f@AiYm)ZD%w)}V;Jv=+O`z= z&TemtsHqpThBbgK4You^a%fUAS7u2WJ@fd#A-Mmqr2X+X@=2n`1?YETI{AapQb|SU zf4cir@^MGPnngT)dJQ^z>P8?+{R}NE=l3 zV>TNlMR$FljQ3g*peA=5;Bl{Ey}p zF^yUrEdFqBw8H-9{IZMLKq|r$`7c~B1G}_olbN^FjJ;nS`hV{7tMjP)R(acMFYWik zCu$ew84oc_guIv?`$w1&{(_-ZM^QGmO#gr-1+A3W!q2|x+%wrvc8Z>S)j;=>w8A&Q z_Wb>v!{mE@skGm`DXKC}>bC8E>3Qnlx7RPoKi?Jby(VJH&b&(_De{6x-*lfoUt$Qt z#EXLKWjIt4`AcalJ`Bq9c6+H$G4r%bI^_C6m=0w3@Zmz=ii$7^$+MtIba-THx3~5m z6&BnccTH0I@w1nd3P%C@KZ1> zj$tF=)%9c}?OpNtJ-uQH@vX}b=YHN1(RO91&9iptG7_EU_r4|K;bzyJJAcBpR5SjQRKoCGn<}$hkj^iWXHTp^ ziBvYH4v~r(|3jL;W4BFPLC#P@bCx$nb}oH#W%ii_8n(s-D{R z_%WYZUTk>GQ98G6y<7*s3FJUv;E5c#U!0y}L3}a}nanvis#>GhktbXW_uKDjp)FKY z>g`74b8|bTrTIK}r?sX=EPAUgPrJIr#=3y{Z=M@k|2Dc!WA4mS)u|-!gEx_4cg71epT^h=&+pxbq*;x(=XB|QSTo4 zC?7msUjJzCftP;C?w)ot7J;)A99She;;sQ0egJ3R2ZM;M3MwOBtz(DJc7IQFprrKw z#rf87tE7VU*z*T#D_hQ5l-Al0ENx-Kd7d`Y;25gz_?Tn9xN`ZJu*5Dbj~-F)>Ke%o zA3y%6S(H2~MXsXs0hu?QYQtEo?NJuKH!Ai%7fc2T;*DH?7{C^ylg9K*Na}q@*0HSK%2B4Yr6y zf%0d2Z8FFSEE+f#rZjn4H?ckm)+~5fSHE+(^uhV%MRT;E+c{m7ligr*Q^w)ZflCfb zN``1?vK@FjGgnLFht~nZ%Z33b+4gl#uFR}m&*2OW6LJG%jr3XS-yNw5Le7sa;W(Rt zSqnjBldcv&*l4$3W}zM*r@9=b?xuC>no-qN>k;o~i~YNFaa~`(?muwq97^F&zc@c# zg@;PLMWkW~=c45l&u`GYjHsWjBOme(MKbqXwoD6G)f%rV*)YBRwUQPN?0a$ar!Wt5 zbaf?9j}F>Z(3wj>C+qy!M;S1-Sh!2R#zXPU_%1aM{sG~t?;UYxZE8zXUBk|6g+~@W zJth(Ioo`U#S~P;NL#`L_g^q>`)o5=x1&5fW=h&x7Q1jWDaJ+u)fzj9;de)h^)QJ8j z>L}gu1A_|JgiIGiMLk3S=kt&d_zMltLzX~}0R0m2?-3E&A;kj==>t4zpkyTBciOQloBTR zZ;Ejs*{l9f2|#DFK)t>7f$jKgZR3KLBBb+Y!oFMeBFDruzXUb?8Q1lDkdG6ZVHDrc z;NIkZor|Uc1aJUwg>dnUDfDclvm=5Nnb>EhG`%CL#L1OWBat-(E*4L!6pPugXfA8d z^qOCM9<1Ilm2<;vY~=tobq3VPIMWKGW)m@-1hUP_TDRC?SntnTY`U<(k*dFei*gu? z^g@*GLBdghjHoO9){xF4w43NV4HaFk#o%TVc9o=3vmD}7+rKx6{y+oaw+MYhS}8&i z=+WVxh)O{xG<1I?a6u@dFQd;F?EK$@>)St{M)QGDsQpl|l#D`geDv(u*SK8E$*$8R zT1e1AiFSm9P%J~X2ALZRWMB}lYTcd6Vwu?h3jYF8DX5)+I^9G+mG+K~O^{QwuKx%u zu>evFy?hxVf+u2DkYGv#&ZmxNte!BByk|W-w7O|6f#>~*r zL)7=1txt4ykQ}kKZb(wFs$sBy4+M||l6E5Jg~jhNfHVEYh?g%n|A{fcO~IW~QdUkw z7r1pK*rp@V3Xm$1jDRM6g+{M~g-Ah{46IGtw}1Nd5;O+@WdT?O@YJ{IAOsm0FVlT! z57F7V84~d_q;z~hvS?#f!%HGpoY2(6AyS7}gw`lYh%M*wWWQSF5k1}s`6=Q=pxLtm zGM@n|1@TgZ)SXjxMMLtN;Kgyme6*EFdT=8pD>vkM85}I5smTx!FvUN?d8|st#f8Moel&#S&_6bV-73n; zw5U6NFJ(0s);_10xej=5;PdU30DYcuoBRWd3kW=tS5~e88qL5OcBa-^su65 zygPZC$Q6NVIYhX5%FK~DMrC3xuB9s(qJIzdWV4Tr3k}-q08epmE~con7_J{Q=`W<2 zeO5&zR=`H1y>L)N@K3T1G@39!n5R2KBuXUftU{3Z^~FWTNC;lfx9LvK%#h!2>vq|9 z0x5d}VQe4t$s!{eTn~Fu1b$B+yvdatpW2z(yOJ~P|1lwftyIV-C+|RIVrp?cB25U) z4Oc*S7uTW;PQU-&CtoxCoFgeanG zXco#ztCZiLr2=0SWM=Na5A2Gi7j3L(7Z>BAqP{*!oj7swfO+0-(may5u~5O0jU>L7 z)QE>wQ6t}^o$pc)=kuo6cA*7QMl%hj9^iilfEST8G>iEGb{0}}cd06_YX|L9w@eN@{6(?)6`Dh!$eFkXtNy{Gk8YCA-F3ymD_6*fZlY)yPl&l8eIB@e5B?YIL}GGtgFqV)olD@c zK`$3wyc9%h%;?s!6*}~k2mO2tOF6;*VT4&?EdD_IE?q8%REl0jVnIPuvJ+3rq0zpV zk%}itL~^4q0}*0GI4Usah{(9EG+n|vkpr*fOb|lle;_Z~@A>odB`#|OzK>L#o8XbK z9{{v|>P?4{??q-{A;269e)KkCo{CFO^YCQW<%dMvxbQ%>LYVLY`?A zO%|?9vu5@@6X|DOoTuOzTV9+;RL6q=cG=&*hbRtkJb5K6rf~%GRmXVI*Bi;t937pANq4=ho7x%$OQBM$7_r`e>JEkcE4m*eLzuH zX8g9CK7GBpuhuZ~Su9ZRwDkFG21wPvBk_nr{FjoA0{^)oq0Wtc&rg%LMx}_3Sh5!N zSA4CCy?r~hbXak2wqow2cK?d!)ln+VHrI9C+tuC<*giMLNb6^tvXA+fF;{lj6uhdb z5@sZ#Z$2eGj!9Q+sC>-(;kEUH+}vkEYic&aNG^CMs*k4)WH`JA9w!_04u0lqG31RY!`GIxSdPY^-$%|JEUMUhe8GaERJs zQ7~A#>Bx;7&*y%+V#&WO2AuUjww;1NKr^w54V4eFOG2;3{RC|e8urUUI{F`i1WC!KX?1Bj0eKP?f1J@|eHTXM`q~5fb0(#O@(9Bz zf3#P{b5HVd*7)!-LmKw+N0W9`a3}jkn14x3-F()8iz4GXni0vN^ap~V_j7F8nfuV+ z8>T`_+x~5srmIBsx!X1$LQ~!rf0(De>N)em(PQ10WYS**sa-XEm&9HC0w>AZYK?6$ zkdk|gVGkhGvlM`El@niWP`Q2A5h*q4ONMXA%r|$(OaHlzs~VwlRB>|S2>dz!i-!d*%uVa z@u{lOtq!?M`mpr(9^^|3?={Pyq>ih#nbiOLv_4hHDbSxV^e3i_D#y!yzZ49qYWx z%pCb(eU0uQ*PBgYa-4>C$w&Xd8$BVt$x$(tzCfpdy|1uU0U;Y6b}4?!?+H-s4>Wa% ztzH@$biixaA7EpJgejpl$wm4-R2?0(^$lxi;;g7LQsc49B~&zZxO}T zV0?iQ7}9~xmqCrRY;1)FBRKSfzPaRN@^fA#-=wDedh~EPfbgMoihW`>^puQYp*ebkMhmwj zy~F_xSKm_5%}I<;T?{Y3k!+-q!W2ToNv)O~%#x~{C=!^Q@N3aNy3J8OzK|oJ`oLw2 z_clyBTB)QRY_7SuFhX#pn751Bg>wA#0R+w%{Rx~={~I`y2!aEFGrWHSXOjP>)N}yi zrx45hn^L3l7s@v3%qka#Rw22b$g$b?;uVo#^B+I^-}=D+?}L81x?SAA)whp^mIS|~ MCFLYi#B?714`>g#ZvX%Q diff --git a/doc/surya/surya_graph/surya_graph_IRuleEngineValidation.sol.png b/doc/surya/surya_graph/surya_graph_IRuleEngineValidation.sol.png deleted file mode 100644 index f24db033797d0dbc06df7562ef76112c78165403..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 60403 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 Udi)@~auG#RTuvOF3&GLq^Z)<= diff --git a/doc/surya/surya_graph/surya_graph_IRuleValidation.sol.png b/doc/surya/surya_graph/surya_graph_IRuleValidation.sol.png deleted file mode 100644 index a8f3fc6c2c3f7d15c74ff86da37696d0f2c0612d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 20715 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

qp|<0VF~2LoFQY+R zcxlYIp<9~Pg{v16-N1e~C_v<$VhU1e+-Xzpa+eWV{E8mec?Z_z$PDx3~X;6t{ z;Zkf$8pXoG;gej@dGSJj!rvYlZ6%P$QvbbfQLg*bl5WRy*~6+lac$M?=tw6k`Xnhl z4rzEd@=}pu*)lVt4gRS2Wpg-u^sbeYK9~t-qpqM=#=88Iru_2Gr(PM|!c0Tu^~L+; z&m-8jLmI~&Y^v?oYNpF9rn8RP9=oK_IQg-QN0$>3b!HpO%@g+MKG%6&Ml=oUm^_yLFF4m|tdPXS;TNV%XZMK6S`i zw(!lb$eUxIj{59~;^;bTzs}a~HG65tv7NaWz!yF=yL)AtzxpL%8)~jlw`+G-O<-cO z`wy|X7&2w5fu&f*oaI`#W# z__wW6IeHg^Sn^WJB&s!t?W)_C%plC z-g?;`_4m)&Nw~4!*4@QkH2M5Sp8VOso({f#>UZ85qaloyK{@)T0nDLWl{A`qq z!4F<74OJG$uTs_Dn2BFCUm|!Fa~sF;Mgr%rX8%|@fycr4G*n91z1+7NRUfFfXBpU? zC97@biSG0tB>Q~OkJ{SL8h%h=uan(=_dy8t*1-pNybB%G64*NIaokzKkxXj8v~}36 z5?MAwbXm1iW2he`#~d8baAE(L%Q+L9FEQIt3tRtP@TGP{!8CG|w~+|X={T{!=*;65AE-@=jF)M1RU&@;>E@Ia^!EteikE?Na$u>c)|LHFK1~d3~_sI z=IDX%PWkxRtt&xE**z}yIuiX=3t34UD6)}}sLu(V1F=h0BVT=1{VqT9y2ZQ3qDYwN z`jB|7CMoRk{nQbU@=MzB2U>Qn=)<~hcZYTPg!=^Xn26^#ttH~OM36C&7EFEgIbOsY z=M@hcB8K)H7eSbi5;O$4NX?5N?~oQu1R?VOfgt`D@F@^P1u;QK5F9aE1fJX~f<}rU oYXZ*y{s;fkyZrkn`!^y6Y!js$OwXd>w-+L^_m!lIBpwC+FLwt_OaK4? diff --git a/doc/surya/surya_graph/surya_graph_RuleBlacklist.sol.png b/doc/surya/surya_graph/surya_graph_RuleBlacklist.sol.png deleted file mode 100644 index 46b034ca471d111eb079d54a8a1e372df8dce9d4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 43182 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 F{{^w8?oR*! diff --git a/doc/surya/surya_graph/surya_graph_RuleConditionalTransfer.sol.png b/doc/surya/surya_graph/surya_graph_RuleConditionalTransfer.sol.png deleted file mode 100644 index 47fb63b2d049f7eaa195ca6d52beaf4110c75dc0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 446424 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

l^HJFlCkWlu z!WaN?iacd68;Xg<^u%YgiRURc(`WpL+9 zl{CTuWep-^v;tNPH(h`4hIv4Cn_zRN#ds_fiJ@-#I5YEXUy*eUp+pvsZV`%cpBftc z2#Go8UbRk0Kg%@`CLhRx;!B$T4s*iiI5~|W9f}6?g_b^71bQ%fefKpJxG2pmjX0zJ z%nYRb_5J%Jzzx9s2xEwK#g)BNyT1?KZU6LX``*2KkzZ#NZ*SzS1Wa=-5(4nBNc&de za0XhuE=k2v$_f0i)}_{WB7B!}AT~{$Y4?B28iOt~XRr9vT<;$4jI7vP_k-+JVy7ix zV*$IMH;b2Je5L=tC&C%++u-06hx@E6OqQoR;ja?|6{=3Z%aNtD#G$ym zuQz9{%k)4GlVRqTwynS<&)q>jl_4b)+!G9&9-(G>*)jLsGw(U)AC}FXDFv~gvrQk^sjy)^rJQK`$W$hXmGK_?e7KU%@q_&mH77!0q=$VwZcn_ zmJx&xQ&H{y2#G-QY(^p5*Y!hcT78;NpS^3EK4l%JZt_sbeM1lxL@K^GA#%KH?_T=B zGq;CoTUrGAUvy5{XWXoahsJ1I#lwez%;Nf{v4s7_!~~B~HQ5U}cBG(LH@EYx_ksp zBW6DB^Xr}r2UYF+Ra&jLcWl@wy0J-B=UlA(M*Sg(`o_(%zWYPAzyJDiZrB`y`o0;g z3(=)^{}Ab;Dlk%6XX_Hm1W=@9u|`TuNs>o0;`837PJ1Fmh`IV}P*<^NPP*Y#K_;et1*NVdI6WiDhyEG{PtF

nMs|M2zR;avA&8?csWP@*D9 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

  • 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∾J!lKT_o!WDV70APYqNGx$o`JjguF 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 z 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

    VITHHxZ}D%984hnO=+FYLVZx^U6n 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
    (SyS@%ZF;rH#ajAXGRbHl>I;OD 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%0ARfbO0@p!6;?45MQJ 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 Hj~o95oW!R^ diff --git a/doc/surya/surya_graph/surya_graph_RuleEngine.sol.png b/doc/surya/surya_graph/surya_graph_RuleEngine.sol.png deleted file mode 100644 index f3dbdf8e1daaed4a54d9f86a3f390d8e3ef72f66..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 193554 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

  • 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

    %bQ7f^# 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

    C;Q8?dq&ByfjH(%ATTqxQEq zY_0l2+#oB*g}w6K=V?Msm{CnjOG4G;A5@e7EU;!Cx}9mDeJsYa*4qgNIJwa5wefL6 zYH;r|wH^Y?Bu)klBV#xi&3 zQ)W3ce+MvlryLz`D=l1ATHK<0G+QY$NmP)VtJN+RgD5mi%7D=>P*V3}gt^2V&TNw> zzfHb4i-vcE)@89+9&T>Uu+H;7KAFUOv!kuX(015AI=UySC+5p;HeoRq#J3d4De*^| zc7C3hF*9$RNZ*}L{5tcbUr-PcqLi684LqjUh;-kTZ1hWC-NsvShE^e~B`<}`- zCY5gjb>LvIPlsa=M6j^~m;cHVXQ(V{2I($nsy|DP)ovq zL%f_EOcMgEEB^pn`BaVo diff --git a/doc/surya/surya_graph/surya_graph_RuleInternal.sol.png b/doc/surya/surya_graph/surya_graph_RuleInternal.sol.png deleted file mode 100644 index c4af7dee187ed6edbdcd0812f9ad136107a676af..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 87221 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�koz!d4+6A0zJaFen?W=*rhdvftf5RH7Y4LA>iHm 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⁢(9K$ObQ8|;n3iE%I_ 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%0Aj={xS@N(z48MYPc)^on^Jlja-?CobCHO9I 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 P;OCg4%HfoQrau1%3)_be diff --git a/doc/surya/surya_graph/surya_graph_RuleValidateTransfer.sol.png b/doc/surya/surya_graph/surya_graph_RuleValidateTransfer.sol.png deleted file mode 100644 index b1e50f7f923df5ad9592dd005f5bf56773178fa1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 22927 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 diff --git a/doc/surya/surya_graph/surya_graph_RuleWhitelist.sol.png b/doc/surya/surya_graph/surya_graph_RuleWhitelist.sol.png deleted file mode 100644 index 3dfa8a258c2f33d6a5d53281703d639de59b7235..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 27681 zcmd431yt2-w=cRZ43H8@0R>b&Ie!_-Kw$mjdFK4pTwYQVuWsHTy@5a=ZoU>q${-LIDG`VZF4r!? zR~|1%i@-k^+M=(Jh_mxQaaE~-2*h2)YovgjebmaBgPPp#_|=VdtV^tQ2v+*KFJz1h z@)j?|XSAnm{nT1!L(6FwuPzfq2gS$@&5U zv33uIK)iDjCW8N<=)QtLlz#qy@a60DV?SaoHzsRyYfgu|;WwJ=?X3(=H~JM=6WuWw zIc8j3T-5K3DYAx_89kVbG+P_5GG1gX?JC|!d8Qc;J3ax6bj|QGrqe#uIoH;FIToNTqiFCQKm zxqA7sTA5|T$%F9l@TsXOQ&ZEIFJHn%+E`d@?(Afp-NxrX*{Iu?sxvV$Io@B7jgCh5 zs*}IF&tfvv68!km#f$V~R|?hNVzKS6RJ$C1`0yb=KVL*t^r2YTkNNGM?rvg_XAWC5 z{!JqlcDW+S!$rnK$8I-bJK=C!cu@BlM}OZhgc0S4KC(%cAt4~332e6JBClf(Wzrz@ zLP|?Z-*Bhm;836^yw!z1-j5x|xiE~2gX1qA$)Q}1X?hnG$IBYX$Q9ku*SFgd&Ap;6 zA%TsDMz6c+6YFiwG{e=T1boD}>A2ZI)NYns1>*`^n zl@5WP3c2d5lasiFgbFBBbVNi%P!OB#iqdxE#v#s`#v)t=k|wk@c6j-s!Tqm{8}vt8 ztxPst4G_mUds+v#g2}unI2&n zaDQd|-NAy@qv=WnD&RO(pDKQHi=Zvbz9CZnXxR3 zjvn(RVeQY=n8?+rA?LQG4Hoe^(T!s_mK^Zi3=?X)IsEne_wPwbNxi*tqMR33Mc%%B zD=*(y>99T60FM)PI_J1OH9LDzdci&-3Tgxv4vt3g+wf$vDMXGi#=*z7wl;T6qJDlR zZDZr((3+DsEkTbw3E$1toiQNX%=g#EyuH0&`VfwlS|ny=D;nHi`f zLcYX!w{8Un1Z-|LQF0bovOfG^%k&e5toe5Q`B(TZK8BzlPO+xioi;ehk6p1I0NsbfA;}Y&2JcpYIH><`%t5 zAuTue@gm#YpFi4jLr_<14*vLbbacQ54HijW5rN+eEAQa&@O%**2DeLI?!>-u{YLu6 zt)m(0qck#`$d?7`$%++HM56mwZfZ>=i?_73!8)_EvU*HMr&3{?4UHl-b-pX{m6yTk z$zfMl7jkA{;n(!09Nq2nQgU>BjOqS!ZLETl-!;k;Ivg1u-qhM!Ok^Y(De2P6iZk@b z6eE0TQ`5DeN3yWIkW|;Pu-L9#@^518na_~VB)IWXPA=$?idYD}@}Je!v6Gg$hadE> z#vUM(sLAo(NcVH8%!^j@rZv6Vk;c2NT+W^L*|1e1M~ws*S96gu=G)h=xKtTAIeNr; z2OCpRT9Jj;i`~luxsQWe;^OXxi>34|5_>4uxbosXBDi5&2lxNVl`C)Fya^5okqBdc z-#MR}oO}fXBmXwv;Y=XxL`q6Zswc8mzvBd`UwxscqbrApSyHn9JO0JcA5uRL&;Bgs zp3?*)kK>FF))9zjvR;V#Hp7ZYcB$;Z&*Q83?{!f!&fFb+Su5m)E#B|KE3@xX!# zvAbWQMQ+b>JOSN<&7M^}*N@hQnb7*ZglX{ee2R;Ukx4y^q*xXIQ#(VuK1c)<)1Dq4 z67p9E7%DayIR^$hZE0CqG*o#9cxPt(0&fro=&y_>ebk++1<=#IX!-eTYWZ&Ru84Vr zN5JFQo@+l}ZAC`G&+mHr_&Ck!SQ30e>@v;W1k>JCw?#M1w8 zDs{=4^&n=f7fAHcZlFkVref|FZ*Mw!`mC%hF%c1fRmR`F4kMbIoA=izVp;XEorWjm zqFnh+6>5ZCR_5+a{zY@%j~!U-+3w}B^B4R z=!)JQ0I>B+NJt`*qrIo6ApGx|!n?@ZY;`4DICZDO+U{m{?PrwABOg?Dqr3i$_l&2f z=h2yNb#--ZZEZ?}KmV!yudnw~8cartgF{1c$T-9pL!0XBzu*4HKHCxXtd7~&@K%{x zHJ~jIt+s*ls$_1yFjleeb?YHE1rKe2a0rtI1tp~!>GbSupWGP<35nHQ+hT8epcJjO zrR5DQtkEi`l3Gp8SQClaPoF-`iCtbDFKH`zB<3B!qEa3Z(jAi{JjY^k=o9(#=T9iV zGP1G^W7iOft315Cb#-;2461sILQmg8`}=>_+{+vJJ|4AD zeSN*IuI_g`H$#b8J&DV!u_>O!iOG@g^aRQag`D{f@1v>UtuPr!{}P%T!gwC|dj zr~zma9vlgk?Utzgo!R!oc;-_N`jh zq~cGmYXCxj$Qn zlJcp!=6`BQgS6g$e!KhoaPeamcKogZ2@Sf<-|ml(kGJQ(b)~ZR*tk-^;N>Z|zu13loqsiY zMS^5m*k+}FYzp%7 zW##3Kjg3GDSg;CQ(T-HwubyBPm`zm2#l=B=ft`K*)`N}1lfuHnA3vV&DeT2MZ@o4$ z%JBEc!OJuLXM6`p3h6UTU1{kqxCK>JRiClRTL=dX*pP*K?GcUW(BR1o@y*?kO;bYc*h#h+u0TJ3n}7Xl6#tYFu=;fmS+J zRqHf;5sd%c_8ppnlorpTF@@7(1D}iniu`X{p4Ld@ZN>CIq$nI}f9YNa3C;XVafC68?UEXx8lvxeS0%>2eVvAsjA8J9=yC03_jf6x@PI#AvQcGKq6= zk&4QYlJtAPgWKH;qP;eJ2@QXs(|1O&8yguJ$Kw7-W!3>w61>V zzJXPTD_!G?PLf%KvXGdN0FCtVFfwHdaGMMn+Ll|46sG%YdGqUak18vX)l7N_Gsh*3UHQ#KE5R zmD|m-sS><)Yf)VW*4EZE@X!l+o%Vu4LvvM2Br^MikVtz62Pnyaw*c^D_ANoD#0yBT z{uktvf`S5R4G0x98bD0ymG*flDRXs2{SXgMJi(l@}E3BT#pu0?bb#~ zm^FW#>ozxT0EY#M$q|0~*RNlOJt+>3j<9p#DoM1nsHyUI)9I+c}`5suIPJMDNvl9GAgv>^ypY)#3K%!>+W(;40(;&gX+ zzkmOJa!QIyIUWLm4QiLi=g&;4#ckbw=7?8~|6A>@S|1BB{P1J##xK=XUcx-3w>mvL zb_PEwL0F4(={72YDtw1F|Yw{OFyYQj6&o;3T7?Ae79ntyM#b zmY~zu*UwchXzc0PhRcp3xQwu;NotK{ci7TZ=XK`OpeH;&IPksm%(BkoCOdn3`Ggbn zeJQEmK>k2%NsUy;=3)9B@ssiNZ4}k>v9q`FIt_*3$A@vo5ueFI3p( zU%xcXes9(P4G+%5+(Q_zAs8+%Zs`NBqvzxtsI3*C3mz}G5lxo4O+-Y=V=qM)oTE~d z0Sxf`3aEYV@Yw&>WCndo;XxosawL929$Hk?)Xx@~`S@ISm-_TD)XJ^X;hZXLS5@+~ zUjlE?(wYikP-RrFTv%U+t+G|Wozb@hQW@{&oMil6MByE^fVK-jl*-fqvN-K7HRO=6 zXxDq<^-M`ef0QBiRqC8pf%?9_*;dI4zR?vnf-M>BF} zeZ5Af2^;tT=nFiXNj`)OEgc=Mf7)XO1rP?$2JH+5T0+5;6zuw8*_D_}2 zK`kgX>?RcCuS zBLfY~YXQpW&0(mux2|2L3P>w1?r+QFwpj|QszO5x$jraj2y&pZoSgOk8p_OU9WY>i5BW38`no#mM~~7| zQuH?eG$5^Keg$A$xj^wcTS4DE15iz}ld0r>N`19x>(WrcL%cWo`pdgVP}!gb+N=)u zH8i{dcqf#&89(2q-xel)CMRxb`NS!)93Ic^`h*5uutd~T>2x_lBBIFj!%nwTD_D8Z zHQ|cSh0JGGb1z0(+uC}Uch%L^VV$Ih{$OtV)8M1u9&wwL)JR{S(`Km`gg4NpSI4VH z#LRAb1JKP<5+?F%K|4yp+O~=aJKYbdlu=DpUR9S^>JdmwQ1PU{u z4-vi6ti$wPG-uu*9e01NS2KQ2>KcMIS(ro#6c zeEDx$uXvxBsXjB2py4vOZps6kUDknaBzgw{Soie zW#VsbZ+FqX0wNh4$ub~rxTiFJ@3H|Vd-V9qMS)O8R7{-ytzePcaC3u2K=V(Lj5QrT zwy?CMN`NwQ8vX~NX(1d+SO`$!;J_Y=2B@20XGlWDQ?KHpqsxHD3d#(iD0+Hda%Dxu z)IK9|viv5`9Y@{@B~?{XB*w@0C^k~Rl>+g;J5O}4#de;zzE=@E)}P<;N^XO`4VWAN zS9!T3&=x=w`mS}#vSIP|NQv_kOV9ix3l93Kg^5IjXkWVp2MO9&0IaV#%^65bbFCx5Da6u zY?h#TqS5G@<27zCB&?7AY*jdUYAPydrn*m*g@u0|Y)*Tn0UiT_o-6}WK>n4#cs<;; zZUZ)zYz`1FJ@IedBJt>2v<6h6-*nCW=jZ;Ntu2-BnzaCE^*W-$K|BZFWj0g;zY7)t z|ItDsM*HXg2I9Ex{_`do2W@c6Voxd&AtB-I+YF$)w}r6;K9uC>A**Bl^5qLMC?up9 zfCenPe5RJ2;0vI)|5L~_kb`nMUM(Twd z@G+97^I0a{c_9<(P#CMeM5;veC&Bo@Kv_-ANf0-0Vth3G0sg|EWS{lI@2TvPaqV19 zjtNxmu|8fU8THg+V^Y8ineTjPY1<791E9g+ z(2yS~`_j?w^2)){l`{0JPqx<;X;caQ4O^Q?{*w?<$i>diKI&RlCtK{ zP4)9Xfh+%1gs&@6y7>H9*Vq_5Gc!@U&6S^j3-{nM{*JNO@

      JVNhX1s#7i7QBJQ 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 diff --git a/doc/surya/surya_graph/surya_graph_RuleWhitelistWrapper.sol.png b/doc/surya/surya_graph/surya_graph_RuleWhitelistWrapper.sol.png deleted file mode 100644 index c3dae871da5179c9bda3afffe3951cdb569f25c4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 132320 zcmd431yok;+AfNXpkg772`WfSmm-P^f`WiFN{WPlbQ&m1NrRLH2nYyBm(ob7fOII` zT~g3a1eF&_(lbF^!I@4A-VPmE-tTVAH%%|gdR`SoE zQ$KH6Z94Mjj}4C-_ntq0$WI15btnGZxcExu&&Nt6$n^gD)B*Vu`~G|=<+()YpAWga z?f>$(U-tGY^Pf-MI{e@KRSAtdZ`}S_G6$h z?iXpshgtu2^-2o=)vNavmN7Oyg|B12fB$~CfO*ldHGb(^dSV^KN1Bok@`a5(Yida| zNHk59c)XLYEa0TVMOoR597?Q?`2(y?MO}Ygl$^Z$-t;?7W%_9;HWQj;WMq>wGif>L zWGZR;J9WxDQ*w3^ANM0Z&NTcZQMx0?Do!bpmQ5|=?d3ogrObO8Momd3R^(WbU&pYh zzH}dSEB8uBNPK7;Yj>E)Kc!WW*D%1UoYedC$-x-=x#35TAE)Y+?}{A|a9rd(D&_rF zHbUsw@#8$!qc>JoR!Dd3&>i|79o@e;-)45ZErX4bk@2H(i(hkdbC}Ine2IJ<@i3F> z^Xz6q1TC4Xf;o$L6Jsb3dq(iexd@Fly7N0hy5%a$#kjG`~zy*q)Y`YbByAdi0a%XjbG zEB%jenyfq?bv4)8-hAsF63Gh} zzNhL*=jG?yjb{&Bl#?5n9jYhEoBb|*Z}98=ii(Slj*f$!`NB@WXH!Pov7;}RW~p|# zx>s;~yT550?%@@lm9nGtWcOJT5fPD!ii+-Er5@K4lyIV3I~wYt2J=CbbmdwxvKX#D`2YWv{fXYTG5Y_ExZ*z~hHl!xTlv18hvC+CFj zc9W1`BfPrcMT`CQJTS1dHbS^1Rgb(*WX7}JGAm1c*=Ok7lU*CSCnj7JycLL@FGg$x zGSzGgrlqB&GgC(xl=soo{%Kb8snB!H+Of^m$nsBNKe_^5tI*aSG~rw!ROyQ3w^a;4dx?#YPQ&d$Y~i**Pmao6C8{c6xf6 zn%8Lm*|TRC7Z-OQIB+4DU4z8k+gpF8za}du=T=$^eKHPPs%b}##Xv<>l}=lR35jug z)*hW5SPJ9TkK0{$((&!4rmm>sD6IbcaNAIQEXCB+R7qJ`szu*rl1TgElbucr9cnH| z&Pz&`+*TbtC)sPT`g^X&Urx+C&#W`gF0|)IvKGasJIVQvv9~4)mf0^|x^&vCGkp6# z=E<qiI+_-)F_ETyZ z)l(V<9Qm_*sW>!s%RFgtSDZHE>PpF)SDKPEmd4Cnq%U74BQ~&fvSvQZsygcK#lDo# zgpN0sRM?B!RY7c{?b-FiN|L?1KH}ta^YG9J+0WIij`x0=t9tIlhPVr2&q*=`$3G zyW{PGk9W`%6*w(dR9B;1Ji!j02`*eYuQh%OJ7yR02>H(r)J70>>$q%q_d?;i=-S%a zqeqW+GceSQBp1q}awVExBOds^9H(oNz05<+DMuNEtv~)LaoIIPm;cYTi~ob2=l}k% zs?=cR=MUaOe&B18hH$6-2%GeXYNH3yN^i)$l3~%E9sJg8oFShab0tj4&^wgJz%Me= z*d%o84<8>22BCY0goIv%gitffMLKF& zCC5_j*>f_(FK|>pv(d!eU7g>JJMQ_@eaHO*0wnL=R z1LbrPImhJcLYJ`UTJA(a&*yCikFl^kYtnLwD1JiW9}rN2>e*7@Bz*Yr;kR$!sw;Oq zo5u!OPxsV&wD+wx{mb-6cY=-@vZePDZxz<#~?-Sy=+>QQw{)KIiV` zm9LVh7!nl~rO@MjP+S&u8|`egHQhse+l$j^Jy}D)I3?Aqk zXy2zaa`wBPeYiD6`}0N;qaW{|*61G<7N&D$k`CIvckhD^(}7Nh3B9H1J`#FCi$~Yq zT-dXF_Zf9{`kz04HpDA>pi%{?Q5<4t_r}rbnfTLlOj?&~bt~22aQz)mRp}C~0 zO6$*jrKqhfx0)+CZ<=gwxG{G;rYj^jD0B#i#H_>Zx@Hwr9uOB&jltI}u(qUXM!?fcI zsxL#Ph-UoDm#*L5NTu1$=$Ah@j4q>%FO!KB2?e_2GHN(M^qd5xMADr*nb_HPeTuU` zfByWvvDQHJ*Nq!Dl9H4699&hy|g>r_HX>)#%6qL-$Uw>G!bbI`>7puSG|lfUn}nMV}(W{**pI7Dsy1W5pw4M0n3=hcsU@nQ04F4!*!~H3LHRC`1O9_;WE0q$C8qg z-UFCQi1L}XH-CG>RTgJZ$nwTiMW1Wr@xbmq+4ZxpsmcYc8|zG(?|$C$@F)MuW9Qj7 ztQv8$b85}e?iGzgq1-9gD__${2c3$W%}z^8yWNz;(An8J+LHD}Gv8jLsWHC0Tl>Mo zhnM8!4A3_--zVYhi_`JN%TvVZV*Ffw96=O!6#%k(KKk^nMj&M=`Pq2o6#p+4vAEEdLR zvQfME@lI-;cPeSjS68YVpB!|)h`-cR?sJ@j!-qJ=`}aRWUA%eo=DnfsZsFnde8$Zr zXDlpI-)u7&ZcJ38axL|s^7r-q4AMZuI@*~h>z7Q)ZM^5rx>o0Xdz_Vw%4H0M=&9nX`zPYMeQX}E4Z z;wlr+Fhl)|0hWxho9WjteMYGdQdL%8U%%s^So?dGw3vp)moHyh_=qzzm(5Oeb)7b9 zsAwLu?im@m)B5qYPJeC09Wruqh8`AGo3Yk(%5m)NXNjDw)$D0i!+g$r)HO6}UZ3}P z4}!(6!_)8Q5I;^(Mgl2D2-~Q30OYz?Tv1LpQY5Gk5Y2nj^OEeZ+Ng*#A}M+5f6Nd6 zi(UF(x7H-1?oap8S}n9HD=R5q*z{M2zKxCTdYcrHY1GK_nBrh|-j+}$Sbgi}l7)id8Ng6Ju5I@Gm~L7i+$bYm+nqZTs=xXK19A#i=^(c zk`2*jHBS1EWT1^ooI7{BC6x(~dMj#&1u8k5)_ebUbUE|f`&4=9guY1us~Q%nearO!fiC2-mUvr>A!y0(Vif^L9!N$H+LJ(9*87pcDR_+iQL9*9q|Cf@J*0~YnRO|ws$B!ScPgKifEdxT> zvv1!ykSJVoHSZ=GXb%5K*0raKTbcgq;L&2qfA#zI)u^~9PqvXPEtRfIn*wIt7eW!4q>Mrj=_Q*k6ccWMK0kl|r=FfA zjg5g=<-pvoXj*>L(ZO#3_-R^!*D_`5BD1ChaSf-t<{#{f(s1xhyj)3fb>WiX;Kd#`Sa#&+x#OVYx`@$%v3Z`YtHh~WnE`mYh1W#Ysj)9$9->c z+v)K)XPA#2*!=->5)E-vxc z<9<0_blF0&Mj0vn zDAwkalgrlJ0%vehaWXxND_9b6mAg~F&SSM1+B}{;Bh-lWCe5QKPd)`Kh;*7)iFBO4 zRQ{TdN&45q;J1em5w2dpE?M(}_x>+~B(asrbMgubG~&)8c6N52w7k!--60zRnZA(@ zX7BCo1<={*DnB>#AAyvH{}gPvVq4?tEE{Kb|F_XbK;OVXX*|E%wz9Lq>t_~kX1VOo zYD&-G-QznQlH2UQ=ctUK;k!nY_KdANsI^@!w7MK;yzJ&%3>YT-{r$bT${xA71=4~V z2>HKwVZ`XNVh)mHMu<4+uV25GK?U&4&CT7ub0;r!PyRCM`W&k}<*3AK`X%mr%BXc( zp??^SqcH~4l82y~ee$Fi{NC{HS}|0U_V+hZicYC#eMQ-Rfl3etDJg*V;QsyB#|2T7 zxS%ued(rZ8TjzG5)k5lP4av3~ctLE3tY<&arA*ui-WN4Sr&nFzTNb|DIV@}H01U1F z?e+OT%5VyeWu>U14a5b~4C9s}sAq`)9e>k*S%B4Im6J7H=1R-Ufp>%;>|BwN*#QibG|OmE8-B^&-afkS zjujhm5h;-pEgTi8dR6Wo9&dm*p&nX7Ax%w7BfbK)x&*WV;_7(ey0i1*&nILx`FDRx z09)GihZ$FyO zWkB632FsO2b0Mo?NkEb2^gC22THbYFaUr~S4xm1Qg(S;6&~fXMrlh0<3Jr{1l_n6a zDMgOF^%J|X^d?dYih+`+`ylO>r#MymF+myA&TPwG=yXsia18J;u%L_wnOtFz4$m&ozbvl{H_1`*|;f@tYCw1*dKA?%kidKR;y1+$v-# z0+s&O=LcIz8s4ky1BU3#ccA(A_^UbF^0>LV`Mrrw1}vb6sOatbm>SB%=2)DMkacZr zY|xpiQOJ{2S%rmj+h_h9r9xveJ)4)#tG_o)E)7I&;xy|N(XS1!1WmpqBhw2k6D#Gz zINFgLd_2;2qt1>^TX(#KU`4INSvEQ0vL2?a9c1Rr|$U$1wH0^Ok7BuLafE_+1o&BuIf*#6Jt#a3Jz92@3Q=-2vJ>lHM$F{&hye%vG~D* zjTd|vuK-M53F9LkF|Z5T%)Oc|Txj1;rIxn|MGk#w)3apNbmNx2W@cuDl!D!iQ}t0{ zPSbvfNeDX{GJ=?x7#>xGnA30dnUGxv#bkiwAe%Rj&0Eyn=X(6=+>`Gp%K&*()6=i< z46s>0I4qcg;f*v*1?WLU1jOCwiifd>mi98lE~0w;Z{5XtEy&MmBUddfEiH}zW|b7S+b=In7_6_Yip(`AME9F~dtJ)wP+3ty@~NX^^+nHR zLe&65-Me?MywUQ@vkzT=m7Wh5j7*rCnc37`usojodK{7>w6bk3D?JC7R%YrLW}t}s z19MGI7E=h9@k6=?j7ID0ZZQ8-DI%oEo!aj^{~kL2Qh+mD&~mHmqeq(`Jb1uz+Q*|R zFf{+YNia)tC!X-u0EWe+X!D*jZ#yrpKK6PSxQ(u?1&oI{Id@Y~P(TiGo%R_pN>UR4 zCkhYQrxX_5O2I!RdxOTw+@m#N{1mQ{q7Fg_N^Yd;Rv>D`BR2k4w zh-Cd1<-wbaz&SOhLK6~L7uqf5+=hjrScajXgSFM*mkc&0D95qhEhs2BGu1@#r@;hV zJ&{|ShpGpj{}>7oq&*3b18kG?^ZL~xTrw|CKLxYo=H_mOxr7Sty~?hccM(crT=r$t zTvnA&o4O$aotaAXWdf3?@A;C@ggy_~2*lTV)F$qZ#(5SyW|QU*H+A*(g9MpbSv_#6 z-(al`Hzn6$wUmsu6k{RbPz<%C#VV9VtEjYdi#; z*td6Yk@)(O9LklsrKJvbC}UTdi#EHj(M267QGdF%Cj%Y%39A-QB#wCg5HGVp$!+; zxT_!n_-3ZZM?4iro3Ii*xd`1B{OjtQ3p+I(r_M*Ztl7D;8Zj|5cYbnVBTDwPhxR{c zP(M-Ib7;Ds1&4)&0YelJ9%=Q1E#xxJ&TEv*7tWs#MT?=vk>5v4YXoD=%#*7h4LbK$ z0sebPAggjv>w&#{Z~cLQZM~KLSMY44O_sYKQY5L=QR@IORnwW}-CS8+^$HFS9_q-= z4CTD};P$uIZlSz)f}l_q_S?DtD;!uPuM^CsrjJhS*Dv+?7Kf7K<;u9 ziHnQtpDI7d4>ZawB$U%Yjo!s`tAtc49~#38T3(|NP?|7GR;3VhTUt3eIUdKwyHaKl zUkZrZMRDYo6I*)Ql53N!vtD)Qse46Dps(*u5OLE=RyMYp;bPu@2R0WvkHg~s9K@!E zjv3pSNSwVb*z~L`;WKmb%E^qV%$aY0G+s|s4TMQopPniTJV-~rLZ z6fLuGQzEBcd)i>>`WZ4<*l^pZYzLY`Hjj6U9G7 z%t@#%)9g4Tw19ws%VQkyO#zw|hr=_^{Q=3@PJ^MTVb%I+Xt88x0Fx&d77A~9dU%jS zSAU7V0;g)=@o;03MsCqEGA0j<8sj^zcF_Hlsryf*I+paz!{;9FrlV7fv+UfJ{-+7g zzhc$PeD$xuq|qp(L1{GqsmaNgdR0MsYthdCDOi>Jw_x?z?7eh*%AqBTe=5CM=5@gV zA8X4judnxq7`l~$aWsqfYiQ5E(*@_pJF4DYdqYY}N*HS>qquh>`T*_g4O}e31RNT= z1d%_9^y!_Zq-d*=ACSH4v&?nS&CDBBTUuKBBB6?c4{iEiBzN#ivVTyJJ_%7*wXCY) zOk9Dt=*d;~(WLFi^*H%bl70XgUi^MuxTi6omu2PU7*VkwnGf)*F>hJ^c1zLW7e#@UlTViXMV5pj)SeO>9OiQEn>4~kc zSmK6nGurj;@sEm{n4OXd;rvX(j1okx1KHSwei;IygFd!#4A8bd48ne2DMl`!wnyj< zd{W-@TsZDLkbU00iIo#yZGhy^1Yy23T->E|2ZK-pNq@bZI9nRdNxKlz9gv^OK)@7- z^Tbysi%sSRauN~}R6ZK|!YQuM!!atps`Q;s8{#)ZTa0Xk5sClv=h~iJ%*T$Eh|E;; zMEBbbMF-PwI4&;U)sUpoMlW=)VrmH*z)tP8$tU6h85)dV@ae;cUtK?88FSoVIIzi5 zCBv-Cl%yW(n=03-2ar*n>^#Rh^My4zpjFJYU0_oPG%2DL1~3F%@TR{_k_LZJenx!u z>pA@&?^V1PKx}wX=pi|af)mRunB z!O!TP%aLjSh&lfr&p{X@PTumP;kTlxnSYL1TclO$3IdxH?B>FUvQJ^vNU#UBEY+XF z?YTQUcnw|YvdKYcxL5PC+_LmjM+Hm-6Uq4T+{ToXX z(&-sM3-GVQLPD)6tMXWkR|pmSN2#UqW)CV3KM*mab-%W8z>x6qxIFvXSw~(bEizH# zW=?eMDtZERBIyQ7%``XCG(fPo^anR3BsPYIhR%+*)W`MQU)QAMDO0!F@d>sZDuDn5 zt5_uSyvLZ9-5x*wH8fNi8|C~3d{F?p2V_YCeA{%|4aEOdl51nHT6-X-v4w+!L&#>l zx^Qid!@|O%;>(v?uu&g9c|z2K9P2T%Gn$%=sLPwQd&<11bt>xW3}6qC7&m{o4;_Hu zTe}!VE=Gwtx%>DW=i>_k^4d7rpdiQP^!r|!&p|o-Z4{g%Cr*$aJb19EsA%weH2GD> zst#N=ftc}2y`A~te(ra_IT;yC<^Wvo%<37c|C;PrVw%aL_hmmQ z=}=<=6}A=;F0`H0j&%Ngn*f`!-sRNi{^+IyrG#$kO)vOMfFBLtdu`*UO&f0H*>d3= zA(0V)9$~q*V&}XvC504Sjhb1$8yB&3PtY}t8s2^O;3%k=sS~HTdp@zGq~zJE)Sql= zp-d1PmjzvxVgg6dB9PyeLg!T(+`1+2crG)|q(eo*6Qtuo+)LrcjT=Uz5X)pPUUW}s8;gNv-tWcV zdG}P@#OM^_Eid3Yx1;5S4Gs><>kx$vqAmR#Q3SCPH(&6ZnJT@%aq|GXx*?cO4Pp=s z`T1aaL@Ow(s;UxM>h;&3=*;(C>%R4Lf|9NCb3JsBO zfu%Q_v(WTEmA(H>3cPn0s%bf*k7uEuh6-Btvn4t~4uKPUVR?Q`&|!X5v0P7Am+<`{ zY1?+BCs~IFa%Do8O|(9z#R%%zG%?qtWdPt3ospfD)!o;39>eG%~8{y6-7}ikCzJW^Zq8GSoG)h!aqMF!3SSvk88#?t%?HZ?S)k0b=w8rbnOIojB`gsD@&#a4G>n2jF^$CYPry?I)NbTjvyntO zPHzVnDe3575EmCGGQp&WNxGbu*tC9cOCzcTjVFN@4pe z3MkMq)99V{9v3)GTp%7Viv*(gB@%E`p&r&xL6Mk&oHYYZvvD^i<#_-NxBk3)Vg`Vf z-{TcoA@m8_&z?X7@*YEBjfId%=qBj80j(UOq7i6Y1TD_X%S%eIeoC+(1dy*AMvWv| zCFTU$5#Jadjr6_+-S5U^XE#t3I9=FK8xfEz+C(Ap3IB9cH)UHIlxF~2Xj#^}td3|A zw)GQ6d-uu7NmkPc$Zk9^vxz`)bcTb2!=}l;V6C9mwK|tI|E|?>8-!m4@aXrin?)lV z0qyfE6m9gXMLc=eUk0BEEc|X(;Wn@WSuV!ayUC!KC zTW~p}gD03)3St|z5W{M6_$}BkM<$MZeYFXl252_`<||@xgqn`HO*enx(oRHfu>4^J zn7TXo_3+xn`kK%2C`V)=_dnjna2bMBo%niQPtaw9vVg4C>|7-mR6dxUdwkoz0-c;- zVR?;ei|hosD`2U4o#;XUZKmP3BaDudpDhN|(v2v;eftKa?gel3vBP-w6Btrbhg^Ss zZ9-fPj99~{3%lX_yK6_0Li$9&yEasns`Zt+^#BzjcuWYOj!S*P0PewHX>>X}v|Lts z5&F}vixj2SA))3srBBYEr@iV(rwut8(KXpQ$GFt~t%OYv%jp){4G4-iWNgi}aj!^^ z%uag`6b%AsVtZ4I*m5GW2D6eA5(war3L+1{AV(oZ5&MCJST+!c0OTQ35PMjg4lX1# zeTA!6KS^`smw-$~&?k00P#f1A7T_-Q8LKYuH)03&0ZofO(HV+X%ms?2B(}FeB&bzr}xGUY8HR7z~+9T2nVB_%Eyp0TpyeAN0%Y{N1kAlAGn#a91J95ZB2u$bg% zirPrN5@51xeQn{rMs5&90!^#Hb3o>cEvPdmc3tdlPtyhumk+Kp$!wciScnDs$eS!8 z&s+TELHyJA;|ZNG6;tLtK7fdZa6tDB5N$RQIS}k*`9c>Imn>vJO*d^ZY>cOb6ihE- z`!$ZMHas_B?l|TI{!C)*B;rCa3nxKk9>SsfaHokqHhC~$pgr62%oO)Drdta7n_-Bn zW*ArE@{wjZhMW{s**dgLMyJ_ppnbBCa$tcOfW|d7);a?4Wum*X3H> zx%Y-7V4b8H)Wtvv1qSQ7YZllzlP&_*Ni07|2{>>uZk8a&3d>6U*#g*{c)FjfsyvV& z{)+R)oou1`TSOhV?kO)lsdYz2FH#u71TQg5W6Fb)6OBHCNTDwpS90`&(1bfvJ9h;q zeY|0zrj2b(f~pzqoR6FidJvI#CVB;ou;&pGgw_wm>y&@AqmILr+?LxR3xK#ZUB!WZFqH9;H*#+yju zxgn@GhW*-hov5KoAZ z2Iirz;9Mp*bMWxgPpxVQ+l;?`_s$)tzB~hHLC5nZL`ss;uEMT8r?Brge1dRO0Y4I= z`H9SdDxZBPEXM&~KHM9Uhg%JDR7QQy(9kf{N2wb zUYQ#Y_w~IttThbqZI@iQCS+E)%7=lFx2TJtu;$&LHel1n$w!kRPN$7w6o@JAKrLxV zWFW*YjT8XR?oIr_JB5l}op4I8Cu?@3R4-%e-N?7+g)YJb5fXxh?2LT zu#;gPZr-wm7+-_tU1sL8tOlxNUK5#V(pJWroF_jlfRkMZW%qJT2a;`|_eAg*mJ`bI zGgK|YhlCm&YGpR7K0DG>H-)@-Q}S_M-axP(df+8QdlwN?pif{BLt!><%h-uyOc=oU zKFkV4qrwxDT#jo?18~)$IBzbuSjCmG+f=95b~K_L`Hl<>4?jyzp0JuQ<5A8vDBcdC zz?*{?LcK2?43UXR$bN!Jx*8MIIF{*9`Cu#$SxqGWNv4|aLoe!MAOBU2pDyWLBXE26 zPF({7!dW3uFB(skx?@Qw7nJguTmvbU653U zG+#D*c5n8|!hoZim|KQ~g}TM%nozT<<4sJN4H-r;w5I1xf!=BO<0%!3w@~Gg<=>Tcg{{<`ut~o7m$1MFHpe6Vq8k0~f(rXrO%vSoZHg z3FrZ1As{NAu5V!Ad0E+Ah;(4lp~;*F@Wx~spvqOC`H-WmtmHa7Nch6Mh8q)v#VpOu ziPFoW7~c&D4qAz#Sp>}r<_?et5qLx=UtC(cmZpCNR2mjfPTzopq$vlI3UM3NHpC`G z_J16?EvqbAL({|)9&i6FO|ecWBQ__-;&WdS<+44c{k60Y%#Gv;Ju1DIcolZmNys^p zJEqV%n7eYDHhVF+(z@|p9y8FfLNKZUgqQO$m^h84K@Rt40d;HENNwZUFu>1A- zomUM!J*_@d5${)O7d)eTz4A~o@53X{F4tUZydJH8_R2=GjgwUiM-PdUtZ#G~?rnNy z?QF6_zOwxbMUkd%vS&RDl1g7ta$u{WqxwC6-ffF$4&f}~#L(-Q@X^8kMQVzO4oTg` zy+`&qVFC=Ibu7em?^T3F?pm>}jVN3)Wc7`Tl0!|#kQ`Q3pr`{RhES4V;u7m06m;R* zH+O~dFqM$ze_!qVcCW_W>`#?O$Dbx2 zkaJA8-5bv&;4GW;LgrQCqSjh`2ulOYyYpw9Nu0NoevY<2YqCPNa#`a(%Ti-$dx1^9 zzEb6>0zYM@4s*8&^+3z$jRw!|kQu~B9C1B|}N)e~3}y>trTiHHSQj5c$5Gm2imb?ZnOwJ{$Z)Zyr&E85zJh?QAhR!C4{ zLp?%iea5s(MM>!kD2zMD4qR`^omhMqzp~zwJj7G^mg@4}jVI4YY**Bdd*GV7CqQ3q z%jShUT3b#vJE#RVDmJBNSzp_;NAegc%Xxd(s}h&o_H&=~m(k~DQgC+Zs3i znzK5(&{pT%;p}bXBhQ*}e%!ad^qbrG{P?lvy>BOX_qqE$-b?1yXWicf;Wk`?z8UHQ1Q^5A2isM+ ze*KX;`*C)5S+YYQLa#x7=N=!(*d`n6pO+^B;j{wx+ni~35cD{!!&Jz66zS@7i&a`{ zMff*x$Bb3>gRiFUSAUeX=vmMI9@C3;K2DRfV}4{_M=9i*L&NOH`L{ml6qP@8_l`X+ zY566&Xryl%8rC!1L*Gc>=RQt~5APb>rL7e5&Gz*7F5TyPyC1SWtP_Zm-M#s&fPZ-p zfjJ2b4Qgu%Kfl*P@Z`yp1mW7SY3tWq8#B}?Ck-Qy>k10RgcBi`ZN-uN_bh;%0ot{$ zu5PzQ_C*;PT?8;Z8H9s?;13697GC3ea5s*)@GM>SUBkOlJ6wd@Rx{I@TsW*lBiOy! zXA_2w+v}+wqF}V(%^qzU8*uH~Fh4YJF6pq@H8LY|NBWLF?isxu?`T|W6KBlRv9@dv z+r|hj5vlqq$ge;}5&$4D6%FvsI~YZ7Jo@nGIzii7FpvXl>If#D5%nXW`r=d%F`i0l z_~2`a$4N~dkm@B~kACeJwaG>QT=!P% zL7S`6Y@6hI5NIF1oGngK`rmFe{JB%=j zmDSDN>h$02f0S|NQL0jjR~W-@hW9%(FR5zNR%pMoJE0R_&RKT)@m+(gWa<6v8*-~_ z8P`QuXeU{3pS>NxB7G@?nWtFb;iW+Tk}b(w&KmOI1d6XM9z~ErjF`twtzyR%ISqD( zlFY!kj%j8X1_p?kZ6cYBp}g#+{xAgKE+j-{%kOqPi%WPZsaVwXN^8bxa)J8#*57Ks zdD1Od_Qf;1TY9z%W>(i6SUsTh=zVvvtJYWB(=zX0R9N*j`RYnfTiIcgP?Zkdo5pXS zgy)7LSBn-EDr}QP&C(=+0Wv~9fL?tT_7HegKOA#28y+>XqNu|XD&#@2l|99i6ibH} zw@IiUmf@4_r|sb_5xV81@#5=78p;bw+miL|DlEKj`*5|3gl9)v(iqc>j(p#Ib~i0_ z7ZZZmq9Sp__rUxPs1<{wM$lK%tq<=LiFZPKAxHzHGD7as3T7fr#B*o+$~DH-`PA{r z&iizOwas=dPwNXxKC@OTxJ?5+PHJ2D zoHsH}8G^N(1qqoEDo+8sbQUSLBY{e><;+1hXDW{Rd`;1jBEFIB1-|iO`s){&N4kC` zd`%v_Ir2I0yPYSG*E#PHYo#m!REssbDJ|!nD}j3&kJ`RlJp8Smg;c_02IV0Qk`jg< zZ+tY|gEO~abxC4hGe*;(O^IB1;|uEMjY-PooMUGVQ*giz;}L0_KPe??*Rl{-@Kkty zc*a~&LM^4rg^J^z{e8zPVwnLQMPrZKO5KXKoShWRY$JS@Qa>i?tl{_s+h0$QPtNS~ zr%Y!8xEhFZiNtn_#5j;S#*&_@&~ACP;Yh&J4X?b%v9BX ziUeJ+U-k{!oB-VBk+MC-zxH`NwUAuOIdyh->q&eOBp^a}BJKpr)C}%~2RaTV)ZSB= zwCM%=IFM#QR&-nP#LO#P=t60`RCauLuxwt5R<+9%J}!LqJ&V3`@KW#XY1@KsyRsK$ zzj5EYTWQP=Ekl^HgN91OXB?6&y_fwy0?gxiGqPKE(N`cKbuFQ>fc?^LRZnrcFC~?- zR3{a}DzBLHznU_<@go2FX6~PUL)Y7$`dEnFy45H-K4NjO>ydNMh~MV3h6b8;eU!*K z)nUx$=tdQuw6?ML>e+r+lc^tSW=kJ~P_QQ_iR*{`UqJcHnFs`Z#E#+VY!I2;*l?-cy3?9I=(qF7R!$1~~!1EiLZpEB~C-Oc_KLD@+NMU&s9Ik;>;Wa*a2 zja4J-t&(Y~k>Av3A!wf;3A)8?*)M}Ex5e2iNL`}DK$N1Q;ttx=?@me=o*>?IfTbJ2 zJnc4|9X-6BgIK86&EFKP@6&T{Td>OZLDyIrSu9kQJTzk~0ygG_QT0i@PT^wR1V%AI zIa7^WxJ|SB4j|XP&3UPhimbDN73cjf&|0?eT-zQ_f87Ojoz-fpHyok&B(KBn^ z|2N-YaLyiTF{BG|!dXZ4DZ!^PUN?o9vDQ~11ky_2vAxKd71tYWPLYWci@$5fj#^GAH0Mas~zl2EXql&Lg6RxKkV}%0#6q=tQCXW{kIQ z-xi3dWmcJwN`Gg&=bHBk&B2ui$DPt}3+2im_{(i;s$_*u(&l z05Q6A2P)Gyrgy1*ciu%1FHpeX-1j;_EueyFXg8ZCajyz$Y7S>d1g-4YN+B7#soEO zhQkkj5%0RF)V;N~vNSmNduy;&@lJjq!)-$YfQ4KR^TrTRv1@f~p*F=OC2c)~>0082 z04PKXXmEw=t7dR2E1`@)6!H%O)u@AVM$KnT4G*3eLJbHEoI)Zejd%kGAuE3cXe0z^ zc)`T0PqMN?Fd6Kz=ja9E2Sfc5qWb-PO4!Ob8#&x6Uy6 zy|%i1lAT>2L3&~a2>DG*lpz1m(Cw#_YJ`=A>!0IX1KL^Vu6kbjUfakXQ3XjRl+T0~ zvG+rO2cEC|YhdB|;B^_1h$MDf=W?{zZ+Vrt7hBVKSF;QXZ73xV$5M{hg`*e?IgF}6 z422Rn5i0ASNz#yz8x#51dk6+>@VZcpw>Q+~$b`z20c`9fA`00^L_;s#Rk%7&2dVHD z_+Yzrn@N^BJE5J4tu5-Xu&^M0yd8LC%bg$Z4@0VrjkG5VuG;eH9EE7f754A677YU>cqGgG37zLatHe&=JOm_XvBg8E~aPa58ad-t~r*QfL)3S%Lh%!8^;cQ z8FATSW1_i$g4;7T0~O3y{s!>LSI@dz)h?hXn=zC*bz@e?b6oJn`EMSJyxq#-sX1e+ zpeg9gY{T@g;lFvIp+?b}X5ELA5(v%Lvi=JH-x$l{a@V@^50l?`)rAlCK3@KSx3zfw z`gMy4+`C>#w==k7P^%AX6NCY2P>=-wNO7&)dwftZyHWYIr+$^b*D565p#WR{#Fi@Q zn@ArA1O>sx_$i$sd)6>P@Qi0}*j{`&^?eOmPl^m zL3S!WA>kwkN4aSx@i9zoeKkCdn(r<=p4IbyWVP2{E=1IUj|AKMmCZyaF&BZi*>ECf zV?VKzj4Xa3y!dA~T1zjaGF|AehNo%q2reN2tuzuUWlOg#TBlS$G58 z{(_h=C_%BEOIM9vh#vLw%KVb?>Vrccon=G!Q82!@U=`o8S|XaVzTubf$avC07^-rqfV*gP+~EjSb`60-CnG~K+VaW z$|8X+>Nc8Z&L#8q;`@;kjN&5i!3$6@>akV~zLPzkGlI8PY72A)h|fsZLB0KeFunNd zpLNERluCv%4K^BKe>G`3c%|q#@o&1NYjRBLqtsx1ZrxJXDN>2tn8_2h%Zz3eq32C+ zstj^x?ddJGHW4v93kAie3me30p%q-9%^rgyjTS zsh%7ms1;@-*4Nhub(UhHPaC~Z3H?3DK3~_%Bv{r4K{phQ5D~j+nq)may@J;2bM@hNm%%w})8GW{e%2?OxL7Lfs`0=plK^mH;N(s>)Kkk3mwisELkX-QPA%$24 z@aiI_*NDP~u+oBxxI;l}ZJ9&Bw1mEo@#unx@)Zys;=H4Dy&&?hcGJ3qqlAOYKFfMq zFs)q%i#H?PznruG>~7VpC$A40H7o}(GRcPeYb$eB=K8hd-{n_WtLNTG^9g}4;w4VW z1;1I4xa5E;Iog>YhP3Xb3BfkL4sFg!94C1+J{-WSEP*Hjn)dlzCY{+Bqf7zYA_7g= zc_kpob=0EYo2`fLb!M2MrAS`*-LIVz+-MY76b}j|_b8S8xwdq7`OAammFiwXUz+K4 zxoHSgHu&{bKyYvxOcUhj7!l||^W6%zOSt-kKzgg2vNiHEGihZgOI=B16=b9p48vo)vbh1+{Q`5tKf(k zH4L^9*c3PV>Uu`_y2SG8y#K8$HzgW3YXu)6l_0lCx*9Wk0+(vop;{JN#+71p*& z78~7zX?%6BVZqc!IPtVJ4iU;dwB430^P}kQhhahU+sA9trdO}#- z+3K}OM15d0GQ&i~PYA0HrU-t&aN)`{dExq+FbVNOg5lcpGrJ5# zB1&)F1SUbe&mXpaD$G}V9x1>GZN9MV=`XAs@FpUXIenFBF>9d+46G9`0^uA^!h8uPz{(&<#runl&4+~o8R$R3Y*ug{5 z)3`4=mC2Hv<3L_T$S~Il5i;00Zg{Z~{P9_l(sb{ zHZ~T~vkKH$haZe7GwF6;@8HrVow3mPmZS5U9P%qoZG7rwNLgy0UWYcrmHqkqk;K|&Qs$E5pW9FjPc=T*ZQHi@85e83JHL>2OOlm>8dpddjeYa zLry5u=Ddo-g)C+jqE*Dq^{yumkz*nGfY%y|Fj7F&ix9TCT(^Ok79?^sAvOA_bBsPx z!*S$0c5EIl`|7ehmWg659VP7K{@6yK8}46` zMJv3@Xg_!uPF`2{Zx&Y8x@FNsr8^IK;pe*(QykIK!7(fKyrC{Oi~J1X3?bTk^K~B_ zIvq(bNapk4X8+B+8y>R`au->i-d`79P{uxlY<5tX>b%YgLFjxxV zZ;m~d8!i@Jo@4*R#2)>EII?BNe8{es!SDT`ng|~x4Q}d8h8?5NfTuOFChF>*-weTc z@I+4}&LH+nyy%I*ENC1l2rQ|yH`%o@P5gezE(89BEsH4SaV#C^7Xc86S5)F;M6bF^ z|A}kR@bteA?gSy3(v6&9=oEZ{`VwWH=#`OlQL%*gX%lCSfY*~}bo|U+!I0AyQSt~G z0_7k38%6-(Nz+J?HUR@7J|zWf0dLtslFi;w?>iv48Eds9DZXOxlkI z`NW;7RhzgdCd;Pyv)bZ^O@mPMa#nX;GJ?E4}N6%dLc5ideS<+Nqs zKrkAmNoL27?zzvX!-EZR^(vV|pfyB+je!x-j+Y7ENK_)`Mvxf${71Z%3l3_$8nysM z2ro@~Yd=Z^V{#$U-^E@2kc4@_g!)H_s6*|Uc2`an9k6ET^OiC~uW+y`GHZ>OtbCX)U43=ZNW-m`aXPxK#VWOojs ztEv;teR=3~Y{yz|w&=Wd3~g-cJ6qr6DuR1*p4dqx8a7EVHljV^RUipGNhj^%5;bxU zq_tGzgufkti-I@;5oIL8NG|q8yMD^xKM<_}2wFN;npDDJ!QfnIv%JQmg!rUiYyJx} z^0C3T9KS?G)bAxxKJu8C{>0Hv<8b^{7d1cci4}T(tbs zKWX^wO&-+}<3d@dbo%SoCZ_FUkJS46Yj&AU`!u_7##!u5-kp{|gUf!hE$b@- z;wd*yA#X$hIlx~C{u#0Dkc2qO!?Q1~#k0|fcoAOS>U^8J(_EuiTmlbl_j5l?`;_Jg?2>{oc|ftTtkwK~^)Qkb;Kl@&EhANZ56 zHGJKDRv_YvY0tw+ibc*}=UyAVvF$5iJ*MXGq!Dz8bW9z1%cjGM3L`7T0LL7A>#2_n z=pntxGBROK66GScR6SO9x2hjhv;A_Sz|mC8KjY(BhJ+Z$LZjMz8se|RgGm+96+C#s z(R~|*sIll(hlT=nIm1$QZmNWb%9bv{%Pm8N`!cJqxTQY0w|-Cdo!p^w7XZC3n={y+ z-R*b=WCh`I*+`K}sB~PkUdTX_q^o{(GC6zY%1+`~MF(sCLIkK633~P#QMI^Rm6`kUuTj@ z3a`#*TG%^CcC14@g6%h(@eea*=`gn+iF&YSfLyZM?+Hd22`}Y1LQ{N&c+FFgPsYH@ zrJ#gzMn>`X%=KPbP1%a9K)T4oNr6)aSSN{}Bv$?(eRSuYt23DYvNSjb!X)%>nmVVo3J zn^VINkE!@)72Vqc!^1so**eDvmlOQu%jLDz370fTZLrs}z`&_FwO#SW?4OWEuqs5=l`AA**aML-u-Fgp6cnXJu!P#Q(f| zkKb|p-{XDXr$_bu-uLJJ+@I^Z&g(qSi;r-!#m*c7l=t`-?NJ|zL-Co9^6RHE_iDX2 zGkhJKTATPdYflGN&R|ZMC*vnZUOTbgs$c-%nz*X0^(b-#P9OWn4JW_-8Ywoh zS)N!9p?D#otw^0*r<_3h?O8TmgHQUt#hme=1GcT&hkQmOA|q=Nu|EK3#Pw_=DytKh z-HUNujfMm`4^BEEz6MaTK=5|Z+4={;`=a&oMZc=TopPSm>S6oO=K@q}BK{ZTG%lvQ z9`j4A*P-a3LI7(Az8JHdCLhA z1(bu0zZcm11EN2cek8giS9brEs$_Z{SU`KijJoF7(6JEfgc^0?iUHIT#(hxSK=v}~ zd(y@LU?hSVcFZNm;n7{k-uf+hO?J_|jih!tSdm%rQj;gRwXW6G zFaxQn;j|&yIGJ>jt~|R<&vpK@QiV*iMV0N9K7vgiMiwdTp*X!)Fa46lp2bd(%90tW ztGn=7E*|Mc8LELfZ;cqFBH7_1a!LlC@H~!87O_2AT)G zm9GlO+SHL=xl!X6ddzA+IzbovxHr9b6l>XxrY)OS#Dyo;zJECOEG}F*v}NG8CZCPt z+U(EA1E(}8ivw}n5nAkL3pm5}rR@9F^Yd2$dd;b&rBMWK1*G2&H6#pW2t)&f)&&LGz7rOQhJf4=-{Gx{@(A4zhHzspjoi&KQe^O{sh(AGO2c1+Q zqdhu@>urmPK?OGweRK9jyut;>&CmmW$o=kl&TV7aAfnsP@jBNhPM`X(5ojWnOJ6J0 zG8|1yxvyB?ZoD(*aO--tW>M86+6{DYw&oB482(A-_36dk9t_HH+TGqAe!9omOnL3k4@Tj zA5Z;Sd#T~l@}Ft5Dw`{NHprf1;RB+{3TUZ}PkcI5PjpXX97aElDyOrK#LXB~=se2X zAz)Y9RVF=_!l)C9*V(HvD^Xji;YVD7JKeH?Run7Vo39re=?gfIXX&^}Pg3rR_rS@9 zrt({~O9?(QVs7*JJpwX<$I>O}qrd|Ye_-wd$vj$|)xi3?P+g#WgD~b246X>u8=Q;n zN_xE6@JtJ8)>TQ+rJBUkluq{`V|IlBoHz4NJkpSp*>74uxq zE?wecJ~(V{4~B!Zh*H-N>nTp5`!-ixJ6)wJl+cqsGV)~Jq1Ftv0DCE?G=0SkW!2Lw zU&cp&N#yZFGFTmvE@Z&bo8hgId)i>lt_;}ux29Rb`%3G4%s zZ{k+qt%X~GMJj!0EmZaK5W2#);CqFe6LLkoV&d_NtEE#+BaUT+l#QTsfB=LS5fmE2 z#uHltk2g3ZL<~YR!ucG|NeO&%h}%A#g9i%owC%VBjIHu()yC|^JQ8M71iX|CcU=Xk z<6BoSw&#BO$>XY`q$_=BS7R#A6w{fP1*c_}G+P~pK8@s}3d760f^yj(H8=_9TE79{E3 zuBS(mCKyKQ>?}f`SuH&Dhtb`O`S~oF*Q||iJ9AW-KQqS6<%^pJv;QH>zmeuyl{W({B$s1+K9P* z=X6oD$bGjob=945PLtziZ=xSCbw$a6FY_VB@N%~1A)jTa(cts-5mqjc6{g0;UER+M zu&?D0AWJwL6Zk3|V9-bhk}00kK^PoYRb7E?GB|XD_!o&p(Jb}EwoO}`Ed87a*MuG$ zKGS?H*9O!4!Mpt62WhfWuu_mRg-W|x^G3f(OZyMSs*;kZmez^n%|G-;{PZ{sASLY^KMr5Q)J>kPfmxE0vw0)8etuz{9*nw=`YmGeCW!)vQH=7WWlk( zO?PmU-E*UN)6++M?3CBHlV`5!p1zkkE%lP?K(eHZ^rUqL*f+mzhRcxSN%)0q)7Umr zH@`b|Y}RC2oFI@el6p5QXl1DbSw#aUoAOCreLeVCc;|r}0Og2^iZXrk{^b0ks|aze z*RKOdk^sdT5+N8Lw!Bd}2S^>A@}o}s#H<*^BAbmmM;xs=Pqz76;{VB9^qMpZ5~#^N zH@Fs--D71&)Z-Ugt0cm!>Q9mEKSoEgX|q*IKidB8si9Ancu8Ii_+MyZ?j{FAvI9vY?u44h}q~`6r%! z7Q1~rtM$)_!}|Rj1_p79n#s!X-^Uf-s4DLz-MjY?m*jpiA$qY$`n{Jm;xh+^-Uh7+ zZ`fl$^r*X@?4ZuUo@$F5|)UG$-SUrc+@}qNPH+?;%L9~Q0YUF=as6ILDKT z>V|zw`;eX8McBFZ;}%UDUGi1E2YbkIW*)KL$MECGxXq-3lbaJ3@#w&Q^LcGztwqhd z|95>dq%uR1jZKGs?H}&?V0Oa%gtK(J+xk>cSClmfdF|1v!>x1$yWDon6*_ajN+A#Y zx6JPjo_T>+(=v=j)`e-}1n+L^Vc+?aFFoxpTL%3&S3rdbb=2S3DzCQP^j1WdlIsg> zh^D<(M!ThmuRerOf%@e^*!v4E@e8DQNx#^WG=1y-(cQtg-7_Y`(N*(;BIPzIuB)%8 z+e56SfAt8S(qJc6^+PgVETFn#!KF{mCA>0-=x3kd>8X!t5%}_atu%8ts6n`BJMbY9 zf6)g)>R=er9qcyzskIs~I(;AA4a8G^HyYbzepNaoXO#c;-H9iPOnb$m2j7289ekZv z{Lu(huLbw_3%g3Z-SyNHi%qsXjSe>)&MW9Lw#fU^ZW@}?SaaS!;WzUW+fUEUZ!k1c zNaEQdfyrIgJly{8Bg6h}WnQzKetn8+*6V{xznABVq~GdoNHlgJEBKsll*g^ra`B5w zlZJ}(v3u#$*ULrpsdt}eqCAYh@6#^+Z;2QZKYaPCH!}wI;Fj>_4T+bMtEEXyY8NsX zH9}?rygP?vb7olX{?G@&Q^_S~VNC!*s@>qPB}&r~@5Z|T(W zIucABhh|GU4%ZlqYKuztH(jxpOP&;IuxZ3T)fv5&vf0BXV10&i>E8;ujkx z;@^gmUl42%{j@~YuQW@G`9m=>qkY*=QyacZ%~N<*#4PKo9{p10^g?$H2x%&3bGFkrA9t2$()JedVwO~W8at>=+$79a z>u{;ZO~V?*rqvgW#wc+Ewzt*-aFgPS&d06`B@k(UtFWqT-^0ge9D-XD!!v3bWuwJW z&@zel?tOe!Bd#^Ey{#`SdpY})z|SX+*Ass;yDx?Pd#b(vPCE4=U;mSD>$1vw#!YtU zc_pc*td}NH$of75=@v8&3Du6*49Rj@Oe6)?w|oDZ{xwBjvkiHmxgnTT@DZfmz%8FHtrPqm;$96j7aM)(^G;@f1lqWZEhbZnMI)B<*k z>>}F)i^#$xAGIfn549iqMRt9x9o1cP+0tssMzhO3969(if4DQCWbg3(}3MMn}PMv|lx|9Hzb6ERzchDX#vwaaS-_ zlQn#I#I(c2Sh+%f6Mq3&&cuXeW1-Mc){Zno=^{$7Y;Ueu9ZxpqBXkr?}fo8CED z6igkkJ0Ru0+wnt(9>^`%Y|)0vJW@!_SfPWF!Lj|~6|XCnTsv$h#*o%o7Eo`i&=1mO zmt>Df?C2=S#}Bg9y9e?};wu0X(Y{evy`@TZ>Ac*MO`HFO>lKaKjEM@zN_vKC5?ISD zou`e7AN$oh=((AGF)Ou`%B1c|{r;xc^4%-npl3oR3ghKrzMaOrGzeL}FQGvECKaFzd-2L{G zMsiG{$1)WTo<{mq)a~)gzj3DZZF93ixrU1Gv;0SK3na1jB`@!e{MFHY78OMu)9BmH z6j9%1eY*Y6%4MCsRaBgj&mKG|wPJAf4C?bFg>tf`Vr6#dZ&`YqMb`76#zO@2#ou-bQzBmrC2`G;A~bH3up5mOwV>Lp>8E>fqLdmS^lTR8$^zS%>RqWM`w= zxRu{^F;WhADS8Q}`D-yklc|CpdpgQ)O-_&VdyI9S^ap2-y2sDg*G-{ZsP4C<`8wC2 zqS9|0z6_k{)oXPnar%rY++U!X33Bj_h; z0s^#HWZnT}?dt_Lw;u}4#WyO7>BYAMx<40sf-??DP8JIRclT1o5Cf#XyAnG$%t6$)aXWCkQX%>Q^Q$V#X=x9}{AmQx;O?eQ{7pNBuy z>S{SKKJ}+uE2W7)0Z1#*DljyoF-)u*fKZHTY-SPd?I(4KV!qF+!u|%7nAkT7$WcH4 z&@#>!TFW2;_ql4LTtz*--hs)n{ff9pkaHjxXzDz%xH}ErFnHam15)~K%?2jRB&Snm zQcpZO;!`-hXrQ5|$3`NU-^EHI5L&A`JK(!w>)=q(`gBU9*|4a)N#J^0_u15rNvz~^ zy4UwnHxRa#I7`4jPIANP@%puSRX6G3I`>ZjCm+@+IvJIf&gkx&%~Dj8D#_Dz%|Sx) z;l$}_gV&Wi=|&Hn{d$7wVC~@_ypO-0Uh)oSk)0%23QZ5Cdf_12$G&x|^GRRwxpZEc zsIEpK3$b@+qZ$ihm0VOWZ%D9xTzTKWaDDNpd(_|a9$6k}7v0^b8|%#D5>+lyb#pX0 z-Y)G|RpAxA%1Q6f2JekImDJQ2d(j+f613*P#EoaPxhhT{u%Q||wHAEY?&O5+Rq$?} zkD;C@A8c@I{_N&CAsXRJ_BCd@Tw->6D1^%RvwO+Nm@ZyaTwiM)s|c#dsUP{N`lS83 zPoAl%BK4PVqd?qF-v~Vyo2j3~9^(7ey!S^b?Z^+Rgz0bBJ0xV|FXZut+%4WjzV$!<7QfZgp^#y(d!q@tMaj*AX_Jd1r-R_{3wnVlq_P#xTBaJUD6;-E!CMoU@ z#0yvuU{C{^Cus11rRTvB&Bv8$(;3VUgVc~JPsWLZ`4}@V#ypykjrK1lRqk| zIn#4uW@zHka+^f&1r&1AskQ}3UW*Y4v{|9VqCjq& zx;52%|CLOZI_y8iP^JUQQ8pkYCx;W?_5F6B%%W)5Z#@wIq03Lv(F-72$%HPaLnKWL z-5HgLTEkw$apBi@&G_e*OJh5nb%cATdZmz2PaIeRp4RM4QSyjJ9*J&ra_t$((6f5K zG)9zA3Nmzs%b_v{_}F{9xBF8PN7KFgzHHldRtJBP8)>Enfh!^-D~m}71pc9}?)%;# z?%g}pQph1TwbdLnK0joSk z!i>aRSp1ZYn7x0qrEO_S0UqcA#JOB?>Sjp|fg|kH$(eisFT@w}cYTc=!tIMjFel=P7 z8>rLhb@=_87b7uYv9MfPuxDEEh0E`|nocj#h@4vPZqVPVcsXJU1PIcr|E|_w-L1L% zxwR~Xkg4}wFG8t>PI0NHVA)?Ml_VCi5v6bSKb~$6-+mzfz^ynFgQqlSG}G7_crJyd z`oA*rxAo7dx3C4S4ShNz#7B_A6F?UXOMvy2?hZ!k^FbY^)1b|S(@Bbp6BlTktBz9C zv2Mgp2?8%ArNhwMD(n2L2n!FFxz@VmDgv3yy_ud!0H`3*5pzAjR!D};_2o?_`PAM= zoEbfJ>VMUFNvw@-{U>oiX6NC?y;#pn|8YJL<#~v#`Dqs!NxUDLpk32d(Y^P}h<~61 z2H;}TXpfzB{9?BS9{h; zbZ%NmCUl-U9gCXyv0zW1n)Y$mWSiN6x} zNjCywH-%7-v|#bSwI!D1%@f<}au&z6i1+eyd~;fjW=X9{tM9@`haJm6WB`{S6dHmM zbb$azgEIlvHR#~6f)0X-@1H_cNi?)aNU?FIpMNvYbb8zDw(XnHz87Ng7~7|9SpW$0JPB;|vV}2FPjNyuL7MQIn zOWTR~dbdTT#KU7v5ZLWyd);e;!C5!oi=hFbC+<)OHD+10H~>0Y#EDz=XRER9d6@Oyo^5ng=*YI# zy*Y4+yd{pk8Z4k!1>CCT=px=1w$W5I0>I`$u7VGa%eOPD_xftWLRoiIwqw_duG z+jek?c-lVIsGVqp9G?N;3qc>6xFgrav}3KV%TwnI{NQkexpt!=9i66PUC699I5s>9 zQay5w^In_I@|iiimJn& z#wom~wqb;i@6Y;XCMJCm^WSh`1c8f@kuj~!5`G!UXT6~|J#*=jlJ24kuF$-rT(m*R zb+|Q-0*>?WDkoax*L)Ae!@sma|3(J6$)0i?dCF7aLQRdtvEMc=6;G#)rt<{bo3 zwy0A$_1Nyg{rw~NL#NQf!~Vk?d=WwjN-zT`a$~}oYQsO(lW;5yeLDsG@e3$e7t6Y> z(MM`1?aN@v`T2ZCF+V3Y7qv4)u0vjX=nPZwgoM$Y!Z?8T_}+rfiybbK&*YTa$W<%YPSDFr7gFBYENXdkXGk#LNT;{0#HE z-1YK4og2DIbT$nm9u?az%=<-@DQQvLF3w2=}IzCS+tAkbM$FH$2EzH}CI4`!{qE7;RBb zx=t{~uqGBQf(kcN+AJC2Vgi0|2v~yH_1g(2E@GSk3_%Ei2V@8&8Erq33Ut%pgE;6| zhADl!03CdNedRUyjCzXnJDs5~f`E?}+C5}R1PcWmFlVq@FGV*9FL&M|7&Y?hD~~p4 zA9{OhLeK}hhQBKHRWC>0NmOK2Xhl`L&@#z)7M!rqpISUa$L`9#q*WWt^`6`7)WiGM z^Co-}rlw59dkTfJA!L{v{ab%e5l&2SeFi5tzhMuj`KzrW%=j_F&}quWNSNkD;f{{b z(GfZv%w=e~jl021K(vMBSNG+V~+PROq$v1L3E%VpK7d&RQDpLM&q;`>MY z6PVZ2;#Sjw=;O`|?Aj$B&T0JcfysHdFcBT?(&!X$miel#tjk)Dv)}&y!KF&yMJXiO zt*T_QXI5nF)kBHI(-?ida}U|@1r4YXuR(0#y!cHL6vF%Q^_6IVfhPmzzKQ4Vg1q+I z;yGLMU{IMsmjrgdP`_VWwChl9X=H zATV((4p)P}Sk}5v%c5>Qr0|a6Skin$BRp97) zfF`URCeK8CR!^4hl9&xBKe|kIRz-sIPo1^!?c*8`Rl7De>e@-RK*dDAKC79^=9L+e z36No{J35M**^k{n_I-uQyu9{Lo?r)Wu76bqffTIC2pGB@ zdjM5*%7>YC)oRDgx-|`_{bk+}cgnv$%iz+SDT>)@TfdpiIu^h9xHz*^?wMeU^5{*f z3jHQRCk)XGP9WGvJqEjl7^?tmAe}XEB7rlod;VGe=;Wl1`I#xIrfJaj?AF%uI3ZDe zhOrF!uzTa=(O|JUq4^E&63}fYW4vXIkW(Ot3S)oJoG0w#!LUG`^4`54oyRd4K|<(s zI5zutyuf}T@(8p3^shJsmpCHo2@W{S$r@MCtR)QaaNA&_CMv4hjLG+5wivW{NK@&H z!ig~=BtPM^bqR_3nh~3{McvO9>;4bR(G!>Hk}_7XT6Nn+R`|6O{_2};0C zHI51(D>i}S(l)|d9wmwZ=~_bN5HS`TpKZ}w%0n*vdm9X#&fC3$CZDxUnixn0Yej+s z4d-7OcXwf8LO6bJ7>rQxHMpR3M4n5yeiQOLKfl@v=L+{VPWVU*5WEItWyEARR9WA^ z>;QLoO1BzvDq<=HK@@x`V9!K|9*{v3vs1A&m}o;7uwlj|E)OSufKkWeM0rocIf`T` zuD*=eeKocBA~W~bnHB%6-zga6=Xahv8*kEE=#^mJ`WdRdx(fO4EiL{r#GG8>l*9aE zBCT5dj&(bDuSaTcpS+QgLALEb~=)Z8@f@NG-=LO8S2+zG{Fu6HtRS;o` zp@@XTAtZ3ZH|+s!=?=VPuP?9vqq851FqDtNh$YNnGK5~_Oe$OUfpW)bYQou#;K6+U zoC|3^v=id^-c>~DZNy1M*oC070lPWzL%Srrgh9TCJdVBpPhVfjHGOOp-u^#e$tDq= z^sB4KN~aR)tZH&C^Sj_f!0`(TUFg{ix(h!v-8f!gBg-W(J#x#Xt}NuT+wb>#NMovq z<4@uB z4{RS>n}G~%5T-|sTSVDbV5RZEeHH{iTIRJFrKrEN3ZTy;huev0Nbu?hke$Jx<0TFY zbqg9b$49?!4;1Yh*>&ksyxotJ8cBq24g?=9FzMRdShzt*E;0CaL7uQ3AQ*;RcrJvW z1q2CTzn!xcD|EykDRY`lftjH@b}0m@@y#x~ zNl3ybR*)WFULDv;!K!%`95Kj02cdktn)vNG?6!UO9R(kYum*zy_Ry(QP46s99!^){ zi->dtgL?2wH)Qm+2-0a-eZ(!>!V*tH>yO|G;ddNfw??sIs7z_D+>ZfO{{S4X%|ag! z3=9}`)Zoa~F)kPHf=E1sK?yOy-RXm@_W$npc5@2~ zmNu^uL#ps@TykABcbw^|h5k|t)~--60p1RC6;d-JHx-tuTD<>t|0}ig4OC@jj%J}9 zDf?f~Hh`e(JolLr=!+R-q=+bqKZIpfX^%VhNJvV;ODy9V}9)_j#7`YC@YQFQ_&mA@QEXMTu`juZm7w`=nHjJkr zbdQ>_#EchVj!@lwA5jkaiU+9Fh!-830l#+~FFWyAkQPNFnItR-V0V8WkL15ATN^tG zI&6K#WqLlt9Bg)|PZ}u~ppg~F>j0UDTjib=n1%m$D@a6rDv$I+4lSW+gHd(^(zrKj z85DQ~$!`@hE?D-4n@0VttC8=i?cjEKp`IKyIQ^XJ2-8N=*dkUl;m zatrXakSS@H{~T3}n$Iuxh-2+8dMD#Q4wXzY*sjdS_G8+B3~J_1%%{W|`=O&F0{O@e zMVLMkV@a`ph_qRzXEV8LYvvxIp+HD`RUQ z<&^vH?Zn7-JRD+vEO^PF0?uyqU?dwhJu&(Y--yw7CcxFCLO#JVQ1h3t?0Vp5qd{V; zAb=+!gG*Co!B8ddq9Uh9!sLZGP0YF{aJ&)}eT*IygIGA2!4JbS4q<$JZ>a;^$3>70 z@3iZl6#CH~gjxg^1##cU3D0AAaKqpcnlk~Hc?M+5_-O4Sn+8&jWBu`B(vykB&I=(7 zxSi|7G%{3Penmw^T=A?8c6HQlO12(&u6@Bp8kn?0U_X z1%wQY2#q)mV87_Ed^)~O*Qkn)!W@&_MaQyh5C{%quk-Lg`Px7a`5ejH_G4Dv_j+k8v*ryg5li< zsjnl!Bpj|lEF6h6dv*S*=;8z1K{`3

      !b0|7w{cm3TIRg@Lq9$m<9+tKs|J~*avE2H;{YPb9J<4uiH)vwkBFkx z6rrQFw0Z$NDS=6LnHkb+Ab+H=TJW^~j-;fIoNTeWQ}JYhfuTs__0j0V*mYp8g~n`$ zoj=YZ+$d8SM#DGyJgZF8k`qZlVJ9}^t!^4re=4nZt2Ok6s2ksOhv2Z z04IJbCGqb+h6`1xi2=mcKlFdZCrj-LiwPl23tpE1oi!OFz{Ov-rKc-in{Kzo{rNaM znL3@9I%6ES=_X|!d!fR|J2vT+9N)w)w0YZ12@~7n^2SSWo#(FInX!AVb5Cvthq;{# zOW+8K2oub$1O3!X6p9>pT3LwyoEXK}z#y(z+BdXdv~7BR7O;jNzCHO_-&nn9=-?0T zv$602QK2u#g`M5^9_+a?e^e(VSQPV_i&-)~>z($OspVdeZz)RQO?=0vCtiqOo&S>D zuYc&Zh(Hv~tNdW8?CV9pdYRD>g-ze&UL&u)SaTbz$h6(QgofiNigUhpd-_0E=fPrK zz-H^<286xlnvK$d!erF@Xr-W3d(_yDqQU8llH>O@eg$c2T{ui6RQdt8+{uH)AfCqa^RJdcR1#kSkANOoNxC>va@rPK04 z{7{KZ=*Y~V4RI`YC-k5@roiF*F4SmY=<@)l`2p5QJ(+E+=XvU!FO+jhZTWdSQty9Z1&2@o+oz09>HG-Fyq8 z1DOQ2KOQ1AI1FTM1#842cYakMyQv5?eIa}Aoj5>Xt7x|Qb-@I~7g4yZh%dde0dy2vx-ClO`m(7z;T3{2afu5@Yl+=3sYz2_zGbso+5>z3QZ7$V;%;aQPV zoF;9j4HgpF+^!jxd_LtyqG*bEFUUtFNKF`xU12=yX%>F%cd}eU!wJFNbJ}`-2>DXk zFxoPH{RXh)qdgkOsKNG>nI;J)A~f6N$%(M5*^O(VfX)vqN`&~x*0G!TyP<82fsDJ< z`s6G2`qXZb#<7g|*2%nu@2h`3^NTxyD9LS%939%|-SIinDVz1Mr^t=#g^g2Y^zvCw`0d^ahT3 zE*X8S=_YHs?)R;F8ZePGJdz9b`^MV(n%Y6SuMiOoR4s>wl|F(AqM{Xm@PXebs#6m} zS14+%k7W<__jk);eaqZ&TUL96&ehf&NMt)W($*9t`|h_|RO}zMsGO94vV7TmHHSZH zQ8!OxMyuRk1f=zBU8QfNEysj3*dq$a-%ksIWOsiePz03*#^FC5 z3qh$Ef5mN7ieRJX;8n~+varW9M{ep(XAF^|LXpUgdGmDCDldPFNd1>@{#F0>uZ&T* z{ImUdn>CB+5Szqnq?m^*#&H5t%F4VHT51)e|KkTkQVz4wMt284jV(wm;v@e5w?H+? zY^UEkPmGKIfXk9YDAH#ugo<^4v5&uL=D*J7X<8Hiqau?d!bSe^QGcMWf1k2te?w^h z{Rr{<-`u`|kRDNR$^f zD7Epgh!Sn;JI#CEs(tlWMy^~+kroIMpg#-eB>Rr#KP;SI^?x;*{$+}P{Zx7VKdU84 z{m-IT|JS$c_~T539YI3V7vFwKA6>M$KBfYb)#66}RW15+Rw`L1^jj8;r&wxv@sRpW zgX|ZYJ(BYE$>??I7<5c|b~DRfYMK3yFjHz~NLEw9Uoj-%bp|o!Kk7%ZNBn(ff3=uG zVy+Nv9*F0pn}Nsq@{C@1ZvK%~`t%Mq{@b91WNzwXN7AL{v?*)eWD%l)$`yX<-M`*S(XHXMp@K>(HNc}n*hO#f`PI~Y9u zKw!6AZ8&0+w0zh|6;XIV{;is|_D41A&vyBfA_^pp3iJ0sXiLR(A#7V>_r4rspw-|! z517F90iP0L)ou*vRJq^tiPlvzb%ABl)nni=8!G2wqYMNwz`mg)O%2jfeo|GV1-@HlVAoe!SH)7hHLW{f&v3p9pD zSGH3YU2kH#-&lelPHB#gNIy(G{~f>R(`pgL==Z-pv6~7A{~u5Mn(vS=qSUx zUe_8AvT*sAd!?!**Hj`Zn8q(j7sG1Ol3(c3BGYVA&L<3QLt9;=4jA`pf)O6=j%h0A zT8cG~giI-DpFs}IXcj)K690hvULJf}iHM-FcIsN0bJbaLa%$BTVAQ}G_Uu>MGozryHqOlNCf$os{icPyLw(8pAD@nhL6cFh4D6E8OLK>DDd0dYX2mm6b@ z%v~f9Vm83dunc;n;acEynOp9}v;MUkw=TcL-yCATuyk%3PcCwZVIjJvAzEK5Xtssl z|lY?Cq<0)vO!~1s^{$MJ-J7j-laFOXWUAjQHNB(af&eSI~36y;4o3C zGX^~(AK6eNAI6R>f7-gE9?S?{@JFomLD-g2}vAACke(o9uPA~K*({03ZFvzB&+MbzlS!Y zD6Z>oodnWV@>Czs8ADi2_kwa}NyHB!g5#wOA%ur-RK_c$d38a#darL+PAel?d2^1F zQQvM!tFyh&ajkt}n*sKqu#P|Khfw;xGZ>_+vQT+0rt~>S%i`IlqpQs=f6h)Vq7`k| z@FgDUTQ;mgbAOzEZVSreEK`s77n;_-uPY z*)jY!5DSM@^w?$*y;a>?!au%giS^=k3e4IoZb zQy=s?L#j)S2DX#6^a=Yo3io*^*S78uk}8SHdceD;Q;DJL5dkGK*VG_Y(%Q(N)Om4> z(=Ly&I#$#NZaRM7vZdkEArBGseoM+lJDjQWXXMH1k@6bPH^Rjt@kXz$KA!i_?mzkC zwW7wdXAq;@w`UuJpmZ!WL(dc0zID>%PZm69CH~Yl%p$S)uJl;%1FEkr9DKjsp_ZB^ zJ=f|V1S-+-bVFr(C~B=xjU;%BkFU(43ayJ7F}KZ;a1z{aaZ9<{zVS3WS;$6ULMrY= zUy%dd%;zt<*w-7c9*p#{w&{*o3uPH6BpjX=r$1oVR(jvsgjX1$8a>fA@$@$x{dMs2 z_Nq{jkniSHQ&+Tse(uRFLE^j6gUEbNuQ3cUeZw5O3Rj< zHY;|7DJM0pzC?wwZv>W)!@P#9T#nxNV3kOwT_)HMN=%QJm_3rV6Dc8aCK0P9=}xYM z|1iP1=pX&JxpFiKI2&q*Hezy>^}aC&FHM#F2t7ppE)1U87o=+<93C$4 z-h|So&Yp#$OpT`l4bu)+gQInr$6dqQ#iFj_2lK*@Ugl2z{MRjnG!mkdg zUy|NfP}eyvPz4S&$Dv;}zst>U)_mxqY2x-Wuc6&@Dfj4<#~;vvSXVws)IP=Ku0TuB zJ%4rv;&+~XEOUl<*V21+e)pYHTg;CBONRo2rvuw~eB{2v{<6Zs?5+o>Q0K_uu@D0^ zwnJ#OF4oF#dM#r%bE>Qo_VPaupx5gqJ92(%Qi8aJANyZWtara4<9_!p3_!#k(g zU_dS5XvKA35squ%y44n^4$it68UUyQUrD7G5 zC`Y~W-opCt{lZ&IFoCNyv7nFi3wgprmDZ@nEi)k`ZJ4w_<(^Xz91Ly#c0djrcN}H3 z3Figh&}SIEIkzV3A1BB{Fp!~y2NeU0NL$}|PuI*^K4mNTBXbDWMKE^SSE z#UjVMO6@+wOWTsk2#@<1L^b(SmamEpPgXYvv;~q}ml_lLlM}A)+h=yObKJ@vBZ$yC z!be9Az}qj4s&a$&n?|8|Es>{tSE`8>AS%c8sgtV~6orRqhj9$T167gp1k$#wQ6zPD5~RWbIxRJozNGV_ zvxFHu^~XaHpy>_X&o6o%cXiGz!TQ}zB4;qr$!pO>j_8cY%dMtoqN26pb3=%p0b%Y~ zE>q05o`^{L@;s~KqB*A>JzNY*M?@sjggQ#cXEEoVjE4*qB{*eDEUFI2ER>(PF`*a} z^X7lvKED2m0#>l7V$XcLdxQA7Tfs`=(M}b{Sd|b zX5c{4T)@=DGl56}=LJTCRHH^O$&Cf$*qp=AQqDR#%Gaf411pAiWsCW&K3E}E$EHk5qy%~bAAsoG`j1Z-Mdr8eL#xwyC zznxR8vs-z4)8rr)8Ls0wHa-PVi5V|L?|P$CHw4?&s=HHwMw|7@Z3yFJg*JEregG~h zt^-w@rRWQ4>kuu3@Q$DsY;M#0UACgoq$gjt*ZNxlV&I2M6!)&wCX*Pc51OAVGr6EyZz;W z0lNMh2aN5*t@1KQV1y7#n5xb1_-~Ba=R(#uUOUw#_42(wC=7dx-f-HHp-C%FdRyZX zd}RhOTzCwit#tSm(P0nxhqKj(c=eElT>i~XtW()4})^!wCHwt;~tKI z&!LjZ^ujEQW=-hpEaA~Z_MZ~{Ot40#(XCxqpryVTIcX#FJW7FLUzEuYQbJIj&Jum2 z<5ou;Pi1!6ciB_R5~nXhX?2SGvlT$T+w}#%2@A=y8XojB?&HXoSo)sD&K@P(GN!}q zX)^6!e%lZIPzX7UH*du91yZAW@BH{zump=c)OjhQ?2#|mml8v}Qew@z*^7IKf>xrN zm9hwW(b8&`D$3H(kiE_ABjh(*Q}*m*G<1)UQnJu^%V1YIHcLb@1(5WWGKWuLB~s1t z;X(3R{Q+L0?i(8}2q$Wf) zH8J9tSE+81Z~n5Rj-(BmK#dVi8rX_*T*TA~;p5w)vO2>F@qno(Uf2Rm}|E4(E;^=Sv zR6Jm~ylQ&hci|qr4b7ABF^s7{b6sk&B-Cf)Pd$`YdEpEo?wz-FrXN!SUn(!Z50q0r zHeYLPt(6muj#V?+>VVFSO}D2$j9{GG9-%S5C%jtOE|NpTBmikyE6vNibRaxO{$+5q zNCq^}(WwbF^!@(Rmr!(*QBX<~#z)+xs1dO_8f;HLG=|sujmWm-*ClS~oH};Npmh|O zY&hhEVm;hM<-akQPQ@344-ZHoHP|cOt32ml4pihS_=(C4m$ShAFefDVjY?f_dGB9To?T%(2Le|TMII`O2z3Smd|V8 zH+H^S>vmB-gYx>$z2<o;Z*{xAc$irQ`I3T+7&Vk4B4H|FS z7gOul>C4QNP-o4J&R>&LF+xJkQqE(mVnU{EqBX+IyQ~*2g!aUrgmYEZ7x8?>^`@H4 z|Dr-jIy=-I^-lH^Pltk!!jy7akGnof*dy?#O910kdUTL%zOh<(b_I$7&Jx@TwN?x+ zB*gvoOC{aeY(JFC%W`#y4xdmR6^g9OD|aGu{KzcLn&{?}3^fvF-HI7`{k8`jWXR+4 z?doyh=^w@o#n75VF{-HtW~Rm$jAJ`QUahd0H%5#jP*S%snJSP18Tdsme4^w{&05A? z%e|Y#KC?!n)7y(^%xamn57mMx(-9yB5*0ZyPU~_fqZqs14s6zJ!<0piIz%*_{)4$X zTe}a1d9(4^Zl7Z4xd%gC@DFU}^Jc&)OYR}~@L7;WqrmyR>=6l!(Rz67yQkc)2H@YG zmPW>`kKMBeA+J8%#!$e6wLUyx<4*ZqJn(}=6m<}TVuQ~QYBijXpFWft$>5=EGKHYv zl^VQ5DbISU`QgP2$q=XAW{EsTzt=A+xUV{;b6&rVR@{8JMLsy1Re|9)Y}wZBvqtS zABQ9pQ~t1oI`m3B=kneSbooj8ve*ympVFtqetdGDtH8~eE6jXR?C^?V^Xy8XGuxz_ zOVh`Z$$#8ip9FTZ7L$_usuFK{c|5>~Ze?j$8G0|T1JXwjX6l)|yCyM?jYzpe^gAW= zBeRWx7@Y#$HRTe7jg*|tuK20^2>*+71pv9*vYqf61dN=Aqc>e{Tuc$_Wy4h}Kr+D5%NKsk0;wD?msmTIBn{+#iFcnjy(<`!0&p3+ z$9=$8WLPX`NY<#2+xW!RLtbp8uvptqOpgScxfcK z1badL43R#9HZ5+a__2<5dUnLd7IE3;54a1;HRHFV%=YGJi^6s{^JflTpH6?f$bJ&g zzm{H&4sb1Dd&*h3@Jn&Lm1p0Wpnp|mh+B#84~UMB?CkMq(9HHJkz=osc!j6=)w$Oj;gZ`O_T#`3i2}X zavnY=A9Jo=1YERKDHBVDzAzCNpG%V!VvE4Vf*GzlJZ^Ee9AzWrcE&!_yY}(1nzpkx zvDTjQO5-VfDDEQkW(l1ynnmw|2)%eFZSV+w-QXU0)gz!UctUUNE}}fc*NJGNz)n}u zujN?Q30Rlbx)ogzn_nukdxo~ zRHCb*_323=~T0`Kub*!M_|uGqZeZQPQwn80Cm)ld7)sV#Nw3zf!=*f zBifR{k45Yp2OO6-+-T?2pz#l=B6IQbRQTqL00*1sOTg9#17{}xl$8iGXi2QjQFiT+ zkd{U6+c3l+1HqQ+oqGitamBzc0qDtzC%gJ1r-kg)AX@i(uFPq6<01N(`fJ}{%;p?S z^SpnK3J~IanA})6DQ2H=b>y`RbcoS;_O7y z$Q9F;_R-J8xxKEa2<0BF+dR{>I7=%?k9$olr|0p>V~u;>H_YaS(3IhCo6MRV zLa6gu3O&kr|ymbss1(Vg9l7YI`TFq%Tnr5(J{v#!JO_WYybFSrm9_SB!ZPxz5b&7 z#!o!bl3erz>sAd-IFP%-G2<~ea?6jTxPcqhF@zJwn1$=?!q&_$?DZr!RIr#ZG$g#+hInUFKzi;&yzCR4DDgJR zY)5Yd!edy6eY~ExOFGaS?0%}$LII<0B|YuxT$$3fP!pst*~VzIH?`OM2S6v>+;3ua zJ$GoK5IRYJ)!ReAkDkaEHE#`5Im|HMxlp4JU5q|a6oe>w3?6q+^RZVpkSfvU6bHFP zCptr_F~P~H)$vBg0sy3+7zzD>c_i8@Jr0f=)61Ia4lk#}#DZGS@TrBWbNUJ^k54!s z@!88%Y6g#v-#_W_SWitCK>vJwk@NNLMjGA9^+56#G0R}N9191I3Xe;+hoEVU7u=s= zl5+U#Y8Nw7N3-*DdLQ4e;mtXpLhRHst#~jl-5!SOJ(kI_>Zk_Z92b88zoaAj6jaWj zRZa@-r%CY@!rst!2-T{mot`|``PMLf-$T(D*TF!Yl$}IR?w%k8`c70!0!O8wl>KAtEOxxoqfc_qMRn9(}uxEhGvvTyXBr6#p zvtoDJC8rEe)AIXnv{Xp7!;g^pd%ms`FtRlQwiuS6>5OD@W;Uh zR1{ z^T$j4x$}hz4@bNGa9FkgFwt3+o})mSPf)!vm|j1*y95`D5EQ$ANu3oiwcX*&SSg5r zI--HSUF347T{<-1+kT{K=@>$1yK4A{2kkWm=RRQ%?4-dZCzXYi=j?4hyHX|;P$f%N zSxF;04F`vk&StWTh;e$O7lI47`vIh98GXK4K=_nH9VXgsTWQ$N<&(2a_Ts2J3Pd{I z)W)J1h-Q1daOS8~wy|H|wE+|jM0hDZ3wr$sgqN}iV1N9zL}zJ$DQ=@HHnkZ%JPnC! z{+IJHj4fs6{7G-w&JX9SrlIkW{BRH;Lo{NA#Xc-2o2&U_FbYYgj4{{}`K4Af=9aQh z^YKa#)#gTi6_oqwQ>-@1W~f*rdtgHG){jQ2P1ev5KG)2tUl&D#@^MWu_FeQsA12Tq zl8fu;`VgZU2A~+@(RjG{+z(fhC9V0ytU_w0)fi>Q!Qs8dGU{0LF%RSvF+VcjC6W$r z)Cr}^3npEf`y#FrU;^wBj)Go&cTg}$XqF=VtlpTHb2~0jlk3V}^zK^J3U>YBAgZL*M16#ly=m;5pIrKztl-_YTD7i4P$C}8@$AD@17^QS==b+{!^m(tPfb=pJA zN>7!|?rvmEU9>5)(zb&4kSSh{;k>)sGbx!$rz2i9RNSbd-r~CCp(```2rZr?lO4zB z=)7$Ly01As3{z=h)t0?|Es=EkXJ9$cG z8&pPC?)gSFajth@T!jbGExtUreHza$Kh2h{2lWT< zUweA$%!2;`5AnoN*n)Ak2_5x_hxOCI86X29fO`wJ{;+q#m+e950_jXyxMU+Q)laEU zxl^%ZXE+{}_t^_{a68NzBtrbnLYcKS4g!zYu?>6XX14n>t$X}?+2fu9S|Bhe8G5e2=&%llCIk}b2BBa#h?9-Ex5J%D38Qzwn#TR1CetDnU29Dh2!b*qQ_p_{Si*!K52 zBm7X8i(F}Ej7ke+L%3Z=&)?l5AUfGNmXlvfpR}JZ*A!m zV;vRKcrPG^$h%EoD3cL`f2p2^%8a3y;%Eqsn?B9)-uUBcNuwp1*%My$N^i4|I&3K3 z%Ytt#cA!LoxP@BP(tJBoudN+eOTf%R_5)9I7DsOLa7}!?Qgb@N26q)sFJG{~{%gmR zT=B?^F!x5XRXYA73o~J%h`6MuakCL;M8Ecckj6t3Z%;|dv4nvs%a|E=#4xdsASbu% zS2-;F)t0>at=#PWSJn4>7uo$hV2G;HnBY{=A3M71EG7OwcC-@OZJnK`J6qKlMG#!3 zT4Uh4;^T`iDNR>(;=5*jzS?Hpx*e6@__?hH#nc|QsZK6uZm@d&FWSC3Dz0YBH%K4> zg1fs1cMZXUy9M_E!QDfGYjB6)?(RVwC%C%>>&Bs>f!9gCJL`UP@4Pkh)|>N3(|xF_ zQ>V7nu3f*q>x2H@v6QczMvl)=uJWuOfx^nmF{D6f+Vj&bJm0ah$Pv4@2|a+Af@iIz87yO<<`;$4V#3;A3iC+ zN9&AFTkjeQc1{BDJ36QE*}=Weu87Lk$&h088A9{bs&neM+frqQ4VPAKmE|r4n**0u zZT!vG#=Tq0(t>nasi+kK z-LS;T8-Jimb(uiFuF?lY3)fH=;@{#R=ef)ts+VB*rO_=rtb0#d+H-#dIP5quMq_-6 zVdWbt(`MtnE+qA|KgIW4vliCuQ5I0vi9q>l%NTv`js>A(F~u@2ruL%h)$tNhZ&*A}^4jsQD8#+h`zEUCRd*TR ztG6(E8)nr8%P1)o?(R3KPOg7Ps*ueiD$6=U;EipdtSN*BsXotiPFN=c^?vuI!sltm z*@ZSpR^hGc(qX5XXd z`sw6_DcH~axF0l~!6fInrn^tVn$_iG4V~SbzLa5dS3;B1!r8A31X=9=!_$xqo8A|SH30(o0y-;il)I5OTSL56Jcs!jv%Q}{ zmv(-w_qaR?Ah~S8<;iM4bJ^hM8&0bHi79VZaz0$!FZS$d*l5=okuI~Swy>Oxgguz^ zxvy6Tc#|HDyUuIoxfHXOyksX{X$_clw!FBoY@1TLbs{rgJi3`Y83}gzxg0cSOQ@RX zMesJ_&UBHE-|?93p4Z-N_4D)5dpCUn+XdnkoTzl9l;%aq2<$kk$BxDN==#E4PvXp_ zqXQY=_es4m5$AV$m$Yz8cKblFrpZ#BSHr>grrDvJ8*^9XS%P%iXZ+&B14^Fti<+$> zDCy5RO>!>Q0^yNC3 z%2X+8srx@aoYj0(#WdlswZzj+ej560UwC=}@zt~LNc;#jTnEiT*b!OB!yV2`Q}z8C zGo7^viIj56<=W3QWhosIuWNm;oNyKHqsclAmE5uLoBrKnXWrzSO@DD59jJ;liOZwm|5>$tZ?H=u=`h%Vxh z&YRHpfigCjxAN`vR!V^V8``F4&EFvS&=m$tRD6QGlQj~Z5)C?$@28G*-a5x26Ws9> zKzIe9E-NFsfDcr05q&dm$j>7JbyZTh3WFMs`p$`#ew1I$&Qxec)tbM3$*>g>pYXlr zp>44fqJ-;nLn1o1G#)kz-|*3J!t%>}^vLqXUtpb{-e!(!Yk?SUA1h8r{;Hc7-}(3> zikO53Ia;all)&GZX_E2VJ=&_5!8y7PD|axB;@Z7inR|N6zvzwVeP;S z=#m#2y+Wzl%m6hfu@%DTEeoX90fTOvQ2F}W#r~bb8 zkB?YA%RN`bKO3ok``kItr~Y@C&><|@e~Sqf%K0yf6Hv3?O<8OaYSP-7&(_q`qYbYr zhW#D2I+%J%Z1`*Z=`{XlZT}Cu^8Zpi7Ir*$=@YMqTN$WN^vk9WwU`s%HPLJX2$Fu)Q;P3_3kxVl?oWmD zQj&g+KNW|vPv}L;ez&5yX(#Py@K=+Hd&|E#j^WseIt-)h1*3sZdYZ^VM+#B_{N2apqr~+SQpxduFot>$JR!NDzHf$|PiF3Ms%fEEJ1WVALd5N#( zycOFqoK*ZBQ82rkR@Pvx7@%#5W7ME3uA~Y`_x*`Q{T5#GT3wLF!qDnQ$yUWzhr#= zh(UF@YL25R;Yhd9?YjMx#G&WI4&fY__%LP-)zIRs;B67!qk zeh7G91k?2q8bAQOhSb1(VUy&=tN^Z_spy+;ED{0`#GXe2& zI)F*`-ZYC_5!G!*i#Lf0c-p{e_ii=zQ?{o2%j%jY8AG_v@meKnke- zc{Eq97h@$QxMJfqAPJag+26)$(>@)4XW(zka<8OcOhT5{*%aCYq7U|rwUoNRbqBphwP?HjiL*`7udht<6#u0TsqvF}mG%EdePv{~lhqZR&wcv;9& zHuz^)@~w}`sN^0|_yi@T5xROEmAlCOGhqR(qLc~#fY}&!;0$da@vLV8;|$MD-DHGnF0fN9p_1#hU|S-j_uFn|T1kt?B2| zoSxZC$opa#81}=wXKY82xeW(Ahd2n=rHYfBWomqOm^`CKEB?V3SLdT5mcwQ~jin9~ z5HinVzdh2i%zw-jUhn>}a*(!&f(h3PyK{Pw@69tUY#BQ5GmtwNH&3>Wv_A8ZbXs#y zabnbo*LnWLT=-?=Q2K4HmZ;Pizklut*88L%(*S3#nknYV$Nk`Qf~v+jJy`YEk`g@e}bzlam847r1} zrQ=F{!rmFsMIh{dUlBtn4(4ng;^8FcIm~fZk-jPh5b|+7o zL>*tOf`HS#ny(e{LCB_BG?9UKO7=dA`DB>f18h8|zTr+o_tlGG_4WydR8Wjg3*N*N zh*qg5+BYMLtgELi&(F9wK>af#_qT`m3ASqYSDztF&LhqHI*Yf)77~Wkwsa%EMQDib zj7|4*^Igz<%grGrG%d*5y&zUd2Vm4Z=F?FCZlgmIt-+=~40+FXoVfxLt2;^VdN z%G0rI+>}AXwp)!0G^ueDcaT!ix?(=l*E?VP{BuOp#iTXhTPbMT|5@Ubj;@RT5$LJg zZGB;byMstM@8@BJ1ln1ns2=JxVa|34XUhr%A@f$c z!+p%t0nzgvqqzjhZu_G*;ccFtAL(RUHq0)?6cd>f9cfnezJed&9j>Turs@0O0b^M) zq?-YNM{NgrQ-L)7N3?Xk|?YRaXlr)~kr-HPD>9`Jm?Q(2-9`CN$9D?sN& z^KqILGZ_Y&n0dejjFxRLD;ROIGSZBb&i}ZoB{Y{yui0-WPlbbsziMw2Xx1E2&Q|c4Tv-W8#3bx;oGe8$Hafy{aS5=Ij!Ygt6y&IT1=WC<}5|t zEh(f$sHi7|r+W(xv}Xkw_7yfHTAE&g_)aMa7k87Hk?v30?I>G2K@! zpkC<@$}`_Z*y5APZsUACQ|Yr3A8&cT>F>v-e2TwB#4>4)2Z#5$8&+|OW~`Ev z%*%mmXs$WN57z3T%nB0P7?6k8$2;4^s|~3Q&K4ZD5bUJmQ6uwajUey6r$Oz$buBX}I!d7wpf=kd%4=15MUu#cCow-l?)*!das#mpjf0&^)?CR`&jzn|Tr z*fB1%6AK=CjmlSfLB69DzQdTXQPd-T*(&{-GMU2Nh1gAkym0et`vqF3?*X?+ zice^x8n7_ky(_G*nVKBMq51?FUjNsW^POVX%?>@MhcP`f}@_tw@r&{LIX^(eXe{KMTM@Vaw7rOD|9 zbo;?5$*yl!1$SgVD-$EZ8>%^Dkp~gaelV2}bJ-YTAd|boiTZc&uZG7I%`5IFbHf$S zeGk%Tc|KMeWxPGm9y)vQpHK5i$cW>H(uy=uyCW#0amCgnAO{h*Dlgc9G^=GKNIR}Y|#q7a1B^(y!Mg{0?C zZuAKVFpwTe|pBEK+A%%%YKl0t}TiYRQN*#?5h(>s2TK%COh3!;FA{j07 z$XwDKbVF&~THkYXdDErX3y6z^3qygC@G9)v$FWwf)=uX8PRJ(Ym-8g{^Pq^L-bY4M z5quHuV%_!ZlDa8=PFoHG%SexgkQh=3Zv0Irc;s&4HRWK+O)X+dTKfLJj|Hk3N1t;sKW(iZ}1o z#+R;fnd!Qin&VZKcKu;klyI&?nf3AA8izU%04=qZYqMR$L9yrkbrCNfPx$ohtdi$N z06hf7VddqqE?+iH*|lR2y`tH45|@oKrlA&mR2C5+BBb^FXP>VnNs~^a$Q7kBeeEQ{u;UBDvZVIiq*%Jyc8>vl~c^)V5|L zIWB%fQ2BHdI=cCQ0ChfkGQ>6@^E$L%Xxyf4>WMb98jkvBS6J?L2d7d5R7pLg)r>9fWB8Cx_5XY+}Nyx#cry|SyNpg$=s zSjfO^VHm1fKBG^aEwS_VucHWDp8FOm7TtO05pdoi@(>TL+|B1pKiQ<*{vfl|nswOHz5s`m!+g)*@l`mOZV|%enRFI4-MU9)bu_V6 zF26uGXl6wc?WJ%9*|+=7bNbX!??r|=JktPrMKuBHiz3VT6tcZTE!491ZUX&vYZ$d? zrk-y&Sf6;gnK`4TpPa$?Ko1s6TFQbS=##Xcd`fa(^q}l`%>hTRQS+kafX2?lHUm0e zJH?MZvWo1@OIPNrSw(!eA>BP;B@Pz3WFN^Brn7o_-*h(RElh99pAXC!D4tKY)b1W( z)`&Z;KOCe`u-o6n%MBBCOM%mEsB63ZP45!voJ3 z-SkF5bI9;FL{~{YWr@KS|F%ruZ6;_%q_d9l53EQ7w;QsrotI#Go3Nuu{h}s#MlB$M z&>(%ONqLu*OuNsdpRl@uWn!W&^~2#(ux&hOV)yOJj$capeckZMpkx(u<?6Qie0U9dxzLwihxe?e z7c&fCsXk?nc9Vp(e5bXAs+{N1&c|8?pc@#QZCf_IghRGaw7JpEycmQ@P^wlc-@WJi z1fCi+mW{Es-c)zKZNVR!2OJ62&zO7C+=@Wo0#Jy-lvVQJG>{w1UK=Rb!TE~`_!3r8 zg8GT0C*5g2CE3GbCmsdg19@JZDLgFQ)Y))1Abs6TXEZ1ql@aP`)JxGRgj4F8{=$LF zSJIZsamneXM}E=UUSvfIA3S7hj*Bu=BpPcl__B?_q!EJuLwgnsGDaQp;Mk-Wn*8Mg+cVWVs}|_?A=Ib)Hds>osJmVC-rTO-adVjUm&_3STaf)W z+JA<~H?`S&bE9O%uDxS2EYn6$qUm*pCAZ*CW>`5FOU)%EXWj1C8Y?6igN6X7AP!i4-eO%)C;i$fG z*XCsb0dj2S3p~T!OdQ7g?)12(vUKuz(->gx$%)8)wC!x&?LNBTh}ER&is5qd#iu!! zU9|H7!_fDUNH==#z~Bv(UM)RMUTDGo3o+I(2yQ*Ne)lE>B@Jm)`Hs|*dI%|-^~4t> z*)s&Are7>DGP@7h&CfzmbbR)@wBZx0BzuVjCa(f?tqfkj=&d5QT_*%|ldR%DNVj@( zgh3<6j`gux1TWQmzJz1q>Lk7&)1CJGUZIDFBOfcU>S-*6ui5s*X6t=7tB9Q~DKTY< zU7_?eWZF_EMvlN!Q)g&=dTLH>k>X+epMdsr$R`4s+wHStA*SomMrI*P?K5@Em7iqm z2}F{3dRZ@H)lE?QcWhycLI*{WEQRV%IJ1j9RB6@bS&Yr)S(if6H~uMPfDjcLGB99S zHypJxGfD>MVE-6Emh?fC>5nu)c0kkvU713IhpcNRS9sg>lle>!(n3=6W#a4)R8}{0 zA$%`a@z2L{F6k0QXg)YhydlN+pn665h3z8$-8Y$oK@KY{qX@>15VrE00^ce6_krYC zm>-{o#M5Cq3Vt$H&TqEVJ^5(MxDj>6|KG;stG*z>u=TJQc6cxSe&ODd{d|uO?3QQg z8DyVY*1WkH0!_$aDhqzD*6~EY773E;!qe1;9uD`6H_UsU ztdRrw0h9;wh533NGEh2M5%V(8nS>d1MgF`RNx2v@vwJk66t`#iqEU+z)3p>7BwXaM z6Sr0RYhCzn!TNZ^ZKoBIAWH#EYXRzU&zP8f!*3?0cBdBp#~&Ej4Vu$G+0kWIVxzL&g=5USZ-&J* zIt;_~GRm}V-Z*P`wfTcJ3ING!;EgCW@;zVNdDy`=I*p&v>b1g@(*>-%gRCJ!j@-?zc<&Q6q1%-$)Q=hm>{dcC_4LtU;^#{;D2MF9vuAk2 zw`?yCRoZv{pF{uix3!c52nx7}>LqT(~X}guA6*6`sC)-V`^F9V6duIa=Q}KZCHU8-&a($JN`K{~X zz5^qJElo~*U%6nV`RR;YS(gjT&D`r_Sx0(2qm5GC?DsJ7LraS0Yh+|}#!OwETwe{> z>BUZ>Ge4|XaGnUxQS_{T?^5Li-fmdGZ}86wfGez)Yy0K!H&)&eXmw$YdYNAdNn?HD z>juZzl5F8U#KdkdogZw_mw!j7|9~~H^HO@s6BNY%FIfJcbB&?zH2EEoQ=8aQiCUi< z->OrTwm!e-B-6slmfWc|Nz6SF-1aQ>g@-Q3Yt1>t?FfeA^6*+(xx*dxL37xgFvC+e z1B71sw{U@%1QXf5pQefM=kuAic|F(*s1fhC|0^*6t|Nsk2F5pKfcQ?N{;dE5=tlid7vPI2N zAY3rnZfnP2an4nXgT5?c)AA!-O>eCeN4Gi@M{!hM%3VTe_Kc^-h6g=!lLV;VIA#be zDg4+>uixT=%i0qcCLFiJFHIN#k5JNA6Z-BtKQ1F>E2y~?x?P)$Ojatym$q;JI%LG5 z8VxcWYRAgPx{bW)PtXYu-#W;P!O?VYnpD{Pg%{lzcKl_Mk8pB|-f}54at0R3QK_Mj_vm|Qc=I-={>h;CM^skbF)?@XVO?Atd!R%`?2%4-qIDopcr>#$36XFPFpsi- z2WaIqzNSmfUf7$uZT`Q3=PwyT)Sw3c<41ILu86QSXdn2;ob=Co-~nJ>G0_n^{XBY_ zVFXW7<^@1l%0fdcZH-RucdPhd@>6!6)^Jj$y=0?uwXM&fz;| zh~b3zFge(09ON`0yH|ykcd3iZcav4EK{&JNbY%Cb_tKR#7wNKXi}zsaJyDeyH)GlW z1v2AXHGg)89cx9iy;CPwA7V_cQIpBa$C+X~W85h6QL;hkN>-6nNdEIH<3h<60Tp;6 zUA{`eHt5dN#DcfGGx;pVlsV>7JHzY)ZVk(-BvR+hhk5)7MVS)fg-%g9raRwK_X0UJ z!wH3}cp{xHm8M3hN3*xeK&e%4I~7+@=19Aa#l}$s3LIfUmZCoiUX#uwhdbV8Cb@>+ zPA-Ul5tn1usF>b27tuZvd7jrxRY7mwU7}D2zRUE)YYlR_wjANw?_?MMIho50eBH%n z_nocKjxV*l&AC&Q^ilmMdxDC66V(blfMhJv5>UgzDNaWjmxrV%G^&?@n6b^AR{Lo? zQxMZ6clW={?b^*Hr8xLk_dJw({{RPC|!^HcY zTome^dJA?CwEFS`*o!Y*$~tBfoNu@~h@k#%!Y|7QZh>Y@5ykhfF8j3XBse2_T5(s^td? zTvZ90;Ip4FsQT32(;co%ZHj`Q#EkB}59YacG8z>=m(Ar_ONc;}v?U~1h{j|4ne{gL zv)`+@vwbuZl)cZqXCaeyCGDxc7hcBXmtjib<-KlagtJK0bOFtNojR}+JES~L6KTJl zrJ8wl`O%Q%W`qluSS`3K^xd62<7Zo93jMTEP zS}G87q1~OYeF4B{ucv^40-oDaMcjDKTCnrSWL=914iDrH3tc~Ies2415a|t^8`4PC zQCENt6-P8->RUlpTTK<_V}~RXWFq4X5PDUPI6?&?OpRf(>1W6Anq4AE>*Kx)JH*Cw z3uMhjlJ2q(*&X+&k)^UkY>z9cm++r+g4WWfB+;#=;Fk|gSR?KhwQ97E%gT!*^ydw# z+i*W>t6)p!%i+KrbR;XQT6BtHCdMg?V{U>UXi^33$4C2a#)WT$K`-fkR8K_sI6$S9Wbpdx8XYGs1s(oqrpwICh_O_ zS=_ZJngy#d7* zE^sSoO-%zAW{}ivyzp&Ns}yDVK7F9&G$iW_%sd`I*I^5s2sV@(8JB?%3vn2y6aNXB z<||~?lXjEmuxcQjY_?()&2opI?})D{A`7RM@uuU55qntM*%9j~AxM7L5s|f#3CzP6 z@WAH8s|-;+n6a8q96u?G!+$n8HhK%{^%1gPuJeAg$g=PBAa2{@x$R`}AQZHCp;_yv z7MPMyt1gny5Hh1g#Zu)*TkAp}vv$TWIg9@$F8uup1;BAUtf5JJCh5(WCC?|Mg6Zq2 z5t;Xi$?#N61ovAd_9U`SN^y!+s??1yyhBt_ph{mxQ0v&8FyQnp6oxwaw<>PG(Eq>I9vRkjH<|YzO z7y9a}n!<%z)EOCxW|65lSOTC2FrPt#+=UUy-wxCtFmor$#Zk)$d`fJm99RfXh}MzT z><`yHt3XHlv3oifmQbzlG!ac zPWx9RB?;*0eIycNZqlmGZRMy}haT08DU?m%mBLbiE=_(i|I5rKJBP>P&y3zD60K~LjZ-51#%-GlwQ#8_$( z!6DQb=;$o^LBS+tKiImoCy6zqyrR4(x?(6I&fCs8MCDW~(KU`V=x7HYKna>1%??Fs z?{p&HKeA+FYhaj~y|&SmBzKKS(i7ugU;w*Lts-I){dgEg{?MUddHul*4mtQSW*_A7 z84XZ5?4M;%xqUl&nQ1j$ zN$~1WE63+OlH=x!^f_kBp;0UOJ0OvWuP3_b_#nLpC0AN^0)QoV9w6;-%nz9E)Tb)d zVo_Q|GJj`Ab);EgF*ZC~{=WUI=d{1+b;73nqD;v5j-fnF-Sh-W>lr630QCl z9Ca=-oRJ&yT#XB_WKZHu`MCK(OU3{&$&@$rQRUaVR zmHH86x0zN^%P_`5)+l9yM%o!=XyU=1`#lMEj_hduj^1XOg#W+-;Jl7A+SY1v+*)6E z@>Z1b$JhgBa!$y_?IX*?)psG`+&rWH^`tmzt124JBJu3_4{`W!#@|Adkzyh1Qd{|( zWFKzax#Z1-K96}?*NWJIztJebP+I{qYx_`jR7{afVp->dU zTgy-kM}5G`Lf#-|v*cC= zAF;>&gN87!K6$h(PMsq)o5t$t4`r!In%hy5{^K7emvahDIqe8NAhJBCzDPpq3Mb7;D3d<6*5 z5nYq3$}=$X6ZyjQIB)*Da6b;9-TL=88qR3&BHsYCoof)^p6BnD*vEl@SZbN2^^<`SvZE$JygqVAGvvsO;+aUP=-}wI61-$Q21PbfcIsRWPez zl9ITT`hg}zi>Aa3It(1!O<K3iW-_|3?A%H)J&l_kISY zsyAKwv8oj=zmwJ(G~(JE(3}lXpb>R!q$;7_a-d9HPk0!|u7Uy5e{=&pgfmRC##b*SHZW zZJ*-}D`8Q-Ig9S_rrn;R^tv^!tg=EfWeml0qOjmU-sjgB^@T@R$w*__c`K=ixmP8c zB`7aHnyi-MFlX{dm6#UQc|5SF&ji^xFPSzuxzuUHe!JRzXn}-`uiQBfh>&&2hAx=N z_S>7RRzf=7#nl5$7^XLrQ3cyc4|e4+(p!QHpl7}Vm$P-MMO0V5#OK4Qr%bu({y490 zRWJ2GA7a-jH*Ed1J`imI*)cbhitzS{yPU_;tt1^2Z2V>rRomj}x=6VP5lT7}Wi|O? z=uM%Qc4)giRSONwD+pX@cfzO}h&CHtkoLE^I)ZBtf70eB8{Cg;DjC{K!rU3sPb$HgSI@?YornM#r?gD%FBuO$q02SYA)Jn4 z3CrwTk_ue9AdIgJ!4{;{a)~^^j(44#E%7pnk2cOHOn#h`ha~J*b%e|ZSFH@Weg^Br zk(0MfPG&fd6l6H*!43D>#cStba9E)1HV}cf7ANrHI_SD6)uXTB42-`AxrQOUK&_63;0-MDAC$glGl7ULOOO2=k%Isv0x0 zgB>QG7Z5p5eeynVeh()b(uA+f72>LfaIqr_+NzioY@SG{S{t#!5$7Z}^JC12MI_0T+C-+W-eY9qnOP(yxNFxb=s2xpGI{MoCk}~>>MOt$UkdUZ z3#|8CC2y_8{3YV3PZ~aP=-;0oTR!D#9ks&_d`Nibh8p_;xSf;m-lg?S#=z^u#d-ip zuNm5x?;&I(GnIr{vU=~A<y#dK)$`3PWYsk1 zNkq67@My3u9^0cxmU#4ju#&+}EtTxafV&@bqKDcsIE8VGVeALWERUdmVm-!BA5fX3 zJ9;C~I(pryENd7!qg8Rr)Vjtt>qQSFyy`Q?H)4`N9qJ{spC2Ta;3JyhTxmlsHXpG? zpx%v({UIHq1XWq;<*2XF?Wqy%=<>T_`B(3=oG7$bT{)sudlQa4Iel62$7!B2)1OSj z$pi9tR)CYSv)i|)B_JKu@1+qL>$El9EQWE{?n4a+iy$#O{wH)*wAbk z@4Z-cITZ5NfEL5fFQ-@jf{X5|L57LEm50C?pJt$ z#XpYhfL%2NLo_BsSHKuL^?NR$$FaS76dHMLQVHwIh%cOo>2S}-IGcuifGh9x{%9~Y z-OL_HX{~#qQH#xEQZY#zbmplXha~rMD8!p4wHN5~2^p11GL&BDqI0`oIeY6uMedsu zrguJZjxbL2TR8vPh#*y23ke||pv&$>BHQ&r8Dd4dT#c-2gz<5;r%g}1$ zGgXfEf#1TD%@ivc8J4NE-MnNBn``FdFN&9S3fpB{bG6l)IHJwxiXv|46)w$~MB$8g zeGtw}+Wp->+Gsv_>4DyWZuNFoNH!X!_V)O16s zVc#uL7J(7-#{7e8oVZo-3Psq@{B1^p?sd~D1ENqj@$cIzmOZ4hs*(z=Gnr@Wp$#Q+O z!WDq0B#@?sJ8C?u*&l|SBI+vCE0XoS%irTG=>dfaG`ouTg>(u>>8E@fza*D$BdPtm zzNER+-?mfSrW=GFC)-~)qGwKgHl*X&Dl=>bEhGL+BBfMsp_6up@b)6wuN0g*hCs-k z{I;~GOpT^<`#)BuC|a}Qo}4^-VDcXi%YDcs{QLpcIlC)PuIe$1+fyy6tO#wtLe8s> zZC{x5P(RTDY^Ud;gVou7wGWxU#f2iii0pd*yYpy$ZTUynudbpLgrY;Okc6#g14Siah!2GotWMr-BWbRJd%|IO?H)|6h zWvOKL^wU6hdF^kbW6G}*zH;-GT8BB6Y|y8lw0>Tj{<=79cCSNR5!YK&3WsUC!aw#bsP*Gqtx&B6lVlz_B3*bL%-7X1)aIBs7@% zhy*?4Egi9m(Fmeu_DI)$d&unc>@CBLt*Y%jEvedjhcjobsalseW}Ewv`zhWO!;GLU zZ;q_MBp1<2N(%DUO>cwtn-EbXw?}mSezb>d%h3UP^uoI#x*yDb_sT);Q2p4UJ_@dO z2()t88{$%Y;e?m{cq6j*Xr5lTPfGu{#SF}^_eG7gBf1w2 zNz9DEaP5{=#L!6m#jjQ1eHZ3J7(023i|iUwBQsC=dL3rJawf8e)o2t~*cfPX4CSGV zNAE#%z)nixn<@Z{f4AM#YP}I-c1kT2*=Zr8CP@Q%pVRwXy)c>p&}`pjIWsZRnEped zcrKEMME6HAn1bu$`)op}U#0RR1Lk(`PPt)sk0C9`UHpybeG6-9r^P&rES7cSeqe;x zWWjRIOqEKOYE5dn&MA>v*HfBO78E20s2cX~-$>eGoH{4lcN`$dw3=*YG{+JmSfac)_e>B-!ab!<)%A8CWy`9w}nc+=#4Q6=our&r>D>jKw%?YD{VowXm>^62dJ zG1Oi5#blNOFu$T9OE&YI{2$WZGOVqjTN|cADPBr}LUDJexDE2z_QP07i9kM6k^U|?$C&erfA}9R zh3S5Tat)?gmW8PYsmCgB(BRNJ9bfwayopK@f-}zNXpDf0j;|XRXegCG*$KYZ8q#Ri zaE}(a!J_8L+E~)P;^MMD*w{C^MtN3QkqG?R7Ug1xYS*x*IP%_DVEtDWvCH6e8=oth z;Zfj(jn4?;{9rNe{F)8zjgkS3zOHOJkY-dQ9{9TDIyJz++hW zdVyMbZ}7rqzKom=2;1~WPo%1Fc-c?yzVNCe(~UTU*H)@eb-+)^MwGVhyVTCNmzHCj ztv{i!GEknoCNKfQ0|*w4{X$ATH>ZXkRO=mA^Ao-mFI~GZ^NVHVvEQR*8-eg1eeFlZ z7C(Km=b92m`Y;wx*oPzRm^n zI>vS0nQpp2-~ftbVN3Cb7V}2iL{q<5w1dA51_v-6Bvmm#z{MfjSh+00$NNw;ZpV4K zHh!C@EZkq#zW;iZ$x$SAvk6*~JU?8$w)}%b`1`LLgeXv6Rb|vLh17C+kWW}&@11(f zfya_BNad3rGKA~2wns6GUt#*joNehOa4@MrdBu0R|8%RIxfq9`CXhHD@X9t@mC-0u z2pj+7pP7jAh(i%Z1yp9@n;)FdOH^z$#ht~hRv3GS**{7Mx)Wb@eWGS7dmUb)vXR8} zTx-_B<1ttM)P2J2e$`Pfj_~X5HdC8tA0=UHz+czd#FJd46K$Jw=YS#wJoIxa5?yN} zSGf7U>~Ui~hsA3}!v%AkfX3%w^znFvqQ~WlZRY6qa3z5k7#B8|cJ6y4b9>2}e79sn z&r%e!7;(&0bgWmU^er`PylMKDs~hDb-*COT06l z`RL*NuyK6=wpJ0h`>kYBg;C#j##>G1*`n!jvSI*xFlEX6KCzpZXCT2KYtTwzBv;K> zjYqQ1ygf6@@7f1id;Ugzzcx7^H+Hgzu9_7wo~nIGfZ@}xU^R&cr&b~?S`xVw6>4caVKi$=Jy@<1nay8E1xNd z>Z2Gaf0d4zY=rxB9#Pl zJdf_jCmJcXMg~xE^#1x3{-M6`YWmtb%^!uc&{V6W8E;;Vf*zldh+I&{h+N}oCBYVC z3_o8y7xVG{MJSH0CA<_r>D3y_B|Uw1^e2tH88tGFZ^L`*v2uH0jL>1(pQeN1io-AR zNO%c&sAbc`~5#__H0pDj9PAipxWFeMu|Z>>N|6q1gqO(cQ@OsI5ut zyGHYA_ zV_eYc>2d1p$wIL>U;vG&e%E`8Y{|`BcyMP{?Dflu33==%7V(*hBg1MPR-@S1CG!QC zBd>$2E9K-Sx&&Eo5A8t%gPT9fmuA&l9QOPg--NT@PynVt@$zCYm$;x)wmFg8K>SE`82)vHQD>Zm-0W(Xaq##Mg7{M@s=Zp4mufQPW8_#SaU)R)ut= zvSfIw=+T_uF0?($V;K#M_mVqgaf(WOz6E?vLwRezb zlr@nYclYsf4QwA--)L~tw<$tFU1#k1_{e>~*$NsQzrCFd(7Gd+yWy1PSKUmVtlUhj zz8kSl>)Q#S$rulQ@bUfGtozEy)yV|F>vxG}X#XEGk6zBlzm1H|& zZn*qc(CCQU`^@(jiulwa1g5Kf1q>qH#ficl!Zt|lMTV(!G@ufbExE-hUAuF9&Uh7dPb>`4 z%HQIG)M?!riYd#p$vDyUG9Cb`M%qm^cRp9P7CcMTdd&p9_Avs^{|x-Ho5trO^X-Xi zNkQl$0}Zph#9o%QyAh1@l^JX;`7Q6V`(KZ6{xhY4_C5$#V&kYl+}Ukg?_5x-^cTt! zjEd3LI5as>*J72a!tAYr@X~%0XE*7>w^5%&H^KPTwVMw^S7t@+FO|d*kg!ygCnwk> z>i+4}?Jl(&0=H{#pHi3mJt~+yHh)J%%<}9nJL?la`T8cU&ap{nab!-{*cL$bTzY`y zLZ}K6TP;U}gM=*zJ&%>qeUDs3=46jDyjCshvP}M6@*$;v0)FkOZFR)ullc~3OR1XS zA|y`G{Kf}#v?*JxS@2X?nlS3667)K_1PUz-z9`l#--x3nh+(u37VR!z5bvvccjo(& zR;O@lkI1#BqTMEzXQYMm5s=>vAJY4R!8%6R%i7 zzT?^lfKNibDyXxRlk*YkuL>QK-}&5@f!+PO$h<&Y$gup+uiqA2ZVVBEEe0u+Evdw6 z=UZWB!YS4mfFc0&te65fbt8M{XYw||?PX4D0cUSKPl#I9Z5kgQWrAYsV_QFBmaOOJ zv{qOII(|AtHqi{=j}1tGC_(O@9Fu0Yl`KAT;m$Wd+{kPmK zrV}MCTg%R&+Ov%opVS!jYsrj8zb>S{-G#YcFb&Y6ZhCSJ14z-P?d1_KrkRqH}SGEu-m0k;|<6js^!8Wz7+w!^i*4JX+&M zXagT30lq{rshrp;IR}4pTv^rQR~b}?o`jnX_j82nP$!eZz!DC|)Q7}T^mkx-$L{7v}tdQ*gIkvZaxBA;NYFj_L* z5+WNbE%hTW=f_sVP~QAj-6#V_o#|*w4Av#ouvkZoaVv;YKCI8A=)g+6d@n1Ue~a_4`3fdG>SKX@h4`F0=Fx}} zshD+@##&uQ%pR)TuMk1@wBI5xe0bWcUAvtwK87mtG4Dh%C};BAx!t9<6250N4&QuL z9CBW%M98RYuq9sHs*K+;fFFwq0ju7FurE&5+k`ESIX{ zxza5cn_<}9v|Q;}O<>~#qF{%)i?G?#;xlhk_hg2bn~$V1=6{Gy&^vT}hCT2vEPzZR zBtMrZ0X{eaUy(^BF{8#r+D+)QC!$d7e6x9W|+l_m@nm7`vH?eD}9>O_N@+Unn<`z zyd2l&R-@p0YH||{o`?=O9Ok>q?8hzY7^*QIEZeqLpuTzaaMC+zz;`VV)1VEH7%T z&!Cvjo699&5Y>Q@K=23t%praXlb$@dvErmA`qbmj^gS%d-N*jONw?7#A)KdOah$r+%TcGPf)M$v1juePWi~DtH*mAn;yPS}_@a&uGto1sO_5nih)1Lrl-I zw+2J^H{OtgPUUvEe4boIKMr2_VrXvZf$nWUU9kKKhbDlQ3Ldur1*@kRFbzxD-= zJh+;=S42PJtuLZpWcAdT-H}+X*bdNAx8GN67St}nrnud^3P5>5OV9B7NA*h#VodU} zZET;7FsHQ$FzIL%9Imisl`!%SWJ*X8n*x#U%p%}^KYY;#7;@eNt1F?D}fNhMrQxoO+Yg+*jRVa7mk~pr zcW+)B--xavQWUPt@n3$j(`Yn#%L<9h7bP@CJd*;?^>Z=M;djsEfWC1aI^oeEWeP3D zMQE8Eob=8&f#Hqx!2N~e?L)gbO%i-_(NR4(+S)Tm`Q>+vBJ8YATVc@C5^M1xHS1^k zTHdFjCL+QGuap!o*S&M!C2>3M5-GoHxfsK5_1Fn@qoN$#&IWxn;^NOup#2CP4G~19 zfagRT41W5j6p$ww`c$Yeq(rZl+4YG;U{5U}p+25@@nzg+hXi05yY&RWpLpNFKYXWX zg-E=?#~4dh>wY=twuyZ3kY-SULg8B|d&7rFxl0N4$ulh|IMOD?!n5S{a?Ec%xuwRSIvh0)! zPQc4DdSx?>FFU^+to(%22=FLFb2MR!z-u}OnzAIvex$2XftK!3$ACylQz3DrH*#3A z|F0rL3)kB>x}@~VFiA|IRJ2%6J{R6o4JN#oxmNo?8m7P{oC#&&mJ!WTr}H)O#M+XQ z_$*4Za+{XO9+{~9`mpbYllzLus(h3UBhq#%<%I$&S*iqr(C5mKx-6B;)(p=>3QMEI z9k}0zvdMXHmNQ(hfCPRaS1VJdwfN>)cp4*k zZmp9x>vHV`lncm>ZCvj3=&fP*sfL*H?1_tETqKCvp+C`^n>s=-1{NI{$SS21?V7hp zCS^A>p!2G$R*I)vaF{Vo4kA#^`Nf@?PF;E&P!0b>G2`D+;W5& zu%k3#f}U7pP?50o>$Kla7jA39C$1zU5%?~v%dxS6nl51X7F`6mec^Y#$bJ<0T7Rg? z`t~gQr?AN=euDVd+R7tkUxC5Gap$wmN2^z1Q_5#wD4#xYd=7 zX8UDX(SXoAVVhd-dA?q(VXqCnMgNm+8D|upC=R2;={7Rt;Y?vmT|_@xX z=k&X2>R_3}a&j*FsU56LFn!VNOZ-Z&7XTyf&>`~74#b&c4z+$sis+G6N17}74j=L= zn10q6!IXTS-GAi7ocZ_4EzD@Nf{5M-{+V4EPFCq{^}e-{%8N8?V0{Vm?$Dve%dC)! zf#r(-ITt!@_fsg*M_FXnUGq1JXwSoJNfSsVwpY}Q9SqtMJn$IbVQAGW_-lSO)jzV2tya;L4(tM9;%|4e$fT+gyb^X-ZwB!yi zEK$zdpK73mMO|AJxqV7s8v3&vte~7yXYDh6&x%AIEN62MskXl$(vU3EW_q!MB)?4T0%NhJF{cnr@4zh z;K9PD(JNOQ1BntBT2AJjdCN>hUu{OIU#y#923@HH}J&qSRybS$uRHjDUG1U42R?tLW=a3i+B&!CAY|tOB zkdgeu+Rsktgylb*Q0>S>Lpv{&%9}#&F4>cix5anmDigC*5lK@Pa@M6LY)YIg2m@?e zJ_}^@`qNBm%HUbnx53PxZ`JI$0#V8HhQ-BMNPqeMCS(QiI%e7bsfv9PJ^TCUgux5J z!#btrgULk!ZqS&?iPJz@_W=U>$@2M2i0#A`Y8JW6>nN7)ZFiTys1#d0y6hN1cWP%b z&V;`P&)_;DduIjQKF6MBv~Hkzu?aN{ z=@1HTNMH+G&UPuoZKC(MrTA%A%F-F2 z=|Q}y9qh&Ic;!!-biQ%xc1PE|_*#ZP(rkCOtijL^uXHjsUd>*nz^{=qD#szcw)t*^ z#WpRW)&F9D>;;!YP~r_F0s3mIHFJPTj(_cY(>-}i&f$9d-qpU$R19VSX;S+m&gzbP z?ZiE+LbGJO+Gbr=Nnj{M^hD-G8)uP)M+An>nsbckub{rEt?!%CgY^P&=~;&=6_P2Y z3pDE%rJe$*EDu*y&TZbz9`R2@tvD?^`IfFu6k9nJgA8Wv=-MpAfe=$E~ zor)$5z3MV889;71Pu2Xh9{y^pUTONs$0!-4*_u>uMV;~wU7i)i*;x{dDAWgUA3O2= zYB5s+1MFQaDaV!FW3qKRw_U4mYgZP?vYO zpM4V-ACgoB3ZGU~-QZSK&0E7eM@>+N9=#a6>dS@@JF`?`M#1#S=hkaC{`#D*uc0Hx zGO|_@eyKIurHcVV^^jB-V*oqIZu~u2HZ`lyndv!vB^0PysVvYTw0s1Pz?oIu*x{E*_O|naVU#DYMsF-$W`arj z&Vvs6qZQ~YbZJQVRkr%h8W70-TtJQU!P>u~XTaT88EKM6LQS8;KU4Jl{+XB3>>`?= zhy-6$es(fV>_!Q7vg!p>Y;X81UYcPsE^ZlBf{WSsosCAzvx_)^D~dDD;jiK~lLkY0 zw_O5gXyD>t^|wVGUEl7%skiOraRYAXCciirh^8-={3Ky?$7D2V6|&C%nm zSNWVj(Qb)7*<=y%CY5uYJCqwr;Q?ETKyV*(gKBI!*J1x+*0*2b6IK zLaf8SGa8JeL%q2h!43`o(moXF{*?Eb1%+;ZRT?Yocz5K@}a@ ze*N&(Z=3DcpcXiZ6Ugtj((zjcPbR;UcQiZPR5C9iKwXh9jY7+D=vnc2v5;AzQ#(Y& z9)}_WC}a zo>v!?ES$b9b-L2sQm+7EOF9^KzuaWqtc?KT8zVUV$HW6CassZ;gX_c^)+?iElTj4YwxTx%01<{hd2Y!o-XcV9?B*ey5pr)iWYQex3)}>l4%do*IlWp&9-&yU8 zmAP5w;{BhfC-47P)RU1|4#=)RAgN~<&Yp>P$`h4rdy#S3lKfPq01r|6oqGe?Bu~Pio zDD0hPfzi`ABxgg!pL+vJ{;Q~JbQBuP=Kf@LX(D}Hjd%T++|kxZJaa0L@mpW0mNZpo$S! z>nduW#BTNT+%#3lmvp1!A#Km_XrWz)p*O>r8D)6jp&j3xT0vn^O zyn@)HG?|8uixP-XBz)wKi^~S}7CFB;ZdO9NmQ#m)&ge%;F4_Bx{YaKuk*L(n@C1cu zn*L#Aj$?i0JLLA#?WgqFSccl2UV$T6&`KgAtUcLQ)sTrMA1S-(Vu@7lus|Ljy>=IJ zp1v5X>+e_ByIlk2pLGo(o~%G_H4pKm@xIRm{>fc73+3cG%tdhq%+b5S9_4zRA*p%b zPjf){$p8_LzUdm7_FvZ-MyL|2O5Uf?Z^zK)}KfonN@Uf*h3PNM+UxMQU_(#aaLxGbA>=|!dkJ}c$f zU1>(=n~0}07j*AK^v4oq@6>yN%#7nawQ(5%%_7Zrsxo>VHZtRH5PwN-n&KMuz4eioYhs5J)!{!sT5{8uL2O3 z1db9YYmgc9pSbM&+<3iA9DmhZg-X_lVm3qYm0VlvhfVL$|KW=n9*vV-^308ndCwgoM6wBFQ?) zsQ#Bu>fX%oB2Yw2_j9vPW$*JXr-N@O2$ws{8}D4Dvd8q-gZ=^VM54E!zds&IA-3>f z>#H)w-fr(RSgNlX9!ey-x)+6jo`=>F1UU$@}?!vJkJs)e)O z$f;oM^;VymAELL_Pw*3ZYLBSVKbsm5*OkFAS~%JDZazV4$s8F*5Ibx8+gD^S|FRQc z@BT^0`H$iXkZ_~oCN#=_{rZni#Zmshg!gMm;F%+5S6b&>Xy z@{FP9lzxU%iRVLrB7%QIjN-Z_G$5H-DmMY8h%qyAfz)T@W8>h<3nqpf?X#PR=rQ$327%3}D()jvi)q{vE_j#}Pu z4KipKlmc{7t0Fw1eAIff7A*1Kho&L`QM5*wjHeR^GHm>0jEHVt z`Mp2=e?6i8{muYG^}m1b-;bqV>qp3WgkqGg&Gv3izWzl^D;Y|xVJzTDCr@1V6G|_d zv1fnFpR!y1Z>R9TKmLEJ@hi3LzZXIF2jLs8r~mcT{~%RC8q4B?o?ib=Y9v;=l>hIg z?cXa6FtpI@-mTc)0I<;8M(C0vHS$ z?MgL@+7tuPh5$tgZ^7Cj4UQARDQrS6zxIw^n7pe(**X&}=zixfTobP&yDa9d(5QO` zp(+_Q?>e7bRk@fLQ#f+czidw0$RfJLMOpgM_Qt3($*HBe{Fmg}01MrRkcNuc@SCza zc;L`-)UyDQLCuF^l2RY7gkKSF)B`pmRY@0$U|d6WZp&r`b4N}TC`;aL7>PO;vV7X_ zscG4&$fKt#b+`YBHYUcUowXsAoV2*N>d^l5f=$Yv0KP3^ekU!1~)mz^@QOt z!F)jsF6WO}xJx69|L&gc18aJ#LU#Fu(BQF$MID;n!i#eeu*ZOnS`U)#3aQg+-c@%5 zVF{xd^SJ0kh%|dXqI5t0CzQQ62Ov&lptT^2C_;kRr$j{`i{cN6B;I8pZ4RoY5&Q>yFJf) zk1@&IZg{}1GUplg z&GA0*4NKWsDE~CnP;jep)HW8T{pXgL1kwLW#l-UgSg6$c>)t`8bmu<%LNAI1$meA> zp1wb2SAKc=4?&e+-_DVV41VhDqiJ4vsa4=dtj+Oo#{~Z<({NZyIN4`oFnj~8-7x2M zoNE@Z)83vh+~1^sSEtXCEbUKmBayJx9Vz+qUsdFN9RkVVEaRyM=eTF=Vl$|v)+aM~o=>nZh->FR{L@JNyVrjX)}Xq}*@xTB^g9Bw zSkUUHMK?iXh~)q;R_d36>Feh4Qf-*dMF$Y#Y2{1IxwQk&8-{~WC^=5GQpufdri$NV zoN<5lX`BfDDugu?LeZ$BZiO2VEcHRhc`{&c90Rsw41e$ui6BZss%4+dD#a^rEqIhe z5d@TKA=RZVF>kdmDrg`BhiX+Ri~9xn6FezBz3(HLVNqNmk8`Q26HWRhgga@S?V)}W zDQo^N=~Ty|h@ntNJ?!pi`W+9u*Q3#h$19YY_@d3OGVABMfb2c<=_1vRh*ex-WZ4## zu?J1Xpra;J3O41oVM*Cjp1%@g!7#@9>Ab3-gW^i3$1m7In4s|-7zMlnBAP8i{%Ex& zR>>>K%(m-e3wdcDq#5#V6wv?#gxI}YV5WtsP=_gW!A(<2Wx7%wKtb_GA7U})iKe39 zvC8jPN4rHF0Q%O}5G#a6Q`zHahFIxlOqi$^d?rtEXbAH2PK$s7>JW>dHbE*7<*m?5l=&X1({(=d-zrrd6(;;!@l1x+m-i(n-}-E3CcbHo+u0$8 zYkhynG?9Kuyyz@av)6A2)C-)v=069dXTzQ&bK+~nCmZd@C+k)V=KUgE_`W`!0-c8hoZ7snA?La7giv(=dfr}Iktt#mS`s!%yR z9Psq6YxUE0sWI?js+(VIicmM~SuBzM2j<0+m@Lu>sS9eqDyJ9S zT4j8dXBD?@tL#15fQ%+JAbPf5HsM2<;vu`^l!qC|TOl zqcLCBj7fSHMKLaT!F}{~F0kJDjD#(#UBh_RYIaOwHcShFPW<7G~o!)`*9##8^ zhH#KzzE(Bb=N5UrZJxdD02b$%Y$xA8X4B~0bc-d+rXo3@XAhc^zFte!Y?ypE>*NdY zj8ZS)n`D9o$##m0+*MP9#FK90`M(;}VeQf{1$(&0YcCFsW|Nb4wpxZ{`UKCvoeRO- zU>+mOv6{c3#b7J3abKh8p$pC0sNZZSBgPeLpSeF2%9Vk46v`xDrx19=h&4@eIKI+3 zWW@$L1^;m_2mE8b?$RUTf>l)j;bURUW*QJH0QZ8tOrC7qWGISwYxA#t9hg-pjb^_y zabEGwUb*A>z)p;;W~S5HeqeT4e!!v5oo}%`Qy6{r%eADfm{xKBFog|KF=uA6_53-S9BOrLZsmimT zNx|xSZfQbOTXbJ1$^P99erf7ztoh8db+N!vCyD_gIWvXf65UBJcHMw z3R};g+ydu_46+=QYP4&V&~(n41+*`X(Vnc4Gz(H#;VNylcxhOg(l{RP^*Qe?MiCkH zs5*{selWE)ET!#|OY~jJaU)iKj5EKP4_BYP%AOfPRUYurgNk2))9T^A98K7NW$0+< z3lDMu(oc~h_7xVXnsuE2T81KsuSLojSf|rK~Qv8GKA zw)@xn5YwwU*@>iCVo1*Fn16KnwnoQ3$|%FvazvzA!&LmVlH~p@eE+!t^ZdpKKA?58 z73sjeO1g8&i~Zk4@oDwN1-qf@TW5+IzdB$G$FoL=(}CHvdTz0exR4#rdyF!_uG>QHC3wI+z_g9kDnP%EwIg28UI6;>ZkUe?8;$YoTxeYOdsMLhFsSb z2QzC|<)7;05#VV^2T7g|jP*gzx;0>{O|nCvn-8m?ht>w#-vdu6ley2Bz_B#2j-JHg zjnpk+Kt?pV!d<4B(5A~<2zL{E`j^3E4w%?4>V(;)-^dJJb_N?%g-;| z1?6|~k@ux{VCND!0#hd2irx$F4?NK;c~0|-$3tF;FfJus-J94th{{e&PxwGS?r8lL z?nnf2z7TesMeyvn%6L*zg&>rJd8hIlN-QdFf5`kV=DZgbN&}Gmsf#p0AFW^>u`GQa zV`$}3UJV~v%^&!$_=zGF2f952eZUv*m4n z9Biqi$Nj33(^o1*zz!IXQwpK0)FC5i>dta8~|Z*d=beUpFn3Mm@k7i!ikaF4L^|Wjn@E zvRLn`LilVKsi0hll~JFg=3imXD@H0cbqDB4-K2|GB>N^oq!`|u-PYb(jHAzw3y#km zI>r#c&RsjVWiXbDW)!OxBAxxbbtJ_5*^%133Rvd2aH#}__ zo!rSg^Gnw0)67)f{$@j#2Qf;($RBPpOYLT>?~&N(JMC%%arcMdcyiz7M2s|uzi)d7 z$TAIwGXMiQF(io};CRAGo4cf=3clRr`K2}=lF)VCd_GsUHC^rPaBmgyQ2 z7b~}#@XLs#7^?YEX&3_7L0C0chA;a>X39DD1z$w}B3`KwN7Rfxn(*Gh36Mtw$Lc{6 z1O3OSr*5TJhdgebtP@ICr3`BTsx(x0{%G z?%Kq|*<=%AM#RhR3=ZBqjxQjv(r2D1&&eens-x-(W5o`tvnf?H38pQ=8B48FA@&<> zb}#bmgHH}%zpHZ`0+B^4P1zPneUZu2xtj@QHteVBf<`Vxkr#-*Yu%sJAxhw~nsgn@ zLd3HRkM5iq79})^E>xQpT~Y`X;uooGv1lmpIk6W|a!8rbrS0uiWz9t2R@n}Ou{g4# zc(>42+yL80>#FFSYhw*WXQl9Wz`1NY(?8#0IJgxd^J7CY79Ka0D+bE_vde zfx~C=-{C>6wZqA>>i!pCxGI7BoMH;1!Gx?`#yXz`zSB=XJ3)STZd;J=b^P|p!zo{W zWFOnSP|f2HBaC=kfj6&B)C(c(b83Pv$dw7Jx2jm1r&TIr;<+NwKCZ>5*3+tGH&IJ? z##yU0d}#4lbHELcyWU_&oXQA(@4$R`1lm`puXx=3-3YgzXkjrb!2GMOoIa8x^DPyy zQ4<>j=7yNY*ccRQcZ_9j6arrD{1-yo;VnpgS z`mH&en&NHcm0Z29hTM~B@E#Xm%4yq!^6)~N(P+RJW4tz3QysbFctdKO$_@Xm2+irgDTiY>e>`+sk^B+CLgS1CIX5*&ml|sAt z_{>mD)O5{U9guJ}-0R?i%UEZsCb7jlO}4F_b&|Mk_y;v}g2@l^&qJcV_tScGq@wu< z!}s=g^d}ZD0}-D`zv;s zTD{JKSwFL>z9k~Ri-G4hze0;atpL}CZ}VU$nXLjX;4r@RG{@soY^9)kPD-(Xj`&OI z?G$7C&7sPv{$2eGuXmL}at?GokEGC5wX%{we#s?)62a`HsTet(z9z9|9Vh^*xirhw1ly2ckHXmTqiX? z?O3J(A9WrIA8m?ktz$X`>&wyEJ1^WBIGQm;dCPf5YuOICrH#q66)yU{YY)3V{EcpZ z^TC7A;NIv57=fLF=P8N*0u0?BxqQu|rL$kWCOYp0*amr8>0#D8;&~6iMdM#p;p?Ak zwPws#N3!`eZ;vTt6ZdGCL@mAo zb~*|`WGmAXP35aNNaKpq-fH~4??YE5GqO+i*;RaQSRBW4PrF)WokbUm>PRnL*?eGp zh^D@FDe|g%QO|pBHvL3qLkRJLqSvZE>!kfx|IvPvWFEO8bCflRo1xe__Fz$6*jvX; z0Z$Q_sNANp?`=;oGs$jIY&ykMryR>5#Dak~p9q`e6lahDelU?c{C044+oYbuT)}Pc zI`Sl~A;|u3)Fhy-$9=V$*75gdtMLBM2U8X+aJYj)Fqmr^bSxNUbQ;o;c^#N0cX!}B zD=lcZR7z+$!91xst31_Y`iH~h0RZto2Kb-cY}b9_lvCh?=7rxCHH-Lb4wURwTwEou z3JMRE&X_dne(sM|autu9>DDRYMt74`DjEi4C_(UwnJ)%g!L2n3<(88>EI;W6T#Ee` z=`mV&S^2fUd%T;*kT+Bm@?20eh@0Ow{b~=0)P*6nI#*X0!T!2Tq##hN^|Q@3+#sG> zA=qy)QA+`LRUE~|!-0;~8-Qr>s~j2FbANeFq%+cbyL*x>RALm%)EsU1^Y<*DrH5Nm zT;ybH{dwOi-(zD?c-VX{LJqQZ>qSg27pvF^Qm-0*_|WB>FuFea8Kpl6ONnYEYm%XM z^|#|zZPrZ?QqWU*Fs7!><3sjlUMFGQ)ir>4zCfUr=?*4W2Du9+vsutPd(4kSnAI zVWEh~Rt|*(x3xXK%gA;Ua@;_%^wu7X8}-#WEtT!xjJ(x>e@;H~y;kL`AZB)Efl>>L z6gC>J7OrOdC|5-<7ndtNtxPKURbN&TN~fR-%e+hWv=X`=DIu$UoIvJ0D9g7j=~tP4 zW7TU@We7BbVPQ_uYUOy?6{pa^c>1(8E6AI8CK;{9B^Aqp>a>eLqu40AwZ|dF-ZKW$8pGBv z%~!_cz(QTU%=hKPid|nS+WYoc#HL??^qX4(fDU8`P;qd5N%<_Cl|IDOmXG2zE)92J zUrm$1i*vLcH3P*(_h>kz(%lMJR}MzI;?Pw#;;(17Q1pc8vgs9RD+G5<%yV6c-LLL$<3>`&@_;O{(Y?)KQT@;U&668Dg zWxXHVeLgIcZ@2Z^?0U|Gb{u4V54Tbkwg|cCm)f}`TS#Y4tfMXSb|q-oT%neA2Hyxz zl=$1s>4r$c4i)$CEVe>f~ z>aBu3*AAiaMsfOHjFZ>v4{QH$M@5bFJt${Wx|vH1fR_(=I7(@ zF=Qn-EY7bbxTQy^S(`5rg=S<~Ggt2>f{_^3!JflZhd+|v) z(T&=q`XGtfb6IobX0>tuc+b1tPfkN$CT+i@QD`47T(o;^xut{j6f+_hZFk%F7wvTN zg+@Zvo93b(kJ7OI(xYFkxh+taGK{na$aduT+>QS5Tnc_ot!Sm*$o`}X`a9DZ9<>Jb zJ<5Z70t<&^)uZ|RZx37AEwN03=JnP)1tHTn+X=z#lA&J z%zl^3{5ttvj-^}9@}8ydRUZ@#c@AD3hiT3_gMJsmmkJgNoX(%h4v6m5Dvc^z1D^*h zQA+SbMf4hzJ>^SU&yC?byp~H#v#{#5_?OJMW%z-(Bmi`@e6!y?V_|_w4T8y{mRr?OpZjVlb7K1tl*shp;PG%?i}m z^E;x*R5{$NgGgZBUc+DY{V9+{0wH@oR+9yjQE^g;>=+Ez$pM8pNc(cK>E`U0_v9}* z=L|B&tu7aeH$Ce4kZhXf1lV)+K!y!*a z*YtSB$fedHU$R4~f5VD(D_mF2ZT*8&op3p>gH+g0Z?Dsr|2bKf&~vZYQv#&Ut1kMm_h5({#@vHH7b08cZ&6pGAOFk%f{L|m5# zlOB2KdblU_s$czv29@wC6|xm1K3UgLR$g1Xbm6ArO zqqH!0=9`oeSls(-Aoh*JnDi=>=agQj@?lC2(6Lh~V>YB+0lx=)wINa}m8&Qjl1=g04<{(~D|v6=Vb~=UZRNz- z)}aE?tNFJ?R7ChVjT1&fM>%BnvB}@jL-CXug!&M%LI?2dA-g@am6WdQK~_!?nWG+$ z)zA2|+GmH+<0T7|{t;_aVCo=j)`fPTz$@#kLEI^LFQzrPH0mL}(?L>w>Hz#}=Dn03 zo5fG#08-AH?~^?HxkQ9d{ZHudeYi96U~v1hC9s#6_v-#7?FT4 zx#8OUJ>K%%pldBAu!07;Vn*pSt?(MIip;7{F1Y{A_X>asXmaeHCZ!@;A zknFDT2yf9f8hw%XQ>~SzyH&~p%~2=p<|`RE^$3R7_Q*lS@R?{xHUD(!zWn*bS=P*- zsaG&FAK5oMVkguZx3akw2`Ndmd09=?%Q#u2weA|)Tuetv_dOP+gGWXoM)VJZ=Q``k z`#E!%cDEX-Xe&5#Oqfk}2?r{M1+Aj@Dyx(SGWaS9)dDRJ?WI;?gF` z%VQqKVJ5HDuKDO53-E<@5e!p1pj)T_yG6FK#uR}+S*CJl68IceyiRin*5h9{9|qR5h!oNZzuLMb{+U&zi2^bt0ZpaErd8E zG0au8A#Rwa7XCgjn-yCPcymf(V+-%+E;J_sJ<4p;#w%K#)bef$-m2Akms-HoWAaTL zDD*U%M08#B)u^>x?3_H2G+hT>VIbkQP~7WNL%3PrviFU-3B2FOB=O036SQi`hYaQ{ z_wkLOT*RvEF+3x)lYmqDCO|Lk>^FCjw{lb6UF-9AMZ%Xj#YB@C{p({>AYKzU#me0Q z++z<345(WUrwE53Txl?Fj|-;0)H2o0*#H{c>8^p4NBigaqK>+kHs3J9X(X?T+!ze3 z+l?3JJBm#9ON`bKPvwu@TwU}|fSl-o`PqYlZ z0Y00$4ZWDKS0OTPk&Ljt66CiQPA4mbNLCXP0@>S+t~9B-$j){5{1uL}RoiKr}# zt(m3KrVXg@-Y#tzIx8sJ>j*i!JgMIG!*I`lM=>j~&Oib{a>_4!K3}a=8wBme46s^R z-gUvPM@dcOs9X3M)xRnbfF{wMFpEk5rubM5DT=t~l0ph+c0z*DA5<_7IoNSACQ76tC1=DnS)@t24^E0_G6#P* z-uuYzEU<~gy}VP%7Z%|KGzN$p33v`GR=iYb*2Us|ScteWoKFirVJC&ALlWW1sq+Z` zjwuWS6mf)f6!o9he()g7Gf_{gH0TAj%j0s@hyNIMOi4ksT}lTKsFZgyxe=*~ zixd!>rPUO|K+I(&cUV)i$ZR8c7Tp^_7N%sO@jY*P)6sDmsaw7>-x9NG7l>mQAy?_x ziEJw|Dz!GKHnYRc05@7ANbUMU+waG`-Xm31f=2GNf&@xFSsq{^Xm+{eG>;gP+C*E;!~mYxgQR4eC=!^)Ql^Bsncvgm_HgYe{ss;}x76x0)_KY!%VI(8(G{%7CAnp@&tqphrFHSSK$(Q?SwuL3A}3R8(C5RA{q zh9;aO_Y{Zl9auF|Jf`+)BB&ev69&IZeKua9t$DNydzXHp*ggtTtgtP|yc~3U6dmmY zYHtTPq)pTn3cUCQH?~TcR$|pUn|AIv9dJG;0w^$AqerZAQ*3?YkOI*OhdgTJK@)kz ztujLh-sdluQ%+FYU3aC;*vyw%JZfZ|;=r8HP7zAsafxZ>o`0jV0>tf~MzvZsD4ZJ7 zPSoC0WV`7G7cXf@;h`sFeCp#XDIo&oWn5|`s=W34?D_@VtS-YqN;DF#xLac9 zUH9Zs@GGb4bxVy$pT<|5Do)&{PaO=42)(#9-EGgr#!lvtA#5s59@v1=A|- z*Dai>^3A1KY1LUeB4()&&cW(3+kPl@8jEsuRL~XCYpaR%-6nU|M__K39w|OFKp~=lGo>a;9vkd;9xe7 zC<7=WWz?MS;zx%Q{_)8-6?n?Gt{~_aT?zFaMeQ4o%$iOWU37uU!CSqVK`xsksL3^) zMPxA%Tj0C{#m5!_)~kkG>I0+RqyDm0Rx8=#5XT02vP=?v>djzm$b6<%`n|@GhqDUC z%eP71WC|@7L8r5^6Aw|OIhK>-OrG1V5y_MmtLS+bZmj&LYYY?Idb?M}zi_Yg@`aI2 ziW!OIp>aY*z-{D<%eY?uwTGpiQrkz3h-X$+7ds8u?ep+KzMtx0NBeb$S9A1yBwTDm44=p@F!DcNW6 zijt8rE6KhL7G!IBEyys@pkwGb=OA~x;hx8!bu9|$?$lNS&9Z7Eyl6|SWFku6EIe&4 zS+iRjkGc0bf5>;FUfKO-?RR6Ux-uV;ZM;a5kdKC7G!Y< zY1w?5w|HsvpF&p<%SNZ!q&}CJ3a}pjQE=E*mT%b7L!`r|v>M2fe^oL2f=iu7R~1Hbme|ZuPP%!yP#PgfxkOz- zUcc`v;u%Y<3$Zi;Tj@x263BFeeY377T)hBC`!4(YM5ZDau>$`;!cV^+b2XY(O){wE zcCmO&rh+c0u5BGdPXpsy7nIXL1tn~}T!pHqv((z9`G^~raS*N?G!Yb&rQEk_O*-Bi z?jW{+gg2FO)km7=CKXaBymocTY?Nhser^yh)I3=ANfXFCXA)6al?E3NL}JLL;ujZ2 zm41dsX!?+N&-!mbB|| z;g{4S?VmjcitPlriX;smX|t8Fv~e?OqzNkxiMXN!|9pl_o2etT&=*KeT4 zVNvLDW0SVJH39EcoKrfM7{6a#Y+=W0>=;w1L{p?EghWl5QMVTp#MNk(P)m0!f|M&g z!2q%t3zA&=`Q)Go`(y>kknkK#8!rA+M}nC@&Rh3#Zm@qJHQuS6Zy!M3t!UeQ`mbf-Mn{Wm37T`X}o$Mt{9EbPO zg5NB|^QVJ8LlGL*El_4}h=T@tKS@()X=6R5De%ANE(*^0#Cf?3MInEiehJg?2KY3a zgt4Uqt4l+({yZ1@kh0)Ot6$_6$psT>bP6@~8OXP>wP85fD32T~2i-4VN^$-=>*VDV zxa7Ia|7=z`ANl3d=mSC)t36Fr^1KR7$7%ldrnYGg9;V)L9r#qO7wMk}18X0yg0O+Q z9m&(LvplZ;xgLy406M;61t)eSm`EuoPyt#ZvHpoHScZp;mqr{Yu3bhu^lu;3!oXA# z{oRPHMo)CKgJ(d&(^=2O3*V@*=^t(T``AaQIR9^C|k_NNV2o z&Itd9i+kA}6B0dz?GOGZAjE$YmhgWL_Ni}IrJma)aOZF@=EHZ&$Rs$hgvRP`^%lV_ zCqcthBAcQ%pIZvVifD&|BH)cE^EC)2%uwmO4n|)28$k$TQwn+n^HKHeYl#q}{Z%Fh7^ezv1s^!^2`dB*nG&DbFOo#B_^94-+b z4*m#mnxZ&fV7NI>60$0kFRGYL;a{5vX+Bq7E9F>Mdiq3g`WW%W)$N@;Qt|&sG0I5}AekF91)ErcGr?o(0wuY-n|U>p$$g zr*H+%I-)*-hu+y#K0$82&^x(5kATXwlJ&STR?91K)y?~P1?LdgiCV*-_If3T;n(uF z4A`|hvn_Hx`}pS6F!S&K6KU!rp&%4$9}z7pRw9t3mD72Q%?>-S_KEC}c>gtYxWQ;7 z3)F}VPEeo(NK~Lrl&#XJMXw&Py=V&yZAOGi4}#iw4S3MOV9n_q0flkdQj9G;M-jW!PqSmZg-|#q!uH=Swsa6 zUxwMBu?EX0HcKyIWh3@4X4`j$=KyhZSYNv#SMK5AvY#UYo ze!}N(FXVX`q0smf5heLBE{GyAk4h_7PUlq?SG7e9Tc`PmH`*`_(k8}FH@>`BXXyGo ze*93+!k9JT%P;hhoMqb@`>`Pd49sL1Evh%rQ(BY;wR7AlG!88BVb*1#SDpAal#+?A zmF@Ks-^hOT51&PZYHr-_JDM&>r(2li?lr~y;zIVqUzMnzOn~Rs#f~MxBmIgMTzwX0 z`Vi$lmveJ`E?Bbuz*P6scS%k8xpLwHzn2g`78Y^h_UnQ8W9U&gH-qjrsh3I-K-wwdL}0 z<%YSf*jJ6MTG&oOx3*B$7xjNhJzsdMy_Z+IKR`9T`=iseDYn`nz171qkT0c1yFmFA z!|)R;_HmBzS$K4vF3n02pXr2Cx?E+}HRmXy#HTQq9Y5Lo@oMv*gLY0)Q0$Dq_Ia0l z+3oi~1>cG>wOxNQ;-m)4+l7IQPbhChu;N^KE6CxCTHViwGyPZ=liz92-S5 z2v*8=8Gclan5eH*wll(PDUdGdHf3Nyd+PsnJwmlkW6Gm=3RXi?fMS0FKgJv=zt=<<+KZ6A4TH3@@A?Wb{-y>xw-= zFs=*jBiPRudmX8_6U5j)OTxukukd@f>!Vsq)wPZdfuyg@W6jfKEKS(zDAxaR4Q8blQnH-yl~9h@96bBF|{SOCkde z8}o(Y!NxUF|F`w@$D@a6Um99{1rJQrr_v`4tO^{dV{75t5`w_Mnp03HxefW&fi@x_ zO+iw}q(7aZIi4(YMq2hw2x@#dmk65rXKbP=wwpr&d*AlHHWhkAY5K5jq|>xIeKle& z+`NsgxEq$uPsZ$dC$jv8|4q);?<2Rwik`%+of>z&J|?g zlQd5YQZa&Gf$L5l5Mvg5bOxugACHPd;*~*>W6y;d7xFO93`yMFw%0r z)IRt@FeO$S>KU^_;;Cn6PwiolWxVi6c4J=xjo7JD!@~b@F5>Svx{P=`rCkh zt13BT-WyFV z&W3H4oz`kea@fRf(G{sM+Tdq}V37*l+Cz}I4vC3v*O;iTzp$&prRd~Unn^Mcx&m3n zOv)NpFUs%Ml(%X~{J=&4(Zr4fHO<4^d6B~^mX-xSWPsb4lAZnjqYsr;bI-f|4-~}g zBs7sH1TH6Mk)`7(r^B;|fq7FbD~sG$cgtFO43yG5z20IWa?xY>@ z=T2^JkLK)CMqjMzCuu%@(0s+cY(MyE7#(HUnQQ^y`h5R*B|eWZ%kt-&+8Fl?KA}S+ zOwtkj^;L`83?zgP* zS{sZstNe>C;2z!}>J20R7RCS--gnQ0iE^Vy8D6P*9abpl^=3Nn+U`yn3%ydaSM2x7 zn*LSg{1^L0A;ERwb(t`7#Un*^aifL$oq@ zgcM%DDxZOyM{XtFtsDMwR+?QS5GtzeVtT=Cf{M1N;Z~}%iO(J1)xl?=Sov1P*U?<$ zZJC6Cfi_gm*oN6Y!C68OHM!&_=B#D-?sYiE>a@l~(iYpRUuc)pU@$i4kDe1!XII^c zghPyILZ!do*qMDo(-29z{q1>uy?nlCtuFXfNG~DnaoBI~5U=uvbhsr(3uxmDRafjE z?_JZ29gdaHmg8lSR9UIhE;%lbulGxEYG_$~ermm9ZwQdqJj}M~K#Zl_KzP%`QE$VE zWHh+G%aCBRbp}Z>yh6{?Tk{_;)s87-9Y9m7MQ`syTHRa=>aeyYKPIghL71uAW+y+# z8yNkb!1swog6-!(%zlA<5zjB(Pv~zE+vete$GJs+cde~hnaW5yKSqwohgq_$Vjx!N#N+&R0tYnMQ6?$_d z`sra=+g$Z?1`%KCAlU5tSVnuI=H`84z5l6)=EFN7K~gXyEam$x>r3s@SJK@^jQM+9 z?Z@8_rjW_hK~`pQ(NAGY*o!8aMa?0`46BtlU##hX(L*cHiu<)%wobX3&Mnn zpBx&+w7(sgQqm(^Y5?5%6n{&NOAxhut z^UT{Ha;AZQ44%I|Furl14gkZwy~!gWqn^m-??JHMzw-^)MK%&}X&?M8$jklX7i{wT zJqM4ED2NF~!X35~#(#2<_LsH>PDzxsxNeyLI>fMj zhM+{L3z<)=-QD7Qr(f-xpc?s=pIj%#nwIVImLD}rLx<=wj$tvevo>pq$!^jmJP$_r z*WTkt7GLU`kcPtnxktTSe@SvVDnLk}#tSsi7f|&veTpyIaS|4z-nXAZo?6>l@CbP- z_cy0*^=Igg`qI^`u5;hv;ba*tX2hl{zIPfb1gvol4omgeup)L>e|=N7^%m~~0|#l( z4fOWNkTADIg3vZog%C-+h#AliMOS9yNIN1kOrqZyiil&f;f1mf*y^hcl!Sv&T!<@D z1afoQZ}Mp)HkRuNRs7Lc)X!3}L2SL9SeU|flVPK6AdYIS{PiwpBE=@}Z*C-M4a4PA z;?lL^D;?7BKj_*%{ycEEw@}ALqCjYU^tFno(BN_%!T{&GZ@UF6MmO=L_x`--sz5H+ z?88@WN_Ci9V+s-eR;5c8?2LD%WDfp$cyC>^H{gUbkDLM*{C?di4eyTwS%%JIx5Zu< zUwhy5tLU_MZZCZ(wOU`IzQLPG=hsZN0~20!5t5n=U^?yxZfpg;8s;FlN(jszCJ3X_ z?(|+!4{w6z^?aO^cB`gO>lcV%w!boe2|J5!V|DmF&suMQdeS0vWnC4amH(5kVu_@) z7@+u!hJGRR>p0N^r`2V6=K#!HQk!=dsLFikg*1-eYcprOu*~4KZA$S41mz;#Kh4EWR<$dhQqZbVR@>)bJ|<|u}c8`9ykX^_=ma$kzH#f z>ks$)5!*7aVUFkpf7ZRI4+LN)xVrxg6fG4u+`ko2b>#*8rj{HJ>DX3XLW0Gr07xy* zStJ$TWkRKZEzpoLY);7ug^dfP!mzJZ@-zo^I+E{jUPLTF>aMvCo5vBsXr;gQXY0Gt z9Nvp0mh9}eN7x>%&Uldz&15OxM?`E;LrpkdBT|KmtqOtU-#sbTq+agpquC?~@#}MI zz`W=}YZ@<(rN_Gd<%VXq9HLBz&mTnH#Ny50+`hYM8B#xpwxpVD500})#(EeXVjRsr zJn>3YiU@Sj`;IHF0WXW1fV&UxB|+3YXG7-Hp?F)8JdLjv6`6zOfZ7?)nGdN;4zE|1=Ja9Kr!6Ze);Kc1vM0BA^Ai2*UxScG29{ND8L8$&{(=n z-Z}j-Ah;GJ02LT18u+Qq=?yXy>!t6JmRw|541cogTtHd5N99qt9Yym8DQfk+#g6qu4FOx4f08(y@ zE+!xM2UMneJlE1F@+tw!yPr!-cuU<~gQRPyb{Wg5m2#R<@TJ5LMN`Ja^2W%kah-3k z^d)wM1S@48`U55#cAc@_Fo}rPzUau<0f%o4ZCbUPt?9!%5Vl8uXA6SF zJD=mr+1rGvc{AAqhPfRS&JDjI@p<{}FB|KQs*ar9Xqa#KF3*K&HNYperu_&x*K!Hf ztpZ3$1iGZGQ>2ZAA}Wf7H;wSnj9(6S++AIvxmjy{!fTs>1+i>+^AGawy_7`!d?>xi zMVRo`osBPEJ}GpwF*PZ!j&lr}i==#Qie-B{VkS`!mK<((oOEy1BCjQLYd$aCHAH_( zcH;t=I)a78sP#q!?f~ykd?w~}AKq2|sl1y9{|k~Y%uVF2op{>yNEd_4@$)mIfHeOl z{7p?k!4s_8D~-jS3sk&SO&yNcmZ$hcC69430QYc9hPOtm&B`XYdaGR3k#$YTy6sV+ zB0ozaKcH8^(Eh-6%-*$g-(uNgT})*POKM7Bw%dT26~Y+I!m=hN1}4a6e?p1yNK5cP z&ojz!%~x)PA(svZ6G1OC(o0T2!Kg_4C0!#KQzAIO{X;QQ4V78pU!s$V-`<7hqJ=o1f_$M7n^%VliFCQJJ}7GNb{TB7a|Zm$DyyiGB;AY>W-O>JJD zPC22$eqVE_5%z!|hK1BO6AOch%d{?6Rm~vFZY;r#YgeUlY1g(G*PUcQRO&uFf5iC{v2&%NJP_`HgE`{)ji)K5G0c5KEGs>4FA$!d(d5U+N!HERmsVd zNKYJ%f`iFFq`lk$w6b>U8dUa>g<9)2qo+nvx}pY=&f%)%+A%~4md zuNr2TRRMo_Lo)1?JNjhIR|w4q)lad+e(u)Uq;}L7uMr$^Ql;i{+m9}~Zhzoe#;n#9 z<&==FuD3MVmNIygboe z^_9ZkZ8YqJ55ClQ|BlT7t{@I?^rr{*i+8Yt#Pe(}Dndg7`#Z(!ro z9~m$`a%ki?hnu$k+taaq-f4BWVm{4gly8%dfJk}OA4t+Pfe@LDP7sKfLfOUk;Q zK?bFGvYvFqq|UXjH5nM$9*qe-&$>?hn>9PH>c#?8xFH0S(l`q$Awg2n$2&){!|BP{=#UGS9pyun2}nW>%8QtR1{YK9JjC-oV2-`uh0HkulJ0byZ{UxxN@~IvGNt2=4$+dxfpjh zGxoFYpQF4lW80_~LyZFJjE>z|I9!B)icr1x3PgQ(JAkr1@$o$xR$jbkTh(LI?}Nb| zdLEiFNDeop`7G%JSNJi=s8a8{bnoy*z1~%Wk_jn)*Xb3&sJ7Wfw> zUuKBOIlfPWC?IMe??BOu-h}HvEx)rYVBwvw>qB1cuK`ZFd0X+_>M;q`K?b8nBlR!= z5hz+F>N0a;eW`sFaqsE+t3f{E>G0D=Gt3Tbb1aE>)Xx*6=nTlhe)d@0?aOl^tctPUjod*Uk(QMnt*G9v`G62eGThIm?gAvu9#9m*~UA@Ed#|Op97X_}@ zg*`}v(rmnWjxyx?Ytz@d+LySzBbt=UtnJFKgF#S>?gRcR{*mX7b1b zFv`CjH^OhcwwFrvF5A~SDQ2AEFh6DM$-8)PB~JcQ;$kwFi+;S;;`89c*4N5UXg&2H z;ttY&aHnB#vvX&2hPOO9rH86|xi4t5PRQ-A)rTfDKA{kQeYnUjH0V8K*CliB?N&;7beE)f}}-z^*gx_(>cU z^`rKtz^1pmAor)<&qv5~QcNsanz6LO2~>W0FP2yT9Bkp!=zSho5RMT)5OEj|163H8 z9gsZBsPzr|HF{{^zmGO(?w~cQ`Uj;Zn^!1STa^u$<|ZN>Eltbs*0Xw!W(M+o!--4< zedAm}qGBm+&RGA~G=z87S1$7qF5-s!hr$Dkx2d;R8%vtbCY_hXi?{;jUlHjyRikA( zkESxru4w49+P`Coyu;_aZ23wPzas7#6|$Ck>yFIuyC`8mFSW>8adTm)_VJnkc}@Ib zy=)2y-dXw;7`U#eBuGYlhukK#cQe$fKaG%Gd3qU#@ASgoC(`zlYV&Ie@(bhWCI%+A zgeNLkZiMyCl$Vb7>x_Pz#+llk5C5RM_uRDwcYwX z4(af|?Tf@u)xcHh;AAiNV1uy@yRT@vLZl46J=cF~tZ2B`=7qe&#T5&dQ%0f|1t-N_ zTUUa=Z+36ttGyk`Hm(vD+8>F_r6^z|da6E_7Ych$Z z0YVKMPv*zVE860pTdPOOQut27sOGA^)h7Ho%F0!rASZ{-9K%ryhy&j_V3fCqoU~qnW-o z2P(A=K%Nqtbo(6oI0Q}T8zEc$0)=lZRA*r0tbaT7-jsrV%4X64ib00P+i3|H*3jT@3<(oN7wFl?dB{Fc7fbB ztTak#En0Mqk+NP~bY{!CFvHmK;H4zHIhBy-9$#l-w?xg7O;igb88z%Cv%UJV(dCwh zLhz{_jz3qZz%=R#Z;lfP=hR(LhAPbB}#MaaWI01%^Y^hLVml5=Wv<$q4$jjn~q9s>3e@45)I4OtN*0K z;`%HoVM`%}F+gmk`)$E;jc?dC=BcY(g`)dBH(AbymR+5A!!uWftuMF!=?DDhW9rk@ zLIQJ89{*j`?Ot8B*-BR%!&d3>ee$I6q$+S8J@j`q?sSN$2YkJBrQ0_EpH`IgCsF_C z878w2-1K&_INL%gdC92e?MWr4i5H7MBzlUNU95t-&v1FYq@^TQ=O56%yS`gZ8G@SX zH#c=XLn(ixVR1NfF`!mY8q**UNLy64k%xxb@Em9F03Tec`To1zLxJV_Se5`|387jMs6T3)4Z60EA$lHKRN{RNc0l(M{IAYwju z85-wq^07#npG(8xdkfsUzIkO}pu9RplgQ)38N{aZ>f3EiQ1h)CcVPmRS6%?c0~v8c zj-8eN9Y^F`GqV|3I2Spk=V|sLYtiP+hYw^>3;|}_l?Pd=NKwa29)b^UQk}fk(>!x5 z4ozh5(gTdOR)2#pk>BOnuY`!RmO+;vPM$@Y*u_W=trp}Up`_Q7#aM;rEB!V*?`unL zFaC&zIyCnoo$)e z2E}rpPMXRZGCiCh7`x2l@P7gj1&^D8L%ui3vC*s<&a|IoDXfK`-S4QkrdkuBw!%*b znG;^qc7OoC6tRWYH=;DJ86|*=3>6ChsM*XTdMI(F z&s|W_Pd>xo8J#gSPgr3FluaGzUdVa?AGsUZ_eIMgQeAv#iSC!C@%I%$?g1Y}ZIYaC zuH_jyeyBm1X?*Q$bnd<^n%=;{K4OGID1{e{9z_<6%4+%P!`)dEKfNWv9^u7jDEc@- zh}WHc0LxLYOX9g7LdMk9R;2U(6Dr1QhTWc<2f8g*`i)20U2}m_=VbXBaMX%ay`v&Kr}LqwBCkuqKrr+b4N&bUR(d~(%M}-1)hO3J z7I4D5w7IK9qrzwe*OV#4|Aleot@@v0St>W=HolHwl*N_Xdn_kxc>W=xjfT42Q@Il+ z$FjM>^m_^phgrW4K;Q?(LV2=E#&nZ&mQoTV?9(0a`uJ}cVq(srDslCPvDSHDOiFXX zH~Rg@L7kmTj}J@J)udZo?K^MeRXp0+92XTHojkR6w!lafSu+)m+_#zE#l&BLy*`R7 zl}P6Vel-D3kUJbYg49Dxkow%)kZ#z7R@{d?%T?LptLo3nTE#`TyP&eEZTWyLh_J+Y)al~&NVCqHZYkf$>A%9t|XalZ7p@dyj z%c9H0`#yOq{5sc^xCs&Bm*2P{jGpg2;}aI=Y_3aEG!d>Z8XiZ?hX=+P40SnPzJV@J z>tf-rlNQTSVye@piXDV*^k|{1aoiI!I0m&%9g*gnx?2{x@SBOwa)qp*yju-$pRyxt z9O}ym7(Ik!hT@OL>M)>zDjkevYlkNSxSA4XP?o@b%1i6lJ(gtCx2thN=5pcqBn_gn zFQv*YQtU<2_P^g9?+Ki7GRE>Ve9nrE@LrMil9PQ)>CjhTC&$H%91{|Z4K=k8L{-7r zSb27H>$g;E7CIQ=KMxjAv8t(xZLudq@i`8sPMj#ACUT_I>LH19V;$fTZ^8SuC+t$C zL&IrM<2HVB?=TqtXmHm|v~^ubhB%9Ql@VETDbsh#O5FMWjBi+IHGU>^k1bKPX+k1U z^Z_D!PESbiC)yrMw)#gy&1KB|&E;d>!TMN6tN!(`({P*E96bzeWaQ$PWChdNq!?o% z2HZiKOiAobD4SD>XX)6~P_ImVQYRcpk!JKmxx;9ZsddO=uy8REb3a+OO!qCdV0^Z*t|t#2R^D2Kjq?;6+ru#) zz=JI$ha0WT`QvAUflZzTV+4X5KEd61*4HR>KR^-uI|XR?vyI*mz(Z$*_JJ74nihz) zblw~g7c)0ju&epmQpNj2*IhYU_=gr7IH+58d6#M+u+KSK>!Jc}=FU=v%WcW4>A{XY z3|EP`T2S^!Fh*y9{s+CaKme-9-Y?^e!>bV9l!S85EX{EFcPDcLnyM!rtdLSDLpIkH7D2cREe|V&0Qw4PrP7l=ru$T`|3+~Dp z$$eVSkR@)MmPfSJN6Sqt3MY$2XUg@^X}5ghqD3{%JRD0j`=V7@t`Fv9toj0u8@Cc%gALUtg@G_A1yD>;ZE*7ooIYvHP;<)Afd`* z^rFZywfRPm05uA4++iSKDt1$T`n0Qxr+mk#k>?(!Bw3M!b{gwLM1|FmoJZObRSalR z{A+k=zU8;4_4!+q1`bR+9;4ugf2<)kXoSZ^b(eo!loIHTZYORqx zRv-5dlXCYth1TJJ@puCJPl<_l7@*us3SzcvdJ&zV8rz%&7xfN?B4EnmlM-C$v)F@v zL}Ok1j@E-)6i%7iaE4H_JiqCN1d4iO@-RHth_-^X>}QkpB$5@$jadP9YkTsl94aW< z>26PMyeONIKROVBJgVO8hm-$(L0|wo8E)-*E!$ATeQUe|1H?x+!*HtpMf2rc!MtT^ zV4wyI1o)S0BE>rx+e(d`?0}%Rp4~Lk)*4}sZJ&I@nnx_pg6Cz(2Q`x5LJY(;6PVf< z0quzOkT@f|rjftzL%ezX^9D^|dubT!l2HkNcgZz;6Q1sq7I!eTt6-m=|EaLUVlXXM zHwPADcz2W^Q7T5|%VCTG2Bq~b&wlYNZ5oA}efjd2%?kB5#FEyQ&i2h<3QhA_y<=G- z06PtYo3caQY;FQTt>;?nhChkBQzlg>TW%2_=cWQ@&kNrZ$_8ip-5p(g7L^KKn_gTn z*KCZu)*jY5sO-pIceMM9;?T3{SM(2WQAWQ~*T0tV!ct4GOUfwz zYV^N+at;sf!#~f6{`I4GNKELTRQwNTMAImALgo5@Dh*%%i|WjjdS}^Po#(~U^Xd84_{|CdNHUPKTRG_4=w1)S_*pUMnyzbmHiq18L zG9?K_5jCn=3@Rc>J>}D%ZCR*$HNn#7pY;2iO`u~+IX_VLf9?MBm#tqg_Wwln=foPt zu#fk9OR*B{jWHlT7k~bki#0j?F4@1ghE)!D{sjtVBS}~u7DU2PKa}rH8Yf_*gjTVD zxgNWZY2A>A%fC+OE8*xb3eMtyZa|jsld4t9@Ks9bhwv<(vZrIvO_@jp`Vgd`CVHVz zXN(-lp+bcd(Zeo<*BAeC%UX^ZvNCsu=SHN?L$hm~%>LsR4I^v%3C$NR=pr^x8-**R z<}l|U7oWjGe^? z`@p2Hhy7)hJY;oqq{Ox)|IQN)A6&wpk(%jqk&qC>6KB7`${%0uqU-1h`9o|Ri z{cSDeRA3`3QN_x)@rGIH5H0b3QvGBhhdfw~9p#FbRU3dH}tlX{% z_21;j)2{95i1`1A!1^!b8?g_uu#B3d26(5FpqTT4ujC$@!{h13%F*Dz!D9xkp#Aui{J}lvCVmInjg}i&{4zOaQnC{=l4ElF@230JyB9`pS zC$xyZQ$Lj!f@9xN1+wRf1@aC@Y0gbox*!BdbC%Jk1`xf_$`h-fy)>XG!cSXr_v1Eo z)`4-z!0(O;NjdJn3~HDnhZ3m|o)EqGTZ+0Ros9Je43FF@XQdg7nTK{yyL{=BrtFpK z&-@}tmuVUFG28jm9ljB#!}>?h60N>jDG{*>yC!$2dLxV=h7`1Ar^)OnO^?c^pqKE)qSniog*?$Wph`vtWFMM^H(ie z>$^&y`dEH$7m965fk7Nnd7p#HbFuQtc0YZbTF4kD#7?{KEKk4TcOvPARtog0>$uqH zfjfipB)7JgbVA4V%Z**#4yGtbOL*PtBpY@|l7==s#vGP!zCUOlRSp>B-El>7&q+b* z34a9lO11lpqJ*z!UCzB9M)T$P@v)ZVXA3&5uA*da zTZY%kDCqyc=FT!Gj;`DHlaN3{LWlstNrF2;0>KFu++Bk+xa(jEB)GeK7~BVU2=4Ad zXK)7B+vItkx86GMIaT+=sk(Q6p_$p!y=wQCwRZpex9k{m?qqzZ9?`o?e2k|#3bW`~ zM=+|=8HSfm47!I;1kcVkOytWCUl_f>557tY=Xtl!YW}-vvwNojC+zRs8V}gu0}`2T zqXqSR>*svoJ7iyaW!x{ex7-`|r<6kO8KvLJ_@rGZNQ{!@(r8XY+#`9DX=R%^iv_A8 zzxCVUUYK+^%Bt1v(!pH+u$coDz()7L)p#)wu&e%QC#XC)aR z64?-ezh=6RoAU6n)wqAmI1eMiV4WlzScz6lSER*O9`Wo$f!NK4(UePEe?Dfu7qB9& z`WeWUbbxqo;7#^F6P24yW?}NlF!R%`98a}`My445$i3Vk(Gn1O>pxlmqf$wC_l936 zDzt!8`2%yUHbi&Z&EiobOqW6s)q4l^U;!=ER%6W`9rxZ-H1F}f_4w&X=UOrE-c@bj ziB!$Bi$c{FRSuo|cj8mU`UVrkDApi1<(RYU#K186lcWH-O+-zpdD7*Cui3nH+quQ7_ zg(Y)8;QLFpJ!Sm)*^~)6t~lg;X?_w>Y_I0~KEyHZ&DYvds_my5O}K5aj+zg-n!pK* zykCq3+>khuj|?_Dc9b4uE(f_9KifK`)W>;B3RS>NAsz`A_r?*Psc-iZjoqI@yBtZa z*L7am+R!eX#;*3W>Z1Q`jap8a1W5DYezl;NFS_qH*;e3j2E^8>wA?~dEN9wpnNs3s zHHN3{KH5?n60K-#@JhGG$zjSz+-&6_?Z~@n2K+lq+`7t@0-H^f;iuw zdQxTaA8~%vA#<}s1pUgQ!P&3WDZ=CcooOodQ%`?hEt=mOS|M(ojXj79Nc=0ic1N1GT9mv-*Lqo}J?@i6kLwNU92<-%B==>p7&o8JGl#tm-B~7Wj;#5J@7{q~f})?tc>Mm%ud8-0Wj}^<)r@Ci z$^rS5CaVwePA78GMT3zdi9`G-Mu{$tBV@SaNrWxR?&un4MUYr1qrSW)``!I7@)qkx zs~x79dcYN}rSEz$)tfIS?lz8H{e6w3=~FQgwL9;nKr3P67{Zl(jn_3b8NS0{aJIa) zkn0zHf4zYN+ZMn22Wk>cAqzS1f+};jQj$GL^=&=95T>>D zC2CCnY|sAUVuoRfzgh-{6RXQta=VCPs(RySQRkKGx<`)9@HoLFYGO%U2Amx&h?_fX zEwAe*fr-zK!D6n=@MXMkdoG4r=ZlMj`go(hNg~2JMS&ol(G=r@4UP|lQu1=}H4xJox z`Oc5jk>y*s5{n+e*|8t{0-VE~_K-F*83E_?@BZ^bu>jF4B_kMZt-ji$=Yn2CHxgReb8q%pN*SM%NqpZQB1X}uG5r^-O3 zMttlm=10b7ze$#e?^mzs8)3e}s(9`l$!Ul0D0`<%y^kmaU+rYqsY zV>bo{-K+0gL)?v*)~P{)ck11xxr2`oFkk!6C+N7h%bfctuNtREN5Tf4S zUsB6xrcvoWaaCpdO=hQ;6$A5mjYv%rX8CtvUk0K)gawQ;)q^PsuEB`tklxds@nW2c zM#t4wgu7y5kEq>{b{&>ui{!q)uBi-rT$I@dS#G*=-*+uiq`vb$-bJvl{#ThkmHI!c zz<)2(zm7Tozt`a3&Lt-F3$*?Mmdy> zu7E?>=l=ddnRN=M^w9)H!PPQBjwf?0(SeGs-Imnn$P;^nmokIV zK<;AM`L~n{{~w=ubx~#C3@tZW+K^i_XL?LJ_^foz731Zgd~XAdz@JEY-oHOrJZ)n` zW)h?>Wcg_zjzd!z@*X2`bw2Ry;`oI->opU-F?Vaj^raYCC;2@Aui)Nju@NP}hr4Gk zFKx_9^I*x~cA|mfaaU_|QyL#dR#U|IV$l7u%RTE_Wu#wwu;k{&OS=%h&l}qoXVJZS zZhb>g#izEh=A7*G`p2b5T@9LO9{Meadt(->-gxq{8t>?pEny|^s5b5d-IA-`?s4=5 zwya<+)F*EoSoox8V|D{VjoJIwbB}qbN!FTaCZj~wM9U2&ELV-craimf9G)UUd413n z^gG!qB%9rb?5`fMccs^sb}shl27;cX zHorT200_HlWpLeE#g|jq4+ecMJ=kS^#Z7 z6*)?ve3`rhVnI6sMaLueE`;bN`EL~Wb$=B1Jk|fHxSuTc6cV!i3b|5gbk=`48{*N` zr?&Mm%c++=6L?xI~Daq$*cRY z^eGN8o->!PRLP*Z(P4f$N7iG-KljHr^4C`&6~oDZPM>!ytwQIQ7ZY|&G6QbkoN$t0 zea#!ffMD^U<#Xo)4KD%y`OD3jDpnlnXYRL;7wKeR_9qFnDN>gsw^-%;FMO^F>`+RJ zR$px|!h#!yDLL>G`O8MVWptl+^s2mh_l0zp5vo%X%4j^ZbbByc(EmE5Ui;O%?w8t|>Aq6PCPN9*J1*>E^q zKdzR#4fSuK0hde3j~DVP!5j0%yX%FQf=t)Y{UP@9JSI!5Oi@VJdZvo=s8Ls`$020_ zT630ju^;ys&;c0q);(L=F)z>qe%bWG*C;0B*TJ#Ux>ya=3W8co(^4) zng#4OAploF^-NOZ!V}`rk>#y(?1@}wXB_32YJaid|9$WBNAwD&&JjdP+<~CAym0?S!4T{%e+3!9m2(r;Bcm5xh@KVl?%=h0w(7K*` zUOgJ-sw#IlM?FcBrKEWmf$it%g75U>9Y@I<0rIxI;hcxnLRii1!dGQB_4{Y$%!y{% zcLV$*>b-t9WGV$O?o?Jmd{2;J{F;akxPdhc$XK?$(sVEosW6?I?|?r!K|I;mAe1{3 z<$$Y-oiD$D7DAEjl+_Q<8Z~{Dk5LbCFUvj#B6dp8HNmYphx)*8ainCkUduAa#-hk| zWc5;|4f9vdP~GnLiS58Qwauff)bbfryLX8Nv;r9*TPwz15F=6r(d%%5dq4kpnV)Z> zCZfCFlk|m7TAk z9pkNIB6eTOOR=gyp}*<~h@3RL2`^|P3k!k0K}-IVgPQvB9nw#^#~JErUza`%9t>Zg zsUdex>1NcvO+aQ8-VQapn7p-e!fW**#XGH1{`@#V4TK|r!8KC3?2;OZKbWFpd^o+O ze{NZ+d=JoV;ERO&adTf7f?ZNhL#rZJkfK8yw>$Gr?urf*T?c!~@sc!TsQ1$!>V5hY z#vmd3_&MN~2oF`3()|AF_2x&0*UtjOj>?v@d@mv){t_=%VL4Yu`A>|Gd7`kGyZazF zaX+K5zA?Ru7`$ZsHTUt9-Fq@#V}NI4L2M>LW8(sOhmrD(3D`OAbK_AQriq`vWYura zok^Bi``&Pq=~^q3WxkF_?+GV|K$`2Ok>E-FoPvoSjA`)1lxR%Jto`8pO2t*1V2uZ5 z+y>A2wykRgH!28Saqci($C|o^;C+HP&st-yfj=Vq?O>&%u#O;jL__BIQkho7D%|Cw zVjy7zgV_L+fxIqiL-42Xpe+34G;cImS&Sh$9+_@Len@l&R!K8BnD`dslWj5n`qW-- z?6HJhu*ZNlZjVq%pm{ z0>DH0p{U%8N~JA0-4355I_nGY2#}2H?98WTpsYdb+N2oK%Pd@tA_8m znvJydL75A`!<(Mm=5c{n7yqFBU05tl3Md<$m589KhH>#TA1z^> z^kTi27!!{ih(W=mCmlMbk7pTSkIqW6ZoowEuxqk-`k~ z`9mIVLm!00PPR5=Pucw|({y1rw!_A&3za&q3f;|Du3ttz3@`3|TK8|5N&PLKX&o5E zoQ_^9exbkpRd~$`$bBW&p7-^M=fEla%*TKsKJQ~4SH4Pxl(*Cc{41N(@ebE3w&QY= z$`zQ3@x6PXr57ht#Q4_&R!XPrtDJR$d>)PB(`cRW^n4VdjsVIyH>lw8ZLV6KE#Lb;u%4ii}uUQe}8DW<7LxvfJUVZjImr8D2M>pfik(MOMRGFO|>2*?x z=;xES5D8UC96oO#*Pskd%KFOa^)ADCU2xK6p14risoUTrXHDI$EO#cl^0QIG2fFDD zAU#Gul+RUwBbgY0tNr8}tMN^JDmDPTUYWQSPdvwU$Ckjt5Uzf;ay~#baWS|!!ctu^ zLR1|*bQDdw#!TK;41Kw9!Jp|G)g;aP1FdEx>f}<@n552~!Ff32P^r~U`d2b1O#gN~ zIV`tmXqHFRv}IQ^o_Y0^2OzuHaF&`sDCbRO);wJx&R@#VVt4{-#%5`q*__799Iu5+ z6$v7b#oe7S@UDDPOjFaUY)(y%>LeUEMx*Ei0wDGUH`nfvwZ*+Hcj;`RsjSqSODO7x z1_{PK4zgToyhb_1`;0moJJ17A?4W&5ctXZ1eSU>Ws~P@SeZKY;jhOUkShjmTYSV=9 zm)K;L?m2+L zPp9xS7rmkzmr1(>R+|J~m)c?xNEBHtS=*vc#Z_Rz+%x)L7Fwdr?s~d7dJn+icu?fGtSWOa#+!M3?mK>F7chWFv@-@cIJe# zRdmg&dvZ3>O8WV5@j!RkESQtTE*!VbiB7--t!5=D+ob9@7q1Y+kigxVhSZcjKJ{WA zHt|fi({a*Z^`8!Hr88mWm@JTdk691wOgT{65Z0o59ONo%u7Q{io%(fxonYTseC6oz zuGhxV`WZH7O1YWYG&6eDYQ4wrDDIf_LOJkgrJs33Ux8G@?YMUB(H%&TD!gd$##yaf zo%@Jd%A83sl)a=^z9v|moiI~L!kK&LFwWNC>c$}R?Jd72UJnfMNd#%0fm1)H^JIZ4 zSDnaGrOq;WtVqzp_Z;sq&^-O}_LRM&njrfIVr0TN`Wyu65XjRQ%XWLHMrK%i{Yk+? ztbgrtYz&^ghZsMwIPNaNRYSqwocLhKYH?WFbTx05awW{iXh*f|$cI<;Sy-i7{IaG3 z0L=GrALrxTCZvbV-#0uHqNbRjA-dRdiN1Q8CRFN|zvH&I1$X>XhMPmkm1BCQRSZ5q zxF2E}{CwWl$_$uz^CDaarhlfKHwm;}IV>UC6;K>gf8sqS1>#lK@O6TBc zLw11O-{uyQyOjQZ?_1wv%HaO+Fs$lYheCv`|GOj)@0yecCIJ?oO@%t8X2jD( znmN^Fbj()fC|kODh@}1lsyAUcT|kbVvgq)2s&99Qep&f5D(GS&{&;?wxgWL4$o*jW zi4V>OR8jWQg9zIw+#m;h{+e$yt4k#MK0j}O4X^#qVoq`{ zAQ!KKsRv;EGLzuz7;74aq_#VVbFovp{3OT_{&GN%r5{O_d(x*-aLo#T2(*jrC#}?E zTss59n`xI}MC79A`{;NNhK)hL`x0o{qYhfc3LDJKcIdS9=yXI>fdkH)?NiyLTUDFi z%Dr0)m6c2uMQk!Bz>%3tPB%&ek+T(>(UcWe-&-zpclDvmTbW?bJ?I4^Kp{3O;RAuV zd%$(uX!j(MgJ?8GuDxE+asZSdI$A=2QvCktt~WTwo74FH%H?QsITL(inHM`k%qm;oxV@v)lmQP!K@ zWZN2P6TvToDJPq*1?YR{^*65S4Os93VZlSEo zuVt;SV}z#8Lg_XBjNi8E-Fd{w6hz%T$7-UpUnS;l?Gb-Ks`!|cSYd}>&^CFvCtL=8 ztyF{Mvq~-KU(TzncTYo2&wboOx4yMde!a@~;&($wEaY*wd}%hZn;Xn^PF-w(Xwl3) zHT(imZRcVR*_m8f&;3D6%6gLg02shIENXTs1jUt}Ybt1<$+6=|%v<%8Sc8<|5j+X| z90jz88lT2p`JJw<7P>gCTb65;USM7e7WS%=)z~{OYtr+qr6-D>%z%f61|h`Zwc1-B zwAa7hElD8Rr`RnvBYvOiLdO#INo0FrOLKJu(>>6ZrAgK_t*}ee1_g=Zt$?f4AUg^Q zuvH9ow=931=vbZ0zA(u`M%rd=z%%4raeFD``!j>OQ?06A!CKOu4WG#!Y_p&0(`FSZ zcKJusv$WAh;>_ak^;q7qI>z}t&T;YHU40eV4&3X)jTL+zr*G=mOqbK@Tb3BEMfvz5 z(LF1CQNnNgx$+IOE|n$^$cVbBRtHf)Ua#Z2V&Ic(yYI6m;x5?^#~&!cR^3KLmy`X> z40KLa-?2b~ac;wGyW3vJ{B(BMo0i44B@zHD#CM*;v-41tD4Tg2FUC&GD^?#gXn@{0 z;rLcIsPJ&MBT(Hei)R&cx>4|vrX(Fx7-G^ym*85D?lmKFAa%7#8`TFH#~zToecQ$61gIIPbbU6h_ENS2Og#v0Nq=?pT@TH>=bP{kUt4eJat zq4E@DEGEhZe%=kD%Zl&)~`tIX_rb-ppJ!r#}}w^J;f z4R(l-Ls36(wP*bbe%$YK6Cx9M`JNkv2twfk)RPxnpm5`TcIC zT=(mQ19VEI{l$!AWwb(Oi`CEJr6&BYjFK29M9OmT zQFA#Xwc&=5g?67Z`-la%!(^s!$KCfe?{F5_Z&Fj-QAZM8`>upaoO;h-)wIfp!GL%_vil8U_ z;~ogo{#uByav>K@`6qfd%NK>ZBtVaH*j#y^0OQ^p2=N6V-z$1pUn0q3N2(|hRC$Cz zr{aICd=!8S>B+CyDJYZloW>w|sA82CGfuEtn+NB}z%Is^DBmN8Hd9;{30}Bv5(K0o zlM-UedrBVWgOSQm*A@|JrQpCYB@G@VSq+PvLdp$)VG|-B_C_!!jRrbd8n7`DSt(Oa zg2-mc)E*v%BvQ@o{T_IiLns@(fB%JMCwKCAbw$8+Wv3|M88g=N>CZ%$Y(0jftUFgGFw};6>DUisRkS$* z7}HM$W4xGz*&3AOr0iysB}_Gp&CK^+vzp0-Biv9xzCF1UJFW)K8f!B`!}vuMp?v8S zO}9L5xfC9J!nByF)xq@gY?kO@Zv`htq7_$S#G&CDbfbAuN~!SZ?>eIyt8=@!!1CJM zpV2c;YQQq*`3yXz6#9W~lSfV6!QHPBsrVvuD@ZyQmbHXbx5e{DNAD?&++|xL$^YgZ z`g2$~d0I-P_8I++{43Gm(MdA}`;W)eD%U)ZKnsdL&iC)DByC6~pD$zcO!Eot)kEr_ zXVX|OCp912Y*_ssN>^h9FAb$0?zF1H&ZnV=?8@QAZ-L~rJDjTf5Qe+SovJfH`-T2G zsuXxpyc|)Xn8;Q+jhq-8VbSlcLnuKjD#||X(7LnFfnIQ-Hz`LU5 z73Rh>hB}WN%&&!Hsy-`D-aF0Hnyn28pvr&aDL9=+>EI0TxRWj$)}^PnTI4u#Mq+L> zATzroe0~d=XE}>$dV;J$r3M&N5#bpE@;z(77ydtj{A-9J8(j<2IvqDb` z&rGA9KaK~p(jvXsKxP=9g2Z?GanisU=y@SKK-$L-C{UMv`}U@cbHtto?&VmhQ>0Vsx_D}QN_vp__W{Ec zC2`w`XXcAVg}t%x$&Z1R6bF4ej1%{~w#L|czpF%V5Y1e|b?3{CQg$JS#N_Rh%H#VW z>K)igu||$?BqgF8K5IXbNi>cTU5HC@$^;~pp-kPE90r_4Ao`aRY4FgZCyw&Cj2#Wz=$YM#Y zZuqDv)!yj4n%zV~N!}RJ5vBu_-4#CbFOCEv(UIAcipkQeTTP3k_cgp9* zARZDA`4Q#X;i*}uIM3d5b#X>H$B!sGH5*pZXt!s*s}0mA@_s|9v41MwsUo(2YI!M{sBjO zMKu3>{XE&&v%$gCKO*bGdz`20&ENLi{R!jRT>%!s-<`jA?gE*AD_#-)??nFXf8cNl z8|(dD82E3cIPJgUyPf}&lTG_C!uUVG)cy~0?>_p!xaEIW@>2N^$Z-9CLWch*lQcI9 zpbHxq4eV|a3yJPcdgcq-m>|tP0Q4-&8lHMD&6)I1lY_(=qybO3*7#M4@@4r+vo11~`d7N7LYimCSZu)X}^^b$PymE3e6m5Ly$lDfT zHDIsdUj-%$57WiKC) zdtjQ?`6Q~>33LES`=8b7^0~GOe`klX~FK>yoi%f zZNyZ0c?P(X>J8PB&m<#*UWMWg^fh0t4*RNP|ROS%^v;$#ryeR$nG11 zpM7m4-~q0F14dnv*S+c|0ksPs#L(>2l1};l;(a^QK68ow!}ks_B0OaI!vM$H<5+e1 z>m1T8HVh1Uk`hv*Mf6;(8-c}ac837W@jl2)k8)8usHxZ1z!dRKhSi~!GWPX2yW}`x zTs}$0lF>+Fx$!R^`5$9cUgwrzRSy0IJYNVt%oXZvCKQ=f!lw)rG4X<5`U`_RKDASbqZ7vN5^V(G=9| z)-{>B=0.4.16 >=0.8.4 ^0.8.20; + +// lib/CMTAT/contracts/interfaces/tokenization/IERC3643Partial.sol + +/** +* Note: +* Parameter names may differ slightly from the original ERC3643 spec +* to align with OpenZeppelin v5.3.0 naming conventions +* (e.g., `amount` → `value`). +*/ + +/** + * @title IERC3643Pause + * @dev Interface for pausing and unpausing token transfers. + * Common interface shared between CMTAT and ERC3643 implementations. + * + */ +interface IERC3643Pause { + /** + * @notice Indicates whether the contract is currently paused. + * @dev When paused, token transfers are disabled. + * @return True if the contract is paused, false otherwise. + */ + function paused() external view returns (bool); + /** + * @notice Pauses all token transfers. + * @dev Once paused, calls to transfer-related functions will revert. + * Can only be called by an account with the appropriate permission. + * + * Emits a {Paused} event. + */ + function pause() external; + + /** + * @notice Unpauses token transfers. + * @dev Restores normal token transfer behavior after a pause. + * Can only be called by an account with the appropriate permission. + * + * Emits an {Unpaused} event. + */ + function unpause() external; +} +/** + * @title ERC-3643 Base Interface for ERC-20 Token Metadata + * @dev Provides functions to update token name and symbol. + */ +interface IERC3643ERC20Base { + /** + * @notice Updates the name of the token. + * @dev Can be used to rename the token post-deployment. + * @param name The new name to assign to the token. + */ + function setName(string calldata name) external; + + /** + * @notice Updates the symbol of the token. + * @dev Can be used to change the token's symbol (e.g. for branding or reissuance). + * @param symbol The new symbol to assign to the token. + */ + function setSymbol(string calldata symbol) external; +} + +/** + * @title IERC3643BatchTransfer + * @notice Interface for batch token transfers under the ERC-3643 standard. + */ +interface IERC3643BatchTransfer { + /** + * @notice Transfers tokens to multiple recipient addresses in a single transaction. + * @dev + * Batch version of `transfer` + * - Each recipient receives the number of tokens specified in the `values` array. + * Requirement: + * - The `tos` array must not be empty. + * - `tos.length` must equal `values.length`. + * - `tos`cannot contain a zero address + * - the caller must have a balance cooresponding to the total values + * Events: + * - Emits one `Transfer` event per recipient (i.e., `tos.length` total). + * + * Enforcement-specific behavior: + * - If `IERC3643Enforcement` is implemented: + * - The sender (`msg.sender`) and each recipient in `tos` MUST NOT be frozen. + * - If `IERC3643ERC20Enforcement` is implemented: + * - The total amount transferred MUST NOT exceed the sender's available (unfrozen) balance. + * + * Note: This implementation differs from the base ERC-3643 specification by returning a `bool` + * value for compatibility with the ERC-20 `transfer` function semantics. + * + * @param tos The list of recipient addresses. + * @param values The list of token amounts corresponding to each recipient. + * @return success_ A boolean indicating whether the batch transfer was successful. + */ + function batchTransfer(address[] calldata tos,uint256[] calldata values) external returns (bool success_); +} + +/** + * @title IERC3643Base + * @notice Interface to retrieve version + */ +interface IERC3643Base { + /** + * @notice Returns the current version of the token contract. + * @dev This value is useful to know which smart contract version has been used + * @return version_ A string representing the version of the token implementation (e.g., "1.0.0"). + */ + function version() external view returns (string memory version_); +} + +/** + * @title IERC3643EnforcementEvent + * @notice Interface defining the event for account freezing and unfreezing. + */ +interface IERC3643EnforcementEvent { + /** + * @notice Emitted when an account's frozen status is changed. + * @dev + * - `account` is the address whose status changed. + * - `isFrozen` reflects the new status after the function execution: + * - `true`: account is frozen. + * - `false`: account is unfrozen. + * - `enforcer` is the address that executed the freezing/unfreezing. + * - `data` provides optional contextual information for auditing or documentation purposes. + * The event is emitted by `setAddressFrozen` and `batchSetAddressFrozen` functions + * Note: This event extends the ERC-3643 specification by including the `data` field. + * + * @param account The address that was frozen or unfrozen. + * @param isFrozen The resulting freeze status of the account. + * @param enforcer The address that initiated the change. + * @param data Additional data related to the freezing action. + */ + event AddressFrozen(address indexed account, bool indexed isFrozen, address indexed enforcer, bytes data); +} + +/** + * @title IERC3643Enforcement + * @notice Interface for account-level freezing logic. + * @dev Provides methods to check and update whether an address is frozen. + */ +interface IERC3643Enforcement { + /** + * @notice Checks whether a given account is currently frozen. + * @param account The address to query. + * @return isFrozen_ A boolean indicating if the account is frozen (`true`) or not (`false`). + */ + function isFrozen(address account) external view returns (bool isFrozen_); + /** + * @notice Sets the frozen status of a specific address. + * @dev Emits an `AddressFrozen` event. + * @param account The address whose frozen status is being updated. + * @param freeze The new frozen status (`true` to freeze, `false` to unfreeze). + */ + function setAddressFrozen(address account, bool freeze) external; + /** + * @notice Batch version of {setAddressFrozen}, allowing multiple addresses to be updated in one call. + * @param accounts An array of addresses to update. + * @param freeze An array of corresponding frozen statuses for each address. + * Requirements: + * - `accounts.length` must be equal to `freeze.length`. + */ + function batchSetAddressFrozen(address[] calldata accounts, bool[] calldata freeze) external; +} + +/** + * @title IERC3643ERC20Enforcement + * @notice Interface for enforcing partial token freezes and forced transfers, typically used in compliance-sensitive ERC-1400 scenarios. + * @dev For event definitions, see {IERC7551ERC20Enforcement}. + */ +interface IERC3643ERC20Enforcement { + /* ============ View Functions ============ */ + /** + * @notice Returns the number of tokens that are currently frozen (i.e., non-transferable) for a given account. + * @dev The frozen amount is always less than or equal to the total balance of the account. + * @param account The address of the wallet being queried. + * @return frozenBalance_ The amount of frozen tokens held by the account. + */ + function getFrozenTokens(address account) external view returns (uint256 frozenBalance_); + + /* ============ State Functions ============ */ + + /** + * @notice Freezes a specific amount of tokens for a given account. + * @dev Emits a `TokensFrozen` event. Prevents the frozen amount from being transferred. + * @param account The wallet address whose tokens are to be frozen. + * @param value The amount of tokens to freeze. + */ + function freezePartialTokens(address account, uint256 value) external; + + /** + * @notice unfreezes token amount specified for given address + * @dev Emits a TokensUnfrozen event + * @param account The address for which to update frozen tokens + * @param value Amount of Tokens to be unfrozen + */ + function unfreezePartialTokens(address account, uint256 value) external; + /** + * + * @notice Triggers a forced transfer. + * @dev +* * Force a transfer of tokens between 2 token holders + * If IERC364320Enforcement is implemented: + * Require that the total value should not exceed available balance. + * In case the `from` address has not enough free tokens (unfrozen tokens) + * but has a total balance higher or equal to the `amount` + * the amount of frozen tokens is reduced in order to have enough free tokens + * to proceed the transfer, in such a case, the remaining balance on the `from` + * account is 100% composed of frozen tokens post-transfer. + * emits a `TokensUnfrozen` event if `value` is higher than the free balance of `from` + * Emits a `Transfer` event + * @param from The address of the token holder + * @param to The address of the receiver + * @param value amount of tokens to transfer + * @return success_ `true` if successful and revert if unsuccessful + + */ + function forcedTransfer(address from, address to, uint256 value) external returns (bool success_); + +} +/** +* @title IERC3643Mint — Token Minting Interface +* @dev Interface for mintint ERC-20 compatible tokens under the ERC-3643 standard. +* Implements both single and batch mint functionalities, with support for frozen address logic if enforced. +*/ +interface IERC3643Mint{ + /** + * @notice Creates (`mints`) a specified `value` of tokens and assigns them to the `account`. + * @dev Tokens are minted by transferring them from the zero address (`address(0)`). + * Emits a {Mint} event and a {Transfer} event with `from` set to `address(0)`. + * Requirement: + * Account must not be the zero address. + * @param account The address that will receive the newly minted tokens. + * @param value The amount of tokens to mint to `account`. + */ + function mint(address account, uint256 value) external; + /** + * @notice Batch version of {mint}, allowing multiple mint operations in a single transaction. + * @dev + * For each mint action: + * - Emits a {Mint} event. + * - Emits a {Transfer} event with `from` set to the zero address. + * - Requires that `accounts` and `values` arrays have the same length. + * - None of the addresses in `accounts` can be the zero address. + * - Be cautious with large arrays as the transaction may run out of gas. + * @param accounts The list of recipient addresses for the minted tokens. + * @param values The respective amounts of tokens to mint for each recipient. + */ + function batchMint( address[] calldata accounts,uint256[] calldata values) external; +} + +/** +* @title IERC3643Burn — Token Burning Interface +* @dev Interface for burning ERC-20 compatible tokens under the ERC-3643 standard. +* Implements both single and batch burn functionalities, with support for frozen token logic if enforced. +*/ +interface IERC3643Burn{ + /** + * @notice Burns a specified amount of tokens from a given account by transferring them to `address(0)`. + * @dev + * - Decreases the total token supply by the specified `value`. + * - Emits a `Transfer` event to indicate the burn (with `to` set to `address(0)`). + * - If `IERC364320Enforcement` is implemented: + * - If the account has insufficient free (unfrozen) tokens but a sufficient total balance, + * frozen tokens are reduced to complete the burn. + * - The remaining balance on the account will consist entirely of frozen tokens after the burn. + * - Emits a `TokensUnfrozen` event if frozen tokens are unfrozen to allow the burn. + * + * @param account The address from which tokens will be burned. + * @param value The amount of tokens to burn. + */ + function burn(address account,uint256 value) external; + /** + * @notice Performs a batch burn operation, removing tokens from multiple accounts in a single transaction. + * @dev + * - Batch version of {burn} + * - Executes the burn operation for each account in the `accounts` array, using corresponding amounts in the `values` array. + * - Emits a `Transfer` event for each burn (with `to` set to `address(0)`). + * - This operation is gas-intensive and may fail if the number of accounts (`accounts.length`) is too large, causing an "out of gas" error. + * - Use with caution to avoid unnecessary transaction fees. + * Requirement: + * - `accounts` and `values` must have the same length + * @param accounts An array of addresses from which tokens will be burned. + * @param values An array of token amounts to burn, corresponding to each address in `accounts`. + */ + function batchBurn(address[] calldata accounts,uint256[] calldata values) external; +} + +interface IERC3643ComplianceRead { + /** + * @notice Returns true if the transfer is valid, and false otherwise. + * @dev Don't check the balance and the user's right (access control) + */ + function canTransfer( + address from, + address to, + uint256 value + ) external view returns (bool isValid); +} + +interface IERC3643IComplianceContract { + /** + * @notice + * Function called whenever tokens are transferred + * from one wallet to another + * @dev + * This function can be used to update state variables of the compliance contract + * This function can be called ONLY by the token contract bound to the compliance + * @param from The address of the sender + * @param to The address of the receiver + * @param value value of tokens involved in the transfer + */ + function transferred(address from, address to, uint256 value) external; +} + +// lib/CMTAT/contracts/interfaces/tokenization/draft-IERC1404.sol + +/* +* @dev Contrary to the ERC-1404, +* this interface does not inherit directly from the ERC20 interface +*/ +interface IERC1404 { + + /** + * @notice Returns a uint8 code to indicate if a transfer is restricted or not + * @dev + * See {ERC-1404} + * This function is where an issuer enforces the restriction logic of their token transfers. + * Some examples of this might include: + * - checking if the token recipient is whitelisted, + * - checking if a sender's tokens are frozen in a lock-up period, etc. + * @return uint8 restricted code, 0 means the transfer is authorized + * + */ + function detectTransferRestriction( + address from, + address to, + uint256 value + ) external view returns (uint8); + + /** + * @dev See {ERC-1404} + * This function is effectively an accessor for the "message", + * a human-readable explanation as to why a transaction is restricted. + * + */ + function messageForTransferRestriction( + uint8 restrictionCode + ) external view returns (string memory); +} + +/** +* @title IERC1404 with custom related extensions +*/ +interface IERC1404Extend is IERC1404{ + /* + * @dev leave the code 7-12 free/unused for further CMTAT additions in your ruleEngine implementation + */ + enum REJECTED_CODE_BASE { + TRANSFER_OK, + TRANSFER_REJECTED_DEACTIVATED, + TRANSFER_REJECTED_PAUSED, + TRANSFER_REJECTED_FROM_FROZEN, + TRANSFER_REJECTED_TO_FROZEN, + TRANSFER_REJECTED_SPENDER_FROZEN, + TRANSFER_REJECTED_FROM_INSUFFICIENT_ACTIVE_BALANCE + } + + /** + * @notice Returns a uint8 code to indicate if a transfer is restricted or not + * @dev + * See {ERC-1404} + * Add an additionnal argument `spender` + * This function is where an issuer enforces the restriction logic of their token transfers. + * Some examples of this might include: + * - checking if the token recipient is whitelisted, + * - checking if a sender's tokens are frozen in a lock-up period, etc. + * @return uint8 restricted code, 0 means the transfer is authorized + * + */ + function detectTransferRestrictionFrom( + address spender, + address from, + address to, + uint256 value + ) external view returns (uint8); +} + +// lib/openzeppelin-contracts/contracts/access/IAccessControl.sol + +// OpenZeppelin Contracts (last updated v5.4.0) (access/IAccessControl.sol) + +/** + * @dev External interface of AccessControl declared to support ERC-165 detection. + */ +interface IAccessControl { + /** + * @dev The `account` is missing a role. + */ + error AccessControlUnauthorizedAccount(address account, bytes32 neededRole); + + /** + * @dev The caller of a function is not the expected one. + * + * NOTE: Don't confuse with {AccessControlUnauthorizedAccount}. + */ + error AccessControlBadConfirmation(); + + /** + * @dev Emitted when `newAdminRole` is set as ``role``'s admin role, replacing `previousAdminRole` + * + * `DEFAULT_ADMIN_ROLE` is the starting admin for all roles, despite + * {RoleAdminChanged} not being emitted to signal this. + */ + event RoleAdminChanged(bytes32 indexed role, bytes32 indexed previousAdminRole, bytes32 indexed newAdminRole); + + /** + * @dev Emitted when `account` is granted `role`. + * + * `sender` is the account that originated the contract call. This account bears the admin role (for the granted role). + * Expected in cases where the role was granted using the internal {AccessControl-_grantRole}. + */ + event RoleGranted(bytes32 indexed role, address indexed account, address indexed sender); + + /** + * @dev Emitted when `account` is revoked `role`. + * + * `sender` is the account that originated the contract call: + * - if using `revokeRole`, it is the admin role bearer + * - if using `renounceRole`, it is the role bearer (i.e. `account`) + */ + event RoleRevoked(bytes32 indexed role, address indexed account, address indexed sender); + + /** + * @dev Returns `true` if `account` has been granted `role`. + */ + function hasRole(bytes32 role, address account) external view returns (bool); + + /** + * @dev Returns the admin role that controls `role`. See {grantRole} and + * {revokeRole}. + * + * To change a role's admin, use {AccessControl-_setRoleAdmin}. + */ + function getRoleAdmin(bytes32 role) external view returns (bytes32); + + /** + * @dev Grants `role` to `account`. + * + * If `account` had not been already granted `role`, emits a {RoleGranted} + * event. + * + * Requirements: + * + * - the caller must have ``role``'s admin role. + */ + function grantRole(bytes32 role, address account) external; + + /** + * @dev Revokes `role` from `account`. + * + * If `account` had been granted `role`, emits a {RoleRevoked} event. + * + * Requirements: + * + * - the caller must have ``role``'s admin role. + */ + function revokeRole(bytes32 role, address account) external; + + /** + * @dev Revokes `role` from the calling account. + * + * Roles are often managed via {grantRole} and {revokeRole}: this function's + * purpose is to provide a mechanism for accounts to lose their privileges + * if they are compromised (such as when a trusted device is misplaced). + * + * If the calling account had been granted `role`, emits a {RoleRevoked} + * event. + * + * Requirements: + * + * - the caller must be `callerConfirmation`. + */ + function renounceRole(bytes32 role, address callerConfirmation) external; +} + +// lib/openzeppelin-contracts/contracts/utils/Comparators.sol + +// OpenZeppelin Contracts (last updated v5.1.0) (utils/Comparators.sol) + +/** + * @dev Provides a set of functions to compare values. + * + * _Available since v5.1._ + */ +library Comparators { + function lt(uint256 a, uint256 b) internal pure returns (bool) { + return a < b; + } + + function gt(uint256 a, uint256 b) internal pure returns (bool) { + return a > b; + } +} + +// lib/openzeppelin-contracts/contracts/utils/Context.sol + +// OpenZeppelin Contracts (last updated v5.0.1) (utils/Context.sol) + +/** + * @dev Provides information about the current execution context, including the + * sender of the transaction and its data. While these are generally available + * via msg.sender and msg.data, they should not be accessed in such a direct + * manner, since when dealing with meta-transactions the account sending and + * paying for execution may not be the actual sender (as far as an application + * is concerned). + * + * This contract is only required for intermediate, library-like contracts. + */ +abstract contract Context { + function _msgSender() internal view virtual returns (address) { + return msg.sender; + } + + function _msgData() internal view virtual returns (bytes calldata) { + return msg.data; + } + + function _contextSuffixLength() internal view virtual returns (uint256) { + return 0; + } +} + +// lib/openzeppelin-contracts/contracts/utils/Panic.sol + +// OpenZeppelin Contracts (last updated v5.1.0) (utils/Panic.sol) + +/** + * @dev Helper library for emitting standardized panic codes. + * + * ```solidity + * contract Example { + * using Panic for uint256; + * + * // Use any of the declared internal constants + * function foo() { Panic.GENERIC.panic(); } + * + * // Alternatively + * function foo() { Panic.panic(Panic.GENERIC); } + * } + * ``` + * + * Follows the list from https://github.com/ethereum/solidity/blob/v0.8.24/libsolutil/ErrorCodes.h[libsolutil]. + * + * _Available since v5.1._ + */ +// slither-disable-next-line unused-state +library Panic { + /// @dev generic / unspecified error + uint256 internal constant GENERIC = 0x00; + /// @dev used by the assert() builtin + uint256 internal constant ASSERT = 0x01; + /// @dev arithmetic underflow or overflow + uint256 internal constant UNDER_OVERFLOW = 0x11; + /// @dev division or modulo by zero + uint256 internal constant DIVISION_BY_ZERO = 0x12; + /// @dev enum conversion error + uint256 internal constant ENUM_CONVERSION_ERROR = 0x21; + /// @dev invalid encoding in storage + uint256 internal constant STORAGE_ENCODING_ERROR = 0x22; + /// @dev empty array pop + uint256 internal constant EMPTY_ARRAY_POP = 0x31; + /// @dev array out of bounds access + uint256 internal constant ARRAY_OUT_OF_BOUNDS = 0x32; + /// @dev resource error (too large allocation or too large array) + uint256 internal constant RESOURCE_ERROR = 0x41; + /// @dev calling invalid internal function + uint256 internal constant INVALID_INTERNAL_FUNCTION = 0x51; + + /// @dev Reverts with a panic code. Recommended to use with + /// the internal constants with predefined codes. + function panic(uint256 code) internal pure { + assembly ("memory-safe") { + mstore(0x00, 0x4e487b71) + mstore(0x20, code) + revert(0x1c, 0x24) + } + } +} + +// lib/openzeppelin-contracts/contracts/utils/SlotDerivation.sol + +// OpenZeppelin Contracts (last updated v5.3.0) (utils/SlotDerivation.sol) +// This file was procedurally generated from scripts/generate/templates/SlotDerivation.js. + +/** + * @dev Library for computing storage (and transient storage) locations from namespaces and deriving slots + * corresponding to standard patterns. The derivation method for array and mapping matches the storage layout used by + * the solidity language / compiler. + * + * See https://docs.soliditylang.org/en/v0.8.20/internals/layout_in_storage.html#mappings-and-dynamic-arrays[Solidity docs for mappings and dynamic arrays.]. + * + * Example usage: + * ```solidity + * contract Example { + * // Add the library methods + * using StorageSlot for bytes32; + * using SlotDerivation for bytes32; + * + * // Declare a namespace + * string private constant _NAMESPACE = ""; // eg. OpenZeppelin.Slot + * + * function setValueInNamespace(uint256 key, address newValue) internal { + * _NAMESPACE.erc7201Slot().deriveMapping(key).getAddressSlot().value = newValue; + * } + * + * function getValueInNamespace(uint256 key) internal view returns (address) { + * return _NAMESPACE.erc7201Slot().deriveMapping(key).getAddressSlot().value; + * } + * } + * ``` + * + * TIP: Consider using this library along with {StorageSlot}. + * + * NOTE: This library provides a way to manipulate storage locations in a non-standard way. Tooling for checking + * upgrade safety will ignore the slots accessed through this library. + * + * _Available since v5.1._ + */ +library SlotDerivation { + /** + * @dev Derive an ERC-7201 slot from a string (namespace). + */ + function erc7201Slot(string memory namespace) internal pure returns (bytes32 slot) { + assembly ("memory-safe") { + mstore(0x00, sub(keccak256(add(namespace, 0x20), mload(namespace)), 1)) + slot := and(keccak256(0x00, 0x20), not(0xff)) + } + } + + /** + * @dev Add an offset to a slot to get the n-th element of a structure or an array. + */ + function offset(bytes32 slot, uint256 pos) internal pure returns (bytes32 result) { + unchecked { + return bytes32(uint256(slot) + pos); + } + } + + /** + * @dev Derive the location of the first element in an array from the slot where the length is stored. + */ + function deriveArray(bytes32 slot) internal pure returns (bytes32 result) { + assembly ("memory-safe") { + mstore(0x00, slot) + result := keccak256(0x00, 0x20) + } + } + + /** + * @dev Derive the location of a mapping element from the key. + */ + function deriveMapping(bytes32 slot, address key) internal pure returns (bytes32 result) { + assembly ("memory-safe") { + mstore(0x00, and(key, shr(96, not(0)))) + mstore(0x20, slot) + result := keccak256(0x00, 0x40) + } + } + + /** + * @dev Derive the location of a mapping element from the key. + */ + function deriveMapping(bytes32 slot, bool key) internal pure returns (bytes32 result) { + assembly ("memory-safe") { + mstore(0x00, iszero(iszero(key))) + mstore(0x20, slot) + result := keccak256(0x00, 0x40) + } + } + + /** + * @dev Derive the location of a mapping element from the key. + */ + function deriveMapping(bytes32 slot, bytes32 key) internal pure returns (bytes32 result) { + assembly ("memory-safe") { + mstore(0x00, key) + mstore(0x20, slot) + result := keccak256(0x00, 0x40) + } + } + + /** + * @dev Derive the location of a mapping element from the key. + */ + function deriveMapping(bytes32 slot, uint256 key) internal pure returns (bytes32 result) { + assembly ("memory-safe") { + mstore(0x00, key) + mstore(0x20, slot) + result := keccak256(0x00, 0x40) + } + } + + /** + * @dev Derive the location of a mapping element from the key. + */ + function deriveMapping(bytes32 slot, int256 key) internal pure returns (bytes32 result) { + assembly ("memory-safe") { + mstore(0x00, key) + mstore(0x20, slot) + result := keccak256(0x00, 0x40) + } + } + + /** + * @dev Derive the location of a mapping element from the key. + */ + function deriveMapping(bytes32 slot, string memory key) internal pure returns (bytes32 result) { + assembly ("memory-safe") { + let length := mload(key) + let begin := add(key, 0x20) + let end := add(begin, length) + let cache := mload(end) + mstore(end, slot) + result := keccak256(begin, add(length, 0x20)) + mstore(end, cache) + } + } + + /** + * @dev Derive the location of a mapping element from the key. + */ + function deriveMapping(bytes32 slot, bytes memory key) internal pure returns (bytes32 result) { + assembly ("memory-safe") { + let length := mload(key) + let begin := add(key, 0x20) + let end := add(begin, length) + let cache := mload(end) + mstore(end, slot) + result := keccak256(begin, add(length, 0x20)) + mstore(end, cache) + } + } +} + +// lib/openzeppelin-contracts/contracts/utils/StorageSlot.sol + +// OpenZeppelin Contracts (last updated v5.1.0) (utils/StorageSlot.sol) +// This file was procedurally generated from scripts/generate/templates/StorageSlot.js. + +/** + * @dev Library for reading and writing primitive types to specific storage slots. + * + * Storage slots are often used to avoid storage conflict when dealing with upgradeable contracts. + * This library helps with reading and writing to such slots without the need for inline assembly. + * + * The functions in this library return Slot structs that contain a `value` member that can be used to read or write. + * + * Example usage to set ERC-1967 implementation slot: + * ```solidity + * contract ERC1967 { + * // Define the slot. Alternatively, use the SlotDerivation library to derive the slot. + * bytes32 internal constant _IMPLEMENTATION_SLOT = 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc; + * + * function _getImplementation() internal view returns (address) { + * return StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value; + * } + * + * function _setImplementation(address newImplementation) internal { + * require(newImplementation.code.length > 0); + * StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value = newImplementation; + * } + * } + * ``` + * + * TIP: Consider using this library along with {SlotDerivation}. + */ +library StorageSlot { + struct AddressSlot { + address value; + } + + struct BooleanSlot { + bool value; + } + + struct Bytes32Slot { + bytes32 value; + } + + struct Uint256Slot { + uint256 value; + } + + struct Int256Slot { + int256 value; + } + + struct StringSlot { + string value; + } + + struct BytesSlot { + bytes value; + } + + /** + * @dev Returns an `AddressSlot` with member `value` located at `slot`. + */ + function getAddressSlot(bytes32 slot) internal pure returns (AddressSlot storage r) { + assembly ("memory-safe") { + r.slot := slot + } + } + + /** + * @dev Returns a `BooleanSlot` with member `value` located at `slot`. + */ + function getBooleanSlot(bytes32 slot) internal pure returns (BooleanSlot storage r) { + assembly ("memory-safe") { + r.slot := slot + } + } + + /** + * @dev Returns a `Bytes32Slot` with member `value` located at `slot`. + */ + function getBytes32Slot(bytes32 slot) internal pure returns (Bytes32Slot storage r) { + assembly ("memory-safe") { + r.slot := slot + } + } + + /** + * @dev Returns a `Uint256Slot` with member `value` located at `slot`. + */ + function getUint256Slot(bytes32 slot) internal pure returns (Uint256Slot storage r) { + assembly ("memory-safe") { + r.slot := slot + } + } + + /** + * @dev Returns a `Int256Slot` with member `value` located at `slot`. + */ + function getInt256Slot(bytes32 slot) internal pure returns (Int256Slot storage r) { + assembly ("memory-safe") { + r.slot := slot + } + } + + /** + * @dev Returns a `StringSlot` with member `value` located at `slot`. + */ + function getStringSlot(bytes32 slot) internal pure returns (StringSlot storage r) { + assembly ("memory-safe") { + r.slot := slot + } + } + + /** + * @dev Returns an `StringSlot` representation of the string storage pointer `store`. + */ + function getStringSlot(string storage store) internal pure returns (StringSlot storage r) { + assembly ("memory-safe") { + r.slot := store.slot + } + } + + /** + * @dev Returns a `BytesSlot` with member `value` located at `slot`. + */ + function getBytesSlot(bytes32 slot) internal pure returns (BytesSlot storage r) { + assembly ("memory-safe") { + r.slot := slot + } + } + + /** + * @dev Returns an `BytesSlot` representation of the bytes storage pointer `store`. + */ + function getBytesSlot(bytes storage store) internal pure returns (BytesSlot storage r) { + assembly ("memory-safe") { + r.slot := store.slot + } + } +} + +// lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol + +// OpenZeppelin Contracts (last updated v5.4.0) (utils/introspection/IERC165.sol) + +/** + * @dev Interface of the ERC-165 standard, as defined in the + * https://eips.ethereum.org/EIPS/eip-165[ERC]. + * + * Implementers can declare support of contract interfaces, which can then be + * queried by others ({ERC165Checker}). + * + * For an implementation, see {ERC165}. + */ +interface IERC165 { + /** + * @dev Returns true if this contract implements the interface defined by + * `interfaceId`. See the corresponding + * https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[ERC section] + * to learn more about how these ids are created. + * + * This function call must use less than 30 000 gas. + */ + function supportsInterface(bytes4 interfaceId) external view returns (bool); +} + +// lib/openzeppelin-contracts/contracts/utils/math/SafeCast.sol + +// OpenZeppelin Contracts (last updated v5.1.0) (utils/math/SafeCast.sol) +// This file was procedurally generated from scripts/generate/templates/SafeCast.js. + +/** + * @dev Wrappers over Solidity's uintXX/intXX/bool casting operators with added overflow + * checks. + * + * Downcasting from uint256/int256 in Solidity does not revert on overflow. This can + * easily result in undesired exploitation or bugs, since developers usually + * assume that overflows raise errors. `SafeCast` restores this intuition by + * reverting the transaction when such an operation overflows. + * + * Using this library instead of the unchecked operations eliminates an entire + * class of bugs, so it's recommended to use it always. + */ +library SafeCast { + /** + * @dev Value doesn't fit in an uint of `bits` size. + */ + error SafeCastOverflowedUintDowncast(uint8 bits, uint256 value); + + /** + * @dev An int value doesn't fit in an uint of `bits` size. + */ + error SafeCastOverflowedIntToUint(int256 value); + + /** + * @dev Value doesn't fit in an int of `bits` size. + */ + error SafeCastOverflowedIntDowncast(uint8 bits, int256 value); + + /** + * @dev An uint value doesn't fit in an int of `bits` size. + */ + error SafeCastOverflowedUintToInt(uint256 value); + + /** + * @dev Returns the downcasted uint248 from uint256, reverting on + * overflow (when the input is greater than largest uint248). + * + * Counterpart to Solidity's `uint248` operator. + * + * Requirements: + * + * - input must fit into 248 bits + */ + function toUint248(uint256 value) internal pure returns (uint248) { + if (value > type(uint248).max) { + revert SafeCastOverflowedUintDowncast(248, value); + } + return uint248(value); + } + + /** + * @dev Returns the downcasted uint240 from uint256, reverting on + * overflow (when the input is greater than largest uint240). + * + * Counterpart to Solidity's `uint240` operator. + * + * Requirements: + * + * - input must fit into 240 bits + */ + function toUint240(uint256 value) internal pure returns (uint240) { + if (value > type(uint240).max) { + revert SafeCastOverflowedUintDowncast(240, value); + } + return uint240(value); + } + + /** + * @dev Returns the downcasted uint232 from uint256, reverting on + * overflow (when the input is greater than largest uint232). + * + * Counterpart to Solidity's `uint232` operator. + * + * Requirements: + * + * - input must fit into 232 bits + */ + function toUint232(uint256 value) internal pure returns (uint232) { + if (value > type(uint232).max) { + revert SafeCastOverflowedUintDowncast(232, value); + } + return uint232(value); + } + + /** + * @dev Returns the downcasted uint224 from uint256, reverting on + * overflow (when the input is greater than largest uint224). + * + * Counterpart to Solidity's `uint224` operator. + * + * Requirements: + * + * - input must fit into 224 bits + */ + function toUint224(uint256 value) internal pure returns (uint224) { + if (value > type(uint224).max) { + revert SafeCastOverflowedUintDowncast(224, value); + } + return uint224(value); + } + + /** + * @dev Returns the downcasted uint216 from uint256, reverting on + * overflow (when the input is greater than largest uint216). + * + * Counterpart to Solidity's `uint216` operator. + * + * Requirements: + * + * - input must fit into 216 bits + */ + function toUint216(uint256 value) internal pure returns (uint216) { + if (value > type(uint216).max) { + revert SafeCastOverflowedUintDowncast(216, value); + } + return uint216(value); + } + + /** + * @dev Returns the downcasted uint208 from uint256, reverting on + * overflow (when the input is greater than largest uint208). + * + * Counterpart to Solidity's `uint208` operator. + * + * Requirements: + * + * - input must fit into 208 bits + */ + function toUint208(uint256 value) internal pure returns (uint208) { + if (value > type(uint208).max) { + revert SafeCastOverflowedUintDowncast(208, value); + } + return uint208(value); + } + + /** + * @dev Returns the downcasted uint200 from uint256, reverting on + * overflow (when the input is greater than largest uint200). + * + * Counterpart to Solidity's `uint200` operator. + * + * Requirements: + * + * - input must fit into 200 bits + */ + function toUint200(uint256 value) internal pure returns (uint200) { + if (value > type(uint200).max) { + revert SafeCastOverflowedUintDowncast(200, value); + } + return uint200(value); + } + + /** + * @dev Returns the downcasted uint192 from uint256, reverting on + * overflow (when the input is greater than largest uint192). + * + * Counterpart to Solidity's `uint192` operator. + * + * Requirements: + * + * - input must fit into 192 bits + */ + function toUint192(uint256 value) internal pure returns (uint192) { + if (value > type(uint192).max) { + revert SafeCastOverflowedUintDowncast(192, value); + } + return uint192(value); + } + + /** + * @dev Returns the downcasted uint184 from uint256, reverting on + * overflow (when the input is greater than largest uint184). + * + * Counterpart to Solidity's `uint184` operator. + * + * Requirements: + * + * - input must fit into 184 bits + */ + function toUint184(uint256 value) internal pure returns (uint184) { + if (value > type(uint184).max) { + revert SafeCastOverflowedUintDowncast(184, value); + } + return uint184(value); + } + + /** + * @dev Returns the downcasted uint176 from uint256, reverting on + * overflow (when the input is greater than largest uint176). + * + * Counterpart to Solidity's `uint176` operator. + * + * Requirements: + * + * - input must fit into 176 bits + */ + function toUint176(uint256 value) internal pure returns (uint176) { + if (value > type(uint176).max) { + revert SafeCastOverflowedUintDowncast(176, value); + } + return uint176(value); + } + + /** + * @dev Returns the downcasted uint168 from uint256, reverting on + * overflow (when the input is greater than largest uint168). + * + * Counterpart to Solidity's `uint168` operator. + * + * Requirements: + * + * - input must fit into 168 bits + */ + function toUint168(uint256 value) internal pure returns (uint168) { + if (value > type(uint168).max) { + revert SafeCastOverflowedUintDowncast(168, value); + } + return uint168(value); + } + + /** + * @dev Returns the downcasted uint160 from uint256, reverting on + * overflow (when the input is greater than largest uint160). + * + * Counterpart to Solidity's `uint160` operator. + * + * Requirements: + * + * - input must fit into 160 bits + */ + function toUint160(uint256 value) internal pure returns (uint160) { + if (value > type(uint160).max) { + revert SafeCastOverflowedUintDowncast(160, value); + } + return uint160(value); + } + + /** + * @dev Returns the downcasted uint152 from uint256, reverting on + * overflow (when the input is greater than largest uint152). + * + * Counterpart to Solidity's `uint152` operator. + * + * Requirements: + * + * - input must fit into 152 bits + */ + function toUint152(uint256 value) internal pure returns (uint152) { + if (value > type(uint152).max) { + revert SafeCastOverflowedUintDowncast(152, value); + } + return uint152(value); + } + + /** + * @dev Returns the downcasted uint144 from uint256, reverting on + * overflow (when the input is greater than largest uint144). + * + * Counterpart to Solidity's `uint144` operator. + * + * Requirements: + * + * - input must fit into 144 bits + */ + function toUint144(uint256 value) internal pure returns (uint144) { + if (value > type(uint144).max) { + revert SafeCastOverflowedUintDowncast(144, value); + } + return uint144(value); + } + + /** + * @dev Returns the downcasted uint136 from uint256, reverting on + * overflow (when the input is greater than largest uint136). + * + * Counterpart to Solidity's `uint136` operator. + * + * Requirements: + * + * - input must fit into 136 bits + */ + function toUint136(uint256 value) internal pure returns (uint136) { + if (value > type(uint136).max) { + revert SafeCastOverflowedUintDowncast(136, value); + } + return uint136(value); + } + + /** + * @dev Returns the downcasted uint128 from uint256, reverting on + * overflow (when the input is greater than largest uint128). + * + * Counterpart to Solidity's `uint128` operator. + * + * Requirements: + * + * - input must fit into 128 bits + */ + function toUint128(uint256 value) internal pure returns (uint128) { + if (value > type(uint128).max) { + revert SafeCastOverflowedUintDowncast(128, value); + } + return uint128(value); + } + + /** + * @dev Returns the downcasted uint120 from uint256, reverting on + * overflow (when the input is greater than largest uint120). + * + * Counterpart to Solidity's `uint120` operator. + * + * Requirements: + * + * - input must fit into 120 bits + */ + function toUint120(uint256 value) internal pure returns (uint120) { + if (value > type(uint120).max) { + revert SafeCastOverflowedUintDowncast(120, value); + } + return uint120(value); + } + + /** + * @dev Returns the downcasted uint112 from uint256, reverting on + * overflow (when the input is greater than largest uint112). + * + * Counterpart to Solidity's `uint112` operator. + * + * Requirements: + * + * - input must fit into 112 bits + */ + function toUint112(uint256 value) internal pure returns (uint112) { + if (value > type(uint112).max) { + revert SafeCastOverflowedUintDowncast(112, value); + } + return uint112(value); + } + + /** + * @dev Returns the downcasted uint104 from uint256, reverting on + * overflow (when the input is greater than largest uint104). + * + * Counterpart to Solidity's `uint104` operator. + * + * Requirements: + * + * - input must fit into 104 bits + */ + function toUint104(uint256 value) internal pure returns (uint104) { + if (value > type(uint104).max) { + revert SafeCastOverflowedUintDowncast(104, value); + } + return uint104(value); + } + + /** + * @dev Returns the downcasted uint96 from uint256, reverting on + * overflow (when the input is greater than largest uint96). + * + * Counterpart to Solidity's `uint96` operator. + * + * Requirements: + * + * - input must fit into 96 bits + */ + function toUint96(uint256 value) internal pure returns (uint96) { + if (value > type(uint96).max) { + revert SafeCastOverflowedUintDowncast(96, value); + } + return uint96(value); + } + + /** + * @dev Returns the downcasted uint88 from uint256, reverting on + * overflow (when the input is greater than largest uint88). + * + * Counterpart to Solidity's `uint88` operator. + * + * Requirements: + * + * - input must fit into 88 bits + */ + function toUint88(uint256 value) internal pure returns (uint88) { + if (value > type(uint88).max) { + revert SafeCastOverflowedUintDowncast(88, value); + } + return uint88(value); + } + + /** + * @dev Returns the downcasted uint80 from uint256, reverting on + * overflow (when the input is greater than largest uint80). + * + * Counterpart to Solidity's `uint80` operator. + * + * Requirements: + * + * - input must fit into 80 bits + */ + function toUint80(uint256 value) internal pure returns (uint80) { + if (value > type(uint80).max) { + revert SafeCastOverflowedUintDowncast(80, value); + } + return uint80(value); + } + + /** + * @dev Returns the downcasted uint72 from uint256, reverting on + * overflow (when the input is greater than largest uint72). + * + * Counterpart to Solidity's `uint72` operator. + * + * Requirements: + * + * - input must fit into 72 bits + */ + function toUint72(uint256 value) internal pure returns (uint72) { + if (value > type(uint72).max) { + revert SafeCastOverflowedUintDowncast(72, value); + } + return uint72(value); + } + + /** + * @dev Returns the downcasted uint64 from uint256, reverting on + * overflow (when the input is greater than largest uint64). + * + * Counterpart to Solidity's `uint64` operator. + * + * Requirements: + * + * - input must fit into 64 bits + */ + function toUint64(uint256 value) internal pure returns (uint64) { + if (value > type(uint64).max) { + revert SafeCastOverflowedUintDowncast(64, value); + } + return uint64(value); + } + + /** + * @dev Returns the downcasted uint56 from uint256, reverting on + * overflow (when the input is greater than largest uint56). + * + * Counterpart to Solidity's `uint56` operator. + * + * Requirements: + * + * - input must fit into 56 bits + */ + function toUint56(uint256 value) internal pure returns (uint56) { + if (value > type(uint56).max) { + revert SafeCastOverflowedUintDowncast(56, value); + } + return uint56(value); + } + + /** + * @dev Returns the downcasted uint48 from uint256, reverting on + * overflow (when the input is greater than largest uint48). + * + * Counterpart to Solidity's `uint48` operator. + * + * Requirements: + * + * - input must fit into 48 bits + */ + function toUint48(uint256 value) internal pure returns (uint48) { + if (value > type(uint48).max) { + revert SafeCastOverflowedUintDowncast(48, value); + } + return uint48(value); + } + + /** + * @dev Returns the downcasted uint40 from uint256, reverting on + * overflow (when the input is greater than largest uint40). + * + * Counterpart to Solidity's `uint40` operator. + * + * Requirements: + * + * - input must fit into 40 bits + */ + function toUint40(uint256 value) internal pure returns (uint40) { + if (value > type(uint40).max) { + revert SafeCastOverflowedUintDowncast(40, value); + } + return uint40(value); + } + + /** + * @dev Returns the downcasted uint32 from uint256, reverting on + * overflow (when the input is greater than largest uint32). + * + * Counterpart to Solidity's `uint32` operator. + * + * Requirements: + * + * - input must fit into 32 bits + */ + function toUint32(uint256 value) internal pure returns (uint32) { + if (value > type(uint32).max) { + revert SafeCastOverflowedUintDowncast(32, value); + } + return uint32(value); + } + + /** + * @dev Returns the downcasted uint24 from uint256, reverting on + * overflow (when the input is greater than largest uint24). + * + * Counterpart to Solidity's `uint24` operator. + * + * Requirements: + * + * - input must fit into 24 bits + */ + function toUint24(uint256 value) internal pure returns (uint24) { + if (value > type(uint24).max) { + revert SafeCastOverflowedUintDowncast(24, value); + } + return uint24(value); + } + + /** + * @dev Returns the downcasted uint16 from uint256, reverting on + * overflow (when the input is greater than largest uint16). + * + * Counterpart to Solidity's `uint16` operator. + * + * Requirements: + * + * - input must fit into 16 bits + */ + function toUint16(uint256 value) internal pure returns (uint16) { + if (value > type(uint16).max) { + revert SafeCastOverflowedUintDowncast(16, value); + } + return uint16(value); + } + + /** + * @dev Returns the downcasted uint8 from uint256, reverting on + * overflow (when the input is greater than largest uint8). + * + * Counterpart to Solidity's `uint8` operator. + * + * Requirements: + * + * - input must fit into 8 bits + */ + function toUint8(uint256 value) internal pure returns (uint8) { + if (value > type(uint8).max) { + revert SafeCastOverflowedUintDowncast(8, value); + } + return uint8(value); + } + + /** + * @dev Converts a signed int256 into an unsigned uint256. + * + * Requirements: + * + * - input must be greater than or equal to 0. + */ + function toUint256(int256 value) internal pure returns (uint256) { + if (value < 0) { + revert SafeCastOverflowedIntToUint(value); + } + return uint256(value); + } + + /** + * @dev Returns the downcasted int248 from int256, reverting on + * overflow (when the input is less than smallest int248 or + * greater than largest int248). + * + * Counterpart to Solidity's `int248` operator. + * + * Requirements: + * + * - input must fit into 248 bits + */ + function toInt248(int256 value) internal pure returns (int248 downcasted) { + downcasted = int248(value); + if (downcasted != value) { + revert SafeCastOverflowedIntDowncast(248, value); + } + } + + /** + * @dev Returns the downcasted int240 from int256, reverting on + * overflow (when the input is less than smallest int240 or + * greater than largest int240). + * + * Counterpart to Solidity's `int240` operator. + * + * Requirements: + * + * - input must fit into 240 bits + */ + function toInt240(int256 value) internal pure returns (int240 downcasted) { + downcasted = int240(value); + if (downcasted != value) { + revert SafeCastOverflowedIntDowncast(240, value); + } + } + + /** + * @dev Returns the downcasted int232 from int256, reverting on + * overflow (when the input is less than smallest int232 or + * greater than largest int232). + * + * Counterpart to Solidity's `int232` operator. + * + * Requirements: + * + * - input must fit into 232 bits + */ + function toInt232(int256 value) internal pure returns (int232 downcasted) { + downcasted = int232(value); + if (downcasted != value) { + revert SafeCastOverflowedIntDowncast(232, value); + } + } + + /** + * @dev Returns the downcasted int224 from int256, reverting on + * overflow (when the input is less than smallest int224 or + * greater than largest int224). + * + * Counterpart to Solidity's `int224` operator. + * + * Requirements: + * + * - input must fit into 224 bits + */ + function toInt224(int256 value) internal pure returns (int224 downcasted) { + downcasted = int224(value); + if (downcasted != value) { + revert SafeCastOverflowedIntDowncast(224, value); + } + } + + /** + * @dev Returns the downcasted int216 from int256, reverting on + * overflow (when the input is less than smallest int216 or + * greater than largest int216). + * + * Counterpart to Solidity's `int216` operator. + * + * Requirements: + * + * - input must fit into 216 bits + */ + function toInt216(int256 value) internal pure returns (int216 downcasted) { + downcasted = int216(value); + if (downcasted != value) { + revert SafeCastOverflowedIntDowncast(216, value); + } + } + + /** + * @dev Returns the downcasted int208 from int256, reverting on + * overflow (when the input is less than smallest int208 or + * greater than largest int208). + * + * Counterpart to Solidity's `int208` operator. + * + * Requirements: + * + * - input must fit into 208 bits + */ + function toInt208(int256 value) internal pure returns (int208 downcasted) { + downcasted = int208(value); + if (downcasted != value) { + revert SafeCastOverflowedIntDowncast(208, value); + } + } + + /** + * @dev Returns the downcasted int200 from int256, reverting on + * overflow (when the input is less than smallest int200 or + * greater than largest int200). + * + * Counterpart to Solidity's `int200` operator. + * + * Requirements: + * + * - input must fit into 200 bits + */ + function toInt200(int256 value) internal pure returns (int200 downcasted) { + downcasted = int200(value); + if (downcasted != value) { + revert SafeCastOverflowedIntDowncast(200, value); + } + } + + /** + * @dev Returns the downcasted int192 from int256, reverting on + * overflow (when the input is less than smallest int192 or + * greater than largest int192). + * + * Counterpart to Solidity's `int192` operator. + * + * Requirements: + * + * - input must fit into 192 bits + */ + function toInt192(int256 value) internal pure returns (int192 downcasted) { + downcasted = int192(value); + if (downcasted != value) { + revert SafeCastOverflowedIntDowncast(192, value); + } + } + + /** + * @dev Returns the downcasted int184 from int256, reverting on + * overflow (when the input is less than smallest int184 or + * greater than largest int184). + * + * Counterpart to Solidity's `int184` operator. + * + * Requirements: + * + * - input must fit into 184 bits + */ + function toInt184(int256 value) internal pure returns (int184 downcasted) { + downcasted = int184(value); + if (downcasted != value) { + revert SafeCastOverflowedIntDowncast(184, value); + } + } + + /** + * @dev Returns the downcasted int176 from int256, reverting on + * overflow (when the input is less than smallest int176 or + * greater than largest int176). + * + * Counterpart to Solidity's `int176` operator. + * + * Requirements: + * + * - input must fit into 176 bits + */ + function toInt176(int256 value) internal pure returns (int176 downcasted) { + downcasted = int176(value); + if (downcasted != value) { + revert SafeCastOverflowedIntDowncast(176, value); + } + } + + /** + * @dev Returns the downcasted int168 from int256, reverting on + * overflow (when the input is less than smallest int168 or + * greater than largest int168). + * + * Counterpart to Solidity's `int168` operator. + * + * Requirements: + * + * - input must fit into 168 bits + */ + function toInt168(int256 value) internal pure returns (int168 downcasted) { + downcasted = int168(value); + if (downcasted != value) { + revert SafeCastOverflowedIntDowncast(168, value); + } + } + + /** + * @dev Returns the downcasted int160 from int256, reverting on + * overflow (when the input is less than smallest int160 or + * greater than largest int160). + * + * Counterpart to Solidity's `int160` operator. + * + * Requirements: + * + * - input must fit into 160 bits + */ + function toInt160(int256 value) internal pure returns (int160 downcasted) { + downcasted = int160(value); + if (downcasted != value) { + revert SafeCastOverflowedIntDowncast(160, value); + } + } + + /** + * @dev Returns the downcasted int152 from int256, reverting on + * overflow (when the input is less than smallest int152 or + * greater than largest int152). + * + * Counterpart to Solidity's `int152` operator. + * + * Requirements: + * + * - input must fit into 152 bits + */ + function toInt152(int256 value) internal pure returns (int152 downcasted) { + downcasted = int152(value); + if (downcasted != value) { + revert SafeCastOverflowedIntDowncast(152, value); + } + } + + /** + * @dev Returns the downcasted int144 from int256, reverting on + * overflow (when the input is less than smallest int144 or + * greater than largest int144). + * + * Counterpart to Solidity's `int144` operator. + * + * Requirements: + * + * - input must fit into 144 bits + */ + function toInt144(int256 value) internal pure returns (int144 downcasted) { + downcasted = int144(value); + if (downcasted != value) { + revert SafeCastOverflowedIntDowncast(144, value); + } + } + + /** + * @dev Returns the downcasted int136 from int256, reverting on + * overflow (when the input is less than smallest int136 or + * greater than largest int136). + * + * Counterpart to Solidity's `int136` operator. + * + * Requirements: + * + * - input must fit into 136 bits + */ + function toInt136(int256 value) internal pure returns (int136 downcasted) { + downcasted = int136(value); + if (downcasted != value) { + revert SafeCastOverflowedIntDowncast(136, value); + } + } + + /** + * @dev Returns the downcasted int128 from int256, reverting on + * overflow (when the input is less than smallest int128 or + * greater than largest int128). + * + * Counterpart to Solidity's `int128` operator. + * + * Requirements: + * + * - input must fit into 128 bits + */ + function toInt128(int256 value) internal pure returns (int128 downcasted) { + downcasted = int128(value); + if (downcasted != value) { + revert SafeCastOverflowedIntDowncast(128, value); + } + } + + /** + * @dev Returns the downcasted int120 from int256, reverting on + * overflow (when the input is less than smallest int120 or + * greater than largest int120). + * + * Counterpart to Solidity's `int120` operator. + * + * Requirements: + * + * - input must fit into 120 bits + */ + function toInt120(int256 value) internal pure returns (int120 downcasted) { + downcasted = int120(value); + if (downcasted != value) { + revert SafeCastOverflowedIntDowncast(120, value); + } + } + + /** + * @dev Returns the downcasted int112 from int256, reverting on + * overflow (when the input is less than smallest int112 or + * greater than largest int112). + * + * Counterpart to Solidity's `int112` operator. + * + * Requirements: + * + * - input must fit into 112 bits + */ + function toInt112(int256 value) internal pure returns (int112 downcasted) { + downcasted = int112(value); + if (downcasted != value) { + revert SafeCastOverflowedIntDowncast(112, value); + } + } + + /** + * @dev Returns the downcasted int104 from int256, reverting on + * overflow (when the input is less than smallest int104 or + * greater than largest int104). + * + * Counterpart to Solidity's `int104` operator. + * + * Requirements: + * + * - input must fit into 104 bits + */ + function toInt104(int256 value) internal pure returns (int104 downcasted) { + downcasted = int104(value); + if (downcasted != value) { + revert SafeCastOverflowedIntDowncast(104, value); + } + } + + /** + * @dev Returns the downcasted int96 from int256, reverting on + * overflow (when the input is less than smallest int96 or + * greater than largest int96). + * + * Counterpart to Solidity's `int96` operator. + * + * Requirements: + * + * - input must fit into 96 bits + */ + function toInt96(int256 value) internal pure returns (int96 downcasted) { + downcasted = int96(value); + if (downcasted != value) { + revert SafeCastOverflowedIntDowncast(96, value); + } + } + + /** + * @dev Returns the downcasted int88 from int256, reverting on + * overflow (when the input is less than smallest int88 or + * greater than largest int88). + * + * Counterpart to Solidity's `int88` operator. + * + * Requirements: + * + * - input must fit into 88 bits + */ + function toInt88(int256 value) internal pure returns (int88 downcasted) { + downcasted = int88(value); + if (downcasted != value) { + revert SafeCastOverflowedIntDowncast(88, value); + } + } + + /** + * @dev Returns the downcasted int80 from int256, reverting on + * overflow (when the input is less than smallest int80 or + * greater than largest int80). + * + * Counterpart to Solidity's `int80` operator. + * + * Requirements: + * + * - input must fit into 80 bits + */ + function toInt80(int256 value) internal pure returns (int80 downcasted) { + downcasted = int80(value); + if (downcasted != value) { + revert SafeCastOverflowedIntDowncast(80, value); + } + } + + /** + * @dev Returns the downcasted int72 from int256, reverting on + * overflow (when the input is less than smallest int72 or + * greater than largest int72). + * + * Counterpart to Solidity's `int72` operator. + * + * Requirements: + * + * - input must fit into 72 bits + */ + function toInt72(int256 value) internal pure returns (int72 downcasted) { + downcasted = int72(value); + if (downcasted != value) { + revert SafeCastOverflowedIntDowncast(72, value); + } + } + + /** + * @dev Returns the downcasted int64 from int256, reverting on + * overflow (when the input is less than smallest int64 or + * greater than largest int64). + * + * Counterpart to Solidity's `int64` operator. + * + * Requirements: + * + * - input must fit into 64 bits + */ + function toInt64(int256 value) internal pure returns (int64 downcasted) { + downcasted = int64(value); + if (downcasted != value) { + revert SafeCastOverflowedIntDowncast(64, value); + } + } + + /** + * @dev Returns the downcasted int56 from int256, reverting on + * overflow (when the input is less than smallest int56 or + * greater than largest int56). + * + * Counterpart to Solidity's `int56` operator. + * + * Requirements: + * + * - input must fit into 56 bits + */ + function toInt56(int256 value) internal pure returns (int56 downcasted) { + downcasted = int56(value); + if (downcasted != value) { + revert SafeCastOverflowedIntDowncast(56, value); + } + } + + /** + * @dev Returns the downcasted int48 from int256, reverting on + * overflow (when the input is less than smallest int48 or + * greater than largest int48). + * + * Counterpart to Solidity's `int48` operator. + * + * Requirements: + * + * - input must fit into 48 bits + */ + function toInt48(int256 value) internal pure returns (int48 downcasted) { + downcasted = int48(value); + if (downcasted != value) { + revert SafeCastOverflowedIntDowncast(48, value); + } + } + + /** + * @dev Returns the downcasted int40 from int256, reverting on + * overflow (when the input is less than smallest int40 or + * greater than largest int40). + * + * Counterpart to Solidity's `int40` operator. + * + * Requirements: + * + * - input must fit into 40 bits + */ + function toInt40(int256 value) internal pure returns (int40 downcasted) { + downcasted = int40(value); + if (downcasted != value) { + revert SafeCastOverflowedIntDowncast(40, value); + } + } + + /** + * @dev Returns the downcasted int32 from int256, reverting on + * overflow (when the input is less than smallest int32 or + * greater than largest int32). + * + * Counterpart to Solidity's `int32` operator. + * + * Requirements: + * + * - input must fit into 32 bits + */ + function toInt32(int256 value) internal pure returns (int32 downcasted) { + downcasted = int32(value); + if (downcasted != value) { + revert SafeCastOverflowedIntDowncast(32, value); + } + } + + /** + * @dev Returns the downcasted int24 from int256, reverting on + * overflow (when the input is less than smallest int24 or + * greater than largest int24). + * + * Counterpart to Solidity's `int24` operator. + * + * Requirements: + * + * - input must fit into 24 bits + */ + function toInt24(int256 value) internal pure returns (int24 downcasted) { + downcasted = int24(value); + if (downcasted != value) { + revert SafeCastOverflowedIntDowncast(24, value); + } + } + + /** + * @dev Returns the downcasted int16 from int256, reverting on + * overflow (when the input is less than smallest int16 or + * greater than largest int16). + * + * Counterpart to Solidity's `int16` operator. + * + * Requirements: + * + * - input must fit into 16 bits + */ + function toInt16(int256 value) internal pure returns (int16 downcasted) { + downcasted = int16(value); + if (downcasted != value) { + revert SafeCastOverflowedIntDowncast(16, value); + } + } + + /** + * @dev Returns the downcasted int8 from int256, reverting on + * overflow (when the input is less than smallest int8 or + * greater than largest int8). + * + * Counterpart to Solidity's `int8` operator. + * + * Requirements: + * + * - input must fit into 8 bits + */ + function toInt8(int256 value) internal pure returns (int8 downcasted) { + downcasted = int8(value); + if (downcasted != value) { + revert SafeCastOverflowedIntDowncast(8, value); + } + } + + /** + * @dev Converts an unsigned uint256 into a signed int256. + * + * Requirements: + * + * - input must be less than or equal to maxInt256. + */ + function toInt256(uint256 value) internal pure returns (int256) { + // Note: Unsafe cast below is okay because `type(int256).max` is guaranteed to be positive + if (value > uint256(type(int256).max)) { + revert SafeCastOverflowedUintToInt(value); + } + return int256(value); + } + + /** + * @dev Cast a boolean (false or true) to a uint256 (0 or 1) with no jump. + */ + function toUint(bool b) internal pure returns (uint256 u) { + assembly ("memory-safe") { + u := iszero(iszero(b)) + } + } +} + +// src/modules/library/RuleEngineInvariantStorage.sol + +abstract contract RuleEngineInvariantStorage { + /* ==== Errors === */ + error RuleEngine_AdminWithAddressZeroNotAllowed(); +} + +// lib/CMTAT/contracts/interfaces/tokenization/draft-IERC7551.sol + +/** + * @title IERC7551Mint + * @dev Interface for token minting operations. + */ +interface IERC7551Mint { + /** + * @notice Emitted when new tokens are minted and assigned to an account. + * @param minter The address that initiated the mint operation. + * @param account The address receiving the newly minted tokens. + * @param value The amount of tokens created. + * @param data Optional metadata associated with the mint (e.g., reason, reference ID). + */ + event Mint(address indexed minter, address indexed account, uint256 value, bytes data); + /** + * @notice Creates a `value` amount of tokens and assigns them to `account`, by transferring it from address(0) + * @dev + * - Increases the total supply of tokens. + * - Emits both a `Mint` event and a standard ERC-20 `Transfer` event (with `from` set to the zero address). + * - The `data` parameter can be used to attach off-chain metadata or audit information. + * - If {IERC7551Pause} is implemented: + * - Token issuance MUST NOT be blocked by paused transfer state. + * Requirements: + * - `account` cannot be the zero address + * @param account The address that will receive the newly minted tokens. + * @param value The amount of tokens to mint. + * @param data Additional contextual data to include with the mint (optional). + */ + function mint(address account, uint256 value, bytes calldata data) external; +} + +/** +* @title interface for burn operation +*/ +interface IERC7551Burn { + /** + * @notice Emitted when tokens are burned from an account. + * @param burner The address that initiated the burn. + * @param account The address from which tokens were burned. + * @param value The amount of tokens burned. + * @param data Additional data related to the burn. + */ + event Burn(address indexed burner, address indexed account, uint256 value, bytes data); + + /** + * @notice Burns a specific number of tokens from the given account by transferring it to address(0) + * @dev + * - The account's balance is decreased by the specified amount. + * - Emits a `Burn` event and a standard `Transfer` event with `to` set to `address(0)`. + * - If the account balance (including frozen tokens) is less than the burn amount, the transaction MUST revert. + * - If the token contract supports {IERC7551Pause}, paused transfers MUST NOT prevent this burn operation. + * - The `data` parameter MAY be used to provide additional context (e.g., audit trail or documentation). + * @param account The address whose tokens will be burned. + * @param amount The number of tokens to remove from circulation. + * @param data Arbitrary additional data to document the burn. + */ + function burn(address account, uint256 amount, bytes calldata data) external; +} + +interface IERC7551Pause { + /** + * @notice Returns true if token transfers are currently paused. + * @return True if paused, false otherwise. + * @dev + * If this function returns true, it MUST NOT be possible to transfer tokens to other accounts + * and the function canTransfer() MUST return false. + */ + function paused() external view returns (bool); + /** + * @notice Pauses token transfers. + * @dev Reverts if already paused. + * Emits a `Paused` event + */ + function pause() external; + /** + * @notice Unpauses token transfers. + * @dev Reverts if token is not in pause state. + * emits an `Unpaused` event + */ + function unpause() external; +} +interface IERC7551ERC20EnforcementEvent { + /** + * @notice Emitted when a forced transfer or burn occurs. + * @param enforcer The address that initiated the enforcement. + * @param account The address affected by the enforcement. + * @param amount The number of tokens involved. + * @param data Additional data related to the enforcement. + */ + event Enforcement (address indexed enforcer, address indexed account, uint256 amount, bytes data); +} + +interface IERC7551ERC20EnforcementTokenFrozenEvent { + /** + * @notice Emitted when a specific amount of tokens are frozen on an address. + * @param account The address whose tokens are frozen. + * @param value The number of tokens frozen. + * @param data Additional data related to the freezing action. + * @dev + * Same name as ERC-3643 but with a supplementary data parameter + * The event is emitted by freezePartialTokens and batchFreezePartialTokens functions + */ + event TokensFrozen(address indexed account, uint256 value, bytes data); + + /** + * @notice Emitted when a specific amount of tokens are unfrozen on an address. + * @param account The address whose tokens are unfrozen. + * @param value The number of tokens unfrozen. + * @param data Additional data related to the unfreezing action. + * @dev + * Same name as ERC-3643 but with a supplementary data parameter + * The event is emitted by `unfreezePartialTokens`, `batchUnfreezePartialTokens`and potentially `forcedTransfer` functions + */ + event TokensUnfrozen(address indexed account, uint256 value, bytes data); +} + +interface IERC7551ERC20Enforcement { + /* ============ View Functions ============ */ + /** + * @notice Returns the active (unfrozen) token balance of a given account. + * @param account The address to query. + * @return activeBalance_ The amount of tokens that can be transferred using standard ERC-20 functions. + */ + function getActiveBalanceOf(address account) external view returns (uint256 activeBalance_); + + /** + * @notice Returns the frozen token balance of a given account. + * @dev Frozen tokens cannot be transferred using standard ERC-20 functions. + * Implementations MAY support transferring frozen tokens using other mechanisms like `forcedTransfer`. + * If the active balance is insufficient to cover a transfer, `canTransfer` and `canTransferFrom` MUST return false. + * @param account The address to query. + * @return frozenBalance_ The amount of tokens that are frozen and non-transferable via ERC-20 `transfer` and `transferFrom`. + */ + function getFrozenTokens(address account) external view returns (uint256 frozenBalance_); + + /* ============ State Functions ============ */ + /** + * @notice Freezes a specified amount of tokens for a given account. + * @dev Emits a `TokensFrozen` event. + * @param account The address whose tokens will be frozen. + * @param amount The number of tokens to freeze. + * @param data Arbitrary additional data for logging or business logic. + */ + function freezePartialTokens(address account, uint256 amount, bytes memory data) external; + + + /** + * @notice Unfreezes a specified amount of tokens for a given account. + * @dev Emits a `TokensUnfrozen` event. + * @param account The address whose tokens will be unfrozen. + * @param amount The number of tokens to unfreeze. + * @param data Arbitrary additional data for logging or business logic. + */ + function unfreezePartialTokens(address account, uint256 amount, bytes memory data) external; + /** + * @notice Executes a forced transfer of tokens from one account to another. + * @dev Transfers `value` tokens from `account` to `to` without requiring the account’s consent. + * If the `account` does not have enough active (unfrozen) tokens, frozen tokens may be automatically unfrozen to fulfill the transfer. + * Emits a `Transfer` event. Emits a `TokensUnfrozen` event if frozen tokens are used. + * @param account The address to debit tokens from. + * @param to The address to credit tokens to. + * @param value The amount of tokens to transfer. + * @param data Optional additional metadata to accompany the transfer. + * @return success_ Returns true if the transfer was successful. + */ + function forcedTransfer(address account, address to, uint256 value, bytes calldata data) external returns (bool success_); +} + +interface IERC7551Compliance is IERC3643ComplianceRead { + /** + * @notice Checks if `spender` can transfer `value` tokens from `from` to `to` under compliance rules. + * @dev Does not check balances or access rights (Access Control). + * @param spender The address performing the transfer. + * @param from The source address. + * @param to The destination address. + * @param value The number of tokens to transfer. + * @return isCompliant True if the transfer complies with policy. + */ + function canTransferFrom( + address spender, + address from, + address to, + uint256 value + ) external view returns (bool); +} + +interface IERC7551Document { + /** + * @notice Returns the hash of the "Terms" document. + * @return hash_ The `bytes32` hash of the terms document. + */ + function termsHash() external view returns (bytes32 hash_); + + /** + * @notice Sets the terms hash and URI. + * @param _hash The new hash of the document. + * @param _uri The corresponding URI. + */ + function setTerms(bytes32 _hash, string calldata _uri) external; + + /** + * @notice Returns the metadata string (e.g. URL). + * @return metadata_ The metadata string. + */ + function metaData() external view returns (string memory metadata_); + + /** + * @notice Sets a new metadata string (e.g. URL). + * @param metaData_ The new metadata value. + */ + function setMetaData(string calldata metaData_) external; +} + +// lib/openzeppelin-contracts/contracts/metatx/ERC2771Context.sol + +// OpenZeppelin Contracts (last updated v5.4.0) (metatx/ERC2771Context.sol) + +/** + * @dev Context variant with ERC-2771 support. + * + * WARNING: Avoid using this pattern in contracts that rely in a specific calldata length as they'll + * be affected by any forwarder whose `msg.data` is suffixed with the `from` address according to the ERC-2771 + * specification adding the address size in bytes (20) to the calldata size. An example of an unexpected + * behavior could be an unintended fallback (or another function) invocation while trying to invoke the `receive` + * function only accessible if `msg.data.length == 0`. + * + * WARNING: The usage of `delegatecall` in this contract is dangerous and may result in context corruption. + * Any forwarded request to this contract triggering a `delegatecall` to itself will result in an invalid {_msgSender} + * recovery. + */ +abstract contract ERC2771Context is Context { + /// @custom:oz-upgrades-unsafe-allow state-variable-immutable + address private immutable _trustedForwarder; + + /** + * @dev Initializes the contract with a trusted forwarder, which will be able to + * invoke functions on this contract on behalf of other accounts. + * + * NOTE: The trusted forwarder can be replaced by overriding {trustedForwarder}. + */ + /// @custom:oz-upgrades-unsafe-allow constructor + constructor(address trustedForwarder_) { + _trustedForwarder = trustedForwarder_; + } + + /** + * @dev Returns the address of the trusted forwarder. + */ + function trustedForwarder() public view virtual returns (address) { + return _trustedForwarder; + } + + /** + * @dev Indicates whether any particular address is the trusted forwarder. + */ + function isTrustedForwarder(address forwarder) public view virtual returns (bool) { + return forwarder == trustedForwarder(); + } + + /** + * @dev Override for `msg.sender`. Defaults to the original `msg.sender` whenever + * a call is not performed by the trusted forwarder or the calldata length is less than + * 20 bytes (an address length). + */ + function _msgSender() internal view virtual override returns (address) { + uint256 calldataLength = msg.data.length; + uint256 contextSuffixLength = _contextSuffixLength(); + if (calldataLength >= contextSuffixLength && isTrustedForwarder(msg.sender)) { + unchecked { + return address(bytes20(msg.data[calldataLength - contextSuffixLength:])); + } + } else { + return super._msgSender(); + } + } + + /** + * @dev Override for `msg.data`. Defaults to the original `msg.data` whenever + * a call is not performed by the trusted forwarder or the calldata length is less than + * 20 bytes (an address length). + */ + function _msgData() internal view virtual override returns (bytes calldata) { + uint256 calldataLength = msg.data.length; + uint256 contextSuffixLength = _contextSuffixLength(); + if (calldataLength >= contextSuffixLength && isTrustedForwarder(msg.sender)) { + unchecked { + return msg.data[:calldataLength - contextSuffixLength]; + } + } else { + return super._msgData(); + } + } + + /** + * @dev ERC-2771 specifies the context as being a single address (20 bytes). + */ + function _contextSuffixLength() internal view virtual override returns (uint256) { + return 20; + } +} + +// lib/openzeppelin-contracts/contracts/utils/introspection/ERC165.sol + +// OpenZeppelin Contracts (last updated v5.4.0) (utils/introspection/ERC165.sol) + +/** + * @dev Implementation of the {IERC165} interface. + * + * Contracts that want to implement ERC-165 should inherit from this contract and override {supportsInterface} to check + * for the additional interface id that will be supported. For example: + * + * ```solidity + * function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) { + * return interfaceId == type(MyInterface).interfaceId || super.supportsInterface(interfaceId); + * } + * ``` + */ +abstract contract ERC165 is IERC165 { + /// @inheritdoc IERC165 + function supportsInterface(bytes4 interfaceId) public view virtual returns (bool) { + return interfaceId == type(IERC165).interfaceId; + } +} + +// src/interfaces/IERC3643Compliance.sol + +/* ==== CMTAT === */ + +interface IERC3643Compliance is IERC3643ComplianceRead, IERC3643IComplianceContract { + /* ============ Events ============ */ + /** + * @notice Emitted when a token is successfully bound to the compliance contract. + * @param token The address of the token that was bound. + */ + event TokenBound(address token); + + /** + * @notice Emitted when a token is successfully unbound from the compliance contract. + * @param token The address of the token that was unbound. + */ + event TokenUnbound(address token); + + /* ============ Functions ============ */ + /** + * @notice Associates a token contract with this compliance contract. + * @dev The compliance contract may restrict operations on the bound token + * according to the compliance logic. + * Reverts if the token is already bound. + * Complexity: O(1). + * @param token The address of the token to bind. + */ + function bindToken(address token) external; + /** + * @notice Removes the association of a token contract from this compliance contract. + * @dev Reverts if the token is not currently bound. + * Complexity: O(1). + * @param token The address of the token to unbind. + */ + function unbindToken(address token) external; + + /** + * @notice Checks whether a token is currently bound to this compliance contract. + * @dev + * Complexity: O(1). + * Note that there are no guarantees on the ordering of values inside the array, + * and it may change when more values are added or removed. + * @param token The token address to verify. + * @return isBound True if the token is bound, false otherwise. + */ + function isTokenBound(address token) external view returns (bool isBound); + /** + * @notice Returns the single token currently bound to this compliance contract. + * @dev If multiple tokens are supported, consider using getTokenBounds(). + * @return token The address of the currently bound token. + */ + function getTokenBound() external view returns (address token); + + /** + * @notice Returns all tokens currently bound to this compliance contract. + * @dev This is a view-only function and does not modify state. + * This function is not part of the original ERC-3643 specification + * This operation will copy the entire storage to memory, which can be quite expensive. + * This is designed to mostly be used by view accessors that are queried without any gas fees. + * @return tokens An array of addresses of bound token contracts. + */ + function getTokenBounds() external view returns (address[] memory tokens); + + /** + * @notice Updates the compliance contract state when tokens are created (minted). + * @dev Called by the token contract when new tokens are issued to an account. + * Reverts if the minting does not comply with the rules. + * @param to The address receiving the minted tokens. + * @param value The number of tokens created. + */ + function created(address to, uint256 value) external; + + /** + * @notice Updates the compliance contract state when tokens are destroyed (burned). + * @dev Called by the token contract when tokens are redeemed or burned. + * Reverts if the burning does not comply with the rules. + * @param from The address whose tokens are being destroyed. + * @param value The number of tokens destroyed. + */ + function destroyed(address from, uint256 value) external; +} + +// src/modules/VersionModule.sol + +/* ==== CMTAT === */ + +abstract contract VersionModule is IERC3643Base { + /* ============ State Variables ============ */ + /** + * @dev + * Get the current version of the smart contract + */ + string private constant VERSION = "3.0.0"; + /* ============ Events ============ */ + /*////////////////////////////////////////////////////////////// + PUBLIC/EXTERNAL FUNCTIONS + //////////////////////////////////////////////////////////////*/ + /** + * @inheritdoc IERC3643Base + */ + function version() public view virtual override(IERC3643Base) returns (string memory version_) { + return VERSION; + } +} + +// lib/openzeppelin-contracts/contracts/utils/math/Math.sol + +// OpenZeppelin Contracts (last updated v5.3.0) (utils/math/Math.sol) + +/** + * @dev Standard math utilities missing in the Solidity language. + */ +library Math { + enum Rounding { + Floor, // Toward negative infinity + Ceil, // Toward positive infinity + Trunc, // Toward zero + Expand // Away from zero + } + + /** + * @dev Return the 512-bit addition of two uint256. + * + * The result is stored in two 256 variables such that sum = high * 2²⁵⁶ + low. + */ + function add512(uint256 a, uint256 b) internal pure returns (uint256 high, uint256 low) { + assembly ("memory-safe") { + low := add(a, b) + high := lt(low, a) + } + } + + /** + * @dev Return the 512-bit multiplication of two uint256. + * + * The result is stored in two 256 variables such that product = high * 2²⁵⁶ + low. + */ + function mul512(uint256 a, uint256 b) internal pure returns (uint256 high, uint256 low) { + // 512-bit multiply [high low] = x * y. Compute the product mod 2²⁵⁶ and mod 2²⁵⁶ - 1, then use + // the Chinese Remainder Theorem to reconstruct the 512 bit result. The result is stored in two 256 + // variables such that product = high * 2²⁵⁶ + low. + assembly ("memory-safe") { + let mm := mulmod(a, b, not(0)) + low := mul(a, b) + high := sub(sub(mm, low), lt(mm, low)) + } + } + + /** + * @dev Returns the addition of two unsigned integers, with a success flag (no overflow). + */ + function tryAdd(uint256 a, uint256 b) internal pure returns (bool success, uint256 result) { + unchecked { + uint256 c = a + b; + success = c >= a; + result = c * SafeCast.toUint(success); + } + } + + /** + * @dev Returns the subtraction of two unsigned integers, with a success flag (no overflow). + */ + function trySub(uint256 a, uint256 b) internal pure returns (bool success, uint256 result) { + unchecked { + uint256 c = a - b; + success = c <= a; + result = c * SafeCast.toUint(success); + } + } + + /** + * @dev Returns the multiplication of two unsigned integers, with a success flag (no overflow). + */ + function tryMul(uint256 a, uint256 b) internal pure returns (bool success, uint256 result) { + unchecked { + uint256 c = a * b; + assembly ("memory-safe") { + // Only true when the multiplication doesn't overflow + // (c / a == b) || (a == 0) + success := or(eq(div(c, a), b), iszero(a)) + } + // equivalent to: success ? c : 0 + result = c * SafeCast.toUint(success); + } + } + + /** + * @dev Returns the division of two unsigned integers, with a success flag (no division by zero). + */ + function tryDiv(uint256 a, uint256 b) internal pure returns (bool success, uint256 result) { + unchecked { + success = b > 0; + assembly ("memory-safe") { + // The `DIV` opcode returns zero when the denominator is 0. + result := div(a, b) + } + } + } + + /** + * @dev Returns the remainder of dividing two unsigned integers, with a success flag (no division by zero). + */ + function tryMod(uint256 a, uint256 b) internal pure returns (bool success, uint256 result) { + unchecked { + success = b > 0; + assembly ("memory-safe") { + // The `MOD` opcode returns zero when the denominator is 0. + result := mod(a, b) + } + } + } + + /** + * @dev Unsigned saturating addition, bounds to `2²⁵⁶ - 1` instead of overflowing. + */ + function saturatingAdd(uint256 a, uint256 b) internal pure returns (uint256) { + (bool success, uint256 result) = tryAdd(a, b); + return ternary(success, result, type(uint256).max); + } + + /** + * @dev Unsigned saturating subtraction, bounds to zero instead of overflowing. + */ + function saturatingSub(uint256 a, uint256 b) internal pure returns (uint256) { + (, uint256 result) = trySub(a, b); + return result; + } + + /** + * @dev Unsigned saturating multiplication, bounds to `2²⁵⁶ - 1` instead of overflowing. + */ + function saturatingMul(uint256 a, uint256 b) internal pure returns (uint256) { + (bool success, uint256 result) = tryMul(a, b); + return ternary(success, result, type(uint256).max); + } + + /** + * @dev Branchless ternary evaluation for `a ? b : c`. Gas costs are constant. + * + * IMPORTANT: This function may reduce bytecode size and consume less gas when used standalone. + * However, the compiler may optimize Solidity ternary operations (i.e. `a ? b : c`) to only compute + * one branch when needed, making this function more expensive. + */ + function ternary(bool condition, uint256 a, uint256 b) internal pure returns (uint256) { + unchecked { + // branchless ternary works because: + // b ^ (a ^ b) == a + // b ^ 0 == b + return b ^ ((a ^ b) * SafeCast.toUint(condition)); + } + } + + /** + * @dev Returns the largest of two numbers. + */ + function max(uint256 a, uint256 b) internal pure returns (uint256) { + return ternary(a > b, a, b); + } + + /** + * @dev Returns the smallest of two numbers. + */ + function min(uint256 a, uint256 b) internal pure returns (uint256) { + return ternary(a < b, a, b); + } + + /** + * @dev Returns the average of two numbers. The result is rounded towards + * zero. + */ + function average(uint256 a, uint256 b) internal pure returns (uint256) { + // (a + b) / 2 can overflow. + return (a & b) + (a ^ b) / 2; + } + + /** + * @dev Returns the ceiling of the division of two numbers. + * + * This differs from standard division with `/` in that it rounds towards infinity instead + * of rounding towards zero. + */ + function ceilDiv(uint256 a, uint256 b) internal pure returns (uint256) { + if (b == 0) { + // Guarantee the same behavior as in a regular Solidity division. + Panic.panic(Panic.DIVISION_BY_ZERO); + } + + // The following calculation ensures accurate ceiling division without overflow. + // Since a is non-zero, (a - 1) / b will not overflow. + // The largest possible result occurs when (a - 1) / b is type(uint256).max, + // but the largest value we can obtain is type(uint256).max - 1, which happens + // when a = type(uint256).max and b = 1. + unchecked { + return SafeCast.toUint(a > 0) * ((a - 1) / b + 1); + } + } + + /** + * @dev Calculates floor(x * y / denominator) with full precision. Throws if result overflows a uint256 or + * denominator == 0. + * + * Original credit to Remco Bloemen under MIT license (https://xn--2-umb.com/21/muldiv) with further edits by + * Uniswap Labs also under MIT license. + */ + function mulDiv(uint256 x, uint256 y, uint256 denominator) internal pure returns (uint256 result) { + unchecked { + (uint256 high, uint256 low) = mul512(x, y); + + // Handle non-overflow cases, 256 by 256 division. + if (high == 0) { + // Solidity will revert if denominator == 0, unlike the div opcode on its own. + // The surrounding unchecked block does not change this fact. + // See https://docs.soliditylang.org/en/latest/control-structures.html#checked-or-unchecked-arithmetic. + return low / denominator; + } + + // Make sure the result is less than 2²⁵⁶. Also prevents denominator == 0. + if (denominator <= high) { + Panic.panic(ternary(denominator == 0, Panic.DIVISION_BY_ZERO, Panic.UNDER_OVERFLOW)); + } + + /////////////////////////////////////////////// + // 512 by 256 division. + /////////////////////////////////////////////// + + // Make division exact by subtracting the remainder from [high low]. + uint256 remainder; + assembly ("memory-safe") { + // Compute remainder using mulmod. + remainder := mulmod(x, y, denominator) + + // Subtract 256 bit number from 512 bit number. + high := sub(high, gt(remainder, low)) + low := sub(low, remainder) + } + + // Factor powers of two out of denominator and compute largest power of two divisor of denominator. + // Always >= 1. See https://cs.stackexchange.com/q/138556/92363. + + uint256 twos = denominator & (0 - denominator); + assembly ("memory-safe") { + // Divide denominator by twos. + denominator := div(denominator, twos) + + // Divide [high low] by twos. + low := div(low, twos) + + // Flip twos such that it is 2²⁵⁶ / twos. If twos is zero, then it becomes one. + twos := add(div(sub(0, twos), twos), 1) + } + + // Shift in bits from high into low. + low |= high * twos; + + // Invert denominator mod 2²⁵⁶. Now that denominator is an odd number, it has an inverse modulo 2²⁵⁶ such + // that denominator * inv ≡ 1 mod 2²⁵⁶. Compute the inverse by starting with a seed that is correct for + // four bits. That is, denominator * inv ≡ 1 mod 2⁴. + uint256 inverse = (3 * denominator) ^ 2; + + // Use the Newton-Raphson iteration to improve the precision. Thanks to Hensel's lifting lemma, this also + // works in modular arithmetic, doubling the correct bits in each step. + inverse *= 2 - denominator * inverse; // inverse mod 2⁸ + inverse *= 2 - denominator * inverse; // inverse mod 2¹⁶ + inverse *= 2 - denominator * inverse; // inverse mod 2³² + inverse *= 2 - denominator * inverse; // inverse mod 2⁶⁴ + inverse *= 2 - denominator * inverse; // inverse mod 2¹²⁸ + inverse *= 2 - denominator * inverse; // inverse mod 2²⁵⁶ + + // Because the division is now exact we can divide by multiplying with the modular inverse of denominator. + // This will give us the correct result modulo 2²⁵⁶. Since the preconditions guarantee that the outcome is + // less than 2²⁵⁶, this is the final result. We don't need to compute the high bits of the result and high + // is no longer required. + result = low * inverse; + return result; + } + } + + /** + * @dev Calculates x * y / denominator with full precision, following the selected rounding direction. + */ + function mulDiv(uint256 x, uint256 y, uint256 denominator, Rounding rounding) internal pure returns (uint256) { + return mulDiv(x, y, denominator) + SafeCast.toUint(unsignedRoundsUp(rounding) && mulmod(x, y, denominator) > 0); + } + + /** + * @dev Calculates floor(x * y >> n) with full precision. Throws if result overflows a uint256. + */ + function mulShr(uint256 x, uint256 y, uint8 n) internal pure returns (uint256 result) { + unchecked { + (uint256 high, uint256 low) = mul512(x, y); + if (high >= 1 << n) { + Panic.panic(Panic.UNDER_OVERFLOW); + } + return (high << (256 - n)) | (low >> n); + } + } + + /** + * @dev Calculates x * y >> n with full precision, following the selected rounding direction. + */ + function mulShr(uint256 x, uint256 y, uint8 n, Rounding rounding) internal pure returns (uint256) { + return mulShr(x, y, n) + SafeCast.toUint(unsignedRoundsUp(rounding) && mulmod(x, y, 1 << n) > 0); + } + + /** + * @dev Calculate the modular multiplicative inverse of a number in Z/nZ. + * + * If n is a prime, then Z/nZ is a field. In that case all elements are inversible, except 0. + * If n is not a prime, then Z/nZ is not a field, and some elements might not be inversible. + * + * If the input value is not inversible, 0 is returned. + * + * NOTE: If you know for sure that n is (big) a prime, it may be cheaper to use Fermat's little theorem and get the + * inverse using `Math.modExp(a, n - 2, n)`. See {invModPrime}. + */ + function invMod(uint256 a, uint256 n) internal pure returns (uint256) { + unchecked { + if (n == 0) return 0; + + // The inverse modulo is calculated using the Extended Euclidean Algorithm (iterative version) + // Used to compute integers x and y such that: ax + ny = gcd(a, n). + // When the gcd is 1, then the inverse of a modulo n exists and it's x. + // ax + ny = 1 + // ax = 1 + (-y)n + // ax ≡ 1 (mod n) # x is the inverse of a modulo n + + // If the remainder is 0 the gcd is n right away. + uint256 remainder = a % n; + uint256 gcd = n; + + // Therefore the initial coefficients are: + // ax + ny = gcd(a, n) = n + // 0a + 1n = n + int256 x = 0; + int256 y = 1; + + while (remainder != 0) { + uint256 quotient = gcd / remainder; + + (gcd, remainder) = ( + // The old remainder is the next gcd to try. + remainder, + // Compute the next remainder. + // Can't overflow given that (a % gcd) * (gcd // (a % gcd)) <= gcd + // where gcd is at most n (capped to type(uint256).max) + gcd - remainder * quotient + ); + + (x, y) = ( + // Increment the coefficient of a. + y, + // Decrement the coefficient of n. + // Can overflow, but the result is casted to uint256 so that the + // next value of y is "wrapped around" to a value between 0 and n - 1. + x - y * int256(quotient) + ); + } + + if (gcd != 1) return 0; // No inverse exists. + return ternary(x < 0, n - uint256(-x), uint256(x)); // Wrap the result if it's negative. + } + } + + /** + * @dev Variant of {invMod}. More efficient, but only works if `p` is known to be a prime greater than `2`. + * + * From https://en.wikipedia.org/wiki/Fermat%27s_little_theorem[Fermat's little theorem], we know that if p is + * prime, then `a**(p-1) ≡ 1 mod p`. As a consequence, we have `a * a**(p-2) ≡ 1 mod p`, which means that + * `a**(p-2)` is the modular multiplicative inverse of a in Fp. + * + * NOTE: this function does NOT check that `p` is a prime greater than `2`. + */ + function invModPrime(uint256 a, uint256 p) internal view returns (uint256) { + unchecked { + return Math.modExp(a, p - 2, p); + } + } + + /** + * @dev Returns the modular exponentiation of the specified base, exponent and modulus (b ** e % m) + * + * Requirements: + * - modulus can't be zero + * - underlying staticcall to precompile must succeed + * + * IMPORTANT: The result is only valid if the underlying call succeeds. When using this function, make + * sure the chain you're using it on supports the precompiled contract for modular exponentiation + * at address 0x05 as specified in https://eips.ethereum.org/EIPS/eip-198[EIP-198]. Otherwise, + * the underlying function will succeed given the lack of a revert, but the result may be incorrectly + * interpreted as 0. + */ + function modExp(uint256 b, uint256 e, uint256 m) internal view returns (uint256) { + (bool success, uint256 result) = tryModExp(b, e, m); + if (!success) { + Panic.panic(Panic.DIVISION_BY_ZERO); + } + return result; + } + + /** + * @dev Returns the modular exponentiation of the specified base, exponent and modulus (b ** e % m). + * It includes a success flag indicating if the operation succeeded. Operation will be marked as failed if trying + * to operate modulo 0 or if the underlying precompile reverted. + * + * IMPORTANT: The result is only valid if the success flag is true. When using this function, make sure the chain + * you're using it on supports the precompiled contract for modular exponentiation at address 0x05 as specified in + * https://eips.ethereum.org/EIPS/eip-198[EIP-198]. Otherwise, the underlying function will succeed given the lack + * of a revert, but the result may be incorrectly interpreted as 0. + */ + function tryModExp(uint256 b, uint256 e, uint256 m) internal view returns (bool success, uint256 result) { + if (m == 0) return (false, 0); + assembly ("memory-safe") { + let ptr := mload(0x40) + // | Offset | Content | Content (Hex) | + // |-----------|------------|--------------------------------------------------------------------| + // | 0x00:0x1f | size of b | 0x0000000000000000000000000000000000000000000000000000000000000020 | + // | 0x20:0x3f | size of e | 0x0000000000000000000000000000000000000000000000000000000000000020 | + // | 0x40:0x5f | size of m | 0x0000000000000000000000000000000000000000000000000000000000000020 | + // | 0x60:0x7f | value of b | 0x<.............................................................b> | + // | 0x80:0x9f | value of e | 0x<.............................................................e> | + // | 0xa0:0xbf | value of m | 0x<.............................................................m> | + mstore(ptr, 0x20) + mstore(add(ptr, 0x20), 0x20) + mstore(add(ptr, 0x40), 0x20) + mstore(add(ptr, 0x60), b) + mstore(add(ptr, 0x80), e) + mstore(add(ptr, 0xa0), m) + + // Given the result < m, it's guaranteed to fit in 32 bytes, + // so we can use the memory scratch space located at offset 0. + success := staticcall(gas(), 0x05, ptr, 0xc0, 0x00, 0x20) + result := mload(0x00) + } + } + + /** + * @dev Variant of {modExp} that supports inputs of arbitrary length. + */ + function modExp(bytes memory b, bytes memory e, bytes memory m) internal view returns (bytes memory) { + (bool success, bytes memory result) = tryModExp(b, e, m); + if (!success) { + Panic.panic(Panic.DIVISION_BY_ZERO); + } + return result; + } + + /** + * @dev Variant of {tryModExp} that supports inputs of arbitrary length. + */ + function tryModExp( + bytes memory b, + bytes memory e, + bytes memory m + ) internal view returns (bool success, bytes memory result) { + if (_zeroBytes(m)) return (false, new bytes(0)); + + uint256 mLen = m.length; + + // Encode call args in result and move the free memory pointer + result = abi.encodePacked(b.length, e.length, mLen, b, e, m); + + assembly ("memory-safe") { + let dataPtr := add(result, 0x20) + // Write result on top of args to avoid allocating extra memory. + success := staticcall(gas(), 0x05, dataPtr, mload(result), dataPtr, mLen) + // Overwrite the length. + // result.length > returndatasize() is guaranteed because returndatasize() == m.length + mstore(result, mLen) + // Set the memory pointer after the returned data. + mstore(0x40, add(dataPtr, mLen)) + } + } + + /** + * @dev Returns whether the provided byte array is zero. + */ + function _zeroBytes(bytes memory byteArray) private pure returns (bool) { + for (uint256 i = 0; i < byteArray.length; ++i) { + if (byteArray[i] != 0) { + return false; + } + } + return true; + } + + /** + * @dev Returns the square root of a number. If the number is not a perfect square, the value is rounded + * towards zero. + * + * This method is based on Newton's method for computing square roots; the algorithm is restricted to only + * using integer operations. + */ + function sqrt(uint256 a) internal pure returns (uint256) { + unchecked { + // Take care of easy edge cases when a == 0 or a == 1 + if (a <= 1) { + return a; + } + + // In this function, we use Newton's method to get a root of `f(x) := x² - a`. It involves building a + // sequence x_n that converges toward sqrt(a). For each iteration x_n, we also define the error between + // the current value as `ε_n = | x_n - sqrt(a) |`. + // + // For our first estimation, we consider `e` the smallest power of 2 which is bigger than the square root + // of the target. (i.e. `2**(e-1) ≤ sqrt(a) < 2**e`). We know that `e ≤ 128` because `(2¹²⁸)² = 2²⁵⁶` is + // bigger than any uint256. + // + // By noticing that + // `2**(e-1) ≤ sqrt(a) < 2**e → (2**(e-1))² ≤ a < (2**e)² → 2**(2*e-2) ≤ a < 2**(2*e)` + // we can deduce that `e - 1` is `log2(a) / 2`. We can thus compute `x_n = 2**(e-1)` using a method similar + // to the msb function. + uint256 aa = a; + uint256 xn = 1; + + if (aa >= (1 << 128)) { + aa >>= 128; + xn <<= 64; + } + if (aa >= (1 << 64)) { + aa >>= 64; + xn <<= 32; + } + if (aa >= (1 << 32)) { + aa >>= 32; + xn <<= 16; + } + if (aa >= (1 << 16)) { + aa >>= 16; + xn <<= 8; + } + if (aa >= (1 << 8)) { + aa >>= 8; + xn <<= 4; + } + if (aa >= (1 << 4)) { + aa >>= 4; + xn <<= 2; + } + if (aa >= (1 << 2)) { + xn <<= 1; + } + + // We now have x_n such that `x_n = 2**(e-1) ≤ sqrt(a) < 2**e = 2 * x_n`. This implies ε_n ≤ 2**(e-1). + // + // We can refine our estimation by noticing that the middle of that interval minimizes the error. + // If we move x_n to equal 2**(e-1) + 2**(e-2), then we reduce the error to ε_n ≤ 2**(e-2). + // This is going to be our x_0 (and ε_0) + xn = (3 * xn) >> 1; // ε_0 := | x_0 - sqrt(a) | ≤ 2**(e-2) + + // From here, Newton's method give us: + // x_{n+1} = (x_n + a / x_n) / 2 + // + // One should note that: + // x_{n+1}² - a = ((x_n + a / x_n) / 2)² - a + // = ((x_n² + a) / (2 * x_n))² - a + // = (x_n⁴ + 2 * a * x_n² + a²) / (4 * x_n²) - a + // = (x_n⁴ + 2 * a * x_n² + a² - 4 * a * x_n²) / (4 * x_n²) + // = (x_n⁴ - 2 * a * x_n² + a²) / (4 * x_n²) + // = (x_n² - a)² / (2 * x_n)² + // = ((x_n² - a) / (2 * x_n))² + // ≥ 0 + // Which proves that for all n ≥ 1, sqrt(a) ≤ x_n + // + // This gives us the proof of quadratic convergence of the sequence: + // ε_{n+1} = | x_{n+1} - sqrt(a) | + // = | (x_n + a / x_n) / 2 - sqrt(a) | + // = | (x_n² + a - 2*x_n*sqrt(a)) / (2 * x_n) | + // = | (x_n - sqrt(a))² / (2 * x_n) | + // = | ε_n² / (2 * x_n) | + // = ε_n² / | (2 * x_n) | + // + // For the first iteration, we have a special case where x_0 is known: + // ε_1 = ε_0² / | (2 * x_0) | + // ≤ (2**(e-2))² / (2 * (2**(e-1) + 2**(e-2))) + // ≤ 2**(2*e-4) / (3 * 2**(e-1)) + // ≤ 2**(e-3) / 3 + // ≤ 2**(e-3-log2(3)) + // ≤ 2**(e-4.5) + // + // For the following iterations, we use the fact that, 2**(e-1) ≤ sqrt(a) ≤ x_n: + // ε_{n+1} = ε_n² / | (2 * x_n) | + // ≤ (2**(e-k))² / (2 * 2**(e-1)) + // ≤ 2**(2*e-2*k) / 2**e + // ≤ 2**(e-2*k) + xn = (xn + a / xn) >> 1; // ε_1 := | x_1 - sqrt(a) | ≤ 2**(e-4.5) -- special case, see above + xn = (xn + a / xn) >> 1; // ε_2 := | x_2 - sqrt(a) | ≤ 2**(e-9) -- general case with k = 4.5 + xn = (xn + a / xn) >> 1; // ε_3 := | x_3 - sqrt(a) | ≤ 2**(e-18) -- general case with k = 9 + xn = (xn + a / xn) >> 1; // ε_4 := | x_4 - sqrt(a) | ≤ 2**(e-36) -- general case with k = 18 + xn = (xn + a / xn) >> 1; // ε_5 := | x_5 - sqrt(a) | ≤ 2**(e-72) -- general case with k = 36 + xn = (xn + a / xn) >> 1; // ε_6 := | x_6 - sqrt(a) | ≤ 2**(e-144) -- general case with k = 72 + + // Because e ≤ 128 (as discussed during the first estimation phase), we know have reached a precision + // ε_6 ≤ 2**(e-144) < 1. Given we're operating on integers, then we can ensure that xn is now either + // sqrt(a) or sqrt(a) + 1. + return xn - SafeCast.toUint(xn > a / xn); + } + } + + /** + * @dev Calculates sqrt(a), following the selected rounding direction. + */ + function sqrt(uint256 a, Rounding rounding) internal pure returns (uint256) { + unchecked { + uint256 result = sqrt(a); + return result + SafeCast.toUint(unsignedRoundsUp(rounding) && result * result < a); + } + } + + /** + * @dev Return the log in base 2 of a positive value rounded towards zero. + * Returns 0 if given 0. + */ + function log2(uint256 x) internal pure returns (uint256 r) { + // If value has upper 128 bits set, log2 result is at least 128 + r = SafeCast.toUint(x > 0xffffffffffffffffffffffffffffffff) << 7; + // If upper 64 bits of 128-bit half set, add 64 to result + r |= SafeCast.toUint((x >> r) > 0xffffffffffffffff) << 6; + // If upper 32 bits of 64-bit half set, add 32 to result + r |= SafeCast.toUint((x >> r) > 0xffffffff) << 5; + // If upper 16 bits of 32-bit half set, add 16 to result + r |= SafeCast.toUint((x >> r) > 0xffff) << 4; + // If upper 8 bits of 16-bit half set, add 8 to result + r |= SafeCast.toUint((x >> r) > 0xff) << 3; + // If upper 4 bits of 8-bit half set, add 4 to result + r |= SafeCast.toUint((x >> r) > 0xf) << 2; + + // Shifts value right by the current result and use it as an index into this lookup table: + // + // | x (4 bits) | index | table[index] = MSB position | + // |------------|---------|-----------------------------| + // | 0000 | 0 | table[0] = 0 | + // | 0001 | 1 | table[1] = 0 | + // | 0010 | 2 | table[2] = 1 | + // | 0011 | 3 | table[3] = 1 | + // | 0100 | 4 | table[4] = 2 | + // | 0101 | 5 | table[5] = 2 | + // | 0110 | 6 | table[6] = 2 | + // | 0111 | 7 | table[7] = 2 | + // | 1000 | 8 | table[8] = 3 | + // | 1001 | 9 | table[9] = 3 | + // | 1010 | 10 | table[10] = 3 | + // | 1011 | 11 | table[11] = 3 | + // | 1100 | 12 | table[12] = 3 | + // | 1101 | 13 | table[13] = 3 | + // | 1110 | 14 | table[14] = 3 | + // | 1111 | 15 | table[15] = 3 | + // + // The lookup table is represented as a 32-byte value with the MSB positions for 0-15 in the last 16 bytes. + assembly ("memory-safe") { + r := or(r, byte(shr(r, x), 0x0000010102020202030303030303030300000000000000000000000000000000)) + } + } + + /** + * @dev Return the log in base 2, following the selected rounding direction, of a positive value. + * Returns 0 if given 0. + */ + function log2(uint256 value, Rounding rounding) internal pure returns (uint256) { + unchecked { + uint256 result = log2(value); + return result + SafeCast.toUint(unsignedRoundsUp(rounding) && 1 << result < value); + } + } + + /** + * @dev Return the log in base 10 of a positive value rounded towards zero. + * Returns 0 if given 0. + */ + function log10(uint256 value) internal pure returns (uint256) { + uint256 result = 0; + unchecked { + if (value >= 10 ** 64) { + value /= 10 ** 64; + result += 64; + } + if (value >= 10 ** 32) { + value /= 10 ** 32; + result += 32; + } + if (value >= 10 ** 16) { + value /= 10 ** 16; + result += 16; + } + if (value >= 10 ** 8) { + value /= 10 ** 8; + result += 8; + } + if (value >= 10 ** 4) { + value /= 10 ** 4; + result += 4; + } + if (value >= 10 ** 2) { + value /= 10 ** 2; + result += 2; + } + if (value >= 10 ** 1) { + result += 1; + } + } + return result; + } + + /** + * @dev Return the log in base 10, following the selected rounding direction, of a positive value. + * Returns 0 if given 0. + */ + function log10(uint256 value, Rounding rounding) internal pure returns (uint256) { + unchecked { + uint256 result = log10(value); + return result + SafeCast.toUint(unsignedRoundsUp(rounding) && 10 ** result < value); + } + } + + /** + * @dev Return the log in base 256 of a positive value rounded towards zero. + * Returns 0 if given 0. + * + * Adding one to the result gives the number of pairs of hex symbols needed to represent `value` as a hex string. + */ + function log256(uint256 x) internal pure returns (uint256 r) { + // If value has upper 128 bits set, log2 result is at least 128 + r = SafeCast.toUint(x > 0xffffffffffffffffffffffffffffffff) << 7; + // If upper 64 bits of 128-bit half set, add 64 to result + r |= SafeCast.toUint((x >> r) > 0xffffffffffffffff) << 6; + // If upper 32 bits of 64-bit half set, add 32 to result + r |= SafeCast.toUint((x >> r) > 0xffffffff) << 5; + // If upper 16 bits of 32-bit half set, add 16 to result + r |= SafeCast.toUint((x >> r) > 0xffff) << 4; + // Add 1 if upper 8 bits of 16-bit half set, and divide accumulated result by 8 + return (r >> 3) | SafeCast.toUint((x >> r) > 0xff); + } + + /** + * @dev Return the log in base 256, following the selected rounding direction, of a positive value. + * Returns 0 if given 0. + */ + function log256(uint256 value, Rounding rounding) internal pure returns (uint256) { + unchecked { + uint256 result = log256(value); + return result + SafeCast.toUint(unsignedRoundsUp(rounding) && 1 << (result << 3) < value); + } + } + + /** + * @dev Returns whether a provided rounding mode is considered rounding up for unsigned integers. + */ + function unsignedRoundsUp(Rounding rounding) internal pure returns (bool) { + return uint8(rounding) % 2 == 1; + } +} + +// src/modules/ERC2771ModuleStandalone.sol + +/* ==== OpenZeppelin === */ + +/** + * @dev Meta transaction (gasless) module. + */ +abstract contract ERC2771ModuleStandalone is ERC2771Context { + constructor(address trustedForwarder) ERC2771Context(trustedForwarder) { + // Nothing to do + } +} + +// lib/CMTAT/contracts/interfaces/engine/IRuleEngine.sol + +/* +* @title Minimum interface to define a RuleEngine +*/ +interface IRuleEngine is IERC1404Extend, IERC7551Compliance, IERC3643IComplianceContract { + /** + * @notice + * Function called whenever tokens are transferred from one wallet to another + * @dev + * Must revert if the transfer is invalid + * Same name as ERC-3643 but with one supplementary argument `spender` + * This function can be used to update state variables of the RuleEngine contract + * This function can be called ONLY by the token contract bound to the RuleEngine + * @param spender spender address (sender) + * @param from token holder address + * @param to receiver address + * @param value value of tokens involved in the transfer + */ + function transferred(address spender, address from, address to, uint256 value) external; +} + +// lib/openzeppelin-contracts/contracts/access/AccessControl.sol + +// OpenZeppelin Contracts (last updated v5.4.0) (access/AccessControl.sol) + +/** + * @dev Contract module that allows children to implement role-based access + * control mechanisms. This is a lightweight version that doesn't allow enumerating role + * members except through off-chain means by accessing the contract event logs. Some + * applications may benefit from on-chain enumerability, for those cases see + * {AccessControlEnumerable}. + * + * Roles are referred to by their `bytes32` identifier. These should be exposed + * in the external API and be unique. The best way to achieve this is by + * using `public constant` hash digests: + * + * ```solidity + * bytes32 public constant MY_ROLE = keccak256("MY_ROLE"); + * ``` + * + * Roles can be used to represent a set of permissions. To restrict access to a + * function call, use {hasRole}: + * + * ```solidity + * function foo() public { + * require(hasRole(MY_ROLE, msg.sender)); + * ... + * } + * ``` + * + * Roles can be granted and revoked dynamically via the {grantRole} and + * {revokeRole} functions. Each role has an associated admin role, and only + * accounts that have a role's admin role can call {grantRole} and {revokeRole}. + * + * By default, the admin role for all roles is `DEFAULT_ADMIN_ROLE`, which means + * that only accounts with this role will be able to grant or revoke other + * roles. More complex role relationships can be created by using + * {_setRoleAdmin}. + * + * WARNING: The `DEFAULT_ADMIN_ROLE` is also its own admin: it has permission to + * grant and revoke this role. Extra precautions should be taken to secure + * accounts that have been granted it. We recommend using {AccessControlDefaultAdminRules} + * to enforce additional security measures for this role. + */ +abstract contract AccessControl is Context, IAccessControl, ERC165 { + struct RoleData { + mapping(address account => bool) hasRole; + bytes32 adminRole; + } + + mapping(bytes32 role => RoleData) private _roles; + + bytes32 public constant DEFAULT_ADMIN_ROLE = 0x00; + + /** + * @dev Modifier that checks that an account has a specific role. Reverts + * with an {AccessControlUnauthorizedAccount} error including the required role. + */ + modifier onlyRole(bytes32 role) { + _checkRole(role); + _; + } + + /// @inheritdoc IERC165 + function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) { + return interfaceId == type(IAccessControl).interfaceId || super.supportsInterface(interfaceId); + } + + /** + * @dev Returns `true` if `account` has been granted `role`. + */ + function hasRole(bytes32 role, address account) public view virtual returns (bool) { + return _roles[role].hasRole[account]; + } + + /** + * @dev Reverts with an {AccessControlUnauthorizedAccount} error if `_msgSender()` + * is missing `role`. Overriding this function changes the behavior of the {onlyRole} modifier. + */ + function _checkRole(bytes32 role) internal view virtual { + _checkRole(role, _msgSender()); + } + + /** + * @dev Reverts with an {AccessControlUnauthorizedAccount} error if `account` + * is missing `role`. + */ + function _checkRole(bytes32 role, address account) internal view virtual { + if (!hasRole(role, account)) { + revert AccessControlUnauthorizedAccount(account, role); + } + } + + /** + * @dev Returns the admin role that controls `role`. See {grantRole} and + * {revokeRole}. + * + * To change a role's admin, use {_setRoleAdmin}. + */ + function getRoleAdmin(bytes32 role) public view virtual returns (bytes32) { + return _roles[role].adminRole; + } + + /** + * @dev Grants `role` to `account`. + * + * If `account` had not been already granted `role`, emits a {RoleGranted} + * event. + * + * Requirements: + * + * - the caller must have ``role``'s admin role. + * + * May emit a {RoleGranted} event. + */ + function grantRole(bytes32 role, address account) public virtual onlyRole(getRoleAdmin(role)) { + _grantRole(role, account); + } + + /** + * @dev Revokes `role` from `account`. + * + * If `account` had been granted `role`, emits a {RoleRevoked} event. + * + * Requirements: + * + * - the caller must have ``role``'s admin role. + * + * May emit a {RoleRevoked} event. + */ + function revokeRole(bytes32 role, address account) public virtual onlyRole(getRoleAdmin(role)) { + _revokeRole(role, account); + } + + /** + * @dev Revokes `role` from the calling account. + * + * Roles are often managed via {grantRole} and {revokeRole}: this function's + * purpose is to provide a mechanism for accounts to lose their privileges + * if they are compromised (such as when a trusted device is misplaced). + * + * If the calling account had been revoked `role`, emits a {RoleRevoked} + * event. + * + * Requirements: + * + * - the caller must be `callerConfirmation`. + * + * May emit a {RoleRevoked} event. + */ + function renounceRole(bytes32 role, address callerConfirmation) public virtual { + if (callerConfirmation != _msgSender()) { + revert AccessControlBadConfirmation(); + } + + _revokeRole(role, callerConfirmation); + } + + /** + * @dev Sets `adminRole` as ``role``'s admin role. + * + * Emits a {RoleAdminChanged} event. + */ + function _setRoleAdmin(bytes32 role, bytes32 adminRole) internal virtual { + bytes32 previousAdminRole = getRoleAdmin(role); + _roles[role].adminRole = adminRole; + emit RoleAdminChanged(role, previousAdminRole, adminRole); + } + + /** + * @dev Attempts to grant `role` to `account` and returns a boolean indicating if `role` was granted. + * + * Internal function without access restriction. + * + * May emit a {RoleGranted} event. + */ + function _grantRole(bytes32 role, address account) internal virtual returns (bool) { + if (!hasRole(role, account)) { + _roles[role].hasRole[account] = true; + emit RoleGranted(role, account, _msgSender()); + return true; + } else { + return false; + } + } + + /** + * @dev Attempts to revoke `role` from `account` and returns a boolean indicating if `role` was revoked. + * + * Internal function without access restriction. + * + * May emit a {RoleRevoked} event. + */ + function _revokeRole(bytes32 role, address account) internal virtual returns (bool) { + if (hasRole(role, account)) { + _roles[role].hasRole[account] = false; + emit RoleRevoked(role, account, _msgSender()); + return true; + } else { + return false; + } + } +} + +// src/interfaces/IRule.sol + +/* ==== CMTAT === */ + +/* ==== Interfaces === */ + +interface IRule is IRuleEngine { + /** + * @dev Returns true if the restriction code exists, and false otherwise. + */ + function canReturnTransferRestrictionCode( + uint8 restrictionCode + ) external view returns (bool); +} + +// src/interfaces/IRulesManagementModule.sol + +/* ==== Interfaces === */ + +interface IRulesManagementModule { + /** + * @notice Defines the rules for the rule engine. + * @dev Sets the list of rule contract addresses for s. + * Any previously set rules will be completely overwritten by the new list. + * Rules should be deployed contracts that implement the expected interface. + * @param rules_ The array of addresses representing the new rules to be set. + * @dev Revert if one rule is a zero address or if the rule is already present + * This function calls _clearRules if at least one rule is still configured + */ + function setRules(IRule[] calldata rules_) external; + + /** + * @notice Returns the total number of currently configured rules. + * @dev Equivalent to the length of the internal rules array. + * Complexity: O(1) + * @return numberOfrules The number of active rules. + */ + function rulesCount() external view returns (uint256 numberOfrules); + + /** + * @notice Retrieves the rule address at a specific index. + * @dev Reverts if `ruleId` is out of bounds. + * Complexity: O(1). + * Note that there are no guarantees on the ordering of values inside the array, + * and it may change when more values are added or removed. + * @param ruleId The index of the desired rule in the array. + * @return ruleAddress The address of the corresponding IRule contract, return the `zero address` is out of bounds. + */ + function rule(uint256 ruleId) external view returns (address ruleAddress); + + /** + * @notice Returns the full list of currently configured rules. + * @dev This is a view-only function that does not modify state. + * This operation will copy the entire storage to memory, which can be quite expensive. + * This is designed to mostly be used by view accessors that are queried without any gas fees. + * @return ruleAddresses An array of all active rule contract addresses. + */ + function rules() external view returns (address[] memory ruleAddresses); + + /** + * @notice Removes all configured rules. + * @dev After calling this function, no rules will remain set. + * Developers should keep in mind that this function has an unbounded cost + * and using it may render the function uncallable if the set grows to the point + * where clearing it consumes too much gas to fit in a block. + */ + function clearRules() external; + + /** + * @notice Adds a new rule to the current rule set. + * @dev Reverts if the rule address is zero or already exists in the set. + * Complexity: O(1). + * @param rule_ The IRule contract to add. + */ + function addRule( + IRule rule_ + ) external; + + /** + * @notice Removes a specific rule from the current rule set. + * @dev Reverts if the provided rule is not found or does not match the stored rule at its index. + * Complexity: O(1). + * @param rule_ The IRule contract to remove. + */ + function removeRule( + IRule rule_ + ) external; + + /** + * @notice Checks whether a specific rule is currently configured. + * @param rule_ The IRule contract to check for membership. + * @dev Complexity: O(1). + * @return exists True if the rule is present, false otherwise. + */ + function containsRule(IRule rule_) external returns (bool exists); +} + +// src/modules/library/RulesManagementModuleInvariantStorage.sol + +abstract contract RulesManagementModuleInvariantStorage { + /* ==== Errors === */ + error RuleEngine_RulesManagementModule_RuleAddressZeroNotAllowed(); + error RuleEngine_RulesManagementModule_RuleAlreadyExists(); + error RuleEngine_RulesManagementModule_RuleDoNotMatch(); + error RuleEngine_RulesManagementModule_ArrayIsEmpty(); + error RuleEngine_RulesManagementModule_OperationNotSuccessful(); + + /* ============ Events ============ */ + /** + * @notice Emitted when a new rule is added to the rule set. + * @param rule The address of the rule contract that was added. + */ + event AddRule(IRule indexed rule); + + /** + * @notice Emitted when a rule is removed from the rule set. + * @param rule The address of the rule contract that was removed. + */ + event RemoveRule(IRule indexed rule); + + /** + * @notice Emitted when all rules are cleared from the rule set. + */ + event ClearRules(); + + /* ==== Constant === */ + /// @notice Role to manage the ruleEngine + bytes32 public constant RULES_MANAGEMENT_ROLE = + keccak256("RULES_MANAGEMENT_ROLE"); +} + +// lib/openzeppelin-contracts/contracts/utils/Arrays.sol + +// OpenZeppelin Contracts (last updated v5.4.0) (utils/Arrays.sol) +// This file was procedurally generated from scripts/generate/templates/Arrays.js. + +/** + * @dev Collection of functions related to array types. + */ +library Arrays { + using SlotDerivation for bytes32; + using StorageSlot for bytes32; + + /** + * @dev Sort an array of uint256 (in memory) following the provided comparator function. + * + * This function does the sorting "in place", meaning that it overrides the input. The object is returned for + * convenience, but that returned value can be discarded safely if the caller has a memory pointer to the array. + * + * NOTE: this function's cost is `O(n · log(n))` in average and `O(n²)` in the worst case, with n the length of the + * array. Using it in view functions that are executed through `eth_call` is safe, but one should be very careful + * when executing this as part of a transaction. If the array being sorted is too large, the sort operation may + * consume more gas than is available in a block, leading to potential DoS. + * + * IMPORTANT: Consider memory side-effects when using custom comparator functions that access memory in an unsafe way. + */ + function sort( + uint256[] memory array, + function(uint256, uint256) pure returns (bool) comp + ) internal pure returns (uint256[] memory) { + _quickSort(_begin(array), _end(array), comp); + return array; + } + + /** + * @dev Variant of {sort} that sorts an array of uint256 in increasing order. + */ + function sort(uint256[] memory array) internal pure returns (uint256[] memory) { + sort(array, Comparators.lt); + return array; + } + + /** + * @dev Sort an array of address (in memory) following the provided comparator function. + * + * This function does the sorting "in place", meaning that it overrides the input. The object is returned for + * convenience, but that returned value can be discarded safely if the caller has a memory pointer to the array. + * + * NOTE: this function's cost is `O(n · log(n))` in average and `O(n²)` in the worst case, with n the length of the + * array. Using it in view functions that are executed through `eth_call` is safe, but one should be very careful + * when executing this as part of a transaction. If the array being sorted is too large, the sort operation may + * consume more gas than is available in a block, leading to potential DoS. + * + * IMPORTANT: Consider memory side-effects when using custom comparator functions that access memory in an unsafe way. + */ + function sort( + address[] memory array, + function(address, address) pure returns (bool) comp + ) internal pure returns (address[] memory) { + sort(_castToUint256Array(array), _castToUint256Comp(comp)); + return array; + } + + /** + * @dev Variant of {sort} that sorts an array of address in increasing order. + */ + function sort(address[] memory array) internal pure returns (address[] memory) { + sort(_castToUint256Array(array), Comparators.lt); + return array; + } + + /** + * @dev Sort an array of bytes32 (in memory) following the provided comparator function. + * + * This function does the sorting "in place", meaning that it overrides the input. The object is returned for + * convenience, but that returned value can be discarded safely if the caller has a memory pointer to the array. + * + * NOTE: this function's cost is `O(n · log(n))` in average and `O(n²)` in the worst case, with n the length of the + * array. Using it in view functions that are executed through `eth_call` is safe, but one should be very careful + * when executing this as part of a transaction. If the array being sorted is too large, the sort operation may + * consume more gas than is available in a block, leading to potential DoS. + * + * IMPORTANT: Consider memory side-effects when using custom comparator functions that access memory in an unsafe way. + */ + function sort( + bytes32[] memory array, + function(bytes32, bytes32) pure returns (bool) comp + ) internal pure returns (bytes32[] memory) { + sort(_castToUint256Array(array), _castToUint256Comp(comp)); + return array; + } + + /** + * @dev Variant of {sort} that sorts an array of bytes32 in increasing order. + */ + function sort(bytes32[] memory array) internal pure returns (bytes32[] memory) { + sort(_castToUint256Array(array), Comparators.lt); + return array; + } + + /** + * @dev Performs a quick sort of a segment of memory. The segment sorted starts at `begin` (inclusive), and stops + * at end (exclusive). Sorting follows the `comp` comparator. + * + * Invariant: `begin <= end`. This is the case when initially called by {sort} and is preserved in subcalls. + * + * IMPORTANT: Memory locations between `begin` and `end` are not validated/zeroed. This function should + * be used only if the limits are within a memory array. + */ + function _quickSort(uint256 begin, uint256 end, function(uint256, uint256) pure returns (bool) comp) private pure { + unchecked { + if (end - begin < 0x40) return; + + // Use first element as pivot + uint256 pivot = _mload(begin); + // Position where the pivot should be at the end of the loop + uint256 pos = begin; + + for (uint256 it = begin + 0x20; it < end; it += 0x20) { + if (comp(_mload(it), pivot)) { + // If the value stored at the iterator's position comes before the pivot, we increment the + // position of the pivot and move the value there. + pos += 0x20; + _swap(pos, it); + } + } + + _swap(begin, pos); // Swap pivot into place + _quickSort(begin, pos, comp); // Sort the left side of the pivot + _quickSort(pos + 0x20, end, comp); // Sort the right side of the pivot + } + } + + /** + * @dev Pointer to the memory location of the first element of `array`. + */ + function _begin(uint256[] memory array) private pure returns (uint256 ptr) { + assembly ("memory-safe") { + ptr := add(array, 0x20) + } + } + + /** + * @dev Pointer to the memory location of the first memory word (32bytes) after `array`. This is the memory word + * that comes just after the last element of the array. + */ + function _end(uint256[] memory array) private pure returns (uint256 ptr) { + unchecked { + return _begin(array) + array.length * 0x20; + } + } + + /** + * @dev Load memory word (as a uint256) at location `ptr`. + */ + function _mload(uint256 ptr) private pure returns (uint256 value) { + assembly { + value := mload(ptr) + } + } + + /** + * @dev Swaps the elements memory location `ptr1` and `ptr2`. + */ + function _swap(uint256 ptr1, uint256 ptr2) private pure { + assembly { + let value1 := mload(ptr1) + let value2 := mload(ptr2) + mstore(ptr1, value2) + mstore(ptr2, value1) + } + } + + /// @dev Helper: low level cast address memory array to uint256 memory array + function _castToUint256Array(address[] memory input) private pure returns (uint256[] memory output) { + assembly { + output := input + } + } + + /// @dev Helper: low level cast bytes32 memory array to uint256 memory array + function _castToUint256Array(bytes32[] memory input) private pure returns (uint256[] memory output) { + assembly { + output := input + } + } + + /// @dev Helper: low level cast address comp function to uint256 comp function + function _castToUint256Comp( + function(address, address) pure returns (bool) input + ) private pure returns (function(uint256, uint256) pure returns (bool) output) { + assembly { + output := input + } + } + + /// @dev Helper: low level cast bytes32 comp function to uint256 comp function + function _castToUint256Comp( + function(bytes32, bytes32) pure returns (bool) input + ) private pure returns (function(uint256, uint256) pure returns (bool) output) { + assembly { + output := input + } + } + + /** + * @dev Searches a sorted `array` and returns the first index that contains + * a value greater or equal to `element`. If no such index exists (i.e. all + * values in the array are strictly less than `element`), the array length is + * returned. Time complexity O(log n). + * + * NOTE: The `array` is expected to be sorted in ascending order, and to + * contain no repeated elements. + * + * IMPORTANT: Deprecated. This implementation behaves as {lowerBound} but lacks + * support for repeated elements in the array. The {lowerBound} function should + * be used instead. + */ + function findUpperBound(uint256[] storage array, uint256 element) internal view returns (uint256) { + uint256 low = 0; + uint256 high = array.length; + + if (high == 0) { + return 0; + } + + while (low < high) { + uint256 mid = Math.average(low, high); + + // Note that mid will always be strictly less than high (i.e. it will be a valid array index) + // because Math.average rounds towards zero (it does integer division with truncation). + if (unsafeAccess(array, mid).value > element) { + high = mid; + } else { + low = mid + 1; + } + } + + // At this point `low` is the exclusive upper bound. We will return the inclusive upper bound. + if (low > 0 && unsafeAccess(array, low - 1).value == element) { + return low - 1; + } else { + return low; + } + } + + /** + * @dev Searches an `array` sorted in ascending order and returns the first + * index that contains a value greater or equal than `element`. If no such index + * exists (i.e. all values in the array are strictly less than `element`), the array + * length is returned. Time complexity O(log n). + * + * See C++'s https://en.cppreference.com/w/cpp/algorithm/lower_bound[lower_bound]. + */ + function lowerBound(uint256[] storage array, uint256 element) internal view returns (uint256) { + uint256 low = 0; + uint256 high = array.length; + + if (high == 0) { + return 0; + } + + while (low < high) { + uint256 mid = Math.average(low, high); + + // Note that mid will always be strictly less than high (i.e. it will be a valid array index) + // because Math.average rounds towards zero (it does integer division with truncation). + if (unsafeAccess(array, mid).value < element) { + // this cannot overflow because mid < high + unchecked { + low = mid + 1; + } + } else { + high = mid; + } + } + + return low; + } + + /** + * @dev Searches an `array` sorted in ascending order and returns the first + * index that contains a value strictly greater than `element`. If no such index + * exists (i.e. all values in the array are strictly less than `element`), the array + * length is returned. Time complexity O(log n). + * + * See C++'s https://en.cppreference.com/w/cpp/algorithm/upper_bound[upper_bound]. + */ + function upperBound(uint256[] storage array, uint256 element) internal view returns (uint256) { + uint256 low = 0; + uint256 high = array.length; + + if (high == 0) { + return 0; + } + + while (low < high) { + uint256 mid = Math.average(low, high); + + // Note that mid will always be strictly less than high (i.e. it will be a valid array index) + // because Math.average rounds towards zero (it does integer division with truncation). + if (unsafeAccess(array, mid).value > element) { + high = mid; + } else { + // this cannot overflow because mid < high + unchecked { + low = mid + 1; + } + } + } + + return low; + } + + /** + * @dev Same as {lowerBound}, but with an array in memory. + */ + function lowerBoundMemory(uint256[] memory array, uint256 element) internal pure returns (uint256) { + uint256 low = 0; + uint256 high = array.length; + + if (high == 0) { + return 0; + } + + while (low < high) { + uint256 mid = Math.average(low, high); + + // Note that mid will always be strictly less than high (i.e. it will be a valid array index) + // because Math.average rounds towards zero (it does integer division with truncation). + if (unsafeMemoryAccess(array, mid) < element) { + // this cannot overflow because mid < high + unchecked { + low = mid + 1; + } + } else { + high = mid; + } + } + + return low; + } + + /** + * @dev Same as {upperBound}, but with an array in memory. + */ + function upperBoundMemory(uint256[] memory array, uint256 element) internal pure returns (uint256) { + uint256 low = 0; + uint256 high = array.length; + + if (high == 0) { + return 0; + } + + while (low < high) { + uint256 mid = Math.average(low, high); + + // Note that mid will always be strictly less than high (i.e. it will be a valid array index) + // because Math.average rounds towards zero (it does integer division with truncation). + if (unsafeMemoryAccess(array, mid) > element) { + high = mid; + } else { + // this cannot overflow because mid < high + unchecked { + low = mid + 1; + } + } + } + + return low; + } + + /** + * @dev Access an array in an "unsafe" way. Skips solidity "index-out-of-range" check. + * + * WARNING: Only use if you are certain `pos` is lower than the array length. + */ + function unsafeAccess(address[] storage arr, uint256 pos) internal pure returns (StorageSlot.AddressSlot storage) { + bytes32 slot; + assembly ("memory-safe") { + slot := arr.slot + } + return slot.deriveArray().offset(pos).getAddressSlot(); + } + + /** + * @dev Access an array in an "unsafe" way. Skips solidity "index-out-of-range" check. + * + * WARNING: Only use if you are certain `pos` is lower than the array length. + */ + function unsafeAccess(bytes32[] storage arr, uint256 pos) internal pure returns (StorageSlot.Bytes32Slot storage) { + bytes32 slot; + assembly ("memory-safe") { + slot := arr.slot + } + return slot.deriveArray().offset(pos).getBytes32Slot(); + } + + /** + * @dev Access an array in an "unsafe" way. Skips solidity "index-out-of-range" check. + * + * WARNING: Only use if you are certain `pos` is lower than the array length. + */ + function unsafeAccess(uint256[] storage arr, uint256 pos) internal pure returns (StorageSlot.Uint256Slot storage) { + bytes32 slot; + assembly ("memory-safe") { + slot := arr.slot + } + return slot.deriveArray().offset(pos).getUint256Slot(); + } + + /** + * @dev Access an array in an "unsafe" way. Skips solidity "index-out-of-range" check. + * + * WARNING: Only use if you are certain `pos` is lower than the array length. + */ + function unsafeAccess(bytes[] storage arr, uint256 pos) internal pure returns (StorageSlot.BytesSlot storage) { + bytes32 slot; + assembly ("memory-safe") { + slot := arr.slot + } + return slot.deriveArray().offset(pos).getBytesSlot(); + } + + /** + * @dev Access an array in an "unsafe" way. Skips solidity "index-out-of-range" check. + * + * WARNING: Only use if you are certain `pos` is lower than the array length. + */ + function unsafeAccess(string[] storage arr, uint256 pos) internal pure returns (StorageSlot.StringSlot storage) { + bytes32 slot; + assembly ("memory-safe") { + slot := arr.slot + } + return slot.deriveArray().offset(pos).getStringSlot(); + } + + /** + * @dev Access an array in an "unsafe" way. Skips solidity "index-out-of-range" check. + * + * WARNING: Only use if you are certain `pos` is lower than the array length. + */ + function unsafeMemoryAccess(address[] memory arr, uint256 pos) internal pure returns (address res) { + assembly { + res := mload(add(add(arr, 0x20), mul(pos, 0x20))) + } + } + + /** + * @dev Access an array in an "unsafe" way. Skips solidity "index-out-of-range" check. + * + * WARNING: Only use if you are certain `pos` is lower than the array length. + */ + function unsafeMemoryAccess(bytes32[] memory arr, uint256 pos) internal pure returns (bytes32 res) { + assembly { + res := mload(add(add(arr, 0x20), mul(pos, 0x20))) + } + } + + /** + * @dev Access an array in an "unsafe" way. Skips solidity "index-out-of-range" check. + * + * WARNING: Only use if you are certain `pos` is lower than the array length. + */ + function unsafeMemoryAccess(uint256[] memory arr, uint256 pos) internal pure returns (uint256 res) { + assembly { + res := mload(add(add(arr, 0x20), mul(pos, 0x20))) + } + } + + /** + * @dev Access an array in an "unsafe" way. Skips solidity "index-out-of-range" check. + * + * WARNING: Only use if you are certain `pos` is lower than the array length. + */ + function unsafeMemoryAccess(bytes[] memory arr, uint256 pos) internal pure returns (bytes memory res) { + assembly { + res := mload(add(add(arr, 0x20), mul(pos, 0x20))) + } + } + + /** + * @dev Access an array in an "unsafe" way. Skips solidity "index-out-of-range" check. + * + * WARNING: Only use if you are certain `pos` is lower than the array length. + */ + function unsafeMemoryAccess(string[] memory arr, uint256 pos) internal pure returns (string memory res) { + assembly { + res := mload(add(add(arr, 0x20), mul(pos, 0x20))) + } + } + + /** + * @dev Helper to set the length of a dynamic array. Directly writing to `.length` is forbidden. + * + * WARNING: this does not clear elements if length is reduced, of initialize elements if length is increased. + */ + function unsafeSetLength(address[] storage array, uint256 len) internal { + assembly ("memory-safe") { + sstore(array.slot, len) + } + } + + /** + * @dev Helper to set the length of a dynamic array. Directly writing to `.length` is forbidden. + * + * WARNING: this does not clear elements if length is reduced, of initialize elements if length is increased. + */ + function unsafeSetLength(bytes32[] storage array, uint256 len) internal { + assembly ("memory-safe") { + sstore(array.slot, len) + } + } + + /** + * @dev Helper to set the length of a dynamic array. Directly writing to `.length` is forbidden. + * + * WARNING: this does not clear elements if length is reduced, of initialize elements if length is increased. + */ + function unsafeSetLength(uint256[] storage array, uint256 len) internal { + assembly ("memory-safe") { + sstore(array.slot, len) + } + } + + /** + * @dev Helper to set the length of a dynamic array. Directly writing to `.length` is forbidden. + * + * WARNING: this does not clear elements if length is reduced, of initialize elements if length is increased. + */ + function unsafeSetLength(bytes[] storage array, uint256 len) internal { + assembly ("memory-safe") { + sstore(array.slot, len) + } + } + + /** + * @dev Helper to set the length of a dynamic array. Directly writing to `.length` is forbidden. + * + * WARNING: this does not clear elements if length is reduced, of initialize elements if length is increased. + */ + function unsafeSetLength(string[] storage array, uint256 len) internal { + assembly ("memory-safe") { + sstore(array.slot, len) + } + } +} + +// lib/openzeppelin-contracts/contracts/utils/structs/EnumerableSet.sol + +// OpenZeppelin Contracts (last updated v5.4.0) (utils/structs/EnumerableSet.sol) +// This file was procedurally generated from scripts/generate/templates/EnumerableSet.js. + +/** + * @dev Library for managing + * https://en.wikipedia.org/wiki/Set_(abstract_data_type)[sets] of primitive + * types. + * + * Sets have the following properties: + * + * - Elements are added, removed, and checked for existence in constant time + * (O(1)). + * - Elements are enumerated in O(n). No guarantees are made on the ordering. + * - Set can be cleared (all elements removed) in O(n). + * + * ```solidity + * contract Example { + * // Add the library methods + * using EnumerableSet for EnumerableSet.AddressSet; + * + * // Declare a set state variable + * EnumerableSet.AddressSet private mySet; + * } + * ``` + * + * The following types are supported: + * + * - `bytes32` (`Bytes32Set`) since v3.3.0 + * - `address` (`AddressSet`) since v3.3.0 + * - `uint256` (`UintSet`) since v3.3.0 + * - `string` (`StringSet`) since v5.4.0 + * - `bytes` (`BytesSet`) since v5.4.0 + * + * [WARNING] + * ==== + * Trying to delete such a structure from storage will likely result in data corruption, rendering the structure + * unusable. + * See https://github.com/ethereum/solidity/pull/11843[ethereum/solidity#11843] for more info. + * + * In order to clean an EnumerableSet, you can either remove all elements one by one or create a fresh instance using an + * array of EnumerableSet. + * ==== + */ +library EnumerableSet { + // To implement this library for multiple types with as little code + // repetition as possible, we write it in terms of a generic Set type with + // bytes32 values. + // The Set implementation uses private functions, and user-facing + // implementations (such as AddressSet) are just wrappers around the + // underlying Set. + // This means that we can only create new EnumerableSets for types that fit + // in bytes32. + + struct Set { + // Storage of set values + bytes32[] _values; + // Position is the index of the value in the `values` array plus 1. + // Position 0 is used to mean a value is not in the set. + mapping(bytes32 value => uint256) _positions; + } + + /** + * @dev Add a value to a set. O(1). + * + * Returns true if the value was added to the set, that is if it was not + * already present. + */ + function _add(Set storage set, bytes32 value) private returns (bool) { + if (!_contains(set, value)) { + set._values.push(value); + // The value is stored at length-1, but we add 1 to all indexes + // and use 0 as a sentinel value + set._positions[value] = set._values.length; + return true; + } else { + return false; + } + } + + /** + * @dev Removes a value from a set. O(1). + * + * Returns true if the value was removed from the set, that is if it was + * present. + */ + function _remove(Set storage set, bytes32 value) private returns (bool) { + // We cache the value's position to prevent multiple reads from the same storage slot + uint256 position = set._positions[value]; + + if (position != 0) { + // Equivalent to contains(set, value) + // To delete an element from the _values array in O(1), we swap the element to delete with the last one in + // the array, and then remove the last element (sometimes called as 'swap and pop'). + // This modifies the order of the array, as noted in {at}. + + uint256 valueIndex = position - 1; + uint256 lastIndex = set._values.length - 1; + + if (valueIndex != lastIndex) { + bytes32 lastValue = set._values[lastIndex]; + + // Move the lastValue to the index where the value to delete is + set._values[valueIndex] = lastValue; + // Update the tracked position of the lastValue (that was just moved) + set._positions[lastValue] = position; + } + + // Delete the slot where the moved value was stored + set._values.pop(); + + // Delete the tracked position for the deleted slot + delete set._positions[value]; + + return true; + } else { + return false; + } + } + + /** + * @dev Removes all the values from a set. O(n). + * + * WARNING: This function has an unbounded cost that scales with set size. Developers should keep in mind that + * using it may render the function uncallable if the set grows to the point where clearing it consumes too much + * gas to fit in a block. + */ + function _clear(Set storage set) private { + uint256 len = _length(set); + for (uint256 i = 0; i < len; ++i) { + delete set._positions[set._values[i]]; + } + Arrays.unsafeSetLength(set._values, 0); + } + + /** + * @dev Returns true if the value is in the set. O(1). + */ + function _contains(Set storage set, bytes32 value) private view returns (bool) { + return set._positions[value] != 0; + } + + /** + * @dev Returns the number of values on the set. O(1). + */ + function _length(Set storage set) private view returns (uint256) { + return set._values.length; + } + + /** + * @dev Returns the value stored at position `index` in the set. O(1). + * + * Note that there are no guarantees on the ordering of values inside the + * array, and it may change when more values are added or removed. + * + * Requirements: + * + * - `index` must be strictly less than {length}. + */ + function _at(Set storage set, uint256 index) private view returns (bytes32) { + return set._values[index]; + } + + /** + * @dev Return the entire set in an array + * + * WARNING: This operation will copy the entire storage to memory, which can be quite expensive. This is designed + * to mostly be used by view accessors that are queried without any gas fees. Developers should keep in mind that + * this function has an unbounded cost, and using it as part of a state-changing function may render the function + * uncallable if the set grows to a point where copying to memory consumes too much gas to fit in a block. + */ + function _values(Set storage set) private view returns (bytes32[] memory) { + return set._values; + } + + /** + * @dev Return a slice of the set in an array + * + * WARNING: This operation will copy the entire storage to memory, which can be quite expensive. This is designed + * to mostly be used by view accessors that are queried without any gas fees. Developers should keep in mind that + * this function has an unbounded cost, and using it as part of a state-changing function may render the function + * uncallable if the set grows to a point where copying to memory consumes too much gas to fit in a block. + */ + function _values(Set storage set, uint256 start, uint256 end) private view returns (bytes32[] memory) { + unchecked { + end = Math.min(end, _length(set)); + start = Math.min(start, end); + + uint256 len = end - start; + bytes32[] memory result = new bytes32[](len); + for (uint256 i = 0; i < len; ++i) { + result[i] = Arrays.unsafeAccess(set._values, start + i).value; + } + return result; + } + } + + // Bytes32Set + + struct Bytes32Set { + Set _inner; + } + + /** + * @dev Add a value to a set. O(1). + * + * Returns true if the value was added to the set, that is if it was not + * already present. + */ + function add(Bytes32Set storage set, bytes32 value) internal returns (bool) { + return _add(set._inner, value); + } + + /** + * @dev Removes a value from a set. O(1). + * + * Returns true if the value was removed from the set, that is if it was + * present. + */ + function remove(Bytes32Set storage set, bytes32 value) internal returns (bool) { + return _remove(set._inner, value); + } + + /** + * @dev Removes all the values from a set. O(n). + * + * WARNING: Developers should keep in mind that this function has an unbounded cost and using it may render the + * function uncallable if the set grows to the point where clearing it consumes too much gas to fit in a block. + */ + function clear(Bytes32Set storage set) internal { + _clear(set._inner); + } + + /** + * @dev Returns true if the value is in the set. O(1). + */ + function contains(Bytes32Set storage set, bytes32 value) internal view returns (bool) { + return _contains(set._inner, value); + } + + /** + * @dev Returns the number of values in the set. O(1). + */ + function length(Bytes32Set storage set) internal view returns (uint256) { + return _length(set._inner); + } + + /** + * @dev Returns the value stored at position `index` in the set. O(1). + * + * Note that there are no guarantees on the ordering of values inside the + * array, and it may change when more values are added or removed. + * + * Requirements: + * + * - `index` must be strictly less than {length}. + */ + function at(Bytes32Set storage set, uint256 index) internal view returns (bytes32) { + return _at(set._inner, index); + } + + /** + * @dev Return the entire set in an array + * + * WARNING: This operation will copy the entire storage to memory, which can be quite expensive. This is designed + * to mostly be used by view accessors that are queried without any gas fees. Developers should keep in mind that + * this function has an unbounded cost, and using it as part of a state-changing function may render the function + * uncallable if the set grows to a point where copying to memory consumes too much gas to fit in a block. + */ + function values(Bytes32Set storage set) internal view returns (bytes32[] memory) { + bytes32[] memory store = _values(set._inner); + bytes32[] memory result; + + assembly ("memory-safe") { + result := store + } + + return result; + } + + /** + * @dev Return a slice of the set in an array + * + * WARNING: This operation will copy the entire storage to memory, which can be quite expensive. This is designed + * to mostly be used by view accessors that are queried without any gas fees. Developers should keep in mind that + * this function has an unbounded cost, and using it as part of a state-changing function may render the function + * uncallable if the set grows to a point where copying to memory consumes too much gas to fit in a block. + */ + function values(Bytes32Set storage set, uint256 start, uint256 end) internal view returns (bytes32[] memory) { + bytes32[] memory store = _values(set._inner, start, end); + bytes32[] memory result; + + assembly ("memory-safe") { + result := store + } + + return result; + } + + // AddressSet + + struct AddressSet { + Set _inner; + } + + /** + * @dev Add a value to a set. O(1). + * + * Returns true if the value was added to the set, that is if it was not + * already present. + */ + function add(AddressSet storage set, address value) internal returns (bool) { + return _add(set._inner, bytes32(uint256(uint160(value)))); + } + + /** + * @dev Removes a value from a set. O(1). + * + * Returns true if the value was removed from the set, that is if it was + * present. + */ + function remove(AddressSet storage set, address value) internal returns (bool) { + return _remove(set._inner, bytes32(uint256(uint160(value)))); + } + + /** + * @dev Removes all the values from a set. O(n). + * + * WARNING: Developers should keep in mind that this function has an unbounded cost and using it may render the + * function uncallable if the set grows to the point where clearing it consumes too much gas to fit in a block. + */ + function clear(AddressSet storage set) internal { + _clear(set._inner); + } + + /** + * @dev Returns true if the value is in the set. O(1). + */ + function contains(AddressSet storage set, address value) internal view returns (bool) { + return _contains(set._inner, bytes32(uint256(uint160(value)))); + } + + /** + * @dev Returns the number of values in the set. O(1). + */ + function length(AddressSet storage set) internal view returns (uint256) { + return _length(set._inner); + } + + /** + * @dev Returns the value stored at position `index` in the set. O(1). + * + * Note that there are no guarantees on the ordering of values inside the + * array, and it may change when more values are added or removed. + * + * Requirements: + * + * - `index` must be strictly less than {length}. + */ + function at(AddressSet storage set, uint256 index) internal view returns (address) { + return address(uint160(uint256(_at(set._inner, index)))); + } + + /** + * @dev Return the entire set in an array + * + * WARNING: This operation will copy the entire storage to memory, which can be quite expensive. This is designed + * to mostly be used by view accessors that are queried without any gas fees. Developers should keep in mind that + * this function has an unbounded cost, and using it as part of a state-changing function may render the function + * uncallable if the set grows to a point where copying to memory consumes too much gas to fit in a block. + */ + function values(AddressSet storage set) internal view returns (address[] memory) { + bytes32[] memory store = _values(set._inner); + address[] memory result; + + assembly ("memory-safe") { + result := store + } + + return result; + } + + /** + * @dev Return a slice of the set in an array + * + * WARNING: This operation will copy the entire storage to memory, which can be quite expensive. This is designed + * to mostly be used by view accessors that are queried without any gas fees. Developers should keep in mind that + * this function has an unbounded cost, and using it as part of a state-changing function may render the function + * uncallable if the set grows to a point where copying to memory consumes too much gas to fit in a block. + */ + function values(AddressSet storage set, uint256 start, uint256 end) internal view returns (address[] memory) { + bytes32[] memory store = _values(set._inner, start, end); + address[] memory result; + + assembly ("memory-safe") { + result := store + } + + return result; + } + + // UintSet + + struct UintSet { + Set _inner; + } + + /** + * @dev Add a value to a set. O(1). + * + * Returns true if the value was added to the set, that is if it was not + * already present. + */ + function add(UintSet storage set, uint256 value) internal returns (bool) { + return _add(set._inner, bytes32(value)); + } + + /** + * @dev Removes a value from a set. O(1). + * + * Returns true if the value was removed from the set, that is if it was + * present. + */ + function remove(UintSet storage set, uint256 value) internal returns (bool) { + return _remove(set._inner, bytes32(value)); + } + + /** + * @dev Removes all the values from a set. O(n). + * + * WARNING: Developers should keep in mind that this function has an unbounded cost and using it may render the + * function uncallable if the set grows to the point where clearing it consumes too much gas to fit in a block. + */ + function clear(UintSet storage set) internal { + _clear(set._inner); + } + + /** + * @dev Returns true if the value is in the set. O(1). + */ + function contains(UintSet storage set, uint256 value) internal view returns (bool) { + return _contains(set._inner, bytes32(value)); + } + + /** + * @dev Returns the number of values in the set. O(1). + */ + function length(UintSet storage set) internal view returns (uint256) { + return _length(set._inner); + } + + /** + * @dev Returns the value stored at position `index` in the set. O(1). + * + * Note that there are no guarantees on the ordering of values inside the + * array, and it may change when more values are added or removed. + * + * Requirements: + * + * - `index` must be strictly less than {length}. + */ + function at(UintSet storage set, uint256 index) internal view returns (uint256) { + return uint256(_at(set._inner, index)); + } + + /** + * @dev Return the entire set in an array + * + * WARNING: This operation will copy the entire storage to memory, which can be quite expensive. This is designed + * to mostly be used by view accessors that are queried without any gas fees. Developers should keep in mind that + * this function has an unbounded cost, and using it as part of a state-changing function may render the function + * uncallable if the set grows to a point where copying to memory consumes too much gas to fit in a block. + */ + function values(UintSet storage set) internal view returns (uint256[] memory) { + bytes32[] memory store = _values(set._inner); + uint256[] memory result; + + assembly ("memory-safe") { + result := store + } + + return result; + } + + /** + * @dev Return a slice of the set in an array + * + * WARNING: This operation will copy the entire storage to memory, which can be quite expensive. This is designed + * to mostly be used by view accessors that are queried without any gas fees. Developers should keep in mind that + * this function has an unbounded cost, and using it as part of a state-changing function may render the function + * uncallable if the set grows to a point where copying to memory consumes too much gas to fit in a block. + */ + function values(UintSet storage set, uint256 start, uint256 end) internal view returns (uint256[] memory) { + bytes32[] memory store = _values(set._inner, start, end); + uint256[] memory result; + + assembly ("memory-safe") { + result := store + } + + return result; + } + + struct StringSet { + // Storage of set values + string[] _values; + // Position is the index of the value in the `values` array plus 1. + // Position 0 is used to mean a value is not in the set. + mapping(string value => uint256) _positions; + } + + /** + * @dev Add a value to a set. O(1). + * + * Returns true if the value was added to the set, that is if it was not + * already present. + */ + function add(StringSet storage set, string memory value) internal returns (bool) { + if (!contains(set, value)) { + set._values.push(value); + // The value is stored at length-1, but we add 1 to all indexes + // and use 0 as a sentinel value + set._positions[value] = set._values.length; + return true; + } else { + return false; + } + } + + /** + * @dev Removes a value from a set. O(1). + * + * Returns true if the value was removed from the set, that is if it was + * present. + */ + function remove(StringSet storage set, string memory value) internal returns (bool) { + // We cache the value's position to prevent multiple reads from the same storage slot + uint256 position = set._positions[value]; + + if (position != 0) { + // Equivalent to contains(set, value) + // To delete an element from the _values array in O(1), we swap the element to delete with the last one in + // the array, and then remove the last element (sometimes called as 'swap and pop'). + // This modifies the order of the array, as noted in {at}. + + uint256 valueIndex = position - 1; + uint256 lastIndex = set._values.length - 1; + + if (valueIndex != lastIndex) { + string memory lastValue = set._values[lastIndex]; + + // Move the lastValue to the index where the value to delete is + set._values[valueIndex] = lastValue; + // Update the tracked position of the lastValue (that was just moved) + set._positions[lastValue] = position; + } + + // Delete the slot where the moved value was stored + set._values.pop(); + + // Delete the tracked position for the deleted slot + delete set._positions[value]; + + return true; + } else { + return false; + } + } + + /** + * @dev Removes all the values from a set. O(n). + * + * WARNING: Developers should keep in mind that this function has an unbounded cost and using it may render the + * function uncallable if the set grows to the point where clearing it consumes too much gas to fit in a block. + */ + function clear(StringSet storage set) internal { + uint256 len = length(set); + for (uint256 i = 0; i < len; ++i) { + delete set._positions[set._values[i]]; + } + Arrays.unsafeSetLength(set._values, 0); + } + + /** + * @dev Returns true if the value is in the set. O(1). + */ + function contains(StringSet storage set, string memory value) internal view returns (bool) { + return set._positions[value] != 0; + } + + /** + * @dev Returns the number of values on the set. O(1). + */ + function length(StringSet storage set) internal view returns (uint256) { + return set._values.length; + } + + /** + * @dev Returns the value stored at position `index` in the set. O(1). + * + * Note that there are no guarantees on the ordering of values inside the + * array, and it may change when more values are added or removed. + * + * Requirements: + * + * - `index` must be strictly less than {length}. + */ + function at(StringSet storage set, uint256 index) internal view returns (string memory) { + return set._values[index]; + } + + /** + * @dev Return the entire set in an array + * + * WARNING: This operation will copy the entire storage to memory, which can be quite expensive. This is designed + * to mostly be used by view accessors that are queried without any gas fees. Developers should keep in mind that + * this function has an unbounded cost, and using it as part of a state-changing function may render the function + * uncallable if the set grows to a point where copying to memory consumes too much gas to fit in a block. + */ + function values(StringSet storage set) internal view returns (string[] memory) { + return set._values; + } + + /** + * @dev Return a slice of the set in an array + * + * WARNING: This operation will copy the entire storage to memory, which can be quite expensive. This is designed + * to mostly be used by view accessors that are queried without any gas fees. Developers should keep in mind that + * this function has an unbounded cost, and using it as part of a state-changing function may render the function + * uncallable if the set grows to a point where copying to memory consumes too much gas to fit in a block. + */ + function values(StringSet storage set, uint256 start, uint256 end) internal view returns (string[] memory) { + unchecked { + end = Math.min(end, length(set)); + start = Math.min(start, end); + + uint256 len = end - start; + string[] memory result = new string[](len); + for (uint256 i = 0; i < len; ++i) { + result[i] = Arrays.unsafeAccess(set._values, start + i).value; + } + return result; + } + } + + struct BytesSet { + // Storage of set values + bytes[] _values; + // Position is the index of the value in the `values` array plus 1. + // Position 0 is used to mean a value is not in the set. + mapping(bytes value => uint256) _positions; + } + + /** + * @dev Add a value to a set. O(1). + * + * Returns true if the value was added to the set, that is if it was not + * already present. + */ + function add(BytesSet storage set, bytes memory value) internal returns (bool) { + if (!contains(set, value)) { + set._values.push(value); + // The value is stored at length-1, but we add 1 to all indexes + // and use 0 as a sentinel value + set._positions[value] = set._values.length; + return true; + } else { + return false; + } + } + + /** + * @dev Removes a value from a set. O(1). + * + * Returns true if the value was removed from the set, that is if it was + * present. + */ + function remove(BytesSet storage set, bytes memory value) internal returns (bool) { + // We cache the value's position to prevent multiple reads from the same storage slot + uint256 position = set._positions[value]; + + if (position != 0) { + // Equivalent to contains(set, value) + // To delete an element from the _values array in O(1), we swap the element to delete with the last one in + // the array, and then remove the last element (sometimes called as 'swap and pop'). + // This modifies the order of the array, as noted in {at}. + + uint256 valueIndex = position - 1; + uint256 lastIndex = set._values.length - 1; + + if (valueIndex != lastIndex) { + bytes memory lastValue = set._values[lastIndex]; + + // Move the lastValue to the index where the value to delete is + set._values[valueIndex] = lastValue; + // Update the tracked position of the lastValue (that was just moved) + set._positions[lastValue] = position; + } + + // Delete the slot where the moved value was stored + set._values.pop(); + + // Delete the tracked position for the deleted slot + delete set._positions[value]; + + return true; + } else { + return false; + } + } + + /** + * @dev Removes all the values from a set. O(n). + * + * WARNING: Developers should keep in mind that this function has an unbounded cost and using it may render the + * function uncallable if the set grows to the point where clearing it consumes too much gas to fit in a block. + */ + function clear(BytesSet storage set) internal { + uint256 len = length(set); + for (uint256 i = 0; i < len; ++i) { + delete set._positions[set._values[i]]; + } + Arrays.unsafeSetLength(set._values, 0); + } + + /** + * @dev Returns true if the value is in the set. O(1). + */ + function contains(BytesSet storage set, bytes memory value) internal view returns (bool) { + return set._positions[value] != 0; + } + + /** + * @dev Returns the number of values on the set. O(1). + */ + function length(BytesSet storage set) internal view returns (uint256) { + return set._values.length; + } + + /** + * @dev Returns the value stored at position `index` in the set. O(1). + * + * Note that there are no guarantees on the ordering of values inside the + * array, and it may change when more values are added or removed. + * + * Requirements: + * + * - `index` must be strictly less than {length}. + */ + function at(BytesSet storage set, uint256 index) internal view returns (bytes memory) { + return set._values[index]; + } + + /** + * @dev Return the entire set in an array + * + * WARNING: This operation will copy the entire storage to memory, which can be quite expensive. This is designed + * to mostly be used by view accessors that are queried without any gas fees. Developers should keep in mind that + * this function has an unbounded cost, and using it as part of a state-changing function may render the function + * uncallable if the set grows to a point where copying to memory consumes too much gas to fit in a block. + */ + function values(BytesSet storage set) internal view returns (bytes[] memory) { + return set._values; + } + + /** + * @dev Return a slice of the set in an array + * + * WARNING: This operation will copy the entire storage to memory, which can be quite expensive. This is designed + * to mostly be used by view accessors that are queried without any gas fees. Developers should keep in mind that + * this function has an unbounded cost, and using it as part of a state-changing function may render the function + * uncallable if the set grows to a point where copying to memory consumes too much gas to fit in a block. + */ + function values(BytesSet storage set, uint256 start, uint256 end) internal view returns (bytes[] memory) { + unchecked { + end = Math.min(end, length(set)); + start = Math.min(start, end); + + uint256 len = end - start; + bytes[] memory result = new bytes[](len); + for (uint256 i = 0; i < len; ++i) { + result[i] = Arrays.unsafeAccess(set._values, start + i).value; + } + return result; + } + } +} + +// src/modules/ERC3643ComplianceModule.sol + +/* ==== OpenZeppelin === */ + +/* ==== Interface and other library === */ + +abstract contract ERC3643ComplianceModule is IERC3643Compliance, AccessControl { + /* ==== Type declaration === */ + using EnumerableSet for EnumerableSet.AddressSet; + /* ==== State Variables === */ + // Token binding tracking + EnumerableSet.AddressSet private _boundTokens; + // Access Control + bytes32 public constant COMPLIANCE_MANAGER_ROLE = keccak256("COMPLIANCE_MANAGER_ROLE"); + + /* ==== Errors === */ + error RuleEngine_ERC3643Compliance_InvalidTokenAddress(); + error RuleEngine_ERC3643Compliance_TokenAlreadyBound(); + error RuleEngine_ERC3643Compliance_TokenNotBound(); + error RuleEngine_ERC3643Compliance_UnauthorizedCaller(); + error RuleEngine_ERC3643Compliance_OperationNotSuccessful(); + + /* ==== Modifier === */ + modifier onlyBoundToken() { + if (!_boundTokens.contains(_msgSender())) { + revert RuleEngine_ERC3643Compliance_UnauthorizedCaller(); + } + _; + } + + /*////////////////////////////////////////////////////////////// + PUBLIC/public FUNCTIONS + //////////////////////////////////////////////////////////////*/ + + /* ============ State functions ============ */ + /// @inheritdoc IERC3643Compliance + function bindToken(address token) public override virtual onlyRole(COMPLIANCE_MANAGER_ROLE) { + _bindToken(token); + } + + /// @inheritdoc IERC3643Compliance + function unbindToken(address token) public override virtual onlyRole(COMPLIANCE_MANAGER_ROLE) { + _unbindToken(token); + } + + /// @inheritdoc IERC3643Compliance + function isTokenBound(address token) public view virtual override returns (bool) { + return _boundTokens.contains(token); + } + + /// @inheritdoc IERC3643Compliance + function getTokenBound() public view virtual override returns (address) { + if(_boundTokens.length() > 0){ + // Note that there are no guarantees on the ordering of values inside the array, + // and it may change when more values are added or removed. + return _boundTokens.at(0); + } else { + return address(0); + } + } + + /// @inheritdoc IERC3643Compliance + function getTokenBounds() public view override returns (address[] memory) { + return _boundTokens.values(); + } + + /*////////////////////////////////////////////////////////////// + INTERNAL/PRIVATE FUNCTIONS + //////////////////////////////////////////////////////////////*/ + + function _unbindToken(address token) internal { + require (_boundTokens.contains(token), RuleEngine_ERC3643Compliance_TokenNotBound()); + // Should never revert because we check if the token address is already set before + require(_boundTokens.remove(token), RuleEngine_ERC3643Compliance_OperationNotSuccessful()); + + emit TokenUnbound(token); + } + function _bindToken(address token) internal{ + require(token != address(0), RuleEngine_ERC3643Compliance_InvalidTokenAddress()); + require(!_boundTokens.contains(token), RuleEngine_ERC3643Compliance_TokenAlreadyBound()); + // Should never revert because we check if the token address is already set before + require(_boundTokens.add(token), RuleEngine_ERC3643Compliance_OperationNotSuccessful()); + emit TokenBound(token); + } +} + +// src/modules/RulesManagementModule.sol + +/* ==== OpenZeppelin === */ + +/* ==== Interface and other library === */ + +/** + * @title RuleEngine - part + */ +abstract contract RulesManagementModule is + AccessControl, + RulesManagementModuleInvariantStorage, + IRulesManagementModule +{ + /* ==== Type declaration === */ + using EnumerableSet for EnumerableSet.AddressSet; + + /* ==== State Variables === */ + /// @dev Array of rules + EnumerableSet.AddressSet internal _rules; + + /*////////////////////////////////////////////////////////////// + PUBLIC/EXTERNAL FUNCTIONS + //////////////////////////////////////////////////////////////*/ + + /* ============ State functions ============ */ + + /** + * @inheritdoc IRulesManagementModule + */ + function setRules( + IRule[] calldata rules_ + ) public virtual override(IRulesManagementModule) onlyRole(RULES_MANAGEMENT_ROLE) { + if (rules_.length == 0) { + revert RuleEngine_RulesManagementModule_ArrayIsEmpty(); + } + if (_rules.length() > 0) { + _clearRules(); + } + for(uint256 i = 0; i < rules_.length; ++i){ + _checkRule(address(rules_[i])); + // Should never revert because we check the presence of the rule before + require(_rules.add(address(rules_[i])), RuleEngine_RulesManagementModule_OperationNotSuccessful()); + emit AddRule(rules_[i]); + } + } + + /** + * @inheritdoc IRulesManagementModule + */ + function clearRules() public virtual override(IRulesManagementModule) onlyRole(RULES_MANAGEMENT_ROLE) { + _clearRules(); + } + + /** + * @inheritdoc IRulesManagementModule + */ + function addRule( + IRule rule_ + ) public virtual override(IRulesManagementModule) onlyRole(RULES_MANAGEMENT_ROLE) { + _checkRule(address(rule_)); + require(_rules.add(address(rule_)), RuleEngine_RulesManagementModule_OperationNotSuccessful()); + emit AddRule(rule_); + } + + /** + * @inheritdoc IRulesManagementModule + */ + function removeRule( + IRule rule_ + ) public virtual override(IRulesManagementModule) onlyRole(RULES_MANAGEMENT_ROLE) { + require(_rules.contains(address(rule_)), RuleEngine_RulesManagementModule_RuleDoNotMatch()); + _removeRule(rule_); + } + + /* ============ View functions ============ */ + + /** + * @inheritdoc IRulesManagementModule + */ + function rulesCount() public view virtual override(IRulesManagementModule) returns (uint256) { + return _rules.length(); + } + + /** + * @inheritdoc IRulesManagementModule + */ + function containsRule(IRule rule_) public view virtual override(IRulesManagementModule) returns (bool){ + return _rules.contains(address(rule_)); + } + + /** + * @inheritdoc IRulesManagementModule + */ + function rule( + uint256 ruleId + ) public view virtual override(IRulesManagementModule) returns (address) { + if(ruleId < _rules.length()){ + // Note that there are no guarantees on the ordering of values inside the array, + // and it may change when more values are added or removed. + return _rules.at(ruleId); + } else { + return address(0); + } + } + + /** + * @inheritdoc IRulesManagementModule + */ + function rules() + public + view + virtual + override(IRulesManagementModule) + returns (address[] memory) + { + return _rules.values(); + } + + /*////////////////////////////////////////////////////////////// + INTERNAL/PRIVATE FUNCTIONS + //////////////////////////////////////////////////////////////*/ + /** + * @notice Clear all the rules of the array of rules + * + */ + function _clearRules() internal virtual { + emit ClearRules(); + _rules.clear(); + } + + /** + * @notice Remove a rule from the array of rules + * Revert if the rule found at the specified index does not match the rule in argument + * @param rule_ address of the target rule + * + * + */ + function _removeRule(IRule rule_) internal virtual { + // Should never revert because we check the presence of the rule before + require(_rules.remove(address(rule_)), RuleEngine_RulesManagementModule_OperationNotSuccessful()); + emit RemoveRule(rule_); + } + + /** + * @dev check if a rule is valid, revert otherwise + */ + function _checkRule(address rule_) internal view{ + if (rule_ == address(0x0)) { + revert RuleEngine_RulesManagementModule_RuleAddressZeroNotAllowed(); + } + if (_rules.contains(rule_)) { + revert RuleEngine_RulesManagementModule_RuleAlreadyExists(); + } + } + + /* ============ Transferred functions ============ */ + + /** + * @notice Go through all the rule to know if a restriction exists on the transfer + * @param from the origin address + * @param to the destination address + * @param value to transfer + **/ + function _transferred( + address from, + address to, + uint256 value + ) internal virtual{ + uint256 rulesLength = _rules.length(); + for (uint256 i = 0; i < rulesLength; ++i) { + IRule(_rules.at(i)).transferred( + from, + to, + value + ); + } + } + + /** + * @notice Go through all the rule to know if a restriction exists on the transfer + * @param spender the spender address (transferFrom) + * @param from the origin address + * @param to the destination address + * @param value to transfer + **/ + function _transferred( + address spender, + address from, + address to, + uint256 value + ) internal virtual{ + uint256 rulesLength = _rules.length(); + for (uint256 i = 0; i < rulesLength; ++i) { + IRule(_rules.at(i)).transferred( + spender, + from, + to, + value + ); + } + } +} + +// src/RuleEngineBase.sol + +/* ==== OpenZeppelin === */ + +/* ==== CMTAT === */ + +/* ==== Modules === */ + +/* ==== Interface and other library === */ + +/** + * @title Implementation of a ruleEngine as defined by the CMTAT + */ +abstract contract RuleEngineBase is + VersionModule, + RulesManagementModule, + ERC3643ComplianceModule, + RuleEngineInvariantStorage, + IRuleEngine +{ + /* ============ State functions ============ */ + /* + * @inheritdoc IRuleEngine + */ + function transferred( + address spender, + address from, + address to, + uint256 value + ) public virtual override(IRuleEngine) onlyBoundToken { + // Apply on RuleEngine + RulesManagementModule._transferred(spender, from, to, value); + } + + /** + * @inheritdoc IERC3643IComplianceContract + */ + function transferred( + address from, + address to, + uint256 value + ) public virtual override(IERC3643IComplianceContract) onlyBoundToken { + _transferred(from, to, value); + } + + /// @inheritdoc IERC3643Compliance + function created(address to, uint256 value) public virtual override(IERC3643Compliance) onlyBoundToken{ + _transferred(address(0), to, value); + } + + /// @inheritdoc IERC3643Compliance + function destroyed(address from, uint256 value) public virtual override(IERC3643Compliance) onlyBoundToken { + _transferred(from, address(0), value); + } + + /* ============ View functions ============ */ + /** + * @notice Go through all the rule to know if a restriction exists on the transfer + * @param from the origin address + * @param to the destination address + * @param value to transfer + * @return The restricion code or REJECTED_CODE_BASE.TRANSFER_OK (0) if the transfer is valid + **/ + function detectTransferRestriction( + address from, + address to, + uint256 value + ) public view virtual override returns (uint8) { + uint256 rulesLength = rulesCount(); + for (uint256 i = 0; i < rulesLength; ++i) { + uint8 restriction = IRule(rule(i)) + .detectTransferRestriction(from, to, value); + if (restriction > 0) { + return restriction; + } + } + return uint8(REJECTED_CODE_BASE.TRANSFER_OK); + } + + /** + * @inheritdoc IERC1404Extend + */ + function detectTransferRestrictionFrom( + address spender, + address from, + address to, + uint256 value + ) public view virtual override(IERC1404Extend) returns (uint8) { + uint256 rulesLength = rulesCount(); + for (uint256 i = 0; i < rulesLength; ++i) { + uint8 restriction = IRule(rule(i)) + .detectTransferRestrictionFrom(spender,from, to, value); + if (restriction > 0) { + return restriction; + } + } + + return uint8(REJECTED_CODE_BASE.TRANSFER_OK); + } + + /** + * @inheritdoc IERC1404 + */ + function messageForTransferRestriction( + uint8 restrictionCode + ) public virtual view override(IERC1404) returns (string memory) { + // + uint256 rulesLength = rulesCount(); + for (uint256 i = 0; i < rulesLength; ++i) { + if ( + IRule(rule(i)) + .canReturnTransferRestrictionCode(restrictionCode) + ) { + return + IRule(rule(i)) + .messageForTransferRestriction(restrictionCode); + } + } + return "Unknown restriction code"; + } + + /** + * @inheritdoc IERC3643ComplianceRead + */ + function canTransfer( + address from, + address to, + uint256 value + ) public virtual view override(IERC3643ComplianceRead) returns (bool) { + return + detectTransferRestriction(from, to, value) == + uint8(REJECTED_CODE_BASE.TRANSFER_OK); + } + + /** + * @inheritdoc IERC7551Compliance + */ + function canTransferFrom( + address spender, + address from, + address to, + uint256 value + ) public virtual view override(IERC7551Compliance) returns (bool) { + return + detectTransferRestrictionFrom(spender, from, to, value) == + uint8(REJECTED_CODE_BASE.TRANSFER_OK); + } + + /* ============ ACCESS CONTROL ============ */ + /** + * @notice Returns `true` if `account` has been granted `role`. + * @dev The Default Admin has all roles + */ + function hasRole( + bytes32 role, + address account + ) public view virtual override(AccessControl) returns (bool) { + if (AccessControl.hasRole(DEFAULT_ADMIN_ROLE, account)) { + return true; + } else { + return AccessControl.hasRole(role, account); + } + } +} + +// src/RuleEngine.sol + +/* ==== OpenZeppelin === */ + +/* ==== Modules === */ + +/* ==== Base contract === */ + +/** + * @title Implementation of a ruleEngine as defined by the CMTAT + */ +contract RuleEngine is + ERC2771ModuleStandalone, + RuleEngineBase +{ + /** + * @param admin Address of the contract (Access Control) + * @param forwarderIrrevocable Address of the forwarder, required for the gasless support + */ + constructor( + address admin, + address forwarderIrrevocable, + address tokenContract + ) ERC2771ModuleStandalone(forwarderIrrevocable) { + if (admin == address(0)) { + revert RuleEngine_AdminWithAddressZeroNotAllowed(); + } + if (tokenContract != address(0)) { + _bindToken(tokenContract); + } + _grantRole(DEFAULT_ADMIN_ROLE, admin); + } + + /*////////////////////////////////////////////////////////////// + ERC-2771 + //////////////////////////////////////////////////////////////*/ + + /** + * @dev This surcharge is not necessary if you do not use the MetaTxModule + */ + function _msgSender() + internal + view + virtual + override(ERC2771Context, Context) + returns (address sender) + { + return ERC2771Context._msgSender(); + } + + /** + * @dev This surcharge is not necessary if you do not use the MetaTxModule + */ + function _msgData() + internal + view + virtual + override(ERC2771Context, Context) + returns (bytes calldata) + { + return ERC2771Context._msgData(); + } + + /** + * @dev This surcharge is not necessary if you do not use the MetaTxModule + */ + function _contextSuffixLength() + internal + view + virtual + override(ERC2771Context, Context) + returns (uint256) + { + return ERC2771Context._contextSuffixLength(); + } +} + diff --git a/doc/compilation/hardhat/src/RuleEngine.sol/RuleEngine.dbg.json b/doc/compilation/hardhat/src/RuleEngine.sol/RuleEngine.dbg.json new file mode 100644 index 0000000..7270191 --- /dev/null +++ b/doc/compilation/hardhat/src/RuleEngine.sol/RuleEngine.dbg.json @@ -0,0 +1,4 @@ +{ + "_format": "hh-sol-dbg-1", + "buildInfo": "../../build-info/23e4357cece7f7823104260edabd5f69.json" +} diff --git a/doc/compilation/hardhat/src/RuleEngine.sol/RuleEngine.json b/doc/compilation/hardhat/src/RuleEngine.sol/RuleEngine.json new file mode 100644 index 0000000..46bbaeb --- /dev/null +++ b/doc/compilation/hardhat/src/RuleEngine.sol/RuleEngine.json @@ -0,0 +1,854 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "RuleEngine", + "sourceName": "src/RuleEngine.sol", + "abi": [ + { + "inputs": [ + { + "internalType": "address", + "name": "admin", + "type": "address" + }, + { + "internalType": "address", + "name": "forwarderIrrevocable", + "type": "address" + }, + { + "internalType": "address", + "name": "tokenContract", + "type": "address" + } + ], + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "inputs": [], + "name": "AccessControlBadConfirmation", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + }, + { + "internalType": "bytes32", + "name": "neededRole", + "type": "bytes32" + } + ], + "name": "AccessControlUnauthorizedAccount", + "type": "error" + }, + { + "inputs": [], + "name": "RuleEngine_AdminWithAddressZeroNotAllowed", + "type": "error" + }, + { + "inputs": [], + "name": "RuleEngine_ERC3643Compliance_InvalidTokenAddress", + "type": "error" + }, + { + "inputs": [], + "name": "RuleEngine_ERC3643Compliance_OperationNotSuccessful", + "type": "error" + }, + { + "inputs": [], + "name": "RuleEngine_ERC3643Compliance_TokenAlreadyBound", + "type": "error" + }, + { + "inputs": [], + "name": "RuleEngine_ERC3643Compliance_TokenNotBound", + "type": "error" + }, + { + "inputs": [], + "name": "RuleEngine_ERC3643Compliance_UnauthorizedCaller", + "type": "error" + }, + { + "inputs": [], + "name": "RuleEngine_RulesManagementModule_ArrayIsEmpty", + "type": "error" + }, + { + "inputs": [], + "name": "RuleEngine_RulesManagementModule_OperationNotSuccessful", + "type": "error" + }, + { + "inputs": [], + "name": "RuleEngine_RulesManagementModule_RuleAddressZeroNotAllowed", + "type": "error" + }, + { + "inputs": [], + "name": "RuleEngine_RulesManagementModule_RuleAlreadyExists", + "type": "error" + }, + { + "inputs": [], + "name": "RuleEngine_RulesManagementModule_RuleDoNotMatch", + "type": "error" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "contract IRule", + "name": "rule", + "type": "address" + } + ], + "name": "AddRule", + "type": "event" + }, + { + "anonymous": false, + "inputs": [], + "name": "ClearRules", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "contract IRule", + "name": "rule", + "type": "address" + } + ], + "name": "RemoveRule", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "indexed": true, + "internalType": "bytes32", + "name": "previousAdminRole", + "type": "bytes32" + }, + { + "indexed": true, + "internalType": "bytes32", + "name": "newAdminRole", + "type": "bytes32" + } + ], + "name": "RoleAdminChanged", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "indexed": true, + "internalType": "address", + "name": "account", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "sender", + "type": "address" + } + ], + "name": "RoleGranted", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "indexed": true, + "internalType": "address", + "name": "account", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "sender", + "type": "address" + } + ], + "name": "RoleRevoked", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "token", + "type": "address" + } + ], + "name": "TokenBound", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "token", + "type": "address" + } + ], + "name": "TokenUnbound", + "type": "event" + }, + { + "inputs": [], + "name": "COMPLIANCE_MANAGER_ROLE", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "DEFAULT_ADMIN_ROLE", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "RULES_MANAGEMENT_ROLE", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "contract IRule", + "name": "rule_", + "type": "address" + } + ], + "name": "addRule", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "token", + "type": "address" + } + ], + "name": "bindToken", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "canTransfer", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "canTransferFrom", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "clearRules", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "contract IRule", + "name": "rule_", + "type": "address" + } + ], + "name": "containsRule", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "created", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "destroyed", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "detectTransferRestriction", + "outputs": [ + { + "internalType": "uint8", + "name": "", + "type": "uint8" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "detectTransferRestrictionFrom", + "outputs": [ + { + "internalType": "uint8", + "name": "", + "type": "uint8" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + } + ], + "name": "getRoleAdmin", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "getTokenBound", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "getTokenBounds", + "outputs": [ + { + "internalType": "address[]", + "name": "", + "type": "address[]" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "grantRole", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "hasRole", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "token", + "type": "address" + } + ], + "name": "isTokenBound", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "forwarder", + "type": "address" + } + ], + "name": "isTrustedForwarder", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint8", + "name": "restrictionCode", + "type": "uint8" + } + ], + "name": "messageForTransferRestriction", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "contract IRule", + "name": "rule_", + "type": "address" + } + ], + "name": "removeRule", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "internalType": "address", + "name": "callerConfirmation", + "type": "address" + } + ], + "name": "renounceRole", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "revokeRole", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "ruleId", + "type": "uint256" + } + ], + "name": "rule", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "rules", + "outputs": [ + { + "internalType": "address[]", + "name": "", + "type": "address[]" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "rulesCount", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "contract IRule[]", + "name": "rules_", + "type": "address[]" + } + ], + "name": "setRules", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes4", + "name": "interfaceId", + "type": "bytes4" + } + ], + "name": "supportsInterface", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "transferred", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "transferred", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "trustedForwarder", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "token", + "type": "address" + } + ], + "name": "unbindToken", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "version", + "outputs": [ + { + "internalType": "string", + "name": "version_", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + } + ], + "bytecode": "0x60a060405234801561000f575f5ffd5b5060405161314938038061314983398181016040528101906100319190610641565b81808073ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff168152505050505f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036100ce576040517f21c89ccc00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614610111576101108161012c60201b60201c565b5b6101235f5f1b8461026060201b60201c565b5050505061079a565b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610191576040517fdc418b8000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6101a581600361035560201b90919060201c565b156101dc576040517ff423354700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6101f081600361038860201b90919060201c565b610226576040517f369bb9e600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7f2de35142b19ed5a07796cf30791959c592018f70b1d2d7c460eef8ffe713692b8160405161025591906106a0565b60405180910390a150565b5f61027183836103bb60201b60201c565b61034b5760015f5f8581526020019081526020015f205f015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055506102e86103f560201b60201c565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16847f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a46001905061034f565b5f90505b92915050565b5f610380835f018373ffffffffffffffffffffffffffffffffffffffff165f1b61040960201b60201c565b905092915050565b5f6103b3835f018373ffffffffffffffffffffffffffffffffffffffff165f1b61042960201b60201c565b905092915050565b5f6103ce5f5f1b8361049660201b60201c565b156103dc57600190506103ef565b6103ec838361049660201b60201c565b90505b92915050565b5f6104046104f960201b60201c565b905090565b5f5f836001015f8481526020019081526020015f20541415905092915050565b5f61043a838361040960201b60201c565b61048c57825f0182908060018154018082558091505060019003905f5260205f20015f9091909190915055825f0180549050836001015f8481526020019081526020015f208190555060019050610490565b5f90505b92915050565b5f5f5f8481526020019081526020015f205f015f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16905092915050565b5f5f5f36905090505f61051061057360201b60201c565b905080821015801561052d575061052c3361058760201b60201c565b5b1561055d575f36828403908092610546939291906106c1565b90610551919061073c565b60601c92505050610570565b61056b6105cb60201b60201c565b925050505b90565b5f6105826105d260201b60201c565b905090565b5f6105966105da60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16149050919050565b5f33905090565b5f6014905090565b5f608051905090565b5f5ffd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f610610826105e7565b9050919050565b61062081610606565b811461062a575f5ffd5b50565b5f8151905061063b81610617565b92915050565b5f5f5f60608486031215610658576106576105e3565b5b5f6106658682870161062d565b93505060206106768682870161062d565b92505060406106878682870161062d565b9150509250925092565b61069a81610606565b82525050565b5f6020820190506106b35f830184610691565b92915050565b5f5ffd5b5f5ffd5b5f5f858511156106d4576106d36106b9565b5b838611156106e5576106e46106bd565b5b6001850283019150848603905094509492505050565b5f82905092915050565b5f7fffffffffffffffffffffffffffffffffffffffff00000000000000000000000082169050919050565b5f82821b905092915050565b5f61074783836106fb565b826107528135610705565b925060148210156107925761078d7fffffffffffffffffffffffffffffffffffffffff00000000000000000000000083601403600802610730565b831692505b505092915050565b6080516129976107b25f395f610a4701526129975ff3fe608060405234801561000f575f5ffd5b5060043610610204575f3560e01c80638baf29b411610118578063bc13eacc116100ab578063db18af6c1161007a578063db18af6c146105fa578063df21950f1461062a578063e3c4602c14610646578063e46638e614610662578063e54621d21461069257610204565b8063bc13eacc14610560578063d32c7bb51461057e578063d4ce1415146105ae578063d547741f146105de57610204565b80639b11c115116100e75780639b11c115146104fe578063a217fddf1461051c578063b043572e1461053a578063b27aef3a1461054457610204565b80638baf29b4146104665780638d2ea7721461048257806391d148541461049e578063993e8b95146104ce57610204565b806352f6747a1161019b5780635f8dead31161016a5780635f8dead3146103ae5780636a3edf28146103ca5780637157797f146103e85780637da0a877146104185780637f4ab1dd1461043657610204565b806352f6747a1461031257806354e4b9451461033057806354fd4d5014610360578063572b6c051461037e57610204565b806336568abe116101d757806336568abe146102a25780633e5af4ca146102be5780633ff5aa02146102da57806340db3b50146102f657610204565b806301ffc9a71461020857806303c26bcd14610238578063248a9ca3146102565780632f2ff15d14610286575b5f5ffd5b610222600480360381019061021d9190611ebc565b6106b0565b60405161022f9190611f01565b60405180910390f35b610240610729565b60405161024d9190611f32565b60405180910390f35b610270600480360381019061026b9190611f75565b61074d565b60405161027d9190611f32565b60405180910390f35b6102a0600480360381019061029b9190611ffa565b610769565b005b6102bc60048036038101906102b79190611ffa565b61078b565b005b6102d860048036038101906102d3919061206b565b610806565b005b6102f460048036038101906102ef91906120cf565b610869565b005b610310600480360381019061030b91906120cf565b6108a0565b005b61031a6108d7565b60405161032791906121b1565b60405180910390f35b61034a6004803603810190610345919061220c565b6108e8565b6040516103579190611f01565b60405180910390f35b610368610904565b60405161037591906122a7565b60405180910390f35b610398600480360381019061039391906120cf565b610941565b6040516103a59190611f01565b60405180910390f35b6103c860048036038101906103c391906122c7565b61097f565b005b6103d26109df565b6040516103df9190612314565b60405180910390f35b61040260048036038101906103fd919061206b565b610a13565b60405161040f9190611f01565b60405180910390f35b610420610a44565b60405161042d9190612314565b60405180910390f35b610450600480360381019061044b9190612363565b610a6b565b60405161045d91906122a7565b60405180910390f35b610480600480360381019061047b919061238e565b610be1565b005b61049c600480360381019061049791906122c7565b610c42565b005b6104b860048036038101906104b39190611ffa565b610ca2565b6040516104c59190611f01565b60405180910390f35b6104e860048036038101906104e391906120cf565b610cd0565b6040516104f59190611f01565b60405180910390f35b610506610cec565b6040516105139190611f32565b60405180910390f35b610524610d10565b6040516105319190611f32565b60405180910390f35b610542610d16565b005b61055e6004803603810190610559919061243f565b610d4b565b005b610568610ef7565b6040516105759190612499565b60405180910390f35b6105986004803603810190610593919061206b565b610f07565b6040516105a591906124c1565b60405180910390f35b6105c860048036038101906105c3919061238e565b610feb565b6040516105d591906124c1565b60405180910390f35b6105f860048036038101906105f39190611ffa565b6110cc565b005b610614600480360381019061060f91906124da565b6110ee565b6040516106219190612314565b60405180910390f35b610644600480360381019061063f919061220c565b61110a565b005b610660600480360381019061065b919061220c565b61118b565b005b61067c6004803603810190610677919061238e565b61124f565b6040516106899190611f01565b60405180910390f35b61069a61127e565b6040516106a791906121b1565b60405180910390f35b5f7f7965db0b000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061072257506107218261128f565b5b9050919050565b7fe5c50d0927e06141e032cb9a67e1d7092dc85c0b0825191f7e1cede60002856881565b5f5f5f8381526020019081526020015f20600101549050919050565b6107728261074d565b61077b816112f8565b610785838361130c565b50505050565b6107936113f5565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16146107f7576040517f6697b23200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6108018282611403565b505050565b6108216108116113f5565b60036114ec90919063ffffffff16565b610857576040517fe39b3c8f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61086384848484611519565b50505050565b7fe5c50d0927e06141e032cb9a67e1d7092dc85c0b0825191f7e1cede600028568610893816112f8565b61089c826115c5565b5050565b7fe5c50d0927e06141e032cb9a67e1d7092dc85c0b0825191f7e1cede6000285686108ca816112f8565b6108d3826116f9565b5050565b60606108e360016117c7565b905090565b5f6108fd8260016114ec90919063ffffffff16565b9050919050565b60606040518060400160405280600581526020017f332e302e30000000000000000000000000000000000000000000000000000000815250905090565b5f61094a610a44565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16149050919050565b61099a61098a6113f5565b60036114ec90919063ffffffff16565b6109d0576040517fe39b3c8f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6109db5f83836117e6565b5050565b5f5f6109eb600361188f565b1115610a0c57610a055f60036118a290919063ffffffff16565b9050610a10565b5f90505b90565b5f5f6006811115610a2757610a26612505565b5b60ff16610a3686868686610f07565b60ff16149050949350505050565b5f7f0000000000000000000000000000000000000000000000000000000000000000905090565b60605f610a76610ef7565b90505f5f90505b81811015610ba157610a8e816110ee565b73ffffffffffffffffffffffffffffffffffffffff16637d045df6856040518263ffffffff1660e01b8152600401610ac691906124c1565b602060405180830381865afa158015610ae1573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610b05919061255c565b15610b9657610b13816110ee565b73ffffffffffffffffffffffffffffffffffffffff16637f4ab1dd856040518263ffffffff1660e01b8152600401610b4b91906124c1565b5f60405180830381865afa158015610b65573d5f5f3e3d5ffd5b505050506040513d5f823e3d601f19601f82011682018060405250810190610b8d91906126a1565b92505050610bdc565b806001019050610a7d565b506040518060400160405280601881526020017f556e6b6e6f776e207265737472696374696f6e20636f646500000000000000008152509150505b919050565b610bfc610bec6113f5565b60036114ec90919063ffffffff16565b610c32576040517fe39b3c8f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610c3d8383836117e6565b505050565b610c5d610c4d6113f5565b60036114ec90919063ffffffff16565b610c93576040517fe39b3c8f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610c9e825f836117e6565b5050565b5f610caf5f5f1b836118b9565b15610cbd5760019050610cca565b610cc783836118b9565b90505b92915050565b5f610ce58260036114ec90919063ffffffff16565b9050919050565b7fea5f4eb72290e50c32abd6c23e45de3d8300b3286e1cbc2e293114b92e034e5e81565b5f5f1b81565b7fea5f4eb72290e50c32abd6c23e45de3d8300b3286e1cbc2e293114b92e034e5e610d40816112f8565b610d4861191c565b50565b7fea5f4eb72290e50c32abd6c23e45de3d8300b3286e1cbc2e293114b92e034e5e610d75816112f8565b5f8383905003610db1576040517f59203cb900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f610dbc600161188f565b1115610dcb57610dca61191c565b5b5f5f90505b83839050811015610ef157610e0b848483818110610df157610df06126e8565b5b9050602002016020810190610e06919061220c565b611954565b610e46848483818110610e2157610e206126e8565b5b9050602002016020810190610e36919061220c565b6001611a0790919063ffffffff16565b610e7c576040517ff280d16100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b838382818110610e8f57610e8e6126e8565b5b9050602002016020810190610ea4919061220c565b73ffffffffffffffffffffffffffffffffffffffff167f60305ce6c9104acd0969d358f926bf391174340660aaf5e6215261fd6847bf4660405160405180910390a2806001019050610dd0565b50505050565b5f610f02600161188f565b905090565b5f5f610f11610ef7565b90505f5f90505b81811015610fcb575f610f2a826110ee565b73ffffffffffffffffffffffffffffffffffffffff1663d32c7bb5898989896040518563ffffffff1660e01b8152600401610f689493929190612715565b602060405180830381865afa158015610f83573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610fa7919061276c565b90505f8160ff161115610fbf57809350505050610fe3565b50806001019050610f18565b505f6006811115610fdf57610fde612505565b5b9150505b949350505050565b5f5f610ff5610ef7565b90505f5f90505b818110156110ad575f61100e826110ee565b73ffffffffffffffffffffffffffffffffffffffff1663d4ce14158888886040518463ffffffff1660e01b815260040161104a93929190612797565b602060405180830381865afa158015611065573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611089919061276c565b90505f8160ff1611156110a1578093505050506110c5565b50806001019050610ffc565b505f60068111156110c1576110c0612505565b5b9150505b9392505050565b6110d58261074d565b6110de816112f8565b6110e88383611403565b50505050565b5f6111038260016118a290919063ffffffff16565b9050919050565b7fea5f4eb72290e50c32abd6c23e45de3d8300b3286e1cbc2e293114b92e034e5e611134816112f8565b6111488260016114ec90919063ffffffff16565b61117e576040517fb370e90400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61118782611a34565b5050565b7fea5f4eb72290e50c32abd6c23e45de3d8300b3286e1cbc2e293114b92e034e5e6111b5816112f8565b6111be82611954565b6111d2826001611a0790919063ffffffff16565b611208576040517ff280d16100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8173ffffffffffffffffffffffffffffffffffffffff167f60305ce6c9104acd0969d358f926bf391174340660aaf5e6215261fd6847bf4660405160405180910390a25050565b5f5f600681111561126357611262612505565b5b60ff16611271858585610feb565b60ff161490509392505050565b606061128a60036117c7565b905090565b5f7f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b611309816113046113f5565b611ac4565b50565b5f6113178383610ca2565b6113eb5760015f5f8581526020019081526020015f205f015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055506113886113f5565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16847f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a4600190506113ef565b5f90505b92915050565b5f6113fe611b15565b905090565b5f61140e8383610ca2565b156114e2575f5f5f8581526020019081526020015f205f015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555061147f6113f5565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16847ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b60405160405180910390a4600190506114e6565b5f90505b92915050565b5f611511835f018373ffffffffffffffffffffffffffffffffffffffff165f1b611b7d565b905092915050565b5f611524600161188f565b90505f5f90505b818110156115bd576115478160016118a290919063ffffffff16565b73ffffffffffffffffffffffffffffffffffffffff16633e5af4ca878787876040518563ffffffff1660e01b81526004016115859493929190612715565b5f604051808303815f87803b15801561159c575f5ffd5b505af11580156115ae573d5f5f3e3d5ffd5b5050505080600101905061152b565b505050505050565b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361162a576040517fdc418b8000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61163e8160036114ec90919063ffffffff16565b15611675576040517ff423354700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611689816003611a0790919063ffffffff16565b6116bf576040517f369bb9e600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7f2de35142b19ed5a07796cf30791959c592018f70b1d2d7c460eef8ffe713692b816040516116ee9190612314565b60405180910390a150565b61170d8160036114ec90919063ffffffff16565b611743576040517fd456910600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611757816003611b9d90919063ffffffff16565b61178d576040517f369bb9e600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7f28a4ca7134a3b3f9aff286e79ad3daadb4a06d1b43d037a3a98bdc074edd9b7a816040516117bc9190612314565b60405180910390a150565b60605f6117d5835f01611bca565b905060608190508092505050919050565b5f6117f1600161188f565b90505f5f90505b81811015611888576118148160016118a290919063ffffffff16565b73ffffffffffffffffffffffffffffffffffffffff16638baf29b48686866040518463ffffffff1660e01b815260040161185093929190612797565b5f604051808303815f87803b158015611867575f5ffd5b505af1158015611879573d5f5f3e3d5ffd5b505050508060010190506117f8565b5050505050565b5f61189b825f01611c23565b9050919050565b5f6118af835f0183611c32565b5f1c905092915050565b5f5f5f8481526020019081526020015f205f015f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16905092915050565b7fdbf61473843cd9be1c9791ce51ef66d0da6c9026d62ba80c1ca433b13fb729b260405160405180910390a16119526001611c59565b565b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036119b9576040517ff9d152fb00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6119cd8160016114ec90919063ffffffff16565b15611a04576040517fcc790a4b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50565b5f611a2c835f018373ffffffffffffffffffffffffffffffffffffffff165f1b611c67565b905092915050565b611a48816001611b9d90919063ffffffff16565b611a7e576040517ff280d16100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff167f6d83315c9718799346b67584ec64301b1457e989c8e35a8e2982a7776c04bfc460405160405180910390a250565b611ace8282610ca2565b611b115780826040517fe2517d3f000000000000000000000000000000000000000000000000000000008152600401611b089291906127cc565b60405180910390fd5b5050565b5f5f5f36905090505f611b26611cce565b9050808210158015611b3d5750611b3c33610941565b5b15611b6d575f36828403908092611b56939291906127fb565b90611b619190612876565b60601c92505050611b7a565b611b75611cdc565b925050505b90565b5f5f836001015f8481526020019081526020015f20541415905092915050565b5f611bc2835f018373ffffffffffffffffffffffffffffffffffffffff165f1b611ce3565b905092915050565b6060815f01805480602002602001604051908101604052809291908181526020018280548015611c1757602002820191905f5260205f20905b815481526020019060010190808311611c03575b50505050509050919050565b5f815f01805490509050919050565b5f825f018281548110611c4857611c476126e8565b5b905f5260205f200154905092915050565b611c64815f01611ddf565b50565b5f611c728383611b7d565b611cc457825f0182908060018154018082558091505060019003905f5260205f20015f9091909190915055825f0180549050836001015f8481526020019081526020015f208190555060019050611cc8565b5f90505b92915050565b5f611cd7611e47565b905090565b5f33905090565b5f5f836001015f8481526020019081526020015f205490505f8114611dd4575f600182611d109190612901565b90505f6001865f0180549050611d269190612901565b9050808214611d8c575f865f018281548110611d4557611d446126e8565b5b905f5260205f200154905080875f018481548110611d6657611d656126e8565b5b905f5260205f20018190555083876001015f8381526020019081526020015f2081905550505b855f01805480611d9f57611d9e612934565b5b600190038181905f5260205f20015f90559055856001015f8681526020019081526020015f205f905560019350505050611dd9565b5f9150505b92915050565b5f611de982611c23565b90505f5f90505b81811015611e3657826001015f845f018381548110611e1257611e116126e8565b5b905f5260205f20015481526020019081526020015f205f9055806001019050611df0565b50611e43825f015f611e4f565b5050565b5f6014905090565b8082555050565b5f604051905090565b5f5ffd5b5f5ffd5b5f7fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b611e9b81611e67565b8114611ea5575f5ffd5b50565b5f81359050611eb681611e92565b92915050565b5f60208284031215611ed157611ed0611e5f565b5b5f611ede84828501611ea8565b91505092915050565b5f8115159050919050565b611efb81611ee7565b82525050565b5f602082019050611f145f830184611ef2565b92915050565b5f819050919050565b611f2c81611f1a565b82525050565b5f602082019050611f455f830184611f23565b92915050565b611f5481611f1a565b8114611f5e575f5ffd5b50565b5f81359050611f6f81611f4b565b92915050565b5f60208284031215611f8a57611f89611e5f565b5b5f611f9784828501611f61565b91505092915050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f611fc982611fa0565b9050919050565b611fd981611fbf565b8114611fe3575f5ffd5b50565b5f81359050611ff481611fd0565b92915050565b5f5f604083850312156120105761200f611e5f565b5b5f61201d85828601611f61565b925050602061202e85828601611fe6565b9150509250929050565b5f819050919050565b61204a81612038565b8114612054575f5ffd5b50565b5f8135905061206581612041565b92915050565b5f5f5f5f6080858703121561208357612082611e5f565b5b5f61209087828801611fe6565b94505060206120a187828801611fe6565b93505060406120b287828801611fe6565b92505060606120c387828801612057565b91505092959194509250565b5f602082840312156120e4576120e3611e5f565b5b5f6120f184828501611fe6565b91505092915050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b61212c81611fbf565b82525050565b5f61213d8383612123565b60208301905092915050565b5f602082019050919050565b5f61215f826120fa565b6121698185612104565b935061217483612114565b805f5b838110156121a457815161218b8882612132565b975061219683612149565b925050600181019050612177565b5085935050505092915050565b5f6020820190508181035f8301526121c98184612155565b905092915050565b5f6121db82611fbf565b9050919050565b6121eb816121d1565b81146121f5575f5ffd5b50565b5f81359050612206816121e2565b92915050565b5f6020828403121561222157612220611e5f565b5b5f61222e848285016121f8565b91505092915050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f61227982612237565b6122838185612241565b9350612293818560208601612251565b61229c8161225f565b840191505092915050565b5f6020820190508181035f8301526122bf818461226f565b905092915050565b5f5f604083850312156122dd576122dc611e5f565b5b5f6122ea85828601611fe6565b92505060206122fb85828601612057565b9150509250929050565b61230e81611fbf565b82525050565b5f6020820190506123275f830184612305565b92915050565b5f60ff82169050919050565b6123428161232d565b811461234c575f5ffd5b50565b5f8135905061235d81612339565b92915050565b5f6020828403121561237857612377611e5f565b5b5f6123858482850161234f565b91505092915050565b5f5f5f606084860312156123a5576123a4611e5f565b5b5f6123b286828701611fe6565b93505060206123c386828701611fe6565b92505060406123d486828701612057565b9150509250925092565b5f5ffd5b5f5ffd5b5f5ffd5b5f5f83601f8401126123ff576123fe6123de565b5b8235905067ffffffffffffffff81111561241c5761241b6123e2565b5b602083019150836020820283011115612438576124376123e6565b5b9250929050565b5f5f6020838503121561245557612454611e5f565b5b5f83013567ffffffffffffffff81111561247257612471611e63565b5b61247e858286016123ea565b92509250509250929050565b61249381612038565b82525050565b5f6020820190506124ac5f83018461248a565b92915050565b6124bb8161232d565b82525050565b5f6020820190506124d45f8301846124b2565b92915050565b5f602082840312156124ef576124ee611e5f565b5b5f6124fc84828501612057565b91505092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602160045260245ffd5b61253b81611ee7565b8114612545575f5ffd5b50565b5f8151905061255681612532565b92915050565b5f6020828403121561257157612570611e5f565b5b5f61257e84828501612548565b91505092915050565b5f5ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b6125c18261225f565b810181811067ffffffffffffffff821117156125e0576125df61258b565b5b80604052505050565b5f6125f2611e56565b90506125fe82826125b8565b919050565b5f67ffffffffffffffff82111561261d5761261c61258b565b5b6126268261225f565b9050602081019050919050565b5f61264561264084612603565b6125e9565b90508281526020810184848401111561266157612660612587565b5b61266c848285612251565b509392505050565b5f82601f830112612688576126876123de565b5b8151612698848260208601612633565b91505092915050565b5f602082840312156126b6576126b5611e5f565b5b5f82015167ffffffffffffffff8111156126d3576126d2611e63565b5b6126df84828501612674565b91505092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f6080820190506127285f830187612305565b6127356020830186612305565b6127426040830185612305565b61274f606083018461248a565b95945050505050565b5f8151905061276681612339565b92915050565b5f6020828403121561278157612780611e5f565b5b5f61278e84828501612758565b91505092915050565b5f6060820190506127aa5f830186612305565b6127b76020830185612305565b6127c4604083018461248a565b949350505050565b5f6040820190506127df5f830185612305565b6127ec6020830184611f23565b9392505050565b5f5ffd5b5f5ffd5b5f5f8585111561280e5761280d6127f3565b5b8386111561281f5761281e6127f7565b5b6001850283019150848603905094509492505050565b5f82905092915050565b5f7fffffffffffffffffffffffffffffffffffffffff00000000000000000000000082169050919050565b5f82821b905092915050565b5f6128818383612835565b8261288c813561283f565b925060148210156128cc576128c77fffffffffffffffffffffffffffffffffffffffff0000000000000000000000008360140360080261286a565b831692505b505092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f61290b82612038565b915061291683612038565b925082820390508181111561292e5761292d6128d4565b5b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603160045260245ffdfea2646970667358221220e0094026c1397003920d08e899aa02c502b551f90670a3dc20116960ba068d3064736f6c634300081e0033", + "deployedBytecode": "0x608060405234801561000f575f5ffd5b5060043610610204575f3560e01c80638baf29b411610118578063bc13eacc116100ab578063db18af6c1161007a578063db18af6c146105fa578063df21950f1461062a578063e3c4602c14610646578063e46638e614610662578063e54621d21461069257610204565b8063bc13eacc14610560578063d32c7bb51461057e578063d4ce1415146105ae578063d547741f146105de57610204565b80639b11c115116100e75780639b11c115146104fe578063a217fddf1461051c578063b043572e1461053a578063b27aef3a1461054457610204565b80638baf29b4146104665780638d2ea7721461048257806391d148541461049e578063993e8b95146104ce57610204565b806352f6747a1161019b5780635f8dead31161016a5780635f8dead3146103ae5780636a3edf28146103ca5780637157797f146103e85780637da0a877146104185780637f4ab1dd1461043657610204565b806352f6747a1461031257806354e4b9451461033057806354fd4d5014610360578063572b6c051461037e57610204565b806336568abe116101d757806336568abe146102a25780633e5af4ca146102be5780633ff5aa02146102da57806340db3b50146102f657610204565b806301ffc9a71461020857806303c26bcd14610238578063248a9ca3146102565780632f2ff15d14610286575b5f5ffd5b610222600480360381019061021d9190611ebc565b6106b0565b60405161022f9190611f01565b60405180910390f35b610240610729565b60405161024d9190611f32565b60405180910390f35b610270600480360381019061026b9190611f75565b61074d565b60405161027d9190611f32565b60405180910390f35b6102a0600480360381019061029b9190611ffa565b610769565b005b6102bc60048036038101906102b79190611ffa565b61078b565b005b6102d860048036038101906102d3919061206b565b610806565b005b6102f460048036038101906102ef91906120cf565b610869565b005b610310600480360381019061030b91906120cf565b6108a0565b005b61031a6108d7565b60405161032791906121b1565b60405180910390f35b61034a6004803603810190610345919061220c565b6108e8565b6040516103579190611f01565b60405180910390f35b610368610904565b60405161037591906122a7565b60405180910390f35b610398600480360381019061039391906120cf565b610941565b6040516103a59190611f01565b60405180910390f35b6103c860048036038101906103c391906122c7565b61097f565b005b6103d26109df565b6040516103df9190612314565b60405180910390f35b61040260048036038101906103fd919061206b565b610a13565b60405161040f9190611f01565b60405180910390f35b610420610a44565b60405161042d9190612314565b60405180910390f35b610450600480360381019061044b9190612363565b610a6b565b60405161045d91906122a7565b60405180910390f35b610480600480360381019061047b919061238e565b610be1565b005b61049c600480360381019061049791906122c7565b610c42565b005b6104b860048036038101906104b39190611ffa565b610ca2565b6040516104c59190611f01565b60405180910390f35b6104e860048036038101906104e391906120cf565b610cd0565b6040516104f59190611f01565b60405180910390f35b610506610cec565b6040516105139190611f32565b60405180910390f35b610524610d10565b6040516105319190611f32565b60405180910390f35b610542610d16565b005b61055e6004803603810190610559919061243f565b610d4b565b005b610568610ef7565b6040516105759190612499565b60405180910390f35b6105986004803603810190610593919061206b565b610f07565b6040516105a591906124c1565b60405180910390f35b6105c860048036038101906105c3919061238e565b610feb565b6040516105d591906124c1565b60405180910390f35b6105f860048036038101906105f39190611ffa565b6110cc565b005b610614600480360381019061060f91906124da565b6110ee565b6040516106219190612314565b60405180910390f35b610644600480360381019061063f919061220c565b61110a565b005b610660600480360381019061065b919061220c565b61118b565b005b61067c6004803603810190610677919061238e565b61124f565b6040516106899190611f01565b60405180910390f35b61069a61127e565b6040516106a791906121b1565b60405180910390f35b5f7f7965db0b000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061072257506107218261128f565b5b9050919050565b7fe5c50d0927e06141e032cb9a67e1d7092dc85c0b0825191f7e1cede60002856881565b5f5f5f8381526020019081526020015f20600101549050919050565b6107728261074d565b61077b816112f8565b610785838361130c565b50505050565b6107936113f5565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16146107f7576040517f6697b23200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6108018282611403565b505050565b6108216108116113f5565b60036114ec90919063ffffffff16565b610857576040517fe39b3c8f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61086384848484611519565b50505050565b7fe5c50d0927e06141e032cb9a67e1d7092dc85c0b0825191f7e1cede600028568610893816112f8565b61089c826115c5565b5050565b7fe5c50d0927e06141e032cb9a67e1d7092dc85c0b0825191f7e1cede6000285686108ca816112f8565b6108d3826116f9565b5050565b60606108e360016117c7565b905090565b5f6108fd8260016114ec90919063ffffffff16565b9050919050565b60606040518060400160405280600581526020017f332e302e30000000000000000000000000000000000000000000000000000000815250905090565b5f61094a610a44565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16149050919050565b61099a61098a6113f5565b60036114ec90919063ffffffff16565b6109d0576040517fe39b3c8f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6109db5f83836117e6565b5050565b5f5f6109eb600361188f565b1115610a0c57610a055f60036118a290919063ffffffff16565b9050610a10565b5f90505b90565b5f5f6006811115610a2757610a26612505565b5b60ff16610a3686868686610f07565b60ff16149050949350505050565b5f7f0000000000000000000000000000000000000000000000000000000000000000905090565b60605f610a76610ef7565b90505f5f90505b81811015610ba157610a8e816110ee565b73ffffffffffffffffffffffffffffffffffffffff16637d045df6856040518263ffffffff1660e01b8152600401610ac691906124c1565b602060405180830381865afa158015610ae1573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610b05919061255c565b15610b9657610b13816110ee565b73ffffffffffffffffffffffffffffffffffffffff16637f4ab1dd856040518263ffffffff1660e01b8152600401610b4b91906124c1565b5f60405180830381865afa158015610b65573d5f5f3e3d5ffd5b505050506040513d5f823e3d601f19601f82011682018060405250810190610b8d91906126a1565b92505050610bdc565b806001019050610a7d565b506040518060400160405280601881526020017f556e6b6e6f776e207265737472696374696f6e20636f646500000000000000008152509150505b919050565b610bfc610bec6113f5565b60036114ec90919063ffffffff16565b610c32576040517fe39b3c8f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610c3d8383836117e6565b505050565b610c5d610c4d6113f5565b60036114ec90919063ffffffff16565b610c93576040517fe39b3c8f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610c9e825f836117e6565b5050565b5f610caf5f5f1b836118b9565b15610cbd5760019050610cca565b610cc783836118b9565b90505b92915050565b5f610ce58260036114ec90919063ffffffff16565b9050919050565b7fea5f4eb72290e50c32abd6c23e45de3d8300b3286e1cbc2e293114b92e034e5e81565b5f5f1b81565b7fea5f4eb72290e50c32abd6c23e45de3d8300b3286e1cbc2e293114b92e034e5e610d40816112f8565b610d4861191c565b50565b7fea5f4eb72290e50c32abd6c23e45de3d8300b3286e1cbc2e293114b92e034e5e610d75816112f8565b5f8383905003610db1576040517f59203cb900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f610dbc600161188f565b1115610dcb57610dca61191c565b5b5f5f90505b83839050811015610ef157610e0b848483818110610df157610df06126e8565b5b9050602002016020810190610e06919061220c565b611954565b610e46848483818110610e2157610e206126e8565b5b9050602002016020810190610e36919061220c565b6001611a0790919063ffffffff16565b610e7c576040517ff280d16100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b838382818110610e8f57610e8e6126e8565b5b9050602002016020810190610ea4919061220c565b73ffffffffffffffffffffffffffffffffffffffff167f60305ce6c9104acd0969d358f926bf391174340660aaf5e6215261fd6847bf4660405160405180910390a2806001019050610dd0565b50505050565b5f610f02600161188f565b905090565b5f5f610f11610ef7565b90505f5f90505b81811015610fcb575f610f2a826110ee565b73ffffffffffffffffffffffffffffffffffffffff1663d32c7bb5898989896040518563ffffffff1660e01b8152600401610f689493929190612715565b602060405180830381865afa158015610f83573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610fa7919061276c565b90505f8160ff161115610fbf57809350505050610fe3565b50806001019050610f18565b505f6006811115610fdf57610fde612505565b5b9150505b949350505050565b5f5f610ff5610ef7565b90505f5f90505b818110156110ad575f61100e826110ee565b73ffffffffffffffffffffffffffffffffffffffff1663d4ce14158888886040518463ffffffff1660e01b815260040161104a93929190612797565b602060405180830381865afa158015611065573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611089919061276c565b90505f8160ff1611156110a1578093505050506110c5565b50806001019050610ffc565b505f60068111156110c1576110c0612505565b5b9150505b9392505050565b6110d58261074d565b6110de816112f8565b6110e88383611403565b50505050565b5f6111038260016118a290919063ffffffff16565b9050919050565b7fea5f4eb72290e50c32abd6c23e45de3d8300b3286e1cbc2e293114b92e034e5e611134816112f8565b6111488260016114ec90919063ffffffff16565b61117e576040517fb370e90400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61118782611a34565b5050565b7fea5f4eb72290e50c32abd6c23e45de3d8300b3286e1cbc2e293114b92e034e5e6111b5816112f8565b6111be82611954565b6111d2826001611a0790919063ffffffff16565b611208576040517ff280d16100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8173ffffffffffffffffffffffffffffffffffffffff167f60305ce6c9104acd0969d358f926bf391174340660aaf5e6215261fd6847bf4660405160405180910390a25050565b5f5f600681111561126357611262612505565b5b60ff16611271858585610feb565b60ff161490509392505050565b606061128a60036117c7565b905090565b5f7f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b611309816113046113f5565b611ac4565b50565b5f6113178383610ca2565b6113eb5760015f5f8581526020019081526020015f205f015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055506113886113f5565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16847f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a4600190506113ef565b5f90505b92915050565b5f6113fe611b15565b905090565b5f61140e8383610ca2565b156114e2575f5f5f8581526020019081526020015f205f015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555061147f6113f5565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16847ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b60405160405180910390a4600190506114e6565b5f90505b92915050565b5f611511835f018373ffffffffffffffffffffffffffffffffffffffff165f1b611b7d565b905092915050565b5f611524600161188f565b90505f5f90505b818110156115bd576115478160016118a290919063ffffffff16565b73ffffffffffffffffffffffffffffffffffffffff16633e5af4ca878787876040518563ffffffff1660e01b81526004016115859493929190612715565b5f604051808303815f87803b15801561159c575f5ffd5b505af11580156115ae573d5f5f3e3d5ffd5b5050505080600101905061152b565b505050505050565b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361162a576040517fdc418b8000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61163e8160036114ec90919063ffffffff16565b15611675576040517ff423354700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611689816003611a0790919063ffffffff16565b6116bf576040517f369bb9e600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7f2de35142b19ed5a07796cf30791959c592018f70b1d2d7c460eef8ffe713692b816040516116ee9190612314565b60405180910390a150565b61170d8160036114ec90919063ffffffff16565b611743576040517fd456910600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611757816003611b9d90919063ffffffff16565b61178d576040517f369bb9e600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7f28a4ca7134a3b3f9aff286e79ad3daadb4a06d1b43d037a3a98bdc074edd9b7a816040516117bc9190612314565b60405180910390a150565b60605f6117d5835f01611bca565b905060608190508092505050919050565b5f6117f1600161188f565b90505f5f90505b81811015611888576118148160016118a290919063ffffffff16565b73ffffffffffffffffffffffffffffffffffffffff16638baf29b48686866040518463ffffffff1660e01b815260040161185093929190612797565b5f604051808303815f87803b158015611867575f5ffd5b505af1158015611879573d5f5f3e3d5ffd5b505050508060010190506117f8565b5050505050565b5f61189b825f01611c23565b9050919050565b5f6118af835f0183611c32565b5f1c905092915050565b5f5f5f8481526020019081526020015f205f015f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16905092915050565b7fdbf61473843cd9be1c9791ce51ef66d0da6c9026d62ba80c1ca433b13fb729b260405160405180910390a16119526001611c59565b565b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036119b9576040517ff9d152fb00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6119cd8160016114ec90919063ffffffff16565b15611a04576040517fcc790a4b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50565b5f611a2c835f018373ffffffffffffffffffffffffffffffffffffffff165f1b611c67565b905092915050565b611a48816001611b9d90919063ffffffff16565b611a7e576040517ff280d16100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff167f6d83315c9718799346b67584ec64301b1457e989c8e35a8e2982a7776c04bfc460405160405180910390a250565b611ace8282610ca2565b611b115780826040517fe2517d3f000000000000000000000000000000000000000000000000000000008152600401611b089291906127cc565b60405180910390fd5b5050565b5f5f5f36905090505f611b26611cce565b9050808210158015611b3d5750611b3c33610941565b5b15611b6d575f36828403908092611b56939291906127fb565b90611b619190612876565b60601c92505050611b7a565b611b75611cdc565b925050505b90565b5f5f836001015f8481526020019081526020015f20541415905092915050565b5f611bc2835f018373ffffffffffffffffffffffffffffffffffffffff165f1b611ce3565b905092915050565b6060815f01805480602002602001604051908101604052809291908181526020018280548015611c1757602002820191905f5260205f20905b815481526020019060010190808311611c03575b50505050509050919050565b5f815f01805490509050919050565b5f825f018281548110611c4857611c476126e8565b5b905f5260205f200154905092915050565b611c64815f01611ddf565b50565b5f611c728383611b7d565b611cc457825f0182908060018154018082558091505060019003905f5260205f20015f9091909190915055825f0180549050836001015f8481526020019081526020015f208190555060019050611cc8565b5f90505b92915050565b5f611cd7611e47565b905090565b5f33905090565b5f5f836001015f8481526020019081526020015f205490505f8114611dd4575f600182611d109190612901565b90505f6001865f0180549050611d269190612901565b9050808214611d8c575f865f018281548110611d4557611d446126e8565b5b905f5260205f200154905080875f018481548110611d6657611d656126e8565b5b905f5260205f20018190555083876001015f8381526020019081526020015f2081905550505b855f01805480611d9f57611d9e612934565b5b600190038181905f5260205f20015f90559055856001015f8681526020019081526020015f205f905560019350505050611dd9565b5f9150505b92915050565b5f611de982611c23565b90505f5f90505b81811015611e3657826001015f845f018381548110611e1257611e116126e8565b5b905f5260205f20015481526020019081526020015f205f9055806001019050611df0565b50611e43825f015f611e4f565b5050565b5f6014905090565b8082555050565b5f604051905090565b5f5ffd5b5f5ffd5b5f7fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b611e9b81611e67565b8114611ea5575f5ffd5b50565b5f81359050611eb681611e92565b92915050565b5f60208284031215611ed157611ed0611e5f565b5b5f611ede84828501611ea8565b91505092915050565b5f8115159050919050565b611efb81611ee7565b82525050565b5f602082019050611f145f830184611ef2565b92915050565b5f819050919050565b611f2c81611f1a565b82525050565b5f602082019050611f455f830184611f23565b92915050565b611f5481611f1a565b8114611f5e575f5ffd5b50565b5f81359050611f6f81611f4b565b92915050565b5f60208284031215611f8a57611f89611e5f565b5b5f611f9784828501611f61565b91505092915050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f611fc982611fa0565b9050919050565b611fd981611fbf565b8114611fe3575f5ffd5b50565b5f81359050611ff481611fd0565b92915050565b5f5f604083850312156120105761200f611e5f565b5b5f61201d85828601611f61565b925050602061202e85828601611fe6565b9150509250929050565b5f819050919050565b61204a81612038565b8114612054575f5ffd5b50565b5f8135905061206581612041565b92915050565b5f5f5f5f6080858703121561208357612082611e5f565b5b5f61209087828801611fe6565b94505060206120a187828801611fe6565b93505060406120b287828801611fe6565b92505060606120c387828801612057565b91505092959194509250565b5f602082840312156120e4576120e3611e5f565b5b5f6120f184828501611fe6565b91505092915050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b61212c81611fbf565b82525050565b5f61213d8383612123565b60208301905092915050565b5f602082019050919050565b5f61215f826120fa565b6121698185612104565b935061217483612114565b805f5b838110156121a457815161218b8882612132565b975061219683612149565b925050600181019050612177565b5085935050505092915050565b5f6020820190508181035f8301526121c98184612155565b905092915050565b5f6121db82611fbf565b9050919050565b6121eb816121d1565b81146121f5575f5ffd5b50565b5f81359050612206816121e2565b92915050565b5f6020828403121561222157612220611e5f565b5b5f61222e848285016121f8565b91505092915050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f61227982612237565b6122838185612241565b9350612293818560208601612251565b61229c8161225f565b840191505092915050565b5f6020820190508181035f8301526122bf818461226f565b905092915050565b5f5f604083850312156122dd576122dc611e5f565b5b5f6122ea85828601611fe6565b92505060206122fb85828601612057565b9150509250929050565b61230e81611fbf565b82525050565b5f6020820190506123275f830184612305565b92915050565b5f60ff82169050919050565b6123428161232d565b811461234c575f5ffd5b50565b5f8135905061235d81612339565b92915050565b5f6020828403121561237857612377611e5f565b5b5f6123858482850161234f565b91505092915050565b5f5f5f606084860312156123a5576123a4611e5f565b5b5f6123b286828701611fe6565b93505060206123c386828701611fe6565b92505060406123d486828701612057565b9150509250925092565b5f5ffd5b5f5ffd5b5f5ffd5b5f5f83601f8401126123ff576123fe6123de565b5b8235905067ffffffffffffffff81111561241c5761241b6123e2565b5b602083019150836020820283011115612438576124376123e6565b5b9250929050565b5f5f6020838503121561245557612454611e5f565b5b5f83013567ffffffffffffffff81111561247257612471611e63565b5b61247e858286016123ea565b92509250509250929050565b61249381612038565b82525050565b5f6020820190506124ac5f83018461248a565b92915050565b6124bb8161232d565b82525050565b5f6020820190506124d45f8301846124b2565b92915050565b5f602082840312156124ef576124ee611e5f565b5b5f6124fc84828501612057565b91505092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602160045260245ffd5b61253b81611ee7565b8114612545575f5ffd5b50565b5f8151905061255681612532565b92915050565b5f6020828403121561257157612570611e5f565b5b5f61257e84828501612548565b91505092915050565b5f5ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b6125c18261225f565b810181811067ffffffffffffffff821117156125e0576125df61258b565b5b80604052505050565b5f6125f2611e56565b90506125fe82826125b8565b919050565b5f67ffffffffffffffff82111561261d5761261c61258b565b5b6126268261225f565b9050602081019050919050565b5f61264561264084612603565b6125e9565b90508281526020810184848401111561266157612660612587565b5b61266c848285612251565b509392505050565b5f82601f830112612688576126876123de565b5b8151612698848260208601612633565b91505092915050565b5f602082840312156126b6576126b5611e5f565b5b5f82015167ffffffffffffffff8111156126d3576126d2611e63565b5b6126df84828501612674565b91505092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f6080820190506127285f830187612305565b6127356020830186612305565b6127426040830185612305565b61274f606083018461248a565b95945050505050565b5f8151905061276681612339565b92915050565b5f6020828403121561278157612780611e5f565b5b5f61278e84828501612758565b91505092915050565b5f6060820190506127aa5f830186612305565b6127b76020830185612305565b6127c4604083018461248a565b949350505050565b5f6040820190506127df5f830185612305565b6127ec6020830184611f23565b9392505050565b5f5ffd5b5f5ffd5b5f5f8585111561280e5761280d6127f3565b5b8386111561281f5761281e6127f7565b5b6001850283019150848603905094509492505050565b5f82905092915050565b5f7fffffffffffffffffffffffffffffffffffffffff00000000000000000000000082169050919050565b5f82821b905092915050565b5f6128818383612835565b8261288c813561283f565b925060148210156128cc576128c77fffffffffffffffffffffffffffffffffffffffff0000000000000000000000008360140360080261286a565b831692505b505092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f61290b82612038565b915061291683612038565b925082820390508181111561292e5761292d6128d4565b5b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603160045260245ffdfea2646970667358221220e0094026c1397003920d08e899aa02c502b551f90670a3dc20116960ba068d3064736f6c634300081e0033", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/doc/compilation/hardhat/src/RuleEngineBase.sol/RuleEngineBase.dbg.json b/doc/compilation/hardhat/src/RuleEngineBase.sol/RuleEngineBase.dbg.json new file mode 100644 index 0000000..7270191 --- /dev/null +++ b/doc/compilation/hardhat/src/RuleEngineBase.sol/RuleEngineBase.dbg.json @@ -0,0 +1,4 @@ +{ + "_format": "hh-sol-dbg-1", + "buildInfo": "../../build-info/23e4357cece7f7823104260edabd5f69.json" +} diff --git a/doc/compilation/hardhat/src/RuleEngineBase.sol/RuleEngineBase.json b/doc/compilation/hardhat/src/RuleEngineBase.sol/RuleEngineBase.json new file mode 100644 index 0000000..2c66cc2 --- /dev/null +++ b/doc/compilation/hardhat/src/RuleEngineBase.sol/RuleEngineBase.json @@ -0,0 +1,801 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "RuleEngineBase", + "sourceName": "src/RuleEngineBase.sol", + "abi": [ + { + "inputs": [], + "name": "AccessControlBadConfirmation", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + }, + { + "internalType": "bytes32", + "name": "neededRole", + "type": "bytes32" + } + ], + "name": "AccessControlUnauthorizedAccount", + "type": "error" + }, + { + "inputs": [], + "name": "RuleEngine_AdminWithAddressZeroNotAllowed", + "type": "error" + }, + { + "inputs": [], + "name": "RuleEngine_ERC3643Compliance_InvalidTokenAddress", + "type": "error" + }, + { + "inputs": [], + "name": "RuleEngine_ERC3643Compliance_OperationNotSuccessful", + "type": "error" + }, + { + "inputs": [], + "name": "RuleEngine_ERC3643Compliance_TokenAlreadyBound", + "type": "error" + }, + { + "inputs": [], + "name": "RuleEngine_ERC3643Compliance_TokenNotBound", + "type": "error" + }, + { + "inputs": [], + "name": "RuleEngine_ERC3643Compliance_UnauthorizedCaller", + "type": "error" + }, + { + "inputs": [], + "name": "RuleEngine_RulesManagementModule_ArrayIsEmpty", + "type": "error" + }, + { + "inputs": [], + "name": "RuleEngine_RulesManagementModule_OperationNotSuccessful", + "type": "error" + }, + { + "inputs": [], + "name": "RuleEngine_RulesManagementModule_RuleAddressZeroNotAllowed", + "type": "error" + }, + { + "inputs": [], + "name": "RuleEngine_RulesManagementModule_RuleAlreadyExists", + "type": "error" + }, + { + "inputs": [], + "name": "RuleEngine_RulesManagementModule_RuleDoNotMatch", + "type": "error" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "contract IRule", + "name": "rule", + "type": "address" + } + ], + "name": "AddRule", + "type": "event" + }, + { + "anonymous": false, + "inputs": [], + "name": "ClearRules", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "contract IRule", + "name": "rule", + "type": "address" + } + ], + "name": "RemoveRule", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "indexed": true, + "internalType": "bytes32", + "name": "previousAdminRole", + "type": "bytes32" + }, + { + "indexed": true, + "internalType": "bytes32", + "name": "newAdminRole", + "type": "bytes32" + } + ], + "name": "RoleAdminChanged", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "indexed": true, + "internalType": "address", + "name": "account", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "sender", + "type": "address" + } + ], + "name": "RoleGranted", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "indexed": true, + "internalType": "address", + "name": "account", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "sender", + "type": "address" + } + ], + "name": "RoleRevoked", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "token", + "type": "address" + } + ], + "name": "TokenBound", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "token", + "type": "address" + } + ], + "name": "TokenUnbound", + "type": "event" + }, + { + "inputs": [], + "name": "COMPLIANCE_MANAGER_ROLE", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "DEFAULT_ADMIN_ROLE", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "RULES_MANAGEMENT_ROLE", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "contract IRule", + "name": "rule_", + "type": "address" + } + ], + "name": "addRule", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "token", + "type": "address" + } + ], + "name": "bindToken", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "canTransfer", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "canTransferFrom", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "clearRules", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "contract IRule", + "name": "rule_", + "type": "address" + } + ], + "name": "containsRule", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "created", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "destroyed", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "detectTransferRestriction", + "outputs": [ + { + "internalType": "uint8", + "name": "", + "type": "uint8" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "detectTransferRestrictionFrom", + "outputs": [ + { + "internalType": "uint8", + "name": "", + "type": "uint8" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + } + ], + "name": "getRoleAdmin", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "getTokenBound", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "getTokenBounds", + "outputs": [ + { + "internalType": "address[]", + "name": "", + "type": "address[]" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "grantRole", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "hasRole", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "token", + "type": "address" + } + ], + "name": "isTokenBound", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint8", + "name": "restrictionCode", + "type": "uint8" + } + ], + "name": "messageForTransferRestriction", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "contract IRule", + "name": "rule_", + "type": "address" + } + ], + "name": "removeRule", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "internalType": "address", + "name": "callerConfirmation", + "type": "address" + } + ], + "name": "renounceRole", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "revokeRole", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "ruleId", + "type": "uint256" + } + ], + "name": "rule", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "rules", + "outputs": [ + { + "internalType": "address[]", + "name": "", + "type": "address[]" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "rulesCount", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "contract IRule[]", + "name": "rules_", + "type": "address[]" + } + ], + "name": "setRules", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes4", + "name": "interfaceId", + "type": "bytes4" + } + ], + "name": "supportsInterface", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "transferred", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "transferred", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "token", + "type": "address" + } + ], + "name": "unbindToken", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "version", + "outputs": [ + { + "internalType": "string", + "name": "version_", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + } + ], + "bytecode": "0x", + "deployedBytecode": "0x", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/doc/compilation/hardhat/src/interfaces/IERC3643Compliance.sol/IERC3643Compliance.dbg.json b/doc/compilation/hardhat/src/interfaces/IERC3643Compliance.sol/IERC3643Compliance.dbg.json new file mode 100644 index 0000000..d9b9f08 --- /dev/null +++ b/doc/compilation/hardhat/src/interfaces/IERC3643Compliance.sol/IERC3643Compliance.dbg.json @@ -0,0 +1,4 @@ +{ + "_format": "hh-sol-dbg-1", + "buildInfo": "../../../build-info/23e4357cece7f7823104260edabd5f69.json" +} diff --git a/doc/compilation/hardhat/src/interfaces/IERC3643Compliance.sol/IERC3643Compliance.json b/doc/compilation/hardhat/src/interfaces/IERC3643Compliance.sol/IERC3643Compliance.json new file mode 100644 index 0000000..120674e --- /dev/null +++ b/doc/compilation/hardhat/src/interfaces/IERC3643Compliance.sol/IERC3643Compliance.json @@ -0,0 +1,196 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "IERC3643Compliance", + "sourceName": "src/interfaces/IERC3643Compliance.sol", + "abi": [ + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "token", + "type": "address" + } + ], + "name": "TokenBound", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "token", + "type": "address" + } + ], + "name": "TokenUnbound", + "type": "event" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "token", + "type": "address" + } + ], + "name": "bindToken", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "canTransfer", + "outputs": [ + { + "internalType": "bool", + "name": "isValid", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "created", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "destroyed", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "getTokenBound", + "outputs": [ + { + "internalType": "address", + "name": "token", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "getTokenBounds", + "outputs": [ + { + "internalType": "address[]", + "name": "tokens", + "type": "address[]" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "token", + "type": "address" + } + ], + "name": "isTokenBound", + "outputs": [ + { + "internalType": "bool", + "name": "isBound", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "transferred", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "token", + "type": "address" + } + ], + "name": "unbindToken", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + } + ], + "bytecode": "0x", + "deployedBytecode": "0x", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/doc/compilation/hardhat/src/interfaces/IRule.sol/IRule.dbg.json b/doc/compilation/hardhat/src/interfaces/IRule.sol/IRule.dbg.json new file mode 100644 index 0000000..d9b9f08 --- /dev/null +++ b/doc/compilation/hardhat/src/interfaces/IRule.sol/IRule.dbg.json @@ -0,0 +1,4 @@ +{ + "_format": "hh-sol-dbg-1", + "buildInfo": "../../../build-info/23e4357cece7f7823104260edabd5f69.json" +} diff --git a/doc/compilation/hardhat/src/interfaces/IRule.sol/IRule.json b/doc/compilation/hardhat/src/interfaces/IRule.sol/IRule.json new file mode 100644 index 0000000..6af72d9 --- /dev/null +++ b/doc/compilation/hardhat/src/interfaces/IRule.sol/IRule.json @@ -0,0 +1,226 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "IRule", + "sourceName": "src/interfaces/IRule.sol", + "abi": [ + { + "inputs": [ + { + "internalType": "uint8", + "name": "restrictionCode", + "type": "uint8" + } + ], + "name": "canReturnTransferRestrictionCode", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "canTransfer", + "outputs": [ + { + "internalType": "bool", + "name": "isValid", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "canTransferFrom", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "detectTransferRestriction", + "outputs": [ + { + "internalType": "uint8", + "name": "", + "type": "uint8" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "detectTransferRestrictionFrom", + "outputs": [ + { + "internalType": "uint8", + "name": "", + "type": "uint8" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint8", + "name": "restrictionCode", + "type": "uint8" + } + ], + "name": "messageForTransferRestriction", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "transferred", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "transferred", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + } + ], + "bytecode": "0x", + "deployedBytecode": "0x", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/doc/compilation/hardhat/src/interfaces/IRulesManagementModule.sol/IRulesManagementModule.dbg.json b/doc/compilation/hardhat/src/interfaces/IRulesManagementModule.sol/IRulesManagementModule.dbg.json new file mode 100644 index 0000000..d9b9f08 --- /dev/null +++ b/doc/compilation/hardhat/src/interfaces/IRulesManagementModule.sol/IRulesManagementModule.dbg.json @@ -0,0 +1,4 @@ +{ + "_format": "hh-sol-dbg-1", + "buildInfo": "../../../build-info/23e4357cece7f7823104260edabd5f69.json" +} diff --git a/doc/compilation/hardhat/src/interfaces/IRulesManagementModule.sol/IRulesManagementModule.json b/doc/compilation/hardhat/src/interfaces/IRulesManagementModule.sol/IRulesManagementModule.json new file mode 100644 index 0000000..0d1057e --- /dev/null +++ b/doc/compilation/hardhat/src/interfaces/IRulesManagementModule.sol/IRulesManagementModule.json @@ -0,0 +1,121 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "IRulesManagementModule", + "sourceName": "src/interfaces/IRulesManagementModule.sol", + "abi": [ + { + "inputs": [ + { + "internalType": "contract IRule", + "name": "rule_", + "type": "address" + } + ], + "name": "addRule", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "clearRules", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "contract IRule", + "name": "rule_", + "type": "address" + } + ], + "name": "containsRule", + "outputs": [ + { + "internalType": "bool", + "name": "exists", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "contract IRule", + "name": "rule_", + "type": "address" + } + ], + "name": "removeRule", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "ruleId", + "type": "uint256" + } + ], + "name": "rule", + "outputs": [ + { + "internalType": "address", + "name": "ruleAddress", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "rules", + "outputs": [ + { + "internalType": "address[]", + "name": "ruleAddresses", + "type": "address[]" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "rulesCount", + "outputs": [ + { + "internalType": "uint256", + "name": "numberOfrules", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "contract IRule[]", + "name": "rules_", + "type": "address[]" + } + ], + "name": "setRules", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + } + ], + "bytecode": "0x", + "deployedBytecode": "0x", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/doc/compilation/hardhat/src/mocks/rules/operation/RuleConditionalTransferLight.sol/RuleConditionalTransferLight.dbg.json b/doc/compilation/hardhat/src/mocks/rules/operation/RuleConditionalTransferLight.sol/RuleConditionalTransferLight.dbg.json new file mode 100644 index 0000000..8d16719 --- /dev/null +++ b/doc/compilation/hardhat/src/mocks/rules/operation/RuleConditionalTransferLight.sol/RuleConditionalTransferLight.dbg.json @@ -0,0 +1,4 @@ +{ + "_format": "hh-sol-dbg-1", + "buildInfo": "../../../../../build-info/23e4357cece7f7823104260edabd5f69.json" +} diff --git a/doc/compilation/hardhat/src/mocks/rules/operation/RuleConditionalTransferLight.sol/RuleConditionalTransferLight.json b/doc/compilation/hardhat/src/mocks/rules/operation/RuleConditionalTransferLight.sol/RuleConditionalTransferLight.json new file mode 100644 index 0000000..fe0392a --- /dev/null +++ b/doc/compilation/hardhat/src/mocks/rules/operation/RuleConditionalTransferLight.sol/RuleConditionalTransferLight.json @@ -0,0 +1,644 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "RuleConditionalTransferLight", + "sourceName": "src/mocks/rules/operation/RuleConditionalTransferLight.sol", + "abi": [ + { + "inputs": [ + { + "internalType": "address", + "name": "admin", + "type": "address" + }, + { + "internalType": "contract IRuleEngine", + "name": "ruleEngineContract", + "type": "address" + } + ], + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "inputs": [], + "name": "AccessControlBadConfirmation", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + }, + { + "internalType": "bytes32", + "name": "neededRole", + "type": "bytes32" + } + ], + "name": "AccessControlUnauthorizedAccount", + "type": "error" + }, + { + "inputs": [], + "name": "TransferNotApproved", + "type": "error" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "indexed": true, + "internalType": "bytes32", + "name": "previousAdminRole", + "type": "bytes32" + }, + { + "indexed": true, + "internalType": "bytes32", + "name": "newAdminRole", + "type": "bytes32" + } + ], + "name": "RoleAdminChanged", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "indexed": true, + "internalType": "address", + "name": "account", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "sender", + "type": "address" + } + ], + "name": "RoleGranted", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "indexed": true, + "internalType": "address", + "name": "account", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "sender", + "type": "address" + } + ], + "name": "RoleRevoked", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "value", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "count", + "type": "uint256" + } + ], + "name": "TransferApproved", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "value", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "remaining", + "type": "uint256" + } + ], + "name": "TransferExecuted", + "type": "event" + }, + { + "inputs": [], + "name": "CODE_TRANSFER_REQUEST_NOT_APPROVED", + "outputs": [ + { + "internalType": "uint8", + "name": "", + "type": "uint8" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "DEFAULT_ADMIN_ROLE", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "OPERATOR_ROLE", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "RULE_ENGINE_CONTRACT_ROLE", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "name": "approvalCounts", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "approveTransfer", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "approvedCount", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint8", + "name": "restrictionCode", + "type": "uint8" + } + ], + "name": "canReturnTransferRestrictionCode", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "pure", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_from", + "type": "address" + }, + { + "internalType": "address", + "name": "_to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "_amount", + "type": "uint256" + } + ], + "name": "canTransfer", + "outputs": [ + { + "internalType": "bool", + "name": "isValid", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "canTransferFrom", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "detectTransferRestriction", + "outputs": [ + { + "internalType": "uint8", + "name": "", + "type": "uint8" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + }, + { + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "detectTransferRestrictionFrom", + "outputs": [ + { + "internalType": "uint8", + "name": "", + "type": "uint8" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + } + ], + "name": "getRoleAdmin", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "grantRole", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "hasRole", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint8", + "name": "restrictionCode", + "type": "uint8" + } + ], + "name": "messageForTransferRestriction", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "pure", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "internalType": "address", + "name": "callerConfirmation", + "type": "address" + } + ], + "name": "renounceRole", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "revokeRole", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes4", + "name": "interfaceId", + "type": "bytes4" + } + ], + "name": "supportsInterface", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + }, + { + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "transferred", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "transferred", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + } + ], + "bytecode": "0x608060405234801561000f575f5ffd5b5060405161174138038061174183398181016040528101906100319190610347565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361009f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610096906103df565b60405180910390fd5b6100b15f5f1b3361014f60201b60201c565b506100e27f97667070c54ef182b0f5858b034beac1b6f3089aa2d3188bb1e8929f4fa9b9298361014f60201b60201c565b505f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614610148576101467f5007339590b47d4786f4ab2ef7ffa0ec54bc5fe7244dd97bc6efa6ab3799807b8261014f60201b60201c565b505b50506103fd565b5f610160838361024460201b60201c565b61023a5760015f5f8581526020019081526020015f205f015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055506101d76102a760201b60201c565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16847f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a46001905061023e565b5f90505b92915050565b5f5f5f8481526020019081526020015f205f015f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16905092915050565b5f33905090565b5f5ffd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6102db826102b2565b9050919050565b6102eb816102d1565b81146102f5575f5ffd5b50565b5f81519050610306816102e2565b92915050565b5f610316826102d1565b9050919050565b6103268161030c565b8114610330575f5ffd5b50565b5f815190506103418161031d565b92915050565b5f5f6040838503121561035d5761035c6102ae565b5b5f61036a858286016102f8565b925050602061037b85828601610333565b9150509250929050565b5f82825260208201905092915050565b7f496e76616c6964206f70657261746f72000000000000000000000000000000005f82015250565b5f6103c9601083610385565b91506103d482610395565b602082019050919050565b5f6020820190508181035f8301526103f6816103bd565b9050919050565b6113378061040a5f395ff3fe608060405234801561000f575f5ffd5b5060043610610135575f3560e01c80638abed32b116100b6578063d4ce14151161007a578063d4ce141514610393578063d547741f146103c3578063dfdc49b9146103df578063e46638e6146103fd578063f02322f01461042d578063f5b541a61461044b57610135565b80638abed32b146102c95780638baf29b4146102f957806391d1485414610315578063a217fddf14610345578063d32c7bb51461036357610135565b80633e5af4ca116100fd5780633e5af4ca146102015780637157797f1461021d5780637d045df61461024d5780637f4ab1dd1461027d57806382580805146102ad57610135565b806301ffc9a714610139578063248a9ca31461016957806325005a41146101995780632f2ff15d146101c957806336568abe146101e5575b5f5ffd5b610153600480360381019061014e9190610d6a565b610469565b6040516101609190610daf565b60405180910390f35b610183600480360381019061017e9190610dfb565b6104e2565b6040516101909190610e35565b60405180910390f35b6101b360048036038101906101ae9190610edb565b6104fe565b6040516101c09190610f3a565b60405180910390f35b6101e360048036038101906101de9190610f53565b610549565b005b6101ff60048036038101906101fa9190610f53565b61056b565b005b61021b60048036038101906102169190610f91565b6105e6565b005b61023760048036038101906102329190610f91565b6105f7565b6040516102449190610daf565b60405180910390f35b6102676004803603810190610262919061102b565b610628565b6040516102749190610daf565b60405180910390f35b6102976004803603810190610292919061102b565b61063a565b6040516102a491906110c6565b60405180910390f35b6102c760048036038101906102c29190610edb565b6106a8565b005b6102e360048036038101906102de9190610dfb565b6107a6565b6040516102f09190610f3a565b60405180910390f35b610313600480360381019061030e9190610edb565b6107bb565b005b61032f600480360381019061032a9190610f53565b6108d8565b60405161033c9190610daf565b60405180910390f35b61034d61093b565b60405161035a9190610e35565b60405180910390f35b61037d60048036038101906103789190610f91565b610941565b60405161038a91906110f5565b60405180910390f35b6103ad60048036038101906103a89190610edb565b610957565b6040516103ba91906110f5565b60405180910390f35b6103dd60048036038101906103d89190610f53565b6109cc565b005b6103e76109ee565b6040516103f491906110f5565b60405180910390f35b61041760048036038101906104129190610edb565b6109f3565b6040516104249190610daf565b60405180910390f35b610435610a22565b6040516104429190610e35565b60405180910390f35b610453610a46565b6040516104609190610e35565b60405180910390f35b5f7f7965db0b000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806104db57506104da82610a6a565b5b9050919050565b5f5f5f8381526020019081526020015f20600101549050919050565b5f5f84848460405160200161051593929190611173565b60405160208183030381529060405280519060200120905060015f8281526020019081526020015f20549150509392505050565b610552826104e2565b61055b81610ad3565b6105658383610ae7565b50505050565b610573610bd0565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16146105d7576040517f6697b23200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6105e18282610bd7565b505050565b6105f18383836107bb565b50505050565b5f5f600681111561060b5761060a6111af565b5b60ff1661061a86868686610941565b60ff16149050949350505050565b5f604760ff168260ff16149050919050565b6060604760ff168260ff160361066a576040518060600160405280603581526020016112cd6035913990506106a3565b6040518060400160405280601881526020017f556e6b6e6f776e207265737472696374696f6e20636f6465000000000000000081525090505b919050565b7f97667070c54ef182b0f5858b034beac1b6f3089aa2d3188bb1e8929f4fa9b9296106d281610ad3565b5f8484846040516020016106e893929190611173565b6040516020818303038152906040528051906020012090506001805f8381526020019081526020015f205f8282546107209190611209565b925050819055508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167feccbdf7c486b88cbffbd8100b22951057ab0de2b73f27f625cc468ccabc3d08a8560015f8681526020019081526020015f205460405161079792919061123c565b60405180910390a35050505050565b6001602052805f5260405f205f915090505481565b5f8383836040516020016107d193929190611173565b6040516020818303038152906040528051906020012090505f60015f8381526020019081526020015f205490505f8103610837576040517ff82ba75a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001816108449190611263565b60015f8481526020019081526020015f20819055508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167f8e386ea29f37964fdbdb87193d773dea74e258b0f6108461c88c712051fb27bc8560015f8781526020019081526020015f20546040516108c992919061123c565b60405180910390a35050505050565b5f5f5f8481526020019081526020015f205f015f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16905092915050565b5f5f1b81565b5f61094d848484610957565b9050949350505050565b5f5f84848460405160200161096e93929190611173565b6040516020818303038152906040528051906020012090505f60015f8381526020019081526020015f205490505f81036109ad576047925050506109c5565b5f60068111156109c0576109bf6111af565b5b925050505b9392505050565b6109d5826104e2565b6109de81610ad3565b6109e88383610bd7565b50505050565b604781565b5f5f6006811115610a0757610a066111af565b5b60ff16610a15858585610957565b60ff161490509392505050565b7f5007339590b47d4786f4ab2ef7ffa0ec54bc5fe7244dd97bc6efa6ab3799807b81565b7f97667070c54ef182b0f5858b034beac1b6f3089aa2d3188bb1e8929f4fa9b92981565b5f7f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b610ae481610adf610bd0565b610cc0565b50565b5f610af283836108d8565b610bc65760015f5f8581526020019081526020015f205f015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550610b63610bd0565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16847f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a460019050610bca565b5f90505b92915050565b5f33905090565b5f610be283836108d8565b15610cb6575f5f5f8581526020019081526020015f205f015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550610c53610bd0565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16847ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b60405160405180910390a460019050610cba565b5f90505b92915050565b610cca82826108d8565b610d0d5780826040517fe2517d3f000000000000000000000000000000000000000000000000000000008152600401610d049291906112a5565b60405180910390fd5b5050565b5f5ffd5b5f7fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b610d4981610d15565b8114610d53575f5ffd5b50565b5f81359050610d6481610d40565b92915050565b5f60208284031215610d7f57610d7e610d11565b5b5f610d8c84828501610d56565b91505092915050565b5f8115159050919050565b610da981610d95565b82525050565b5f602082019050610dc25f830184610da0565b92915050565b5f819050919050565b610dda81610dc8565b8114610de4575f5ffd5b50565b5f81359050610df581610dd1565b92915050565b5f60208284031215610e1057610e0f610d11565b5b5f610e1d84828501610de7565b91505092915050565b610e2f81610dc8565b82525050565b5f602082019050610e485f830184610e26565b92915050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f610e7782610e4e565b9050919050565b610e8781610e6d565b8114610e91575f5ffd5b50565b5f81359050610ea281610e7e565b92915050565b5f819050919050565b610eba81610ea8565b8114610ec4575f5ffd5b50565b5f81359050610ed581610eb1565b92915050565b5f5f5f60608486031215610ef257610ef1610d11565b5b5f610eff86828701610e94565b9350506020610f1086828701610e94565b9250506040610f2186828701610ec7565b9150509250925092565b610f3481610ea8565b82525050565b5f602082019050610f4d5f830184610f2b565b92915050565b5f5f60408385031215610f6957610f68610d11565b5b5f610f7685828601610de7565b9250506020610f8785828601610e94565b9150509250929050565b5f5f5f5f60808587031215610fa957610fa8610d11565b5b5f610fb687828801610e94565b9450506020610fc787828801610e94565b9350506040610fd887828801610e94565b9250506060610fe987828801610ec7565b91505092959194509250565b5f60ff82169050919050565b61100a81610ff5565b8114611014575f5ffd5b50565b5f8135905061102581611001565b92915050565b5f602082840312156110405761103f610d11565b5b5f61104d84828501611017565b91505092915050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f61109882611056565b6110a28185611060565b93506110b2818560208601611070565b6110bb8161107e565b840191505092915050565b5f6020820190508181035f8301526110de818461108e565b905092915050565b6110ef81610ff5565b82525050565b5f6020820190506111085f8301846110e6565b92915050565b5f8160601b9050919050565b5f6111248261110e565b9050919050565b5f6111358261111a565b9050919050565b61114d61114882610e6d565b61112b565b82525050565b5f819050919050565b61116d61116882610ea8565b611153565b82525050565b5f61117e828661113c565b60148201915061118e828561113c565b60148201915061119e828461115c565b602082019150819050949350505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f61121382610ea8565b915061121e83610ea8565b9250828201905080821115611236576112356111dc565b5b92915050565b5f60408201905061124f5f830185610f2b565b61125c6020830184610f2b565b9392505050565b5f61126d82610ea8565b915061127883610ea8565b92508282039050818111156112905761128f6111dc565b5b92915050565b61129f81610e6d565b82525050565b5f6040820190506112b85f830185611296565b6112c56020830184610e26565b939250505056fe436f6e646974696f6e616c5472616e736665724c696768743a205468652072657175657374206973206e6f7420617070726f766564a2646970667358221220957d4ab9d4ecf4727744ed33c070cd5b76cf2076380ee4f555ecb7d4b9d9a3e364736f6c634300081e0033", + "deployedBytecode": "0x608060405234801561000f575f5ffd5b5060043610610135575f3560e01c80638abed32b116100b6578063d4ce14151161007a578063d4ce141514610393578063d547741f146103c3578063dfdc49b9146103df578063e46638e6146103fd578063f02322f01461042d578063f5b541a61461044b57610135565b80638abed32b146102c95780638baf29b4146102f957806391d1485414610315578063a217fddf14610345578063d32c7bb51461036357610135565b80633e5af4ca116100fd5780633e5af4ca146102015780637157797f1461021d5780637d045df61461024d5780637f4ab1dd1461027d57806382580805146102ad57610135565b806301ffc9a714610139578063248a9ca31461016957806325005a41146101995780632f2ff15d146101c957806336568abe146101e5575b5f5ffd5b610153600480360381019061014e9190610d6a565b610469565b6040516101609190610daf565b60405180910390f35b610183600480360381019061017e9190610dfb565b6104e2565b6040516101909190610e35565b60405180910390f35b6101b360048036038101906101ae9190610edb565b6104fe565b6040516101c09190610f3a565b60405180910390f35b6101e360048036038101906101de9190610f53565b610549565b005b6101ff60048036038101906101fa9190610f53565b61056b565b005b61021b60048036038101906102169190610f91565b6105e6565b005b61023760048036038101906102329190610f91565b6105f7565b6040516102449190610daf565b60405180910390f35b6102676004803603810190610262919061102b565b610628565b6040516102749190610daf565b60405180910390f35b6102976004803603810190610292919061102b565b61063a565b6040516102a491906110c6565b60405180910390f35b6102c760048036038101906102c29190610edb565b6106a8565b005b6102e360048036038101906102de9190610dfb565b6107a6565b6040516102f09190610f3a565b60405180910390f35b610313600480360381019061030e9190610edb565b6107bb565b005b61032f600480360381019061032a9190610f53565b6108d8565b60405161033c9190610daf565b60405180910390f35b61034d61093b565b60405161035a9190610e35565b60405180910390f35b61037d60048036038101906103789190610f91565b610941565b60405161038a91906110f5565b60405180910390f35b6103ad60048036038101906103a89190610edb565b610957565b6040516103ba91906110f5565b60405180910390f35b6103dd60048036038101906103d89190610f53565b6109cc565b005b6103e76109ee565b6040516103f491906110f5565b60405180910390f35b61041760048036038101906104129190610edb565b6109f3565b6040516104249190610daf565b60405180910390f35b610435610a22565b6040516104429190610e35565b60405180910390f35b610453610a46565b6040516104609190610e35565b60405180910390f35b5f7f7965db0b000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806104db57506104da82610a6a565b5b9050919050565b5f5f5f8381526020019081526020015f20600101549050919050565b5f5f84848460405160200161051593929190611173565b60405160208183030381529060405280519060200120905060015f8281526020019081526020015f20549150509392505050565b610552826104e2565b61055b81610ad3565b6105658383610ae7565b50505050565b610573610bd0565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16146105d7576040517f6697b23200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6105e18282610bd7565b505050565b6105f18383836107bb565b50505050565b5f5f600681111561060b5761060a6111af565b5b60ff1661061a86868686610941565b60ff16149050949350505050565b5f604760ff168260ff16149050919050565b6060604760ff168260ff160361066a576040518060600160405280603581526020016112cd6035913990506106a3565b6040518060400160405280601881526020017f556e6b6e6f776e207265737472696374696f6e20636f6465000000000000000081525090505b919050565b7f97667070c54ef182b0f5858b034beac1b6f3089aa2d3188bb1e8929f4fa9b9296106d281610ad3565b5f8484846040516020016106e893929190611173565b6040516020818303038152906040528051906020012090506001805f8381526020019081526020015f205f8282546107209190611209565b925050819055508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167feccbdf7c486b88cbffbd8100b22951057ab0de2b73f27f625cc468ccabc3d08a8560015f8681526020019081526020015f205460405161079792919061123c565b60405180910390a35050505050565b6001602052805f5260405f205f915090505481565b5f8383836040516020016107d193929190611173565b6040516020818303038152906040528051906020012090505f60015f8381526020019081526020015f205490505f8103610837576040517ff82ba75a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001816108449190611263565b60015f8481526020019081526020015f20819055508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167f8e386ea29f37964fdbdb87193d773dea74e258b0f6108461c88c712051fb27bc8560015f8781526020019081526020015f20546040516108c992919061123c565b60405180910390a35050505050565b5f5f5f8481526020019081526020015f205f015f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16905092915050565b5f5f1b81565b5f61094d848484610957565b9050949350505050565b5f5f84848460405160200161096e93929190611173565b6040516020818303038152906040528051906020012090505f60015f8381526020019081526020015f205490505f81036109ad576047925050506109c5565b5f60068111156109c0576109bf6111af565b5b925050505b9392505050565b6109d5826104e2565b6109de81610ad3565b6109e88383610bd7565b50505050565b604781565b5f5f6006811115610a0757610a066111af565b5b60ff16610a15858585610957565b60ff161490509392505050565b7f5007339590b47d4786f4ab2ef7ffa0ec54bc5fe7244dd97bc6efa6ab3799807b81565b7f97667070c54ef182b0f5858b034beac1b6f3089aa2d3188bb1e8929f4fa9b92981565b5f7f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b610ae481610adf610bd0565b610cc0565b50565b5f610af283836108d8565b610bc65760015f5f8581526020019081526020015f205f015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550610b63610bd0565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16847f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a460019050610bca565b5f90505b92915050565b5f33905090565b5f610be283836108d8565b15610cb6575f5f5f8581526020019081526020015f205f015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550610c53610bd0565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16847ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b60405160405180910390a460019050610cba565b5f90505b92915050565b610cca82826108d8565b610d0d5780826040517fe2517d3f000000000000000000000000000000000000000000000000000000008152600401610d049291906112a5565b60405180910390fd5b5050565b5f5ffd5b5f7fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b610d4981610d15565b8114610d53575f5ffd5b50565b5f81359050610d6481610d40565b92915050565b5f60208284031215610d7f57610d7e610d11565b5b5f610d8c84828501610d56565b91505092915050565b5f8115159050919050565b610da981610d95565b82525050565b5f602082019050610dc25f830184610da0565b92915050565b5f819050919050565b610dda81610dc8565b8114610de4575f5ffd5b50565b5f81359050610df581610dd1565b92915050565b5f60208284031215610e1057610e0f610d11565b5b5f610e1d84828501610de7565b91505092915050565b610e2f81610dc8565b82525050565b5f602082019050610e485f830184610e26565b92915050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f610e7782610e4e565b9050919050565b610e8781610e6d565b8114610e91575f5ffd5b50565b5f81359050610ea281610e7e565b92915050565b5f819050919050565b610eba81610ea8565b8114610ec4575f5ffd5b50565b5f81359050610ed581610eb1565b92915050565b5f5f5f60608486031215610ef257610ef1610d11565b5b5f610eff86828701610e94565b9350506020610f1086828701610e94565b9250506040610f2186828701610ec7565b9150509250925092565b610f3481610ea8565b82525050565b5f602082019050610f4d5f830184610f2b565b92915050565b5f5f60408385031215610f6957610f68610d11565b5b5f610f7685828601610de7565b9250506020610f8785828601610e94565b9150509250929050565b5f5f5f5f60808587031215610fa957610fa8610d11565b5b5f610fb687828801610e94565b9450506020610fc787828801610e94565b9350506040610fd887828801610e94565b9250506060610fe987828801610ec7565b91505092959194509250565b5f60ff82169050919050565b61100a81610ff5565b8114611014575f5ffd5b50565b5f8135905061102581611001565b92915050565b5f602082840312156110405761103f610d11565b5b5f61104d84828501611017565b91505092915050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f61109882611056565b6110a28185611060565b93506110b2818560208601611070565b6110bb8161107e565b840191505092915050565b5f6020820190508181035f8301526110de818461108e565b905092915050565b6110ef81610ff5565b82525050565b5f6020820190506111085f8301846110e6565b92915050565b5f8160601b9050919050565b5f6111248261110e565b9050919050565b5f6111358261111a565b9050919050565b61114d61114882610e6d565b61112b565b82525050565b5f819050919050565b61116d61116882610ea8565b611153565b82525050565b5f61117e828661113c565b60148201915061118e828561113c565b60148201915061119e828461115c565b602082019150819050949350505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f61121382610ea8565b915061121e83610ea8565b9250828201905080821115611236576112356111dc565b5b92915050565b5f60408201905061124f5f830185610f2b565b61125c6020830184610f2b565b9392505050565b5f61126d82610ea8565b915061127883610ea8565b92508282039050818111156112905761128f6111dc565b5b92915050565b61129f81610e6d565b82525050565b5f6040820190506112b85f830185611296565b6112c56020830184610e26565b939250505056fe436f6e646974696f6e616c5472616e736665724c696768743a205468652072657175657374206973206e6f7420617070726f766564a2646970667358221220957d4ab9d4ecf4727744ed33c070cd5b76cf2076380ee4f555ecb7d4b9d9a3e364736f6c634300081e0033", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/doc/compilation/hardhat/src/mocks/rules/operation/RuleOperationRevert.sol/RuleOperationRevert.dbg.json b/doc/compilation/hardhat/src/mocks/rules/operation/RuleOperationRevert.sol/RuleOperationRevert.dbg.json new file mode 100644 index 0000000..8d16719 --- /dev/null +++ b/doc/compilation/hardhat/src/mocks/rules/operation/RuleOperationRevert.sol/RuleOperationRevert.dbg.json @@ -0,0 +1,4 @@ +{ + "_format": "hh-sol-dbg-1", + "buildInfo": "../../../../../build-info/23e4357cece7f7823104260edabd5f69.json" +} diff --git a/doc/compilation/hardhat/src/mocks/rules/operation/RuleOperationRevert.sol/RuleOperationRevert.json b/doc/compilation/hardhat/src/mocks/rules/operation/RuleOperationRevert.sol/RuleOperationRevert.json new file mode 100644 index 0000000..0af40c9 --- /dev/null +++ b/doc/compilation/hardhat/src/mocks/rules/operation/RuleOperationRevert.sol/RuleOperationRevert.json @@ -0,0 +1,469 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "RuleOperationRevert", + "sourceName": "src/mocks/rules/operation/RuleOperationRevert.sol", + "abi": [ + { + "inputs": [], + "name": "AccessControlBadConfirmation", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + }, + { + "internalType": "bytes32", + "name": "neededRole", + "type": "bytes32" + } + ], + "name": "AccessControlUnauthorizedAccount", + "type": "error" + }, + { + "inputs": [], + "name": "RuleConditionalTransferLight_InvalidTransfer", + "type": "error" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "indexed": true, + "internalType": "bytes32", + "name": "previousAdminRole", + "type": "bytes32" + }, + { + "indexed": true, + "internalType": "bytes32", + "name": "newAdminRole", + "type": "bytes32" + } + ], + "name": "RoleAdminChanged", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "indexed": true, + "internalType": "address", + "name": "account", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "sender", + "type": "address" + } + ], + "name": "RoleGranted", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "indexed": true, + "internalType": "address", + "name": "account", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "sender", + "type": "address" + } + ], + "name": "RoleRevoked", + "type": "event" + }, + { + "inputs": [], + "name": "CODE_TRANSFER_REQUEST_NOT_APPROVED", + "outputs": [ + { + "internalType": "uint8", + "name": "", + "type": "uint8" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "DEFAULT_ADMIN_ROLE", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint8", + "name": "restrictionCode", + "type": "uint8" + } + ], + "name": "canReturnTransferRestrictionCode", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "pure", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_from", + "type": "address" + }, + { + "internalType": "address", + "name": "_to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "_amount", + "type": "uint256" + } + ], + "name": "canTransfer", + "outputs": [ + { + "internalType": "bool", + "name": "isValid", + "type": "bool" + } + ], + "stateMutability": "pure", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "canTransferFrom", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + }, + { + "internalType": "address", + "name": "", + "type": "address" + }, + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "name": "detectTransferRestriction", + "outputs": [ + { + "internalType": "uint8", + "name": "", + "type": "uint8" + } + ], + "stateMutability": "pure", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + }, + { + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "detectTransferRestrictionFrom", + "outputs": [ + { + "internalType": "uint8", + "name": "", + "type": "uint8" + } + ], + "stateMutability": "pure", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + } + ], + "name": "getRoleAdmin", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "grantRole", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "hasRole", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint8", + "name": "", + "type": "uint8" + } + ], + "name": "messageForTransferRestriction", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "pure", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "internalType": "address", + "name": "callerConfirmation", + "type": "address" + } + ], + "name": "renounceRole", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "revokeRole", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes4", + "name": "interfaceId", + "type": "bytes4" + } + ], + "name": "supportsInterface", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + }, + { + "internalType": "address", + "name": "", + "type": "address" + }, + { + "internalType": "address", + "name": "", + "type": "address" + }, + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "name": "transferred", + "outputs": [], + "stateMutability": "pure", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + }, + { + "internalType": "address", + "name": "", + "type": "address" + }, + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "name": "transferred", + "outputs": [], + "stateMutability": "pure", + "type": "function" + } + ], + "bytecode": "0x6080604052348015600e575f5ffd5b50610d998061001c5f395ff3fe608060405234801561000f575f5ffd5b50600436106100fe575f3560e01c80638baf29b411610095578063d4ce141511610064578063d4ce1415146102e0578063d547741f14610310578063dfdc49b91461032c578063e46638e61461034a576100fe565b80638baf29b41461024657806391d1485414610262578063a217fddf14610292578063d32c7bb5146102b0576100fe565b80633e5af4ca116100d15780633e5af4ca1461019a5780637157797f146101b65780637d045df6146101e65780637f4ab1dd14610216576100fe565b806301ffc9a714610102578063248a9ca3146101325780632f2ff15d1461016257806336568abe1461017e575b5f5ffd5b61011c60048036038101906101179190610984565b61037a565b60405161012991906109c9565b60405180910390f35b61014c60048036038101906101479190610a15565b6103f3565b6040516101599190610a4f565b60405180910390f35b61017c60048036038101906101779190610ac2565b61040f565b005b61019860048036038101906101939190610ac2565b610431565b005b6101b460048036038101906101af9190610b33565b6104ac565b005b6101d060048036038101906101cb9190610b33565b6104de565b6040516101dd91906109c9565b60405180910390f35b61020060048036038101906101fb9190610bcd565b61050f565b60405161020d91906109c9565b60405180910390f35b610230600480360381019061022b9190610bcd565b610521565b60405161023d9190610c68565b60405180910390f35b610260600480360381019061025b9190610c88565b610560565b005b61027c60048036038101906102779190610ac2565b610592565b60405161028991906109c9565b60405180910390f35b61029a6105f5565b6040516102a79190610a4f565b60405180910390f35b6102ca60048036038101906102c59190610b33565b6105fb565b6040516102d79190610ce7565b60405180910390f35b6102fa60048036038101906102f59190610c88565b610611565b6040516103079190610ce7565b60405180910390f35b61032a60048036038101906103259190610ac2565b61062e565b005b610334610650565b6040516103419190610ce7565b60405180910390f35b610364600480360381019061035f9190610c88565b610655565b60405161037191906109c9565b60405180910390f35b5f7f7965db0b000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806103ec57506103eb82610684565b5b9050919050565b5f5f5f8381526020019081526020015f20600101549050919050565b610418826103f3565b610421816106ed565b61042b8383610701565b50505050565b6104396107ea565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161461049d576040517f6697b23200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6104a782826107f1565b505050565b6040517f15ec568600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5f60068111156104f2576104f1610d00565b5b60ff16610501868686866105fb565b60ff16149050949350505050565b5f604760ff168260ff16149050919050565b60606040518060400160405280601881526020017f556e6b6e6f776e207265737472696374696f6e20636f646500000000000000008152509050919050565b6040517f15ec568600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5f5f8481526020019081526020015f205f015f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16905092915050565b5f5f1b81565b5f610607848484610611565b9050949350505050565b5f5f600681111561062557610624610d00565b5b90509392505050565b610637826103f3565b610640816106ed565b61064a83836107f1565b50505050565b604781565b5f5f600681111561066957610668610d00565b5b60ff16610677858585610611565b60ff161490509392505050565b5f7f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b6106fe816106f96107ea565b6108da565b50565b5f61070c8383610592565b6107e05760015f5f8581526020019081526020015f205f015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555061077d6107ea565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16847f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a4600190506107e4565b5f90505b92915050565b5f33905090565b5f6107fc8383610592565b156108d0575f5f5f8581526020019081526020015f205f015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555061086d6107ea565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16847ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b60405160405180910390a4600190506108d4565b5f90505b92915050565b6108e48282610592565b6109275780826040517fe2517d3f00000000000000000000000000000000000000000000000000000000815260040161091e929190610d3c565b60405180910390fd5b5050565b5f5ffd5b5f7fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b6109638161092f565b811461096d575f5ffd5b50565b5f8135905061097e8161095a565b92915050565b5f602082840312156109995761099861092b565b5b5f6109a684828501610970565b91505092915050565b5f8115159050919050565b6109c3816109af565b82525050565b5f6020820190506109dc5f8301846109ba565b92915050565b5f819050919050565b6109f4816109e2565b81146109fe575f5ffd5b50565b5f81359050610a0f816109eb565b92915050565b5f60208284031215610a2a57610a2961092b565b5b5f610a3784828501610a01565b91505092915050565b610a49816109e2565b82525050565b5f602082019050610a625f830184610a40565b92915050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f610a9182610a68565b9050919050565b610aa181610a87565b8114610aab575f5ffd5b50565b5f81359050610abc81610a98565b92915050565b5f5f60408385031215610ad857610ad761092b565b5b5f610ae585828601610a01565b9250506020610af685828601610aae565b9150509250929050565b5f819050919050565b610b1281610b00565b8114610b1c575f5ffd5b50565b5f81359050610b2d81610b09565b92915050565b5f5f5f5f60808587031215610b4b57610b4a61092b565b5b5f610b5887828801610aae565b9450506020610b6987828801610aae565b9350506040610b7a87828801610aae565b9250506060610b8b87828801610b1f565b91505092959194509250565b5f60ff82169050919050565b610bac81610b97565b8114610bb6575f5ffd5b50565b5f81359050610bc781610ba3565b92915050565b5f60208284031215610be257610be161092b565b5b5f610bef84828501610bb9565b91505092915050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f610c3a82610bf8565b610c448185610c02565b9350610c54818560208601610c12565b610c5d81610c20565b840191505092915050565b5f6020820190508181035f830152610c808184610c30565b905092915050565b5f5f5f60608486031215610c9f57610c9e61092b565b5b5f610cac86828701610aae565b9350506020610cbd86828701610aae565b9250506040610cce86828701610b1f565b9150509250925092565b610ce181610b97565b82525050565b5f602082019050610cfa5f830184610cd8565b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602160045260245ffd5b610d3681610a87565b82525050565b5f604082019050610d4f5f830185610d2d565b610d5c6020830184610a40565b939250505056fea264697066735822122082f224b4163e8ebf9211d4ba528dc72f5245296af31df35a5020b55089b6504764736f6c634300081e0033", + "deployedBytecode": "0x608060405234801561000f575f5ffd5b50600436106100fe575f3560e01c80638baf29b411610095578063d4ce141511610064578063d4ce1415146102e0578063d547741f14610310578063dfdc49b91461032c578063e46638e61461034a576100fe565b80638baf29b41461024657806391d1485414610262578063a217fddf14610292578063d32c7bb5146102b0576100fe565b80633e5af4ca116100d15780633e5af4ca1461019a5780637157797f146101b65780637d045df6146101e65780637f4ab1dd14610216576100fe565b806301ffc9a714610102578063248a9ca3146101325780632f2ff15d1461016257806336568abe1461017e575b5f5ffd5b61011c60048036038101906101179190610984565b61037a565b60405161012991906109c9565b60405180910390f35b61014c60048036038101906101479190610a15565b6103f3565b6040516101599190610a4f565b60405180910390f35b61017c60048036038101906101779190610ac2565b61040f565b005b61019860048036038101906101939190610ac2565b610431565b005b6101b460048036038101906101af9190610b33565b6104ac565b005b6101d060048036038101906101cb9190610b33565b6104de565b6040516101dd91906109c9565b60405180910390f35b61020060048036038101906101fb9190610bcd565b61050f565b60405161020d91906109c9565b60405180910390f35b610230600480360381019061022b9190610bcd565b610521565b60405161023d9190610c68565b60405180910390f35b610260600480360381019061025b9190610c88565b610560565b005b61027c60048036038101906102779190610ac2565b610592565b60405161028991906109c9565b60405180910390f35b61029a6105f5565b6040516102a79190610a4f565b60405180910390f35b6102ca60048036038101906102c59190610b33565b6105fb565b6040516102d79190610ce7565b60405180910390f35b6102fa60048036038101906102f59190610c88565b610611565b6040516103079190610ce7565b60405180910390f35b61032a60048036038101906103259190610ac2565b61062e565b005b610334610650565b6040516103419190610ce7565b60405180910390f35b610364600480360381019061035f9190610c88565b610655565b60405161037191906109c9565b60405180910390f35b5f7f7965db0b000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806103ec57506103eb82610684565b5b9050919050565b5f5f5f8381526020019081526020015f20600101549050919050565b610418826103f3565b610421816106ed565b61042b8383610701565b50505050565b6104396107ea565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161461049d576040517f6697b23200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6104a782826107f1565b505050565b6040517f15ec568600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5f60068111156104f2576104f1610d00565b5b60ff16610501868686866105fb565b60ff16149050949350505050565b5f604760ff168260ff16149050919050565b60606040518060400160405280601881526020017f556e6b6e6f776e207265737472696374696f6e20636f646500000000000000008152509050919050565b6040517f15ec568600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5f5f8481526020019081526020015f205f015f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16905092915050565b5f5f1b81565b5f610607848484610611565b9050949350505050565b5f5f600681111561062557610624610d00565b5b90509392505050565b610637826103f3565b610640816106ed565b61064a83836107f1565b50505050565b604781565b5f5f600681111561066957610668610d00565b5b60ff16610677858585610611565b60ff161490509392505050565b5f7f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b6106fe816106f96107ea565b6108da565b50565b5f61070c8383610592565b6107e05760015f5f8581526020019081526020015f205f015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555061077d6107ea565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16847f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a4600190506107e4565b5f90505b92915050565b5f33905090565b5f6107fc8383610592565b156108d0575f5f5f8581526020019081526020015f205f015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555061086d6107ea565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16847ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b60405160405180910390a4600190506108d4565b5f90505b92915050565b6108e48282610592565b6109275780826040517fe2517d3f00000000000000000000000000000000000000000000000000000000815260040161091e929190610d3c565b60405180910390fd5b5050565b5f5ffd5b5f7fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b6109638161092f565b811461096d575f5ffd5b50565b5f8135905061097e8161095a565b92915050565b5f602082840312156109995761099861092b565b5b5f6109a684828501610970565b91505092915050565b5f8115159050919050565b6109c3816109af565b82525050565b5f6020820190506109dc5f8301846109ba565b92915050565b5f819050919050565b6109f4816109e2565b81146109fe575f5ffd5b50565b5f81359050610a0f816109eb565b92915050565b5f60208284031215610a2a57610a2961092b565b5b5f610a3784828501610a01565b91505092915050565b610a49816109e2565b82525050565b5f602082019050610a625f830184610a40565b92915050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f610a9182610a68565b9050919050565b610aa181610a87565b8114610aab575f5ffd5b50565b5f81359050610abc81610a98565b92915050565b5f5f60408385031215610ad857610ad761092b565b5b5f610ae585828601610a01565b9250506020610af685828601610aae565b9150509250929050565b5f819050919050565b610b1281610b00565b8114610b1c575f5ffd5b50565b5f81359050610b2d81610b09565b92915050565b5f5f5f5f60808587031215610b4b57610b4a61092b565b5b5f610b5887828801610aae565b9450506020610b6987828801610aae565b9350506040610b7a87828801610aae565b9250506060610b8b87828801610b1f565b91505092959194509250565b5f60ff82169050919050565b610bac81610b97565b8114610bb6575f5ffd5b50565b5f81359050610bc781610ba3565b92915050565b5f60208284031215610be257610be161092b565b5b5f610bef84828501610bb9565b91505092915050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f610c3a82610bf8565b610c448185610c02565b9350610c54818560208601610c12565b610c5d81610c20565b840191505092915050565b5f6020820190508181035f830152610c808184610c30565b905092915050565b5f5f5f60608486031215610c9f57610c9e61092b565b5b5f610cac86828701610aae565b9350506020610cbd86828701610aae565b9250506040610cce86828701610b1f565b9150509250925092565b610ce181610b97565b82525050565b5f602082019050610cfa5f830184610cd8565b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602160045260245ffd5b610d3681610a87565b82525050565b5f604082019050610d4f5f830185610d2d565b610d5c6020830184610a40565b939250505056fea264697066735822122082f224b4163e8ebf9211d4ba528dc72f5245296af31df35a5020b55089b6504764736f6c634300081e0033", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/doc/compilation/hardhat/src/mocks/rules/operation/abstract/RuleConditionalTransferLightInvariantStorage.sol/RuleConditionalTransferLightInvariantStorage.dbg.json b/doc/compilation/hardhat/src/mocks/rules/operation/abstract/RuleConditionalTransferLightInvariantStorage.sol/RuleConditionalTransferLightInvariantStorage.dbg.json new file mode 100644 index 0000000..547ff9f --- /dev/null +++ b/doc/compilation/hardhat/src/mocks/rules/operation/abstract/RuleConditionalTransferLightInvariantStorage.sol/RuleConditionalTransferLightInvariantStorage.dbg.json @@ -0,0 +1,4 @@ +{ + "_format": "hh-sol-dbg-1", + "buildInfo": "../../../../../../build-info/23e4357cece7f7823104260edabd5f69.json" +} diff --git a/doc/compilation/hardhat/src/mocks/rules/operation/abstract/RuleConditionalTransferLightInvariantStorage.sol/RuleConditionalTransferLightInvariantStorage.json b/doc/compilation/hardhat/src/mocks/rules/operation/abstract/RuleConditionalTransferLightInvariantStorage.sol/RuleConditionalTransferLightInvariantStorage.json new file mode 100644 index 0000000..249f8f6 --- /dev/null +++ b/doc/compilation/hardhat/src/mocks/rules/operation/abstract/RuleConditionalTransferLightInvariantStorage.sol/RuleConditionalTransferLightInvariantStorage.json @@ -0,0 +1,117 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "RuleConditionalTransferLightInvariantStorage", + "sourceName": "src/mocks/rules/operation/abstract/RuleConditionalTransferLightInvariantStorage.sol", + "abi": [ + { + "inputs": [], + "name": "TransferNotApproved", + "type": "error" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "value", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "count", + "type": "uint256" + } + ], + "name": "TransferApproved", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "value", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "remaining", + "type": "uint256" + } + ], + "name": "TransferExecuted", + "type": "event" + }, + { + "inputs": [], + "name": "CODE_TRANSFER_REQUEST_NOT_APPROVED", + "outputs": [ + { + "internalType": "uint8", + "name": "", + "type": "uint8" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "OPERATOR_ROLE", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "RULE_ENGINE_CONTRACT_ROLE", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + } + ], + "bytecode": "0x", + "deployedBytecode": "0x", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/doc/compilation/hardhat/src/mocks/rules/validation/RuleWhitelist.sol/RuleWhitelist.dbg.json b/doc/compilation/hardhat/src/mocks/rules/validation/RuleWhitelist.sol/RuleWhitelist.dbg.json new file mode 100644 index 0000000..8d16719 --- /dev/null +++ b/doc/compilation/hardhat/src/mocks/rules/validation/RuleWhitelist.sol/RuleWhitelist.dbg.json @@ -0,0 +1,4 @@ +{ + "_format": "hh-sol-dbg-1", + "buildInfo": "../../../../../build-info/23e4357cece7f7823104260edabd5f69.json" +} diff --git a/doc/compilation/hardhat/src/mocks/rules/validation/RuleWhitelist.sol/RuleWhitelist.json b/doc/compilation/hardhat/src/mocks/rules/validation/RuleWhitelist.sol/RuleWhitelist.json new file mode 100644 index 0000000..3a007f8 --- /dev/null +++ b/doc/compilation/hardhat/src/mocks/rules/validation/RuleWhitelist.sol/RuleWhitelist.json @@ -0,0 +1,760 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "RuleWhitelist", + "sourceName": "src/mocks/rules/validation/RuleWhitelist.sol", + "abi": [ + { + "inputs": [ + { + "internalType": "address", + "name": "admin", + "type": "address" + }, + { + "internalType": "address", + "name": "forwarderIrrevocable", + "type": "address" + } + ], + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "inputs": [], + "name": "AccessControlBadConfirmation", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + }, + { + "internalType": "bytes32", + "name": "neededRole", + "type": "bytes32" + } + ], + "name": "AccessControlUnauthorizedAccount", + "type": "error" + }, + { + "inputs": [], + "name": "RuleAddressList_AdminWithAddressZeroNotAllowed", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "value", + "type": "uint256" + }, + { + "internalType": "uint8", + "name": "code", + "type": "uint8" + } + ], + "name": "RuleWhitelist_InvalidTransfer", + "type": "error" + }, + { + "inputs": [], + "name": "Rulelist_AddressAlreadylisted", + "type": "error" + }, + { + "inputs": [], + "name": "Rulelist_AddressNotPresent", + "type": "error" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "targetAddress", + "type": "address" + } + ], + "name": "AddAddressToTheList", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address[]", + "name": "listTargetAddresses", + "type": "address[]" + } + ], + "name": "AddAddressesToTheList", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "targetAddress", + "type": "address" + } + ], + "name": "RemoveAddressFromTheList", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address[]", + "name": "listTargetAddresses", + "type": "address[]" + } + ], + "name": "RemoveAddressesFromTheList", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "indexed": true, + "internalType": "bytes32", + "name": "previousAdminRole", + "type": "bytes32" + }, + { + "indexed": true, + "internalType": "bytes32", + "name": "newAdminRole", + "type": "bytes32" + } + ], + "name": "RoleAdminChanged", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "indexed": true, + "internalType": "address", + "name": "account", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "sender", + "type": "address" + } + ], + "name": "RoleGranted", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "indexed": true, + "internalType": "address", + "name": "account", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "sender", + "type": "address" + } + ], + "name": "RoleRevoked", + "type": "event" + }, + { + "inputs": [], + "name": "ADDRESS_LIST_ADD_ROLE", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "ADDRESS_LIST_REMOVE_ROLE", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "CODE_ADDRESS_FROM_NOT_WHITELISTED", + "outputs": [ + { + "internalType": "uint8", + "name": "", + "type": "uint8" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "CODE_ADDRESS_SPENDER_NOT_WHITELISTED", + "outputs": [ + { + "internalType": "uint8", + "name": "", + "type": "uint8" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "CODE_ADDRESS_TO_NOT_WHITELISTED", + "outputs": [ + { + "internalType": "uint8", + "name": "", + "type": "uint8" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "DEFAULT_ADMIN_ROLE", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "targetAddress", + "type": "address" + } + ], + "name": "addAddressToTheList", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address[]", + "name": "listTargetAddresses", + "type": "address[]" + } + ], + "name": "addAddressesToTheList", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_targetAddress", + "type": "address" + } + ], + "name": "addressIsListed", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address[]", + "name": "_targetAddresses", + "type": "address[]" + } + ], + "name": "addressIsListedBatch", + "outputs": [ + { + "internalType": "bool[]", + "name": "", + "type": "bool[]" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint8", + "name": "restrictionCode", + "type": "uint8" + } + ], + "name": "canReturnTransferRestrictionCode", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "pure", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_from", + "type": "address" + }, + { + "internalType": "address", + "name": "_to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "_amount", + "type": "uint256" + } + ], + "name": "canTransfer", + "outputs": [ + { + "internalType": "bool", + "name": "isValid", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "canTransferFrom", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "name": "detectTransferRestriction", + "outputs": [ + { + "internalType": "uint8", + "name": "", + "type": "uint8" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "detectTransferRestrictionFrom", + "outputs": [ + { + "internalType": "uint8", + "name": "", + "type": "uint8" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + } + ], + "name": "getRoleAdmin", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "grantRole", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "hasRole", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "forwarder", + "type": "address" + } + ], + "name": "isTrustedForwarder", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint8", + "name": "restrictionCode", + "type": "uint8" + } + ], + "name": "messageForTransferRestriction", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "pure", + "type": "function" + }, + { + "inputs": [], + "name": "numberListedAddress", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "targetAddress", + "type": "address" + } + ], + "name": "removeAddressFromTheList", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address[]", + "name": "listTargetAddresses", + "type": "address[]" + } + ], + "name": "removeAddressesFromTheList", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "internalType": "address", + "name": "callerConfirmation", + "type": "address" + } + ], + "name": "renounceRole", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "revokeRole", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes4", + "name": "interfaceId", + "type": "bytes4" + } + ], + "name": "supportsInterface", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "transferred", + "outputs": [], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "transferred", + "outputs": [], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "trustedForwarder", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + } + ], + "bytecode": "0x60a060405234801561000f575f5ffd5b506040516125fc3803806125fc833981810160405281019061003191906103da565b818180808073ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff168152505050505f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036100d0576040517f5f1a6c0c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6100e25f5f1b836100ec60201b60201c565b50505050506104f9565b5f6100fd83836101e160201b60201c565b6101d75760015f5f8581526020019081526020015f205f015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555061017461021b60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16847f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a4600190506101db565b5f90505b92915050565b5f6101f45f5f1b8361022f60201b60201c565b156102025760019050610215565b610212838361022f60201b60201c565b90505b92915050565b5f61022a61029260201b60201c565b905090565b5f5f5f8481526020019081526020015f205f015f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16905092915050565b5f5f5f36905090505f6102a961030c60201b60201c565b90508082101580156102c657506102c53361032060201b60201c565b5b156102f6575f368284039080926102df93929190610420565b906102ea919061049b565b60601c92505050610309565b61030461036460201b60201c565b925050505b90565b5f61031b61036b60201b60201c565b905090565b5f61032f61037360201b60201c565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16149050919050565b5f33905090565b5f6014905090565b5f608051905090565b5f5ffd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6103a982610380565b9050919050565b6103b98161039f565b81146103c3575f5ffd5b50565b5f815190506103d4816103b0565b92915050565b5f5f604083850312156103f0576103ef61037c565b5b5f6103fd858286016103c6565b925050602061040e858286016103c6565b9150509250929050565b5f5ffd5b5f5ffd5b5f5f8585111561043357610432610418565b5b838611156104445761044361041c565b5b6001850283019150848603905094509492505050565b5f82905092915050565b5f7fffffffffffffffffffffffffffffffffffffffff00000000000000000000000082169050919050565b5f82821b905092915050565b5f6104a6838361045a565b826104b18135610464565b925060148210156104f1576104ec7fffffffffffffffffffffffffffffffffffffffff0000000000000000000000008360140360080261048f565b831692505b505092915050565b6080516120eb6105115f395f610a1c01526120eb5ff3fe608060405234801561000f575f5ffd5b50600436106101cd575f3560e01c80637d045df611610102578063a217fddf116100a0578063daafd1c71161006f578063daafd1c714610575578063db136dad14610591578063e46638e6146105af578063fa83a2da146105df576101cd565b8063a217fddf146104db578063d32c7bb5146104f9578063d4ce141514610529578063d547741f14610559576101cd565b8063893c1440116100dc578063893c1440146104555780638baf29b41461047157806391d148541461048d578063948b851e146104bd576101cd565b80637d045df6146103d75780637da0a877146104075780637f4ab1dd14610425576101cd565b806336568abe1161016f578063572b6c0511610149578063572b6c05146103295780635b119c0a146103595780635b577f66146103775780637157797f146103a7576101cd565b806336568abe146102d35780633e5af4ca146102ef578063421069171461030b576101cd565b806313be3212116101ab57806313be32121461024d578063248a9ca31461026b5780632f2ff15d1461029b5780633630e2ea146102b7576101cd565b806301ffc9a7146101d15780630a3640d21461020157806311d1c5ca14610231575b5f5ffd5b6101eb60048036038101906101e69190611634565b6105fd565b6040516101f89190611679565b60405180910390f35b61021b6004803603810190610216919061183c565b610676565b604051610228919061193a565b60405180910390f35b61024b600480360381019061024691906119b3565b610730565b005b6102556107a2565b6040516102629190611a16565b60405180910390f35b61028560048036038101906102809190611a62565b6107b0565b6040516102929190611a9c565b60405180910390f35b6102b560048036038101906102b09190611ab5565b6107cc565b005b6102d160048036038101906102cc91906119b3565b6107ee565b005b6102ed60048036038101906102e89190611ab5565b610860565b005b61030960048036038101906103049190611b1d565b6108db565b005b61031361095b565b6040516103209190611b9c565b60405180910390f35b610343600480360381019061033e9190611bb5565b610960565b6040516103509190611679565b60405180910390f35b61036161099e565b60405161036e9190611b9c565b60405180910390f35b610391600480360381019061038c9190611bb5565b6109a3565b60405161039e9190611679565b60405180910390f35b6103c160048036038101906103bc9190611b1d565b6109b4565b6040516103ce9190611679565b60405180910390f35b6103f160048036038101906103ec9190611c0a565b6109e5565b6040516103fe9190611679565b60405180910390f35b61040f610a19565b60405161041c9190611c44565b60405180910390f35b61043f600480360381019061043a9190611c0a565b610a40565b60405161044c9190611cbd565b60405180910390f35b61046f600480360381019061046a9190611bb5565b610b0a565b005b61048b60048036038101906104869190611cdd565b610b78565b005b6104a760048036038101906104a29190611ab5565b610bf6565b6040516104b49190611679565b60405180910390f35b6104c5610c24565b6040516104d29190611a9c565b60405180910390f35b6104e3610c48565b6040516104f09190611a9c565b60405180910390f35b610513600480360381019061050e9190611b1d565b610c4e565b6040516105209190611b9c565b60405180910390f35b610543600480360381019061053e9190611cdd565b610c7b565b6040516105509190611b9c565b60405180910390f35b610573600480360381019061056e9190611ab5565b610cc5565b005b61058f600480360381019061058a9190611bb5565b610ce7565b005b610599610d55565b6040516105a69190611b9c565b60405180910390f35b6105c960048036038101906105c49190611cdd565b610d5a565b6040516105d69190611679565b60405180910390f35b6105e7610d89565b6040516105f49190611a9c565b60405180910390f35b5f7f7965db0b000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061066f575061066e82610dad565b5b9050919050565b60605f825167ffffffffffffffff811115610694576106936116a6565b5b6040519080825280602002602001820160405280156106c25781602001602082028036833780820191505090505b5090505f5f90505b8351811015610726576106f68482815181106106e9576106e8611d2d565b5b6020026020010151610e16565b82828151811061070957610708611d2d565b5b6020026020010190151590811515815250508060010190506106ca565b5080915050919050565b7f1b03c849816e077359373cf0a8d6d8f741d643bc1e95273ffe11515f83bebf6161075a81610e68565b6107648383610e7c565b7f9f3dfa145deb5071c94eb9a1393634e982a46367c42dce9622f49213d8f427bd8383604051610795929190611e16565b60405180910390a1505050565b5f6107ab610fa7565b905090565b5f5f5f8381526020019081526020015f20600101549050919050565b6107d5826107b0565b6107de81610e68565b6107e88383610fb0565b50505050565b7f1b94c92b564251ed6b49246d9a82eb7a486b6490f3b3a3bf3b28d2e99801f3ec61081881610e68565b6108228383611099565b7f3be9b663c544556a256ca6ed9f2f6875dba1b09a6eee2571196227f7ec8c621c8383604051610853929190611e16565b60405180910390a1505050565b6108686111c5565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16146108cc576040517f6697b23200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6108d682826111d3565b505050565b5f6108e885858585610c4e565b90505f60068111156108fd576108fc611e38565b5b60ff168160ff16148484848490919293610950576040517fd9ead46f0000000000000000000000000000000000000000000000000000000081526004016109479493929190611e65565b60405180910390fd5b505050505050505050565b601781565b5f610969610a19565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16149050919050565b601581565b5f6109ad82610e16565b9050919050565b5f5f60068111156109c8576109c7611e38565b5b60ff166109d786868686610c4e565b60ff16149050949350505050565b5f601560ff168260ff161480610a015750601660ff168260ff16145b80610a125750601760ff168260ff16145b9050919050565b5f7f0000000000000000000000000000000000000000000000000000000000000000905090565b6060601560ff168260ff1603610a7057604051806060016040528060228152602001612094602291399050610b05565b601660ff168260ff1603610a9e5760405180606001604052806025815260200161206f602591399050610b05565b601760ff168260ff1603610acc5760405180606001604052806023815260200161204c602391399050610b05565b6040518060400160405280601881526020017f556e6b6e6f776e207265737472696374696f6e20636f6465000000000000000081525090505b919050565b7f1b94c92b564251ed6b49246d9a82eb7a486b6490f3b3a3bf3b28d2e99801f3ec610b3481610e68565b610b3d826112bc565b7fe46e95d98efc7b1a5d9359155b9137734ac3be3f4b32eab0f697558c27f2d99c82604051610b6c9190611c44565b60405180910390a15050565b5f610b84848484610c7b565b90505f6006811115610b9957610b98611e38565b5b60ff168160ff16148484848490919293610bec576040517fd9ead46f000000000000000000000000000000000000000000000000000000008152600401610be39493929190611e65565b60405180910390fd5b5050505050505050565b5f610c035f5f1b836113a8565b15610c115760019050610c1e565b610c1b83836113a8565b90505b92915050565b7f1b03c849816e077359373cf0a8d6d8f741d643bc1e95273ffe11515f83bebf6181565b5f5f1b81565b5f610c58856109a3565b610c655760179050610c73565b610c70848484610c7b565b90505b949350505050565b5f610c85846109a3565b610c925760159050610cbe565b610c9b836109a3565b610ca85760169050610cbe565b5f6006811115610cbb57610cba611e38565b5b90505b9392505050565b610cce826107b0565b610cd781610e68565b610ce183836111d3565b50505050565b7f1b03c849816e077359373cf0a8d6d8f741d643bc1e95273ffe11515f83bebf61610d1181610e68565b610d1a8261140b565b7f7802fa8b90d406b2eb85b620cecde734206f390fa73c61e824384474b734cd9382604051610d499190611c44565b60405180910390a15050565b601681565b5f5f6006811115610d6e57610d6d611e38565b5b60ff16610d7c858585610c7b565b60ff161490509392505050565b7f1b94c92b564251ed6b49246d9a82eb7a486b6490f3b3a3bf3b28d2e99801f3ec81565b5f7f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b5f60015f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff169050919050565b610e7981610e746111c5565b6114f8565b50565b5f60025490505f5f90505b83839050811015610f9a5760015f858584818110610ea857610ea7611d2d565b5b9050602002016020810190610ebd9190611bb5565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16610f8f576001805f868685818110610f1e57610f1d611d2d565b5b9050602002016020810190610f339190611bb5565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555081610f8c90611ed5565b91505b806001019050610e87565b5080600281905550505050565b5f600254905090565b5f610fbb8383610bf6565b61108f5760015f5f8581526020019081526020015f205f015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555061102c6111c5565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16847f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a460019050611093565b5f90505b92915050565b5f60025490505f5f90505b838390508110156111b85760015f8585848181106110c5576110c4611d2d565b5b90506020020160208101906110da9190611bb5565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16156111ad575f60015f86868581811061113c5761113b611d2d565b5b90506020020160208101906111519190611bb5565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550816111aa90611f1c565b91505b8060010190506110a4565b5080600281905550505050565b5f6111ce611549565b905090565b5f6111de8383610bf6565b156112b2575f5f5f8581526020019081526020015f205f015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555061124f6111c5565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16847ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b60405160405180910390a4600190506112b6565b5f90505b92915050565b60015f8273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1661133c576040517fcfc5cc9500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f60015f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555060025f815461139e90611f1c565b9190508190555050565b5f5f5f8481526020019081526020015f205f015f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16905092915050565b60015f8273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff161561148c576040517f57845b8b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001805f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555060025f81546114ee90611ed5565b9190508190555050565b6115028282610bf6565b6115455780826040517fe2517d3f00000000000000000000000000000000000000000000000000000000815260040161153c929190611f43565b60405180910390fd5b5050565b5f5f5f36905090505f61155a6115b1565b9050808210158015611571575061157033610960565b5b156115a1575f3682840390809261158a93929190611f72565b906115959190611fed565b60601c925050506115ae565b6115a96115bf565b925050505b90565b5f6115ba6115c6565b905090565b5f33905090565b5f6014905090565b5f604051905090565b5f5ffd5b5f5ffd5b5f7fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b611613816115df565b811461161d575f5ffd5b50565b5f8135905061162e8161160a565b92915050565b5f60208284031215611649576116486115d7565b5b5f61165684828501611620565b91505092915050565b5f8115159050919050565b6116738161165f565b82525050565b5f60208201905061168c5f83018461166a565b92915050565b5f5ffd5b5f601f19601f8301169050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b6116dc82611696565b810181811067ffffffffffffffff821117156116fb576116fa6116a6565b5b80604052505050565b5f61170d6115ce565b905061171982826116d3565b919050565b5f67ffffffffffffffff821115611738576117376116a6565b5b602082029050602081019050919050565b5f5ffd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6117768261174d565b9050919050565b6117868161176c565b8114611790575f5ffd5b50565b5f813590506117a18161177d565b92915050565b5f6117b96117b48461171e565b611704565b905080838252602082019050602084028301858111156117dc576117db611749565b5b835b8181101561180557806117f18882611793565b8452602084019350506020810190506117de565b5050509392505050565b5f82601f83011261182357611822611692565b5b81356118338482602086016117a7565b91505092915050565b5f60208284031215611851576118506115d7565b5b5f82013567ffffffffffffffff81111561186e5761186d6115db565b5b61187a8482850161180f565b91505092915050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b6118b58161165f565b82525050565b5f6118c683836118ac565b60208301905092915050565b5f602082019050919050565b5f6118e882611883565b6118f2818561188d565b93506118fd8361189d565b805f5b8381101561192d57815161191488826118bb565b975061191f836118d2565b925050600181019050611900565b5085935050505092915050565b5f6020820190508181035f83015261195281846118de565b905092915050565b5f5ffd5b5f5f83601f84011261197357611972611692565b5b8235905067ffffffffffffffff8111156119905761198f61195a565b5b6020830191508360208202830111156119ac576119ab611749565b5b9250929050565b5f5f602083850312156119c9576119c86115d7565b5b5f83013567ffffffffffffffff8111156119e6576119e56115db565b5b6119f28582860161195e565b92509250509250929050565b5f819050919050565b611a10816119fe565b82525050565b5f602082019050611a295f830184611a07565b92915050565b5f819050919050565b611a4181611a2f565b8114611a4b575f5ffd5b50565b5f81359050611a5c81611a38565b92915050565b5f60208284031215611a7757611a766115d7565b5b5f611a8484828501611a4e565b91505092915050565b611a9681611a2f565b82525050565b5f602082019050611aaf5f830184611a8d565b92915050565b5f5f60408385031215611acb57611aca6115d7565b5b5f611ad885828601611a4e565b9250506020611ae985828601611793565b9150509250929050565b611afc816119fe565b8114611b06575f5ffd5b50565b5f81359050611b1781611af3565b92915050565b5f5f5f5f60808587031215611b3557611b346115d7565b5b5f611b4287828801611793565b9450506020611b5387828801611793565b9350506040611b6487828801611793565b9250506060611b7587828801611b09565b91505092959194509250565b5f60ff82169050919050565b611b9681611b81565b82525050565b5f602082019050611baf5f830184611b8d565b92915050565b5f60208284031215611bca57611bc96115d7565b5b5f611bd784828501611793565b91505092915050565b611be981611b81565b8114611bf3575f5ffd5b50565b5f81359050611c0481611be0565b92915050565b5f60208284031215611c1f57611c1e6115d7565b5b5f611c2c84828501611bf6565b91505092915050565b611c3e8161176c565b82525050565b5f602082019050611c575f830184611c35565b92915050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f611c8f82611c5d565b611c998185611c67565b9350611ca9818560208601611c77565b611cb281611696565b840191505092915050565b5f6020820190508181035f830152611cd58184611c85565b905092915050565b5f5f5f60608486031215611cf457611cf36115d7565b5b5f611d0186828701611793565b9350506020611d1286828701611793565b9250506040611d2386828701611b09565b9150509250925092565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f82825260208201905092915050565b5f819050919050565b611d7c8161176c565b82525050565b5f611d8d8383611d73565b60208301905092915050565b5f611da76020840184611793565b905092915050565b5f602082019050919050565b5f611dc68385611d5a565b9350611dd182611d6a565b805f5b85811015611e0957611de68284611d99565b611df08882611d82565b9750611dfb83611daf565b925050600181019050611dd4565b5085925050509392505050565b5f6020820190508181035f830152611e2f818486611dbb565b90509392505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602160045260245ffd5b5f608082019050611e785f830187611c35565b611e856020830186611c35565b611e926040830185611a07565b611e9f6060830184611b8d565b95945050505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f611edf826119fe565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203611f1157611f10611ea8565b5b600182019050919050565b5f611f26826119fe565b91505f8203611f3857611f37611ea8565b5b600182039050919050565b5f604082019050611f565f830185611c35565b611f636020830184611a8d565b9392505050565b5f5ffd5b5f5ffd5b5f5f85851115611f8557611f84611f6a565b5b83861115611f9657611f95611f6e565b5b6001850283019150848603905094509492505050565b5f82905092915050565b5f7fffffffffffffffffffffffffffffffffffffffff00000000000000000000000082169050919050565b5f82821b905092915050565b5f611ff88383611fac565b826120038135611fb6565b925060148210156120435761203e7fffffffffffffffffffffffffffffffffffffffff00000000000000000000000083601403600802611fe1565b831692505b50509291505056fe546865207370656e646572206973206e6f7420696e207468652077686974656c69737454686520726563697069656e74206973206e6f7420696e207468652077686974656c6973745468652073656e646572206973206e6f7420696e207468652077686974656c697374a26469706673582212207034c6b4676521b1a838bee9b92b0282f90b7e750f40444967ff064f0d37882264736f6c634300081e0033", + "deployedBytecode": "0x608060405234801561000f575f5ffd5b50600436106101cd575f3560e01c80637d045df611610102578063a217fddf116100a0578063daafd1c71161006f578063daafd1c714610575578063db136dad14610591578063e46638e6146105af578063fa83a2da146105df576101cd565b8063a217fddf146104db578063d32c7bb5146104f9578063d4ce141514610529578063d547741f14610559576101cd565b8063893c1440116100dc578063893c1440146104555780638baf29b41461047157806391d148541461048d578063948b851e146104bd576101cd565b80637d045df6146103d75780637da0a877146104075780637f4ab1dd14610425576101cd565b806336568abe1161016f578063572b6c0511610149578063572b6c05146103295780635b119c0a146103595780635b577f66146103775780637157797f146103a7576101cd565b806336568abe146102d35780633e5af4ca146102ef578063421069171461030b576101cd565b806313be3212116101ab57806313be32121461024d578063248a9ca31461026b5780632f2ff15d1461029b5780633630e2ea146102b7576101cd565b806301ffc9a7146101d15780630a3640d21461020157806311d1c5ca14610231575b5f5ffd5b6101eb60048036038101906101e69190611634565b6105fd565b6040516101f89190611679565b60405180910390f35b61021b6004803603810190610216919061183c565b610676565b604051610228919061193a565b60405180910390f35b61024b600480360381019061024691906119b3565b610730565b005b6102556107a2565b6040516102629190611a16565b60405180910390f35b61028560048036038101906102809190611a62565b6107b0565b6040516102929190611a9c565b60405180910390f35b6102b560048036038101906102b09190611ab5565b6107cc565b005b6102d160048036038101906102cc91906119b3565b6107ee565b005b6102ed60048036038101906102e89190611ab5565b610860565b005b61030960048036038101906103049190611b1d565b6108db565b005b61031361095b565b6040516103209190611b9c565b60405180910390f35b610343600480360381019061033e9190611bb5565b610960565b6040516103509190611679565b60405180910390f35b61036161099e565b60405161036e9190611b9c565b60405180910390f35b610391600480360381019061038c9190611bb5565b6109a3565b60405161039e9190611679565b60405180910390f35b6103c160048036038101906103bc9190611b1d565b6109b4565b6040516103ce9190611679565b60405180910390f35b6103f160048036038101906103ec9190611c0a565b6109e5565b6040516103fe9190611679565b60405180910390f35b61040f610a19565b60405161041c9190611c44565b60405180910390f35b61043f600480360381019061043a9190611c0a565b610a40565b60405161044c9190611cbd565b60405180910390f35b61046f600480360381019061046a9190611bb5565b610b0a565b005b61048b60048036038101906104869190611cdd565b610b78565b005b6104a760048036038101906104a29190611ab5565b610bf6565b6040516104b49190611679565b60405180910390f35b6104c5610c24565b6040516104d29190611a9c565b60405180910390f35b6104e3610c48565b6040516104f09190611a9c565b60405180910390f35b610513600480360381019061050e9190611b1d565b610c4e565b6040516105209190611b9c565b60405180910390f35b610543600480360381019061053e9190611cdd565b610c7b565b6040516105509190611b9c565b60405180910390f35b610573600480360381019061056e9190611ab5565b610cc5565b005b61058f600480360381019061058a9190611bb5565b610ce7565b005b610599610d55565b6040516105a69190611b9c565b60405180910390f35b6105c960048036038101906105c49190611cdd565b610d5a565b6040516105d69190611679565b60405180910390f35b6105e7610d89565b6040516105f49190611a9c565b60405180910390f35b5f7f7965db0b000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061066f575061066e82610dad565b5b9050919050565b60605f825167ffffffffffffffff811115610694576106936116a6565b5b6040519080825280602002602001820160405280156106c25781602001602082028036833780820191505090505b5090505f5f90505b8351811015610726576106f68482815181106106e9576106e8611d2d565b5b6020026020010151610e16565b82828151811061070957610708611d2d565b5b6020026020010190151590811515815250508060010190506106ca565b5080915050919050565b7f1b03c849816e077359373cf0a8d6d8f741d643bc1e95273ffe11515f83bebf6161075a81610e68565b6107648383610e7c565b7f9f3dfa145deb5071c94eb9a1393634e982a46367c42dce9622f49213d8f427bd8383604051610795929190611e16565b60405180910390a1505050565b5f6107ab610fa7565b905090565b5f5f5f8381526020019081526020015f20600101549050919050565b6107d5826107b0565b6107de81610e68565b6107e88383610fb0565b50505050565b7f1b94c92b564251ed6b49246d9a82eb7a486b6490f3b3a3bf3b28d2e99801f3ec61081881610e68565b6108228383611099565b7f3be9b663c544556a256ca6ed9f2f6875dba1b09a6eee2571196227f7ec8c621c8383604051610853929190611e16565b60405180910390a1505050565b6108686111c5565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16146108cc576040517f6697b23200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6108d682826111d3565b505050565b5f6108e885858585610c4e565b90505f60068111156108fd576108fc611e38565b5b60ff168160ff16148484848490919293610950576040517fd9ead46f0000000000000000000000000000000000000000000000000000000081526004016109479493929190611e65565b60405180910390fd5b505050505050505050565b601781565b5f610969610a19565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16149050919050565b601581565b5f6109ad82610e16565b9050919050565b5f5f60068111156109c8576109c7611e38565b5b60ff166109d786868686610c4e565b60ff16149050949350505050565b5f601560ff168260ff161480610a015750601660ff168260ff16145b80610a125750601760ff168260ff16145b9050919050565b5f7f0000000000000000000000000000000000000000000000000000000000000000905090565b6060601560ff168260ff1603610a7057604051806060016040528060228152602001612094602291399050610b05565b601660ff168260ff1603610a9e5760405180606001604052806025815260200161206f602591399050610b05565b601760ff168260ff1603610acc5760405180606001604052806023815260200161204c602391399050610b05565b6040518060400160405280601881526020017f556e6b6e6f776e207265737472696374696f6e20636f6465000000000000000081525090505b919050565b7f1b94c92b564251ed6b49246d9a82eb7a486b6490f3b3a3bf3b28d2e99801f3ec610b3481610e68565b610b3d826112bc565b7fe46e95d98efc7b1a5d9359155b9137734ac3be3f4b32eab0f697558c27f2d99c82604051610b6c9190611c44565b60405180910390a15050565b5f610b84848484610c7b565b90505f6006811115610b9957610b98611e38565b5b60ff168160ff16148484848490919293610bec576040517fd9ead46f000000000000000000000000000000000000000000000000000000008152600401610be39493929190611e65565b60405180910390fd5b5050505050505050565b5f610c035f5f1b836113a8565b15610c115760019050610c1e565b610c1b83836113a8565b90505b92915050565b7f1b03c849816e077359373cf0a8d6d8f741d643bc1e95273ffe11515f83bebf6181565b5f5f1b81565b5f610c58856109a3565b610c655760179050610c73565b610c70848484610c7b565b90505b949350505050565b5f610c85846109a3565b610c925760159050610cbe565b610c9b836109a3565b610ca85760169050610cbe565b5f6006811115610cbb57610cba611e38565b5b90505b9392505050565b610cce826107b0565b610cd781610e68565b610ce183836111d3565b50505050565b7f1b03c849816e077359373cf0a8d6d8f741d643bc1e95273ffe11515f83bebf61610d1181610e68565b610d1a8261140b565b7f7802fa8b90d406b2eb85b620cecde734206f390fa73c61e824384474b734cd9382604051610d499190611c44565b60405180910390a15050565b601681565b5f5f6006811115610d6e57610d6d611e38565b5b60ff16610d7c858585610c7b565b60ff161490509392505050565b7f1b94c92b564251ed6b49246d9a82eb7a486b6490f3b3a3bf3b28d2e99801f3ec81565b5f7f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b5f60015f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff169050919050565b610e7981610e746111c5565b6114f8565b50565b5f60025490505f5f90505b83839050811015610f9a5760015f858584818110610ea857610ea7611d2d565b5b9050602002016020810190610ebd9190611bb5565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16610f8f576001805f868685818110610f1e57610f1d611d2d565b5b9050602002016020810190610f339190611bb5565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555081610f8c90611ed5565b91505b806001019050610e87565b5080600281905550505050565b5f600254905090565b5f610fbb8383610bf6565b61108f5760015f5f8581526020019081526020015f205f015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555061102c6111c5565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16847f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a460019050611093565b5f90505b92915050565b5f60025490505f5f90505b838390508110156111b85760015f8585848181106110c5576110c4611d2d565b5b90506020020160208101906110da9190611bb5565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16156111ad575f60015f86868581811061113c5761113b611d2d565b5b90506020020160208101906111519190611bb5565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550816111aa90611f1c565b91505b8060010190506110a4565b5080600281905550505050565b5f6111ce611549565b905090565b5f6111de8383610bf6565b156112b2575f5f5f8581526020019081526020015f205f015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555061124f6111c5565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16847ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b60405160405180910390a4600190506112b6565b5f90505b92915050565b60015f8273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1661133c576040517fcfc5cc9500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f60015f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555060025f815461139e90611f1c565b9190508190555050565b5f5f5f8481526020019081526020015f205f015f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16905092915050565b60015f8273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff161561148c576040517f57845b8b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001805f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555060025f81546114ee90611ed5565b9190508190555050565b6115028282610bf6565b6115455780826040517fe2517d3f00000000000000000000000000000000000000000000000000000000815260040161153c929190611f43565b60405180910390fd5b5050565b5f5f5f36905090505f61155a6115b1565b9050808210158015611571575061157033610960565b5b156115a1575f3682840390809261158a93929190611f72565b906115959190611fed565b60601c925050506115ae565b6115a96115bf565b925050505b90565b5f6115ba6115c6565b905090565b5f33905090565b5f6014905090565b5f604051905090565b5f5ffd5b5f5ffd5b5f7fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b611613816115df565b811461161d575f5ffd5b50565b5f8135905061162e8161160a565b92915050565b5f60208284031215611649576116486115d7565b5b5f61165684828501611620565b91505092915050565b5f8115159050919050565b6116738161165f565b82525050565b5f60208201905061168c5f83018461166a565b92915050565b5f5ffd5b5f601f19601f8301169050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b6116dc82611696565b810181811067ffffffffffffffff821117156116fb576116fa6116a6565b5b80604052505050565b5f61170d6115ce565b905061171982826116d3565b919050565b5f67ffffffffffffffff821115611738576117376116a6565b5b602082029050602081019050919050565b5f5ffd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6117768261174d565b9050919050565b6117868161176c565b8114611790575f5ffd5b50565b5f813590506117a18161177d565b92915050565b5f6117b96117b48461171e565b611704565b905080838252602082019050602084028301858111156117dc576117db611749565b5b835b8181101561180557806117f18882611793565b8452602084019350506020810190506117de565b5050509392505050565b5f82601f83011261182357611822611692565b5b81356118338482602086016117a7565b91505092915050565b5f60208284031215611851576118506115d7565b5b5f82013567ffffffffffffffff81111561186e5761186d6115db565b5b61187a8482850161180f565b91505092915050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b6118b58161165f565b82525050565b5f6118c683836118ac565b60208301905092915050565b5f602082019050919050565b5f6118e882611883565b6118f2818561188d565b93506118fd8361189d565b805f5b8381101561192d57815161191488826118bb565b975061191f836118d2565b925050600181019050611900565b5085935050505092915050565b5f6020820190508181035f83015261195281846118de565b905092915050565b5f5ffd5b5f5f83601f84011261197357611972611692565b5b8235905067ffffffffffffffff8111156119905761198f61195a565b5b6020830191508360208202830111156119ac576119ab611749565b5b9250929050565b5f5f602083850312156119c9576119c86115d7565b5b5f83013567ffffffffffffffff8111156119e6576119e56115db565b5b6119f28582860161195e565b92509250509250929050565b5f819050919050565b611a10816119fe565b82525050565b5f602082019050611a295f830184611a07565b92915050565b5f819050919050565b611a4181611a2f565b8114611a4b575f5ffd5b50565b5f81359050611a5c81611a38565b92915050565b5f60208284031215611a7757611a766115d7565b5b5f611a8484828501611a4e565b91505092915050565b611a9681611a2f565b82525050565b5f602082019050611aaf5f830184611a8d565b92915050565b5f5f60408385031215611acb57611aca6115d7565b5b5f611ad885828601611a4e565b9250506020611ae985828601611793565b9150509250929050565b611afc816119fe565b8114611b06575f5ffd5b50565b5f81359050611b1781611af3565b92915050565b5f5f5f5f60808587031215611b3557611b346115d7565b5b5f611b4287828801611793565b9450506020611b5387828801611793565b9350506040611b6487828801611793565b9250506060611b7587828801611b09565b91505092959194509250565b5f60ff82169050919050565b611b9681611b81565b82525050565b5f602082019050611baf5f830184611b8d565b92915050565b5f60208284031215611bca57611bc96115d7565b5b5f611bd784828501611793565b91505092915050565b611be981611b81565b8114611bf3575f5ffd5b50565b5f81359050611c0481611be0565b92915050565b5f60208284031215611c1f57611c1e6115d7565b5b5f611c2c84828501611bf6565b91505092915050565b611c3e8161176c565b82525050565b5f602082019050611c575f830184611c35565b92915050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f611c8f82611c5d565b611c998185611c67565b9350611ca9818560208601611c77565b611cb281611696565b840191505092915050565b5f6020820190508181035f830152611cd58184611c85565b905092915050565b5f5f5f60608486031215611cf457611cf36115d7565b5b5f611d0186828701611793565b9350506020611d1286828701611793565b9250506040611d2386828701611b09565b9150509250925092565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f82825260208201905092915050565b5f819050919050565b611d7c8161176c565b82525050565b5f611d8d8383611d73565b60208301905092915050565b5f611da76020840184611793565b905092915050565b5f602082019050919050565b5f611dc68385611d5a565b9350611dd182611d6a565b805f5b85811015611e0957611de68284611d99565b611df08882611d82565b9750611dfb83611daf565b925050600181019050611dd4565b5085925050509392505050565b5f6020820190508181035f830152611e2f818486611dbb565b90509392505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602160045260245ffd5b5f608082019050611e785f830187611c35565b611e856020830186611c35565b611e926040830185611a07565b611e9f6060830184611b8d565b95945050505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f611edf826119fe565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203611f1157611f10611ea8565b5b600182019050919050565b5f611f26826119fe565b91505f8203611f3857611f37611ea8565b5b600182039050919050565b5f604082019050611f565f830185611c35565b611f636020830184611a8d565b9392505050565b5f5ffd5b5f5ffd5b5f5f85851115611f8557611f84611f6a565b5b83861115611f9657611f95611f6e565b5b6001850283019150848603905094509492505050565b5f82905092915050565b5f7fffffffffffffffffffffffffffffffffffffffff00000000000000000000000082169050919050565b5f82821b905092915050565b5f611ff88383611fac565b826120038135611fb6565b925060148210156120435761203e7fffffffffffffffffffffffffffffffffffffffff00000000000000000000000083601403600802611fe1565b831692505b50509291505056fe546865207370656e646572206973206e6f7420696e207468652077686974656c69737454686520726563697069656e74206973206e6f7420696e207468652077686974656c6973745468652073656e646572206973206e6f7420696e207468652077686974656c697374a26469706673582212207034c6b4676521b1a838bee9b92b0282f90b7e750f40444967ff064f0d37882264736f6c634300081e0033", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/doc/compilation/hardhat/src/mocks/rules/validation/abstract/RuleAddressList/RuleAddressList.sol/RuleAddressList.dbg.json b/doc/compilation/hardhat/src/mocks/rules/validation/abstract/RuleAddressList/RuleAddressList.sol/RuleAddressList.dbg.json new file mode 100644 index 0000000..779ee23 --- /dev/null +++ b/doc/compilation/hardhat/src/mocks/rules/validation/abstract/RuleAddressList/RuleAddressList.sol/RuleAddressList.dbg.json @@ -0,0 +1,4 @@ +{ + "_format": "hh-sol-dbg-1", + "buildInfo": "../../../../../../../build-info/23e4357cece7f7823104260edabd5f69.json" +} diff --git a/doc/compilation/hardhat/src/mocks/rules/validation/abstract/RuleAddressList/RuleAddressList.sol/RuleAddressList.json b/doc/compilation/hardhat/src/mocks/rules/validation/abstract/RuleAddressList/RuleAddressList.sol/RuleAddressList.json new file mode 100644 index 0000000..22e00ec --- /dev/null +++ b/doc/compilation/hardhat/src/mocks/rules/validation/abstract/RuleAddressList/RuleAddressList.sol/RuleAddressList.json @@ -0,0 +1,464 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "RuleAddressList", + "sourceName": "src/mocks/rules/validation/abstract/RuleAddressList/RuleAddressList.sol", + "abi": [ + { + "inputs": [], + "name": "AccessControlBadConfirmation", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + }, + { + "internalType": "bytes32", + "name": "neededRole", + "type": "bytes32" + } + ], + "name": "AccessControlUnauthorizedAccount", + "type": "error" + }, + { + "inputs": [], + "name": "RuleAddressList_AdminWithAddressZeroNotAllowed", + "type": "error" + }, + { + "inputs": [], + "name": "Rulelist_AddressAlreadylisted", + "type": "error" + }, + { + "inputs": [], + "name": "Rulelist_AddressNotPresent", + "type": "error" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "targetAddress", + "type": "address" + } + ], + "name": "AddAddressToTheList", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address[]", + "name": "listTargetAddresses", + "type": "address[]" + } + ], + "name": "AddAddressesToTheList", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "targetAddress", + "type": "address" + } + ], + "name": "RemoveAddressFromTheList", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address[]", + "name": "listTargetAddresses", + "type": "address[]" + } + ], + "name": "RemoveAddressesFromTheList", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "indexed": true, + "internalType": "bytes32", + "name": "previousAdminRole", + "type": "bytes32" + }, + { + "indexed": true, + "internalType": "bytes32", + "name": "newAdminRole", + "type": "bytes32" + } + ], + "name": "RoleAdminChanged", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "indexed": true, + "internalType": "address", + "name": "account", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "sender", + "type": "address" + } + ], + "name": "RoleGranted", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "indexed": true, + "internalType": "address", + "name": "account", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "sender", + "type": "address" + } + ], + "name": "RoleRevoked", + "type": "event" + }, + { + "inputs": [], + "name": "ADDRESS_LIST_ADD_ROLE", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "ADDRESS_LIST_REMOVE_ROLE", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "DEFAULT_ADMIN_ROLE", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "targetAddress", + "type": "address" + } + ], + "name": "addAddressToTheList", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address[]", + "name": "listTargetAddresses", + "type": "address[]" + } + ], + "name": "addAddressesToTheList", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_targetAddress", + "type": "address" + } + ], + "name": "addressIsListed", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address[]", + "name": "_targetAddresses", + "type": "address[]" + } + ], + "name": "addressIsListedBatch", + "outputs": [ + { + "internalType": "bool[]", + "name": "", + "type": "bool[]" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + } + ], + "name": "getRoleAdmin", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "grantRole", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "hasRole", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "forwarder", + "type": "address" + } + ], + "name": "isTrustedForwarder", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "numberListedAddress", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "targetAddress", + "type": "address" + } + ], + "name": "removeAddressFromTheList", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address[]", + "name": "listTargetAddresses", + "type": "address[]" + } + ], + "name": "removeAddressesFromTheList", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "internalType": "address", + "name": "callerConfirmation", + "type": "address" + } + ], + "name": "renounceRole", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "revokeRole", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes4", + "name": "interfaceId", + "type": "bytes4" + } + ], + "name": "supportsInterface", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "trustedForwarder", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + } + ], + "bytecode": "0x", + "deployedBytecode": "0x", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/doc/compilation/hardhat/src/mocks/rules/validation/abstract/RuleAddressList/RuleAddressListInternal.sol/RuleAddressListInternal.dbg.json b/doc/compilation/hardhat/src/mocks/rules/validation/abstract/RuleAddressList/RuleAddressListInternal.sol/RuleAddressListInternal.dbg.json new file mode 100644 index 0000000..779ee23 --- /dev/null +++ b/doc/compilation/hardhat/src/mocks/rules/validation/abstract/RuleAddressList/RuleAddressListInternal.sol/RuleAddressListInternal.dbg.json @@ -0,0 +1,4 @@ +{ + "_format": "hh-sol-dbg-1", + "buildInfo": "../../../../../../../build-info/23e4357cece7f7823104260edabd5f69.json" +} diff --git a/doc/compilation/hardhat/src/mocks/rules/validation/abstract/RuleAddressList/RuleAddressListInternal.sol/RuleAddressListInternal.json b/doc/compilation/hardhat/src/mocks/rules/validation/abstract/RuleAddressList/RuleAddressListInternal.sol/RuleAddressListInternal.json new file mode 100644 index 0000000..85304d6 --- /dev/null +++ b/doc/compilation/hardhat/src/mocks/rules/validation/abstract/RuleAddressList/RuleAddressListInternal.sol/RuleAddressListInternal.json @@ -0,0 +1,21 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "RuleAddressListInternal", + "sourceName": "src/mocks/rules/validation/abstract/RuleAddressList/RuleAddressListInternal.sol", + "abi": [ + { + "inputs": [], + "name": "Rulelist_AddressAlreadylisted", + "type": "error" + }, + { + "inputs": [], + "name": "Rulelist_AddressNotPresent", + "type": "error" + } + ], + "bytecode": "0x", + "deployedBytecode": "0x", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/doc/compilation/hardhat/src/mocks/rules/validation/abstract/RuleAddressList/invariantStorage/RuleAddressListInvariantStorage.sol/RuleAddressListInvariantStorage.dbg.json b/doc/compilation/hardhat/src/mocks/rules/validation/abstract/RuleAddressList/invariantStorage/RuleAddressListInvariantStorage.sol/RuleAddressListInvariantStorage.dbg.json new file mode 100644 index 0000000..f35777c --- /dev/null +++ b/doc/compilation/hardhat/src/mocks/rules/validation/abstract/RuleAddressList/invariantStorage/RuleAddressListInvariantStorage.sol/RuleAddressListInvariantStorage.dbg.json @@ -0,0 +1,4 @@ +{ + "_format": "hh-sol-dbg-1", + "buildInfo": "../../../../../../../../build-info/23e4357cece7f7823104260edabd5f69.json" +} diff --git a/doc/compilation/hardhat/src/mocks/rules/validation/abstract/RuleAddressList/invariantStorage/RuleAddressListInvariantStorage.sol/RuleAddressListInvariantStorage.json b/doc/compilation/hardhat/src/mocks/rules/validation/abstract/RuleAddressList/invariantStorage/RuleAddressListInvariantStorage.sol/RuleAddressListInvariantStorage.json new file mode 100644 index 0000000..4d9250d --- /dev/null +++ b/doc/compilation/hardhat/src/mocks/rules/validation/abstract/RuleAddressList/invariantStorage/RuleAddressListInvariantStorage.sol/RuleAddressListInvariantStorage.json @@ -0,0 +1,94 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "RuleAddressListInvariantStorage", + "sourceName": "src/mocks/rules/validation/abstract/RuleAddressList/invariantStorage/RuleAddressListInvariantStorage.sol", + "abi": [ + { + "inputs": [], + "name": "RuleAddressList_AdminWithAddressZeroNotAllowed", + "type": "error" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "targetAddress", + "type": "address" + } + ], + "name": "AddAddressToTheList", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address[]", + "name": "listTargetAddresses", + "type": "address[]" + } + ], + "name": "AddAddressesToTheList", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "targetAddress", + "type": "address" + } + ], + "name": "RemoveAddressFromTheList", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address[]", + "name": "listTargetAddresses", + "type": "address[]" + } + ], + "name": "RemoveAddressesFromTheList", + "type": "event" + }, + { + "inputs": [], + "name": "ADDRESS_LIST_ADD_ROLE", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "ADDRESS_LIST_REMOVE_ROLE", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + } + ], + "bytecode": "0x", + "deployedBytecode": "0x", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/doc/compilation/hardhat/src/mocks/rules/validation/abstract/RuleAddressList/invariantStorage/RuleBlacklistInvariantStorage.sol/RuleBlacklistInvariantStorage.dbg.json b/doc/compilation/hardhat/src/mocks/rules/validation/abstract/RuleAddressList/invariantStorage/RuleBlacklistInvariantStorage.sol/RuleBlacklistInvariantStorage.dbg.json new file mode 100644 index 0000000..f35777c --- /dev/null +++ b/doc/compilation/hardhat/src/mocks/rules/validation/abstract/RuleAddressList/invariantStorage/RuleBlacklistInvariantStorage.sol/RuleBlacklistInvariantStorage.dbg.json @@ -0,0 +1,4 @@ +{ + "_format": "hh-sol-dbg-1", + "buildInfo": "../../../../../../../../build-info/23e4357cece7f7823104260edabd5f69.json" +} diff --git a/doc/compilation/hardhat/src/mocks/rules/validation/abstract/RuleAddressList/invariantStorage/RuleBlacklistInvariantStorage.sol/RuleBlacklistInvariantStorage.json b/doc/compilation/hardhat/src/mocks/rules/validation/abstract/RuleAddressList/invariantStorage/RuleBlacklistInvariantStorage.sol/RuleBlacklistInvariantStorage.json new file mode 100644 index 0000000..4f1de1f --- /dev/null +++ b/doc/compilation/hardhat/src/mocks/rules/validation/abstract/RuleAddressList/invariantStorage/RuleBlacklistInvariantStorage.sol/RuleBlacklistInvariantStorage.json @@ -0,0 +1,50 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "RuleBlacklistInvariantStorage", + "sourceName": "src/mocks/rules/validation/abstract/RuleAddressList/invariantStorage/RuleBlacklistInvariantStorage.sol", + "abi": [ + { + "inputs": [], + "name": "CODE_ADDRESS_FROM_IS_BLACKLISTED", + "outputs": [ + { + "internalType": "uint8", + "name": "", + "type": "uint8" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "CODE_ADDRESS_SPENDER_IS_BLACKLISTED", + "outputs": [ + { + "internalType": "uint8", + "name": "", + "type": "uint8" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "CODE_ADDRESS_TO_IS_BLACKLISTED", + "outputs": [ + { + "internalType": "uint8", + "name": "", + "type": "uint8" + } + ], + "stateMutability": "view", + "type": "function" + } + ], + "bytecode": "0x", + "deployedBytecode": "0x", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/doc/compilation/hardhat/src/mocks/rules/validation/abstract/RuleAddressList/invariantStorage/RuleWhitelistInvariantStorage.sol/RuleWhitelistInvariantStorage.dbg.json b/doc/compilation/hardhat/src/mocks/rules/validation/abstract/RuleAddressList/invariantStorage/RuleWhitelistInvariantStorage.sol/RuleWhitelistInvariantStorage.dbg.json new file mode 100644 index 0000000..f35777c --- /dev/null +++ b/doc/compilation/hardhat/src/mocks/rules/validation/abstract/RuleAddressList/invariantStorage/RuleWhitelistInvariantStorage.sol/RuleWhitelistInvariantStorage.dbg.json @@ -0,0 +1,4 @@ +{ + "_format": "hh-sol-dbg-1", + "buildInfo": "../../../../../../../../build-info/23e4357cece7f7823104260edabd5f69.json" +} diff --git a/doc/compilation/hardhat/src/mocks/rules/validation/abstract/RuleAddressList/invariantStorage/RuleWhitelistInvariantStorage.sol/RuleWhitelistInvariantStorage.json b/doc/compilation/hardhat/src/mocks/rules/validation/abstract/RuleAddressList/invariantStorage/RuleWhitelistInvariantStorage.sol/RuleWhitelistInvariantStorage.json new file mode 100644 index 0000000..3c24ddf --- /dev/null +++ b/doc/compilation/hardhat/src/mocks/rules/validation/abstract/RuleAddressList/invariantStorage/RuleWhitelistInvariantStorage.sol/RuleWhitelistInvariantStorage.json @@ -0,0 +1,50 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "RuleWhitelistInvariantStorage", + "sourceName": "src/mocks/rules/validation/abstract/RuleAddressList/invariantStorage/RuleWhitelistInvariantStorage.sol", + "abi": [ + { + "inputs": [], + "name": "CODE_ADDRESS_FROM_NOT_WHITELISTED", + "outputs": [ + { + "internalType": "uint8", + "name": "", + "type": "uint8" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "CODE_ADDRESS_SPENDER_NOT_WHITELISTED", + "outputs": [ + { + "internalType": "uint8", + "name": "", + "type": "uint8" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "CODE_ADDRESS_TO_NOT_WHITELISTED", + "outputs": [ + { + "internalType": "uint8", + "name": "", + "type": "uint8" + } + ], + "stateMutability": "view", + "type": "function" + } + ], + "bytecode": "0x", + "deployedBytecode": "0x", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/doc/compilation/hardhat/src/mocks/rules/validation/abstract/RuleCommonInvariantStorage.sol/RuleCommonInvariantStorage.dbg.json b/doc/compilation/hardhat/src/mocks/rules/validation/abstract/RuleCommonInvariantStorage.sol/RuleCommonInvariantStorage.dbg.json new file mode 100644 index 0000000..547ff9f --- /dev/null +++ b/doc/compilation/hardhat/src/mocks/rules/validation/abstract/RuleCommonInvariantStorage.sol/RuleCommonInvariantStorage.dbg.json @@ -0,0 +1,4 @@ +{ + "_format": "hh-sol-dbg-1", + "buildInfo": "../../../../../../build-info/23e4357cece7f7823104260edabd5f69.json" +} diff --git a/doc/compilation/hardhat/src/mocks/rules/validation/abstract/RuleCommonInvariantStorage.sol/RuleCommonInvariantStorage.json b/doc/compilation/hardhat/src/mocks/rules/validation/abstract/RuleCommonInvariantStorage.sol/RuleCommonInvariantStorage.json new file mode 100644 index 0000000..6ba6397 --- /dev/null +++ b/doc/compilation/hardhat/src/mocks/rules/validation/abstract/RuleCommonInvariantStorage.sol/RuleCommonInvariantStorage.json @@ -0,0 +1,10 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "RuleCommonInvariantStorage", + "sourceName": "src/mocks/rules/validation/abstract/RuleCommonInvariantStorage.sol", + "abi": [], + "bytecode": "0x", + "deployedBytecode": "0x", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/doc/compilation/hardhat/src/mocks/rules/validation/abstract/RuleWhitelistCommon.sol/RuleWhitelistCommon.dbg.json b/doc/compilation/hardhat/src/mocks/rules/validation/abstract/RuleWhitelistCommon.sol/RuleWhitelistCommon.dbg.json new file mode 100644 index 0000000..547ff9f --- /dev/null +++ b/doc/compilation/hardhat/src/mocks/rules/validation/abstract/RuleWhitelistCommon.sol/RuleWhitelistCommon.dbg.json @@ -0,0 +1,4 @@ +{ + "_format": "hh-sol-dbg-1", + "buildInfo": "../../../../../../build-info/23e4357cece7f7823104260edabd5f69.json" +} diff --git a/doc/compilation/hardhat/src/mocks/rules/validation/abstract/RuleWhitelistCommon.sol/RuleWhitelistCommon.json b/doc/compilation/hardhat/src/mocks/rules/validation/abstract/RuleWhitelistCommon.sol/RuleWhitelistCommon.json new file mode 100644 index 0000000..43733dd --- /dev/null +++ b/doc/compilation/hardhat/src/mocks/rules/validation/abstract/RuleWhitelistCommon.sol/RuleWhitelistCommon.json @@ -0,0 +1,265 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "RuleWhitelistCommon", + "sourceName": "src/mocks/rules/validation/abstract/RuleWhitelistCommon.sol", + "abi": [ + { + "inputs": [], + "name": "CODE_ADDRESS_FROM_NOT_WHITELISTED", + "outputs": [ + { + "internalType": "uint8", + "name": "", + "type": "uint8" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "CODE_ADDRESS_SPENDER_NOT_WHITELISTED", + "outputs": [ + { + "internalType": "uint8", + "name": "", + "type": "uint8" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "CODE_ADDRESS_TO_NOT_WHITELISTED", + "outputs": [ + { + "internalType": "uint8", + "name": "", + "type": "uint8" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint8", + "name": "restrictionCode", + "type": "uint8" + } + ], + "name": "canReturnTransferRestrictionCode", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "pure", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "canTransfer", + "outputs": [ + { + "internalType": "bool", + "name": "isValid", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "canTransferFrom", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "detectTransferRestriction", + "outputs": [ + { + "internalType": "uint8", + "name": "", + "type": "uint8" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "detectTransferRestrictionFrom", + "outputs": [ + { + "internalType": "uint8", + "name": "", + "type": "uint8" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint8", + "name": "restrictionCode", + "type": "uint8" + } + ], + "name": "messageForTransferRestriction", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "pure", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "transferred", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "transferred", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + } + ], + "bytecode": "0x", + "deployedBytecode": "0x", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/doc/compilation/hardhat/src/modules/ERC2771ModuleStandalone.sol/ERC2771ModuleStandalone.dbg.json b/doc/compilation/hardhat/src/modules/ERC2771ModuleStandalone.sol/ERC2771ModuleStandalone.dbg.json new file mode 100644 index 0000000..d9b9f08 --- /dev/null +++ b/doc/compilation/hardhat/src/modules/ERC2771ModuleStandalone.sol/ERC2771ModuleStandalone.dbg.json @@ -0,0 +1,4 @@ +{ + "_format": "hh-sol-dbg-1", + "buildInfo": "../../../build-info/23e4357cece7f7823104260edabd5f69.json" +} diff --git a/doc/compilation/hardhat/src/modules/ERC2771ModuleStandalone.sol/ERC2771ModuleStandalone.json b/doc/compilation/hardhat/src/modules/ERC2771ModuleStandalone.sol/ERC2771ModuleStandalone.json new file mode 100644 index 0000000..3db37a7 --- /dev/null +++ b/doc/compilation/hardhat/src/modules/ERC2771ModuleStandalone.sol/ERC2771ModuleStandalone.json @@ -0,0 +1,43 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "ERC2771ModuleStandalone", + "sourceName": "src/modules/ERC2771ModuleStandalone.sol", + "abi": [ + { + "inputs": [ + { + "internalType": "address", + "name": "forwarder", + "type": "address" + } + ], + "name": "isTrustedForwarder", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "trustedForwarder", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + } + ], + "bytecode": "0x", + "deployedBytecode": "0x", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/doc/compilation/hardhat/src/modules/ERC3643ComplianceModule.sol/ERC3643ComplianceModule.dbg.json b/doc/compilation/hardhat/src/modules/ERC3643ComplianceModule.sol/ERC3643ComplianceModule.dbg.json new file mode 100644 index 0000000..d9b9f08 --- /dev/null +++ b/doc/compilation/hardhat/src/modules/ERC3643ComplianceModule.sol/ERC3643ComplianceModule.dbg.json @@ -0,0 +1,4 @@ +{ + "_format": "hh-sol-dbg-1", + "buildInfo": "../../../build-info/23e4357cece7f7823104260edabd5f69.json" +} diff --git a/doc/compilation/hardhat/src/modules/ERC3643ComplianceModule.sol/ERC3643ComplianceModule.json b/doc/compilation/hardhat/src/modules/ERC3643ComplianceModule.sol/ERC3643ComplianceModule.json new file mode 100644 index 0000000..021c6e0 --- /dev/null +++ b/doc/compilation/hardhat/src/modules/ERC3643ComplianceModule.sol/ERC3643ComplianceModule.json @@ -0,0 +1,459 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "ERC3643ComplianceModule", + "sourceName": "src/modules/ERC3643ComplianceModule.sol", + "abi": [ + { + "inputs": [], + "name": "AccessControlBadConfirmation", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + }, + { + "internalType": "bytes32", + "name": "neededRole", + "type": "bytes32" + } + ], + "name": "AccessControlUnauthorizedAccount", + "type": "error" + }, + { + "inputs": [], + "name": "RuleEngine_ERC3643Compliance_InvalidTokenAddress", + "type": "error" + }, + { + "inputs": [], + "name": "RuleEngine_ERC3643Compliance_OperationNotSuccessful", + "type": "error" + }, + { + "inputs": [], + "name": "RuleEngine_ERC3643Compliance_TokenAlreadyBound", + "type": "error" + }, + { + "inputs": [], + "name": "RuleEngine_ERC3643Compliance_TokenNotBound", + "type": "error" + }, + { + "inputs": [], + "name": "RuleEngine_ERC3643Compliance_UnauthorizedCaller", + "type": "error" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "indexed": true, + "internalType": "bytes32", + "name": "previousAdminRole", + "type": "bytes32" + }, + { + "indexed": true, + "internalType": "bytes32", + "name": "newAdminRole", + "type": "bytes32" + } + ], + "name": "RoleAdminChanged", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "indexed": true, + "internalType": "address", + "name": "account", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "sender", + "type": "address" + } + ], + "name": "RoleGranted", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "indexed": true, + "internalType": "address", + "name": "account", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "sender", + "type": "address" + } + ], + "name": "RoleRevoked", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "token", + "type": "address" + } + ], + "name": "TokenBound", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "token", + "type": "address" + } + ], + "name": "TokenUnbound", + "type": "event" + }, + { + "inputs": [], + "name": "COMPLIANCE_MANAGER_ROLE", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "DEFAULT_ADMIN_ROLE", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "token", + "type": "address" + } + ], + "name": "bindToken", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "canTransfer", + "outputs": [ + { + "internalType": "bool", + "name": "isValid", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "created", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "destroyed", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + } + ], + "name": "getRoleAdmin", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "getTokenBound", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "getTokenBounds", + "outputs": [ + { + "internalType": "address[]", + "name": "", + "type": "address[]" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "grantRole", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "hasRole", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "token", + "type": "address" + } + ], + "name": "isTokenBound", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "internalType": "address", + "name": "callerConfirmation", + "type": "address" + } + ], + "name": "renounceRole", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "revokeRole", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes4", + "name": "interfaceId", + "type": "bytes4" + } + ], + "name": "supportsInterface", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "transferred", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "token", + "type": "address" + } + ], + "name": "unbindToken", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + } + ], + "bytecode": "0x", + "deployedBytecode": "0x", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/doc/compilation/hardhat/src/modules/RulesManagementModule.sol/RulesManagementModule.dbg.json b/doc/compilation/hardhat/src/modules/RulesManagementModule.sol/RulesManagementModule.dbg.json new file mode 100644 index 0000000..d9b9f08 --- /dev/null +++ b/doc/compilation/hardhat/src/modules/RulesManagementModule.sol/RulesManagementModule.dbg.json @@ -0,0 +1,4 @@ +{ + "_format": "hh-sol-dbg-1", + "buildInfo": "../../../build-info/23e4357cece7f7823104260edabd5f69.json" +} diff --git a/doc/compilation/hardhat/src/modules/RulesManagementModule.sol/RulesManagementModule.json b/doc/compilation/hardhat/src/modules/RulesManagementModule.sol/RulesManagementModule.json new file mode 100644 index 0000000..3e54488 --- /dev/null +++ b/doc/compilation/hardhat/src/modules/RulesManagementModule.sol/RulesManagementModule.json @@ -0,0 +1,416 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "RulesManagementModule", + "sourceName": "src/modules/RulesManagementModule.sol", + "abi": [ + { + "inputs": [], + "name": "AccessControlBadConfirmation", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + }, + { + "internalType": "bytes32", + "name": "neededRole", + "type": "bytes32" + } + ], + "name": "AccessControlUnauthorizedAccount", + "type": "error" + }, + { + "inputs": [], + "name": "RuleEngine_RulesManagementModule_ArrayIsEmpty", + "type": "error" + }, + { + "inputs": [], + "name": "RuleEngine_RulesManagementModule_OperationNotSuccessful", + "type": "error" + }, + { + "inputs": [], + "name": "RuleEngine_RulesManagementModule_RuleAddressZeroNotAllowed", + "type": "error" + }, + { + "inputs": [], + "name": "RuleEngine_RulesManagementModule_RuleAlreadyExists", + "type": "error" + }, + { + "inputs": [], + "name": "RuleEngine_RulesManagementModule_RuleDoNotMatch", + "type": "error" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "contract IRule", + "name": "rule", + "type": "address" + } + ], + "name": "AddRule", + "type": "event" + }, + { + "anonymous": false, + "inputs": [], + "name": "ClearRules", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "contract IRule", + "name": "rule", + "type": "address" + } + ], + "name": "RemoveRule", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "indexed": true, + "internalType": "bytes32", + "name": "previousAdminRole", + "type": "bytes32" + }, + { + "indexed": true, + "internalType": "bytes32", + "name": "newAdminRole", + "type": "bytes32" + } + ], + "name": "RoleAdminChanged", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "indexed": true, + "internalType": "address", + "name": "account", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "sender", + "type": "address" + } + ], + "name": "RoleGranted", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "indexed": true, + "internalType": "address", + "name": "account", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "sender", + "type": "address" + } + ], + "name": "RoleRevoked", + "type": "event" + }, + { + "inputs": [], + "name": "DEFAULT_ADMIN_ROLE", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "RULES_MANAGEMENT_ROLE", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "contract IRule", + "name": "rule_", + "type": "address" + } + ], + "name": "addRule", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "clearRules", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "contract IRule", + "name": "rule_", + "type": "address" + } + ], + "name": "containsRule", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + } + ], + "name": "getRoleAdmin", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "grantRole", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "hasRole", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "contract IRule", + "name": "rule_", + "type": "address" + } + ], + "name": "removeRule", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "internalType": "address", + "name": "callerConfirmation", + "type": "address" + } + ], + "name": "renounceRole", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "revokeRole", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "ruleId", + "type": "uint256" + } + ], + "name": "rule", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "rules", + "outputs": [ + { + "internalType": "address[]", + "name": "", + "type": "address[]" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "rulesCount", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "contract IRule[]", + "name": "rules_", + "type": "address[]" + } + ], + "name": "setRules", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes4", + "name": "interfaceId", + "type": "bytes4" + } + ], + "name": "supportsInterface", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + } + ], + "bytecode": "0x", + "deployedBytecode": "0x", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/doc/compilation/hardhat/src/modules/VersionModule.sol/VersionModule.dbg.json b/doc/compilation/hardhat/src/modules/VersionModule.sol/VersionModule.dbg.json new file mode 100644 index 0000000..d9b9f08 --- /dev/null +++ b/doc/compilation/hardhat/src/modules/VersionModule.sol/VersionModule.dbg.json @@ -0,0 +1,4 @@ +{ + "_format": "hh-sol-dbg-1", + "buildInfo": "../../../build-info/23e4357cece7f7823104260edabd5f69.json" +} diff --git a/doc/compilation/hardhat/src/modules/VersionModule.sol/VersionModule.json b/doc/compilation/hardhat/src/modules/VersionModule.sol/VersionModule.json new file mode 100644 index 0000000..dfa523f --- /dev/null +++ b/doc/compilation/hardhat/src/modules/VersionModule.sol/VersionModule.json @@ -0,0 +1,24 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "VersionModule", + "sourceName": "src/modules/VersionModule.sol", + "abi": [ + { + "inputs": [], + "name": "version", + "outputs": [ + { + "internalType": "string", + "name": "version_", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + } + ], + "bytecode": "0x", + "deployedBytecode": "0x", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/doc/compilation/hardhat/src/modules/library/RuleEngineInvariantStorage.sol/RuleEngineInvariantStorage.dbg.json b/doc/compilation/hardhat/src/modules/library/RuleEngineInvariantStorage.sol/RuleEngineInvariantStorage.dbg.json new file mode 100644 index 0000000..988fd88 --- /dev/null +++ b/doc/compilation/hardhat/src/modules/library/RuleEngineInvariantStorage.sol/RuleEngineInvariantStorage.dbg.json @@ -0,0 +1,4 @@ +{ + "_format": "hh-sol-dbg-1", + "buildInfo": "../../../../build-info/23e4357cece7f7823104260edabd5f69.json" +} diff --git a/doc/compilation/hardhat/src/modules/library/RuleEngineInvariantStorage.sol/RuleEngineInvariantStorage.json b/doc/compilation/hardhat/src/modules/library/RuleEngineInvariantStorage.sol/RuleEngineInvariantStorage.json new file mode 100644 index 0000000..6162b92 --- /dev/null +++ b/doc/compilation/hardhat/src/modules/library/RuleEngineInvariantStorage.sol/RuleEngineInvariantStorage.json @@ -0,0 +1,16 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "RuleEngineInvariantStorage", + "sourceName": "src/modules/library/RuleEngineInvariantStorage.sol", + "abi": [ + { + "inputs": [], + "name": "RuleEngine_AdminWithAddressZeroNotAllowed", + "type": "error" + } + ], + "bytecode": "0x", + "deployedBytecode": "0x", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/doc/compilation/hardhat/src/modules/library/RulesManagementModuleInvariantStorage.sol/RulesManagementModuleInvariantStorage.dbg.json b/doc/compilation/hardhat/src/modules/library/RulesManagementModuleInvariantStorage.sol/RulesManagementModuleInvariantStorage.dbg.json new file mode 100644 index 0000000..988fd88 --- /dev/null +++ b/doc/compilation/hardhat/src/modules/library/RulesManagementModuleInvariantStorage.sol/RulesManagementModuleInvariantStorage.dbg.json @@ -0,0 +1,4 @@ +{ + "_format": "hh-sol-dbg-1", + "buildInfo": "../../../../build-info/23e4357cece7f7823104260edabd5f69.json" +} diff --git a/doc/compilation/hardhat/src/modules/library/RulesManagementModuleInvariantStorage.sol/RulesManagementModuleInvariantStorage.json b/doc/compilation/hardhat/src/modules/library/RulesManagementModuleInvariantStorage.sol/RulesManagementModuleInvariantStorage.json new file mode 100644 index 0000000..74d32fe --- /dev/null +++ b/doc/compilation/hardhat/src/modules/library/RulesManagementModuleInvariantStorage.sol/RulesManagementModuleInvariantStorage.json @@ -0,0 +1,81 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "RulesManagementModuleInvariantStorage", + "sourceName": "src/modules/library/RulesManagementModuleInvariantStorage.sol", + "abi": [ + { + "inputs": [], + "name": "RuleEngine_RulesManagementModule_ArrayIsEmpty", + "type": "error" + }, + { + "inputs": [], + "name": "RuleEngine_RulesManagementModule_OperationNotSuccessful", + "type": "error" + }, + { + "inputs": [], + "name": "RuleEngine_RulesManagementModule_RuleAddressZeroNotAllowed", + "type": "error" + }, + { + "inputs": [], + "name": "RuleEngine_RulesManagementModule_RuleAlreadyExists", + "type": "error" + }, + { + "inputs": [], + "name": "RuleEngine_RulesManagementModule_RuleDoNotMatch", + "type": "error" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "contract IRule", + "name": "rule", + "type": "address" + } + ], + "name": "AddRule", + "type": "event" + }, + { + "anonymous": false, + "inputs": [], + "name": "ClearRules", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "contract IRule", + "name": "rule", + "type": "address" + } + ], + "name": "RemoveRule", + "type": "event" + }, + { + "inputs": [], + "name": "RULES_MANAGEMENT_ROLE", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + } + ], + "bytecode": "0x", + "deployedBytecode": "0x", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/doc/coverage/code-coverage.png b/doc/coverage/code-coverage.png new file mode 100644 index 0000000000000000000000000000000000000000..11adac19dd7c468d1d5c6bfa56a43603d1c0cdd1 GIT binary patch literal 145057 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 z%0D`j#amKvid7d7FhAttAqLYmDYf;*^ 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%0AC{KbK>7TO#&pa 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.info Lines: - 175 - 177 - 98.9 % + 123 + 125 + 98.4 % Date: - 2025-07-22 14:36:48 + 2025-08-15 12:12:38 Functions: - 39 - 40 - 97.5 % + 33 + 34 + 97.1 % Branches: - 25 - 25 - 100.0 % + 29 + 34 + 85.3 % @@ -87,23 +87,23 @@
      100.0%
      100.0 % - 115 / 115 + 73 / 73 100.0 % - 29 / 29 - 100.0 % - 12 / 12 + 21 / 21 + 81.5 % + 22 / 27
      src -
      96.8%96.8%
      +
      96.2%96.2%
      - 96.8 % - 60 / 62 - 90.9 % - 10 / 11 + 96.2 % + 50 / 52 + 92.3 % + 12 / 13 100.0 % - 13 / 13 + 7 / 7 diff --git a/doc/coverage/coverage/index-sort-f.html b/doc/coverage/coverage/index-sort-f.html index f424e13..15b6e4d 100644 --- a/doc/coverage/coverage/index-sort-f.html +++ b/doc/coverage/coverage/index-sort-f.html @@ -31,27 +31,27 @@ lcov.info Lines: - 175 - 177 - 98.9 % + 123 + 125 + 98.4 % Date: - 2025-07-22 14:36:48 + 2025-08-15 12:12:38 Functions: - 39 - 40 - 97.5 % + 33 + 34 + 97.1 % Branches: - 25 - 25 - 100.0 % + 29 + 34 + 85.3 % @@ -84,14 +84,14 @@ src -
      96.8%96.8%
      +
      96.2%96.2%
      - 96.8 % - 60 / 62 - 90.9 % - 10 / 11 + 96.2 % + 50 / 52 + 92.3 % + 12 / 13 100.0 % - 13 / 13 + 7 / 7 src/modules @@ -99,11 +99,11 @@
      100.0%
      100.0 % - 115 / 115 + 73 / 73 100.0 % - 29 / 29 - 100.0 % - 12 / 12 + 21 / 21 + 81.5 % + 22 / 27 diff --git a/doc/coverage/coverage/index-sort-l.html b/doc/coverage/coverage/index-sort-l.html index 3a899d6..4273893 100644 --- a/doc/coverage/coverage/index-sort-l.html +++ b/doc/coverage/coverage/index-sort-l.html @@ -31,27 +31,27 @@ lcov.info Lines: - 175 - 177 - 98.9 % + 123 + 125 + 98.4 % Date: - 2025-07-22 14:36:48 + 2025-08-15 12:12:38 Functions: - 39 - 40 - 97.5 % + 33 + 34 + 97.1 % Branches: - 25 - 25 - 100.0 % + 29 + 34 + 85.3 % @@ -84,14 +84,14 @@ src -
      96.8%96.8%
      +
      96.2%96.2%
      - 96.8 % - 60 / 62 - 90.9 % - 10 / 11 + 96.2 % + 50 / 52 + 92.3 % + 12 / 13 100.0 % - 13 / 13 + 7 / 7 src/modules @@ -99,11 +99,11 @@
      100.0%
      100.0 % - 115 / 115 + 73 / 73 100.0 % - 29 / 29 - 100.0 % - 12 / 12 + 21 / 21 + 81.5 % + 22 / 27 diff --git a/doc/coverage/coverage/index.html b/doc/coverage/coverage/index.html index bc2511d..41a2530 100644 --- a/doc/coverage/coverage/index.html +++ b/doc/coverage/coverage/index.html @@ -31,27 +31,27 @@ lcov.info Lines: - 175 - 177 - 98.9 % + 123 + 125 + 98.4 % Date: - 2025-07-22 14:36:48 + 2025-08-15 12:12:38 Functions: - 39 - 40 - 97.5 % + 33 + 34 + 97.1 % Branches: - 25 - 25 - 100.0 % + 29 + 34 + 85.3 % @@ -84,14 +84,14 @@ src -
      96.8%96.8%
      +
      96.2%96.2%
      - 96.8 % - 60 / 62 - 90.9 % - 10 / 11 + 96.2 % + 50 / 52 + 92.3 % + 12 / 13 100.0 % - 13 / 13 + 7 / 7 src/modules @@ -99,11 +99,11 @@
      100.0%
      100.0 % - 115 / 115 + 73 / 73 100.0 % - 29 / 29 - 100.0 % - 12 / 12 + 21 / 21 + 81.5 % + 22 / 27 diff --git a/doc/coverage/coverage/src/RuleEngine.sol.func-sort-c.html b/doc/coverage/coverage/src/RuleEngine.sol.func-sort-c.html index 0cb47e3..75b792f 100644 --- a/doc/coverage/coverage/src/RuleEngine.sol.func-sort-c.html +++ b/doc/coverage/coverage/src/RuleEngine.sol.func-sort-c.html @@ -31,26 +31,26 @@ lcov.info Lines: - 60 - 62 - 96.8 % + 10 + 12 + 83.3 % Date: - 2025-07-22 14:36:48 + 2025-08-15 12:12:38 Functions: - 10 - 11 - 90.9 % + 3 + 4 + 75.0 % Branches: - 13 - 13 + 2 + 2 100.0 % @@ -69,48 +69,20 @@ Hit count Sort by hit count - RuleEngine._msgData + RuleEngine._msgData 0 - RuleEngine.detectTransferRestrictionFrom - 9 - - - RuleEngine.transferred - 10 - - - RuleEngine.canTransferFrom - 13 - - - RuleEngine.detectTransferRestriction - 13 - - - RuleEngine.messageForTransferRestriction - 13 - - - RuleEngine.canTransfer - 17 - - - RuleEngine.constructor - 78 - - - RuleEngine.hasRole - 101 + RuleEngine.constructor + 90 - RuleEngine._contextSuffixLength - 262 + RuleEngine._contextSuffixLength + 300 - RuleEngine._msgSender - 262 + RuleEngine._msgSender + 300
      diff --git a/doc/coverage/coverage/src/RuleEngine.sol.func.html b/doc/coverage/coverage/src/RuleEngine.sol.func.html index 1aa88ac..20dc8f4 100644 --- a/doc/coverage/coverage/src/RuleEngine.sol.func.html +++ b/doc/coverage/coverage/src/RuleEngine.sol.func.html @@ -31,26 +31,26 @@ lcov.info Lines: - 60 - 62 - 96.8 % + 10 + 12 + 83.3 % Date: - 2025-07-22 14:36:48 + 2025-08-15 12:12:38 Functions: - 10 - 11 - 90.9 % + 3 + 4 + 75.0 % Branches: - 13 - 13 + 2 + 2 100.0 % @@ -69,48 +69,20 @@ Hit count Sort by hit count - RuleEngine._contextSuffixLength - 262 + RuleEngine._contextSuffixLength + 300 - RuleEngine._msgData + RuleEngine._msgData 0 - RuleEngine._msgSender - 262 - - - RuleEngine.canTransfer - 17 - - - RuleEngine.canTransferFrom - 13 - - - RuleEngine.constructor - 78 - - - RuleEngine.detectTransferRestriction - 13 - - - RuleEngine.detectTransferRestrictionFrom - 9 - - - RuleEngine.hasRole - 101 - - - RuleEngine.messageForTransferRestriction - 13 + RuleEngine._msgSender + 300 - RuleEngine.transferred - 10 + RuleEngine.constructor + 90
      diff --git a/doc/coverage/coverage/src/RuleEngine.sol.gcov.html b/doc/coverage/coverage/src/RuleEngine.sol.gcov.html index d9cf2cf..3ef64f3 100644 --- a/doc/coverage/coverage/src/RuleEngine.sol.gcov.html +++ b/doc/coverage/coverage/src/RuleEngine.sol.gcov.html @@ -31,26 +31,26 @@ lcov.info Lines: - 60 - 62 - 96.8 % + 10 + 12 + 83.3 % Date: - 2025-07-22 14:36:48 + 2025-08-15 12:12:38 Functions: - 10 - 11 - 90.9 % + 3 + 4 + 75.0 % Branches: - 13 - 13 + 2 + 2 100.0 % @@ -73,262 +73,80 @@ 2 : : 3 : : pragma solidity ^0.8.20; 4 : : - 5 : : import "CMTAT/interfaces/engine/IRuleEngine.sol"; - 6 : : import "./modules/MetaTxModuleStandalone.sol"; - 7 : : import "./modules/RuleEngineOperation.sol"; - 8 : : import {RuleEngineValidation} from "./modules/RuleEngineValidation.sol"; - 9 : : import {IRuleValidation} from "./interfaces/IRuleValidation.sol"; - 10 : : /** - 11 : : * @title Implementation of a ruleEngine as defined by the CMTAT - 12 : : */ - 13 : : contract RuleEngine is - 14 : : IRuleEngine, - 15 : : RuleEngineOperation, - 16 : : RuleEngineValidation, - 17 : : MetaTxModuleStandalone - 18 : : { - 19 : : - 20 : : /** - 21 : : * @notice - 22 : : * Get the current version of the smart contract - 23 : : */ - 24 : : string public constant VERSION = "2.2.0"; - 25 : : - 26 : : /** - 27 : : * @param admin Address of the contract (Access Control) - 28 : : * @param forwarderIrrevocable Address of the forwarder, required for the gasless support - 29 : : */ - 30 : 78 : constructor( - 31 : : address admin, - 32 : : address forwarderIrrevocable, - 33 : : address tokenContract - 34 : : ) MetaTxModuleStandalone(forwarderIrrevocable) { - 35 [ + ]: 78 : if (admin == address(0)) { - 36 : 1 : revert RuleEngine_AdminWithAddressZeroNotAllowed(); - 37 : : } - 38 [ + ]: 77 : if (tokenContract != address(0)) { - 39 : 15 : _grantRole(TOKEN_CONTRACT_ROLE, tokenContract); - 40 : : } - 41 : 77 : _grantRole(DEFAULT_ADMIN_ROLE, admin); - 42 : : } - 43 : : - 44 : : /** - 45 : : * @notice Go through all the rule to know if a restriction exists on the transfer - 46 : : * @param from the origin address - 47 : : * @param to the destination address - 48 : : * @param value to transfer - 49 : : * @return The restricion code or REJECTED_CODE_BASE.TRANSFER_OK - 50 : : **/ - 51 : 13 : function detectTransferRestriction( - 52 : : address from, - 53 : : address to, - 54 : : uint256 value - 55 : : ) public view override returns (uint8) { - 56 : : // Validation - 57 : 30 : uint8 code = RuleEngineValidation.detectTransferRestrictionValidation( - 58 : : from, - 59 : : to, - 60 : : value - 61 : : ); - 62 [ + ]: 30 : if (code != uint8(REJECTED_CODE_BASE.TRANSFER_OK)) { - 63 : 11 : return code; - 64 : : } + 5 : : /* ==== OpenZeppelin === */ + 6 : : import {Context} from "OZ/utils/Context.sol"; + 7 : : /* ==== Modules === */ + 8 : : import {ERC2771ModuleStandalone, ERC2771Context} from "./modules/ERC2771ModuleStandalone.sol"; + 9 : : /* ==== Base contract === */ + 10 : : import {RuleEngineBase} from "./RuleEngineBase.sol"; + 11 : : /** + 12 : : * @title Implementation of a ruleEngine as defined by the CMTAT + 13 : : */ + 14 : : contract RuleEngine is + 15 : : ERC2771ModuleStandalone, + 16 : : RuleEngineBase + 17 : : { + 18 : : /** + 19 : : * @param admin Address of the contract (Access Control) + 20 : : * @param forwarderIrrevocable Address of the forwarder, required for the gasless support + 21 : : */ + 22 : 90 : constructor( + 23 : : address admin, + 24 : : address forwarderIrrevocable, + 25 : : address tokenContract + 26 : : ) ERC2771ModuleStandalone(forwarderIrrevocable) { + 27 [ + ]: 90 : if (admin == address(0)) { + 28 : 1 : revert RuleEngine_AdminWithAddressZeroNotAllowed(); + 29 : : } + 30 [ + ]: 89 : if (tokenContract != address(0)) { + 31 : 15 : _bindToken(tokenContract); + 32 : : } + 33 : 89 : _grantRole(DEFAULT_ADMIN_ROLE, admin); + 34 : : } + 35 : : + 36 : : /*////////////////////////////////////////////////////////////// + 37 : : ERC-2771 + 38 : : //////////////////////////////////////////////////////////////*/ + 39 : : + 40 : : /** + 41 : : * @dev This surcharge is not necessary if you do not use the MetaTxModule + 42 : : */ + 43 : 300 : function _msgSender() + 44 : : internal + 45 : : view + 46 : : virtual + 47 : : override(ERC2771Context, Context) + 48 : : returns (address sender) + 49 : : { + 50 : 300 : return ERC2771Context._msgSender(); + 51 : : } + 52 : : + 53 : : /** + 54 : : * @dev This surcharge is not necessary if you do not use the MetaTxModule + 55 : : */ + 56 : 0 : function _msgData() + 57 : : internal + 58 : : view + 59 : : virtual + 60 : : override(ERC2771Context, Context) + 61 : : returns (bytes calldata) + 62 : : { + 63 : 0 : return ERC2771Context._msgData(); + 64 : : } 65 : : - 66 : : // Operation - 67 : 19 : uint256 rulesLength = _rulesOperation.length; - 68 : 19 : for (uint256 i = 0; i < rulesLength; ++i) { - 69 : 16 : uint8 restriction = IRuleValidation(_rulesOperation[i]) - 70 : : .detectTransferRestriction(from, to, value); - 71 [ + ]: 16 : if (restriction > 0) { - 72 : 10 : return restriction; - 73 : : } - 74 : : } - 75 : : - 76 : 9 : return uint8(REJECTED_CODE_BASE.TRANSFER_OK); + 66 : : /** + 67 : : * @dev This surcharge is not necessary if you do not use the MetaTxModule + 68 : : */ + 69 : 300 : function _contextSuffixLength() + 70 : : internal + 71 : : view + 72 : : virtual + 73 : : override(ERC2771Context, Context) + 74 : : returns (uint256) + 75 : : { + 76 : 300 : return ERC2771Context._contextSuffixLength(); 77 : : } - 78 : : - 79 : 9 : function detectTransferRestrictionFrom( - 80 : : address spender, - 81 : : address from, - 82 : : address to, - 83 : : uint256 value - 84 : : ) public view override returns (uint8) { - 85 : : // Validation - 86 : 22 : uint8 code = RuleEngineValidation.detectTransferRestrictionValidationFrom(spender, - 87 : : from, - 88 : : to, - 89 : : value - 90 : : ); - 91 [ + ]: 22 : if (code != uint8(REJECTED_CODE_BASE.TRANSFER_OK)) { - 92 : 10 : return code; - 93 : : } - 94 : : - 95 : : // Operation - 96 : 12 : uint256 rulesLength = _rulesOperation.length; - 97 : 12 : for (uint256 i = 0; i < rulesLength; ++i) { - 98 : 12 : uint8 restriction = IRuleValidation(_rulesOperation[i]) - 99 : : .detectTransferRestrictionFrom(spender,from, to, value); - 100 [ + ]: 12 : if (restriction > 0) { - 101 : 6 : return restriction; - 102 : : } - 103 : : } - 104 : : - 105 : 6 : return uint8(REJECTED_CODE_BASE.TRANSFER_OK); - 106 : : } - 107 : : - 108 : : /** - 109 : : * @notice Validate a transfer - 110 : : * @param from the origin address - 111 : : * @param to the destination address - 112 : : * @param value to transfer - 113 : : * @return True if the transfer is valid, false otherwise - 114 : : **/ - 115 : 17 : function canTransfer( - 116 : : address from, - 117 : : address to, - 118 : : uint256 value - 119 : : ) public view override returns (bool) { - 120 : 17 : return - 121 : 17 : detectTransferRestriction(from, to, value) == - 122 : : uint8(REJECTED_CODE_BASE.TRANSFER_OK); - 123 : : } - 124 : : - 125 : : /** - 126 : : * @notice Validate a transfer - 127 : : * @param from the origin address - 128 : : * @param to the destination address - 129 : : * @param value to transfer - 130 : : * @return True if the transfer is valid, false otherwise - 131 : : **/ - 132 : 13 : function canTransferFrom( - 133 : : address spender, - 134 : : address from, - 135 : : address to, - 136 : : uint256 value - 137 : : ) public view override returns (bool) { - 138 : 13 : return - 139 : 13 : detectTransferRestrictionFrom(spender, from, to, value) == - 140 : : uint8(REJECTED_CODE_BASE.TRANSFER_OK); - 141 : : } - 142 : : - 143 : : /** - 144 : : * @notice Return the message corresponding to the code - 145 : : * @param restrictionCode The target restriction code - 146 : : * @return True if the transfer is valid, false otherwise - 147 : : **/ - 148 : 13 : function messageForTransferRestriction( - 149 : : uint8 restrictionCode - 150 : : ) external view override returns (string memory) { - 151 : : // Validation - 152 : 13 : uint256 rulesLength = _rulesValidation.length; - 153 : 13 : for (uint256 i = 0; i < rulesLength; ++i) { - 154 : : if ( - 155 : 8 : IRuleValidation(_rulesValidation[i]) - 156 : : .canReturnTransferRestrictionCode(restrictionCode) - 157 [ + ]: 7 : ) { - 158 : 7 : return - 159 : 7 : IRuleValidation(_rulesValidation[i]) - 160 : : .messageForTransferRestriction(restrictionCode); - 161 : : } - 162 : : } - 163 : : // operation - 164 : 6 : rulesLength = _rulesOperation.length; - 165 : 6 : for (uint256 i = 0; i < rulesLength; ++i) { - 166 : : if ( - 167 : 2 : IRuleValidation(_rulesOperation[i]) - 168 : : .canReturnTransferRestrictionCode(restrictionCode) - 169 [ + ]: 1 : ) { - 170 : 1 : return - 171 : 1 : IRuleValidation(_rulesOperation[i]) - 172 : : .messageForTransferRestriction(restrictionCode); - 173 : : } - 174 : : } - 175 : 5 : return "Unknown restriction code"; - 176 : : } - 177 : : - 178 : : /* - 179 : : * @notice function protected by access control - 180 : : */ - 181 : 3 : function transferred( - 182 : : address spender, - 183 : : address from, - 184 : : address to, - 185 : : uint256 value - 186 : : ) public override onlyRole(TOKEN_CONTRACT_ROLE) { - 187 : : // Validate transfer - 188 [ + + ]: 2 : require(RuleEngineValidation.canTransferValidationFrom(spender, from, to, value), RuleEngine_InvalidTransfer(from, to, value)); - 189 : : - 190 : : // Apply operation on RuleEngine - 191 : 1 : RuleEngineOperation._transferred(from, to, value); - 192 : : } - 193 : : - 194 : 7 : function transferred( - 195 : : address from, - 196 : : address to, - 197 : : uint256 value - 198 : : ) public override onlyRole(TOKEN_CONTRACT_ROLE) { - 199 : : // Validate transfer - 200 [ + + ]: 7 : require(RuleEngineValidation.canTransferValidation(from, to, value),RuleEngine_InvalidTransfer(from, to, value)); - 201 : : - 202 : : // Apply operation on RuleEngine - 203 : 4 : RuleEngineOperation._transferred(from, to, value); - 204 : : } - 205 : : - 206 : : /* ============ ACCESS CONTROL ============ */ - 207 : : /** - 208 : : * @dev Returns `true` if `account` has been granted `role`. - 209 : : */ - 210 : 101 : function hasRole( - 211 : : bytes32 role, - 212 : : address account - 213 : : ) public view virtual override(AccessControl) returns (bool) { - 214 : : // The Default Admin has all roles - 215 [ + ]: 271 : if (AccessControl.hasRole(DEFAULT_ADMIN_ROLE, account)) { - 216 : 151 : return true; - 217 : : } - 218 : 120 : return AccessControl.hasRole(role, account); - 219 : : } - 220 : : - 221 : : /*////////////////////////////////////////////////////////////// - 222 : : ERC-2771 - 223 : : //////////////////////////////////////////////////////////////*/ - 224 : : - 225 : : /** - 226 : : * @dev This surcharge is not necessary if you do not use the MetaTxModule - 227 : : */ - 228 : 262 : function _msgSender() - 229 : : internal - 230 : : view - 231 : : override(ERC2771Context, Context) - 232 : : returns (address sender) - 233 : : { - 234 : 262 : return ERC2771Context._msgSender(); - 235 : : } - 236 : : - 237 : : /** - 238 : : * @dev This surcharge is not necessary if you do not use the MetaTxModule - 239 : : */ - 240 : 0 : function _msgData() - 241 : : internal - 242 : : view - 243 : : override(ERC2771Context, Context) - 244 : : returns (bytes calldata) - 245 : : { - 246 : 0 : return ERC2771Context._msgData(); - 247 : : } - 248 : : - 249 : : /** - 250 : : * @dev This surcharge is not necessary if you do not use the MetaTxModule - 251 : : */ - 252 : 262 : function _contextSuffixLength() - 253 : : internal - 254 : : view - 255 : : override(ERC2771Context, Context) - 256 : : returns (uint256) - 257 : : { - 258 : 262 : return ERC2771Context._contextSuffixLength(); - 259 : : } - 260 : : } + 78 : : } diff --git a/doc/coverage/coverage/src/RuleEngineBase.sol.func-sort-c.html b/doc/coverage/coverage/src/RuleEngineBase.sol.func-sort-c.html new file mode 100644 index 0000000..e98ecbd --- /dev/null +++ b/doc/coverage/coverage/src/RuleEngineBase.sol.func-sort-c.html @@ -0,0 +1,117 @@ + + + + + + + LCOV - lcov.info - src/RuleEngineBase.sol - functions + + + + + + + + + + + + + + +
      LCOV - code coverage report
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      Current view:top level - src - RuleEngineBase.sol (source / functions)HitTotalCoverage
      Test:lcov.infoLines:4040100.0 %
      Date:2025-08-15 12:12:38Functions:99100.0 %
      Branches:55100.0 %
      +
      + +

      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

      Function Name Sort by function nameHit count Sort by hit count
      RuleEngineBase.created2
      RuleEngineBase.destroyed2
      RuleEngineBase.detectTransferRestrictionFrom11
      RuleEngineBase.transferred12
      RuleEngineBase.messageForTransferRestriction13
      RuleEngineBase.canTransferFrom14
      RuleEngineBase.canTransfer18
      RuleEngineBase.detectTransferRestriction21
      RuleEngineBase.hasRole98
      +
      +
      + + + +
      Generated by: LCOV version 1.16
      +
      + + + diff --git a/doc/coverage/coverage/src/RuleEngineBase.sol.func.html b/doc/coverage/coverage/src/RuleEngineBase.sol.func.html new file mode 100644 index 0000000..8a30502 --- /dev/null +++ b/doc/coverage/coverage/src/RuleEngineBase.sol.func.html @@ -0,0 +1,117 @@ + + + + + + + LCOV - lcov.info - src/RuleEngineBase.sol - functions + + + + + + + + + + + + + + +
      LCOV - code coverage report
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      Current view:top level - src - RuleEngineBase.sol (source / functions)HitTotalCoverage
      Test:lcov.infoLines:4040100.0 %
      Date:2025-08-15 12:12:38Functions:99100.0 %
      Branches:55100.0 %
      +
      + +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

      Function Name Sort by function nameHit count Sort by hit count
      RuleEngineBase.canTransfer18
      RuleEngineBase.canTransferFrom14
      RuleEngineBase.created2
      RuleEngineBase.destroyed2
      RuleEngineBase.detectTransferRestriction21
      RuleEngineBase.detectTransferRestrictionFrom11
      RuleEngineBase.hasRole98
      RuleEngineBase.messageForTransferRestriction13
      RuleEngineBase.transferred12
      +
      +
      + + + +
      Generated by: LCOV version 1.16
      +
      + + + diff --git a/doc/coverage/coverage/src/modules/RuleEngineOperation.sol.gcov.html b/doc/coverage/coverage/src/RuleEngineBase.sol.gcov.html similarity index 53% rename from doc/coverage/coverage/src/modules/RuleEngineOperation.sol.gcov.html rename to doc/coverage/coverage/src/RuleEngineBase.sol.gcov.html index 6506b68..bdd45c3 100644 --- a/doc/coverage/coverage/src/modules/RuleEngineOperation.sol.gcov.html +++ b/doc/coverage/coverage/src/RuleEngineBase.sol.gcov.html @@ -4,22 +4,22 @@ - LCOV - lcov.info - src/modules/RuleEngineOperation.sol - + LCOV - lcov.info - src/RuleEngineBase.sol + - + - +
      LCOV - code coverage report
      - + @@ -31,17 +31,17 @@ - - + + - + - - + + @@ -49,16 +49,16 @@ - - + + - +
      Current view:top level - src/modules - RuleEngineOperation.sol (source / functions)top level - src - RuleEngineBase.sol (source / functions) Hitlcov.info Lines:33334040 100.0 %
      Date:2025-07-22 14:36:482025-08-15 12:12:38 Functions:111199 100.0 %
      Branches:1155 100.0 %
      @@ -73,168 +73,178 @@ 2 : : 3 : : pragma solidity ^0.8.20; 4 : : - 5 : : import "./RuleInternal.sol"; - 6 : : import "../interfaces/IRuleEngineOperation.sol"; - 7 : : import "../interfaces/IRuleOperation.sol"; - 8 : : import "OZ/access/AccessControl.sol"; - 9 : : - 10 : : /** - 11 : : * @title Implementation of a ruleEngine defined by the CMTAT - 12 : : */ - 13 : : abstract contract RuleEngineOperation is - 14 : : AccessControl, - 15 : : RuleInternal, - 16 : : IRuleEngineOperation - 17 : : { - 18 : : /// @dev Array of rules - 19 : : address[] internal _rulesOperation; - 20 : : - 21 : : /** - 22 : : * @notice Set all the rules, will overwrite all the previous rules. \n - 23 : : * Revert if one rule is a zero address or if the rule is already present - 24 : : * - 25 : : */ - 26 : 11 : function setRulesOperation( - 27 : : address[] calldata rules_ - 28 : : ) public onlyRole(RULE_ENGINE_OPERATOR_ROLE) { - 29 [ + ]: 11 : if (_rulesOperation.length > 0) { - 30 : 10 : _clearRulesOperation(); - 31 : : } - 32 : 11 : _setRules(rules_); - 33 : 8 : _rulesOperation = rules_; - 34 : : } - 35 : : - 36 : : /** - 37 : : * @notice Clear all the rules of the array of rules - 38 : : * - 39 : : */ - 40 : 4 : function clearRulesOperation() public onlyRole(RULE_ENGINE_OPERATOR_ROLE) { - 41 : 4 : _clearRulesOperation(); - 42 : : } - 43 : : - 44 : : /** - 45 : : * @notice Clear all the rules of the array of rules - 46 : : * - 47 : : */ - 48 : 14 : function _clearRulesOperation() internal { - 49 : 14 : uint256 index; - 50 : : // we remove the last element first since it is more optimized. - 51 : 14 : for (uint256 i = _rulesOperation.length; i > 0; --i) { - 52 : : unchecked { - 53 : : // don't underflow since i > 0 - 54 : 17 : index = i - 1; - 55 : : } - 56 : 17 : _removeRuleOperation(_rulesOperation[index], index); - 57 : : } - 58 : 14 : emit ClearRules(_rulesOperation); + 5 : : /* ==== OpenZeppelin === */ + 6 : : import {AccessControl} from "OZ/access/AccessControl.sol"; + 7 : : /* ==== CMTAT === */ + 8 : : import {IRuleEngine}from "CMTAT/interfaces/engine/IRuleEngine.sol"; + 9 : : import {IERC1404, IERC1404Extend} from "CMTAT/interfaces/tokenization/draft-IERC1404.sol"; + 10 : : import {IERC3643ComplianceRead, IERC3643IComplianceContract} from "CMTAT/interfaces/tokenization/IERC3643Partial.sol"; + 11 : : import {IERC7551Compliance} from "CMTAT/interfaces/tokenization/draft-IERC7551.sol"; + 12 : : + 13 : : /* ==== Modules === */ + 14 : : import {ERC3643ComplianceModule, IERC3643Compliance} from "./modules/ERC3643ComplianceModule.sol"; + 15 : : import {VersionModule} from "./modules/VersionModule.sol"; + 16 : : import {RulesManagementModule} from "./modules/RulesManagementModule.sol"; + 17 : : + 18 : : /* ==== Interface and other library === */ + 19 : : import {IRule} from "./interfaces/IRule.sol"; + 20 : : import {RuleEngineInvariantStorage} from "./modules/library/RuleEngineInvariantStorage.sol"; + 21 : : /** + 22 : : * @title Implementation of a ruleEngine as defined by the CMTAT + 23 : : */ + 24 : : abstract contract RuleEngineBase is + 25 : : VersionModule, + 26 : : RulesManagementModule, + 27 : : ERC3643ComplianceModule, + 28 : : RuleEngineInvariantStorage, + 29 : : IRuleEngine + 30 : : { + 31 : : /* ============ State functions ============ */ + 32 : : /* + 33 : : * @inheritdoc IRuleEngine + 34 : : */ + 35 : 3 : function transferred( + 36 : : address spender, + 37 : : address from, + 38 : : address to, + 39 : : uint256 value + 40 : : ) public virtual override(IRuleEngine) onlyBoundToken { + 41 : : // Apply on RuleEngine + 42 : 2 : RulesManagementModule._transferred(spender, from, to, value); + 43 : : } + 44 : : + 45 : : /** + 46 : : * @inheritdoc IERC3643IComplianceContract + 47 : : */ + 48 : 9 : function transferred( + 49 : : address from, + 50 : : address to, + 51 : : uint256 value + 52 : : ) public virtual override(IERC3643IComplianceContract) onlyBoundToken { + 53 : 8 : _transferred(from, to, value); + 54 : : } + 55 : : + 56 : : /// @inheritdoc IERC3643Compliance + 57 : 2 : function created(address to, uint256 value) public virtual override(IERC3643Compliance) onlyBoundToken{ + 58 : 1 : _transferred(address(0), to, value); 59 : : } 60 : : - 61 : : /** - 62 : : * @notice Add a rule to the array of rules - 63 : : * Revert if one rule is a zero address or if the rule is already present - 64 : : * - 65 : : */ - 66 : 36 : function addRuleOperation( - 67 : : IRuleOperation rule_ - 68 : : ) public onlyRole(RULE_ENGINE_OPERATOR_ROLE) { - 69 : 36 : RuleInternal._addRule(_rulesOperation, address(rule_)); - 70 : 34 : emit AddRule(address(rule_)); - 71 : : } - 72 : : - 73 : : /** - 74 : : * @notice Remove a rule from the array of rules - 75 : : * Revert if the rule found at the specified index does not match the rule in argument - 76 : : * @param rule_ address of the target rule - 77 : : * @param index the position inside the array of rule - 78 : : * @dev To reduce the array size, the last rule is moved to the location occupied - 79 : : * by the rule to remove - 80 : : * - 81 : : * - 82 : : */ - 83 : 5 : function removeRuleOperation( - 84 : : IRuleOperation rule_, - 85 : : uint256 index - 86 : : ) public onlyRole(RULE_ENGINE_OPERATOR_ROLE) { - 87 : 5 : _removeRuleOperation(address(rule_), index); - 88 : : } - 89 : : - 90 : : /** - 91 : : * @notice Remove a rule from the array of rules - 92 : : * Revert if the rule found at the specified index does not match the rule in argument - 93 : : * @param rule_ address of the target rule - 94 : : * @param index the position inside the array of rule - 95 : : * @dev To reduce the array size, the last rule is moved to the location occupied - 96 : : * by the rule to remove - 97 : : * - 98 : : * - 99 : : */ - 100 : 22 : function _removeRuleOperation(address rule_, uint256 index) internal { - 101 : 22 : RuleInternal._removeRule(_rulesOperation, rule_, index); - 102 : 21 : emit RemoveRule(address(rule_)); - 103 : : } - 104 : : - 105 : : /** - 106 : : * @return The number of rules inside the array - 107 : : */ - 108 : 45 : function rulesCountOperation() external view override returns (uint256) { - 109 : 45 : return _rulesOperation.length; - 110 : : } - 111 : : - 112 : : /** - 113 : : * @notice Get the index of a rule inside the list - 114 : : * @return index if the rule is found, _rulesOperation.length otherwise - 115 : : */ - 116 : 3 : function getRuleIndexOperation( - 117 : : IRuleOperation rule_ - 118 : : ) external view returns (uint256 index) { - 119 : 3 : return RuleInternal._getRuleIndex(_rulesOperation, address(rule_)); - 120 : : } - 121 : : - 122 : : /** - 123 : : * @notice Get the rule at the position specified by ruleId - 124 : : * @param ruleId index of the rule - 125 : : * @return a rule address - 126 : : */ - 127 : 1 : function ruleOperation( - 128 : : uint256 ruleId - 129 : : ) external view override returns (address) { - 130 : 1 : return _rulesOperation[ruleId]; - 131 : : } - 132 : : - 133 : : /** - 134 : : * @notice Get all the rules - 135 : : * @return An array of rules - 136 : : */ - 137 : 5 : function rulesOperation() - 138 : : external - 139 : : view - 140 : : override - 141 : : returns (address[] memory) - 142 : : { - 143 : 5 : return _rulesOperation; - 144 : : } - 145 : : - 146 : : /** - 147 : : * @notice Go through all the rule to know if a restriction exists on the transfer - 148 : : * @param from the origin address - 149 : : * @param to the destination address - 150 : : * @param value to transfer - 151 : : **/ - 152 : 5 : function _transferred( - 153 : : address from, - 154 : : address to, - 155 : : uint256 value - 156 : : ) internal { - 157 : 5 : uint256 rulesLength = _rulesOperation.length; - 158 : 5 : for (uint256 i = 0; i < rulesLength; ++i) { - 159 : 3 : IRuleOperation(_rulesOperation[i]).transferred( - 160 : : from, - 161 : : to, - 162 : : value - 163 : : ); - 164 : : } - 165 : : } - 166 : : } + 61 : : /// @inheritdoc IERC3643Compliance + 62 : 2 : function destroyed(address from, uint256 value) public virtual override(IERC3643Compliance) onlyBoundToken { + 63 : 1 : _transferred(from, address(0), value); + 64 : : } + 65 : : + 66 : : + 67 : : + 68 : : /* ============ View functions ============ */ + 69 : : /** + 70 : : * @notice Go through all the rule to know if a restriction exists on the transfer + 71 : : * @param from the origin address + 72 : : * @param to the destination address + 73 : : * @param value to transfer + 74 : : * @return The restricion code or REJECTED_CODE_BASE.TRANSFER_OK (0) if the transfer is valid + 75 : : **/ + 76 : 21 : function detectTransferRestriction( + 77 : : address from, + 78 : : address to, + 79 : : uint256 value + 80 : : ) public view virtual override returns (uint8) { + 81 : 39 : uint256 rulesLength = rulesCount(); + 82 : 39 : for (uint256 i = 0; i < rulesLength; ++i) { + 83 : 39 : uint8 restriction = IRule(rule(i)) + 84 : : .detectTransferRestriction(from, to, value); + 85 [ + ]: 39 : if (restriction > 0) { + 86 : 28 : return restriction; + 87 : : } + 88 : : } + 89 : 11 : return uint8(REJECTED_CODE_BASE.TRANSFER_OK); + 90 : : } + 91 : : + 92 : : /** + 93 : : * @inheritdoc IERC1404Extend + 94 : : */ + 95 : 11 : function detectTransferRestrictionFrom( + 96 : : address spender, + 97 : : address from, + 98 : : address to, + 99 : : uint256 value + 100 : : ) public view virtual override(IERC1404Extend) returns (uint8) { + 101 : 25 : uint256 rulesLength = rulesCount(); + 102 : 25 : for (uint256 i = 0; i < rulesLength; ++i) { + 103 : 25 : uint8 restriction = IRule(rule(i)) + 104 : : .detectTransferRestrictionFrom(spender,from, to, value); + 105 [ + ]: 25 : if (restriction > 0) { + 106 : 19 : return restriction; + 107 : : } + 108 : : } + 109 : : + 110 : 6 : return uint8(REJECTED_CODE_BASE.TRANSFER_OK); + 111 : : } + 112 : : + 113 : : /** + 114 : : * @inheritdoc IERC1404 + 115 : : */ + 116 : 13 : function messageForTransferRestriction( + 117 : : uint8 restrictionCode + 118 : : ) public virtual view override(IERC1404) returns (string memory) { + 119 : : // + 120 : 13 : uint256 rulesLength = rulesCount(); + 121 : 13 : for (uint256 i = 0; i < rulesLength; ++i) { + 122 : : if ( + 123 : 10 : IRule(rule(i)) + 124 : : .canReturnTransferRestrictionCode(restrictionCode) + 125 [ + ]: 8 : ) { + 126 : 8 : return + 127 : 8 : IRule(rule(i)) + 128 : : .messageForTransferRestriction(restrictionCode); + 129 : : } + 130 : : } + 131 : 5 : return "Unknown restriction code"; + 132 : : } + 133 : : + 134 : : /** + 135 : : * @inheritdoc IERC3643ComplianceRead + 136 : : */ + 137 : 18 : function canTransfer( + 138 : : address from, + 139 : : address to, + 140 : : uint256 value + 141 : : ) public virtual view override(IERC3643ComplianceRead) returns (bool) { + 142 : 18 : return + 143 : 18 : detectTransferRestriction(from, to, value) == + 144 : : uint8(REJECTED_CODE_BASE.TRANSFER_OK); + 145 : : } + 146 : : + 147 : : /** + 148 : : * @inheritdoc IERC7551Compliance + 149 : : */ + 150 : 14 : function canTransferFrom( + 151 : : address spender, + 152 : : address from, + 153 : : address to, + 154 : : uint256 value + 155 : : ) public virtual view override(IERC7551Compliance) returns (bool) { + 156 : 14 : return + 157 : 14 : detectTransferRestrictionFrom(spender, from, to, value) == + 158 : : uint8(REJECTED_CODE_BASE.TRANSFER_OK); + 159 : : } + 160 : : + 161 : : /* ============ ACCESS CONTROL ============ */ + 162 : : /** + 163 : : * @notice Returns `true` if `account` has been granted `role`. + 164 : : * @dev The Default Admin has all roles + 165 : : */ + 166 : 98 : function hasRole( + 167 : : bytes32 role, + 168 : : address account + 169 : : ) public view virtual override(AccessControl) returns (bool) { + 170 [ + + ]: 293 : if (AccessControl.hasRole(DEFAULT_ADMIN_ROLE, account)) { + 171 : 165 : return true; + 172 : : } else { + 173 : 128 : return AccessControl.hasRole(role, account); + 174 : : } + 175 : : } + 176 : : } @@ -242,7 +252,7 @@
      - +
      Generated by: LCOV version 1.16

      diff --git a/doc/coverage/coverage/src/index-sort-b.html b/doc/coverage/coverage/src/index-sort-b.html index 36b8157..0f079e8 100644 --- a/doc/coverage/coverage/src/index-sort-b.html +++ b/doc/coverage/coverage/src/index-sort-b.html @@ -31,26 +31,26 @@ lcov.info Lines: - 60 - 62 - 96.8 % + 50 + 52 + 96.2 % Date: - 2025-07-22 14:36:48 + 2025-08-15 12:12:38 Functions: - 10 - 11 - 90.9 % + 12 + 13 + 92.3 % Branches: - 13 - 13 + 7 + 7 100.0 % @@ -84,14 +84,26 @@ RuleEngine.sol -
      96.8%96.8%
      +
      83.3%83.3%
      + + 83.3 % + 10 / 12 + 75.0 % + 3 / 4 + 100.0 % + 2 / 2 + + + RuleEngineBase.sol + +
      100.0%
      - 96.8 % - 60 / 62 - 90.9 % - 10 / 11 100.0 % - 13 / 13 + 40 / 40 + 100.0 % + 9 / 9 + 100.0 % + 5 / 5 diff --git a/doc/coverage/coverage/src/index-sort-f.html b/doc/coverage/coverage/src/index-sort-f.html index 5190946..ae9a17d 100644 --- a/doc/coverage/coverage/src/index-sort-f.html +++ b/doc/coverage/coverage/src/index-sort-f.html @@ -31,26 +31,26 @@ lcov.info Lines: - 60 - 62 - 96.8 % + 50 + 52 + 96.2 % Date: - 2025-07-22 14:36:48 + 2025-08-15 12:12:38 Functions: - 10 - 11 - 90.9 % + 12 + 13 + 92.3 % Branches: - 13 - 13 + 7 + 7 100.0 % @@ -84,14 +84,26 @@ RuleEngine.sol -
      96.8%96.8%
      +
      83.3%83.3%
      + + 83.3 % + 10 / 12 + 75.0 % + 3 / 4 + 100.0 % + 2 / 2 + + + RuleEngineBase.sol + +
      100.0%
      - 96.8 % - 60 / 62 - 90.9 % - 10 / 11 100.0 % - 13 / 13 + 40 / 40 + 100.0 % + 9 / 9 + 100.0 % + 5 / 5 diff --git a/doc/coverage/coverage/src/index-sort-l.html b/doc/coverage/coverage/src/index-sort-l.html index 9bcd297..cb7432b 100644 --- a/doc/coverage/coverage/src/index-sort-l.html +++ b/doc/coverage/coverage/src/index-sort-l.html @@ -31,26 +31,26 @@ lcov.info Lines: - 60 - 62 - 96.8 % + 50 + 52 + 96.2 % Date: - 2025-07-22 14:36:48 + 2025-08-15 12:12:38 Functions: - 10 - 11 - 90.9 % + 12 + 13 + 92.3 % Branches: - 13 - 13 + 7 + 7 100.0 % @@ -84,14 +84,26 @@ RuleEngine.sol -
      96.8%96.8%
      +
      83.3%83.3%
      + + 83.3 % + 10 / 12 + 75.0 % + 3 / 4 + 100.0 % + 2 / 2 + + + RuleEngineBase.sol + +
      100.0%
      - 96.8 % - 60 / 62 - 90.9 % - 10 / 11 100.0 % - 13 / 13 + 40 / 40 + 100.0 % + 9 / 9 + 100.0 % + 5 / 5 diff --git a/doc/coverage/coverage/src/index.html b/doc/coverage/coverage/src/index.html index 8f9c9d2..2129358 100644 --- a/doc/coverage/coverage/src/index.html +++ b/doc/coverage/coverage/src/index.html @@ -31,26 +31,26 @@ lcov.info Lines: - 60 - 62 - 96.8 % + 50 + 52 + 96.2 % Date: - 2025-07-22 14:36:48 + 2025-08-15 12:12:38 Functions: - 10 - 11 - 90.9 % + 12 + 13 + 92.3 % Branches: - 13 - 13 + 7 + 7 100.0 % @@ -84,14 +84,26 @@ RuleEngine.sol -
      96.8%96.8%
      +
      83.3%83.3%
      + + 83.3 % + 10 / 12 + 75.0 % + 3 / 4 + 100.0 % + 2 / 2 + + + RuleEngineBase.sol + +
      100.0%
      - 96.8 % - 60 / 62 - 90.9 % - 10 / 11 100.0 % - 13 / 13 + 40 / 40 + 100.0 % + 9 / 9 + 100.0 % + 5 / 5 diff --git a/doc/coverage/coverage/src/modules/RuleInternal.sol.func-sort-c.html b/doc/coverage/coverage/src/modules/ERC3643ComplianceModule.sol.func-sort-c.html similarity index 56% rename from doc/coverage/coverage/src/modules/RuleInternal.sol.func-sort-c.html rename to doc/coverage/coverage/src/modules/ERC3643ComplianceModule.sol.func-sort-c.html index 0455061..5bda21a 100644 --- a/doc/coverage/coverage/src/modules/RuleInternal.sol.func-sort-c.html +++ b/doc/coverage/coverage/src/modules/ERC3643ComplianceModule.sol.func-sort-c.html @@ -4,7 +4,7 @@ - LCOV - lcov.info - src/modules/RuleInternal.sol - functions + LCOV - lcov.info - src/modules/ERC3643ComplianceModule.sol - functions @@ -19,7 +19,7 @@ - + @@ -31,17 +31,17 @@ - - + + - + - - + + @@ -49,9 +49,9 @@ - - - + + +
      Current view:top level - src/modules - RuleInternal.sol (source / functions)top level - src/modules - ERC3643ComplianceModule.sol (source / functions) Hitlcov.info Lines:33332424 100.0 %
      Date:2025-07-22 14:36:482025-08-15 12:12:38 Functions:4488 100.0 %
      Branches:88100.0 %111384.6 %
      @@ -65,24 +65,40 @@ - + - - + + + + + + - - + + + + + + + + + + + + + + - - + + - - + +

      Function Name Sort by function nameFunction Name Sort by function name Hit count Sort by hit count
      RuleInternal._getRuleIndex6ERC3643ComplianceModule.getTokenBound2
      ERC3643ComplianceModule.getTokenBounds2
      RuleInternal._setRules33ERC3643ComplianceModule.onlyBoundToken3
      ERC3643ComplianceModule._unbindToken4
      ERC3643ComplianceModule.unbindToken4
      ERC3643ComplianceModule.isTokenBound6
      RuleInternal._removeRule56ERC3643ComplianceModule.bindToken11
      RuleInternal._addRule94ERC3643ComplianceModule._bindToken26

      diff --git a/doc/coverage/coverage/src/modules/RuleInternal.sol.func.html b/doc/coverage/coverage/src/modules/ERC3643ComplianceModule.sol.func.html similarity index 56% rename from doc/coverage/coverage/src/modules/RuleInternal.sol.func.html rename to doc/coverage/coverage/src/modules/ERC3643ComplianceModule.sol.func.html index c227cae..cc97af1 100644 --- a/doc/coverage/coverage/src/modules/RuleInternal.sol.func.html +++ b/doc/coverage/coverage/src/modules/ERC3643ComplianceModule.sol.func.html @@ -4,7 +4,7 @@ - LCOV - lcov.info - src/modules/RuleInternal.sol - functions + LCOV - lcov.info - src/modules/ERC3643ComplianceModule.sol - functions @@ -19,7 +19,7 @@ - + @@ -31,17 +31,17 @@ - - + + - + - - + + @@ -49,9 +49,9 @@ - - - + + +
      Current view:top level - src/modules - RuleInternal.sol (source / functions)top level - src/modules - ERC3643ComplianceModule.sol (source / functions) Hitlcov.info Lines:33332424 100.0 %
      Date:2025-07-22 14:36:482025-08-15 12:12:38 Functions:4488 100.0 %
      Branches:88100.0 %111384.6 %
      @@ -66,23 +66,39 @@
      Function Name Sort by function name - Hit count Sort by hit count + Hit count Sort by hit count - RuleInternal._addRule - 94 + ERC3643ComplianceModule._bindToken + 26 + + + ERC3643ComplianceModule._unbindToken + 4 + + + ERC3643ComplianceModule.bindToken + 11 + + + ERC3643ComplianceModule.getTokenBound + 2 + + + ERC3643ComplianceModule.getTokenBounds + 2 - RuleInternal._getRuleIndex + ERC3643ComplianceModule.isTokenBound 6 - RuleInternal._removeRule - 56 + ERC3643ComplianceModule.onlyBoundToken + 3 - RuleInternal._setRules - 33 + ERC3643ComplianceModule.unbindToken + 4
      diff --git a/doc/coverage/coverage/src/modules/ERC3643ComplianceModule.sol.gcov.html b/doc/coverage/coverage/src/modules/ERC3643ComplianceModule.sol.gcov.html new file mode 100644 index 0000000..9f5027e --- /dev/null +++ b/doc/coverage/coverage/src/modules/ERC3643ComplianceModule.sol.gcov.html @@ -0,0 +1,175 @@ + + + + + + + LCOV - lcov.info - src/modules/ERC3643ComplianceModule.sol + + + + + + + + + + + + + + +
      LCOV - code coverage report
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      Current view:top level - src/modules - ERC3643ComplianceModule.sol (source / functions)HitTotalCoverage
      Test:lcov.infoLines:2424100.0 %
      Date:2025-08-15 12:12:38Functions:88100.0 %
      Branches:111384.6 %
      +
      + + + + + + + + +

      +
                 Branch data     Line data    Source code
      +
      +       1                 :            : //SPDX-License-Identifier: MPL-2.0
      +       2                 :            : 
      +       3                 :            : pragma solidity ^0.8.20;
      +       4                 :            : 
      +       5                 :            : /* ==== OpenZeppelin === */
      +       6                 :            : import {AccessControl}  from "OZ/access/AccessControl.sol";
      +       7                 :            : import {EnumerableSet} from "OZ/utils/structs/EnumerableSet.sol";
      +       8                 :            : /* ==== Interface and other library === */
      +       9                 :            : import {IERC3643Compliance} from "../interfaces/IERC3643Compliance.sol";
      +      10                 :            : abstract contract ERC3643ComplianceModule is IERC3643Compliance, AccessControl {
      +      11                 :            :     /* ==== Type declaration === */
      +      12                 :            :     using EnumerableSet for EnumerableSet.AddressSet;
      +      13                 :            :     /* ==== State Variables === */
      +      14                 :            :     // Token binding tracking
      +      15                 :            :     EnumerableSet.AddressSet private _boundTokens;
      +      16                 :            :     // Access Control
      +      17                 :            :     bytes32 public constant COMPLIANCE_MANAGER_ROLE = keccak256("COMPLIANCE_MANAGER_ROLE");
      +      18                 :            : 
      +      19                 :            :     /* ==== Errors === */
      +      20                 :            :     error RuleEngine_ERC3643Compliance_InvalidTokenAddress();
      +      21                 :            :     error RuleEngine_ERC3643Compliance_TokenAlreadyBound();
      +      22                 :            :     error RuleEngine_ERC3643Compliance_TokenNotBound();
      +      23                 :            :     error RuleEngine_ERC3643Compliance_UnauthorizedCaller();
      +      24                 :            :     error RuleEngine_ERC3643Compliance_OperationNotSuccessful();
      +      25                 :            : 
      +      26                 :            :     /* ==== Modifier === */
      +      27                 :          3 :     modifier onlyBoundToken() {
      +      28            [ + ]:          3 :     if (!_boundTokens.contains(_msgSender())) {
      +      29                 :          1 :         revert RuleEngine_ERC3643Compliance_UnauthorizedCaller();
      +      30                 :            :     }
      +      31                 :            :     _;
      +      32                 :            :     }
      +      33                 :            : 
      +      34                 :            :     /*//////////////////////////////////////////////////////////////
      +      35                 :            :                             PUBLIC/public FUNCTIONS
      +      36                 :            :     //////////////////////////////////////////////////////////////*/
      +      37                 :            : 
      +      38                 :            :     /* ============ State functions ============ */
      +      39                 :            :     /// @inheritdoc IERC3643Compliance
      +      40                 :         11 :     function bindToken(address token) public override virtual onlyRole(COMPLIANCE_MANAGER_ROLE) {
      +      41                 :         11 :        _bindToken(token);
      +      42                 :            :     }
      +      43                 :            : 
      +      44                 :            :     /// @inheritdoc IERC3643Compliance
      +      45                 :          4 :     function unbindToken(address token) public override virtual onlyRole(COMPLIANCE_MANAGER_ROLE) {
      +      46                 :          4 :         _unbindToken(token);
      +      47                 :            :     }
      +      48                 :            : 
      +      49                 :            :     /// @inheritdoc IERC3643Compliance
      +      50                 :          6 :     function isTokenBound(address token) public view virtual override returns (bool) {
      +      51                 :          6 :         return _boundTokens.contains(token);
      +      52                 :            :     }
      +      53                 :            : 
      +      54                 :            :     /// @inheritdoc IERC3643Compliance
      +      55                 :          2 :     function getTokenBound() public view virtual override returns (address) {
      +      56         [ +  + ]:          2 :         if(_boundTokens.length() > 0){
      +      57                 :            :             // Note that there are no guarantees on the ordering of values inside the array, 
      +      58                 :            :             // and it may change when more values are added or removed.
      +      59                 :          1 :             return _boundTokens.at(0);
      +      60                 :            :         } else {
      +      61                 :          1 :             return address(0);
      +      62                 :            :         }
      +      63                 :            :     }
      +      64                 :            : 
      +      65                 :            :     /// @inheritdoc IERC3643Compliance
      +      66                 :          2 :     function getTokenBounds() public view override returns (address[] memory) {
      +      67                 :          2 :         return _boundTokens.values();
      +      68                 :            :     }
      +      69                 :            : 
      +      70                 :            : 
      +      71                 :            : 
      +      72                 :            :     /*//////////////////////////////////////////////////////////////
      +      73                 :            :                             INTERNAL/PRIVATE FUNCTIONS
      +      74                 :            :     //////////////////////////////////////////////////////////////*/
      +      75                 :            : 
      +      76                 :          4 :     function _unbindToken(address token)  internal {
      +      77         [ +  + ]:          4 :         require (_boundTokens.contains(token), RuleEngine_ERC3643Compliance_TokenNotBound()); 
      +      78                 :            :         // Should never revert because we check if the token address is already set before
      +      79         [ #  + ]:          3 :         require(_boundTokens.remove(token), RuleEngine_ERC3643Compliance_OperationNotSuccessful());
      +      80                 :            : 
      +      81                 :          3 :         emit TokenUnbound(token);
      +      82                 :            :     }
      +      83                 :         26 :     function _bindToken(address token) internal{
      +      84         [ +  + ]:         26 :         require(token != address(0), RuleEngine_ERC3643Compliance_InvalidTokenAddress());
      +      85         [ +  + ]:         25 :         require(!_boundTokens.contains(token), RuleEngine_ERC3643Compliance_TokenAlreadyBound());
      +      86                 :            :         // Should never revert because we check if the token address is already set before
      +      87         [ #  + ]:         24 :         require(_boundTokens.add(token), RuleEngine_ERC3643Compliance_OperationNotSuccessful());
      +      88                 :         24 :         emit TokenBound(token);
      +      89                 :            :     }
      +      90                 :            : }
      +
      +
      +
      + + + + +
      Generated by: LCOV version 1.16
      +
      + + + diff --git a/doc/coverage/coverage/src/modules/RuleEngineValidation.sol.gcov.html b/doc/coverage/coverage/src/modules/RuleEngineValidation.sol.gcov.html deleted file mode 100644 index f2e5bcf..0000000 --- a/doc/coverage/coverage/src/modules/RuleEngineValidation.sol.gcov.html +++ /dev/null @@ -1,181 +0,0 @@ - - - - - - - LCOV - lcov.info - src/modules/RuleEngineValidation.sol - - - - - - - - - - - - - - -
      LCOV - code coverage report
      - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
      Current view:top level - src/modules - RuleEngineValidation.sol (source / functions)HitTotalCoverage
      Test:lcov.infoLines:2020100.0 %
      Date:2025-07-22 14:36:48Functions:44100.0 %
      Branches:22100.0 %
      -
      - - - - - - - - -

      -
                 Branch data     Line data    Source code
      -
      -       1                 :            : // SPDX-License-Identifier: MPL-2.0
      -       2                 :            : 
      -       3                 :            : pragma solidity ^0.8.20;
      -       4                 :            : 
      -       5                 :            : import "OZ/access/AccessControl.sol";
      -       6                 :            : import "./RuleInternal.sol";
      -       7                 :            : import "./RuleEngineValidationCommon.sol";
      -       8                 :            : import "../interfaces/IRuleEngineValidation.sol";
      -       9                 :            : import "../interfaces/IRuleValidation.sol";
      -      10                 :            : import "CMTAT/interfaces/tokenization/draft-IERC1404.sol";
      -      11                 :            : 
      -      12                 :            : /**
      -      13                 :            :  * @title Implementation of a ruleEngine defined by the CMTAT
      -      14                 :            :  */
      -      15                 :            : abstract contract RuleEngineValidation is
      -      16                 :            :     AccessControl,
      -      17                 :            :     RuleInternal,
      -      18                 :            :     RuleEngineValidationCommon,
      -      19                 :            :     IRuleEngineValidation
      -      20                 :            : {
      -      21                 :            :     /**
      -      22                 :            :      * @notice Go through all the rule to know if a restriction exists on the transfer
      -      23                 :            :      * @param from the origin address
      -      24                 :            :      * @param to the destination address
      -      25                 :            :      * @param value to transfer
      -      26                 :            :      * @return The restricion code or REJECTED_CODE_BASE.TRANSFER_OK
      -      27                 :            :      **/
      -      28                 :          5 :     function detectTransferRestrictionValidation(
      -      29                 :            :         address from,
      -      30                 :            :         address to,
      -      31                 :            :         uint256 value
      -      32                 :            :     ) public view override returns (uint8) {
      -      33                 :         44 :         uint256 rulesLength = _rulesValidation.length;
      -      34                 :         44 :         for (uint256 i = 0; i < rulesLength; ++i) {
      -      35                 :         26 :             uint8 restriction = IRuleValidation(_rulesValidation[i])
      -      36                 :            :                 .detectTransferRestriction(from, to, value);
      -      37            [ + ]:         26 :             if (restriction > 0) {
      -      38                 :         19 :                 return restriction;
      -      39                 :            :             }
      -      40                 :            :         }
      -      41                 :            : 
      -      42                 :         25 :         return uint8(IERC1404Extend.REJECTED_CODE_BASE.TRANSFER_OK);
      -      43                 :            :     }
      -      44                 :            : 
      -      45                 :          1 :     function detectTransferRestrictionValidationFrom(
      -      46                 :            :         address spender,
      -      47                 :            :         address from,
      -      48                 :            :         address to,
      -      49                 :            :         uint256 value
      -      50                 :            :     ) public view override returns (uint8) {
      -      51                 :         26 :         uint256 rulesLength = _rulesValidation.length;
      -      52                 :         26 :         for (uint256 i = 0; i < rulesLength; ++i) {
      -      53                 :         13 :             uint8 restriction = IRuleValidation(_rulesValidation[i])
      -      54                 :            :                 .detectTransferRestrictionFrom(spender, from, to, value);
      -      55            [ + ]:         13 :             if (restriction > 0) {
      -      56                 :         13 :                 return restriction;
      -      57                 :            :             }
      -      58                 :            :         }
      -      59                 :         13 :         return uint8(IERC1404Extend.REJECTED_CODE_BASE.TRANSFER_OK);
      -      60                 :            :     }
      -      61                 :            : 
      -      62                 :            :     /**
      -      63                 :            :      * @notice Validate a transfer
      -      64                 :            :      * @param from the origin address
      -      65                 :            :      * @param to the destination address
      -      66                 :            :      * @param value to transfer
      -      67                 :            :      * @return True if the transfer is valid, false otherwise
      -      68                 :            :      **/
      -      69                 :          2 :     function canTransferValidation(
      -      70                 :            :         address from,
      -      71                 :            :         address to,
      -      72                 :            :         uint256 value
      -      73                 :            :     ) public view returns (bool) {
      -      74                 :          9 :         return
      -      75                 :          9 :             detectTransferRestrictionValidation(from, to, value) ==
      -      76                 :            :             uint8(IERC1404Extend.REJECTED_CODE_BASE.TRANSFER_OK);
      -      77                 :            :     }
      -      78                 :            : 
      -      79                 :            :     /**
      -      80                 :            :      * @notice Validate a transfer
      -      81                 :            :      * @param from the origin address
      -      82                 :            :      * @param to the destination address
      -      83                 :            :      * @param value to transfer
      -      84                 :            :      * @return True if the transfer is valid, false otherwise
      -      85                 :            :      **/
      -      86                 :          1 :     function canTransferValidationFrom(
      -      87                 :            :         address spender,
      -      88                 :            :         address from,
      -      89                 :            :         address to,
      -      90                 :            :         uint256 value
      -      91                 :            :     ) public view override returns (bool) {
      -      92                 :          3 :         return
      -      93                 :          3 :             detectTransferRestrictionValidationFrom(spender, from, to, value) ==
      -      94                 :            :             uint8(IERC1404Extend.REJECTED_CODE_BASE.TRANSFER_OK);
      -      95                 :            :     }
      -      96                 :            : }
      -
      -
      -
      - - - - -
      Generated by: LCOV version 1.16
      -
      - - - diff --git a/doc/coverage/coverage/src/modules/RuleEngineValidationCommon.sol.func-sort-c.html b/doc/coverage/coverage/src/modules/RuleEngineValidationCommon.sol.func-sort-c.html deleted file mode 100644 index 72c98ef..0000000 --- a/doc/coverage/coverage/src/modules/RuleEngineValidationCommon.sol.func-sort-c.html +++ /dev/null @@ -1,121 +0,0 @@ - - - - - - - LCOV - lcov.info - src/modules/RuleEngineValidationCommon.sol - functions - - - - - - - - - - - - - - -
      LCOV - code coverage report
      - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
      Current view:top level - src/modules - RuleEngineValidationCommon.sol (source / functions)HitTotalCoverage
      Test:lcov.infoLines:2929100.0 %
      Date:2025-07-22 14:36:48Functions:1010100.0 %
      Branches:11100.0 %
      -
      - -
      - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

      Function Name Sort by function nameHit count Sort by hit count
      RuleEngineValidationCommon.ruleValidation1
      RuleEngineValidationCommon.getRuleIndexValidation3
      RuleEngineValidationCommon.rulesValidation5
      RuleEngineValidationCommon.clearRulesValidation6
      RuleEngineValidationCommon.removeRuleValidation6
      RuleEngineValidationCommon.setRulesValidation23
      RuleEngineValidationCommon._clearRulesValidation26
      RuleEngineValidationCommon._removeRuleValidation34
      RuleEngineValidationCommon.addRuleValidation59
      RuleEngineValidationCommon.rulesCountValidation70
      -
      -
      - - - -
      Generated by: LCOV version 1.16
      -
      - - - diff --git a/doc/coverage/coverage/src/modules/RuleEngineValidationCommon.sol.func.html b/doc/coverage/coverage/src/modules/RuleEngineValidationCommon.sol.func.html deleted file mode 100644 index 6fe949e..0000000 --- a/doc/coverage/coverage/src/modules/RuleEngineValidationCommon.sol.func.html +++ /dev/null @@ -1,121 +0,0 @@ - - - - - - - LCOV - lcov.info - src/modules/RuleEngineValidationCommon.sol - functions - - - - - - - - - - - - - - -
      LCOV - code coverage report
      - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
      Current view:top level - src/modules - RuleEngineValidationCommon.sol (source / functions)HitTotalCoverage
      Test:lcov.infoLines:2929100.0 %
      Date:2025-07-22 14:36:48Functions:1010100.0 %
      Branches:11100.0 %
      -
      - -
      - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

      Function Name Sort by function nameHit count Sort by hit count
      RuleEngineValidationCommon._clearRulesValidation26
      RuleEngineValidationCommon._removeRuleValidation34
      RuleEngineValidationCommon.addRuleValidation59
      RuleEngineValidationCommon.clearRulesValidation6
      RuleEngineValidationCommon.getRuleIndexValidation3
      RuleEngineValidationCommon.removeRuleValidation6
      RuleEngineValidationCommon.ruleValidation1
      RuleEngineValidationCommon.rulesCountValidation70
      RuleEngineValidationCommon.rulesValidation5
      RuleEngineValidationCommon.setRulesValidation23
      -
      -
      - - - -
      Generated by: LCOV version 1.16
      -
      - - - diff --git a/doc/coverage/coverage/src/modules/RuleEngineValidationCommon.sol.gcov.html b/doc/coverage/coverage/src/modules/RuleEngineValidationCommon.sol.gcov.html deleted file mode 100644 index da305a1..0000000 --- a/doc/coverage/coverage/src/modules/RuleEngineValidationCommon.sol.gcov.html +++ /dev/null @@ -1,237 +0,0 @@ - - - - - - - LCOV - lcov.info - src/modules/RuleEngineValidationCommon.sol - - - - - - - - - - - - - - -
      LCOV - code coverage report
      - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
      Current view:top level - src/modules - RuleEngineValidationCommon.sol (source / functions)HitTotalCoverage
      Test:lcov.infoLines:2929100.0 %
      Date:2025-07-22 14:36:48Functions:1010100.0 %
      Branches:11100.0 %
      -
      - - - - - - - - -

      -
                 Branch data     Line data    Source code
      -
      -       1                 :            : // SPDX-License-Identifier: MPL-2.0
      -       2                 :            : 
      -       3                 :            : pragma solidity ^0.8.20;
      -       4                 :            : 
      -       5                 :            : import "OZ/access/AccessControl.sol";
      -       6                 :            : import "./RuleInternal.sol";
      -       7                 :            : import "../interfaces/IRuleEngineValidation.sol";
      -       8                 :            : import "../interfaces/IRuleValidation.sol";
      -       9                 :            : 
      -      10                 :            : /**
      -      11                 :            :  * @title Implementation of a ruleEngine defined by the CMTAT
      -      12                 :            :  */
      -      13                 :            : abstract contract RuleEngineValidationCommon is
      -      14                 :            :     AccessControl,
      -      15                 :            :     RuleInternal,
      -      16                 :            :     IRuleEngineValidationCommon
      -      17                 :            : {
      -      18                 :            :     /// @dev Array of rules
      -      19                 :            :     address[] internal _rulesValidation;
      -      20                 :            : 
      -      21                 :            :     /*//////////////////////////////////////////////////////////////
      -      22                 :            :                            PUBLIC/EXTERNAL FUNCTIONS
      -      23                 :            :     //////////////////////////////////////////////////////////////*/
      -      24                 :            :     /**
      -      25                 :            :      * @notice Set all the rules, will overwrite all the previous rules. \n
      -      26                 :            :      * Revert if one rule is a zero address or if the rule is already present
      -      27                 :            :      * @dev take address[] instead of IRuleEngineValidation[] since it is not possible to cast IRuleEngineValidation[] -> address[]
      -      28                 :            :      *
      -      29                 :            :      */
      -      30                 :         23 :     function setRulesValidation(
      -      31                 :            :         address[] calldata rules_
      -      32                 :            :     ) public override onlyRole(RULE_ENGINE_OPERATOR_ROLE) {
      -      33            [ + ]:         22 :         if (_rulesValidation.length > 0) {
      -      34                 :         21 :             _clearRulesValidation();
      -      35                 :            :         }
      -      36                 :         22 :         _setRules(rules_);
      -      37                 :         19 :         _rulesValidation = rules_;
      -      38                 :            :     }
      -      39                 :            : 
      -      40                 :            :     /**
      -      41                 :            :      * @notice Clear all the rules of the array of rules
      -      42                 :            :      *
      -      43                 :            :      */
      -      44                 :          6 :     function clearRulesValidation() public onlyRole(RULE_ENGINE_OPERATOR_ROLE) {
      -      45                 :          5 :         _clearRulesValidation();
      -      46                 :            :     }
      -      47                 :            : 
      -      48                 :            :     /**
      -      49                 :            :      * @notice Add a rule to the array of rules
      -      50                 :            :      * Revert if one rule is a zero address or if the rule is already present
      -      51                 :            :      *
      -      52                 :            :      */
      -      53                 :         59 :     function addRuleValidation(
      -      54                 :            :         IRuleValidation rule_
      -      55                 :            :     ) public onlyRole(RULE_ENGINE_OPERATOR_ROLE) {
      -      56                 :         58 :         RuleInternal._addRule(_rulesValidation, address(rule_));
      -      57                 :         56 :         emit AddRule(address(rule_));
      -      58                 :            :     }
      -      59                 :            : 
      -      60                 :            :     /**
      -      61                 :            :      * @notice Remove a rule from the array of rules
      -      62                 :            :      * Revert if the rule found at the specified index does not match the rule in argument
      -      63                 :            :      * @param rule_ address of the target rule
      -      64                 :            :      * @param index the position inside the array of rule
      -      65                 :            :      * @dev To reduce the array size, the last rule is moved to the location occupied
      -      66                 :            :      * by the rule to remove
      -      67                 :            :      *
      -      68                 :            :      *
      -      69                 :            :      */
      -      70                 :          6 :     function removeRuleValidation(
      -      71                 :            :         IRuleValidation rule_,
      -      72                 :            :         uint256 index
      -      73                 :            :     ) public onlyRole(RULE_ENGINE_OPERATOR_ROLE) {
      -      74                 :          5 :         _removeRuleValidation(address(rule_), index);
      -      75                 :            :     }
      -      76                 :            : 
      -      77                 :            :     /**
      -      78                 :            :      * @return The number of rules inside the array
      -      79                 :            :      */
      -      80                 :         70 :     function rulesCountValidation() external view override returns (uint256) {
      -      81                 :         70 :         return _rulesValidation.length;
      -      82                 :            :     }
      -      83                 :            : 
      -      84                 :            :     /**
      -      85                 :            :      * @notice Get the index of a rule inside the list
      -      86                 :            :      * @return index if the rule is found, _rulesValidation.length otherwise
      -      87                 :            :      */
      -      88                 :          3 :     function getRuleIndexValidation(
      -      89                 :            :         IRuleValidation rule_
      -      90                 :            :     ) external view returns (uint256 index) {
      -      91                 :          3 :         return RuleInternal._getRuleIndex(_rulesValidation, address(rule_));
      -      92                 :            :     }
      -      93                 :            : 
      -      94                 :            :     /**
      -      95                 :            :      * @notice Get the rule at the position specified by ruleId
      -      96                 :            :      * @param ruleId index of the rule
      -      97                 :            :      * @return a rule address
      -      98                 :            :      */
      -      99                 :          1 :     function ruleValidation(
      -     100                 :            :         uint256 ruleId
      -     101                 :            :     ) external view override returns (address) {
      -     102                 :          1 :         return _rulesValidation[ruleId];
      -     103                 :            :     }
      -     104                 :            : 
      -     105                 :            :     /**
      -     106                 :            :      * @notice Get all the rules
      -     107                 :            :      * @return An array of rules
      -     108                 :            :      */
      -     109                 :          5 :     function rulesValidation()
      -     110                 :            :         external
      -     111                 :            :         view
      -     112                 :            :         override
      -     113                 :            :         returns (address[] memory)
      -     114                 :            :     {
      -     115                 :          5 :         return _rulesValidation;
      -     116                 :            :     }
      -     117                 :            : 
      -     118                 :            :     /*//////////////////////////////////////////////////////////////
      -     119                 :            :                            INTERNAL FUNCTIONS
      -     120                 :            :     //////////////////////////////////////////////////////////////*/
      -     121                 :            :     /**
      -     122                 :            :      * @notice Clear all the rules of the array of rules
      -     123                 :            :      *
      -     124                 :            :      */
      -     125                 :         26 :     function _clearRulesValidation() internal {
      -     126                 :         26 :         uint256 index;
      -     127                 :            :         // we remove the last element first since it is more optimized.
      -     128                 :         26 :         for (uint256 i = _rulesValidation.length; i > 0; --i) {
      -     129                 :            :             unchecked {
      -     130                 :            :                 // don't underflow since i > 0
      -     131                 :         29 :                 index = i - 1;
      -     132                 :            :             }
      -     133                 :         29 :             _removeRuleValidation(_rulesValidation[index], index);
      -     134                 :            :         }
      -     135                 :         26 :         emit ClearRules(_rulesValidation);
      -     136                 :            :     }
      -     137                 :            : 
      -     138                 :            :     /**
      -     139                 :            :      * @notice Remove a rule from the array of rules
      -     140                 :            :      * Revert if the rule found at the specified index does not match the rule in argument
      -     141                 :            :      * @param rule_ address of the target rule
      -     142                 :            :      * @param index the position inside the array of rule
      -     143                 :            :      * @dev To reduce the array size, the last rule is moved to the location occupied
      -     144                 :            :      * by the rule to remove
      -     145                 :            :      *
      -     146                 :            :      *
      -     147                 :            :      */
      -     148                 :         34 :     function _removeRuleValidation(address rule_, uint256 index) internal {
      -     149                 :         34 :         RuleInternal._removeRule(_rulesValidation, rule_, index);
      -     150                 :         33 :         emit RemoveRule(address(rule_));
      -     151                 :            :     }
      -     152                 :            : }
      -
      -
      -
      - - - - -
      Generated by: LCOV version 1.16
      -
      - - - diff --git a/doc/coverage/coverage/src/modules/RuleInternal.sol.gcov.html b/doc/coverage/coverage/src/modules/RuleInternal.sol.gcov.html deleted file mode 100644 index bab89f3..0000000 --- a/doc/coverage/coverage/src/modules/RuleInternal.sol.gcov.html +++ /dev/null @@ -1,184 +0,0 @@ - - - - - - - LCOV - lcov.info - src/modules/RuleInternal.sol - - - - - - - - - - - - - - -
      LCOV - code coverage report
      - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
      Current view:top level - src/modules - RuleInternal.sol (source / functions)HitTotalCoverage
      Test:lcov.infoLines:3333100.0 %
      Date:2025-07-22 14:36:48Functions:44100.0 %
      Branches:88100.0 %
      -
      - - - - - - - - -

      -
                 Branch data     Line data    Source code
      -
      -       1                 :            : // SPDX-License-Identifier: MPL-2.0
      -       2                 :            : 
      -       3                 :            : pragma solidity ^0.8.20;
      -       4                 :            : import "./RuleEngineInvariantStorage.sol";
      -       5                 :            : 
      -       6                 :            : /**
      -       7                 :            :  * @title Implementation of a ruleEngine defined by the CMTAT
      -       8                 :            :  */
      -       9                 :            : abstract contract RuleInternal is RuleEngineInvariantStorage {
      -      10                 :            :     /// @dev Indicate if a rule already exists
      -      11                 :            :     // Can be shared betwen RuleOperation and RuleValidation since it is a mapping
      -      12                 :            :     mapping(address => bool) _ruleIsPresent;
      -      13                 :            : 
      -      14                 :            :     /**
      -      15                 :            :      * @notice Set all the rules, will overwrite all the previous rules. \n
      -      16                 :            :      * Revert if one rule is a zero address or if the rule is already present
      -      17                 :            :      *
      -      18                 :            :      */
      -      19                 :         33 :     function _setRules(address[] calldata rules_) internal {
      -      20            [ + ]:         33 :         if (rules_.length == 0) {
      -      21                 :          2 :             revert RuleEngine_ArrayIsEmpty();
      -      22                 :            :         }
      -      23                 :         31 :         for (uint256 i = 0; i < rules_.length; ) {
      -      24            [ + ]:         49 :             if (address(rules_[i]) == address(0x0)) {
      -      25                 :          2 :                 revert RuleEngine_RuleAddressZeroNotAllowed();
      -      26                 :            :             }
      -      27            [ + ]:          2 :             if (_ruleIsPresent[rules_[i]]) {
      -      28                 :          2 :                 revert RuleEngine_RuleAlreadyExists();
      -      29                 :            :             }
      -      30                 :         45 :             _ruleIsPresent[rules_[i]] = true;
      -      31                 :         45 :             emit AddRule(rules_[i]);
      -      32                 :            :             unchecked {
      -      33                 :         45 :                 ++i;
      -      34                 :            :             }
      -      35                 :            :         }
      -      36                 :            :     }
      -      37                 :            : 
      -      38                 :            :     /**
      -      39                 :            :      * @notice Add a rule to the array of rules
      -      40                 :            :      * Revert if one rule is a zero address or if the rule is already present
      -      41                 :            :      *
      -      42                 :            :      */
      -      43                 :         94 :     function _addRule(address[] storage _rules, address rule_) internal {
      -      44            [ + ]:         94 :         if (address(rule_) == address(0x0)) {
      -      45                 :          2 :             revert RuleEngine_RuleAddressZeroNotAllowed();
      -      46                 :            :         }
      -      47            [ + ]:          2 :         if (_ruleIsPresent[rule_]) {
      -      48                 :          2 :             revert RuleEngine_RuleAlreadyExists();
      -      49                 :            :         }
      -      50                 :         90 :         _rules.push(rule_);
      -      51                 :         90 :         _ruleIsPresent[rule_] = true;
      -      52                 :            :     }
      -      53                 :            : 
      -      54                 :            :     /**
      -      55                 :            :      * @notice Remove a rule from the array of rules
      -      56                 :            :      * Revert if the rule found at the specified index does not match the rule in argument
      -      57                 :            :      * @param rule_ address of the target rule
      -      58                 :            :      * @param index the position inside the array of rule
      -      59                 :            :      * @dev To reduce the array size, the last rule is moved to the location occupied
      -      60                 :            :      * by the rule to remove
      -      61                 :            :      *
      -      62                 :            :      *
      -      63                 :            :      */
      -      64                 :         56 :     function _removeRule(
      -      65                 :            :         address[] storage _rules,
      -      66                 :            :         address rule_,
      -      67                 :            :         uint256 index
      -      68                 :            :     ) internal {
      -      69            [ + ]:         56 :         if (_rules[index] != rule_) {
      -      70                 :          2 :             revert RuleEngine_RuleDoNotMatch();
      -      71                 :            :         }
      -      72            [ + ]:         54 :         if (index != _rules.length - 1) {
      -      73                 :          4 :             _rules[index] = _rules[_rules.length - 1];
      -      74                 :            :         }
      -      75                 :         54 :         _rules.pop();
      -      76                 :         54 :         _ruleIsPresent[rule_] = false;
      -      77                 :         54 :         emit RemoveRule(rule_);
      -      78                 :            :     }
      -      79                 :            : 
      -      80                 :            :     /**
      -      81                 :            :      * @notice Get the index of a rule inside the list
      -      82                 :            :      * @return index if the rule is found, _rules.length otherwise
      -      83                 :            :      */
      -      84                 :          6 :     function _getRuleIndex(
      -      85                 :            :         address[] storage _rules,
      -      86                 :            :         address rule_
      -      87                 :            :     ) internal view returns (uint256 index) {
      -      88                 :          6 :         uint256 rulesLength = _rules.length;
      -      89                 :          6 :         for (index = 0; index < rulesLength; ) {
      -      90            [ + ]:         10 :             if (_rules[index] == rule_) {
      -      91                 :          4 :                 return index;
      -      92                 :            :             }
      -      93                 :            :             unchecked {
      -      94                 :          6 :                 ++index;
      -      95                 :            :             }
      -      96                 :            :         }
      -      97                 :          2 :         return _rules.length;
      -      98                 :            :     }
      -      99                 :            : }
      -
      -
      -
      - - - - -
      Generated by: LCOV version 1.16
      -
      - - - diff --git a/doc/coverage/coverage/src/modules/RuleEngineOperation.sol.func-sort-c.html b/doc/coverage/coverage/src/modules/RulesManagementModule.sol.func-sort-c.html similarity index 53% rename from doc/coverage/coverage/src/modules/RuleEngineOperation.sol.func-sort-c.html rename to doc/coverage/coverage/src/modules/RulesManagementModule.sol.func-sort-c.html index 4a0c428..ddc2799 100644 --- a/doc/coverage/coverage/src/modules/RuleEngineOperation.sol.func-sort-c.html +++ b/doc/coverage/coverage/src/modules/RulesManagementModule.sol.func-sort-c.html @@ -4,7 +4,7 @@ - LCOV - lcov.info - src/modules/RuleEngineOperation.sol - functions + LCOV - lcov.info - src/modules/RulesManagementModule.sol - functions @@ -19,7 +19,7 @@ - + @@ -31,17 +31,17 @@ - - + + - + - - + + @@ -49,9 +49,9 @@ - - - + + +
      Current view:top level - src/modules - RuleEngineOperation.sol (source / functions)top level - src/modules - RulesManagementModule.sol (source / functions) Hitlcov.info Lines:33334747 100.0 %
      Date:2025-07-22 14:36:482025-08-15 12:12:38 Functions:11111212 100.0 %
      Branches:11100.0 %111478.6 %
      @@ -65,52 +65,56 @@ - + - - - - - + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - + - - + + + + + + + + + +

      Function Name Sort by function nameFunction Name Sort by function name Hit count Sort by hit count
      RuleEngineOperation.ruleOperation1
      RuleEngineOperation.getRuleIndexOperationRulesManagementModule.rule 3
      RuleEngineOperation.clearRulesOperation4RulesManagementModule._removeRule8
      RuleEngineOperation._transferred5RulesManagementModule.clearRules10
      RuleEngineOperation.removeRuleOperation5RulesManagementModule.rules10
      RuleEngineOperation.rulesOperation5RulesManagementModule.removeRule11
      RuleEngineOperation.setRulesOperation11RulesManagementModule._transferred12
      RuleEngineOperation._clearRulesOperation14RulesManagementModule.setRules34
      RuleEngineOperation._removeRuleOperation22RulesManagementModule.containsRule35
      RuleEngineOperation.addRuleOperationRulesManagementModule._clearRules 36
      RuleEngineOperation.rulesCountOperation45RulesManagementModule.addRule95
      RulesManagementModule.rulesCount115
      RulesManagementModule._checkRule141

      diff --git a/doc/coverage/coverage/src/modules/RuleEngineOperation.sol.func.html b/doc/coverage/coverage/src/modules/RulesManagementModule.sol.func.html similarity index 53% rename from doc/coverage/coverage/src/modules/RuleEngineOperation.sol.func.html rename to doc/coverage/coverage/src/modules/RulesManagementModule.sol.func.html index f38ca20..8aab7fe 100644 --- a/doc/coverage/coverage/src/modules/RuleEngineOperation.sol.func.html +++ b/doc/coverage/coverage/src/modules/RulesManagementModule.sol.func.html @@ -4,7 +4,7 @@ - LCOV - lcov.info - src/modules/RuleEngineOperation.sol - functions + LCOV - lcov.info - src/modules/RulesManagementModule.sol - functions @@ -19,7 +19,7 @@ - + @@ -31,17 +31,17 @@ - - + + - + - - + + @@ -49,9 +49,9 @@ - - - + + +
      Current view:top level - src/modules - RuleEngineOperation.sol (source / functions)top level - src/modules - RulesManagementModule.sol (source / functions) Hitlcov.info Lines:33334747 100.0 %
      Date:2025-07-22 14:36:482025-08-15 12:12:38 Functions:11111212 100.0 %
      Branches:11100.0 %111478.6 %
      @@ -66,51 +66,55 @@
      Function Name Sort by function name - Hit count Sort by hit count + Hit count Sort by hit count - RuleEngineOperation._clearRulesOperation - 14 + RulesManagementModule._checkRule + 141 - RuleEngineOperation._removeRuleOperation - 22 + RulesManagementModule._clearRules + 36 - RuleEngineOperation._transferred - 5 + RulesManagementModule._removeRule + 8 - RuleEngineOperation.addRuleOperation - 36 + RulesManagementModule._transferred + 12 - RuleEngineOperation.clearRulesOperation - 4 + RulesManagementModule.addRule + 95 - RuleEngineOperation.getRuleIndexOperation - 3 + RulesManagementModule.clearRules + 10 + + + RulesManagementModule.containsRule + 35 - RuleEngineOperation.removeRuleOperation - 5 + RulesManagementModule.removeRule + 11 - RuleEngineOperation.ruleOperation - 1 + RulesManagementModule.rule + 3 - RuleEngineOperation.rulesCountOperation - 45 + RulesManagementModule.rules + 10 - RuleEngineOperation.rulesOperation - 5 + RulesManagementModule.rulesCount + 115 - RuleEngineOperation.setRulesOperation - 11 + RulesManagementModule.setRules + 34
      diff --git a/doc/coverage/coverage/src/modules/RulesManagementModule.sol.gcov.html b/doc/coverage/coverage/src/modules/RulesManagementModule.sol.gcov.html new file mode 100644 index 0000000..6a77ef4 --- /dev/null +++ b/doc/coverage/coverage/src/modules/RulesManagementModule.sol.gcov.html @@ -0,0 +1,295 @@ + + + + + + + LCOV - lcov.info - src/modules/RulesManagementModule.sol + + + + + + + + + + + + + + +
      LCOV - code coverage report
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      Current view:top level - src/modules - RulesManagementModule.sol (source / functions)HitTotalCoverage
      Test:lcov.infoLines:4747100.0 %
      Date:2025-08-15 12:12:38Functions:1212100.0 %
      Branches:111478.6 %
      +
      + + + + + + + + +

      +
                 Branch data     Line data    Source code
      +
      +       1                 :            : // SPDX-License-Identifier: MPL-2.0
      +       2                 :            : 
      +       3                 :            : pragma solidity ^0.8.20;
      +       4                 :            : 
      +       5                 :            : /* ==== OpenZeppelin === */
      +       6                 :            : import {EnumerableSet} from "OZ/utils/structs/EnumerableSet.sol";
      +       7                 :            : import {AccessControl}  from "OZ/access/AccessControl.sol";
      +       8                 :            : /* ==== Interface and other library === */
      +       9                 :            : import {IRulesManagementModule} from "../interfaces/IRulesManagementModule.sol";
      +      10                 :            : import {IRule} from "../interfaces/IRule.sol";
      +      11                 :            : import {RulesManagementModuleInvariantStorage} from "./library/RulesManagementModuleInvariantStorage.sol";
      +      12                 :            : /**
      +      13                 :            :  * @title RuleEngine -  part
      +      14                 :            :  */
      +      15                 :            : abstract contract RulesManagementModule is
      +      16                 :            :     AccessControl,
      +      17                 :            :     RulesManagementModuleInvariantStorage,
      +      18                 :            :     IRulesManagementModule
      +      19                 :            : {
      +      20                 :            :     /* ==== Type declaration === */
      +      21                 :            :     using EnumerableSet for EnumerableSet.AddressSet;
      +      22                 :            : 
      +      23                 :            :     /* ==== State Variables === */
      +      24                 :            :     /// @dev Array of rules
      +      25                 :            :     EnumerableSet.AddressSet internal _rules;
      +      26                 :            : 
      +      27                 :            :     /*//////////////////////////////////////////////////////////////
      +      28                 :            :                             PUBLIC/EXTERNAL FUNCTIONS
      +      29                 :            :     //////////////////////////////////////////////////////////////*/
      +      30                 :            : 
      +      31                 :            :     /* ============ State functions ============ */
      +      32                 :            : 
      +      33                 :            :     /**
      +      34                 :            :     * @inheritdoc IRulesManagementModule
      +      35                 :            :     */
      +      36                 :         34 :     function setRules(
      +      37                 :            :         IRule[] calldata rules_
      +      38                 :            :     ) public virtual override(IRulesManagementModule) onlyRole(RULES_MANAGEMENT_ROLE) {
      +      39            [ + ]:         33 :         if (rules_.length == 0) {
      +      40                 :          4 :             revert RuleEngine_RulesManagementModule_ArrayIsEmpty();
      +      41                 :            :         }
      +      42            [ + ]:         29 :         if (_rules.length() > 0) {
      +      43                 :         27 :             _clearRules();
      +      44                 :            :         }
      +      45                 :         29 :         for(uint256 i = 0; i < rules_.length; ++i){
      +      46                 :         47 :            _checkRule(address(rules_[i]));
      +      47                 :            :             // Should never revert because we check the presence of the rule before
      +      48         [ #  + ]:         45 :             require(_rules.add(address(rules_[i])), RuleEngine_RulesManagementModule_OperationNotSuccessful());
      +      49                 :         45 :             emit AddRule(rules_[i]);
      +      50                 :            :         }
      +      51                 :            :     }
      +      52                 :            : 
      +      53                 :            :     /**
      +      54                 :            :     * @inheritdoc IRulesManagementModule
      +      55                 :            :     */  
      +      56                 :         10 :     function clearRules() public virtual override(IRulesManagementModule) onlyRole(RULES_MANAGEMENT_ROLE) {
      +      57                 :          9 :         _clearRules();
      +      58                 :            :     }
      +      59                 :            : 
      +      60                 :            :     /**
      +      61                 :            :     * @inheritdoc IRulesManagementModule
      +      62                 :            :     */
      +      63                 :         95 :     function addRule(
      +      64                 :            :         IRule rule_
      +      65                 :            :     ) public virtual override(IRulesManagementModule) onlyRole(RULES_MANAGEMENT_ROLE) {
      +      66                 :         94 :         _checkRule(address(rule_));
      +      67         [ #  + ]:         90 :         require(_rules.add(address(rule_)), RuleEngine_RulesManagementModule_OperationNotSuccessful());
      +      68                 :         90 :         emit AddRule(rule_);
      +      69                 :            :     }
      +      70                 :            : 
      +      71                 :            :    /**
      +      72                 :            :     * @inheritdoc IRulesManagementModule
      +      73                 :            :     */
      +      74                 :         11 :     function removeRule(
      +      75                 :            :         IRule rule_
      +      76                 :            :     ) public virtual override(IRulesManagementModule) onlyRole(RULES_MANAGEMENT_ROLE) {
      +      77         [ +  + ]:         10 :         require(_rules.contains(address(rule_)), RuleEngine_RulesManagementModule_RuleDoNotMatch());
      +      78                 :          8 :         _removeRule(rule_);
      +      79                 :            :     }
      +      80                 :            : 
      +      81                 :            :     /* ============ View functions ============ */
      +      82                 :            : 
      +      83                 :            :    /**
      +      84                 :            :     * @inheritdoc IRulesManagementModule
      +      85                 :            :     */
      +      86                 :        115 :     function rulesCount() public view virtual override(IRulesManagementModule) returns (uint256) {
      +      87                 :        192 :         return _rules.length();
      +      88                 :            :     }
      +      89                 :            : 
      +      90                 :            :     /**
      +      91                 :            :     * @inheritdoc IRulesManagementModule
      +      92                 :            :     */
      +      93                 :         35 :     function containsRule(IRule rule_) public view virtual override(IRulesManagementModule) returns (bool){
      +      94                 :         35 :         return _rules.contains(address(rule_));
      +      95                 :            :     }
      +      96                 :            : 
      +      97                 :            : 
      +      98                 :            :     /**
      +      99                 :            :     * @inheritdoc IRulesManagementModule
      +     100                 :            :     */
      +     101                 :          3 :     function rule(
      +     102                 :            :         uint256 ruleId
      +     103                 :            :     ) public view virtual override(IRulesManagementModule) returns (address) {
      +     104         [ +  + ]:         85 :         if(ruleId < _rules.length()){
      +     105                 :            :             // Note that there are no guarantees on the ordering of values inside the array, 
      +     106                 :            :             // and it may change when more values are added or removed.
      +     107                 :         84 :             return _rules.at(ruleId);
      +     108                 :            :         } else {
      +     109                 :          1 :             return address(0);
      +     110                 :            :         }
      +     111                 :            :     }
      +     112                 :            : 
      +     113                 :            :     /**
      +     114                 :            :     * @inheritdoc IRulesManagementModule
      +     115                 :            :     */
      +     116                 :         10 :     function rules()
      +     117                 :            :         public
      +     118                 :            :         view
      +     119                 :            :         virtual
      +     120                 :            :         override(IRulesManagementModule)
      +     121                 :            :         returns (address[] memory)
      +     122                 :            :     {
      +     123                 :         10 :         return _rules.values();
      +     124                 :            :     }
      +     125                 :            : 
      +     126                 :            :     /*//////////////////////////////////////////////////////////////
      +     127                 :            :                             INTERNAL/PRIVATE FUNCTIONS
      +     128                 :            :     //////////////////////////////////////////////////////////////*/
      +     129                 :            :     /**
      +     130                 :            :      * @notice Clear all the rules of the array of rules
      +     131                 :            :      *
      +     132                 :            :      */
      +     133                 :         36 :     function _clearRules() internal virtual {
      +     134                 :         36 :         emit ClearRules();
      +     135                 :         36 :         _rules.clear();
      +     136                 :            :     }
      +     137                 :            : 
      +     138                 :            :     /**
      +     139                 :            :      * @notice Remove a rule from the array of rules
      +     140                 :            :      * Revert if the rule found at the specified index does not match the rule in argument
      +     141                 :            :      * @param rule_ address of the target rule
      +     142                 :            :      *
      +     143                 :            :      *
      +     144                 :            :      */
      +     145                 :          8 :     function _removeRule(IRule rule_) internal virtual {
      +     146                 :            :         // Should never revert because we check the presence of the rule before
      +     147         [ #  + ]:          8 :         require(_rules.remove(address(rule_)), RuleEngine_RulesManagementModule_OperationNotSuccessful());
      +     148                 :          8 :         emit RemoveRule(rule_);
      +     149                 :            :     }
      +     150                 :            : 
      +     151                 :            :     /**
      +     152                 :            :     * @dev check if a rule is valid, revert otherwise
      +     153                 :            :     */
      +     154                 :        141 :     function _checkRule(address rule_) internal view{
      +     155            [ + ]:        141 :           if (rule_ == address(0x0)) {
      +     156                 :          2 :                 revert RuleEngine_RulesManagementModule_RuleAddressZeroNotAllowed();
      +     157                 :            :             }
      +     158            [ + ]:        139 :         if (_rules.contains(rule_)) {
      +     159                 :          4 :             revert RuleEngine_RulesManagementModule_RuleAlreadyExists();
      +     160                 :            :         }
      +     161                 :            :     }
      +     162                 :            : 
      +     163                 :            : 
      +     164                 :            :     /* ============ Transferred functions ============ */
      +     165                 :            : 
      +     166                 :            :     /**
      +     167                 :            :      * @notice Go through all the rule to know if a restriction exists on the transfer
      +     168                 :            :      * @param from the origin address
      +     169                 :            :      * @param to the destination address
      +     170                 :            :      * @param value to transfer
      +     171                 :            :      **/
      +     172                 :         10 :     function _transferred(
      +     173                 :            :         address from,
      +     174                 :            :         address to,
      +     175                 :            :         uint256 value
      +     176                 :            :     ) internal virtual{
      +     177                 :         10 :         uint256 rulesLength = _rules.length();
      +     178                 :         10 :         for (uint256 i = 0; i < rulesLength; ++i) {
      +     179                 :          7 :             IRule(_rules.at(i)).transferred(
      +     180                 :            :                 from,
      +     181                 :            :                 to,
      +     182                 :            :                 value
      +     183                 :            :             );
      +     184                 :            :         }
      +     185                 :            :     }
      +     186                 :            : 
      +     187                 :            :     /**
      +     188                 :            :      * @notice Go through all the rule to know if a restriction exists on the transfer
      +     189                 :            :      * @param spender the spender address (transferFrom)
      +     190                 :            :      * @param from the origin address
      +     191                 :            :      * @param to the destination address
      +     192                 :            :      * @param value to transfer
      +     193                 :            :      **/
      +     194                 :          2 :     function _transferred(
      +     195                 :            :         address spender,
      +     196                 :            :         address from,
      +     197                 :            :         address to,
      +     198                 :            :         uint256 value
      +     199                 :            :     ) internal virtual{
      +     200                 :          2 :         uint256 rulesLength = _rules.length();
      +     201                 :          2 :         for (uint256 i = 0; i < rulesLength; ++i) {
      +     202                 :          2 :             IRule(_rules.at(i)).transferred(
      +     203                 :            :                 spender,
      +     204                 :            :                 from,
      +     205                 :            :                 to,
      +     206                 :            :                 value
      +     207                 :            :             );
      +     208                 :            :         }
      +     209                 :            :     }
      +     210                 :            : }
      +
      +
      +
      + + + + +
      Generated by: LCOV version 1.16
      +
      + + + diff --git a/doc/coverage/coverage/src/modules/RuleEngineValidation.sol.func-sort-c.html b/doc/coverage/coverage/src/modules/VersionModule.sol.func-sort-c.html similarity index 64% rename from doc/coverage/coverage/src/modules/RuleEngineValidation.sol.func-sort-c.html rename to doc/coverage/coverage/src/modules/VersionModule.sol.func-sort-c.html index eef517b..72f73b9 100644 --- a/doc/coverage/coverage/src/modules/RuleEngineValidation.sol.func-sort-c.html +++ b/doc/coverage/coverage/src/modules/VersionModule.sol.func-sort-c.html @@ -4,7 +4,7 @@ - LCOV - lcov.info - src/modules/RuleEngineValidation.sol - functions + LCOV - lcov.info - src/modules/VersionModule.sol - functions @@ -19,7 +19,7 @@ - + @@ -31,17 +31,17 @@ - - + + - + - - + + @@ -49,9 +49,9 @@ - - - + + +
      Current view:top level - src/modules - RuleEngineValidation.sol (source / functions)top level - src/modules - VersionModule.sol (source / functions) Hitlcov.info Lines:202022 100.0 %
      Date:2025-07-22 14:36:482025-08-15 12:12:38 Functions:4411 100.0 %
      Branches:22100.0 %00-
      @@ -65,25 +65,13 @@ - + - - - - - + - - - - - - - -

      Function Name Sort by function nameFunction Name Sort by function name Hit count Sort by hit count
      RuleEngineValidation.canTransferValidationFrom1
      RuleEngineValidation.detectTransferRestrictionValidationFromVersionModule.version 1
      RuleEngineValidation.canTransferValidation2
      RuleEngineValidation.detectTransferRestrictionValidation5

      diff --git a/doc/coverage/coverage/src/modules/RuleEngineValidation.sol.func.html b/doc/coverage/coverage/src/modules/VersionModule.sol.func.html similarity index 64% rename from doc/coverage/coverage/src/modules/RuleEngineValidation.sol.func.html rename to doc/coverage/coverage/src/modules/VersionModule.sol.func.html index fbb4eff..5f5430e 100644 --- a/doc/coverage/coverage/src/modules/RuleEngineValidation.sol.func.html +++ b/doc/coverage/coverage/src/modules/VersionModule.sol.func.html @@ -4,7 +4,7 @@ - LCOV - lcov.info - src/modules/RuleEngineValidation.sol - functions + LCOV - lcov.info - src/modules/VersionModule.sol - functions @@ -19,7 +19,7 @@ - + @@ -31,17 +31,17 @@ - - + + - + - - + + @@ -49,9 +49,9 @@ - - - + + +
      Current view:top level - src/modules - RuleEngineValidation.sol (source / functions)top level - src/modules - VersionModule.sol (source / functions) Hitlcov.info Lines:202022 100.0 %
      Date:2025-07-22 14:36:482025-08-15 12:12:38 Functions:4411 100.0 %
      Branches:22100.0 %00-
      @@ -66,22 +66,10 @@
      Function Name Sort by function name - Hit count Sort by hit count + Hit count Sort by hit count - RuleEngineValidation.canTransferValidation - 2 - - - RuleEngineValidation.canTransferValidationFrom - 1 - - - RuleEngineValidation.detectTransferRestrictionValidation - 5 - - - RuleEngineValidation.detectTransferRestrictionValidationFrom + VersionModule.version 1 diff --git a/doc/coverage/coverage/src/modules/VersionModule.sol.gcov.html b/doc/coverage/coverage/src/modules/VersionModule.sol.gcov.html new file mode 100644 index 0000000..c87703d --- /dev/null +++ b/doc/coverage/coverage/src/modules/VersionModule.sol.gcov.html @@ -0,0 +1,109 @@ + + + + + + + LCOV - lcov.info - src/modules/VersionModule.sol + + + + + + + + + + + + + + +
      LCOV - code coverage report
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      Current view:top level - src/modules - VersionModule.sol (source / functions)HitTotalCoverage
      Test:lcov.infoLines:22100.0 %
      Date:2025-08-15 12:12:38Functions:11100.0 %
      Branches:00-
      +
      + + + + + + + + +

      +
                 Branch data     Line data    Source code
      +
      +       1                 :            : // SPDX-License-Identifier: MPL-2.0
      +       2                 :            : 
      +       3                 :            : pragma solidity ^0.8.20;
      +       4                 :            : 
      +       5                 :            : /* ==== CMTAT === */
      +       6                 :            : import {IERC3643Base} from "CMTAT/interfaces/tokenization/IERC3643Partial.sol";
      +       7                 :            : abstract contract VersionModule is IERC3643Base {
      +       8                 :            :     /* ============ State Variables ============ */
      +       9                 :            :     /** 
      +      10                 :            :     * @dev 
      +      11                 :            :     * Get the current version of the smart contract
      +      12                 :            :     */
      +      13                 :            :     string private constant VERSION = "3.0.0";
      +      14                 :            :     /* ============ Events ============ */
      +      15                 :            :     /*//////////////////////////////////////////////////////////////
      +      16                 :            :                             PUBLIC/EXTERNAL FUNCTIONS
      +      17                 :            :     //////////////////////////////////////////////////////////////*/
      +      18                 :            :     /**
      +      19                 :            :     * @inheritdoc IERC3643Base
      +      20                 :            :     */
      +      21                 :          1 :     function version() public view virtual override(IERC3643Base) returns (string memory version_) {
      +      22                 :          1 :        return VERSION;
      +      23                 :            :     }
      +      24                 :            : }
      +
      +
      +
      + + + + +
      Generated by: LCOV version 1.16
      +
      + + + diff --git a/doc/coverage/coverage/src/modules/index-sort-b.html b/doc/coverage/coverage/src/modules/index-sort-b.html index 533458d..8894d3d 100644 --- a/doc/coverage/coverage/src/modules/index-sort-b.html +++ b/doc/coverage/coverage/src/modules/index-sort-b.html @@ -31,17 +31,17 @@ lcov.info Lines: - 115 - 115 + 73 + 73 100.0 % Date: - 2025-07-22 14:36:48 + 2025-08-15 12:12:38 Functions: - 29 - 29 + 21 + 21 100.0 % @@ -49,9 +49,9 @@ Branches: - 12 - 12 - 100.0 % + 22 + 27 + 81.5 % @@ -82,52 +82,40 @@ Branches Sort by branch coverage - RuleEngineValidationCommon.sol + RulesManagementModule.sol
      100.0%
      100.0 % - 29 / 29 - 100.0 % - 10 / 10 + 47 / 47 100.0 % - 1 / 1 + 12 / 12 + 78.6 % + 11 / 14 - RuleEngineOperation.sol + ERC3643ComplianceModule.sol
      100.0%
      100.0 % - 33 / 33 + 24 / 24 100.0 % - 11 / 11 - 100.0 % - 1 / 1 + 8 / 8 + 84.6 % + 11 / 13 - RuleEngineValidation.sol + VersionModule.sol
      100.0%
      100.0 % - 20 / 20 - 100.0 % - 4 / 4 - 100.0 % 2 / 2 - - - RuleInternal.sol - -
      100.0%
      - 100.0 % - 33 / 33 - 100.0 % - 4 / 4 - 100.0 % - 8 / 8 + 1 / 1 + - + 0 / 0 diff --git a/doc/coverage/coverage/src/modules/index-sort-f.html b/doc/coverage/coverage/src/modules/index-sort-f.html index a30c08b..43cd97e 100644 --- a/doc/coverage/coverage/src/modules/index-sort-f.html +++ b/doc/coverage/coverage/src/modules/index-sort-f.html @@ -31,17 +31,17 @@ lcov.info Lines: - 115 - 115 + 73 + 73 100.0 % Date: - 2025-07-22 14:36:48 + 2025-08-15 12:12:38 Functions: - 29 - 29 + 21 + 21 100.0 % @@ -49,9 +49,9 @@ Branches: - 12 - 12 - 100.0 % + 22 + 27 + 81.5 % @@ -82,52 +82,40 @@ Branches Sort by branch coverage - RuleInternal.sol - -
      100.0%
      - - 100.0 % - 33 / 33 - 100.0 % - 4 / 4 - 100.0 % - 8 / 8 - - - RuleEngineValidation.sol + VersionModule.sol
      100.0%
      100.0 % - 20 / 20 - 100.0 % - 4 / 4 - 100.0 % 2 / 2 + 100.0 % + 1 / 1 + - + 0 / 0 - RuleEngineValidationCommon.sol + ERC3643ComplianceModule.sol
      100.0%
      100.0 % - 29 / 29 - 100.0 % - 10 / 10 + 24 / 24 100.0 % - 1 / 1 + 8 / 8 + 84.6 % + 11 / 13 - RuleEngineOperation.sol + RulesManagementModule.sol
      100.0%
      100.0 % - 33 / 33 + 47 / 47 100.0 % - 11 / 11 - 100.0 % - 1 / 1 + 12 / 12 + 78.6 % + 11 / 14 diff --git a/doc/coverage/coverage/src/modules/index-sort-l.html b/doc/coverage/coverage/src/modules/index-sort-l.html index ab98283..fcde026 100644 --- a/doc/coverage/coverage/src/modules/index-sort-l.html +++ b/doc/coverage/coverage/src/modules/index-sort-l.html @@ -31,17 +31,17 @@ lcov.info Lines: - 115 - 115 + 73 + 73 100.0 % Date: - 2025-07-22 14:36:48 + 2025-08-15 12:12:38 Functions: - 29 - 29 + 21 + 21 100.0 % @@ -49,9 +49,9 @@ Branches: - 12 - 12 - 100.0 % + 22 + 27 + 81.5 % @@ -82,52 +82,40 @@ Branches Sort by branch coverage - RuleEngineValidation.sol + VersionModule.sol
      100.0%
      100.0 % - 20 / 20 - 100.0 % - 4 / 4 - 100.0 % 2 / 2 - - - RuleEngineValidationCommon.sol - -
      100.0%
      - - 100.0 % - 29 / 29 - 100.0 % - 10 / 10 100.0 % 1 / 1 + - + 0 / 0 - RuleInternal.sol + ERC3643ComplianceModule.sol
      100.0%
      100.0 % - 33 / 33 - 100.0 % - 4 / 4 + 24 / 24 100.0 % 8 / 8 + 84.6 % + 11 / 13 - RuleEngineOperation.sol + RulesManagementModule.sol
      100.0%
      100.0 % - 33 / 33 - 100.0 % - 11 / 11 + 47 / 47 100.0 % - 1 / 1 + 12 / 12 + 78.6 % + 11 / 14 diff --git a/doc/coverage/coverage/src/modules/index.html b/doc/coverage/coverage/src/modules/index.html index 3594cd5..0beaa22 100644 --- a/doc/coverage/coverage/src/modules/index.html +++ b/doc/coverage/coverage/src/modules/index.html @@ -31,17 +31,17 @@ lcov.info Lines: - 115 - 115 + 73 + 73 100.0 % Date: - 2025-07-22 14:36:48 + 2025-08-15 12:12:38 Functions: - 29 - 29 + 21 + 21 100.0 % @@ -49,9 +49,9 @@ Branches: - 12 - 12 - 100.0 % + 22 + 27 + 81.5 % @@ -82,52 +82,40 @@ Branches Sort by branch coverage - RuleEngineOperation.sol + ERC3643ComplianceModule.sol
      100.0%
      100.0 % - 33 / 33 - 100.0 % - 11 / 11 + 24 / 24 100.0 % - 1 / 1 + 8 / 8 + 84.6 % + 11 / 13 - RuleEngineValidation.sol + RulesManagementModule.sol
      100.0%
      100.0 % - 20 / 20 - 100.0 % - 4 / 4 + 47 / 47 100.0 % - 2 / 2 + 12 / 12 + 78.6 % + 11 / 14 - RuleEngineValidationCommon.sol + VersionModule.sol
      100.0%
      100.0 % - 29 / 29 - 100.0 % - 10 / 10 + 2 / 2 100.0 % 1 / 1 - - - RuleInternal.sol - -
      100.0%
      - - 100.0 % - 33 / 33 - 100.0 % - 4 / 4 - 100.0 % - 8 / 8 + - + 0 / 0 diff --git a/doc/coverage/lcov.info b/doc/coverage/lcov.info index b9b83e1..9a34f35 100644 --- a/doc/coverage/lcov.info +++ b/doc/coverage/lcov.info @@ -1,329 +1,276 @@ TN: SF:src/RuleEngine.sol -DA:30,78 -FN:30,RuleEngine.constructor -FNDA:78,RuleEngine.constructor -DA:35,78 -BRDA:35,0,0,1 -DA:36,1 -DA:38,77 -BRDA:38,1,0,15 -DA:39,15 -DA:41,77 -DA:51,13 -FN:51,RuleEngine.detectTransferRestriction -FNDA:13,RuleEngine.detectTransferRestriction -DA:57,30 -DA:62,30 -BRDA:62,2,0,11 -DA:63,11 -DA:67,19 -DA:68,19 -DA:69,16 -DA:71,16 -BRDA:71,3,0,10 -DA:72,10 -DA:76,9 -DA:79,9 -FN:79,RuleEngine.detectTransferRestrictionFrom -FNDA:9,RuleEngine.detectTransferRestrictionFrom -DA:86,22 -DA:91,22 -BRDA:91,4,0,10 -DA:92,10 -DA:96,12 -DA:97,12 -DA:98,12 -DA:100,12 -BRDA:100,5,0,6 -DA:101,6 -DA:105,6 -DA:115,17 -FN:115,RuleEngine.canTransfer -FNDA:17,RuleEngine.canTransfer -DA:120,17 -DA:121,17 -DA:132,13 -FN:132,RuleEngine.canTransferFrom -FNDA:13,RuleEngine.canTransferFrom -DA:138,13 -DA:139,13 -DA:148,13 -FN:148,RuleEngine.messageForTransferRestriction -FNDA:13,RuleEngine.messageForTransferRestriction -DA:152,13 -DA:153,13 -DA:155,8 -DA:157,7 -BRDA:157,6,0,7 -DA:158,7 -DA:159,7 -DA:164,6 -DA:165,6 -DA:167,2 -DA:169,1 -BRDA:169,7,0,1 -DA:170,1 -DA:171,1 -DA:175,5 -DA:181,3 -FN:181,RuleEngine.transferred -FNDA:3,RuleEngine.transferred -DA:188,2 -BRDA:188,8,0,1 -BRDA:188,8,1,1 -DA:191,1 -DA:194,7 -FN:194,RuleEngine.transferred -FNDA:7,RuleEngine.transferred -DA:200,7 -BRDA:200,9,0,3 -BRDA:200,9,1,4 -DA:203,4 -DA:210,101 -FN:210,RuleEngine.hasRole -FNDA:101,RuleEngine.hasRole -DA:215,271 -BRDA:215,10,0,151 -DA:216,151 -DA:218,120 -DA:228,262 -FN:228,RuleEngine._msgSender -FNDA:262,RuleEngine._msgSender -DA:234,262 -DA:240,0 -FN:240,RuleEngine._msgData +DA:22,90 +FN:22,RuleEngine.constructor +FNDA:90,RuleEngine.constructor +DA:27,90 +BRDA:27,0,0,1 +DA:28,1 +DA:30,89 +BRDA:30,1,0,15 +DA:31,15 +DA:33,89 +DA:43,300 +FN:43,RuleEngine._msgSender +FNDA:300,RuleEngine._msgSender +DA:50,300 +DA:56,0 +FN:56,RuleEngine._msgData FNDA:0,RuleEngine._msgData -DA:246,0 -DA:252,262 -FN:252,RuleEngine._contextSuffixLength -FNDA:262,RuleEngine._contextSuffixLength -DA:258,262 -FNF:12 -FNH:11 -LF:62 -LH:60 -BRF:13 -BRH:13 -end_of_record -TN: -SF:src/modules/RuleEngineOperation.sol -DA:26,11 -FN:26,RuleEngineOperation.setRulesOperation -FNDA:11,RuleEngineOperation.setRulesOperation -DA:29,11 -BRDA:29,0,0,10 -DA:30,10 -DA:32,11 -DA:33,8 -DA:40,4 -FN:40,RuleEngineOperation.clearRulesOperation -FNDA:4,RuleEngineOperation.clearRulesOperation -DA:41,4 -DA:48,14 -FN:48,RuleEngineOperation._clearRulesOperation -FNDA:14,RuleEngineOperation._clearRulesOperation -DA:49,14 -DA:51,14 -DA:54,17 -DA:56,17 -DA:58,14 -DA:66,36 -FN:66,RuleEngineOperation.addRuleOperation -FNDA:36,RuleEngineOperation.addRuleOperation -DA:69,36 -DA:70,34 -DA:83,5 -FN:83,RuleEngineOperation.removeRuleOperation -FNDA:5,RuleEngineOperation.removeRuleOperation -DA:87,5 -DA:100,22 -FN:100,RuleEngineOperation._removeRuleOperation -FNDA:22,RuleEngineOperation._removeRuleOperation -DA:101,22 -DA:102,21 -DA:108,45 -FN:108,RuleEngineOperation.rulesCountOperation -FNDA:45,RuleEngineOperation.rulesCountOperation -DA:109,45 -DA:116,3 -FN:116,RuleEngineOperation.getRuleIndexOperation -FNDA:3,RuleEngineOperation.getRuleIndexOperation -DA:119,3 -DA:127,1 -FN:127,RuleEngineOperation.ruleOperation -FNDA:1,RuleEngineOperation.ruleOperation -DA:130,1 -DA:137,5 -FN:137,RuleEngineOperation.rulesOperation -FNDA:5,RuleEngineOperation.rulesOperation -DA:143,5 -DA:152,5 -FN:152,RuleEngineOperation._transferred -FNDA:5,RuleEngineOperation._transferred -DA:157,5 -DA:158,5 -DA:159,3 -FNF:11 -FNH:11 -LF:33 -LH:33 -BRF:1 -BRH:1 -end_of_record -TN: -SF:src/modules/RuleEngineValidation.sol -DA:28,5 -FN:28,RuleEngineValidation.detectTransferRestrictionValidation -FNDA:5,RuleEngineValidation.detectTransferRestrictionValidation -DA:33,44 -DA:34,44 -DA:35,26 -DA:37,26 -BRDA:37,0,0,19 -DA:38,19 -DA:42,25 -DA:45,1 -FN:45,RuleEngineValidation.detectTransferRestrictionValidationFrom -FNDA:1,RuleEngineValidation.detectTransferRestrictionValidationFrom -DA:51,26 -DA:52,26 -DA:53,13 -DA:55,13 -BRDA:55,1,0,13 -DA:56,13 -DA:59,13 -DA:69,2 -FN:69,RuleEngineValidation.canTransferValidation -FNDA:2,RuleEngineValidation.canTransferValidation -DA:74,9 -DA:75,9 -DA:86,1 -FN:86,RuleEngineValidation.canTransferValidationFrom -FNDA:1,RuleEngineValidation.canTransferValidationFrom -DA:92,3 -DA:93,3 +DA:63,0 +DA:69,300 +FN:69,RuleEngine._contextSuffixLength +FNDA:300,RuleEngine._contextSuffixLength +DA:76,300 FNF:4 -FNH:4 -LF:20 -LH:20 +FNH:3 +LF:12 +LH:10 BRF:2 BRH:2 end_of_record TN: -SF:src/modules/RuleEngineValidationCommon.sol -DA:30,23 -FN:30,RuleEngineValidationCommon.setRulesValidation -FNDA:23,RuleEngineValidationCommon.setRulesValidation -DA:33,22 -BRDA:33,0,0,21 -DA:34,21 -DA:36,22 -DA:37,19 -DA:44,6 -FN:44,RuleEngineValidationCommon.clearRulesValidation -FNDA:6,RuleEngineValidationCommon.clearRulesValidation -DA:45,5 -DA:53,59 -FN:53,RuleEngineValidationCommon.addRuleValidation -FNDA:59,RuleEngineValidationCommon.addRuleValidation -DA:56,58 -DA:57,56 -DA:70,6 -FN:70,RuleEngineValidationCommon.removeRuleValidation -FNDA:6,RuleEngineValidationCommon.removeRuleValidation -DA:74,5 -DA:80,70 -FN:80,RuleEngineValidationCommon.rulesCountValidation -FNDA:70,RuleEngineValidationCommon.rulesCountValidation -DA:81,70 -DA:88,3 -FN:88,RuleEngineValidationCommon.getRuleIndexValidation -FNDA:3,RuleEngineValidationCommon.getRuleIndexValidation -DA:91,3 -DA:99,1 -FN:99,RuleEngineValidationCommon.ruleValidation -FNDA:1,RuleEngineValidationCommon.ruleValidation -DA:102,1 -DA:109,5 -FN:109,RuleEngineValidationCommon.rulesValidation -FNDA:5,RuleEngineValidationCommon.rulesValidation -DA:115,5 -DA:125,26 -FN:125,RuleEngineValidationCommon._clearRulesValidation -FNDA:26,RuleEngineValidationCommon._clearRulesValidation -DA:126,26 -DA:128,26 -DA:131,29 -DA:133,29 -DA:135,26 -DA:148,34 -FN:148,RuleEngineValidationCommon._removeRuleValidation -FNDA:34,RuleEngineValidationCommon._removeRuleValidation -DA:149,34 -DA:150,33 +SF:src/RuleEngineBase.sol +DA:35,3 +FN:35,RuleEngineBase.transferred +FNDA:3,RuleEngineBase.transferred +DA:42,2 +DA:48,9 +FN:48,RuleEngineBase.transferred +FNDA:9,RuleEngineBase.transferred +DA:53,8 +DA:57,2 +FN:57,RuleEngineBase.created +FNDA:2,RuleEngineBase.created +DA:58,1 +DA:62,2 +FN:62,RuleEngineBase.destroyed +FNDA:2,RuleEngineBase.destroyed +DA:63,1 +DA:76,21 +FN:76,RuleEngineBase.detectTransferRestriction +FNDA:21,RuleEngineBase.detectTransferRestriction +DA:81,39 +DA:82,39 +DA:83,39 +DA:85,39 +BRDA:85,0,0,28 +DA:86,28 +DA:89,11 +DA:95,11 +FN:95,RuleEngineBase.detectTransferRestrictionFrom +FNDA:11,RuleEngineBase.detectTransferRestrictionFrom +DA:101,25 +DA:102,25 +DA:103,25 +DA:105,25 +BRDA:105,1,0,19 +DA:106,19 +DA:110,6 +DA:116,13 +FN:116,RuleEngineBase.messageForTransferRestriction +FNDA:13,RuleEngineBase.messageForTransferRestriction +DA:120,13 +DA:121,13 +DA:123,10 +DA:125,8 +BRDA:125,2,0,8 +DA:126,8 +DA:127,8 +DA:131,5 +DA:137,18 +FN:137,RuleEngineBase.canTransfer +FNDA:18,RuleEngineBase.canTransfer +DA:142,18 +DA:143,18 +DA:150,14 +FN:150,RuleEngineBase.canTransferFrom +FNDA:14,RuleEngineBase.canTransferFrom +DA:156,14 +DA:157,14 +DA:166,98 +FN:166,RuleEngineBase.hasRole +FNDA:98,RuleEngineBase.hasRole +DA:170,293 +BRDA:170,3,0,165 +BRDA:170,3,1,128 +DA:171,165 +DA:173,128 FNF:10 FNH:10 -LF:29 -LH:29 -BRF:1 -BRH:1 +LF:40 +LH:40 +BRF:5 +BRH:5 end_of_record TN: -SF:src/modules/RuleInternal.sol -DA:19,33 -FN:19,RuleInternal._setRules -FNDA:33,RuleInternal._setRules -DA:20,33 -BRDA:20,0,0,2 -DA:21,2 -DA:23,31 -DA:24,49 -BRDA:24,1,0,2 -DA:25,2 -DA:27,2 -BRDA:27,2,0,2 -DA:28,2 -DA:30,45 -DA:31,45 -DA:33,45 -DA:43,94 -FN:43,RuleInternal._addRule -FNDA:94,RuleInternal._addRule -DA:44,94 -BRDA:44,3,0,2 -DA:45,2 -DA:47,2 -BRDA:47,4,0,2 -DA:48,2 -DA:50,90 -DA:51,90 -DA:64,56 -FN:64,RuleInternal._removeRule -FNDA:56,RuleInternal._removeRule -DA:69,56 -BRDA:69,5,0,2 -DA:70,2 -DA:72,54 -BRDA:72,6,0,4 -DA:73,4 -DA:75,54 -DA:76,54 -DA:77,54 -DA:84,6 -FN:84,RuleInternal._getRuleIndex -FNDA:6,RuleInternal._getRuleIndex -DA:88,6 -DA:89,6 -DA:90,10 -BRDA:90,7,0,4 -DA:91,4 -DA:94,6 -DA:97,2 -FNF:4 -FNH:4 -LF:33 -LH:33 -BRF:8 -BRH:8 +SF:src/modules/ERC3643ComplianceModule.sol +DA:27,3 +FN:27,ERC3643ComplianceModule.onlyBoundToken +FNDA:3,ERC3643ComplianceModule.onlyBoundToken +DA:28,3 +BRDA:28,0,0,1 +DA:29,1 +DA:40,11 +FN:40,ERC3643ComplianceModule.bindToken +FNDA:11,ERC3643ComplianceModule.bindToken +DA:41,11 +DA:45,4 +FN:45,ERC3643ComplianceModule.unbindToken +FNDA:4,ERC3643ComplianceModule.unbindToken +DA:46,4 +DA:50,6 +FN:50,ERC3643ComplianceModule.isTokenBound +FNDA:6,ERC3643ComplianceModule.isTokenBound +DA:51,6 +DA:55,2 +FN:55,ERC3643ComplianceModule.getTokenBound +FNDA:2,ERC3643ComplianceModule.getTokenBound +DA:56,2 +BRDA:56,1,0,1 +BRDA:56,1,1,1 +DA:59,1 +DA:61,1 +DA:66,2 +FN:66,ERC3643ComplianceModule.getTokenBounds +FNDA:2,ERC3643ComplianceModule.getTokenBounds +DA:67,2 +DA:76,4 +FN:76,ERC3643ComplianceModule._unbindToken +FNDA:4,ERC3643ComplianceModule._unbindToken +DA:77,4 +BRDA:77,2,0,1 +BRDA:77,2,1,3 +DA:79,3 +BRDA:79,3,0,- +BRDA:79,3,1,3 +DA:81,3 +DA:83,26 +FN:83,ERC3643ComplianceModule._bindToken +FNDA:26,ERC3643ComplianceModule._bindToken +DA:84,26 +BRDA:84,4,0,1 +BRDA:84,4,1,25 +DA:85,25 +BRDA:85,5,0,1 +BRDA:85,5,1,24 +DA:87,24 +BRDA:87,6,0,- +BRDA:87,6,1,24 +DA:88,24 +FNF:8 +FNH:8 +LF:24 +LH:24 +BRF:13 +BRH:11 +end_of_record +TN: +SF:src/modules/RulesManagementModule.sol +DA:36,34 +FN:36,RulesManagementModule.setRules +FNDA:34,RulesManagementModule.setRules +DA:39,33 +BRDA:39,0,0,4 +DA:40,4 +DA:42,29 +BRDA:42,1,0,27 +DA:43,27 +DA:45,29 +DA:46,47 +DA:48,45 +BRDA:48,2,0,- +BRDA:48,2,1,45 +DA:49,45 +DA:56,10 +FN:56,RulesManagementModule.clearRules +FNDA:10,RulesManagementModule.clearRules +DA:57,9 +DA:63,95 +FN:63,RulesManagementModule.addRule +FNDA:95,RulesManagementModule.addRule +DA:66,94 +DA:67,90 +BRDA:67,3,0,- +BRDA:67,3,1,90 +DA:68,90 +DA:74,11 +FN:74,RulesManagementModule.removeRule +FNDA:11,RulesManagementModule.removeRule +DA:77,10 +BRDA:77,4,0,2 +BRDA:77,4,1,8 +DA:78,8 +DA:86,115 +FN:86,RulesManagementModule.rulesCount +FNDA:115,RulesManagementModule.rulesCount +DA:87,192 +DA:93,35 +FN:93,RulesManagementModule.containsRule +FNDA:35,RulesManagementModule.containsRule +DA:94,35 +DA:101,3 +FN:101,RulesManagementModule.rule +FNDA:3,RulesManagementModule.rule +DA:104,85 +BRDA:104,5,0,84 +BRDA:104,5,1,1 +DA:107,84 +DA:109,1 +DA:116,10 +FN:116,RulesManagementModule.rules +FNDA:10,RulesManagementModule.rules +DA:123,10 +DA:133,36 +FN:133,RulesManagementModule._clearRules +FNDA:36,RulesManagementModule._clearRules +DA:134,36 +DA:135,36 +DA:145,8 +FN:145,RulesManagementModule._removeRule +FNDA:8,RulesManagementModule._removeRule +DA:147,8 +BRDA:147,6,0,- +BRDA:147,6,1,8 +DA:148,8 +DA:154,141 +FN:154,RulesManagementModule._checkRule +FNDA:141,RulesManagementModule._checkRule +DA:155,141 +BRDA:155,7,0,2 +DA:156,2 +DA:158,139 +BRDA:158,8,0,4 +DA:159,4 +DA:172,10 +FN:172,RulesManagementModule._transferred +FNDA:10,RulesManagementModule._transferred +DA:177,10 +DA:178,10 +DA:179,7 +DA:194,2 +FN:194,RulesManagementModule._transferred +FNDA:2,RulesManagementModule._transferred +DA:200,2 +DA:201,2 +DA:202,2 +FNF:13 +FNH:13 +LF:47 +LH:47 +BRF:14 +BRH:11 +end_of_record +TN: +SF:src/modules/VersionModule.sol +DA:21,1 +FN:21,VersionModule.version +FNDA:1,VersionModule.version +DA:22,1 +FNF:1 +FNH:1 +LF:2 +LH:2 +BRF:0 +BRH:0 end_of_record diff --git a/doc/schema/classDiagram.svg b/doc/schema/classDiagram.svg index 1c87a90..d3a0e65 100644 --- a/doc/schema/classDiagram.svg +++ b/doc/schema/classDiagram.svg @@ -4,23 +4,23 @@ - - + + UmlClassDiagram - + 0 - -<<Interface>> -IERC3643Pause -RuleEngine.sol - -External: -     paused(): bool -     pause() -     unpause() + +<<Interface>> +IERC3643Pause +RuleEngineFlatten.sol + +External: +     paused(): bool +     pause() +     unpause() @@ -28,7 +28,7 @@ <<Interface>> IERC3643ERC20Base -RuleEngine.sol +RuleEngineFlatten.sol External:     setName(name: string) @@ -40,7 +40,7 @@ <<Interface>> IERC3643BatchTransfer -RuleEngine.sol +RuleEngineFlatten.sol External:     batchTransfer(tos: address[], values: uint256[]): (success_: bool) @@ -48,13 +48,13 @@ 3 - -<<Interface>> -IERC3643Base -RuleEngine.sol - -External: -     version(): (version_: string) + +<<Interface>> +IERC3643Base +RuleEngineFlatten.sol + +External: +     version(): (version_: string) @@ -62,7 +62,7 @@ <<Interface>> IERC3643EnforcementEvent -RuleEngine.sol +RuleEngineFlatten.sol Public:    <<event>> AddressFrozen(account: address, isFrozen: bool, enforcer: address, data: bytes) @@ -73,7 +73,7 @@ <<Interface>> IERC3643Enforcement -RuleEngine.sol +RuleEngineFlatten.sol External:     isFrozen(account: address): (isFrozen_: bool) @@ -86,7 +86,7 @@ <<Interface>> IERC3643ERC20Enforcement -RuleEngine.sol +RuleEngineFlatten.sol External:     getFrozenTokens(account: address): (frozenBalance_: uint256) @@ -100,7 +100,7 @@ <<Interface>> IERC3643Mint -RuleEngine.sol +RuleEngineFlatten.sol External:     mint(account: address, value: uint256) @@ -112,7 +112,7 @@ <<Interface>> IERC3643Burn -RuleEngine.sol +RuleEngineFlatten.sol External:     burn(account: address, value: uint256) @@ -121,420 +121,421 @@ 9 - -<<Interface>> -IERC3643ComplianceRead -RuleEngine.sol - -External: -     canTransfer(from: address, to: address, value: uint256): (isValid: bool) + +<<Interface>> +IERC3643ComplianceRead +RuleEngineFlatten.sol + +External: +     canTransfer(from: address, to: address, value: uint256): (isValid: bool) 10 - -<<Interface>> -IERC3643IComplianceContract -RuleEngine.sol - -External: -     transferred(from: address, to: address, value: uint256) + +<<Interface>> +IERC3643IComplianceContract +RuleEngineFlatten.sol + +External: +     transferred(from: address, to: address, value: uint256) 11 - -<<Interface>> -IERC1404 -RuleEngine.sol - -External: -     detectTransferRestriction(from: address, to: address, value: uint256): uint8 -     messageForTransferRestriction(restrictionCode: uint8): string + +<<Interface>> +IERC1404 +RuleEngineFlatten.sol + +External: +     detectTransferRestriction(from: address, to: address, value: uint256): uint8 +     messageForTransferRestriction(restrictionCode: uint8): string 12 - -<<Interface>> -IERC1404Extend -RuleEngine.sol - -External: -     detectTransferRestrictionFrom(spender: address, from: address, to: address, value: uint256): uint8 + +<<Interface>> +IERC1404Extend +RuleEngineFlatten.sol + +External: +     detectTransferRestrictionFrom(spender: address, from: address, to: address, value: uint256): uint8 12->11 - - + + 13 - -<<Enum>> -REJECTED_CODE_BASE -RuleEngine.sol - -TRANSFER_OK: 0 -TRANSFER_REJECTED_PAUSED: 1 -TRANSFER_REJECTED_FROM_FROZEN: 2 -TRANSFER_REJECTED_TO_FROZEN: 3 -TRANSFER_REJECTED_SPENDER_FROZEN: 4 -TRANSFER_REJECTED_FROM_INSUFFICIENT_ACTIVE_BALANCE: 5 + +<<Enum>> +REJECTED_CODE_BASE +RuleEngineFlatten.sol + +TRANSFER_OK: 0 +TRANSFER_REJECTED_DEACTIVATED: 1 +TRANSFER_REJECTED_PAUSED: 2 +TRANSFER_REJECTED_FROM_FROZEN: 3 +TRANSFER_REJECTED_TO_FROZEN: 4 +TRANSFER_REJECTED_SPENDER_FROZEN: 5 +TRANSFER_REJECTED_FROM_INSUFFICIENT_ACTIVE_BALANCE: 6 13->12 - - + + 14 - -<<Interface>> -IAccessControl -RuleEngine.sol - -External: -     hasRole(role: bytes32, account: address): bool -     getRoleAdmin(role: bytes32): bytes32 -     grantRole(role: bytes32, account: address) -     revokeRole(role: bytes32, account: address) -     renounceRole(role: bytes32, callerConfirmation: address) -Public: -    <<event>> RoleAdminChanged(role: bytes32, previousAdminRole: bytes32, newAdminRole: bytes32) -    <<event>> RoleGranted(role: bytes32, account: address, sender: address) -    <<event>> RoleRevoked(role: bytes32, account: address, sender: address) + +<<Interface>> +IAccessControl +RuleEngineFlatten.sol + +External: +     hasRole(role: bytes32, account: address): bool +     getRoleAdmin(role: bytes32): bytes32 +     grantRole(role: bytes32, account: address) +     revokeRole(role: bytes32, account: address) +     renounceRole(role: bytes32, callerConfirmation: address) +Public: +    <<event>> RoleAdminChanged(role: bytes32, previousAdminRole: bytes32, newAdminRole: bytes32) +    <<event>> RoleGranted(role: bytes32, account: address, sender: address) +    <<event>> RoleRevoked(role: bytes32, account: address, sender: address) 15 - -<<Library>> -Comparators -RuleEngine.sol - -Internal: -    lt(a: uint256, b: uint256): bool -    gt(a: uint256, b: uint256): bool + +<<Library>> +Comparators +RuleEngineFlatten.sol + +Internal: +    lt(a: uint256, b: uint256): bool +    gt(a: uint256, b: uint256): bool 16 - -<<Abstract>> -Context -RuleEngine.sol - -Internal: -    _msgSender(): address -    _msgData(): bytes -    _contextSuffixLength(): uint256 + +<<Abstract>> +Context +RuleEngineFlatten.sol + +Internal: +    _msgSender(): address +    _msgData(): bytes +    _contextSuffixLength(): uint256 17 - -<<Library>> -Panic -RuleEngine.sol - -Internal: -   GENERIC: uint256 -   ASSERT: uint256 -   UNDER_OVERFLOW: uint256 -   DIVISION_BY_ZERO: uint256 -   ENUM_CONVERSION_ERROR: uint256 -   STORAGE_ENCODING_ERROR: uint256 -   EMPTY_ARRAY_POP: uint256 -   ARRAY_OUT_OF_BOUNDS: uint256 -   RESOURCE_ERROR: uint256 -   INVALID_INTERNAL_FUNCTION: uint256 - -Internal: -    panic(code: uint256) + +<<Library>> +Panic +RuleEngineFlatten.sol + +Internal: +   GENERIC: uint256 +   ASSERT: uint256 +   UNDER_OVERFLOW: uint256 +   DIVISION_BY_ZERO: uint256 +   ENUM_CONVERSION_ERROR: uint256 +   STORAGE_ENCODING_ERROR: uint256 +   EMPTY_ARRAY_POP: uint256 +   ARRAY_OUT_OF_BOUNDS: uint256 +   RESOURCE_ERROR: uint256 +   INVALID_INTERNAL_FUNCTION: uint256 + +Internal: +    panic(code: uint256) 18 - -<<Library>> -SlotDerivation -RuleEngine.sol - -Internal: -    erc7201Slot(namespace: string): (slot: bytes32) -    offset(slot: bytes32, pos: uint256): (result: bytes32) -    deriveArray(slot: bytes32): (result: bytes32) -    deriveMapping(slot: bytes32, key: address): (result: bytes32) -    deriveMapping(slot: bytes32, key: bool): (result: bytes32) -    deriveMapping(slot: bytes32, key: bytes32): (result: bytes32) -    deriveMapping(slot: bytes32, key: uint256): (result: bytes32) -    deriveMapping(slot: bytes32, key: int256): (result: bytes32) -    deriveMapping(slot: bytes32, key: string): (result: bytes32) -    deriveMapping(slot: bytes32, key: bytes): (result: bytes32) + +<<Library>> +SlotDerivation +RuleEngineFlatten.sol + +Internal: +    erc7201Slot(namespace: string): (slot: bytes32) +    offset(slot: bytes32, pos: uint256): (result: bytes32) +    deriveArray(slot: bytes32): (result: bytes32) +    deriveMapping(slot: bytes32, key: address): (result: bytes32) +    deriveMapping(slot: bytes32, key: bool): (result: bytes32) +    deriveMapping(slot: bytes32, key: bytes32): (result: bytes32) +    deriveMapping(slot: bytes32, key: uint256): (result: bytes32) +    deriveMapping(slot: bytes32, key: int256): (result: bytes32) +    deriveMapping(slot: bytes32, key: string): (result: bytes32) +    deriveMapping(slot: bytes32, key: bytes): (result: bytes32) 19 - -<<Library>> -StorageSlot -RuleEngine.sol - -Internal: -    getAddressSlot(slot: bytes32): (r: AddressSlot) -    getBooleanSlot(slot: bytes32): (r: BooleanSlot) -    getBytes32Slot(slot: bytes32): (r: Bytes32Slot) -    getUint256Slot(slot: bytes32): (r: Uint256Slot) -    getInt256Slot(slot: bytes32): (r: Int256Slot) -    getStringSlot(slot: bytes32): (r: StringSlot) -    getStringSlot(store: string): (r: StringSlot) -    getBytesSlot(slot: bytes32): (r: BytesSlot) -    getBytesSlot(store: bytes): (r: BytesSlot) + +<<Library>> +StorageSlot +RuleEngineFlatten.sol + +Internal: +    getAddressSlot(slot: bytes32): (r: AddressSlot) +    getBooleanSlot(slot: bytes32): (r: BooleanSlot) +    getBytes32Slot(slot: bytes32): (r: Bytes32Slot) +    getUint256Slot(slot: bytes32): (r: Uint256Slot) +    getInt256Slot(slot: bytes32): (r: Int256Slot) +    getStringSlot(slot: bytes32): (r: StringSlot) +    getStringSlot(store: string): (r: StringSlot) +    getBytesSlot(slot: bytes32): (r: BytesSlot) +    getBytesSlot(store: bytes): (r: BytesSlot) 20 - -<<Struct>> -AddressSlot -RuleEngine.sol - -value: address + +<<Struct>> +AddressSlot +RuleEngineFlatten.sol + +value: address 19->20 - - + + 21 - -<<Struct>> -BooleanSlot -RuleEngine.sol - -value: bool + +<<Struct>> +BooleanSlot +RuleEngineFlatten.sol + +value: bool 19->21 - - + + 22 - -<<Struct>> -Bytes32Slot -RuleEngine.sol - -value: bytes32 + +<<Struct>> +Bytes32Slot +RuleEngineFlatten.sol + +value: bytes32 19->22 - - + + 23 - -<<Struct>> -Uint256Slot -RuleEngine.sol - -value: uint256 + +<<Struct>> +Uint256Slot +RuleEngineFlatten.sol + +value: uint256 19->23 - - + + 24 - -<<Struct>> -Int256Slot -RuleEngine.sol - -value: int256 + +<<Struct>> +Int256Slot +RuleEngineFlatten.sol + +value: int256 19->24 - - + + 25 - -<<Struct>> -StringSlot -RuleEngine.sol - -value: string + +<<Struct>> +StringSlot +RuleEngineFlatten.sol + +value: string 19->25 - - + + 26 - -<<Struct>> -BytesSlot -RuleEngine.sol - -value: bytes + +<<Struct>> +BytesSlot +RuleEngineFlatten.sol + +value: bytes 19->26 - - + + 20->19 - - + + 21->19 - - + + 22->19 - - + + 23->19 - - + + 24->19 - - + + 25->19 - - + + 26->19 - - + + 27 - -<<Interface>> -IERC165 -RuleEngine.sol - -External: -     supportsInterface(interfaceId: bytes4): bool + +<<Interface>> +IERC165 +RuleEngineFlatten.sol + +External: +     supportsInterface(interfaceId: bytes4): bool 28 - -<<Library>> -SafeCast -RuleEngine.sol - -Internal: -    toUint248(value: uint256): uint248 -    toUint240(value: uint256): uint240 -    toUint232(value: uint256): uint232 -    toUint224(value: uint256): uint224 -    toUint216(value: uint256): uint216 -    toUint208(value: uint256): uint208 -    toUint200(value: uint256): uint200 -    toUint192(value: uint256): uint192 -    toUint184(value: uint256): uint184 -    toUint176(value: uint256): uint176 -    toUint168(value: uint256): uint168 -    toUint160(value: uint256): uint160 -    toUint152(value: uint256): uint152 -    toUint144(value: uint256): uint144 -    toUint136(value: uint256): uint136 -    toUint128(value: uint256): uint128 -    toUint120(value: uint256): uint120 -    toUint112(value: uint256): uint112 -    toUint104(value: uint256): uint104 -    toUint96(value: uint256): uint96 -    toUint88(value: uint256): uint88 -    toUint80(value: uint256): uint80 -    toUint72(value: uint256): uint72 -    toUint64(value: uint256): uint64 -    toUint56(value: uint256): uint56 -    toUint48(value: uint256): uint48 -    toUint40(value: uint256): uint40 -    toUint32(value: uint256): uint32 -    toUint24(value: uint256): uint24 -    toUint16(value: uint256): uint16 -    toUint8(value: uint256): uint8 -    toUint256(value: int256): uint256 -    toInt248(value: int256): (downcasted: int248) -    toInt240(value: int256): (downcasted: int240) -    toInt232(value: int256): (downcasted: int232) -    toInt224(value: int256): (downcasted: int224) -    toInt216(value: int256): (downcasted: int216) -    toInt208(value: int256): (downcasted: int208) -    toInt200(value: int256): (downcasted: int200) -    toInt192(value: int256): (downcasted: int192) -    toInt184(value: int256): (downcasted: int184) -    toInt176(value: int256): (downcasted: int176) -    toInt168(value: int256): (downcasted: int168) -    toInt160(value: int256): (downcasted: int160) -    toInt152(value: int256): (downcasted: int152) -    toInt144(value: int256): (downcasted: int144) -    toInt136(value: int256): (downcasted: int136) -    toInt128(value: int256): (downcasted: int128) -    toInt120(value: int256): (downcasted: int120) -    toInt112(value: int256): (downcasted: int112) -    toInt104(value: int256): (downcasted: int104) -    toInt96(value: int256): (downcasted: int96) -    toInt88(value: int256): (downcasted: int88) -    toInt80(value: int256): (downcasted: int80) -    toInt72(value: int256): (downcasted: int72) -    toInt64(value: int256): (downcasted: int64) -    toInt56(value: int256): (downcasted: int56) -    toInt48(value: int256): (downcasted: int48) -    toInt40(value: int256): (downcasted: int40) -    toInt32(value: int256): (downcasted: int32) -    toInt24(value: int256): (downcasted: int24) -    toInt16(value: int256): (downcasted: int16) -    toInt8(value: int256): (downcasted: int8) -    toInt256(value: uint256): int256 -    toUint(b: bool): (u: uint256) + +<<Library>> +SafeCast +RuleEngineFlatten.sol + +Internal: +    toUint248(value: uint256): uint248 +    toUint240(value: uint256): uint240 +    toUint232(value: uint256): uint232 +    toUint224(value: uint256): uint224 +    toUint216(value: uint256): uint216 +    toUint208(value: uint256): uint208 +    toUint200(value: uint256): uint200 +    toUint192(value: uint256): uint192 +    toUint184(value: uint256): uint184 +    toUint176(value: uint256): uint176 +    toUint168(value: uint256): uint168 +    toUint160(value: uint256): uint160 +    toUint152(value: uint256): uint152 +    toUint144(value: uint256): uint144 +    toUint136(value: uint256): uint136 +    toUint128(value: uint256): uint128 +    toUint120(value: uint256): uint120 +    toUint112(value: uint256): uint112 +    toUint104(value: uint256): uint104 +    toUint96(value: uint256): uint96 +    toUint88(value: uint256): uint88 +    toUint80(value: uint256): uint80 +    toUint72(value: uint256): uint72 +    toUint64(value: uint256): uint64 +    toUint56(value: uint256): uint56 +    toUint48(value: uint256): uint48 +    toUint40(value: uint256): uint40 +    toUint32(value: uint256): uint32 +    toUint24(value: uint256): uint24 +    toUint16(value: uint256): uint16 +    toUint8(value: uint256): uint8 +    toUint256(value: int256): uint256 +    toInt248(value: int256): (downcasted: int248) +    toInt240(value: int256): (downcasted: int240) +    toInt232(value: int256): (downcasted: int232) +    toInt224(value: int256): (downcasted: int224) +    toInt216(value: int256): (downcasted: int216) +    toInt208(value: int256): (downcasted: int208) +    toInt200(value: int256): (downcasted: int200) +    toInt192(value: int256): (downcasted: int192) +    toInt184(value: int256): (downcasted: int184) +    toInt176(value: int256): (downcasted: int176) +    toInt168(value: int256): (downcasted: int168) +    toInt160(value: int256): (downcasted: int160) +    toInt152(value: int256): (downcasted: int152) +    toInt144(value: int256): (downcasted: int144) +    toInt136(value: int256): (downcasted: int136) +    toInt128(value: int256): (downcasted: int128) +    toInt120(value: int256): (downcasted: int120) +    toInt112(value: int256): (downcasted: int112) +    toInt104(value: int256): (downcasted: int104) +    toInt96(value: int256): (downcasted: int96) +    toInt88(value: int256): (downcasted: int88) +    toInt80(value: int256): (downcasted: int80) +    toInt72(value: int256): (downcasted: int72) +    toInt64(value: int256): (downcasted: int64) +    toInt56(value: int256): (downcasted: int56) +    toInt48(value: int256): (downcasted: int48) +    toInt40(value: int256): (downcasted: int40) +    toInt32(value: int256): (downcasted: int32) +    toInt24(value: int256): (downcasted: int24) +    toInt16(value: int256): (downcasted: int16) +    toInt8(value: int256): (downcasted: int8) +    toInt256(value: uint256): int256 +    toUint(b: bool): (u: uint256) @@ -542,7 +543,7 @@ <<Abstract>> RuleEngineInvariantStorage -RuleEngine.sol +RuleEngineFlatten.sol @@ -550,7 +551,7 @@ <<Interface>> IERC7551Mint -RuleEngine.sol +RuleEngineFlatten.sol External:     mint(account: address, value: uint256, data: bytes) @@ -563,7 +564,7 @@ <<Interface>> IERC7551Burn -RuleEngine.sol +RuleEngineFlatten.sol External:     burn(account: address, amount: uint256, data: bytes) @@ -573,84 +574,84 @@ 32 - -<<Interface>> -IERC7551Pause -RuleEngine.sol - -External: -     paused(): bool -     pause() -     unpause() + +<<Interface>> +IERC7551Pause +RuleEngineFlatten.sol + +External: +     paused(): bool +     pause() +     unpause() 33 - -<<Interface>> -IERC7551ERC20EnforcementEvent -RuleEngine.sol - -Public: -    <<event>> Enforcement(enforcer: address, account: address, amount: uint256, data: bytes) + +<<Interface>> +IERC7551ERC20EnforcementEvent +RuleEngineFlatten.sol + +Public: +    <<event>> Enforcement(enforcer: address, account: address, amount: uint256, data: bytes) 34 - -<<Interface>> -IERC7551ERC20EnforcementTokenFrozenEvent -RuleEngine.sol - -Public: -    <<event>> TokensFrozen(account: address, value: uint256, data: bytes) -    <<event>> TokensUnfrozen(account: address, value: uint256, data: bytes) + +<<Interface>> +IERC7551ERC20EnforcementTokenFrozenEvent +RuleEngineFlatten.sol + +Public: +    <<event>> TokensFrozen(account: address, value: uint256, data: bytes) +    <<event>> TokensUnfrozen(account: address, value: uint256, data: bytes) 35 - -<<Interface>> -IERC7551ERC20Enforcement -RuleEngine.sol - -External: -     getActiveBalanceOf(account: address): (activeBalance_: uint256) -     getFrozenTokens(account: address): (frozenBalance_: uint256) -     freezePartialTokens(account: address, amount: uint256, data: bytes) -     unfreezePartialTokens(account: address, amount: uint256, data: bytes) -     forcedTransfer(account: address, to: address, value: uint256, data: bytes): (success_: bool) + +<<Interface>> +IERC7551ERC20Enforcement +RuleEngineFlatten.sol + +External: +     getActiveBalanceOf(account: address): (activeBalance_: uint256) +     getFrozenTokens(account: address): (frozenBalance_: uint256) +     freezePartialTokens(account: address, amount: uint256, data: bytes) +     unfreezePartialTokens(account: address, amount: uint256, data: bytes) +     forcedTransfer(account: address, to: address, value: uint256, data: bytes): (success_: bool) 36 - -<<Interface>> -IERC7551Compliance -RuleEngine.sol - -External: -     canTransferFrom(spender: address, from: address, to: address, value: uint256): bool + +<<Interface>> +IERC7551Compliance +RuleEngineFlatten.sol + +External: +     canTransferFrom(spender: address, from: address, to: address, value: uint256): bool 36->9 - - + + 37 - -<<Interface>> -IERC7551Document -RuleEngine.sol - -External: -     termsHash(): (hash_: bytes32) -     setTerms(_hash: bytes32, _uri: string) -     metaData(): (metadata_: string) -     setMetaData(metaData_: string) + +<<Interface>> +IERC7551Document +RuleEngineFlatten.sol + +External: +     termsHash(): (hash_: bytes32) +     setTerms(_hash: bytes32, _uri: string) +     metaData(): (metadata_: string) +     setMetaData(metaData_: string) @@ -658,7 +659,7 @@ <<Abstract>> ERC2771Context -RuleEngine.sol +RuleEngineFlatten.sol Private:   _trustedForwarder: address @@ -675,168 +676,168 @@ 38->16 - - + + 39 - -<<Abstract>> -ERC165 -RuleEngine.sol - -Public: -    supportsInterface(interfaceId: bytes4): bool + +<<Abstract>> +ERC165 +RuleEngineFlatten.sol + +Public: +    supportsInterface(interfaceId: bytes4): bool 39->27 - - + + 40 - -<<Interface>> -IERC3643Compliance -RuleEngine.sol - -External: -     bindToken(token: address) -     unbindToken(token: address) -     isTokenBound(token: address): bool -     getTokenBound(): address -     getTokenBounds(): address[] -     created(to: address, value: uint256) -     destroyed(from: address, value: uint256) -Public: -    <<event>> TokenBound(token: address) -    <<event>> TokenUnbound(token: address) + +<<Interface>> +IERC3643Compliance +RuleEngineFlatten.sol + +External: +     bindToken(token: address) +     unbindToken(token: address) +     isTokenBound(token: address): (isBound: bool) +     getTokenBound(): (token: address) +     getTokenBounds(): (tokens: address[]) +     created(to: address, value: uint256) +     destroyed(from: address, value: uint256) +Public: +    <<event>> TokenBound(token: address) +    <<event>> TokenUnbound(token: address) 40->9 - - + + 40->10 - - + + 41 - -<<Abstract>> -VersionModule -RuleEngine.sol - -Private: -   VERSION: string - -Public: -    version(): (version_: string) + +<<Abstract>> +VersionModule +RuleEngineFlatten.sol + +Private: +   VERSION: string + +Public: +    version(): (version_: string) 41->3 - - + + 42 - -<<Library>> -Math -RuleEngine.sol - -Private: -    _zeroBytes(byteArray: bytes): bool -Internal: -    add512(a: uint256, b: uint256): (high: uint256, low: uint256) -    mul512(a: uint256, b: uint256): (high: uint256, low: uint256) -    tryAdd(a: uint256, b: uint256): (success: bool, result: uint256) -    trySub(a: uint256, b: uint256): (success: bool, result: uint256) -    tryMul(a: uint256, b: uint256): (success: bool, result: uint256) -    tryDiv(a: uint256, b: uint256): (success: bool, result: uint256) -    tryMod(a: uint256, b: uint256): (success: bool, result: uint256) -    saturatingAdd(a: uint256, b: uint256): uint256 -    saturatingSub(a: uint256, b: uint256): uint256 -    saturatingMul(a: uint256, b: uint256): uint256 -    ternary(condition: bool, a: uint256, b: uint256): uint256 -    max(a: uint256, b: uint256): uint256 -    min(a: uint256, b: uint256): uint256 -    average(a: uint256, b: uint256): uint256 -    ceilDiv(a: uint256, b: uint256): uint256 -    mulDiv(x: uint256, y: uint256, denominator: uint256): (result: uint256) -    mulDiv(x: uint256, y: uint256, denominator: uint256, rounding: Rounding): uint256 -    mulShr(x: uint256, y: uint256, n: uint8): (result: uint256) -    mulShr(x: uint256, y: uint256, n: uint8, rounding: Rounding): uint256 -    invMod(a: uint256, n: uint256): uint256 -    invModPrime(a: uint256, p: uint256): uint256 -    modExp(b: uint256, e: uint256, m: uint256): uint256 -    tryModExp(b: uint256, e: uint256, m: uint256): (success: bool, result: uint256) -    modExp(b: bytes, e: bytes, m: bytes): bytes -    tryModExp(b: bytes, e: bytes, m: bytes): (success: bool, result: bytes) -    sqrt(a: uint256): uint256 -    sqrt(a: uint256, rounding: Rounding): uint256 -    log2(x: uint256): (r: uint256) -    log2(value: uint256, rounding: Rounding): uint256 -    log10(value: uint256): uint256 -    log10(value: uint256, rounding: Rounding): uint256 -    log256(x: uint256): (r: uint256) -    log256(value: uint256, rounding: Rounding): uint256 -    unsignedRoundsUp(rounding: Rounding): bool + +<<Library>> +Math +RuleEngineFlatten.sol + +Private: +    _zeroBytes(byteArray: bytes): bool +Internal: +    add512(a: uint256, b: uint256): (high: uint256, low: uint256) +    mul512(a: uint256, b: uint256): (high: uint256, low: uint256) +    tryAdd(a: uint256, b: uint256): (success: bool, result: uint256) +    trySub(a: uint256, b: uint256): (success: bool, result: uint256) +    tryMul(a: uint256, b: uint256): (success: bool, result: uint256) +    tryDiv(a: uint256, b: uint256): (success: bool, result: uint256) +    tryMod(a: uint256, b: uint256): (success: bool, result: uint256) +    saturatingAdd(a: uint256, b: uint256): uint256 +    saturatingSub(a: uint256, b: uint256): uint256 +    saturatingMul(a: uint256, b: uint256): uint256 +    ternary(condition: bool, a: uint256, b: uint256): uint256 +    max(a: uint256, b: uint256): uint256 +    min(a: uint256, b: uint256): uint256 +    average(a: uint256, b: uint256): uint256 +    ceilDiv(a: uint256, b: uint256): uint256 +    mulDiv(x: uint256, y: uint256, denominator: uint256): (result: uint256) +    mulDiv(x: uint256, y: uint256, denominator: uint256, rounding: Rounding): uint256 +    mulShr(x: uint256, y: uint256, n: uint8): (result: uint256) +    mulShr(x: uint256, y: uint256, n: uint8, rounding: Rounding): uint256 +    invMod(a: uint256, n: uint256): uint256 +    invModPrime(a: uint256, p: uint256): uint256 +    modExp(b: uint256, e: uint256, m: uint256): uint256 +    tryModExp(b: uint256, e: uint256, m: uint256): (success: bool, result: uint256) +    modExp(b: bytes, e: bytes, m: bytes): bytes +    tryModExp(b: bytes, e: bytes, m: bytes): (success: bool, result: bytes) +    sqrt(a: uint256): uint256 +    sqrt(a: uint256, rounding: Rounding): uint256 +    log2(x: uint256): (r: uint256) +    log2(value: uint256, rounding: Rounding): uint256 +    log10(value: uint256): uint256 +    log10(value: uint256, rounding: Rounding): uint256 +    log256(x: uint256): (r: uint256) +    log256(value: uint256, rounding: Rounding): uint256 +    unsignedRoundsUp(rounding: Rounding): bool 42->17 - - + + 42->28 - - + + 43 - -<<Enum>> -Rounding -RuleEngine.sol - -Floor: 0 -Ceil: 1 -Trunc: 2 -Expand: 3 + +<<Enum>> +Rounding +RuleEngineFlatten.sol + +Floor: 0 +Ceil: 1 +Trunc: 2 +Expand: 3 42->43 - - + + 43->42 - - + + 44 <<Abstract>> -MetaTxModuleStandalone -RuleEngine.sol +ERC2771ModuleStandalone +RuleEngineFlatten.sol Public:    constructor(trustedForwarder: address) @@ -850,454 +851,537 @@ 45 - -<<Interface>> -IRuleEngine -RuleEngine.sol - -External: -     transferred(spender: address, from: address, to: address, value: uint256) + +<<Interface>> +IRuleEngine +RuleEngineFlatten.sol + +External: +     transferred(spender: address, from: address, to: address, value: uint256) 45->10 - - + + 45->12 - - + + 45->36 - - + + 46 - -<<Abstract>> -AccessControl -RuleEngine.sol - -Private: -   _roles: mapping(bytes32=>RoleData) -Public: -   DEFAULT_ADMIN_ROLE: bytes32 - -Internal: -    _checkRole(role: bytes32) -    _checkRole(role: bytes32, account: address) -    _setRoleAdmin(role: bytes32, adminRole: bytes32) -    _grantRole(role: bytes32, account: address): bool -    _revokeRole(role: bytes32, account: address): bool -Public: -    <<modifier>> onlyRole(role: bytes32) -    supportsInterface(interfaceId: bytes4): bool -    hasRole(role: bytes32, account: address): bool -    getRoleAdmin(role: bytes32): bytes32 -    grantRole(role: bytes32, account: address) <<onlyRole>> -    revokeRole(role: bytes32, account: address) <<onlyRole>> -    renounceRole(role: bytes32, callerConfirmation: address) + +<<Abstract>> +AccessControl +RuleEngineFlatten.sol + +Private: +   _roles: mapping(bytes32=>RoleData) +Public: +   DEFAULT_ADMIN_ROLE: bytes32 + +Internal: +    _checkRole(role: bytes32) +    _checkRole(role: bytes32, account: address) +    _setRoleAdmin(role: bytes32, adminRole: bytes32) +    _grantRole(role: bytes32, account: address): bool +    _revokeRole(role: bytes32, account: address): bool +Public: +    <<modifier>> onlyRole(role: bytes32) +    supportsInterface(interfaceId: bytes4): bool +    hasRole(role: bytes32, account: address): bool +    getRoleAdmin(role: bytes32): bytes32 +    grantRole(role: bytes32, account: address) <<onlyRole>> +    revokeRole(role: bytes32, account: address) <<onlyRole>> +    renounceRole(role: bytes32, callerConfirmation: address) 46->14 - - + + 46->16 - - + + 46->39 - - + + 47 - -<<Struct>> -RoleData -RuleEngine.sol - -hasRole: mapping(address=>bool) -adminRole: bytes32 + +<<Struct>> +RoleData +RuleEngineFlatten.sol + +hasRole: mapping(address=>bool) +adminRole: bytes32 46->47 - - + + 47->46 - - + + 48 - -<<Interface>> -IRule -RuleEngine.sol - -External: -     canReturnTransferRestrictionCode(restrictionCode: uint8): bool + +<<Interface>> +IRule +RuleEngineFlatten.sol + +External: +     canReturnTransferRestrictionCode(restrictionCode: uint8): bool 48->45 - - + + 49 - -<<Interface>> -IRulesManagementModule -RuleEngine.sol - -External: -     setRules(rules_: IRule[]) -     rulesCount(): uint256 -     rule(ruleId: uint256): address -     rules(): address[] -     clearRules() -     addRule(rule_: IRule) -     removeRule(rule_: IRule) -     containsRule(rule_: IRule): bool + +<<Interface>> +IRulesManagementModule +RuleEngineFlatten.sol + +External: +     setRules(rules_: IRule[]) +     rulesCount(): (numberOfrules: uint256) +     rule(ruleId: uint256): (ruleAddress: address) +     rules(): (ruleAddresses: address[]) +     clearRules() +     addRule(rule_: IRule) +     removeRule(rule_: IRule) +     containsRule(rule_: IRule): (exists: bool) 49->48 - - + + 50 - -<<Abstract>> -RulesManagementModuleInvariantStorage -RuleEngine.sol - -Public: -   RULE_ENGINE_OPERATOR_ROLE: bytes32 - -Public: -    <<event>> AddRule(rule: IRule) -    <<event>> RemoveRule(rule: IRule) -    <<event>> ClearRules() + +<<Abstract>> +RulesManagementModuleInvariantStorage +RuleEngineFlatten.sol + +Public: +   RULES_MANAGEMENT_ROLE: bytes32 + +Public: +    <<event>> AddRule(rule: IRule) +    <<event>> RemoveRule(rule: IRule) +    <<event>> ClearRules() 50->48 - - + + 51 - -<<Library>> -Arrays -RuleEngine.sol - -Private: -    _quickSort(begin: uint256, end: uint256, comp: FunctionTypeName()) -    _begin(array: uint256[]): (ptr: uint256) -    _end(array: uint256[]): (ptr: uint256) -    _mload(ptr: uint256): (value: uint256) -    _swap(ptr1: uint256, ptr2: uint256) -    _castToUint256Array(input: address[]): (output: uint256[]) -    _castToUint256Array(input: bytes32[]): (output: uint256[]) -    _castToUint256Comp(input: FunctionTypeName()): (output: FunctionTypeName()) -    _castToUint256Comp(input: FunctionTypeName()): (output: FunctionTypeName()) -Internal: -    sort(array: uint256[], comp: FunctionTypeName()): uint256[] -    sort(array: uint256[]): uint256[] -    sort(array: address[], comp: FunctionTypeName()): address[] -    sort(array: address[]): address[] -    sort(array: bytes32[], comp: FunctionTypeName()): bytes32[] -    sort(array: bytes32[]): bytes32[] -    findUpperBound(array: uint256[], element: uint256): uint256 -    lowerBound(array: uint256[], element: uint256): uint256 -    upperBound(array: uint256[], element: uint256): uint256 -    lowerBoundMemory(array: uint256[], element: uint256): uint256 -    upperBoundMemory(array: uint256[], element: uint256): uint256 -    unsafeAccess(arr: address[], pos: uint256): StorageSlot.AddressSlot -    unsafeAccess(arr: bytes32[], pos: uint256): StorageSlot.Bytes32Slot -    unsafeAccess(arr: uint256[], pos: uint256): StorageSlot.Uint256Slot -    unsafeMemoryAccess(arr: address[], pos: uint256): (res: address) -    unsafeMemoryAccess(arr: bytes32[], pos: uint256): (res: bytes32) -    unsafeMemoryAccess(arr: uint256[], pos: uint256): (res: uint256) -    unsafeSetLength(array: address[], len: uint256) -    unsafeSetLength(array: bytes32[], len: uint256) -    unsafeSetLength(array: uint256[], len: uint256) + +<<Library>> +Arrays +RuleEngineFlatten.sol + +Private: +    _quickSort(begin: uint256, end: uint256, comp: FunctionTypeName()) +    _begin(array: uint256[]): (ptr: uint256) +    _end(array: uint256[]): (ptr: uint256) +    _mload(ptr: uint256): (value: uint256) +    _swap(ptr1: uint256, ptr2: uint256) +    _castToUint256Array(input: address[]): (output: uint256[]) +    _castToUint256Array(input: bytes32[]): (output: uint256[]) +    _castToUint256Comp(input: FunctionTypeName()): (output: FunctionTypeName()) +    _castToUint256Comp(input: FunctionTypeName()): (output: FunctionTypeName()) +Internal: +    sort(array: uint256[], comp: FunctionTypeName()): uint256[] +    sort(array: uint256[]): uint256[] +    sort(array: address[], comp: FunctionTypeName()): address[] +    sort(array: address[]): address[] +    sort(array: bytes32[], comp: FunctionTypeName()): bytes32[] +    sort(array: bytes32[]): bytes32[] +    findUpperBound(array: uint256[], element: uint256): uint256 +    lowerBound(array: uint256[], element: uint256): uint256 +    upperBound(array: uint256[], element: uint256): uint256 +    lowerBoundMemory(array: uint256[], element: uint256): uint256 +    upperBoundMemory(array: uint256[], element: uint256): uint256 +    unsafeAccess(arr: address[], pos: uint256): StorageSlot.AddressSlot +    unsafeAccess(arr: bytes32[], pos: uint256): StorageSlot.Bytes32Slot +    unsafeAccess(arr: uint256[], pos: uint256): StorageSlot.Uint256Slot +    unsafeAccess(arr: bytes[], pos: uint256): StorageSlot.BytesSlot +    unsafeAccess(arr: string[], pos: uint256): StorageSlot.StringSlot +    unsafeMemoryAccess(arr: address[], pos: uint256): (res: address) +    unsafeMemoryAccess(arr: bytes32[], pos: uint256): (res: bytes32) +    unsafeMemoryAccess(arr: uint256[], pos: uint256): (res: uint256) +    unsafeMemoryAccess(arr: bytes[], pos: uint256): (res: bytes) +    unsafeMemoryAccess(arr: string[], pos: uint256): (res: string) +    unsafeSetLength(array: address[], len: uint256) +    unsafeSetLength(array: bytes32[], len: uint256) +    unsafeSetLength(array: uint256[], len: uint256) +    unsafeSetLength(array: bytes[], len: uint256) +    unsafeSetLength(array: string[], len: uint256) 51->15 - - + + 51->18 - - + + 51->19 - - + + 51->20 - - + + 51->22 - - + + 51->23 - - + + + + + +51->25 + + + + + +51->26 + + 51->42 - - + + 52 - -<<Library>> -EnumerableSet -RuleEngine.sol - -Private: -    _add(set: Set, value: bytes32): bool -    _remove(set: Set, value: bytes32): bool -    _clear(set: Set) -    _contains(set: Set, value: bytes32): bool -    _length(set: Set): uint256 -    _at(set: Set, index: uint256): bytes32 -    _values(set: Set): bytes32[] -Internal: -    add(set: Bytes32Set, value: bytes32): bool -    remove(set: Bytes32Set, value: bytes32): bool -    clear(set: Bytes32Set) -    contains(set: Bytes32Set, value: bytes32): bool -    length(set: Bytes32Set): uint256 -    at(set: Bytes32Set, index: uint256): bytes32 -    values(set: Bytes32Set): bytes32[] -    add(set: AddressSet, value: address): bool -    remove(set: AddressSet, value: address): bool -    clear(set: AddressSet) -    contains(set: AddressSet, value: address): bool -    length(set: AddressSet): uint256 -    at(set: AddressSet, index: uint256): address -    values(set: AddressSet): address[] -    add(set: UintSet, value: uint256): bool -    remove(set: UintSet, value: uint256): bool -    clear(set: UintSet) -    contains(set: UintSet, value: uint256): bool -    length(set: UintSet): uint256 -    at(set: UintSet, index: uint256): uint256 -    values(set: UintSet): uint256[] + +<<Library>> +EnumerableSet +RuleEngineFlatten.sol + +Private: +    _add(set: Set, value: bytes32): bool +    _remove(set: Set, value: bytes32): bool +    _clear(set: Set) +    _contains(set: Set, value: bytes32): bool +    _length(set: Set): uint256 +    _at(set: Set, index: uint256): bytes32 +    _values(set: Set): bytes32[] +    _values(set: Set, start: uint256, end: uint256): bytes32[] +Internal: +    add(set: Bytes32Set, value: bytes32): bool +    remove(set: Bytes32Set, value: bytes32): bool +    clear(set: Bytes32Set) +    contains(set: Bytes32Set, value: bytes32): bool +    length(set: Bytes32Set): uint256 +    at(set: Bytes32Set, index: uint256): bytes32 +    values(set: Bytes32Set): bytes32[] +    values(set: Bytes32Set, start: uint256, end: uint256): bytes32[] +    add(set: AddressSet, value: address): bool +    remove(set: AddressSet, value: address): bool +    clear(set: AddressSet) +    contains(set: AddressSet, value: address): bool +    length(set: AddressSet): uint256 +    at(set: AddressSet, index: uint256): address +    values(set: AddressSet): address[] +    values(set: AddressSet, start: uint256, end: uint256): address[] +    add(set: UintSet, value: uint256): bool +    remove(set: UintSet, value: uint256): bool +    clear(set: UintSet) +    contains(set: UintSet, value: uint256): bool +    length(set: UintSet): uint256 +    at(set: UintSet, index: uint256): uint256 +    values(set: UintSet): uint256[] +    values(set: UintSet, start: uint256, end: uint256): uint256[] +    add(set: StringSet, value: string): bool +    remove(set: StringSet, value: string): bool +    clear(set: StringSet) +    contains(set: StringSet, value: string): bool +    length(set: StringSet): uint256 +    at(set: StringSet, index: uint256): string +    values(set: StringSet): string[] +    values(set: StringSet, start: uint256, end: uint256): string[] +    add(set: BytesSet, value: bytes): bool +    remove(set: BytesSet, value: bytes): bool +    clear(set: BytesSet) +    contains(set: BytesSet, value: bytes): bool +    length(set: BytesSet): uint256 +    at(set: BytesSet, index: uint256): bytes +    values(set: BytesSet): bytes[] +    values(set: BytesSet, start: uint256, end: uint256): bytes[] - + 52->51 - - + + 53 - -<<Struct>> -Set -RuleEngine.sol - -_values: bytes32[] -_positions: mapping(bytes32=>uint256) + +<<Struct>> +Set +RuleEngineFlatten.sol + +_values: bytes32[] +_positions: mapping(bytes32=>uint256) - + 52->53 - - + + 54 - -<<Struct>> -Bytes32Set -RuleEngine.sol - -_inner: Set + +<<Struct>> +Bytes32Set +RuleEngineFlatten.sol + +_inner: Set - + 52->54 - - + + 55 - -<<Struct>> -AddressSet -RuleEngine.sol - -_inner: Set + +<<Struct>> +AddressSet +RuleEngineFlatten.sol + +_inner: Set - + 52->55 - - + + 56 - -<<Struct>> -UintSet -RuleEngine.sol - -_inner: Set + +<<Struct>> +UintSet +RuleEngineFlatten.sol + +_inner: Set - + 52->56 - - + + + + + +57 + +<<Struct>> +StringSet +RuleEngineFlatten.sol + +_values: string[] +_positions: mapping(string=>uint256) + + + +52->57 + + + + + +58 + +<<Struct>> +BytesSet +RuleEngineFlatten.sol + +_values: bytes[] +_positions: mapping(bytes=>uint256) + + + +52->58 + + - + 53->52 - - + + - + 54->52 - - + + - + 54->53 - - + + - + 55->52 - - + + - + 55->53 - - + + - + 56->52 - - + + - + 56->53 - - - - - -57 - -<<Abstract>> -ERC3643ComplianceModule -RuleEngine.sol - -Private: -   _boundTokens: EnumerableSet.AddressSet -Public: -   COMPLIANCE_MANAGER_ROLE: bytes32 - -Internal: -    _unbindToken(token: address) -    _bindToken(token: address) -External: -    getTokenBound(): address -    getTokenBounds(): address[] -Public: -    <<modifier>> onlyBoundToken() -    bindToken(token: address) <<onlyRole>> -    unbindToken(token: address) <<onlyRole>> -    isTokenBound(token: address): bool - - - -57->40 - - - - - -57->46 - - + + - + 57->52 - - + + - - -57->55 - - + + +58->52 + + - - -58 + + +59 + +<<Abstract>> +ERC3643ComplianceModule +RuleEngineFlatten.sol + +Private: +   _boundTokens: EnumerableSet.AddressSet +Public: +   COMPLIANCE_MANAGER_ROLE: bytes32 + +Internal: +    _unbindToken(token: address) +    _bindToken(token: address) +Public: +    <<modifier>> onlyBoundToken() +    bindToken(token: address) <<onlyRole>> +    unbindToken(token: address) <<onlyRole>> +    isTokenBound(token: address): bool +    getTokenBound(): address +    getTokenBounds(): address[] + + + +59->40 + + + + + +59->46 + + + + + +59->52 + + + + + +59->55 + + + + + +60 <<Abstract>> RulesManagementModule -RuleEngine.sol +RuleEngineFlatten.sol Internal:   _rules: EnumerableSet.AddressSet @@ -1318,49 +1402,49 @@    rule(ruleId: uint256): address    rules(): address[] - - -58->46 - - + + +60->46 + + - - -58->48 - - + + +60->48 + + - - -58->49 - - + + +60->49 + + - - -58->50 - - + + +60->50 + + - - -58->52 - - + + +60->52 + + - - -58->55 - - + + +60->55 + + - - -59 + + +61 <<Abstract>> RuleEngineBase -RuleEngine.sol +RuleEngineFlatten.sol Public:    transferred(spender: address, from: address, to: address, value: uint256) <<onlyBoundToken>> @@ -1369,65 +1453,65 @@    destroyed(from: address, value: uint256) <<onlyBoundToken>>    detectTransferRestriction(from: address, to: address, value: uint256): uint8    detectTransferRestrictionFrom(spender: address, from: address, to: address, value: uint256): uint8 -    canTransfer(from: address, to: address, value: uint256): bool -    canTransferFrom(spender: address, from: address, to: address, value: uint256): bool -    messageForTransferRestriction(restrictionCode: uint8): string +    messageForTransferRestriction(restrictionCode: uint8): string +    canTransfer(from: address, to: address, value: uint256): bool +    canTransferFrom(spender: address, from: address, to: address, value: uint256): bool    hasRole(role: bytes32, account: address): bool - - -59->13 - - + + +61->13 + + - - -59->29 + + +61->29 - - -59->41 - - + + +61->41 + + - - -59->45 - - + + +61->45 + + + + + +61->46 + + + + + +61->48 + + + + + +61->59 + + - + -59->46 - - - - - -59->48 - - - - - -59->57 - - - - - -59->58 +61->60 - - -60 + + +62 RuleEngine -RuleEngine.sol +RuleEngineFlatten.sol Internal:    _msgSender(): (sender: address) @@ -1436,21 +1520,21 @@ Public:    constructor(admin: address, forwarderIrrevocable: address, tokenContract: address) - - -60->38 + + +62->38 - - -60->44 + + +62->44 - - -60->59 + + +62->61 diff --git a/doc/schema/vscode-uml/ERC2771ModuleUML.png b/doc/schema/vscode-uml/ERC2771ModuleUML.png new file mode 100644 index 0000000000000000000000000000000000000000..6b488ee4d1eca4c17735a59cf8f9a2076f1899c4 GIT binary patch literal 31848 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 O?A6>)El@vp;r{@0zq_XZ literal 0 HcmV?d00001 diff --git a/doc/schema/vscode-uml/RuleEngineUML.png b/doc/schema/vscode-uml/RuleEngineUML.png deleted file mode 100644 index e32c83d9337f7f6b1c39f080dfb8fd44dd57e272..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 66509 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 diff --git a/doc/schema/vscode-uml/RuleEngineUML.png.png b/doc/schema/vscode-uml/RuleEngineUML.png.png new file mode 100644 index 0000000000000000000000000000000000000000..d1088bf71c8ef08e05998788d03367fb1fad2eab GIT binary patch literal 66872 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 literal 0 HcmV?d00001 diff --git a/lcov.info b/lcov.info deleted file mode 100644 index 01edb04..0000000 --- a/lcov.info +++ /dev/null @@ -1,262 +0,0 @@ -TN: -SF:src/RuleEngine.sol -DA:22,86 -FN:22,RuleEngine.constructor -FNDA:86,RuleEngine.constructor -DA:27,86 -BRDA:27,0,0,1 -DA:28,1 -DA:30,85 -BRDA:30,1,0,15 -DA:31,15 -DA:33,85 -DA:43,286 -FN:43,RuleEngine._msgSender -FNDA:286,RuleEngine._msgSender -DA:50,286 -DA:56,0 -FN:56,RuleEngine._msgData -FNDA:0,RuleEngine._msgData -DA:63,0 -DA:69,286 -FN:69,RuleEngine._contextSuffixLength -FNDA:286,RuleEngine._contextSuffixLength -DA:76,286 -FNF:4 -FNH:3 -LF:12 -LH:10 -BRF:2 -BRH:2 -end_of_record -TN: -SF:src/RuleEngineBase.sol -DA:31,3 -FN:31,RuleEngineBase.transferred -FNDA:3,RuleEngineBase.transferred -DA:38,2 -DA:43,9 -FN:43,RuleEngineBase.transferred -FNDA:9,RuleEngineBase.transferred -DA:48,8 -DA:52,2 -FN:52,RuleEngineBase.created -FNDA:2,RuleEngineBase.created -DA:53,1 -DA:57,2 -FN:57,RuleEngineBase.destroyed -FNDA:2,RuleEngineBase.destroyed -DA:58,1 -DA:71,21 -FN:71,RuleEngineBase.detectTransferRestriction -FNDA:21,RuleEngineBase.detectTransferRestriction -DA:79,40 -DA:80,40 -DA:81,40 -DA:83,40 -BRDA:83,0,0,29 -DA:84,29 -DA:88,11 -DA:91,11 -FN:91,RuleEngineBase.detectTransferRestrictionFrom -FNDA:11,RuleEngineBase.detectTransferRestrictionFrom -DA:98,25 -DA:99,25 -DA:100,25 -DA:102,25 -BRDA:102,1,0,19 -DA:103,19 -DA:107,6 -DA:117,19 -FN:117,RuleEngineBase.canTransfer -FNDA:19,RuleEngineBase.canTransfer -DA:122,19 -DA:123,19 -DA:134,14 -FN:134,RuleEngineBase.canTransferFrom -FNDA:14,RuleEngineBase.canTransferFrom -DA:140,14 -DA:141,14 -DA:150,13 -FN:150,RuleEngineBase.messageForTransferRestriction -FNDA:13,RuleEngineBase.messageForTransferRestriction -DA:154,13 -DA:155,13 -DA:157,10 -DA:159,8 -BRDA:159,2,0,8 -DA:160,8 -DA:161,8 -DA:165,5 -DA:172,94 -FN:172,RuleEngineBase.hasRole -FNDA:94,RuleEngineBase.hasRole -DA:177,279 -BRDA:177,3,0,158 -BRDA:177,3,1,121 -DA:178,158 -DA:180,121 -FNF:10 -FNH:10 -LF:40 -LH:40 -BRF:5 -BRH:5 -end_of_record -TN: -SF:src/modules/ERC3643ComplianceModule.sol -DA:26,3 -FN:26,ERC3643ComplianceModule.onlyBoundToken -FNDA:3,ERC3643ComplianceModule.onlyBoundToken -DA:27,3 -BRDA:27,0,0,1 -DA:28,1 -DA:39,8 -FN:39,ERC3643ComplianceModule.bindToken -FNDA:8,ERC3643ComplianceModule.bindToken -DA:40,8 -DA:44,3 -FN:44,ERC3643ComplianceModule.unbindToken -FNDA:3,ERC3643ComplianceModule.unbindToken -DA:45,3 -DA:49,6 -FN:49,ERC3643ComplianceModule.isTokenBound -FNDA:6,ERC3643ComplianceModule.isTokenBound -DA:50,6 -DA:54,2 -FN:54,ERC3643ComplianceModule.getTokenBound -FNDA:2,ERC3643ComplianceModule.getTokenBound -DA:55,2 -BRDA:55,1,0,1 -BRDA:55,1,1,1 -DA:56,1 -DA:58,1 -DA:63,2 -FN:63,ERC3643ComplianceModule.getTokenBounds -FNDA:2,ERC3643ComplianceModule.getTokenBounds -DA:64,2 -DA:73,3 -FN:73,ERC3643ComplianceModule._unbindToken -FNDA:3,ERC3643ComplianceModule._unbindToken -DA:74,3 -BRDA:74,2,0,- -BRDA:74,2,1,3 -DA:75,3 -DA:77,3 -DA:79,23 -FN:79,ERC3643ComplianceModule._bindToken -FNDA:23,ERC3643ComplianceModule._bindToken -DA:80,23 -BRDA:80,3,0,- -BRDA:80,3,1,23 -DA:81,23 -BRDA:81,4,0,- -BRDA:81,4,1,23 -DA:82,23 -DA:84,23 -FNF:8 -FNH:8 -LF:24 -LH:24 -BRF:9 -BRH:6 -end_of_record -TN: -SF:src/modules/RulesManagementModule.sol -DA:36,34 -FN:36,RulesManagementModule.setRules -FNDA:34,RulesManagementModule.setRules -DA:39,33 -BRDA:39,0,0,2 -DA:40,2 -DA:42,31 -BRDA:42,1,0,29 -DA:43,29 -DA:45,31 -DA:46,49 -DA:47,45 -DA:48,45 -DA:56,10 -FN:56,RulesManagementModule.clearRules -FNDA:10,RulesManagementModule.clearRules -DA:57,9 -DA:63,95 -FN:63,RulesManagementModule.addRule -FNDA:95,RulesManagementModule.addRule -DA:66,94 -DA:67,90 -DA:68,90 -DA:74,11 -FN:74,RulesManagementModule.removeRule -FNDA:11,RulesManagementModule.removeRule -DA:77,10 -BRDA:77,2,0,2 -BRDA:77,2,1,8 -DA:78,8 -DA:86,115 -FN:86,RulesManagementModule.rulesCount -FNDA:115,RulesManagementModule.rulesCount -DA:87,193 -DA:93,35 -FN:93,RulesManagementModule.containsRule -FNDA:35,RulesManagementModule.containsRule -DA:94,35 -DA:101,2 -FN:101,RulesManagementModule.rule -FNDA:2,RulesManagementModule.rule -DA:104,85 -DA:110,10 -FN:110,RulesManagementModule.rules -FNDA:10,RulesManagementModule.rules -DA:117,10 -DA:127,38 -FN:127,RulesManagementModule._clearRules -FNDA:38,RulesManagementModule._clearRules -DA:128,38 -DA:129,38 -DA:139,8 -FN:139,RulesManagementModule._removeRule -FNDA:8,RulesManagementModule._removeRule -DA:140,8 -DA:141,8 -DA:147,143 -FN:147,RulesManagementModule._checkRule -FNDA:143,RulesManagementModule._checkRule -DA:148,143 -BRDA:148,3,0,4 -DA:149,4 -DA:151,139 -BRDA:151,4,0,4 -DA:152,4 -DA:165,10 -FN:165,RulesManagementModule._transferred -FNDA:10,RulesManagementModule._transferred -DA:170,10 -DA:171,10 -DA:172,7 -DA:187,2 -FN:187,RulesManagementModule._transferred -FNDA:2,RulesManagementModule._transferred -DA:193,2 -DA:194,2 -DA:195,2 -FNF:13 -FNH:13 -LF:45 -LH:45 -BRF:6 -BRH:6 -end_of_record -TN: -SF:src/modules/VersionModule.sol -DA:21,1 -FN:21,VersionModule.version -FNDA:1,VersionModule.version -DA:22,1 -FNF:1 -FNH:1 -LF:2 -LH:2 -BRF:0 -BRH:0 -end_of_record diff --git a/package.json b/package.json index b76074f..0fd2a8c 100644 --- a/package.json +++ b/package.json @@ -10,8 +10,8 @@ "uml": "npx sol2uml class src", "uml:ruleEngine": "npx sol2uml src contracts -b RuleEngine", "uml:test": "npx sol2uml class test", - "surya:report": "npx surya mdreport surya_report_ruleEngine.md src/RuleEngine.sol && npx surya mdreport surya_report_ruleWhitelist.md src/RuleWhitelist.sol", - "surya:graph": "npx surya graph src/rules/operation/RuleConditionalTransfer.sol | dot -Tpng > surya_graph_conditionalTransfer.png && npx surya graph src/rules/validation/RuleBlacklist.sol| dot -Tpng > surya_graph_blacklist.png && npx surya graph src/rules/validation/RuleWhitelist.sol | dot -Tpng > surya_graph_Whitelist.png && npx surya graph src/RuleEngine.sol | dot -Tpng > surya_graph_RuleEngine.png && npx surya graph src/rules/validation/RuleSanctionList.sol | dot -Tpng > surya_graph_SanctionList.png", + "surya:report": "npx surya mdreport surya_report_ruleEngine.md src/RuleEngine.sol", + "surya:graph": "npx surya graph src/RuleEngine.sol | dot -Tpng > surya_graph_RuleEngine.png", "docgen": "npx hardhat docgen" }, "devDependencies": { diff --git a/src/RuleEngine.sol b/src/RuleEngine.sol index e35bcdf..004c881 100644 --- a/src/RuleEngine.sol +++ b/src/RuleEngine.sol @@ -5,14 +5,14 @@ pragma solidity ^0.8.20; /* ==== OpenZeppelin === */ import {Context} from "OZ/utils/Context.sol"; /* ==== Modules === */ -import {MetaTxModuleStandalone, ERC2771Context} from "./modules/MetaTxModuleStandalone.sol"; +import {ERC2771ModuleStandalone, ERC2771Context} from "./modules/ERC2771ModuleStandalone.sol"; /* ==== Base contract === */ import {RuleEngineBase} from "./RuleEngineBase.sol"; /** * @title Implementation of a ruleEngine as defined by the CMTAT */ contract RuleEngine is - MetaTxModuleStandalone, + ERC2771ModuleStandalone, RuleEngineBase { /** @@ -23,7 +23,7 @@ contract RuleEngine is address admin, address forwarderIrrevocable, address tokenContract - ) MetaTxModuleStandalone(forwarderIrrevocable) { + ) ERC2771ModuleStandalone(forwarderIrrevocable) { if (admin == address(0)) { revert RuleEngine_AdminWithAddressZeroNotAllowed(); } diff --git a/src/interfaces/IERC3643Compliance.sol b/src/interfaces/IERC3643Compliance.sol index 09caadc..e2898eb 100644 --- a/src/interfaces/IERC3643Compliance.sol +++ b/src/interfaces/IERC3643Compliance.sol @@ -24,18 +24,24 @@ interface IERC3643Compliance is IERC3643ComplianceRead, IERC3643IComplianceContr * @dev The compliance contract may restrict operations on the bound token * according to the compliance logic. * Reverts if the token is already bound. + * Complexity: O(1). * @param token The address of the token to bind. */ function bindToken(address token) external; /** * @notice Removes the association of a token contract from this compliance contract. * @dev Reverts if the token is not currently bound. + * Complexity: O(1). * @param token The address of the token to unbind. */ function unbindToken(address token) external; /** * @notice Checks whether a token is currently bound to this compliance contract. + * @dev + * Complexity: O(1). + * Note that there are no guarantees on the ordering of values inside the array, + * and it may change when more values are added or removed. * @param token The token address to verify. * @return isBound True if the token is bound, false otherwise. */ @@ -51,6 +57,8 @@ interface IERC3643Compliance is IERC3643ComplianceRead, IERC3643IComplianceContr * @notice Returns all tokens currently bound to this compliance contract. * @dev This is a view-only function and does not modify state. * This function is not part of the original ERC-3643 specification + * This operation will copy the entire storage to memory, which can be quite expensive. + * This is designed to mostly be used by view accessors that are queried without any gas fees. * @return tokens An array of addresses of bound token contracts. */ function getTokenBounds() external view returns (address[] memory tokens); diff --git a/src/interfaces/IRulesManagementModule.sol b/src/interfaces/IRulesManagementModule.sol index c76c1ff..55e8c86 100644 --- a/src/interfaces/IRulesManagementModule.sol +++ b/src/interfaces/IRulesManagementModule.sol @@ -12,12 +12,14 @@ interface IRulesManagementModule { * Rules should be deployed contracts that implement the expected interface. * @param rules_ The array of addresses representing the new rules to be set. * @dev Revert if one rule is a zero address or if the rule is already present + * This function calls _clearRules if at least one rule is still configured */ function setRules(IRule[] calldata rules_) external; /** * @notice Returns the total number of currently configured rules. * @dev Equivalent to the length of the internal rules array. + * Complexity: O(1) * @return numberOfrules The number of active rules. */ function rulesCount() external view returns (uint256 numberOfrules); @@ -25,14 +27,19 @@ interface IRulesManagementModule { /** * @notice Retrieves the rule address at a specific index. * @dev Reverts if `ruleId` is out of bounds. + * Complexity: O(1). + * Note that there are no guarantees on the ordering of values inside the array, + * and it may change when more values are added or removed. * @param ruleId The index of the desired rule in the array. - * @return ruleAddress The address of the corresponding IRule contract. + * @return ruleAddress The address of the corresponding IRule contract, return the `zero address` is out of bounds. */ function rule(uint256 ruleId) external view returns (address ruleAddress); /** * @notice Returns the full list of currently configured rules. * @dev This is a view-only function that does not modify state. + * This operation will copy the entire storage to memory, which can be quite expensive. + * This is designed to mostly be used by view accessors that are queried without any gas fees. * @return ruleAddresses An array of all active rule contract addresses. */ function rules() external view returns (address[] memory ruleAddresses); @@ -41,12 +48,16 @@ interface IRulesManagementModule { /** * @notice Removes all configured rules. * @dev After calling this function, no rules will remain set. + * Developers should keep in mind that this function has an unbounded cost + * and using it may render the function uncallable if the set grows to the point + * where clearing it consumes too much gas to fit in a block. */ function clearRules() external; /** * @notice Adds a new rule to the current rule set. * @dev Reverts if the rule address is zero or already exists in the set. + * Complexity: O(1). * @param rule_ The IRule contract to add. */ function addRule( @@ -58,6 +69,7 @@ interface IRulesManagementModule { /** * @notice Removes a specific rule from the current rule set. * @dev Reverts if the provided rule is not found or does not match the stored rule at its index. + * Complexity: O(1). * @param rule_ The IRule contract to remove. */ function removeRule( @@ -67,6 +79,7 @@ interface IRulesManagementModule { /** * @notice Checks whether a specific rule is currently configured. * @param rule_ The IRule contract to check for membership. + * @dev Complexity: O(1). * @return exists True if the rule is present, false otherwise. */ function containsRule(IRule rule_) external returns (bool exists); diff --git a/src/mocks/rules/validation/abstract/RuleAddressList/RuleAddressList.sol b/src/mocks/rules/validation/abstract/RuleAddressList/RuleAddressList.sol index 2b5a6e2..85f23d9 100644 --- a/src/mocks/rules/validation/abstract/RuleAddressList/RuleAddressList.sol +++ b/src/mocks/rules/validation/abstract/RuleAddressList/RuleAddressList.sol @@ -3,7 +3,7 @@ pragma solidity ^0.8.20; import "OZ/access/AccessControl.sol"; -import "../../../../../modules/MetaTxModuleStandalone.sol"; +import "../../../../../modules/ERC2771ModuleStandalone.sol"; import "./RuleAddressListInternal.sol"; import "./invariantStorage/RuleAddressListInvariantStorage.sol"; @@ -13,7 +13,7 @@ import "./invariantStorage/RuleAddressListInvariantStorage.sol"; abstract contract RuleAddressList is AccessControl, - MetaTxModuleStandalone, + ERC2771ModuleStandalone, RuleAddressListInternal, RuleAddressListInvariantStorage { @@ -27,7 +27,7 @@ abstract contract RuleAddressList is constructor( address admin, address forwarderIrrevocable - ) MetaTxModuleStandalone(forwarderIrrevocable) { + ) ERC2771ModuleStandalone(forwarderIrrevocable) { if (admin == address(0)) { revert RuleAddressList_AdminWithAddressZeroNotAllowed(); } @@ -139,7 +139,7 @@ abstract contract RuleAddressList is //////////////////////////////////////////////////////////////*/ /** - * @dev This surcharge is not necessary if you do not use the MetaTxModule + * @dev This surcharge is not necessary if you do not use the ERC2771Module */ function _msgSender() internal @@ -151,7 +151,7 @@ abstract contract RuleAddressList is } /** - * @dev This surcharge is not necessary if you do not use the MetaTxModule + * @dev This surcharge is not necessary if you do not use the ERC2771Module */ function _msgData() internal @@ -163,7 +163,7 @@ abstract contract RuleAddressList is } /** - * @dev This surcharge is not necessary if you do not use the MetaTxModule + * @dev This surcharge is not necessary if you do not use the ERC2771Module */ function _contextSuffixLength() internal diff --git a/src/modules/MetaTxModuleStandalone.sol b/src/modules/ERC2771ModuleStandalone.sol similarity index 83% rename from src/modules/MetaTxModuleStandalone.sol rename to src/modules/ERC2771ModuleStandalone.sol index 4dca9a3..f256909 100644 --- a/src/modules/MetaTxModuleStandalone.sol +++ b/src/modules/ERC2771ModuleStandalone.sol @@ -8,7 +8,7 @@ import {ERC2771Context} from "OZ/metatx/ERC2771Context.sol"; /** * @dev Meta transaction (gasless) module. */ -abstract contract MetaTxModuleStandalone is ERC2771Context { +abstract contract ERC2771ModuleStandalone is ERC2771Context { constructor(address trustedForwarder) ERC2771Context(trustedForwarder) { // Nothing to do } diff --git a/src/modules/ERC3643ComplianceModule.sol b/src/modules/ERC3643ComplianceModule.sol index 9ac2abd..51e6730 100644 --- a/src/modules/ERC3643ComplianceModule.sol +++ b/src/modules/ERC3643ComplianceModule.sol @@ -47,13 +47,15 @@ abstract contract ERC3643ComplianceModule is IERC3643Compliance, AccessControl { } /// @inheritdoc IERC3643Compliance - function isTokenBound(address token) public view override returns (bool) { + function isTokenBound(address token) public view virtual override returns (bool) { return _boundTokens.contains(token); } /// @inheritdoc IERC3643Compliance - function getTokenBound() public view override returns (address) { + function getTokenBound() public view virtual override returns (address) { if(_boundTokens.length() > 0){ + // Note that there are no guarantees on the ordering of values inside the array, + // and it may change when more values are added or removed. return _boundTokens.at(0); } else { return address(0); diff --git a/src/modules/RulesManagementModule.sol b/src/modules/RulesManagementModule.sol index 53cc3b2..8f048d8 100644 --- a/src/modules/RulesManagementModule.sol +++ b/src/modules/RulesManagementModule.sol @@ -101,7 +101,13 @@ abstract contract RulesManagementModule is function rule( uint256 ruleId ) public view virtual override(IRulesManagementModule) returns (address) { - return _rules.at(ruleId); + if(ruleId < _rules.length()){ + // Note that there are no guarantees on the ordering of values inside the array, + // and it may change when more values are added or removed. + return _rules.at(ruleId); + } else { + return address(0); + } } /** diff --git a/src/modules/library/RulesManagementModuleInvariantStorage.sol b/src/modules/library/RulesManagementModuleInvariantStorage.sol index e2d32bc..457e867 100644 --- a/src/modules/library/RulesManagementModuleInvariantStorage.sol +++ b/src/modules/library/RulesManagementModuleInvariantStorage.sol @@ -14,11 +14,21 @@ abstract contract RulesManagementModuleInvariantStorage { /* ============ Events ============ */ - /// @notice Generate when a rule is added + /** + * @notice Emitted when a new rule is added to the rule set. + * @param rule The address of the rule contract that was added. + */ event AddRule(IRule indexed rule); - /// @notice Generate when a rule is removed + + /** + * @notice Emitted when a rule is removed from the rule set. + * @param rule The address of the rule contract that was removed. + */ event RemoveRule(IRule indexed rule); - /// @notice Generate when all the rules are cleared + + /** + * @notice Emitted when all rules are cleared from the rule set. + */ event ClearRules(); /* ==== Constant === */ diff --git a/test/HelperContract.sol b/test/HelperContract.sol index 7463786..59b4bd5 100644 --- a/test/HelperContract.sol +++ b/test/HelperContract.sol @@ -42,6 +42,7 @@ abstract contract HelperContract is bool internal resBool; bool internal resCallBool; string internal resString; + address internal resAddr; // EOA to perform tests address constant ZERO_ADDRESS = address(0); address constant DEFAULT_ADMIN_ADDRESS = address(1); diff --git a/test/RuleEngine/ERC3643Compliance.t.sol b/test/RuleEngine/ERC3643Compliance.t.sol index 2222aab..b898df9 100644 --- a/test/RuleEngine/ERC3643Compliance.t.sol +++ b/test/RuleEngine/ERC3643Compliance.t.sol @@ -139,6 +139,30 @@ contract RuleEngineTest is Test, HelperContract { vm.stopPrank(); } + function testCannotBoundIfInvalidAddress() public { + vm.expectRevert(ERC3643ComplianceModule.RuleEngine_ERC3643Compliance_InvalidTokenAddress.selector); + vm.prank(admin); + ruleEngine.bindToken(address(ZERO_ADDRESS)); + } + + + function testCannotUnBoundIfTokenIsNotBound() public { + vm.expectRevert(ERC3643ComplianceModule.RuleEngine_ERC3643Compliance_TokenNotBound.selector); + vm.prank(admin); + ruleEngine.unbindToken(address(0x100)); + } + + function testCannotBoundIfTokenIsAlreadyBound() public { + // Arrange + vm.prank(admin); + ruleEngine.bindToken(address(0x1)); + + // Assert + vm.expectRevert(ERC3643ComplianceModule.RuleEngine_ERC3643Compliance_TokenAlreadyBound.selector); + vm.prank(admin); + ruleEngine.bindToken(address(0x1)); + } + function testCannotCreatedIfNotBound() public { vm.expectRevert(ERC3643ComplianceModule.RuleEngine_ERC3643Compliance_UnauthorizedCaller.selector); ruleEngine.created(user1, 100); diff --git a/test/RuleEngine/RuleEngineDeployment.t.sol b/test/RuleEngine/RuleEngineDeployment.t.sol index 232c217..15e520f 100644 --- a/test/RuleEngine/RuleEngineDeployment.t.sol +++ b/test/RuleEngine/RuleEngineDeployment.t.sol @@ -35,6 +35,19 @@ contract RuleEngineTest is Test, HelperContract { assertEq(resBool, true); } + function testReturnZeroAddressForRule() public{ + // Arrange + ruleEngineMock = new RuleEngine( + RULE_ENGINE_OPERATOR_ADDRESS, + address(0x0), + ZERO_ADDRESS + ); + // Act + resAddr = ruleEngineMock.rule(0); + // Assert + assertEq(resAddr , ZERO_ADDRESS); + } + function testHasRightVersion() public { // Act ruleEngineMock = new RuleEngine( diff --git a/test/RuleEngine/RulesManagementModuleTest/RuleEngineOperation.t.sol b/test/RuleEngine/RulesManagementModuleTest/RuleEngineOperation.t.sol index 3d28082..dde2c10 100644 --- a/test/RuleEngine/RulesManagementModuleTest/RuleEngineOperation.t.sol +++ b/test/RuleEngine/RulesManagementModuleTest/RuleEngineOperation.t.sol @@ -103,13 +103,10 @@ contract RulesManagementModuleInvariantStorageTest is Test, HelperContract { // Arrange ruleConditionalTransferLightTab = new IRule[](0); // Act - // TODO vm.prank(RULE_ENGINE_OPERATOR_ADDRESS); vm.expectRevert(RulesManagementModuleInvariantStorage.RuleEngine_RulesManagementModule_ArrayIsEmpty.selector); ruleEngineMock.setRules(ruleConditionalTransferLightTab); - resBool = ruleEngineMock.canTransfer(ADDRESS1, ADDRESS2, 20); - // Assert1 resUint256 = ruleEngineMock.rulesCount(); assertEq(resUint256, 1); @@ -137,8 +134,13 @@ contract RulesManagementModuleInvariantStorageTest is Test, HelperContract { vm.prank(RULE_ENGINE_OPERATOR_ADDRESS); ruleEngineMock.setRules(ruleConditionalTransferLightTab); - // TODO - ruleEngineMock.rules(); + address[] memory rulesResult = ruleEngineMock.rules(); + if((rulesResult[0] != address(ruleConditionalTransferLight1)) || (rulesResult[0] != address(ruleConditionalTransferLight1))){ + revert("Invalid array storage 1"); + } + if((rulesResult[1] != address(ruleConditionalTransferLight2)) || (rulesResult[1] != address(ruleConditionalTransferLight2))){ + revert("Invalid array storage 2"); + } // Assert - Arrange resUint256 = ruleEngineMock.rulesCount(); assertEq(resUint256, 2); From d3fd9eb1c6c4743a0caf247c00bf8dc3de4cddb8 Mon Sep 17 00:00:00 2001 From: Ryan Sauge <71391932+rya-sge@users.noreply.github.com> Date: Fri, 15 Aug 2025 12:34:40 +0200 Subject: [PATCH 12/17] clean up --- CONTRIBUTING.md | 2 +- README.md | 2 +- RuleEngine.sol | 4973 ----------------------------------------------- 3 files changed, 2 insertions(+), 4975 deletions(-) delete mode 100644 RuleEngine.sol diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 3ba78c6..f9267c8 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -4,7 +4,7 @@ There are many ways to contribute to RuleEngine Contracts. ## Opening an issue -You can [open an issue] to suggest a feature, a difficulty you have or report a minor bug. For serious bugs in an audited version please do not open an issue, instead refer to our [security policy] for appropriate steps. See [SECURITY.md](./SECURITY.MD) in CMTAT project. +You can [open an issue] to suggest a feature, a difficulty you have or report a minor bug. For serious bugs in an audited version please do not open an issue, instead refer to our [security policy] for appropriate steps. See [SECURITY.md](https://github.com/CMTA/CMTAT/blob/master/SECURITY.md) in CMTAT project. Before opening an issue, be sure to search through the existing open and closed issues, and consider posting a comment in one of those instead. diff --git a/README.md b/README.md index 4e5af37..d96fb9f 100644 --- a/README.md +++ b/README.md @@ -1053,7 +1053,7 @@ Checks whether a specific rule is currently configured. ### Vulnerability disclosure -Please see [SECURITY.md](./SECURITY.md). +Please see [SECURITY.md](https://github.com/CMTA/CMTAT/blob/master/SECURITY.md) (CMTAT main repository). The contracts have been audited by [ABDKConsulting](https://www.abdk.consulting/), a globally recognized firm specialized in smart contracts' security. diff --git a/RuleEngine.sol b/RuleEngine.sol deleted file mode 100644 index 96c86c2..0000000 --- a/RuleEngine.sol +++ /dev/null @@ -1,4973 +0,0 @@ -// SPDX-License-Identifier: MPL-2.0 -pragma solidity ^0.8.20; - -// lib/CMTAT/contracts/interfaces/tokenization/IERC3643Partial.sol - -/** -* Note: -* Parameter names may differ slightly from the original ERC3643 spec -* to align with OpenZeppelin v5.3.0 naming conventions -* (e.g., `amount` → `value`). -*/ - -/** - * @title IERC3643Pause - * @dev Interface for pausing and unpausing token transfers. - * Common interface shared between CMTAT and ERC3643 implementations. - * - */ -interface IERC3643Pause { - /** - * @notice Indicates whether the contract is currently paused. - * @dev When paused, token transfers are disabled. - * @return True if the contract is paused, false otherwise. - */ - function paused() external view returns (bool); - /** - * @notice Pauses all token transfers. - * @dev Once paused, calls to transfer-related functions will revert. - * Can only be called by an account with the appropriate permission. - * - * Emits a {Paused} event. - */ - function pause() external; - - /** - * @notice Unpauses token transfers. - * @dev Restores normal token transfer behavior after a pause. - * Can only be called by an account with the appropriate permission. - * - * Emits an {Unpaused} event. - */ - function unpause() external; -} -/** - * @title ERC-3643 Base Interface for ERC-20 Token Metadata - * @dev Provides functions to update token name and symbol. - */ -interface IERC3643ERC20Base { - /** - * @notice Updates the name of the token. - * @dev Can be used to rename the token post-deployment. - * @param name The new name to assign to the token. - */ - function setName(string calldata name) external; - - /** - * @notice Updates the symbol of the token. - * @dev Can be used to change the token's symbol (e.g. for branding or reissuance). - * @param symbol The new symbol to assign to the token. - */ - function setSymbol(string calldata symbol) external; -} - -/** - * @title IERC3643BatchTransfer - * @notice Interface for batch token transfers under the ERC-3643 standard. - */ -interface IERC3643BatchTransfer { - /** - * @notice Transfers tokens to multiple recipient addresses in a single transaction. - * @dev - * Batch version of `transfer` - * - Each recipient receives the number of tokens specified in the `values` array. - * Requirement: - * - The `tos` array must not be empty. - * - `tos.length` must equal `values.length`. - * - `tos`cannot contain a zero address - * - the caller must have a balance cooresponding to the total values - * Events: - * - Emits one `Transfer` event per recipient (i.e., `tos.length` total). - * - * Enforcement-specific behavior: - * - If `IERC3643Enforcement` is implemented: - * - The sender (`msg.sender`) and each recipient in `tos` MUST NOT be frozen. - * - If `IERC3643ERC20Enforcement` is implemented: - * - The total amount transferred MUST NOT exceed the sender's available (unfrozen) balance. - * - * Note: This implementation differs from the base ERC-3643 specification by returning a `bool` - * value for compatibility with the ERC-20 `transfer` function semantics. - * - * @param tos The list of recipient addresses. - * @param values The list of token amounts corresponding to each recipient. - * @return success_ A boolean indicating whether the batch transfer was successful. - */ - function batchTransfer(address[] calldata tos,uint256[] calldata values) external returns (bool success_); -} - -/** - * @title IERC3643Base - * @notice Interface to retrieve version - */ -interface IERC3643Base { - /** - * @notice Returns the current version of the token contract. - * @dev This value is useful to know which smart contract version has been used - * @return version_ A string representing the version of the token implementation (e.g., "1.0.0"). - */ - function version() external view returns (string memory version_); -} - -/** - * @title IERC3643EnforcementEvent - * @notice Interface defining the event for account freezing and unfreezing. - */ -interface IERC3643EnforcementEvent { - /** - * @notice Emitted when an account's frozen status is changed. - * @dev - * - `account` is the address whose status changed. - * - `isFrozen` reflects the new status after the function execution: - * - `true`: account is frozen. - * - `false`: account is unfrozen. - * - `enforcer` is the address that executed the freezing/unfreezing. - * - `data` provides optional contextual information for auditing or documentation purposes. - * The event is emitted by `setAddressFrozen` and `batchSetAddressFrozen` functions - * Note: This event extends the ERC-3643 specification by including the `data` field. - * - * @param account The address that was frozen or unfrozen. - * @param isFrozen The resulting freeze status of the account. - * @param enforcer The address that initiated the change. - * @param data Additional data related to the freezing action. - */ - event AddressFrozen(address indexed account, bool indexed isFrozen, address indexed enforcer, bytes data); -} - -/** - * @title IERC3643Enforcement - * @notice Interface for account-level freezing logic. - * @dev Provides methods to check and update whether an address is frozen. - */ -interface IERC3643Enforcement { - /** - * @notice Checks whether a given account is currently frozen. - * @param account The address to query. - * @return isFrozen_ A boolean indicating if the account is frozen (`true`) or not (`false`). - */ - function isFrozen(address account) external view returns (bool isFrozen_); - /** - * @notice Sets the frozen status of a specific address. - * @dev Emits an `AddressFrozen` event. - * @param account The address whose frozen status is being updated. - * @param freeze The new frozen status (`true` to freeze, `false` to unfreeze). - */ - function setAddressFrozen(address account, bool freeze) external; - /** - * @notice Batch version of {setAddressFrozen}, allowing multiple addresses to be updated in one call. - * @param accounts An array of addresses to update. - * @param freeze An array of corresponding frozen statuses for each address. - * Requirements: - * - `accounts.length` must be equal to `freeze.length`. - */ - function batchSetAddressFrozen(address[] calldata accounts, bool[] calldata freeze) external; -} - -/** - * @title IERC3643ERC20Enforcement - * @notice Interface for enforcing partial token freezes and forced transfers, typically used in compliance-sensitive ERC-1400 scenarios. - * @dev For event definitions, see {IERC7551ERC20Enforcement}. - */ -interface IERC3643ERC20Enforcement { - /* ============ View Functions ============ */ - /** - * @notice Returns the number of tokens that are currently frozen (i.e., non-transferable) for a given account. - * @dev The frozen amount is always less than or equal to the total balance of the account. - * @param account The address of the wallet being queried. - * @return frozenBalance_ The amount of frozen tokens held by the account. - */ - function getFrozenTokens(address account) external view returns (uint256 frozenBalance_); - - /* ============ State Functions ============ */ - - /** - * @notice Freezes a specific amount of tokens for a given account. - * @dev Emits a `TokensFrozen` event. Prevents the frozen amount from being transferred. - * @param account The wallet address whose tokens are to be frozen. - * @param value The amount of tokens to freeze. - */ - function freezePartialTokens(address account, uint256 value) external; - - /** - * @notice unfreezes token amount specified for given address - * @dev Emits a TokensUnfrozen event - * @param account The address for which to update frozen tokens - * @param value Amount of Tokens to be unfrozen - */ - function unfreezePartialTokens(address account, uint256 value) external; - /** - * - * @notice Triggers a forced transfer. - * @dev -* * Force a transfer of tokens between 2 token holders - * If IERC364320Enforcement is implemented: - * Require that the total value should not exceed available balance. - * In case the `from` address has not enough free tokens (unfrozen tokens) - * but has a total balance higher or equal to the `amount` - * the amount of frozen tokens is reduced in order to have enough free tokens - * to proceed the transfer, in such a case, the remaining balance on the `from` - * account is 100% composed of frozen tokens post-transfer. - * emits a `TokensUnfrozen` event if `value` is higher than the free balance of `from` - * Emits a `Transfer` event - * @param from The address of the token holder - * @param to The address of the receiver - * @param value amount of tokens to transfer - * @return success_ `true` if successful and revert if unsuccessful - - */ - function forcedTransfer(address from, address to, uint256 value) external returns (bool success_); - -} -/** -* @title IERC3643Mint — Token Minting Interface -* @dev Interface for mintint ERC-20 compatible tokens under the ERC-3643 standard. -* Implements both single and batch mint functionalities, with support for frozen address logic if enforced. -*/ -interface IERC3643Mint{ - /** - * @notice Creates (`mints`) a specified `value` of tokens and assigns them to the `account`. - * @dev Tokens are minted by transferring them from the zero address (`address(0)`). - * Emits a {Mint} event and a {Transfer} event with `from` set to `address(0)`. - * Requirement: - * Account must not be the zero address. - * @param account The address that will receive the newly minted tokens. - * @param value The amount of tokens to mint to `account`. - */ - function mint(address account, uint256 value) external; - /** - * @notice Batch version of {mint}, allowing multiple mint operations in a single transaction. - * @dev - * For each mint action: - * - Emits a {Mint} event. - * - Emits a {Transfer} event with `from` set to the zero address. - * - Requires that `accounts` and `values` arrays have the same length. - * - None of the addresses in `accounts` can be the zero address. - * - Be cautious with large arrays as the transaction may run out of gas. - * @param accounts The list of recipient addresses for the minted tokens. - * @param values The respective amounts of tokens to mint for each recipient. - */ - function batchMint( address[] calldata accounts,uint256[] calldata values) external; -} - -/** -* @title IERC3643Burn — Token Burning Interface -* @dev Interface for burning ERC-20 compatible tokens under the ERC-3643 standard. -* Implements both single and batch burn functionalities, with support for frozen token logic if enforced. -*/ -interface IERC3643Burn{ - /** - * @notice Burns a specified amount of tokens from a given account by transferring them to `address(0)`. - * @dev - * - Decreases the total token supply by the specified `value`. - * - Emits a `Transfer` event to indicate the burn (with `to` set to `address(0)`). - * - If `IERC364320Enforcement` is implemented: - * - If the account has insufficient free (unfrozen) tokens but a sufficient total balance, - * frozen tokens are reduced to complete the burn. - * - The remaining balance on the account will consist entirely of frozen tokens after the burn. - * - Emits a `TokensUnfrozen` event if frozen tokens are unfrozen to allow the burn. - * - * @param account The address from which tokens will be burned. - * @param value The amount of tokens to burn. - */ - function burn(address account,uint256 value) external; - /** - * @notice Performs a batch burn operation, removing tokens from multiple accounts in a single transaction. - * @dev - * - Batch version of {burn} - * - Executes the burn operation for each account in the `accounts` array, using corresponding amounts in the `values` array. - * - Emits a `Transfer` event for each burn (with `to` set to `address(0)`). - * - This operation is gas-intensive and may fail if the number of accounts (`accounts.length`) is too large, causing an "out of gas" error. - * - Use with caution to avoid unnecessary transaction fees. - * Requirement: - * - `accounts` and `values` must have the same length - * @param accounts An array of addresses from which tokens will be burned. - * @param values An array of token amounts to burn, corresponding to each address in `accounts`. - */ - function batchBurn(address[] calldata accounts,uint256[] calldata values) external; -} - -interface IERC3643ComplianceRead { - /** - * @notice Returns true if the transfer is valid, and false otherwise. - * @dev Don't check the balance and the user's right (access control) - */ - function canTransfer( - address from, - address to, - uint256 value - ) external view returns (bool isValid); -} - -interface IERC3643IComplianceContract { - /** - * @notice - * Function called whenever tokens are transferred - * from one wallet to another - * @dev - * This function can be used to update state variables of the compliance contract - * This function can be called ONLY by the token contract bound to the compliance - * @param from The address of the sender - * @param to The address of the receiver - * @param value value of tokens involved in the transfer - */ - function transferred(address from, address to, uint256 value) external; -} - -// lib/CMTAT/contracts/interfaces/tokenization/draft-IERC1404.sol - -/* -* @dev Contrary to the ERC-1404, -* this interface does not inherit directly from the ERC20 interface -*/ -interface IERC1404 { - - /** - * @notice Returns a uint8 code to indicate if a transfer is restricted or not - * @dev - * See {ERC-1404} - * This function is where an issuer enforces the restriction logic of their token transfers. - * Some examples of this might include: - * - checking if the token recipient is whitelisted, - * - checking if a sender's tokens are frozen in a lock-up period, etc. - * @return uint8 restricted code, 0 means the transfer is authorized - * - */ - function detectTransferRestriction( - address from, - address to, - uint256 value - ) external view returns (uint8); - - /** - * @dev See {ERC-1404} - * This function is effectively an accessor for the "message", - * a human-readable explanation as to why a transaction is restricted. - * - */ - function messageForTransferRestriction( - uint8 restrictionCode - ) external view returns (string memory); -} - -/** -* @title IERC1404 with custom related extensions -*/ -interface IERC1404Extend is IERC1404{ - /* - * @dev leave the code 6-9 free/unused for further CMTAT additions in your ruleEngine implementation - */ - enum REJECTED_CODE_BASE { - TRANSFER_OK, - TRANSFER_REJECTED_PAUSED, - TRANSFER_REJECTED_FROM_FROZEN, - TRANSFER_REJECTED_TO_FROZEN, - TRANSFER_REJECTED_SPENDER_FROZEN, - TRANSFER_REJECTED_FROM_INSUFFICIENT_ACTIVE_BALANCE - } - - /** - * @notice Returns a uint8 code to indicate if a transfer is restricted or not - * @dev - * See {ERC-1404} - * Add an additionnal argument `spender` - * This function is where an issuer enforces the restriction logic of their token transfers. - * Some examples of this might include: - * - checking if the token recipient is whitelisted, - * - checking if a sender's tokens are frozen in a lock-up period, etc. - * @return uint8 restricted code, 0 means the transfer is authorized - * - */ - function detectTransferRestrictionFrom( - address spender, - address from, - address to, - uint256 value - ) external view returns (uint8); -} - -// lib/openzeppelin-contracts/contracts/access/IAccessControl.sol - -// OpenZeppelin Contracts (last updated v5.3.0) (access/IAccessControl.sol) - -/** - * @dev External interface of AccessControl declared to support ERC-165 detection. - */ -interface IAccessControl { - /** - * @dev The `account` is missing a role. - */ - error AccessControlUnauthorizedAccount(address account, bytes32 neededRole); - - /** - * @dev The caller of a function is not the expected one. - * - * NOTE: Don't confuse with {AccessControlUnauthorizedAccount}. - */ - error AccessControlBadConfirmation(); - - /** - * @dev Emitted when `newAdminRole` is set as ``role``'s admin role, replacing `previousAdminRole` - * - * `DEFAULT_ADMIN_ROLE` is the starting admin for all roles, despite - * {RoleAdminChanged} not being emitted to signal this. - */ - event RoleAdminChanged(bytes32 indexed role, bytes32 indexed previousAdminRole, bytes32 indexed newAdminRole); - - /** - * @dev Emitted when `account` is granted `role`. - * - * `sender` is the account that originated the contract call. This account bears the admin role (for the granted role). - * Expected in cases where the role was granted using the internal {AccessControl-_grantRole}. - */ - event RoleGranted(bytes32 indexed role, address indexed account, address indexed sender); - - /** - * @dev Emitted when `account` is revoked `role`. - * - * `sender` is the account that originated the contract call: - * - if using `revokeRole`, it is the admin role bearer - * - if using `renounceRole`, it is the role bearer (i.e. `account`) - */ - event RoleRevoked(bytes32 indexed role, address indexed account, address indexed sender); - - /** - * @dev Returns `true` if `account` has been granted `role`. - */ - function hasRole(bytes32 role, address account) external view returns (bool); - - /** - * @dev Returns the admin role that controls `role`. See {grantRole} and - * {revokeRole}. - * - * To change a role's admin, use {AccessControl-_setRoleAdmin}. - */ - function getRoleAdmin(bytes32 role) external view returns (bytes32); - - /** - * @dev Grants `role` to `account`. - * - * If `account` had not been already granted `role`, emits a {RoleGranted} - * event. - * - * Requirements: - * - * - the caller must have ``role``'s admin role. - */ - function grantRole(bytes32 role, address account) external; - - /** - * @dev Revokes `role` from `account`. - * - * If `account` had been granted `role`, emits a {RoleRevoked} event. - * - * Requirements: - * - * - the caller must have ``role``'s admin role. - */ - function revokeRole(bytes32 role, address account) external; - - /** - * @dev Revokes `role` from the calling account. - * - * Roles are often managed via {grantRole} and {revokeRole}: this function's - * purpose is to provide a mechanism for accounts to lose their privileges - * if they are compromised (such as when a trusted device is misplaced). - * - * If the calling account had been granted `role`, emits a {RoleRevoked} - * event. - * - * Requirements: - * - * - the caller must be `callerConfirmation`. - */ - function renounceRole(bytes32 role, address callerConfirmation) external; -} - -// lib/openzeppelin-contracts/contracts/utils/Comparators.sol - -// OpenZeppelin Contracts (last updated v5.1.0) (utils/Comparators.sol) - -/** - * @dev Provides a set of functions to compare values. - * - * _Available since v5.1._ - */ -library Comparators { - function lt(uint256 a, uint256 b) internal pure returns (bool) { - return a < b; - } - - function gt(uint256 a, uint256 b) internal pure returns (bool) { - return a > b; - } -} - -// lib/openzeppelin-contracts/contracts/utils/Context.sol - -// OpenZeppelin Contracts (last updated v5.0.1) (utils/Context.sol) - -/** - * @dev Provides information about the current execution context, including the - * sender of the transaction and its data. While these are generally available - * via msg.sender and msg.data, they should not be accessed in such a direct - * manner, since when dealing with meta-transactions the account sending and - * paying for execution may not be the actual sender (as far as an application - * is concerned). - * - * This contract is only required for intermediate, library-like contracts. - */ -abstract contract Context { - function _msgSender() internal view virtual returns (address) { - return msg.sender; - } - - function _msgData() internal view virtual returns (bytes calldata) { - return msg.data; - } - - function _contextSuffixLength() internal view virtual returns (uint256) { - return 0; - } -} - -// lib/openzeppelin-contracts/contracts/utils/Panic.sol - -// OpenZeppelin Contracts (last updated v5.1.0) (utils/Panic.sol) - -/** - * @dev Helper library for emitting standardized panic codes. - * - * ```solidity - * contract Example { - * using Panic for uint256; - * - * // Use any of the declared internal constants - * function foo() { Panic.GENERIC.panic(); } - * - * // Alternatively - * function foo() { Panic.panic(Panic.GENERIC); } - * } - * ``` - * - * Follows the list from https://github.com/ethereum/solidity/blob/v0.8.24/libsolutil/ErrorCodes.h[libsolutil]. - * - * _Available since v5.1._ - */ -// slither-disable-next-line unused-state -library Panic { - /// @dev generic / unspecified error - uint256 internal constant GENERIC = 0x00; - /// @dev used by the assert() builtin - uint256 internal constant ASSERT = 0x01; - /// @dev arithmetic underflow or overflow - uint256 internal constant UNDER_OVERFLOW = 0x11; - /// @dev division or modulo by zero - uint256 internal constant DIVISION_BY_ZERO = 0x12; - /// @dev enum conversion error - uint256 internal constant ENUM_CONVERSION_ERROR = 0x21; - /// @dev invalid encoding in storage - uint256 internal constant STORAGE_ENCODING_ERROR = 0x22; - /// @dev empty array pop - uint256 internal constant EMPTY_ARRAY_POP = 0x31; - /// @dev array out of bounds access - uint256 internal constant ARRAY_OUT_OF_BOUNDS = 0x32; - /// @dev resource error (too large allocation or too large array) - uint256 internal constant RESOURCE_ERROR = 0x41; - /// @dev calling invalid internal function - uint256 internal constant INVALID_INTERNAL_FUNCTION = 0x51; - - /// @dev Reverts with a panic code. Recommended to use with - /// the internal constants with predefined codes. - function panic(uint256 code) internal pure { - assembly ("memory-safe") { - mstore(0x00, 0x4e487b71) - mstore(0x20, code) - revert(0x1c, 0x24) - } - } -} - -// lib/openzeppelin-contracts/contracts/utils/SlotDerivation.sol - -// OpenZeppelin Contracts (last updated v5.3.0) (utils/SlotDerivation.sol) -// This file was procedurally generated from scripts/generate/templates/SlotDerivation.js. - -/** - * @dev Library for computing storage (and transient storage) locations from namespaces and deriving slots - * corresponding to standard patterns. The derivation method for array and mapping matches the storage layout used by - * the solidity language / compiler. - * - * See https://docs.soliditylang.org/en/v0.8.20/internals/layout_in_storage.html#mappings-and-dynamic-arrays[Solidity docs for mappings and dynamic arrays.]. - * - * Example usage: - * ```solidity - * contract Example { - * // Add the library methods - * using StorageSlot for bytes32; - * using SlotDerivation for bytes32; - * - * // Declare a namespace - * string private constant _NAMESPACE = ""; // eg. OpenZeppelin.Slot - * - * function setValueInNamespace(uint256 key, address newValue) internal { - * _NAMESPACE.erc7201Slot().deriveMapping(key).getAddressSlot().value = newValue; - * } - * - * function getValueInNamespace(uint256 key) internal view returns (address) { - * return _NAMESPACE.erc7201Slot().deriveMapping(key).getAddressSlot().value; - * } - * } - * ``` - * - * TIP: Consider using this library along with {StorageSlot}. - * - * NOTE: This library provides a way to manipulate storage locations in a non-standard way. Tooling for checking - * upgrade safety will ignore the slots accessed through this library. - * - * _Available since v5.1._ - */ -library SlotDerivation { - /** - * @dev Derive an ERC-7201 slot from a string (namespace). - */ - function erc7201Slot(string memory namespace) internal pure returns (bytes32 slot) { - assembly ("memory-safe") { - mstore(0x00, sub(keccak256(add(namespace, 0x20), mload(namespace)), 1)) - slot := and(keccak256(0x00, 0x20), not(0xff)) - } - } - - /** - * @dev Add an offset to a slot to get the n-th element of a structure or an array. - */ - function offset(bytes32 slot, uint256 pos) internal pure returns (bytes32 result) { - unchecked { - return bytes32(uint256(slot) + pos); - } - } - - /** - * @dev Derive the location of the first element in an array from the slot where the length is stored. - */ - function deriveArray(bytes32 slot) internal pure returns (bytes32 result) { - assembly ("memory-safe") { - mstore(0x00, slot) - result := keccak256(0x00, 0x20) - } - } - - /** - * @dev Derive the location of a mapping element from the key. - */ - function deriveMapping(bytes32 slot, address key) internal pure returns (bytes32 result) { - assembly ("memory-safe") { - mstore(0x00, and(key, shr(96, not(0)))) - mstore(0x20, slot) - result := keccak256(0x00, 0x40) - } - } - - /** - * @dev Derive the location of a mapping element from the key. - */ - function deriveMapping(bytes32 slot, bool key) internal pure returns (bytes32 result) { - assembly ("memory-safe") { - mstore(0x00, iszero(iszero(key))) - mstore(0x20, slot) - result := keccak256(0x00, 0x40) - } - } - - /** - * @dev Derive the location of a mapping element from the key. - */ - function deriveMapping(bytes32 slot, bytes32 key) internal pure returns (bytes32 result) { - assembly ("memory-safe") { - mstore(0x00, key) - mstore(0x20, slot) - result := keccak256(0x00, 0x40) - } - } - - /** - * @dev Derive the location of a mapping element from the key. - */ - function deriveMapping(bytes32 slot, uint256 key) internal pure returns (bytes32 result) { - assembly ("memory-safe") { - mstore(0x00, key) - mstore(0x20, slot) - result := keccak256(0x00, 0x40) - } - } - - /** - * @dev Derive the location of a mapping element from the key. - */ - function deriveMapping(bytes32 slot, int256 key) internal pure returns (bytes32 result) { - assembly ("memory-safe") { - mstore(0x00, key) - mstore(0x20, slot) - result := keccak256(0x00, 0x40) - } - } - - /** - * @dev Derive the location of a mapping element from the key. - */ - function deriveMapping(bytes32 slot, string memory key) internal pure returns (bytes32 result) { - assembly ("memory-safe") { - let length := mload(key) - let begin := add(key, 0x20) - let end := add(begin, length) - let cache := mload(end) - mstore(end, slot) - result := keccak256(begin, add(length, 0x20)) - mstore(end, cache) - } - } - - /** - * @dev Derive the location of a mapping element from the key. - */ - function deriveMapping(bytes32 slot, bytes memory key) internal pure returns (bytes32 result) { - assembly ("memory-safe") { - let length := mload(key) - let begin := add(key, 0x20) - let end := add(begin, length) - let cache := mload(end) - mstore(end, slot) - result := keccak256(begin, add(length, 0x20)) - mstore(end, cache) - } - } -} - -// lib/openzeppelin-contracts/contracts/utils/StorageSlot.sol - -// OpenZeppelin Contracts (last updated v5.1.0) (utils/StorageSlot.sol) -// This file was procedurally generated from scripts/generate/templates/StorageSlot.js. - -/** - * @dev Library for reading and writing primitive types to specific storage slots. - * - * Storage slots are often used to avoid storage conflict when dealing with upgradeable contracts. - * This library helps with reading and writing to such slots without the need for inline assembly. - * - * The functions in this library return Slot structs that contain a `value` member that can be used to read or write. - * - * Example usage to set ERC-1967 implementation slot: - * ```solidity - * contract ERC1967 { - * // Define the slot. Alternatively, use the SlotDerivation library to derive the slot. - * bytes32 internal constant _IMPLEMENTATION_SLOT = 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc; - * - * function _getImplementation() internal view returns (address) { - * return StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value; - * } - * - * function _setImplementation(address newImplementation) internal { - * require(newImplementation.code.length > 0); - * StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value = newImplementation; - * } - * } - * ``` - * - * TIP: Consider using this library along with {SlotDerivation}. - */ -library StorageSlot { - struct AddressSlot { - address value; - } - - struct BooleanSlot { - bool value; - } - - struct Bytes32Slot { - bytes32 value; - } - - struct Uint256Slot { - uint256 value; - } - - struct Int256Slot { - int256 value; - } - - struct StringSlot { - string value; - } - - struct BytesSlot { - bytes value; - } - - /** - * @dev Returns an `AddressSlot` with member `value` located at `slot`. - */ - function getAddressSlot(bytes32 slot) internal pure returns (AddressSlot storage r) { - assembly ("memory-safe") { - r.slot := slot - } - } - - /** - * @dev Returns a `BooleanSlot` with member `value` located at `slot`. - */ - function getBooleanSlot(bytes32 slot) internal pure returns (BooleanSlot storage r) { - assembly ("memory-safe") { - r.slot := slot - } - } - - /** - * @dev Returns a `Bytes32Slot` with member `value` located at `slot`. - */ - function getBytes32Slot(bytes32 slot) internal pure returns (Bytes32Slot storage r) { - assembly ("memory-safe") { - r.slot := slot - } - } - - /** - * @dev Returns a `Uint256Slot` with member `value` located at `slot`. - */ - function getUint256Slot(bytes32 slot) internal pure returns (Uint256Slot storage r) { - assembly ("memory-safe") { - r.slot := slot - } - } - - /** - * @dev Returns a `Int256Slot` with member `value` located at `slot`. - */ - function getInt256Slot(bytes32 slot) internal pure returns (Int256Slot storage r) { - assembly ("memory-safe") { - r.slot := slot - } - } - - /** - * @dev Returns a `StringSlot` with member `value` located at `slot`. - */ - function getStringSlot(bytes32 slot) internal pure returns (StringSlot storage r) { - assembly ("memory-safe") { - r.slot := slot - } - } - - /** - * @dev Returns an `StringSlot` representation of the string storage pointer `store`. - */ - function getStringSlot(string storage store) internal pure returns (StringSlot storage r) { - assembly ("memory-safe") { - r.slot := store.slot - } - } - - /** - * @dev Returns a `BytesSlot` with member `value` located at `slot`. - */ - function getBytesSlot(bytes32 slot) internal pure returns (BytesSlot storage r) { - assembly ("memory-safe") { - r.slot := slot - } - } - - /** - * @dev Returns an `BytesSlot` representation of the bytes storage pointer `store`. - */ - function getBytesSlot(bytes storage store) internal pure returns (BytesSlot storage r) { - assembly ("memory-safe") { - r.slot := store.slot - } - } -} - -// lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol - -// OpenZeppelin Contracts (last updated v5.1.0) (utils/introspection/IERC165.sol) - -/** - * @dev Interface of the ERC-165 standard, as defined in the - * https://eips.ethereum.org/EIPS/eip-165[ERC]. - * - * Implementers can declare support of contract interfaces, which can then be - * queried by others ({ERC165Checker}). - * - * For an implementation, see {ERC165}. - */ -interface IERC165 { - /** - * @dev Returns true if this contract implements the interface defined by - * `interfaceId`. See the corresponding - * https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[ERC section] - * to learn more about how these ids are created. - * - * This function call must use less than 30 000 gas. - */ - function supportsInterface(bytes4 interfaceId) external view returns (bool); -} - -// lib/openzeppelin-contracts/contracts/utils/math/SafeCast.sol - -// OpenZeppelin Contracts (last updated v5.1.0) (utils/math/SafeCast.sol) -// This file was procedurally generated from scripts/generate/templates/SafeCast.js. - -/** - * @dev Wrappers over Solidity's uintXX/intXX/bool casting operators with added overflow - * checks. - * - * Downcasting from uint256/int256 in Solidity does not revert on overflow. This can - * easily result in undesired exploitation or bugs, since developers usually - * assume that overflows raise errors. `SafeCast` restores this intuition by - * reverting the transaction when such an operation overflows. - * - * Using this library instead of the unchecked operations eliminates an entire - * class of bugs, so it's recommended to use it always. - */ -library SafeCast { - /** - * @dev Value doesn't fit in an uint of `bits` size. - */ - error SafeCastOverflowedUintDowncast(uint8 bits, uint256 value); - - /** - * @dev An int value doesn't fit in an uint of `bits` size. - */ - error SafeCastOverflowedIntToUint(int256 value); - - /** - * @dev Value doesn't fit in an int of `bits` size. - */ - error SafeCastOverflowedIntDowncast(uint8 bits, int256 value); - - /** - * @dev An uint value doesn't fit in an int of `bits` size. - */ - error SafeCastOverflowedUintToInt(uint256 value); - - /** - * @dev Returns the downcasted uint248 from uint256, reverting on - * overflow (when the input is greater than largest uint248). - * - * Counterpart to Solidity's `uint248` operator. - * - * Requirements: - * - * - input must fit into 248 bits - */ - function toUint248(uint256 value) internal pure returns (uint248) { - if (value > type(uint248).max) { - revert SafeCastOverflowedUintDowncast(248, value); - } - return uint248(value); - } - - /** - * @dev Returns the downcasted uint240 from uint256, reverting on - * overflow (when the input is greater than largest uint240). - * - * Counterpart to Solidity's `uint240` operator. - * - * Requirements: - * - * - input must fit into 240 bits - */ - function toUint240(uint256 value) internal pure returns (uint240) { - if (value > type(uint240).max) { - revert SafeCastOverflowedUintDowncast(240, value); - } - return uint240(value); - } - - /** - * @dev Returns the downcasted uint232 from uint256, reverting on - * overflow (when the input is greater than largest uint232). - * - * Counterpart to Solidity's `uint232` operator. - * - * Requirements: - * - * - input must fit into 232 bits - */ - function toUint232(uint256 value) internal pure returns (uint232) { - if (value > type(uint232).max) { - revert SafeCastOverflowedUintDowncast(232, value); - } - return uint232(value); - } - - /** - * @dev Returns the downcasted uint224 from uint256, reverting on - * overflow (when the input is greater than largest uint224). - * - * Counterpart to Solidity's `uint224` operator. - * - * Requirements: - * - * - input must fit into 224 bits - */ - function toUint224(uint256 value) internal pure returns (uint224) { - if (value > type(uint224).max) { - revert SafeCastOverflowedUintDowncast(224, value); - } - return uint224(value); - } - - /** - * @dev Returns the downcasted uint216 from uint256, reverting on - * overflow (when the input is greater than largest uint216). - * - * Counterpart to Solidity's `uint216` operator. - * - * Requirements: - * - * - input must fit into 216 bits - */ - function toUint216(uint256 value) internal pure returns (uint216) { - if (value > type(uint216).max) { - revert SafeCastOverflowedUintDowncast(216, value); - } - return uint216(value); - } - - /** - * @dev Returns the downcasted uint208 from uint256, reverting on - * overflow (when the input is greater than largest uint208). - * - * Counterpart to Solidity's `uint208` operator. - * - * Requirements: - * - * - input must fit into 208 bits - */ - function toUint208(uint256 value) internal pure returns (uint208) { - if (value > type(uint208).max) { - revert SafeCastOverflowedUintDowncast(208, value); - } - return uint208(value); - } - - /** - * @dev Returns the downcasted uint200 from uint256, reverting on - * overflow (when the input is greater than largest uint200). - * - * Counterpart to Solidity's `uint200` operator. - * - * Requirements: - * - * - input must fit into 200 bits - */ - function toUint200(uint256 value) internal pure returns (uint200) { - if (value > type(uint200).max) { - revert SafeCastOverflowedUintDowncast(200, value); - } - return uint200(value); - } - - /** - * @dev Returns the downcasted uint192 from uint256, reverting on - * overflow (when the input is greater than largest uint192). - * - * Counterpart to Solidity's `uint192` operator. - * - * Requirements: - * - * - input must fit into 192 bits - */ - function toUint192(uint256 value) internal pure returns (uint192) { - if (value > type(uint192).max) { - revert SafeCastOverflowedUintDowncast(192, value); - } - return uint192(value); - } - - /** - * @dev Returns the downcasted uint184 from uint256, reverting on - * overflow (when the input is greater than largest uint184). - * - * Counterpart to Solidity's `uint184` operator. - * - * Requirements: - * - * - input must fit into 184 bits - */ - function toUint184(uint256 value) internal pure returns (uint184) { - if (value > type(uint184).max) { - revert SafeCastOverflowedUintDowncast(184, value); - } - return uint184(value); - } - - /** - * @dev Returns the downcasted uint176 from uint256, reverting on - * overflow (when the input is greater than largest uint176). - * - * Counterpart to Solidity's `uint176` operator. - * - * Requirements: - * - * - input must fit into 176 bits - */ - function toUint176(uint256 value) internal pure returns (uint176) { - if (value > type(uint176).max) { - revert SafeCastOverflowedUintDowncast(176, value); - } - return uint176(value); - } - - /** - * @dev Returns the downcasted uint168 from uint256, reverting on - * overflow (when the input is greater than largest uint168). - * - * Counterpart to Solidity's `uint168` operator. - * - * Requirements: - * - * - input must fit into 168 bits - */ - function toUint168(uint256 value) internal pure returns (uint168) { - if (value > type(uint168).max) { - revert SafeCastOverflowedUintDowncast(168, value); - } - return uint168(value); - } - - /** - * @dev Returns the downcasted uint160 from uint256, reverting on - * overflow (when the input is greater than largest uint160). - * - * Counterpart to Solidity's `uint160` operator. - * - * Requirements: - * - * - input must fit into 160 bits - */ - function toUint160(uint256 value) internal pure returns (uint160) { - if (value > type(uint160).max) { - revert SafeCastOverflowedUintDowncast(160, value); - } - return uint160(value); - } - - /** - * @dev Returns the downcasted uint152 from uint256, reverting on - * overflow (when the input is greater than largest uint152). - * - * Counterpart to Solidity's `uint152` operator. - * - * Requirements: - * - * - input must fit into 152 bits - */ - function toUint152(uint256 value) internal pure returns (uint152) { - if (value > type(uint152).max) { - revert SafeCastOverflowedUintDowncast(152, value); - } - return uint152(value); - } - - /** - * @dev Returns the downcasted uint144 from uint256, reverting on - * overflow (when the input is greater than largest uint144). - * - * Counterpart to Solidity's `uint144` operator. - * - * Requirements: - * - * - input must fit into 144 bits - */ - function toUint144(uint256 value) internal pure returns (uint144) { - if (value > type(uint144).max) { - revert SafeCastOverflowedUintDowncast(144, value); - } - return uint144(value); - } - - /** - * @dev Returns the downcasted uint136 from uint256, reverting on - * overflow (when the input is greater than largest uint136). - * - * Counterpart to Solidity's `uint136` operator. - * - * Requirements: - * - * - input must fit into 136 bits - */ - function toUint136(uint256 value) internal pure returns (uint136) { - if (value > type(uint136).max) { - revert SafeCastOverflowedUintDowncast(136, value); - } - return uint136(value); - } - - /** - * @dev Returns the downcasted uint128 from uint256, reverting on - * overflow (when the input is greater than largest uint128). - * - * Counterpart to Solidity's `uint128` operator. - * - * Requirements: - * - * - input must fit into 128 bits - */ - function toUint128(uint256 value) internal pure returns (uint128) { - if (value > type(uint128).max) { - revert SafeCastOverflowedUintDowncast(128, value); - } - return uint128(value); - } - - /** - * @dev Returns the downcasted uint120 from uint256, reverting on - * overflow (when the input is greater than largest uint120). - * - * Counterpart to Solidity's `uint120` operator. - * - * Requirements: - * - * - input must fit into 120 bits - */ - function toUint120(uint256 value) internal pure returns (uint120) { - if (value > type(uint120).max) { - revert SafeCastOverflowedUintDowncast(120, value); - } - return uint120(value); - } - - /** - * @dev Returns the downcasted uint112 from uint256, reverting on - * overflow (when the input is greater than largest uint112). - * - * Counterpart to Solidity's `uint112` operator. - * - * Requirements: - * - * - input must fit into 112 bits - */ - function toUint112(uint256 value) internal pure returns (uint112) { - if (value > type(uint112).max) { - revert SafeCastOverflowedUintDowncast(112, value); - } - return uint112(value); - } - - /** - * @dev Returns the downcasted uint104 from uint256, reverting on - * overflow (when the input is greater than largest uint104). - * - * Counterpart to Solidity's `uint104` operator. - * - * Requirements: - * - * - input must fit into 104 bits - */ - function toUint104(uint256 value) internal pure returns (uint104) { - if (value > type(uint104).max) { - revert SafeCastOverflowedUintDowncast(104, value); - } - return uint104(value); - } - - /** - * @dev Returns the downcasted uint96 from uint256, reverting on - * overflow (when the input is greater than largest uint96). - * - * Counterpart to Solidity's `uint96` operator. - * - * Requirements: - * - * - input must fit into 96 bits - */ - function toUint96(uint256 value) internal pure returns (uint96) { - if (value > type(uint96).max) { - revert SafeCastOverflowedUintDowncast(96, value); - } - return uint96(value); - } - - /** - * @dev Returns the downcasted uint88 from uint256, reverting on - * overflow (when the input is greater than largest uint88). - * - * Counterpart to Solidity's `uint88` operator. - * - * Requirements: - * - * - input must fit into 88 bits - */ - function toUint88(uint256 value) internal pure returns (uint88) { - if (value > type(uint88).max) { - revert SafeCastOverflowedUintDowncast(88, value); - } - return uint88(value); - } - - /** - * @dev Returns the downcasted uint80 from uint256, reverting on - * overflow (when the input is greater than largest uint80). - * - * Counterpart to Solidity's `uint80` operator. - * - * Requirements: - * - * - input must fit into 80 bits - */ - function toUint80(uint256 value) internal pure returns (uint80) { - if (value > type(uint80).max) { - revert SafeCastOverflowedUintDowncast(80, value); - } - return uint80(value); - } - - /** - * @dev Returns the downcasted uint72 from uint256, reverting on - * overflow (when the input is greater than largest uint72). - * - * Counterpart to Solidity's `uint72` operator. - * - * Requirements: - * - * - input must fit into 72 bits - */ - function toUint72(uint256 value) internal pure returns (uint72) { - if (value > type(uint72).max) { - revert SafeCastOverflowedUintDowncast(72, value); - } - return uint72(value); - } - - /** - * @dev Returns the downcasted uint64 from uint256, reverting on - * overflow (when the input is greater than largest uint64). - * - * Counterpart to Solidity's `uint64` operator. - * - * Requirements: - * - * - input must fit into 64 bits - */ - function toUint64(uint256 value) internal pure returns (uint64) { - if (value > type(uint64).max) { - revert SafeCastOverflowedUintDowncast(64, value); - } - return uint64(value); - } - - /** - * @dev Returns the downcasted uint56 from uint256, reverting on - * overflow (when the input is greater than largest uint56). - * - * Counterpart to Solidity's `uint56` operator. - * - * Requirements: - * - * - input must fit into 56 bits - */ - function toUint56(uint256 value) internal pure returns (uint56) { - if (value > type(uint56).max) { - revert SafeCastOverflowedUintDowncast(56, value); - } - return uint56(value); - } - - /** - * @dev Returns the downcasted uint48 from uint256, reverting on - * overflow (when the input is greater than largest uint48). - * - * Counterpart to Solidity's `uint48` operator. - * - * Requirements: - * - * - input must fit into 48 bits - */ - function toUint48(uint256 value) internal pure returns (uint48) { - if (value > type(uint48).max) { - revert SafeCastOverflowedUintDowncast(48, value); - } - return uint48(value); - } - - /** - * @dev Returns the downcasted uint40 from uint256, reverting on - * overflow (when the input is greater than largest uint40). - * - * Counterpart to Solidity's `uint40` operator. - * - * Requirements: - * - * - input must fit into 40 bits - */ - function toUint40(uint256 value) internal pure returns (uint40) { - if (value > type(uint40).max) { - revert SafeCastOverflowedUintDowncast(40, value); - } - return uint40(value); - } - - /** - * @dev Returns the downcasted uint32 from uint256, reverting on - * overflow (when the input is greater than largest uint32). - * - * Counterpart to Solidity's `uint32` operator. - * - * Requirements: - * - * - input must fit into 32 bits - */ - function toUint32(uint256 value) internal pure returns (uint32) { - if (value > type(uint32).max) { - revert SafeCastOverflowedUintDowncast(32, value); - } - return uint32(value); - } - - /** - * @dev Returns the downcasted uint24 from uint256, reverting on - * overflow (when the input is greater than largest uint24). - * - * Counterpart to Solidity's `uint24` operator. - * - * Requirements: - * - * - input must fit into 24 bits - */ - function toUint24(uint256 value) internal pure returns (uint24) { - if (value > type(uint24).max) { - revert SafeCastOverflowedUintDowncast(24, value); - } - return uint24(value); - } - - /** - * @dev Returns the downcasted uint16 from uint256, reverting on - * overflow (when the input is greater than largest uint16). - * - * Counterpart to Solidity's `uint16` operator. - * - * Requirements: - * - * - input must fit into 16 bits - */ - function toUint16(uint256 value) internal pure returns (uint16) { - if (value > type(uint16).max) { - revert SafeCastOverflowedUintDowncast(16, value); - } - return uint16(value); - } - - /** - * @dev Returns the downcasted uint8 from uint256, reverting on - * overflow (when the input is greater than largest uint8). - * - * Counterpart to Solidity's `uint8` operator. - * - * Requirements: - * - * - input must fit into 8 bits - */ - function toUint8(uint256 value) internal pure returns (uint8) { - if (value > type(uint8).max) { - revert SafeCastOverflowedUintDowncast(8, value); - } - return uint8(value); - } - - /** - * @dev Converts a signed int256 into an unsigned uint256. - * - * Requirements: - * - * - input must be greater than or equal to 0. - */ - function toUint256(int256 value) internal pure returns (uint256) { - if (value < 0) { - revert SafeCastOverflowedIntToUint(value); - } - return uint256(value); - } - - /** - * @dev Returns the downcasted int248 from int256, reverting on - * overflow (when the input is less than smallest int248 or - * greater than largest int248). - * - * Counterpart to Solidity's `int248` operator. - * - * Requirements: - * - * - input must fit into 248 bits - */ - function toInt248(int256 value) internal pure returns (int248 downcasted) { - downcasted = int248(value); - if (downcasted != value) { - revert SafeCastOverflowedIntDowncast(248, value); - } - } - - /** - * @dev Returns the downcasted int240 from int256, reverting on - * overflow (when the input is less than smallest int240 or - * greater than largest int240). - * - * Counterpart to Solidity's `int240` operator. - * - * Requirements: - * - * - input must fit into 240 bits - */ - function toInt240(int256 value) internal pure returns (int240 downcasted) { - downcasted = int240(value); - if (downcasted != value) { - revert SafeCastOverflowedIntDowncast(240, value); - } - } - - /** - * @dev Returns the downcasted int232 from int256, reverting on - * overflow (when the input is less than smallest int232 or - * greater than largest int232). - * - * Counterpart to Solidity's `int232` operator. - * - * Requirements: - * - * - input must fit into 232 bits - */ - function toInt232(int256 value) internal pure returns (int232 downcasted) { - downcasted = int232(value); - if (downcasted != value) { - revert SafeCastOverflowedIntDowncast(232, value); - } - } - - /** - * @dev Returns the downcasted int224 from int256, reverting on - * overflow (when the input is less than smallest int224 or - * greater than largest int224). - * - * Counterpart to Solidity's `int224` operator. - * - * Requirements: - * - * - input must fit into 224 bits - */ - function toInt224(int256 value) internal pure returns (int224 downcasted) { - downcasted = int224(value); - if (downcasted != value) { - revert SafeCastOverflowedIntDowncast(224, value); - } - } - - /** - * @dev Returns the downcasted int216 from int256, reverting on - * overflow (when the input is less than smallest int216 or - * greater than largest int216). - * - * Counterpart to Solidity's `int216` operator. - * - * Requirements: - * - * - input must fit into 216 bits - */ - function toInt216(int256 value) internal pure returns (int216 downcasted) { - downcasted = int216(value); - if (downcasted != value) { - revert SafeCastOverflowedIntDowncast(216, value); - } - } - - /** - * @dev Returns the downcasted int208 from int256, reverting on - * overflow (when the input is less than smallest int208 or - * greater than largest int208). - * - * Counterpart to Solidity's `int208` operator. - * - * Requirements: - * - * - input must fit into 208 bits - */ - function toInt208(int256 value) internal pure returns (int208 downcasted) { - downcasted = int208(value); - if (downcasted != value) { - revert SafeCastOverflowedIntDowncast(208, value); - } - } - - /** - * @dev Returns the downcasted int200 from int256, reverting on - * overflow (when the input is less than smallest int200 or - * greater than largest int200). - * - * Counterpart to Solidity's `int200` operator. - * - * Requirements: - * - * - input must fit into 200 bits - */ - function toInt200(int256 value) internal pure returns (int200 downcasted) { - downcasted = int200(value); - if (downcasted != value) { - revert SafeCastOverflowedIntDowncast(200, value); - } - } - - /** - * @dev Returns the downcasted int192 from int256, reverting on - * overflow (when the input is less than smallest int192 or - * greater than largest int192). - * - * Counterpart to Solidity's `int192` operator. - * - * Requirements: - * - * - input must fit into 192 bits - */ - function toInt192(int256 value) internal pure returns (int192 downcasted) { - downcasted = int192(value); - if (downcasted != value) { - revert SafeCastOverflowedIntDowncast(192, value); - } - } - - /** - * @dev Returns the downcasted int184 from int256, reverting on - * overflow (when the input is less than smallest int184 or - * greater than largest int184). - * - * Counterpart to Solidity's `int184` operator. - * - * Requirements: - * - * - input must fit into 184 bits - */ - function toInt184(int256 value) internal pure returns (int184 downcasted) { - downcasted = int184(value); - if (downcasted != value) { - revert SafeCastOverflowedIntDowncast(184, value); - } - } - - /** - * @dev Returns the downcasted int176 from int256, reverting on - * overflow (when the input is less than smallest int176 or - * greater than largest int176). - * - * Counterpart to Solidity's `int176` operator. - * - * Requirements: - * - * - input must fit into 176 bits - */ - function toInt176(int256 value) internal pure returns (int176 downcasted) { - downcasted = int176(value); - if (downcasted != value) { - revert SafeCastOverflowedIntDowncast(176, value); - } - } - - /** - * @dev Returns the downcasted int168 from int256, reverting on - * overflow (when the input is less than smallest int168 or - * greater than largest int168). - * - * Counterpart to Solidity's `int168` operator. - * - * Requirements: - * - * - input must fit into 168 bits - */ - function toInt168(int256 value) internal pure returns (int168 downcasted) { - downcasted = int168(value); - if (downcasted != value) { - revert SafeCastOverflowedIntDowncast(168, value); - } - } - - /** - * @dev Returns the downcasted int160 from int256, reverting on - * overflow (when the input is less than smallest int160 or - * greater than largest int160). - * - * Counterpart to Solidity's `int160` operator. - * - * Requirements: - * - * - input must fit into 160 bits - */ - function toInt160(int256 value) internal pure returns (int160 downcasted) { - downcasted = int160(value); - if (downcasted != value) { - revert SafeCastOverflowedIntDowncast(160, value); - } - } - - /** - * @dev Returns the downcasted int152 from int256, reverting on - * overflow (when the input is less than smallest int152 or - * greater than largest int152). - * - * Counterpart to Solidity's `int152` operator. - * - * Requirements: - * - * - input must fit into 152 bits - */ - function toInt152(int256 value) internal pure returns (int152 downcasted) { - downcasted = int152(value); - if (downcasted != value) { - revert SafeCastOverflowedIntDowncast(152, value); - } - } - - /** - * @dev Returns the downcasted int144 from int256, reverting on - * overflow (when the input is less than smallest int144 or - * greater than largest int144). - * - * Counterpart to Solidity's `int144` operator. - * - * Requirements: - * - * - input must fit into 144 bits - */ - function toInt144(int256 value) internal pure returns (int144 downcasted) { - downcasted = int144(value); - if (downcasted != value) { - revert SafeCastOverflowedIntDowncast(144, value); - } - } - - /** - * @dev Returns the downcasted int136 from int256, reverting on - * overflow (when the input is less than smallest int136 or - * greater than largest int136). - * - * Counterpart to Solidity's `int136` operator. - * - * Requirements: - * - * - input must fit into 136 bits - */ - function toInt136(int256 value) internal pure returns (int136 downcasted) { - downcasted = int136(value); - if (downcasted != value) { - revert SafeCastOverflowedIntDowncast(136, value); - } - } - - /** - * @dev Returns the downcasted int128 from int256, reverting on - * overflow (when the input is less than smallest int128 or - * greater than largest int128). - * - * Counterpart to Solidity's `int128` operator. - * - * Requirements: - * - * - input must fit into 128 bits - */ - function toInt128(int256 value) internal pure returns (int128 downcasted) { - downcasted = int128(value); - if (downcasted != value) { - revert SafeCastOverflowedIntDowncast(128, value); - } - } - - /** - * @dev Returns the downcasted int120 from int256, reverting on - * overflow (when the input is less than smallest int120 or - * greater than largest int120). - * - * Counterpart to Solidity's `int120` operator. - * - * Requirements: - * - * - input must fit into 120 bits - */ - function toInt120(int256 value) internal pure returns (int120 downcasted) { - downcasted = int120(value); - if (downcasted != value) { - revert SafeCastOverflowedIntDowncast(120, value); - } - } - - /** - * @dev Returns the downcasted int112 from int256, reverting on - * overflow (when the input is less than smallest int112 or - * greater than largest int112). - * - * Counterpart to Solidity's `int112` operator. - * - * Requirements: - * - * - input must fit into 112 bits - */ - function toInt112(int256 value) internal pure returns (int112 downcasted) { - downcasted = int112(value); - if (downcasted != value) { - revert SafeCastOverflowedIntDowncast(112, value); - } - } - - /** - * @dev Returns the downcasted int104 from int256, reverting on - * overflow (when the input is less than smallest int104 or - * greater than largest int104). - * - * Counterpart to Solidity's `int104` operator. - * - * Requirements: - * - * - input must fit into 104 bits - */ - function toInt104(int256 value) internal pure returns (int104 downcasted) { - downcasted = int104(value); - if (downcasted != value) { - revert SafeCastOverflowedIntDowncast(104, value); - } - } - - /** - * @dev Returns the downcasted int96 from int256, reverting on - * overflow (when the input is less than smallest int96 or - * greater than largest int96). - * - * Counterpart to Solidity's `int96` operator. - * - * Requirements: - * - * - input must fit into 96 bits - */ - function toInt96(int256 value) internal pure returns (int96 downcasted) { - downcasted = int96(value); - if (downcasted != value) { - revert SafeCastOverflowedIntDowncast(96, value); - } - } - - /** - * @dev Returns the downcasted int88 from int256, reverting on - * overflow (when the input is less than smallest int88 or - * greater than largest int88). - * - * Counterpart to Solidity's `int88` operator. - * - * Requirements: - * - * - input must fit into 88 bits - */ - function toInt88(int256 value) internal pure returns (int88 downcasted) { - downcasted = int88(value); - if (downcasted != value) { - revert SafeCastOverflowedIntDowncast(88, value); - } - } - - /** - * @dev Returns the downcasted int80 from int256, reverting on - * overflow (when the input is less than smallest int80 or - * greater than largest int80). - * - * Counterpart to Solidity's `int80` operator. - * - * Requirements: - * - * - input must fit into 80 bits - */ - function toInt80(int256 value) internal pure returns (int80 downcasted) { - downcasted = int80(value); - if (downcasted != value) { - revert SafeCastOverflowedIntDowncast(80, value); - } - } - - /** - * @dev Returns the downcasted int72 from int256, reverting on - * overflow (when the input is less than smallest int72 or - * greater than largest int72). - * - * Counterpart to Solidity's `int72` operator. - * - * Requirements: - * - * - input must fit into 72 bits - */ - function toInt72(int256 value) internal pure returns (int72 downcasted) { - downcasted = int72(value); - if (downcasted != value) { - revert SafeCastOverflowedIntDowncast(72, value); - } - } - - /** - * @dev Returns the downcasted int64 from int256, reverting on - * overflow (when the input is less than smallest int64 or - * greater than largest int64). - * - * Counterpart to Solidity's `int64` operator. - * - * Requirements: - * - * - input must fit into 64 bits - */ - function toInt64(int256 value) internal pure returns (int64 downcasted) { - downcasted = int64(value); - if (downcasted != value) { - revert SafeCastOverflowedIntDowncast(64, value); - } - } - - /** - * @dev Returns the downcasted int56 from int256, reverting on - * overflow (when the input is less than smallest int56 or - * greater than largest int56). - * - * Counterpart to Solidity's `int56` operator. - * - * Requirements: - * - * - input must fit into 56 bits - */ - function toInt56(int256 value) internal pure returns (int56 downcasted) { - downcasted = int56(value); - if (downcasted != value) { - revert SafeCastOverflowedIntDowncast(56, value); - } - } - - /** - * @dev Returns the downcasted int48 from int256, reverting on - * overflow (when the input is less than smallest int48 or - * greater than largest int48). - * - * Counterpart to Solidity's `int48` operator. - * - * Requirements: - * - * - input must fit into 48 bits - */ - function toInt48(int256 value) internal pure returns (int48 downcasted) { - downcasted = int48(value); - if (downcasted != value) { - revert SafeCastOverflowedIntDowncast(48, value); - } - } - - /** - * @dev Returns the downcasted int40 from int256, reverting on - * overflow (when the input is less than smallest int40 or - * greater than largest int40). - * - * Counterpart to Solidity's `int40` operator. - * - * Requirements: - * - * - input must fit into 40 bits - */ - function toInt40(int256 value) internal pure returns (int40 downcasted) { - downcasted = int40(value); - if (downcasted != value) { - revert SafeCastOverflowedIntDowncast(40, value); - } - } - - /** - * @dev Returns the downcasted int32 from int256, reverting on - * overflow (when the input is less than smallest int32 or - * greater than largest int32). - * - * Counterpart to Solidity's `int32` operator. - * - * Requirements: - * - * - input must fit into 32 bits - */ - function toInt32(int256 value) internal pure returns (int32 downcasted) { - downcasted = int32(value); - if (downcasted != value) { - revert SafeCastOverflowedIntDowncast(32, value); - } - } - - /** - * @dev Returns the downcasted int24 from int256, reverting on - * overflow (when the input is less than smallest int24 or - * greater than largest int24). - * - * Counterpart to Solidity's `int24` operator. - * - * Requirements: - * - * - input must fit into 24 bits - */ - function toInt24(int256 value) internal pure returns (int24 downcasted) { - downcasted = int24(value); - if (downcasted != value) { - revert SafeCastOverflowedIntDowncast(24, value); - } - } - - /** - * @dev Returns the downcasted int16 from int256, reverting on - * overflow (when the input is less than smallest int16 or - * greater than largest int16). - * - * Counterpart to Solidity's `int16` operator. - * - * Requirements: - * - * - input must fit into 16 bits - */ - function toInt16(int256 value) internal pure returns (int16 downcasted) { - downcasted = int16(value); - if (downcasted != value) { - revert SafeCastOverflowedIntDowncast(16, value); - } - } - - /** - * @dev Returns the downcasted int8 from int256, reverting on - * overflow (when the input is less than smallest int8 or - * greater than largest int8). - * - * Counterpart to Solidity's `int8` operator. - * - * Requirements: - * - * - input must fit into 8 bits - */ - function toInt8(int256 value) internal pure returns (int8 downcasted) { - downcasted = int8(value); - if (downcasted != value) { - revert SafeCastOverflowedIntDowncast(8, value); - } - } - - /** - * @dev Converts an unsigned uint256 into a signed int256. - * - * Requirements: - * - * - input must be less than or equal to maxInt256. - */ - function toInt256(uint256 value) internal pure returns (int256) { - // Note: Unsafe cast below is okay because `type(int256).max` is guaranteed to be positive - if (value > uint256(type(int256).max)) { - revert SafeCastOverflowedUintToInt(value); - } - return int256(value); - } - - /** - * @dev Cast a boolean (false or true) to a uint256 (0 or 1) with no jump. - */ - function toUint(bool b) internal pure returns (uint256 u) { - assembly ("memory-safe") { - u := iszero(iszero(b)) - } - } -} - -// src/modules/library/RuleEngineInvariantStorage.sol - -abstract contract RuleEngineInvariantStorage { - /* ==== Errors === */ - error RuleEngine_AdminWithAddressZeroNotAllowed(); -} - -// lib/CMTAT/contracts/interfaces/tokenization/draft-IERC7551.sol - -/** - * @title IERC7551Mint - * @dev Interface for token minting operations. - */ -interface IERC7551Mint { - /** - * @notice Emitted when new tokens are minted and assigned to an account. - * @param minter The address that initiated the mint operation. - * @param account The address receiving the newly minted tokens. - * @param value The amount of tokens created. - * @param data Optional metadata associated with the mint (e.g., reason, reference ID). - */ - event Mint(address indexed minter, address indexed account, uint256 value, bytes data); - /** - * @notice Creates a `value` amount of tokens and assigns them to `account`, by transferring it from address(0) - * @dev - * - Increases the total supply of tokens. - * - Emits both a `Mint` event and a standard ERC-20 `Transfer` event (with `from` set to the zero address). - * - The `data` parameter can be used to attach off-chain metadata or audit information. - * - If {IERC7551Pause} is implemented: - * - Token issuance MUST NOT be blocked by paused transfer state. - * Requirements: - * - `account` cannot be the zero address - * @param account The address that will receive the newly minted tokens. - * @param value The amount of tokens to mint. - * @param data Additional contextual data to include with the mint (optional). - */ - function mint(address account, uint256 value, bytes calldata data) external; -} - -/** -* @title interface for burn operation -*/ -interface IERC7551Burn { - /** - * @notice Emitted when tokens are burned from an account. - * @param burner The address that initiated the burn. - * @param account The address from which tokens were burned. - * @param value The amount of tokens burned. - * @param data Additional data related to the burn. - */ - event Burn(address indexed burner, address indexed account, uint256 value, bytes data); - - /** - * @notice Burns a specific number of tokens from the given account by transferring it to address(0) - * @dev - * - The account's balance is decreased by the specified amount. - * - Emits a `Burn` event and a standard `Transfer` event with `to` set to `address(0)`. - * - If the account balance (including frozen tokens) is less than the burn amount, the transaction MUST revert. - * - If the token contract supports {IERC7551Pause}, paused transfers MUST NOT prevent this burn operation. - * - The `data` parameter MAY be used to provide additional context (e.g., audit trail or documentation). - * @param account The address whose tokens will be burned. - * @param amount The number of tokens to remove from circulation. - * @param data Arbitrary additional data to document the burn. - */ - function burn(address account, uint256 amount, bytes calldata data) external; -} - -interface IERC7551Pause { - /** - * @notice Returns true if token transfers are currently paused. - * @return True if paused, false otherwise. - * @dev - * If this function returns true, it MUST NOT be possible to transfer tokens to other accounts - * and the function canTransfer() MUST return false. - */ - function paused() external view returns (bool); - /** - * @notice Pauses token transfers. - * @dev Reverts if already paused. - * Emits a `Paused` event - */ - function pause() external; - /** - * @notice Unpauses token transfers. - * @dev Reverts if token is not in pause state. - * emits an `Unpaused` event - */ - function unpause() external; -} -interface IERC7551ERC20EnforcementEvent { - /** - * @notice Emitted when a forced transfer or burn occurs. - * @param enforcer The address that initiated the enforcement. - * @param account The address affected by the enforcement. - * @param amount The number of tokens involved. - * @param data Additional data related to the enforcement. - */ - event Enforcement (address indexed enforcer, address indexed account, uint256 amount, bytes data); -} - -interface IERC7551ERC20EnforcementTokenFrozenEvent { - /** - * @notice Emitted when a specific amount of tokens are frozen on an address. - * @param account The address whose tokens are frozen. - * @param value The number of tokens frozen. - * @param data Additional data related to the freezing action. - * @dev - * Same name as ERC-3643 but with a supplementary data parameter - * The event is emitted by freezePartialTokens and batchFreezePartialTokens functions - */ - event TokensFrozen(address indexed account, uint256 value, bytes data); - - /** - * @notice Emitted when a specific amount of tokens are unfrozen on an address. - * @param account The address whose tokens are unfrozen. - * @param value The number of tokens unfrozen. - * @param data Additional data related to the unfreezing action. - * @dev - * Same name as ERC-3643 but with a supplementary data parameter - * The event is emitted by `unfreezePartialTokens`, `batchUnfreezePartialTokens`and potentially `forcedTransfer` functions - */ - event TokensUnfrozen(address indexed account, uint256 value, bytes data); -} - -interface IERC7551ERC20Enforcement { - /* ============ View Functions ============ */ - /** - * @notice Returns the active (unfrozen) token balance of a given account. - * @param account The address to query. - * @return activeBalance_ The amount of tokens that can be transferred using standard ERC-20 functions. - */ - function getActiveBalanceOf(address account) external view returns (uint256 activeBalance_); - - /** - * @notice Returns the frozen token balance of a given account. - * @dev Frozen tokens cannot be transferred using standard ERC-20 functions. - * Implementations MAY support transferring frozen tokens using other mechanisms like `forcedTransfer`. - * If the active balance is insufficient to cover a transfer, `canTransfer` and `canTransferFrom` MUST return false. - * @param account The address to query. - * @return frozenBalance_ The amount of tokens that are frozen and non-transferable via ERC-20 `transfer` and `transferFrom`. - */ - function getFrozenTokens(address account) external view returns (uint256 frozenBalance_); - - /* ============ State Functions ============ */ - /** - * @notice Freezes a specified amount of tokens for a given account. - * @dev Emits a `TokensFrozen` event. - * @param account The address whose tokens will be frozen. - * @param amount The number of tokens to freeze. - * @param data Arbitrary additional data for logging or business logic. - */ - function freezePartialTokens(address account, uint256 amount, bytes memory data) external; - - - /** - * @notice Unfreezes a specified amount of tokens for a given account. - * @dev Emits a `TokensUnfrozen` event. - * @param account The address whose tokens will be unfrozen. - * @param amount The number of tokens to unfreeze. - * @param data Arbitrary additional data for logging or business logic. - */ - function unfreezePartialTokens(address account, uint256 amount, bytes memory data) external; - /** - * @notice Executes a forced transfer of tokens from one account to another. - * @dev Transfers `value` tokens from `account` to `to` without requiring the account’s consent. - * If the `account` does not have enough active (unfrozen) tokens, frozen tokens may be automatically unfrozen to fulfill the transfer. - * Emits a `Transfer` event. Emits a `TokensUnfrozen` event if frozen tokens are used. - * @param account The address to debit tokens from. - * @param to The address to credit tokens to. - * @param value The amount of tokens to transfer. - * @param data Optional additional metadata to accompany the transfer. - * @return success_ Returns true if the transfer was successful. - */ - function forcedTransfer(address account, address to, uint256 value, bytes calldata data) external returns (bool success_); -} - -interface IERC7551Compliance is IERC3643ComplianceRead { - /** - * @notice Checks if `spender` can transfer `value` tokens from `from` to `to` under compliance rules. - * @dev Does not check balances or access rights (Access Control). - * @param spender The address performing the transfer. - * @param from The source address. - * @param to The destination address. - * @param value The number of tokens to transfer. - * @return isCompliant True if the transfer complies with policy. - */ - function canTransferFrom( - address spender, - address from, - address to, - uint256 value - ) external view returns (bool); -} - -interface IERC7551Document { - /** - * @notice Returns the hash of the "Terms" document. - * @return hash_ The `bytes32` hash of the terms document. - */ - function termsHash() external view returns (bytes32 hash_); - - /** - * @notice Sets the terms hash and URI. - * @param _hash The new hash of the document. - * @param _uri The corresponding URI. - */ - function setTerms(bytes32 _hash, string calldata _uri) external; - - /** - * @notice Returns the metadata string (e.g. URL). - * @return metadata_ The metadata string. - */ - function metaData() external view returns (string memory metadata_); - - /** - * @notice Sets a new metadata string (e.g. URL). - * @param metaData_ The new metadata value. - */ - function setMetaData(string calldata metaData_) external; -} - -// lib/openzeppelin-contracts/contracts/metatx/ERC2771Context.sol - -// OpenZeppelin Contracts (last updated v5.1.0) (metatx/ERC2771Context.sol) - -/** - * @dev Context variant with ERC-2771 support. - * - * WARNING: Avoid using this pattern in contracts that rely in a specific calldata length as they'll - * be affected by any forwarder whose `msg.data` is suffixed with the `from` address according to the ERC-2771 - * specification adding the address size in bytes (20) to the calldata size. An example of an unexpected - * behavior could be an unintended fallback (or another function) invocation while trying to invoke the `receive` - * function only accessible if `msg.data.length == 0`. - * - * WARNING: The usage of `delegatecall` in this contract is dangerous and may result in context corruption. - * Any forwarded request to this contract triggering a `delegatecall` to itself will result in an invalid {_msgSender} - * recovery. - */ -abstract contract ERC2771Context is Context { - /// @custom:oz-upgrades-unsafe-allow state-variable-immutable - address private immutable _trustedForwarder; - - /** - * @dev Initializes the contract with a trusted forwarder, which will be able to - * invoke functions on this contract on behalf of other accounts. - * - * NOTE: The trusted forwarder can be replaced by overriding {trustedForwarder}. - */ - /// @custom:oz-upgrades-unsafe-allow constructor - constructor(address trustedForwarder_) { - _trustedForwarder = trustedForwarder_; - } - - /** - * @dev Returns the address of the trusted forwarder. - */ - function trustedForwarder() public view virtual returns (address) { - return _trustedForwarder; - } - - /** - * @dev Indicates whether any particular address is the trusted forwarder. - */ - function isTrustedForwarder(address forwarder) public view virtual returns (bool) { - return forwarder == trustedForwarder(); - } - - /** - * @dev Override for `msg.sender`. Defaults to the original `msg.sender` whenever - * a call is not performed by the trusted forwarder or the calldata length is less than - * 20 bytes (an address length). - */ - function _msgSender() internal view virtual override returns (address) { - uint256 calldataLength = msg.data.length; - uint256 contextSuffixLength = _contextSuffixLength(); - if (isTrustedForwarder(msg.sender) && calldataLength >= contextSuffixLength) { - return address(bytes20(msg.data[calldataLength - contextSuffixLength:])); - } else { - return super._msgSender(); - } - } - - /** - * @dev Override for `msg.data`. Defaults to the original `msg.data` whenever - * a call is not performed by the trusted forwarder or the calldata length is less than - * 20 bytes (an address length). - */ - function _msgData() internal view virtual override returns (bytes calldata) { - uint256 calldataLength = msg.data.length; - uint256 contextSuffixLength = _contextSuffixLength(); - if (isTrustedForwarder(msg.sender) && calldataLength >= contextSuffixLength) { - return msg.data[:calldataLength - contextSuffixLength]; - } else { - return super._msgData(); - } - } - - /** - * @dev ERC-2771 specifies the context as being a single address (20 bytes). - */ - function _contextSuffixLength() internal view virtual override returns (uint256) { - return 20; - } -} - -// lib/openzeppelin-contracts/contracts/utils/introspection/ERC165.sol - -// OpenZeppelin Contracts (last updated v5.1.0) (utils/introspection/ERC165.sol) - -/** - * @dev Implementation of the {IERC165} interface. - * - * Contracts that want to implement ERC-165 should inherit from this contract and override {supportsInterface} to check - * for the additional interface id that will be supported. For example: - * - * ```solidity - * function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) { - * return interfaceId == type(MyInterface).interfaceId || super.supportsInterface(interfaceId); - * } - * ``` - */ -abstract contract ERC165 is IERC165 { - /** - * @dev See {IERC165-supportsInterface}. - */ - function supportsInterface(bytes4 interfaceId) public view virtual returns (bool) { - return interfaceId == type(IERC165).interfaceId; - } -} - -// src/interfaces/IERC3643Compliance.sol - -/* ==== CMTAT === */ - -interface IERC3643Compliance is IERC3643ComplianceRead, IERC3643IComplianceContract { - - // events - event TokenBound(address token); - event TokenUnbound(address token); - - // functions - // initialization of the compliance contract - function bindToken(address token) external; - function unbindToken(address token) external; - - // check the parameters of the compliance contract - function isTokenBound(address token) external view returns (bool); - function getTokenBound() external view returns (address); - function getTokenBounds() external view returns (address[] memory); - - // compliance check and state update - function created(address to, uint256 value)external; - function destroyed(address from, uint256 value) external; -} - -// src/modules/VersionModule.sol - -/* ==== CMTAT === */ - -abstract contract VersionModule is IERC3643Base { - /* ============ State Variables ============ */ - /** - * @dev - * Get the current version of the smart contract - */ - string private constant VERSION = "3.0.0"; - /* ============ Events ============ */ - /*////////////////////////////////////////////////////////////// - PUBLIC/EXTERNAL FUNCTIONS - //////////////////////////////////////////////////////////////*/ - /** - * @inheritdoc IERC3643Base - */ - function version() public view virtual override(IERC3643Base) returns (string memory version_) { - return VERSION; - } -} - -// lib/openzeppelin-contracts/contracts/utils/math/Math.sol - -// OpenZeppelin Contracts (last updated v5.3.0) (utils/math/Math.sol) - -/** - * @dev Standard math utilities missing in the Solidity language. - */ -library Math { - enum Rounding { - Floor, // Toward negative infinity - Ceil, // Toward positive infinity - Trunc, // Toward zero - Expand // Away from zero - } - - /** - * @dev Return the 512-bit addition of two uint256. - * - * The result is stored in two 256 variables such that sum = high * 2²⁵⁶ + low. - */ - function add512(uint256 a, uint256 b) internal pure returns (uint256 high, uint256 low) { - assembly ("memory-safe") { - low := add(a, b) - high := lt(low, a) - } - } - - /** - * @dev Return the 512-bit multiplication of two uint256. - * - * The result is stored in two 256 variables such that product = high * 2²⁵⁶ + low. - */ - function mul512(uint256 a, uint256 b) internal pure returns (uint256 high, uint256 low) { - // 512-bit multiply [high low] = x * y. Compute the product mod 2²⁵⁶ and mod 2²⁵⁶ - 1, then use - // the Chinese Remainder Theorem to reconstruct the 512 bit result. The result is stored in two 256 - // variables such that product = high * 2²⁵⁶ + low. - assembly ("memory-safe") { - let mm := mulmod(a, b, not(0)) - low := mul(a, b) - high := sub(sub(mm, low), lt(mm, low)) - } - } - - /** - * @dev Returns the addition of two unsigned integers, with a success flag (no overflow). - */ - function tryAdd(uint256 a, uint256 b) internal pure returns (bool success, uint256 result) { - unchecked { - uint256 c = a + b; - success = c >= a; - result = c * SafeCast.toUint(success); - } - } - - /** - * @dev Returns the subtraction of two unsigned integers, with a success flag (no overflow). - */ - function trySub(uint256 a, uint256 b) internal pure returns (bool success, uint256 result) { - unchecked { - uint256 c = a - b; - success = c <= a; - result = c * SafeCast.toUint(success); - } - } - - /** - * @dev Returns the multiplication of two unsigned integers, with a success flag (no overflow). - */ - function tryMul(uint256 a, uint256 b) internal pure returns (bool success, uint256 result) { - unchecked { - uint256 c = a * b; - assembly ("memory-safe") { - // Only true when the multiplication doesn't overflow - // (c / a == b) || (a == 0) - success := or(eq(div(c, a), b), iszero(a)) - } - // equivalent to: success ? c : 0 - result = c * SafeCast.toUint(success); - } - } - - /** - * @dev Returns the division of two unsigned integers, with a success flag (no division by zero). - */ - function tryDiv(uint256 a, uint256 b) internal pure returns (bool success, uint256 result) { - unchecked { - success = b > 0; - assembly ("memory-safe") { - // The `DIV` opcode returns zero when the denominator is 0. - result := div(a, b) - } - } - } - - /** - * @dev Returns the remainder of dividing two unsigned integers, with a success flag (no division by zero). - */ - function tryMod(uint256 a, uint256 b) internal pure returns (bool success, uint256 result) { - unchecked { - success = b > 0; - assembly ("memory-safe") { - // The `MOD` opcode returns zero when the denominator is 0. - result := mod(a, b) - } - } - } - - /** - * @dev Unsigned saturating addition, bounds to `2²⁵⁶ - 1` instead of overflowing. - */ - function saturatingAdd(uint256 a, uint256 b) internal pure returns (uint256) { - (bool success, uint256 result) = tryAdd(a, b); - return ternary(success, result, type(uint256).max); - } - - /** - * @dev Unsigned saturating subtraction, bounds to zero instead of overflowing. - */ - function saturatingSub(uint256 a, uint256 b) internal pure returns (uint256) { - (, uint256 result) = trySub(a, b); - return result; - } - - /** - * @dev Unsigned saturating multiplication, bounds to `2²⁵⁶ - 1` instead of overflowing. - */ - function saturatingMul(uint256 a, uint256 b) internal pure returns (uint256) { - (bool success, uint256 result) = tryMul(a, b); - return ternary(success, result, type(uint256).max); - } - - /** - * @dev Branchless ternary evaluation for `a ? b : c`. Gas costs are constant. - * - * IMPORTANT: This function may reduce bytecode size and consume less gas when used standalone. - * However, the compiler may optimize Solidity ternary operations (i.e. `a ? b : c`) to only compute - * one branch when needed, making this function more expensive. - */ - function ternary(bool condition, uint256 a, uint256 b) internal pure returns (uint256) { - unchecked { - // branchless ternary works because: - // b ^ (a ^ b) == a - // b ^ 0 == b - return b ^ ((a ^ b) * SafeCast.toUint(condition)); - } - } - - /** - * @dev Returns the largest of two numbers. - */ - function max(uint256 a, uint256 b) internal pure returns (uint256) { - return ternary(a > b, a, b); - } - - /** - * @dev Returns the smallest of two numbers. - */ - function min(uint256 a, uint256 b) internal pure returns (uint256) { - return ternary(a < b, a, b); - } - - /** - * @dev Returns the average of two numbers. The result is rounded towards - * zero. - */ - function average(uint256 a, uint256 b) internal pure returns (uint256) { - // (a + b) / 2 can overflow. - return (a & b) + (a ^ b) / 2; - } - - /** - * @dev Returns the ceiling of the division of two numbers. - * - * This differs from standard division with `/` in that it rounds towards infinity instead - * of rounding towards zero. - */ - function ceilDiv(uint256 a, uint256 b) internal pure returns (uint256) { - if (b == 0) { - // Guarantee the same behavior as in a regular Solidity division. - Panic.panic(Panic.DIVISION_BY_ZERO); - } - - // The following calculation ensures accurate ceiling division without overflow. - // Since a is non-zero, (a - 1) / b will not overflow. - // The largest possible result occurs when (a - 1) / b is type(uint256).max, - // but the largest value we can obtain is type(uint256).max - 1, which happens - // when a = type(uint256).max and b = 1. - unchecked { - return SafeCast.toUint(a > 0) * ((a - 1) / b + 1); - } - } - - /** - * @dev Calculates floor(x * y / denominator) with full precision. Throws if result overflows a uint256 or - * denominator == 0. - * - * Original credit to Remco Bloemen under MIT license (https://xn--2-umb.com/21/muldiv) with further edits by - * Uniswap Labs also under MIT license. - */ - function mulDiv(uint256 x, uint256 y, uint256 denominator) internal pure returns (uint256 result) { - unchecked { - (uint256 high, uint256 low) = mul512(x, y); - - // Handle non-overflow cases, 256 by 256 division. - if (high == 0) { - // Solidity will revert if denominator == 0, unlike the div opcode on its own. - // The surrounding unchecked block does not change this fact. - // See https://docs.soliditylang.org/en/latest/control-structures.html#checked-or-unchecked-arithmetic. - return low / denominator; - } - - // Make sure the result is less than 2²⁵⁶. Also prevents denominator == 0. - if (denominator <= high) { - Panic.panic(ternary(denominator == 0, Panic.DIVISION_BY_ZERO, Panic.UNDER_OVERFLOW)); - } - - /////////////////////////////////////////////// - // 512 by 256 division. - /////////////////////////////////////////////// - - // Make division exact by subtracting the remainder from [high low]. - uint256 remainder; - assembly ("memory-safe") { - // Compute remainder using mulmod. - remainder := mulmod(x, y, denominator) - - // Subtract 256 bit number from 512 bit number. - high := sub(high, gt(remainder, low)) - low := sub(low, remainder) - } - - // Factor powers of two out of denominator and compute largest power of two divisor of denominator. - // Always >= 1. See https://cs.stackexchange.com/q/138556/92363. - - uint256 twos = denominator & (0 - denominator); - assembly ("memory-safe") { - // Divide denominator by twos. - denominator := div(denominator, twos) - - // Divide [high low] by twos. - low := div(low, twos) - - // Flip twos such that it is 2²⁵⁶ / twos. If twos is zero, then it becomes one. - twos := add(div(sub(0, twos), twos), 1) - } - - // Shift in bits from high into low. - low |= high * twos; - - // Invert denominator mod 2²⁵⁶. Now that denominator is an odd number, it has an inverse modulo 2²⁵⁶ such - // that denominator * inv ≡ 1 mod 2²⁵⁶. Compute the inverse by starting with a seed that is correct for - // four bits. That is, denominator * inv ≡ 1 mod 2⁴. - uint256 inverse = (3 * denominator) ^ 2; - - // Use the Newton-Raphson iteration to improve the precision. Thanks to Hensel's lifting lemma, this also - // works in modular arithmetic, doubling the correct bits in each step. - inverse *= 2 - denominator * inverse; // inverse mod 2⁸ - inverse *= 2 - denominator * inverse; // inverse mod 2¹⁶ - inverse *= 2 - denominator * inverse; // inverse mod 2³² - inverse *= 2 - denominator * inverse; // inverse mod 2⁶⁴ - inverse *= 2 - denominator * inverse; // inverse mod 2¹²⁸ - inverse *= 2 - denominator * inverse; // inverse mod 2²⁵⁶ - - // Because the division is now exact we can divide by multiplying with the modular inverse of denominator. - // This will give us the correct result modulo 2²⁵⁶. Since the preconditions guarantee that the outcome is - // less than 2²⁵⁶, this is the final result. We don't need to compute the high bits of the result and high - // is no longer required. - result = low * inverse; - return result; - } - } - - /** - * @dev Calculates x * y / denominator with full precision, following the selected rounding direction. - */ - function mulDiv(uint256 x, uint256 y, uint256 denominator, Rounding rounding) internal pure returns (uint256) { - return mulDiv(x, y, denominator) + SafeCast.toUint(unsignedRoundsUp(rounding) && mulmod(x, y, denominator) > 0); - } - - /** - * @dev Calculates floor(x * y >> n) with full precision. Throws if result overflows a uint256. - */ - function mulShr(uint256 x, uint256 y, uint8 n) internal pure returns (uint256 result) { - unchecked { - (uint256 high, uint256 low) = mul512(x, y); - if (high >= 1 << n) { - Panic.panic(Panic.UNDER_OVERFLOW); - } - return (high << (256 - n)) | (low >> n); - } - } - - /** - * @dev Calculates x * y >> n with full precision, following the selected rounding direction. - */ - function mulShr(uint256 x, uint256 y, uint8 n, Rounding rounding) internal pure returns (uint256) { - return mulShr(x, y, n) + SafeCast.toUint(unsignedRoundsUp(rounding) && mulmod(x, y, 1 << n) > 0); - } - - /** - * @dev Calculate the modular multiplicative inverse of a number in Z/nZ. - * - * If n is a prime, then Z/nZ is a field. In that case all elements are inversible, except 0. - * If n is not a prime, then Z/nZ is not a field, and some elements might not be inversible. - * - * If the input value is not inversible, 0 is returned. - * - * NOTE: If you know for sure that n is (big) a prime, it may be cheaper to use Fermat's little theorem and get the - * inverse using `Math.modExp(a, n - 2, n)`. See {invModPrime}. - */ - function invMod(uint256 a, uint256 n) internal pure returns (uint256) { - unchecked { - if (n == 0) return 0; - - // The inverse modulo is calculated using the Extended Euclidean Algorithm (iterative version) - // Used to compute integers x and y such that: ax + ny = gcd(a, n). - // When the gcd is 1, then the inverse of a modulo n exists and it's x. - // ax + ny = 1 - // ax = 1 + (-y)n - // ax ≡ 1 (mod n) # x is the inverse of a modulo n - - // If the remainder is 0 the gcd is n right away. - uint256 remainder = a % n; - uint256 gcd = n; - - // Therefore the initial coefficients are: - // ax + ny = gcd(a, n) = n - // 0a + 1n = n - int256 x = 0; - int256 y = 1; - - while (remainder != 0) { - uint256 quotient = gcd / remainder; - - (gcd, remainder) = ( - // The old remainder is the next gcd to try. - remainder, - // Compute the next remainder. - // Can't overflow given that (a % gcd) * (gcd // (a % gcd)) <= gcd - // where gcd is at most n (capped to type(uint256).max) - gcd - remainder * quotient - ); - - (x, y) = ( - // Increment the coefficient of a. - y, - // Decrement the coefficient of n. - // Can overflow, but the result is casted to uint256 so that the - // next value of y is "wrapped around" to a value between 0 and n - 1. - x - y * int256(quotient) - ); - } - - if (gcd != 1) return 0; // No inverse exists. - return ternary(x < 0, n - uint256(-x), uint256(x)); // Wrap the result if it's negative. - } - } - - /** - * @dev Variant of {invMod}. More efficient, but only works if `p` is known to be a prime greater than `2`. - * - * From https://en.wikipedia.org/wiki/Fermat%27s_little_theorem[Fermat's little theorem], we know that if p is - * prime, then `a**(p-1) ≡ 1 mod p`. As a consequence, we have `a * a**(p-2) ≡ 1 mod p`, which means that - * `a**(p-2)` is the modular multiplicative inverse of a in Fp. - * - * NOTE: this function does NOT check that `p` is a prime greater than `2`. - */ - function invModPrime(uint256 a, uint256 p) internal view returns (uint256) { - unchecked { - return Math.modExp(a, p - 2, p); - } - } - - /** - * @dev Returns the modular exponentiation of the specified base, exponent and modulus (b ** e % m) - * - * Requirements: - * - modulus can't be zero - * - underlying staticcall to precompile must succeed - * - * IMPORTANT: The result is only valid if the underlying call succeeds. When using this function, make - * sure the chain you're using it on supports the precompiled contract for modular exponentiation - * at address 0x05 as specified in https://eips.ethereum.org/EIPS/eip-198[EIP-198]. Otherwise, - * the underlying function will succeed given the lack of a revert, but the result may be incorrectly - * interpreted as 0. - */ - function modExp(uint256 b, uint256 e, uint256 m) internal view returns (uint256) { - (bool success, uint256 result) = tryModExp(b, e, m); - if (!success) { - Panic.panic(Panic.DIVISION_BY_ZERO); - } - return result; - } - - /** - * @dev Returns the modular exponentiation of the specified base, exponent and modulus (b ** e % m). - * It includes a success flag indicating if the operation succeeded. Operation will be marked as failed if trying - * to operate modulo 0 or if the underlying precompile reverted. - * - * IMPORTANT: The result is only valid if the success flag is true. When using this function, make sure the chain - * you're using it on supports the precompiled contract for modular exponentiation at address 0x05 as specified in - * https://eips.ethereum.org/EIPS/eip-198[EIP-198]. Otherwise, the underlying function will succeed given the lack - * of a revert, but the result may be incorrectly interpreted as 0. - */ - function tryModExp(uint256 b, uint256 e, uint256 m) internal view returns (bool success, uint256 result) { - if (m == 0) return (false, 0); - assembly ("memory-safe") { - let ptr := mload(0x40) - // | Offset | Content | Content (Hex) | - // |-----------|------------|--------------------------------------------------------------------| - // | 0x00:0x1f | size of b | 0x0000000000000000000000000000000000000000000000000000000000000020 | - // | 0x20:0x3f | size of e | 0x0000000000000000000000000000000000000000000000000000000000000020 | - // | 0x40:0x5f | size of m | 0x0000000000000000000000000000000000000000000000000000000000000020 | - // | 0x60:0x7f | value of b | 0x<.............................................................b> | - // | 0x80:0x9f | value of e | 0x<.............................................................e> | - // | 0xa0:0xbf | value of m | 0x<.............................................................m> | - mstore(ptr, 0x20) - mstore(add(ptr, 0x20), 0x20) - mstore(add(ptr, 0x40), 0x20) - mstore(add(ptr, 0x60), b) - mstore(add(ptr, 0x80), e) - mstore(add(ptr, 0xa0), m) - - // Given the result < m, it's guaranteed to fit in 32 bytes, - // so we can use the memory scratch space located at offset 0. - success := staticcall(gas(), 0x05, ptr, 0xc0, 0x00, 0x20) - result := mload(0x00) - } - } - - /** - * @dev Variant of {modExp} that supports inputs of arbitrary length. - */ - function modExp(bytes memory b, bytes memory e, bytes memory m) internal view returns (bytes memory) { - (bool success, bytes memory result) = tryModExp(b, e, m); - if (!success) { - Panic.panic(Panic.DIVISION_BY_ZERO); - } - return result; - } - - /** - * @dev Variant of {tryModExp} that supports inputs of arbitrary length. - */ - function tryModExp( - bytes memory b, - bytes memory e, - bytes memory m - ) internal view returns (bool success, bytes memory result) { - if (_zeroBytes(m)) return (false, new bytes(0)); - - uint256 mLen = m.length; - - // Encode call args in result and move the free memory pointer - result = abi.encodePacked(b.length, e.length, mLen, b, e, m); - - assembly ("memory-safe") { - let dataPtr := add(result, 0x20) - // Write result on top of args to avoid allocating extra memory. - success := staticcall(gas(), 0x05, dataPtr, mload(result), dataPtr, mLen) - // Overwrite the length. - // result.length > returndatasize() is guaranteed because returndatasize() == m.length - mstore(result, mLen) - // Set the memory pointer after the returned data. - mstore(0x40, add(dataPtr, mLen)) - } - } - - /** - * @dev Returns whether the provided byte array is zero. - */ - function _zeroBytes(bytes memory byteArray) private pure returns (bool) { - for (uint256 i = 0; i < byteArray.length; ++i) { - if (byteArray[i] != 0) { - return false; - } - } - return true; - } - - /** - * @dev Returns the square root of a number. If the number is not a perfect square, the value is rounded - * towards zero. - * - * This method is based on Newton's method for computing square roots; the algorithm is restricted to only - * using integer operations. - */ - function sqrt(uint256 a) internal pure returns (uint256) { - unchecked { - // Take care of easy edge cases when a == 0 or a == 1 - if (a <= 1) { - return a; - } - - // In this function, we use Newton's method to get a root of `f(x) := x² - a`. It involves building a - // sequence x_n that converges toward sqrt(a). For each iteration x_n, we also define the error between - // the current value as `ε_n = | x_n - sqrt(a) |`. - // - // For our first estimation, we consider `e` the smallest power of 2 which is bigger than the square root - // of the target. (i.e. `2**(e-1) ≤ sqrt(a) < 2**e`). We know that `e ≤ 128` because `(2¹²⁸)² = 2²⁵⁶` is - // bigger than any uint256. - // - // By noticing that - // `2**(e-1) ≤ sqrt(a) < 2**e → (2**(e-1))² ≤ a < (2**e)² → 2**(2*e-2) ≤ a < 2**(2*e)` - // we can deduce that `e - 1` is `log2(a) / 2`. We can thus compute `x_n = 2**(e-1)` using a method similar - // to the msb function. - uint256 aa = a; - uint256 xn = 1; - - if (aa >= (1 << 128)) { - aa >>= 128; - xn <<= 64; - } - if (aa >= (1 << 64)) { - aa >>= 64; - xn <<= 32; - } - if (aa >= (1 << 32)) { - aa >>= 32; - xn <<= 16; - } - if (aa >= (1 << 16)) { - aa >>= 16; - xn <<= 8; - } - if (aa >= (1 << 8)) { - aa >>= 8; - xn <<= 4; - } - if (aa >= (1 << 4)) { - aa >>= 4; - xn <<= 2; - } - if (aa >= (1 << 2)) { - xn <<= 1; - } - - // We now have x_n such that `x_n = 2**(e-1) ≤ sqrt(a) < 2**e = 2 * x_n`. This implies ε_n ≤ 2**(e-1). - // - // We can refine our estimation by noticing that the middle of that interval minimizes the error. - // If we move x_n to equal 2**(e-1) + 2**(e-2), then we reduce the error to ε_n ≤ 2**(e-2). - // This is going to be our x_0 (and ε_0) - xn = (3 * xn) >> 1; // ε_0 := | x_0 - sqrt(a) | ≤ 2**(e-2) - - // From here, Newton's method give us: - // x_{n+1} = (x_n + a / x_n) / 2 - // - // One should note that: - // x_{n+1}² - a = ((x_n + a / x_n) / 2)² - a - // = ((x_n² + a) / (2 * x_n))² - a - // = (x_n⁴ + 2 * a * x_n² + a²) / (4 * x_n²) - a - // = (x_n⁴ + 2 * a * x_n² + a² - 4 * a * x_n²) / (4 * x_n²) - // = (x_n⁴ - 2 * a * x_n² + a²) / (4 * x_n²) - // = (x_n² - a)² / (2 * x_n)² - // = ((x_n² - a) / (2 * x_n))² - // ≥ 0 - // Which proves that for all n ≥ 1, sqrt(a) ≤ x_n - // - // This gives us the proof of quadratic convergence of the sequence: - // ε_{n+1} = | x_{n+1} - sqrt(a) | - // = | (x_n + a / x_n) / 2 - sqrt(a) | - // = | (x_n² + a - 2*x_n*sqrt(a)) / (2 * x_n) | - // = | (x_n - sqrt(a))² / (2 * x_n) | - // = | ε_n² / (2 * x_n) | - // = ε_n² / | (2 * x_n) | - // - // For the first iteration, we have a special case where x_0 is known: - // ε_1 = ε_0² / | (2 * x_0) | - // ≤ (2**(e-2))² / (2 * (2**(e-1) + 2**(e-2))) - // ≤ 2**(2*e-4) / (3 * 2**(e-1)) - // ≤ 2**(e-3) / 3 - // ≤ 2**(e-3-log2(3)) - // ≤ 2**(e-4.5) - // - // For the following iterations, we use the fact that, 2**(e-1) ≤ sqrt(a) ≤ x_n: - // ε_{n+1} = ε_n² / | (2 * x_n) | - // ≤ (2**(e-k))² / (2 * 2**(e-1)) - // ≤ 2**(2*e-2*k) / 2**e - // ≤ 2**(e-2*k) - xn = (xn + a / xn) >> 1; // ε_1 := | x_1 - sqrt(a) | ≤ 2**(e-4.5) -- special case, see above - xn = (xn + a / xn) >> 1; // ε_2 := | x_2 - sqrt(a) | ≤ 2**(e-9) -- general case with k = 4.5 - xn = (xn + a / xn) >> 1; // ε_3 := | x_3 - sqrt(a) | ≤ 2**(e-18) -- general case with k = 9 - xn = (xn + a / xn) >> 1; // ε_4 := | x_4 - sqrt(a) | ≤ 2**(e-36) -- general case with k = 18 - xn = (xn + a / xn) >> 1; // ε_5 := | x_5 - sqrt(a) | ≤ 2**(e-72) -- general case with k = 36 - xn = (xn + a / xn) >> 1; // ε_6 := | x_6 - sqrt(a) | ≤ 2**(e-144) -- general case with k = 72 - - // Because e ≤ 128 (as discussed during the first estimation phase), we know have reached a precision - // ε_6 ≤ 2**(e-144) < 1. Given we're operating on integers, then we can ensure that xn is now either - // sqrt(a) or sqrt(a) + 1. - return xn - SafeCast.toUint(xn > a / xn); - } - } - - /** - * @dev Calculates sqrt(a), following the selected rounding direction. - */ - function sqrt(uint256 a, Rounding rounding) internal pure returns (uint256) { - unchecked { - uint256 result = sqrt(a); - return result + SafeCast.toUint(unsignedRoundsUp(rounding) && result * result < a); - } - } - - /** - * @dev Return the log in base 2 of a positive value rounded towards zero. - * Returns 0 if given 0. - */ - function log2(uint256 x) internal pure returns (uint256 r) { - // If value has upper 128 bits set, log2 result is at least 128 - r = SafeCast.toUint(x > 0xffffffffffffffffffffffffffffffff) << 7; - // If upper 64 bits of 128-bit half set, add 64 to result - r |= SafeCast.toUint((x >> r) > 0xffffffffffffffff) << 6; - // If upper 32 bits of 64-bit half set, add 32 to result - r |= SafeCast.toUint((x >> r) > 0xffffffff) << 5; - // If upper 16 bits of 32-bit half set, add 16 to result - r |= SafeCast.toUint((x >> r) > 0xffff) << 4; - // If upper 8 bits of 16-bit half set, add 8 to result - r |= SafeCast.toUint((x >> r) > 0xff) << 3; - // If upper 4 bits of 8-bit half set, add 4 to result - r |= SafeCast.toUint((x >> r) > 0xf) << 2; - - // Shifts value right by the current result and use it as an index into this lookup table: - // - // | x (4 bits) | index | table[index] = MSB position | - // |------------|---------|-----------------------------| - // | 0000 | 0 | table[0] = 0 | - // | 0001 | 1 | table[1] = 0 | - // | 0010 | 2 | table[2] = 1 | - // | 0011 | 3 | table[3] = 1 | - // | 0100 | 4 | table[4] = 2 | - // | 0101 | 5 | table[5] = 2 | - // | 0110 | 6 | table[6] = 2 | - // | 0111 | 7 | table[7] = 2 | - // | 1000 | 8 | table[8] = 3 | - // | 1001 | 9 | table[9] = 3 | - // | 1010 | 10 | table[10] = 3 | - // | 1011 | 11 | table[11] = 3 | - // | 1100 | 12 | table[12] = 3 | - // | 1101 | 13 | table[13] = 3 | - // | 1110 | 14 | table[14] = 3 | - // | 1111 | 15 | table[15] = 3 | - // - // The lookup table is represented as a 32-byte value with the MSB positions for 0-15 in the last 16 bytes. - assembly ("memory-safe") { - r := or(r, byte(shr(r, x), 0x0000010102020202030303030303030300000000000000000000000000000000)) - } - } - - /** - * @dev Return the log in base 2, following the selected rounding direction, of a positive value. - * Returns 0 if given 0. - */ - function log2(uint256 value, Rounding rounding) internal pure returns (uint256) { - unchecked { - uint256 result = log2(value); - return result + SafeCast.toUint(unsignedRoundsUp(rounding) && 1 << result < value); - } - } - - /** - * @dev Return the log in base 10 of a positive value rounded towards zero. - * Returns 0 if given 0. - */ - function log10(uint256 value) internal pure returns (uint256) { - uint256 result = 0; - unchecked { - if (value >= 10 ** 64) { - value /= 10 ** 64; - result += 64; - } - if (value >= 10 ** 32) { - value /= 10 ** 32; - result += 32; - } - if (value >= 10 ** 16) { - value /= 10 ** 16; - result += 16; - } - if (value >= 10 ** 8) { - value /= 10 ** 8; - result += 8; - } - if (value >= 10 ** 4) { - value /= 10 ** 4; - result += 4; - } - if (value >= 10 ** 2) { - value /= 10 ** 2; - result += 2; - } - if (value >= 10 ** 1) { - result += 1; - } - } - return result; - } - - /** - * @dev Return the log in base 10, following the selected rounding direction, of a positive value. - * Returns 0 if given 0. - */ - function log10(uint256 value, Rounding rounding) internal pure returns (uint256) { - unchecked { - uint256 result = log10(value); - return result + SafeCast.toUint(unsignedRoundsUp(rounding) && 10 ** result < value); - } - } - - /** - * @dev Return the log in base 256 of a positive value rounded towards zero. - * Returns 0 if given 0. - * - * Adding one to the result gives the number of pairs of hex symbols needed to represent `value` as a hex string. - */ - function log256(uint256 x) internal pure returns (uint256 r) { - // If value has upper 128 bits set, log2 result is at least 128 - r = SafeCast.toUint(x > 0xffffffffffffffffffffffffffffffff) << 7; - // If upper 64 bits of 128-bit half set, add 64 to result - r |= SafeCast.toUint((x >> r) > 0xffffffffffffffff) << 6; - // If upper 32 bits of 64-bit half set, add 32 to result - r |= SafeCast.toUint((x >> r) > 0xffffffff) << 5; - // If upper 16 bits of 32-bit half set, add 16 to result - r |= SafeCast.toUint((x >> r) > 0xffff) << 4; - // Add 1 if upper 8 bits of 16-bit half set, and divide accumulated result by 8 - return (r >> 3) | SafeCast.toUint((x >> r) > 0xff); - } - - /** - * @dev Return the log in base 256, following the selected rounding direction, of a positive value. - * Returns 0 if given 0. - */ - function log256(uint256 value, Rounding rounding) internal pure returns (uint256) { - unchecked { - uint256 result = log256(value); - return result + SafeCast.toUint(unsignedRoundsUp(rounding) && 1 << (result << 3) < value); - } - } - - /** - * @dev Returns whether a provided rounding mode is considered rounding up for unsigned integers. - */ - function unsignedRoundsUp(Rounding rounding) internal pure returns (bool) { - return uint8(rounding) % 2 == 1; - } -} - -// src/modules/MetaTxModuleStandalone.sol - -/* ==== OpenZeppelin === */ - -/** - * @dev Meta transaction (gasless) module. - */ -abstract contract MetaTxModuleStandalone is ERC2771Context { - constructor(address trustedForwarder) ERC2771Context(trustedForwarder) { - // Nothing to do - } -} - -// lib/CMTAT/contracts/interfaces/engine/IRuleEngine.sol - -/* -* @title Minimum interface to define a RuleEngine -*/ -interface IRuleEngine is IERC1404Extend, IERC7551Compliance, IERC3643IComplianceContract { - /** - * @notice - * Function called whenever tokens are transferred from one wallet to another - * @dev - * Must revert if the transfer is invalid - * Same name as ERC-3643 but with one supplementary argument `spender` - * This function can be used to update state variables of the RuleEngine contract - * This function can be called ONLY by the token contract bound to the RuleEngine - * @param spender spender address (sender) - * @param from token holder address - * @param to receiver address - * @param value value of tokens involved in the transfer - */ - function transferred(address spender, address from, address to, uint256 value) external; -} - -// lib/openzeppelin-contracts/contracts/access/AccessControl.sol - -// OpenZeppelin Contracts (last updated v5.3.0) (access/AccessControl.sol) - -/** - * @dev Contract module that allows children to implement role-based access - * control mechanisms. This is a lightweight version that doesn't allow enumerating role - * members except through off-chain means by accessing the contract event logs. Some - * applications may benefit from on-chain enumerability, for those cases see - * {AccessControlEnumerable}. - * - * Roles are referred to by their `bytes32` identifier. These should be exposed - * in the external API and be unique. The best way to achieve this is by - * using `public constant` hash digests: - * - * ```solidity - * bytes32 public constant MY_ROLE = keccak256("MY_ROLE"); - * ``` - * - * Roles can be used to represent a set of permissions. To restrict access to a - * function call, use {hasRole}: - * - * ```solidity - * function foo() public { - * require(hasRole(MY_ROLE, msg.sender)); - * ... - * } - * ``` - * - * Roles can be granted and revoked dynamically via the {grantRole} and - * {revokeRole} functions. Each role has an associated admin role, and only - * accounts that have a role's admin role can call {grantRole} and {revokeRole}. - * - * By default, the admin role for all roles is `DEFAULT_ADMIN_ROLE`, which means - * that only accounts with this role will be able to grant or revoke other - * roles. More complex role relationships can be created by using - * {_setRoleAdmin}. - * - * WARNING: The `DEFAULT_ADMIN_ROLE` is also its own admin: it has permission to - * grant and revoke this role. Extra precautions should be taken to secure - * accounts that have been granted it. We recommend using {AccessControlDefaultAdminRules} - * to enforce additional security measures for this role. - */ -abstract contract AccessControl is Context, IAccessControl, ERC165 { - struct RoleData { - mapping(address account => bool) hasRole; - bytes32 adminRole; - } - - mapping(bytes32 role => RoleData) private _roles; - - bytes32 public constant DEFAULT_ADMIN_ROLE = 0x00; - - /** - * @dev Modifier that checks that an account has a specific role. Reverts - * with an {AccessControlUnauthorizedAccount} error including the required role. - */ - modifier onlyRole(bytes32 role) { - _checkRole(role); - _; - } - - /** - * @dev See {IERC165-supportsInterface}. - */ - function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) { - return interfaceId == type(IAccessControl).interfaceId || super.supportsInterface(interfaceId); - } - - /** - * @dev Returns `true` if `account` has been granted `role`. - */ - function hasRole(bytes32 role, address account) public view virtual returns (bool) { - return _roles[role].hasRole[account]; - } - - /** - * @dev Reverts with an {AccessControlUnauthorizedAccount} error if `_msgSender()` - * is missing `role`. Overriding this function changes the behavior of the {onlyRole} modifier. - */ - function _checkRole(bytes32 role) internal view virtual { - _checkRole(role, _msgSender()); - } - - /** - * @dev Reverts with an {AccessControlUnauthorizedAccount} error if `account` - * is missing `role`. - */ - function _checkRole(bytes32 role, address account) internal view virtual { - if (!hasRole(role, account)) { - revert AccessControlUnauthorizedAccount(account, role); - } - } - - /** - * @dev Returns the admin role that controls `role`. See {grantRole} and - * {revokeRole}. - * - * To change a role's admin, use {_setRoleAdmin}. - */ - function getRoleAdmin(bytes32 role) public view virtual returns (bytes32) { - return _roles[role].adminRole; - } - - /** - * @dev Grants `role` to `account`. - * - * If `account` had not been already granted `role`, emits a {RoleGranted} - * event. - * - * Requirements: - * - * - the caller must have ``role``'s admin role. - * - * May emit a {RoleGranted} event. - */ - function grantRole(bytes32 role, address account) public virtual onlyRole(getRoleAdmin(role)) { - _grantRole(role, account); - } - - /** - * @dev Revokes `role` from `account`. - * - * If `account` had been granted `role`, emits a {RoleRevoked} event. - * - * Requirements: - * - * - the caller must have ``role``'s admin role. - * - * May emit a {RoleRevoked} event. - */ - function revokeRole(bytes32 role, address account) public virtual onlyRole(getRoleAdmin(role)) { - _revokeRole(role, account); - } - - /** - * @dev Revokes `role` from the calling account. - * - * Roles are often managed via {grantRole} and {revokeRole}: this function's - * purpose is to provide a mechanism for accounts to lose their privileges - * if they are compromised (such as when a trusted device is misplaced). - * - * If the calling account had been revoked `role`, emits a {RoleRevoked} - * event. - * - * Requirements: - * - * - the caller must be `callerConfirmation`. - * - * May emit a {RoleRevoked} event. - */ - function renounceRole(bytes32 role, address callerConfirmation) public virtual { - if (callerConfirmation != _msgSender()) { - revert AccessControlBadConfirmation(); - } - - _revokeRole(role, callerConfirmation); - } - - /** - * @dev Sets `adminRole` as ``role``'s admin role. - * - * Emits a {RoleAdminChanged} event. - */ - function _setRoleAdmin(bytes32 role, bytes32 adminRole) internal virtual { - bytes32 previousAdminRole = getRoleAdmin(role); - _roles[role].adminRole = adminRole; - emit RoleAdminChanged(role, previousAdminRole, adminRole); - } - - /** - * @dev Attempts to grant `role` to `account` and returns a boolean indicating if `role` was granted. - * - * Internal function without access restriction. - * - * May emit a {RoleGranted} event. - */ - function _grantRole(bytes32 role, address account) internal virtual returns (bool) { - if (!hasRole(role, account)) { - _roles[role].hasRole[account] = true; - emit RoleGranted(role, account, _msgSender()); - return true; - } else { - return false; - } - } - - /** - * @dev Attempts to revoke `role` from `account` and returns a boolean indicating if `role` was revoked. - * - * Internal function without access restriction. - * - * May emit a {RoleRevoked} event. - */ - function _revokeRole(bytes32 role, address account) internal virtual returns (bool) { - if (hasRole(role, account)) { - _roles[role].hasRole[account] = false; - emit RoleRevoked(role, account, _msgSender()); - return true; - } else { - return false; - } - } -} - -// src/interfaces/IRule.sol - -/* ==== CMTAT === */ - -/* ==== Interfaces === */ - -interface IRule is IRuleEngine { - /** - * @dev Returns true if the restriction code exists, and false otherwise. - */ - function canReturnTransferRestrictionCode( - uint8 restrictionCode - ) external view returns (bool); -} - -// src/interfaces/IRulesManagementModule.sol - -/* ==== Interfaces === */ - -interface IRulesManagementModule { - /** - * @notice Defines the rules for the rule engine. - * @dev Sets the list of rule contract addresses for s. - * Any previously set rules will be completely overwritten by the new list. - * Rules should be deployed contracts that implement the expected interface. - * @param rules_ The array of addresses representing the new rules to be set. - * @dev Revert if one rule is a zero address or if the rule is already present - */ - function setRules(IRule[] calldata rules_) external; - - /** - * @notice Returns the number of rules currently set for s. - * @dev The count corresponds to the total number of elements in the rules array. - * @return The number of rules. - */ - function rulesCount() external view returns (uint256); - - /** - * @notice Retrieves the rule address at a specific index. - * @dev The index corresponds to the position in the rules array. - * Reverts if `ruleId` is out of bounds. - * @param ruleId The index of the rule to retrieve. - * @return The address of the rule contract. - */ - function rule(uint256 ruleId) external view returns (address); - - /** - * @notice Returns the full list of rules. - * @dev This is a view-only function that returns all the currently stored rule addresses. - * @return An array containing all the rule contract addresses. - */ - function rules() external view returns (address[] memory); - - /** - * @notice Clear all the rules of the array of rules - * - */ - function clearRules() external; - - /** - * @notice Add a rule to the array of rules - * Revert if one rule is a zero address or if the rule is already present - * - */ - function addRule( - IRule rule_ - ) external; - - /** - * @notice Remove a rule from the array of rules - * Revert if the rule found at the specified index does not match the rule in argument - * @param rule_ address of the target rule - * - * - */ - function removeRule( - IRule rule_ - ) external; - - /** - * @notice Check if a rule is present - * - */ - function containsRule(IRule rule_) external returns (bool); -} - -// src/modules/library/RulesManagementModuleInvariantStorage.sol - -abstract contract RulesManagementModuleInvariantStorage { - /* ==== Errors === */ - error RuleEngine_RuleAddressZeroNotAllowed(); - error RuleEngine_RuleAlreadyExists(); - error RuleEngine_RuleDoNotMatch(); - error RuleEngine_ArrayIsEmpty(); - - /* ============ Events ============ */ - /// @notice Generate when a rule is added - event AddRule(IRule indexed rule); - /// @notice Generate when a rule is removed - event RemoveRule(IRule indexed rule); - /// @notice Generate when all the rules are cleared - event ClearRules(); - - /* ==== Constant === */ - /// @notice Role to manage the ruleEngine - bytes32 public constant RULE_ENGINE_OPERATOR_ROLE = - keccak256("RULE_ENGINE_OPERATOR_ROLE"); -} - -// lib/openzeppelin-contracts/contracts/utils/Arrays.sol - -// OpenZeppelin Contracts (last updated v5.3.0) (utils/Arrays.sol) -// This file was procedurally generated from scripts/generate/templates/Arrays.js. - -/** - * @dev Collection of functions related to array types. - */ -library Arrays { - using SlotDerivation for bytes32; - using StorageSlot for bytes32; - - /** - * @dev Sort an array of uint256 (in memory) following the provided comparator function. - * - * This function does the sorting "in place", meaning that it overrides the input. The object is returned for - * convenience, but that returned value can be discarded safely if the caller has a memory pointer to the array. - * - * NOTE: this function's cost is `O(n · log(n))` in average and `O(n²)` in the worst case, with n the length of the - * array. Using it in view functions that are executed through `eth_call` is safe, but one should be very careful - * when executing this as part of a transaction. If the array being sorted is too large, the sort operation may - * consume more gas than is available in a block, leading to potential DoS. - * - * IMPORTANT: Consider memory side-effects when using custom comparator functions that access memory in an unsafe way. - */ - function sort( - uint256[] memory array, - function(uint256, uint256) pure returns (bool) comp - ) internal pure returns (uint256[] memory) { - _quickSort(_begin(array), _end(array), comp); - return array; - } - - /** - * @dev Variant of {sort} that sorts an array of uint256 in increasing order. - */ - function sort(uint256[] memory array) internal pure returns (uint256[] memory) { - sort(array, Comparators.lt); - return array; - } - - /** - * @dev Sort an array of address (in memory) following the provided comparator function. - * - * This function does the sorting "in place", meaning that it overrides the input. The object is returned for - * convenience, but that returned value can be discarded safely if the caller has a memory pointer to the array. - * - * NOTE: this function's cost is `O(n · log(n))` in average and `O(n²)` in the worst case, with n the length of the - * array. Using it in view functions that are executed through `eth_call` is safe, but one should be very careful - * when executing this as part of a transaction. If the array being sorted is too large, the sort operation may - * consume more gas than is available in a block, leading to potential DoS. - * - * IMPORTANT: Consider memory side-effects when using custom comparator functions that access memory in an unsafe way. - */ - function sort( - address[] memory array, - function(address, address) pure returns (bool) comp - ) internal pure returns (address[] memory) { - sort(_castToUint256Array(array), _castToUint256Comp(comp)); - return array; - } - - /** - * @dev Variant of {sort} that sorts an array of address in increasing order. - */ - function sort(address[] memory array) internal pure returns (address[] memory) { - sort(_castToUint256Array(array), Comparators.lt); - return array; - } - - /** - * @dev Sort an array of bytes32 (in memory) following the provided comparator function. - * - * This function does the sorting "in place", meaning that it overrides the input. The object is returned for - * convenience, but that returned value can be discarded safely if the caller has a memory pointer to the array. - * - * NOTE: this function's cost is `O(n · log(n))` in average and `O(n²)` in the worst case, with n the length of the - * array. Using it in view functions that are executed through `eth_call` is safe, but one should be very careful - * when executing this as part of a transaction. If the array being sorted is too large, the sort operation may - * consume more gas than is available in a block, leading to potential DoS. - * - * IMPORTANT: Consider memory side-effects when using custom comparator functions that access memory in an unsafe way. - */ - function sort( - bytes32[] memory array, - function(bytes32, bytes32) pure returns (bool) comp - ) internal pure returns (bytes32[] memory) { - sort(_castToUint256Array(array), _castToUint256Comp(comp)); - return array; - } - - /** - * @dev Variant of {sort} that sorts an array of bytes32 in increasing order. - */ - function sort(bytes32[] memory array) internal pure returns (bytes32[] memory) { - sort(_castToUint256Array(array), Comparators.lt); - return array; - } - - /** - * @dev Performs a quick sort of a segment of memory. The segment sorted starts at `begin` (inclusive), and stops - * at end (exclusive). Sorting follows the `comp` comparator. - * - * Invariant: `begin <= end`. This is the case when initially called by {sort} and is preserved in subcalls. - * - * IMPORTANT: Memory locations between `begin` and `end` are not validated/zeroed. This function should - * be used only if the limits are within a memory array. - */ - function _quickSort(uint256 begin, uint256 end, function(uint256, uint256) pure returns (bool) comp) private pure { - unchecked { - if (end - begin < 0x40) return; - - // Use first element as pivot - uint256 pivot = _mload(begin); - // Position where the pivot should be at the end of the loop - uint256 pos = begin; - - for (uint256 it = begin + 0x20; it < end; it += 0x20) { - if (comp(_mload(it), pivot)) { - // If the value stored at the iterator's position comes before the pivot, we increment the - // position of the pivot and move the value there. - pos += 0x20; - _swap(pos, it); - } - } - - _swap(begin, pos); // Swap pivot into place - _quickSort(begin, pos, comp); // Sort the left side of the pivot - _quickSort(pos + 0x20, end, comp); // Sort the right side of the pivot - } - } - - /** - * @dev Pointer to the memory location of the first element of `array`. - */ - function _begin(uint256[] memory array) private pure returns (uint256 ptr) { - assembly ("memory-safe") { - ptr := add(array, 0x20) - } - } - - /** - * @dev Pointer to the memory location of the first memory word (32bytes) after `array`. This is the memory word - * that comes just after the last element of the array. - */ - function _end(uint256[] memory array) private pure returns (uint256 ptr) { - unchecked { - return _begin(array) + array.length * 0x20; - } - } - - /** - * @dev Load memory word (as a uint256) at location `ptr`. - */ - function _mload(uint256 ptr) private pure returns (uint256 value) { - assembly { - value := mload(ptr) - } - } - - /** - * @dev Swaps the elements memory location `ptr1` and `ptr2`. - */ - function _swap(uint256 ptr1, uint256 ptr2) private pure { - assembly { - let value1 := mload(ptr1) - let value2 := mload(ptr2) - mstore(ptr1, value2) - mstore(ptr2, value1) - } - } - - /// @dev Helper: low level cast address memory array to uint256 memory array - function _castToUint256Array(address[] memory input) private pure returns (uint256[] memory output) { - assembly { - output := input - } - } - - /// @dev Helper: low level cast bytes32 memory array to uint256 memory array - function _castToUint256Array(bytes32[] memory input) private pure returns (uint256[] memory output) { - assembly { - output := input - } - } - - /// @dev Helper: low level cast address comp function to uint256 comp function - function _castToUint256Comp( - function(address, address) pure returns (bool) input - ) private pure returns (function(uint256, uint256) pure returns (bool) output) { - assembly { - output := input - } - } - - /// @dev Helper: low level cast bytes32 comp function to uint256 comp function - function _castToUint256Comp( - function(bytes32, bytes32) pure returns (bool) input - ) private pure returns (function(uint256, uint256) pure returns (bool) output) { - assembly { - output := input - } - } - - /** - * @dev Searches a sorted `array` and returns the first index that contains - * a value greater or equal to `element`. If no such index exists (i.e. all - * values in the array are strictly less than `element`), the array length is - * returned. Time complexity O(log n). - * - * NOTE: The `array` is expected to be sorted in ascending order, and to - * contain no repeated elements. - * - * IMPORTANT: Deprecated. This implementation behaves as {lowerBound} but lacks - * support for repeated elements in the array. The {lowerBound} function should - * be used instead. - */ - function findUpperBound(uint256[] storage array, uint256 element) internal view returns (uint256) { - uint256 low = 0; - uint256 high = array.length; - - if (high == 0) { - return 0; - } - - while (low < high) { - uint256 mid = Math.average(low, high); - - // Note that mid will always be strictly less than high (i.e. it will be a valid array index) - // because Math.average rounds towards zero (it does integer division with truncation). - if (unsafeAccess(array, mid).value > element) { - high = mid; - } else { - low = mid + 1; - } - } - - // At this point `low` is the exclusive upper bound. We will return the inclusive upper bound. - if (low > 0 && unsafeAccess(array, low - 1).value == element) { - return low - 1; - } else { - return low; - } - } - - /** - * @dev Searches an `array` sorted in ascending order and returns the first - * index that contains a value greater or equal than `element`. If no such index - * exists (i.e. all values in the array are strictly less than `element`), the array - * length is returned. Time complexity O(log n). - * - * See C++'s https://en.cppreference.com/w/cpp/algorithm/lower_bound[lower_bound]. - */ - function lowerBound(uint256[] storage array, uint256 element) internal view returns (uint256) { - uint256 low = 0; - uint256 high = array.length; - - if (high == 0) { - return 0; - } - - while (low < high) { - uint256 mid = Math.average(low, high); - - // Note that mid will always be strictly less than high (i.e. it will be a valid array index) - // because Math.average rounds towards zero (it does integer division with truncation). - if (unsafeAccess(array, mid).value < element) { - // this cannot overflow because mid < high - unchecked { - low = mid + 1; - } - } else { - high = mid; - } - } - - return low; - } - - /** - * @dev Searches an `array` sorted in ascending order and returns the first - * index that contains a value strictly greater than `element`. If no such index - * exists (i.e. all values in the array are strictly less than `element`), the array - * length is returned. Time complexity O(log n). - * - * See C++'s https://en.cppreference.com/w/cpp/algorithm/upper_bound[upper_bound]. - */ - function upperBound(uint256[] storage array, uint256 element) internal view returns (uint256) { - uint256 low = 0; - uint256 high = array.length; - - if (high == 0) { - return 0; - } - - while (low < high) { - uint256 mid = Math.average(low, high); - - // Note that mid will always be strictly less than high (i.e. it will be a valid array index) - // because Math.average rounds towards zero (it does integer division with truncation). - if (unsafeAccess(array, mid).value > element) { - high = mid; - } else { - // this cannot overflow because mid < high - unchecked { - low = mid + 1; - } - } - } - - return low; - } - - /** - * @dev Same as {lowerBound}, but with an array in memory. - */ - function lowerBoundMemory(uint256[] memory array, uint256 element) internal pure returns (uint256) { - uint256 low = 0; - uint256 high = array.length; - - if (high == 0) { - return 0; - } - - while (low < high) { - uint256 mid = Math.average(low, high); - - // Note that mid will always be strictly less than high (i.e. it will be a valid array index) - // because Math.average rounds towards zero (it does integer division with truncation). - if (unsafeMemoryAccess(array, mid) < element) { - // this cannot overflow because mid < high - unchecked { - low = mid + 1; - } - } else { - high = mid; - } - } - - return low; - } - - /** - * @dev Same as {upperBound}, but with an array in memory. - */ - function upperBoundMemory(uint256[] memory array, uint256 element) internal pure returns (uint256) { - uint256 low = 0; - uint256 high = array.length; - - if (high == 0) { - return 0; - } - - while (low < high) { - uint256 mid = Math.average(low, high); - - // Note that mid will always be strictly less than high (i.e. it will be a valid array index) - // because Math.average rounds towards zero (it does integer division with truncation). - if (unsafeMemoryAccess(array, mid) > element) { - high = mid; - } else { - // this cannot overflow because mid < high - unchecked { - low = mid + 1; - } - } - } - - return low; - } - - /** - * @dev Access an array in an "unsafe" way. Skips solidity "index-out-of-range" check. - * - * WARNING: Only use if you are certain `pos` is lower than the array length. - */ - function unsafeAccess(address[] storage arr, uint256 pos) internal pure returns (StorageSlot.AddressSlot storage) { - bytes32 slot; - assembly ("memory-safe") { - slot := arr.slot - } - return slot.deriveArray().offset(pos).getAddressSlot(); - } - - /** - * @dev Access an array in an "unsafe" way. Skips solidity "index-out-of-range" check. - * - * WARNING: Only use if you are certain `pos` is lower than the array length. - */ - function unsafeAccess(bytes32[] storage arr, uint256 pos) internal pure returns (StorageSlot.Bytes32Slot storage) { - bytes32 slot; - assembly ("memory-safe") { - slot := arr.slot - } - return slot.deriveArray().offset(pos).getBytes32Slot(); - } - - /** - * @dev Access an array in an "unsafe" way. Skips solidity "index-out-of-range" check. - * - * WARNING: Only use if you are certain `pos` is lower than the array length. - */ - function unsafeAccess(uint256[] storage arr, uint256 pos) internal pure returns (StorageSlot.Uint256Slot storage) { - bytes32 slot; - assembly ("memory-safe") { - slot := arr.slot - } - return slot.deriveArray().offset(pos).getUint256Slot(); - } - - /** - * @dev Access an array in an "unsafe" way. Skips solidity "index-out-of-range" check. - * - * WARNING: Only use if you are certain `pos` is lower than the array length. - */ - function unsafeMemoryAccess(address[] memory arr, uint256 pos) internal pure returns (address res) { - assembly { - res := mload(add(add(arr, 0x20), mul(pos, 0x20))) - } - } - - /** - * @dev Access an array in an "unsafe" way. Skips solidity "index-out-of-range" check. - * - * WARNING: Only use if you are certain `pos` is lower than the array length. - */ - function unsafeMemoryAccess(bytes32[] memory arr, uint256 pos) internal pure returns (bytes32 res) { - assembly { - res := mload(add(add(arr, 0x20), mul(pos, 0x20))) - } - } - - /** - * @dev Access an array in an "unsafe" way. Skips solidity "index-out-of-range" check. - * - * WARNING: Only use if you are certain `pos` is lower than the array length. - */ - function unsafeMemoryAccess(uint256[] memory arr, uint256 pos) internal pure returns (uint256 res) { - assembly { - res := mload(add(add(arr, 0x20), mul(pos, 0x20))) - } - } - - /** - * @dev Helper to set the length of a dynamic array. Directly writing to `.length` is forbidden. - * - * WARNING: this does not clear elements if length is reduced, of initialize elements if length is increased. - */ - function unsafeSetLength(address[] storage array, uint256 len) internal { - assembly ("memory-safe") { - sstore(array.slot, len) - } - } - - /** - * @dev Helper to set the length of a dynamic array. Directly writing to `.length` is forbidden. - * - * WARNING: this does not clear elements if length is reduced, of initialize elements if length is increased. - */ - function unsafeSetLength(bytes32[] storage array, uint256 len) internal { - assembly ("memory-safe") { - sstore(array.slot, len) - } - } - - /** - * @dev Helper to set the length of a dynamic array. Directly writing to `.length` is forbidden. - * - * WARNING: this does not clear elements if length is reduced, of initialize elements if length is increased. - */ - function unsafeSetLength(uint256[] storage array, uint256 len) internal { - assembly ("memory-safe") { - sstore(array.slot, len) - } - } -} - -// lib/openzeppelin-contracts/contracts/utils/structs/EnumerableSet.sol - -// OpenZeppelin Contracts (last updated v5.3.0) (utils/structs/EnumerableSet.sol) -// This file was procedurally generated from scripts/generate/templates/EnumerableSet.js. - -/** - * @dev Library for managing - * https://en.wikipedia.org/wiki/Set_(abstract_data_type)[sets] of primitive - * types. - * - * Sets have the following properties: - * - * - Elements are added, removed, and checked for existence in constant time - * (O(1)). - * - Elements are enumerated in O(n). No guarantees are made on the ordering. - * - Set can be cleared (all elements removed) in O(n). - * - * ```solidity - * contract Example { - * // Add the library methods - * using EnumerableSet for EnumerableSet.AddressSet; - * - * // Declare a set state variable - * EnumerableSet.AddressSet private mySet; - * } - * ``` - * - * As of v3.3.0, sets of type `bytes32` (`Bytes32Set`), `address` (`AddressSet`) - * and `uint256` (`UintSet`) are supported. - * - * [WARNING] - * ==== - * Trying to delete such a structure from storage will likely result in data corruption, rendering the structure - * unusable. - * See https://github.com/ethereum/solidity/pull/11843[ethereum/solidity#11843] for more info. - * - * In order to clean an EnumerableSet, you can either remove all elements one by one or create a fresh instance using an - * array of EnumerableSet. - * ==== - */ -library EnumerableSet { - // To implement this library for multiple types with as little code - // repetition as possible, we write it in terms of a generic Set type with - // bytes32 values. - // The Set implementation uses private functions, and user-facing - // implementations (such as AddressSet) are just wrappers around the - // underlying Set. - // This means that we can only create new EnumerableSets for types that fit - // in bytes32. - - struct Set { - // Storage of set values - bytes32[] _values; - // Position is the index of the value in the `values` array plus 1. - // Position 0 is used to mean a value is not in the set. - mapping(bytes32 value => uint256) _positions; - } - - /** - * @dev Add a value to a set. O(1). - * - * Returns true if the value was added to the set, that is if it was not - * already present. - */ - function _add(Set storage set, bytes32 value) private returns (bool) { - if (!_contains(set, value)) { - set._values.push(value); - // The value is stored at length-1, but we add 1 to all indexes - // and use 0 as a sentinel value - set._positions[value] = set._values.length; - return true; - } else { - return false; - } - } - - /** - * @dev Removes a value from a set. O(1). - * - * Returns true if the value was removed from the set, that is if it was - * present. - */ - function _remove(Set storage set, bytes32 value) private returns (bool) { - // We cache the value's position to prevent multiple reads from the same storage slot - uint256 position = set._positions[value]; - - if (position != 0) { - // Equivalent to contains(set, value) - // To delete an element from the _values array in O(1), we swap the element to delete with the last one in - // the array, and then remove the last element (sometimes called as 'swap and pop'). - // This modifies the order of the array, as noted in {at}. - - uint256 valueIndex = position - 1; - uint256 lastIndex = set._values.length - 1; - - if (valueIndex != lastIndex) { - bytes32 lastValue = set._values[lastIndex]; - - // Move the lastValue to the index where the value to delete is - set._values[valueIndex] = lastValue; - // Update the tracked position of the lastValue (that was just moved) - set._positions[lastValue] = position; - } - - // Delete the slot where the moved value was stored - set._values.pop(); - - // Delete the tracked position for the deleted slot - delete set._positions[value]; - - return true; - } else { - return false; - } - } - - /** - * @dev Removes all the values from a set. O(n). - * - * WARNING: Developers should keep in mind that this function has an unbounded cost and using it may render the - * function uncallable if the set grows to the point where clearing it consumes too much gas to fit in a block. - */ - function _clear(Set storage set) private { - uint256 len = _length(set); - for (uint256 i = 0; i < len; ++i) { - delete set._positions[set._values[i]]; - } - Arrays.unsafeSetLength(set._values, 0); - } - - /** - * @dev Returns true if the value is in the set. O(1). - */ - function _contains(Set storage set, bytes32 value) private view returns (bool) { - return set._positions[value] != 0; - } - - /** - * @dev Returns the number of values on the set. O(1). - */ - function _length(Set storage set) private view returns (uint256) { - return set._values.length; - } - - /** - * @dev Returns the value stored at position `index` in the set. O(1). - * - * Note that there are no guarantees on the ordering of values inside the - * array, and it may change when more values are added or removed. - * - * Requirements: - * - * - `index` must be strictly less than {length}. - */ - function _at(Set storage set, uint256 index) private view returns (bytes32) { - return set._values[index]; - } - - /** - * @dev Return the entire set in an array - * - * WARNING: This operation will copy the entire storage to memory, which can be quite expensive. This is designed - * to mostly be used by view accessors that are queried without any gas fees. Developers should keep in mind that - * this function has an unbounded cost, and using it as part of a state-changing function may render the function - * uncallable if the set grows to a point where copying to memory consumes too much gas to fit in a block. - */ - function _values(Set storage set) private view returns (bytes32[] memory) { - return set._values; - } - - // Bytes32Set - - struct Bytes32Set { - Set _inner; - } - - /** - * @dev Add a value to a set. O(1). - * - * Returns true if the value was added to the set, that is if it was not - * already present. - */ - function add(Bytes32Set storage set, bytes32 value) internal returns (bool) { - return _add(set._inner, value); - } - - /** - * @dev Removes a value from a set. O(1). - * - * Returns true if the value was removed from the set, that is if it was - * present. - */ - function remove(Bytes32Set storage set, bytes32 value) internal returns (bool) { - return _remove(set._inner, value); - } - - /** - * @dev Removes all the values from a set. O(n). - * - * WARNING: Developers should keep in mind that this function has an unbounded cost and using it may render the - * function uncallable if the set grows to the point where clearing it consumes too much gas to fit in a block. - */ - function clear(Bytes32Set storage set) internal { - _clear(set._inner); - } - - /** - * @dev Returns true if the value is in the set. O(1). - */ - function contains(Bytes32Set storage set, bytes32 value) internal view returns (bool) { - return _contains(set._inner, value); - } - - /** - * @dev Returns the number of values in the set. O(1). - */ - function length(Bytes32Set storage set) internal view returns (uint256) { - return _length(set._inner); - } - - /** - * @dev Returns the value stored at position `index` in the set. O(1). - * - * Note that there are no guarantees on the ordering of values inside the - * array, and it may change when more values are added or removed. - * - * Requirements: - * - * - `index` must be strictly less than {length}. - */ - function at(Bytes32Set storage set, uint256 index) internal view returns (bytes32) { - return _at(set._inner, index); - } - - /** - * @dev Return the entire set in an array - * - * WARNING: This operation will copy the entire storage to memory, which can be quite expensive. This is designed - * to mostly be used by view accessors that are queried without any gas fees. Developers should keep in mind that - * this function has an unbounded cost, and using it as part of a state-changing function may render the function - * uncallable if the set grows to a point where copying to memory consumes too much gas to fit in a block. - */ - function values(Bytes32Set storage set) internal view returns (bytes32[] memory) { - bytes32[] memory store = _values(set._inner); - bytes32[] memory result; - - assembly ("memory-safe") { - result := store - } - - return result; - } - - // AddressSet - - struct AddressSet { - Set _inner; - } - - /** - * @dev Add a value to a set. O(1). - * - * Returns true if the value was added to the set, that is if it was not - * already present. - */ - function add(AddressSet storage set, address value) internal returns (bool) { - return _add(set._inner, bytes32(uint256(uint160(value)))); - } - - /** - * @dev Removes a value from a set. O(1). - * - * Returns true if the value was removed from the set, that is if it was - * present. - */ - function remove(AddressSet storage set, address value) internal returns (bool) { - return _remove(set._inner, bytes32(uint256(uint160(value)))); - } - - /** - * @dev Removes all the values from a set. O(n). - * - * WARNING: Developers should keep in mind that this function has an unbounded cost and using it may render the - * function uncallable if the set grows to the point where clearing it consumes too much gas to fit in a block. - */ - function clear(AddressSet storage set) internal { - _clear(set._inner); - } - - /** - * @dev Returns true if the value is in the set. O(1). - */ - function contains(AddressSet storage set, address value) internal view returns (bool) { - return _contains(set._inner, bytes32(uint256(uint160(value)))); - } - - /** - * @dev Returns the number of values in the set. O(1). - */ - function length(AddressSet storage set) internal view returns (uint256) { - return _length(set._inner); - } - - /** - * @dev Returns the value stored at position `index` in the set. O(1). - * - * Note that there are no guarantees on the ordering of values inside the - * array, and it may change when more values are added or removed. - * - * Requirements: - * - * - `index` must be strictly less than {length}. - */ - function at(AddressSet storage set, uint256 index) internal view returns (address) { - return address(uint160(uint256(_at(set._inner, index)))); - } - - /** - * @dev Return the entire set in an array - * - * WARNING: This operation will copy the entire storage to memory, which can be quite expensive. This is designed - * to mostly be used by view accessors that are queried without any gas fees. Developers should keep in mind that - * this function has an unbounded cost, and using it as part of a state-changing function may render the function - * uncallable if the set grows to a point where copying to memory consumes too much gas to fit in a block. - */ - function values(AddressSet storage set) internal view returns (address[] memory) { - bytes32[] memory store = _values(set._inner); - address[] memory result; - - assembly ("memory-safe") { - result := store - } - - return result; - } - - // UintSet - - struct UintSet { - Set _inner; - } - - /** - * @dev Add a value to a set. O(1). - * - * Returns true if the value was added to the set, that is if it was not - * already present. - */ - function add(UintSet storage set, uint256 value) internal returns (bool) { - return _add(set._inner, bytes32(value)); - } - - /** - * @dev Removes a value from a set. O(1). - * - * Returns true if the value was removed from the set, that is if it was - * present. - */ - function remove(UintSet storage set, uint256 value) internal returns (bool) { - return _remove(set._inner, bytes32(value)); - } - - /** - * @dev Removes all the values from a set. O(n). - * - * WARNING: Developers should keep in mind that this function has an unbounded cost and using it may render the - * function uncallable if the set grows to the point where clearing it consumes too much gas to fit in a block. - */ - function clear(UintSet storage set) internal { - _clear(set._inner); - } - - /** - * @dev Returns true if the value is in the set. O(1). - */ - function contains(UintSet storage set, uint256 value) internal view returns (bool) { - return _contains(set._inner, bytes32(value)); - } - - /** - * @dev Returns the number of values in the set. O(1). - */ - function length(UintSet storage set) internal view returns (uint256) { - return _length(set._inner); - } - - /** - * @dev Returns the value stored at position `index` in the set. O(1). - * - * Note that there are no guarantees on the ordering of values inside the - * array, and it may change when more values are added or removed. - * - * Requirements: - * - * - `index` must be strictly less than {length}. - */ - function at(UintSet storage set, uint256 index) internal view returns (uint256) { - return uint256(_at(set._inner, index)); - } - - /** - * @dev Return the entire set in an array - * - * WARNING: This operation will copy the entire storage to memory, which can be quite expensive. This is designed - * to mostly be used by view accessors that are queried without any gas fees. Developers should keep in mind that - * this function has an unbounded cost, and using it as part of a state-changing function may render the function - * uncallable if the set grows to a point where copying to memory consumes too much gas to fit in a block. - */ - function values(UintSet storage set) internal view returns (uint256[] memory) { - bytes32[] memory store = _values(set._inner); - uint256[] memory result; - - assembly ("memory-safe") { - result := store - } - - return result; - } -} - -// src/modules/ERC3643ComplianceModule.sol - -/* ==== OpenZeppelin === */ - -/* ==== Interface and other library === */ - -abstract contract ERC3643ComplianceModule is IERC3643Compliance, AccessControl { - /* ==== Type declaration === */ - using EnumerableSet for EnumerableSet.AddressSet; - /* ==== State Variables === */ - // Token binding tracking - EnumerableSet.AddressSet private _boundTokens; - // Access Control - bytes32 public constant COMPLIANCE_MANAGER_ROLE = keccak256("COMPLIANCE_MANAGER_ROLE"); - - /* ==== Errors === */ - error RuleEngine_ERC3643Compliance_InvalidTokenAddress(); - error RuleEngine_ERC3643Compliance_TokenAlreadyBound(); - error RuleEngine_ERC3643Compliance_TokenNotBound(); - error RuleEngine_ERC3643Compliance_UnauthorizedCaller(); - - /* ==== Modifier === */ - modifier onlyBoundToken() { - if (!_boundTokens.contains(_msgSender())) { - revert RuleEngine_ERC3643Compliance_UnauthorizedCaller(); - } - _; - } - - /*////////////////////////////////////////////////////////////// - PUBLIC/EXTERNAL FUNCTIONS - //////////////////////////////////////////////////////////////*/ - - /* ============ State functions ============ */ - /// @inheritdoc IERC3643Compliance - function bindToken(address token) public override virtual onlyRole(COMPLIANCE_MANAGER_ROLE) { - _bindToken(token); - } - - /// @inheritdoc IERC3643Compliance - function unbindToken(address token) public override virtual onlyRole(COMPLIANCE_MANAGER_ROLE) { - _unbindToken(token); - } - - /// @inheritdoc IERC3643Compliance - function isTokenBound(address token) public view override returns (bool) { - return _boundTokens.contains(token); - } - - /// @inheritdoc IERC3643Compliance - function getTokenBound() external view override returns (address) { - if(_boundTokens.length() > 0){ - return _boundTokens.at(0); - } else { - return address(0); - } - } - - /// @inheritdoc IERC3643Compliance - function getTokenBounds() external view override returns (address[] memory) { - return _boundTokens.values(); - } - - /*////////////////////////////////////////////////////////////// - INTERNAL/PRIVATE FUNCTIONS - //////////////////////////////////////////////////////////////*/ - - function _unbindToken(address token) internal { - require (_boundTokens.contains(token), RuleEngine_ERC3643Compliance_TokenNotBound()); - _boundTokens.remove(token); - - emit TokenUnbound(token); - } - function _bindToken(address token) internal{ - require(token != address(0), RuleEngine_ERC3643Compliance_InvalidTokenAddress()); - require(!_boundTokens.contains(token), RuleEngine_ERC3643Compliance_TokenAlreadyBound()); - _boundTokens.add(token); - - emit TokenBound(token); - } -} - -// src/modules/RulesManagementModule.sol - -/* ==== OpenZeppelin === */ - -/* ==== Interface and other library === */ - -/** - * @title RuleEngine - part - */ -abstract contract RulesManagementModule is - AccessControl, - RulesManagementModuleInvariantStorage, - IRulesManagementModule -{ - /* ==== Type declaration === */ - using EnumerableSet for EnumerableSet.AddressSet; - - /* ==== State Variables === */ - /// @dev Array of rules - EnumerableSet.AddressSet internal _rules; - - /*////////////////////////////////////////////////////////////// - PUBLIC/EXTERNAL FUNCTIONS - //////////////////////////////////////////////////////////////*/ - - /* ============ State functions ============ */ - - /** - * @inheritdoc IRulesManagementModule - */ - function setRules( - IRule[] calldata rules_ - ) public virtual override(IRulesManagementModule) onlyRole(RULE_ENGINE_OPERATOR_ROLE) { - if (rules_.length == 0) { - revert RuleEngine_ArrayIsEmpty(); - } - if (_rules.length() > 0) { - _clearRules(); - } - for(uint256 i = 0; i < rules_.length; ++i){ - _checkRule(address(rules_[i])); - _rules.add(address(rules_[i])); - emit AddRule(rules_[i]); - } - - } - - /** - * @inheritdoc IRulesManagementModule - */ - function clearRules() public virtual override(IRulesManagementModule) onlyRole(RULE_ENGINE_OPERATOR_ROLE) { - _clearRules(); - } - - /** - * @inheritdoc IRulesManagementModule - */ - function addRule( - IRule rule_ - ) public virtual override(IRulesManagementModule) onlyRole(RULE_ENGINE_OPERATOR_ROLE) { - _checkRule(address(rule_)); - _rules.add(address(rule_)); - emit AddRule(rule_); - } - - /** - * @inheritdoc IRulesManagementModule - */ - function removeRule( - IRule rule_ - ) public virtual override(IRulesManagementModule) onlyRole(RULE_ENGINE_OPERATOR_ROLE) { - require(_rules.contains(address(rule_)), RuleEngine_RuleDoNotMatch()); - _removeRule(rule_); - } - - /* ============ View functions ============ */ - - /** - * @inheritdoc IRulesManagementModule - */ - function rulesCount() public view virtual override(IRulesManagementModule) returns (uint256) { - return _rules.length(); - } - - /** - * @inheritdoc IRulesManagementModule - */ - function containsRule(IRule rule_) public view virtual override(IRulesManagementModule) returns (bool){ - return _rules.contains(address(rule_)); - } - - /** - * @inheritdoc IRulesManagementModule - */ - function rule( - uint256 ruleId - ) public view virtual override(IRulesManagementModule) returns (address) { - return _rules.at(ruleId); - } - - /** - * @inheritdoc IRulesManagementModule - */ - function rules() - public - view - virtual - override(IRulesManagementModule) - returns (address[] memory) - { - return _rules.values(); - } - - /*////////////////////////////////////////////////////////////// - INTERNAL/PRIVATE FUNCTIONS - //////////////////////////////////////////////////////////////*/ - /** - * @notice Clear all the rules of the array of rules - * - */ - function _clearRules() internal virtual { - emit ClearRules(); - _rules.clear(); - } - - /** - * @notice Remove a rule from the array of rules - * Revert if the rule found at the specified index does not match the rule in argument - * @param rule_ address of the target rule - * - * - */ - function _removeRule(IRule rule_) internal virtual { - _rules.remove(address(rule_)); - emit RemoveRule(rule_); - } - - /** - * @dev check if a rule is valid, revert otherwise - */ - function _checkRule(address rule_) internal view{ - if (rule_ == address(0x0)) { - revert RuleEngine_RuleAddressZeroNotAllowed(); - } - if (_rules.contains(rule_)) { - revert RuleEngine_RuleAlreadyExists(); - } - } - - /* ============ Transferred functions ============ */ - - /** - * @notice Go through all the rule to know if a restriction exists on the transfer - * @param from the origin address - * @param to the destination address - * @param value to transfer - **/ - function _transferred( - address from, - address to, - uint256 value - ) internal virtual{ - uint256 rulesLength = _rules.length(); - for (uint256 i = 0; i < rulesLength; ++i) { - IRule(_rules.at(i)).transferred( - from, - to, - value - ); - } - } - - /** - * @notice Go through all the rule to know if a restriction exists on the transfer - * @param spender the spender address (transferFrom) - * @param from the origin address - * @param to the destination address - * @param value to transfer - **/ - function _transferred( - address spender, - address from, - address to, - uint256 value - ) internal virtual{ - uint256 rulesLength = _rules.length(); - for (uint256 i = 0; i < rulesLength; ++i) { - IRule(_rules.at(i)).transferred( - spender, - from, - to, - value - ); - } - } -} - -// src/RuleEngineBase.sol - -/* ==== OpenZeppelin === */ - -/* ==== CMTAT === */ - -/* ==== Modules === */ - -/* ==== Interface and other library === */ - -/** - * @title Implementation of a ruleEngine as defined by the CMTAT - */ -abstract contract RuleEngineBase is - VersionModule, - RulesManagementModule, - ERC3643ComplianceModule, - RuleEngineInvariantStorage, - IRuleEngine -{ - /* ============ State functions ============ */ - /* - * @notice function protected by access control - */ - function transferred( - address spender, - address from, - address to, - uint256 value - ) public virtual override onlyBoundToken { - // Apply on RuleEngine - RulesManagementModule._transferred(spender, from, to, value); - } - /** - * @dev ERC-3643 function transferred - */ - function transferred( - address from, - address to, - uint256 value - ) public virtual override onlyBoundToken { - _transferred(from, to, value); - } - - /// @inheritdoc IERC3643Compliance - function created(address to, uint256 value) public virtual override onlyBoundToken{ - _transferred(address(0), to, value); - } - - /// @inheritdoc IERC3643Compliance - function destroyed(address from, uint256 value) public virtual override onlyBoundToken { - _transferred(from, address(0), value); - } - - /* ============ View functions ============ */ - /** - * @notice Go through all the rule to know if a restriction exists on the transfer - * @param from the origin address - * @param to the destination address - * @param value to transfer - * @return The restricion code or REJECTED_CODE_BASE.TRANSFER_OK - **/ - function detectTransferRestriction( - address from, - address to, - uint256 value - ) public view virtual override returns (uint8) { - - // - uint256 rulesLength = rulesCount(); - for (uint256 i = 0; i < rulesLength; ++i) { - uint8 restriction = IRule(rule(i)) - .detectTransferRestriction(from, to, value); - if (restriction > 0) { - return restriction; - } - } - - return uint8(REJECTED_CODE_BASE.TRANSFER_OK); - } - - function detectTransferRestrictionFrom( - address spender, - address from, - address to, - uint256 value - ) public view virtual override returns (uint8) { - // - uint256 rulesLength = rulesCount(); - for (uint256 i = 0; i < rulesLength; ++i) { - uint8 restriction = IRule(rule(i)) - .detectTransferRestrictionFrom(spender,from, to, value); - if (restriction > 0) { - return restriction; - } - } - - return uint8(REJECTED_CODE_BASE.TRANSFER_OK); - } - - /** - * @notice Validate a transfer - * @param from the origin address - * @param to the destination address - * @param value to transfer - * @return True if the transfer is valid, false otherwise - **/ - function canTransfer( - address from, - address to, - uint256 value - ) public virtual view override returns (bool) { - return - detectTransferRestriction(from, to, value) == - uint8(REJECTED_CODE_BASE.TRANSFER_OK); - } - - /** - * @notice Validate a transfer - * @param from the origin address - * @param to the destination address - * @param value to transfer - * @return True if the transfer is valid, false otherwise - **/ - function canTransferFrom( - address spender, - address from, - address to, - uint256 value - ) public virtual view override returns (bool) { - return - detectTransferRestrictionFrom(spender, from, to, value) == - uint8(REJECTED_CODE_BASE.TRANSFER_OK); - } - - /** - * @notice Return the message corresponding to the code - * @param restrictionCode The target restriction code - * @return True if the transfer is valid, false otherwise - **/ - function messageForTransferRestriction( - uint8 restrictionCode - ) public virtual view override returns (string memory) { - // - uint256 rulesLength = rulesCount(); - for (uint256 i = 0; i < rulesLength; ++i) { - if ( - IRule(rule(i)) - .canReturnTransferRestrictionCode(restrictionCode) - ) { - return - IRule(rule(i)) - .messageForTransferRestriction(restrictionCode); - } - } - return "Unknown restriction code"; - } - - /* ============ ACCESS CONTROL ============ */ - /** - * @dev Returns `true` if `account` has been granted `role`. - */ - function hasRole( - bytes32 role, - address account - ) public view virtual override(AccessControl) returns (bool) { - // The Default Admin has all roles - if (AccessControl.hasRole(DEFAULT_ADMIN_ROLE, account)) { - return true; - } else { - return AccessControl.hasRole(role, account); - } - } -} - -// src/RuleEngine.sol - -/* ==== OpenZeppelin === */ - -/* ==== Modules === */ - -/* ==== Base contract === */ - -/** - * @title Implementation of a ruleEngine as defined by the CMTAT - */ -contract RuleEngine is - MetaTxModuleStandalone, - RuleEngineBase -{ - /** - * @param admin Address of the contract (Access Control) - * @param forwarderIrrevocable Address of the forwarder, required for the gasless support - */ - constructor( - address admin, - address forwarderIrrevocable, - address tokenContract - ) MetaTxModuleStandalone(forwarderIrrevocable) { - if (admin == address(0)) { - revert RuleEngine_AdminWithAddressZeroNotAllowed(); - } - if (tokenContract != address(0)) { - _bindToken(tokenContract); - } - _grantRole(DEFAULT_ADMIN_ROLE, admin); - } - - /*////////////////////////////////////////////////////////////// - ERC-2771 - //////////////////////////////////////////////////////////////*/ - - /** - * @dev This surcharge is not necessary if you do not use the MetaTxModule - */ - function _msgSender() - internal - view - virtual - override(ERC2771Context, Context) - returns (address sender) - { - return ERC2771Context._msgSender(); - } - - /** - * @dev This surcharge is not necessary if you do not use the MetaTxModule - */ - function _msgData() - internal - view - virtual - override(ERC2771Context, Context) - returns (bytes calldata) - { - return ERC2771Context._msgData(); - } - - /** - * @dev This surcharge is not necessary if you do not use the MetaTxModule - */ - function _contextSuffixLength() - internal - view - virtual - override(ERC2771Context, Context) - returns (uint256) - { - return ERC2771Context._contextSuffixLength(); - } -} From 4659248c42e6bdc635f51d11d08303dad20ca4e4 Mon Sep 17 00:00:00 2001 From: Ryan Sauge <71391932+rya-sge@users.noreply.github.com> Date: Fri, 15 Aug 2025 12:35:16 +0200 Subject: [PATCH 13/17] Remove toc --- README.md | 4 ---- 1 file changed, 4 deletions(-) diff --git a/README.md b/README.md index d96fb9f..30dc759 100644 --- a/README.md +++ b/README.md @@ -6,10 +6,6 @@ This repository includes the RuleEngine contract for [CMTAT](https://github.com/ The RuleEngine is an external contract used to apply transfer restrictions to another contract, such as CMTAT and ERC-3643 tokens. Acting as a controller, it can call different contract rules and apply these rules on each transfer. -[TOC] - - - ## Motivation - Why use a dedicated contract with rules instead of implementing it directly in CMTAT or [ERC-3643](https://eips.ethereum.org/EIPS/eip-3643) tokens? From 8728a6baff85ff2f2839cbc64d3a990c66794399 Mon Sep 17 00:00:00 2001 From: Ryan Sauge <71391932+rya-sge@users.noreply.github.com> Date: Fri, 15 Aug 2025 12:38:12 +0200 Subject: [PATCH 14/17] Update workflow --- .github/workflows/ci.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 1c07a3e..7df76fb 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -11,9 +11,9 @@ jobs: runs-on: ubuntu-latest steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 #v4.2 - name: Install Foundry - uses: foundry-rs/foundry-toolchain@v1 + uses: foundry-rs/foundry-toolchain@de808b1eea699e761c404bda44ba8f21aba30b2c #v1.3.1 with: version: nightly @@ -21,7 +21,7 @@ jobs: run: forge install - name: Setup NodeJS 20.5.0 - uses: actions/setup-node@v3 + uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 #v4.4.0 with: node-version: 20.5.0 From 27934a484a97428bf715bf3790fdd2e336ca6709 Mon Sep 17 00:00:00 2001 From: Ryan Sauge <71391932+rya-sge@users.noreply.github.com> Date: Fri, 15 Aug 2025 12:38:41 +0200 Subject: [PATCH 15/17] Linter:run prettier --- script/CMTATWithRuleEngineScript.s.sol | 6 +- script/RuleEngineScript.s.sol | 6 +- src/RuleEngine.sol | 14 +- src/RuleEngineBase.sol | 78 ++++---- src/interfaces/IERC3643Compliance.sol | 24 ++- src/interfaces/IRule.sol | 1 + src/interfaces/IRulesManagementModule.sol | 28 ++- .../RuleConditionalTransferLight.sol | 41 +++-- .../rules/operation/RuleOperationRevert.sol | 34 ++-- ...nditionalTransferLightInvariantStorage.sol | 16 +- src/mocks/rules/validation/RuleWhitelist.sol | 38 ++-- .../abstract/RuleWhitelistCommon.sol | 5 +- src/modules/ERC3643ComplianceModule.sol | 66 ++++--- src/modules/RulesManagementModule.sol | 138 ++++++++------ src/modules/VersionModule.sol | 24 ++- .../RulesManagementModuleInvariantStorage.sol | 25 ++- test/HelperContract.sol | 2 - .../AccessControl/RuleEngineAccessControl.sol | 7 +- .../RuleEngineAccessControlOZ.t.sol | 2 +- test/RuleEngine/ERC3643Compliance.t.sol | 52 ++++-- test/RuleEngine/RuleEngineDeployment.t.sol | 6 +- .../CMTATIntegration.t.sol | 56 +++--- .../RuleEngineOperation.t.sol | 169 +++++++++++++----- .../RuleEngineOperationRevert.t.sol | 15 +- .../RuleEngineRestriction.t.sol | 26 ++- .../RuleEngineRestriction.sol | 29 +-- .../RuleEngineValidation.sol | 35 ++-- test/RuleWhitelist/CMTATIntegration.t.sol | 25 +-- test/RuleWhitelist/RuleWhitelist.t.sol | 21 ++- test/utils/CMTATDeployment.sol | 1 + 30 files changed, 599 insertions(+), 391 deletions(-) diff --git a/script/CMTATWithRuleEngineScript.s.sol b/script/CMTATWithRuleEngineScript.s.sol index 295cfaf..718a221 100644 --- a/script/CMTATWithRuleEngineScript.s.sol +++ b/script/CMTATWithRuleEngineScript.s.sol @@ -1,4 +1,3 @@ - // SPDX-License-Identifier: MPL-2.0 // Documentation : @@ -11,8 +10,8 @@ import {RuleEngine} from "src/RuleEngine.sol"; import {RuleWhitelist} from "src/mocks/rules/validation/RuleWhitelist.sol"; /** -* @title Deploy a CMTAT, a RuleWhitelist and a RuleEngine -*/ + * @title Deploy a CMTAT, a RuleWhitelist and a RuleEngine + */ contract CMTATWithRuleEngineScript is Script, HelperContract { function run() external { // Get env variable @@ -43,4 +42,3 @@ contract CMTATWithRuleEngineScript is Script, HelperContract { vm.stopBroadcast(); } } - diff --git a/script/RuleEngineScript.s.sol b/script/RuleEngineScript.s.sol index ba1d4de..c133f87 100644 --- a/script/RuleEngineScript.s.sol +++ b/script/RuleEngineScript.s.sol @@ -28,10 +28,12 @@ contract RuleEngineScript is Script { RULE_ENGINE.addRule(ruleWhitelist); // Configure the new ruleEngine for CMTAT (bool success, ) = address(CMTAT_Address).call( - abi.encodeCall(ValidationModuleRuleEngine.setRuleEngine, RULE_ENGINE) + abi.encodeCall( + ValidationModuleRuleEngine.setRuleEngine, + RULE_ENGINE + ) ); require(success); vm.stopBroadcast(); } } - diff --git a/src/RuleEngine.sol b/src/RuleEngine.sol index 004c881..a98baae 100644 --- a/src/RuleEngine.sol +++ b/src/RuleEngine.sol @@ -8,13 +8,11 @@ import {Context} from "OZ/utils/Context.sol"; import {ERC2771ModuleStandalone, ERC2771Context} from "./modules/ERC2771ModuleStandalone.sol"; /* ==== Base contract === */ import {RuleEngineBase} from "./RuleEngineBase.sol"; + /** * @title Implementation of a ruleEngine as defined by the CMTAT */ -contract RuleEngine is - ERC2771ModuleStandalone, - RuleEngineBase -{ +contract RuleEngine is ERC2771ModuleStandalone, RuleEngineBase { /** * @param admin Address of the contract (Access Control) * @param forwarderIrrevocable Address of the forwarder, required for the gasless support @@ -28,7 +26,7 @@ contract RuleEngine is revert RuleEngine_AdminWithAddressZeroNotAllowed(); } if (tokenContract != address(0)) { - _bindToken(tokenContract); + _bindToken(tokenContract); } _grantRole(DEFAULT_ADMIN_ROLE, admin); } @@ -43,7 +41,7 @@ contract RuleEngine is function _msgSender() internal view - virtual + virtual override(ERC2771Context, Context) returns (address sender) { @@ -56,7 +54,7 @@ contract RuleEngine is function _msgData() internal view - virtual + virtual override(ERC2771Context, Context) returns (bytes calldata) { @@ -69,7 +67,7 @@ contract RuleEngine is function _contextSuffixLength() internal view - virtual + virtual override(ERC2771Context, Context) returns (uint256) { diff --git a/src/RuleEngineBase.sol b/src/RuleEngineBase.sol index 4a45fb6..da5d4ef 100644 --- a/src/RuleEngineBase.sol +++ b/src/RuleEngineBase.sol @@ -5,7 +5,7 @@ pragma solidity ^0.8.20; /* ==== OpenZeppelin === */ import {AccessControl} from "OZ/access/AccessControl.sol"; /* ==== CMTAT === */ -import {IRuleEngine}from "CMTAT/interfaces/engine/IRuleEngine.sol"; +import {IRuleEngine} from "CMTAT/interfaces/engine/IRuleEngine.sol"; import {IERC1404, IERC1404Extend} from "CMTAT/interfaces/tokenization/draft-IERC1404.sol"; import {IERC3643ComplianceRead, IERC3643IComplianceContract} from "CMTAT/interfaces/tokenization/IERC3643Partial.sol"; import {IERC7551Compliance} from "CMTAT/interfaces/tokenization/draft-IERC7551.sol"; @@ -18,6 +18,7 @@ import {RulesManagementModule} from "./modules/RulesManagementModule.sol"; /* ==== Interface and other library === */ import {IRule} from "./interfaces/IRule.sol"; import {RuleEngineInvariantStorage} from "./modules/library/RuleEngineInvariantStorage.sol"; + /** * @title Implementation of a ruleEngine as defined by the CMTAT */ @@ -25,7 +26,7 @@ abstract contract RuleEngineBase is VersionModule, RulesManagementModule, ERC3643ComplianceModule, - RuleEngineInvariantStorage, + RuleEngineInvariantStorage, IRuleEngine { /* ============ State functions ============ */ @@ -43,28 +44,32 @@ abstract contract RuleEngineBase is } /** - * @inheritdoc IERC3643IComplianceContract - */ + * @inheritdoc IERC3643IComplianceContract + */ function transferred( address from, address to, uint256 value ) public virtual override(IERC3643IComplianceContract) onlyBoundToken { - _transferred(from, to, value); + _transferred(from, to, value); } /// @inheritdoc IERC3643Compliance - function created(address to, uint256 value) public virtual override(IERC3643Compliance) onlyBoundToken{ - _transferred(address(0), to, value); + function created( + address to, + uint256 value + ) public virtual override(IERC3643Compliance) onlyBoundToken { + _transferred(address(0), to, value); } /// @inheritdoc IERC3643Compliance - function destroyed(address from, uint256 value) public virtual override(IERC3643Compliance) onlyBoundToken { + function destroyed( + address from, + uint256 value + ) public virtual override(IERC3643Compliance) onlyBoundToken { _transferred(from, address(0), value); } - - /* ============ View functions ============ */ /** * @notice Go through all the rule to know if a restriction exists on the transfer @@ -78,10 +83,13 @@ abstract contract RuleEngineBase is address to, uint256 value ) public view virtual override returns (uint8) { - uint256 rulesLength = rulesCount(); + uint256 rulesLength = rulesCount(); for (uint256 i = 0; i < rulesLength; ++i) { - uint8 restriction = IRule(rule(i)) - .detectTransferRestriction(from, to, value); + uint8 restriction = IRule(rule(i)).detectTransferRestriction( + from, + to, + value + ); if (restriction > 0) { return restriction; } @@ -90,18 +98,22 @@ abstract contract RuleEngineBase is } /** - * @inheritdoc IERC1404Extend - */ + * @inheritdoc IERC1404Extend + */ function detectTransferRestrictionFrom( address spender, address from, address to, uint256 value ) public view virtual override(IERC1404Extend) returns (uint8) { - uint256 rulesLength = rulesCount(); + uint256 rulesLength = rulesCount(); for (uint256 i = 0; i < rulesLength; ++i) { - uint8 restriction = IRule(rule(i)) - .detectTransferRestrictionFrom(spender,from, to, value); + uint8 restriction = IRule(rule(i)).detectTransferRestrictionFrom( + spender, + from, + to, + value + ); if (restriction > 0) { return restriction; } @@ -111,48 +123,48 @@ abstract contract RuleEngineBase is } /** - * @inheritdoc IERC1404 - */ + * @inheritdoc IERC1404 + */ function messageForTransferRestriction( uint8 restrictionCode - ) public virtual view override(IERC1404) returns (string memory) { - // - uint256 rulesLength = rulesCount(); + ) public view virtual override(IERC1404) returns (string memory) { + // + uint256 rulesLength = rulesCount(); for (uint256 i = 0; i < rulesLength; ++i) { if ( - IRule(rule(i)) - .canReturnTransferRestrictionCode(restrictionCode) + IRule(rule(i)).canReturnTransferRestrictionCode(restrictionCode) ) { return - IRule(rule(i)) - .messageForTransferRestriction(restrictionCode); + IRule(rule(i)).messageForTransferRestriction( + restrictionCode + ); } } return "Unknown restriction code"; } /** - * @inheritdoc IERC3643ComplianceRead - */ + * @inheritdoc IERC3643ComplianceRead + */ function canTransfer( address from, address to, uint256 value - ) public virtual view override(IERC3643ComplianceRead) returns (bool) { + ) public view virtual override(IERC3643ComplianceRead) returns (bool) { return detectTransferRestriction(from, to, value) == uint8(REJECTED_CODE_BASE.TRANSFER_OK); } /** - * @inheritdoc IERC7551Compliance - */ + * @inheritdoc IERC7551Compliance + */ function canTransferFrom( address spender, address from, address to, uint256 value - ) public virtual view override(IERC7551Compliance) returns (bool) { + ) public view virtual override(IERC7551Compliance) returns (bool) { return detectTransferRestrictionFrom(spender, from, to, value) == uint8(REJECTED_CODE_BASE.TRANSFER_OK); diff --git a/src/interfaces/IERC3643Compliance.sol b/src/interfaces/IERC3643Compliance.sol index e2898eb..2956259 100644 --- a/src/interfaces/IERC3643Compliance.sol +++ b/src/interfaces/IERC3643Compliance.sol @@ -4,7 +4,11 @@ pragma solidity ^0.8.20; /* ==== CMTAT === */ import {IERC3643ComplianceRead, IERC3643IComplianceContract} from "CMTAT/interfaces/tokenization/IERC3643Partial.sol"; -interface IERC3643Compliance is IERC3643ComplianceRead, IERC3643IComplianceContract { + +interface IERC3643Compliance is + IERC3643ComplianceRead, + IERC3643IComplianceContract +{ /* ============ Events ============ */ /** * @notice Emitted when a token is successfully bound to the compliance contract. @@ -22,12 +26,13 @@ interface IERC3643Compliance is IERC3643ComplianceRead, IERC3643IComplianceContr /** * @notice Associates a token contract with this compliance contract. * @dev The compliance contract may restrict operations on the bound token - * according to the compliance logic. + * according to the compliance logic. * Reverts if the token is already bound. * Complexity: O(1). * @param token The address of the token to bind. */ function bindToken(address token) external; + /** * @notice Removes the association of a token contract from this compliance contract. * @dev Reverts if the token is not currently bound. @@ -38,32 +43,33 @@ interface IERC3643Compliance is IERC3643ComplianceRead, IERC3643IComplianceContr /** * @notice Checks whether a token is currently bound to this compliance contract. - * @dev + * @dev * Complexity: O(1). - * Note that there are no guarantees on the ordering of values inside the array, + * Note that there are no guarantees on the ordering of values inside the array, * and it may change when more values are added or removed. * @param token The token address to verify. * @return isBound True if the token is bound, false otherwise. */ function isTokenBound(address token) external view returns (bool isBound); - /** + + /** * @notice Returns the single token currently bound to this compliance contract. * @dev If multiple tokens are supported, consider using getTokenBounds(). * @return token The address of the currently bound token. */ function getTokenBound() external view returns (address token); - /** + /** * @notice Returns all tokens currently bound to this compliance contract. * @dev This is a view-only function and does not modify state. * This function is not part of the original ERC-3643 specification - * This operation will copy the entire storage to memory, which can be quite expensive. + * This operation will copy the entire storage to memory, which can be quite expensive. * This is designed to mostly be used by view accessors that are queried without any gas fees. * @return tokens An array of addresses of bound token contracts. */ function getTokenBounds() external view returns (address[] memory tokens); - /** + /** * @notice Updates the compliance contract state when tokens are created (minted). * @dev Called by the token contract when new tokens are issued to an account. * Reverts if the minting does not comply with the rules. @@ -80,4 +86,4 @@ interface IERC3643Compliance is IERC3643ComplianceRead, IERC3643IComplianceContr * @param value The number of tokens destroyed. */ function destroyed(address from, uint256 value) external; -} \ No newline at end of file +} diff --git a/src/interfaces/IRule.sol b/src/interfaces/IRule.sol index b0b5dbd..0f43b7a 100644 --- a/src/interfaces/IRule.sol +++ b/src/interfaces/IRule.sol @@ -4,6 +4,7 @@ pragma solidity ^0.8.20; /* ==== CMTAT === */ import {IRuleEngine} from "CMTAT/interfaces/engine/IRuleEngine.sol"; + /* ==== Interfaces === */ interface IRule is IRuleEngine { diff --git a/src/interfaces/IRulesManagementModule.sol b/src/interfaces/IRulesManagementModule.sol index 55e8c86..81dfced 100644 --- a/src/interfaces/IRulesManagementModule.sol +++ b/src/interfaces/IRulesManagementModule.sol @@ -4,10 +4,11 @@ pragma solidity ^0.8.20; /* ==== Interfaces === */ import {IRule} from "./IRule.sol"; + interface IRulesManagementModule { /** * @notice Defines the rules for the rule engine. - * @dev Sets the list of rule contract addresses for s. + * @dev Sets the list of rule contract addresses for s. * Any previously set rules will be completely overwritten by the new list. * Rules should be deployed contracts that implement the expected interface. * @param rules_ The array of addresses representing the new rules to be set. @@ -16,7 +17,7 @@ interface IRulesManagementModule { */ function setRules(IRule[] calldata rules_) external; - /** + /** * @notice Returns the total number of currently configured rules. * @dev Equivalent to the length of the internal rules array. * Complexity: O(1) @@ -28,28 +29,27 @@ interface IRulesManagementModule { * @notice Retrieves the rule address at a specific index. * @dev Reverts if `ruleId` is out of bounds. * Complexity: O(1). - * Note that there are no guarantees on the ordering of values inside the array, + * Note that there are no guarantees on the ordering of values inside the array, * and it may change when more values are added or removed. * @param ruleId The index of the desired rule in the array. * @return ruleAddress The address of the corresponding IRule contract, return the `zero address` is out of bounds. */ function rule(uint256 ruleId) external view returns (address ruleAddress); - /** + /** * @notice Returns the full list of currently configured rules. * @dev This is a view-only function that does not modify state. - * This operation will copy the entire storage to memory, which can be quite expensive. + * This operation will copy the entire storage to memory, which can be quite expensive. * This is designed to mostly be used by view accessors that are queried without any gas fees. * @return ruleAddresses An array of all active rule contract addresses. */ function rules() external view returns (address[] memory ruleAddresses); - /** * @notice Removes all configured rules. * @dev After calling this function, no rules will remain set. - * Developers should keep in mind that this function has an unbounded cost - * and using it may render the function uncallable if the set grows to the point + * Developers should keep in mind that this function has an unbounded cost + * and using it may render the function uncallable if the set grows to the point * where clearing it consumes too much gas to fit in a block. */ function clearRules() external; @@ -60,11 +60,7 @@ interface IRulesManagementModule { * Complexity: O(1). * @param rule_ The IRule contract to add. */ - function addRule( - IRule rule_ - ) external; - - + function addRule(IRule rule_) external; /** * @notice Removes a specific rule from the current rule set. @@ -72,11 +68,9 @@ interface IRulesManagementModule { * Complexity: O(1). * @param rule_ The IRule contract to remove. */ - function removeRule( - IRule rule_ - ) external; + function removeRule(IRule rule_) external; - /** + /** * @notice Checks whether a specific rule is currently configured. * @param rule_ The IRule contract to check for membership. * @dev Complexity: O(1). diff --git a/src/mocks/rules/operation/RuleConditionalTransferLight.sol b/src/mocks/rules/operation/RuleConditionalTransferLight.sol index c1249fd..36f2c41 100644 --- a/src/mocks/rules/operation/RuleConditionalTransferLight.sol +++ b/src/mocks/rules/operation/RuleConditionalTransferLight.sol @@ -5,17 +5,20 @@ import "OZ/access/AccessControl.sol"; import {IRuleEngine} from "CMTAT/interfaces/engine/IRuleEngine.sol"; import {RuleConditionalTransferLightInvariantStorage} from "./abstract/RuleConditionalTransferLightInvariantStorage.sol"; import {IRule} from "../../../interfaces/IRule.sol"; + /** * @title TransferApprovalRule * @dev Requires operator approval for each ERC20 transfer. * Same transfer (from, to, value) can be approved multiple times. */ -contract RuleConditionalTransferLight is AccessControl, RuleConditionalTransferLightInvariantStorage, IRule { +contract RuleConditionalTransferLight is + AccessControl, + RuleConditionalTransferLightInvariantStorage, + IRule +{ // Mapping from transfer hash to approval count mapping(bytes32 => uint256) public approvalCounts; - - constructor(address admin, IRuleEngine ruleEngineContract) { require(admin != address(0), "Invalid operator"); @@ -29,7 +32,11 @@ contract RuleConditionalTransferLight is AccessControl, RuleConditionalTransferL /** * @notice Approve a specific transfer. Can be approved multiple times. */ - function approveTransfer(address from, address to, uint256 value)public onlyRole(OPERATOR_ROLE) { + function approveTransfer( + address from, + address to, + uint256 value + ) public onlyRole(OPERATOR_ROLE) { bytes32 transferHash = keccak256(abi.encodePacked(from, to, value)); approvalCounts[transferHash] += 1; emit TransferApproved(from, to, value, approvalCounts[transferHash]); @@ -38,7 +45,11 @@ contract RuleConditionalTransferLight is AccessControl, RuleConditionalTransferL /** * @notice Returns number of times a transfer is approved. */ - function approvedCount(address from, address to, uint256 value) public view returns (uint256) { + function approvedCount( + address from, + address to, + uint256 value + ) public view returns (uint256) { bytes32 transferHash = keccak256(abi.encodePacked(from, to, value)); return approvalCounts[transferHash]; } @@ -57,12 +68,15 @@ contract RuleConditionalTransferLight is AccessControl, RuleConditionalTransferL emit TransferExecuted(from, to, value, approvalCounts[transferHash]); } - function transferred(address /* spender */, address from, address to, uint256 value) public { + function transferred( + address /* spender */, + address from, + address to, + uint256 value + ) public { transferred(from, to, value); } - - /** * @notice Check if the transfer is valid * @param from the origin address @@ -82,7 +96,6 @@ contract RuleConditionalTransferLight is AccessControl, RuleConditionalTransferL return uint8(REJECTED_CODE_BASE.TRANSFER_OK); } - /** * @notice Check if the transfer is valid * @param from the origin address @@ -95,11 +108,9 @@ contract RuleConditionalTransferLight is AccessControl, RuleConditionalTransferL address to, uint256 value ) public view override returns (uint8) { - return detectTransferRestriction(from,to, value ); + return detectTransferRestriction(from, to, value); } - - /** * @notice To know if the restriction code is valid for this rule or not. * @param restrictionCode The target restriction code @@ -149,8 +160,8 @@ contract RuleConditionalTransferLight is AccessControl, RuleConditionalTransferL address to, uint256 value ) public view virtual override returns (bool) { - return detectTransferRestrictionFrom(spender, from, to, value) == + return + detectTransferRestrictionFrom(spender, from, to, value) == uint8(REJECTED_CODE_BASE.TRANSFER_OK); } - -} \ No newline at end of file +} diff --git a/src/mocks/rules/operation/RuleOperationRevert.sol b/src/mocks/rules/operation/RuleOperationRevert.sol index 0b677ff..141d9f4 100644 --- a/src/mocks/rules/operation/RuleOperationRevert.sol +++ b/src/mocks/rules/operation/RuleOperationRevert.sol @@ -4,30 +4,42 @@ pragma solidity ^0.8.20; import "OZ/access/AccessControl.sol"; import "../validation/abstract/RuleCommonInvariantStorage.sol"; import {IRule} from "../../../interfaces/IRule.sol"; + /** * @title TransferApprovalRule * @dev Requires operator approval for each ERC20 transfer. * Same transfer (from, to, value) can be approved multiple times. */ -contract RuleOperationRevert is AccessControl, IRule, - RuleCommonInvariantStorage{ - +contract RuleOperationRevert is + AccessControl, + IRule, + RuleCommonInvariantStorage +{ error RuleConditionalTransferLight_InvalidTransfer(); // It is very important that each rule uses an unique code uint8 public constant CODE_TRANSFER_REQUEST_NOT_APPROVED = 71; + /** * @notice Called when a transfer occurs. Decrements approval count if allowed. * @dev `spender` is part of the interface but unused. */ - function transferred(address /*from*/, address /* to */, uint256 /* value */) public pure { + function transferred( + address /*from*/, + address /* to */, + uint256 /* value */ + ) public pure { revert RuleConditionalTransferLight_InvalidTransfer(); } - function transferred(address /* spender */, address /*from*/, address /* to */, uint256 /* value */) public pure { + function transferred( + address /* spender */, + address /*from*/, + address /* to */, + uint256 /* value */ + ) public pure { revert RuleConditionalTransferLight_InvalidTransfer(); } - /** * @notice Check if the transfer is valid * @return The restricion code or REJECTED_CODE_BASE.TRANSFER_OK @@ -40,7 +52,6 @@ contract RuleOperationRevert is AccessControl, IRule, return uint8(REJECTED_CODE_BASE.TRANSFER_OK); } - /** * @notice Check if the transfer is valid * @param from the origin address @@ -53,7 +64,7 @@ contract RuleOperationRevert is AccessControl, IRule, address to, uint256 value ) public pure override returns (uint8) { - return detectTransferRestriction(from,to, value ); + return detectTransferRestriction(from, to, value); } /** @@ -77,7 +88,7 @@ contract RuleOperationRevert is AccessControl, IRule, return TEXT_CODE_NOT_FOUND; } - /** + /** * @notice Validate a transfer * @param _from the origin address * @param _to the destination address @@ -100,7 +111,8 @@ contract RuleOperationRevert is AccessControl, IRule, address to, uint256 value ) public view virtual override returns (bool) { - return detectTransferRestrictionFrom(spender, from, to, value) == + return + detectTransferRestrictionFrom(spender, from, to, value) == uint8(REJECTED_CODE_BASE.TRANSFER_OK); } -} \ No newline at end of file +} diff --git a/src/mocks/rules/operation/abstract/RuleConditionalTransferLightInvariantStorage.sol b/src/mocks/rules/operation/abstract/RuleConditionalTransferLightInvariantStorage.sol index 5051598..10732d4 100644 --- a/src/mocks/rules/operation/abstract/RuleConditionalTransferLightInvariantStorage.sol +++ b/src/mocks/rules/operation/abstract/RuleConditionalTransferLightInvariantStorage.sol @@ -25,6 +25,16 @@ abstract contract RuleConditionalTransferLightInvariantStorage is error TransferNotApproved(); /* ============ Events ============ */ - event TransferApproved(address indexed from, address indexed to, uint256 value, uint256 count); - event TransferExecuted(address indexed from, address indexed to, uint256 value, uint256 remaining); -} \ No newline at end of file + event TransferApproved( + address indexed from, + address indexed to, + uint256 value, + uint256 count + ); + event TransferExecuted( + address indexed from, + address indexed to, + uint256 value, + uint256 remaining + ); +} diff --git a/src/mocks/rules/validation/RuleWhitelist.sol b/src/mocks/rules/validation/RuleWhitelist.sol index d37564e..1c1e7ec 100644 --- a/src/mocks/rules/validation/RuleWhitelist.sol +++ b/src/mocks/rules/validation/RuleWhitelist.sol @@ -9,7 +9,13 @@ import "./abstract/RuleWhitelistCommon.sol"; * @title a whitelist manager */ contract RuleWhitelist is RuleAddressList, RuleWhitelistCommon { - error RuleWhitelist_InvalidTransfer(address from, address to, uint256 value, uint8 code); + error RuleWhitelist_InvalidTransfer( + address from, + address to, + uint256 value, + uint8 code + ); + /** * @param admin Address of the contract (Access Control) * @param forwarderIrrevocable Address of the forwarder, required for the gasless support @@ -19,7 +25,7 @@ contract RuleWhitelist is RuleAddressList, RuleWhitelistCommon { address forwarderIrrevocable ) RuleAddressList(admin, forwarderIrrevocable) {} - /** + /** * @notice Validate a transfer * @param _from the origin address * @param _to the destination address @@ -42,7 +48,8 @@ contract RuleWhitelist is RuleAddressList, RuleWhitelistCommon { address to, uint256 value ) public view virtual override returns (bool) { - return detectTransferRestrictionFrom(spender, from, to, value) == + return + detectTransferRestrictionFrom(spender, from, to, value) == uint8(REJECTED_CODE_BASE.TRANSFER_OK); } @@ -75,19 +82,28 @@ contract RuleWhitelist is RuleAddressList, RuleWhitelistCommon { if (!addressIsListed(spender)) { return CODE_ADDRESS_SPENDER_NOT_WHITELISTED; } else { - return detectTransferRestriction(from,to,value); + return detectTransferRestriction(from, to, value); } } function transferred(address from, address to, uint256 value) public view { - uint8 code = detectTransferRestriction(from,to,value); - require(code == uint8(REJECTED_CODE_BASE.TRANSFER_OK), RuleWhitelist_InvalidTransfer(from, to, value,code)); + uint8 code = detectTransferRestriction(from, to, value); + require( + code == uint8(REJECTED_CODE_BASE.TRANSFER_OK), + RuleWhitelist_InvalidTransfer(from, to, value, code) + ); } - function transferred(address spender, address from, address to, uint256 value) public view { - uint8 code = detectTransferRestrictionFrom(spender, from,to,value); - require(code == uint8(REJECTED_CODE_BASE.TRANSFER_OK), RuleWhitelist_InvalidTransfer(from, to, value,code)); + function transferred( + address spender, + address from, + address to, + uint256 value + ) public view { + uint8 code = detectTransferRestrictionFrom(spender, from, to, value); + require( + code == uint8(REJECTED_CODE_BASE.TRANSFER_OK), + RuleWhitelist_InvalidTransfer(from, to, value, code) + ); } - - } diff --git a/src/mocks/rules/validation/abstract/RuleWhitelistCommon.sol b/src/mocks/rules/validation/abstract/RuleWhitelistCommon.sol index 8cdddc7..d10041c 100644 --- a/src/mocks/rules/validation/abstract/RuleWhitelistCommon.sol +++ b/src/mocks/rules/validation/abstract/RuleWhitelistCommon.sol @@ -4,9 +4,8 @@ pragma solidity ^0.8.20; import "./RuleAddressList/invariantStorage/RuleWhitelistInvariantStorage.sol"; import {IRule} from "../../../../interfaces/IRule.sol"; -abstract contract RuleWhitelistCommon is - RuleWhitelistInvariantStorage, IRule -{ + +abstract contract RuleWhitelistCommon is RuleWhitelistInvariantStorage, IRule { /** * @notice To know if the restriction code is valid for this rule or not * @param restrictionCode The target restriction code diff --git a/src/modules/ERC3643ComplianceModule.sol b/src/modules/ERC3643ComplianceModule.sol index 51e6730..23326fb 100644 --- a/src/modules/ERC3643ComplianceModule.sol +++ b/src/modules/ERC3643ComplianceModule.sol @@ -3,10 +3,11 @@ pragma solidity ^0.8.20; /* ==== OpenZeppelin === */ -import {AccessControl} from "OZ/access/AccessControl.sol"; +import {AccessControl} from "OZ/access/AccessControl.sol"; import {EnumerableSet} from "OZ/utils/structs/EnumerableSet.sol"; /* ==== Interface and other library === */ import {IERC3643Compliance} from "../interfaces/IERC3643Compliance.sol"; + abstract contract ERC3643ComplianceModule is IERC3643Compliance, AccessControl { /* ==== Type declaration === */ using EnumerableSet for EnumerableSet.AddressSet; @@ -14,7 +15,8 @@ abstract contract ERC3643ComplianceModule is IERC3643Compliance, AccessControl { // Token binding tracking EnumerableSet.AddressSet private _boundTokens; // Access Control - bytes32 public constant COMPLIANCE_MANAGER_ROLE = keccak256("COMPLIANCE_MANAGER_ROLE"); + bytes32 public constant COMPLIANCE_MANAGER_ROLE = + keccak256("COMPLIANCE_MANAGER_ROLE"); /* ==== Errors === */ error RuleEngine_ERC3643Compliance_InvalidTokenAddress(); @@ -25,10 +27,10 @@ abstract contract ERC3643ComplianceModule is IERC3643Compliance, AccessControl { /* ==== Modifier === */ modifier onlyBoundToken() { - if (!_boundTokens.contains(_msgSender())) { - revert RuleEngine_ERC3643Compliance_UnauthorizedCaller(); - } - _; + if (!_boundTokens.contains(_msgSender())) { + revert RuleEngine_ERC3643Compliance_UnauthorizedCaller(); + } + _; } /*////////////////////////////////////////////////////////////// @@ -37,24 +39,30 @@ abstract contract ERC3643ComplianceModule is IERC3643Compliance, AccessControl { /* ============ State functions ============ */ /// @inheritdoc IERC3643Compliance - function bindToken(address token) public override virtual onlyRole(COMPLIANCE_MANAGER_ROLE) { - _bindToken(token); + function bindToken( + address token + ) public virtual override onlyRole(COMPLIANCE_MANAGER_ROLE) { + _bindToken(token); } /// @inheritdoc IERC3643Compliance - function unbindToken(address token) public override virtual onlyRole(COMPLIANCE_MANAGER_ROLE) { + function unbindToken( + address token + ) public virtual override onlyRole(COMPLIANCE_MANAGER_ROLE) { _unbindToken(token); } /// @inheritdoc IERC3643Compliance - function isTokenBound(address token) public view virtual override returns (bool) { + function isTokenBound( + address token + ) public view virtual override returns (bool) { return _boundTokens.contains(token); } /// @inheritdoc IERC3643Compliance function getTokenBound() public view virtual override returns (address) { - if(_boundTokens.length() > 0){ - // Note that there are no guarantees on the ordering of values inside the array, + if (_boundTokens.length() > 0) { + // Note that there are no guarantees on the ordering of values inside the array, // and it may change when more values are added or removed. return _boundTokens.at(0); } else { @@ -67,24 +75,38 @@ abstract contract ERC3643ComplianceModule is IERC3643Compliance, AccessControl { return _boundTokens.values(); } - - /*////////////////////////////////////////////////////////////// INTERNAL/PRIVATE FUNCTIONS //////////////////////////////////////////////////////////////*/ - function _unbindToken(address token) internal { - require (_boundTokens.contains(token), RuleEngine_ERC3643Compliance_TokenNotBound()); + function _unbindToken(address token) internal { + require( + _boundTokens.contains(token), + RuleEngine_ERC3643Compliance_TokenNotBound() + ); // Should never revert because we check if the token address is already set before - require(_boundTokens.remove(token), RuleEngine_ERC3643Compliance_OperationNotSuccessful()); + require( + _boundTokens.remove(token), + RuleEngine_ERC3643Compliance_OperationNotSuccessful() + ); emit TokenUnbound(token); } - function _bindToken(address token) internal{ - require(token != address(0), RuleEngine_ERC3643Compliance_InvalidTokenAddress()); - require(!_boundTokens.contains(token), RuleEngine_ERC3643Compliance_TokenAlreadyBound()); + + function _bindToken(address token) internal { + require( + token != address(0), + RuleEngine_ERC3643Compliance_InvalidTokenAddress() + ); + require( + !_boundTokens.contains(token), + RuleEngine_ERC3643Compliance_TokenAlreadyBound() + ); // Should never revert because we check if the token address is already set before - require(_boundTokens.add(token), RuleEngine_ERC3643Compliance_OperationNotSuccessful()); + require( + _boundTokens.add(token), + RuleEngine_ERC3643Compliance_OperationNotSuccessful() + ); emit TokenBound(token); } -} \ No newline at end of file +} diff --git a/src/modules/RulesManagementModule.sol b/src/modules/RulesManagementModule.sol index 8f048d8..9e5a848 100644 --- a/src/modules/RulesManagementModule.sol +++ b/src/modules/RulesManagementModule.sol @@ -4,11 +4,12 @@ pragma solidity ^0.8.20; /* ==== OpenZeppelin === */ import {EnumerableSet} from "OZ/utils/structs/EnumerableSet.sol"; -import {AccessControl} from "OZ/access/AccessControl.sol"; +import {AccessControl} from "OZ/access/AccessControl.sol"; /* ==== Interface and other library === */ import {IRulesManagementModule} from "../interfaces/IRulesManagementModule.sol"; import {IRule} from "../interfaces/IRule.sol"; import {RulesManagementModuleInvariantStorage} from "./library/RulesManagementModuleInvariantStorage.sol"; + /** * @title RuleEngine - part */ @@ -31,78 +32,114 @@ abstract contract RulesManagementModule is /* ============ State functions ============ */ /** - * @inheritdoc IRulesManagementModule - */ + * @inheritdoc IRulesManagementModule + */ function setRules( IRule[] calldata rules_ - ) public virtual override(IRulesManagementModule) onlyRole(RULES_MANAGEMENT_ROLE) { + ) + public + virtual + override(IRulesManagementModule) + onlyRole(RULES_MANAGEMENT_ROLE) + { if (rules_.length == 0) { revert RuleEngine_RulesManagementModule_ArrayIsEmpty(); } if (_rules.length() > 0) { _clearRules(); } - for(uint256 i = 0; i < rules_.length; ++i){ - _checkRule(address(rules_[i])); + for (uint256 i = 0; i < rules_.length; ++i) { + _checkRule(address(rules_[i])); // Should never revert because we check the presence of the rule before - require(_rules.add(address(rules_[i])), RuleEngine_RulesManagementModule_OperationNotSuccessful()); + require( + _rules.add(address(rules_[i])), + RuleEngine_RulesManagementModule_OperationNotSuccessful() + ); emit AddRule(rules_[i]); } } /** - * @inheritdoc IRulesManagementModule - */ - function clearRules() public virtual override(IRulesManagementModule) onlyRole(RULES_MANAGEMENT_ROLE) { + * @inheritdoc IRulesManagementModule + */ + function clearRules() + public + virtual + override(IRulesManagementModule) + onlyRole(RULES_MANAGEMENT_ROLE) + { _clearRules(); } /** - * @inheritdoc IRulesManagementModule - */ + * @inheritdoc IRulesManagementModule + */ function addRule( IRule rule_ - ) public virtual override(IRulesManagementModule) onlyRole(RULES_MANAGEMENT_ROLE) { + ) + public + virtual + override(IRulesManagementModule) + onlyRole(RULES_MANAGEMENT_ROLE) + { _checkRule(address(rule_)); - require(_rules.add(address(rule_)), RuleEngine_RulesManagementModule_OperationNotSuccessful()); + require( + _rules.add(address(rule_)), + RuleEngine_RulesManagementModule_OperationNotSuccessful() + ); emit AddRule(rule_); } - /** - * @inheritdoc IRulesManagementModule - */ + /** + * @inheritdoc IRulesManagementModule + */ function removeRule( IRule rule_ - ) public virtual override(IRulesManagementModule) onlyRole(RULES_MANAGEMENT_ROLE) { - require(_rules.contains(address(rule_)), RuleEngine_RulesManagementModule_RuleDoNotMatch()); + ) + public + virtual + override(IRulesManagementModule) + onlyRole(RULES_MANAGEMENT_ROLE) + { + require( + _rules.contains(address(rule_)), + RuleEngine_RulesManagementModule_RuleDoNotMatch() + ); _removeRule(rule_); } /* ============ View functions ============ */ - /** - * @inheritdoc IRulesManagementModule - */ - function rulesCount() public view virtual override(IRulesManagementModule) returns (uint256) { + /** + * @inheritdoc IRulesManagementModule + */ + function rulesCount() + public + view + virtual + override(IRulesManagementModule) + returns (uint256) + { return _rules.length(); } /** - * @inheritdoc IRulesManagementModule - */ - function containsRule(IRule rule_) public view virtual override(IRulesManagementModule) returns (bool){ + * @inheritdoc IRulesManagementModule + */ + function containsRule( + IRule rule_ + ) public view virtual override(IRulesManagementModule) returns (bool) { return _rules.contains(address(rule_)); } - /** - * @inheritdoc IRulesManagementModule - */ + * @inheritdoc IRulesManagementModule + */ function rule( uint256 ruleId ) public view virtual override(IRulesManagementModule) returns (address) { - if(ruleId < _rules.length()){ - // Note that there are no guarantees on the ordering of values inside the array, + if (ruleId < _rules.length()) { + // Note that there are no guarantees on the ordering of values inside the array, // and it may change when more values are added or removed. return _rules.at(ruleId); } else { @@ -111,8 +148,8 @@ abstract contract RulesManagementModule is } /** - * @inheritdoc IRulesManagementModule - */ + * @inheritdoc IRulesManagementModule + */ function rules() public view @@ -144,23 +181,25 @@ abstract contract RulesManagementModule is */ function _removeRule(IRule rule_) internal virtual { // Should never revert because we check the presence of the rule before - require(_rules.remove(address(rule_)), RuleEngine_RulesManagementModule_OperationNotSuccessful()); + require( + _rules.remove(address(rule_)), + RuleEngine_RulesManagementModule_OperationNotSuccessful() + ); emit RemoveRule(rule_); } /** - * @dev check if a rule is valid, revert otherwise - */ - function _checkRule(address rule_) internal view{ - if (rule_ == address(0x0)) { - revert RuleEngine_RulesManagementModule_RuleAddressZeroNotAllowed(); - } + * @dev check if a rule is valid, revert otherwise + */ + function _checkRule(address rule_) internal view { + if (rule_ == address(0x0)) { + revert RuleEngine_RulesManagementModule_RuleAddressZeroNotAllowed(); + } if (_rules.contains(rule_)) { revert RuleEngine_RulesManagementModule_RuleAlreadyExists(); } } - /* ============ Transferred functions ============ */ /** @@ -173,14 +212,10 @@ abstract contract RulesManagementModule is address from, address to, uint256 value - ) internal virtual{ + ) internal virtual { uint256 rulesLength = _rules.length(); for (uint256 i = 0; i < rulesLength; ++i) { - IRule(_rules.at(i)).transferred( - from, - to, - value - ); + IRule(_rules.at(i)).transferred(from, to, value); } } @@ -196,15 +231,10 @@ abstract contract RulesManagementModule is address from, address to, uint256 value - ) internal virtual{ + ) internal virtual { uint256 rulesLength = _rules.length(); for (uint256 i = 0; i < rulesLength; ++i) { - IRule(_rules.at(i)).transferred( - spender, - from, - to, - value - ); + IRule(_rules.at(i)).transferred(spender, from, to, value); } } } diff --git a/src/modules/VersionModule.sol b/src/modules/VersionModule.sol index c1506c1..33cf30c 100644 --- a/src/modules/VersionModule.sol +++ b/src/modules/VersionModule.sol @@ -4,21 +4,29 @@ pragma solidity ^0.8.20; /* ==== CMTAT === */ import {IERC3643Base} from "CMTAT/interfaces/tokenization/IERC3643Partial.sol"; + abstract contract VersionModule is IERC3643Base { /* ============ State Variables ============ */ - /** - * @dev - * Get the current version of the smart contract - */ + /** + * @dev + * Get the current version of the smart contract + */ string private constant VERSION = "3.0.0"; + /* ============ Events ============ */ /*////////////////////////////////////////////////////////////// PUBLIC/EXTERNAL FUNCTIONS //////////////////////////////////////////////////////////////*/ /** - * @inheritdoc IERC3643Base - */ - function version() public view virtual override(IERC3643Base) returns (string memory version_) { - return VERSION; + * @inheritdoc IERC3643Base + */ + function version() + public + view + virtual + override(IERC3643Base) + returns (string memory version_) + { + return VERSION; } } diff --git a/src/modules/library/RulesManagementModuleInvariantStorage.sol b/src/modules/library/RulesManagementModuleInvariantStorage.sol index 457e867..bb8dea0 100644 --- a/src/modules/library/RulesManagementModuleInvariantStorage.sol +++ b/src/modules/library/RulesManagementModuleInvariantStorage.sol @@ -12,23 +12,22 @@ abstract contract RulesManagementModuleInvariantStorage { error RuleEngine_RulesManagementModule_ArrayIsEmpty(); error RuleEngine_RulesManagementModule_OperationNotSuccessful(); - /* ============ Events ============ */ /** - * @notice Emitted when a new rule is added to the rule set. - * @param rule The address of the rule contract that was added. - */ + * @notice Emitted when a new rule is added to the rule set. + * @param rule The address of the rule contract that was added. + */ event AddRule(IRule indexed rule); - - /** - * @notice Emitted when a rule is removed from the rule set. - * @param rule The address of the rule contract that was removed. - */ + + /** + * @notice Emitted when a rule is removed from the rule set. + * @param rule The address of the rule contract that was removed. + */ event RemoveRule(IRule indexed rule); - - /** - * @notice Emitted when all rules are cleared from the rule set. - */ + + /** + * @notice Emitted when all rules are cleared from the rule set. + */ event ClearRules(); /* ==== Constant === */ diff --git a/test/HelperContract.sol b/test/HelperContract.sol index 59b4bd5..17b19df 100644 --- a/test/HelperContract.sol +++ b/test/HelperContract.sol @@ -61,7 +61,6 @@ abstract contract HelperContract is string constant DEFAULT_ADMIN_ROLE_HASH = "0x0000000000000000000000000000000000000000000000000000000000000000"; - // contract RuleWhitelist public ruleWhitelist; RuleConditionalTransferLight public ruleConditionalTransferLight; @@ -73,7 +72,6 @@ abstract contract HelperContract is // RuleEngine Mock RuleEngine public ruleEngineMock; - //bytes32 public constant RULE_ENGINE_ROLE = keccak256("RULE_ENGINE_ROLE"); uint8 constant NO_ERROR = 0; diff --git a/test/RuleEngine/AccessControl/RuleEngineAccessControl.sol b/test/RuleEngine/AccessControl/RuleEngineAccessControl.sol index 214696f..edf578a 100644 --- a/test/RuleEngine/AccessControl/RuleEngineAccessControl.sol +++ b/test/RuleEngine/AccessControl/RuleEngineAccessControl.sol @@ -1,4 +1,3 @@ - // SPDX-License-Identifier: MPL-2.0 pragma solidity ^0.8.20; @@ -122,7 +121,11 @@ contract RuleEngineAccessControlTest is Test, HelperContract { function testCannotAttackerOperateOnTransfer() public { // Act vm.prank(ATTACKER); - vm.expectRevert(ERC3643ComplianceModule.RuleEngine_ERC3643Compliance_UnauthorizedCaller.selector); + vm.expectRevert( + ERC3643ComplianceModule + .RuleEngine_ERC3643Compliance_UnauthorizedCaller + .selector + ); ruleEngineMock.transferred(address(0), ADDRESS1, ADDRESS2, 10); } } diff --git a/test/RuleEngine/AccessControl/RuleEngineAccessControlOZ.t.sol b/test/RuleEngine/AccessControl/RuleEngineAccessControlOZ.t.sol index 35269c1..20de13b 100644 --- a/test/RuleEngine/AccessControl/RuleEngineAccessControlOZ.t.sol +++ b/test/RuleEngine/AccessControl/RuleEngineAccessControlOZ.t.sol @@ -114,4 +114,4 @@ contract RuleEngineAccessControlTest is Test, HelperContract, AccessControl { bool res3 = ruleEngineMock.hasRole(RULES_MANAGEMENT_ROLE, ADDRESS1); assertEq(res3, true); } -} \ No newline at end of file +} diff --git a/test/RuleEngine/ERC3643Compliance.t.sol b/test/RuleEngine/ERC3643Compliance.t.sol index b898df9..dd64ade 100644 --- a/test/RuleEngine/ERC3643Compliance.t.sol +++ b/test/RuleEngine/ERC3643Compliance.t.sol @@ -5,6 +5,7 @@ import "forge-std/Test.sol"; import "../HelperContract.sol"; import {IERC3643Compliance} from "../../src/interfaces/IERC3643Compliance.sol"; import {ERC3643ComplianceModule} from "../../src/modules/ERC3643ComplianceModule.sol"; + // Minimal mock ERC-3643 token to simulate calls to RuleEngine contract ERC3643MockToken { IERC3643Compliance public ruleEngine; @@ -21,7 +22,11 @@ contract ERC3643MockToken { ruleEngine.destroyed(from, amount); } - function simulateTransferred(address from, address to, uint256 amount) external { + function simulateTransferred( + address from, + address to, + uint256 amount + ) external { ruleEngine.transferred(from, to, amount); } } @@ -46,7 +51,6 @@ contract RuleEngineTest is Test, HelperContract { token2 = new ERC3643MockToken(address(ruleEngine)); token3 = new ERC3643MockToken(address(ruleEngine)); - vm.startPrank(admin); ruleEngine.grantRole(ruleEngine.COMPLIANCE_MANAGER_ROLE(), operator); vm.stopPrank(); @@ -55,7 +59,7 @@ contract RuleEngineTest is Test, HelperContract { function testBindToken() public { // Expect events for each bound token vm.startPrank(operator); - + vm.expectEmit(true, false, false, true); emit IERC3643Compliance.TokenBound(address(token1)); ruleEngine.bindToken(address(token1)); @@ -94,7 +98,6 @@ contract RuleEngineTest is Test, HelperContract { ruleEngine.bindToken(address(token1)); ruleEngine.bindToken(address(token2)); ruleEngine.bindToken(address(token3)); - // Expect events for each unbind vm.expectEmit(true, false, false, true); @@ -140,14 +143,21 @@ contract RuleEngineTest is Test, HelperContract { } function testCannotBoundIfInvalidAddress() public { - vm.expectRevert(ERC3643ComplianceModule.RuleEngine_ERC3643Compliance_InvalidTokenAddress.selector); + vm.expectRevert( + ERC3643ComplianceModule + .RuleEngine_ERC3643Compliance_InvalidTokenAddress + .selector + ); vm.prank(admin); ruleEngine.bindToken(address(ZERO_ADDRESS)); } - function testCannotUnBoundIfTokenIsNotBound() public { - vm.expectRevert(ERC3643ComplianceModule.RuleEngine_ERC3643Compliance_TokenNotBound.selector); + vm.expectRevert( + ERC3643ComplianceModule + .RuleEngine_ERC3643Compliance_TokenNotBound + .selector + ); vm.prank(admin); ruleEngine.unbindToken(address(0x100)); } @@ -156,25 +166,41 @@ contract RuleEngineTest is Test, HelperContract { // Arrange vm.prank(admin); ruleEngine.bindToken(address(0x1)); - + // Assert - vm.expectRevert(ERC3643ComplianceModule.RuleEngine_ERC3643Compliance_TokenAlreadyBound.selector); + vm.expectRevert( + ERC3643ComplianceModule + .RuleEngine_ERC3643Compliance_TokenAlreadyBound + .selector + ); vm.prank(admin); ruleEngine.bindToken(address(0x1)); } function testCannotCreatedIfNotBound() public { - vm.expectRevert(ERC3643ComplianceModule.RuleEngine_ERC3643Compliance_UnauthorizedCaller.selector); + vm.expectRevert( + ERC3643ComplianceModule + .RuleEngine_ERC3643Compliance_UnauthorizedCaller + .selector + ); ruleEngine.created(user1, 100); } function testCannotDestroyedIfNotBound() public { - vm.expectRevert(ERC3643ComplianceModule.RuleEngine_ERC3643Compliance_UnauthorizedCaller.selector); + vm.expectRevert( + ERC3643ComplianceModule + .RuleEngine_ERC3643Compliance_UnauthorizedCaller + .selector + ); ruleEngine.destroyed(user2, 50); } function testCannotTransferredIfNotBound() public { - vm.expectRevert(ERC3643ComplianceModule.RuleEngine_ERC3643Compliance_UnauthorizedCaller.selector); + vm.expectRevert( + ERC3643ComplianceModule + .RuleEngine_ERC3643Compliance_UnauthorizedCaller + .selector + ); ruleEngine.transferred(user1, user2, 200); } -} \ No newline at end of file +} diff --git a/test/RuleEngine/RuleEngineDeployment.t.sol b/test/RuleEngine/RuleEngineDeployment.t.sol index 15e520f..d826814 100644 --- a/test/RuleEngine/RuleEngineDeployment.t.sol +++ b/test/RuleEngine/RuleEngineDeployment.t.sol @@ -35,9 +35,9 @@ contract RuleEngineTest is Test, HelperContract { assertEq(resBool, true); } - function testReturnZeroAddressForRule() public{ + function testReturnZeroAddressForRule() public { // Arrange - ruleEngineMock = new RuleEngine( + ruleEngineMock = new RuleEngine( RULE_ENGINE_OPERATOR_ADDRESS, address(0x0), ZERO_ADDRESS @@ -45,7 +45,7 @@ contract RuleEngineTest is Test, HelperContract { // Act resAddr = ruleEngineMock.rule(0); // Assert - assertEq(resAddr , ZERO_ADDRESS); + assertEq(resAddr, ZERO_ADDRESS); } function testHasRightVersion() public { diff --git a/test/RuleEngine/RulesManagementModuleTest/CMTATIntegration.t.sol b/test/RuleEngine/RulesManagementModuleTest/CMTATIntegration.t.sol index 0dd00b6..70c0fa8 100644 --- a/test/RuleEngine/RulesManagementModuleTest/CMTATIntegration.t.sol +++ b/test/RuleEngine/RulesManagementModuleTest/CMTATIntegration.t.sol @@ -5,14 +5,16 @@ import "forge-std/Test.sol"; import "CMTAT/deployment/CMTATStandalone.sol"; import "../../HelperContract.sol"; import "OZ/token/ERC20/IERC20.sol"; + /** * @title General functions of the RuleEngine */ contract RuleEngineCMTATIntegrationTest is Test, HelperContract { uint256 defaultValue = 20; + // Arrange function setUp() public { - // global arrange + // global arrange cmtatDeployment = new CMTATDeployment(); CMTAT_CONTRACT = cmtatDeployment.cmtat(); @@ -47,11 +49,13 @@ contract RuleEngineCMTATIntegrationTest is Test, HelperContract { function testCanDetectTransferRestrictionOK() public { // Arrange vm.prank(CONDITIONAL_TRANSFER_OPERATOR_ADDRESS); - + vm.expectEmit(true, true, true, true); emit TransferApproved(ADDRESS1, ADDRESS2, defaultValue, 1); ruleConditionalTransferLight.approveTransfer( - ADDRESS1, ADDRESS2, defaultValue + ADDRESS1, + ADDRESS2, + defaultValue ); // Act // RuleEngine @@ -95,15 +99,10 @@ contract RuleEngineCMTATIntegrationTest is Test, HelperContract { assertEq(resUint8, 0); // RuleEngine - resBool = ruleEngineMock.canTransfer( - ADDRESS1, - ADDRESS2, - defaultValue - ); + resBool = ruleEngineMock.canTransfer(ADDRESS1, ADDRESS2, defaultValue); // Assert - assertEq(resBool, true ); - + assertEq(resBool, true); resBool = ruleEngineMock.canTransferFrom( ADDRESS3, @@ -113,18 +112,13 @@ contract RuleEngineCMTATIntegrationTest is Test, HelperContract { ); // Assert - assertEq(resBool,true); + assertEq(resBool, true); // CMTAT - resBool = CMTAT_CONTRACT.canTransfer( - ADDRESS1, - ADDRESS2, - defaultValue - ); + resBool = CMTAT_CONTRACT.canTransfer(ADDRESS1, ADDRESS2, defaultValue); // Assert - assertEq(resBool, true ); - + assertEq(resBool, true); resBool = CMTAT_CONTRACT.canTransferFrom( ADDRESS3, @@ -134,8 +128,7 @@ contract RuleEngineCMTATIntegrationTest is Test, HelperContract { ); // Assert - assertEq(resBool,true); - + assertEq(resBool, true); } function testCanDetectTransferRestrictionNotOk() public { @@ -182,21 +175,13 @@ contract RuleEngineCMTATIntegrationTest is Test, HelperContract { assertEq(resUint8, CODE_TRANSFER_REQUEST_NOT_APPROVED); // Act - resBool = ruleEngineMock.canTransfer( - ADDRESS1, - ADDRESS2, - 20 - ); + resBool = ruleEngineMock.canTransfer(ADDRESS1, ADDRESS2, 20); // Assert assertFalse(resBool); // CMTAT - resBool = CMTAT_CONTRACT.canTransfer( - ADDRESS1, - ADDRESS2, - 20 - ); + resBool = CMTAT_CONTRACT.canTransfer(ADDRESS1, ADDRESS2, 20); // Assert assertFalse(resBool); @@ -227,19 +212,22 @@ contract RuleEngineCMTATIntegrationTest is Test, HelperContract { function testCanPerfromATransfer() public { vm.prank(CONDITIONAL_TRANSFER_OPERATOR_ADDRESS); ruleConditionalTransferLight.approveTransfer( - ADDRESS1, ADDRESS2, defaultValue + ADDRESS1, + ADDRESS2, + defaultValue ); vm.prank(ADDRESS1); CMTAT_CONTRACT.transfer(ADDRESS2, defaultValue); vm.prank(CONDITIONAL_TRANSFER_OPERATOR_ADDRESS); ruleConditionalTransferLight.approveTransfer( - ADDRESS1, ADDRESS2, defaultValue + ADDRESS1, + ADDRESS2, + defaultValue ); vm.prank(ADDRESS1); CMTAT_CONTRACT.approve(ADDRESS3, defaultValue); vm.prank(ADDRESS3); CMTAT_CONTRACT.transferFrom(ADDRESS1, ADDRESS2, defaultValue); } - -} \ No newline at end of file +} diff --git a/test/RuleEngine/RulesManagementModuleTest/RuleEngineOperation.t.sol b/test/RuleEngine/RulesManagementModuleTest/RuleEngineOperation.t.sol index dde2c10..04a73d1 100644 --- a/test/RuleEngine/RulesManagementModuleTest/RuleEngineOperation.t.sol +++ b/test/RuleEngine/RulesManagementModuleTest/RuleEngineOperation.t.sol @@ -4,11 +4,13 @@ pragma solidity ^0.8.20; import "forge-std/Test.sol"; import "../../HelperContract.sol"; import "OZ/token/ERC20/IERC20.sol"; + /** * @title General functions of the RuleEngine */ contract RulesManagementModuleInvariantStorageTest is Test, HelperContract { - IRule[] ruleConditionalTransferLightTab = new IRule[](2); + IRule[] ruleConditionalTransferLightTab = new IRule[](2); + // Arrange function setUp() public { vm.prank(RULE_ENGINE_OPERATOR_ADDRESS); @@ -27,7 +29,10 @@ contract RulesManagementModuleInvariantStorageTest is Test, HelperContract { // Arrange - Assert resUint256 = ruleEngineMock.rulesCount(); assertEq(resUint256, 1); - assertEq(ruleEngineMock.containsRule(ruleConditionalTransferLight), true); + assertEq( + ruleEngineMock.containsRule(ruleConditionalTransferLight), + true + ); } function testCanSetRules() public { @@ -42,21 +47,35 @@ contract RulesManagementModuleInvariantStorageTest is Test, HelperContract { CONDITIONAL_TRANSFER_OPERATOR_ADDRESS, ruleEngineMock ); - ruleConditionalTransferLightTab[0] = IRule(ruleConditionalTransferLight1); - ruleConditionalTransferLightTab[1] = IRule(ruleConditionalTransferLight2); + ruleConditionalTransferLightTab[0] = IRule( + ruleConditionalTransferLight1 + ); + ruleConditionalTransferLightTab[1] = IRule( + ruleConditionalTransferLight2 + ); // Act vm.expectEmit(true, false, false, false); - emit RulesManagementModuleInvariantStorage.AddRule(ruleConditionalTransferLight1); + emit RulesManagementModuleInvariantStorage.AddRule( + ruleConditionalTransferLight1 + ); vm.expectEmit(true, false, false, false); - emit RulesManagementModuleInvariantStorage.AddRule(ruleConditionalTransferLight2); + emit RulesManagementModuleInvariantStorage.AddRule( + ruleConditionalTransferLight2 + ); vm.prank(RULE_ENGINE_OPERATOR_ADDRESS); ruleEngineMock.setRules(ruleConditionalTransferLightTab); // Assert resUint256 = ruleEngineMock.rulesCount(); assertEq(resUint256, 2); - assertEq(ruleEngineMock.containsRule(ruleConditionalTransferLight1), true); - assertEq(ruleEngineMock.containsRule(ruleConditionalTransferLight2), true); + assertEq( + ruleEngineMock.containsRule(ruleConditionalTransferLight1), + true + ); + assertEq( + ruleEngineMock.containsRule(ruleConditionalTransferLight2), + true + ); } function testCannotSetRuleIfARuleIsAlreadyPresent() public { @@ -71,7 +90,9 @@ contract RulesManagementModuleInvariantStorageTest is Test, HelperContract { // Act vm.prank(RULE_ENGINE_OPERATOR_ADDRESS); - vm.expectRevert(RuleEngine_RulesManagementModule_RuleAlreadyExists.selector); + vm.expectRevert( + RuleEngine_RulesManagementModule_RuleAlreadyExists.selector + ); ruleEngineMock.setRules(ruleConditionalTransferLightTab); // Assert @@ -86,7 +107,11 @@ contract RulesManagementModuleInvariantStorageTest is Test, HelperContract { assertFalse(resBool); // Act - vm.expectRevert(RulesManagementModuleInvariantStorage.RuleEngine_RulesManagementModule_ArrayIsEmpty.selector); + vm.expectRevert( + RulesManagementModuleInvariantStorage + .RuleEngine_RulesManagementModule_ArrayIsEmpty + .selector + ); vm.prank(RULE_ENGINE_OPERATOR_ADDRESS); ruleEngineMock.setRules(ruleConditionalTransferLightTab); // Assert @@ -104,7 +129,11 @@ contract RulesManagementModuleInvariantStorageTest is Test, HelperContract { ruleConditionalTransferLightTab = new IRule[](0); // Act vm.prank(RULE_ENGINE_OPERATOR_ADDRESS); - vm.expectRevert(RulesManagementModuleInvariantStorage.RuleEngine_RulesManagementModule_ArrayIsEmpty.selector); + vm.expectRevert( + RulesManagementModuleInvariantStorage + .RuleEngine_RulesManagementModule_ArrayIsEmpty + .selector + ); ruleEngineMock.setRules(ruleConditionalTransferLightTab); // Assert1 @@ -129,23 +158,39 @@ contract RulesManagementModuleInvariantStorageTest is Test, HelperContract { CONDITIONAL_TRANSFER_OPERATOR_ADDRESS, ruleEngineMock ); - ruleConditionalTransferLightTab[0] = IRule(ruleConditionalTransferLight1); - ruleConditionalTransferLightTab[1] = IRule(ruleConditionalTransferLight2); + ruleConditionalTransferLightTab[0] = IRule( + ruleConditionalTransferLight1 + ); + ruleConditionalTransferLightTab[1] = IRule( + ruleConditionalTransferLight2 + ); vm.prank(RULE_ENGINE_OPERATOR_ADDRESS); ruleEngineMock.setRules(ruleConditionalTransferLightTab); address[] memory rulesResult = ruleEngineMock.rules(); - if((rulesResult[0] != address(ruleConditionalTransferLight1)) || (rulesResult[0] != address(ruleConditionalTransferLight1))){ + if ( + (rulesResult[0] != address(ruleConditionalTransferLight1)) || + (rulesResult[0] != address(ruleConditionalTransferLight1)) + ) { revert("Invalid array storage 1"); - } - if((rulesResult[1] != address(ruleConditionalTransferLight2)) || (rulesResult[1] != address(ruleConditionalTransferLight2))){ + } + if ( + (rulesResult[1] != address(ruleConditionalTransferLight2)) || + (rulesResult[1] != address(ruleConditionalTransferLight2)) + ) { revert("Invalid array storage 2"); - } + } // Assert - Arrange resUint256 = ruleEngineMock.rulesCount(); assertEq(resUint256, 2); - assertEq(ruleEngineMock.containsRule(ruleConditionalTransferLight1), true); - assertEq(ruleEngineMock.containsRule(ruleConditionalTransferLight2), true); + assertEq( + ruleEngineMock.containsRule(ruleConditionalTransferLight1), + true + ); + assertEq( + ruleEngineMock.containsRule(ruleConditionalTransferLight2), + true + ); // Act vm.expectEmit(true, false, false, false); @@ -172,8 +217,12 @@ contract RulesManagementModuleInvariantStorageTest is Test, HelperContract { CONDITIONAL_TRANSFER_OPERATOR_ADDRESS, ruleEngineMock ); - ruleConditionalTransferLightTab[0] = IRule(ruleConditionalTransferLight1); - ruleConditionalTransferLightTab[1] = IRule(ruleConditionalTransferLight2); + ruleConditionalTransferLightTab[0] = IRule( + ruleConditionalTransferLight1 + ); + ruleConditionalTransferLightTab[1] = IRule( + ruleConditionalTransferLight2 + ); vm.prank(RULE_ENGINE_OPERATOR_ADDRESS); (bool resCallBool, ) = address(ruleEngineMock).call( @@ -214,7 +263,9 @@ contract RulesManagementModuleInvariantStorageTest is Test, HelperContract { // Can add previous rule again vm.expectEmit(true, false, false, false); - emit RulesManagementModuleInvariantStorage.AddRule(ruleConditionalTransferLight1); + emit RulesManagementModuleInvariantStorage.AddRule( + ruleConditionalTransferLight1 + ); vm.prank(RULE_ENGINE_OPERATOR_ADDRESS); ruleEngineMock.addRule(ruleConditionalTransferLight1); } @@ -229,7 +280,9 @@ contract RulesManagementModuleInvariantStorageTest is Test, HelperContract { // Act vm.expectEmit(true, false, false, false); - emit RulesManagementModuleInvariantStorage.AddRule(ruleConditionalTransferLight1); + emit RulesManagementModuleInvariantStorage.AddRule( + ruleConditionalTransferLight1 + ); vm.prank(RULE_ENGINE_OPERATOR_ADDRESS); ruleEngineMock.addRule(ruleConditionalTransferLight1); @@ -240,7 +293,9 @@ contract RulesManagementModuleInvariantStorageTest is Test, HelperContract { function testCannotAddRuleZeroAddress() public { // Act - vm.expectRevert(RuleEngine_RulesManagementModule_RuleAddressZeroNotAllowed.selector); + vm.expectRevert( + RuleEngine_RulesManagementModule_RuleAddressZeroNotAllowed.selector + ); vm.prank(RULE_ENGINE_OPERATOR_ADDRESS); ruleEngineMock.addRule(IRule(address(0x0))); @@ -251,7 +306,9 @@ contract RulesManagementModuleInvariantStorageTest is Test, HelperContract { function testCannotAddARuleAlreadyPresent() public { // Act - vm.expectRevert(RuleEngine_RulesManagementModule_RuleAlreadyExists.selector); + vm.expectRevert( + RuleEngine_RulesManagementModule_RuleAlreadyExists.selector + ); vm.prank(RULE_ENGINE_OPERATOR_ADDRESS); ruleEngineMock.addRule(ruleConditionalTransferLight); @@ -271,7 +328,9 @@ contract RulesManagementModuleInvariantStorageTest is Test, HelperContract { // Act vm.expectEmit(true, false, false, false); - emit RulesManagementModuleInvariantStorage.AddRule(ruleConditionalTransferLight); + emit RulesManagementModuleInvariantStorage.AddRule( + ruleConditionalTransferLight + ); vm.prank(RULE_ENGINE_OPERATOR_ADDRESS); ruleEngineMock.addRule(ruleConditionalTransferLight); @@ -290,7 +349,9 @@ contract RulesManagementModuleInvariantStorageTest is Test, HelperContract { ); // Act - vm.expectRevert(RuleEngine_RulesManagementModule_RuleDoNotMatch.selector); + vm.expectRevert( + RuleEngine_RulesManagementModule_RuleDoNotMatch.selector + ); vm.prank(RULE_ENGINE_OPERATOR_ADDRESS); ruleEngineMock.removeRule(ruleConditionalTransferLight1); @@ -311,7 +372,9 @@ contract RulesManagementModuleInvariantStorageTest is Test, HelperContract { // Act vm.expectEmit(true, false, false, false); - emit RulesManagementModuleInvariantStorage.RemoveRule(ruleConditionalTransferLight1); + emit RulesManagementModuleInvariantStorage.RemoveRule( + ruleConditionalTransferLight1 + ); vm.prank(RULE_ENGINE_OPERATOR_ADDRESS); ruleEngineMock.removeRule(ruleConditionalTransferLight1); @@ -332,7 +395,9 @@ contract RulesManagementModuleInvariantStorageTest is Test, HelperContract { // Act vm.expectEmit(true, false, false, false); - emit RulesManagementModuleInvariantStorage.RemoveRule(ruleConditionalTransferLight); + emit RulesManagementModuleInvariantStorage.RemoveRule( + ruleConditionalTransferLight + ); vm.prank(RULE_ENGINE_OPERATOR_ADDRESS); ruleEngineMock.removeRule(ruleConditionalTransferLight); @@ -362,7 +427,9 @@ contract RulesManagementModuleInvariantStorageTest is Test, HelperContract { // Act vm.expectEmit(true, false, false, false); - emit RulesManagementModuleInvariantStorage.RemoveRule(ruleConditionalTransferLight1); + emit RulesManagementModuleInvariantStorage.RemoveRule( + ruleConditionalTransferLight1 + ); vm.prank(RULE_ENGINE_OPERATOR_ADDRESS); ruleEngineMock.removeRule(ruleConditionalTransferLight1); @@ -392,8 +459,12 @@ contract RulesManagementModuleInvariantStorageTest is Test, HelperContract { CONDITIONAL_TRANSFER_OPERATOR_ADDRESS, ruleEngineMock ); - ruleConditionalTransferLightTab[0] = IRule(ruleConditionalTransferLight1); - ruleConditionalTransferLightTab[1] = IRule(ruleConditionalTransferLight2); + ruleConditionalTransferLightTab[0] = IRule( + ruleConditionalTransferLight1 + ); + ruleConditionalTransferLightTab[1] = IRule( + ruleConditionalTransferLight2 + ); vm.prank(RULE_ENGINE_OPERATOR_ADDRESS); ruleEngineMock.setRules(ruleConditionalTransferLightTab); @@ -414,8 +485,12 @@ contract RulesManagementModuleInvariantStorageTest is Test, HelperContract { CONDITIONAL_TRANSFER_OPERATOR_ADDRESS, ruleEngineMock ); - ruleConditionalTransferLightTab[0] = IRule(ruleConditionalTransferLight1); - ruleConditionalTransferLightTab[1] = IRule(ruleConditionalTransferLight2); + ruleConditionalTransferLightTab[0] = IRule( + ruleConditionalTransferLight1 + ); + ruleConditionalTransferLightTab[1] = IRule( + ruleConditionalTransferLight2 + ); vm.prank(RULE_ENGINE_OPERATOR_ADDRESS); ruleEngineMock.setRules(ruleConditionalTransferLightTab); @@ -436,8 +511,12 @@ contract RulesManagementModuleInvariantStorageTest is Test, HelperContract { CONDITIONAL_TRANSFER_OPERATOR_ADDRESS, ruleEngineMock ); - ruleConditionalTransferLightTab[0] = IRule(ruleConditionalTransferLight1); - ruleConditionalTransferLightTab[1] = IRule(ruleConditionalTransferLight2); + ruleConditionalTransferLightTab[0] = IRule( + ruleConditionalTransferLight1 + ); + ruleConditionalTransferLightTab[1] = IRule( + ruleConditionalTransferLight2 + ); vm.prank(RULE_ENGINE_OPERATOR_ADDRESS); ruleEngineMock.setRules(ruleConditionalTransferLightTab); @@ -447,7 +526,10 @@ contract RulesManagementModuleInvariantStorageTest is Test, HelperContract { // Assert assertEq(ruleConditionalTransferLightTab.length, rules.length); for (uint256 i = 0; i < rules.length; ++i) { - assertEq(address(ruleConditionalTransferLightTab[i]), address(rules[i])); + assertEq( + address(ruleConditionalTransferLightTab[i]), + address(rules[i]) + ); } } @@ -461,9 +543,12 @@ contract RulesManagementModuleInvariantStorageTest is Test, HelperContract { CONDITIONAL_TRANSFER_OPERATOR_ADDRESS, ruleEngineMock ); - ruleConditionalTransferLightTab[0] = IRule(ruleConditionalTransferLight1); - ruleConditionalTransferLightTab[1] = - IRule(ruleConditionalTransferLight2); + ruleConditionalTransferLightTab[0] = IRule( + ruleConditionalTransferLight1 + ); + ruleConditionalTransferLightTab[1] = IRule( + ruleConditionalTransferLight2 + ); vm.prank(RULE_ENGINE_OPERATOR_ADDRESS); (bool resCallBool, ) = address(ruleEngineMock).call( abi.encodeCall( @@ -475,7 +560,7 @@ contract RulesManagementModuleInvariantStorageTest is Test, HelperContract { assertEq(resCallBool, true); // Act - /* uint256 index1 = ruleEngineMock.getRuleIndex( + /* uint256 index1 = ruleEngineMock.getRuleIndex( ruleConditionalTransferLight1 ); uint256 index2 = ruleEngineMock.getRuleIndex( @@ -491,4 +576,4 @@ contract RulesManagementModuleInvariantStorageTest is Test, HelperContract { assertEq(index2, 1); assertEq(index3, ruleConditionalTransferLightTab.length);*/ } -} \ No newline at end of file +} diff --git a/test/RuleEngine/RulesManagementModuleTest/RuleEngineOperationRevert.t.sol b/test/RuleEngine/RulesManagementModuleTest/RuleEngineOperationRevert.t.sol index bbad43c..bb712b1 100644 --- a/test/RuleEngine/RulesManagementModuleTest/RuleEngineOperationRevert.t.sol +++ b/test/RuleEngine/RulesManagementModuleTest/RuleEngineOperationRevert.t.sol @@ -5,25 +5,24 @@ import "forge-std/Test.sol"; import "../../HelperContract.sol"; import "OZ/token/ERC20/IERC20.sol"; import "src/mocks/rules/operation/RuleOperationRevert.sol"; + /** * @title General functions of the RuleEngine */ contract RuleEngineOperationTestRevert is Test, HelperContract { - // Arrange function setUp() public { // CMTAT cmtatDeployment = new CMTATDeployment(); CMTAT_CONTRACT = cmtatDeployment.cmtat(); - + vm.prank(RULE_ENGINE_OPERATOR_ADDRESS); ruleEngineMock = new RuleEngine( RULE_ENGINE_OPERATOR_ADDRESS, ZERO_ADDRESS, address(CMTAT_CONTRACT) ); - RuleOperationRevert ruleOperationRevert = new RuleOperationRevert( - ); + RuleOperationRevert ruleOperationRevert = new RuleOperationRevert(); vm.prank(RULE_ENGINE_OPERATOR_ADDRESS); ruleEngineMock.addRule(ruleOperationRevert); @@ -37,8 +36,12 @@ contract RuleEngineOperationTestRevert is Test, HelperContract { function testRuleEngineTransferredRevert() public { // Arrange - vm.expectRevert(RuleOperationRevert.RuleConditionalTransferLight_InvalidTransfer.selector); + vm.expectRevert( + RuleOperationRevert + .RuleConditionalTransferLight_InvalidTransfer + .selector + ); // Act CMTAT_CONTRACT.transfer(ADDRESS2, 21); } -} \ No newline at end of file +} diff --git a/test/RuleEngine/RulesManagementModuleTest/RuleEngineRestriction.t.sol b/test/RuleEngine/RulesManagementModuleTest/RuleEngineRestriction.t.sol index 25b712d..c6cc4ae 100644 --- a/test/RuleEngine/RulesManagementModuleTest/RuleEngineRestriction.t.sol +++ b/test/RuleEngine/RulesManagementModuleTest/RuleEngineRestriction.t.sol @@ -4,6 +4,7 @@ pragma solidity ^0.8.20; import "forge-std/Test.sol"; import "../../HelperContract.sol"; import "OZ/token/ERC20/IERC20.sol"; + //ADmin, forwarder irrect /RuleEngine /** * @title General functions of the RuleEngine @@ -34,11 +35,13 @@ contract RuleEngineTest is Test, HelperContract { function testCanDetectTransferRestrictionOK() public { // Arrange vm.prank(CONDITIONAL_TRANSFER_OPERATOR_ADDRESS); - + vm.expectEmit(true, true, true, true); emit TransferApproved(ADDRESS1, ADDRESS2, defaultValue, 1); ruleConditionalTransferLight.approveTransfer( - ADDRESS1, ADDRESS2, defaultValue + ADDRESS1, + ADDRESS2, + defaultValue ); // Act resUint8 = ruleEngineMock.detectTransferRestriction( @@ -60,15 +63,10 @@ contract RuleEngineTest is Test, HelperContract { // Assert assertEq(resUint8, 0); - resBool = ruleEngineMock.canTransfer( - ADDRESS1, - ADDRESS2, - defaultValue - ); + resBool = ruleEngineMock.canTransfer(ADDRESS1, ADDRESS2, defaultValue); // Assert - assertEq(resBool, true ); - + assertEq(resBool, true); resBool = ruleEngineMock.canTransferFrom( ADDRESS3, @@ -78,7 +76,7 @@ contract RuleEngineTest is Test, HelperContract { ); // Assert - assertEq(resBool,true); + assertEq(resBool, true); } function testCanDetectTransferRestrictionNotOk() public { @@ -104,11 +102,7 @@ contract RuleEngineTest is Test, HelperContract { assertEq(resUint8, CODE_TRANSFER_REQUEST_NOT_APPROVED); // Act - resBool = ruleEngineMock.canTransfer( - ADDRESS1, - ADDRESS2, - 20 - ); + resBool = ruleEngineMock.canTransfer(ADDRESS1, ADDRESS2, 20); // Assert assertFalse(resBool); @@ -156,4 +150,4 @@ contract RuleEngineTest is Test, HelperContract { // Assert assertEq(resString, TEXT_TRANSFER_REQUEST_NOT_APPROVED); } -} \ No newline at end of file +} diff --git a/test/RuleEngine/ruleEngineValidation/RuleEngineRestriction.sol b/test/RuleEngine/ruleEngineValidation/RuleEngineRestriction.sol index 21036a9..4904813 100644 --- a/test/RuleEngine/ruleEngineValidation/RuleEngineRestriction.sol +++ b/test/RuleEngine/ruleEngineValidation/RuleEngineRestriction.sol @@ -4,6 +4,7 @@ pragma solidity ^0.8.20; import "forge-std/Test.sol"; import "../../HelperContract.sol"; import "OZ/token/ERC20/IERC20.sol"; + /** * @title tests concerning the restrictions and for the transfers */ @@ -113,7 +114,6 @@ contract RuleEngineRestrictionTest is Test, HelperContract { // Assert assertEq(resUint8, CODE_ADDRESS_FROM_NOT_WHITELISTED); - // Act resUint8 = ruleEngineMock.detectTransferRestrictionFrom( ADDRESS3, @@ -147,16 +147,11 @@ contract RuleEngineRestrictionTest is Test, HelperContract { // Assert assertFalse(resBool); - resBool = ruleEngineMock.canTransfer( - ADDRESS1, - ADDRESS2, - 20 - ); + resBool = ruleEngineMock.canTransfer(ADDRESS1, ADDRESS2, 20); // Assert assertFalse(resBool); } - function testCanDetectTransferRestrictionWithTo() public { // Arrange vm.prank(WHITELIST_OPERATOR_ADDRESS); @@ -185,11 +180,7 @@ contract RuleEngineRestrictionTest is Test, HelperContract { assertEq(resUint8, CODE_ADDRESS_TO_NOT_WHITELISTED); // Assert - resBool = ruleEngineMock.canTransfer( - ADDRESS1, - ADDRESS2, - 20 - ); + resBool = ruleEngineMock.canTransfer(ADDRESS1, ADDRESS2, 20); // Assert assertFalse(resBool); @@ -251,11 +242,7 @@ contract RuleEngineRestrictionTest is Test, HelperContract { // ruleEngine // Act - resBool = ruleEngineMock.canTransfer( - ADDRESS1, - ADDRESS2, - 20 - ); + resBool = ruleEngineMock.canTransfer(ADDRESS1, ADDRESS2, 20); // Assert assertEq(resBool, true); @@ -271,13 +258,9 @@ contract RuleEngineRestrictionTest is Test, HelperContract { // ruleEngine // Act - resBool = ruleEngineMock.canTransfer( - ADDRESS1, - ADDRESS2, - 20 - ); + resBool = ruleEngineMock.canTransfer(ADDRESS1, ADDRESS2, 20); // Assert assertFalse(resBool); } -} \ No newline at end of file +} diff --git a/test/RuleEngine/ruleEngineValidation/RuleEngineValidation.sol b/test/RuleEngine/ruleEngineValidation/RuleEngineValidation.sol index 6bc5cdc..5b1b22c 100644 --- a/test/RuleEngine/ruleEngineValidation/RuleEngineValidation.sol +++ b/test/RuleEngine/ruleEngineValidation/RuleEngineValidation.sol @@ -8,7 +8,8 @@ import "../../HelperContract.sol"; * @title General functions of the RuleEngine */ contract RuleEngineTest is Test, HelperContract { - IRule[] ruleWhitelistTab = new IRule[](2); + IRule[] ruleWhitelistTab = new IRule[](2); + // Arrange function setUp() public { ruleWhitelist = new RuleWhitelist( @@ -67,7 +68,9 @@ contract RuleEngineTest is Test, HelperContract { ruleWhitelistTab[1] = ruleWhitelist1; // Act - vm.expectRevert(RuleEngine_RulesManagementModule_RuleAlreadyExists.selector); + vm.expectRevert( + RuleEngine_RulesManagementModule_RuleAlreadyExists.selector + ); vm.prank(RULE_ENGINE_OPERATOR_ADDRESS); ruleEngineMock.setRules(ruleWhitelistTab); // Assert @@ -107,7 +110,11 @@ contract RuleEngineTest is Test, HelperContract { // Act vm.prank(RULE_ENGINE_OPERATOR_ADDRESS); - vm.expectRevert(RulesManagementModuleInvariantStorage.RuleEngine_RulesManagementModule_ArrayIsEmpty.selector); + vm.expectRevert( + RulesManagementModuleInvariantStorage + .RuleEngine_RulesManagementModule_ArrayIsEmpty + .selector + ); ruleEngineMock.setRules(ruleWhitelistTab); // Assert @@ -133,7 +140,11 @@ contract RuleEngineTest is Test, HelperContract { ruleWhitelistTab = new IRule[](0); // Act vm.prank(RULE_ENGINE_OPERATOR_ADDRESS); - vm.expectRevert(RulesManagementModuleInvariantStorage.RuleEngine_RulesManagementModule_ArrayIsEmpty.selector); + vm.expectRevert( + RulesManagementModuleInvariantStorage + .RuleEngine_RulesManagementModule_ArrayIsEmpty + .selector + ); ruleEngineMock.setRules(ruleWhitelistTab); @@ -260,7 +271,9 @@ contract RuleEngineTest is Test, HelperContract { function testCannotAddRuleZeroAddress() public { // Act - vm.expectRevert(RuleEngine_RulesManagementModule_RuleAddressZeroNotAllowed.selector); + vm.expectRevert( + RuleEngine_RulesManagementModule_RuleAddressZeroNotAllowed.selector + ); vm.prank(RULE_ENGINE_OPERATOR_ADDRESS); ruleEngineMock.addRule(IRule(address(0x0))); @@ -271,7 +284,9 @@ contract RuleEngineTest is Test, HelperContract { function testCannotAddARuleAlreadyPresent() public { // Act - vm.expectRevert(RuleEngine_RulesManagementModule_RuleAlreadyExists.selector); + vm.expectRevert( + RuleEngine_RulesManagementModule_RuleAlreadyExists.selector + ); vm.prank(RULE_ENGINE_OPERATOR_ADDRESS); ruleEngineMock.addRule(ruleWhitelist); @@ -310,7 +325,9 @@ contract RuleEngineTest is Test, HelperContract { ); // Act - vm.expectRevert(RuleEngine_RulesManagementModule_RuleDoNotMatch.selector); + vm.expectRevert( + RuleEngine_RulesManagementModule_RuleDoNotMatch.selector + ); vm.prank(RULE_ENGINE_OPERATOR_ADDRESS); ruleEngineMock.removeRule(ruleWhitelist1); @@ -439,7 +456,6 @@ contract RuleEngineTest is Test, HelperContract { vm.prank(RULE_ENGINE_OPERATOR_ADDRESS); ruleEngineMock.setRules(ruleWhitelistTab); - // Act address rule = ruleEngineMock.rule(0); @@ -462,7 +478,6 @@ contract RuleEngineTest is Test, HelperContract { vm.prank(RULE_ENGINE_OPERATOR_ADDRESS); ruleEngineMock.setRules(ruleWhitelistTab); - // Act address[] memory rules = ruleEngineMock.rules(); @@ -489,7 +504,7 @@ contract RuleEngineTest is Test, HelperContract { ruleEngineMock.setRules(ruleWhitelistTab); // Act - /* uint256 index1 = ruleEngineMock.getRuleIndex(ruleWhitelist1); + /* uint256 index1 = ruleEngineMock.getRuleIndex(ruleWhitelist1); uint256 index2 = ruleEngineMock.getRuleIndex(ruleWhitelist2); // Length of the list because ruleWhitelist is not in the list uint256 index3 = ruleEngineMock.getRuleIndex(ruleWhitelist); diff --git a/test/RuleWhitelist/CMTATIntegration.t.sol b/test/RuleWhitelist/CMTATIntegration.t.sol index d8ff8f4..40c2281 100644 --- a/test/RuleWhitelist/CMTATIntegration.t.sol +++ b/test/RuleWhitelist/CMTATIntegration.t.sol @@ -36,7 +36,6 @@ contract CMTATIntegration is Test, HelperContract { // Assert assertEq(ruleEngineMock.containsRule(ruleWhitelist), true); - // CMTAT vm.prank(DEFAULT_ADMIN_ADDRESS); CMTAT_CONTRACT.mint(ADDRESS1, ADDRESS1_BALANCE_INIT); @@ -44,7 +43,7 @@ contract CMTATIntegration is Test, HelperContract { CMTAT_CONTRACT.mint(ADDRESS2, ADDRESS2_BALANCE_INIT); vm.prank(DEFAULT_ADMIN_ADDRESS); CMTAT_CONTRACT.mint(ADDRESS3, ADDRESS3_BALANCE_INIT); - + // We set the Rule Engine vm.prank(DEFAULT_ADMIN_ADDRESS); CMTAT_CONTRACT.setRuleEngine(ruleEngineMock); @@ -225,17 +224,11 @@ contract CMTATIntegration is Test, HelperContract { assertEq(message1, TEXT_ADDRESS_TO_NOT_WHITELISTED); // res1 - res1 = ruleEngineMock.detectTransferRestriction( - ADDRESS1, - ADDRESS2, - 11 - ); + res1 = ruleEngineMock.detectTransferRestriction(ADDRESS1, ADDRESS2, 11); // Assert assertEq(res1, CODE_ADDRESS_TO_NOT_WHITELISTED); - message1 = ruleEngineMock.messageForTransferRestriction( - res1 - ); + message1 = ruleEngineMock.messageForTransferRestriction(res1); // Assert assertEq(message1, TEXT_ADDRESS_TO_NOT_WHITELISTED); @@ -259,19 +252,12 @@ contract CMTATIntegration is Test, HelperContract { // Assert assertEq(message1, TEXT_ADDRESS_FROM_NOT_WHITELISTED); - // RuleEngine - res1 = ruleEngineMock.detectTransferRestriction( - ADDRESS1, - ADDRESS2, - 11 - ); + res1 = ruleEngineMock.detectTransferRestriction(ADDRESS1, ADDRESS2, 11); // Assert assertEq(res1, CODE_ADDRESS_FROM_NOT_WHITELISTED); - message1 = ruleEngineMock.messageForTransferRestriction( - res1 - ); + message1 = ruleEngineMock.messageForTransferRestriction(res1); // Assert assertEq(message1, TEXT_ADDRESS_FROM_NOT_WHITELISTED); @@ -374,7 +360,6 @@ contract CMTATIntegration is Test, HelperContract { assertEq(message1, TEXT_ADDRESS_SPENDER_NOT_WHITELISTED); } - function testCanMint() public { // Arrange // Add address zero to the whitelist diff --git a/test/RuleWhitelist/RuleWhitelist.t.sol b/test/RuleWhitelist/RuleWhitelist.t.sol index 77e898b..df517a6 100644 --- a/test/RuleWhitelist/RuleWhitelist.t.sol +++ b/test/RuleWhitelist/RuleWhitelist.t.sol @@ -3,6 +3,7 @@ pragma solidity ^0.8.20; import "forge-std/Test.sol"; import "../HelperContract.sol"; + /** * @title General functions of the RuleWhitelist */ @@ -127,7 +128,6 @@ contract RuleWhitelistTest is Test, HelperContract { ); // Assert assertEq(resString, TEXT_CODE_NOT_FOUND); - } function testCanTransfer() public { @@ -142,14 +142,24 @@ contract RuleWhitelistTest is Test, HelperContract { assertEq(resBool, true); // Spender is not whitelisted - resBool = ruleWhitelist.canTransferFrom(ADDRESS3, ADDRESS2, ADDRESS1, 20); + resBool = ruleWhitelist.canTransferFrom( + ADDRESS3, + ADDRESS2, + ADDRESS1, + 20 + ); assertEq(resBool, false); vm.prank(WHITELIST_OPERATOR_ADDRESS); - ruleWhitelist.addAddressToTheList(ADDRESS3); + ruleWhitelist.addAddressToTheList(ADDRESS3); - resBool = ruleWhitelist.canTransferFrom(ADDRESS3, ADDRESS2, ADDRESS1, 20); - assertEq(resBool, true); + resBool = ruleWhitelist.canTransferFrom( + ADDRESS3, + ADDRESS2, + ADDRESS1, + 20 + ); + assertEq(resBool, true); } function testTransferDetectedAsInvalid() public { @@ -220,7 +230,6 @@ contract RuleWhitelistTest is Test, HelperContract { assertEq(resUint8, CODE_ADDRESS_SPENDER_NOT_WHITELISTED); } - function testDetectTransferRestrictionTo() public { // Arrange vm.prank(WHITELIST_OPERATOR_ADDRESS); diff --git a/test/utils/CMTATDeployment.sol b/test/utils/CMTATDeployment.sol index 1f7d310..6bf3762 100644 --- a/test/utils/CMTATDeployment.sol +++ b/test/utils/CMTATDeployment.sol @@ -8,6 +8,7 @@ import {IRuleEngine} from "CMTAT/interfaces/engine/IRuleEngine.sol"; import {ISnapshotEngine} from "CMTAT/interfaces/engine/ISnapshotEngine.sol"; import {IDocumentEngine} from "CMTAT/interfaces/engine/IDocumentEngine.sol"; import {IERC1643CMTAT} from "CMTAT/interfaces/tokenization/draft-IERC1643CMTAT.sol"; + contract CMTATDeployment { // Share with helper contract address constant ZERO_ADDRESS = address(0); From 401543f7df52bbff09e862eabeddb43d4cf8ae2a Mon Sep 17 00:00:00 2001 From: Ryan Sauge <71391932+rya-sge@users.noreply.github.com> Date: Fri, 15 Aug 2025 12:47:41 +0200 Subject: [PATCH 16/17] Update coverage, contract size and compilation files --- doc/compilation/contract-size.png | Bin 322434 -> 124006 bytes .../src/RuleEngine.sol/RuleEngine.dbg.json | 2 +- .../src/RuleEngine.sol/RuleEngine.json | 4 ++-- .../RuleEngineBase.dbg.json | 2 +- .../IERC3643Compliance.dbg.json | 2 +- .../src/interfaces/IRule.sol/IRule.dbg.json | 2 +- .../IRulesManagementModule.dbg.json | 2 +- .../RuleConditionalTransferLight.dbg.json | 2 +- .../RuleConditionalTransferLight.json | 4 ++-- .../RuleOperationRevert.dbg.json | 2 +- .../RuleOperationRevert.json | 4 ++-- ...onalTransferLightInvariantStorage.dbg.json | 2 +- .../RuleWhitelist.sol/RuleWhitelist.dbg.json | 2 +- .../RuleWhitelist.sol/RuleWhitelist.json | 4 ++-- .../RuleAddressList.dbg.json | 2 +- .../RuleAddressListInternal.dbg.json | 2 +- .../RuleAddressListInvariantStorage.dbg.json | 2 +- .../RuleBlacklistInvariantStorage.dbg.json | 2 +- .../RuleWhitelistInvariantStorage.dbg.json | 2 +- .../RuleCommonInvariantStorage.dbg.json | 2 +- .../RuleWhitelistCommon.dbg.json | 2 +- .../ERC2771ModuleStandalone.dbg.json | 2 +- .../ERC3643ComplianceModule.dbg.json | 2 +- .../RulesManagementModule.dbg.json | 2 +- .../VersionModule.sol/VersionModule.dbg.json | 2 +- .../RuleEngineInvariantStorage.dbg.json | 2 +- ...sManagementModuleInvariantStorage.dbg.json | 2 +- doc/coverage/code-coverage.png | Bin 145057 -> 136877 bytes 28 files changed, 30 insertions(+), 30 deletions(-) diff --git a/doc/compilation/contract-size.png b/doc/compilation/contract-size.png index e42a3717cfeb638e63ede7e5bb40bdd331cb3899..cd7e96379f5fc8c640f77dd54463225426fc08ae 100644 GIT binary patch literal 124006 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:IdqGMWHRsAv3rl_k?@% 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�dk+#YXx_-|>!ZyUKx`$an1*;4xA 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 z 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 z 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%0A$a)jpFA%CZL^KuBY`;M`&TfF7KMM6p4^Gaccy1J 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 z%0D`j#amKvid7d7FhAttAqLYmDYf;*^ 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%0AC{KbK>7TO#&pa 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 tdGGHZ{d4r6Zb3!v200dw&*3>809>QhAe4{{unb Date: Fri, 15 Aug 2025 12:50:46 +0200 Subject: [PATCH 17/17] Update readme --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 30dc759..9aac504 100644 --- a/README.md +++ b/README.md @@ -213,8 +213,8 @@ It is set in the constructor when the contract is deployed. | ----------------------- | -------------------------------- | ------------------------------------------------------------ | | DEFAULT_ADMIN_ROLE | OpenZeppelin
      AccessControl | 0x0000000000000000000000000000000000000000000000000000000000000000 | | **Modules** | | | -| COMPLIANCE_MANAGER_ROLE | ERC3643Compliance | e5c50d0927e06141e032cb9a67e1d7092dc85c0b0825191f7e1cede600028568 | -| RULES_MANAGEMENT_ROLE | RuleEngineInvariantStorageCommon | ea5f4eb72290e50c32abd6c23e45de3d8300b3286e1cbc2e293114b92e034e5e | +| COMPLIANCE_MANAGER_ROLE | ERC3643Compliance | 0xe5c50d0927e06141e032cb9a67e1d7092dc85c0b0825191f7e1cede600028568 | +| RULES_MANAGEMENT_ROLE | RuleEngineInvariantStorageCommon | 0xea5f4eb72290e50c32abd6c23e45de3d8300b3286e1cbc2e293114b92e034e5e |

      q!6a1JKhf`=L zK47PLd*%r^T0-l7Oge-x$j%(gA(D95ubNHQp(HYIj)NP= zf&a|8=aHW6DB*F%s$$Yd;TMyLe^cJ@I>R2V1wpcPLzc|%VW&CR+*X4 zW;GdvwrdSvfq_IM5PVuzHr44A79p^GvYRm_6qktbx|QycpvRt(R`#-xQMn(UgdNK* zb2Jo_#W^Zh&%ikaBDtL*@DalYdi&quE2-g{T*$H_5|8(Hc* zOLnfjQDuQ$whO`{3{$9x(jOxA&(+FN4w|avWKg6LLoi%A=1~-xB0XBOtd-GLa53Uw z$&Tjuuf9zF&Z{P9IAMCfANW?|$|kUlmqJeLI9`nqe;932qvGOAPTLKCDy?Z@D7#k? z5vERhi*!epm-SMg%)?K+j|NB{)mD`)DQ*p;)&J}-#yIOS-rg?{R@(q zC4iYHr~A2+1yaD^grg5evzmQHy|flpaV$J0f_rxU1=r^_$TP+6Wz!m5y;znyP&(CLE0zhW;w(pwR2KT@7>1lpjjlYYQ(pL6 z_ow~w%bt%h^_b<(WBt$!l zikef&Y-2Vlsw@~wMgipKC+wc$;W|QS@QQ?QKF+i5Z()&@1IRcAWiR1^2ii1l289SY z@^mBc{b39H6i2`|#vC`vpkybz8afjPNKJM$$*QNYl=!Rs2z$p__>=tgm2@N9qEEIO z9G5RwezBmrrOE$eFJtKX41%$N2={Y1nIf#-{(vhzL?E6}6EfiZ z_@~z{ceV}w9$`jHA;BK;9R{n!=nZ%bH6mA@=P_jd7bh&#T6rCgxw}MP;73x7{?HwZ z&9>T8mp$Y1$DeSEhYQ;ZEViute71fdLM`Hg$>wvn;7Wjm)Iy4P)tJZez;r}%fSlxf z9g=|~(rc6ow#!pmC|T;z8*!P+tyzT)f=V_O4a)@0z7q0HC)ldr)ELFHFhjClTvC#Y zk*{VACKh%7O~gU03MA+v++^SrJzm~C3yW;XppivJ5$@h~&h{>9i=`D|OP(1cdeSC? z(1#HaC-y@MUR9FO*yqm&GUZt(@4HyzK!wDR+OE!1|?D@BLr>X72T2EPZe5Wz1p6FYZi{q zGX`ZH%jw$2CEQl+2cS_0Dn?o%g#a>w2quyGo$$mV%#ZM{p$SHqW_SGwNPKXYCX>+v zjzBY_iQfp@HNu|^`7eCwh^>K>>bPK2p54Z)a`LZqaQH1Q=EqP<#bMg(k}3h^lON}b z+AKd?^KyA^x~sArzj1ku0dWY^JiM_6f~iflwYFpfT2V_%s^#Lu?4@7Wd8qu)!6+tv zp^T9&HK~(SXH5L_h`G^_b5(iw;^-Q;P0vf%U_jsTJV!DOam4_3X20L}mTmVmk{p4R>f_U7Cr$>zH%OBV4vsie=B@^W& z{+9yaHB`a#2g@f99Xoa%^*Y8kB;-3>#~w+zA9`y&q)~K4>lB|GpgGW)S@p~LZ`x-f zr5YFR-?aV>F@V65?cbICSSx)o0P5hm4-@ z#lbP4!U!l}xnt01VGfoTTnolT`5>LaAodTa)}FwJ06PQ+@k4kX1ev{Z@kQ5aJAYaF z6&NpH(8z|lbYkZ$Ts(+(8vr><>H14eSeShG zH9NDST&Us@n6{NPoF%6de)7%yox;EwEn+p)N;YyqG!43laBE{Vgl6(OHM5a2`O zh1)UA)s*Q`7?B^%5KGWG)70h`C^#x8{Cd?rnN89r;yW8x(Y{+I)JR}3fa2f8SXi_- zKAxI2HW9FqXF3Y0*=_^qsd1ZlkR#<+VWZ6q&jvfXr|3kZX&&aR@6|*48Z{R*4tb0sbBdBa4{fripV`0kk<{P^{8&$5o{ZsMxHPBiKY(9ON{77dvPKrS=gag&w`o2oH(hWb-G;H< zK?~KoF6}i9V;r#xk|+=?h|FN3)wVK6J%bpkgvkZ>U|{y&ol2K3#oxm27?L!$;2YR) zR-hd_OUr-v0c_@Fw2F{OT(FHo)|%dIm&X0a({@Bp>2-2yDghq>$y`IJzh77~9QsF? zD`0-`y%OXqFYKR3^TSo=;lEt-+(dg;Jw_jol*g-tuTd0|zi{~T!@6+C7(>nF7b_Jl z)x*uGIEnLPw%8LjhgON5Nu_BEW7eM*-TqBHeUkf=u^({Uq836R{|H&=OL(*Zm(OgW zGG5jxRxWd0vWzU<6=r-S^dnP#gWJi_oExSF+V9IW+q@X036LBE;&95AN7G1neOz{Fez0=L+PyEjJJNZ5(P8$pigC{Z9H z{}@GNTXSWI1}p>EqLz=W2|qwK2w#l*n`>skGKqc{9u9#$z_4uiX$G8FU;$IvNgT{T zC$+sU@nJ;sK&A`WAh(Ebc2L4NOjsJ}3Jxd-B+er6jUa6yv8!2kfhiXjdR~zF zO<RH!&xqYIFT5iu(n8GBMqfKtPb>qdP))TsE$unJvJ%(=8out#_U0?I0#LP>3c4LI>*eXUzX~fB z=H~oPoYh1W^Jm)$q~Upvt}`&AV%H@W&yBg+v-=67P0SB4LzHh^A?BuGZp9r7k72yy z5YZODM_ga1@Pu(bI-xZfzBXTRv(;sNbm2F8RSTcF?r%5~{)(tsm}SJXx}oU;W$ zLbCX$0@7t8C*3L%)rhaIk2dha~6|A5UG@Uh_~=Y@v*j#+lT z-H4@Dw@}_);@345*R?^ldY0To_*2rV^s3HZ+06v{y+y~Le*IA7)j#hsu=0-Y-PllP z&|IO5#=4!ovA{j6o`BTQ*Q4V}-VMqu*WjgOg6!Gdq#SUzMoEXO^<2fpxri%pj zgTcjNE0&1ZSb3QJ&XzBb!8)h@_P2dO^sNl=lrfSz5-){1kr29~b7hMyf>r<#;eh9U z?O=G9X{oC``a5FmrW|Rkuc(cIb&Dq54Hud)J+*mC64A78Q=MHu3m$QJSJBt9`4QcR z-!BHgWMuR3obtW@1u=8uezx^3ie47!kWRGNiBkYm9B`6j^qB&FMOY!C+&jEezJor3 z(0rmMwV_J|^EYk(-(0=y^0fMt#&@AsTaLhpyYJT;~11tQc)Iy86S@hhIH&4lx;vP+N62Pd4F=CaM@*B4H8*2oBUt;-CW9G>DdU zG5`y9KY8X@pc%j6-$+c#gPWoph9W94AJeUH4MVa)n9nF3WdRF+2XSxM>PRV{1K&_-{*L|#5of(={kl=(v84=ch8T#GmZbXdI^VY?mayEMCVlz z{od@bbh#1o*(FVHxp5lHJ!VBW5~LLOtY&<>87BWqp9)-hKTCzB~Eh~pj1yV z8-SQXLHXXC`{(Rz6Y3*bfH@XF-kry?+g^Uou1fCtcZm{hj6qbAI1T}3V+J{8lkkFE z^6d;<-f_XJQw@OEKjS6SKYs}X1XW7lF~qQ4I53;t+>2lj>MHR-fg2F8HDJB$)^_G1 zaplqH*-~Q~TQ{}F%R-!soTDP6zHwxo!hTm}Y>L|Jt$2x*lT=8=DX-e;;I~rq){v;n zCp@SkIYUZEOS8$yAC!pNYmF8?V>2s^dv`&0Q|x$Nmo-RaAvn;9nL?najZfX?5f&!8 zWn&pg>VV`I^BWNwiZpk0UQu9-xP7j!HiG^A{{3gbSVImdc*lHnIv_utq0gr) zrJkD8`B7Q=I=Qvh_Zp^Tnx4J7ck$kT^-MFzNW~m(1#9sS*glxn@9z3l5iIAzv|`dL zxwW{t*t~L;Q7y+z;%M&?mx1g(tIW%1*Nqp?uaUBcD$Jzu zf{kRC&A@NQ8|#VaQDJv*7YD)U$TrQ@Bo0Xo4;jWe7K8B#fcFF+tKzbWJhw3#UX{V@ zci8XiFqycR)aG~ota#*bd6GY_VLG8OIhQe(OXxde{!{ax%zN2iB+32cXsYTQDS28^ zT0u1;G1FKXjfMRc-4_uTL$C2zGtBtyGO$({49<59X@TgJQ7TB6e;*1DkI1LXt zQqr@yO4LUxRrfu{`uqA4M!X0)i7QqWdqNN>=R)m^1CS&KZB!!=UQ zg!Y#9PR;j-zcb^u@aO)(Hh8aY>iT46dyiGQ#=RVly3i2`Q}Ngrk&xw2Dt`ZT7^f&YcmN${q+$XLVLKDmX?xH z!MA2;1R=5=rJxvf_p?bN0g=cbHjUK?FND!OB&o>E*>6^U1xAl8y4~(*6mdU@*_ePZ zuu;ZTuwI-Pl2^_U`3b6gN7otSARF@3w$xzbBTHYGiaVS+vhuXQ{pgHRlpP@>yRf$? z|DL$uV-Yg@t8NcI(mfVPzWhkuG%+xlZ2CZnpJrL6V;W;Y#x=I0nv=o`diHvk1OB$Q z#jCPlJ`Za9N}*sJ0iaq1`uOZ(klt}MqYW;Jm||DVr9=>1xw&7wefw6(#sF?KyW*Wu zS|SlY?u@-__jla^RF`ef>qmC&*@L^40G1!a#*bY@kPiY*9T^Rjud^|Iev<#Et)E=5tnjoVh# zVfzVAYGb~*f?OWrmRT~6i?&bnvgWe3uVxPZeY>LNVZ-CV>Yz&-C<{v@7zmWy|0@XY z9m)Ro;bG&kcj(okWIqhfF6^C<Mu)dqm zriUK26G~-_<&6FQ=g%L?;>fYpGNd5D7fOD2sImvYIR2iM%U;aQd*_dxG#zy3B#vH7 znBQ{a$oDxKNh_UnK7=WS>3Y@#dLJRlLgDD|6W?Q+Uk$vQ;Kr@7r?DG^b~Sh1 zyKXAk(%Q<+w~wo^H0zGB6sKPe^<{~~DG7JSX)cY&Dr`Ulchp8DDpumc&|C$VYHSfe z4FDu}KW*@RDpzp$lO8B$CC7hSR6FKYTy15r}y^$d!mE zMMWir|9B0{W@VSKnc0L%)zw|iX|~sQc!lJyu|vE~e5!LU&*j^HJr8zw9W*zvxq8k1 z8r~Nl)hxQE|KkGae9)sUq<;}DZaSF$M~yw5!w!F+G@Vpe@#a9tA4Y~qpB*IH(cu); z6hM5=)KQ812<#AWYX3aXn{!((jmzsZB}G4PQ@9#Wh5ilHWw^VwO?eraGk81xM*ytV z8FqGYIgEkA5fKp!cWSmkN5Smw|1gMUV88(7hTiHVIC|+%W@OYu6oj9Uk2~5k09Ql*(JcRHB%NN^2+UZ z{`#EMkF&zz%bm1c&+Zt1l6v9Dctv;peOr7_A(5|}PNQFiqb~&5JJ1{?LBzj+;bmu+ zm#=bUPnP;q$mLP}q17O`wLCZX9xapRh+=2FpeZ2?wUGuGi~0Q3D+LJ&Uo4yp7e;!! z^nu*GHX8rUJZ4M=&@W1peFqMF>gb@v)L8F_524ARXJFVBmhO5`N9CwrQf3GP%h8gg z$`?BMzqcrhBUB@#)HnZFi^uUaYekPrwbJBlv)aaKxxDkK*ivx(7y3q#K+P3Rvw4Sx zY3kgW+)rhn&(_)rS^Um(QL0gXynD3g(}goa-n&P4`;7RUE~51Cib|6+j-3^}zw|e3 za;C$NTbz^s_Qk(&Iw+g_%u;_k=$f$F*7;GrSCV_K?a_E_U&9sMK+GpY1jG0;a8u9z$E+fDWx31X=#0e3*M&UQzK>ei(ZMDG&SVXK(tRKnR178#LOh8A`V| zY~Q8zaBq>%(U7CwE&2{;14!FK_2bVeMM~xA zaAGyEl+wyf!NcL#Lpc31W;8A_Z{GesZL(13v@_08Ve{mUBC!zZsg`M@EH29$hy%6U6KK!pmZ3l{0F7HQR!m^;g3i#KBxnTUvN_cg@pnWg)TM~eqm89 zLO+ZPY#sQ;c+N>5L2vBq*RNus0uT(L9mN#7FSK^J{LsCP+fa){H&7kejZ^^elQ_F9 zQ>egE0gTRrKF+R$1~anYF$*#kNI&?AO!5&NUznV|a5F$+D04(5qYWS(6m&`~VZ;+s zWR6+5=j22w|Jp|y2kjXS&F)xfdfA%NUD~t zyX}}*V4;-osbR)fqK?+-%lA>g11Dxege=RbPjCv~UUL&)c)6LTd&W~m z{%E4#;JK~WFl~QDZ*}Nws3Z>7-?vwKx_ktWLQvJ{zi{Ex-4kMAb#B2HoRMD|8y%VM zV1GCM5QuK@)z5*UcVfq6Y;F9|hmK39B#&l9bGX-k2rk~vgOD?v!WX?ZM6~IKFXk6WalAp*eS> zalH~(>kDkP3rsKxyvUGvuXapb(*7|{){ z|N3%-OaD0B-@EEXl)E((AAb#hJ0NrNUbpb$u=prxb1cQ6l_j zf0@w{XAnAR>=4>xJc4hC(OeV>$W|<$|dD40gVTi7x13SY1 zuuERBaA6uh;hRF172a^Me&XFa_YDc*+JV;haxyQ6C+_YV3=HFYvvYq|!1*`fZ-hHo z_&S)w#9ge+{3q#|?t}~tNcqxSPdK|b`)mkoHgwt5BI`apc(gIK!gZPVl)jX^mt@N+ zQNx@ry{9=Vpl}xS8`*6b`z9Z-ci>0)h_qCtDC)&|@Lf2Q%Wtw(t^)-;r^?H9527_&T-Nmlmj+SV|3p|zF0MjoIb%R zNG)g-9=%rHKISY%$IZv<S#r8t_fmO#I^E$YCDfUf~mF}zg!`~W0$%@o8+sW6DP zqX5=mn$G``81~McZe9S<51-VYHvG?v!l&+Z6vuvV#j|OQJRD4wU+#?E|JXgz@O$^i zNNU0356h<>W|p?7)ZVx>Ild(L7-g3j-VrG7u+YPM)P zvKH1_*g87Ceq-U<0D0&6mA?rrd}w}UH0FHhpJ;mW* zQ$t*O$&L&kN!~99@AKQRku{bYK5s4)_ut)e0u!A5ce|4cQ;+&$t+(8>owME@~FOX@B$o{$8pF0{}hN>{h&}(mOj_0|in?!~;3(!XPI{38Q7B zqvgWW>emjo58?u)Kd}|VT5eY4wZO`I&=Cp2#*u&ez=|z)fGr!tLJ-Rw z7xhlvPCXdr#3@+Z;!X%z&ss0S%$GLo_GcDlqP4;js|_pu*lgVR=UuB^YmPcu1{Vn=gzh8P*!_E8Ohw5E|_tXfrlN?rI?x#%5Hh7cG3gwW#l%ugY zUzolcpqbO-*5aSP=XzpVbPpxc#Wy2H{9>?m$@{U_|L?;HrM&{f8uP@s78Z4!5`X08 z0_0PKxe+bN98k$`amKxG0ejHnMDEy;o^g%aGs zh#NofE}U-gUuGQq*M_)I9(-{dF$+()_O`k{J$me=^?gTrN#E?%fS7R%n*@#pb{luA zCX`hatoVmeO4C-_nWvU-X`LkaZj-?e6ufu);AQ8{2Db}s02!7Fn4fyNT(tnMZ#Qs3 zz{lctsC=lz%EE3BcjE1=1f(tlI0U2&d%$~OatZW&#HBJUOb`e!xIw5NTduwDctgg+ zL)hJjX7B8L`&(PvO)v_nuIAw9=XY^)TiM-}fqYD$93r{i048Z}qrJrP*?vW7BoxKe zeJ@chWuxJocSCuj=4;b8)N$1CsGdPH*6>fmiSq6R{DVHd2a1yPtWNi?N!4Q)W}tq1 z#$ph?ak9K6F~PhRSKE`w%#r#^DI;t%TB448zV;bVmyVwwn?=t1`~O6PML9xS|KR$> zdwQ*>-uYI?Grbm$ItJ_Gae$M)b>xhK&dc&-rr-NLYT{U81^|{&F^y_35_8$9`O%=U z2?4Z_Etj$mM&=0i3Dj;oU;|2L%@O*5C;-e5pm$CRh@z++HDxuetTl=Tn1w*bTHP2* ztDc_gz!ZD~|JU99mfC)6YYU(z7{T~cu3-|ubYD_j9WDYuz{7UEBX$sO%$ywu2-jHYt->&;wtH%g<^hXmC}c^`PheW@wbLdpJ2? z^zawSkYn`@f<$D|R0wm#n`N9u<%-4XrM8xktbynxFg$*No z01Y6BgaP>lnB_|s7fx`ogW2Yf^>tOcQo!O6_ea1wVdVh#i}PXI*w|cIK8z-S_U8>y z+6Y9UZ%;h>*oPq`LmtkY+GeT2lK+w$e%?0fZ>y#2 z@eo6kgtWnkFWGmZ6|ipE3UqJ?4{`eB1i<)LVPijY!e)6-cu&qbwue6A-)H9XEX!}p z#Rj&K`f9U38^6WdwqQ@Q3m4vFTk`$~MVK;JTI4h|eu(k_=6uMk4d#8&BeGh}L?V}& zCW;ZyZUxf1V{;jhBelY?jni%w4bim1m=+p8hzHvo&BOqaL@F@G293jE$CM+dduS~g z&m26UlQ8|G@dFs%b$=O|n@Ys|ggIwZlR`Z$BR}=12(x?+sIlck22bkwoXZyt1gL8R zK26_qmA@jrpCurn9aQtswH}!O{ApcW$;J>E>37)RwKtM~JOy}v%0I8=v~BX|!OvaE z*U;Z>x{Ylbs9{M7hf^Z+Nf;O+-uVF5&N)tMBdTgdAphu*idm&@REK$`9dPSG{l^HC zH~g3uCo+#=loD z3;x>7VzL633&3;vfIT66RYaOJ*(i?W;_oJ8Gz7h?njh`l4IZb?u_wY=yb-z#m)>)p zCfXGe5ZJi9@&5!&} zHBNPlov52y!9#%iOeSL-xzjiw^olm49nzcu;G%;otwx(a1OuJfKaSOd2@@ zI%XuC2{kW{FeFE*S2*($mFT7`3`Ki{qbx; zFh(6I(&hm;R2-OdTEwdVtz6(RwZZ&w3kG@!VcOPUWLX$1FCJQ^8{m!Ee0tFe^}w>h zk-qfk<69Z`uPv;fSpjxx0LB-9HTHgPO3ew$q1*)H)>j0f#iGvB50Zf)h8W=4_E z)SoIBET%Wh!zhigVZ^f;vEY|{o}6||I|sKw^(mrzfry|q;12NuujcpOJQS2F7BI#{ zm{mkvc0Ndw1I+ulx|E<(ID{wLy#f2wFTbWCwm%l1WeED9l}t1KiEH_Lq5I1G;yxie zHI?-8(r-U);&Aypu*7~_jm6MSX72+;jNGSiLu`2S%3)c|HdaMY4J|{T@q6q~hF{Zd z$APq4GCA+yRak*Awl%m*pPvXM!^0(y=z)6`tXDk?^cgD94t|3OIEWDZ0$W-w_cOs7 z3V64#*(EGI2LK4F(24=`KChxHKX?j7m^)Q^@{do+Pcfp;pJ#e$cwIicdNLM1Gp>(L zbt-r2<*(3Ha`;b5%}{cF$ z(S+jS$wleKY%naKd-(zCYOI|kN*uHqSi{Ye1=PP=6tCTFOE<^TK2uU6mg3*-X*3(F z?Zz+Yq2?LUUQ8;A(>9A37h}bEL?1bBZUi*^e?T}vo*nWl&FLrZ^sZCW-#s2krg)0b zwxNfB|qe%f+^X2EHhZZ!gX-+##qTD4>!;%E`8$hfmyv z)(A)S(46Cbz0vr|3irlfx)cV8fiSzB-mZ-5%j*M_6q+nCabfWpqsn@#E_R%}PXopV zqZyLmQ+os~_)*YWsrfl*!fby%m}B89jAVgXC`@VWEiWme=yV$@9Hy$v*H8c=$ee<` zk|#lsid3jDm` zYwn97Ilwt@YtmT`xFhH&PgS)hYstPtA?$Ye@@2?p9C znp-c63_%8h1aTs!;-J}X15~)xN}STjIp^xrWz0B#zPg=lfT_?1IrKgzJDBM@(S#}5 zu7pwJ{;gT!`U5Y`UbQ`^d63CAeO5dgf5Qp=nq+F*GD-4Z#c?vt@oVLE*Ns(B!nGXq zwZgJ|WXQyb+lui#9UW<_8{q-}9NE<`wr2El`xmTW4HeX0fv82&IKh*I8ZxrgKzOJ~ z&IIrzH%hxm02^`k0WJbF(5sPvNf4iHAxKOWd3YI*Jj|yVCp^No)Uv;8>e{YUY1P{K z!aVf=iRy(+78q2}TP{QaZx=ML)S&8;1TxKI4r{F_hAS9Sv=QDl5jjNbq{3~sjGGTk zSmWN~vaQj4W6RRDY#ktKR2xYDmz=pC^^3mk{k8(@msMFz)H0ORGD>!H?NbVCl~9Ka zO?X9*Z>T=h4}k*N`K}~2QgeCKdHg({>bo9#^R;<#GBjh#^MZx(RX(gQt z3-h4)>LL_WUNNj5xi&>ZM*%}eM#C|8r3obp6VvK#s`?^dD?66t+~NOABiuURe$VlQ zOL;vgr+jE7swv=GyG;v&zRJ15C~HTCRp3ZEm6(-1Wo;F+*Nj!Vj4GkGoj2460eIND z|J{sQZCRM_0$d|U!zTk!JH-qI(FDnQ$;pd^Ms|bfgoDbn(bg$%T=nPB_zEg1DJeTe z<+tI{PlGJlXWFs|cVP1pav;kfa}X$@)@JeX%ShHNoVtjh4kQ56uxP#auS8_j@0HJ( zuqm}>?fwpCG$y;bp zbUe?DK;5Ug?s@_thads3%XnYf{fu{X^8xHX22yj8cao~-j9(fA3L0<+bUNG#KH%Jo ze*KfSdxD*+Fa41^$)7jBO?_pSR6xm|<4RNU+ytt5Lj z*?E>c8vnV|<%ZRSzQZRE6iUWcYd=dFgS&MnhOP_Z(M9*1MDDv_-p>?h2dY+kj)7_T zd^kg#8}oPvX2GZzbIPk?KL=8#yHem5Q`olI`c2Aq6D{jG54n{ zhv=>FVR+I_%&`u{Z9O24f?RLG^RLyr-<#K8f_@w5;J|vi1arEP8e0S8PvTj78mAgT zFoj5EK~!M`(&aG_Q2>B}t9dk$qd)=9K;T6QK6}m0%}3?X^X!9w1$@0Ed3kveg&-7D zjHS>2f!Z92x~zdt51Kk8hX#T&cU09BQUQ!x|E`fzrdgd}O|j%!@qb)^xOsXbd`wlN zYjHZ-J-@em@4eLT`_{J4ksMclAbIuiTgHg&DzS2Vs&hBa#P+Fmt`;?Bm z<-@SG6b2PAefrKrQEgVGV7*$l&Ag$q0f$rv-2k2HX(4p{=@n1m9oUf`gJBgcue9hf zhKqYbJ&1T1w!i(uyu_J{@Lt;YNJI(5P1|pe(QQu_%K`7}PJecd8PSj)kecG*miq!} z$riFfAo1uGL@kxB$=Mniy7mqoLKB2YZyKVnQm?3_ww(+_W6q;Ht}6zdJlDh z%TtO*w?D=}r9+Sm=mnQex41z{3llRnr2`dP7u8CEet9ji%3x8k{fq zW(a1mcS!mWTur%MslsM7`7-#NC3O(R`1X)-@DPElsjS`?LahrWA6`Ud2iwK!xE1pP(BTE+~dnhO$FZ7AmP}7UHl8?{8DI|)}SUoOtJv`1xBMUb(Zg<1PEFoJqsE{O7W3jh@ zwUSjyseCltAWmF!u3TCHMfAkVSTEM&?4m_K#ODtEi?4rn>ek=5ME^Z|F>ODzQOj}d z6DDyl1X+Vk2tV*)jiFvS?mc$l?N8!~K}6e49s?N!NMyahzx|s?&KzXyn2!$Ssq&cc z1U~8*P&}C~$&V<_kDv=`z>DjWe!F%bC4t$$&kfz>K~NE6*6;&m{98*=TD%YG=k%IB z$h8VA8V7Aj zJK}tUct;2r_COp45EH5;IL-7y9TCirWSS!%4+3vTzzTq&{wFj11BS&AShHVoJOocu zPE$Nt=3*M>je!AEoHSVWDCY%bGk|ru6s3`sL~TRjTW6QH+w31AY=#MB2I|zosr5aG zzHhL}VFP__5GnwhNU6-L2H;yFsqDbydJG;Ou%i{Ld4dHb_zC>3ZUSOy05Cte3k?w& z6R5`is0CIcrUZ~_KMj}(T|^l$vJt-?Ff7~I?d$F3&L3K`6sb+;%;TQ1TuZ?S?SIeo zTlI5lHTjXou$py?-g(IB9KMT@M*k=M*jDS7yxj+z@(J4DsYpH__HTCICR_@Ncd{_@ z%=B~$Vq)T*-KSwOUkV4Q<>JJn>4Vbq(k(F;q;nf^a_}D#tOb%U;LA0zB%`Q#UwQaE z^`>=J#<*g$>RSzoP&kjg%YNTjew?(ZM9a3*w(>t$VeJi_#j!zUaU)}6@F!C*_5{V) zakEW7(|a%P&+uZNSFcl?Qu*Wh~dh;u0T)X3N|0e84XlieUKm_L4B78=JHDT?tm5{;#Np@ zj|NwP2{-cB^77Z-&s!Il^U>4asnn1$GuxtDfz)*luKxc?z=gdWxWrLRc`qk?WdZIj$&-&>vKFxm;H%4>F84wDLydHJ48*T8%hwure zm4xAcX>$r9>f4LAq5YZ8vkZ9}s`T|4sa#l>!m&ctEt^bboxsre+hW|IA)IPNrGu}R zwGZ044Fc>$A8dvEZdP6hs*Vy|kI;{fQzxv89@o!Ta2wZBb0q%w^!E4SyeEPSbt~%N zMW~pI6O?(jUB)u50JHILaWuQ8{Y=-eB`=PT36!o9b3-hpFQ%3A^33bXgDQJbQXR1* z)d{h81G7YQyw#RPw=w$P0+CV*5OPrEBi*?ueN-73dT@7vuh9WS&6PkUk3{xD&?Ip2 z&;T2D42h7+M2-wtv`5e?AB`!=Azhf)+CyUP?}a&4-n?;I3^e@wmyt{psxKgW*s9Tj zJ)2zgL2lL9r~8(ubBAwx$w%peB*YE=Mtli$6v6d+seIrTDQ? zrm@kKR7h?}QkjZqjf+p6@Ye30%&+Z*;}b3_**lS_t4|Lv&^14ly#^U>q%Z8VxXVh9 zO_XRE7^rD!(IBaO)d<7;?Fq6>DQ6=Nq#FLEo_*Y#*c-6BS3P@g>~~MG%HM@uCqU&% zz-Q;IOW@MBm&W;jB1n%waPSuFw^*R|q?V5ThRCC5Ecg$*DOT6l%RnrN9IjAFhbq$} zo?5^dN5a8CS~YBL(K-4E4-YH^9f;wL3nH| zzsI|W?uuS#^_iHMx%Zh`S<`y@tgYDxsHT<~Qfuawh3K0o8{E0{AL;6iXbZZYqU3oO z-|X>aq8WZPu76VTR$rtS8K;oHsHH15m%G}#VS%X6FFpyE~AK( z4Ux6HvoQ8dQr*ZX^D1B&HlWA+?wmTslg(BjozSxDp}K}t>JGmak`SB}YNp?xMhuLQta1ojM)cRIek99f zeGEvJI~+Voh@cU~u$TcNt#G2$uE$&a`;PHzs`O?~?q@4@LW1B=NUW=RxiORTo)*-9 z81JR24IuDU=CbzsKk+|Lek$@zs_85~TdPJXR(>Vg&Ph+cCt`9IHGHU2A;AAAyY69T z*h412kZ+TnG?r248FzE?wpwY!nU}PBJnYi66hvwV=lEux9w;(A?V{w+5085R3=~6Z z>BFl=j=ljLdW@Z)#a52okCMdwI@KaFws^U{8wBAM8RKV@D#pfV_U2{lNf^u*-i}E7 zO*eANdO1ZH|4eF2CG8})RO0z@xYRW~21{nm0k?pi&ql8M-@M$;h!vhJ`JbaTjq_t( z+J0FrF&quvl9_q;7#|-!u_+`kC+9~9&z>F>rie-vDOjEAFXjoerQ=#b06@rV{O|PO zvc0ULVoboOQ7Y5CaRO=^Y(@Y!?4Iy$D$xy`)9e(ee zwy+db!Z`KTI< zKLAmRJ!JMCO&Nrif=LV#HQMCP1=BR1y_%0O$9`co!wTiWw$@R+MbQ#KCbwaVhB(&9 zCURaMyPJFom^4h(^q>`9U0ub3pn3lX6d*Fb4HPn{-U|m`SAa!|S4S-f0g?Dj2-1VI z4N`WGBP~W)ef_xkeUz3B^<|GJJwBwBnLJQAB)fG~%^68d7o6P`b8;8oMQ=s_NI)Jdc zJy^vY^{bSs@BJs3xi|gVml*3)Me^A3mE6X&Ezu)L4?|X9gtVGvHvSo*# ziBQ}8_WZbX;g>QX{+$*iLwr`mY;Y5ps z$X$bfu7UM5v)yVpcjF6LwJWHcAPd~SmwR-}A=zm$x3f4Ybf(T8P9aLFfPhexR61Zb zhDQu}Y(m31^Ekb~dw;M^l2L9WHGDmRUd^;Y_oJtg-LfG+_sIh_jd+?Z4Av+LzwYJx zFJjq$C{xR0AH7)rLU!$w#O8}Fv#?H9S0;ik_Y`W&(HoAEYVcna)#*2;y5FOy9@ z>__{KX3er7X5wa&?0zT-CNAwzWPRyjD6n-ZOd8rSfYKL4DEk1&-bSDxy+j+u38yE{ zx*0-zsdKtc0znkG_Cl`Y!%JGfi4yW|&COhSp=_zB`L(S!rxE8b zcIKfX{1ocp)C#ohyqm7*#defN_pH@lB$e%@wUvr1a39?uo>8xzc3=@#5$DR`f4nJ= zk}AVfOV~K4#v;u(h~Kp+b=kQtoS+_C{)KFv?9!tWM4aEiO(7QiAYh(#7p=oWq4+Y)FNC?{NPgJtY; zA~=&dQ|3Z!(kq@&tnC+y;9WeyE~XexWs`#Pl$(=#U!_~^1Ewg}OvOwzbEaI6%zDD> z@J1h-`(Aw+qmm+Z6hkh1$PCLUM!WN&9Pfu|OY4BQjOLIp4=pqZ#rokCAlZD2B6y0y zlvQwV7QZ6GkB3+KD(|u(?vHUJO_V&$xJc1c&=X$)>;JQ4Z zS{pLp+a46-oW4jkbWHZ-XNX{a4M9COYJDAxlZ**3v+!5pyN_%0Bd5G4(b#P|ak#x( zr?NGVHx$xn^-VWY8{+@aw++Y$+)N}z3yw%hK_t3hac^|_?+oN6sN5MCfsivECQg!? zljDyxIWU8H2{1VxB}~kIPX62|#SDG$6Ww?)fGcB4=?3vAY7Z?7Gll1^=55cl`8K7; zj*v)y@q*y5zM(b6H3rdsNl6X7pW8Tz+am5-yyZdo(u8Je`?n-kSG)M+RQ8WQU~W}p zRi=nFk*7QoS3`l7T9X6$dQ1>>tOcf+>jNvJuNdz+NZ|PZh{^;zvOE71kQ;xH=tfD! zhmq7Z^W<}ZxP3~mysOpRwCu-9Ot&Nn6N?%uXC731Y=)c{Iz?!cvl0q5lP>Jk(9Qoo z7^{*VJ88?=^;6)o`*J#WN-1R-uWUK9_quYv#LVr7awqC0qZvMPb%2v^IU19vjO!_9 z;G68Fh%wz?w8JN+f8NSvyS;XDz@N90X(p|QyJ*6mfS3az?#6(OvV!TE+2L_512y8w z3#e2kAo>5mB$twvm35d5y%iO~WKzVJm#)$-LpvS>K?vF45$aHoYWa~eS+Sl|zhx8V zSv+(KE?ieecau9Edm>J?a(;?iXnZg5`dYasZZ#ybY`+riH!e9^5dZ3+*J0q_WJQCX z{ViKp#viI85wn*moMVMHRmD6Jdl?_oZ`!Ok;=>!el(upF&UGWn8R>sK&VMh#z=0BI zEyMbibVx*bB3A@b$^8E900S-h3GatKxTHX5NEY4}?*E+7ld>&PTfQty9V1IUM@+I= zGK1qc*0PbBQch}qU86YK1S7>rZ|&O=gW9(J*Q(2ai4&gq?F&<@zY3ffg5({k+de9@ z_wuV~#syd5vA245GF%ZDST(&1D zhOxCt&vVQ@FGFQc-IgYzm-@jr?mXULJDqJAwR)qn)Y|5&t zc7Sd&yB-=w_D)P1X<;!K!gUXJQ`sIEZN@a<9g{?rNqvg-`=S#qo5#mCoLWh5bjUp6 zSF}-HGDI5_V;^*YOTyq<)8gn9|FL~T$l!ul`&icd8PACFFX3%_SjYM!x*tUs@4tdL zFe59QtO30v<7GMCAeGsV4~f@*gl*j<#=ZvGKSwTqyUu=ZX1}qFBduVD$p~~zBm@3 z=?YfSC$L%&7|?gVD6#t?$`jlKE8b*&sNkM<9|V61@sfRJ4>7hpdksDC2h1V4W&5OrntuVeJiV`Bm_uUB5mIx1gMM!B+XrVEZ=Sf{-{uH(uSdI9X z$>nbmxNzI4(GiF6eHx7ux9)OPzO7BN`DN;1g`XStucZrvU-rRk@qlTewVJ_E07Xw5 zDBC%0mr($TKrF@PTvmbsa!9^yE|UwG28`Pd0Ye4*S3%&HAlcQh=LiSn^-gsH6APjfWcaKUOSx}v(Tbn9m7bg;f}6RwFl-P&E<_?mLYbSf^j zmPyGK{`d_^E82JeD!$r}LqQW&DSAhLP}Dp_M{S9!c@yc|uJwN+Q{E|R_hTJaNDd#f zptx)=-^{NHo7KluIlugX89*~5&_Z@hHepyOxT}KHL0AO)0PUA~Uc3VvjQ1dS06E`I zQGE#V3wRpjQB{L~bqx%Sj7lAMR1uUIXiEWN>H6Slhfp~nEM4 w}PkXCOpSD^N2U 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 diff --git a/doc/surya/surya_inheritance/surya_inheritance_IRuleEngineOperation.sol.png b/doc/surya/surya_inheritance/surya_inheritance_IRuleEngineOperation.sol.png deleted file mode 100644 index db1c0cb075730a43f6a4c9db8e5932d57c2d6a6b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6484 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 diff --git a/doc/surya/surya_inheritance/surya_inheritance_IRuleEngineValidation.sol.png b/doc/surya/surya_inheritance/surya_inheritance_IRuleEngineValidation.sol.png deleted file mode 100644 index d7954ab3c8aac9e7eff1ca9bc8d69fe27815cd68..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 10994 zcmYLP2RPMn_rEd|vbW46WQXic*%A_&*?W_fy+;zV2^AS3d#_}LkWF^>-u%yf-}ia` zPxrZg-Szv9^F8M?PPm$iJT5jRHUfdbeXJm(fk50ahHGIg40!&du)G6*FpL%DWf0fM ze_0I$2?zuo;<1dRrbpUlx~Gojal`d2Y9KprFHRsTFC7crxBD!g6oM#o1(-N0)t_!Y ztQ6>ZI9SlF99=f(QPQBgKgFk55?y6Us66x{p)fi++BN!xezOb_0owCtakgg3Mk$H5 z?+3PT`>nitWAxNeqN!x%(QWffU-1>Ll}jJLB&d*U1^$iX5@d^lpq@*OmzqwfgD|n-z-H_|7%Z9(r zt_l@VVlut*rtz?d&DPe|!rp${U7VAXQz382_jvt_J9XM9ioX(bpak72_kiKlgQ5d! zIo%g827mt!T3$Bed-$-$l&8hGtQj5_e62S8`#sDFH|25(NF&j;3Q5e$Dbmx^OLf0G z2&HpTMrVkn``*OD@-Hdj?2M+uj8{N2Ffa(~FjmOZP+%g23wWSmU`Vkh?)4a#k;8!F z6qvB^@H$U+7ciNUaWEEU=onySl9iarME~}_Z87wpwhQexm6DgoL=I|VA|fUR58f4| z#;d5P*vbEF-4Qp5SN);noaD16HcTtYGg~bT)?j8Tyu@Pbe_ij8>pzc90yjfe#gCQa+1oahPtJt z#qK&JB!q#FkN8O*A!{NwJw3fr7Wr*r8RUK-Cw#UL7qKBfu zoLaxKcwNNY`252P>#*L8K5lW_y#JuZ;={zrg4aEU?y!$t+GdZOM=Jw*o;lqmyt(M~ zC?Ft!E~!U@V78bkLhsZe_V((=yX zp{#-eR%a}2?CwI>K1Md@e)EVgxu~V3<(okZ8E0o+dz-os6I*_jy0)=)w}PeK#Kqx% z(qx@U3l0rsWMH@vA0MAA=*S=?EiLL2f+M&6XVY!fMQHWV%Yu&*p5ZZL==$*ag9i^R ztgQatIxofwmin>e1k+8Ddc?(5Dla+hnl8gIpCrpL=#PVM;=xTBUGK?D8SVY*J@4Rj zwA-;OM0HhgC+9|${j8j; zYh{ln%o}#a*Puo(rnHm`hRl-qBnWnoogD}E4eQn|X$uP$P1eMoWRwtd3v25@x!gDK zP$^jG;~g{pJYtotRhT_ubxK*BnMup6{2}Pa4~3aDq*w_~8Ea0dR5D^7_{K$0WPC!Ew{rPDDPeSM1+Qx>Ai3#I% z>R(^Qso9@DpFrGHM@8=K?@Ozx;TsIDTfh9Qc_b9&-$H(KVsg^cx%2Y->(sIJLs8## zz43|4w58>mrYPa4M~ur3f)4AW5A^EXaD#(`Sy)-6)YS>T6c)}q2-4wW;S&(N`SVAo zy|dH!=ezqCe2#x*Mg{s;Q3xczYArxqS353Xu(Gl`EOg?&OG?UxsX{J8Y`OTTqzjP@ z=POG)Iq_&{XvDpH*ZyH+TUtn17~*_EBW2;r>46@#n3$N_XU(v%FbNM2!PeGRxLZpV zo>DRw%9Fgem4sYdFCbyhvcU$!w@{;KIOMFY*@C3#jZIAA)6$|A7fokuIyyVQ1;lfk zLKf82)@9ZJb1SN-bZ(57kLy%$`;Xhmd3rvA zDSIVN7TyN8rFZ>9d;JB z)q6WpDtpza-`LnVE-ubt_E05?l`&td&~f*#?Ben=11INg?P5Ji$kwJj6mQ?Yg{2E> zZ%gb3rC?0s;aK{lV!vO>&&ho#FBEaF|IFJ=2uS{<88___NQN z5#0&*7=?r=!^6Yt1;S!uX%lXzc=U#iZ@PJ3UmgoOFXK2lJ3F54y@En>a(ap!+1lEg zf~u;#oE!!NBcmt*Lm;l7*G(|+1d5?Q@KqrG@d?{f2Md`N?F$5 zuX1s@?br1N71Lqk5BH}LD=7EKp>g{EU04WZdyQeDnKQP&d)#zQQ=ppJnZj$X_UsvY zyh70F{>no5y^Q8>uX^yQsW;ZR(vB&_&|w3o-od$DTC2~ zenT#QVUr<975c0;OG`@*g4A){rV7f+9aA;V@hK_cQBgRtqI6t~azzadH1||9+L5DL z{Y6h6E!Ug&h^XiNgEr*GS&tTRkB9ac;*eF@O}D~`91d31(?mQ8;r_S9FSxXdbl%*{ z@c8?N>SPu`$9Cg69;_=2t3zPc8#S^cU~bN^H(i*_dAWC9SzAFNtf1``7r6;m;YdVl zs}yp1k>|k9j>B%I{w5%jwc!FrUS6W-&!7M3?WN}Sq2OUW+N_%W+jd*LUE9D19li%6 zFVZQy(UZj4)gDe1%5V!~p%D<=!k;n|Z#JjbuZ4Yg0%_+At`7~$j5{LEzn_0AEyb6Q zp>7$>mEXNQo^3NLr|02$OV(ag#LmRb{H=h90;e-BchKS_!T{DXA|e862tFBEs64F? zv0@TON4@8Mh_c^yci3}w(v9glGFtB)6l`qlxDOv9%riVOU?8DS@+f}_Qbb|KeE-hx zeR()`arA$s6_q?<)e%D@ywfkdEx|-+1VzK+Y^`9t*%-qlsC07k zWODW@ghtqH?r%rrkN*D77xoRo@7@ushK{n0l^Aqk(t7)gU!M*D!uME=moN1`bz*=1 z4Gj`l23{=i0*t5*F+~XGE{e%!a<(PKwZ|WCB=Mhm&$S=69J?AnmAVKjuW| zI9ux)`Q2{%32S1+moHzoghB>=qcM7*60?YkrUP@ZygWNJOc~BOPJjwLCdUQD~eo1r_?M6g+cs9&FZp4a4Q|MAx z0BT$ptsgaPRM(ehg~-BeGx;5tA%2ykez9SH!n#C~4!>F{;ht*e&qTJ@MP%5)aXm}O zRC;~2eT^qn5{P;GFIm$GI;7{*0gi(%=K;|%Mm+Zfxm*etkxNM#X`y7#f4@JA{uT4s z$?6fK^}8tRITD!hXtUMz(eJtX>$}@Qw!2lgjd%9p^6I#0#bEi-uli2HTVx#VRkOa4 zs^XW#ewXV8@o(P-q@_`-h6X<^P@xwUr4hfFzdgUb9b3|LMG4vN40w?+>yMJXhd)|dSC@s=zAjv3FDbfccsK>;XmI^|}#Dj6c- zLqi%OS0@X9zS~kkvD}$?z1?C~j?13isHbaWL@z5N^J}p?VQnZ+(S4pQ6thxSd3Sdg z&ELt%>BqbSK7qQjGA`^lHZJa6h8#G1LVi~wcbS;*5nc9a~I%X z4c5fP_4V~{GxH8=uC5PXnVPD}%64R#P*@5H34N-sPkWn?@R)^oD3MM3#JbO@eB5HT z(Wk<&zT3~LATab^SL(16)6ghG*$wQsX3rU3vl##OYH?vfI@5bE zT;3QkK!w!^>kSFT_w3nh+QlABF?DY&fBtCZd*$H0-zPv!Kpk&|Vp^&D zIV;Pb-{z0RjW_=MwiA5DyIf}l+1YRS?WPp2uCDl8|7q5G>>4+99ayy&8#Jjn)uci3 zSM+M|RY0Y|CS})=K>V=buPcfT51*G!U=$b6M8pA7c6D*VVa*&J9j&V!e5#@06~^2J zMStzzNMYcUfrN|M>q}aQPb(W6m%4_mEJKOlt?8GF3^~WMetv2>HEx@_H+GuIxpRc2 zv5@nIvBCZ{5cCP(yB7*4O;%QR5O|6_-*$EY%&mnl&kt7WJ_}12vueiFdTC&~u=~)k zs<O0;YwsnJA*C9-G(_wm#2bIT2e zlh@kQb8B;R)56jc1p!2*aV?cmOf18|yi5m?HO9Phd49}z_ipg@_YtUF7{ompqOYM| zvG*o(qe8_)Mknx~>_LlC+e!W?TJbvo+)jE7uKqerK_v+W+yo5Uc(mwwwf8Ac)7P(G zaWj36D3<$DLm#~Oj%dyr+S=Chy;z`S6cM3@cTy&uYhBk#hlYmKfXqO?CBzQC!4Qw- zywWcVfTqdd*m{k_F2=s`6eA@i1q%zS8Gyox>NAIf#4-3{srkSigap8Lv>PY~UOpwB z>EeEO_Lutt6_^4vKDVD8uAgp&w&=;LGU8+H6dGJ&H(ec;lsPWQL9wut*%S3TV7cSD zNMLGeItOsqW23A~j>$l^l`q)xr-Sv+!ji^__wPyTFOMeUp5)n;3=jBSIRnHtk~p2I zb-neX%1#!j2;{X=lP)|NIXUBtlid@*BDWELYMk!@mLni14}(=1S-N(t>cU%kNTDbr zD?1NrgU9i-dl@WX{l#8S!}dmhdIMY#6A}(t+rHxCN}gDUyo`nDXm8(H*VWZM*+P%W z&u4z3s_Oo@3YJtpdL8yZ4=QafaEP@-FWv7p6rP@*>Mvj3X^O3zu!iykiFxngm)>5b zy`v*$#KDjv=OEOTZbL3LEiKY+Q=V_*HZm^ezse=(vQ))RgV;%LZBA51BJdG=dwV&6 zG7C37(P!d_iTNh#JY0E+F|*?LKMn8k8$N`=F`)Q|Y3i=FX3x3#jg%!cSnXliOw+^lS>pYh&TPMWZ` z_e>Y@d<#m*+Rl8NDSzr(BxfUCyn+m`c|TKXAOGCC;Dip$4_L?BX*=3cZ@{by?4-lx z17efr(e~`k$j!1CeAn422eGrbvLX+`&4+*1BOolC>h0}~g=jdMuy$D+x{JI&oCyH` zWVYkqf@5gKRkR8dx4(r6r~Z?95ZF#UrI7~3!m`WX~DFsI_5Hlk1!G5yxekc zqB@$}3civVhCHXQPvdhkA4*J3tpqs(@}}OA52Sy6nS`*_!!d*Hr+l{jRKVcX0Au?p zK~_Y`g4N$&2R`Rvv@YgqJK?*OsEvgf86DkQ_dTDSB}81^EQbtv#DZnkpY}MCjB`0@ z{og+?EGa+B+Xs4KTf{sJ@nLv0LW|$7et&*iul6xNf9QO>X~6z`e85)@J2=3=O&d`Y zDGW#V&g%{CByVILCmY=0EZNFgMo~>!qrZwIL@k2j2r;O$B=+x z?uZH%ofhfUyoC{V)~gY6D?{1!;#&e}AsXdtfWv2CR|Bbhb_Mnb%|C|vQELesC+9uH z!F(v~k%Dz;*UW&BF!{^Zn-3|)eMM4~^6yM~xhRv8lD3-i%*%_PsShldb3@`l1un^~ zljp@G4IQSqL45+vw*E+ zeSCu7R<5yR4o;i_>mTeTBoK%lRXsE`G>`^!%F7dGOP~>bi zmt!5M!qzttVo%6<^FY=`XId)lriBphwNw6YE@S1WxVgF8u88y6=9`fKc&~?3nuQqe zg;*|1{(V%%RLh^gEFuOi&=8=I9;aMSFHau2vyw)lG%r#8nmQ_8@vHjpfnfee~&C12JLy$}-m`stB$gap8{&qcKIG>iZ` zajawP?Nvc$m0*ZB1kHdeweJKVh{Jpu$(C|VRGKQBh zl(%M^u8U)?0b^pPDDi(X0V-E!Im`^Ygw$uvzuosT+X0@1LPfnUHl8EjsA+F+Hv~L` z%)9==tsM;%)5c|VY;3nQJ`+P?1X!fp^Z;dR&g$vIhYuUJcr`s8w=4bz)v`%tBv{UgVl}Jq(}NbVIm*CZHzmju+bwUMkJf&>?tHh`6c)YjG-(HbL<(#D^%+%6)EV_v1F09oIUsaatk z=ZumWcoQ%uboV8q_L}itopg!g2^w&`bU!^Ruy=pGaamN3+F@2cpQ!z^1q32)s23T+ z)l{0_p`ybHb@KdY#0Qdx!qa>udV~wa^Hq20zkgP5pX4D^Jm^6eSI9i?zNL3V0!f+E zMPI*17BOHeh+o^j$HL!q*bjEQX!kQs<9n8nSHrM80`Otc1N`gf1;88*$l2M5vDYq6 z_hn=>U%XHRjsh?OR8cX!&^F1#!@~pn>m&OE&g(tS-!n5R7u&gE$1dDYmr*HbbwRQxt{hzhel$}gWkX9LC<%#9U$ zf>2;i7*zG$OYq%?^c0JQNEdRA01B$?>gsB@fA%+$6AN((N&Vy5nU_Z4NQG%P;m`hl z=7QlzP(MFd*xBWS(&x3;eJ@m$6L=Iz-ynX;kBp48Wz0IX{HKKeeurctNFWKh?VwBi zDjo>fC&;UOl(;@urz;h((^t+ymrIj_gOaKuyJ#p`z<(3k=IK)VYmmDnW)J z8zA(M!S$K;*+%&QNc@AGzPq=Cybdg4kw}$+p>A3QHtlY(lqC2)zGuUkL#g(Sk6{!A zkgYOtFr+g*A5r63Sy|=KX3goEMBl^w&8yY za1HocoK_)CyvT^vL*-QdXelYF6De=@|8CppyPO;bujLeTi=mH?fr#}qS)}vI=&!NO zg8WgpSmtx?rdw_n-BSx^cUP6yX&6fS_S&EMYG#vQI8Z-(dp|ZeH;Yx4X)^+&k&6}C z!+M;jah1-2GqBS^X7Fokx=w%e`ByE_ZF9i?5fevg^>FwEp$VeWQ?M6E$jD+XX3WY{ zK)R3xD1i)b%4jp0eRCYV{QDr1LVlG*l2>rVB4T3;fS(`N_+`$1*np6Ll8Xdewo}#d z6B835d^&R1AYR7nak#TZ!7=mQPo4FkW9_ss0m_Js7C108JNI6M1Oi#tkdZ+{M??F? zR#Gp8i;H_FGI;*Ze{T2-ZU~BD4q)iFU{2V=cO^I%H;2OBdX9~_%j~y0H&H^NE1gPw~KDxVLD)Jaa z@y$PFfdFW_$HtP7Q-(^^P|#+4;g_7xMJ^qw`!#=avMNF2^GDEZ2XArKOF-d474wyl ziwaXH7#>vQY><)4jsuuuaeZ~^PQqofLoMp{?pt~JeLlW-khtX`geyGv&8+O~j$ABo zZabbI+3JGebu(D%gP4z3CTg~5@Q78Oew~{-_ypo1%T3qkP4YGyl)3K65gg0CctN!Z z(*@m03T^~(2AH>FsRw~7E5YYq)!~|5RD|>5yG=_=ASO5PyCQ?8JB8XMcXp`!LAaZi zlo52_q82-uL!}n+zy|~DhrqCH7vwN#i~>UY zxA_e!lHCpX9`V-iwBAzEq==#iscjA^GKpR6NJCiAGcuw=a%={k-8EGZ3<2ZtKmDvL zmR24t9WW`%T-G$$U)Ga@)Ok@?4Yj&$7!uw72Uo!VNK;~_-c#qB=}oO-z3|e~(%1b9 z#nI%UFH5=#GJPXr#m=z6TI&QY7c@?6c7sN0nD{X@UEnUAahVQMUG_d*N)iOp2+CC% zWN73_MH|QYwHyVhPmU(-J>%K#-+!aYDhr2}hnF`#F)=u0j$oe%fxu2h_5$#l*IxQE zf+>%K38MS|Waj=%@mM&BEX3F#yJ3N{A?fCJ6z4M&wU7a08(srB_FgF{8c3lKAOYmG z)(8@|QWznC9voSIoKBy}7Q<$cJsswnQPKn*Z}6w$B1fa8x8VpCHiLAyeVi{Rhkhsz*E zeB`9k)BF6=jjG9c7)KL998G)VjDd+q-3)PrbnU@yW7n(3N2*?+@Fpko-0=V-3Mr*S z3S8(-;jQ-AWk49V1fc7b8Ke6i#HskhM|kN%BA60!-cjNLo;tJWSq$Tn&j(I$O;{$P`*CP(T<}*VJrJ{R)RE z=hG)F8XB6N{r$EI%VDIl4f2S{!7phAC8fotyZ>&6OozG3gVqcYhg506_zMPr27Lo` zj~-DVB@kU*N{~jt$Krcy#7!<8(_suv3n+k(9KiAd7@A>!)c@nh+>5ZMPoIji-Y}u4 z)QzsM7g=0d%KrEf4R8g^g9qpY^#65F;jS_o8ieARadBKl(>OR7CZN3HRD=8iimSSY zMgVxBa9DEd>#6ZVQQy3IqoAU)EGlbk%wX2{0UcT?R71B~!>G!(!092Xsi{FKJRJJ9 zL6Fg*(Ss38XE3rLjwGzCSV8l9j+?}7Wod0K?dZr2j>+k)6OdsLl$ll1!jLLK(+VKh zn3@8bE<&${I{=MftpD?*)O2+tLP9VQ{t8S|dV16V{^OIA!|p%Lrvqb6U0of7+dDBJ zqPygQ%>oATr=p^EsLrRaYhl*#V+cCZNCNO0f`ZVPn3(9q#O`!=cZY?CQxGNU#li%@ zq13B!3g+yE?1NLOi;DpBFPYz#638zX$b?F%{J3D>6}?E{HpVBgn{A8+SB02_BpWOb zFnX&!_n9H4!Ow=h;WF>1p7H*y$*LOKhxi3Aw55SrmQ!0x32TTz_GyribWoKS``v>i z_|Iwxr&A|1OwGVxAoal(r@%nsH6lxmB@Si>)PijI;ppryu76R*DWx&w?lF5nrX0iD&>$dFT4e*@=d4hqMoPoE^fW(AOB$diJ! zp~2+^+m`9xy?v6P)m4kp&4-<h!h;l^tRN8}X65+#1 z2n)jsf({6H5ljQ1L>rpNP=X`@laYljMm8S+LIn{Gniry6 zZ;Q@>vJA$2R(?JPXsof~;RsyUO_2fchc1Hp?i&bbs{otxsu2{wfXFqlzuvcGF(uOt2$<2K}CXlNN`L{y%0U$(J=F<ccbj_frF;6aN~o(9x^ zWP8d?(S2fU-d$oe6CWA4`X;(ch_flfEk7_x8~`2CA^ z3O;uL+>#*g!dU}>@Hxr}!mw)6h(8tPc>~(ifRVy%$pS}Q|Bebkub3g%fr2U%q2y=H zy$99M0mDIpX_t{o?mmF}svRQ$+PQSUhCpDzvr2(9h@=Lq(9B{{sp~tXpe-oPoYXVj zuLzA|G7SIUF$UL6gwU;a?rRg@Z5l9QwItgLT~yGIW>vYD({eMg&a?Po0wahc&@2Tl zQ_y`O&^13lk6b}ypGtI!X{S!BS$TF@*`RI9_zR(T02(9j zn5U8C%9DZvrw592r~*?fw1|KbN=J-MpU@4@ASeIWZX>5oGqM7&4h~U~78@{8s9Vr+ z0zG|(<>MZ<6*}yo0zo$%>?K@W2nDtv%Ex;PR$~19{qM*%a1wDQ^>F)Mcz|#gwUg-S zU?jJ}0iLBlbOoWu5%m>!W}koSHvKm!I+*D1kATHMw#+dnfP1!s5ltkcav{h~jD;rp z5^9xiT!J*FKGxqIaB+G1r0+s7KI)WQoF{jnGGGvnho3rB>qM5a?7&e1NH zoYzCS{itD?xvzf{3v0EiV`6re7FMaj&Rvk2qk(1%R24hdFO`*vv@5?|8^3;y77%af zbM~_2Nr7;g{w`8uGF9ye5XRf{SCZv2>)}*wRu&yhi-C(P&ebxOAen&5s5*7}Kdpw< zVYF2?WjZHR-}Ca&o73$c)lK)`Lb>;Dx+9nKX-Bw}`&7!Kn62e#A`umq+K7ARlpV(0 zAT!fJQyyugXUklW6g#OjL;TK-p(KAEa-4ydHDzta7E2s$iUn3{@bTR0(gj5H`}D?6 ziz!E3GYWsZb{TSIH5vc3;H!;#?i4D+@TRKDJ@XufcjOUPXx(F=ExI8zux51Zslr*~ z5*QG0@`TS_#M~6bq9Cd47rZ~Kn~db5kd2;zcBQ9g1K+|0vhh=nyEhDwIP%&9%dGu> ruZjfWHyeo1p#7&c6sI%r$2BT?<3H__eyuiWVnsZbRgo!{G7R`XaM>R1 diff --git a/doc/surya/surya_inheritance/surya_inheritance_IRuleOperation.sol.png b/doc/surya/surya_inheritance/surya_inheritance_IRuleOperation.sol.png deleted file mode 100644 index 92be631a19a8e416f12e87350f7d5305bac9bc6f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5311 zcmWky1z3|^82wObq?J-oK}tfpB^;@Qw4|bR!|3i9NQ{(_5CI7Zkr**RN?N*ONiC+p~S#-QD+`_nh-aX{agQCZZ>TAn3NT5=;|3Hh@0~0z7cvw;Ue>9`MXwD8itt z>swA!ArgY9;mR;sZO_b|EFTS|-eu<}nFlgTfigKVIZq-ZWe;xX;^OH2;4&-{Fq9~_ zceC`a9xs!~Do-7EpO_OzNo>Kl?08FR=Iq@ROWfSc-Wb-HKqwySp~^sN>R;Rs=x?&H zgr-ThNM|-mo7E8qCl2Q(A`~!@3pn8Yfo`~HBzvO1{qh=;RANw?;pVa@a!Hqf{0k9X^ScQ#a@9RyuySKgP z&n+qGeMmK*ExY3k1uC(~DJc;!dM@IGMnn*QqM)Ei<2NVD%gZCDpm3I+pf#O4loO$k zt%Gk;a&mHNXlXG=Hk6l>mX(#siTZ4gpD9Fyhd<)tdg&x9EBjBi$5N1fczk>k z&5=T89v;$zgM&x}qJ4X+n&QqKq4_nkNe8{0HdGVGIGUe04w z=Y;e4@nd#wZh2*8!se?>AMnjW!I6oH(QR&SDyge?fxSGSjOv_OIiP45v+1aJU3dDk zqP()cjtRIrV*)UH#LS$Ko&6yxiJIl{W7#s@1rhtTv-?dZaaC3P)HF2tIXO^RSlGtK zMxbUf%*KZE_wV2F>FH6{BVS@8ygbx5jE#*&-TtHg^XHG#N;k##A3q)m3Q}`$aCCQf z%ec7wftCF=ih+C%4>KH_TPI8dVv%g>%K*%g(a~}W3V2o3)d}h8gzD;psJ8=?M8*K= zi>)Ep?dm}d4Gkz!Nli_`-CY=5#pic=RH-uEajV^?W*Mv{YhuFa;_CWJM<*;W5PENJ z{&w|Oa(7?fz20e`qcDd`{r%NcQ?tQrsqWt15EM$n#l>ZRBR_7rQ2K&{nyAByb$yv} z_0MW=cYlA!QhUTJeSLxg&8XxjdS+u^bwEYtt=RtE5mgZs6m)72zpc%g40m*e=yoGH#hI=?tTEV zvaswU)t}`~*)?m07}Y&c{!vroyft1%LQ47t_GqcWZOe0Kx+XzE#5cG0`}h5H%k12Y z3Z?JHVYK0~&qx< zaE?(Mp@C1*aVsk;!@CP`v%|H1@+cUo!+)d2`pv%e$QFIBaJgJ`TNv@dK^GI5L|J+hy$)Q@iDgM&K4~$YO0RaJ* z+m_Pr0A*1qRPmTieZZCfS8dLLEQwTARn_(%mRwJ1Nn)a-^VA9%9JLg(PEWnnvc!`Q z*9V!3l;=D~I;;fwg@scPG`x(pJnaQ9QYoQh@1~FdIQ;tqxWxM4CpO62%j@=xN&c{? zUG66dj}Melp>%X~em^K|ZEV<+Rp^+Q)R8@cTt1z_V~kVrhB#7rETU=^EQJ z;@`DHwGMMC^+p5X;o+6l4&>p?a72fkh=|Ayauc396p9M+(K7(uHu#g239@IjaER=l zDEf7^#qh`ol8=v1621}d#Kp�AY7(7yjB_fkTBsv(0`IFJ8Q;cbF4bfWaz?i=*Ns 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 I+?(M40U@fAqyPW_ diff --git a/doc/surya/surya_inheritance/surya_inheritance_IRuleValidation.sol.png b/doc/surya/surya_inheritance/surya_inheritance_IRuleValidation.sol.png deleted file mode 100644 index 10cf3312ee125dad541fb55ad463d9cf2cd652fc..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 11676 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 K`&rt=|Nj6;SCjkz diff --git a/doc/surya/surya_inheritance/surya_inheritance_RuleBlacklist.sol.png b/doc/surya/surya_inheritance/surya_inheritance_RuleBlacklist.sol.png deleted file mode 100644 index 4a82559ecf8b9c83bf5d6ffae48c3a7ae02a4ca7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 25450 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 diff --git a/doc/surya/surya_inheritance/surya_inheritance_RuleConditionalTransferInvariantStorage.sol.png b/doc/surya/surya_inheritance/surya_inheritance_RuleConditionalTransferInvariantStorage.sol.png deleted file mode 100644 index 0491c0de6949a609c92fa081fcb94cb6b4803fbc..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 16328 zcmdtJc|4YD*f#oT5TeW>vyvzzA#)N!2um$Ra0xW2jh)k?D4 zc_SP)tTmexuHOk(}R{cr$k}(eViJqwGPS9uoP8dxmaK>83;y zjbYy19tQ^pRU@OM2(BvA-4Tt$^T#4p_%!+To=sCxQ!6_?Uti~8jxdSdv3>gq z0Y>LF-dGCXjomSY`hweInx^9Is6#|*gCg2&#$BZoTQ1rb8RAxW^H^W7>xa9oI2$R@ zAUC+>;s}**MB^6RWpGDE+l1?L!#vS@nxbq`S`RV}a)(&7KY#fWvb5wrvl{)JHGg?! zPM=UjOswSxDUC;*9uSDTDUJi4$564#uhtj*W%hx<$Kf+cs`)ZW0d< zkJg2VMvLXOwUfNDiUN$h`}S?aV6R=fX5W}lSIX*nRez{2^rV_N8;z?pN1@?ie8o#& zkO}WK`56|y{Sqv`(K1D;Y<=1NK3rQ{ib_Q_x51>2g`GXJwpKCU{M)?eE%hvtzW@uF zV{q-XIIeH!LfnprY3GV1$M&9OV{{2_NQ+lKo3 z|i-7p_KMrmK6vmz)V7uTi#4{T<)XKop`l@GYir=6NBrW)j%5@S#QH2H-M?Sz z($dnRwKbH)&C9zbHa0daD(aN6G5hfFFf9Yaji8`ycmi&DdCs$E&ua0VWSuFS3U0P2 zP!vuWS^YKjI4{qQK6`c5`^~7cxP(OgPwboC}SvbdzAOJ5vEfRK<- zhK>MtLUYP@o{->Rp8fk9ts}z2PdGdO3=G(m;10^Is^U2J%=FaXf3pe-3hJCad+o^+ zLE{>K4(GCD2L244u!j#H3YR>7EFjVpRA(;Q+uqw7Io0{BqVLI*CrEju-o#0|y?Y}b zKHRtOzyUrvISy7Zw!Pe_L;lReROJE6wju zj3-E+NX(>*FIms!8$0DJp3~QNWN2=*IP$5z{fP57H7gq%J{g(4nJQ6}3C~n2g^g)w zXp$9EF$@dc6Lb6C)L%d4p>DWmY46(l^8fXblJh7DMv5cae3|nyR<9C{{8zA)g%%%rz{KZ z>a3o8=gu7&Yc`BhR9eT#sQH*6yOFi^ev)}>`U#e!7pa|HT#j6*-xkRsvlPAL-e)lM zX~I>?dr{zk{sHaOAZ&L{P3oTu3rF0i&*Nc6QhjDlczQ1X5F;+g;uolrIix)OIY&=G zSXjl*?(mi^TW-b0-T3pz_uJ?wkECShL{GZknKY_|MvFQ;;9SQ!v!ROF>V`6xG4q$* zx9;8zsjQUMOcW*a^73L4vr;oNxlLTx^dZ(KbQi}kn?Qny8F@@o!}ALbbD3Q06nc*| z>w+j5R$awM4)09R%5F%N^O{kPTh~XpHq$ZO)qu^}O|PD0QDnJ>mL`6Z7uFB~ZRBYd;&L21NsD5!O>diq$szYYg?BU_ziAOBSQSZLw z8HFM<_^$uzOjHPv*VWT=ICFYd^ytO+q?jg`uk2W@yx*ms` zzDzTff!JHO0udU+%_23*Cr@sbaOkHdB_6xNjJ#c7+s3Q^*I&Pcb+kX9$%GQje7SY>^iEn7BqB41g}t#A*FAfd&f40Vj^sU-;$bhSNh-YB{laub z2C=<=-##5fLpHmf;;1|7`-_T-+Hh0b{z|V`BlEUH^}$ue*(FcU7hET~`lS8xmdkqh z5GbMi$C9VgnD{`sn@~&g@i_cq_Ye2WmoM{@#N8(Kd3j$L=DDseUSboo3hNws?mVha zAFk|2e^)6Z{r!8*EsBU{-lUc<2Zol;^^P|9tu4hWa;N{A>Wov#%(#1(d3CW}`=FrU zP5v|YKj)dfPRYp6kM8$hvtyI>6h%0C4+Zae{NlwYzM4L&gg*Q1sJ)W6&mVe(f@D~9 znTeG;ME*#5P3-;q?y)A|uJE zFL{|}e}?x|y%@c?Ja}WbH)HBIHs1((!oL3+tUIrTu4( zWR7~w7~c#F8-F>+={t8~i=uQ&{>S?1XQj=d3M+55$1_4Xot=D^rvJV#X02Z0&+5UP z)S?m`9DL{QT@|H_TLw?hw^@4iWI0|cGW5oW)wpR}UsyL|p_a<()+s&etqab-`S>x0 zq=SX0qgz>9V<1g-oo{*bW-$6V6;)>2xIt;L!+;i_YV^avK$5zKMka@hyW?1@=P>0K zMH!Eo=}%e}eOk>4B4bOtIc3!t_%+i3zi!^V`5?j6JKTq&`Q1C)wg;yeSy@k01z*2= z*hqzrj*gLm;UvbWHN<(`IS8rnpnyQwi%5`;h;{Ja;rCq*LdsMsJ_h8=456aEUi^4cB z%?~#+GBKU%=;$CKg=+WiY=#3`u0AH(cF!I^PDif1t+ubwbKYWgc_b#Mx;hn!YW8+C zNs8x(U=3=O$0d>2Tt_bpnCBlk;&xxfQ9Ckk-=@E8Z_h8E zrmd9GIDxJrMm_LB(?3ev%d{yxO~uDN+6$i43RcGvIkS#@(e z?xdw@>*n0?nGg80?1ZQ;^!{~OH%DLp{CPD1;bcdx(VCX?*kch_&^2StPlNJ=KW9IE==pBZ;RTUSYG z%a4JYnx3hp*GnH2Hj~jeVPbCqaXrSGRBY@NsT}+?JSkk`YV+@UWb5WUyncPl7DWX8 z&@|xW;ya;dt&h$my|FLxNa8fBm zo_|$$rIK=?%}37RdC$c*RjydmXW6?I{@h|XqoAO0yLq&)|98c;7ca!rPoK^}7Wrf= zZr@kRl+Pq&a7%691H^XEW%Gb~9%G55sBg~4?Yf>{!*B&;Ws`StNPqk0zVT;8tNxTS zk@)NhV5tM(s7Ld>y!<|?^<%(>i?s8%un0BxP$ZPXLUHfW_;bn8GW}=r%xY4@!mb>5 zo2D|Va6e4OU1qGMtPC{qAe76$>tHgHrL-H(^QS6~>8*YrCByq_5c1?I{cm8rrFDH^+}3H%?vrRy{x?z(|#!HMOfGld9xu_jRB*-ouAm`XNa-(LyeMrmMV%!DM(hz$%4{PAHl>|8 zc<^8yu$t)Q&jQ&aHLD%ZNTju;A6rQPj^$lr=X0AZ3IAC9V$kCLebpA9)?MASGA+ zqS=JAyrb|(^d3`BG9d592d5$wmCsjs9}A&oy^dI})KEzM-kH=Qge(P+q?OC3s;Zj# z@Zq*Vo8Rm9+_-Vg=KAb>&E{Io^X{v{V@949gaPGle-%3uNcC9|}BsZ5V(C9|f3G`cNbkQr2de5IN zl0oL8PPe%*c`!M@_g8#MZ4}Q4w%zOAGM6J>Kdoeceb$pa)|W0+&i1IU-A%5b>iKh8 z^q;u~c}mXCVo1Z}6@C3#YpFjqJeJ&pvwss%^3>_ml+heA)@ZyNZ+iaTk6~cA$-FOme8Eyipfulj=pDm6c`R=X2l8LE_mVlX6D%(>wPF2LVXF zjXQAG*fhk&5q+v()fX6JX@n#X|Oo`Cf!vkKP% zJ^!*4%@k>-OP4NrZm$2%XtSkdWF(q@lAjNk{g@nqQpXEL;??KB7&%-(gn*doDs#y; z3Mjd4CKs-K@ghI7uyGh3np;|$OTR3c z;Ca8}XnF8R8VSOUlO4H;fb=$79n39)WD7~Mz>~;J&8{BG+3iDd+VXXBzk7*Z_|KHt zrt^!2f>*!wwB@#wz$TFf_fcz{7>K6;G z87Chv20@IYgN|BFLqDozSOId_cT2L|F{{c<|lKXJ*cc?|NHO1jU&iQ z3!JZaU;Vx$_f}+P`bTu?v}^6i{B!fVEz?~ETd#EHH=^J2iAN6aSlL)S^;LTM$Mh^3 z1~f*GHQ0JxKFX15{XSQ`G}B&~YWW_Ia&A6Q?YBG|uo(e*MgQD6%O78hjDKez!1fy4 z+?d^*+gO{e&}1GPpB(Mt+L+scd|&7~@hNHJQ0Oxq6O%La;Xy%48SUGo;@&Ekm6dG^ z1V$dmR(sevb*cT)nQeg^tDQBsQ5}HI+PChORU{Ev9{5-j>%~tZpvR}FU&_jh2{nHj zt(Om{eawFFfOqCTTH^x&0Rie~&SYV!gHR-jN=o!V5v(tyZ9eo`_zvP@FI^vt*v>#s zpXnpmyL`b)Ct_rOQk=Oj9zN|Zb5E0>Xobkq0hVJ?CqM*v|9pFZl4RFg8jGJ}JTau! zmmlRdKq0si4H2*%1?hB_E&)t`^i?E8#8?UspzuEu-Kez8fr$9Hnmi4 z7O?IXQ@od&oM@J4_Db9`%zK0__3r)qZ>Gb|qt5E;>b#^ybYV`NGpN_rB6Md#T4iNt zGmr#@h52(kCY?+j)7vN11mizt#>h`Hx@%7qc+B<-|CmgcT;;Xna5*D0)_{pW3(!n- zftWW;gy6x08BQaw&mtd5vNWU&r2Zrpf9sB2L^EPMbC5)Ub-%SAC7cNiTbXh@)P>IF z@5AgHJ~uy+FjJlq_y;BatgWp84Ttm{jnCIYENAqa@38LPjBK1 zNDfls!GlHaVwX~!tz6gzydN#UI?ngCz%o?N)5*!n*pthDnFqb2F8b9zpV_L#w9P+F zjgN?4^Qg@(WRtVz=G?)dp?dcA!ggN^-;N4V$hc3ZpUqSuen7)1o7nF;LX-dCh|{q0 z0U4}A15J;|)qu^lfwz~7KJ9g=JRx>3Qt9N$iL$ZOOcXy|cXtUtWQj$jI_VYGW0x7} z`Vz@S5qK#0g>F*@tHTi@z2#FvGJ8Z!HPMF=3kq2N@T2@%q>_@-I6BZwv^{S3zAJxo z-ObTMY=ar!rm449V%}(D%Ut?QBo!2DRC_v~{(W+`W>daueW`~)>v-D5P=!C&5N$yG z?;G=@`7|otiI{Y+RSc|uu=7lP1w(56zQEqOfQ|_g;-!+?k z`?=`p2zU!lk@!nYOiVyj^w#aTxQWi1jblLb!oo9umhKQWq3f!IwErI|AmnnUXNif4 zoU?0+-^bfB?*L4KcrJAR@zuU>Y1wUga`JNJ&v!yy6&@n!8w##=i)r2$pSWvwUyOzN zb)U+G3p^m9iPSoiSZA&X#s$D83ZwL1&S; z%985)^KFGnAxOx%lA3jzlcBpBkt9ejyCXOMj44Pt4l2ex*xvif+Zb%hYwX1W>t<#U z`vmc#u-5%?4!nn_Y-cE_ml+A-?oFIN)GlKm8d03lR8k>^jjOzw5I?n*UJK-lUxNkX zsVdxmDB&qL)&@3}1Q>_!*`(It<7Fp~raHIpJbho2f4Zk+H+m~#hTdO1`Z}5;0_e{I zPxR))hw2dxBd8lH0pD|#~NUgoSU&DS%_jmvBr!0-G5(lp8 z)kz_Cd0&=|jSbJ`q0sr4Y3tN6a!V`-PzS+YBU3U~($}wF=g_u|5ElfTaroTX$tNgC zg>0HAdST1YpFcse{Sa5aL-0#mcU1I61K>R#k}IIncw9B$@_*rcS0-d^KBN{9@>w!ZZ$6I-bUubM> z1Xwwxs7O+YWVz-uQ?{eKyBm}B`b{j~+BAa(q5X^_>up6-=|s?y1daG1rD0`Z?1I=m zf>8!+$UiG)@hYsRzrwvIxS0bs774L52xtT~^yKBsf&@I>X2)Ig+)9)sa)TiB z4`@XX+`LJJ=nreOh-5!bPu%(K+Y?A0z>v;Oc8fP1%Lr0h%3~(E{rmD@mL`7#3U6#` zYII~IwbjLoynsumPoExKSTQY5#vJ?Z#1vzb5M=AWTj}^fQ|K=GY=;--DTTKwb zixDS0)>TS-Az?X!I{;Y#X7~O63tK@X5_HDj-rmv#H;em(g;9tYeZ=bZpUN}HeDL5p z!($BDeqi42J$Mi+YilQ(t*Q}E6to>CJL@}`2u>DQ81t+1_ut`IY$BEfL`25qBSEJT z4D+2kj3qsa?B4GX_QKGMkRCvWn@9vJT?4m9l9Z=T1s{b^QFBN$HiXa+)GM(v|4`Qt zelI_CbPMjYS3Prv2L0~!e@X7XOD?_2B#NCoPXa`>-%U&mOH5>W)zpMgyh$@)18TFu zz9bWDJyq})ys$pP)`nPsF?lhuPg$B8T3RY#rf%Q9O|I`Hksg$LK$Abt=!DBv^{m@2 zQ?s)%xc95ZMxs}sq@)asj#fe2YGGkP3o;F}3Z+Tpby%JGGOuACvvV0c*gLRrC;umn zqoAPeQuiH9=$;GCVS2i{^d%R+_SKr~Hupc zzo!`j9^j3Y7+z?6oSQiI-l$_qB=!U7_?#R{^(=a@+qU-hDtdYh&}vFuz^vI`xia!+ zJA^L@iMzSfGTwgDn=ibcDbxl{@q^Dk1tfCL@=0FasMr;>X!oI*uHoGe&$VWb8c1|H`TEBk138`l$fQVwnT_>FXcpSPj zp~xRsCOeBO%+JqjRY_uZ|I|I?w};=jgf6M&bw{amgrTKnX8YFG&!4vy8UCOTQRH@{ zFN}WheWvF8p%Arw*UulCiPO#%WvRXiu~RF1#9t;t$78dnr^lo|PHkUUSeWAzN9mv@ z6YD!?I?DW@S*b!Cjp2L}y%ufev73#AmC$-4O=WnlX+J&XD~ltj=lF_#2x{FMl?!4s zgj)FH$B)*jUwA<_ZJlt{$_&_I-1ZGrKAWc5fw_f{!5=1M3(e)?zt7;{IzzT5Gby+6x;0k zL@OgqpM^GBTzhMEz0EeL<>C#4-0hAht-{_ko&f=b1e)GCbwMHtJ%zbA8&XQTK`y?n zkR9N#DCo+0u%AA>)HEbNS|&QY(E{pYf$uRz^ZG_dw8@Iu?R8dSWsFk%ag^jY$Pj(l ze(0X;?CeC7T6(=8F8-^+cHBSAyb~!*a;QKOb2R5EyT{3eJ65f<@wcaJYP-P44_n4* z4R-80>!zxvMgciN_C`vbA)6y)`!07>x|Jthy=;v?R*ja0C9JhoCnzL@S5%Z1-3izuTB=|W zyA%+{aWAk7oj+|dJyP{+{V7QwIxR%)B{fS~B717l&k%~@v+C7%J&#bb zb}2aQtwr{uR&l_j6K~S4Q|=*T7+Duee$lu(7E#e5Ol&M@6#$IdIMp0*ADOB#)msgYux#D) z<*zs9y}W>#Z(3S{)69Oy=poTF9461)P0ZsW*+;qG#wBB@NTOi+WGty~9I3rv5=^ba zh0;#T%1W8r@ii;y=TGN{+1Udpa#3}PO`s_W9&mgOVIP2fZjIl5fV_Brb76Lhq4p^(nOO_K#WJ<{Eqb!k0p+yJ{d1AA- zXKRNlat}tYtgP^eh{S|5-)IXZ9&+`TO`0Dwb3|~@*t{pCle>EkTZoc#KFz&VH+~Wv z4!G)VumX@!r){rZRrd5OO*m{RO1|r9Bc7B8b_|8hm5+3^v?O3Y**|j)nuWMw2;!`* zNp^j)-PXYYY+)1ny(v2vmPoQ413ly@$mx)LvDHbWxVPJ|)k%a6By&rifsm`TNz71A z$K@HLVC8M$%3EMW$nCgE(5o&7;??U$=F4e>;OZbFBkT1C?m?eG`VT`0DG(V9h6e2i z&F0hsT{6NdH3)U&nG?AkN_gcNG}wyQ+ls?zQ3tz4mTnz{^Jkq6=AyM%B~Bte;M?4e z`l}N77vkS73TiLDbec_K-yrAZXcYd}d*Un4#Ty&OAQP*$?V2JfNB>>;1xH8GEyx+m8PR3H7f}13e9cHhDu2rg@PSiQ(|!!(hHoKq)aaGHUzush%=cJ{) z)-ai)aR5`1+2(pF>7Qg%5Rnd=9hMN>aV7woKz&04;;L@lW_FduZ##o!kkNSc>K96&IXUrOaP_@SU9Er*TRAeeZhwZ%%HJg*#L6j1u8#s z#CJLINOD@)83B!@W`(S{Qa{v0pp$OR1GT zrJ(f=0kCT^y^p@m40Mb33w;e8VOe+`$$F!(u#hubThyM0-`G#{ufLdx>qC9jdWv-h z(;u>n<0g79i>~Jv-n@HP5BC7r>G!5AM_J^z(G8)GNlrH*o>SOZ5u!KpA}X^=3}*}F z-%z2@@q8NDqsNlk5H!UM*dgUM$q225U@+0ZKPW0&&Uy zv8uwxrGxsH*3lkbC^96R9sjx^7#SG{p`=;PW;l@X8&?te684H$AOgj$CP&&bQ8 z!KN_2_#RyssFozDx8|beV)q<3{&*$J``s6kfz%8d(`mr(cLwBoP>!!kokqF@225*% za(7_+fSR_S?yuSlw*$ynWnW*}gdw6mU0if^NW#T@gFpsmK7LHGV>hQV><|bBV9_uT zT0@|v8o_R&)t|IGx^_&nv={RD&Ati`ORSz0Bu!u=e(luA({cP4hF^uNojyHZ98OJc z8Hiwy0M9r*P{Rdc{1o;)v78g_*_Nw|6D&{~eH6Y>@*8g|fV5a{QrNgwU$10b;Z8iM z=X61nsNbq9(GfcvUc8RvZok7ImkCXpIW~gM0B`GY zu7;sPNaJFaY0O`_20RB3Qi@d05!>b;?f`+Y+@7`(gh`<}-zLTuMabV!FbjNFoE?%H zN@>vT@WQVJVsEkdV5E^1lrK*Ze&|!KVICq`j%=w}X>kzsoHHl<8qf~sWhbl`CNWqQ;DDYcz2W^xy5Z(bP3lwy+M3XKLoE8f5cqr4*vMZg!l}lf* zNck>{+CM7DGsykNl!15|y?Y2+buBJ=7E1-CaZy^+% z30YTb;9!+ddPNXiNbMlPP75%8st?|ogS^|r@1>097tH{62ZYDWHnmfyPTh%*KSdf( z@#rth5hWuee(%v)fK6=g9*?k{Sp(=PUk2<^ZgP5rT$=kq^W(hIibo<>)B~Au0hRp-7jq@N$}l> zCACyhfn8WMEXBecJai}$X+Y_6(bv2rx2Z2}BL4FcrrpC+vam~R3v`uEDLGU2Raxy!(+R})qzELl;5$%9g2B6_Kh%i15NzOg2 zt@Um&#SJg4EF$x?^*rjOp9z|RV8=tc17?XsFGt^a&x0HA-jvT)ufYKmqp*>Py*}|S zUI_JA8L|tcIR%3B|Ni|VF0+r33S709)k4XDzXo6u)i7aH~*hp4=7A~ z3~YvezIyhby$1C!{vTcgJ(Qt!WYxzh_|`1rTCam4<6 zd9j5zM_-*Z?oqSGvB%xxf*0EWsQvQ7`-Iz!1TH%4u85fy(w6A?qz0;=_1@yzi0aTB}R+I(u0NI1M&YEm*&|MY4rO4%%YH2_Fr2Rl&#iRe`&3u zs3a%J`7F_rzJg=+cv@MROll3G*=t-snP;YL=L1!Nk_7XTv;CKR6Ah9YfKOAe8$o2v7>}(6%#U($@7-B5!L6@Ie|MS&Fk73M% z*TO~m|J#j_2+k_G*L7)X!f#wKTCULs;6ymS3ZZ#l+D(w|SMr$OJ&69g1_pOOE{S?6 zZL+C!h5{fHd@oTdD(%$MTD!U^Fm!b^DR#GkY6lfY!?T8m2w4PGuQ7RSS5Z6EFYF3#@gcwPx&9na8cCks?lA|VZ zR?4B^e5s}6R7pv(o2E>Y>TQ{?L%X#9-~rip%P(^y-Pe{KN1-PSGCvaT+%bn4PReO` z8$|VR2*5HXKCp|D0zvg=Pc>VK?Md>cnlcz(tKTUy2!;22p)Fk)Meez0uW#|3oLd=7 z^O$IAUu*q~-RGt@k`erhXa&kFVP_CHc#y2sCH1$pso$@^2rvkMu~2-lB#KPP7!Rl% zM3`TbJ{?d#bqf95Ao|R$Bz7ss^p6JCc9$=2AptA5Mj1$zm|#NQzJ04T=2Ktr1p;AcHmJJx|aye7p;C%G{;ub)t+J+^xWS*bar%H0L7mu;~`9dn(S2X zcL&!i*k)#CR^@`-a`jGFiLn|yGmZNC)v$8qdlHBi&+qqafQTl)RAv9p$dy`ROhZOh zI>c-VuOMhADX*XVZbn4R&o%7cI)41)npm{h#{!F0MXOq>bKq7%{Y7&r%-HFzQlqJU zpM0Fbp?Za1D^)f;JIx<1pfWmyy%l93=MV0h=tT@PYrX@Zr=qEv1S4_h2EE~O=vhBpFR zgc{_!T_Fs;2hx166WRx=)H3S!s8y)3Fn-twQ^2T|s_MMktH!<~p;aZroq9d&4AMR? z8aPr{N9R4yKQ|{M_@JUIofb&Vy=4Fq8Bd;2xqN@`G`Tw6^WAN*anEH7y4zMK z#{UOBKM>7kiN9Rc?wR57)4qgP2V&(Agd`CVd64L%a9!uVwA622W^lw0wnz@V8i`T( z;I_F-ZDvlUNaiLoG%V})p*39+XLCq$(Sr>jPMMb{Lq{z>KEBuK{}W~ZjoAOGvVW2K zf2ZuXTwDceen+DN&yN+-L&AIn^I_hIMkV)(6bbuYHInVu!b?_S_w3(3J5c=p<^wn; zDX9mkhAbVc3MVY*n%jTU*IfrbrpTz0Z2y;PKN^S8{B|#v<^C$4vb8IsEZ)>pQ_pIa z-dt2QocX^T1IftN5LGV}+V@Gr7>8j!e)up5=}Hx8px2z*!{4WTw|7;)9dgb`Sd?s0 zONCchNrcc{y}o1=vrs8=L7Z)(pox?3p5}Lb18QaRLPt6}KX_=+L~AsJ?#_nM&LOE? zh}|Vy+Mc6E1=@fz;c_fP)`O_K2ybJYj=;kU4Iyo~0fBG{HvoDkKV>MRj#MJT!qGct zAtF8mawfnguvP+m)|;hW`i6$;h{Fs72##SrM5w)MX&K%2knevX$!p0z(n^`MY66fQ z@3u*ElV19)r|p#ao}JkG4#ZlVNtSARJ8=KlmC}RTqYv-f_iD8N;iE_1-#U+UzOTd7 zX$|-;L}?g`m{umDt)=0TPj;W_J)P#a#0r~b>y>9!D!==EME0a=@@ICM1*C+9RWA?k z%)S!EcI-*hb08qO7iBQAzmDP3h6R8?2Fl6+u)Hva;I9Xm4dNNTeY0Bq^(^2FgsF&# zf3QNdglnXw_IyG2RaaOw0nprpOws67y<4bOM4QkTu({62%&ejs!}+WDcu7jd@YEb6 zDxfYYc-4L2x8CxsYKhJ0QBWOAEj|d6Zx}|sZ_$vw^$iS&J&i#d5{H{vfr7r5jwrrLqH&EkOANdHIt?22m>ak*Ec#Swmvvcy9R9I95wKim` z?4FbpFYKk2cKILcf^v7mvZjO+3R)@B!Fal4g#b=SXRvb+dOt2Hbpqs^xy5U9YHs*m z2z{COl)N7su1iE4&N)IH6Sa6n0pft1*w5IwCUzxG=cK#gSjkb?x1sF?RC+K0fdb6I2xB`0*NdU)Z#=MQ$ld`9}j>v{mc5>jn;o#bA zjVeeoVUzM#)~je=Az<_2cqUF|u}HfL5KPyvL5k8(qIvXWr`%yH>tQMF`?L z15+^&uqg-kXC%D&E@o}onwsAPQvhXIjyvxoh?HSc7q&8%z_zSL>pbb`ZU3^)_j>0Y;3ZWTQB;%F*L^{6t(3rvPEJk|Tr2<|@FiZT z+?h|F+%(#H2vQ;Hi`tnpZaM7y2M)ZPS@Wl25a!Cl=?sR#ckk5EC_3)8L3S(g+(%MY zRwfSf0l28CsVU+{7M7NDtgPX1007UP;E!{P&=F%65Ybh~taVcY#)Z{;j zQ$;|FFo10RSEMJna1hYMfy1ycMP=n}Q-T*3DS;9R$pWf7r1k@v@CFcv9B~8^^gFs3 zY@QT@ISwGnBA9ypDFNFt2ypLul?g0>+mMICe&$-GoF@9+s@g ztq5%axuADr7yAF6JrRwNRe|?t!f5Fe=RyU07tKG8S2HKTbXon})`)JOX0u97T%Ojx5~?-Q`lDTZGnviGXM?aVSFv z2Vb}0?CbOAqVTQQn;l|yQ93{$4xSVzoC$Ul9RUNPUX4Adl1Ya*kgp+P!{&tdc;P+10&ufMh4joC=Qu$cB9xTBEXs4o zA(3FZZ->)0@Zn&#{azd_LO~>1BAAO6Hws! z3FEFJvXrD|H;?bG-_dUeVFmT+glcVaw-}K$QIIwM!Auo7yxgZ393lj@gpIJUTxw9{ z!Y0zISN=Kfy*F?#p8>~&O_8CTma6Khy0Zn2`U33nJHwUh|2ia{8mFFR+{gzG=S-nZ zuLQ>EyG2#w#6O~#;(r&;WSCkp1vo)|MUEtC7y%}hl-_Z<>=HRgFwU2fIWh-DOMUPN zZn!%$E|6~0c2<#tm~pR^=rN8d_4$8At-yaJ?!di=dm!GGT%Vz}$kC^|rdVs3|DVKa ziCzDAu;igX5uT}KM(EwJHVx^`k@?Qp@e%Lq=I(6nHX<9ZtP0yMgroVS)2FnQ^Oel6 F|2Mm|Ei3>4 diff --git a/doc/surya/surya_inheritance/surya_inheritance_RuleConditionalTransferOperator.sol.png b/doc/surya/surya_inheritance/surya_inheritance_RuleConditionalTransferOperator.sol.png deleted file mode 100644 index 6635edc404945096e0dbe250dcf4bb16ce5c5980..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 21956 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 diff --git a/doc/surya/surya_inheritance/surya_inheritance_RuleEngine.sol.png b/doc/surya/surya_inheritance/surya_inheritance_RuleEngine.sol.png deleted file mode 100644 index 891c5d15c1ec977a45846206209992864facd167..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 29248 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 diff --git a/doc/surya/surya_inheritance/surya_inheritance_RuleEngineOperation.sol.png b/doc/surya/surya_inheritance/surya_inheritance_RuleEngineOperation.sol.png deleted file mode 100644 index 8dcb6199e6c6f0c78dd7c70ef2685c56f2b32e17..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 23797 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 diff --git a/doc/surya/surya_inheritance/surya_inheritance_RuleSanctionListInvariantStorage.sol.png b/doc/surya/surya_inheritance/surya_inheritance_RuleSanctionListInvariantStorage.sol.png deleted file mode 100644 index b084d7338bae3734751e7b3d5f5d8de18174fad8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 15225 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 diff --git a/doc/surya/surya_inheritance/surya_inheritance_RuleValidateTransfer.sol.png b/doc/surya/surya_inheritance/surya_inheritance_RuleValidateTransfer.sol.png deleted file mode 100644 index afdca024a860e52858ec9a66a71ec759c31d0df0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 11664 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 diff --git a/doc/surya/surya_inheritance/surya_inheritance_RuleWhitelistCommon.sol.png b/doc/surya/surya_inheritance/surya_inheritance_RuleWhitelistCommon.sol.png deleted file mode 100644 index f75664aad17e018b9903bb14bb66c7673fd52636..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 21618 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 diff --git a/doc/surya/surya_inheritance/surya_inheritance_RuleWhitelistWrapper.sol.png b/doc/surya/surya_inheritance/surya_inheritance_RuleWhitelistWrapper.sol.png deleted file mode 100644 index 73d3cb38c4392d4b4819efc483047f05f04ed833..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 27537 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 OwW*FX9ZuN0Z~h-%Hc2P| diff --git a/doc/surya/surya_report/surya_report_IRuleEngineValidation.sol.md b/doc/surya/surya_report/surya_report_IRuleEngineValidation.sol.md deleted file mode 100644 index 0a34e51..0000000 --- a/doc/surya/surya_report/surya_report_IRuleEngineValidation.sol.md +++ /dev/null @@ -1,34 +0,0 @@ -## Sūrya's Description Report - -### Files Description Table - - -| File Name | SHA-1 Hash | -|-------------|--------------| -| ./interfaces/IRuleEngineValidation.sol | ae7c36b3a2c7805ef513f79b79bd6ce9d0357847 | - - -### Contracts Description Table - - -| Contract | Type | Bases | | | -|:----------:|:-------------------:|:----------------:|:----------------:|:---------------:| -| └ | **Function Name** | **Visibility** | **Mutability** | **Modifiers** | -|||||| -| **IRuleEngineValidation** | Interface | ||| -| └ | detectTransferRestrictionValidation | External ❗️ | |NO❗️ | -| └ | validateTransferValidation | External ❗️ | |NO❗️ | -|||||| -| **IRuleEngineValidationCommon** | Interface | ||| -| └ | setRulesValidation | External ❗️ | 🛑 |NO❗️ | -| └ | rulesCountValidation | External ❗️ | |NO❗️ | -| └ | ruleValidation | External ❗️ | |NO❗️ | -| └ | rulesValidation | External ❗️ | |NO❗️ | - - -### Legend - -| Symbol | Meaning | -|:--------:|-----------| -| 🛑 | Function can modify state | -| 💵 | Function is payable | diff --git a/doc/surya/surya_report/surya_report_RuleConditionalTransfer.sol.md b/doc/surya/surya_report/surya_report_RuleConditionalTransfer.sol.md deleted file mode 100644 index 2e44d15..0000000 --- a/doc/surya/surya_report/surya_report_RuleConditionalTransfer.sol.md +++ /dev/null @@ -1,44 +0,0 @@ -## Sūrya's Description Report - -### Files Description Table - - -| File Name | SHA-1 Hash | -|-------------|--------------| -| ./rules/operation/RuleConditionalTransfer.sol | d6c1c14a4196e7582019e913f409416d118edbd8 | - - -### Contracts Description Table - - -| Contract | Type | Bases | | | -|:----------:|:-------------------:|:----------------:|:----------------:|:---------------:| -| └ | **Function Name** | **Visibility** | **Mutability** | **Modifiers** | -|||||| -| **RuleConditionalTransfer** | Implementation | RuleValidateTransfer, IRuleOperation, RuleConditionalTransferOperator, MetaTxModuleStandalone ||| -| └ | | Public ❗️ | 🛑 | MetaTxModuleStandalone | -| └ | operateOnTransfer | Public ❗️ | 🛑 | onlyRole | -| └ | createTransferRequest | Public ❗️ | 🛑 |NO❗️ | -| └ | createTransferRequestBatch | Public ❗️ | 🛑 |NO❗️ | -| └ | cancelTransferRequest | Public ❗️ | 🛑 |NO❗️ | -| └ | cancelTransferRequestBatch | Public ❗️ | 🛑 |NO❗️ | -| └ | getRequestTrade | Public ❗️ | |NO❗️ | -| └ | getRequestByStatus | Public ❗️ | |NO❗️ | -| └ | detectTransferRestriction | Public ❗️ | |NO❗️ | -| └ | canReturnTransferRestrictionCode | External ❗️ | |NO❗️ | -| └ | messageForTransferRestriction | External ❗️ | |NO❗️ | -| └ | _validateTransfer | Internal 🔒 | | | -| └ | _cancelTransferRequest | Internal 🔒 | 🛑 | | -| └ | _validateBurnMint | Internal 🔒 | | | -| └ | _validateApproval | Internal 🔒 | | | -| └ | _msgSender | Internal 🔒 | | | -| └ | _msgData | Internal 🔒 | | | -| └ | _contextSuffixLength | Internal 🔒 | | | - - -### Legend - -| Symbol | Meaning | -|:--------:|-----------| -| 🛑 | Function can modify state | -| 💵 | Function is payable | diff --git a/doc/surya/surya_report/surya_report_RuleConditionalTransferOperator.sol.md b/doc/surya/surya_report/surya_report_RuleConditionalTransferOperator.sol.md deleted file mode 100644 index e426528..0000000 --- a/doc/surya/surya_report/surya_report_RuleConditionalTransferOperator.sol.md +++ /dev/null @@ -1,46 +0,0 @@ -## Sūrya's Description Report - -### Files Description Table - - -| File Name | SHA-1 Hash | -|-------------|--------------| -| ./rules/operation/abstract/RuleConditionalTransferOperator.sol | 51e02c78db77b0f0984e14cfad7a5def39bc1964 | - - -### Contracts Description Table - - -| Contract | Type | Bases | | | -|:----------:|:-------------------:|:----------------:|:----------------:|:---------------:| -| └ | **Function Name** | **Visibility** | **Mutability** | **Modifiers** | -|||||| -| **RuleConditionalTransferOperator** | Implementation | AccessControl, RuleConditionalTransferInvariantStorage ||| -| └ | setConditionalWhitelist | Public ❗️ | 🛑 | onlyRole | -| └ | setIssuanceOptions | Public ❗️ | 🛑 | onlyRole | -| └ | setAutomaticTransfer | Public ❗️ | 🛑 | onlyRole | -| └ | setTimeLimit | Public ❗️ | 🛑 | onlyRole | -| └ | setAutomaticApproval | Public ❗️ | 🛑 | onlyRole | -| └ | createTransferRequestWithApproval | Public ❗️ | 🛑 | onlyRole | -| └ | approveTransferRequest | Public ❗️ | 🛑 | onlyRole | -| └ | approveTransferRequestWithId | Public ❗️ | 🛑 | onlyRole | -| └ | resetRequestStatus | Public ❗️ | 🛑 | onlyRole | -| └ | approveTransferRequestBatchWithId | Public ❗️ | 🛑 | onlyRole | -| └ | approveTransferRequestBatch | Public ❗️ | 🛑 | onlyRole | -| └ | createTransferRequestWithApprovalBatch | Public ❗️ | 🛑 | onlyRole | -| └ | resetRequestStatusBatch | Public ❗️ | 🛑 | onlyRole | -| └ | hasRole | Public ❗️ | |NO❗️ | -| └ | _approveTransferRequestKeyElement | Internal 🔒 | 🛑 | | -| └ | _createTransferRequestWithApproval | Internal 🔒 | 🛑 | | -| └ | _resetRequestStatus | Internal 🔒 | 🛑 | | -| └ | _checkRequestStatus | Internal 🔒 | | | -| └ | _approveRequest | Internal 🔒 | 🛑 | | -| └ | _updateProcessedTransfer | Internal 🔒 | 🛑 | | - - -### Legend - -| Symbol | Meaning | -|:--------:|-----------| -| 🛑 | Function can modify state | -| 💵 | Function is payable | diff --git a/doc/surya/surya_report/surya_report_RuleEngine.sol.md b/doc/surya/surya_report/surya_report_RuleEngine.sol.md deleted file mode 100644 index 90cf24e..0000000 --- a/doc/surya/surya_report/surya_report_RuleEngine.sol.md +++ /dev/null @@ -1,35 +0,0 @@ -## Sūrya's Description Report - -### Files Description Table - - -| File Name | SHA-1 Hash | -|-------------|--------------| -| ./RuleEngine.sol | e13fc0c25fc199c56abd6dfbad3496431af1359f | - - -### Contracts Description Table - - -| Contract | Type | Bases | | | -|:----------:|:-------------------:|:----------------:|:----------------:|:---------------:| -| └ | **Function Name** | **Visibility** | **Mutability** | **Modifiers** | -|||||| -| **RuleEngine** | Implementation | IRuleEngine, RuleEngineOperation, RuleEngineValidation, MetaTxModuleStandalone ||| -| └ | | Public ❗️ | 🛑 | MetaTxModuleStandalone | -| └ | detectTransferRestriction | Public ❗️ | |NO❗️ | -| └ | validateTransfer | Public ❗️ | |NO❗️ | -| └ | messageForTransferRestriction | External ❗️ | |NO❗️ | -| └ | operateOnTransfer | External ❗️ | 🛑 | onlyRole | -| └ | hasRole | Public ❗️ | |NO❗️ | -| └ | _msgSender | Internal 🔒 | | | -| └ | _msgData | Internal 🔒 | | | -| └ | _contextSuffixLength | Internal 🔒 | | | - - -### Legend - -| Symbol | Meaning | -|:--------:|-----------| -| 🛑 | Function can modify state | -| 💵 | Function is payable | diff --git a/doc/surya/surya_report/surya_report_RuleEngineOperation.sol.md b/doc/surya/surya_report/surya_report_RuleEngineOperation.sol.md deleted file mode 100644 index 9083954..0000000 --- a/doc/surya/surya_report/surya_report_RuleEngineOperation.sol.md +++ /dev/null @@ -1,37 +0,0 @@ -## Sūrya's Description Report - -### Files Description Table - - -| File Name | SHA-1 Hash | -|-------------|--------------| -| ./modules/RuleEngineOperation.sol | 1e1185c6f479770d66aabb692a54d331cbaf8f4d | - - -### Contracts Description Table - - -| Contract | Type | Bases | | | -|:----------:|:-------------------:|:----------------:|:----------------:|:---------------:| -| └ | **Function Name** | **Visibility** | **Mutability** | **Modifiers** | -|||||| -| **RuleEngineOperation** | Implementation | AccessControl, RuleInternal, IRuleEngineOperation ||| -| └ | setRulesOperation | Public ❗️ | 🛑 | onlyRole | -| └ | clearRulesOperation | Public ❗️ | 🛑 | onlyRole | -| └ | _clearRulesOperation | Internal 🔒 | 🛑 | | -| └ | addRuleOperation | Public ❗️ | 🛑 | onlyRole | -| └ | removeRuleOperation | Public ❗️ | 🛑 | onlyRole | -| └ | _removeRuleOperation | Internal 🔒 | 🛑 | | -| └ | rulesCountOperation | External ❗️ | |NO❗️ | -| └ | getRuleIndexOperation | External ❗️ | |NO❗️ | -| └ | ruleOperation | External ❗️ | |NO❗️ | -| └ | rulesOperation | External ❗️ | |NO❗️ | -| └ | _operateOnTransfer | Internal 🔒 | 🛑 | | - - -### Legend - -| Symbol | Meaning | -|:--------:|-----------| -| 🛑 | Function can modify state | -| 💵 | Function is payable | diff --git a/doc/surya/surya_report/surya_report_RuleEngineValidation.sol.md b/doc/surya/surya_report/surya_report_RuleEngineValidation.sol.md deleted file mode 100644 index 01894ff..0000000 --- a/doc/surya/surya_report/surya_report_RuleEngineValidation.sol.md +++ /dev/null @@ -1,28 +0,0 @@ -## Sūrya's Description Report - -### Files Description Table - - -| File Name | SHA-1 Hash | -|-------------|--------------| -| ./modules/RuleEngineValidation.sol | 0f30ea71d3ce862e4bbb3083e0e45670a3393000 | - - -### Contracts Description Table - - -| Contract | Type | Bases | | | -|:----------:|:-------------------:|:----------------:|:----------------:|:---------------:| -| └ | **Function Name** | **Visibility** | **Mutability** | **Modifiers** | -|||||| -| **RuleEngineValidation** | Implementation | AccessControl, RuleInternal, RuleEngineValidationCommon, IRuleEngineValidation, IERC1404EnumCode ||| -| └ | detectTransferRestrictionValidation | Public ❗️ | |NO❗️ | -| └ | validateTransferValidation | Public ❗️ | |NO❗️ | - - -### Legend - -| Symbol | Meaning | -|:--------:|-----------| -| 🛑 | Function can modify state | -| 💵 | Function is payable | diff --git a/doc/surya/surya_report/surya_report_RuleEngineValidationCommon.sol.md b/doc/surya/surya_report/surya_report_RuleEngineValidationCommon.sol.md deleted file mode 100644 index c806888..0000000 --- a/doc/surya/surya_report/surya_report_RuleEngineValidationCommon.sol.md +++ /dev/null @@ -1,36 +0,0 @@ -## Sūrya's Description Report - -### Files Description Table - - -| File Name | SHA-1 Hash | -|-------------|--------------| -| ./modules/RuleEngineValidationCommon.sol | a942b2dc5791016dbf30c12b5778f1c65e167b0d | - - -### Contracts Description Table - - -| Contract | Type | Bases | | | -|:----------:|:-------------------:|:----------------:|:----------------:|:---------------:| -| └ | **Function Name** | **Visibility** | **Mutability** | **Modifiers** | -|||||| -| **RuleEngineValidationCommon** | Implementation | AccessControl, RuleInternal, IRuleEngineValidationCommon ||| -| └ | setRulesValidation | Public ❗️ | 🛑 | onlyRole | -| └ | clearRulesValidation | Public ❗️ | 🛑 | onlyRole | -| └ | addRuleValidation | Public ❗️ | 🛑 | onlyRole | -| └ | removeRuleValidation | Public ❗️ | 🛑 | onlyRole | -| └ | rulesCountValidation | External ❗️ | |NO❗️ | -| └ | getRuleIndexValidation | External ❗️ | |NO❗️ | -| └ | ruleValidation | External ❗️ | |NO❗️ | -| └ | rulesValidation | External ❗️ | |NO❗️ | -| └ | _clearRulesValidation | Internal 🔒 | 🛑 | | -| └ | _removeRuleValidation | Internal 🔒 | 🛑 | | - - -### Legend - -| Symbol | Meaning | -|:--------:|-----------| -| 🛑 | Function can modify state | -| 💵 | Function is payable | diff --git a/doc/surya/surya_report/surya_report_RuleInternal.sol.md b/doc/surya/surya_report/surya_report_RuleInternal.sol.md deleted file mode 100644 index 0eddb1f..0000000 --- a/doc/surya/surya_report/surya_report_RuleInternal.sol.md +++ /dev/null @@ -1,30 +0,0 @@ -## Sūrya's Description Report - -### Files Description Table - - -| File Name | SHA-1 Hash | -|-------------|--------------| -| ./modules/RuleInternal.sol | 7bad85bfbad52abc2ab9082628bf6bba2ee116f4 | - - -### Contracts Description Table - - -| Contract | Type | Bases | | | -|:----------:|:-------------------:|:----------------:|:----------------:|:---------------:| -| └ | **Function Name** | **Visibility** | **Mutability** | **Modifiers** | -|||||| -| **RuleInternal** | Implementation | RuleEngineInvariantStorage ||| -| └ | _setRules | Internal 🔒 | 🛑 | | -| └ | _addRule | Internal 🔒 | 🛑 | | -| └ | _removeRule | Internal 🔒 | 🛑 | | -| └ | _getRuleIndex | Internal 🔒 | | | - - -### Legend - -| Symbol | Meaning | -|:--------:|-----------| -| 🛑 | Function can modify state | -| 💵 | Function is payable | diff --git a/doc/surya/surya_report/surya_report_RuleValidateTransfer.sol.md b/doc/surya/surya_report/surya_report_RuleValidateTransfer.sol.md deleted file mode 100644 index 3b10ec8..0000000 --- a/doc/surya/surya_report/surya_report_RuleValidateTransfer.sol.md +++ /dev/null @@ -1,27 +0,0 @@ -## Sūrya's Description Report - -### Files Description Table - - -| File Name | SHA-1 Hash | -|-------------|--------------| -| ./rules/validation/abstract/RuleValidateTransfer.sol | bdc453d5afd57fde0c8ca1baffc05c6ed4cb6d20 | - - -### Contracts Description Table - - -| Contract | Type | Bases | | | -|:----------:|:-------------------:|:----------------:|:----------------:|:---------------:| -| └ | **Function Name** | **Visibility** | **Mutability** | **Modifiers** | -|||||| -| **RuleValidateTransfer** | Implementation | IRuleValidation ||| -| └ | validateTransfer | Public ❗️ | |NO❗️ | - - -### Legend - -| Symbol | Meaning | -|:--------:|-----------| -| 🛑 | Function can modify state | -| 💵 | Function is payable | diff --git a/doc/technical/RuleBlacklist.md b/doc/technical/RuleBlacklist.md deleted file mode 100644 index 59ebb3c..0000000 --- a/doc/technical/RuleBlacklist.md +++ /dev/null @@ -1,49 +0,0 @@ -# Rule Blacklist - -[TOC] - -This rule can be used to forbid transfer from/to addresses in the blacklist -A part of the code is shared with Rule Whitelist - -## Schema - -### Graph - -![surya_graph_Blacklist](../surya/surya_graph/surya_graph_RuleBlacklist.sol.png) - -### Inheritance - -![surya_inheritance_RuleWhitelistWrapper.sol](../surya/surya_inheritance/surya_inheritance_RuleBlacklist.sol.png) - -## Access Control - -### Admin - -The default admin is the address put in argument(`admin`) inside the constructor. It is set in the constructor when the contract is deployed. - -### Schema - -Here a schema of the Access Control. -![alt text](../security/accessControl/access-control-RuleWhitelist.png) - - - - - -## Methods - -### Null address -It is possible to add the null address (0x0) to the blacklist. If it is the case, it will not be possible to mint and burn tokens. - -### Duplicate address - -**addAddress** -If the address already exists, the transaction is reverted to save gas. -**addAddresses** -If one of addresses already exist, there is no change for this address. The transaction remains valid (no revert). - -### NonExistent Address -**removeAddress** -If the address does not exist in the whitelist, the transaction is reverted to save gas. -**removeAddresses** -If the address does not exist in the whitelist, there is no change for this address. The transaction remains valid (no revert). diff --git a/doc/technical/RuleConditionalTransfer.md b/doc/technical/RuleConditionalTransfer.md deleted file mode 100644 index fcea617..0000000 --- a/doc/technical/RuleConditionalTransfer.md +++ /dev/null @@ -1,191 +0,0 @@ -# Rule ConditionalTransfer - -[TOC] - -This page describes a Conditional Transfer implementation. This rule requires that transfers have to be approved before being executed by the token holders. - -In the Swiss law, this rule allows to implement a specific restriction called *Vinkulierung*. - - - -## Introduction - -The ConditionalTransfer rule has been implemented as an operation rule with the RuleEngine - -Why use a dedicated rule instead of directly implementing the solution directly in the CMTAT ? - -1. This feature is not a standard features common to all tokens. -2. The CMTAT is curently too “heavy” and its contract code size is close to the maximum size limit (if the snapshot module is included), it is not possible to include new features inside. -3. With the new version of the RuleEngine, it is now possible to update the storage of a rule during a transfer call from the CMTAT by using an operation rule. - -### Swiss Law requirement - -- The Swiss law defines that if the transfer is not approved or denied within three months, the request is considered as approved. - -This option can be activated by setting the option `AUTOMATIC_APPROVAL` in the rule - -- Not required by the Swiss Law, but upon request, we have also added the option to perform automatically a transfer if the transfer request is approved. - -This option can be activated by setting the option `AUTOMATIC_TRANSFER` in the rule. - -## Configuration - -### Options/Parameters - -At the rule issuance, the operator has different options to customize the behavior of the rule. - -All these parameters can be updated after deployment. - -| **Struct name** | **Parameter** | **Description** | -| :------------------- | :--------------------------------- | :----------------------------------------------------------- | -| `AUTOMATIC_TRANSFER` | | Manage automatic transfer | -| | `isActivate` | Activate automatic transfer | -| | cmtat | CMTAT token contract | -| `ISSUANCE` | | | -| | `authorizedMintWithoutApproval` | Authorize mint without the need of approval | -| | `authorizedBurnWithoutApproval` | Authorize burn without the need of approval | -| `TIME_LIMIT` | | | -| | `timeLimitToApprove` | Time to approve a request(e.g 7 days) | -| | `timeLimitToTransfer` | Time to perform a transfer after the approval (e.g 30 days) | -| `AUTOMATIC_APPROVAL` | | | -| | `isActivate` | Activate automatic approval | -| | `timeLimitBeforeAutomaticApproval` | Time limit before an approval is “automatically” approved. In this case, it is possible to perform the transfer with a status request to WAITING | - -### Conditional Whitelist - -There is the possibility to add a Rule whitelist. If `from`and `to` are in the whitelist, a CMTAT transfer will be authorized by the rule without an approved requestTransfer. - -The function to call is `setConditionalWhitelist`. - -### Automatic transfer after approval - -This option, if activated, will perform the transfer if the request is approved by the rule operator. - -To perform the transfer, the token holder has to `approve` the rule to spend tokens on his behalf (standard ERC-20 approval). If the allowance is not sufficient, the request will be approved, but without performing the transfer. - -![conditionalTransfer-automaticTransfer.drawio](../schema/rule/conditionalTransfer-automaticTransfer.drawio.png) - -## Schema - -### Graph - -![surya_graph_Blacklist](../surya/surya_graph/surya_graph_RuleConditionalTransfer.sol.png) - -### Inheritance - -![surya_inheritance_RuleWhitelistWrapper.sol](../surya/surya_inheritance/surya_inheritance_RuleConditionalTransfer.sol.png) - -### Workflow - -#### Status - -Each request has a status, which changes regarding the decision of the operator - -The default status is `NONE`. - -![conditionalTransfer-state machine.drawio](../schema/rule/conditionalTransfer-state machine.drawio.png) - -#### With the CMTAT - -![conditionalTransfer - CMTAT](../schema/rule/conditionalTransferCMTAT.drawio.png) - -#### With Storage - -![conditionalTransfer-Storage](../schema/rule/conditionalTransfer-Storage.drawio.png) - -## Request - -- Each request has a status and a list of corresponding attributes. - -### Status - -| **Status** | **Description** | -| :--------- | :----------------------------------------------------------- | -| NONE | Default status \|\| the request has been reset by an operator \|\| the request has been cancelled by the token holder. | -| WAIT | The request is waiting for an approval | -| APPROVED | The request has been approved | -| DENIED | The request has been denied | -| EXECUTED | The request has been executed, which means a successful CMTAT transfer | - - - -### Attributes - -| Name | **Description** | -| :-------- | :----------------------------------------------------------- | -| `key` | Each request is identified with three elements: `from`, address `to` and `value`. From these three elements, a `key` is computed with the one-way hash function *Keccak-256.* | -| `id` | Each request has a unique identifier. Starts from zero | -| `from` | Token holder | -| `to` | Token receiver | -| `valu`e | `value` amount of tokens to transfer | -| `askTime` | Date where the request has been created by the token holder | -| `maxTime` | date limit to perform the transfer after approval | -| `status` | `request status` | - -### Initiate by the token holder(sender) - -1. The sender calls the contract rule to perform a request of transfer under the form of - -"to | value" - -=> Status Wait - -2. The rule operator has to validate the request - -"sender, recipient, amount, date" - -=> Status Approved - -3. The sender then makes the transfer by calling the corresponding function from the CMTAT. - -a. Before performing the transfer, the CMTAT calls the RuleEngine. The RuleEngine checks the request by calling the corresponding rule - - => if the request is valid, the transfer is valid and the ruleEngine will return True to the CMTAT AND the status of the transferRequest is set to `Exectuted`. - -The rest of the transaction is performed inside the CMTAT. - -=> Status Executed - -### Initiate by the operator - -1. The rule operator creates and validates the request : `from | to | value` - -=> Status Approved - -2. The token holder then makes the transfer by calling the corresponding function from the CMTAT - -=> Status Executed - -## Access Control - -The default admin is the address put in argument(`admin`) inside the constructor. It is set in the constructor when the contract is deployed. - -| Name | Description | -| --------------------------------------- | ------------------------------------------------------------ | -| DEFAULT_ADMIN_ROLE | Manage all the roles | -| RULE_CONDITIONAL_TRANSFER_OPERATOR_ROLE | Approve request and manage options. Functions defined in the contract RuleConditionalTransferOperator
      setAutomaticTransfer
      setIssuanceOptions
      setTimeLimit
      setAutomaticApproval
      createTransferRequestWithApproval
      approveTransferRequest
      approveTransferRequestWithId | - -### Graph - -![surya_graph_Whitelist](../surya/surya_graph/surya_graph_RuleConditionalTransfer.sol.png) - - - -## Time Condition - -- Once a request is `Approved`, the token holder has a date limit (e.g. 7 days) to perform the transfer. After that, he has to begin the whole process again. This parameter can be changed by the rule operator. -- Once a request is created `Wait`, the operator has a date limit (e.g. 7 days) to approve the transfer. After that, the token holder has to begin the whole process again. This parameter can be changed by the rule operator. - -# FAQ - -> With transferFrom, what is the corresponding workflow ? - -With `transferFrom`, the sender, which has the approval from the token holder, is not part of the Vinkulierung workflow. Thus, a valid request for “from, to, value” has to exist. - -There is no control performed on the sender of the `transferFrom` call - -> Can I create several transfer requests with the same value/amount? - -No, it is not possible since each request has a key under the form of - -`hash(from, to, value`) diff --git a/doc/technical/RuleEngine.md b/doc/technical/RuleEngine.md deleted file mode 100644 index 159cf07..0000000 --- a/doc/technical/RuleEngine.md +++ /dev/null @@ -1,58 +0,0 @@ -# RuleEngine - -[TOC] - -The RuleEngine is an external contract used to apply transfer restriction to the CMTAT. - -This contract acts as a controller and can call different contract rule to apply rule on each transfer. - -A possible rule is a whitelist rule where only the address inside the whitelist can perform a transfer - -## Schema - -![RuleEngine](../schema/RuleEngine.png) - -### Graph - - - -![surya_graph_RuleEngine](../surya/surya_graph/surya_graph_RuleEngine.sol.png) - - - -## Access Control - -### Admin - -The default admin is the address put in argument(`admin`) inside the constructor. It is set in the constructor when the contract is deployed. - -### Schema - -Here a schema of the Access Control. -![alt text](../security/accessControl/access-control-RuleEngine.png) - -By default, the `DEFAULT_ADMIN_ROLE` has the role `RULE_ENGINE_ROLE`. - - - -## Methods - -### Duplicate rules - -**setRules** - -If one rule is already present, the function is reverted - -**addRule** - -If one rule is already present, the function is reverted - -### Null address - -**setRules** - -The function is reverted if one rule is the zero address - -**addRule** - -The function is reverted if one rule is the zero address diff --git a/doc/technical/RuleSanctionList.md b/doc/technical/RuleSanctionList.md deleted file mode 100644 index 3ce697e..0000000 --- a/doc/technical/RuleSanctionList.md +++ /dev/null @@ -1,38 +0,0 @@ -# Rule SanctionList - -[TOC] - -This document defines the rule SanctionList - -## How to use - -The purpose of this contract is to use the oracle contract from Chainalysis to forbid transfer from/to an address included in a sanctions designation (US, EU, or UN). - -The documentation and the contracts addresses are available here: [Chainalysis oracle for sanctions screening](https://go.chainalysis.com/chainalysis-oracle-docs.html) - -## Schema - -### Graph - -### SanctionList - -![surya_graph_Whitelist](../surya/surya_graph/surya_graph_RuleSanctionList.sol.png) - -### Inheritance - -![surya_inheritance_RuleWhitelistWrapper.sol](../surya/surya_inheritance/surya_inheritance_RuleSanctionList.sol.png) - -## Access Control - -### Admin - -The default admin is the address put in argument(`admin`) inside the constructor. It is set in the constructor when the contract is deployed. - -### Schema - -Here a schema of the Access Control. - -**RuleSanctionList** - -![alt text](../security/accessControl/access-control-RuleSanctionList.drawio.png) - diff --git a/doc/technical/RuleWhitelist.md b/doc/technical/RuleWhitelist.md deleted file mode 100644 index d74b8aa..0000000 --- a/doc/technical/RuleWhitelist.md +++ /dev/null @@ -1,50 +0,0 @@ -# Rule Whitelist - -[TOC] - -This rule can be used to restrict transfers from/to only addresses inside a whitelist. - -## Schema - -### Graph - -![surya_graph_Whitelist](../surya/surya_graph/surya_graph_RuleWhitelist.sol.png) - -### Inheritance - -![surya_inheritance_RuleWhitelistWrapper.sol](../surya/surya_inheritance/surya_inheritance_RuleWhitelist.sol.png) - -## Access Control - -### Admin - -The default admin is the address put in argument(`admin`) inside the constructor. It is set in the constructor when the contract is deployed. - -### Schema - -Here a schema of the Access Control. -![alt text](../security/accessControl/access-control-RuleWhitelist.png) - - - - - -## Methods - -### Null address -It is possible to add the null address (0x0) to the whitelist. It is a requirement from the CMTAT to be able to mint tokens. - -It is not a security problem because OpenZeppelin doesn't authorize the transfer of tokens to the zero address. - -### Duplicate address - -**addAddress** -If the address already exists, the transaction is reverted to save gas. -**addAddresses** -If one of addresses already exist, there is no change for this address. The transaction remains valid (no revert). - -### NonExistent Address -**removeAddress** -If the address does not exist in the whitelist, the transaction is reverted to save gas. -**removeAddresses** -If the address does not exist in the whitelist, there is no change for this address. The transaction remains valid (no revert). diff --git a/doc/technical/RuleWhitelistWrapper.md b/doc/technical/RuleWhitelistWrapper.md deleted file mode 100644 index 4895bf1..0000000 --- a/doc/technical/RuleWhitelistWrapper.md +++ /dev/null @@ -1,32 +0,0 @@ -# Rule Whitelist Wrapper - -[TOC] - -This rule allows to have several different whitelist rules, managed by different operators. - -The rule will call each whitelist rule to know if during a transfer the address `from`or the address `to`is in the whitelist. -If this is the case, the rule return 0 (transfer valid) or an error otherwise. - -## Schema - -### Architecture - -![ruleWhitelistWrapper.drawio](../schema/rule/ruleWhitelistWrapper.drawio.png) - -### Graph - -![surya_graph_Whitelist](../surya/surya_graph/surya_graph_RuleWhitelistWrapper.sol.png) - -### Inheritance - -![surya_inheritance_RuleWhitelistWrapper.sol](../surya/surya_inheritance/surya_inheritance_RuleWhitelistWrapper.sol.png) - -## Details - -### Architecture - -This rule inherits from `RuleEngineValidationCommon`. Thus the whitelist rules are managed with the same architecture and code than for the ruleEngine. For example, rules are added with the functions `setRulesValidation` or `addRuleValidation`. - -### Admin - -The default admin is the address put in argument(`admin`) inside the constructor. It is set in the constructor when the contract is deployed. diff --git a/lcov.info b/lcov.info index 8df861d..01edb04 100644 --- a/lcov.info +++ b/lcov.info @@ -1,175 +1,159 @@ TN: SF:src/RuleEngine.sol -DA:37,85 -FN:37,RuleEngine.constructor -FNDA:85,RuleEngine.constructor -DA:42,85 -BRDA:42,0,0,1 -DA:43,1 -DA:45,84 -BRDA:45,1,0,15 -DA:46,15 -DA:48,84 -DA:55,3 -FN:55,RuleEngine.transferred -FNDA:3,RuleEngine.transferred -DA:62,2 -BRDA:62,2,0,1 -BRDA:62,2,1,1 -DA:65,1 -DA:70,9 -FN:70,RuleEngine.transferred -FNDA:9,RuleEngine.transferred -DA:75,8 -DA:79,2 -FN:79,RuleEngine.created -FNDA:2,RuleEngine.created -DA:80,1 -DA:84,2 -FN:84,RuleEngine.destroyed -FNDA:2,RuleEngine.destroyed -DA:85,1 -DA:94,10 -FN:94,RuleEngine._transferred -FNDA:10,RuleEngine._transferred -DA:100,10 -BRDA:100,3,0,3 -BRDA:100,3,1,7 -DA:103,7 -DA:114,13 -FN:114,RuleEngine.detectTransferRestriction -FNDA:13,RuleEngine.detectTransferRestriction -DA:120,30 -DA:125,30 -BRDA:125,4,0,11 -DA:126,11 -DA:130,19 -DA:131,19 -DA:132,16 -DA:134,16 -BRDA:134,5,0,10 -DA:135,10 -DA:139,9 -DA:142,9 -FN:142,RuleEngine.detectTransferRestrictionFrom -FNDA:9,RuleEngine.detectTransferRestrictionFrom -DA:149,22 -DA:154,22 -BRDA:154,6,0,10 -DA:155,10 -DA:159,12 -DA:160,12 -DA:161,12 -DA:163,12 -BRDA:163,7,0,6 -DA:164,6 -DA:168,6 -DA:178,17 -FN:178,RuleEngine.canTransfer -FNDA:17,RuleEngine.canTransfer -DA:183,17 -DA:184,17 -DA:195,13 -FN:195,RuleEngine.canTransferFrom -FNDA:13,RuleEngine.canTransferFrom -DA:201,13 -DA:202,13 -DA:211,13 -FN:211,RuleEngine.messageForTransferRestriction -FNDA:13,RuleEngine.messageForTransferRestriction -DA:215,13 -DA:216,13 -DA:218,8 -DA:220,7 -BRDA:220,8,0,7 -DA:221,7 -DA:222,7 -DA:227,6 -DA:228,6 -DA:230,2 -DA:232,1 -BRDA:232,9,0,1 -DA:233,1 -DA:234,1 -DA:238,5 -DA:245,93 -FN:245,RuleEngine.hasRole -FNDA:93,RuleEngine.hasRole -DA:250,278 -BRDA:250,10,0,158 -BRDA:250,10,1,120 -DA:251,158 -DA:253,120 -DA:264,285 -FN:264,RuleEngine._msgSender -FNDA:285,RuleEngine._msgSender -DA:271,285 -DA:277,0 -FN:277,RuleEngine._msgData +DA:22,86 +FN:22,RuleEngine.constructor +FNDA:86,RuleEngine.constructor +DA:27,86 +BRDA:27,0,0,1 +DA:28,1 +DA:30,85 +BRDA:30,1,0,15 +DA:31,15 +DA:33,85 +DA:43,286 +FN:43,RuleEngine._msgSender +FNDA:286,RuleEngine._msgSender +DA:50,286 +DA:56,0 +FN:56,RuleEngine._msgData FNDA:0,RuleEngine._msgData -DA:284,0 -DA:290,285 -FN:290,RuleEngine._contextSuffixLength -FNDA:285,RuleEngine._contextSuffixLength -DA:297,285 -FNF:15 -FNH:14 -LF:68 -LH:66 -BRF:14 -BRH:14 +DA:63,0 +DA:69,286 +FN:69,RuleEngine._contextSuffixLength +FNDA:286,RuleEngine._contextSuffixLength +DA:76,286 +FNF:4 +FNH:3 +LF:12 +LH:10 +BRF:2 +BRH:2 end_of_record TN: -SF:src/modules/ERC3643Compliance.sol -DA:22,3 -FN:22,ERC3643Compliance.onlyBoundToken -FNDA:3,ERC3643Compliance.onlyBoundToken -DA:23,3 -BRDA:23,0,0,1 -DA:24,1 -DA:35,8 -FN:35,ERC3643Compliance.bindToken -FNDA:8,ERC3643Compliance.bindToken -DA:36,8 -DA:40,3 -FN:40,ERC3643Compliance.unbindToken -FNDA:3,ERC3643Compliance.unbindToken -DA:41,3 -DA:45,6 -FN:45,ERC3643Compliance.isTokenBound -FNDA:6,ERC3643Compliance.isTokenBound -DA:46,6 -DA:50,2 -FN:50,ERC3643Compliance.getTokenBound -FNDA:2,ERC3643Compliance.getTokenBound -DA:51,2 -BRDA:51,1,0,1 -BRDA:51,1,1,1 -DA:52,1 -DA:54,1 -DA:59,2 -FN:59,ERC3643Compliance.getTokenBounds -FNDA:2,ERC3643Compliance.getTokenBounds -DA:60,2 -DA:69,3 -FN:69,ERC3643Compliance._unbindToken -FNDA:3,ERC3643Compliance._unbindToken -DA:70,3 -BRDA:70,2,0,- -BRDA:70,2,1,3 -DA:71,3 +SF:src/RuleEngineBase.sol +DA:31,3 +FN:31,RuleEngineBase.transferred +FNDA:3,RuleEngineBase.transferred +DA:38,2 +DA:43,9 +FN:43,RuleEngineBase.transferred +FNDA:9,RuleEngineBase.transferred +DA:48,8 +DA:52,2 +FN:52,RuleEngineBase.created +FNDA:2,RuleEngineBase.created +DA:53,1 +DA:57,2 +FN:57,RuleEngineBase.destroyed +FNDA:2,RuleEngineBase.destroyed +DA:58,1 +DA:71,21 +FN:71,RuleEngineBase.detectTransferRestriction +FNDA:21,RuleEngineBase.detectTransferRestriction +DA:79,40 +DA:80,40 +DA:81,40 +DA:83,40 +BRDA:83,0,0,29 +DA:84,29 +DA:88,11 +DA:91,11 +FN:91,RuleEngineBase.detectTransferRestrictionFrom +FNDA:11,RuleEngineBase.detectTransferRestrictionFrom +DA:98,25 +DA:99,25 +DA:100,25 +DA:102,25 +BRDA:102,1,0,19 +DA:103,19 +DA:107,6 +DA:117,19 +FN:117,RuleEngineBase.canTransfer +FNDA:19,RuleEngineBase.canTransfer +DA:122,19 +DA:123,19 +DA:134,14 +FN:134,RuleEngineBase.canTransferFrom +FNDA:14,RuleEngineBase.canTransferFrom +DA:140,14 +DA:141,14 +DA:150,13 +FN:150,RuleEngineBase.messageForTransferRestriction +FNDA:13,RuleEngineBase.messageForTransferRestriction +DA:154,13 +DA:155,13 +DA:157,10 +DA:159,8 +BRDA:159,2,0,8 +DA:160,8 +DA:161,8 +DA:165,5 +DA:172,94 +FN:172,RuleEngineBase.hasRole +FNDA:94,RuleEngineBase.hasRole +DA:177,279 +BRDA:177,3,0,158 +BRDA:177,3,1,121 +DA:178,158 +DA:180,121 +FNF:10 +FNH:10 +LF:40 +LH:40 +BRF:5 +BRH:5 +end_of_record +TN: +SF:src/modules/ERC3643ComplianceModule.sol +DA:26,3 +FN:26,ERC3643ComplianceModule.onlyBoundToken +FNDA:3,ERC3643ComplianceModule.onlyBoundToken +DA:27,3 +BRDA:27,0,0,1 +DA:28,1 +DA:39,8 +FN:39,ERC3643ComplianceModule.bindToken +FNDA:8,ERC3643ComplianceModule.bindToken +DA:40,8 +DA:44,3 +FN:44,ERC3643ComplianceModule.unbindToken +FNDA:3,ERC3643ComplianceModule.unbindToken +DA:45,3 +DA:49,6 +FN:49,ERC3643ComplianceModule.isTokenBound +FNDA:6,ERC3643ComplianceModule.isTokenBound +DA:50,6 +DA:54,2 +FN:54,ERC3643ComplianceModule.getTokenBound +FNDA:2,ERC3643ComplianceModule.getTokenBound +DA:55,2 +BRDA:55,1,0,1 +BRDA:55,1,1,1 +DA:56,1 +DA:58,1 +DA:63,2 +FN:63,ERC3643ComplianceModule.getTokenBounds +FNDA:2,ERC3643ComplianceModule.getTokenBounds +DA:64,2 DA:73,3 -DA:75,23 -FN:75,ERC3643Compliance._bindToken -FNDA:23,ERC3643Compliance._bindToken -DA:76,23 -BRDA:76,3,0,- -BRDA:76,3,1,23 -DA:77,23 -BRDA:77,4,0,- -BRDA:77,4,1,23 -DA:78,23 +FN:73,ERC3643ComplianceModule._unbindToken +FNDA:3,ERC3643ComplianceModule._unbindToken +DA:74,3 +BRDA:74,2,0,- +BRDA:74,2,1,3 +DA:75,3 +DA:77,3 +DA:79,23 +FN:79,ERC3643ComplianceModule._bindToken +FNDA:23,ERC3643ComplianceModule._bindToken DA:80,23 +BRDA:80,3,0,- +BRDA:80,3,1,23 +DA:81,23 +BRDA:81,4,0,- +BRDA:81,4,1,23 +DA:82,23 +DA:84,23 FNF:8 FNH:8 LF:24 @@ -178,196 +162,101 @@ BRF:9 BRH:6 end_of_record TN: -SF:src/modules/RuleEngineOperation.sol -DA:39,11 -FN:39,RuleEngineOperation.setRulesOperation -FNDA:11,RuleEngineOperation.setRulesOperation -DA:42,11 -BRDA:42,0,0,1 -DA:43,1 -DA:45,10 -BRDA:45,1,0,9 -DA:46,9 -DA:48,10 -DA:49,19 -DA:50,17 -DA:51,17 -DA:60,4 -FN:60,RuleEngineOperation.clearRulesOperation -FNDA:4,RuleEngineOperation.clearRulesOperation -DA:61,4 -DA:70,36 -FN:70,RuleEngineOperation.addRuleOperation -FNDA:36,RuleEngineOperation.addRuleOperation -DA:73,36 -DA:74,34 -DA:75,34 -DA:87,5 -FN:87,RuleEngineOperation.removeRuleOperation -FNDA:5,RuleEngineOperation.removeRuleOperation -DA:90,5 -BRDA:90,2,0,1 -BRDA:90,2,1,4 -DA:91,4 -DA:98,45 -FN:98,RuleEngineOperation.rulesCountOperation -FNDA:45,RuleEngineOperation.rulesCountOperation -DA:99,82 -DA:102,0 -FN:102,RuleEngineOperation.rulesOperationIsPresent -FNDA:0,RuleEngineOperation.rulesOperationIsPresent -DA:103,5 -DA:112,1 -FN:112,RuleEngineOperation.ruleOperation -FNDA:1,RuleEngineOperation.ruleOperation -DA:115,32 -DA:122,5 -FN:122,RuleEngineOperation.rulesOperation -FNDA:5,RuleEngineOperation.rulesOperation -DA:129,5 -DA:139,13 -FN:139,RuleEngineOperation._clearRulesOperation -FNDA:13,RuleEngineOperation._clearRulesOperation -DA:142,13 -DA:143,13 -DA:153,8 -FN:153,RuleEngineOperation._transferred -FNDA:8,RuleEngineOperation._transferred -DA:158,8 -DA:159,8 -DA:160,3 -DA:177,4 -FN:177,RuleEngineOperation._removeRuleOperation -FNDA:4,RuleEngineOperation._removeRuleOperation -DA:178,4 -DA:179,4 -DA:182,55 -FN:182,RuleEngineOperation._checkRule -FNDA:55,RuleEngineOperation._checkRule -DA:183,55 -BRDA:183,3,0,2 -DA:184,2 -DA:186,53 -BRDA:186,4,0,2 +SF:src/modules/RulesManagementModule.sol +DA:36,34 +FN:36,RulesManagementModule.setRules +FNDA:34,RulesManagementModule.setRules +DA:39,33 +BRDA:39,0,0,2 +DA:40,2 +DA:42,31 +BRDA:42,1,0,29 +DA:43,29 +DA:45,31 +DA:46,49 +DA:47,45 +DA:48,45 +DA:56,10 +FN:56,RulesManagementModule.clearRules +FNDA:10,RulesManagementModule.clearRules +DA:57,9 +DA:63,95 +FN:63,RulesManagementModule.addRule +FNDA:95,RulesManagementModule.addRule +DA:66,94 +DA:67,90 +DA:68,90 +DA:74,11 +FN:74,RulesManagementModule.removeRule +FNDA:11,RulesManagementModule.removeRule +DA:77,10 +BRDA:77,2,0,2 +BRDA:77,2,1,8 +DA:78,8 +DA:86,115 +FN:86,RulesManagementModule.rulesCount +FNDA:115,RulesManagementModule.rulesCount +DA:87,193 +DA:93,35 +FN:93,RulesManagementModule.containsRule +FNDA:35,RulesManagementModule.containsRule +DA:94,35 +DA:101,2 +FN:101,RulesManagementModule.rule +FNDA:2,RulesManagementModule.rule +DA:104,85 +DA:110,10 +FN:110,RulesManagementModule.rules +FNDA:10,RulesManagementModule.rules +DA:117,10 +DA:127,38 +FN:127,RulesManagementModule._clearRules +FNDA:38,RulesManagementModule._clearRules +DA:128,38 +DA:129,38 +DA:139,8 +FN:139,RulesManagementModule._removeRule +FNDA:8,RulesManagementModule._removeRule +DA:140,8 +DA:141,8 +DA:147,143 +FN:147,RulesManagementModule._checkRule +FNDA:143,RulesManagementModule._checkRule +DA:148,143 +BRDA:148,3,0,4 +DA:149,4 +DA:151,139 +BRDA:151,4,0,4 +DA:152,4 +DA:165,10 +FN:165,RulesManagementModule._transferred +FNDA:10,RulesManagementModule._transferred +DA:170,10 +DA:171,10 +DA:172,7 DA:187,2 -FNF:12 -FNH:11 -LF:41 -LH:40 +FN:187,RulesManagementModule._transferred +FNDA:2,RulesManagementModule._transferred +DA:193,2 +DA:194,2 +DA:195,2 +FNF:13 +FNH:13 +LF:45 +LH:45 BRF:6 BRH:6 end_of_record TN: -SF:src/modules/RuleEngineValidation.sol -DA:34,23 -FN:34,RuleEngineValidation.setRulesValidation -FNDA:23,RuleEngineValidation.setRulesValidation -DA:37,22 -BRDA:37,0,0,1 -DA:38,1 -DA:40,21 -DA:41,21 -BRDA:41,1,0,20 -DA:42,20 -DA:44,21 -DA:45,30 -DA:46,28 -DA:47,28 -DA:56,6 -FN:56,RuleEngineValidation.clearRulesValidation -FNDA:6,RuleEngineValidation.clearRulesValidation -DA:57,5 -DA:65,59 -FN:65,RuleEngineValidation.addRuleValidation -FNDA:59,RuleEngineValidation.addRuleValidation -DA:68,58 -DA:69,56 -DA:70,56 -DA:82,6 -FN:82,RuleEngineValidation.removeRuleValidation -FNDA:6,RuleEngineValidation.removeRuleValidation -DA:85,5 -BRDA:85,2,0,1 -BRDA:85,2,1,4 -DA:86,4 -DA:95,0 -FN:95,RuleEngineValidation.rulesValidationIsPresent -FNDA:0,RuleEngineValidation.rulesValidationIsPresent -DA:96,5 -DA:103,70 -FN:103,RuleEngineValidation.rulesCountValidation -FNDA:70,RuleEngineValidation.rulesCountValidation -DA:104,156 -DA:112,1 -FN:112,RuleEngineValidation.ruleValidation -FNDA:1,RuleEngineValidation.ruleValidation -DA:115,55 -DA:123,5 -FN:123,RuleEngineValidation.rulesValidation -FNDA:5,RuleEngineValidation.rulesValidation -DA:130,5 -DA:140,25 -FN:140,RuleEngineValidation._clearRulesValidation -FNDA:25,RuleEngineValidation._clearRulesValidation -DA:141,25 -DA:143,25 -DA:155,4 -FN:155,RuleEngineValidation._removeRuleValidation -FNDA:4,RuleEngineValidation._removeRuleValidation -DA:156,4 -DA:157,4 -DA:160,88 -FN:160,RuleEngineValidation._checkRuleValidation -FNDA:88,RuleEngineValidation._checkRuleValidation -DA:161,88 -BRDA:161,3,0,2 -DA:162,2 -DA:164,86 -BRDA:164,4,0,2 -DA:165,2 -FNF:11 -FNH:10 -LF:38 -LH:37 -BRF:6 -BRH:6 -end_of_record -TN: -SF:src/modules/RuleEngineValidationRead.sol -DA:31,5 -FN:31,RuleEngineValidationRead.detectTransferRestrictionValidation -FNDA:5,RuleEngineValidationRead.detectTransferRestrictionValidation -DA:37,47 -DA:38,47 -DA:39,26 -DA:41,26 -BRDA:41,0,0,19 -DA:42,19 -DA:46,28 -DA:49,1 -FN:49,RuleEngineValidationRead.detectTransferRestrictionValidationFrom -FNDA:1,RuleEngineValidationRead.detectTransferRestrictionValidationFrom -DA:55,26 -DA:56,26 -DA:57,13 -DA:59,13 -BRDA:59,1,0,13 -DA:60,13 -DA:63,13 -DA:73,2 -FN:73,RuleEngineValidationRead.canTransferValidation -FNDA:2,RuleEngineValidationRead.canTransferValidation -DA:78,12 -DA:79,12 -DA:90,1 -FN:90,RuleEngineValidationRead.canTransferValidationFrom -FNDA:1,RuleEngineValidationRead.canTransferValidationFrom -DA:96,3 -DA:97,3 -FNF:4 -FNH:4 -LF:20 -LH:20 -BRF:2 -BRH:2 +SF:src/modules/VersionModule.sol +DA:21,1 +FN:21,VersionModule.version +FNDA:1,VersionModule.version +DA:22,1 +FNF:1 +FNH:1 +LF:2 +LH:2 +BRF:0 +BRH:0 end_of_record diff --git a/lib/CMTAT b/lib/CMTAT index 04dad82..305351b 160000 --- a/lib/CMTAT +++ b/lib/CMTAT @@ -1 +1 @@ -Subproject commit 04dad821f2adc29e323d89820046a39cf76fad1b +Subproject commit 305351bb1cff10cd87ff4bda6e263628c34b9543 diff --git a/lib/forge-std b/lib/forge-std index 1eea5ba..8bbcf6e 160000 --- a/lib/forge-std +++ b/lib/forge-std @@ -1 +1 @@ -Subproject commit 1eea5bae12ae557d589f9f0f0edae2faa47cb262 +Subproject commit 8bbcf6e3f8f62f419e5429a0bd89331c85c37824 diff --git a/lib/openzeppelin-contracts b/lib/openzeppelin-contracts index e4f7021..c64a1ed 160000 --- a/lib/openzeppelin-contracts +++ b/lib/openzeppelin-contracts @@ -1 +1 @@ -Subproject commit e4f70216d759d8e6a64144a9e1f7bbeed78e7079 +Subproject commit c64a1edb67b6e3f4a15cca8909c9482ad33a02b0 diff --git a/script/CMTATWithRuleEngineScript.s.sol b/script/CMTATWithRuleEngineScript.s.sol index bdeb9c0..295cfaf 100644 --- a/script/CMTATWithRuleEngineScript.s.sol +++ b/script/CMTATWithRuleEngineScript.s.sol @@ -1,5 +1,6 @@ -// SPDX-License-Identifier: UNLICENSED +// SPDX-License-Identifier: MPL-2.0 + // Documentation : // https://book.getfoundry.sh/tutorials/solidity-scripting pragma solidity ^0.8.17; @@ -36,7 +37,7 @@ contract CMTATWithRuleEngineScript is Script, HelperContract { address(CMTAT_CONTRACT) ); console.log("RuleEngine : ", address(RULE_ENGINE)); - RULE_ENGINE.addRuleValidation(ruleWhitelist); + RULE_ENGINE.addRule(ruleWhitelist); CMTAT_CONTRACT.setRuleEngine(RULE_ENGINE); vm.stopBroadcast(); diff --git a/script/RuleEngineScript.s.sol b/script/RuleEngineScript.s.sol index 2887f64..ba1d4de 100644 --- a/script/RuleEngineScript.s.sol +++ b/script/RuleEngineScript.s.sol @@ -1,11 +1,10 @@ +// SPDX-License-Identifier: MPL-2.0 -// SPDX-License-Identifier: UNLICENSED // Documentation : // https://book.getfoundry.sh/tutorials/solidity-scripting pragma solidity ^0.8.17; import "forge-std/Script.sol"; -//import "CMTAT/CMTAT_STANDALONE.sol"; import {RuleEngine} from "src/RuleEngine.sol"; import {RuleWhitelist} from "src/mocks/rules/validation/RuleWhitelist.sol"; import {ValidationModuleRuleEngine} from "CMTAT/modules/wrapper/extensions/ValidationModule/ValidationModuleRuleEngine.sol"; @@ -26,7 +25,7 @@ contract RuleEngineScript is Script { // ruleEngine RuleEngine RULE_ENGINE = new RuleEngine(ADMIN, address(0), address(0)); console.log("RuleEngine: ", address(RULE_ENGINE)); - RULE_ENGINE.addRuleValidation(ruleWhitelist); + RULE_ENGINE.addRule(ruleWhitelist); // Configure the new ruleEngine for CMTAT (bool success, ) = address(CMTAT_Address).call( abi.encodeCall(ValidationModuleRuleEngine.setRuleEngine, RULE_ENGINE) diff --git a/src/RuleEngineBase.sol b/src/RuleEngineBase.sol index e2bcd10..4a45fb6 100644 --- a/src/RuleEngineBase.sol +++ b/src/RuleEngineBase.sol @@ -4,63 +4,62 @@ pragma solidity ^0.8.20; /* ==== OpenZeppelin === */ import {AccessControl} from "OZ/access/AccessControl.sol"; -import {Context} from "OZ/utils/Context.sol"; /* ==== CMTAT === */ import {IRuleEngine}from "CMTAT/interfaces/engine/IRuleEngine.sol"; +import {IERC1404, IERC1404Extend} from "CMTAT/interfaces/tokenization/draft-IERC1404.sol"; +import {IERC3643ComplianceRead, IERC3643IComplianceContract} from "CMTAT/interfaces/tokenization/IERC3643Partial.sol"; +import {IERC7551Compliance} from "CMTAT/interfaces/tokenization/draft-IERC7551.sol"; + /* ==== Modules === */ -import {ERC3643Compliance, IERC3643Compliance} from "./modules/ERC3643Compliance.sol"; -import {RuleEngineBaseModule} from "./modules/RuleEngineBaseModule.sol"; -import {RuleEngineOperation} from "./modules/RuleEngineOperation.sol"; -import {RuleEngineValidationRead, RuleEngineValidation} from "./modules/RuleEngineValidationRead.sol"; +import {ERC3643ComplianceModule, IERC3643Compliance} from "./modules/ERC3643ComplianceModule.sol"; +import {VersionModule} from "./modules/VersionModule.sol"; +import {RulesManagementModule} from "./modules/RulesManagementModule.sol"; /* ==== Interface and other library === */ -import {IRuleValidation} from "./interfaces/IRuleValidation.sol"; +import {IRule} from "./interfaces/IRule.sol"; import {RuleEngineInvariantStorage} from "./modules/library/RuleEngineInvariantStorage.sol"; /** * @title Implementation of a ruleEngine as defined by the CMTAT */ abstract contract RuleEngineBase is - RuleEngineBaseModule, - RuleEngineOperation, - RuleEngineValidationRead, - ERC3643Compliance, + VersionModule, + RulesManagementModule, + ERC3643ComplianceModule, RuleEngineInvariantStorage, IRuleEngine { /* ============ State functions ============ */ /* - * @notice function protected by access control + * @inheritdoc IRuleEngine */ function transferred( address spender, address from, address to, uint256 value - ) public virtual override onlyBoundToken { - // Validate transfer - require(RuleEngineValidationRead.canTransferValidationFrom(spender, from, to, value), RuleEngine_InvalidTransfer(from, to, value)); - - // Apply operation on RuleEngine - RuleEngineOperation._transferred(from, to, value); + ) public virtual override(IRuleEngine) onlyBoundToken { + // Apply on RuleEngine + RulesManagementModule._transferred(spender, from, to, value); } + /** - * @dev ERC-3643 function transferred + * @inheritdoc IERC3643IComplianceContract */ function transferred( address from, address to, uint256 value - ) public virtual override onlyBoundToken { + ) public virtual override(IERC3643IComplianceContract) onlyBoundToken { _transferred(from, to, value); } /// @inheritdoc IERC3643Compliance - function created(address to, uint256 value) public virtual override onlyBoundToken{ + function created(address to, uint256 value) public virtual override(IERC3643Compliance) onlyBoundToken{ _transferred(address(0), to, value); } /// @inheritdoc IERC3643Compliance - function destroyed(address from, uint256 value) public virtual override onlyBoundToken { + function destroyed(address from, uint256 value) public virtual override(IERC3643Compliance) onlyBoundToken { _transferred(from, address(0), value); } @@ -72,56 +71,36 @@ abstract contract RuleEngineBase is * @param from the origin address * @param to the destination address * @param value to transfer - * @return The restricion code or REJECTED_CODE_BASE.TRANSFER_OK + * @return The restricion code or REJECTED_CODE_BASE.TRANSFER_OK (0) if the transfer is valid **/ function detectTransferRestriction( address from, address to, uint256 value ) public view virtual override returns (uint8) { - // Validation - uint8 code = RuleEngineValidationRead.detectTransferRestrictionValidation( - from, - to, - value - ); - if (code != uint8(REJECTED_CODE_BASE.TRANSFER_OK)) { - return code; - } - - // Operation - uint256 rulesLength = rulesCountOperation(); + uint256 rulesLength = rulesCount(); for (uint256 i = 0; i < rulesLength; ++i) { - uint8 restriction = IRuleValidation(ruleOperation(i)) + uint8 restriction = IRule(rule(i)) .detectTransferRestriction(from, to, value); if (restriction > 0) { return restriction; } } - return uint8(REJECTED_CODE_BASE.TRANSFER_OK); } + /** + * @inheritdoc IERC1404Extend + */ function detectTransferRestrictionFrom( address spender, address from, address to, uint256 value - ) public view virtual override returns (uint8) { - // Validation - uint8 code = RuleEngineValidationRead.detectTransferRestrictionValidationFrom(spender, - from, - to, - value - ); - if (code != uint8(REJECTED_CODE_BASE.TRANSFER_OK)) { - return code; - } - - // Operation - uint256 rulesLength = rulesCountOperation(); + ) public view virtual override(IERC1404Extend) returns (uint8) { + uint256 rulesLength = rulesCount(); for (uint256 i = 0; i < rulesLength; ++i) { - uint8 restriction = IRuleValidation(ruleOperation(i)) + uint8 restriction = IRule(rule(i)) .detectTransferRestrictionFrom(spender,from, to, value); if (restriction > 0) { return restriction; @@ -132,110 +111,66 @@ abstract contract RuleEngineBase is } /** - * @notice Validate a transfer - * @param from the origin address - * @param to the destination address - * @param value to transfer - * @return True if the transfer is valid, false otherwise - **/ + * @inheritdoc IERC1404 + */ + function messageForTransferRestriction( + uint8 restrictionCode + ) public virtual view override(IERC1404) returns (string memory) { + // + uint256 rulesLength = rulesCount(); + for (uint256 i = 0; i < rulesLength; ++i) { + if ( + IRule(rule(i)) + .canReturnTransferRestrictionCode(restrictionCode) + ) { + return + IRule(rule(i)) + .messageForTransferRestriction(restrictionCode); + } + } + return "Unknown restriction code"; + } + + /** + * @inheritdoc IERC3643ComplianceRead + */ function canTransfer( address from, address to, uint256 value - ) public virtual view override returns (bool) { + ) public virtual view override(IERC3643ComplianceRead) returns (bool) { return detectTransferRestriction(from, to, value) == uint8(REJECTED_CODE_BASE.TRANSFER_OK); } /** - * @notice Validate a transfer - * @param from the origin address - * @param to the destination address - * @param value to transfer - * @return True if the transfer is valid, false otherwise - **/ + * @inheritdoc IERC7551Compliance + */ function canTransferFrom( address spender, address from, address to, uint256 value - ) public virtual view override returns (bool) { + ) public virtual view override(IERC7551Compliance) returns (bool) { return detectTransferRestrictionFrom(spender, from, to, value) == uint8(REJECTED_CODE_BASE.TRANSFER_OK); } - /** - * @notice Return the message corresponding to the code - * @param restrictionCode The target restriction code - * @return True if the transfer is valid, false otherwise - **/ - function messageForTransferRestriction( - uint8 restrictionCode - ) public virtual view override returns (string memory) { - // Validation - uint256 rulesLength = rulesCountValidation(); - for (uint256 i = 0; i < rulesLength; ++i) { - if ( - IRuleValidation(ruleValidation(i)) - .canReturnTransferRestrictionCode(restrictionCode) - ) { - return - IRuleValidation(ruleValidation(i)) - .messageForTransferRestriction(restrictionCode); - } - } - // operation - rulesLength = rulesCountOperation(); - for (uint256 i = 0; i < rulesLength; ++i) { - if ( - IRuleValidation(ruleOperation(i)) - .canReturnTransferRestrictionCode(restrictionCode) - ) { - return - IRuleValidation(ruleOperation(i)) - .messageForTransferRestriction(restrictionCode); - } - } - return "Unknown restriction code"; - } - /* ============ ACCESS CONTROL ============ */ /** - * @dev Returns `true` if `account` has been granted `role`. + * @notice Returns `true` if `account` has been granted `role`. + * @dev The Default Admin has all roles */ function hasRole( bytes32 role, address account ) public view virtual override(AccessControl) returns (bool) { - // The Default Admin has all roles if (AccessControl.hasRole(DEFAULT_ADMIN_ROLE, account)) { return true; } else { return AccessControl.hasRole(role, account); } } - - /*////////////////////////////////////////////////////////////// - INTERNAL FUNCTIONS - //////////////////////////////////////////////////////////////*/ - - /** - * @notice Go through all the rule to know if a restriction exists on the transfer - * @param from the origin address - * @param to the destination address - * @param value to transfer - **/ - function _transferred( - address from, - address to, - uint256 value - ) internal virtual override(RuleEngineOperation){ - // Validate transfer - require(RuleEngineValidationRead.canTransferValidation(from, to, value),RuleEngine_InvalidTransfer(from, to, value)); - - // Apply operation on RuleEngine - RuleEngineOperation._transferred(from, to, value); - } } diff --git a/src/interfaces/IERC3643Compliance.sol b/src/interfaces/IERC3643Compliance.sol index 5d38447..09caadc 100644 --- a/src/interfaces/IERC3643Compliance.sol +++ b/src/interfaces/IERC3643Compliance.sol @@ -5,22 +5,71 @@ pragma solidity ^0.8.20; /* ==== CMTAT === */ import {IERC3643ComplianceRead, IERC3643IComplianceContract} from "CMTAT/interfaces/tokenization/IERC3643Partial.sol"; interface IERC3643Compliance is IERC3643ComplianceRead, IERC3643IComplianceContract { - - // events + /* ============ Events ============ */ + /** + * @notice Emitted when a token is successfully bound to the compliance contract. + * @param token The address of the token that was bound. + */ event TokenBound(address token); + + /** + * @notice Emitted when a token is successfully unbound from the compliance contract. + * @param token The address of the token that was unbound. + */ event TokenUnbound(address token); - // functions - // initialization of the compliance contract + /* ============ Functions ============ */ + /** + * @notice Associates a token contract with this compliance contract. + * @dev The compliance contract may restrict operations on the bound token + * according to the compliance logic. + * Reverts if the token is already bound. + * @param token The address of the token to bind. + */ function bindToken(address token) external; + /** + * @notice Removes the association of a token contract from this compliance contract. + * @dev Reverts if the token is not currently bound. + * @param token The address of the token to unbind. + */ function unbindToken(address token) external; - // check the parameters of the compliance contract - function isTokenBound(address token) external view returns (bool); - function getTokenBound() external view returns (address); - function getTokenBounds() external view returns (address[] memory); + /** + * @notice Checks whether a token is currently bound to this compliance contract. + * @param token The token address to verify. + * @return isBound True if the token is bound, false otherwise. + */ + function isTokenBound(address token) external view returns (bool isBound); + /** + * @notice Returns the single token currently bound to this compliance contract. + * @dev If multiple tokens are supported, consider using getTokenBounds(). + * @return token The address of the currently bound token. + */ + function getTokenBound() external view returns (address token); + + /** + * @notice Returns all tokens currently bound to this compliance contract. + * @dev This is a view-only function and does not modify state. + * This function is not part of the original ERC-3643 specification + * @return tokens An array of addresses of bound token contracts. + */ + function getTokenBounds() external view returns (address[] memory tokens); + + /** + * @notice Updates the compliance contract state when tokens are created (minted). + * @dev Called by the token contract when new tokens are issued to an account. + * Reverts if the minting does not comply with the rules. + * @param to The address receiving the minted tokens. + * @param value The number of tokens created. + */ + function created(address to, uint256 value) external; - // compliance check and state update - function created(address to, uint256 value)external; + /** + * @notice Updates the compliance contract state when tokens are destroyed (burned). + * @dev Called by the token contract when tokens are redeemed or burned. + * Reverts if the burning does not comply with the rules. + * @param from The address whose tokens are being destroyed. + * @param value The number of tokens destroyed. + */ function destroyed(address from, uint256 value) external; } \ No newline at end of file diff --git a/src/interfaces/IRule.sol b/src/interfaces/IRule.sol new file mode 100644 index 0000000..b0b5dbd --- /dev/null +++ b/src/interfaces/IRule.sol @@ -0,0 +1,16 @@ +//SPDX-License-Identifier: MPL-2.0 + +pragma solidity ^0.8.20; + +/* ==== CMTAT === */ +import {IRuleEngine} from "CMTAT/interfaces/engine/IRuleEngine.sol"; +/* ==== Interfaces === */ + +interface IRule is IRuleEngine { + /** + * @dev Returns true if the restriction code exists, and false otherwise. + */ + function canReturnTransferRestrictionCode( + uint8 restrictionCode + ) external view returns (bool); +} diff --git a/src/interfaces/IRuleEngineOperation.sol b/src/interfaces/IRuleEngineOperation.sol deleted file mode 100644 index 8ce9bbb..0000000 --- a/src/interfaces/IRuleEngineOperation.sol +++ /dev/null @@ -1,74 +0,0 @@ -//SPDX-License-Identifier: MPL-2.0 - -pragma solidity ^0.8.20; - -/* ==== Interfaces === */ -import {IRuleOperation} from "./IRuleOperation.sol"; -interface IRuleEngineOperation { - /** - * @notice Defines the operation rules for the rule engine. - * @dev Sets the list of rule contract addresses for operations. - * Any previously set rules will be completely overwritten by the new list. - * Rules should be deployed contracts that implement the expected interface. - * @param rules_ The array of addresses representing the new rules to be set. - * @dev Revert if one rule is a zero address or if the rule is already present - */ - function setRulesOperation(IRuleOperation[] calldata rules_) external; - - /** - * @notice Returns the number of rules currently set for operations. - * @dev The count corresponds to the total number of elements in the rules array. - * @return The number of operation rules. - */ - function rulesCountOperation() external view returns (uint256); - - /** - * @notice Retrieves the rule address at a specific index. - * @dev The index corresponds to the position in the rules array. - * Reverts if `ruleId` is out of bounds. - * @param ruleId The index of the rule to retrieve. - * @return The address of the rule contract. - */ - function ruleOperation(uint256 ruleId) external view returns (address); - - /** - * @notice Returns the full list of operation rules. - * @dev This is a view-only function that returns all the currently stored rule addresses. - * @return An array containing all the rule contract addresses. - */ - function rulesOperation() external view returns (address[] memory); - - - /** - * @notice Clear all the rules of the array of rules - * - */ - function clearRulesOperation() external; - - /** - * @notice Add a rule to the array of rules - * Revert if one rule is a zero address or if the rule is already present - * - */ - function addRuleOperation( - IRuleOperation rule_ - ) external; - - - /** - * @notice Remove a rule from the array of rules - * Revert if the rule found at the specified index does not match the rule in argument - * @param rule_ address of the target rule - * - * - */ - function removeRuleOperation( - IRuleOperation rule_ - ) external; - - /** - * @notice Check if a rule is present - * - */ - function ruleOperationIsPresent(IRuleOperation rule_) external returns (bool); -} diff --git a/src/interfaces/IRuleEngineValidation.sol b/src/interfaces/IRuleEngineValidation.sol deleted file mode 100644 index 8f5384a..0000000 --- a/src/interfaces/IRuleEngineValidation.sol +++ /dev/null @@ -1,96 +0,0 @@ -//SPDX-License-Identifier: MPL-2.0 - -pragma solidity ^0.8.20; - -/* ==== Interfaces === */ -import {IRuleValidation} from "./IRuleValidation.sol"; -interface IRuleEngineValidationRead { - /** - * @dev See ERC-1404 - * - */ - function detectTransferRestrictionValidation( - address from, - address to, - uint256 value - ) external view returns (uint8); - - function detectTransferRestrictionValidationFrom( - address spender, - address from, - address to, - uint256 value - ) external view returns (uint8); - - /** - * @dev Returns true if the transfer is valid, and false otherwise. - */ - function canTransferValidationFrom( - address spender, - address from, - address to, - uint256 value - ) external view returns (bool isValid); -} - -interface IRuleEngineValidation { - /** - * @notice Set all the rules, will overwrite all the previous rules. \n - * Revert if one rule is a zero address or if the rule is already present - * @dev take address[] instead of IRuleEngineValidation[] since it is not possible to cast IRuleEngineValidation[] -> address[] - * - */ - function setRulesValidation(IRuleValidation[] calldata rules_) external; - - /** - * @return The number of rules inside the array - */ - function rulesCountValidation() external view returns (uint256); - - /** - * @notice Get the rule at the position specified by ruleId - * @param ruleId index of the rule - * @return a rule address - */ - function ruleValidation(uint256 ruleId) external view returns (address); - - /** - * @notice Get all the rules - * @return An array of rules - */ - function rulesValidation() external view returns (address[] memory); - - /** - * @notice Remove a rule from the array of rules - * Revert if the rule found at the specified index does not match the rule in argument - * @param rule_ address of the target rule - * @dev To reduce the array size, the last rule is moved to the location occupied - * by the rule to remove - * - * - */ - function removeRuleValidation( - IRuleValidation rule_ - ) external; - - /** - * @notice Clear all the rules of the array of rules - * - */ - function clearRulesValidation() external; - - /** - * @notice Add a rule to the array of rules - * @dev Revert if one rule is a zero address or if the rule is already present - * - */ - function addRuleValidation( - IRuleValidation rule_ - ) external; - - /** - * @notice Check if a rule is present - * - */ - function ruleValidationIsPresent(IRuleValidation rule_) external returns (bool); -} diff --git a/src/interfaces/IRuleOperation.sol b/src/interfaces/IRuleOperation.sol deleted file mode 100644 index c5cf861..0000000 --- a/src/interfaces/IRuleOperation.sol +++ /dev/null @@ -1,10 +0,0 @@ -//SPDX-License-Identifier: MPL-2.0 - -pragma solidity ^0.8.20; - -/* ==== CMTAT === */ -import {IERC3643IComplianceContract} from "CMTAT/interfaces/tokenization/IERC3643Partial.sol"; -/* ==== Interfaces === */ -import {IRuleValidation} from "./IRuleValidation.sol"; -interface IRuleOperation is IERC3643IComplianceContract, IRuleValidation { -} diff --git a/src/interfaces/IRuleValidation.sol b/src/interfaces/IRuleValidation.sol deleted file mode 100644 index 4d3dcbf..0000000 --- a/src/interfaces/IRuleValidation.sol +++ /dev/null @@ -1,23 +0,0 @@ -//SPDX-License-Identifier: MPL-2.0 - -pragma solidity ^0.8.20; - -/* ==== CMTAT === */ -import {IERC1404Extend} from "CMTAT/interfaces/tokenization/draft-IERC1404.sol"; -import {IERC7551Compliance} from "CMTAT/interfaces//tokenization/draft-IERC7551.sol"; -interface IRuleValidation is IERC1404Extend, IERC7551Compliance { - /** - * @dev Returns true if the restriction code exists, and false otherwise. - */ - function canReturnTransferRestrictionCode( - uint8 restrictionCode - ) external view returns (bool); - - function detectTransferRestrictionFrom( - address spender, - address from, - address to, - uint256 value - ) external view override returns (uint8); - -} diff --git a/src/interfaces/IRulesManagementModule.sol b/src/interfaces/IRulesManagementModule.sol new file mode 100644 index 0000000..c76c1ff --- /dev/null +++ b/src/interfaces/IRulesManagementModule.sol @@ -0,0 +1,73 @@ +//SPDX-License-Identifier: MPL-2.0 + +pragma solidity ^0.8.20; + +/* ==== Interfaces === */ +import {IRule} from "./IRule.sol"; +interface IRulesManagementModule { + /** + * @notice Defines the rules for the rule engine. + * @dev Sets the list of rule contract addresses for s. + * Any previously set rules will be completely overwritten by the new list. + * Rules should be deployed contracts that implement the expected interface. + * @param rules_ The array of addresses representing the new rules to be set. + * @dev Revert if one rule is a zero address or if the rule is already present + */ + function setRules(IRule[] calldata rules_) external; + + /** + * @notice Returns the total number of currently configured rules. + * @dev Equivalent to the length of the internal rules array. + * @return numberOfrules The number of active rules. + */ + function rulesCount() external view returns (uint256 numberOfrules); + + /** + * @notice Retrieves the rule address at a specific index. + * @dev Reverts if `ruleId` is out of bounds. + * @param ruleId The index of the desired rule in the array. + * @return ruleAddress The address of the corresponding IRule contract. + */ + function rule(uint256 ruleId) external view returns (address ruleAddress); + + /** + * @notice Returns the full list of currently configured rules. + * @dev This is a view-only function that does not modify state. + * @return ruleAddresses An array of all active rule contract addresses. + */ + function rules() external view returns (address[] memory ruleAddresses); + + + /** + * @notice Removes all configured rules. + * @dev After calling this function, no rules will remain set. + */ + function clearRules() external; + + /** + * @notice Adds a new rule to the current rule set. + * @dev Reverts if the rule address is zero or already exists in the set. + * @param rule_ The IRule contract to add. + */ + function addRule( + IRule rule_ + ) external; + + + + /** + * @notice Removes a specific rule from the current rule set. + * @dev Reverts if the provided rule is not found or does not match the stored rule at its index. + * @param rule_ The IRule contract to remove. + */ + function removeRule( + IRule rule_ + ) external; + + /** + * @notice Checks whether a specific rule is currently configured. + * @param rule_ The IRule contract to check for membership. + * @return exists True if the rule is present, false otherwise. + */ + function containsRule(IRule rule_) external returns (bool exists); +} diff --git a/src/mocks/rules/operation/RuleConditionalTransferLight.sol b/src/mocks/rules/operation/RuleConditionalTransferLight.sol index 90a44a0..c1249fd 100644 --- a/src/mocks/rules/operation/RuleConditionalTransferLight.sol +++ b/src/mocks/rules/operation/RuleConditionalTransferLight.sol @@ -2,18 +2,15 @@ pragma solidity ^0.8.20; import "OZ/access/AccessControl.sol"; -import "../../../interfaces/IRuleOperation.sol"; -import "../validation/abstract/RuleValidateTransfer.sol"; import {IRuleEngine} from "CMTAT/interfaces/engine/IRuleEngine.sol"; import {RuleConditionalTransferLightInvariantStorage} from "./abstract/RuleConditionalTransferLightInvariantStorage.sol"; - +import {IRule} from "../../../interfaces/IRule.sol"; /** * @title TransferApprovalRule * @dev Requires operator approval for each ERC20 transfer. * Same transfer (from, to, value) can be approved multiple times. */ -contract RuleConditionalTransferLight is AccessControl, RuleValidateTransfer, RuleConditionalTransferLightInvariantStorage, - IRuleOperation { +contract RuleConditionalTransferLight is AccessControl, RuleConditionalTransferLightInvariantStorage, IRule { // Mapping from transfer hash to approval count mapping(bytes32 => uint256) public approvalCounts; @@ -60,6 +57,11 @@ contract RuleConditionalTransferLight is AccessControl, RuleValidateTransfer, R emit TransferExecuted(from, to, value, approvalCounts[transferHash]); } + function transferred(address /* spender */, address from, address to, uint256 value) public { + transferred(from, to, value); + } + + /** * @notice Check if the transfer is valid @@ -96,6 +98,8 @@ contract RuleConditionalTransferLight is AccessControl, RuleValidateTransfer, R return detectTransferRestriction(from,to, value ); } + + /** * @notice To know if the restriction code is valid for this rule or not. * @param restrictionCode The target restriction code @@ -122,4 +126,31 @@ contract RuleConditionalTransferLight is AccessControl, RuleValidateTransfer, R } } + /** + * @notice Validate a transfer + * @param _from the origin address + * @param _to the destination address + * @param _amount to transfer + * @return isValid => true if the transfer is valid, false otherwise + **/ + function canTransfer( + address _from, + address _to, + uint256 _amount + ) public view override returns (bool isValid) { + return + detectTransferRestriction(_from, _to, _amount) == + uint8(REJECTED_CODE_BASE.TRANSFER_OK); + } + + function canTransferFrom( + address spender, + address from, + address to, + uint256 value + ) public view virtual override returns (bool) { + return detectTransferRestrictionFrom(spender, from, to, value) == + uint8(REJECTED_CODE_BASE.TRANSFER_OK); + } + } \ No newline at end of file diff --git a/src/mocks/rules/operation/RuleOperationRevert.sol b/src/mocks/rules/operation/RuleOperationRevert.sol index 882ee4e..0b677ff 100644 --- a/src/mocks/rules/operation/RuleOperationRevert.sol +++ b/src/mocks/rules/operation/RuleOperationRevert.sol @@ -2,16 +2,14 @@ pragma solidity ^0.8.20; import "OZ/access/AccessControl.sol"; -import "../../../interfaces/IRuleOperation.sol"; -import "../validation/abstract/RuleValidateTransfer.sol"; import "../validation/abstract/RuleCommonInvariantStorage.sol"; +import {IRule} from "../../../interfaces/IRule.sol"; /** * @title TransferApprovalRule * @dev Requires operator approval for each ERC20 transfer. * Same transfer (from, to, value) can be approved multiple times. */ -contract RuleOperationRevert is AccessControl, RuleValidateTransfer, - IRuleOperation, +contract RuleOperationRevert is AccessControl, IRule, RuleCommonInvariantStorage{ error RuleConditionalTransferLight_InvalidTransfer(); @@ -25,6 +23,10 @@ contract RuleOperationRevert is AccessControl, RuleValidateTransfer, revert RuleConditionalTransferLight_InvalidTransfer(); } + function transferred(address /* spender */, address /*from*/, address /* to */, uint256 /* value */) public pure { + revert RuleConditionalTransferLight_InvalidTransfer(); + } + /** * @notice Check if the transfer is valid @@ -75,4 +77,30 @@ contract RuleOperationRevert is AccessControl, RuleValidateTransfer, return TEXT_CODE_NOT_FOUND; } + /** + * @notice Validate a transfer + * @param _from the origin address + * @param _to the destination address + * @param _amount to transfer + * @return isValid => true if the transfer is valid, false otherwise + **/ + function canTransfer( + address _from, + address _to, + uint256 _amount + ) public pure override returns (bool isValid) { + return + detectTransferRestriction(_from, _to, _amount) == + uint8(REJECTED_CODE_BASE.TRANSFER_OK); + } + + function canTransferFrom( + address spender, + address from, + address to, + uint256 value + ) public view virtual override returns (bool) { + return detectTransferRestrictionFrom(spender, from, to, value) == + uint8(REJECTED_CODE_BASE.TRANSFER_OK); + } } \ No newline at end of file diff --git a/src/mocks/rules/validation/RuleWhitelist.sol b/src/mocks/rules/validation/RuleWhitelist.sol index b1c82a4..d37564e 100644 --- a/src/mocks/rules/validation/RuleWhitelist.sol +++ b/src/mocks/rules/validation/RuleWhitelist.sol @@ -9,6 +9,7 @@ import "./abstract/RuleWhitelistCommon.sol"; * @title a whitelist manager */ contract RuleWhitelist is RuleAddressList, RuleWhitelistCommon { + error RuleWhitelist_InvalidTransfer(address from, address to, uint256 value, uint8 code); /** * @param admin Address of the contract (Access Control) * @param forwarderIrrevocable Address of the forwarder, required for the gasless support @@ -18,6 +19,33 @@ contract RuleWhitelist is RuleAddressList, RuleWhitelistCommon { address forwarderIrrevocable ) RuleAddressList(admin, forwarderIrrevocable) {} + /** + * @notice Validate a transfer + * @param _from the origin address + * @param _to the destination address + * @param _amount to transfer + * @return isValid => true if the transfer is valid, false otherwise + **/ + function canTransfer( + address _from, + address _to, + uint256 _amount + ) public view override returns (bool isValid) { + return + detectTransferRestriction(_from, _to, _amount) == + uint8(REJECTED_CODE_BASE.TRANSFER_OK); + } + + function canTransferFrom( + address spender, + address from, + address to, + uint256 value + ) public view virtual override returns (bool) { + return detectTransferRestrictionFrom(spender, from, to, value) == + uint8(REJECTED_CODE_BASE.TRANSFER_OK); + } + /** * @notice Check if an addres is in the whitelist or not * @param from the origin address @@ -50,4 +78,16 @@ contract RuleWhitelist is RuleAddressList, RuleWhitelistCommon { return detectTransferRestriction(from,to,value); } } + + function transferred(address from, address to, uint256 value) public view { + uint8 code = detectTransferRestriction(from,to,value); + require(code == uint8(REJECTED_CODE_BASE.TRANSFER_OK), RuleWhitelist_InvalidTransfer(from, to, value,code)); + } + + function transferred(address spender, address from, address to, uint256 value) public view { + uint8 code = detectTransferRestrictionFrom(spender, from,to,value); + require(code == uint8(REJECTED_CODE_BASE.TRANSFER_OK), RuleWhitelist_InvalidTransfer(from, to, value,code)); + } + + } diff --git a/src/mocks/rules/validation/abstract/RuleSanctionListInvariantStorage.sol b/src/mocks/rules/validation/abstract/RuleSanctionListInvariantStorage.sol deleted file mode 100644 index e8798c4..0000000 --- a/src/mocks/rules/validation/abstract/RuleSanctionListInvariantStorage.sol +++ /dev/null @@ -1,32 +0,0 @@ -// SPDX-License-Identifier: MPL-2.0 - -pragma solidity ^0.8.20; - -import "./RuleCommonInvariantStorage.sol"; - -abstract contract RuleSanctionlistInvariantStorage is - RuleCommonInvariantStorage -{ - /* ============ Event ============ */ - event SetSanctionListOracle(address newOracle); - /* ============ Custom errors ============ */ - error RuleSanctionList_AdminWithAddressZeroNotAllowed(); - error RuleSanctionList_AddressAlreadyWhitelisted(); - - /* ============ Role ============ */ - bytes32 public constant SANCTIONLIST_ROLE = keccak256("SANCTIONLIST_ROLE"); - - /* ============ String message ============ */ - string constant TEXT_ADDRESS_FROM_IS_SANCTIONED = - "The sender is sanctioned"; - string constant TEXT_ADDRESS_TO_IS_SANCTIONED = - "The recipient is sanctioned"; - string constant TEXT_ADDRESS_SPENDER_IS_SANCTIONED = - "The spender is sanctioned"; - - /* ============ Code ============ */ - // It is very important that each rule uses an unique code - uint8 public constant CODE_ADDRESS_FROM_IS_SANCTIONED = 31; - uint8 public constant CODE_ADDRESS_TO_IS_SANCTIONED = 32; - uint8 public constant CODE_ADDRESS_SPENDER_IS_SANCTIONED = 33; -} diff --git a/src/mocks/rules/validation/abstract/RuleValidateTransfer.sol b/src/mocks/rules/validation/abstract/RuleValidateTransfer.sol deleted file mode 100644 index 2ed061e..0000000 --- a/src/mocks/rules/validation/abstract/RuleValidateTransfer.sol +++ /dev/null @@ -1,35 +0,0 @@ -// SPDX-License-Identifier: MPL-2.0 - -pragma solidity ^0.8.20; - -import {IRuleValidation} from "../../../../interfaces/IRuleValidation.sol"; -import {IERC1404} from "CMTAT/interfaces/tokenization/draft-IERC1404.sol"; -abstract contract RuleValidateTransfer is IRuleValidation { - /** - * @notice Validate a transfer - * @param _from the origin address - * @param _to the destination address - * @param _amount to transfer - * @return isValid => true if the transfer is valid, false otherwise - **/ - function canTransfer( - address _from, - address _to, - uint256 _amount - ) public view override returns (bool isValid) { - // does not work without `this` keyword => "Undeclared identifier" - return - this.detectTransferRestriction(_from, _to, _amount) == - uint8(REJECTED_CODE_BASE.TRANSFER_OK); - } - - function canTransferFrom( - address spender, - address from, - address to, - uint256 value - ) public view virtual override returns (bool) { - return this.detectTransferRestrictionFrom(spender, from, to, value) == - uint8(REJECTED_CODE_BASE.TRANSFER_OK); - } -} diff --git a/src/mocks/rules/validation/abstract/RuleWhitelistCommon.sol b/src/mocks/rules/validation/abstract/RuleWhitelistCommon.sol index 27f9d73..8cdddc7 100644 --- a/src/mocks/rules/validation/abstract/RuleWhitelistCommon.sol +++ b/src/mocks/rules/validation/abstract/RuleWhitelistCommon.sol @@ -3,11 +3,9 @@ pragma solidity ^0.8.20; import "./RuleAddressList/invariantStorage/RuleWhitelistInvariantStorage.sol"; -import "./RuleValidateTransfer.sol"; - +import {IRule} from "../../../../interfaces/IRule.sol"; abstract contract RuleWhitelistCommon is - RuleValidateTransfer, - RuleWhitelistInvariantStorage + RuleWhitelistInvariantStorage, IRule { /** * @notice To know if the restriction code is valid for this rule or not diff --git a/src/modules/ERC3643Compliance.sol b/src/modules/ERC3643ComplianceModule.sol similarity index 79% rename from src/modules/ERC3643Compliance.sol rename to src/modules/ERC3643ComplianceModule.sol index 09d6529..9ac2abd 100644 --- a/src/modules/ERC3643Compliance.sol +++ b/src/modules/ERC3643ComplianceModule.sol @@ -7,7 +7,7 @@ import {AccessControl} from "OZ/access/AccessControl.sol"; import {EnumerableSet} from "OZ/utils/structs/EnumerableSet.sol"; /* ==== Interface and other library === */ import {IERC3643Compliance} from "../interfaces/IERC3643Compliance.sol"; -abstract contract ERC3643Compliance is IERC3643Compliance, AccessControl { +abstract contract ERC3643ComplianceModule is IERC3643Compliance, AccessControl { /* ==== Type declaration === */ using EnumerableSet for EnumerableSet.AddressSet; /* ==== State Variables === */ @@ -17,11 +17,11 @@ abstract contract ERC3643Compliance is IERC3643Compliance, AccessControl { bytes32 public constant COMPLIANCE_MANAGER_ROLE = keccak256("COMPLIANCE_MANAGER_ROLE"); /* ==== Errors === */ - error RuleEngine_ERC3643Compliance_NotComplianceManager(); error RuleEngine_ERC3643Compliance_InvalidTokenAddress(); error RuleEngine_ERC3643Compliance_TokenAlreadyBound(); error RuleEngine_ERC3643Compliance_TokenNotBound(); error RuleEngine_ERC3643Compliance_UnauthorizedCaller(); + error RuleEngine_ERC3643Compliance_OperationNotSuccessful(); /* ==== Modifier === */ modifier onlyBoundToken() { @@ -32,7 +32,7 @@ abstract contract ERC3643Compliance is IERC3643Compliance, AccessControl { } /*////////////////////////////////////////////////////////////// - PUBLIC/EXTERNAL FUNCTIONS + PUBLIC/public FUNCTIONS //////////////////////////////////////////////////////////////*/ /* ============ State functions ============ */ @@ -52,7 +52,7 @@ abstract contract ERC3643Compliance is IERC3643Compliance, AccessControl { } /// @inheritdoc IERC3643Compliance - function getTokenBound() external view override returns (address) { + function getTokenBound() public view override returns (address) { if(_boundTokens.length() > 0){ return _boundTokens.at(0); } else { @@ -61,7 +61,7 @@ abstract contract ERC3643Compliance is IERC3643Compliance, AccessControl { } /// @inheritdoc IERC3643Compliance - function getTokenBounds() external view override returns (address[] memory) { + function getTokenBounds() public view override returns (address[] memory) { return _boundTokens.values(); } @@ -73,15 +73,16 @@ abstract contract ERC3643Compliance is IERC3643Compliance, AccessControl { function _unbindToken(address token) internal { require (_boundTokens.contains(token), RuleEngine_ERC3643Compliance_TokenNotBound()); - _boundTokens.remove(token); + // Should never revert because we check if the token address is already set before + require(_boundTokens.remove(token), RuleEngine_ERC3643Compliance_OperationNotSuccessful()); emit TokenUnbound(token); } function _bindToken(address token) internal{ require(token != address(0), RuleEngine_ERC3643Compliance_InvalidTokenAddress()); require(!_boundTokens.contains(token), RuleEngine_ERC3643Compliance_TokenAlreadyBound()); - _boundTokens.add(token); - + // Should never revert because we check if the token address is already set before + require(_boundTokens.add(token), RuleEngine_ERC3643Compliance_OperationNotSuccessful()); emit TokenBound(token); } } \ No newline at end of file diff --git a/src/modules/RuleEngineOperation.sol b/src/modules/RuleEngineOperation.sol deleted file mode 100644 index 133407b..0000000 --- a/src/modules/RuleEngineOperation.sol +++ /dev/null @@ -1,188 +0,0 @@ -// SPDX-License-Identifier: MPL-2.0 - -pragma solidity ^0.8.20; - -/* ==== OpenZeppelin === */ -import {EnumerableSet} from "OZ/utils/structs/EnumerableSet.sol"; -import {AccessControl} from "OZ/access/AccessControl.sol"; -/* ==== Interface and other library === */ -import {IRuleEngineOperation} from "../interfaces/IRuleEngineOperation.sol"; -import {IRuleOperation} from "../interfaces/IRuleOperation.sol"; -import {RuleEngineInvariantStorageCommon} from "./library/RuleEngineInvariantStorageCommon.sol"; -/** - * @title RuleEngine - Operation part - */ -abstract contract RuleEngineOperation is - AccessControl, - RuleEngineInvariantStorageCommon, - IRuleEngineOperation -{ - /* ==== Type declaration === */ - using EnumerableSet for EnumerableSet.AddressSet; - - /* ==== State Variables === */ - /// @dev Array of rules - EnumerableSet.AddressSet internal _rulesOperation; - - /* ============ Events ============ */ - /// @notice Generate when a rule is added - event AddRuleOperation(IRuleOperation indexed rule); - /// @notice Generate when a rule is removed - event RemoveRuleOperation(IRuleOperation indexed rule); - /// @notice Generate when all the rules are cleared - event ClearRulesOperation(); - - - - /*////////////////////////////////////////////////////////////// - PUBLIC/EXTERNAL FUNCTIONS - //////////////////////////////////////////////////////////////*/ - - /* ============ State functions ============ */ - - /** - * @inheritdoc IRuleEngineOperation - */ - function setRulesOperation( - IRuleOperation[] calldata rules_ - ) public virtual override(IRuleEngineOperation) onlyRole(RULE_ENGINE_OPERATOR_ROLE) { - if (rules_.length == 0) { - revert RuleEngine_ArrayIsEmpty(); - } - if (_rulesOperation.length() > 0) { - _clearRulesOperation(); - } - for(uint256 i = 0; i < rules_.length; ++i){ - _checkRule(address(rules_[i])); - _rulesOperation.add(address(rules_[i])); - emit AddRuleOperation(rules_[i]); - } - - } - - /** - * @inheritdoc IRuleEngineOperation - */ - function clearRulesOperation() public virtual override(IRuleEngineOperation) onlyRole(RULE_ENGINE_OPERATOR_ROLE) { - _clearRulesOperation(); - } - - /** - * @inheritdoc IRuleEngineOperation - */ - function addRuleOperation( - IRuleOperation rule_ - ) public virtual override(IRuleEngineOperation) onlyRole(RULE_ENGINE_OPERATOR_ROLE) { - _checkRule(address(rule_)); - _rulesOperation.add(address(rule_)); - emit AddRuleOperation(rule_); - } - - /** - * @inheritdoc IRuleEngineOperation - */ - function removeRuleOperation( - IRuleOperation rule_ - ) public virtual override(IRuleEngineOperation) onlyRole(RULE_ENGINE_OPERATOR_ROLE) { - require(_rulesOperation.contains(address(rule_)), RuleEngine_RuleDoNotMatch()); - _removeRuleOperation(rule_); - } - - /* ============ View functions ============ */ - - /** - * @inheritdoc IRuleEngineOperation - */ - function rulesCountOperation() public view virtual override(IRuleEngineOperation) returns (uint256) { - return _rulesOperation.length(); - } - - /** - * @inheritdoc IRuleEngineOperation - */ - function ruleOperationIsPresent(IRuleOperation rule_) public view virtual override(IRuleEngineOperation) returns (bool){ - return _rulesOperation.contains(address(rule_)); - } - - - /** - * @inheritdoc IRuleEngineOperation - */ - function ruleOperation( - uint256 ruleId - ) public view virtual override(IRuleEngineOperation) returns (address) { - return _rulesOperation.at(ruleId); - } - - /** - * @inheritdoc IRuleEngineOperation - */ - function rulesOperation() - public - view - virtual - override(IRuleEngineOperation) - returns (address[] memory) - { - return _rulesOperation.values(); - } - - /*////////////////////////////////////////////////////////////// - INTERNAL/PRIVATE FUNCTIONS - //////////////////////////////////////////////////////////////*/ - /** - * @notice Clear all the rules of the array of rules - * - */ - function _clearRulesOperation() internal virtual { - // we remove the last element first since it is more optimized. - - emit ClearRulesOperation(); - _rulesOperation.clear(); - } - - - /** - * @notice Go through all the rule to know if a restriction exists on the transfer - * @param from the origin address - * @param to the destination address - * @param value to transfer - **/ - function _transferred( - address from, - address to, - uint256 value - ) internal virtual{ - uint256 rulesLength = _rulesOperation.length(); - for (uint256 i = 0; i < rulesLength; ++i) { - IRuleOperation(_rulesOperation.at(i)).transferred( - from, - to, - value - ); - } - } - - /** - * @notice Remove a rule from the array of rules - * Revert if the rule found at the specified index does not match the rule in argument - * @param rule_ address of the target rule - * @dev To reduce the array size, the last rule is moved to the location occupied - * by the rule to remove - * - * - */ - function _removeRuleOperation(IRuleOperation rule_) internal virtual { - _rulesOperation.remove(address(rule_)); - emit RemoveRuleOperation(rule_); - } - - function _checkRule(address rule_) internal{ - if (rule_ == address(0x0)) { - revert RuleEngine_RuleAddressZeroNotAllowed(); - } - if (_rulesOperation.contains(rule_)) { - revert RuleEngine_RuleAlreadyExists(); - } - } -} diff --git a/src/modules/RuleEngineValidation.sol b/src/modules/RuleEngineValidation.sol deleted file mode 100644 index 7956a16..0000000 --- a/src/modules/RuleEngineValidation.sol +++ /dev/null @@ -1,165 +0,0 @@ -// SPDX-License-Identifier: MPL-2.0 - -pragma solidity ^0.8.20; - -/* ==== OpenZeppelin === */ -import {AccessControl} from "OZ/access/AccessControl.sol"; -import {EnumerableSet} from "OZ/utils/structs/EnumerableSet.sol"; -/* ==== Interface and other library === */ -import {IRuleEngineValidation} from "../interfaces/IRuleEngineValidation.sol"; -import {IRuleValidation} from "../interfaces/IRuleValidation.sol"; -import {RuleEngineInvariantStorageCommon} from "./library/RuleEngineInvariantStorageCommon.sol"; - -abstract contract RuleEngineValidation is - AccessControl, - IRuleEngineValidation, - RuleEngineInvariantStorageCommon -{ - /* ==== Type declaration === */ - using EnumerableSet for EnumerableSet.AddressSet; - - /* ==== State Variables === */ - EnumerableSet.AddressSet internal _rulesValidation; - - /* ============ Events ============ */ - /// @notice Generate when a rule is added - event AddRuleValidation(IRuleValidation indexed rule); - /// @notice Generate when a rule is removed - event RemoveRuleValidation(IRuleValidation indexed rule); - /// @notice Generate when all the rules are cleared - event ClearRulesValidation(); - - /*////////////////////////////////////////////////////////////// - PUBLIC/EXTERNAL FUNCTIONS - //////////////////////////////////////////////////////////////*/ - /* ============ State functions ============ */ - - /** - * @inheritdoc IRuleEngineValidation - */ - function setRulesValidation( - IRuleValidation[] calldata rules_ - ) public virtual override(IRuleEngineValidation) onlyRole(RULE_ENGINE_OPERATOR_ROLE) { - if (rules_.length == 0) { - revert RuleEngine_ArrayIsEmpty(); - } - uint256 rulesLength = _rulesValidation.length(); - if ( rulesLength > 0) { - _clearRulesValidation(); - } - for(uint256 i = 0; i < rules_.length; ++i){ - _checkRuleValidation(address(rules_[i])); - _rulesValidation.add(address(rules_[i])); - emit AddRuleValidation(rules_[i]); - } - } - - - /** - * @inheritdoc IRuleEngineValidation - */ - function clearRulesValidation() public virtual override(IRuleEngineValidation) onlyRole(RULE_ENGINE_OPERATOR_ROLE) { - _clearRulesValidation(); - } - - - /** - * @inheritdoc IRuleEngineValidation - */ - function addRuleValidation( - IRuleValidation rule_ - ) public virtual override(IRuleEngineValidation) onlyRole(RULE_ENGINE_OPERATOR_ROLE) { - _checkRuleValidation(address(rule_)); - _rulesValidation.add(address(rule_)); - emit AddRuleValidation(rule_); - } - - - /** - * @inheritdoc IRuleEngineValidation - */ - function removeRuleValidation( - IRuleValidation rule_ - ) public virtual override(IRuleEngineValidation) onlyRole(RULE_ENGINE_OPERATOR_ROLE) { - require(_rulesValidation.contains(address(rule_)), RuleEngine_RuleDoNotMatch()); - _removeRuleValidation(rule_); - } - - /* ============ View functions ============ */ - - - /** - * @inheritdoc IRuleEngineValidation - */ - function ruleValidationIsPresent(IRuleValidation rule_) public view virtual override(IRuleEngineValidation) returns (bool){ - return _rulesValidation.contains(address(rule_)); - } - - /** - * @inheritdoc IRuleEngineValidation - */ - function rulesCountValidation() public view virtual override(IRuleEngineValidation) returns (uint256) { - return _rulesValidation.length(); - } - - - /** - * @inheritdoc IRuleEngineValidation - */ - function ruleValidation( - uint256 ruleId - ) public view virtual override(IRuleEngineValidation) returns (address) { - return _rulesValidation.at(ruleId); - } - - - /** - * @inheritdoc IRuleEngineValidation - */ - function rulesValidation() - public - view - virtual - override(IRuleEngineValidation) - returns (address[] memory) - { - return _rulesValidation.values(); - } - - /*////////////////////////////////////////////////////////////// - INTERNAL FUNCTIONS - //////////////////////////////////////////////////////////////*/ - /** - * @notice Clear all the rules of the array of rules - * - */ - function _clearRulesValidation() internal virtual { - emit ClearRulesValidation(); - // O(N) - _rulesValidation.clear(); - } - - /** - * @notice Remove a rule from the array of rules - * Revert if the rule found at the specified index does not match the rule in argument - * @param rule_ address of the target rule - * @dev To reduce the array size, the last rule is moved to the location occupied - * by the rule to remove - * - * - */ - function _removeRuleValidation(IRuleValidation rule_) internal virtual { - _rulesValidation.remove(address(rule_)); - emit RemoveRuleValidation(rule_); - } - - function _checkRuleValidation(address rule_) internal virtual{ - if (rule_ == address(0x0)) { - revert RuleEngine_RuleAddressZeroNotAllowed(); - } - if (_rulesValidation.contains(rule_)) { - revert RuleEngine_RuleAlreadyExists(); - } - } - -} diff --git a/src/modules/RuleEngineValidationRead.sol b/src/modules/RuleEngineValidationRead.sol deleted file mode 100644 index cd2d763..0000000 --- a/src/modules/RuleEngineValidationRead.sol +++ /dev/null @@ -1,105 +0,0 @@ -// SPDX-License-Identifier: MPL-2.0 - -pragma solidity ^0.8.20; - -/* ==== OpenZeppelin === */ -import "OZ/access/AccessControl.sol"; - -/* ==== Modules === */ -import {RuleEngineValidation} from "./RuleEngineValidation.sol"; - -/* ==== Interface and other library === */ -import {IRuleEngineValidationRead} from "../interfaces/IRuleEngineValidation.sol"; -import {IRuleValidation} from "../interfaces/IRuleValidation.sol"; -import {IERC1404, IERC1404Extend} from "CMTAT/interfaces/tokenization/draft-IERC1404.sol"; - -/** - * @title RuleEngine - Validation part - */ -abstract contract RuleEngineValidationRead is - AccessControl, - RuleEngineValidation, - IRuleEngineValidationRead -{ - - /*////////////////////////////////////////////////////////////// - PUBLIC/EXTERNAL FUNCTIONS - //////////////////////////////////////////////////////////////*/ - /* ============ View functions ============ */ - /** - * @notice Go through all the rule to know if a restriction exists on the transfer - * @param from the origin address - * @param to the destination address - * @param value to transfer - * @return The restricion code or REJECTED_CODE_BASE.TRANSFER_OK - **/ - function detectTransferRestrictionValidation( - address from, - address to, - uint256 value - ) public view virtual override returns (uint8) { - //uint256 rulesLength = _rulesValidation.length(); - uint256 rulesLength = rulesCountValidation(); - for (uint256 i = 0; i < rulesLength; ++i) { - uint8 restriction = IRuleValidation(ruleValidation(i)) - .detectTransferRestriction(from, to, value); - if (restriction > 0) { - return restriction; - } - } - - return uint8(IERC1404Extend.REJECTED_CODE_BASE.TRANSFER_OK); - } - - function detectTransferRestrictionValidationFrom( - address spender, - address from, - address to, - uint256 value - ) public view virtual override returns (uint8) { - uint256 rulesLength = rulesCountValidation(); - for (uint256 i = 0; i < rulesLength; ++i) { - uint8 restriction = IRuleValidation(ruleValidation(i)) - .detectTransferRestrictionFrom(spender, from, to, value); - if (restriction > 0) { - return restriction; - } - } - return uint8(IERC1404Extend.REJECTED_CODE_BASE.TRANSFER_OK); - } - - /** - * @notice Validate a transfer - * @param from the origin address - * @param to the destination address - * @param value to transfer - * @return True if the transfer is valid, false otherwise - **/ - function canTransferValidation( - address from, - address to, - uint256 value - ) public view virtual returns (bool) { - return - detectTransferRestrictionValidation(from, to, value) == - uint8(IERC1404Extend.REJECTED_CODE_BASE.TRANSFER_OK); - } - - /** - * @notice Validate a transfer - * @param from the origin address - * @param to the destination address - * @param value to transfer - * @return True if the transfer is valid, false otherwise - **/ - function canTransferValidationFrom( - address spender, - address from, - address to, - uint256 value - ) public view virtual override returns (bool) { - return - detectTransferRestrictionValidationFrom(spender, from, to, value) == - uint8(IERC1404Extend.REJECTED_CODE_BASE.TRANSFER_OK); - } -} diff --git a/src/modules/RulesManagementModule.sol b/src/modules/RulesManagementModule.sol new file mode 100644 index 0000000..53cc3b2 --- /dev/null +++ b/src/modules/RulesManagementModule.sol @@ -0,0 +1,204 @@ +// SPDX-License-Identifier: MPL-2.0 + +pragma solidity ^0.8.20; + +/* ==== OpenZeppelin === */ +import {EnumerableSet} from "OZ/utils/structs/EnumerableSet.sol"; +import {AccessControl} from "OZ/access/AccessControl.sol"; +/* ==== Interface and other library === */ +import {IRulesManagementModule} from "../interfaces/IRulesManagementModule.sol"; +import {IRule} from "../interfaces/IRule.sol"; +import {RulesManagementModuleInvariantStorage} from "./library/RulesManagementModuleInvariantStorage.sol"; +/** + * @title RuleEngine - part + */ +abstract contract RulesManagementModule is + AccessControl, + RulesManagementModuleInvariantStorage, + IRulesManagementModule +{ + /* ==== Type declaration === */ + using EnumerableSet for EnumerableSet.AddressSet; + + /* ==== State Variables === */ + /// @dev Array of rules + EnumerableSet.AddressSet internal _rules; + + /*////////////////////////////////////////////////////////////// + PUBLIC/EXTERNAL FUNCTIONS + //////////////////////////////////////////////////////////////*/ + + /* ============ State functions ============ */ + + /** + * @inheritdoc IRulesManagementModule + */ + function setRules( + IRule[] calldata rules_ + ) public virtual override(IRulesManagementModule) onlyRole(RULES_MANAGEMENT_ROLE) { + if (rules_.length == 0) { + revert RuleEngine_RulesManagementModule_ArrayIsEmpty(); + } + if (_rules.length() > 0) { + _clearRules(); + } + for(uint256 i = 0; i < rules_.length; ++i){ + _checkRule(address(rules_[i])); + // Should never revert because we check the presence of the rule before + require(_rules.add(address(rules_[i])), RuleEngine_RulesManagementModule_OperationNotSuccessful()); + emit AddRule(rules_[i]); + } + } + + /** + * @inheritdoc IRulesManagementModule + */ + function clearRules() public virtual override(IRulesManagementModule) onlyRole(RULES_MANAGEMENT_ROLE) { + _clearRules(); + } + + /** + * @inheritdoc IRulesManagementModule + */ + function addRule( + IRule rule_ + ) public virtual override(IRulesManagementModule) onlyRole(RULES_MANAGEMENT_ROLE) { + _checkRule(address(rule_)); + require(_rules.add(address(rule_)), RuleEngine_RulesManagementModule_OperationNotSuccessful()); + emit AddRule(rule_); + } + + /** + * @inheritdoc IRulesManagementModule + */ + function removeRule( + IRule rule_ + ) public virtual override(IRulesManagementModule) onlyRole(RULES_MANAGEMENT_ROLE) { + require(_rules.contains(address(rule_)), RuleEngine_RulesManagementModule_RuleDoNotMatch()); + _removeRule(rule_); + } + + /* ============ View functions ============ */ + + /** + * @inheritdoc IRulesManagementModule + */ + function rulesCount() public view virtual override(IRulesManagementModule) returns (uint256) { + return _rules.length(); + } + + /** + * @inheritdoc IRulesManagementModule + */ + function containsRule(IRule rule_) public view virtual override(IRulesManagementModule) returns (bool){ + return _rules.contains(address(rule_)); + } + + + /** + * @inheritdoc IRulesManagementModule + */ + function rule( + uint256 ruleId + ) public view virtual override(IRulesManagementModule) returns (address) { + return _rules.at(ruleId); + } + + /** + * @inheritdoc IRulesManagementModule + */ + function rules() + public + view + virtual + override(IRulesManagementModule) + returns (address[] memory) + { + return _rules.values(); + } + + /*////////////////////////////////////////////////////////////// + INTERNAL/PRIVATE FUNCTIONS + //////////////////////////////////////////////////////////////*/ + /** + * @notice Clear all the rules of the array of rules + * + */ + function _clearRules() internal virtual { + emit ClearRules(); + _rules.clear(); + } + + /** + * @notice Remove a rule from the array of rules + * Revert if the rule found at the specified index does not match the rule in argument + * @param rule_ address of the target rule + * + * + */ + function _removeRule(IRule rule_) internal virtual { + // Should never revert because we check the presence of the rule before + require(_rules.remove(address(rule_)), RuleEngine_RulesManagementModule_OperationNotSuccessful()); + emit RemoveRule(rule_); + } + + /** + * @dev check if a rule is valid, revert otherwise + */ + function _checkRule(address rule_) internal view{ + if (rule_ == address(0x0)) { + revert RuleEngine_RulesManagementModule_RuleAddressZeroNotAllowed(); + } + if (_rules.contains(rule_)) { + revert RuleEngine_RulesManagementModule_RuleAlreadyExists(); + } + } + + + /* ============ Transferred functions ============ */ + + /** + * @notice Go through all the rule to know if a restriction exists on the transfer + * @param from the origin address + * @param to the destination address + * @param value to transfer + **/ + function _transferred( + address from, + address to, + uint256 value + ) internal virtual{ + uint256 rulesLength = _rules.length(); + for (uint256 i = 0; i < rulesLength; ++i) { + IRule(_rules.at(i)).transferred( + from, + to, + value + ); + } + } + + /** + * @notice Go through all the rule to know if a restriction exists on the transfer + * @param spender the spender address (transferFrom) + * @param from the origin address + * @param to the destination address + * @param value to transfer + **/ + function _transferred( + address spender, + address from, + address to, + uint256 value + ) internal virtual{ + uint256 rulesLength = _rules.length(); + for (uint256 i = 0; i < rulesLength; ++i) { + IRule(_rules.at(i)).transferred( + spender, + from, + to, + value + ); + } + } +} diff --git a/src/modules/RuleEngineBaseModule.sol b/src/modules/VersionModule.sol similarity index 92% rename from src/modules/RuleEngineBaseModule.sol rename to src/modules/VersionModule.sol index f142fbe..c1506c1 100644 --- a/src/modules/RuleEngineBaseModule.sol +++ b/src/modules/VersionModule.sol @@ -4,7 +4,7 @@ pragma solidity ^0.8.20; /* ==== CMTAT === */ import {IERC3643Base} from "CMTAT/interfaces/tokenization/IERC3643Partial.sol"; -abstract contract RuleEngineBaseModule is IERC3643Base { +abstract contract VersionModule is IERC3643Base { /* ============ State Variables ============ */ /** * @dev diff --git a/src/modules/library/RuleEngineInvariantStorage.sol b/src/modules/library/RuleEngineInvariantStorage.sol index ca55295..9cd4ed5 100644 --- a/src/modules/library/RuleEngineInvariantStorage.sol +++ b/src/modules/library/RuleEngineInvariantStorage.sol @@ -5,5 +5,4 @@ pragma solidity ^0.8.20; abstract contract RuleEngineInvariantStorage { /* ==== Errors === */ error RuleEngine_AdminWithAddressZeroNotAllowed(); - error RuleEngine_InvalidTransfer(address from, address to, uint256 value); } diff --git a/src/modules/library/RuleEngineInvariantStorageCommon.sol b/src/modules/library/RuleEngineInvariantStorageCommon.sol deleted file mode 100644 index 545d501..0000000 --- a/src/modules/library/RuleEngineInvariantStorageCommon.sol +++ /dev/null @@ -1,16 +0,0 @@ -// SPDX-License-Identifier: MPL-2.0 - -pragma solidity ^0.8.20; - -abstract contract RuleEngineInvariantStorageCommon { - /* ==== Errors === */ - error RuleEngine_RuleAddressZeroNotAllowed(); - error RuleEngine_RuleAlreadyExists(); - error RuleEngine_RuleDoNotMatch(); - error RuleEngine_ArrayIsEmpty(); - - /* ==== Constant === */ - /// @notice Role to manage the ruleEngine - bytes32 public constant RULE_ENGINE_OPERATOR_ROLE = - keccak256("RULE_ENGINE_OPERATOR_ROLE"); -} diff --git a/src/modules/library/RulesManagementModuleInvariantStorage.sol b/src/modules/library/RulesManagementModuleInvariantStorage.sol new file mode 100644 index 0000000..e2d32bc --- /dev/null +++ b/src/modules/library/RulesManagementModuleInvariantStorage.sol @@ -0,0 +1,28 @@ +// SPDX-License-Identifier: MPL-2.0 + +pragma solidity ^0.8.20; + +import {IRule} from "../../interfaces/IRule.sol"; + +abstract contract RulesManagementModuleInvariantStorage { + /* ==== Errors === */ + error RuleEngine_RulesManagementModule_RuleAddressZeroNotAllowed(); + error RuleEngine_RulesManagementModule_RuleAlreadyExists(); + error RuleEngine_RulesManagementModule_RuleDoNotMatch(); + error RuleEngine_RulesManagementModule_ArrayIsEmpty(); + error RuleEngine_RulesManagementModule_OperationNotSuccessful(); + + + /* ============ Events ============ */ + /// @notice Generate when a rule is added + event AddRule(IRule indexed rule); + /// @notice Generate when a rule is removed + event RemoveRule(IRule indexed rule); + /// @notice Generate when all the rules are cleared + event ClearRules(); + + /* ==== Constant === */ + /// @notice Role to manage the ruleEngine + bytes32 public constant RULES_MANAGEMENT_ROLE = + keccak256("RULES_MANAGEMENT_ROLE"); +} diff --git a/test/HelperContract.sol b/test/HelperContract.sol index 6dcf1fb..7463786 100644 --- a/test/HelperContract.sol +++ b/test/HelperContract.sol @@ -6,12 +6,11 @@ import "CMTAT/deployment/CMTATStandalone.sol"; import "CMTAT/libraries/Errors.sol"; import {RuleEngineInvariantStorage} from "src/modules/library/RuleEngineInvariantStorage.sol"; -import {RuleEngineInvariantStorageCommon} from "src/modules/library/RuleEngineInvariantStorageCommon.sol"; +import {RulesManagementModuleInvariantStorage} from "src/modules/library/RulesManagementModuleInvariantStorage.sol"; // RuleEngine import {RuleEngine} from "src/RuleEngine.sol"; -import {RuleEngineValidation} from "src/RuleEngineBase.sol"; -import {RuleEngineOperation} from "src/RuleEngineBase.sol"; -import {ERC3643Compliance} from "src/RuleEngineBase.sol"; +import {RulesManagementModule} from "src/RuleEngineBase.sol"; +import {ERC3643ComplianceModule} from "src/RuleEngineBase.sol"; // RuleConditionalTransfer import {RuleConditionalTransferLight} from "src/mocks/rules/operation/RuleConditionalTransferLight.sol"; import {RuleConditionalTransferLightInvariantStorage} from "src/mocks/rules/operation/abstract/RuleConditionalTransferLightInvariantStorage.sol"; @@ -21,8 +20,8 @@ import {RuleWhitelistInvariantStorage} from "src/mocks/rules/validation/abstract import {RuleAddressListInvariantStorage} from "src/mocks/rules/validation/abstract/RuleAddressList/invariantStorage/RuleAddressListInvariantStorage.sol"; // Rule interface -import {IRuleValidation} from "src/interfaces/IRuleValidation.sol"; -import {IRuleOperation} from "src/interfaces/IRuleOperation.sol"; + +import {IRule} from "src/interfaces/IRule.sol"; // utils import "./utils/CMTATDeployment.sol"; @@ -35,7 +34,7 @@ abstract contract HelperContract is RuleAddressListInvariantStorage, RuleEngineInvariantStorage, RuleConditionalTransferLightInvariantStorage, - RuleEngineInvariantStorageCommon + RulesManagementModuleInvariantStorage { // Test result uint256 internal resUint256; diff --git a/test/RuleEngine/AccessControl/RuleEngineAccessControl.sol b/test/RuleEngine/AccessControl/RuleEngineAccessControl.sol index 2e554f3..214696f 100644 --- a/test/RuleEngine/AccessControl/RuleEngineAccessControl.sol +++ b/test/RuleEngine/AccessControl/RuleEngineAccessControl.sol @@ -24,16 +24,16 @@ contract RuleEngineAccessControlTest is Test, HelperContract { ZERO_ADDRESS, ZERO_ADDRESS ); - resUint256 = ruleEngineMock.rulesCountValidation(); + resUint256 = ruleEngineMock.rulesCount(); vm.prank(RULE_ENGINE_OPERATOR_ADDRESS); - ruleEngineMock.addRuleValidation(ruleWhitelist); + ruleEngineMock.addRule(ruleWhitelist); // Arrange - Assert - resUint256 = ruleEngineMock.rulesCountValidation(); + resUint256 = ruleEngineMock.rulesCount(); assertEq(resUint256, 1); } - function testCannotAttackerSetRulesValidation() public { + function testCannotAttackerSetRules() public { // Arrange vm.prank(WHITELIST_OPERATOR_ADDRESS); RuleWhitelist ruleWhitelist1 = new RuleWhitelist( @@ -45,7 +45,7 @@ contract RuleEngineAccessControlTest is Test, HelperContract { WHITELIST_OPERATOR_ADDRESS, ZERO_ADDRESS ); - IRuleValidation[] memory ruleWhitelistTab = new IRuleValidation[](2); + IRule[] memory ruleWhitelistTab = new IRule[](2); ruleWhitelistTab[0] = ruleWhitelist1; ruleWhitelistTab[1] = ruleWhitelist2; @@ -55,16 +55,16 @@ contract RuleEngineAccessControlTest is Test, HelperContract { abi.encodeWithSelector( AccessControlUnauthorizedAccount.selector, ATTACKER, - RULE_ENGINE_OPERATOR_ROLE + RULES_MANAGEMENT_ROLE ) ); (bool success, ) = address(ruleEngineMock).call( - abi.encodeCall(ruleEngineMock.setRulesValidation, ruleWhitelistTab) + abi.encodeCall(ruleEngineMock.setRules, ruleWhitelistTab) ); // Assert assertEq(success, true); - resUint256 = ruleEngineMock.rulesCountValidation(); + resUint256 = ruleEngineMock.rulesCount(); assertEq(resUint256, 1); } @@ -75,13 +75,13 @@ contract RuleEngineAccessControlTest is Test, HelperContract { abi.encodeWithSelector( AccessControlUnauthorizedAccount.selector, ATTACKER, - RULE_ENGINE_OPERATOR_ROLE + RULES_MANAGEMENT_ROLE ) ); - ruleEngineMock.clearRulesValidation(); + ruleEngineMock.clearRules(); // Assert - resUint256 = ruleEngineMock.rulesCountValidation(); + resUint256 = ruleEngineMock.rulesCount(); assertEq(resUint256, 1); } @@ -92,13 +92,13 @@ contract RuleEngineAccessControlTest is Test, HelperContract { abi.encodeWithSelector( AccessControlUnauthorizedAccount.selector, ATTACKER, - RULE_ENGINE_OPERATOR_ROLE + RULES_MANAGEMENT_ROLE ) ); - ruleEngineMock.addRuleValidation(ruleWhitelist); + ruleEngineMock.addRule(ruleWhitelist); // Assert - resUint256 = ruleEngineMock.rulesCountValidation(); + resUint256 = ruleEngineMock.rulesCount(); assertEq(resUint256, 1); } @@ -109,20 +109,20 @@ contract RuleEngineAccessControlTest is Test, HelperContract { abi.encodeWithSelector( AccessControlUnauthorizedAccount.selector, ATTACKER, - RULE_ENGINE_OPERATOR_ROLE + RULES_MANAGEMENT_ROLE ) ); - ruleEngineMock.removeRuleValidation(ruleWhitelist); + ruleEngineMock.removeRule(ruleWhitelist); // Assert - resUint256 = ruleEngineMock.rulesCountValidation(); + resUint256 = ruleEngineMock.rulesCount(); assertEq(resUint256, 1); } function testCannotAttackerOperateOnTransfer() public { // Act vm.prank(ATTACKER); - vm.expectRevert(ERC3643Compliance.RuleEngine_ERC3643Compliance_UnauthorizedCaller.selector); + vm.expectRevert(ERC3643ComplianceModule.RuleEngine_ERC3643Compliance_UnauthorizedCaller.selector); ruleEngineMock.transferred(address(0), ADDRESS1, ADDRESS2, 10); } } diff --git a/test/RuleEngine/AccessControl/RuleEngineAccessControlOZ.t.sol b/test/RuleEngine/AccessControl/RuleEngineAccessControlOZ.t.sol index 3be5ec8..35269c1 100644 --- a/test/RuleEngine/AccessControl/RuleEngineAccessControlOZ.t.sol +++ b/test/RuleEngine/AccessControl/RuleEngineAccessControlOZ.t.sol @@ -21,12 +21,12 @@ contract RuleEngineAccessControlTest is Test, HelperContract, AccessControl { ZERO_ADDRESS, ZERO_ADDRESS ); - resUint256 = ruleEngineMock.rulesCountValidation(); + resUint256 = ruleEngineMock.rulesCount(); vm.prank(RULE_ENGINE_OPERATOR_ADDRESS); - ruleEngineMock.addRuleValidation(ruleWhitelist); + ruleEngineMock.addRule(ruleWhitelist); // Arrange - Assert - resUint256 = ruleEngineMock.rulesCountValidation(); + resUint256 = ruleEngineMock.rulesCount(); assertEq(resUint256, 1); } @@ -35,41 +35,41 @@ contract RuleEngineAccessControlTest is Test, HelperContract, AccessControl { vm.prank(RULE_ENGINE_OPERATOR_ADDRESS); vm.expectEmit(true, true, false, true); emit RoleGranted( - RULE_ENGINE_OPERATOR_ROLE, + RULES_MANAGEMENT_ROLE, ADDRESS1, RULE_ENGINE_OPERATOR_ADDRESS ); - ruleEngineMock.grantRole(RULE_ENGINE_OPERATOR_ROLE, ADDRESS1); + ruleEngineMock.grantRole(RULES_MANAGEMENT_ROLE, ADDRESS1); // Assert - bool res1 = ruleEngineMock.hasRole(RULE_ENGINE_OPERATOR_ROLE, ADDRESS1); + bool res1 = ruleEngineMock.hasRole(RULES_MANAGEMENT_ROLE, ADDRESS1); assertEq(res1, true); } function testRevokeRoleAsAdmin() public { // Arrange vm.prank(RULE_ENGINE_OPERATOR_ADDRESS); - ruleEngineMock.grantRole(RULE_ENGINE_OPERATOR_ROLE, ADDRESS1); + ruleEngineMock.grantRole(RULES_MANAGEMENT_ROLE, ADDRESS1); // Arrange - Assert - bool res1 = ruleEngineMock.hasRole(RULE_ENGINE_OPERATOR_ROLE, ADDRESS1); + bool res1 = ruleEngineMock.hasRole(RULES_MANAGEMENT_ROLE, ADDRESS1); assertEq(res1, true); // Act vm.prank(RULE_ENGINE_OPERATOR_ADDRESS); vm.expectEmit(true, true, false, true); emit RoleRevoked( - RULE_ENGINE_OPERATOR_ROLE, + RULES_MANAGEMENT_ROLE, ADDRESS1, RULE_ENGINE_OPERATOR_ADDRESS ); - ruleEngineMock.revokeRole(RULE_ENGINE_OPERATOR_ROLE, ADDRESS1); + ruleEngineMock.revokeRole(RULES_MANAGEMENT_ROLE, ADDRESS1); // Assert - bool res2 = ruleEngineMock.hasRole(RULE_ENGINE_OPERATOR_ROLE, ADDRESS1); + bool res2 = ruleEngineMock.hasRole(RULES_MANAGEMENT_ROLE, ADDRESS1); assertFalse(res2); } function testCannotGrantFromNonAdmin() public { // Arrange - Assert - bool res1 = ruleEngineMock.hasRole(RULE_ENGINE_OPERATOR_ROLE, ADDRESS1); + bool res1 = ruleEngineMock.hasRole(RULES_MANAGEMENT_ROLE, ADDRESS1); assertFalse(res1); // Act @@ -81,22 +81,22 @@ contract RuleEngineAccessControlTest is Test, HelperContract, AccessControl { ) ); vm.prank(ADDRESS2); - ruleEngineMock.grantRole(RULE_ENGINE_OPERATOR_ROLE, ADDRESS2); + ruleEngineMock.grantRole(RULES_MANAGEMENT_ROLE, ADDRESS2); // Assert - bool res2 = ruleEngineMock.hasRole(RULE_ENGINE_OPERATOR_ROLE, ADDRESS1); + bool res2 = ruleEngineMock.hasRole(RULES_MANAGEMENT_ROLE, ADDRESS1); assertFalse(res2); } function testCannotRevokeFromNonAdmin() public { // Arrange - Assert - bool res1 = ruleEngineMock.hasRole(RULE_ENGINE_OPERATOR_ROLE, ADDRESS1); + bool res1 = ruleEngineMock.hasRole(RULES_MANAGEMENT_ROLE, ADDRESS1); assertFalse(res1); // Arrange vm.prank(RULE_ENGINE_OPERATOR_ADDRESS); - ruleEngineMock.grantRole(RULE_ENGINE_OPERATOR_ROLE, ADDRESS1); + ruleEngineMock.grantRole(RULES_MANAGEMENT_ROLE, ADDRESS1); // Arrange - Assert - bool res2 = ruleEngineMock.hasRole(RULE_ENGINE_OPERATOR_ROLE, ADDRESS1); + bool res2 = ruleEngineMock.hasRole(RULES_MANAGEMENT_ROLE, ADDRESS1); assertEq(res2, true); // Act @@ -108,10 +108,10 @@ contract RuleEngineAccessControlTest is Test, HelperContract, AccessControl { DEFAULT_ADMIN_ROLE ) ); - ruleEngineMock.revokeRole(RULE_ENGINE_OPERATOR_ROLE, ADDRESS1); + ruleEngineMock.revokeRole(RULES_MANAGEMENT_ROLE, ADDRESS1); // Assert - bool res3 = ruleEngineMock.hasRole(RULE_ENGINE_OPERATOR_ROLE, ADDRESS1); + bool res3 = ruleEngineMock.hasRole(RULES_MANAGEMENT_ROLE, ADDRESS1); assertEq(res3, true); } } \ No newline at end of file diff --git a/test/RuleEngine/ERC3643Compliance.t.sol b/test/RuleEngine/ERC3643Compliance.t.sol index 94f7358..2222aab 100644 --- a/test/RuleEngine/ERC3643Compliance.t.sol +++ b/test/RuleEngine/ERC3643Compliance.t.sol @@ -4,7 +4,7 @@ pragma solidity ^0.8.20; import "forge-std/Test.sol"; import "../HelperContract.sol"; import {IERC3643Compliance} from "../../src/interfaces/IERC3643Compliance.sol"; -import {ERC3643Compliance} from "../../src/modules/ERC3643Compliance.sol"; +import {ERC3643ComplianceModule} from "../../src/modules/ERC3643ComplianceModule.sol"; // Minimal mock ERC-3643 token to simulate calls to RuleEngine contract ERC3643MockToken { IERC3643Compliance public ruleEngine; @@ -140,17 +140,17 @@ contract RuleEngineTest is Test, HelperContract { } function testCannotCreatedIfNotBound() public { - vm.expectRevert(ERC3643Compliance.RuleEngine_ERC3643Compliance_UnauthorizedCaller.selector); + vm.expectRevert(ERC3643ComplianceModule.RuleEngine_ERC3643Compliance_UnauthorizedCaller.selector); ruleEngine.created(user1, 100); } function testCannotDestroyedIfNotBound() public { - vm.expectRevert(ERC3643Compliance.RuleEngine_ERC3643Compliance_UnauthorizedCaller.selector); + vm.expectRevert(ERC3643ComplianceModule.RuleEngine_ERC3643Compliance_UnauthorizedCaller.selector); ruleEngine.destroyed(user2, 50); } function testCannotTransferredIfNotBound() public { - vm.expectRevert(ERC3643Compliance.RuleEngine_ERC3643Compliance_UnauthorizedCaller.selector); + vm.expectRevert(ERC3643ComplianceModule.RuleEngine_ERC3643Compliance_UnauthorizedCaller.selector); ruleEngine.transferred(user1, user2, 200); } } \ No newline at end of file diff --git a/test/RuleEngine/RuleEngineDeployment.t.sol b/test/RuleEngine/RuleEngineDeployment.t.sol index 362c009..232c217 100644 --- a/test/RuleEngine/RuleEngineDeployment.t.sol +++ b/test/RuleEngine/RuleEngineDeployment.t.sol @@ -27,7 +27,7 @@ contract RuleEngineTest is Test, HelperContract { // assert resBool = ruleEngineMock.hasRole( - RULE_ENGINE_OPERATOR_ROLE, + RULES_MANAGEMENT_ROLE, RULE_ENGINE_OPERATOR_ADDRESS ); assertEq(resBool, true); @@ -35,6 +35,18 @@ contract RuleEngineTest is Test, HelperContract { assertEq(resBool, true); } + function testHasRightVersion() public { + // Act + ruleEngineMock = new RuleEngine( + RULE_ENGINE_OPERATOR_ADDRESS, + address(0x0), + ZERO_ADDRESS + ); + + // Assert + assertEq(ruleEngineMock.version(), "3.0.0"); + } + function testCannotDeployContractifAdminAddressIsZero() public { // Arrange vm.prank(WHITELIST_OPERATOR_ADDRESS); diff --git a/test/RuleEngine/ruleEngineOperation/CMTATIntegration.t.sol b/test/RuleEngine/RulesManagementModuleTest/CMTATIntegration.t.sol similarity index 96% rename from test/RuleEngine/ruleEngineOperation/CMTATIntegration.t.sol rename to test/RuleEngine/RulesManagementModuleTest/CMTATIntegration.t.sol index 8eea10c..0dd00b6 100644 --- a/test/RuleEngine/ruleEngineOperation/CMTATIntegration.t.sol +++ b/test/RuleEngine/RulesManagementModuleTest/CMTATIntegration.t.sol @@ -8,7 +8,7 @@ import "OZ/token/ERC20/IERC20.sol"; /** * @title General functions of the RuleEngine */ -contract RuleEngineOperationCMTATIntegrationTest is Test, HelperContract { +contract RuleEngineCMTATIntegrationTest is Test, HelperContract { uint256 defaultValue = 20; // Arrange function setUp() public { @@ -34,9 +34,9 @@ contract RuleEngineOperationCMTATIntegrationTest is Test, HelperContract { ); vm.prank(RULE_ENGINE_OPERATOR_ADDRESS); - ruleEngineMock.addRuleOperation(ruleConditionalTransferLight); + ruleEngineMock.addRule(ruleConditionalTransferLight); // Arrange - Assert - resUint256 = ruleEngineMock.rulesCountOperation(); + resUint256 = ruleEngineMock.rulesCount(); assertEq(resUint256, 1); // We set the Rule Engine diff --git a/test/RuleEngine/ruleEngineOperation/RuleEngineOperation.t.sol b/test/RuleEngine/RulesManagementModuleTest/RuleEngineOperation.t.sol similarity index 61% rename from test/RuleEngine/ruleEngineOperation/RuleEngineOperation.t.sol rename to test/RuleEngine/RulesManagementModuleTest/RuleEngineOperation.t.sol index c847c0e..3d28082 100644 --- a/test/RuleEngine/ruleEngineOperation/RuleEngineOperation.t.sol +++ b/test/RuleEngine/RulesManagementModuleTest/RuleEngineOperation.t.sol @@ -7,8 +7,8 @@ import "OZ/token/ERC20/IERC20.sol"; /** * @title General functions of the RuleEngine */ -contract RuleEngineOperationTest is Test, HelperContract { - IRuleOperation[] ruleConditionalTransferLightTab = new IRuleOperation[](2); +contract RulesManagementModuleInvariantStorageTest is Test, HelperContract { + IRule[] ruleConditionalTransferLightTab = new IRule[](2); // Arrange function setUp() public { vm.prank(RULE_ENGINE_OPERATOR_ADDRESS); @@ -23,14 +23,14 @@ contract RuleEngineOperationTest is Test, HelperContract { ); vm.prank(RULE_ENGINE_OPERATOR_ADDRESS); - ruleEngineMock.addRuleOperation(ruleConditionalTransferLight); + ruleEngineMock.addRule(ruleConditionalTransferLight); // Arrange - Assert - resUint256 = ruleEngineMock.rulesCountOperation(); + resUint256 = ruleEngineMock.rulesCount(); assertEq(resUint256, 1); - + assertEq(ruleEngineMock.containsRule(ruleConditionalTransferLight), true); } - function testCanSetRulesOperation() public { + function testCanSetRules() public { // Arrange vm.prank(WHITELIST_OPERATOR_ADDRESS); RuleConditionalTransferLight ruleConditionalTransferLight1 = new RuleConditionalTransferLight( @@ -42,25 +42,21 @@ contract RuleEngineOperationTest is Test, HelperContract { CONDITIONAL_TRANSFER_OPERATOR_ADDRESS, ruleEngineMock ); - ruleConditionalTransferLightTab[0] = IRuleOperation(ruleConditionalTransferLight1); - ruleConditionalTransferLightTab[1] = IRuleOperation(ruleConditionalTransferLight2); + ruleConditionalTransferLightTab[0] = IRule(ruleConditionalTransferLight1); + ruleConditionalTransferLightTab[1] = IRule(ruleConditionalTransferLight2); // Act vm.expectEmit(true, false, false, false); - emit RuleEngineOperation.AddRuleOperation(ruleConditionalTransferLight1); + emit RulesManagementModuleInvariantStorage.AddRule(ruleConditionalTransferLight1); vm.expectEmit(true, false, false, false); - emit RuleEngineOperation.AddRuleOperation(ruleConditionalTransferLight2); + emit RulesManagementModuleInvariantStorage.AddRule(ruleConditionalTransferLight2); vm.prank(RULE_ENGINE_OPERATOR_ADDRESS); - (bool resCallBool, ) = address(ruleEngineMock).call( - abi.encodeCall( - ruleEngineMock.setRulesOperation, - ruleConditionalTransferLightTab - ) - ); - + ruleEngineMock.setRules(ruleConditionalTransferLightTab); // Assert - assertEq(resCallBool, true); - resUint256 = ruleEngineMock.rulesCountOperation(); + resUint256 = ruleEngineMock.rulesCount(); assertEq(resUint256, 2); + + assertEq(ruleEngineMock.containsRule(ruleConditionalTransferLight1), true); + assertEq(ruleEngineMock.containsRule(ruleConditionalTransferLight2), true); } function testCannotSetRuleIfARuleIsAlreadyPresent() public { @@ -75,41 +71,26 @@ contract RuleEngineOperationTest is Test, HelperContract { // Act vm.prank(RULE_ENGINE_OPERATOR_ADDRESS); - vm.expectRevert(RuleEngine_RuleAlreadyExists.selector); - (bool resCallBool, ) = address(ruleEngineMock).call( - abi.encodeCall( - ruleEngineMock.setRulesOperation, - ruleConditionalTransferLightTab - ) - ); + vm.expectRevert(RuleEngine_RulesManagementModule_RuleAlreadyExists.selector); + ruleEngineMock.setRules(ruleConditionalTransferLightTab); // Assert - // I do not know why but the function call return true - // if the call is reverted with the message indicated in expectRevert - // assertFalse(resCallBool); - assertEq(resCallBool, true); - resUint256 = ruleEngineMock.rulesCountOperation(); + resUint256 = ruleEngineMock.rulesCount(); assertEq(resUint256, 1); } function testCannotSetEmptyRulesT1WithEmptyTab() public { // Arrange - ruleConditionalTransferLightTab = new IRuleOperation[](0); + ruleConditionalTransferLightTab = new IRule[](0); resBool = ruleEngineMock.canTransfer(ADDRESS1, ADDRESS2, 20); assertFalse(resBool); // Act + vm.expectRevert(RulesManagementModuleInvariantStorage.RuleEngine_RulesManagementModule_ArrayIsEmpty.selector); vm.prank(RULE_ENGINE_OPERATOR_ADDRESS); - (bool resCallBool, ) = address(ruleEngineMock).call( - abi.encodeCall( - ruleEngineMock.setRulesOperation, - ruleConditionalTransferLightTab - ) - ); - + ruleEngineMock.setRules(ruleConditionalTransferLightTab); // Assert - assertFalse(resCallBool); - resUint256 = ruleEngineMock.rulesCountOperation(); + resUint256 = ruleEngineMock.rulesCount(); assertEq(resUint256, 1); // Assert @@ -120,23 +101,17 @@ contract RuleEngineOperationTest is Test, HelperContract { function testCannotSetEmptyRulesT2WithZeroAddress() public { // Arrange - + ruleConditionalTransferLightTab = new IRule[](0); // Act + // TODO vm.prank(RULE_ENGINE_OPERATOR_ADDRESS); - vm.expectRevert("The array is empty2"); - - (bool resCallBool, ) = address(ruleEngineMock).call( - abi.encodeCall( - ruleEngineMock.setRulesOperation, - ruleConditionalTransferLightTab - ) - ); + vm.expectRevert(RulesManagementModuleInvariantStorage.RuleEngine_RulesManagementModule_ArrayIsEmpty.selector); + ruleEngineMock.setRules(ruleConditionalTransferLightTab); resBool = ruleEngineMock.canTransfer(ADDRESS1, ADDRESS2, 20); // Assert1 - assertFalse(resCallBool); - resUint256 = ruleEngineMock.rulesCountOperation(); + resUint256 = ruleEngineMock.rulesCount(); assertEq(resUint256, 1); // Assert2 @@ -157,31 +132,30 @@ contract RuleEngineOperationTest is Test, HelperContract { CONDITIONAL_TRANSFER_OPERATOR_ADDRESS, ruleEngineMock ); - ruleConditionalTransferLightTab[0] = IRuleOperation(ruleConditionalTransferLight1); - ruleConditionalTransferLightTab[1] = IRuleOperation(ruleConditionalTransferLight2); + ruleConditionalTransferLightTab[0] = IRule(ruleConditionalTransferLight1); + ruleConditionalTransferLightTab[1] = IRule(ruleConditionalTransferLight2); vm.prank(RULE_ENGINE_OPERATOR_ADDRESS); - (bool resCallBool, ) = address(ruleEngineMock).call( - abi.encodeCall( - ruleEngineMock.setRulesOperation, - ruleConditionalTransferLightTab - ) - ); - ruleEngineMock.rulesOperation(); + ruleEngineMock.setRules(ruleConditionalTransferLightTab); + // TODO + ruleEngineMock.rules(); // Assert - Arrange - assertEq(resCallBool, true); - resUint256 = ruleEngineMock.rulesCountOperation(); + resUint256 = ruleEngineMock.rulesCount(); assertEq(resUint256, 2); + assertEq(ruleEngineMock.containsRule(ruleConditionalTransferLight1), true); + assertEq(ruleEngineMock.containsRule(ruleConditionalTransferLight2), true); // Act vm.expectEmit(true, false, false, false); - emit RuleEngineOperation.ClearRulesOperation(); + emit RulesManagementModuleInvariantStorage.ClearRules(); vm.prank(RULE_ENGINE_OPERATOR_ADDRESS); - ruleEngineMock.clearRulesOperation(); + ruleEngineMock.clearRules(); // Assert - resUint256 = ruleEngineMock.rulesCountOperation(); + resUint256 = ruleEngineMock.rulesCount(); assertEq(resUint256, 0); + assertFalse(ruleEngineMock.containsRule(ruleConditionalTransferLight1)); + assertFalse(ruleEngineMock.containsRule(ruleConditionalTransferLight2)); } function testCanClearRulesAndAddAgain() public { @@ -196,32 +170,32 @@ contract RuleEngineOperationTest is Test, HelperContract { CONDITIONAL_TRANSFER_OPERATOR_ADDRESS, ruleEngineMock ); - ruleConditionalTransferLightTab[0] = IRuleOperation(ruleConditionalTransferLight1); - ruleConditionalTransferLightTab[1] = IRuleOperation(ruleConditionalTransferLight2); + ruleConditionalTransferLightTab[0] = IRule(ruleConditionalTransferLight1); + ruleConditionalTransferLightTab[1] = IRule(ruleConditionalTransferLight2); vm.prank(RULE_ENGINE_OPERATOR_ADDRESS); (bool resCallBool, ) = address(ruleEngineMock).call( abi.encodeCall( - ruleEngineMock.setRulesOperation, + ruleEngineMock.setRules, ruleConditionalTransferLightTab ) ); // Act vm.expectEmit(true, false, false, false); - emit RuleEngineOperation.ClearRulesOperation(); + emit RulesManagementModuleInvariantStorage.ClearRules(); vm.prank(RULE_ENGINE_OPERATOR_ADDRESS); - ruleEngineMock.clearRulesOperation(); + ruleEngineMock.clearRules(); // Assert - resUint256 = ruleEngineMock.rulesCountOperation(); + resUint256 = ruleEngineMock.rulesCount(); assertEq(resUint256, 0); // Can set again the previous rules vm.prank(RULE_ENGINE_OPERATOR_ADDRESS); (resCallBool, ) = address(ruleEngineMock).call( abi.encodeCall( - ruleEngineMock.setRulesOperation, + ruleEngineMock.setRules, ruleConditionalTransferLightTab ) ); @@ -230,17 +204,17 @@ contract RuleEngineOperationTest is Test, HelperContract { // Act vm.expectEmit(true, false, false, false); - emit RuleEngineOperation.ClearRulesOperation(); + emit RulesManagementModuleInvariantStorage.ClearRules(); vm.prank(RULE_ENGINE_OPERATOR_ADDRESS); - ruleEngineMock.clearRulesOperation(); - resUint256 = ruleEngineMock.rulesCountOperation(); + ruleEngineMock.clearRules(); + resUint256 = ruleEngineMock.rulesCount(); assertEq(resUint256, 0); // Can add previous rule again vm.expectEmit(true, false, false, false); - emit RuleEngineOperation.AddRuleOperation(ruleConditionalTransferLight1); + emit RulesManagementModuleInvariantStorage.AddRule(ruleConditionalTransferLight1); vm.prank(RULE_ENGINE_OPERATOR_ADDRESS); - ruleEngineMock.addRuleOperation(ruleConditionalTransferLight1); + ruleEngineMock.addRule(ruleConditionalTransferLight1); } function testCanAddRule() public { @@ -253,55 +227,55 @@ contract RuleEngineOperationTest is Test, HelperContract { // Act vm.expectEmit(true, false, false, false); - emit RuleEngineOperation.AddRuleOperation(ruleConditionalTransferLight1); + emit RulesManagementModuleInvariantStorage.AddRule(ruleConditionalTransferLight1); vm.prank(RULE_ENGINE_OPERATOR_ADDRESS); - ruleEngineMock.addRuleOperation(ruleConditionalTransferLight1); + ruleEngineMock.addRule(ruleConditionalTransferLight1); // Assert - resUint256 = ruleEngineMock.rulesCountOperation(); + resUint256 = ruleEngineMock.rulesCount(); assertEq(resUint256, 2); } function testCannotAddRuleZeroAddress() public { // Act - vm.expectRevert(RuleEngine_RuleAddressZeroNotAllowed.selector); + vm.expectRevert(RuleEngine_RulesManagementModule_RuleAddressZeroNotAllowed.selector); vm.prank(RULE_ENGINE_OPERATOR_ADDRESS); - ruleEngineMock.addRuleOperation(IRuleOperation(address(0x0))); + ruleEngineMock.addRule(IRule(address(0x0))); // Assert - resUint256 = ruleEngineMock.rulesCountOperation(); + resUint256 = ruleEngineMock.rulesCount(); assertEq(resUint256, 1); } function testCannotAddARuleAlreadyPresent() public { // Act - vm.expectRevert(RuleEngine_RuleAlreadyExists.selector); + vm.expectRevert(RuleEngine_RulesManagementModule_RuleAlreadyExists.selector); vm.prank(RULE_ENGINE_OPERATOR_ADDRESS); - ruleEngineMock.addRuleOperation(ruleConditionalTransferLight); + ruleEngineMock.addRule(ruleConditionalTransferLight); // Assert - resUint256 = ruleEngineMock.rulesCountOperation(); + resUint256 = ruleEngineMock.rulesCount(); assertEq(resUint256, 1); } function testCanAddARuleAfterThisRuleWasRemoved() public { // Arrange - Assert - address[] memory _rules = ruleEngineMock.rulesOperation(); + address[] memory _rules = ruleEngineMock.rules(); assertEq(address(_rules[0]), address(ruleConditionalTransferLight)); // Arrange vm.prank(RULE_ENGINE_OPERATOR_ADDRESS); - ruleEngineMock.removeRuleOperation(ruleConditionalTransferLight); + ruleEngineMock.removeRule(ruleConditionalTransferLight); // Act vm.expectEmit(true, false, false, false); - emit RuleEngineOperation.AddRuleOperation(ruleConditionalTransferLight); + emit RulesManagementModuleInvariantStorage.AddRule(ruleConditionalTransferLight); vm.prank(RULE_ENGINE_OPERATOR_ADDRESS); - ruleEngineMock.addRuleOperation(ruleConditionalTransferLight); + ruleEngineMock.addRule(ruleConditionalTransferLight); // Assert - _rules = ruleEngineMock.rulesOperation(); - resUint256 = ruleEngineMock.rulesCountOperation(); + _rules = ruleEngineMock.rules(); + resUint256 = ruleEngineMock.rulesCount(); assertEq(resUint256, 1); } @@ -314,12 +288,12 @@ contract RuleEngineOperationTest is Test, HelperContract { ); // Act - vm.expectRevert(RuleEngine_RuleDoNotMatch.selector); + vm.expectRevert(RuleEngine_RulesManagementModule_RuleDoNotMatch.selector); vm.prank(RULE_ENGINE_OPERATOR_ADDRESS); - ruleEngineMock.removeRuleOperation(ruleConditionalTransferLight1); + ruleEngineMock.removeRule(ruleConditionalTransferLight1); // Assert - resUint256 = ruleEngineMock.rulesCountOperation(); + resUint256 = ruleEngineMock.rulesCount(); assertEq(resUint256, 1); } @@ -331,16 +305,16 @@ contract RuleEngineOperationTest is Test, HelperContract { ruleEngineMock ); vm.prank(RULE_ENGINE_OPERATOR_ADDRESS); - ruleEngineMock.addRuleOperation(ruleConditionalTransferLight1); + ruleEngineMock.addRule(ruleConditionalTransferLight1); // Act vm.expectEmit(true, false, false, false); - emit RuleEngineOperation.RemoveRuleOperation(ruleConditionalTransferLight1); + emit RulesManagementModuleInvariantStorage.RemoveRule(ruleConditionalTransferLight1); vm.prank(RULE_ENGINE_OPERATOR_ADDRESS); - ruleEngineMock.removeRuleOperation(ruleConditionalTransferLight1); + ruleEngineMock.removeRule(ruleConditionalTransferLight1); // Assert - resUint256 = ruleEngineMock.rulesCountOperation(); + resUint256 = ruleEngineMock.rulesCount(); assertEq(resUint256, 1); } @@ -352,20 +326,20 @@ contract RuleEngineOperationTest is Test, HelperContract { ruleEngineMock ); vm.prank(RULE_ENGINE_OPERATOR_ADDRESS); - ruleEngineMock.addRuleOperation(ruleConditionalTransferLight1); + ruleEngineMock.addRule(ruleConditionalTransferLight1); // Act vm.expectEmit(true, false, false, false); - emit RuleEngineOperation.RemoveRuleOperation(ruleConditionalTransferLight); + emit RulesManagementModuleInvariantStorage.RemoveRule(ruleConditionalTransferLight); vm.prank(RULE_ENGINE_OPERATOR_ADDRESS); - ruleEngineMock.removeRuleOperation(ruleConditionalTransferLight); + ruleEngineMock.removeRule(ruleConditionalTransferLight); // Assert - resUint256 = ruleEngineMock.rulesCountOperation(); + resUint256 = ruleEngineMock.rulesCount(); assertEq(resUint256, 1); } - function testCanRemoveRuleOperation() public { + function testCanRemoveRule() public { // Arrange // First rule vm.prank(WHITELIST_OPERATOR_ADDRESS); @@ -374,7 +348,7 @@ contract RuleEngineOperationTest is Test, HelperContract { ruleEngineMock ); vm.prank(RULE_ENGINE_OPERATOR_ADDRESS); - ruleEngineMock.addRuleOperation(ruleConditionalTransferLight1); + ruleEngineMock.addRule(ruleConditionalTransferLight1); // Second rule vm.prank(WHITELIST_OPERATOR_ADDRESS); RuleConditionalTransferLight ruleConditionalTransferLight2 = new RuleConditionalTransferLight( @@ -382,27 +356,27 @@ contract RuleEngineOperationTest is Test, HelperContract { ruleEngineMock ); vm.prank(RULE_ENGINE_OPERATOR_ADDRESS); - ruleEngineMock.addRuleOperation(ruleConditionalTransferLight2); + ruleEngineMock.addRule(ruleConditionalTransferLight2); // Act vm.expectEmit(true, false, false, false); - emit RuleEngineOperation.RemoveRuleOperation(ruleConditionalTransferLight1); + emit RulesManagementModuleInvariantStorage.RemoveRule(ruleConditionalTransferLight1); vm.prank(RULE_ENGINE_OPERATOR_ADDRESS); - ruleEngineMock.removeRuleOperation(ruleConditionalTransferLight1); + ruleEngineMock.removeRule(ruleConditionalTransferLight1); // Assert - address[] memory _rules = ruleEngineMock.rulesOperation(); + address[] memory _rules = ruleEngineMock.rules(); // RuleConditionalTransferLight1 has been removed assertEq(address(_rules[0]), address(ruleConditionalTransferLight)); assertEq(address(_rules[1]), address(ruleConditionalTransferLight2)); - resUint256 = ruleEngineMock.rulesCountOperation(); + resUint256 = ruleEngineMock.rulesCount(); assertEq(resUint256, 2); } function testRuleLength() public { // Act - resUint256 = ruleEngineMock.rulesCountOperation(); + resUint256 = ruleEngineMock.rulesCount(); // Assert assertEq(resUint256, 1); @@ -416,21 +390,13 @@ contract RuleEngineOperationTest is Test, HelperContract { CONDITIONAL_TRANSFER_OPERATOR_ADDRESS, ruleEngineMock ); - ruleConditionalTransferLightTab[0] = IRuleOperation(ruleConditionalTransferLight1); - ruleConditionalTransferLightTab[1] = IRuleOperation(ruleConditionalTransferLight2); + ruleConditionalTransferLightTab[0] = IRule(ruleConditionalTransferLight1); + ruleConditionalTransferLightTab[1] = IRule(ruleConditionalTransferLight2); vm.prank(RULE_ENGINE_OPERATOR_ADDRESS); - (bool resCallBool, ) = address(ruleEngineMock).call( - abi.encodeCall( - ruleEngineMock.setRulesOperation, - ruleConditionalTransferLightTab - ) - ); - - // Arrange - Assert - assertEq(resCallBool, true); + ruleEngineMock.setRules(ruleConditionalTransferLightTab); // Act - resUint256 = ruleEngineMock.rulesCountOperation(); + resUint256 = ruleEngineMock.rulesCount(); // Assert assertEq(resUint256, 2); @@ -446,20 +412,13 @@ contract RuleEngineOperationTest is Test, HelperContract { CONDITIONAL_TRANSFER_OPERATOR_ADDRESS, ruleEngineMock ); - ruleConditionalTransferLightTab[0] = IRuleOperation(ruleConditionalTransferLight1); - ruleConditionalTransferLightTab[1] = IRuleOperation(ruleConditionalTransferLight2); + ruleConditionalTransferLightTab[0] = IRule(ruleConditionalTransferLight1); + ruleConditionalTransferLightTab[1] = IRule(ruleConditionalTransferLight2); vm.prank(RULE_ENGINE_OPERATOR_ADDRESS); - (bool resCallBool, ) = address(ruleEngineMock).call( - abi.encodeCall( - ruleEngineMock.setRulesOperation, - ruleConditionalTransferLightTab - ) - ); - // Arrange - Assert - assertEq(resCallBool, true); + ruleEngineMock.setRules(ruleConditionalTransferLightTab); // Act - address rule = ruleEngineMock.ruleOperation(0); + address rule = ruleEngineMock.rule(0); // Assert assertEq(address(rule), address(ruleConditionalTransferLight1)); @@ -475,20 +434,13 @@ contract RuleEngineOperationTest is Test, HelperContract { CONDITIONAL_TRANSFER_OPERATOR_ADDRESS, ruleEngineMock ); - ruleConditionalTransferLightTab[0] = IRuleOperation(ruleConditionalTransferLight1); - ruleConditionalTransferLightTab[1] = IRuleOperation(ruleConditionalTransferLight2); + ruleConditionalTransferLightTab[0] = IRule(ruleConditionalTransferLight1); + ruleConditionalTransferLightTab[1] = IRule(ruleConditionalTransferLight2); vm.prank(RULE_ENGINE_OPERATOR_ADDRESS); - (bool resCallBool, ) = address(ruleEngineMock).call( - abi.encodeCall( - ruleEngineMock.setRulesOperation, - ruleConditionalTransferLightTab - ) - ); - // Arrange - Assert - assertEq(resCallBool, true); + ruleEngineMock.setRules(ruleConditionalTransferLightTab); // Act - address[] memory rules = ruleEngineMock.rulesOperation(); + address[] memory rules = ruleEngineMock.rules(); // Assert assertEq(ruleConditionalTransferLightTab.length, rules.length); @@ -507,13 +459,13 @@ contract RuleEngineOperationTest is Test, HelperContract { CONDITIONAL_TRANSFER_OPERATOR_ADDRESS, ruleEngineMock ); - ruleConditionalTransferLightTab[0] = IRuleOperation(ruleConditionalTransferLight1); + ruleConditionalTransferLightTab[0] = IRule(ruleConditionalTransferLight1); ruleConditionalTransferLightTab[1] = - IRuleOperation(ruleConditionalTransferLight2); + IRule(ruleConditionalTransferLight2); vm.prank(RULE_ENGINE_OPERATOR_ADDRESS); (bool resCallBool, ) = address(ruleEngineMock).call( abi.encodeCall( - ruleEngineMock.setRulesOperation, + ruleEngineMock.setRules, ruleConditionalTransferLightTab ) ); @@ -521,14 +473,14 @@ contract RuleEngineOperationTest is Test, HelperContract { assertEq(resCallBool, true); // Act - /* uint256 index1 = ruleEngineMock.getRuleIndexOperation( + /* uint256 index1 = ruleEngineMock.getRuleIndex( ruleConditionalTransferLight1 ); - uint256 index2 = ruleEngineMock.getRuleIndexOperation( + uint256 index2 = ruleEngineMock.getRuleIndex( ruleConditionalTransferLight2 ); // Length of the list because RuleConditionalTransferLight is not in the list - uint256 index3 = ruleEngineMock.getRuleIndexOperation( + uint256 index3 = ruleEngineMock.getRuleIndex( ruleConditionalTransferLight ); diff --git a/test/RuleEngine/ruleEngineOperation/RuleEngineOperationRevert.t.sol b/test/RuleEngine/RulesManagementModuleTest/RuleEngineOperationRevert.t.sol similarity index 91% rename from test/RuleEngine/ruleEngineOperation/RuleEngineOperationRevert.t.sol rename to test/RuleEngine/RulesManagementModuleTest/RuleEngineOperationRevert.t.sol index 7991c79..bbad43c 100644 --- a/test/RuleEngine/ruleEngineOperation/RuleEngineOperationRevert.t.sol +++ b/test/RuleEngine/RulesManagementModuleTest/RuleEngineOperationRevert.t.sol @@ -26,9 +26,9 @@ contract RuleEngineOperationTestRevert is Test, HelperContract { ); vm.prank(RULE_ENGINE_OPERATOR_ADDRESS); - ruleEngineMock.addRuleOperation(ruleOperationRevert); + ruleEngineMock.addRule(ruleOperationRevert); // Arrange - Assert - resUint256 = ruleEngineMock.rulesCountOperation(); + resUint256 = ruleEngineMock.rulesCount(); assertEq(resUint256, 1); vm.prank(DEFAULT_ADMIN_ADDRESS); diff --git a/test/RuleEngine/ruleEngineOperation/RuleEngineRestriction.t.sol b/test/RuleEngine/RulesManagementModuleTest/RuleEngineRestriction.t.sol similarity index 94% rename from test/RuleEngine/ruleEngineOperation/RuleEngineRestriction.t.sol rename to test/RuleEngine/RulesManagementModuleTest/RuleEngineRestriction.t.sol index 5cece08..25b712d 100644 --- a/test/RuleEngine/ruleEngineOperation/RuleEngineRestriction.t.sol +++ b/test/RuleEngine/RulesManagementModuleTest/RuleEngineRestriction.t.sol @@ -8,7 +8,7 @@ import "OZ/token/ERC20/IERC20.sol"; /** * @title General functions of the RuleEngine */ -contract RuleEngineOperationTest is Test, HelperContract { +contract RuleEngineTest is Test, HelperContract { uint256 defaultValue = 20; // Arrange @@ -25,9 +25,9 @@ contract RuleEngineOperationTest is Test, HelperContract { ); vm.prank(RULE_ENGINE_OPERATOR_ADDRESS); - ruleEngineMock.addRuleOperation(ruleConditionalTransferLight); + ruleEngineMock.addRule(ruleConditionalTransferLight); // Arrange - Assert - resUint256 = ruleEngineMock.rulesCountOperation(); + resUint256 = ruleEngineMock.rulesCount(); assertEq(resUint256, 1); } @@ -128,7 +128,7 @@ contract RuleEngineOperationTest is Test, HelperContract { function testMessageForTransferRestrictionNoRule() public { // Arrange vm.prank(RULE_ENGINE_OPERATOR_ADDRESS); - ruleEngineMock.clearRulesOperation(); + ruleEngineMock.clearRules(); // Act resString = ruleEngineMock.messageForTransferRestriction(50); diff --git a/test/RuleEngine/ruleEngineValidation/RuleEngineRestriction.t.sol b/test/RuleEngine/ruleEngineValidation/RuleEngineRestriction.sol similarity index 87% rename from test/RuleEngine/ruleEngineValidation/RuleEngineRestriction.t.sol rename to test/RuleEngine/ruleEngineValidation/RuleEngineRestriction.sol index 2c6cb60..21036a9 100644 --- a/test/RuleEngine/ruleEngineValidation/RuleEngineRestriction.t.sol +++ b/test/RuleEngine/ruleEngineValidation/RuleEngineRestriction.sol @@ -5,7 +5,7 @@ import "forge-std/Test.sol"; import "../../HelperContract.sol"; import "OZ/token/ERC20/IERC20.sol"; /** - * @title tests concerning the restrictions and validation for the transfers + * @title tests concerning the restrictions and for the transfers */ contract RuleEngineRestrictionTest is Test, HelperContract { RuleWhitelist ruleWhitelist1; @@ -23,9 +23,9 @@ contract RuleEngineRestrictionTest is Test, HelperContract { ZERO_ADDRESS ); vm.prank(RULE_ENGINE_OPERATOR_ADDRESS); - ruleEngineMock.addRuleValidation(ruleWhitelist); + ruleEngineMock.addRule(ruleWhitelist); // Arrange - Assert - resUint256 = ruleEngineMock.rulesCountValidation(); + resUint256 = ruleEngineMock.rulesCount(); assertEq(resUint256, 1); // Arrange @@ -33,11 +33,11 @@ contract RuleEngineRestrictionTest is Test, HelperContract { WHITELIST_OPERATOR_ADDRESS, ZERO_ADDRESS ); - IRuleValidation[] memory ruleWhitelistTab = new IRuleValidation[](1); + IRule[] memory ruleWhitelistTab = new IRule[](1); ruleWhitelistTab[0] = ruleWhitelist1; vm.prank(RULE_ENGINE_OPERATOR_ADDRESS); (bool success, ) = address(ruleEngineMock).call( - abi.encodeCall(ruleEngineMock.setRulesValidation, ruleWhitelistTab) + abi.encodeCall(ruleEngineMock.setRules, ruleWhitelistTab) ); // Arrange - Assert @@ -61,10 +61,10 @@ contract RuleEngineRestrictionTest is Test, HelperContract { // Assert assertEq(resUint8, 0); - // ruleEngineValidation + // ruleEngine // Act - resUint8 = ruleEngineMock.detectTransferRestrictionValidation( + resUint8 = ruleEngineMock.detectTransferRestriction( ADDRESS1, ADDRESS2, 20 @@ -86,7 +86,7 @@ contract RuleEngineRestrictionTest is Test, HelperContract { // Assert assertEq(resUint8, CODE_ADDRESS_SPENDER_NOT_WHITELISTED); - // ruleEngineValidation + // ruleEngine // Act resBool = ruleEngineMock.canTransferFrom( @@ -125,10 +125,10 @@ contract RuleEngineRestrictionTest is Test, HelperContract { // Assert assertEq(resUint8, CODE_ADDRESS_FROM_NOT_WHITELISTED); - // ruleEngineValidation + // ruleEngine // Act - resUint8 = ruleEngineMock.detectTransferRestrictionValidation( + resUint8 = ruleEngineMock.detectTransferRestriction( ADDRESS1, ADDRESS2, 20 @@ -172,10 +172,10 @@ contract RuleEngineRestrictionTest is Test, HelperContract { // Assert assertEq(resUint8, CODE_ADDRESS_TO_NOT_WHITELISTED); - // ruleEngineValidation + // ruleEngine // Act - resUint8 = ruleEngineMock.detectTransferRestrictionValidation( + resUint8 = ruleEngineMock.detectTransferRestriction( ADDRESS1, ADDRESS2, 20 @@ -216,7 +216,7 @@ contract RuleEngineRestrictionTest is Test, HelperContract { function testMessageForTransferRestrictionNoRule() public { // Arrange vm.prank(RULE_ENGINE_OPERATOR_ADDRESS); - ruleEngineMock.clearRulesValidation(); + ruleEngineMock.clearRules(); // Act resString = ruleEngineMock.messageForTransferRestriction(50); @@ -248,10 +248,10 @@ contract RuleEngineRestrictionTest is Test, HelperContract { // Assert assertEq(resBool, true); - // ruleEngineValidation + // ruleEngine // Act - resBool = ruleEngineMock.canTransferValidation( + resBool = ruleEngineMock.canTransfer( ADDRESS1, ADDRESS2, 20 @@ -268,10 +268,10 @@ contract RuleEngineRestrictionTest is Test, HelperContract { // Assert assertFalse(resBool); - // ruleEngineValidation + // ruleEngine // Act - resBool = ruleEngineMock.canTransferValidation( + resBool = ruleEngineMock.canTransfer( ADDRESS1, ADDRESS2, 20 diff --git a/test/RuleEngine/ruleEngineValidation/RuleEngineValidation.t.sol b/test/RuleEngine/ruleEngineValidation/RuleEngineValidation.sol similarity index 58% rename from test/RuleEngine/ruleEngineValidation/RuleEngineValidation.t.sol rename to test/RuleEngine/ruleEngineValidation/RuleEngineValidation.sol index f0a866b..6bc5cdc 100644 --- a/test/RuleEngine/ruleEngineValidation/RuleEngineValidation.t.sol +++ b/test/RuleEngine/ruleEngineValidation/RuleEngineValidation.sol @@ -7,8 +7,8 @@ import "../../HelperContract.sol"; /** * @title General functions of the RuleEngine */ -contract RuleEngineValidationTest is Test, HelperContract { - IRuleValidation[] ruleWhitelistTab = new IRuleValidation[](2); +contract RuleEngineTest is Test, HelperContract { + IRule[] ruleWhitelistTab = new IRule[](2); // Arrange function setUp() public { ruleWhitelist = new RuleWhitelist( @@ -23,13 +23,13 @@ contract RuleEngineValidationTest is Test, HelperContract { ); vm.prank(RULE_ENGINE_OPERATOR_ADDRESS); - ruleEngineMock.addRuleValidation(ruleWhitelist); + ruleEngineMock.addRule(ruleWhitelist); // Arrange - Assert - resUint256 = ruleEngineMock.rulesCountValidation(); + resUint256 = ruleEngineMock.rulesCount(); assertEq(resUint256, 1); } - function testCanSetRulesValidation() public { + function testCanSetRules() public { // Arrange vm.prank(WHITELIST_OPERATOR_ADDRESS); RuleWhitelist ruleWhitelist1 = new RuleWhitelist( @@ -41,21 +41,18 @@ contract RuleEngineValidationTest is Test, HelperContract { WHITELIST_OPERATOR_ADDRESS, ZERO_ADDRESS ); - ruleWhitelistTab[0] = IRuleValidation(ruleWhitelist1); - ruleWhitelistTab[1] = IRuleValidation(ruleWhitelist2); + ruleWhitelistTab[0] = IRule(ruleWhitelist1); + ruleWhitelistTab[1] = IRule(ruleWhitelist2); // Act vm.expectEmit(true, false, false, false); - emit RuleEngineValidation.AddRuleValidation(ruleWhitelist1); + emit RulesManagementModuleInvariantStorage.AddRule(ruleWhitelist1); vm.expectEmit(true, false, false, false); - emit RuleEngineValidation.AddRuleValidation(ruleWhitelist2); + emit RulesManagementModuleInvariantStorage.AddRule(ruleWhitelist2); vm.prank(RULE_ENGINE_OPERATOR_ADDRESS); - (bool resCallBool, ) = address(ruleEngineMock).call( - abi.encodeCall(ruleEngineMock.setRulesValidation, ruleWhitelistTab) - ); + ruleEngineMock.setRules(ruleWhitelistTab); // Assert - assertEq(resCallBool, true); - resUint256 = ruleEngineMock.rulesCountValidation(); + resUint256 = ruleEngineMock.rulesCount(); assertEq(resUint256, 2); } @@ -70,18 +67,11 @@ contract RuleEngineValidationTest is Test, HelperContract { ruleWhitelistTab[1] = ruleWhitelist1; // Act - vm.expectRevert(RuleEngine_RuleAlreadyExists.selector); + vm.expectRevert(RuleEngine_RulesManagementModule_RuleAlreadyExists.selector); vm.prank(RULE_ENGINE_OPERATOR_ADDRESS); - (bool resCallBool, ) = address(ruleEngineMock).call( - abi.encodeCall(ruleEngineMock.setRulesValidation, ruleWhitelistTab) - ); + ruleEngineMock.setRules(ruleWhitelistTab); // Assert - // I do not know why but the function call return true - // Probably due to the vm.expectRevert - // if the call is reverted with the message indicated in expectRevert - // assertFalse(resCallBool); - assertEq(resCallBool, true); - resUint256 = ruleEngineMock.rulesCountValidation(); + resUint256 = ruleEngineMock.rulesCount(); assertEq(resUint256, 1); } @@ -92,46 +82,41 @@ contract RuleEngineValidationTest is Test, HelperContract { WHITELIST_OPERATOR_ADDRESS, ZERO_ADDRESS ); - ruleWhitelistTab = new IRuleValidation[](1); + ruleWhitelistTab = new IRule[](1); ruleWhitelistTab[0] = ruleWhitelist1; // Arrange vm.prank(RULE_ENGINE_OPERATOR_ADDRESS); - (bool resCallBool, ) = address(ruleEngineMock).call( - abi.encodeCall(ruleEngineMock.setRulesValidation, ruleWhitelistTab) - ); + ruleEngineMock.setRules(ruleWhitelistTab); // Act vm.prank(RULE_ENGINE_OPERATOR_ADDRESS); (resCallBool, ) = address(ruleEngineMock).call( - abi.encodeCall(ruleEngineMock.setRulesValidation, ruleWhitelistTab) + abi.encodeCall(ruleEngineMock.setRules, ruleWhitelistTab) ); // Assert assertEq(resCallBool, true); - resUint256 = ruleEngineMock.rulesCountValidation(); + resUint256 = ruleEngineMock.rulesCount(); assertEq(resUint256, 1); } function testCannotSetEmptyRulesT1() public { // Arrange - ruleWhitelistTab = new IRuleValidation[](0); + ruleWhitelistTab = new IRule[](0); // Act vm.prank(RULE_ENGINE_OPERATOR_ADDRESS); - (bool resCallBool, ) = address(ruleEngineMock).call( - abi.encodeCall(ruleEngineMock.setRulesValidation, ruleWhitelistTab) - ); + vm.expectRevert(RulesManagementModuleInvariantStorage.RuleEngine_RulesManagementModule_ArrayIsEmpty.selector); + ruleEngineMock.setRules(ruleWhitelistTab); // Assert - assertFalse(resCallBool); - resUint256 = ruleEngineMock.rulesCountValidation(); + resUint256 = ruleEngineMock.rulesCount(); assertEq(resUint256, 1); // Assert2 // false because the ruleWhitelist is still present resBool = ruleEngineMock.canTransfer(ADDRESS1, ADDRESS2, 20); - assertFalse(resBool); resBool = ruleEngineMock.canTransferFrom( ADDRESS3, @@ -145,20 +130,17 @@ contract RuleEngineValidationTest is Test, HelperContract { function testCannotSetEmptyRulesT2() public { // Arrange - + ruleWhitelistTab = new IRule[](0); // Act vm.prank(RULE_ENGINE_OPERATOR_ADDRESS); - vm.expectRevert("The array is empty2"); + vm.expectRevert(RulesManagementModuleInvariantStorage.RuleEngine_RulesManagementModule_ArrayIsEmpty.selector); - (bool resCallBool, ) = address(ruleEngineMock).call( - abi.encodeCall(ruleEngineMock.setRulesValidation, ruleWhitelistTab) - ); + ruleEngineMock.setRules(ruleWhitelistTab); resBool = ruleEngineMock.canTransfer(ADDRESS1, ADDRESS2, 20); // Assert1 - assertFalse(resCallBool); - resUint256 = ruleEngineMock.rulesCountValidation(); + resUint256 = ruleEngineMock.rulesCount(); assertEq(resUint256, 1); // Assert2 @@ -188,27 +170,24 @@ contract RuleEngineValidationTest is Test, HelperContract { WHITELIST_OPERATOR_ADDRESS, ZERO_ADDRESS ); - ruleWhitelistTab[0] = IRuleValidation(ruleWhitelist1); - ruleWhitelistTab[1] = IRuleValidation(ruleWhitelist2); + ruleWhitelistTab[0] = IRule(ruleWhitelist1); + ruleWhitelistTab[1] = IRule(ruleWhitelist2); vm.prank(RULE_ENGINE_OPERATOR_ADDRESS); - (bool resCallBool, ) = address(ruleEngineMock).call( - abi.encodeCall(ruleEngineMock.setRulesValidation, ruleWhitelistTab) - ); - ruleEngineMock.rulesValidation(); + ruleEngineMock.setRules(ruleWhitelistTab); + ruleEngineMock.rules(); // Assert - Arrange - assertEq(resCallBool, true); - resUint256 = ruleEngineMock.rulesCountValidation(); + resUint256 = ruleEngineMock.rulesCount(); assertEq(resUint256, 2); // Act vm.expectEmit(true, false, false, false); - emit RuleEngineValidation.ClearRulesValidation(); + emit RulesManagementModuleInvariantStorage.ClearRules(); vm.prank(RULE_ENGINE_OPERATOR_ADDRESS); - ruleEngineMock.clearRulesValidation(); + ruleEngineMock.clearRules(); // Assert - resUint256 = ruleEngineMock.rulesCountValidation(); + resUint256 = ruleEngineMock.rulesCount(); assertEq(resUint256, 0); } @@ -224,45 +203,40 @@ contract RuleEngineValidationTest is Test, HelperContract { WHITELIST_OPERATOR_ADDRESS, ZERO_ADDRESS ); - ruleWhitelistTab[0] = IRuleValidation(ruleWhitelist1); - ruleWhitelistTab[1] = IRuleValidation(ruleWhitelist2); + ruleWhitelistTab[0] = IRule(ruleWhitelist1); + ruleWhitelistTab[1] = IRule(ruleWhitelist2); vm.prank(RULE_ENGINE_OPERATOR_ADDRESS); - (bool resCallBool, ) = address(ruleEngineMock).call( - abi.encodeCall(ruleEngineMock.setRulesValidation, ruleWhitelistTab) - ); + ruleEngineMock.setRules(ruleWhitelistTab); // Act vm.expectEmit(true, false, false, false); - emit RuleEngineValidation.ClearRulesValidation(); + emit RulesManagementModuleInvariantStorage.ClearRules(); vm.prank(RULE_ENGINE_OPERATOR_ADDRESS); - ruleEngineMock.clearRulesValidation(); + ruleEngineMock.clearRules(); // Assert - resUint256 = ruleEngineMock.rulesCountValidation(); + resUint256 = ruleEngineMock.rulesCount(); assertEq(resUint256, 0); // Can set again the previous rules vm.prank(RULE_ENGINE_OPERATOR_ADDRESS); - (resCallBool, ) = address(ruleEngineMock).call( - abi.encodeCall(ruleEngineMock.setRulesValidation, ruleWhitelistTab) - ); - assertEq(resCallBool, true); + ruleEngineMock.setRules(ruleWhitelistTab); // Arrange before assert // Act vm.expectEmit(true, false, false, false); - emit RuleEngineValidation.ClearRulesValidation(); + emit RulesManagementModuleInvariantStorage.ClearRules(); vm.prank(RULE_ENGINE_OPERATOR_ADDRESS); - ruleEngineMock.clearRulesValidation(); - resUint256 = ruleEngineMock.rulesCountValidation(); + ruleEngineMock.clearRules(); + resUint256 = ruleEngineMock.rulesCount(); assertEq(resUint256, 0); // Can add previous rule again vm.expectEmit(true, false, false, false); - emit RuleEngineValidation.AddRuleValidation(ruleWhitelist1); + emit RulesManagementModuleInvariantStorage.AddRule(ruleWhitelist1); vm.prank(RULE_ENGINE_OPERATOR_ADDRESS); - ruleEngineMock.addRuleValidation(ruleWhitelist1); + ruleEngineMock.addRule(ruleWhitelist1); } function testCanAddRule() public { @@ -275,55 +249,55 @@ contract RuleEngineValidationTest is Test, HelperContract { // Act vm.expectEmit(true, false, false, false); - emit RuleEngineValidation.AddRuleValidation(ruleWhitelist1); + emit RulesManagementModuleInvariantStorage.AddRule(ruleWhitelist1); vm.prank(RULE_ENGINE_OPERATOR_ADDRESS); - ruleEngineMock.addRuleValidation(ruleWhitelist1); + ruleEngineMock.addRule(ruleWhitelist1); // Assert - resUint256 = ruleEngineMock.rulesCountValidation(); + resUint256 = ruleEngineMock.rulesCount(); assertEq(resUint256, 2); } function testCannotAddRuleZeroAddress() public { // Act - vm.expectRevert(RuleEngine_RuleAddressZeroNotAllowed.selector); + vm.expectRevert(RuleEngine_RulesManagementModule_RuleAddressZeroNotAllowed.selector); vm.prank(RULE_ENGINE_OPERATOR_ADDRESS); - ruleEngineMock.addRuleValidation(IRuleValidation(address(0x0))); + ruleEngineMock.addRule(IRule(address(0x0))); // Assert - resUint256 = ruleEngineMock.rulesCountValidation(); + resUint256 = ruleEngineMock.rulesCount(); assertEq(resUint256, 1); } function testCannotAddARuleAlreadyPresent() public { // Act - vm.expectRevert(RuleEngine_RuleAlreadyExists.selector); + vm.expectRevert(RuleEngine_RulesManagementModule_RuleAlreadyExists.selector); vm.prank(RULE_ENGINE_OPERATOR_ADDRESS); - ruleEngineMock.addRuleValidation(ruleWhitelist); + ruleEngineMock.addRule(ruleWhitelist); // Assert - resUint256 = ruleEngineMock.rulesCountValidation(); + resUint256 = ruleEngineMock.rulesCount(); assertEq(resUint256, 1); } function testCanAddARuleAfterThisRuleWasRemoved() public { // Arrange - Assert - address[] memory _rules = ruleEngineMock.rulesValidation(); + address[] memory _rules = ruleEngineMock.rules(); assertEq(address(_rules[0]), address(ruleWhitelist)); // Arrange vm.prank(RULE_ENGINE_OPERATOR_ADDRESS); - ruleEngineMock.removeRuleValidation(ruleWhitelist); + ruleEngineMock.removeRule(ruleWhitelist); // Act vm.expectEmit(true, false, false, false); - emit RuleEngineValidation.AddRuleValidation(ruleWhitelist); + emit RulesManagementModuleInvariantStorage.AddRule(ruleWhitelist); vm.prank(RULE_ENGINE_OPERATOR_ADDRESS); - ruleEngineMock.addRuleValidation(ruleWhitelist); + ruleEngineMock.addRule(ruleWhitelist); // Assert - _rules = ruleEngineMock.rulesValidation(); - resUint256 = ruleEngineMock.rulesCountValidation(); + _rules = ruleEngineMock.rules(); + resUint256 = ruleEngineMock.rulesCount(); assertEq(resUint256, 1); } @@ -336,12 +310,12 @@ contract RuleEngineValidationTest is Test, HelperContract { ); // Act - vm.expectRevert(RuleEngine_RuleDoNotMatch.selector); + vm.expectRevert(RuleEngine_RulesManagementModule_RuleDoNotMatch.selector); vm.prank(RULE_ENGINE_OPERATOR_ADDRESS); - ruleEngineMock.removeRuleValidation(ruleWhitelist1); + ruleEngineMock.removeRule(ruleWhitelist1); // Assert - resUint256 = ruleEngineMock.rulesCountValidation(); + resUint256 = ruleEngineMock.rulesCount(); assertEq(resUint256, 1); } @@ -353,16 +327,16 @@ contract RuleEngineValidationTest is Test, HelperContract { ZERO_ADDRESS ); vm.prank(RULE_ENGINE_OPERATOR_ADDRESS); - ruleEngineMock.addRuleValidation(ruleWhitelist1); + ruleEngineMock.addRule(ruleWhitelist1); // Act vm.expectEmit(true, false, false, false); - emit RuleEngineValidation.RemoveRuleValidation(ruleWhitelist1); + emit RulesManagementModuleInvariantStorage.RemoveRule(ruleWhitelist1); vm.prank(RULE_ENGINE_OPERATOR_ADDRESS); - ruleEngineMock.removeRuleValidation(ruleWhitelist1); + ruleEngineMock.removeRule(ruleWhitelist1); // Assert - resUint256 = ruleEngineMock.rulesCountValidation(); + resUint256 = ruleEngineMock.rulesCount(); assertEq(resUint256, 1); } @@ -374,20 +348,20 @@ contract RuleEngineValidationTest is Test, HelperContract { ZERO_ADDRESS ); vm.prank(RULE_ENGINE_OPERATOR_ADDRESS); - ruleEngineMock.addRuleValidation(ruleWhitelist1); + ruleEngineMock.addRule(ruleWhitelist1); // Act vm.expectEmit(true, false, false, false); - emit RuleEngineValidation.RemoveRuleValidation(ruleWhitelist); + emit RulesManagementModuleInvariantStorage.RemoveRule(ruleWhitelist); vm.prank(RULE_ENGINE_OPERATOR_ADDRESS); - ruleEngineMock.removeRuleValidation(ruleWhitelist); + ruleEngineMock.removeRule(ruleWhitelist); // Assert - resUint256 = ruleEngineMock.rulesCountValidation(); + resUint256 = ruleEngineMock.rulesCount(); assertEq(resUint256, 1); } - function testCanRemoveRuleValidation() public { + function testCanRemoveRule() public { // Arrange // First rule vm.prank(WHITELIST_OPERATOR_ADDRESS); @@ -396,7 +370,7 @@ contract RuleEngineValidationTest is Test, HelperContract { ZERO_ADDRESS ); vm.prank(RULE_ENGINE_OPERATOR_ADDRESS); - ruleEngineMock.addRuleValidation(ruleWhitelist1); + ruleEngineMock.addRule(ruleWhitelist1); // Second rule vm.prank(WHITELIST_OPERATOR_ADDRESS); RuleWhitelist ruleWhitelist2 = new RuleWhitelist( @@ -404,27 +378,27 @@ contract RuleEngineValidationTest is Test, HelperContract { ZERO_ADDRESS ); vm.prank(RULE_ENGINE_OPERATOR_ADDRESS); - ruleEngineMock.addRuleValidation(ruleWhitelist2); + ruleEngineMock.addRule(ruleWhitelist2); // Act vm.expectEmit(true, false, false, false); - emit RuleEngineValidation.RemoveRuleValidation(ruleWhitelist1); + emit RulesManagementModuleInvariantStorage.RemoveRule(ruleWhitelist1); vm.prank(RULE_ENGINE_OPERATOR_ADDRESS); - ruleEngineMock.removeRuleValidation(ruleWhitelist1); + ruleEngineMock.removeRule(ruleWhitelist1); // Assert - address[] memory _rules = ruleEngineMock.rulesValidation(); + address[] memory _rules = ruleEngineMock.rules(); // ruleWhitelist1 has been removed assertEq(address(_rules[0]), address(ruleWhitelist)); assertEq(address(_rules[1]), address(ruleWhitelist2)); - resUint256 = ruleEngineMock.rulesCountValidation(); + resUint256 = ruleEngineMock.rulesCount(); assertEq(resUint256, 2); } function testRuleLength() public { // Act - resUint256 = ruleEngineMock.rulesCountValidation(); + resUint256 = ruleEngineMock.rulesCount(); // Assert assertEq(resUint256, 1); @@ -438,18 +412,13 @@ contract RuleEngineValidationTest is Test, HelperContract { WHITELIST_OPERATOR_ADDRESS, ZERO_ADDRESS ); - ruleWhitelistTab[0] = IRuleValidation(ruleWhitelist1); - ruleWhitelistTab[1] = IRuleValidation(ruleWhitelist2); + ruleWhitelistTab[0] = IRule(ruleWhitelist1); + ruleWhitelistTab[1] = IRule(ruleWhitelist2); vm.prank(RULE_ENGINE_OPERATOR_ADDRESS); - (bool resCallBool, ) = address(ruleEngineMock).call( - abi.encodeCall(ruleEngineMock.setRulesValidation, ruleWhitelistTab) - ); - - // Arrange - Assert - assertEq(resCallBool, true); + ruleEngineMock.setRules(ruleWhitelistTab); // Act - resUint256 = ruleEngineMock.rulesCountValidation(); + resUint256 = ruleEngineMock.rulesCount(); // Assert assertEq(resUint256, 2); @@ -465,17 +434,14 @@ contract RuleEngineValidationTest is Test, HelperContract { WHITELIST_OPERATOR_ADDRESS, ZERO_ADDRESS ); - ruleWhitelistTab[0] = IRuleValidation(ruleWhitelist1); - ruleWhitelistTab[1] = IRuleValidation(ruleWhitelist2); + ruleWhitelistTab[0] = IRule(ruleWhitelist1); + ruleWhitelistTab[1] = IRule(ruleWhitelist2); vm.prank(RULE_ENGINE_OPERATOR_ADDRESS); - (bool resCallBool, ) = address(ruleEngineMock).call( - abi.encodeCall(ruleEngineMock.setRulesValidation, ruleWhitelistTab) - ); - // Arrange - Assert - assertEq(resCallBool, true); + ruleEngineMock.setRules(ruleWhitelistTab); + // Act - address rule = ruleEngineMock.ruleValidation(0); + address rule = ruleEngineMock.rule(0); // Assert assertEq(address(rule), address(ruleWhitelist1)); @@ -491,17 +457,14 @@ contract RuleEngineValidationTest is Test, HelperContract { WHITELIST_OPERATOR_ADDRESS, ZERO_ADDRESS ); - ruleWhitelistTab[0] = IRuleValidation(ruleWhitelist1); - ruleWhitelistTab[1] = IRuleValidation(ruleWhitelist2); + ruleWhitelistTab[0] = IRule(ruleWhitelist1); + ruleWhitelistTab[1] = IRule(ruleWhitelist2); vm.prank(RULE_ENGINE_OPERATOR_ADDRESS); - (bool resCallBool, ) = address(ruleEngineMock).call( - abi.encodeCall(ruleEngineMock.setRulesValidation, ruleWhitelistTab) - ); - // Arrange - Assert - assertEq(resCallBool, true); + ruleEngineMock.setRules(ruleWhitelistTab); + // Act - address[] memory rules = ruleEngineMock.rulesValidation(); + address[] memory rules = ruleEngineMock.rules(); // Assert assertEq(ruleWhitelistTab.length, rules.length); @@ -520,20 +483,16 @@ contract RuleEngineValidationTest is Test, HelperContract { WHITELIST_OPERATOR_ADDRESS, ZERO_ADDRESS ); - ruleWhitelistTab[0] = IRuleValidation(ruleWhitelist1); - ruleWhitelistTab[1] = IRuleValidation(ruleWhitelist2); + ruleWhitelistTab[0] = IRule(ruleWhitelist1); + ruleWhitelistTab[1] = IRule(ruleWhitelist2); vm.prank(RULE_ENGINE_OPERATOR_ADDRESS); - (bool resCallBool, ) = address(ruleEngineMock).call( - abi.encodeCall(ruleEngineMock.setRulesValidation, ruleWhitelistTab) - ); - // Arrange - Assert - assertEq(resCallBool, true); + ruleEngineMock.setRules(ruleWhitelistTab); // Act - /* uint256 index1 = ruleEngineMock.getRuleIndexValidation(ruleWhitelist1); - uint256 index2 = ruleEngineMock.getRuleIndexValidation(ruleWhitelist2); + /* uint256 index1 = ruleEngineMock.getRuleIndex(ruleWhitelist1); + uint256 index2 = ruleEngineMock.getRuleIndex(ruleWhitelist2); // Length of the list because ruleWhitelist is not in the list - uint256 index3 = ruleEngineMock.getRuleIndexValidation(ruleWhitelist); + uint256 index3 = ruleEngineMock.getRuleIndex(ruleWhitelist); // Assert assertEq(index1, 0); @@ -546,7 +505,7 @@ contract RuleEngineValidationTest is Test, HelperContract { { // Arrange vm.prank(RULE_ENGINE_OPERATOR_ADDRESS); - ruleEngineMock.clearRulesValidation(); + ruleEngineMock.clearRules(); // Act resString = ruleEngineMock.messageForTransferRestriction(50); diff --git a/test/RuleWhitelist/CMTATIntegration.t.sol b/test/RuleWhitelist/CMTATIntegration.t.sol index d1885a1..d8ff8f4 100644 --- a/test/RuleWhitelist/CMTATIntegration.t.sol +++ b/test/RuleWhitelist/CMTATIntegration.t.sol @@ -31,7 +31,13 @@ contract CMTATIntegration is Test, HelperContract { address(CMTAT_CONTRACT) ); vm.prank(DEFAULT_ADMIN_ADDRESS); - ruleEngineMock.addRuleValidation(ruleWhitelist); + ruleEngineMock.addRule(ruleWhitelist); + + // Assert + assertEq(ruleEngineMock.containsRule(ruleWhitelist), true); + + + // CMTAT vm.prank(DEFAULT_ADMIN_ADDRESS); CMTAT_CONTRACT.mint(ADDRESS1, ADDRESS1_BALANCE_INIT); vm.prank(DEFAULT_ADMIN_ADDRESS); @@ -46,14 +52,20 @@ contract CMTATIntegration is Test, HelperContract { /******* Transfer *******/ function testCannotTransferWithoutAddressWhitelisted() public { + uint8 code = CMTAT_CONTRACT.detectTransferRestriction( + ADDRESS1, + ADDRESS2, + 21 + ); // Arrange vm.prank(ADDRESS1); vm.expectRevert( abi.encodeWithSelector( - RuleEngine_InvalidTransfer.selector, + RuleWhitelist.RuleWhitelist_InvalidTransfer.selector, ADDRESS1, ADDRESS2, - 21 + 21, + code ) ); // Act @@ -66,13 +78,19 @@ contract CMTATIntegration is Test, HelperContract { vm.prank(DEFAULT_ADMIN_ADDRESS); ruleWhitelist.addAddressToTheList(ADDRESS2); + uint8 code = CMTAT_CONTRACT.detectTransferRestriction( + ADDRESS1, + ADDRESS2, + amount + ); vm.prank(ADDRESS1); vm.expectRevert( abi.encodeWithSelector( - RuleEngine_InvalidTransfer.selector, + RuleWhitelist.RuleWhitelist_InvalidTransfer.selector, ADDRESS1, ADDRESS2, - amount + amount, + code ) ); // Act @@ -85,13 +103,19 @@ contract CMTATIntegration is Test, HelperContract { vm.prank(DEFAULT_ADMIN_ADDRESS); ruleWhitelist.addAddressToTheList(ADDRESS1); + uint8 code = CMTAT_CONTRACT.detectTransferRestriction( + ADDRESS1, + ADDRESS2, + amount + ); vm.prank(ADDRESS1); vm.expectRevert( abi.encodeWithSelector( - RuleEngine_InvalidTransfer.selector, + RuleWhitelist.RuleWhitelist_InvalidTransfer.selector, ADDRESS1, ADDRESS2, - amount + amount, + code ) ); // Act @@ -109,15 +133,20 @@ contract CMTATIntegration is Test, HelperContract { vm.prank(DEFAULT_ADMIN_ADDRESS); ruleWhitelist.addAddressToTheList(ADDRESS2); - - + uint8 code = CMTAT_CONTRACT.detectTransferRestrictionFrom( + ADDRESS3, + ADDRESS1, + ADDRESS2, + amount + ); vm.prank(ADDRESS3); vm.expectRevert( abi.encodeWithSelector( - RuleEngine_InvalidTransfer.selector, + RuleWhitelist.RuleWhitelist_InvalidTransfer.selector, ADDRESS1, ADDRESS2, - amount + amount, + code ) ); // Act @@ -196,7 +225,7 @@ contract CMTATIntegration is Test, HelperContract { assertEq(message1, TEXT_ADDRESS_TO_NOT_WHITELISTED); // res1 - res1 = ruleEngineMock.detectTransferRestrictionValidation( + res1 = ruleEngineMock.detectTransferRestriction( ADDRESS1, ADDRESS2, 11 @@ -232,7 +261,7 @@ contract CMTATIntegration is Test, HelperContract { // RuleEngine - res1 = ruleEngineMock.detectTransferRestrictionValidation( + res1 = ruleEngineMock.detectTransferRestriction( ADDRESS1, ADDRESS2, 11 @@ -302,7 +331,7 @@ contract CMTATIntegration is Test, HelperContract { // Assert assertEq(res1, CODE_ADDRESS_SPENDER_NOT_WHITELISTED); - res1 = ruleEngineMock.detectTransferRestrictionValidationFrom( + res1 = ruleEngineMock.detectTransferRestrictionFrom( ADDRESS3, ADDRESS1, ADDRESS2, @@ -329,7 +358,7 @@ contract CMTATIntegration is Test, HelperContract { // Assert assertFalse(resBool); - resBool = ruleEngineMock.canTransferValidationFrom( + resBool = ruleEngineMock.canTransferFrom( ADDRESS3, ADDRESS1, ADDRESS2, From cce00c645f76df7666d425ccd2c6d6c32779146d Mon Sep 17 00:00:00 2001 From: Ryan Sauge <71391932+rya-sge@users.noreply.github.com> Date: Fri, 15 Aug 2025 12:28:48 +0200 Subject: [PATCH 11/17] Update doc --- CHANGELOG.md | 14 +- README.md | 362 +- classDiagram.svg | 1458 ----- doc/TOOLCHAIN.md | 24 +- doc/compilation/contract-size.png | Bin 0 -> 322434 bytes doc/compilation/flatten/RuleEngineFlatten.sol | 5494 +++++++++++++++++ .../src/RuleEngine.sol/RuleEngine.dbg.json | 4 + .../src/RuleEngine.sol/RuleEngine.json | 854 +++ .../RuleEngineBase.dbg.json | 4 + .../RuleEngineBase.sol/RuleEngineBase.json | 801 +++ .../IERC3643Compliance.dbg.json | 4 + .../IERC3643Compliance.json | 196 + .../src/interfaces/IRule.sol/IRule.dbg.json | 4 + .../src/interfaces/IRule.sol/IRule.json | 226 + .../IRulesManagementModule.dbg.json | 4 + .../IRulesManagementModule.json | 121 + .../RuleConditionalTransferLight.dbg.json | 4 + .../RuleConditionalTransferLight.json | 644 ++ .../RuleOperationRevert.dbg.json | 4 + .../RuleOperationRevert.json | 469 ++ ...onalTransferLightInvariantStorage.dbg.json | 4 + ...ditionalTransferLightInvariantStorage.json | 117 + .../RuleWhitelist.sol/RuleWhitelist.dbg.json | 4 + .../RuleWhitelist.sol/RuleWhitelist.json | 760 +++ .../RuleAddressList.dbg.json | 4 + .../RuleAddressList.sol/RuleAddressList.json | 464 ++ .../RuleAddressListInternal.dbg.json | 4 + .../RuleAddressListInternal.json | 21 + .../RuleAddressListInvariantStorage.dbg.json | 4 + .../RuleAddressListInvariantStorage.json | 94 + .../RuleBlacklistInvariantStorage.dbg.json | 4 + .../RuleBlacklistInvariantStorage.json | 50 + .../RuleWhitelistInvariantStorage.dbg.json | 4 + .../RuleWhitelistInvariantStorage.json | 50 + .../RuleCommonInvariantStorage.dbg.json | 4 + .../RuleCommonInvariantStorage.json | 10 + .../RuleWhitelistCommon.dbg.json | 4 + .../RuleWhitelistCommon.json | 265 + .../ERC2771ModuleStandalone.dbg.json | 4 + .../ERC2771ModuleStandalone.json | 43 + .../ERC3643ComplianceModule.dbg.json | 4 + .../ERC3643ComplianceModule.json | 459 ++ .../RulesManagementModule.dbg.json | 4 + .../RulesManagementModule.json | 416 ++ .../VersionModule.sol/VersionModule.dbg.json | 4 + .../VersionModule.sol/VersionModule.json | 24 + .../RuleEngineInvariantStorage.dbg.json | 4 + .../RuleEngineInvariantStorage.json | 16 + ...sManagementModuleInvariantStorage.dbg.json | 4 + ...RulesManagementModuleInvariantStorage.json | 81 + doc/coverage/code-coverage.png | Bin 0 -> 145057 bytes doc/coverage/coverage/index-sort-b.html | 40 +- doc/coverage/coverage/index-sort-f.html | 40 +- doc/coverage/coverage/index-sort-l.html | 40 +- doc/coverage/coverage/index.html | 40 +- .../src/RuleEngine.sol.func-sort-c.html | 60 +- .../coverage/src/RuleEngine.sol.func.html | 60 +- .../coverage/src/RuleEngine.sol.gcov.html | 344 +- .../src/RuleEngineBase.sol.func-sort-c.html | 117 + .../coverage/src/RuleEngineBase.sol.func.html | 117 + ...gcov.html => RuleEngineBase.sol.gcov.html} | 358 +- doc/coverage/coverage/src/index-sort-b.html | 42 +- doc/coverage/coverage/src/index-sort-f.html | 42 +- doc/coverage/coverage/src/index-sort-l.html | 42 +- doc/coverage/coverage/src/index.html | 42 +- ...3643ComplianceModule.sol.func-sort-c.html} | 54 +- ... => ERC3643ComplianceModule.sol.func.html} | 52 +- .../ERC3643ComplianceModule.sol.gcov.html | 175 + .../RuleEngineValidation.sol.gcov.html | 181 - ...ngineValidationCommon.sol.func-sort-c.html | 121 - .../RuleEngineValidationCommon.sol.func.html | 121 - .../RuleEngineValidationCommon.sol.gcov.html | 237 - .../src/modules/RuleInternal.sol.gcov.html | 184 - ...ulesManagementModule.sol.func-sort-c.html} | 70 +- ...ml => RulesManagementModule.sol.func.html} | 70 +- .../RulesManagementModule.sol.gcov.html | 295 + ...tml => VersionModule.sol.func-sort-c.html} | 36 +- ....func.html => VersionModule.sol.func.html} | 36 +- .../src/modules/VersionModule.sol.gcov.html | 109 + .../coverage/src/modules/index-sort-b.html | 56 +- .../coverage/src/modules/index-sort-f.html | 58 +- .../coverage/src/modules/index-sort-l.html | 52 +- doc/coverage/coverage/src/modules/index.html | 56 +- doc/coverage/lcov.info | 579 +- doc/schema/classDiagram.svg | 1762 +++--- doc/schema/vscode-uml/ERC2771ModuleUML.png | Bin 0 -> 31848 bytes doc/schema/vscode-uml/RuleEngineUML.png | Bin 66509 -> 0 bytes doc/schema/vscode-uml/RuleEngineUML.png.png | Bin 0 -> 66872 bytes lcov.info | 262 - package.json | 4 +- src/RuleEngine.sol | 6 +- src/interfaces/IERC3643Compliance.sol | 8 + src/interfaces/IRulesManagementModule.sol | 15 +- .../RuleAddressList/RuleAddressList.sol | 12 +- ...dalone.sol => ERC2771ModuleStandalone.sol} | 2 +- src/modules/ERC3643ComplianceModule.sol | 6 +- src/modules/RulesManagementModule.sol | 8 +- .../RulesManagementModuleInvariantStorage.sol | 16 +- test/HelperContract.sol | 1 + test/RuleEngine/ERC3643Compliance.t.sol | 24 + test/RuleEngine/RuleEngineDeployment.t.sol | 13 + .../RuleEngineOperation.t.sol | 12 +- 102 files changed, 14948 insertions(+), 4750 deletions(-) delete mode 100644 classDiagram.svg create mode 100644 doc/compilation/contract-size.png create mode 100644 doc/compilation/flatten/RuleEngineFlatten.sol create mode 100644 doc/compilation/hardhat/src/RuleEngine.sol/RuleEngine.dbg.json create mode 100644 doc/compilation/hardhat/src/RuleEngine.sol/RuleEngine.json create mode 100644 doc/compilation/hardhat/src/RuleEngineBase.sol/RuleEngineBase.dbg.json create mode 100644 doc/compilation/hardhat/src/RuleEngineBase.sol/RuleEngineBase.json create mode 100644 doc/compilation/hardhat/src/interfaces/IERC3643Compliance.sol/IERC3643Compliance.dbg.json create mode 100644 doc/compilation/hardhat/src/interfaces/IERC3643Compliance.sol/IERC3643Compliance.json create mode 100644 doc/compilation/hardhat/src/interfaces/IRule.sol/IRule.dbg.json create mode 100644 doc/compilation/hardhat/src/interfaces/IRule.sol/IRule.json create mode 100644 doc/compilation/hardhat/src/interfaces/IRulesManagementModule.sol/IRulesManagementModule.dbg.json create mode 100644 doc/compilation/hardhat/src/interfaces/IRulesManagementModule.sol/IRulesManagementModule.json create mode 100644 doc/compilation/hardhat/src/mocks/rules/operation/RuleConditionalTransferLight.sol/RuleConditionalTransferLight.dbg.json create mode 100644 doc/compilation/hardhat/src/mocks/rules/operation/RuleConditionalTransferLight.sol/RuleConditionalTransferLight.json create mode 100644 doc/compilation/hardhat/src/mocks/rules/operation/RuleOperationRevert.sol/RuleOperationRevert.dbg.json create mode 100644 doc/compilation/hardhat/src/mocks/rules/operation/RuleOperationRevert.sol/RuleOperationRevert.json create mode 100644 doc/compilation/hardhat/src/mocks/rules/operation/abstract/RuleConditionalTransferLightInvariantStorage.sol/RuleConditionalTransferLightInvariantStorage.dbg.json create mode 100644 doc/compilation/hardhat/src/mocks/rules/operation/abstract/RuleConditionalTransferLightInvariantStorage.sol/RuleConditionalTransferLightInvariantStorage.json create mode 100644 doc/compilation/hardhat/src/mocks/rules/validation/RuleWhitelist.sol/RuleWhitelist.dbg.json create mode 100644 doc/compilation/hardhat/src/mocks/rules/validation/RuleWhitelist.sol/RuleWhitelist.json create mode 100644 doc/compilation/hardhat/src/mocks/rules/validation/abstract/RuleAddressList/RuleAddressList.sol/RuleAddressList.dbg.json create mode 100644 doc/compilation/hardhat/src/mocks/rules/validation/abstract/RuleAddressList/RuleAddressList.sol/RuleAddressList.json create mode 100644 doc/compilation/hardhat/src/mocks/rules/validation/abstract/RuleAddressList/RuleAddressListInternal.sol/RuleAddressListInternal.dbg.json create mode 100644 doc/compilation/hardhat/src/mocks/rules/validation/abstract/RuleAddressList/RuleAddressListInternal.sol/RuleAddressListInternal.json create mode 100644 doc/compilation/hardhat/src/mocks/rules/validation/abstract/RuleAddressList/invariantStorage/RuleAddressListInvariantStorage.sol/RuleAddressListInvariantStorage.dbg.json create mode 100644 doc/compilation/hardhat/src/mocks/rules/validation/abstract/RuleAddressList/invariantStorage/RuleAddressListInvariantStorage.sol/RuleAddressListInvariantStorage.json create mode 100644 doc/compilation/hardhat/src/mocks/rules/validation/abstract/RuleAddressList/invariantStorage/RuleBlacklistInvariantStorage.sol/RuleBlacklistInvariantStorage.dbg.json create mode 100644 doc/compilation/hardhat/src/mocks/rules/validation/abstract/RuleAddressList/invariantStorage/RuleBlacklistInvariantStorage.sol/RuleBlacklistInvariantStorage.json create mode 100644 doc/compilation/hardhat/src/mocks/rules/validation/abstract/RuleAddressList/invariantStorage/RuleWhitelistInvariantStorage.sol/RuleWhitelistInvariantStorage.dbg.json create mode 100644 doc/compilation/hardhat/src/mocks/rules/validation/abstract/RuleAddressList/invariantStorage/RuleWhitelistInvariantStorage.sol/RuleWhitelistInvariantStorage.json create mode 100644 doc/compilation/hardhat/src/mocks/rules/validation/abstract/RuleCommonInvariantStorage.sol/RuleCommonInvariantStorage.dbg.json create mode 100644 doc/compilation/hardhat/src/mocks/rules/validation/abstract/RuleCommonInvariantStorage.sol/RuleCommonInvariantStorage.json create mode 100644 doc/compilation/hardhat/src/mocks/rules/validation/abstract/RuleWhitelistCommon.sol/RuleWhitelistCommon.dbg.json create mode 100644 doc/compilation/hardhat/src/mocks/rules/validation/abstract/RuleWhitelistCommon.sol/RuleWhitelistCommon.json create mode 100644 doc/compilation/hardhat/src/modules/ERC2771ModuleStandalone.sol/ERC2771ModuleStandalone.dbg.json create mode 100644 doc/compilation/hardhat/src/modules/ERC2771ModuleStandalone.sol/ERC2771ModuleStandalone.json create mode 100644 doc/compilation/hardhat/src/modules/ERC3643ComplianceModule.sol/ERC3643ComplianceModule.dbg.json create mode 100644 doc/compilation/hardhat/src/modules/ERC3643ComplianceModule.sol/ERC3643ComplianceModule.json create mode 100644 doc/compilation/hardhat/src/modules/RulesManagementModule.sol/RulesManagementModule.dbg.json create mode 100644 doc/compilation/hardhat/src/modules/RulesManagementModule.sol/RulesManagementModule.json create mode 100644 doc/compilation/hardhat/src/modules/VersionModule.sol/VersionModule.dbg.json create mode 100644 doc/compilation/hardhat/src/modules/VersionModule.sol/VersionModule.json create mode 100644 doc/compilation/hardhat/src/modules/library/RuleEngineInvariantStorage.sol/RuleEngineInvariantStorage.dbg.json create mode 100644 doc/compilation/hardhat/src/modules/library/RuleEngineInvariantStorage.sol/RuleEngineInvariantStorage.json create mode 100644 doc/compilation/hardhat/src/modules/library/RulesManagementModuleInvariantStorage.sol/RulesManagementModuleInvariantStorage.dbg.json create mode 100644 doc/compilation/hardhat/src/modules/library/RulesManagementModuleInvariantStorage.sol/RulesManagementModuleInvariantStorage.json create mode 100644 doc/coverage/code-coverage.png create mode 100644 doc/coverage/coverage/src/RuleEngineBase.sol.func-sort-c.html create mode 100644 doc/coverage/coverage/src/RuleEngineBase.sol.func.html rename doc/coverage/coverage/src/{modules/RuleEngineOperation.sol.gcov.html => RuleEngineBase.sol.gcov.html} (53%) rename doc/coverage/coverage/src/modules/{RuleInternal.sol.func-sort-c.html => ERC3643ComplianceModule.sol.func-sort-c.html} (56%) rename doc/coverage/coverage/src/modules/{RuleInternal.sol.func.html => ERC3643ComplianceModule.sol.func.html} (56%) create mode 100644 doc/coverage/coverage/src/modules/ERC3643ComplianceModule.sol.gcov.html delete mode 100644 doc/coverage/coverage/src/modules/RuleEngineValidation.sol.gcov.html delete mode 100644 doc/coverage/coverage/src/modules/RuleEngineValidationCommon.sol.func-sort-c.html delete mode 100644 doc/coverage/coverage/src/modules/RuleEngineValidationCommon.sol.func.html delete mode 100644 doc/coverage/coverage/src/modules/RuleEngineValidationCommon.sol.gcov.html delete mode 100644 doc/coverage/coverage/src/modules/RuleInternal.sol.gcov.html rename doc/coverage/coverage/src/modules/{RuleEngineOperation.sol.func-sort-c.html => RulesManagementModule.sol.func-sort-c.html} (53%) rename doc/coverage/coverage/src/modules/{RuleEngineOperation.sol.func.html => RulesManagementModule.sol.func.html} (53%) create mode 100644 doc/coverage/coverage/src/modules/RulesManagementModule.sol.gcov.html rename doc/coverage/coverage/src/modules/{RuleEngineValidation.sol.func-sort-c.html => VersionModule.sol.func-sort-c.html} (64%) rename doc/coverage/coverage/src/modules/{RuleEngineValidation.sol.func.html => VersionModule.sol.func.html} (64%) create mode 100644 doc/coverage/coverage/src/modules/VersionModule.sol.gcov.html create mode 100644 doc/schema/vscode-uml/ERC2771ModuleUML.png delete mode 100644 doc/schema/vscode-uml/RuleEngineUML.png create mode 100644 doc/schema/vscode-uml/RuleEngineUML.png.png delete mode 100644 lcov.info rename src/modules/{MetaTxModuleStandalone.sol => ERC2771ModuleStandalone.sol} (83%) diff --git a/CHANGELOG.md b/CHANGELOG.md index 1431cd5..a37ec0d 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -17,7 +17,19 @@ Please follow [https://changelog.md/](https://changelog.md/) conventions. - Update surya doc by running the 3 scripts in [./doc/script](./doc/script) - Update changelog +## v3.0.0-rc1 +- Rule contracts, requires to perform compliance check, have now their own dedicated [GitHub repository](https://github.com/CMTA/Rules). It means that these contract will be developed and audited separately from the `RuleEngine`. This provides more flexibility and makes it easier to manage audits. + +- There is now only one type of rule (read-write rules). Before that: + - First RuleEngine version (audited) had only one type of rule, read-only (whitelist, blacklist) + - A second RuleEngine version (not audited) had two types of rules: operation (read-write) and validation (read-only). A read-write rule is typically a ConditionalTransfer check which require each transfer must be pre-approved. +- Implement ERC-3643 compliance interface, which means that the RuleEngine can be also used with an ERC-3643 token to perform supplementary compliance check on transfer. +- Technical: + - Use [EnumerableSet](https://docs.openzeppelin.com/contracts/5.x/api/utils#EnumerableSet) from OpenZeppelin to store rules, which reduce the whole contract code size. + - Rename several abstract contract + - `RuleEngineOperation`-> `RulesManagementModule` + - `MetaTxModuleStandalone` -> `ERC2771ModuleStandalone` ## v3.0.0-rc0 @@ -131,4 +143,4 @@ Whitelist - Improve integration test with CMTAT ## 1.0.0 - 20221114 -- 🎉 first release! +- 🎉 first release!< diff --git a/README.md b/README.md index 4e8fef1..4e5af37 100644 --- a/README.md +++ b/README.md @@ -14,11 +14,25 @@ The RuleEngine is an external contract used to apply transfer restrictions to an - Why use a dedicated contract with rules instead of implementing it directly in CMTAT or [ERC-3643](https://eips.ethereum.org/EIPS/eip-3643) tokens? -1. Flexibility: These different features are not standard and common to all tokens. From an implementation perspective, using a rule engine with custom rules allows for each issuer or contract user to decide which rules to apply. -2. Code efficiency: The CMTAT token (and generally also all ERC-3643 tokens) is currently "heavy," meaning its contract code size is close to the maximum limit. This makes it challenging to add new features directly inside the CMTAT contract. -3. Reusability: - - We can use the RuleEngine inside other contracts besides CMTAT. For instance, the RuleEngine has been used it in [our contract to distribute dividends](https://www.taurushq.com/blog/equity-tokenization-how-to-pay-dividend-on-chain-using-cmtat/). - - A same deployed `RuleEngine`can also be used with several different tokens if the rules allowed it, which is the case for all validation rule. +There are several reasons to do this: + +- Flexibility: These different features are not standard and common to all tokens. From an implementation perspective, using a rule engine with custom rules allows for each issuer or contract user to decide which rules to apply. + +- Code efficiency: The CMTAT token (and generally also all ERC-3643 tokens) is currently "heavy," meaning its contract code size is close to the maximum limit. This makes it challenging to add new features directly inside the token contract. + +- Reusability: + + - We can use the RuleEngine inside other contracts besides CMTAT. For instance, the RuleEngine has been used it in [our contract to distribute dividends](https://www.taurushq.com/blog/equity-tokenization-how-to-pay-dividend-on-chain-using-cmtat/). + + - A same deployed `RuleEngine`can also be used with several different tokens if the rules allowed it, which is the case for all ready-only rule. + +Why use this `RuleEngine` contract instead of setting directly the `rule` in the token contract? + +- Using a RuleEngine allows to call several different rules. For example, a blacklist rule to allow the issuer to manage its own list of blacklisted addresses and a sanctionlist rule to use the [Chainalysis oracle for sanctions screening](https://go.chainalysis.com/chainalysis-oracle-docs.html) to forbid transfers from addresses listed in sanctions designations by organizations such as the US, EU, or UN. + +When the use of `RuleEngine` may not be appropriate? + +If you plan to call only one rule (e.g a whitelist rule), it could make sense to directly set the rule in the token contract instead of using a RuleEngine. This will simplify configuration and reduce runtime gas costs. ## How it works @@ -44,7 +58,7 @@ CMTAT provides the following function to set a RuleEngine inside a CMTAT token: This function is defined in the extension module `ValidationModuleRuleEngine` -### ERC-3643 token +#### ERC-3643 token [ERC-3643](https://eips.ethereum.org/EIPS/eip-3643) defined the following function in the standard interface to set a compliance contract @@ -187,7 +201,7 @@ CMTAT uses a RBAC access control by using the contract `AccessControl`from OpenZ Each module defines the roles useful to restrict its functions. -The `AccessControlModule`which is used by all base and deployment contracts override the OpenZeppelin function `hasRole`to give by default all the roles to the `admin`. +The `AccessControlModule` which is used by all base and deployment contracts override the OpenZeppelin function `hasRole` to give by default all the roles to the `admin`. See also [docs.openzeppelin.com - AccessControl](https://docs.openzeppelin.com/contracts/5.x/api/access#AccessControl) @@ -280,11 +294,21 @@ The following rules are available: ### Gasless support (ERC-2771) -The RuleEngine contracts and the other rules support client-side gasless transactions using the [Gas Station Network](https://docs.opengsn.org/#the-problem) (GSN) pattern, the main open standard for transfering fee payment to another account than that of the transaction issuer. The contract uses the OpenZeppelin contract `ERC2771Context`, which allows a contract to get the original client with `_msgSender()` instead of the fee payer given by `msg.sender` . +![ERC2771ModuleUML](./doc/schema/vscode-uml/ERC2771ModuleUML.png) + +The RuleEngine supports client-side gasless transactions using the standard [ERC-2771](https://eips.ethereum.org/EIPS/eip-2771). + +The contract uses the OpenZeppelin contract `ERC2771ContextUpgradeable`, which allows a contract to get the original client with `_msgSender()` instead of the feepayer given by `msg.sender`. + +At deployment, the parameter `forwarder` inside the RuleEngine contract constructor has to be set with the defined address of the forwarder. -At deployment, the parameter `forwarder` inside the contract constructor has to be set with the defined address of the forwarder. Please note that the forwarder can not be changed after deployment. +After deployment, the forwarder is immutable and can not be changed. -Please see the OpenGSN [documentation](https://docs.opengsn.org/contracts/#receiving-a-relayed-call) for more details on what is done to support GSN in the contract. +References: + +- [OpenZeppelin Meta Transactions](https://docs.openzeppelin.com/contracts/5.x/api/metatx) + +- OpenGSN has deployed several forwarders, see their [documentation](https://docs.opengsn.org/contracts/#receiving-a-relayed-call) to see some examples. ### Upgradeable @@ -320,6 +344,12 @@ Similar to the pause functionality, the RuleEngine can be directly removed from ##### transferred(address spender, address from, address to, uint256 value) +```solidity +function transferred(address spender,address from,address to,uint256 value) +public virtual override(IRuleEngine) +onlyBoundToken +``` + Function called whenever tokens are transferred from one wallet to another. Must revert if the transfer is invalid. @@ -399,6 +429,12 @@ Does not check balances or access rights (Access Control). ##### transferred(address from, address to, uint256 value) +```solidity +function transferred(address from,address to,uint256 value) +public virtual override(IERC3643IComplianceContract) +onlyBoundToken +``` + Updates the compliance contract state whenever tokens are transferred. Can only be called by the token contract bound to this compliance logic. @@ -412,6 +448,58 @@ Can only be called by the token contract bound to this compliance logic. | to | address | The address of the receiver. | | value | uint256 | The number of tokens involved in the transfer. | + + +#### IERC3643Compliance + +------ + +##### created(address to, uint256 value) + +```solidity +function created(address to, uint256 value) +public virtual override(IERC3643Compliance) +onlyBoundToken +``` + +Updates the compliance contract state when tokens are created (minted). + +Called by the token contract when new tokens are issued to an account. + Reverts if the minting does not comply with the rules. + +**Input Parameters:** + +| Name | Type | Description | +| ----- | ------- | ---------------------------------------- | +| to | address | The address receiving the minted tokens. | +| value | uint256 | The number of tokens created. | + + + +------ + +##### destroyed(address from, uint256 value) + +```solidity +function destroyed(address from, uint256 value) +public virtual override(IERC3643Compliance) +onlyBoundToken +``` + +Updates the compliance contract state when tokens are destroyed (burned). + +Called by the token contract when tokens are redeemed or burned. + Reverts if the burning does not comply with the rules. + +**Input Parameters:** + +| Name | Type | Description | +| ----- | ------- | --------------------------------------------- | +| from | address | The address whose tokens are being destroyed. | +| value | uint256 | The number of tokens destroyed. | + + + #### IERC1404 ![IERC1404UML](./doc/schema/vscode-uml/IERC1404UML.png) @@ -562,6 +650,10 @@ Useful for identifying which version of the smart contract is deployed and in us ##### TokenBound(address token) +```solidity +event TokenBound(address token) +``` + Emitted when a token is successfully bound to the compliance contract. **Event Parameters:** @@ -576,6 +668,10 @@ Emitted when a token is successfully bound to the compliance contract. ##### TokenUnbound(address token) +```solidity +event TokenUnbound(address token) +``` + Emitted when a token is successfully unbound from the compliance contract. **Event Parameters:** @@ -592,6 +688,12 @@ Emitted when a token is successfully unbound from the compliance contract. ##### bindToken(address token) +```solidity +function bindToken(address token) +public override virtual +onlyRole(COMPLIANCE_MANAGER_ROLE) +``` + Associates a token contract with this compliance contract. The compliance contract may restrict operations on the bound token according to its internal compliance logic. @@ -609,6 +711,12 @@ The compliance contract may restrict operations on the bound token according to ##### unbindToken(address token) +```solidity +function unbindToken(address token) +public override virtual +onlyRole(COMPLIANCE_MANAGER_ROLE) +``` + Removes the association of a token contract from this compliance contract. Reverts if the token is not currently bound. @@ -625,6 +733,12 @@ Reverts if the token is not currently bound. ##### isTokenBound(address token) -> bool +```solidity +function isTokenBound(address token) +public view virtual override +returns (bool) +``` + Checks whether a token is currently bound to this compliance contract. **Input Parameters:** @@ -647,10 +761,18 @@ Checks whether a token is currently bound to this compliance contract. ##### getTokenBound() -> address +```solidity +function getTokenBound() +public view virtual override +returns (address) +``` + Returns the single token currently bound to this compliance contract. If multiple tokens are supported, consider using `getTokenBounds()`. +Note that there are no guarantees on the ordering of values inside the array, and it may change when more values are added or removed. + **Return Values:** | Type | Description | @@ -663,10 +785,20 @@ If multiple tokens are supported, consider using `getTokenBounds()`. ##### getTokenBounds() -> address[] +```solidity +function getTokenBounds() +public view override +returns (address[] memory) +``` + Returns all tokens currently bound to this compliance contract. This is a view-only function and does not modify state. - This function is not part of the original ERC-3643 specification. +This function is not part of the original ERC-3643 specification. + +This operation will copy the entire storage to memory, which can be quite expensive. + +This is designed to mostly be used by view accessors that are queried without any gas fees. **Return Values:** @@ -676,47 +808,63 @@ This is a view-only function and does not modify state. ------- +### RulesManagementModule -##### created(address to, uint256 value) +![RuleManagementModuleUML](./doc/schema/vscode-uml/RuleManagementModuleUML.png) -Updates the compliance contract state when tokens are created (minted). +#### Events -Called by the token contract when new tokens are issued to an account. - Reverts if the minting does not comply with the rules. +#### event AddRule(address rule) -**Input Parameters:** +```solidity +event AddRule(IRule indexed rule) +``` -| Name | Type | Description | -| ----- | ------- | ---------------------------------------- | -| to | address | The address receiving the minted tokens. | -| value | uint256 | The number of tokens created. | +Emitted when a new rule is added to the rule set. +**Event Parameters:** +| Name | Type | Description | +| ---- | ----- | ------------------------------------------------ | +| rule | IRule | The address of the rule contract that was added. | ------ -##### destroyed(address from, uint256 value) +#### event RemoveRule(address rule) -Updates the compliance contract state when tokens are destroyed (burned). +```solidity +event RemoveRule(IRule indexed rule) +``` -Called by the token contract when tokens are redeemed or burned. - Reverts if the burning does not comply with the rules. +Emitted when a rule is removed from the rule set. -**Input Parameters:** +**Event Parameters:** -| Name | Type | Description | -| ----- | ------- | --------------------------------------------- | -| from | address | The address whose tokens are being destroyed. | -| value | uint256 | The number of tokens destroyed. | +| Name | Type | Description | +| ---- | ----- | -------------------------------------------------- | +| rule | IRule | The address of the rule contract that was removed. | +------ +#### event ClearRules() -### RulesManagementModule +```solidity +event ClearRules() +``` -![RuleManagementModuleUML](./doc/schema/vscode-uml/RuleManagementModuleUML.png) +Emitted when all rules are cleared from the rule set. + +This event has no parameters. + +#### Functions + +##### setRules(address[] rules_) -#### setRules(IRule[] rules_) +```solidity +function setRules(IRule[] calldata rules_) +public virtual override(IRulesManagementModule) +onlyRole(RULES_MANAGEMENT_ROLE) +``` Defines the complete list of rules for the rule engine. @@ -724,6 +872,8 @@ Any previously configured rules are completely replaced. Rules must be deployed contracts implementing the expected `IRule` interface. Reverts if any rule address is zero or if duplicates are detected. +This function calls _clearRules if at least one rule is still configured + **Input Parameters:** | Name | Type | Description | @@ -734,7 +884,13 @@ Any previously configured rules are completely replaced. ------ -#### rulesCount() -> uint256 +##### rulesCount() -> uint256 + +```solidity +function rulesCount() +public view virtual override(IRulesManagementModule) +returns (uint256) +``` Returns the total number of currently configured rules. @@ -750,11 +906,19 @@ Equivalent to the length of the internal rules array. ------ -#### rule(uint256 ruleId) -> address +##### rule(uint256 ruleId) -> address + +```solidity +function rule(uint256 ruleId) +public view virtual override(IRulesManagementModule) +returns (address) +``` Retrieves the rule address at a specific index. -Reverts if `ruleId` is out of bounds. +Return the`zero address` is out of bounds. + +Note that there are no guarantees on the ordering of values inside the array, and it may change when more values are added or removed. **Input Parameters:** @@ -774,12 +938,22 @@ Reverts if `ruleId` is out of bounds. ------ -#### rules() -> address[] +##### rules() -> address[] + +```solidity +function rules() +public view virtual override(IRulesManagementModule) +returns (address[] memory) +``` Returns the full list of currently configured rules. This is a view-only function and does not modify state. +This operation will copy the entire storage to memory, which can be quite expensive. + +This is designed to mostly be used by view accessors that are queried without any gas fees. + **Return Values:** | Type | Description | @@ -790,15 +964,29 @@ This is a view-only function and does not modify state. ------ -#### clearRules() +##### clearRules() + +```solidity +function clearRules() +public virtual override(IRulesManagementModule) +onlyRole(RULES_MANAGEMENT_ROLE) +``` Removes all configured rules. After calling this function, no rules will remain set. +Developers should keep in mind that this function has an unbounded cost and using it may render the function uncallable if the set grows to the point where clearing it consumes too much gas to fit in a block. + ------ -#### addRule(IRule rule_) +##### addRule(address rule_) + +```solidity +function addRule(IRule rule_) +public virtual override(IRulesManagementModule) +onlyRole(RULES_MANAGEMENT_ROLE) +``` Adds a new rule to the current rule set. @@ -814,7 +1002,14 @@ Reverts if the rule address is zero or already exists in the set. ------ -#### removeRule(IRule rule_) +##### removeRule(address rule_) + +```solidity + function removeRule(IRule rule_) + public virtual + override(IRulesManagementModule) + onlyRole(RULES_MANAGEMENT_ROLE) +``` Removes a specific rule from the current rule set. @@ -830,7 +1025,13 @@ Reverts if the provided rule is not found or does not match the stored rule at i ------ -#### containsRule(IRule rule_) -> bool +##### containsRule(address rule_) -> bool + +```solidity +function containsRule(IRule rule_) +public view virtual override(IRulesManagementModule) +returns (bool) +``` Checks whether a specific rule is currently configured. @@ -848,11 +1049,17 @@ Checks whether a specific rule is currently configured. | ---- | --------------------------------------------- | | bool | True if the rule is present, false otherwise. | -## Audit +## Security + +### Vulnerability disclosure + +Please see [SECURITY.md](./SECURITY.md). The contracts have been audited by [ABDKConsulting](https://www.abdk.consulting/), a globally recognized firm specialized in smart contracts' security. -### First Audit - March 2022 +### Audit + +#### First Audit - March 2022 Fixed version : [v1.0.2](https://github.com/CMTA/RuleEngine/releases/tag/v1.0.2) @@ -903,10 +1110,26 @@ Here a summary of the main documentation See also [Taurus - Token Transfer Management: How to Apply Restrictions with CMTAT and ERC-1404](https://www.taurushq.com/blog/token-transfer-management-how-to-apply-restrictions-with-cmtat-and-erc-1404/) (RuleEngine v2.02 and CMTAT v2.4.0) -## Usage +## Toolchains and Usage *Explain how it works.* +### Configuration + +Here are the settings for [Hardhat](https://hardhat.org) and [Foundry](https://getfoundry.sh). + +- `hardhat.config.js` + - Solidity [v0.8.30](https://docs.soliditylang.org/en/v0.8.30/) + - EVM version: Prague (Pectra upgrade) + - Optimizer: true, 200 runs + +- `foundry.toml` + - Solidity [v0.8.30](https://docs.soliditylang.org/en/v0.8.30/) + - EVM version: Prague (Pectra upgrade) + - Optimizer: true, 200 runs + + + ### Toolchain installation The contracts are developed and tested with [Foundry](https://book.getfoundry.sh), a smart contract development toolchain. @@ -937,11 +1160,17 @@ The official documentation is available in the Foundry [website](https://book.ge ``` forge build --contracts src/RuleEngine.sol ``` +### Contract size + +```bash + forge compile --sizes ``` - forge build --contracts src/RuleWhiteList.sol -``` + + +![contract-size](./doc/compilation/contract-size.png) ### Testing + You can run the tests with ```bash @@ -963,6 +1192,11 @@ forge test --gas-report See also the test framework's [official documentation](https://book.getfoundry.sh/forge/tests), and that of the [test commands](https://book.getfoundry.sh/reference/forge/test-commands). ### Coverage + +A code coverage is available in [index.html](./doc/coverage/coverage/index.html). + +![code-coverage](./doc/coverage/code-coverage.png) + * Perform a code coverage ``` forge coverage @@ -1022,8 +1256,42 @@ forge script script/RuleEngineScript.s.sol:RuleEngineScript --rpc-url=$RPC_URL forge script script/RuleEngineScript.s.sol:RuleEngineScript --rpc-url=127.0.0.1:8545 --broadcast --verify -vvv ``` +### Solidity style guideline + +RuleEngine follows the [solidity style guideline](https://docs.soliditylang.org/en/latest/style-guide.html) and the [natspec format](https://docs.soliditylang.org/en/latest/natspec-format.html) for comments + +- Orders of Functions + +Functions are grouped according to their visibility and ordered: + +``` +1. constructor +2. receive function (if exists) + +3. fallback function (if exists) + +4. external + +5. public + +6. internal + +7. private +``` + +Within a grouping, place the `view` and `pure` functions last + +- Function declaration + +``` +1. Visibility +2. Mutability +3. Virtual +4. Override +5. Custom modifiers +``` ## Intellectual property -The code is copyright (c) Capital Market and Technology Association, 2018-2024, and is released under [Mozilla Public License 2.0](https://github.com/CMTA/CMTAT/blob/master/LICENSE.md). +The code is copyright (c) Capital Market and Technology Association, 2022-2025, and is released under [Mozilla Public License 2.0](https://github.com/CMTA/CMTAT/blob/master/LICENSE.md). diff --git a/classDiagram.svg b/classDiagram.svg deleted file mode 100644 index 1c87a90..0000000 --- a/classDiagram.svg +++ /dev/null @@ -1,1458 +0,0 @@ - - - - - - -UmlClassDiagram - - - -0 - -<<Interface>> -IERC3643Pause -RuleEngine.sol - -External: -     paused(): bool -     pause() -     unpause() - - - -1 - -<<Interface>> -IERC3643ERC20Base -RuleEngine.sol - -External: -     setName(name: string) -     setSymbol(symbol: string) - - - -2 - -<<Interface>> -IERC3643BatchTransfer -RuleEngine.sol - -External: -     batchTransfer(tos: address[], values: uint256[]): (success_: bool) - - - -3 - -<<Interface>> -IERC3643Base -RuleEngine.sol - -External: -     version(): (version_: string) - - - -4 - -<<Interface>> -IERC3643EnforcementEvent -RuleEngine.sol - -Public: -    <<event>> AddressFrozen(account: address, isFrozen: bool, enforcer: address, data: bytes) - - - -5 - -<<Interface>> -IERC3643Enforcement -RuleEngine.sol - -External: -     isFrozen(account: address): (isFrozen_: bool) -     setAddressFrozen(account: address, freeze: bool) -     batchSetAddressFrozen(accounts: address[], freeze: bool[]) - - - -6 - -<<Interface>> -IERC3643ERC20Enforcement -RuleEngine.sol - -External: -     getFrozenTokens(account: address): (frozenBalance_: uint256) -     freezePartialTokens(account: address, value: uint256) -     unfreezePartialTokens(account: address, value: uint256) -     forcedTransfer(from: address, to: address, value: uint256): (success_: bool) - - - -7 - -<<Interface>> -IERC3643Mint -RuleEngine.sol - -External: -     mint(account: address, value: uint256) -     batchMint(accounts: address[], values: uint256[]) - - - -8 - -<<Interface>> -IERC3643Burn -RuleEngine.sol - -External: -     burn(account: address, value: uint256) -     batchBurn(accounts: address[], values: uint256[]) - - - -9 - -<<Interface>> -IERC3643ComplianceRead -RuleEngine.sol - -External: -     canTransfer(from: address, to: address, value: uint256): (isValid: bool) - - - -10 - -<<Interface>> -IERC3643IComplianceContract -RuleEngine.sol - -External: -     transferred(from: address, to: address, value: uint256) - - - -11 - -<<Interface>> -IERC1404 -RuleEngine.sol - -External: -     detectTransferRestriction(from: address, to: address, value: uint256): uint8 -     messageForTransferRestriction(restrictionCode: uint8): string - - - -12 - -<<Interface>> -IERC1404Extend -RuleEngine.sol - -External: -     detectTransferRestrictionFrom(spender: address, from: address, to: address, value: uint256): uint8 - - - -12->11 - - - - - -13 - -<<Enum>> -REJECTED_CODE_BASE -RuleEngine.sol - -TRANSFER_OK: 0 -TRANSFER_REJECTED_PAUSED: 1 -TRANSFER_REJECTED_FROM_FROZEN: 2 -TRANSFER_REJECTED_TO_FROZEN: 3 -TRANSFER_REJECTED_SPENDER_FROZEN: 4 -TRANSFER_REJECTED_FROM_INSUFFICIENT_ACTIVE_BALANCE: 5 - - - -13->12 - - - - - -14 - -<<Interface>> -IAccessControl -RuleEngine.sol - -External: -     hasRole(role: bytes32, account: address): bool -     getRoleAdmin(role: bytes32): bytes32 -     grantRole(role: bytes32, account: address) -     revokeRole(role: bytes32, account: address) -     renounceRole(role: bytes32, callerConfirmation: address) -Public: -    <<event>> RoleAdminChanged(role: bytes32, previousAdminRole: bytes32, newAdminRole: bytes32) -    <<event>> RoleGranted(role: bytes32, account: address, sender: address) -    <<event>> RoleRevoked(role: bytes32, account: address, sender: address) - - - -15 - -<<Library>> -Comparators -RuleEngine.sol - -Internal: -    lt(a: uint256, b: uint256): bool -    gt(a: uint256, b: uint256): bool - - - -16 - -<<Abstract>> -Context -RuleEngine.sol - -Internal: -    _msgSender(): address -    _msgData(): bytes -    _contextSuffixLength(): uint256 - - - -17 - -<<Library>> -Panic -RuleEngine.sol - -Internal: -   GENERIC: uint256 -   ASSERT: uint256 -   UNDER_OVERFLOW: uint256 -   DIVISION_BY_ZERO: uint256 -   ENUM_CONVERSION_ERROR: uint256 -   STORAGE_ENCODING_ERROR: uint256 -   EMPTY_ARRAY_POP: uint256 -   ARRAY_OUT_OF_BOUNDS: uint256 -   RESOURCE_ERROR: uint256 -   INVALID_INTERNAL_FUNCTION: uint256 - -Internal: -    panic(code: uint256) - - - -18 - -<<Library>> -SlotDerivation -RuleEngine.sol - -Internal: -    erc7201Slot(namespace: string): (slot: bytes32) -    offset(slot: bytes32, pos: uint256): (result: bytes32) -    deriveArray(slot: bytes32): (result: bytes32) -    deriveMapping(slot: bytes32, key: address): (result: bytes32) -    deriveMapping(slot: bytes32, key: bool): (result: bytes32) -    deriveMapping(slot: bytes32, key: bytes32): (result: bytes32) -    deriveMapping(slot: bytes32, key: uint256): (result: bytes32) -    deriveMapping(slot: bytes32, key: int256): (result: bytes32) -    deriveMapping(slot: bytes32, key: string): (result: bytes32) -    deriveMapping(slot: bytes32, key: bytes): (result: bytes32) - - - -19 - -<<Library>> -StorageSlot -RuleEngine.sol - -Internal: -    getAddressSlot(slot: bytes32): (r: AddressSlot) -    getBooleanSlot(slot: bytes32): (r: BooleanSlot) -    getBytes32Slot(slot: bytes32): (r: Bytes32Slot) -    getUint256Slot(slot: bytes32): (r: Uint256Slot) -    getInt256Slot(slot: bytes32): (r: Int256Slot) -    getStringSlot(slot: bytes32): (r: StringSlot) -    getStringSlot(store: string): (r: StringSlot) -    getBytesSlot(slot: bytes32): (r: BytesSlot) -    getBytesSlot(store: bytes): (r: BytesSlot) - - - -20 - -<<Struct>> -AddressSlot -RuleEngine.sol - -value: address - - - -19->20 - - - - - -21 - -<<Struct>> -BooleanSlot -RuleEngine.sol - -value: bool - - - -19->21 - - - - - -22 - -<<Struct>> -Bytes32Slot -RuleEngine.sol - -value: bytes32 - - - -19->22 - - - - - -23 - -<<Struct>> -Uint256Slot -RuleEngine.sol - -value: uint256 - - - -19->23 - - - - - -24 - -<<Struct>> -Int256Slot -RuleEngine.sol - -value: int256 - - - -19->24 - - - - - -25 - -<<Struct>> -StringSlot -RuleEngine.sol - -value: string - - - -19->25 - - - - - -26 - -<<Struct>> -BytesSlot -RuleEngine.sol - -value: bytes - - - -19->26 - - - - - -20->19 - - - - - -21->19 - - - - - -22->19 - - - - - -23->19 - - - - - -24->19 - - - - - -25->19 - - - - - -26->19 - - - - - -27 - -<<Interface>> -IERC165 -RuleEngine.sol - -External: -     supportsInterface(interfaceId: bytes4): bool - - - -28 - -<<Library>> -SafeCast -RuleEngine.sol - -Internal: -    toUint248(value: uint256): uint248 -    toUint240(value: uint256): uint240 -    toUint232(value: uint256): uint232 -    toUint224(value: uint256): uint224 -    toUint216(value: uint256): uint216 -    toUint208(value: uint256): uint208 -    toUint200(value: uint256): uint200 -    toUint192(value: uint256): uint192 -    toUint184(value: uint256): uint184 -    toUint176(value: uint256): uint176 -    toUint168(value: uint256): uint168 -    toUint160(value: uint256): uint160 -    toUint152(value: uint256): uint152 -    toUint144(value: uint256): uint144 -    toUint136(value: uint256): uint136 -    toUint128(value: uint256): uint128 -    toUint120(value: uint256): uint120 -    toUint112(value: uint256): uint112 -    toUint104(value: uint256): uint104 -    toUint96(value: uint256): uint96 -    toUint88(value: uint256): uint88 -    toUint80(value: uint256): uint80 -    toUint72(value: uint256): uint72 -    toUint64(value: uint256): uint64 -    toUint56(value: uint256): uint56 -    toUint48(value: uint256): uint48 -    toUint40(value: uint256): uint40 -    toUint32(value: uint256): uint32 -    toUint24(value: uint256): uint24 -    toUint16(value: uint256): uint16 -    toUint8(value: uint256): uint8 -    toUint256(value: int256): uint256 -    toInt248(value: int256): (downcasted: int248) -    toInt240(value: int256): (downcasted: int240) -    toInt232(value: int256): (downcasted: int232) -    toInt224(value: int256): (downcasted: int224) -    toInt216(value: int256): (downcasted: int216) -    toInt208(value: int256): (downcasted: int208) -    toInt200(value: int256): (downcasted: int200) -    toInt192(value: int256): (downcasted: int192) -    toInt184(value: int256): (downcasted: int184) -    toInt176(value: int256): (downcasted: int176) -    toInt168(value: int256): (downcasted: int168) -    toInt160(value: int256): (downcasted: int160) -    toInt152(value: int256): (downcasted: int152) -    toInt144(value: int256): (downcasted: int144) -    toInt136(value: int256): (downcasted: int136) -    toInt128(value: int256): (downcasted: int128) -    toInt120(value: int256): (downcasted: int120) -    toInt112(value: int256): (downcasted: int112) -    toInt104(value: int256): (downcasted: int104) -    toInt96(value: int256): (downcasted: int96) -    toInt88(value: int256): (downcasted: int88) -    toInt80(value: int256): (downcasted: int80) -    toInt72(value: int256): (downcasted: int72) -    toInt64(value: int256): (downcasted: int64) -    toInt56(value: int256): (downcasted: int56) -    toInt48(value: int256): (downcasted: int48) -    toInt40(value: int256): (downcasted: int40) -    toInt32(value: int256): (downcasted: int32) -    toInt24(value: int256): (downcasted: int24) -    toInt16(value: int256): (downcasted: int16) -    toInt8(value: int256): (downcasted: int8) -    toInt256(value: uint256): int256 -    toUint(b: bool): (u: uint256) - - - -29 - -<<Abstract>> -RuleEngineInvariantStorage -RuleEngine.sol - - - -30 - -<<Interface>> -IERC7551Mint -RuleEngine.sol - -External: -     mint(account: address, value: uint256, data: bytes) -Public: -    <<event>> Mint(minter: address, account: address, value: uint256, data: bytes) - - - -31 - -<<Interface>> -IERC7551Burn -RuleEngine.sol - -External: -     burn(account: address, amount: uint256, data: bytes) -Public: -    <<event>> Burn(burner: address, account: address, value: uint256, data: bytes) - - - -32 - -<<Interface>> -IERC7551Pause -RuleEngine.sol - -External: -     paused(): bool -     pause() -     unpause() - - - -33 - -<<Interface>> -IERC7551ERC20EnforcementEvent -RuleEngine.sol - -Public: -    <<event>> Enforcement(enforcer: address, account: address, amount: uint256, data: bytes) - - - -34 - -<<Interface>> -IERC7551ERC20EnforcementTokenFrozenEvent -RuleEngine.sol - -Public: -    <<event>> TokensFrozen(account: address, value: uint256, data: bytes) -    <<event>> TokensUnfrozen(account: address, value: uint256, data: bytes) - - - -35 - -<<Interface>> -IERC7551ERC20Enforcement -RuleEngine.sol - -External: -     getActiveBalanceOf(account: address): (activeBalance_: uint256) -     getFrozenTokens(account: address): (frozenBalance_: uint256) -     freezePartialTokens(account: address, amount: uint256, data: bytes) -     unfreezePartialTokens(account: address, amount: uint256, data: bytes) -     forcedTransfer(account: address, to: address, value: uint256, data: bytes): (success_: bool) - - - -36 - -<<Interface>> -IERC7551Compliance -RuleEngine.sol - -External: -     canTransferFrom(spender: address, from: address, to: address, value: uint256): bool - - - -36->9 - - - - - -37 - -<<Interface>> -IERC7551Document -RuleEngine.sol - -External: -     termsHash(): (hash_: bytes32) -     setTerms(_hash: bytes32, _uri: string) -     metaData(): (metadata_: string) -     setMetaData(metaData_: string) - - - -38 - -<<Abstract>> -ERC2771Context -RuleEngine.sol - -Private: -   _trustedForwarder: address - -Internal: -    _msgSender(): address -    _msgData(): bytes -    _contextSuffixLength(): uint256 -Public: -    constructor(trustedForwarder_: address) -    trustedForwarder(): address -    isTrustedForwarder(forwarder: address): bool - - - -38->16 - - - - - -39 - -<<Abstract>> -ERC165 -RuleEngine.sol - -Public: -    supportsInterface(interfaceId: bytes4): bool - - - -39->27 - - - - - -40 - -<<Interface>> -IERC3643Compliance -RuleEngine.sol - -External: -     bindToken(token: address) -     unbindToken(token: address) -     isTokenBound(token: address): bool -     getTokenBound(): address -     getTokenBounds(): address[] -     created(to: address, value: uint256) -     destroyed(from: address, value: uint256) -Public: -    <<event>> TokenBound(token: address) -    <<event>> TokenUnbound(token: address) - - - -40->9 - - - - - -40->10 - - - - - -41 - -<<Abstract>> -VersionModule -RuleEngine.sol - -Private: -   VERSION: string - -Public: -    version(): (version_: string) - - - -41->3 - - - - - -42 - -<<Library>> -Math -RuleEngine.sol - -Private: -    _zeroBytes(byteArray: bytes): bool -Internal: -    add512(a: uint256, b: uint256): (high: uint256, low: uint256) -    mul512(a: uint256, b: uint256): (high: uint256, low: uint256) -    tryAdd(a: uint256, b: uint256): (success: bool, result: uint256) -    trySub(a: uint256, b: uint256): (success: bool, result: uint256) -    tryMul(a: uint256, b: uint256): (success: bool, result: uint256) -    tryDiv(a: uint256, b: uint256): (success: bool, result: uint256) -    tryMod(a: uint256, b: uint256): (success: bool, result: uint256) -    saturatingAdd(a: uint256, b: uint256): uint256 -    saturatingSub(a: uint256, b: uint256): uint256 -    saturatingMul(a: uint256, b: uint256): uint256 -    ternary(condition: bool, a: uint256, b: uint256): uint256 -    max(a: uint256, b: uint256): uint256 -    min(a: uint256, b: uint256): uint256 -    average(a: uint256, b: uint256): uint256 -    ceilDiv(a: uint256, b: uint256): uint256 -    mulDiv(x: uint256, y: uint256, denominator: uint256): (result: uint256) -    mulDiv(x: uint256, y: uint256, denominator: uint256, rounding: Rounding): uint256 -    mulShr(x: uint256, y: uint256, n: uint8): (result: uint256) -    mulShr(x: uint256, y: uint256, n: uint8, rounding: Rounding): uint256 -    invMod(a: uint256, n: uint256): uint256 -    invModPrime(a: uint256, p: uint256): uint256 -    modExp(b: uint256, e: uint256, m: uint256): uint256 -    tryModExp(b: uint256, e: uint256, m: uint256): (success: bool, result: uint256) -    modExp(b: bytes, e: bytes, m: bytes): bytes -    tryModExp(b: bytes, e: bytes, m: bytes): (success: bool, result: bytes) -    sqrt(a: uint256): uint256 -    sqrt(a: uint256, rounding: Rounding): uint256 -    log2(x: uint256): (r: uint256) -    log2(value: uint256, rounding: Rounding): uint256 -    log10(value: uint256): uint256 -    log10(value: uint256, rounding: Rounding): uint256 -    log256(x: uint256): (r: uint256) -    log256(value: uint256, rounding: Rounding): uint256 -    unsignedRoundsUp(rounding: Rounding): bool - - - -42->17 - - - - - -42->28 - - - - - -43 - -<<Enum>> -Rounding -RuleEngine.sol - -Floor: 0 -Ceil: 1 -Trunc: 2 -Expand: 3 - - - -42->43 - - - - - -43->42 - - - - - -44 - -<<Abstract>> -MetaTxModuleStandalone -RuleEngine.sol - -Public: -    constructor(trustedForwarder: address) - - - -44->38 - - - - - -45 - -<<Interface>> -IRuleEngine -RuleEngine.sol - -External: -     transferred(spender: address, from: address, to: address, value: uint256) - - - -45->10 - - - - - -45->12 - - - - - -45->36 - - - - - -46 - -<<Abstract>> -AccessControl -RuleEngine.sol - -Private: -   _roles: mapping(bytes32=>RoleData) -Public: -   DEFAULT_ADMIN_ROLE: bytes32 - -Internal: -    _checkRole(role: bytes32) -    _checkRole(role: bytes32, account: address) -    _setRoleAdmin(role: bytes32, adminRole: bytes32) -    _grantRole(role: bytes32, account: address): bool -    _revokeRole(role: bytes32, account: address): bool -Public: -    <<modifier>> onlyRole(role: bytes32) -    supportsInterface(interfaceId: bytes4): bool -    hasRole(role: bytes32, account: address): bool -    getRoleAdmin(role: bytes32): bytes32 -    grantRole(role: bytes32, account: address) <<onlyRole>> -    revokeRole(role: bytes32, account: address) <<onlyRole>> -    renounceRole(role: bytes32, callerConfirmation: address) - - - -46->14 - - - - - -46->16 - - - - - -46->39 - - - - - -47 - -<<Struct>> -RoleData -RuleEngine.sol - -hasRole: mapping(address=>bool) -adminRole: bytes32 - - - -46->47 - - - - - -47->46 - - - - - -48 - -<<Interface>> -IRule -RuleEngine.sol - -External: -     canReturnTransferRestrictionCode(restrictionCode: uint8): bool - - - -48->45 - - - - - -49 - -<<Interface>> -IRulesManagementModule -RuleEngine.sol - -External: -     setRules(rules_: IRule[]) -     rulesCount(): uint256 -     rule(ruleId: uint256): address -     rules(): address[] -     clearRules() -     addRule(rule_: IRule) -     removeRule(rule_: IRule) -     containsRule(rule_: IRule): bool - - - -49->48 - - - - - -50 - -<<Abstract>> -RulesManagementModuleInvariantStorage -RuleEngine.sol - -Public: -   RULE_ENGINE_OPERATOR_ROLE: bytes32 - -Public: -    <<event>> AddRule(rule: IRule) -    <<event>> RemoveRule(rule: IRule) -    <<event>> ClearRules() - - - -50->48 - - - - - -51 - -<<Library>> -Arrays -RuleEngine.sol - -Private: -    _quickSort(begin: uint256, end: uint256, comp: FunctionTypeName()) -    _begin(array: uint256[]): (ptr: uint256) -    _end(array: uint256[]): (ptr: uint256) -    _mload(ptr: uint256): (value: uint256) -    _swap(ptr1: uint256, ptr2: uint256) -    _castToUint256Array(input: address[]): (output: uint256[]) -    _castToUint256Array(input: bytes32[]): (output: uint256[]) -    _castToUint256Comp(input: FunctionTypeName()): (output: FunctionTypeName()) -    _castToUint256Comp(input: FunctionTypeName()): (output: FunctionTypeName()) -Internal: -    sort(array: uint256[], comp: FunctionTypeName()): uint256[] -    sort(array: uint256[]): uint256[] -    sort(array: address[], comp: FunctionTypeName()): address[] -    sort(array: address[]): address[] -    sort(array: bytes32[], comp: FunctionTypeName()): bytes32[] -    sort(array: bytes32[]): bytes32[] -    findUpperBound(array: uint256[], element: uint256): uint256 -    lowerBound(array: uint256[], element: uint256): uint256 -    upperBound(array: uint256[], element: uint256): uint256 -    lowerBoundMemory(array: uint256[], element: uint256): uint256 -    upperBoundMemory(array: uint256[], element: uint256): uint256 -    unsafeAccess(arr: address[], pos: uint256): StorageSlot.AddressSlot -    unsafeAccess(arr: bytes32[], pos: uint256): StorageSlot.Bytes32Slot -    unsafeAccess(arr: uint256[], pos: uint256): StorageSlot.Uint256Slot -    unsafeMemoryAccess(arr: address[], pos: uint256): (res: address) -    unsafeMemoryAccess(arr: bytes32[], pos: uint256): (res: bytes32) -    unsafeMemoryAccess(arr: uint256[], pos: uint256): (res: uint256) -    unsafeSetLength(array: address[], len: uint256) -    unsafeSetLength(array: bytes32[], len: uint256) -    unsafeSetLength(array: uint256[], len: uint256) - - - -51->15 - - - - - -51->18 - - - - - -51->19 - - - - - -51->20 - - - - - -51->22 - - - - - -51->23 - - - - - -51->42 - - - - - -52 - -<<Library>> -EnumerableSet -RuleEngine.sol - -Private: -    _add(set: Set, value: bytes32): bool -    _remove(set: Set, value: bytes32): bool -    _clear(set: Set) -    _contains(set: Set, value: bytes32): bool -    _length(set: Set): uint256 -    _at(set: Set, index: uint256): bytes32 -    _values(set: Set): bytes32[] -Internal: -    add(set: Bytes32Set, value: bytes32): bool -    remove(set: Bytes32Set, value: bytes32): bool -    clear(set: Bytes32Set) -    contains(set: Bytes32Set, value: bytes32): bool -    length(set: Bytes32Set): uint256 -    at(set: Bytes32Set, index: uint256): bytes32 -    values(set: Bytes32Set): bytes32[] -    add(set: AddressSet, value: address): bool -    remove(set: AddressSet, value: address): bool -    clear(set: AddressSet) -    contains(set: AddressSet, value: address): bool -    length(set: AddressSet): uint256 -    at(set: AddressSet, index: uint256): address -    values(set: AddressSet): address[] -    add(set: UintSet, value: uint256): bool -    remove(set: UintSet, value: uint256): bool -    clear(set: UintSet) -    contains(set: UintSet, value: uint256): bool -    length(set: UintSet): uint256 -    at(set: UintSet, index: uint256): uint256 -    values(set: UintSet): uint256[] - - - -52->51 - - - - - -53 - -<<Struct>> -Set -RuleEngine.sol - -_values: bytes32[] -_positions: mapping(bytes32=>uint256) - - - -52->53 - - - - - -54 - -<<Struct>> -Bytes32Set -RuleEngine.sol - -_inner: Set - - - -52->54 - - - - - -55 - -<<Struct>> -AddressSet -RuleEngine.sol - -_inner: Set - - - -52->55 - - - - - -56 - -<<Struct>> -UintSet -RuleEngine.sol - -_inner: Set - - - -52->56 - - - - - -53->52 - - - - - -54->52 - - - - - -54->53 - - - - - -55->52 - - - - - -55->53 - - - - - -56->52 - - - - - -56->53 - - - - - -57 - -<<Abstract>> -ERC3643ComplianceModule -RuleEngine.sol - -Private: -   _boundTokens: EnumerableSet.AddressSet -Public: -   COMPLIANCE_MANAGER_ROLE: bytes32 - -Internal: -    _unbindToken(token: address) -    _bindToken(token: address) -External: -    getTokenBound(): address -    getTokenBounds(): address[] -Public: -    <<modifier>> onlyBoundToken() -    bindToken(token: address) <<onlyRole>> -    unbindToken(token: address) <<onlyRole>> -    isTokenBound(token: address): bool - - - -57->40 - - - - - -57->46 - - - - - -57->52 - - - - - -57->55 - - - - - -58 - -<<Abstract>> -RulesManagementModule -RuleEngine.sol - -Internal: -   _rules: EnumerableSet.AddressSet - -Internal: -    _clearRules() -    _removeRule(rule_: IRule) -    _checkRule(rule_: address) -    _transferred(from: address, to: address, value: uint256) -    _transferred(spender: address, from: address, to: address, value: uint256) -Public: -    setRules(rules_: IRule[]) <<onlyRole>> -    clearRules() <<onlyRole>> -    addRule(rule_: IRule) <<onlyRole>> -    removeRule(rule_: IRule) <<onlyRole>> -    rulesCount(): uint256 -    containsRule(rule_: IRule): bool -    rule(ruleId: uint256): address -    rules(): address[] - - - -58->46 - - - - - -58->48 - - - - - -58->49 - - - - - -58->50 - - - - - -58->52 - - - - - -58->55 - - - - - -59 - -<<Abstract>> -RuleEngineBase -RuleEngine.sol - -Public: -    transferred(spender: address, from: address, to: address, value: uint256) <<onlyBoundToken>> -    transferred(from: address, to: address, value: uint256) <<onlyBoundToken>> -    created(to: address, value: uint256) <<onlyBoundToken>> -    destroyed(from: address, value: uint256) <<onlyBoundToken>> -    detectTransferRestriction(from: address, to: address, value: uint256): uint8 -    detectTransferRestrictionFrom(spender: address, from: address, to: address, value: uint256): uint8 -    canTransfer(from: address, to: address, value: uint256): bool -    canTransferFrom(spender: address, from: address, to: address, value: uint256): bool -    messageForTransferRestriction(restrictionCode: uint8): string -    hasRole(role: bytes32, account: address): bool - - - -59->13 - - - - - -59->29 - - - - - -59->41 - - - - - -59->45 - - - - - -59->46 - - - - - -59->48 - - - - - -59->57 - - - - - -59->58 - - - - - -60 - -RuleEngine -RuleEngine.sol - -Internal: -    _msgSender(): (sender: address) -    _msgData(): bytes -    _contextSuffixLength(): uint256 -Public: -    constructor(admin: address, forwarderIrrevocable: address, tokenContract: address) - - - -60->38 - - - - - -60->44 - - - - - -60->59 - - - - - diff --git a/doc/TOOLCHAIN.md b/doc/TOOLCHAIN.md index 8a82720..0603622 100644 --- a/doc/TOOLCHAIN.md +++ b/doc/TOOLCHAIN.md @@ -74,22 +74,30 @@ npm run-script uml:test Or only specified contracts -RuleEngine - ``` npx sol2uml class -i -c src/RuleEngine.sol ``` -Whitelist - -``` -npx sol2uml class src/Whitelist.sol -``` - The related component can be installed with `npm install` (see [package.json](./package.json)). +> To avoid the error "Maximum call stack size exceeded", you can flatten the contract before +> +> forge flatten src/RuleEngine.sol > RuleEngineFlatten.sol + ### [Surya](https://github.com/ConsenSys/surya) +To generate documentation with surya, you can call the three bash scripts in `doc/script` + +| Task | Script | +| -------------------- | ----------------------------- | +| Generate graph | `script_surya_graph.sh` | +| Generate inheritance | `script_surya_inheritance.sh` | +| Generate report | `script_surya_report.sh` | + +In the report, the path for the different files are indicated in absolute. You have to remove the part which correspond to your local filesystem. + + + #### Graph To generate graphs with Surya, you can run the following command diff --git a/doc/compilation/contract-size.png b/doc/compilation/contract-size.png new file mode 100644 index 0000000000000000000000000000000000000000..e42a3717cfeb638e63ede7e5bb40bdd331cb3899 GIT binary patch literal 322434 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 z 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 z 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

    53{A5o$8)C%(&RuQ~mtYXW)A6j_qBOC@Ec#+* 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 diff --git a/doc/surya/surya_graph/surya_graph_RuleEngineValidation.sol.png b/doc/surya/surya_graph/surya_graph_RuleEngineValidation.sol.png deleted file mode 100644 index 334417ad2c98192f8c1b49621109c91f51fdb6d2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 29066 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 Y%;bUyau?-i(C0yDsGyWfZ=u8f2brkz^#A|> diff --git a/doc/surya/surya_graph/surya_graph_RuleEngineValidationCommon.sol.png b/doc/surya/surya_graph/surya_graph_RuleEngineValidationCommon.sol.png deleted file mode 100644 index 2987deda776935d2346070f6edf5f5c16808b934..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 132775 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 z

  • O zSU`Hf1=cZ^>aTlR_nstty7%_ptg_>4PTcWaF!vA^;@s!VbQRT+D#aWN#f`lQc_Axr zge_I!mkE{=mLu#VNehXnaT(RZbn_c!cx>k(7MgmQLT49`PagQ8^&I=y5;-Hu(3Z0qW2TO&HSdZ@P9}S(14E(T zdj(nB5_7PpYR79VvZ=B?%^1pirjDDOl~I$ylox8(nP#7B!vuRk$5V%Mms9J?_Kfu$ zC+?t2|}C{N7QGOLG)|{z%NwqlC?v zFV{BQ4-4fz4`$#uC^i7{;KoUV&RjYX{LX_~07J0?urjYHB>-(E+Io4YLWP z1D<~P@IWo)#%v*D8&qxmQvV#prnkP_5^Udkzc#Ee#-@I2TH!~bo?*+k>qH}wqu*@) z<1%nEB*}hkC}=#;KH4h$v*zd)FkQJcwtw8Pb?>v}XU1ec_NP%vubphKRr9!da|n9c ze_LyC)$6J7v}y9QMR_0lR&fbL;xHn$@AocvQgVYAszj?-iJUgr4|ssFA^3W8NJ<8P zvkh=Hjt>sp+|=Ox>tlxJX^(W|tnKfSc?s1C!R5eV#G}z#wBHL(EoGU18l$P))Y*JIm~G+Kv!Kc63ry zCVNV+fKWn8n0iswHl<(doioQbzQfoz=h(lWRj#f;{kx*wAHtL;rNKZF2|WUE*nlDP z&@zyKU=Fp5SVKWlA~=dc90%Ji@P3Af4$v+-I=W~BD_lGWmW)QRwd}}&SI9vJzv_36 zqf)UyVy98Qgt45=N&m4TH7P0bu=fQ$AE;V4u`5nInCw*6&SQ!t8O2tR!BXkKOT`0v zwpgK9$XbW}C!L5W`kBoJF|}lQmNnPUu3wb8$K+Ed47||x|E}B${}$K!fd>Pe0j>u3 z8{7BV??mVfE9i!!@r&q}9>Ea_fEq+<7%TzD!);!R@T8=qoDJ`5Day~m4;(rlkc@!Y z7wuLNB@aV%?kV|2pqmuLM_Rwf zA0>q4X+G1MUgws^d{y{M+{&1snKdjnzV9nXHYxE)B)+sGb1hJ1K&m27LzIV$J&7@s z{|@fCysUN0{l|vc!Ab6)_?C#4Bb(Z5`5BJ_*7w&^9zLb0N1cKo1+gpeK*|n#sskZm zT>(bV;I-m?vSS9h=6_yt01Sg)zZ$EGb^IJm2?S4KKr?qCX(Yn>0Cp@e>vjXu;&^r- zA>YSF85w7%O`Xi`s-EuuLnSw;@ny_VZtK>Ucyn)_mzY=zyMo?6lud9%10vMt0JLLl z<4YY`HR7=drBx=`s%-PKN=n%SdX6$#Oi&BM&A*VKy-$N*aMSm}aVS6%rqxSTd(m5z z@uxitsXI)TO7#2$cz3^qlb_dYh!vYp9`vq7`zlg1IK|FqE7~rlW($1k)iuz@XtM*Y zq!8pYkW~YS1|xV*efZMloTXIGLZ(2`PzJcZI_I;otpaFgmFbSE%v+!CQSvj>g+geJ%v&t zjV|IUED>2pk^YHA+n&WabY$iIUV{5R%}9SHuBXjK_Y#fR&h>Fn zmN>aO()3GwJIS|p*`z2JczE)VS&^CZuE|%%MeKr7$;DBNWXyfZn^FOeJ|6pVn zYTf7elSP$#tJbHu%G7o6OI^PZpppDU$v#j1SJY!VG(Ajps#Yv4mGPC+r>B%|frIpV z_IzoI>KT|Uq6&~13AWeVCHTza${N0Rq3~}0NKRIbAiUsjPGB}rjd06Ge(5ttVQlwlcfiic z%ZLI1FpqQ&JmkssN=jU$e*1gvDM1$Y;T?cJmxKFaEh()<)>^sDqjF2vOx*z-Re^cT zP>3OKe=xCc36qX9X#unK5%Ez-B>ah*y3<{kzp33OnpDAAaabK9fQ3Yx+Q0vT-qy|gJKQ<-& zSs?3Iq@n(Hlb**gAu*@3OL>PO3VXTJTo%`o?`HsnGvI}Rg&X8mG)2Q08TQh1U9O_YB9asm<2b$cLVU! zm0oftBjyH}oZt}-6;$Rho2iZ+U*+DPYy<6r5M2(JLIAWiJQ)xVzNbX4h# zBhv-dQ_Vh^ScVFg{tgyPm{qKWTF%|7+=Auj`38aO5@kBH@G1X2&2O4Nc}pBA&Ylp* zHuJ}M&Sm#_v?F)#!`^hcCFPG;`dFNOT#aX}@Hx6%Cx>IhCu_UBCaYEAChhy@($eu- z4YL0}3Mu7gNI{lHh)Or*SN@SNBj(bd!u2Yew>c|{_g|c5c^j{H1vh$VPgNo{`)sawm+c%87awjj%ge9F%h}fURZsf zXvX`NG)s;^ayrjDo*w3($mSianYaH1$YsuDI8(L+wt~Cf^KXZ39@7%K=h}^}x8^>>cg2RsyJ{qwL?cEyOklD~%Q2R>&MTAG)`CuQUxJXv9nAtp$emJyHLqj22-) zrjXs>s&J^BZu+=evMU@f{M@trn~7#B?vnVNQBN#Y>LKsb;xSm+2_BDFb4awde*Nb| zrpdr3RGS&Kmz0i1^()im=-(bgABQZFk%B=fD>{OCe5^)VZ7SRD@pFnx$cN6!{zf)Z z&aBp#2k7JH;5u>&YE_~C`=k-}#!1AH<~NBc<4z+*!>`dcX;PjzTAE&wzBBvtjt~?u z;5i#ju~5z}BpME`(%XnDjVD)oJje1oOe#m+lX`!MI$7nRUYd?xu~n|N4+(x0!2c1pFANWP9^yeee$F*f6#}!J|pfMr-nYiLBCyR zp+Uq@_%|G)q{3x$h^!n5sp!VP6^Vl6qT<$pSKndc|CI@2JaDFn2+L?eeE|mzXa46r z`2(8px$pA!PsMy>{zL-*6A*_y4YtK;>TSt;FMoI8nIEtI`!pm!;B-QbUJNaJXmg03 zZpy37zR;c|3-^Nxt3nJ}e&l)7x+rG};>shmJMJuMPPvvj+k~^M-ni)SmAsZ)y&oH5 zQ)>T|!L}_PIFk?)SpO#`xcOTlPM{=AyAGb&mx?d9^l{FGcwplzt}TuK&hQn+PJO8>578e4U@W_zrlsOxRj0 zYbZaDEsfAdpS&%Yn(q7ivSVSLx&*UMg>@ora7b8P_{-NX?@5#CWoI{;ILwY%$t99tc2TB+@9#Ho+t1kE(Ze!=QC;j?ge-GGarb4~kPVS->(}NGqonr5Or^0MHAFs$B-W3V z`=5aoa6nU%QS8Z__syZzhO^NX+eOojI0>0Th=-69!;8gB6|dXXcH+xjGNaiKj$@9% zIak%*u$x+F|9GXT@CXj4T}C%A&3{($Bi`Z=DX+Po@5qY!wz9J9#r8} z$#$Sen1`#a(>U3+ZZuv`o|RJssqOru>Ff7rBmL_WGNUggC(x4CF%cIy!j7o=z@usL z6?Q3@CIG_CN7PeE4Ve6Tc%Y*$SFWp8%cx0aJzlTBF0yq6%LNdJP~@p^s`vlpkJ@|N zgQA5>hv?tUjwAmIRBw*pJ+8>WmmL(d?R`P2?~)~#Mth+NsI)L#d9r^ zwA%--#+>yodA#o7J$z17UcF&f5%KcNz!cvU+^Eo&v*wdgXH7S1CYouT(Ye82tLtNk z%R{2X{clj<_bEXa}o-iN(c`;K0jRs4Y<~z$e!rVK>6NEKn%!Gt7pX21`O*^^C zDQQi)jkO@3i0im$*ZUKne`Bc2~4ME%w%FE%z=`iX8ua{psN z{yRb$@b5$SVLNuxNBhHBMCXd9b3kwk{TP}p;HB%%ToCr$v$AENSx8ghPuBr%`hb$F zMJ>ls(v|(<()~1L-S2uM%jb}M*qiO?hw1K!^I_@Sp+Z=3CIG z36%sT9^gI+WnjCxBc3X9#QK8B(-QfuhNdb5eu<<+ygV}}SzUDuORP%1YM8owylfE$ zN;f`dW{>e5A?l8mlw<|JE?TBIU;KMPwA8~2*>~Bd4t|6?JDq1vhZ@mGors=T)Fq9E zOnF2p1#cWDX}+U~NRswXRY+pE#TpNzU5eBDxG#5H4r1AN@8s^XqX#m+{WP$a3Z1^2 zZ{fc&kr|`EPNyuhz6~LJ%T?RxYOpJ!qr6q_8t!XT-lKipOS zHBJQ!l;Z^aW6OQw6)$vaEbTS0g^&txAx%FWE|7#{wel8j= zZ34bP&^baF8;A=$dIa6OkqxlE7y&9Abg5({CEYzd_?uK=Odj4w6kZ}mYir{YQv1Cx zlcLiH2L{bnS2&J5v1mV=6I@-P0$P{B?CgR?d5@>(@S)9C2Yyy4Qan+k5O}R+J|INva5M2cqmbN(R}isZIh|R@ zUVxyEr@`fw;F#MsPvt2QG-nit2I1g^;$(I53}2|*h--+ZR8NtKfQ7(_Ea^w9re98H zP;RM!CM48d;2g&40*g>Egv7gZXB6;JSy@?|T8)DtGd65YOpU(Rucf6CE;!VpuVEbl zSO<_gCdS51t~)IF9XVjxf~1d$xc9TsxVstNZrb^El6tF&5 zKY@b$0`>f;qJmL|WDdVbz0vIVSucUKE6+W_RIO)Xys4m-h=uj-Hp<3q-FRTIbysJt zjq4%Bt06-(1&ovu&kqTIQIlwlpg1J^%FR zj=lj?%R0VyQUO7mp!{Jw2S1N#X$4?E%%h=uxqH!(W4YoOOi3a<=xo$^J zC`eIPVB=0XuV-Q7OfI`0lB((bYGz7J_F-SU8(8)+CC-O%{M}S@rLvXl6q(5g^y?fWKE#iUa{rV59*%39yXD&6s8oRn-b1?sP?R z{HO8xU@B!lO;u9RvZ=%GnqLIei)k^+*1s>^Zfj{hh(LW=6Z%zFF_Eo=P48QFc2mJ+ zKT8e?HZIwfR4>VXwfpUa=pm)0?^Qnlr$Hl?iQ6ZN2Epiuq(mt?&fw%&C)UO&Z-yQfPn<@=~Czn4-Z!Yjt|gI7E5idxm!*jE-x=( zaYEDB)XWS_HLw6iK9Ix##m2}Ah>OIykRXytapR8fE%Ln{Z1sqJwTxPr7cgXqmo8x0 zMv5Jss9>(nrL(3ODx z1aHqf8<>n~Y{Uvn0MKo~>s`vdpHli(EVpTozECtJk!nm;Y$~OHEBDwNOvo+@dHq-5 zWcKmUVCsAcOISlgwj0DBi+x2*F5_BKa?gHgRTDf95n ziwB_D`%+aEKejhbz-1FK^R!v83H-||x&19lG?xpN_-TaJoz`&Xy1J$tDs$`&q}GN~ z3b=w$Z65L_I_`p+=qsg@y_%Mm@O#o2ZCSHOpgohK$1nI|Dy>4?hnA?q^RwsCgJRB_4EBs94z9qwQz(ERcf4)-gy$ps zUgWF69o1&F}Rsz6_|xSfQ8RXhQP!Z*T8ddcL=1Y$tWC^VPH(VRi{+Rq#~+AR;yz znuD{{LrL&355lH^vO75yRV#Q{fGq5P+Fo*q%v6y(rJ%5;!S+?NQy@6b*d1AHyr*@V z-a=95O09aD*mxVaNw?+e;UU*Rh91AEEK$7Gp2|^Scp=azYzCIr-wP{I+yi;R?+Fgk zZu{5^6l$!6I0?7~F%P{(v2K~Wce=;)eC;E3hm7|*Rk>b9Hp<|}E2iEW)P5~ua^X5<(sN1|4a_e8Pkkf<)M@`L%HPT5_~D z#%V%tU@(b{R`Q-D;1r>B3>E&L7c_)I<3C1ZxW_^TMuN-RaumQt=0uugGl9HDfOV>d}Q8%E! z|8Kq+QZht#TFfKvN9IO}vQdb%^bsq*Nhr^H)8>>9fS|Pf<$RjgFNVzLOctQnerpbg zl8)xU=q%XPV)xk6(Uw!xBh%0ThpQ0Es!+ND=)oU!?Lj{>E&xxedRlUnPvdL#Tdu6s zIsrT|UtaF0tO2Uha4QdtG%WBj6eUP%Fqb~NaWo^~`Es8arz;Hx4A^|jkF+gA`=H`3 z_t=Qh*Z4M3bh=LcYN0G2~Q;4uP?uQ_G$ zsf7Ekr`m<|^deGuh}^yAOwgCGcPW$(08;5Z_Ty00pbw(arNH*gwe*(++eR8)Kh5?Z z+B`HUg%%LAhPKkf$~?_5%bx%uMJdmT(Pqw;r&kXRryKv#wCPVq?{EJTa{zItk6(G1 zXAt~=euz7Al=Z69pl&}lb;okDhY(lgkgpK*(XUqaA3-F1rG#Zf8u|lmFL#?uNq|k8 z$kt;QaC-=!Qh;y)+hXoC-GUlGB+xZQ2)cs@37{3GYs&%l4W_X7Sy-%~nZsiX-7K+K z6bK+FDHZFq!P(<4ji~w6?MW0$m@MG0 zU{!F>V*dFArWlvOG(6mnNB>hk!hfbRX=uZR(Zbl+6t8w;}(OKzV!Vf@YKOw95`Qu&>bhC*+`S}5^} zL&>4lafF2D58ENzesZNcEmRc{+yJ>d|3@gkd_TH?a^VdgYxTa_^%@H=UxV`^1d|gd z%X~vCPGGXh1uern_oQ2X3jrn>5vr^>oqOJn{Cx2 z&Kz+#b2_6DdBVx!q3=-$u(M*ne^1Gr&_;q*HURnn$<)H0qTl9yRx>QJHC?p~P#-^k z|2pj**n41o-N!=%fB_Ux$lZ5=L-7a*AEv$dBAEuzL;|x`3W^IbUm-x=ht4w~m5u;{ zV6VXQ+6*AQ({KbrU~fD1xqr-R9|iNWriKi9)2^g~R8&Guu?6GRF=q94UtKx1l6@O5 zqX(23IjR$LraqJy0q%o2?^aNo&aGSK&s5Z*=#*0g70VimMpY>lExRISD~5^(IV7Q$ z#{Eu;*j-pj>p4uL_eTe}&4bTv3#Bu)G&OmwzA>TtJO1cI0rzs?jDg$G>dK1G?~dC5 zEc5v>1AR4!y|)Pz??_xcuZb$_n6gQs zmFu@QLBtps3@NQW7_0ysX$h>QUc4X$c!R4eHMhkxK)yhP4E!&>*0$^unZoghdQIQD zyYs)4+~+VE{aYq&W&g5RaV_6&61kVazo z9;771jrjhZa2d@x7XOV^ch$(FkANmz|48%6Y(9mNKmDYe#|=(wo->6?n3GcDGnc8 z9Rx=3Fn4uzA)J*;N=m>H0bbxv`K8@{^5S^%Z8zOy#lwLi^Q+^;LD7sqi6@mg>I-H| zbuLfpS8ZHh%bX8E52=tQJ>x;L_u>ZFn_kY@E?q4iUU0i=-{L@@_9HGeDYtw|x038} zYvtAyQAKl_3mHXVL|hcs&)YMFB@iS>0_<5p0Gzb;0jE+kKXV#c^;W51NTep{{d+vh zo@39yhlg&P+lyQ3I%8hE|HA^j#IPTrCeZ4&KJAx;`9u2FV>EgcC8`T0!{sk> zJ0p`oQ6PTsf*laN;C_POT?0Q3;fkC(2y?Hjpb#gY4<1LS0F*k}Te9a&UId0Cp!n|w zAaZ$V;lsS8348It83%d{;7J7@=zkXtd8&VXkhkl&z_1YyWjt_&_#7aY)QU?E3JdI}s`5Q~Nd zn=-fxlZbG}9v&X>Ft-Pc`?@i z__8f7E@GkP!q$vnEvMVIe!KYd(_qn>f?W*iIE3$P8!_Ufcr_YITT1Kgx`)^Uq%7!& z6Ca8kpMLAu_P=d9%L3skh@>w`@-X0z*tsU3+PB${$qRR3dEGr_;+O zJ&@uTUFPD<;+*<6@4_j1FJSZ1xStrX;&gauaB6lNSN&XG1{w+t1qA@57653{`uhI3 zSTnLX;1WdP`Gr&Rm8)xgp6)lp6a8hZV;99qA72EUZef8&*w6Ae%*dzG4`(ue&ehdN zT3WWN8f2ix_4@S{IQ*9Eg+@g!0kIuWKj5xJg^P`&Xbk`W;SKAaMh| zayXOa{{7pupVtoWNPuHvaoaV}_RtVWayWDLfa~fk(CSKtorXs%iRWV9X{n_(rJ5mj zR}4)fGp*N@Em!HR%Pq{)vloH@W9GLo&SvIj0N&~i94pB`2TTk`cfnSga8$2pi8@Q}sKv*Yc|a@!MLi){zdg3N zQYBP!tja{DKgv-WoKY^Ep>@Fw2MxH=fd>fS z@xfsn@q0aKpZm3CXDXVS(s+^))^O|t{R=Jo%^Renr8nnRvNaAicOr0T3A^Vo!lma}^p7y`8^BLal#Vzpi8Nf5JAUm+L2U zY&Ych{uRM97uV0~B4E~o;FgIjZe^iu|n0P;079y3yFBJA*B@Lx{Mtb^? zZsT})7f29b@^h}0+RF9K??G3lvC$pOSnGmsKIlSASfBfZp7=luH2Zk$=3kg>M8cj5 z3{Hsax_f%=1w4?_^kuA>xA+yX_+?7h05-SR;M9nPY68x~knLb&VYPUj%=pzx=Z+e> z^YAvqcv7u9pDwm`(mpBKc97$eV1iP>o8wP7*pDCIj5U1Y{plcP317CB+kN5rXns&w$^@ zf@DYSKIXP?nA3nb9Owx>FV{Bn(Ck`hUP()6r+|lR9n43O#et8feNu}URMsCKEXb+K zcNg{QygxQ*+s=`%JD)?=1%`t_>|-N-2gEDQa_tE?IvN}K`fosH59d7iU&4riW(6?j zSD{1+#)K^%hghfp&7=S-{}c=^s8bwojLVcx0Fi=#R$bU=U~mwd)_HrH1I8aN8DPQX zn$SN>O-Zqu8D{`nEl7;w`d3^s@MymQ69mo(5mwfIPDVp+a!7%I$5p71{Bv)w9W<24 zBh1-J$HvF+NI*>#Kw6;vR#2dMZBZO>7p?z*0=%1t_sT|2Q?5Zj>s(tL4dEyV5?*)}S*byH<=28zf>y+cCCxbX(BKf4Wdu^af?HynYWCmoU2UhRZDiTNj20VP5 z&i*bWic{4Uwu4LL71*K!qC)%*PE#WlYPSmQ9F`p3x{1pbyV>LZu6CeAj6A|>@~eHZ z{y1#)2q`aMm|ht`g}u>rCq+YmEQUUFj|;GRmX^f|jB3T|&`L-cuh6b5fu#$P6a;}v zii(d@2eF;^5@Mh_P^)e0qZjM4lnELa2tsjv1{W4gUafi@5vwNmmBmM0yKbsED8272 zY715o6!_372yB%1|hL-+?<5<~(v5S;*58N!m& z-R8Xqsl;Gd79t5gNkXmqH00z>=7TAa%0tarhet&C)hd|DZA_M@f|ZYcB~&l!AIOtY zQ@>v6Bckl-2`2+f;@E@)fcJd^X)=I_PkMB2Vn8OImYJFP{{07lBLfW$qG`ahzuxaA zNoX}fFp!exQ~zJ$*VDhydj{)rv~1cZK`$6*z~eO_02w224C;LW&z7x4zz%q&OLs@p z{r`s?)>-}TJ0uPf9u?4+trGvewnJB=5 ze6(%)Ea(S&zK=hdFact&;n{aEh6&2~*x6id(C7=O8NkUMBzchQF59@86YyjTj8;Qy z^DmGwoCOwe{9S>p?Qu)$@igYcplae?~=C(JL!P= zArQzQ0pf+61MUpgGaQqqW@c0(-h2!UW;4}hF0OlEGOqQ(@Pa?~ z-F-vtO0z;2yf|#mijcKY{lrAC)-&FJuXncG2ta?dsM}+;LzkoTq5(Xemh<;rt!roQ zsC93o9YO8_I>2|9@4UTpg?b&i85y1O)xp*sux-_E@4GWY*ggw;0Nf6s<_*V#l+p#j zxd~D}lQWgVaX6rTAf<#JS!Ioq4(8o>dDtVVC@4TnLSAMHs{WsDuwxwp|JJeCO~q$~ z6eqF(EqmK$^)}6EH2t4J-fj*KmaUA-Kp;LwBd)xSrWT2Tp*EhiRZWfGz*kSmSTa6c zCzG08Sd8XFi|NPoIoks6##La$KsS%ub=LNeEs>NILor-AkPB9nz4W|LI~<&o2a)7r z_F7N$jf{Rkyll&x3TIRycviQ8;Lag)9DOfBKLYxiJXW<@Amxg9D`bb@A^afL4zc!l z5XA$d)E;#R4Hy_#E3{XH-Rx3-bd?f6Vp}=f;r1?3Ee5kdu;&G?FtEHRtDDh35c_@l zvqNxs1W3f-{V9V(0p}0nLW^rC8~z8RuG*}1D24>vvWlj8j82RxmR|;x*Oj4el3X?b zh<4&pViYNHT4q};+mcwTBsMHp<#K``Bj8%>K%fXgR`UDzhPlqLv#Nd6Z3Bl#0GUI} zU6m;ga0WnKCKn8;=g}^A?eIf^?h=GQZ*)PR6{!WMCn`l#(09@D*h)DTJyp~|$SE&e zsbQxC^llH%SgD_vy-*Q;ip?zuZD1a|BWSepTWfZw@e|cw^{8d0R|uYWfqan6!S5B!*=%*9$pb97B{lf;Gb##5_Ew+QS$uA z19ngKB>)h>PEbCz1!lG{`^~>T+5)*KP;{!?8-?Wq+5HYkD*-JEEa1Dk?g2IjIxz`# z@3ik1tDi%Xh45+yT@WBwJAz^53Y<{tHXMxKj%R*rG#vF znc!Q;(51~^AyDh~7-*sMRKd9ih0fHjf#N((x&YYU7S;ia2ndeGe`WlY`os=Qw|Q4B zP2Rkn_cuLnNQ6j_flQ;kDj11DxSzW++S4Xl?=`gxgO8B!0+4!SMJ>wM)-j|{khFV2 z)vf((m7-r@6UJSe3&AlV%q$2RM#an{yoF9%1-&&dNncli zm92mzQLP^xQg9CRf`-w#x$ir+N5tfTfc^ukA#*1J0DRSam?_5+;;=9VTJM<`dw_~; z7&_PfK+E^Sj+xXN=KD;TJr5~Cm4?+oWU6T>Q}ntES5!8COj+bCFW%rKbX&5>5k29i z(QloGpV)LA1l&hfHZ>w^YCOK;d0bzGDW!As;gHq2^bWsF6YdxEC2v0zBcv>&c`OgH z>3nzhuk|LYFzg5)fQ}&dBFm86%-}F8;MCUQC~p*~Oc;3zMdT!w$)CfMeVurW+~_Eb z2(b&G6-Yk^WRa<>6Q>|Q!B7H)l6fIx9oo3}^%=ksHofBHRR@!j>E*U>Ft)Iyt@7JC zeK%#02>?hh6y3dYjRQJB6Z-fdM6dLe&sU>ZPm3Q{y>4ueIgBg9nSU;fpB+|>bF1k z);Bi+HkL`ujQm4lOk+D#}`H=|$igRxp$w6r7)up8wG(qh=o^dCD=; z${c{o%lzxIfpx)r^MyTM({zeC@&F(&e6ANFciE++igR-(pn3TBFV#l{R(BLmvX#k)kqprQr?TMY6w;k5 zPpwv_F`KI&magC{Q8!wlzQ2OP6{u{8l~SeN9l?BfDcOVJVzWQ2^Q!?Z+CuM#06gH7 zz2V6djpVd>Unb1AGb2)fCiz9yrjC5M6sDYU8dwt@-Ms=8gbQ@D2k+({p$`1MOiysh z;4>crehBne0V}*lGuYcZ15rQJirKNepqvGvB!~*=|COq@P|gsN1F>JvqaumykcfzM z=u`lSYGpkKW|LbFv1gLWj9VeUg?6&ru0w_1G9<4WEX+a~AAP)R3zbqnu-i%o)T8T1 zqYapE_Y!!TGqOSonK1;d__ug773mdf_uw&*WI%hJfCV8oio;l>pBb7Li0wp!)%~?FvdCLuven*V_wj?t~MIw|{e)dG-G} zqLy9PNWlnsLzi=x?kftiloT^Yh;j3Cv5!tFajZAb{jx&jLv^F+@R)OsaI*7X#x86F zYFGc|>R%Iw2wHUd8Pg}HJ{dwD<}V@OnNc)95nLNc-kPceaX@i@RBVt+hH@x-H3w{e zbI7CI^x8Vy%_-u;zL^AEhzszO(mzv19^+fKTy4#ziSfTZmJh;}> zYP-R~-N_!n9{WeC#);D3QKEtM_%MF6bdPB1+G!`zK?7-?0Y?s}HSKqGcud6OC@M7$ zX#$H=i>jHK8IYQ2N&|=u@2X^S5lpm*5Da-) z_K0mLGi_V$>7hJ*!#OpHdtz&pqUL@Ua2`vrOK zs;VtJvmaw)eQ4YFamBSXzSOZCHemfU4Daa)9qnoP@jl>XZOmTW5|{{zIIM`hsK?o* z4s7Yf^uv5o_M{PuSKTZjF%b}c=OB}aV5pKufPDmrG=k<0)Jk+f_7cP|i+Bi$f$au@ z?JyWHq5LkJaWgi=XvnZ8cA;Yfcv3D-&a9_gFrBFW7UcMD&$-Kk3RL9Kc^^eRSO5Hw zZIy_~@m*MBem-SbC!T~8KM~Q&xYaEc6_N5u8Zxqw@FOW{RBm!nxy1-Kjfao!_xJIc znNhZ8n6Nwa_3@$JlBrxHji5}CMx(70z$00Uh&uUuwyY?(@APr-NZZjnf3|vYX+ zV?b6}{DI7|${`bHjz>Lptwx)R<+rhWGcqY2%}4=wisPVWDu|d(D7<8f8oYQBf)^GV z3Q8r4R#sLJ{=>`Im`<*KelBX1yL@~DAfg$uv9JDl$yb7=(g-&d85tOa7eXe2=%|CZ z=0gvFbs^1*-%SbntVgA2O^9X)cga&mjz#JJmYcK@^;VAs{jD2Vv;oVq#aK*)H{x0D zCf@#a@J3aRIewcvUlk>9>=V`0lj*JQa?N>T+WvmIcY$R^cUf3uYm#eU$i53?g7N6* z7g>s6M2Tm~nmDi1_EnEFC_V1^viLRUrugYe%3d43-uc^49tj;N+(TTFgXM8i7DE`@ zA=CRx1A>K*((Q&KZjR)YX>P%N13z&l@AW0RQZMhGV*F}%v~sB zY)lnAK2=q7#y6%zJ3A$!dii^I?(&T(^rxxm(s?s*#>igcQ);7(H?wp{HdlrP$Fd*fN|1Hd2%s# zLYe%;@X-U8nWh6@(C484tUN*KNw(6O+UjmyY(EyRnM41R?%eFyPV-8@F|2djHO+`U zH6qLMmjj*%jd{Z|&g~x#csvw#4Fs-&9YgyU*DMiTMliM#;>GH3Lqgu@Qa>wZsymm) zo3Q#jIEgp=EPVbzwEW5>&2_nUiqR{Je$`-b(!1$-lbh@1_N&C93HL5sB<&mROPPR2 zh>ZoEiQ$3{5G9K3{VW0;dg!`=8z&PX0OtWSPmd1<;>7P}(6gU?T|4Bbj1;?T_#CWc zZMGN`$8m!F)4}l(sGm!FZeZ~l+-28*a1!qN;lMXw{tDcqX8=q*2&Kmz*P2qO3{r>U6Qg9^4-@maS=hT0suOc3o7|TNeck3!>RP#6f7F8q#?Z`^!jNyjU z4;wBUwODy(N*QC0?iEfA2~LLitA{*K^9koRy)L?b)te%ljgw!M7M;Eo*A0s!?s?=G z=E>dViYt$!q@47c?gBY;mA7jZ$%3{;zf!4ieCyc8*fcj6ItE2WXa#-Jb`p2-KHPZ@ zQ~{{U$>%>~;zn!|BUW|r=nO6yLL`p#0iJ$jU2_6XA!;fjDH*A=t-6G+x8p|!*s0qJ zsS!m@;Y(2(wlPv@(e(ESuga<7ZT+Rt;1@*iikn^Yf$^?(QM^qFh3uzQR; zUG#^pJJIyagc#_4hN(K;#vE8_hzqQ>!&B@E-zjE|uMZ09BmT;;9TQv6pxUlrbS18J zmHx@+Bl{16Fq=*SZ5wVBqcMrMZRq>R} zq3~3yXD+FqrW)d1NJyJEa+n)g`98N+)Xl8oAOAX4WS+{5(XL6cdP;hMnZx{_cO4^* z63#zlQq9P$oh|aYV{&spu(CwaI>nfEBpb1lAhysq78tvXq;}uh;xaE8A`a`$m2>1p zvCfEvl5W3r!0AHw=>5-U)f(d|cIfpm@5YZaa(xgWATG9-@Wv*lu!is^=KX@rJ} z{O_IL?GWD@;XOaSWy{%msb1`&ta^1wilHSCXn`m$Kz;d^7&nR=bJ+WpJX@!bixA2l z`~!V4+9v655zVwI|Hc97nE`y=!n+PWl-^R?vA4!Oqn}$yBvctC|2qKWNH75XMpB{u zwqxSPJ<$Pv$q|o+0-KR*v-Vg1eG8JqbD(e{vB+P3W@|Mto}*E_RJ!-h&-$P6A5_SY zLJE-X20SzRiIMoBbiTSg`b5x$;Qx+`r@sZpCv1=6EuVSh@~iQXzI1FhWbOa=|3x<9 zx8+d_;I6l58*wZ#l4@j!5B&G~MgdoOC9&)`U%N*ZuE64+u{HHL3z_#vkkR}9yrbw5 zy!SF9ibCgoEq?A_=BY3Eapi5L&++3q7kYE|Q$2 zxO(~jE)Ewi&PtQ8{o8P;YJx9oo%zBlOS~k51ls@Z?%&0I3-9naW40y>CwP8DKINwK zgicG2)$e~3_*a}8B}-Gpu8i$!iF8@H&kHBFwLzEqf1hAM3b*&In}xzSg7nLNymb77 zwv|r!jv#hs2HT)8C~LrLB<1~&3M4V}v9h)GW6IXIChSh(nw?hnY~Tk&nce)(=X648 z+5pN%|1TB+@00MC(I9wXLQnkB$CMl%Bgb4E9@Bg4fXP=qT$FK)q!`-*JqYcvtqy~s zYA=+shbUgBJnV;(N|ZoCZHy)dLr@~szi)kW?q@MOANH}EAA&i3oQvl7&)2(K&}gxY zHs5IPJePTPhf_XbRWTMdPePg$D@Q_JmJXlRw96Ll2^#I~-QPd;c|L2STXQr_E2Lmk z`qLcV3vfVP{Gp7j5&9Ml}kSVKI7^#yJ(O>lScFvc+I2eDewrgx?Nm|sW)J__c0 zss`462<3^ORUjC#xS6672ck0;iVr6Eof!j+r zYBlSpcMZwv9?7WhMt-<7jTYS{JSlS|V>OCbaZvl;zJ+ZMP3P!b6St{7 zQ16D#&ty$-bHn`W5bC)0x^D2Fo7x{Fg>n4d`8&R_LF%Ppfq5?rrIo7HOVD#z{1p~u zmr?JJg|UUo?p8)aH&wl75Jv$i0e1UFV`>5%R z^&b@z=~FsRj%Dsh$kmgB9_j8cOAPJSmnkwVG#=CE4m!$n4pXJnbbq6BS*4>YNcEHw z_TqOIXy^8A#%hWezg4YPb+HD&vruVdovx0PYQ;A?le0Y+t?|4mrQR+V9{=J0dyJ6Q zN9M%1bKGRM_4D;LKCw3TcntF$HopDymT#PVm%uC8_snbMM9@@_59_6$M~nQ zhBGr&bU?sHYqXlsUcQl)NS-Vs{6u~+)i&vG>(7fy4FliOOV=Eap8*HxioDL_>D|nm ztAs9z)3}EV&xQPsN|Za;|0_notzd1jVyzT7-?>JRnMuO?s5`d$;mbMWg`b)UPyJ2f zwo%40y()Ko>Mv(1;|)Y-S4T7HUSq&jhvft)lLqt64yeKX2MX0Mr-lE&$kd;)Y2nf1WZ@JV=QLOVbYSn9nFJGIo`ZgE_7+}m1Q z8^3gTUYJj+$8jE;qx?GZ^lWgN*K&JTv5-%uG4xZqeKJ&n4wukDEWGYeeF(*qW*Ul5ec7i{OP`REQ z@8!#W)N`T{7yPw4$TpAC@cO@VX7ttJc~+n&>z{`%Vt?Q6`Ulk|5)%^x6vqyVe~@Uh z#IyXGXjas(Jc0JW3;-8FiySg+>Vtz|4IIHod^DElj8)#k5+NOp`uZ(ViN97DPTfQG z^>Y#vCGV79nzIn~ap2G0sI!c~^&2>-^-5X-=vH-w)?m+{I zQ0j3tBeZW90Xh1cHgegxiVrZ&K%R;c{xkjXIS9RISDS`TSnWUxf6rPq^*MHBBx$4X zhx|1`6y^OE6e0T?!_V(lQT;q?>#%qv@wF%773SO#Ncx+13bK1sgV-DJ0vVxIGF8b8@X@=zmWevWJ6S zX3sJepTnoEWBnF)N9YEDV!NxB)(o`Y4Nf)@+DenW^R43biY2lwe z*UdQ@ZO<^Yu>17s@E4kHBJ!?HyvHp|b`G=?v@yLLJ0%s~#3G$H>O6YgDcJrY@@Kgi zhXpc+HNLW&WV?vw0K6PzASNsACpKL>a4L*bwlw8;`Y1$y92y>uMclo--{iJ;1y~un zfVR`0nC(kTHWNi%ANq_^-k1m5^en9!H%1ZICeGV`Q({%P+=~x4s5CX*z`t6?cOeo` z?j{;i9Hvh4+zFNaD`R{?!?$d^DbG_Ze`dnBGuAl&#AVfC>OT+78$o=@@y$P9|9n0- z=9(vqcyPPNF#u0W1*{p`VH$5^lgGu!cZ=jtZ9#466@VQOqTPV10y_coH4*x-t!)!*{T?xmeGQvSK}i z`UAIOPj@$SJg>lKYJMkE=qW;D6oFiWjy4peMO-$&kykn|0C*Vm#lTMnJObiDg%xz; z4cYC&y>?EBe`BzO_RZ;LFiN`iww@PxOwHLer&LvPpFbpDlS+7<^xET@(-3m}25V$x z?S7q=63)zD${?lc8Ofp89|)2m;^ju&I9V%jtLOKdowv{8d5k&(K%OsPxnEfOePXZP@sKr9@L5R8%TFp>|Db*xY90%MKAQ5!iygw>1 zVxnpX87+ce2mtMm_LgX9xk2s?s<2SBw4143DK5+?(Y^^!1dJ3IS$KO3NmxJ)9$*sJ zo28XNL>l|L5We4YHvo(B2{Mt&lFMJpaw(3n9MVuO{i?sXp^u;1YEu*&z*nKI&8Lf!-M>l0T35N7qWO|>ute;u-AU*2{xtequ{U@J zo~>xvim5!b0npWI2do7Ex*R|1y2{mQ3!C-D!7qgWg5e6l_m`~9c-#PuXzQE~8q3LKz2VVZH+gaE_}BS9_TT%^t2>bj#XCDje&l#-!=-d@W~yOK+mfM@)Llpf^z zXb}*@yye;Wq{?`=o+h$ro=oe&NWIs%`REFxI~K>0CZKL!`gLJr@H=`8)39GZ|LPiq zMo|##lHWiQd)HMUiOS*H8Hra-;EKwDGcRsZOW}6G(SG~z)FBi1(8EC)2_>yDwu4mA zP6iF-!y8OD+5o>-ehgVGa%1njT9Zgn$qFzgjB=dr*qiWFt$|eyAYuUF1WgGKSQpzUrD(MI zs%Kl3?a+|{ZT~aCUKY(3K*cW%@4)>EBal2IXm~AEp}=Ymq$$J@KzU2vD`^X%8kG zrhq{s@g-ESwQ(x2S+}u2_>3~ZfABre{A$nNf0>lXz}hD&_*2hc_+6I|^}zC7O88x; zUIQ87N32BU!x?EQ${)t^;a8Uqw0N{Rl4!Ky9mapFLI7rY=OG>GO2}wKpmIv;R5&qj!+O692@v(H4)VHaL}gYSi<~UEbTy6H~E1kESh2b}1_M|L{I2Mb!;PbY^ zjfdaaDbXL&l1fNCooe5-JSVrjrzWMH|tuEu{*`kP9%tmK_Kq2U!yZxJeQrg&AzOP@f= z60g&do|yMf##lK~gax7uiF1F~`KQwDU57ht6h@`zBaw6V55)Lp&UiXCb>8C3cbYZc z)V`Y|r5nVWBY9K$Q#OB9+Y6qw4~N~gr_%2)YWS5Tw}6dI%~ zn5~9WykOMDJn@E94odIEIe{c-$dI4e@b80ZN(=0b3#q&+I233??zs%&n^+CbT$h#Jx=1LL1R zaROOQ-QpA5P5sh7!f$`cSFH~(e?~%_vFc{J@6PYiN$K7Cq>=RW@=0sfb8DKA2>~qz zeNHm#FJ>fw{g$K6!;wHj99ZCZa8Eh$jhs|9Zdw*o$_R2-L=ShkBs%gNRXO+OI$b42 z+GIJYXesVE**|u#P0eoyEc)B016)38v;u2tjg#0PvmSf%e}K$ zGYhntTmIxat2BmeKbAimVSVnhS}K#?CpP9N(vJC{uFqU}bHYJ`L!F=QzZRwLwC*&y zGg~uzXX}nJcgMusY)5IMt}+C}|0dQAx{tMQ^?CIEeNpif2D6Hl!}GF}26XB~T2Sy& zW&C@1&iM|k5#$R;?C|b~N>pfBw9$@pH!#arifeFCx(>x%)J@og6mi-OH50j(_Yi_o1M*t4Dm;`s!&2|DYdWb zv^Wy45Zs!}l%KN^#o`=X!V$IB!9b25kWn3tNj5fCsln{*LN+!~WS8fp!DUTQHG9H} zuMQs({-VL9OBs=%rX&2t`H{94NVD}uh_?2{F;}K`8DL39wFh@$EbP= z9g#il!oimzC!`di68QOT*0#vhirqTmSw0*&*vCMq8s7vNqhTA1AlTGg`t!ATnG@4r zCjD1oLi~VJNQEO;sE!r>2nQ`hf;z3AAi77GB95F?n)!NqGTg2rSEaaiW0um8O@|66 zm+?Dzzzb943|ZGsP88{+^)Gw1zV>YbR?pk`>l@PRF;_AjXi-xX@`p=qZQ{uRED0n< zQc|!?i=1j1c=;R4T=sXfGEiW(b_*w&eV^>UJVH$BXApIM(a{yElr4Pz_Zul6uJ3Y+ z4)ENPva$w541q*vY&-|T+%%6KL9e^x)p{$d{x|8_;M*rq>IcQRMu@W&A!F`PF_GN2Qst8|z2VuF{wv`*nZu3A^B7)2amq`s5lbD!qfrt#=% z)*oH56>LPNwYXTQ6#h1iOR&rH z^M`^l30>%S6l!XMORD1eie3}#(}chl{H@U#Vm(dnPn5dvFV(koSnen&i)r-DKO3SG z@mBJGd=_u<6@hT=?+*7Ezvs&Uu{#^i+#~>ngmqt>%CU>hGaAdQ6zcR#B?mgPf3>nc?WJE3v4Pz7^xrzS7+F<;UOXU&J;4`{LMJ?1_No$7c$8Sf~>nB*5ElXS{FR4u!+p|@Xq zL>5s0dD3eXYX^&+*ksLl*Q76vF1iN{?Vxkb1T`*b|7KikwKAYkLb@vX{kB(e)+=GFH}Q6jC@1 z3Kdv#g~|Hc)(qU~FBO)p8E76|)9S@ZayM!Cv^RZ|N_|^8B339{T%9bZL_cD&IN=Zi zpGp9nA?v%lch&ira5=BHvm%XcJN}I&Ebss=|1q(%$C(nBYNo^Efsjf> z)JI>Pf!fekes+BWDHNV`W+oYLHH4F2+^mGr5HY5%nds>5c7GN?L;ByttG$zWr}lwW zyT--fTGa5uN5y`abrYv?I_WM~c`N+6=WT>zX4AYJq~Gm^arb*2yAES7_hEpl=$nh5 zOQOx^<17M>fqyTe7ST=G6Fc}m-P;d%A*Lv)_O|QO@Oo2E&&=W?DIUt5akFMu&WwJ` zI{i+WrMRdAd+xvrUK{|B*dXawn7l`;+nST7a)7gJL38{fcK9n3%Ogw_C%uQZ+-?er z0$qxxJ!XQOBcS^d9dq2%bH2EERbAcjme|BmXAcP>J(kpa^}xN4F0S0~3E2X79?x=m z!LfW8L0DceO_(V+iSnf=kYrTet8zcf+BI})yo5>wtQ0{9y2E4rL53#5eQ5xd_yGb4 z#))-xbt}8q=m2N}rE|Mbs~-L1DfasvYdc#MJ1uomDN@S?f91^-+Sr1O`qyp4G_YdU z6${r%8*>BXXZ(zf-D({#+y_=sX*&%ss&n~GOO2*PAGHSQ{l!@OHJy%(q^pL@Cz_*U z_`~v1iAo5jg&<#^fC*Fg$Z{Ipng+Fs3RCI&C?2}US4PAs{7m|G3*m#0(gZ(dzHjZuP zhe0E&d~Cz2+@k!iTk}U?@&cO}+HByTPTAFex2OR{32^$Yg~VfPJK)hO{vRHsPMbT= zB-(GA@0;^K)(dBLS@afpc|}!~)Mv_>8@;n8t3eg}jZIi*@#cG1v=6;~4w(i$~{-sTi8Q2p#v9a@| ztsXC;QI{r1!A%f#&>)!BC-|K$HSe@~Y(|eKTWsFV%)pnHlhOZcQ(()p!p@V5t|uvR zQCazzp22UbZvWHqH-wPil_MtBJws)JsFK7KpO_LQ(5T51vl2Y3Jl39_P-Y7o(tPxM zO!rd`B*TEH3@9&wz$+gph&?U4VF-F*KIH7hd!v(PDAYzqE9& zfYwJ3g3{u%M!JBysA7 zK(ZvX>>Zs?xP)d+9M)^|BlL+Z@vyBL-?K(po;a*6k@%t2@YYywqVys#yMe(X)Xvz( z?JvL#=wx%;8I(SNEcM(u6;B^WSrRF4ofTGVR2Q$6qm+}rGqkIp-0!Mu==!~F+xuV4j)aoHtQa>d1dQ}ynR_N#+mT^JZHLCNj_u_XNN=evGi{E$$Q2HOWi zMnX*GyHRFDsUAIg)MkE&kZN2h3Zur#&KsDqsU^tWGBIHW>9IY<6SDh1T+R!F8>0PA z>EUQj;fIhr76bMdKC1XMxt_XhA5dEU(dT=VuIdv)ZU_^1Q=-P)r?10r{%Vvwk5Esm z_)V-cZGoNo#e~Qaa1sB*0(8hOD0}|uEWawx*N`>2+HP(L%lT+wK^>Cl#&GWI+M-Lm z+FZEzV*haUF2l2^!AxA^HpZ&ydt}y$N$uNHz7v&842?qjCKBFC+VW={N-51_4OC0ZYW5*Fc z$pie~!bhT#ci$|)7*91GydDcTd1!n)H&EcNNCu` z$RD7eoYvRvTI6W(ERN#i&TQ6fi@>s5L}_k{Zn?f+=k<-I^PSy@9T$Ee1KnB|zwY9& z`I!rpmSf;}pQDD|#k|D#qRth@-qo{qk;yc3`_gt-|K` zAae%KSKgA?OZrBV@$>OC`!vdUGM|EjgmH{Yt<5j}$Lk@3zmU8e;GxVn2NO^A#dt>e z3DE^?Ep~7ZYbqyWie1Fq3$1i(zuR+r9cO#Vd4NDr_7x zxR3DqB0p5F7Elc@*EvVUlEbD*wy-{Ay00j==e4`DF*iGzAI>E>MY%JD=+akGLiH@` zLAD^Bps%{ewP22^szTIh$K}=?l!+D(SIJ@%7un66xz6AZa;F8Ndi#I7e}~hJZeuC` z^=j?B*eJhsUDhl`35ou-4wim1Ri>}Io)d#?CK#NXnVFGjs*Q1yAnE{(;E2e}_&(V@&aYVfTyymWGn5_WQ#(6Rw&LqMr{}o)C}IZEWD2 zdPVrP-rd%h=%?;IGxPYDsOLpuw!+inXe3h*^R{I7uu_zFrNHq7Z3Nehvu2mi&X}Y8 z2KT`6RfZbA*FnMFC&cy2P6Y+UW;@T^pdf=v<3V_@?RaLo?!N4;nU2&b4q;Girf83d&8i&t82d}IW3&0oj!Ds#e?bd& z2!p2$w`O`6Dg!M&{^;)A1?gW$KxGiU+^PlsXVBFWB~U{NqBm!okp8OzcvZ33tt(z^ z$3~Fv&z%)BXOmbyq$>!8CASSngaExrgIy=Exbp$+? zEq(=*?@SUa$wxKO7Za9u?pXMsJ~QL)9V6*pUEYWcD-mEUC?+VPQ;9xN2s*R0HXTuD z{c9YeDzTu1vLJmgC&Yy%mn2=LFD|;#IgZ~&%&Zo-v@{!D?;X@BK@XSi2|NVugf`*1 zo9mJ5OFAMpGy$>}XOq6Yg%mgu%`-)IvYr43((V?ZCspene;~Tzy|k0D+UnX!Y5(+^ z9$;O)mr;tPB%dFoEgYbH2r$GI4cl(oVq13NzG6cmx z%$>7L)89<_-tY7Bo8=km;PbXpllIzOE9Sq?y zr8KMeGWVN9j6RHrpG2SrWUl=jZN0Hb5i*bdQ}dOQJ;s+IWT2T+I?zMOe`_($x3GFw z`@1Yvh-T5T-BMcGG`ZcqnBI!GZ&EjVuNQ;~ThUx=wP7z-xP%|ACN94>!`wlhBTa2odtHwy8-J3~M{}?x5 zdzc>{)OYoC2G`B)?B8in*;79Yb*AI9rPMx(awUa>xfeV?TfiyF|7chi#w0Ltyxq}5 z%t6beOX(Ap$)pxyWwf?C-bD^{XJfqB*b~p>zh~Ro6k&5 zN2_++&EEU`K}(q84L`T+Cp0_85W++y%)UJm11tfI@R)}cud}MSN-i3kru5&~1A!RF zoMDTPeXFOgOO8nx{c?z4N=i zhn3@(;3ViU+X8-`*|(nyJJ{rx0ZDEMwvculC#t9gFTAFy^+&~>fyx2n@>tODfqBt` z2Tt~9O7JG)raS-j7I;YKS9JBx`g_i|h2^b;?MaI2fO;#>H|#}m`Ohe=b2?%>c(Pw$ zu#@Ch?p2ZzP(Gy*bW`_86q9n6-3@ICm2{A_+uFl>fH7FBh&oYt=jew4O`mJ2XU^v~ zJ&lHue#N?P6m{RinlfCQs9OKteEu@Dh;G$OFu)pXLXzkK3x(eB^R|M_=T82tduSuJ znd~lE;Wi}9baXTSZggtxb)@XdR&)M6_B}JT|K&;L5MVW!*$m@*k{lA)Z9`me?koW| z71+|%#@>YiuwJ4d@t{B41n$9}_ar z)5kvKTB+_M3EW)T?YMLT?Uo1fM&>0mgR_TDY^zu;kMd;j-g5RFVazW5eE;gtW1Veb zwvAtX``=kCx2MK%lEmaji8~G2pD$vnAm7;@!0QsD$aGm8M7U2CvQ^N&W25khMDi`E zw{;m;BvGU_Wq?;v(Z|=u?O;Cc0K2TNaL}xR4MvQBAan?QA6+i0zSyC3}~Y zgy(-NbtSU*>CV;>uq*x@R|Zx8g10(oA(Y6e_=+S>jnaRw3%ZQ!8w2lb=W5h;;4y>s ztuH(YkR`f+eaZW*wn@N$tqn(rFbI3=x}ACN@21^Nb4799b^0?o)?8cePNYMmEQa?n zO2BnhdZDK_xEA1nu%wwnGXOwgWxKPeY-eC>;DSKHkDo|G1d-b>f7B$cvK$>GR^Upq z5XA8rfXdOKhuIBxhDR>j&gn#L@NoZhD3u^WZyDoJzad*$R$m3Le*94ZfNY_~$%on`)z`o2(>E3JzCxHF&W0082*DkN{GqvHt zya)e1C0j5uGHPvU8Dz{brDm1=BCCS_j1rG>I(J6Q+yhpgV@c^N%8I}OdZCWj9@*8; zAkiOpuGmC3?mO;&-Yn3TX&C54!57!N27p{5owT$V_EXm*`2%_$kOV^Po(=YL5*Nxp zp?kk+7-HF4b7kN;X;)kjCw@B$*W zV~tc=gSp^ekT?yMNrj|%6~niPMM?N9Q}^beU&e;Xkr<;J6#dFDg+U9*#AhM&#j<)x zeBaVL(V&|FNsUGRIq;4nGVvc?cH>!ZjDh(RRxx#7_}8y;Aerpej3WV<5V+Qmsuo}e zd=9EuFhg%fv}Dt-lPmtklS{9xse(RSTMV?hgOjZURzu=|qmr}Ef2>iFuQor4qpN!& z&=SVFyy>!evopW5m%H7CT7kWD<8TV!vl?U&;#c9v(XaSz!wv6km;c1q{9oH4G+5zD z@$q|GwL=}?13o-FtaZpBjsv2+w>lq6N)9gP;*DG~n*E|{_d-8|e)X+nSpB#$Ku^eL z>KYzGrJ{fE(jR7DrYYSx5^OV`KxWI^Gs9wEEje40S(Z7eV$8QtyD5RUqmEslTvZmC z#v=L6HSWmgc`dN#c*Dgn@l~9EqWr`$WFY+fLkQ2A`N~^>VQ1&FFQ=v^Epz9&hV-48 zsXr~f<8a5=t#fp8OyJExgQxpFq1KSB8gCii_L-^)i$VSxf*7)vM&(f0(_2eBU;>SAz z&V*12iHNMNtZsIL{#~wQID^z5$jFe!^&O5Vvft)hP*8)_Zq|SmDcl6uPXw1=L5MQ( z-%U}J7=0JKVqG?`xqG^)T#WzsswsKrB`_5mgd z_gadMG0<_~FKn>|!MBPgWEBLMQxIT71fAY-`0PE;QfUNeO<6hAnCjr`-u4JYK^zt! zZl8nr44>oFmj#zOpQRYkG8sK%29ZLgEWwmnRoF)2N`MN{FS~la-Q9sP<7PLyRs}6v zTU-8Ezjot{0r+t?k5emjs~4d+kU)cGk%$_6N{c{~QfGFNA;&*&d=s|cQy>GRW9%Es zdIkF!kQ6wF#v1H7;f3F-hXV9Vi**&`l|Y;JV}o{#v+``E@dV~Wv+dDuJnmMX&-TBO z^8W4Vl@PqkD!rGdo!Ry94K?v1#p+YZ3Q5!{)bDrPLR7)30cMjx&(k|@n)*=&TU75I zrC;0%25??fxl=eD?wQ-hDJy03KQisj zTa(_@+Kh{c^Wk{r=Y1)^oOGjcl%w375o=BP$JcT7Aa5Bks+bL!PSwra02pnEpbm}9 zG3q}nl-MtrInc;p!Djf|Nn1@R!-si-!_2#W=i=?Tez!GlY7U8>Cbl&;x^3}KlU1{) zpHGOFmVDhv^$upY2KbhkS-yc_AZ{~0^%0zyO7J4K;Dp@O3_3sX1OU)-b=vvw8uB}+ zS2@5~Wu!nJAeut1i^#24fWQNZswRNLfeHW=v#^&2k=KXRMM12i~MF zY=%oebW8$Z%ML|6pxkbKruFM0z`JU`3qJ1&Y2sEg48%A=l92QVp zX?K1D!lDRpk08$ovpRs71;N`3O=%(HMwa)S9$eQ+2Y|iq!XZUQ5}!@GvwwaC3c#8M zJ?kF7n;!kUS``If1QRv2Y5-87Qu@2VcpIvke;4DOj8SF#ch>>G7m7{<@_e9{1d^`s zF`G^O6v^r7ik(mv55{jdkd8_(T3TETZazBsQ*(O-w;D@sOE&mg&@=kj&;vRMt}sfz zMFSa&)WSLfkRotfn>+vA+zM6vyWS1jovJU_7x>?OaQyE+DB?U^H)&*pQ8ySX-xHxc z`i#mNihW8Q;=}D6AMi80hw{ejym9PqxvZW{HM~o8rrjtYzZMr1aya;RELH{nEftj; z`{eH+?lFp+v3Z71g|-N9*A3_?P2~0;TwWu+LKwS=)EI-rT}GaNt2r^_K7>ie?*cy) zJi%*t+h3!Pd;RUyz!!k@i8Og8ek~? zzo3%y^gHq5VBI_TZ6`Am( z;Na1O$iz{!TlNzcsyBl%;S_HR$P;@>!}+Y=cLB#+H0u99JSTwjtWdXaEg*o3ToyZ~ zmO-LZ>M9FD@|_^|^FJ`(yY{!%U{U}@B+w^0-+kyMDoCF?Y22~<#SNCMfpAG6GxuB6 z%#T;TXt!*v9hb>>g|FX263KCfBL@OJTfZwvC2U}+4&-Hz*76*8U+66TjyDJl%VQgh zVs)P7+cK@vgi2f_J&Ov%e%AjZIgZ=_7ogEEaU|3gTH0KEO=SN}b%;ZSA44X<`FLsn zx0gqv94)9u4fgk&Q^H;Z9t_;Oo0SJn=S;U7eUJ>>farcZD_;eX#WHB{N=}|-mcc2* zkw7PWeEVKp+H%5>`8JTwwFxu{9kW&yk{?ajn}PSvbK!y_l;JwM&kqeL;!%gDX9tL- zCM>Y0EU*urj>D{CxaBUa*lO+kLl2nlWA8Whp=>|SX5j01uI)5+8aT+x=2aOZn0xX> z0$q)QOf#xWj*>5S^&7g@(_LOvYz0ovnWryCe@+m{Y-w?Ku>?(IYj%~ZPMp6IgKPm! zO;l7AjJ`FEo-#0m_bq|gDQJkkf#eTY=T;Ygve+)O8H~9@egeDr)<+j`$84v)0e8>+ zJHWB)@_LIxKvQqOP`|^fKhaD)!{qFli_YA6n7`*R(pR%?t z8|$=-ZGt8qVRWHUE2;Mn1!d)@{%0;R%bG^zJB>vRI+eX<-E^EIq8=sN^Wse41uF6N z&H->5>Yr}9@B`L*;QC*NIJqo?=CXS@!Bt=7N@@<$gUG*-|Nc~&N^+#5AR#u?O<|3W zX+D)Pf*uC)trj0hn^R;uiM?Xo&P_{5=vsCIMB4q~x>E6QV;Aeaz3H{Zxz5y%R!*~~ zvaNqph7@JIfv+^EV_1ld$xf-IWoYq#d|D6tvu7m3RMwDA6Vi5t-$9gTdnY9=N#C*m zA~B|{;HLplasPv)8kNv+ap6(dfrm<@R1E}ZC>hvHIx@F)wU(6fhxs8YK`ftvaEkr( zNVV$Ou=~(ch6j!y;|#_+IYY0cx(X;tGn!1JM#e|~6ZYHI3I zQvAP1c~FJfT#p$r`Vz@tN*ue-^}VX@5*;;F-OigKE(G1c*j^l-OS|37xuae)`YNfYt3K!7gd>VDQpVUD!3C+0 zl;im)sB9tK9YZ5G-aecGp!&#bna?M0?t2lKC(z#dKhMurmc^2nO2$;G^Bhn8p(5*p zWOK6^&2HS}VhZhTSEk;d#t+68oDU^zAR8a+mzVxYUvWM8z(H5IV112XqvF;~*0&G! zb(KSV1N0)TS@~v$hBF{U(gCZ85LJ+Hwy>bJTYHu6*gv*;%qKclb^EY}mfe6xo}xgI zTJc8&6#0rcDY;&SCw_lizg`}el6%79 zDz%kz4a;!ekLAX6w$1gz3W8goB`6__2Lv;gv{TTltOm{)x5#XL}=fe9C8$i;% z4o)oG*IUB?Xq?P1dBz%sTfCW{K7Go`=?4GqRs}ka1jJRW@TK?R6!&*D+k4-YG$@b@ zEgrwH_eZq%7oV`a3hW&6Hg6giJULAr3xr`%I3{TWOpu@ssX-s#WR(o!O+uMQygitm zsUU}qh8zrXicp|~Cbdx3AXwd0Kr~))EBmN*YM?P)?(Mg$&NbO-;`#seZb-1O(#IYES^E4Uh3Y z0c~s86_H|uJ->7zN8Kn}&hMnm2PK)1r85wWC@)-tP%3!8?KRd5SR;$0K~k7 zR&`bsjfG_b*T;rg%M{TES_k6a>xY3~9iO~~bIKH*T`|l~B=C&)xo6^uqRlqNWcECn zCCPx&5mt8}3(nwHP@8Mc3!65iaA)D4lMLaAM%0Ay0J0Ope+6r@WC_f+J|iM%1e0cxhl>4{{4IY2qh?Q@51~#{v3$ zPXKieJw2U)`)!l{aonJHPKrTD$Pemr=oI;!_o384qdpmZt;*;RI+qW_^y=-#;L^P~ z-MNO!yw)3-6|uuMA6m4@onwYp%eTku1zyW%3q0~)ifLlVuJYK$nq3f6?4q*r`*NbQ zXtJI*?5utDA?HzG1Kvp)`WxaWX7GynD32rxYidTGb5MlwYaHn^7qxUb4Yh)GEj6j5jTAptMlXDpiBDm9U+?0hN601k zNsEhdj9UCk8nE)qxw$m|Ttkm2fi{_Z=zB7`x&_*VyFVJv2QRZvmB}ctKsMij_gR); zeMyPUaGo?)cz#Wdx{|faYL<7DIE^yagj(PcviKPgkv?`@0Hf4C)R1ZdMm3XHbAg>E zZEA?G>hO>?3Du3re;P5w5fSVg{FS^#iDVPPR)Fc-7dVHpSFEHN+)hJgfM#(-CAR$d7RELvy#%KVrq zAKwfR`I8?f(gGs^I2!;D-d1J5afWrYknCP@0d}o2HF#>ITKBJ)R2yKi^EeP6% z31qeM*{vA1D7SKZda0JgDuAp(a zmFu4{k6Yju0TD0=lZXg`SNpP!)2ylQ@nCBCCa$<<=>Nt75RY%{`+%5lsHrZflOiC* z@Cp2Sw18-vO&ED9bgT!RQrnPwTxBKi2KA>m|mm`ZREBO~}Ek*$L2qo_Zb!e57A6zC}fF;U|M@eybG@x<6xfo}fQHbO@_)znk;bR?kfo1Ua(4 zrG4&+4JGFR0ATlQHuqXTD~4PUsYnxyaC1mG+l_5)9N=m5EwQX1$d@{v{|Wa=^*-=k z!(A+;CV2-Mu$3scw6|mP)X>e<_M*Us0unR1fSc6OXgwQT=nT=Ijz7Do2o5t%`_S85 z!^k+}aPtU;RMSq4Fk?Ca@GQR27qe=JNuYXOO&Hz1a0ah%@QD5A#DiwTk7IUAodnhw z?*YyZL_%l(D^RpX=~M$@szrV$_y*-Vm0qp001Gb#Mi5}Z$-QT&(Ik?BOts7FC9l?C z6SEM_-huOvXmAAV-cl6k2pA>zu_=P@KPyu=h|tQ~*p}JSY>QqR zs&-($L7!4lv5cr2nK=zPjAZ}HnvI)y`t{-d7*bzw##6pK2sockg=ZR>mmcPvT%bQG zjjlC)y)$X8!Ns-CkX_QTRU=n3U`qr;1Umft%IVzl{tu&jm|0kE*9aAQwMF>_y{|mX zzJHIPQydArR2HySnQcG){W*@dz-XbT{k0#4Qbkn)IVVO9YwVx7NfXNb{6;3l4GAu^4wwEFCwHk`9fg zzm?X=;iYt>V~3Z1uQg5y{l_uZ5nxP8r$Gbe-+iG#NT zhH)cr=-v0=?mcT@HM;w@mwcoY2VsSGjzkkvrSb)H;~H<{{%`$$e?-TY^b>)|Z!JP2 zHwoI;4pPGm1#LC&4BjKL=KfXQ$tapGqKv0pBVWfvcuq&3`O00HJ^2mB#r3J8*S325 zxz+aqdEYyzVNR_B0b^QSAAQFR^z}DRFF~0cSbNF9nZ@Y--ro;HKtU+aEizEnTgU`y z4ce!gJjgnW6Jjkx7uV~m4&U+y}b;Z2x8 zh<%mt9H=d0xgfmcAS5Kkef$}zVI76UG~uFG?+yM-s-0m=uU9?u-HF)fe1vSBR?Tni zuto@U;XA|DA!tlX2i$M)=k^@Ao{O;;)Y7a8lWN!-7epRKy&+;Ot?0R9nfy-@_vYH- z=E6$Fblc0JPF8fxGCLr8n~=pZpn6dnltCu%AO-7Kbc~vDQAMI5O|%;ve`5%H>X&S5 z3*)GcdwBlq>mD`RcJ_e~3~nimkYIsNWL6D)W;a-3nVH=~D`4G!QSID0<}{HjwEyYO zmkCw{I)i2%t`61_AyY-X%tat4B;y_9 z;<->h+V7(nU-y7@jT?-#%gN9RW*=aM=Rl?g9nYIo11I0L_u*eYd|gFGIcm7Cnl2&8 z^`J#Ce^E`Z?x(5VJn!68jW~x$viD+dNnNh+W&O(0uB(SnmTl}be?XGguch@kXMyUT zA8&t^rN$?>(|T+5JG{)i*P1m`B@Pa8`f;e8e-i;^_sX<8*w?qpiw1dwP*X?IYe)0n zQIg#skx)(MHzdnLP5<2MF2AA7+JwZ?D6i$fb5NJMTb=u}q{bt!yrOGfnebnPP+vNi z52|!eDb7#T@+Bm;)r_BiU9VHokZ=f!?PlKL%OyI~%*%aaQG5UX67A00MCZkwPbND^ zXkr679ri^lDvc?b51#ULDs{1NAlf_ZNw>WJ*{ZYKOZfmlS9pHl&H2=)`o?DG+L7Z> zZhJdB3fSC00=_l6fDJ9jv~sZ&PRQ*#2j=vVJ!ZFj2AFwfbh0KFRUjo7#j9W;@zI)sL?`kBWVYez*^E zjkArP1@TWhnxmg!2{4d_!xZ*=PN4ek#Cx|^*YXq!-p3pcx>e6|(84?u?N!kVvZ&DJ z*VHCYw#&$cM*CvrQxtAC%3pVfqlRH)D->3};3{}D+-d#qECAE+lR!w);em(Xb-@uW zbFP_KWdhGh#0g^rfk&KYqqKw2+;sIpR*GA*KhR0RN%*yEc2*>WP$(M|VSq&f!w|6V zdeeKzQi4@zTaHl3RG^rPwmned6Vg3usaN^S!U|ocO0%=%)QNH9gi=4z>mi25cP^ajAK&pFE=}DIPQ}4Rx;t5ocuU)<+=Xlv4-ulp5g{11e}-iNP{#V5ReT&Rj9EXkg8vJ+O{xU zpRhRPa9bowjYwSy6x^wXzAH}T;sOIt5!?ckQ*c|oN>6sQ$oO;j&N&JbcV~rW8l4NA|LoDFNx704D@jsWzg`trOYnf} zP$Kt~!jNsXvWW%?#j|vKiMw}|k=G=s$fI#*W##U!;}0dfcDSPareYJO66JX0-8;$m z1^I(<>u;oi{PfAGNdPy89bO5M2@ioAz%dkvx9+r-X-2%z*TAfx-iQ1Der;%)xg*RJ z<7W;0Ba~jGP6B@h3WxI>^44QVL#^L6MD4#17DY{6X~R=DqGQvuG(2uN-wx;$(NsN9 zTCfbNn|UFph>NUh_;|Ke2NG1&pCFwk!zRt|MEGA`oV+2#m-0J~TK=obu|tFeU#2Eb z_LN!3P0H(UL|v6CA%+<8>#C^b3Own!I| zVi6rwW;2IF^T&hQ0-=!*9=i2Lh5Z2lEW*_~wsQdYf4f@)=6!vA{Uez-Z=aa=66hGZ zzA~4vonjWVy}$1Ec0;?6-?*G>@Po1u0tsC_zYtTsGs%Vs+eX7H`jLz+s`ursl$Qps zbJl9-g^LgFzwh-RJ#KR$QpBF5Xu5uoW&X0XY8o)PLo@H&Zxk?k(y>N@$tq5=&&XH!?Nq#aO z^N`QU5ImqsDUb{FeA?##8M2cBuN<1(% z67y(AoYJ&4<)WesAt>dm;dh5@IkZ?0t(D4RSaAh=X#0H9!5b^IuzjLusE|4(?{`mc zv8N3IL4bXzsK&h{(~#M_*6L8+wi^tqJ$~8W8E12O{57wZ1iNFV%|FyPG$ir)Wz|I7 zlO_2jm-D@Ze|$B-7<1vYb1VJuVFrXOVL)-ZJsoa30fH1D7U4a>Gya_Tca-0&kvc6K z?e`RD1xX9z#zXm0Z)#AVh#0=xfAf<2G@6P^s{VLCb5W1vk5#9a#}XDXB{G7`n#s|s z)b5u@E#8PORQ?!Zwo}=kIH=jmPdn+StAIp@>eL^AGHtF389;dBYcj>@Z*Wb{9;&QUs2`dxUc{1 zAMM@jV6`%}e0Q1Rw;EIPpQsUD%F(*Pz5!Z9==1XP@+69X8MzPeu($1fzHLR-ZEGrC zXX4%l!sOf+a=wEG?+OpOzEgbo8Yqo0(C$vCeRNDhU#KNYs*W|k7k1jq!G?w~f1{s= zLbNwM6NLJFpFPU)dObtGC-7?zLO1fh0y#owQ;2DN4d?!%vA&@aI3<>imCL7t(gf`{ zYm1)`AHEq=fZw%Q9P3Bc*SXuihu6{NvDeik;)L1&cTav<- zILhIHVRJK_#k*N~@hb95O*0SjLS%iEKB>RcWO3XkUw_&o)T3Z-Z5nJMk5mpq0lEWWEP_8uNWj}#K?>n zq@I2|OVWoapv+Gu;xhjU)+2D%baZvUx@H1)0A@vS=sq?r-seYcl0>-kg4&40_wVzD z>%o^+7M8ts(P0w#4?}?AiGjAqgYTG_FDb!*YaQilg(l7r#JIMd@eCK+$cVLpP z9ofjjyzjinjr6?;vrn5nhzN}Le^}A8##HMP*S@RPRpG-xA-rLg(0?-?J^p(UEBwns zJb%`Ma7lFomeSG$D6ROh;P0el`sCB@8_U}<-(gUZ6r=+dYuXfEy$zk(J%o6)L?yvr zgtd_>!@|t$Y2Q;0R#)jRrO*4bCcX0zc&freV?)O;KgtfJzU$0ZukkRvX{tRHN0t%; zDMpt&-89`Vza#!{b)X|I{>qR|l>HGk0z&K(FbUEB`-M#@0=}cJu}g05?vPlgVfzIm z`*#B?yj&=^MdnZY`|Bf8e|3_rI}^0ru)~?{Mu>RaS+Fz&)G2GUg*TokMSs8lK*!YZ zWna2#HWKq)gs*y4qcumRWyNeWZgMqZYE<_J1Ft_v_DfQ0CYPq9NGZn@6v@_(cphJWSd#)GGhC&oywop#3+)b zBJWrclDDy&Wm}&)`JPtMJH@gU$Z=vl3H%HK)|*6PWK(szU79uWX!VNwmTkk zzDcX}5>$huF{o{*r%kSn8jDBs+061|0K6M z85oLT(hS~LKl=M?Cmm$+_mSfAG@u;c_VNSd0tB)9=;)wWte}>x$$YEa1oH{lw9SGK z_3H%(Hdi?z)ECOsIJqaz{fq`{bu$Lm9r=@__XK*la9=g90yx--=l>}tU(fMxZn#=Z zOewC;daNG+o9!Vn$%I0KxhxOA{li9KYa%{JB_4E=NH)6vFIU=H0w%?M`zS+gjG0N*0}x<7xi*)S<|^UtHXM z%TN>ifcH!DaXLD(I4}EN`?WVs$AIKY-|J?>rfJrT0T&Q#c;Ol*5U})`3OOe1mkob? z`k0+SHEWr6OxTzWe_^6dxj<-eTE9SIh-oGfQL6N3Q*Pof64cyey;p%hR=ZW!p9#N@ zIltC@>@^khIxpCGX#M!Z(MCIiN!vT^RskA96PBgFC@PiK$1hYW%{@_m=bC%MN0#+6 zzZuz*(Kx0V3X)vZmfVJruzf^#PR)z~3ceshx#GUG<1-z8+4gq)wcqEp^)=$B<$P5r zT=u+GD38p!tLgU(v&S+X*4~apoqn`di`$tXQ=y4zX4*B_pRn#2q`RYms&Gk(+!1C} z;*ZT^Bm@o&MKGy*_H5|u*DC!AK%xRri7*-DVr{K-}LBQGLCo*}*^ZP5K{ zOoVw~k((Xb@555>?juBOPDoj@h(wR@4RfSgJ`6J@4l7#!vMN+O;yLJ{h9bAmj2MZ|ySd3M+O~+oSJq z?}QVK%8D_?Z%2 ziiN=vT?iZ8Osgm~9nV#V+O6010-mLv}AztRE#redKbuWBa7vsGxcSn3tf(tQb z=+Eak=;6b1$nZb-Bl3nx?<0pL_zp7Nw%o)SjAb8hZg7A4^Y9kD^-D2^C?2Y7Sb1sr$K%3W)_^9*P!BE1yVv zFBqp&T6n0BAXhFA`>;(VFgmi;T6$4kk0#+uC`&g7zVt9Rd34X0)sJgt1ZN*=&THgM zU2j(36zHwby8a&9KGTIE=`a7ZCfZtuS1;oU-m!D9$*UKh_w^BYUOrQr+I}{f)3`b( z(&)4^JJ@P)jzeWckc}EBN{D5i=K>@Y4UzT>x-Ke``(xe_JsXx2?|Q$uinCRYmn+c4 z*Yx9#;6Kw<0m$3e>?>53jQ^m`e5DPj2O3 zb;OR-PU32snq?M9d8Db9lWX7|s(Tfty^6B@xna@Zu9R70z>oZa`(&H~f4Igfgy*jP zs^gVn19<5M%2n*&s>zeEd>4AMZ*f}5#EFWq*L-uhI+E>IepDg;Uc4d@A4l#G7a0fR zH+q9EMxiY&zJwm(y-5WgZIAfE7rAsrOrPYEuRscCL7WxT&(_z#uE{!$RJCPM{$%@ zHZ2r-Q~rSpemmIRtO~{A*zks#!akHluaXE~%yj!>UpqY1?v;U6K5l}A^BTF&Jbf#R zg@^H$;oqc1dzDd@3pPn9;XJ)cg(pcjk&8I{`mYc%Ca>b;G(yyZwW$y>S+DXS4SZBu z89s^kw}gJ$hG!BMeo~%O_?$>s4_`Z4$q+QF#oBY3gC!*s<|Z-P(+&$ zsCi+25knWA?n5QuA>?4q43E?(=TFJhiHd1xxvRKohbF@9-#Asz6E*n0^iS^izwv>X z7jvUvhg`IZ-moslUVyqCp@Y4uz_W z|HRZ~49>5#lYShQay9fQjjuEtckpT3y|&TPyW6sUScrHJ7kO3Q))^P$V2An*H9#L2 zy?vh&-C0fycy`^S(d25sH^(DbJspRN`bsQQ&Y(PW+zB5i^vjpcG%L=K*AiAtkvbwnZZb+mCEkbRNMM~^fJ0+P@22Ii~p#+V2 z5H6XM0LN2wsoqKi;<*BsAb-0r#@(N_PA%X-s86%6Ng1ea23KNriLPo_(*40c+!dD zV#K~;!EIEsHpOkk&>7wGU%z|L;)0{&rI`PR*KIQBG9SJKvtz+3lIYLn^Q$BHdlP~( z-x(+;7SUkU={_XKotc?|M1j#QSz^i9o~85hYw}PzVB#6Drwy@@;zSlw_P_2~Qe`5> z#eDKZE*~2I!({cpJ+jQHr!rpTHHgLyZVkJ##p*2d&6CSv4`T9HmCrY#0xT6jNh^6> z^Y4UUKH)6mK=k3++nv9^Ar>G!e1jN+EwhI}(u_yq##_W|RbqLJahhOmm}N3OJQ87b zPQ(!tO!vgl5QuR}ea7+?1fvZtwBb>6$(N$zI%1=ql_(|A*VjCs2zP%b6!YS}5@~Bq|6cglA&E!K7$44dts6(y* zLX3w34;>X^90()ay4}PJ!5E1phz978Zuj&brh;XVTICH?6fWW-S3t|El=RcpujHlt zpXrYO&At*2wZ@#aNjm7*It(!LjhD>&{3Hnb;b|pL%3gho!jDeglbH+dzdmh;J2-Oj z2uNR+6CYG47MqKFe*aHD(RA`gXB2A<6QPAFCIa7MqYfYt0z@DJT@8VTkkFMSb}4-< z^~Pv8tMxubv6<{|-?VHDQq$gOk##9LS@ZU)0WC}QX6G2TAT)!~fxB@ftBuaJ^&4rV z^VmkO^4>2JtrJG+5oGVHMZNk)`4d$)Kl>r*J-G|3l9|{ThwfX^hxQRp5D-T;t-^=imCe08zh<* z`pJc&V4+^!*yLFBm*+2!+Uv}(u9vrA!pc@6)-zEdS68}1mB};rHae<*mnh|}7Nzs= zqpvhsv?{0ds#9sgbssX=OvUD|kgWtYCu!WFtL8ZoUNT6M!T+#IO--F(TyW%Xn0cTq z>#h}itK#RMs>HT9gMHRGzF`p$S$`|#(W82n9={EAw+M>Y=QZW=rDqscy_i_Z}0Lp-ca zThE+(`tEVE)6jUfUs}_pNwfRZ?e}8b!HKSN&UH1aB)<(07+*6WuuuTquTsxaF%Kqm zRO>J|HESsE#;vAonkf6dI*eN87sd^JchI@M&n`JxHR%O+$7f~Ty%lE2uER;L*lf*4 z%dq`N_Ts7DQ3HW=Ui|)GgU9h!U)H_am8!JO5e(EsmvE+RZU6ZdX({UWi#?h$6 zq)%SM=*YU7;Fm-*5iJxH;tSIX)4oWGY?JIi>zi(qWWGD>i2F)xPQXw(6QFs%EO)_s zN|V#m(;|7dG5<6R2GMvz!pdx=DpRzKnYOkzKV?mI^-egIW}ImzUHh0`-G=!;?_0CE z#ifDxC`VWwmiO>8zvPi`Ke<>-YEMF!@)X>$=2-J?^9(^gOWJbwpD(%NxhsAv z($a7d8E7VhH!zyTPOqd!%$uQz8T@LcwW5M0Z!FC&N>KE{;4y z!Z4|7&g)^UEE%I%%I#=_f^xqj(KZ&ENq9k-T zHY-X^wdt|YQ8zO=u{2oAm52+SJ<1|AEWX_Nau55JnBW6L>C8cM?#k)Nl~xEnXlrR?7N4aBlV-wz8$D4h5)s-Jm&>wkrI%QZg z&P1RferD(OjIQyLyc-S33DS8utoxZ}*fnJ=qWBEvDf&c&K+IH+~gEMj7@r{c3G=aUc~iN6I$~j9~o#K~9QI=F#rdcfRMz6l0LDbJY2z zw+_DCFL}FvO<9hU^{!2_Uh>5JN0OXnr`~Zz2Cs4c9(;OKYct)DYPt&fhzW47GKwWE zZc5ZcAXxIX`&hQdkdHJvP~dV{CGw3yk|sVCEvml}JLj7%xOsu(Q7#b(N%y!=R4gA5 zMiBp}rCM8C0~coZPa9Q|>D|+tVWV zh~<&RYklbb&9XOdAWM8OJht|rXY1{Q|$ zgP|t1=1K{j2m)yB)+DDf%$p-WhliV-Ynyee;(D#zcisSvPLi?Nfdy^g%C7L}S{ z@jRAJou;?EKqs^&dpQT1@;jv4CBISz`0l{>31a4GXO@(dB+`F-Wj^-oE40@^7aVu* z2}9ZtaFzVFt6TiRBim!aefD+SCD0ZB0DGSKz|kwWwyf+k1fLEML$8Xmzo`R{?SpkE zY>1h9O+^6PtTZuE6R9#I!k>!r_MWBQcc+aTgk~>U-zmNVk8O=L9k$V)H#h`m80(uG zx+MyEL6dvq&hrRb_1PcY5Zh{Z5;4GwJD{+|75vFkBVz<>kgPksjwlRf_7>k2JOJ&RqCDR3Bf`u0XLXlmbu zs~7Or0HT5%GT^_e+wmKthm8Hc+F0XbCy0^xhUN7`R$bIq6MK#36h zIE6rv%h})@hhuM`HQfdbV5~$~Urt-Z@T@UA&3M-tdHNL5{@1@|jTpqta6v&Z%$P@g zt7>#N@yt(YUh8vl-89e)Ji&%fS;V^;GC?ekAJq$d+b7z6C6D$781pWFTwg)_?c}F4 z5Q%Lpc3gl=V^MEq`)FXe?L)ntmX?;bcIy02tjrs^#-g(j62Fd6IqT`M&}20JOOB)k z0@#1h5Kid~W$*R27u@7C1);z*wcb-^^kKA|{C4|=5dR3@PH|+K_b0veMRb@cZb}p? zcuh&i

  • 5q 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≦ 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Ðz+!hB8(` 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

    wHyyKaR(^_Gx;-_GcPfKMZl1!*sO;4 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 Yt^wCE(4q$k-v=}^w!Bt-_4kMW1J!;3PXGV_ literal 0 HcmV?d00001 diff --git a/doc/schema/Engine-RuleEngine.drawio.png b/doc/schema/Engine-RuleEngine.drawio.png deleted file mode 100644 index ceccf1e548e9a6cc9ca8bfa0607e25e392a787fd..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 208724 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