//SPDX-License-Identifier: MPL-2.0
-pragma solidity ^0.8.0;
+pragma solidity ^0.8.20;
/**
* @notice interface to represent debt tokens
@@ -136,7 +136,7 @@
diff --git a/doc/general/test/coverage/contracts/interfaces/draft-IERC1404/draft-IERC1404.sol.html b/doc/general/test/coverage/contracts/interfaces/draft-IERC1404/draft-IERC1404.sol.html
index ca2921b6..349aeece 100644
--- a/doc/general/test/coverage/contracts/interfaces/draft-IERC1404/draft-IERC1404.sol.html
+++ b/doc/general/test/coverage/contracts/interfaces/draft-IERC1404/draft-IERC1404.sol.html
@@ -97,10 +97,10 @@
//SPDX-License-Identifier: MPL-2.0
-pragma solidity ^0.8.0;
+pragma solidity ^0.8.20;
/*
-@dev Contrary to the ERC-1404, this interface does not inherit from the ERC20 interface
+* @dev Contrary to the ERC-1404, this interface does not inherit from the ERC20 interface
*/
interface IERC1404 {
/**
@@ -127,7 +127,7 @@
diff --git a/doc/general/test/coverage/contracts/interfaces/draft-IERC1404/draft-IERC1404EnumCode.sol.html b/doc/general/test/coverage/contracts/interfaces/draft-IERC1404/draft-IERC1404EnumCode.sol.html
new file mode 100644
index 00000000..e44fda76
--- /dev/null
+++ b/doc/general/test/coverage/contracts/interfaces/draft-IERC1404/draft-IERC1404EnumCode.sol.html
@@ -0,0 +1,110 @@
+
+
+
+ Code coverage report for contracts/interfaces/draft-IERC1404/draft-IERC1404EnumCode.sol
+
+
+
+
+
+
+
+
+
+
+
+
+ 100%
+ Statements
+ 0/0
+
+
+ 100%
+ Branches
+ 0/0
+
+
+ 100%
+ Functions
+ 0/0
+
+
+ 100%
+ Lines
+ 0/0
+
+
+
+
+
+1
+2
+3
+4
+5
+6
+7
+8
+9
+10
+11
+12
+13
+14
+15
+16
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ //SPDX-License-Identifier: MPL-2.0
+
+pragma solidity ^0.8.20;
+
+interface IERC1404EnumCode {
+ /*
+ * @dev leave the code 4-9 free/unused for further additions in your ruleEngine implementation
+ */
+ enum REJECTED_CODE_BASE {
+ TRANSFER_OK,
+ TRANSFER_REJECTED_PAUSED,
+ TRANSFER_REJECTED_FROM_FROZEN,
+ TRANSFER_REJECTED_TO_FROZEN
+ }
+}
+
+
+
+
+
+
+
+
+
+
+
diff --git a/doc/general/test/coverage/contracts/interfaces/draft-IERC1404/draft-IERC1404Wrapper.sol.html b/doc/general/test/coverage/contracts/interfaces/draft-IERC1404/draft-IERC1404Wrapper.sol.html
index 9ebdff15..86c0dea2 100644
--- a/doc/general/test/coverage/contracts/interfaces/draft-IERC1404/draft-IERC1404Wrapper.sol.html
+++ b/doc/general/test/coverage/contracts/interfaces/draft-IERC1404/draft-IERC1404Wrapper.sol.html
@@ -61,23 +61,7 @@
16
17
18
-19
-20
-21
-22
-23
-24
-25
-26
-27
-
-
-
-
-
-
-
-
+19
@@ -97,20 +81,12 @@
//SPDX-License-Identifier: MPL-2.0
-pragma solidity ^0.8.0;
+pragma solidity ^0.8.20;
import "./draft-IERC1404.sol";
+import "./draft-IERC1404EnumCode.sol";
-interface IERC1404Wrapper is IERC1404 {
- /*
- @dev leave the code 4-9 free/unused for further additions in your ruleEngine implementation
- */
- enum REJECTED_CODE_BASE {
- TRANSFER_OK,
- TRANSFER_REJECTED_PAUSED,
- TRANSFER_REJECTED_FROM_FROZEN,
- TRANSFER_REJECTED_TO_FROZEN
- }
+interface IERC1404Wrapper is IERC1404, IERC1404EnumCode {
/**
* @dev Returns true if the transfer is valid, and false otherwise.
@@ -127,7 +103,7 @@
diff --git a/doc/general/test/coverage/contracts/interfaces/draft-IERC1404/index.html b/doc/general/test/coverage/contracts/interfaces/draft-IERC1404/index.html
index 63ea4ba7..d1570445 100644
--- a/doc/general/test/coverage/contracts/interfaces/draft-IERC1404/index.html
+++ b/doc/general/test/coverage/contracts/interfaces/draft-IERC1404/index.html
@@ -71,6 +71,19 @@
0/0
+
+ draft-IERC1404EnumCode.sol
+
+ 100%
+ 0/0
+ 100%
+ 0/0
+ 100%
+ 0/0
+ 100%
+ 0/0
+
+
draft-IERC1404Wrapper.sol
@@ -90,7 +103,7 @@
diff --git a/doc/general/test/coverage/contracts/interfaces/engine/IAuthorizationEngine.sol.html b/doc/general/test/coverage/contracts/interfaces/engine/IAuthorizationEngine.sol.html
index b045ca87..efafbc17 100644
--- a/doc/general/test/coverage/contracts/interfaces/engine/IAuthorizationEngine.sol.html
+++ b/doc/general/test/coverage/contracts/interfaces/engine/IAuthorizationEngine.sol.html
@@ -85,7 +85,7 @@
// SPDX-License-Identifier: MPL-2.0
-pragma solidity ^0.8.0;
+pragma solidity ^0.8.20;
interface IAuthorizationEngine {
/**
@@ -109,7 +109,7 @@
diff --git a/doc/general/test/coverage/contracts/interfaces/engine/IRuleEngine.sol.html b/doc/general/test/coverage/contracts/interfaces/engine/IRuleEngine.sol.html
index fc3ec454..1bc8a4d2 100644
--- a/doc/general/test/coverage/contracts/interfaces/engine/IRuleEngine.sol.html
+++ b/doc/general/test/coverage/contracts/interfaces/engine/IRuleEngine.sol.html
@@ -79,7 +79,7 @@
// SPDX-License-Identifier: MPL-2.0
-pragma solidity ^0.8.0;
+pragma solidity ^0.8.20;
import "../draft-IERC1404/draft-IERC1404Wrapper.sol";
@@ -100,7 +100,7 @@
diff --git a/doc/general/test/coverage/contracts/interfaces/engine/index.html b/doc/general/test/coverage/contracts/interfaces/engine/index.html
index daba08c1..38389bf0 100644
--- a/doc/general/test/coverage/contracts/interfaces/engine/index.html
+++ b/doc/general/test/coverage/contracts/interfaces/engine/index.html
@@ -90,7 +90,7 @@
diff --git a/doc/general/test/coverage/contracts/interfaces/index.html b/doc/general/test/coverage/contracts/interfaces/index.html
index 815c8395..0eabfb3c 100644
--- a/doc/general/test/coverage/contracts/interfaces/index.html
+++ b/doc/general/test/coverage/contracts/interfaces/index.html
@@ -103,7 +103,7 @@
diff --git a/doc/general/test/coverage/contracts/libraries/Errors.sol.html b/doc/general/test/coverage/contracts/libraries/Errors.sol.html
index 574b275e..e6ba0ed7 100644
--- a/doc/general/test/coverage/contracts/libraries/Errors.sol.html
+++ b/doc/general/test/coverage/contracts/libraries/Errors.sol.html
@@ -247,7 +247,7 @@
diff --git a/doc/general/test/coverage/contracts/libraries/FactoryErrors.sol.html b/doc/general/test/coverage/contracts/libraries/FactoryErrors.sol.html
new file mode 100644
index 00000000..053c177f
--- /dev/null
+++ b/doc/general/test/coverage/contracts/libraries/FactoryErrors.sol.html
@@ -0,0 +1,92 @@
+
+
+
+ Code coverage report for contracts/libraries/FactoryErrors.sol
+
+
+
+
+
+
+
+
+
+
+
+
+ 100%
+ Statements
+ 0/0
+
+
+ 100%
+ Branches
+ 0/0
+
+
+ 100%
+ Functions
+ 0/0
+
+
+ 100%
+ Lines
+ 0/0
+
+
+
+
+
+1
+2
+3
+4
+5
+6
+7
+8
+9
+10
+
+
+
+
+
+
+
+
+ //SPDX-License-Identifier: MPL-2.0
+
+pragma solidity ^0.8.20;
+
+library FactoryErrors {
+ error CMTAT_Factory_AddressZeroNotAllowedForFactoryAdmin();
+ error CMTAT_Factory_AddressZeroNotAllowedForBeaconOwner();
+ error CMTAT_Factory_AddressZeroNotAllowedForLogicContract();
+}
+
+
+
+
+
+
+
+
+
+
+
diff --git a/doc/general/test/coverage/contracts/libraries/index.html b/doc/general/test/coverage/contracts/libraries/index.html
index fc0eb653..6f5a0847 100644
--- a/doc/general/test/coverage/contracts/libraries/index.html
+++ b/doc/general/test/coverage/contracts/libraries/index.html
@@ -71,13 +71,26 @@
0/0
+
+ FactoryErrors.sol
+
+ 100%
+ 0/0
+ 100%
+ 0/0
+ 100%
+ 0/0
+ 100%
+ 0/0
+
+
diff --git a/doc/general/test/coverage/contracts/modules/CMTAT_BASE.sol.html b/doc/general/test/coverage/contracts/modules/CMTAT_BASE.sol.html
index 60561b71..e6372f2e 100644
--- a/doc/general/test/coverage/contracts/modules/CMTAT_BASE.sol.html
+++ b/doc/general/test/coverage/contracts/modules/CMTAT_BASE.sol.html
@@ -799,7 +799,7 @@
diff --git a/doc/general/test/coverage/contracts/modules/index.html b/doc/general/test/coverage/contracts/modules/index.html
index 7e219b42..a21c1a14 100644
--- a/doc/general/test/coverage/contracts/modules/index.html
+++ b/doc/general/test/coverage/contracts/modules/index.html
@@ -77,7 +77,7 @@
diff --git a/doc/general/test/coverage/contracts/modules/internal/ERC20SnapshotModuleInternal.sol.html b/doc/general/test/coverage/contracts/modules/internal/ERC20SnapshotModuleInternal.sol.html
index e350cd02..62c41c3d 100644
--- a/doc/general/test/coverage/contracts/modules/internal/ERC20SnapshotModuleInternal.sol.html
+++ b/doc/general/test/coverage/contracts/modules/internal/ERC20SnapshotModuleInternal.sol.html
@@ -22,7 +22,7 @@
100%
Statements
- 15/15
+ 16/16
90%
@@ -32,12 +32,12 @@
100%
Functions
- 8/8
+ 9/9
100%
Lines
- 20/20
+ 24/24
@@ -172,7 +172,19 @@
127
128
129
-130
+130
+131
+132
+133
+134
+135
+136
+137
+138
+139
+140
+141
+142
@@ -208,23 +220,34 @@
+480×
+480×
-480×
+
+
+160×
+160×
480×
+160×
+
+80×
80×
80×
-240×
+
+
+
+
80×
@@ -237,12 +260,13 @@
-960×
+
+1200×
-960×
+1200×
@@ -251,11 +275,11 @@
-640×
+720×
-640×
+720×
@@ -305,13 +329,8 @@
pragma solidity ^0.8.20;
-import "../../../openzeppelin-contracts-upgradeable/contracts/utils/ContextUpgradeable.sol";
-import "../../../openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol";
import "../../../openzeppelin-contracts-upgradeable/contracts/token/ERC20/ERC20Upgradeable.sol";
import {Arrays} from '@openzeppelin/contracts/utils/Arrays.sol';
-
-import "../../libraries/Errors.sol";
-import "../../interfaces/ICMTATSnapshot.sol";
import "./base/SnapshotModuleBase.sol";
/**
* @dev Snapshot module internal.
@@ -347,7 +366,7 @@
}
/**
- * @notice Return snapshotBalanceOf for each address in an array and the total supply
+ * @notice Return snapshotBalanceOf for each address in the array and the total supply
* @return ownerBalances array with the balance of each address, the total supply
*/
function snapshotInfoBatch(uint256 time, address[] calldata addresses) public view returns (uint256[] memory ownerBalances, uint256 totalSupply) {
@@ -357,6 +376,23 @@
}
totalSupply = snapshotTotalSupply(time);
}
+
+ /**
+ * @notice Return snapshotBalanceOf for each address in the array and the total supply
+ * @return ownerBalances array with the balance of each address, the total supply
+ */
+ function snapshotInfoBatch(uint256[] calldata times, address[] calldata addresses) public view returns (uint256[][] memory ownerBalances, uint256[] memory totalSupply) {
+ ownerBalances = new uint256[][](times.length);
+ totalSupply = new uint256[](times.length);
+ for(uint256 iT = 0; iT < times.length; ++iT){
+ /*ownerBalances[iT] = new uint256[](addresses.length);
+ for(uint256 jA = 0; jA < addresses.length; ++jA){
+ ownerBalances[iT][jA] = snapshotBalanceOf(times[iT], addresses[jA]);
+ }
+ totalSupply[iT] = snapshotTotalSupply(times[iT]);*/
+ (ownerBalances[iT], totalSupply[iT]) = snapshotInfoBatch(times[iT],addresses);
+ }
+ }
/**
* @notice Return the number of tokens owned by the given owner at the time when the snapshot with the given time was created.
@@ -436,7 +472,7 @@
diff --git a/doc/general/test/coverage/contracts/modules/internal/EnforcementModuleInternal.sol.html b/doc/general/test/coverage/contracts/modules/internal/EnforcementModuleInternal.sol.html
index 704ff82a..76be6850 100644
--- a/doc/general/test/coverage/contracts/modules/internal/EnforcementModuleInternal.sol.html
+++ b/doc/general/test/coverage/contracts/modules/internal/EnforcementModuleInternal.sol.html
@@ -313,7 +313,7 @@
diff --git a/doc/general/test/coverage/contracts/modules/internal/ValidationModuleInternal.sol.html b/doc/general/test/coverage/contracts/modules/internal/ValidationModuleInternal.sol.html
index d018890c..10dac068 100644
--- a/doc/general/test/coverage/contracts/modules/internal/ValidationModuleInternal.sol.html
+++ b/doc/general/test/coverage/contracts/modules/internal/ValidationModuleInternal.sol.html
@@ -112,9 +112,7 @@
67
68
69
-70
-71
-
+70
@@ -189,7 +187,6 @@
import "../../../openzeppelin-contracts-upgradeable/contracts/utils/ContextUpgradeable.sol";
import "../../../openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol";
-import "../../interfaces/draft-IERC1404/draft-IERC1404Wrapper.sol";
import "../../interfaces/engine/IRuleEngine.sol";
/**
* @dev Validation module.
@@ -259,7 +256,7 @@
diff --git a/doc/general/test/coverage/contracts/modules/internal/base/SnapshotModuleBase.sol.html b/doc/general/test/coverage/contracts/modules/internal/base/SnapshotModuleBase.sol.html
index 1fab691f..dff594d5 100644
--- a/doc/general/test/coverage/contracts/modules/internal/base/SnapshotModuleBase.sol.html
+++ b/doc/general/test/coverage/contracts/modules/internal/base/SnapshotModuleBase.sol.html
@@ -37,7 +37,7 @@
100%
Lines
- 108/108
+ 102/102
@@ -448,13 +448,7 @@
403
404
405
-406
-407
-408
-409
-410
-411
-412
+406
@@ -554,13 +548,11 @@
8×
+
8×
12×
-12×
-12×
-
@@ -713,11 +705,9 @@
12×
4×
+
8×
16×
-16×
-16×
-
8×
@@ -747,12 +737,12 @@
-1600×
+1920×
-1600×
-1248×
+1920×
+1484×
-352×
+436×
@@ -848,6 +838,7 @@
86×
86×
+
86×
116×
52×
@@ -856,9 +847,6 @@
64×
-52×
-52×
-
86×
@@ -965,13 +953,11 @@
indexLowerBound -
1;
nextScheduledSnapshot = new uint256[](arraySize);
- for (uint256 i; i < arraySize; ) {
+ // No need of unchecked block since Soliditiy 0.8.22
+ for (uint256 i; i < arraySize; ++i) {
nextScheduledSnapshot[i] = _scheduledSnapshots[
indexLowerBound + 1 + i
];
- unchecked {
- ++i;
- }
}
}
}
@@ -1124,11 +1110,9 @@
if (!isFound) {
revert Errors.CMTAT_SnapshotModule_SnapshotNotFound();
}
- for (uint256 i = index; i + 1 < _scheduledSnapshots.length; ) {
+ // No need of unchecked block since Soliditiy 0.8.22
+ for (uint256 i = index; i + 1 < _scheduledSnapshots.length; ++i ) {
_scheduledSnapshots[i] = _scheduledSnapshots[i + 1];
- unchecked {
- ++i;
- }
}
_scheduledSnapshots.pop();
}
@@ -1259,7 +1243,8 @@
// mostRecent is initialized in the loop
uint256 mostRecent;
index = currentArraySize;
- for (uint256 i = _currentSnapshotIndex; i < currentArraySize; ) {
+ // No need of unchecked block since Soliditiy 0.8.22
+ for (uint256 i = _currentSnapshotIndex; i < currentArraySize; ++i ) {
if (_scheduledSnapshots[i] <= block.timestamp) {
mostRecent = _scheduledSnapshots[i];
index = i;
@@ -1267,9 +1252,6 @@
// All snapshot are planned in the futur
break;
}
- unchecked {
- ++i;
- }
}
return (mostRecent, index);
}
@@ -1282,7 +1264,7 @@
diff --git a/doc/general/test/coverage/contracts/modules/internal/base/index.html b/doc/general/test/coverage/contracts/modules/internal/base/index.html
index b765f516..2d1fa4db 100644
--- a/doc/general/test/coverage/contracts/modules/internal/base/index.html
+++ b/doc/general/test/coverage/contracts/modules/internal/base/index.html
@@ -37,7 +37,7 @@
100%
Lines
- 108/108
+ 102/102
@@ -68,7 +68,7 @@
100%
14/14
100%
- 108/108
+ 102/102
@@ -77,7 +77,7 @@
diff --git a/doc/general/test/coverage/contracts/modules/internal/index.html b/doc/general/test/coverage/contracts/modules/internal/index.html
index 420d138d..94760538 100644
--- a/doc/general/test/coverage/contracts/modules/internal/index.html
+++ b/doc/general/test/coverage/contracts/modules/internal/index.html
@@ -22,7 +22,7 @@
100%
Statements
- 30/30
+ 31/31
85%
@@ -32,12 +32,12 @@
100%
Functions
- 17/17
+ 18/18
100%
Lines
- 38/38
+ 42/42
@@ -62,13 +62,13 @@
ERC20SnapshotModuleInternal.sol
100%
- 15/15
+ 16/16
90%
9/10
100%
- 8/8
+ 9/9
100%
- 20/20
+ 24/24
@@ -103,7 +103,7 @@
diff --git a/doc/general/test/coverage/contracts/modules/security/AuthorizationModule.sol.html b/doc/general/test/coverage/contracts/modules/security/AuthorizationModule.sol.html
index 130b2aae..81024f87 100644
--- a/doc/general/test/coverage/contracts/modules/security/AuthorizationModule.sol.html
+++ b/doc/general/test/coverage/contracts/modules/security/AuthorizationModule.sol.html
@@ -129,43 +129,7 @@
84
85
86
-87
-88
-89
-90
-91
-92
-93
-94
-95
-96
-97
-98
-99
-100
-101
-102
-103
-104
-105
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+87
@@ -256,33 +220,15 @@
pragma solidity ^0.8.20;
import "../../../openzeppelin-contracts-upgradeable/contracts/access/AccessControlUpgradeable.sol";
-import "../../../openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol";
-
import "../../libraries/Errors.sol";
import "../../interfaces/engine/IAuthorizationEngine.sol";
+
abstract contract AuthorizationModule is AccessControlUpgradeable {
IAuthorizationEngine private authorizationEngine;
/**
* @dev Emitted when a rule engine is set.
*/
event AuthorizationEngine(IAuthorizationEngine indexed newAuthorizationEngine);
- // BurnModule
- bytes32 public constant BURNER_ROLE = keccak256("BURNER_ROLE");
- bytes32 public constant BURNER_FROM_ROLE = keccak256("BURNER_FROM_ROLE");
- // CreditEvents
- bytes32 public constant DEBT_CREDIT_EVENT_ROLE =
- keccak256("DEBT_CREDIT_EVENT_ROLE");
- // DebtModule
- bytes32 public constant DEBT_ROLE = keccak256("DEBT_ROLE");
- // EnforcementModule
- bytes32 public constant ENFORCER_ROLE = keccak256("ENFORCER_ROLE");
- // MintModule
- bytes32 public constant MINTER_ROLE = keccak256("MINTER_ROLE");
- // PauseModule
- bytes32 public constant PAUSER_ROLE = keccak256("PAUSER_ROLE");
- // SnapshotModule
- bytes32 public constant SNAPSHOOTER_ROLE = keccak256("SNAPSHOOTER_ROLE");
-
/**
* @dev
*
@@ -361,7 +307,7 @@
diff --git a/doc/general/test/coverage/contracts/modules/security/index.html b/doc/general/test/coverage/contracts/modules/security/index.html
index fb7160c2..f33d7151 100644
--- a/doc/general/test/coverage/contracts/modules/security/index.html
+++ b/doc/general/test/coverage/contracts/modules/security/index.html
@@ -77,7 +77,7 @@
diff --git a/doc/general/test/coverage/contracts/modules/wrapper/controllers/ValidationModule.sol.html b/doc/general/test/coverage/contracts/modules/wrapper/controllers/ValidationModule.sol.html
index ab31fed8..3d62462e 100644
--- a/doc/general/test/coverage/contracts/modules/wrapper/controllers/ValidationModule.sol.html
+++ b/doc/general/test/coverage/contracts/modules/wrapper/controllers/ValidationModule.sol.html
@@ -180,9 +180,7 @@
135
136
137
-138
-139
-
+138
@@ -323,7 +321,6 @@
pragma solidity ^0.8.20;
-import "../../../../openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol";
import "../../security/AuthorizationModule.sol";
import "../../internal/ValidationModuleInternal.sol";
import "../core/PauseModule.sol";
@@ -463,7 +460,7 @@
diff --git a/doc/general/test/coverage/contracts/modules/wrapper/controllers/index.html b/doc/general/test/coverage/contracts/modules/wrapper/controllers/index.html
index 6d378fd7..a6acad6f 100644
--- a/doc/general/test/coverage/contracts/modules/wrapper/controllers/index.html
+++ b/doc/general/test/coverage/contracts/modules/wrapper/controllers/index.html
@@ -77,7 +77,7 @@
diff --git a/doc/general/test/coverage/contracts/modules/wrapper/core/BaseModule.sol.html b/doc/general/test/coverage/contracts/modules/wrapper/core/BaseModule.sol.html
index 9a406bd6..3bc3b0e3 100644
--- a/doc/general/test/coverage/contracts/modules/wrapper/core/BaseModule.sol.html
+++ b/doc/general/test/coverage/contracts/modules/wrapper/core/BaseModule.sol.html
@@ -138,9 +138,7 @@
93
94
95
-96
-97
-
+96
@@ -240,7 +238,6 @@
pragma solidity ^0.8.20;
// required OZ imports here
-import "../../../../openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol";
import "../../security/AuthorizationModule.sol";
import "../../../libraries/Errors.sol";
@@ -337,7 +334,7 @@
diff --git a/doc/general/test/coverage/contracts/modules/wrapper/core/ERC20BaseModule.sol.html b/doc/general/test/coverage/contracts/modules/wrapper/core/ERC20BaseModule.sol.html
index b1e2b157..34b30b36 100644
--- a/doc/general/test/coverage/contracts/modules/wrapper/core/ERC20BaseModule.sol.html
+++ b/doc/general/test/coverage/contracts/modules/wrapper/core/ERC20BaseModule.sol.html
@@ -37,7 +37,7 @@
100%
Lines
- 19/19
+ 17/17
@@ -157,12 +157,7 @@
112
113
114
-115
-116
-117
-118
-119
-
+115
@@ -234,9 +229,6 @@
14×
-10×
-10×
-
@@ -284,7 +276,6 @@
pragma solidity ^0.8.20;
// required OZ imports here
-import "../../../../openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol";
import "../../../../openzeppelin-contracts-upgradeable/contracts/token/ERC20/ERC20Upgradeable.sol";
import "../../../libraries/Errors.sol";
@@ -347,14 +338,11 @@
if (bool(tos.length != values.length)) {
revert Errors.CMTAT_ERC20BaseModule_TosValueslengthMismatch();
}
-
- for (uint256 i = 0; i < tos.length; ) {
+ // No need of unchecked block since Soliditiy 0.8.22
+ for (uint256 i = 0; i < tos.length; ++i) {
// We call directly the internal function transfer
// The reason is that the public function adds only the owner address recovery
ERC20Upgradeable._transfer(_msgSender(), tos[i], values[i]);
- unchecked {
- ++i;
- }
}
// not really useful
// Here only to keep the same behaviour as transfer
@@ -403,7 +391,7 @@
diff --git a/doc/general/test/coverage/contracts/modules/wrapper/core/ERC20BurnModule.sol.html b/doc/general/test/coverage/contracts/modules/wrapper/core/ERC20BurnModule.sol.html
index c34fba8e..b01c2741 100644
--- a/doc/general/test/coverage/contracts/modules/wrapper/core/ERC20BurnModule.sol.html
+++ b/doc/general/test/coverage/contracts/modules/wrapper/core/ERC20BurnModule.sol.html
@@ -37,7 +37,7 @@
100%
Lines
- 20/20
+ 18/18
@@ -157,9 +157,8 @@
112
113
114
-115
-116
-117
+115
+
@@ -230,9 +229,6 @@
8×
24×
20×
-20×
-20×
-
@@ -280,10 +276,11 @@
pragma solidity ^0.8.20;
import "../../../../openzeppelin-contracts-upgradeable/contracts/token/ERC20/ERC20Upgradeable.sol";
-import "../../../../openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol";
import "../../security/AuthorizationModule.sol";
import "../../../interfaces/ICCIPToken.sol";
abstract contract ERC20BurnModule is ERC20Upgradeable, ICCIPBurnFromERC20, AuthorizationModule {
+ bytes32 public constant BURNER_ROLE = keccak256("BURNER_ROLE");
+ bytes32 public constant BURNER_FROM_ROLE = keccak256("BURNER_FROM_ROLE");
/**
* @notice Emitted when the specified `value` amount of tokens owned by `owner`are destroyed with the given `reason`
*/
@@ -342,13 +339,10 @@
if (bool(accounts.length != values.length)) {
revert Errors.CMTAT_BurnModule_AccountsValueslengthMismatch();
}
-
- for (uint256 i = 0; i < accounts.length; ) {
+ // No need of unchecked block since Soliditiy 0.8.22
+ for (uint256 i = 0; i < accounts.length; ++i ) {
_burn(accounts[i], values[i]);
emit Burn(accounts[i], values[i], reason);
- unchecked {
- ++i;
- }
}
}
@@ -397,7 +391,7 @@
diff --git a/doc/general/test/coverage/contracts/modules/wrapper/core/ERC20MintModule.sol.html b/doc/general/test/coverage/contracts/modules/wrapper/core/ERC20MintModule.sol.html
index 1398d9f1..f077c4e3 100644
--- a/doc/general/test/coverage/contracts/modules/wrapper/core/ERC20MintModule.sol.html
+++ b/doc/general/test/coverage/contracts/modules/wrapper/core/ERC20MintModule.sol.html
@@ -37,7 +37,7 @@
100%
Lines
- 11/11
+ 9/9
@@ -117,9 +117,8 @@
72
73
74
-75
-76
-77
+75
+
@@ -187,9 +186,6 @@
18×
54×
54×
-54×
-54×
-
@@ -200,10 +196,11 @@
pragma solidity ^0.8.20;
import "../../../../openzeppelin-contracts-upgradeable/contracts/token/ERC20/ERC20Upgradeable.sol";
-import "../../../../openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol";
import "../../security/AuthorizationModule.sol";
import "../../../interfaces/ICCIPToken.sol";
abstract contract ERC20MintModule is ERC20Upgradeable, ICCIPMintERC20, AuthorizationModule {
+ // MintModule
+ bytes32 public constant MINTER_ROLE = keccak256("MINTER_ROLE");
/**
* @notice Emitted when the specified `value` amount of new tokens are created and
* allocated to the specified `account`.
@@ -259,13 +256,10 @@
if (bool(accounts.length != values.length)) {
revert Errors.CMTAT_MintModule_AccountsValueslengthMismatch();
}
-
- for (uint256 i = 0; i < accounts.length; ) {
+ // No need of unchecked block since Soliditiy 0.8.22
+ for (uint256 i = 0; i < accounts.length; ++i ) {
_mint(accounts[i], values[i]);
emit Mint(accounts[i], values[i]);
- unchecked {
- ++i;
- }
}
}
@@ -277,7 +271,7 @@
diff --git a/doc/general/test/coverage/contracts/modules/wrapper/core/EnforcementModule.sol.html b/doc/general/test/coverage/contracts/modules/wrapper/core/EnforcementModule.sol.html
index 04c7c7fa..d0f53140 100644
--- a/doc/general/test/coverage/contracts/modules/wrapper/core/EnforcementModule.sol.html
+++ b/doc/general/test/coverage/contracts/modules/wrapper/core/EnforcementModule.sol.html
@@ -97,7 +97,11 @@
52
53
54
-55
+55
+56
+57
+
+
@@ -167,6 +171,8 @@
EnforcementModuleInternal,
AuthorizationModule
{
+ // EnforcementModule
+ bytes32 public constant ENFORCER_ROLE = keccak256("ENFORCER_ROLE");
string internal constant TEXT_TRANSFER_REJECTED_FROM_FROZEN =
"Address FROM is frozen";
@@ -211,7 +217,7 @@
diff --git a/doc/general/test/coverage/contracts/modules/wrapper/core/PauseModule.sol.html b/doc/general/test/coverage/contracts/modules/wrapper/core/PauseModule.sol.html
index a9f614b3..5d2f5fd8 100644
--- a/doc/general/test/coverage/contracts/modules/wrapper/core/PauseModule.sol.html
+++ b/doc/general/test/coverage/contracts/modules/wrapper/core/PauseModule.sol.html
@@ -126,7 +126,9 @@
81
82
83
-84
+84
+85
+
@@ -214,7 +216,6 @@
pragma solidity ^0.8.20;
import "../../../../openzeppelin-contracts-upgradeable/contracts/utils/PausableUpgradeable.sol";
-import "../../../../openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol";
import "../../security/AuthorizationModule.sol";
/**
@@ -228,6 +229,8 @@
* event of a large bug.
*/
abstract contract PauseModule is PausableUpgradeable, AuthorizationModule {
+ // PauseModule
+ bytes32 public constant PAUSER_ROLE = keccak256("PAUSER_ROLE");
string internal constant TEXT_TRANSFER_REJECTED_PAUSED =
"All transfers paused";
bool private isDeactivated;
@@ -298,7 +301,7 @@
diff --git a/doc/general/test/coverage/contracts/modules/wrapper/core/index.html b/doc/general/test/coverage/contracts/modules/wrapper/core/index.html
index 370d1aa0..a7da88fb 100644
--- a/doc/general/test/coverage/contracts/modules/wrapper/core/index.html
+++ b/doc/general/test/coverage/contracts/modules/wrapper/core/index.html
@@ -37,7 +37,7 @@
100%
Lines
- 74/74
+ 68/68
@@ -81,7 +81,7 @@
100%
5/5
100%
- 19/19
+ 17/17
@@ -94,7 +94,7 @@
100%
4/4
100%
- 20/20
+ 18/18
@@ -107,7 +107,7 @@
100%
3/3
100%
- 11/11
+ 9/9
@@ -142,7 +142,7 @@
diff --git a/doc/general/test/coverage/contracts/modules/wrapper/extensions/DebtModule/CreditEventsModule.sol.html b/doc/general/test/coverage/contracts/modules/wrapper/extensions/DebtModule/CreditEventsModule.sol.html
index 8a5d4012..75060568 100644
--- a/doc/general/test/coverage/contracts/modules/wrapper/extensions/DebtModule/CreditEventsModule.sol.html
+++ b/doc/general/test/coverage/contracts/modules/wrapper/extensions/DebtModule/CreditEventsModule.sol.html
@@ -124,7 +124,13 @@
79
80
81
-82
+82
+83
+84
+85
+
+
+
@@ -222,6 +228,9 @@
ContextUpgradeable,
AuthorizationModule
{
+ // CreditEvents
+ bytes32 public constant DEBT_CREDIT_EVENT_ROLE =
+ keccak256("DEBT_CREDIT_EVENT_ROLE");
CreditEvents public creditEvents;
/* Events */
@@ -292,7 +301,7 @@
diff --git a/doc/general/test/coverage/contracts/modules/wrapper/extensions/DebtModule/DebtBaseModule.sol.html b/doc/general/test/coverage/contracts/modules/wrapper/extensions/DebtModule/DebtBaseModule.sol.html
index 79629ed0..322d1741 100644
--- a/doc/general/test/coverage/contracts/modules/wrapper/extensions/DebtModule/DebtBaseModule.sol.html
+++ b/doc/general/test/coverage/contracts/modules/wrapper/extensions/DebtModule/DebtBaseModule.sol.html
@@ -274,7 +274,11 @@
229
230
231
-232
+232
+233
+234
+
+
@@ -522,6 +526,8 @@
ContextUpgradeable,
AuthorizationModule
{
+ // DebtModule
+ bytes32 public constant DEBT_ROLE = keccak256("DEBT_ROLE");
DebtBase public debt;
/* Events */
@@ -742,7 +748,7 @@
diff --git a/doc/general/test/coverage/contracts/modules/wrapper/extensions/DebtModule/index.html b/doc/general/test/coverage/contracts/modules/wrapper/extensions/DebtModule/index.html
index b57b4919..b75db962 100644
--- a/doc/general/test/coverage/contracts/modules/wrapper/extensions/DebtModule/index.html
+++ b/doc/general/test/coverage/contracts/modules/wrapper/extensions/DebtModule/index.html
@@ -90,7 +90,7 @@
diff --git a/doc/general/test/coverage/contracts/modules/wrapper/extensions/ERC20SnapshotModule.sol.html b/doc/general/test/coverage/contracts/modules/wrapper/extensions/ERC20SnapshotModule.sol.html
index ef56e98d..fe06161a 100644
--- a/doc/general/test/coverage/contracts/modules/wrapper/extensions/ERC20SnapshotModule.sol.html
+++ b/doc/general/test/coverage/contracts/modules/wrapper/extensions/ERC20SnapshotModule.sol.html
@@ -120,7 +120,9 @@
75
76
77
-78
+78
+79
+
@@ -201,7 +203,6 @@
pragma solidity ^0.8.20;
-import "../../../../openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol";
import "../../security/AuthorizationModule.sol";
import "../../internal/ERC20SnapshotModuleInternal.sol";
@@ -215,6 +216,8 @@
ERC20SnapshotModuleInternal,
AuthorizationModule
{
+ // SnapshotModule
+ bytes32 public constant SNAPSHOOTER_ROLE = keccak256("SNAPSHOOTER_ROLE");
function __ERC20SnasphotModule_init_unchained() internal E onlyInitializing {
// no variable to initialize
}
@@ -280,7 +283,7 @@
diff --git a/doc/general/test/coverage/contracts/modules/wrapper/extensions/MetaTxModule.sol.html b/doc/general/test/coverage/contracts/modules/wrapper/extensions/MetaTxModule.sol.html
index 516d8345..0d146d71 100644
--- a/doc/general/test/coverage/contracts/modules/wrapper/extensions/MetaTxModule.sol.html
+++ b/doc/general/test/coverage/contracts/modules/wrapper/extensions/MetaTxModule.sol.html
@@ -66,9 +66,7 @@
21
22
23
-24
-25
-
+24
@@ -96,7 +94,6 @@
pragma solidity ^0.8.20;
import "../../../../openzeppelin-contracts-upgradeable/contracts/metatx/ERC2771ContextUpgradeable.sol";
-import "../../../../openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol";
/**
* @dev Meta transaction (gasless) module.
@@ -121,7 +118,7 @@
diff --git a/doc/general/test/coverage/contracts/modules/wrapper/extensions/index.html b/doc/general/test/coverage/contracts/modules/wrapper/extensions/index.html
index b386ec88..9b3e8d2d 100644
--- a/doc/general/test/coverage/contracts/modules/wrapper/extensions/index.html
+++ b/doc/general/test/coverage/contracts/modules/wrapper/extensions/index.html
@@ -90,7 +90,7 @@
diff --git a/doc/general/test/coverage/contracts/test/proxy/CMTAT_PROXY.sol.html b/doc/general/test/coverage/contracts/test/proxy/CMTAT_PROXY.sol.html
index a462c258..77a7b2e2 100644
--- a/doc/general/test/coverage/contracts/test/proxy/CMTAT_PROXY.sol.html
+++ b/doc/general/test/coverage/contracts/test/proxy/CMTAT_PROXY.sol.html
@@ -118,7 +118,7 @@
diff --git a/doc/general/test/coverage/contracts/test/proxy/index.html b/doc/general/test/coverage/contracts/test/proxy/index.html
index 8e5a5676..c64aa1d2 100644
--- a/doc/general/test/coverage/contracts/test/proxy/index.html
+++ b/doc/general/test/coverage/contracts/test/proxy/index.html
@@ -77,7 +77,7 @@
diff --git a/doc/general/test/coverage/coverage-final.json b/doc/general/test/coverage/coverage-final.json
index bd73ace1..bff140ad 100644
--- a/doc/general/test/coverage/coverage-final.json
+++ b/doc/general/test/coverage/coverage-final.json
@@ -1,9 +1,10 @@
{
-"contracts/CMTAT_PROXY.sol":{"l":{"17":10},"path":"/home/ryan/Downloads/CM/CMTAT/contracts/CMTAT_PROXY.sol","s":{"1":10},"b":{},"f":{"1":10},"fnMap":{"1":{"name":"constructor","line":15,"loc":{"start":{"line":13,"column":4},"end":{"line":18,"column":4}}}},"statementMap":{"1":{"start":{"line":17,"column":8},"end":{"line":17,"column":29}}},"branchMap":{}},
+"contracts/CMTAT_PROXY.sol":{"l":{"17":15},"path":"/home/ryan/Downloads/CM/CMTAT/contracts/CMTAT_PROXY.sol","s":{"1":15},"b":{},"f":{"1":15},"fnMap":{"1":{"name":"constructor","line":15,"loc":{"start":{"line":13,"column":4},"end":{"line":18,"column":4}}}},"statementMap":{"1":{"start":{"line":17,"column":8},"end":{"line":17,"column":29}}},"branchMap":{}},
"contracts/CMTAT_STANDALONE.sol":{"l":{"38":189},"path":"/home/ryan/Downloads/CM/CMTAT/contracts/CMTAT_STANDALONE.sol","s":{"1":189},"b":{},"f":{"1":189},"fnMap":{"1":{"name":"constructor","line":35,"loc":{"start":{"line":23,"column":4},"end":{"line":50,"column":4}}}},"statementMap":{"1":{"start":{"line":38,"column":8},"end":{"line":38,"column":1611}}},"branchMap":{}},
-"contracts/deployment/CMTAT_BEACON_FACTORY.sol":{"l":{"32":3,"33":3,"34":3,"54":2,"70":2,"71":2,"72":2,"73":2,"74":2,"82":1,"90":1},"path":"/home/ryan/Downloads/CM/CMTAT/contracts/deployment/CMTAT_BEACON_FACTORY.sol","s":{"1":3,"2":3,"3":2,"4":2,"5":2,"6":1,"7":1},"b":{"1":[2,2]},"f":{"1":3,"2":2,"3":1,"4":1},"fnMap":{"1":{"name":"constructor","line":31,"loc":{"start":{"line":31,"column":4},"end":{"line":35,"column":4}}},"2":{"name":"deployCMTAT","line":53,"loc":{"start":{"line":41,"column":4},"end":{"line":75,"column":4}}},"3":{"name":"getAddress","line":81,"loc":{"start":{"line":81,"column":4},"end":{"line":83,"column":4}}},"4":{"name":"implementation","line":89,"loc":{"start":{"line":89,"column":4},"end":{"line":91,"column":4}}}},"statementMap":{"1":{"start":{"line":33,"column":8},"end":{"line":33,"column":51}},"2":{"start":{"line":34,"column":8},"end":{"line":34,"column":52}},"3":{"start":{"line":71,"column":8},"end":{"line":71,"column":50}},"4":{"start":{"line":73,"column":8},"end":{"line":73,"column":38}},"5":{"start":{"line":74,"column":8},"end":{"line":74,"column":20}},"6":{"start":{"line":82,"column":8},"end":{"line":82,"column":31}},"7":{"start":{"line":90,"column":8},"end":{"line":90,"column":38}}},"branchMap":{"1":{"line":53,"type":"if","locations":[{"start":{"line":53,"column":13},"end":{"line":53,"column":13}},{"start":{"line":53,"column":13},"end":{"line":53,"column":13}}]}}},
-"contracts/deployment/CMTAT_TP_FACTORY.sol":{"l":{"28":3,"29":3,"30":3,"47":2,"64":2,"65":2,"66":2,"67":2,"68":2,"76":1},"path":"/home/ryan/Downloads/CM/CMTAT/contracts/deployment/CMTAT_TP_FACTORY.sol","s":{"1":3,"2":3,"3":2,"4":2,"5":2,"6":1},"b":{"1":[2,2]},"f":{"1":3,"2":2,"3":1},"fnMap":{"1":{"name":"constructor","line":27,"loc":{"start":{"line":27,"column":4},"end":{"line":31,"column":4}}},"2":{"name":"deployCMTAT","line":46,"loc":{"start":{"line":33,"column":4},"end":{"line":69,"column":4}}},"3":{"name":"getAddress","line":75,"loc":{"start":{"line":75,"column":4},"end":{"line":77,"column":4}}}},"statementMap":{"1":{"start":{"line":29,"column":8},"end":{"line":29,"column":51}},"2":{"start":{"line":30,"column":8},"end":{"line":30,"column":52}},"3":{"start":{"line":65,"column":8},"end":{"line":65,"column":43}},"4":{"start":{"line":67,"column":8},"end":{"line":67,"column":38}},"5":{"start":{"line":68,"column":8},"end":{"line":68,"column":20}},"6":{"start":{"line":76,"column":8},"end":{"line":76,"column":31}}},"branchMap":{"1":{"line":46,"type":"if","locations":[{"start":{"line":46,"column":13},"end":{"line":46,"column":13}},{"start":{"line":46,"column":13},"end":{"line":46,"column":13}}]}}},
+"contracts/deployment/CMTAT_BEACON_FACTORY.sol":{"l":{"33":9,"34":2,"36":7,"37":2,"39":5,"40":2,"42":3,"43":3,"44":3,"64":2,"80":2,"81":2,"82":2,"83":2,"84":2,"92":1,"100":1},"path":"/home/ryan/Downloads/CM/CMTAT/contracts/deployment/CMTAT_BEACON_FACTORY.sol","s":{"1":9,"2":7,"3":5,"4":3,"5":3,"6":2,"7":2,"8":2,"9":1,"10":1},"b":{"1":[2,7],"2":[2,5],"3":[2,3],"4":[2,2]},"f":{"1":9,"2":2,"3":1,"4":1},"fnMap":{"1":{"name":"constructor","line":32,"loc":{"start":{"line":32,"column":4},"end":{"line":45,"column":4}}},"2":{"name":"deployCMTAT","line":63,"loc":{"start":{"line":51,"column":4},"end":{"line":85,"column":4}}},"3":{"name":"getAddress","line":91,"loc":{"start":{"line":91,"column":4},"end":{"line":93,"column":4}}},"4":{"name":"implementation","line":99,"loc":{"start":{"line":99,"column":4},"end":{"line":101,"column":4}}}},"statementMap":{"1":{"start":{"line":33,"column":8},"end":{"line":33,"column":1058}},"2":{"start":{"line":36,"column":8},"end":{"line":36,"column":1196}},"3":{"start":{"line":39,"column":8},"end":{"line":39,"column":1332}},"4":{"start":{"line":43,"column":8},"end":{"line":43,"column":51}},"5":{"start":{"line":44,"column":8},"end":{"line":44,"column":52}},"6":{"start":{"line":81,"column":8},"end":{"line":81,"column":50}},"7":{"start":{"line":83,"column":8},"end":{"line":83,"column":38}},"8":{"start":{"line":84,"column":8},"end":{"line":84,"column":20}},"9":{"start":{"line":92,"column":8},"end":{"line":92,"column":31}},"10":{"start":{"line":100,"column":8},"end":{"line":100,"column":38}}},"branchMap":{"1":{"line":33,"type":"if","locations":[{"start":{"line":33,"column":8},"end":{"line":33,"column":8}},{"start":{"line":33,"column":8},"end":{"line":33,"column":8}}]},"2":{"line":36,"type":"if","locations":[{"start":{"line":36,"column":8},"end":{"line":36,"column":8}},{"start":{"line":36,"column":8},"end":{"line":36,"column":8}}]},"3":{"line":39,"type":"if","locations":[{"start":{"line":39,"column":8},"end":{"line":39,"column":8}},{"start":{"line":39,"column":8},"end":{"line":39,"column":8}}]},"4":{"line":63,"type":"if","locations":[{"start":{"line":63,"column":13},"end":{"line":63,"column":13}},{"start":{"line":63,"column":13},"end":{"line":63,"column":13}}]}}},
+"contracts/deployment/CMTAT_TP_FACTORY.sol":{"l":{"30":7,"31":2,"33":5,"34":2,"36":3,"37":3,"38":3,"55":2,"72":2,"73":2,"74":2,"75":2,"76":2,"84":1},"path":"/home/ryan/Downloads/CM/CMTAT/contracts/deployment/CMTAT_TP_FACTORY.sol","s":{"1":7,"2":5,"3":3,"4":3,"5":2,"6":2,"7":2,"8":1},"b":{"1":[2,5],"2":[2,3],"3":[2,2]},"f":{"1":7,"2":2,"3":1},"fnMap":{"1":{"name":"constructor","line":29,"loc":{"start":{"line":29,"column":4},"end":{"line":39,"column":4}}},"2":{"name":"deployCMTAT","line":54,"loc":{"start":{"line":41,"column":4},"end":{"line":77,"column":4}}},"3":{"name":"getAddress","line":83,"loc":{"start":{"line":83,"column":4},"end":{"line":85,"column":4}}}},"statementMap":{"1":{"start":{"line":30,"column":8},"end":{"line":30,"column":889}},"2":{"start":{"line":33,"column":8},"end":{"line":33,"column":1022}},"3":{"start":{"line":37,"column":8},"end":{"line":37,"column":51}},"4":{"start":{"line":38,"column":8},"end":{"line":38,"column":52}},"5":{"start":{"line":73,"column":8},"end":{"line":73,"column":43}},"6":{"start":{"line":75,"column":8},"end":{"line":75,"column":38}},"7":{"start":{"line":76,"column":8},"end":{"line":76,"column":20}},"8":{"start":{"line":84,"column":8},"end":{"line":84,"column":31}}},"branchMap":{"1":{"line":30,"type":"if","locations":[{"start":{"line":30,"column":8},"end":{"line":30,"column":8}},{"start":{"line":30,"column":8},"end":{"line":30,"column":8}}]},"2":{"line":33,"type":"if","locations":[{"start":{"line":33,"column":8},"end":{"line":33,"column":8}},{"start":{"line":33,"column":8},"end":{"line":33,"column":8}}]},"3":{"line":54,"type":"if","locations":[{"start":{"line":54,"column":13},"end":{"line":54,"column":13}},{"start":{"line":54,"column":13},"end":{"line":54,"column":13}}]}}},
"contracts/interfaces/draft-IERC1404/draft-IERC1404.sol":{"l":{},"path":"/home/ryan/Downloads/CM/CMTAT/contracts/interfaces/draft-IERC1404/draft-IERC1404.sol","s":{},"b":{},"f":{},"fnMap":{},"statementMap":{},"branchMap":{}},
+"contracts/interfaces/draft-IERC1404/draft-IERC1404EnumCode.sol":{"l":{},"path":"/home/ryan/Downloads/CM/CMTAT/contracts/interfaces/draft-IERC1404/draft-IERC1404EnumCode.sol","s":{},"b":{},"f":{},"fnMap":{},"statementMap":{},"branchMap":{}},
"contracts/interfaces/draft-IERC1404/draft-IERC1404Wrapper.sol":{"l":{},"path":"/home/ryan/Downloads/CM/CMTAT/contracts/interfaces/draft-IERC1404/draft-IERC1404Wrapper.sol","s":{},"b":{},"f":{},"fnMap":{},"statementMap":{},"branchMap":{}},
"contracts/interfaces/engine/IAuthorizationEngine.sol":{"l":{},"path":"/home/ryan/Downloads/CM/CMTAT/contracts/interfaces/engine/IAuthorizationEngine.sol","s":{},"b":{},"f":{},"fnMap":{},"statementMap":{},"branchMap":{}},
"contracts/interfaces/engine/IRuleEngine.sol":{"l":{},"path":"/home/ryan/Downloads/CM/CMTAT/contracts/interfaces/engine/IRuleEngine.sol","s":{},"b":{},"f":{},"fnMap":{},"statementMap":{},"branchMap":{}},
@@ -11,21 +12,22 @@
"contracts/interfaces/ICMTATSnapshot.sol":{"l":{},"path":"/home/ryan/Downloads/CM/CMTAT/contracts/interfaces/ICMTATSnapshot.sol","s":{},"b":{},"f":{},"fnMap":{},"statementMap":{},"branchMap":{}},
"contracts/interfaces/IDebtGlobal.sol":{"l":{},"path":"/home/ryan/Downloads/CM/CMTAT/contracts/interfaces/IDebtGlobal.sol","s":{},"b":{},"f":{},"fnMap":{},"statementMap":{},"branchMap":{}},
"contracts/libraries/Errors.sol":{"l":{},"path":"/home/ryan/Downloads/CM/CMTAT/contracts/libraries/Errors.sol","s":{},"b":{},"f":{},"fnMap":{},"statementMap":{},"branchMap":{}},
+"contracts/libraries/FactoryErrors.sol":{"l":{},"path":"/home/ryan/Downloads/CM/CMTAT/contracts/libraries/FactoryErrors.sol","s":{},"b":{},"f":{},"fnMap":{},"statementMap":{},"branchMap":{}},
"contracts/modules/CMTAT_BASE.sol":{"l":{"70":387,"101":387,"102":387,"104":387,"106":387,"107":387,"110":387,"115":387,"116":387,"118":387,"122":387,"123":384,"124":384,"126":384,"127":384,"129":384,"130":384,"136":384,"140":384,"141":384,"142":384,"145":384,"162":2,"175":18,"190":10,"191":6,"203":464,"204":34,"211":430,"212":430,"225":1591,"234":1591,"246":0},"path":"/home/ryan/Downloads/CM/CMTAT/contracts/modules/CMTAT_BASE.sol","s":{"1":387,"2":387,"3":387,"4":387,"5":387,"6":387,"7":387,"8":387,"9":387,"10":387,"11":387,"12":384,"13":384,"14":384,"15":384,"16":384,"17":384,"18":384,"19":384,"20":384,"21":384,"22":384,"23":2,"24":18,"25":10,"26":6,"27":464,"28":430,"29":430,"30":1591,"31":1591,"32":0},"b":{"1":[387,2],"2":[387,0],"3":[384,0],"4":[34,430]},"f":{"1":387,"2":387,"3":384,"4":2,"5":18,"6":10,"7":464,"8":1591,"9":1591,"10":0},"fnMap":{"1":{"name":"initialize","line":69,"loc":{"start":{"line":58,"column":4},"end":{"line":82,"column":4}}},"2":{"name":"__CMTAT_init","line":98,"loc":{"start":{"line":87,"column":4},"end":{"line":146,"column":4}}},"3":{"name":"__CMTAT_init_unchained","line":148,"loc":{"start":{"line":148,"column":4},"end":{"line":150,"column":4}}},"4":{"name":"decimals","line":155,"loc":{"start":{"line":155,"column":4},"end":{"line":163,"column":4}}},"5":{"name":"transferFrom","line":165,"loc":{"start":{"line":165,"column":4},"end":{"line":176,"column":4}}},"6":{"name":"burnAndMint","line":189,"loc":{"start":{"line":189,"column":4},"end":{"line":192,"column":4}}},"7":{"name":"_update","line":198,"loc":{"start":{"line":198,"column":4},"end":{"line":213,"column":4}}},"8":{"name":"_msgSender","line":219,"loc":{"start":{"line":219,"column":4},"end":{"line":226,"column":4}}},"9":{"name":"_contextSuffixLength","line":231,"loc":{"start":{"line":231,"column":4},"end":{"line":235,"column":4}}},"10":{"name":"_msgData","line":240,"loc":{"start":{"line":240,"column":4},"end":{"line":247,"column":4}}}},"statementMap":{"1":{"start":{"line":70,"column":8},"end":{"line":70,"column":2538}},"2":{"start":{"line":101,"column":8},"end":{"line":101,"column":33}},"3":{"start":{"line":102,"column":8},"end":{"line":102,"column":65}},"4":{"start":{"line":104,"column":8},"end":{"line":104,"column":32}},"5":{"start":{"line":106,"column":8},"end":{"line":106,"column":39}},"6":{"start":{"line":107,"column":8},"end":{"line":107,"column":34}},"7":{"start":{"line":110,"column":8},"end":{"line":110,"column":37}},"8":{"start":{"line":115,"column":8},"end":{"line":115,"column":44}},"9":{"start":{"line":116,"column":8},"end":{"line":116,"column":39}},"10":{"start":{"line":118,"column":8},"end":{"line":118,"column":47}},"11":{"start":{"line":122,"column":8},"end":{"line":122,"column":82}},"12":{"start":{"line":123,"column":8},"end":{"line":123,"column":41}},"13":{"start":{"line":124,"column":8},"end":{"line":124,"column":41}},"14":{"start":{"line":126,"column":8},"end":{"line":126,"column":43}},"15":{"start":{"line":127,"column":8},"end":{"line":127,"column":60}},"16":{"start":{"line":129,"column":8},"end":{"line":129,"column":37}},"17":{"start":{"line":130,"column":8},"end":{"line":130,"column":42}},"18":{"start":{"line":136,"column":8},"end":{"line":136,"column":45}},"19":{"start":{"line":140,"column":8},"end":{"line":140,"column":40}},"20":{"start":{"line":141,"column":8},"end":{"line":141,"column":38}},"21":{"start":{"line":142,"column":8},"end":{"line":142,"column":67}},"22":{"start":{"line":145,"column":8},"end":{"line":145,"column":31}},"23":{"start":{"line":162,"column":8},"end":{"line":162,"column":41}},"24":{"start":{"line":175,"column":8},"end":{"line":175,"column":70}},"25":{"start":{"line":190,"column":8},"end":{"line":190,"column":39}},"26":{"start":{"line":191,"column":8},"end":{"line":191,"column":29}},"27":{"start":{"line":203,"column":8},"end":{"line":203,"column":6833}},"28":{"start":{"line":211,"column":8},"end":{"line":211,"column":60}},"29":{"start":{"line":212,"column":8},"end":{"line":212,"column":49}},"30":{"start":{"line":225,"column":8},"end":{"line":225,"column":53}},"31":{"start":{"line":234,"column":9},"end":{"line":234,"column":64}},"32":{"start":{"line":246,"column":8},"end":{"line":246,"column":51}}},"branchMap":{"1":{"line":69,"type":"if","locations":[{"start":{"line":69,"column":13},"end":{"line":69,"column":13}},{"start":{"line":69,"column":13},"end":{"line":69,"column":13}}]},"2":{"line":98,"type":"if","locations":[{"start":{"line":98,"column":15},"end":{"line":98,"column":15}},{"start":{"line":98,"column":15},"end":{"line":98,"column":15}}]},"3":{"line":148,"type":"if","locations":[{"start":{"line":148,"column":47},"end":{"line":148,"column":47}},{"start":{"line":148,"column":47},"end":{"line":148,"column":47}}]},"4":{"line":203,"type":"if","locations":[{"start":{"line":203,"column":8},"end":{"line":203,"column":8}},{"start":{"line":203,"column":8},"end":{"line":203,"column":8}}]}}},
-"contracts/modules/internal/base/SnapshotModuleBase.sol":{"l":{"75":2,"83":76,"85":76,"86":68,"91":68,"92":48,"95":20,"97":8,"100":8,"101":8,"102":12,"105":12,"106":12,"112":28,"122":176,"123":4,"129":172,"131":98,"134":98,"135":4,"141":4,"144":164,"145":164,"152":16,"153":4,"158":12,"160":12,"161":4,"164":8,"165":2,"167":6,"170":6,"171":10,"172":10,"173":10,"176":6,"178":8,"186":38,"187":4,"189":34,"190":4,"195":30,"196":4,"198":26,"199":26,"200":8,"202":18,"203":14,"204":14,"205":4,"211":4,"214":10,"215":6,"216":4,"222":6,"224":6,"232":18,"233":4,"235":14,"236":4,"239":10,"240":4,"242":6,"243":6,"253":16,"254":4,"256":12,"257":12,"258":4,"260":8,"261":16,"262":16,"263":16,"266":8,"294":1600,"296":1600,"297":1248,"299":352,"313":860,"314":860,"315":36,"316":36,"326":430,"330":430,"331":18,"332":18,"342":860,"343":852,"345":8,"356":50,"357":50,"359":50,"363":30,"367":10,"371":10,"384":498,"386":498,"390":412,"393":86,"394":86,"395":86,"396":116,"397":52,"398":52,"401":64,"403":52,"404":52,"407":86},"path":"/home/ryan/Downloads/CM/CMTAT/contracts/modules/internal/base/SnapshotModuleBase.sol","s":{"1":2,"2":76,"3":76,"4":68,"5":68,"6":48,"7":20,"8":8,"9":8,"10":28,"11":176,"12":172,"13":98,"14":98,"15":94,"16":164,"17":164,"18":16,"19":12,"20":12,"21":8,"22":2,"23":6,"24":6,"25":8,"26":38,"27":34,"28":30,"29":26,"30":26,"31":18,"32":14,"33":14,"34":10,"35":10,"36":6,"37":6,"38":18,"39":14,"40":10,"41":6,"42":6,"43":16,"44":12,"45":12,"46":8,"47":8,"48":1600,"49":1600,"50":1248,"51":352,"52":860,"53":860,"54":36,"55":36,"56":430,"57":430,"58":860,"59":852,"60":8,"61":50,"62":50,"63":50,"64":30,"65":20,"66":10,"67":10,"68":498,"69":498,"70":412,"71":86,"72":86,"73":116,"74":86},"b":{"1":[387,0],"2":[68,8],"3":[48,20],"4":[8,12],"5":[4,172],"6":[98,74],"7":[4,94],"8":[4,90],"9":[4,12],"10":[4,8],"11":[2,6],"12":[4,34],"13":[4,30],"14":[4,26],"15":[8,18],"16":[14,4],"17":[4,10],"18":[4,6],"19":[6,4],"20":[4,2],"21":[4,14],"22":[4,10],"23":[4,6],"24":[4,12],"25":[4,8],"26":[1248,352],"27":[36,824],"28":[18,412],"29":[852,8],"30":[30,20],"31":[10,10],"32":[412,86],"33":[412,0],"34":[52,64]},"f":{"1":387,"2":2,"3":76,"4":176,"5":16,"6":38,"7":18,"8":16,"9":1600,"10":860,"11":430,"12":860,"13":50,"14":498},"fnMap":{"1":{"name":"__SnapshotModuleBase_init_unchained","line":64,"loc":{"start":{"line":64,"column":4},"end":{"line":67,"column":4}}},"2":{"name":"getAllSnapshots","line":74,"loc":{"start":{"line":74,"column":4},"end":{"line":76,"column":4}}},"3":{"name":"getNextSnapshots","line":82,"loc":{"start":{"line":82,"column":4},"end":{"line":113,"column":4}}},"4":{"name":"_scheduleSnapshot","line":120,"loc":{"start":{"line":120,"column":4},"end":{"line":146,"column":4}}},"5":{"name":"_scheduleSnapshotNotOptimized","line":151,"loc":{"start":{"line":151,"column":4},"end":{"line":179,"column":4}}},"6":{"name":"_rescheduleSnapshot","line":184,"loc":{"start":{"line":184,"column":4},"end":{"line":225,"column":4}}},"7":{"name":"_unscheduleLastSnapshot","line":230,"loc":{"start":{"line":230,"column":4},"end":{"line":244,"column":4}}},"8":{"name":"_unscheduleSnapshotNotOptimized","line":252,"loc":{"start":{"line":252,"column":4},"end":{"line":267,"column":4}}},"9":{"name":"_valueAt","line":276,"loc":{"start":{"line":276,"column":4},"end":{"line":301,"column":4}}},"10":{"name":"_updateSnapshot","line":309,"loc":{"start":{"line":309,"column":4},"end":{"line":318,"column":4}}},"11":{"name":"_setCurrentSnapshot","line":325,"loc":{"start":{"line":325,"column":4},"end":{"line":334,"column":4}}},"12":{"name":"_lastSnapshot","line":339,"loc":{"start":{"line":339,"column":4},"end":{"line":347,"column":4}}},"13":{"name":"_findScheduledSnapshotIndex","line":353,"loc":{"start":{"line":353,"column":4},"end":{"line":373,"column":4}}},"14":{"name":"_findScheduledMostRecentPastSnapshot","line":379,"loc":{"start":{"line":379,"column":4},"end":{"line":408,"column":4}}}},"statementMap":{"1":{"start":{"line":75,"column":8},"end":{"line":75,"column":34}},"2":{"start":{"line":83,"column":8},"end":{"line":83,"column":65}},"3":{"start":{"line":85,"column":8},"end":{"line":85,"column":2651}},"4":{"start":{"line":86,"column":12},"end":{"line":86,"column":2747}},"5":{"start":{"line":91,"column":12},"end":{"line":91,"column":2910}},"6":{"start":{"line":92,"column":16},"end":{"line":92,"column":42}},"7":{"start":{"line":95,"column":16},"end":{"line":95,"column":3116}},"8":{"start":{"line":97,"column":20},"end":{"line":97,"column":3304}},"9":{"start":{"line":101,"column":20},"end":{"line":101,"column":3507}},"10":{"start":{"line":112,"column":8},"end":{"line":112,"column":36}},"11":{"start":{"line":122,"column":8},"end":{"line":122,"column":4147}},"12":{"start":{"line":129,"column":8},"end":{"line":129,"column":4341}},"13":{"start":{"line":131,"column":12},"end":{"line":131,"column":4450}},"14":{"start":{"line":134,"column":12},"end":{"line":134,"column":4571}},"15":{"start":{"line":140,"column":19},"end":{"line":140,"column":4824}},"16":{"start":{"line":144,"column":8},"end":{"line":144,"column":37}},"17":{"start":{"line":145,"column":8},"end":{"line":145,"column":38}},"18":{"start":{"line":152,"column":8},"end":{"line":152,"column":5184}},"19":{"start":{"line":158,"column":8},"end":{"line":158,"column":73}},"20":{"start":{"line":160,"column":8},"end":{"line":160,"column":5477}},"21":{"start":{"line":164,"column":8},"end":{"line":164,"column":5668}},"22":{"start":{"line":165,"column":12},"end":{"line":165,"column":41}},"23":{"start":{"line":167,"column":12},"end":{"line":167,"column":5788}},"24":{"start":{"line":170,"column":12},"end":{"line":170,"column":5909}},"25":{"start":{"line":178,"column":8},"end":{"line":178,"column":38}},"26":{"start":{"line":186,"column":8},"end":{"line":186,"column":6467}},"27":{"start":{"line":189,"column":8},"end":{"line":189,"column":6589}},"28":{"start":{"line":195,"column":8},"end":{"line":195,"column":6788}},"29":{"start":{"line":198,"column":8},"end":{"line":198,"column":77}},"30":{"start":{"line":199,"column":8},"end":{"line":199,"column":6994}},"31":{"start":{"line":202,"column":8},"end":{"line":202,"column":7096}},"32":{"start":{"line":203,"column":12},"end":{"line":203,"column":69}},"33":{"start":{"line":204,"column":12},"end":{"line":204,"column":7229}},"34":{"start":{"line":210,"column":19},"end":{"line":210,"column":7487}},"35":{"start":{"line":214,"column":8},"end":{"line":214,"column":7626}},"36":{"start":{"line":215,"column":12},"end":{"line":215,"column":7668}},"37":{"start":{"line":224,"column":8},"end":{"line":224,"column":47}},"38":{"start":{"line":232,"column":8},"end":{"line":232,"column":8244}},"39":{"start":{"line":235,"column":8},"end":{"line":235,"column":8363}},"40":{"start":{"line":239,"column":8},"end":{"line":239,"column":8561}},"41":{"start":{"line":242,"column":8},"end":{"line":242,"column":32}},"42":{"start":{"line":243,"column":8},"end":{"line":243,"column":37}},"43":{"start":{"line":253,"column":8},"end":{"line":253,"column":9115}},"44":{"start":{"line":256,"column":8},"end":{"line":256,"column":73}},"45":{"start":{"line":257,"column":8},"end":{"line":257,"column":9309}},"46":{"start":{"line":260,"column":8},"end":{"line":260,"column":9410}},"47":{"start":{"line":266,"column":8},"end":{"line":266,"column":32}},"48":{"start":{"line":294,"column":8},"end":{"line":294,"column":58}},"49":{"start":{"line":296,"column":8},"end":{"line":296,"column":11286}},"50":{"start":{"line":297,"column":12},"end":{"line":297,"column":29}},"51":{"start":{"line":299,"column":12},"end":{"line":299,"column":50}},"52":{"start":{"line":313,"column":8},"end":{"line":313,"column":46}},"53":{"start":{"line":314,"column":8},"end":{"line":314,"column":11843}},"54":{"start":{"line":315,"column":12},"end":{"line":315,"column":38}},"55":{"start":{"line":316,"column":12},"end":{"line":316,"column":46}},"56":{"start":{"line":326,"column":8},"end":{"line":326,"column":12254}},"57":{"start":{"line":330,"column":8},"end":{"line":330,"column":12358}},"58":{"start":{"line":342,"column":8},"end":{"line":342,"column":12708}},"59":{"start":{"line":343,"column":12},"end":{"line":343,"column":20}},"60":{"start":{"line":345,"column":12},"end":{"line":345,"column":38}},"61":{"start":{"line":356,"column":8},"end":{"line":356,"column":69}},"62":{"start":{"line":357,"column":8},"end":{"line":357,"column":70}},"63":{"start":{"line":359,"column":8},"end":{"line":359,"column":13255}},"64":{"start":{"line":363,"column":12},"end":{"line":363,"column":37}},"65":{"start":{"line":366,"column":13},"end":{"line":366,"column":13470}},"66":{"start":{"line":367,"column":12},"end":{"line":367,"column":38}},"67":{"start":{"line":371,"column":12},"end":{"line":371,"column":53}},"68":{"start":{"line":384,"column":8},"end":{"line":384,"column":61}},"69":{"start":{"line":386,"column":8},"end":{"line":386,"column":14106}},"70":{"start":{"line":390,"column":12},"end":{"line":390,"column":40}},"71":{"start":{"line":393,"column":8},"end":{"line":393,"column":26}},"72":{"start":{"line":395,"column":8},"end":{"line":395,"column":14408}},"73":{"start":{"line":396,"column":12},"end":{"line":396,"column":14490}},"74":{"start":{"line":407,"column":8},"end":{"line":407,"column":34}}},"branchMap":{"1":{"line":64,"type":"if","locations":[{"start":{"line":64,"column":60},"end":{"line":64,"column":60}},{"start":{"line":64,"column":60},"end":{"line":64,"column":60}}]},"2":{"line":85,"type":"if","locations":[{"start":{"line":85,"column":8},"end":{"line":85,"column":8}},{"start":{"line":85,"column":8},"end":{"line":85,"column":8}}]},"3":{"line":91,"type":"if","locations":[{"start":{"line":91,"column":12},"end":{"line":91,"column":12}},{"start":{"line":91,"column":12},"end":{"line":91,"column":12}}]},"4":{"line":95,"type":"if","locations":[{"start":{"line":95,"column":16},"end":{"line":95,"column":16}},{"start":{"line":95,"column":16},"end":{"line":95,"column":16}}]},"5":{"line":122,"type":"if","locations":[{"start":{"line":122,"column":8},"end":{"line":122,"column":8}},{"start":{"line":122,"column":8},"end":{"line":122,"column":8}}]},"6":{"line":129,"type":"if","locations":[{"start":{"line":129,"column":8},"end":{"line":129,"column":8}},{"start":{"line":129,"column":8},"end":{"line":129,"column":8}}]},"7":{"line":134,"type":"if","locations":[{"start":{"line":134,"column":12},"end":{"line":134,"column":12}},{"start":{"line":134,"column":12},"end":{"line":134,"column":12}}]},"8":{"line":140,"type":"if","locations":[{"start":{"line":140,"column":19},"end":{"line":140,"column":19}},{"start":{"line":140,"column":19},"end":{"line":140,"column":19}}]},"9":{"line":152,"type":"if","locations":[{"start":{"line":152,"column":8},"end":{"line":152,"column":8}},{"start":{"line":152,"column":8},"end":{"line":152,"column":8}}]},"10":{"line":160,"type":"if","locations":[{"start":{"line":160,"column":8},"end":{"line":160,"column":8}},{"start":{"line":160,"column":8},"end":{"line":160,"column":8}}]},"11":{"line":164,"type":"if","locations":[{"start":{"line":164,"column":8},"end":{"line":164,"column":8}},{"start":{"line":164,"column":8},"end":{"line":164,"column":8}}]},"12":{"line":186,"type":"if","locations":[{"start":{"line":186,"column":8},"end":{"line":186,"column":8}},{"start":{"line":186,"column":8},"end":{"line":186,"column":8}}]},"13":{"line":189,"type":"if","locations":[{"start":{"line":189,"column":8},"end":{"line":189,"column":8}},{"start":{"line":189,"column":8},"end":{"line":189,"column":8}}]},"14":{"line":195,"type":"if","locations":[{"start":{"line":195,"column":8},"end":{"line":195,"column":8}},{"start":{"line":195,"column":8},"end":{"line":195,"column":8}}]},"15":{"line":199,"type":"if","locations":[{"start":{"line":199,"column":8},"end":{"line":199,"column":8}},{"start":{"line":199,"column":8},"end":{"line":199,"column":8}}]},"16":{"line":202,"type":"if","locations":[{"start":{"line":202,"column":8},"end":{"line":202,"column":8}},{"start":{"line":202,"column":8},"end":{"line":202,"column":8}}]},"17":{"line":204,"type":"if","locations":[{"start":{"line":204,"column":12},"end":{"line":204,"column":12}},{"start":{"line":204,"column":12},"end":{"line":204,"column":12}}]},"18":{"line":210,"type":"if","locations":[{"start":{"line":210,"column":19},"end":{"line":210,"column":19}},{"start":{"line":210,"column":19},"end":{"line":210,"column":19}}]},"19":{"line":214,"type":"if","locations":[{"start":{"line":214,"column":8},"end":{"line":214,"column":8}},{"start":{"line":214,"column":8},"end":{"line":214,"column":8}}]},"20":{"line":215,"type":"if","locations":[{"start":{"line":215,"column":12},"end":{"line":215,"column":12}},{"start":{"line":215,"column":12},"end":{"line":215,"column":12}}]},"21":{"line":232,"type":"if","locations":[{"start":{"line":232,"column":8},"end":{"line":232,"column":8}},{"start":{"line":232,"column":8},"end":{"line":232,"column":8}}]},"22":{"line":235,"type":"if","locations":[{"start":{"line":235,"column":8},"end":{"line":235,"column":8}},{"start":{"line":235,"column":8},"end":{"line":235,"column":8}}]},"23":{"line":239,"type":"if","locations":[{"start":{"line":239,"column":8},"end":{"line":239,"column":8}},{"start":{"line":239,"column":8},"end":{"line":239,"column":8}}]},"24":{"line":253,"type":"if","locations":[{"start":{"line":253,"column":8},"end":{"line":253,"column":8}},{"start":{"line":253,"column":8},"end":{"line":253,"column":8}}]},"25":{"line":257,"type":"if","locations":[{"start":{"line":257,"column":8},"end":{"line":257,"column":8}},{"start":{"line":257,"column":8},"end":{"line":257,"column":8}}]},"26":{"line":296,"type":"if","locations":[{"start":{"line":296,"column":8},"end":{"line":296,"column":8}},{"start":{"line":296,"column":8},"end":{"line":296,"column":8}}]},"27":{"line":314,"type":"if","locations":[{"start":{"line":314,"column":8},"end":{"line":314,"column":8}},{"start":{"line":314,"column":8},"end":{"line":314,"column":8}}]},"28":{"line":330,"type":"if","locations":[{"start":{"line":330,"column":8},"end":{"line":330,"column":8}},{"start":{"line":330,"column":8},"end":{"line":330,"column":8}}]},"29":{"line":342,"type":"if","locations":[{"start":{"line":342,"column":8},"end":{"line":342,"column":8}},{"start":{"line":342,"column":8},"end":{"line":342,"column":8}}]},"30":{"line":359,"type":"if","locations":[{"start":{"line":359,"column":8},"end":{"line":359,"column":8}},{"start":{"line":359,"column":8},"end":{"line":359,"column":8}}]},"31":{"line":366,"type":"if","locations":[{"start":{"line":366,"column":13},"end":{"line":366,"column":13}},{"start":{"line":366,"column":13},"end":{"line":366,"column":13}}]},"32":{"line":386,"type":"if","locations":[{"start":{"line":386,"column":8},"end":{"line":386,"column":8}},{"start":{"line":386,"column":8},"end":{"line":386,"column":8}}]},"33":{"line":387,"type":"cond-expr","locations":[{"start":{"line":387,"column":12},"end":{"line":387,"column":32}},{"start":{"line":388,"column":12},"end":{"line":388,"column":75}}]},"34":{"line":396,"type":"if","locations":[{"start":{"line":396,"column":12},"end":{"line":396,"column":12}},{"start":{"line":396,"column":12},"end":{"line":396,"column":12}}]}}},
+"contracts/modules/internal/base/SnapshotModuleBase.sol":{"l":{"75":2,"83":76,"85":76,"86":68,"91":68,"92":48,"95":20,"97":8,"100":8,"102":8,"103":12,"110":28,"120":176,"121":4,"127":172,"129":98,"132":98,"133":4,"139":4,"142":164,"143":164,"150":16,"151":4,"156":12,"158":12,"159":4,"162":8,"163":2,"165":6,"168":6,"169":10,"170":10,"171":10,"174":6,"176":8,"184":38,"185":4,"187":34,"188":4,"193":30,"194":4,"196":26,"197":26,"198":8,"200":18,"201":14,"202":14,"203":4,"209":4,"212":10,"213":6,"214":4,"220":6,"222":6,"230":18,"231":4,"233":14,"234":4,"237":10,"238":4,"240":6,"241":6,"251":16,"252":4,"254":12,"255":12,"256":4,"259":8,"260":16,"262":8,"290":1920,"292":1920,"293":1484,"295":436,"309":860,"310":860,"311":36,"312":36,"322":430,"326":430,"327":18,"328":18,"338":860,"339":852,"341":8,"352":50,"353":50,"355":50,"359":30,"363":10,"367":10,"380":498,"382":498,"386":412,"389":86,"390":86,"392":86,"393":116,"394":52,"395":52,"398":64,"401":86},"path":"/home/ryan/Downloads/CM/CMTAT/contracts/modules/internal/base/SnapshotModuleBase.sol","s":{"1":2,"2":76,"3":76,"4":68,"5":68,"6":48,"7":20,"8":8,"9":8,"10":28,"11":176,"12":172,"13":98,"14":98,"15":94,"16":164,"17":164,"18":16,"19":12,"20":12,"21":8,"22":2,"23":6,"24":6,"25":8,"26":38,"27":34,"28":30,"29":26,"30":26,"31":18,"32":14,"33":14,"34":10,"35":10,"36":6,"37":6,"38":18,"39":14,"40":10,"41":6,"42":6,"43":16,"44":12,"45":12,"46":8,"47":8,"48":1920,"49":1920,"50":1484,"51":436,"52":860,"53":860,"54":36,"55":36,"56":430,"57":430,"58":860,"59":852,"60":8,"61":50,"62":50,"63":50,"64":30,"65":20,"66":10,"67":10,"68":498,"69":498,"70":412,"71":86,"72":86,"73":116,"74":86},"b":{"1":[387,0],"2":[68,8],"3":[48,20],"4":[8,12],"5":[4,172],"6":[98,74],"7":[4,94],"8":[4,90],"9":[4,12],"10":[4,8],"11":[2,6],"12":[4,34],"13":[4,30],"14":[4,26],"15":[8,18],"16":[14,4],"17":[4,10],"18":[4,6],"19":[6,4],"20":[4,2],"21":[4,14],"22":[4,10],"23":[4,6],"24":[4,12],"25":[4,8],"26":[1484,436],"27":[36,824],"28":[18,412],"29":[852,8],"30":[30,20],"31":[10,10],"32":[412,86],"33":[412,0],"34":[52,64]},"f":{"1":387,"2":2,"3":76,"4":176,"5":16,"6":38,"7":18,"8":16,"9":1920,"10":860,"11":430,"12":860,"13":50,"14":498},"fnMap":{"1":{"name":"__SnapshotModuleBase_init_unchained","line":64,"loc":{"start":{"line":64,"column":4},"end":{"line":67,"column":4}}},"2":{"name":"getAllSnapshots","line":74,"loc":{"start":{"line":74,"column":4},"end":{"line":76,"column":4}}},"3":{"name":"getNextSnapshots","line":82,"loc":{"start":{"line":82,"column":4},"end":{"line":111,"column":4}}},"4":{"name":"_scheduleSnapshot","line":118,"loc":{"start":{"line":118,"column":4},"end":{"line":144,"column":4}}},"5":{"name":"_scheduleSnapshotNotOptimized","line":149,"loc":{"start":{"line":149,"column":4},"end":{"line":177,"column":4}}},"6":{"name":"_rescheduleSnapshot","line":182,"loc":{"start":{"line":182,"column":4},"end":{"line":223,"column":4}}},"7":{"name":"_unscheduleLastSnapshot","line":228,"loc":{"start":{"line":228,"column":4},"end":{"line":242,"column":4}}},"8":{"name":"_unscheduleSnapshotNotOptimized","line":250,"loc":{"start":{"line":250,"column":4},"end":{"line":263,"column":4}}},"9":{"name":"_valueAt","line":272,"loc":{"start":{"line":272,"column":4},"end":{"line":297,"column":4}}},"10":{"name":"_updateSnapshot","line":305,"loc":{"start":{"line":305,"column":4},"end":{"line":314,"column":4}}},"11":{"name":"_setCurrentSnapshot","line":321,"loc":{"start":{"line":321,"column":4},"end":{"line":330,"column":4}}},"12":{"name":"_lastSnapshot","line":335,"loc":{"start":{"line":335,"column":4},"end":{"line":343,"column":4}}},"13":{"name":"_findScheduledSnapshotIndex","line":349,"loc":{"start":{"line":349,"column":4},"end":{"line":369,"column":4}}},"14":{"name":"_findScheduledMostRecentPastSnapshot","line":375,"loc":{"start":{"line":375,"column":4},"end":{"line":402,"column":4}}}},"statementMap":{"1":{"start":{"line":75,"column":8},"end":{"line":75,"column":34}},"2":{"start":{"line":83,"column":8},"end":{"line":83,"column":65}},"3":{"start":{"line":85,"column":8},"end":{"line":85,"column":2651}},"4":{"start":{"line":86,"column":12},"end":{"line":86,"column":2747}},"5":{"start":{"line":91,"column":12},"end":{"line":91,"column":2910}},"6":{"start":{"line":92,"column":16},"end":{"line":92,"column":42}},"7":{"start":{"line":95,"column":16},"end":{"line":95,"column":3116}},"8":{"start":{"line":97,"column":20},"end":{"line":97,"column":3304}},"9":{"start":{"line":102,"column":20},"end":{"line":102,"column":3580}},"10":{"start":{"line":110,"column":8},"end":{"line":110,"column":36}},"11":{"start":{"line":120,"column":8},"end":{"line":120,"column":4128}},"12":{"start":{"line":127,"column":8},"end":{"line":127,"column":4322}},"13":{"start":{"line":129,"column":12},"end":{"line":129,"column":4431}},"14":{"start":{"line":132,"column":12},"end":{"line":132,"column":4552}},"15":{"start":{"line":138,"column":19},"end":{"line":138,"column":4805}},"16":{"start":{"line":142,"column":8},"end":{"line":142,"column":37}},"17":{"start":{"line":143,"column":8},"end":{"line":143,"column":38}},"18":{"start":{"line":150,"column":8},"end":{"line":150,"column":5165}},"19":{"start":{"line":156,"column":8},"end":{"line":156,"column":73}},"20":{"start":{"line":158,"column":8},"end":{"line":158,"column":5458}},"21":{"start":{"line":162,"column":8},"end":{"line":162,"column":5649}},"22":{"start":{"line":163,"column":12},"end":{"line":163,"column":41}},"23":{"start":{"line":165,"column":12},"end":{"line":165,"column":5769}},"24":{"start":{"line":168,"column":12},"end":{"line":168,"column":5890}},"25":{"start":{"line":176,"column":8},"end":{"line":176,"column":38}},"26":{"start":{"line":184,"column":8},"end":{"line":184,"column":6448}},"27":{"start":{"line":187,"column":8},"end":{"line":187,"column":6570}},"28":{"start":{"line":193,"column":8},"end":{"line":193,"column":6769}},"29":{"start":{"line":196,"column":8},"end":{"line":196,"column":77}},"30":{"start":{"line":197,"column":8},"end":{"line":197,"column":6975}},"31":{"start":{"line":200,"column":8},"end":{"line":200,"column":7077}},"32":{"start":{"line":201,"column":12},"end":{"line":201,"column":69}},"33":{"start":{"line":202,"column":12},"end":{"line":202,"column":7210}},"34":{"start":{"line":208,"column":19},"end":{"line":208,"column":7468}},"35":{"start":{"line":212,"column":8},"end":{"line":212,"column":7607}},"36":{"start":{"line":213,"column":12},"end":{"line":213,"column":7649}},"37":{"start":{"line":222,"column":8},"end":{"line":222,"column":47}},"38":{"start":{"line":230,"column":8},"end":{"line":230,"column":8225}},"39":{"start":{"line":233,"column":8},"end":{"line":233,"column":8344}},"40":{"start":{"line":237,"column":8},"end":{"line":237,"column":8542}},"41":{"start":{"line":240,"column":8},"end":{"line":240,"column":32}},"42":{"start":{"line":241,"column":8},"end":{"line":241,"column":37}},"43":{"start":{"line":251,"column":8},"end":{"line":251,"column":9096}},"44":{"start":{"line":254,"column":8},"end":{"line":254,"column":73}},"45":{"start":{"line":255,"column":8},"end":{"line":255,"column":9290}},"46":{"start":{"line":259,"column":8},"end":{"line":259,"column":9452}},"47":{"start":{"line":262,"column":8},"end":{"line":262,"column":32}},"48":{"start":{"line":290,"column":8},"end":{"line":290,"column":58}},"49":{"start":{"line":292,"column":8},"end":{"line":292,"column":11273}},"50":{"start":{"line":293,"column":12},"end":{"line":293,"column":29}},"51":{"start":{"line":295,"column":12},"end":{"line":295,"column":50}},"52":{"start":{"line":309,"column":8},"end":{"line":309,"column":46}},"53":{"start":{"line":310,"column":8},"end":{"line":310,"column":11830}},"54":{"start":{"line":311,"column":12},"end":{"line":311,"column":38}},"55":{"start":{"line":312,"column":12},"end":{"line":312,"column":46}},"56":{"start":{"line":322,"column":8},"end":{"line":322,"column":12241}},"57":{"start":{"line":326,"column":8},"end":{"line":326,"column":12345}},"58":{"start":{"line":338,"column":8},"end":{"line":338,"column":12695}},"59":{"start":{"line":339,"column":12},"end":{"line":339,"column":20}},"60":{"start":{"line":341,"column":12},"end":{"line":341,"column":38}},"61":{"start":{"line":352,"column":8},"end":{"line":352,"column":69}},"62":{"start":{"line":353,"column":8},"end":{"line":353,"column":70}},"63":{"start":{"line":355,"column":8},"end":{"line":355,"column":13242}},"64":{"start":{"line":359,"column":12},"end":{"line":359,"column":37}},"65":{"start":{"line":362,"column":13},"end":{"line":362,"column":13457}},"66":{"start":{"line":363,"column":12},"end":{"line":363,"column":38}},"67":{"start":{"line":367,"column":12},"end":{"line":367,"column":53}},"68":{"start":{"line":380,"column":8},"end":{"line":380,"column":61}},"69":{"start":{"line":382,"column":8},"end":{"line":382,"column":14093}},"70":{"start":{"line":386,"column":12},"end":{"line":386,"column":40}},"71":{"start":{"line":389,"column":8},"end":{"line":389,"column":26}},"72":{"start":{"line":392,"column":8},"end":{"line":392,"column":14456}},"73":{"start":{"line":393,"column":12},"end":{"line":393,"column":14542}},"74":{"start":{"line":401,"column":8},"end":{"line":401,"column":34}}},"branchMap":{"1":{"line":64,"type":"if","locations":[{"start":{"line":64,"column":60},"end":{"line":64,"column":60}},{"start":{"line":64,"column":60},"end":{"line":64,"column":60}}]},"2":{"line":85,"type":"if","locations":[{"start":{"line":85,"column":8},"end":{"line":85,"column":8}},{"start":{"line":85,"column":8},"end":{"line":85,"column":8}}]},"3":{"line":91,"type":"if","locations":[{"start":{"line":91,"column":12},"end":{"line":91,"column":12}},{"start":{"line":91,"column":12},"end":{"line":91,"column":12}}]},"4":{"line":95,"type":"if","locations":[{"start":{"line":95,"column":16},"end":{"line":95,"column":16}},{"start":{"line":95,"column":16},"end":{"line":95,"column":16}}]},"5":{"line":120,"type":"if","locations":[{"start":{"line":120,"column":8},"end":{"line":120,"column":8}},{"start":{"line":120,"column":8},"end":{"line":120,"column":8}}]},"6":{"line":127,"type":"if","locations":[{"start":{"line":127,"column":8},"end":{"line":127,"column":8}},{"start":{"line":127,"column":8},"end":{"line":127,"column":8}}]},"7":{"line":132,"type":"if","locations":[{"start":{"line":132,"column":12},"end":{"line":132,"column":12}},{"start":{"line":132,"column":12},"end":{"line":132,"column":12}}]},"8":{"line":138,"type":"if","locations":[{"start":{"line":138,"column":19},"end":{"line":138,"column":19}},{"start":{"line":138,"column":19},"end":{"line":138,"column":19}}]},"9":{"line":150,"type":"if","locations":[{"start":{"line":150,"column":8},"end":{"line":150,"column":8}},{"start":{"line":150,"column":8},"end":{"line":150,"column":8}}]},"10":{"line":158,"type":"if","locations":[{"start":{"line":158,"column":8},"end":{"line":158,"column":8}},{"start":{"line":158,"column":8},"end":{"line":158,"column":8}}]},"11":{"line":162,"type":"if","locations":[{"start":{"line":162,"column":8},"end":{"line":162,"column":8}},{"start":{"line":162,"column":8},"end":{"line":162,"column":8}}]},"12":{"line":184,"type":"if","locations":[{"start":{"line":184,"column":8},"end":{"line":184,"column":8}},{"start":{"line":184,"column":8},"end":{"line":184,"column":8}}]},"13":{"line":187,"type":"if","locations":[{"start":{"line":187,"column":8},"end":{"line":187,"column":8}},{"start":{"line":187,"column":8},"end":{"line":187,"column":8}}]},"14":{"line":193,"type":"if","locations":[{"start":{"line":193,"column":8},"end":{"line":193,"column":8}},{"start":{"line":193,"column":8},"end":{"line":193,"column":8}}]},"15":{"line":197,"type":"if","locations":[{"start":{"line":197,"column":8},"end":{"line":197,"column":8}},{"start":{"line":197,"column":8},"end":{"line":197,"column":8}}]},"16":{"line":200,"type":"if","locations":[{"start":{"line":200,"column":8},"end":{"line":200,"column":8}},{"start":{"line":200,"column":8},"end":{"line":200,"column":8}}]},"17":{"line":202,"type":"if","locations":[{"start":{"line":202,"column":12},"end":{"line":202,"column":12}},{"start":{"line":202,"column":12},"end":{"line":202,"column":12}}]},"18":{"line":208,"type":"if","locations":[{"start":{"line":208,"column":19},"end":{"line":208,"column":19}},{"start":{"line":208,"column":19},"end":{"line":208,"column":19}}]},"19":{"line":212,"type":"if","locations":[{"start":{"line":212,"column":8},"end":{"line":212,"column":8}},{"start":{"line":212,"column":8},"end":{"line":212,"column":8}}]},"20":{"line":213,"type":"if","locations":[{"start":{"line":213,"column":12},"end":{"line":213,"column":12}},{"start":{"line":213,"column":12},"end":{"line":213,"column":12}}]},"21":{"line":230,"type":"if","locations":[{"start":{"line":230,"column":8},"end":{"line":230,"column":8}},{"start":{"line":230,"column":8},"end":{"line":230,"column":8}}]},"22":{"line":233,"type":"if","locations":[{"start":{"line":233,"column":8},"end":{"line":233,"column":8}},{"start":{"line":233,"column":8},"end":{"line":233,"column":8}}]},"23":{"line":237,"type":"if","locations":[{"start":{"line":237,"column":8},"end":{"line":237,"column":8}},{"start":{"line":237,"column":8},"end":{"line":237,"column":8}}]},"24":{"line":251,"type":"if","locations":[{"start":{"line":251,"column":8},"end":{"line":251,"column":8}},{"start":{"line":251,"column":8},"end":{"line":251,"column":8}}]},"25":{"line":255,"type":"if","locations":[{"start":{"line":255,"column":8},"end":{"line":255,"column":8}},{"start":{"line":255,"column":8},"end":{"line":255,"column":8}}]},"26":{"line":292,"type":"if","locations":[{"start":{"line":292,"column":8},"end":{"line":292,"column":8}},{"start":{"line":292,"column":8},"end":{"line":292,"column":8}}]},"27":{"line":310,"type":"if","locations":[{"start":{"line":310,"column":8},"end":{"line":310,"column":8}},{"start":{"line":310,"column":8},"end":{"line":310,"column":8}}]},"28":{"line":326,"type":"if","locations":[{"start":{"line":326,"column":8},"end":{"line":326,"column":8}},{"start":{"line":326,"column":8},"end":{"line":326,"column":8}}]},"29":{"line":338,"type":"if","locations":[{"start":{"line":338,"column":8},"end":{"line":338,"column":8}},{"start":{"line":338,"column":8},"end":{"line":338,"column":8}}]},"30":{"line":355,"type":"if","locations":[{"start":{"line":355,"column":8},"end":{"line":355,"column":8}},{"start":{"line":355,"column":8},"end":{"line":355,"column":8}}]},"31":{"line":362,"type":"if","locations":[{"start":{"line":362,"column":13},"end":{"line":362,"column":13}},{"start":{"line":362,"column":13},"end":{"line":362,"column":13}}]},"32":{"line":382,"type":"if","locations":[{"start":{"line":382,"column":8},"end":{"line":382,"column":8}},{"start":{"line":382,"column":8},"end":{"line":382,"column":8}}]},"33":{"line":383,"type":"cond-expr","locations":[{"start":{"line":383,"column":12},"end":{"line":383,"column":32}},{"start":{"line":384,"column":12},"end":{"line":384,"column":75}}]},"34":{"line":393,"type":"if","locations":[{"start":{"line":393,"column":12},"end":{"line":393,"column":12}},{"start":{"line":393,"column":12},"end":{"line":393,"column":12}}]}}},
"contracts/modules/internal/EnforcementModuleInternal.sol":{"l":{"48":974,"61":22,"62":2,"64":20,"65":20,"66":20,"78":8,"79":2,"81":6,"82":6,"84":6},"path":"/home/ryan/Downloads/CM/CMTAT/contracts/modules/internal/EnforcementModuleInternal.sol","s":{"1":974,"2":22,"3":2,"4":20,"5":20,"6":8,"7":2,"8":6,"9":6},"b":{"1":[387,0],"2":[2,20],"3":[2,6]},"f":{"1":387,"2":974,"3":22,"4":8},"fnMap":{"1":{"name":"__Enforcement_init_unchained","line":40,"loc":{"start":{"line":40,"column":4},"end":{"line":42,"column":4}}},"2":{"name":"frozen","line":47,"loc":{"start":{"line":47,"column":4},"end":{"line":49,"column":4}}},"3":{"name":"_freeze","line":57,"loc":{"start":{"line":57,"column":4},"end":{"line":67,"column":4}}},"4":{"name":"_unfreeze","line":74,"loc":{"start":{"line":74,"column":4},"end":{"line":85,"column":4}}}},"statementMap":{"1":{"start":{"line":48,"column":8},"end":{"line":48,"column":31}},"2":{"start":{"line":61,"column":8},"end":{"line":61,"column":1634}},"3":{"start":{"line":62,"column":12},"end":{"line":62,"column":24}},"4":{"start":{"line":65,"column":8},"end":{"line":65,"column":58}},"5":{"start":{"line":66,"column":8},"end":{"line":66,"column":19}},"6":{"start":{"line":78,"column":8},"end":{"line":78,"column":2099}},"7":{"start":{"line":79,"column":12},"end":{"line":79,"column":24}},"8":{"start":{"line":82,"column":8},"end":{"line":82,"column":60}},"9":{"start":{"line":84,"column":8},"end":{"line":84,"column":19}}},"branchMap":{"1":{"line":40,"type":"if","locations":[{"start":{"line":40,"column":53},"end":{"line":40,"column":53}},{"start":{"line":40,"column":53},"end":{"line":40,"column":53}}]},"2":{"line":61,"type":"if","locations":[{"start":{"line":61,"column":8},"end":{"line":61,"column":8}},{"start":{"line":61,"column":8},"end":{"line":61,"column":8}}]},"3":{"line":78,"type":"if","locations":[{"start":{"line":78,"column":8},"end":{"line":78,"column":8}},{"start":{"line":78,"column":8},"end":{"line":78,"column":8}}]}}},
-"contracts/modules/internal/ERC20SnapshotModuleInternal.sol":{"l":{"42":480,"43":480,"51":80,"52":80,"53":240,"55":80,"66":960,"71":960,"80":640,"84":640,"96":430,"97":430,"99":99,"100":99,"102":55,"105":44,"109":331,"110":331,"118":485,"125":375},"path":"/home/ryan/Downloads/CM/CMTAT/contracts/modules/internal/ERC20SnapshotModuleInternal.sol","s":{"1":80,"2":960,"3":960,"4":640,"5":640,"6":430,"7":430,"8":99,"9":99,"10":55,"11":44,"12":331,"13":331,"14":485,"15":375},"b":{"1":[387,0],"2":[320,640],"3":[32,608],"4":[99,331],"5":[55,44]},"f":{"1":387,"2":480,"3":80,"4":960,"5":640,"6":430,"7":485,"8":375},"fnMap":{"1":{"name":"__ERC20Snapshot_init_unchained","line":32,"loc":{"start":{"line":32,"column":4},"end":{"line":35,"column":4}}},"2":{"name":"snapshotInfo","line":41,"loc":{"start":{"line":41,"column":4},"end":{"line":44,"column":4}}},"3":{"name":"snapshotInfoBatch","line":50,"loc":{"start":{"line":50,"column":4},"end":{"line":56,"column":4}}},"4":{"name":"snapshotBalanceOf","line":62,"loc":{"start":{"line":62,"column":4},"end":{"line":72,"column":4}}},"5":{"name":"snapshotTotalSupply","line":79,"loc":{"start":{"line":79,"column":4},"end":{"line":85,"column":4}}},"6":{"name":"_snapshotUpdate","line":92,"loc":{"start":{"line":92,"column":4},"end":{"line":112,"column":4}}},"7":{"name":"_updateAccountSnapshot","line":117,"loc":{"start":{"line":117,"column":4},"end":{"line":119,"column":4}}},"8":{"name":"_updateTotalSupplySnapshot","line":124,"loc":{"start":{"line":124,"column":4},"end":{"line":126,"column":4}}}},"statementMap":{"1":{"start":{"line":52,"column":8},"end":{"line":52,"column":2203}},"2":{"start":{"line":66,"column":8},"end":{"line":66,"column":2738}},"3":{"start":{"line":71,"column":8},"end":{"line":71,"column":53}},"4":{"start":{"line":80,"column":8},"end":{"line":80,"column":3209}},"5":{"start":{"line":84,"column":8},"end":{"line":84,"column":50}},"6":{"start":{"line":96,"column":8},"end":{"line":96,"column":28}},"7":{"start":{"line":97,"column":8},"end":{"line":97,"column":3739}},"8":{"start":{"line":99,"column":12},"end":{"line":99,"column":39}},"9":{"start":{"line":100,"column":12},"end":{"line":100,"column":3865}},"10":{"start":{"line":102,"column":16},"end":{"line":102,"column":41}},"11":{"start":{"line":105,"column":16},"end":{"line":105,"column":43}},"12":{"start":{"line":109,"column":12},"end":{"line":109,"column":37}},"13":{"start":{"line":110,"column":12},"end":{"line":110,"column":39}},"14":{"start":{"line":118,"column":8},"end":{"line":118,"column":77}},"15":{"start":{"line":125,"column":8},"end":{"line":125,"column":60}}},"branchMap":{"1":{"line":32,"type":"if","locations":[{"start":{"line":32,"column":55},"end":{"line":32,"column":55}},{"start":{"line":32,"column":55},"end":{"line":32,"column":55}}]},"2":{"line":71,"type":"if","locations":[{"start":{"line":71,"column":29},"end":{"line":71,"column":33}},{"start":{"line":71,"column":37},"end":{"line":71,"column":52}}]},"3":{"line":84,"type":"if","locations":[{"start":{"line":84,"column":29},"end":{"line":84,"column":33}},{"start":{"line":84,"column":37},"end":{"line":84,"column":49}}]},"4":{"line":97,"type":"if","locations":[{"start":{"line":97,"column":8},"end":{"line":97,"column":8}},{"start":{"line":97,"column":8},"end":{"line":97,"column":8}}]},"5":{"line":100,"type":"if","locations":[{"start":{"line":100,"column":12},"end":{"line":100,"column":12}},{"start":{"line":100,"column":12},"end":{"line":100,"column":12}}]}}},
-"contracts/modules/internal/ValidationModuleInternal.sol":{"l":{"28":387,"29":16,"30":16,"42":12,"51":6,"62":6,"66":57},"path":"/home/ryan/Downloads/CM/CMTAT/contracts/modules/internal/ValidationModuleInternal.sol","s":{"1":387,"2":16,"3":12,"4":6,"5":6,"6":57},"b":{"1":[387,0],"2":[16,371]},"f":{"1":387,"2":12,"3":6,"4":6,"5":57},"fnMap":{"1":{"name":"__Validation_init_unchained","line":27,"loc":{"start":{"line":25,"column":4},"end":{"line":32,"column":4}}},"2":{"name":"_validateTransfer","line":37,"loc":{"start":{"line":37,"column":4},"end":{"line":43,"column":4}}},"3":{"name":"_messageForTransferRestriction","line":48,"loc":{"start":{"line":48,"column":4},"end":{"line":52,"column":4}}},"4":{"name":"_detectTransferRestriction","line":57,"loc":{"start":{"line":57,"column":4},"end":{"line":63,"column":4}}},"5":{"name":"_operateOnTransfer","line":65,"loc":{"start":{"line":65,"column":4},"end":{"line":67,"column":4}}}},"statementMap":{"1":{"start":{"line":28,"column":8},"end":{"line":28,"column":826}},"2":{"start":{"line":30,"column":12},"end":{"line":30,"column":39}},"3":{"start":{"line":42,"column":8},"end":{"line":42,"column":60}},"4":{"start":{"line":51,"column":8},"end":{"line":51,"column":72}},"5":{"start":{"line":62,"column":8},"end":{"line":62,"column":69}},"6":{"start":{"line":66,"column":8},"end":{"line":66,"column":61}}},"branchMap":{"1":{"line":27,"type":"if","locations":[{"start":{"line":27,"column":15},"end":{"line":27,"column":15}},{"start":{"line":27,"column":15},"end":{"line":27,"column":15}}]},"2":{"line":28,"type":"if","locations":[{"start":{"line":28,"column":8},"end":{"line":28,"column":8}},{"start":{"line":28,"column":8},"end":{"line":28,"column":8}}]}}},
-"contracts/modules/security/AuthorizationModule.sol":{"l":{"42":387,"43":3,"45":384,"46":384,"47":0,"60":8,"61":2,"63":6,"64":6,"68":35,"69":3,"70":3,"72":2,"75":33,"79":5,"80":3,"81":3,"83":2,"86":3,"97":1443,"98":810,"100":633},"path":"/home/ryan/Downloads/CM/CMTAT/contracts/modules/security/AuthorizationModule.sol","s":{"1":387,"2":384,"3":384,"4":8,"5":6,"6":35,"7":3,"8":3,"9":33,"10":5,"11":3,"12":3,"13":3,"14":1443,"15":810,"16":633},"b":{"1":[387,0],"2":[3,384],"3":[0,384],"4":[8,2],"5":[2,6],"6":[35,4],"7":[3,32],"8":[2,1],"9":[5,4],"10":[3,2],"11":[2,1],"12":[810,633]},"f":{"1":387,"2":8,"3":35,"4":5,"5":1443},"fnMap":{"1":{"name":"__AuthorizationModule_init_unchained","line":41,"loc":{"start":{"line":40,"column":4},"end":{"line":51,"column":4}}},"2":{"name":"setAuthorizationEngine","line":59,"loc":{"start":{"line":57,"column":4},"end":{"line":65,"column":4}}},"3":{"name":"grantRole","line":67,"loc":{"start":{"line":67,"column":4},"end":{"line":76,"column":4}}},"4":{"name":"revokeRole","line":78,"loc":{"start":{"line":78,"column":4},"end":{"line":87,"column":4}}},"5":{"name":"hasRole","line":92,"loc":{"start":{"line":92,"column":4},"end":{"line":101,"column":4}}}},"statementMap":{"1":{"start":{"line":42,"column":8},"end":{"line":42,"column":1714}},"2":{"start":{"line":45,"column":8},"end":{"line":45,"column":44}},"3":{"start":{"line":46,"column":8},"end":{"line":46,"column":1881}},"4":{"start":{"line":60,"column":8},"end":{"line":60,"column":2308}},"5":{"start":{"line":64,"column":8},"end":{"line":64,"column":54}},"6":{"start":{"line":68,"column":8},"end":{"line":68,"column":2677}},"7":{"start":{"line":69,"column":12},"end":{"line":69,"column":79}},"8":{"start":{"line":70,"column":12},"end":{"line":70,"column":2825}},"9":{"start":{"line":75,"column":8},"end":{"line":75,"column":64}},"10":{"start":{"line":79,"column":8},"end":{"line":79,"column":3186}},"11":{"start":{"line":80,"column":12},"end":{"line":80,"column":80}},"12":{"start":{"line":81,"column":12},"end":{"line":81,"column":3335}},"13":{"start":{"line":86,"column":8},"end":{"line":86,"column":65}},"14":{"start":{"line":97,"column":8},"end":{"line":97,"column":3866}},"15":{"start":{"line":98,"column":12},"end":{"line":98,"column":23}},"16":{"start":{"line":100,"column":8},"end":{"line":100,"column":62}}},"branchMap":{"1":{"line":41,"type":"if","locations":[{"start":{"line":41,"column":13},"end":{"line":41,"column":13}},{"start":{"line":41,"column":13},"end":{"line":41,"column":13}}]},"2":{"line":42,"type":"if","locations":[{"start":{"line":42,"column":8},"end":{"line":42,"column":8}},{"start":{"line":42,"column":8},"end":{"line":42,"column":8}}]},"3":{"line":46,"type":"if","locations":[{"start":{"line":46,"column":8},"end":{"line":46,"column":8}},{"start":{"line":46,"column":8},"end":{"line":46,"column":8}}]},"4":{"line":59,"type":"if","locations":[{"start":{"line":59,"column":15},"end":{"line":59,"column":15}},{"start":{"line":59,"column":15},"end":{"line":59,"column":15}}]},"5":{"line":60,"type":"if","locations":[{"start":{"line":60,"column":8},"end":{"line":60,"column":8}},{"start":{"line":60,"column":8},"end":{"line":60,"column":8}}]},"6":{"line":67,"type":"if","locations":[{"start":{"line":67,"column":70},"end":{"line":67,"column":70}},{"start":{"line":67,"column":70},"end":{"line":67,"column":70}}]},"7":{"line":68,"type":"if","locations":[{"start":{"line":68,"column":8},"end":{"line":68,"column":8}},{"start":{"line":68,"column":8},"end":{"line":68,"column":8}}]},"8":{"line":70,"type":"if","locations":[{"start":{"line":70,"column":12},"end":{"line":70,"column":12}},{"start":{"line":70,"column":12},"end":{"line":70,"column":12}}]},"9":{"line":78,"type":"if","locations":[{"start":{"line":78,"column":71},"end":{"line":78,"column":71}},{"start":{"line":78,"column":71},"end":{"line":78,"column":71}}]},"10":{"line":79,"type":"if","locations":[{"start":{"line":79,"column":8},"end":{"line":79,"column":8}},{"start":{"line":79,"column":8},"end":{"line":79,"column":8}}]},"11":{"line":81,"type":"if","locations":[{"start":{"line":81,"column":12},"end":{"line":81,"column":12}},{"start":{"line":81,"column":12},"end":{"line":81,"column":12}}]},"12":{"line":97,"type":"if","locations":[{"start":{"line":97,"column":8},"end":{"line":97,"column":8}},{"start":{"line":97,"column":8},"end":{"line":97,"column":8}}]}}},
-"contracts/modules/wrapper/controllers/ValidationModule.sol":{"l":{"38":20,"39":6,"41":14,"42":14,"53":20,"54":3,"59":4,"64":2,"69":2,"71":6,"73":3,"89":17,"90":4,"92":2,"94":2,"96":6,"98":3,"107":19,"108":4,"110":15,"111":12,"113":3,"121":483,"122":32,"124":451,"128":464,"129":28,"131":436,"132":57,"134":379},"path":"/home/ryan/Downloads/CM/CMTAT/contracts/modules/wrapper/controllers/ValidationModule.sol","s":{"1":20,"2":14,"3":20,"4":3,"5":17,"6":4,"7":13,"8":2,"9":11,"10":2,"11":9,"12":6,"13":3,"14":17,"15":4,"16":13,"17":2,"18":11,"19":2,"20":9,"21":6,"22":3,"23":19,"24":4,"25":15,"26":12,"27":3,"28":483,"29":32,"30":451,"31":464,"32":28,"33":436,"34":57,"35":379},"b":{"1":[384,0],"2":[20,6],"3":[6,14],"4":[3,17],"5":[4,13],"6":[2,11],"7":[2,9],"8":[6,3],"9":[4,13],"10":[2,11],"11":[2,9],"12":[6,3],"13":[4,15],"14":[12,3],"15":[32,451],"16":[22,6],"17":[6,4],"18":[28,436],"19":[57,379]},"f":{"1":384,"2":20,"3":20,"4":17,"5":19,"6":483,"7":464},"fnMap":{"1":{"name":"__ValidationModule_init_unchained","line":27,"loc":{"start":{"line":27,"column":4},"end":{"line":29,"column":4}}},"2":{"name":"setRuleEngine","line":37,"loc":{"start":{"line":35,"column":4},"end":{"line":43,"column":4}}},"3":{"name":"messageForTransferRestriction","line":50,"loc":{"start":{"line":50,"column":4},"end":{"line":75,"column":4}}},"4":{"name":"detectTransferRestriction","line":84,"loc":{"start":{"line":84,"column":4},"end":{"line":100,"column":4}}},"5":{"name":"validateTransfer","line":102,"loc":{"start":{"line":102,"column":4},"end":{"line":114,"column":4}}},"6":{"name":"_validateTransferByModule","line":116,"loc":{"start":{"line":116,"column":4},"end":{"line":125,"column":4}}},"7":{"name":"_operateOnTransfer","line":127,"loc":{"start":{"line":127,"column":4},"end":{"line":135,"column":4}}}},"statementMap":{"1":{"start":{"line":38,"column":8},"end":{"line":38,"column":1111}},"2":{"start":{"line":42,"column":8},"end":{"line":42,"column":36}},"3":{"start":{"line":53,"column":8},"end":{"line":53,"column":1798}},"4":{"start":{"line":54,"column":12},"end":{"line":54,"column":35}},"5":{"start":{"line":55,"column":15},"end":{"line":55,"column":1914}},"6":{"start":{"line":59,"column":12},"end":{"line":59,"column":48}},"7":{"start":{"line":60,"column":15},"end":{"line":60,"column":2090}},"8":{"start":{"line":64,"column":12},"end":{"line":64,"column":53}},"9":{"start":{"line":65,"column":15},"end":{"line":65,"column":2276}},"10":{"start":{"line":69,"column":12},"end":{"line":69,"column":51}},"11":{"start":{"line":70,"column":15},"end":{"line":70,"column":2458}},"12":{"start":{"line":71,"column":12},"end":{"line":71,"column":66}},"13":{"start":{"line":73,"column":12},"end":{"line":73,"column":36}},"14":{"start":{"line":89,"column":8},"end":{"line":89,"column":3154}},"15":{"start":{"line":90,"column":12},"end":{"line":90,"column":69}},"16":{"start":{"line":91,"column":15},"end":{"line":91,"column":3256}},"17":{"start":{"line":92,"column":12},"end":{"line":92,"column":74}},"18":{"start":{"line":93,"column":15},"end":{"line":93,"column":3367}},"19":{"start":{"line":94,"column":12},"end":{"line":94,"column":72}},"20":{"start":{"line":95,"column":15},"end":{"line":95,"column":3474}},"21":{"start":{"line":96,"column":12},"end":{"line":96,"column":63}},"22":{"start":{"line":98,"column":12},"end":{"line":98,"column":56}},"23":{"start":{"line":107,"column":8},"end":{"line":107,"column":3820}},"24":{"start":{"line":108,"column":12},"end":{"line":108,"column":24}},"25":{"start":{"line":110,"column":8},"end":{"line":110,"column":3916}},"26":{"start":{"line":111,"column":12},"end":{"line":111,"column":54}},"27":{"start":{"line":113,"column":8},"end":{"line":113,"column":19}},"28":{"start":{"line":121,"column":8},"end":{"line":121,"column":4205}},"29":{"start":{"line":122,"column":12},"end":{"line":122,"column":24}},"30":{"start":{"line":124,"column":8},"end":{"line":124,"column":19}},"31":{"start":{"line":128,"column":8},"end":{"line":128,"column":4431}},"32":{"start":{"line":129,"column":12},"end":{"line":129,"column":24}},"33":{"start":{"line":131,"column":8},"end":{"line":131,"column":4526}},"34":{"start":{"line":132,"column":12},"end":{"line":132,"column":80}},"35":{"start":{"line":134,"column":8},"end":{"line":134,"column":19}}},"branchMap":{"1":{"line":27,"type":"if","locations":[{"start":{"line":27,"column":58},"end":{"line":27,"column":58}},{"start":{"line":27,"column":58},"end":{"line":27,"column":58}}]},"2":{"line":37,"type":"if","locations":[{"start":{"line":37,"column":15},"end":{"line":37,"column":15}},{"start":{"line":37,"column":15},"end":{"line":37,"column":15}}]},"3":{"line":38,"type":"if","locations":[{"start":{"line":38,"column":8},"end":{"line":38,"column":8}},{"start":{"line":38,"column":8},"end":{"line":38,"column":8}}]},"4":{"line":53,"type":"if","locations":[{"start":{"line":53,"column":8},"end":{"line":53,"column":8}},{"start":{"line":53,"column":8},"end":{"line":53,"column":8}}]},"5":{"line":55,"type":"if","locations":[{"start":{"line":55,"column":15},"end":{"line":55,"column":15}},{"start":{"line":55,"column":15},"end":{"line":55,"column":15}}]},"6":{"line":60,"type":"if","locations":[{"start":{"line":60,"column":15},"end":{"line":60,"column":15}},{"start":{"line":60,"column":15},"end":{"line":60,"column":15}}]},"7":{"line":65,"type":"if","locations":[{"start":{"line":65,"column":15},"end":{"line":65,"column":15}},{"start":{"line":65,"column":15},"end":{"line":65,"column":15}}]},"8":{"line":70,"type":"if","locations":[{"start":{"line":70,"column":15},"end":{"line":70,"column":15}},{"start":{"line":70,"column":15},"end":{"line":70,"column":15}}]},"9":{"line":89,"type":"if","locations":[{"start":{"line":89,"column":8},"end":{"line":89,"column":8}},{"start":{"line":89,"column":8},"end":{"line":89,"column":8}}]},"10":{"line":91,"type":"if","locations":[{"start":{"line":91,"column":15},"end":{"line":91,"column":15}},{"start":{"line":91,"column":15},"end":{"line":91,"column":15}}]},"11":{"line":93,"type":"if","locations":[{"start":{"line":93,"column":15},"end":{"line":93,"column":15}},{"start":{"line":93,"column":15},"end":{"line":93,"column":15}}]},"12":{"line":95,"type":"if","locations":[{"start":{"line":95,"column":15},"end":{"line":95,"column":15}},{"start":{"line":95,"column":15},"end":{"line":95,"column":15}}]},"13":{"line":107,"type":"if","locations":[{"start":{"line":107,"column":8},"end":{"line":107,"column":8}},{"start":{"line":107,"column":8},"end":{"line":107,"column":8}}]},"14":{"line":110,"type":"if","locations":[{"start":{"line":110,"column":8},"end":{"line":110,"column":8}},{"start":{"line":110,"column":8},"end":{"line":110,"column":8}}]},"15":{"line":121,"type":"if","locations":[{"start":{"line":121,"column":8},"end":{"line":121,"column":8}},{"start":{"line":121,"column":8},"end":{"line":121,"column":8}}]},"16":{"line":121,"type":"cond-expr","locations":[{"start":{"line":121,"column":12},"end":{"line":121,"column":19}},{"start":{"line":121,"column":24},"end":{"line":121,"column":35}}]},"17":{"line":121,"type":"cond-expr","locations":[{"start":{"line":121,"column":12},"end":{"line":121,"column":35}},{"start":{"line":121,"column":40},"end":{"line":121,"column":49}}]},"18":{"line":128,"type":"if","locations":[{"start":{"line":128,"column":8},"end":{"line":128,"column":8}},{"start":{"line":128,"column":8},"end":{"line":128,"column":8}}]},"19":{"line":131,"type":"if","locations":[{"start":{"line":131,"column":8},"end":{"line":131,"column":8}},{"start":{"line":131,"column":8},"end":{"line":131,"column":8}}]}}},
-"contracts/modules/wrapper/core/BaseModule.sol":{"l":{"47":384,"48":384,"49":384,"50":384,"60":2,"61":2,"70":2,"71":2,"80":2,"81":2,"88":6,"89":4,"91":2,"92":2},"path":"/home/ryan/Downloads/CM/CMTAT/contracts/modules/wrapper/core/BaseModule.sol","s":{"1":2,"2":2,"3":2,"4":6,"5":2},"b":{"1":[384,0],"2":[2,4],"3":[2,4],"4":[2,4],"5":[6,4],"6":[4,2]},"f":{"1":384,"2":2,"3":2,"4":2,"5":6},"fnMap":{"1":{"name":"__Base_init_unchained","line":46,"loc":{"start":{"line":41,"column":4},"end":{"line":51,"column":4}}},"2":{"name":"setTokenId","line":59,"loc":{"start":{"line":57,"column":4},"end":{"line":62,"column":4}}},"3":{"name":"setTerms","line":69,"loc":{"start":{"line":67,"column":4},"end":{"line":72,"column":4}}},"4":{"name":"setInformation","line":79,"loc":{"start":{"line":77,"column":4},"end":{"line":82,"column":4}}},"5":{"name":"setFlag","line":87,"loc":{"start":{"line":87,"column":4},"end":{"line":93,"column":4}}}},"statementMap":{"1":{"start":{"line":61,"column":8},"end":{"line":61,"column":40}},"2":{"start":{"line":71,"column":8},"end":{"line":71,"column":33}},"3":{"start":{"line":81,"column":8},"end":{"line":81,"column":52}},"4":{"start":{"line":88,"column":8},"end":{"line":88,"column":2566}},"5":{"start":{"line":92,"column":8},"end":{"line":92,"column":24}}},"branchMap":{"1":{"line":46,"type":"if","locations":[{"start":{"line":46,"column":15},"end":{"line":46,"column":15}},{"start":{"line":46,"column":15},"end":{"line":46,"column":15}}]},"2":{"line":59,"type":"if","locations":[{"start":{"line":59,"column":13},"end":{"line":59,"column":13}},{"start":{"line":59,"column":13},"end":{"line":59,"column":13}}]},"3":{"line":69,"type":"if","locations":[{"start":{"line":69,"column":13},"end":{"line":69,"column":13}},{"start":{"line":69,"column":13},"end":{"line":69,"column":13}}]},"4":{"line":79,"type":"if","locations":[{"start":{"line":79,"column":13},"end":{"line":79,"column":13}},{"start":{"line":79,"column":13},"end":{"line":79,"column":13}}]},"5":{"line":87,"type":"if","locations":[{"start":{"line":87,"column":43},"end":{"line":87,"column":43}},{"start":{"line":87,"column":43},"end":{"line":87,"column":43}}]},"6":{"line":88,"type":"if","locations":[{"start":{"line":88,"column":8},"end":{"line":88,"column":8}},{"start":{"line":88,"column":8},"end":{"line":88,"column":8}}]}}},
-"contracts/modules/wrapper/core/EnforcementModule.sol":{"l":{"36":22,"50":8},"path":"/home/ryan/Downloads/CM/CMTAT/contracts/modules/wrapper/core/EnforcementModule.sol","s":{"1":22,"2":8},"b":{"1":[384,0],"2":[22,4],"3":[8,4]},"f":{"1":384,"2":22,"3":8},"fnMap":{"1":{"name":"__EnforcementModule_init_unchained","line":23,"loc":{"start":{"line":23,"column":4},"end":{"line":25,"column":4}}},"2":{"name":"freeze","line":35,"loc":{"start":{"line":32,"column":4},"end":{"line":37,"column":4}}},"3":{"name":"unfreeze","line":49,"loc":{"start":{"line":46,"column":4},"end":{"line":51,"column":4}}}},"statementMap":{"1":{"start":{"line":36,"column":8},"end":{"line":36,"column":39}},"2":{"start":{"line":50,"column":8},"end":{"line":50,"column":41}}},"branchMap":{"1":{"line":23,"type":"if","locations":[{"start":{"line":23,"column":59},"end":{"line":23,"column":59}},{"start":{"line":23,"column":59},"end":{"line":23,"column":59}}]},"2":{"line":35,"type":"if","locations":[{"start":{"line":35,"column":13},"end":{"line":35,"column":13}},{"start":{"line":35,"column":13},"end":{"line":35,"column":13}}]},"3":{"line":49,"type":"if","locations":[{"start":{"line":49,"column":13},"end":{"line":49,"column":13}},{"start":{"line":49,"column":13},"end":{"line":49,"column":13}}]}}},
-"contracts/modules/wrapper/core/ERC20BaseModule.sol":{"l":{"32":384,"42":2,"61":18,"62":4,"66":14,"67":8,"70":6,"73":14,"74":10,"75":10,"80":2,"95":18,"97":2,"98":2,"101":2,"110":4,"111":4,"112":6,"114":4},"path":"/home/ryan/Downloads/CM/CMTAT/contracts/modules/wrapper/core/ERC20BaseModule.sol","s":{"1":2,"2":18,"3":14,"4":6,"5":14,"6":2,"7":18,"8":2,"9":2,"10":2,"11":4},"b":{"1":[384,0],"2":[4,14],"3":[8,6],"4":[2,0]},"f":{"1":384,"2":2,"3":18,"4":18,"5":4},"fnMap":{"1":{"name":"__ERC20BaseModule_init_unchained","line":31,"loc":{"start":{"line":29,"column":4},"end":{"line":33,"column":4}}},"2":{"name":"decimals","line":41,"loc":{"start":{"line":41,"column":4},"end":{"line":43,"column":4}}},"3":{"name":"transferBatch","line":57,"loc":{"start":{"line":57,"column":4},"end":{"line":81,"column":4}}},"4":{"name":"transferFrom","line":90,"loc":{"start":{"line":90,"column":4},"end":{"line":102,"column":4}}},"5":{"name":"balanceInfo","line":109,"loc":{"start":{"line":109,"column":4},"end":{"line":115,"column":4}}}},"statementMap":{"1":{"start":{"line":42,"column":8},"end":{"line":42,"column":24}},"2":{"start":{"line":61,"column":8},"end":{"line":61,"column":2039}},"3":{"start":{"line":66,"column":8},"end":{"line":66,"column":2256}},"4":{"start":{"line":70,"column":8},"end":{"line":70,"column":2391}},"5":{"start":{"line":73,"column":12},"end":{"line":73,"column":70}},"6":{"start":{"line":80,"column":8},"end":{"line":80,"column":19}},"7":{"start":{"line":95,"column":8},"end":{"line":95,"column":68}},"8":{"start":{"line":97,"column":8},"end":{"line":97,"column":3397}},"9":{"start":{"line":98,"column":12},"end":{"line":98,"column":49}},"10":{"start":{"line":101,"column":8},"end":{"line":101,"column":21}},"11":{"start":{"line":111,"column":8},"end":{"line":111,"column":3890}}},"branchMap":{"1":{"line":31,"type":"if","locations":[{"start":{"line":31,"column":15},"end":{"line":31,"column":15}},{"start":{"line":31,"column":15},"end":{"line":31,"column":15}}]},"2":{"line":61,"type":"if","locations":[{"start":{"line":61,"column":8},"end":{"line":61,"column":8}},{"start":{"line":61,"column":8},"end":{"line":61,"column":8}}]},"3":{"line":66,"type":"if","locations":[{"start":{"line":66,"column":8},"end":{"line":66,"column":8}},{"start":{"line":66,"column":8},"end":{"line":66,"column":8}}]},"4":{"line":97,"type":"if","locations":[{"start":{"line":97,"column":8},"end":{"line":97,"column":8}},{"start":{"line":97,"column":8},"end":{"line":97,"column":8}}]}}},
-"contracts/modules/wrapper/core/ERC20BurnModule.sol":{"l":{"36":18,"37":14,"60":20,"61":4,"65":16,"66":8,"69":8,"70":24,"71":20,"72":20,"73":20,"97":6,"98":6,"99":6,"101":4,"104":2,"105":2,"108":2,"110":2,"112":2},"path":"/home/ryan/Downloads/CM/CMTAT/contracts/modules/wrapper/core/ERC20BurnModule.sol","s":{"1":18,"2":14,"3":20,"4":16,"5":8,"6":24,"7":20,"8":6,"9":6,"10":6,"11":2,"12":2,"13":2,"14":2},"b":{"1":[384,0],"2":[18,8],"3":[20,4],"4":[4,16],"5":[8,8],"6":[6,4],"7":[4,2]},"f":{"1":384,"2":18,"3":20,"4":6},"fnMap":{"1":{"name":"__ERC20BurnModule_init_unchained","line":18,"loc":{"start":{"line":18,"column":4},"end":{"line":20,"column":4}}},"2":{"name":"burn","line":35,"loc":{"start":{"line":31,"column":4},"end":{"line":38,"column":4}}},"3":{"name":"burnBatch","line":59,"loc":{"start":{"line":55,"column":4},"end":{"line":76,"column":4}}},"4":{"name":"burnFrom","line":94,"loc":{"start":{"line":92,"column":4},"end":{"line":113,"column":4}}}},"statementMap":{"1":{"start":{"line":36,"column":8},"end":{"line":36,"column":28}},"2":{"start":{"line":37,"column":8},"end":{"line":37,"column":41}},"3":{"start":{"line":60,"column":8},"end":{"line":60,"column":2267}},"4":{"start":{"line":65,"column":8},"end":{"line":65,"column":2489}},"5":{"start":{"line":69,"column":8},"end":{"line":69,"column":2629}},"6":{"start":{"line":70,"column":12},"end":{"line":70,"column":40}},"7":{"start":{"line":71,"column":12},"end":{"line":71,"column":53}},"8":{"start":{"line":97,"column":8},"end":{"line":97,"column":38}},"9":{"start":{"line":98,"column":8},"end":{"line":98,"column":61}},"10":{"start":{"line":99,"column":8},"end":{"line":99,"column":3573}},"11":{"start":{"line":105,"column":12},"end":{"line":105,"column":62}},"12":{"start":{"line":108,"column":8},"end":{"line":108,"column":28}},"13":{"start":{"line":110,"column":8},"end":{"line":110,"column":45}},"14":{"start":{"line":112,"column":8},"end":{"line":112,"column":45}}},"branchMap":{"1":{"line":18,"type":"if","locations":[{"start":{"line":18,"column":57},"end":{"line":18,"column":57}},{"start":{"line":18,"column":57},"end":{"line":18,"column":57}}]},"2":{"line":35,"type":"if","locations":[{"start":{"line":35,"column":13},"end":{"line":35,"column":13}},{"start":{"line":35,"column":13},"end":{"line":35,"column":13}}]},"3":{"line":59,"type":"if","locations":[{"start":{"line":59,"column":13},"end":{"line":59,"column":13}},{"start":{"line":59,"column":13},"end":{"line":59,"column":13}}]},"4":{"line":60,"type":"if","locations":[{"start":{"line":60,"column":8},"end":{"line":60,"column":8}},{"start":{"line":60,"column":8},"end":{"line":60,"column":8}}]},"5":{"line":65,"type":"if","locations":[{"start":{"line":65,"column":8},"end":{"line":65,"column":8}},{"start":{"line":65,"column":8},"end":{"line":65,"column":8}}]},"6":{"line":94,"type":"if","locations":[{"start":{"line":94,"column":8},"end":{"line":94,"column":8}},{"start":{"line":94,"column":8},"end":{"line":94,"column":8}}]},"7":{"line":99,"type":"if","locations":[{"start":{"line":99,"column":8},"end":{"line":99,"column":8}},{"start":{"line":99,"column":8},"end":{"line":99,"column":8}}]}}},
-"contracts/modules/wrapper/core/ERC20MintModule.sol":{"l":{"34":277,"35":277,"57":30,"58":4,"62":26,"63":8,"66":18,"67":54,"68":54,"69":54,"70":54},"path":"/home/ryan/Downloads/CM/CMTAT/contracts/modules/wrapper/core/ERC20MintModule.sol","s":{"1":277,"2":277,"3":30,"4":26,"5":18,"6":54,"7":54},"b":{"1":[384,0],"2":[277,8],"3":[30,4],"4":[4,26],"5":[8,18]},"f":{"1":384,"2":277,"3":30},"fnMap":{"1":{"name":"__ERC20MintModule_init_unchained","line":16,"loc":{"start":{"line":16,"column":4},"end":{"line":18,"column":4}}},"2":{"name":"mint","line":33,"loc":{"start":{"line":33,"column":4},"end":{"line":36,"column":4}}},"3":{"name":"mintBatch","line":56,"loc":{"start":{"line":53,"column":4},"end":{"line":73,"column":4}}}},"statementMap":{"1":{"start":{"line":34,"column":8},"end":{"line":34,"column":28}},"2":{"start":{"line":35,"column":8},"end":{"line":35,"column":33}},"3":{"start":{"line":57,"column":8},"end":{"line":57,"column":2116}},"4":{"start":{"line":62,"column":8},"end":{"line":62,"column":2338}},"5":{"start":{"line":66,"column":8},"end":{"line":66,"column":2478}},"6":{"start":{"line":67,"column":12},"end":{"line":67,"column":40}},"7":{"start":{"line":68,"column":12},"end":{"line":68,"column":45}}},"branchMap":{"1":{"line":16,"type":"if","locations":[{"start":{"line":16,"column":57},"end":{"line":16,"column":57}},{"start":{"line":16,"column":57},"end":{"line":16,"column":57}}]},"2":{"line":33,"type":"if","locations":[{"start":{"line":33,"column":57},"end":{"line":33,"column":57}},{"start":{"line":33,"column":57},"end":{"line":33,"column":57}}]},"3":{"line":56,"type":"if","locations":[{"start":{"line":56,"column":13},"end":{"line":56,"column":13}},{"start":{"line":56,"column":13},"end":{"line":56,"column":13}}]},"4":{"line":57,"type":"if","locations":[{"start":{"line":57,"column":8},"end":{"line":57,"column":8}},{"start":{"line":57,"column":8},"end":{"line":57,"column":8}}]},"5":{"line":62,"type":"if","locations":[{"start":{"line":62,"column":8},"end":{"line":62,"column":8}},{"start":{"line":62,"column":8},"end":{"line":62,"column":8}}]}}},
-"contracts/modules/wrapper/core/PauseModule.sol":{"l":{"39":14,"51":8,"52":4,"54":4,"70":2,"71":2,"72":2,"79":4},"path":"/home/ryan/Downloads/CM/CMTAT/contracts/modules/wrapper/core/PauseModule.sol","s":{"1":14,"2":8,"3":4,"4":2,"5":2,"6":4},"b":{"1":[384,0],"2":[14,6],"3":[8,4],"4":[4,4],"5":[2,4]},"f":{"1":384,"2":14,"3":8,"4":2,"5":4},"fnMap":{"1":{"name":"__PauseModule_init_unchained","line":25,"loc":{"start":{"line":25,"column":4},"end":{"line":27,"column":4}}},"2":{"name":"pause","line":38,"loc":{"start":{"line":38,"column":4},"end":{"line":40,"column":4}}},"3":{"name":"unpause","line":50,"loc":{"start":{"line":50,"column":4},"end":{"line":55,"column":4}}},"4":{"name":"deactivateContract","line":68,"loc":{"start":{"line":66,"column":4},"end":{"line":73,"column":4}}},"5":{"name":"deactivated","line":78,"loc":{"start":{"line":78,"column":4},"end":{"line":80,"column":4}}}},"statementMap":{"1":{"start":{"line":39,"column":8},"end":{"line":39,"column":15}},"2":{"start":{"line":51,"column":8},"end":{"line":51,"column":1637}},"3":{"start":{"line":54,"column":8},"end":{"line":54,"column":17}},"4":{"start":{"line":71,"column":7},"end":{"line":71,"column":14}},"5":{"start":{"line":72,"column":7},"end":{"line":72,"column":37}},"6":{"start":{"line":79,"column":8},"end":{"line":79,"column":28}}},"branchMap":{"1":{"line":25,"type":"if","locations":[{"start":{"line":25,"column":53},"end":{"line":25,"column":53}},{"start":{"line":25,"column":53},"end":{"line":25,"column":53}}]},"2":{"line":38,"type":"if","locations":[{"start":{"line":38,"column":28},"end":{"line":38,"column":28}},{"start":{"line":38,"column":28},"end":{"line":38,"column":28}}]},"3":{"line":50,"type":"if","locations":[{"start":{"line":50,"column":30},"end":{"line":50,"column":30}},{"start":{"line":50,"column":30},"end":{"line":50,"column":30}}]},"4":{"line":51,"type":"if","locations":[{"start":{"line":51,"column":8},"end":{"line":51,"column":8}},{"start":{"line":51,"column":8},"end":{"line":51,"column":8}}]},"5":{"line":68,"type":"if","locations":[{"start":{"line":68,"column":8},"end":{"line":68,"column":8}},{"start":{"line":68,"column":8},"end":{"line":68,"column":8}}]}}},
-"contracts/modules/wrapper/extensions/DebtModule/CreditEventsModule.sol":{"l":{"38":2,"39":2,"40":2,"41":2,"50":6,"51":4,"53":2,"54":2,"63":6,"64":4,"66":2,"67":2,"76":2,"77":2},"path":"/home/ryan/Downloads/CM/CMTAT/contracts/modules/wrapper/extensions/DebtModule/CreditEventsModule.sol","s":{"1":2,"2":2,"3":2,"4":6,"5":2,"6":6,"7":2,"8":2},"b":{"1":[384,0],"2":[2,4],"3":[6,4],"4":[4,2],"5":[6,4],"6":[4,2],"7":[2,4]},"f":{"1":384,"2":2,"3":6,"4":6,"5":2},"fnMap":{"1":{"name":"__CreditEvents_init_unchained","line":25,"loc":{"start":{"line":25,"column":4},"end":{"line":27,"column":4}}},"2":{"name":"setCreditEvents","line":37,"loc":{"start":{"line":33,"column":4},"end":{"line":42,"column":4}}},"3":{"name":"setFlagDefault","line":49,"loc":{"start":{"line":47,"column":4},"end":{"line":55,"column":4}}},"4":{"name":"setFlagRedeemed","line":62,"loc":{"start":{"line":60,"column":4},"end":{"line":68,"column":4}}},"5":{"name":"setRating","line":75,"loc":{"start":{"line":73,"column":4},"end":{"line":78,"column":4}}}},"statementMap":{"1":{"start":{"line":39,"column":8},"end":{"line":39,"column":38}},"2":{"start":{"line":40,"column":8},"end":{"line":40,"column":40}},"3":{"start":{"line":41,"column":8},"end":{"line":41,"column":37}},"4":{"start":{"line":50,"column":8},"end":{"line":50,"column":1670}},"5":{"start":{"line":54,"column":8},"end":{"line":54,"column":38}},"6":{"start":{"line":63,"column":8},"end":{"line":63,"column":2113}},"7":{"start":{"line":67,"column":8},"end":{"line":67,"column":40}},"8":{"start":{"line":77,"column":8},"end":{"line":77,"column":37}}},"branchMap":{"1":{"line":25,"type":"if","locations":[{"start":{"line":25,"column":54},"end":{"line":25,"column":54}},{"start":{"line":25,"column":54},"end":{"line":25,"column":54}}]},"2":{"line":37,"type":"if","locations":[{"start":{"line":37,"column":13},"end":{"line":37,"column":13}},{"start":{"line":37,"column":13},"end":{"line":37,"column":13}}]},"3":{"line":49,"type":"if","locations":[{"start":{"line":49,"column":13},"end":{"line":49,"column":13}},{"start":{"line":49,"column":13},"end":{"line":49,"column":13}}]},"4":{"line":50,"type":"if","locations":[{"start":{"line":50,"column":8},"end":{"line":50,"column":8}},{"start":{"line":50,"column":8},"end":{"line":50,"column":8}}]},"5":{"line":62,"type":"if","locations":[{"start":{"line":62,"column":13},"end":{"line":62,"column":13}},{"start":{"line":62,"column":13},"end":{"line":62,"column":13}}]},"6":{"line":63,"type":"if","locations":[{"start":{"line":63,"column":8},"end":{"line":63,"column":8}},{"start":{"line":63,"column":8},"end":{"line":63,"column":8}}]},"7":{"line":75,"type":"if","locations":[{"start":{"line":75,"column":13},"end":{"line":75,"column":13}},{"start":{"line":75,"column":13},"end":{"line":75,"column":13}}]}}},
-"contracts/modules/wrapper/extensions/DebtModule/DebtBaseModule.sol":{"l":{"67":2,"68":2,"69":2,"70":2,"71":2,"72":2,"73":2,"77":2,"81":2,"85":2,"89":2,"94":2,"96":2,"103":6,"104":4,"106":2,"107":2,"114":6,"115":4,"117":2,"118":2,"127":2,"128":2,"137":2,"138":2,"147":2,"148":2,"157":2,"158":2,"170":2,"171":2,"180":2,"181":2,"190":2,"191":2,"203":2,"204":2,"216":2,"217":2,"226":2,"227":2},"path":"/home/ryan/Downloads/CM/CMTAT/contracts/modules/wrapper/extensions/DebtModule/DebtBaseModule.sol","s":{"1":2,"2":2,"3":2,"4":2,"5":2,"6":2,"7":2,"8":2,"9":2,"10":2,"11":2,"12":2,"13":6,"14":2,"15":6,"16":2,"17":2,"18":2,"19":2,"20":2,"21":2,"22":2,"23":2,"24":2,"25":2,"26":2},"b":{"1":[384,0],"2":[2,4],"3":[6,4],"4":[4,2],"5":[6,4],"6":[4,2],"7":[2,4],"8":[2,4],"9":[2,4],"10":[2,4],"11":[2,4],"12":[2,4],"13":[2,4],"14":[2,4],"15":[2,4],"16":[2,4]},"f":{"1":384,"2":2,"3":6,"4":6,"5":2,"6":2,"7":2,"8":2,"9":2,"10":2,"11":2,"12":2,"13":2,"14":2},"fnMap":{"1":{"name":"__DebtBaseModule_init_unchained","line":58,"loc":{"start":{"line":58,"column":4},"end":{"line":60,"column":4}}},"2":{"name":"setDebt","line":66,"loc":{"start":{"line":66,"column":4},"end":{"line":97,"column":4}}},"3":{"name":"setInterestRate","line":102,"loc":{"start":{"line":102,"column":4},"end":{"line":108,"column":4}}},"4":{"name":"setParValue","line":113,"loc":{"start":{"line":113,"column":4},"end":{"line":119,"column":4}}},"5":{"name":"setGuarantor","line":126,"loc":{"start":{"line":124,"column":4},"end":{"line":129,"column":4}}},"6":{"name":"setBondHolder","line":136,"loc":{"start":{"line":134,"column":4},"end":{"line":139,"column":4}}},"7":{"name":"setMaturityDate","line":146,"loc":{"start":{"line":144,"column":4},"end":{"line":149,"column":4}}},"8":{"name":"setInterestScheduleFormat","line":156,"loc":{"start":{"line":154,"column":4},"end":{"line":162,"column":4}}},"9":{"name":"setInterestPaymentDate","line":169,"loc":{"start":{"line":167,"column":4},"end":{"line":172,"column":4}}},"10":{"name":"setDayCountConvention","line":179,"loc":{"start":{"line":177,"column":4},"end":{"line":182,"column":4}}},"11":{"name":"setBusinessDayConvention","line":189,"loc":{"start":{"line":187,"column":4},"end":{"line":195,"column":4}}},"12":{"name":"setPublicHolidaysCalendar","line":202,"loc":{"start":{"line":200,"column":4},"end":{"line":208,"column":4}}},"13":{"name":"setIssuanceDate","line":215,"loc":{"start":{"line":213,"column":4},"end":{"line":218,"column":4}}},"14":{"name":"setCouponFrequency","line":225,"loc":{"start":{"line":223,"column":4},"end":{"line":228,"column":4}}}},"statementMap":{"1":{"start":{"line":68,"column":8},"end":{"line":68,"column":45}},"2":{"start":{"line":69,"column":8},"end":{"line":69,"column":37}},"3":{"start":{"line":70,"column":8},"end":{"line":70,"column":56}},"4":{"start":{"line":71,"column":8},"end":{"line":71,"column":59}},"5":{"start":{"line":72,"column":8},"end":{"line":72,"column":65}},"6":{"start":{"line":73,"column":8},"end":{"line":73,"column":2507}},"7":{"start":{"line":77,"column":8},"end":{"line":77,"column":2638}},"8":{"start":{"line":81,"column":8},"end":{"line":81,"column":2760}},"9":{"start":{"line":85,"column":8},"end":{"line":85,"column":2879}},"10":{"start":{"line":89,"column":8},"end":{"line":89,"column":3007}},"11":{"start":{"line":94,"column":8},"end":{"line":94,"column":65}},"12":{"start":{"line":96,"column":8},"end":{"line":96,"column":74}},"13":{"start":{"line":103,"column":8},"end":{"line":103,"column":3490}},"14":{"start":{"line":107,"column":8},"end":{"line":107,"column":40}},"15":{"start":{"line":114,"column":8},"end":{"line":114,"column":3886}},"16":{"start":{"line":118,"column":8},"end":{"line":118,"column":32}},"17":{"start":{"line":128,"column":8},"end":{"line":128,"column":46}},"18":{"start":{"line":138,"column":8},"end":{"line":138,"column":49}},"19":{"start":{"line":148,"column":8},"end":{"line":148,"column":55}},"20":{"start":{"line":158,"column":8},"end":{"line":158,"column":5320}},"21":{"start":{"line":171,"column":8},"end":{"line":171,"column":76}},"22":{"start":{"line":181,"column":8},"end":{"line":181,"column":73}},"23":{"start":{"line":191,"column":8},"end":{"line":191,"column":6510}},"24":{"start":{"line":204,"column":8},"end":{"line":204,"column":6946}},"25":{"start":{"line":217,"column":8},"end":{"line":217,"column":55}},"26":{"start":{"line":227,"column":8},"end":{"line":227,"column":64}}},"branchMap":{"1":{"line":58,"type":"if","locations":[{"start":{"line":58,"column":56},"end":{"line":58,"column":56}},{"start":{"line":58,"column":56},"end":{"line":58,"column":56}}]},"2":{"line":66,"type":"if","locations":[{"start":{"line":66,"column":53},"end":{"line":66,"column":53}},{"start":{"line":66,"column":53},"end":{"line":66,"column":53}}]},"3":{"line":102,"type":"if","locations":[{"start":{"line":102,"column":59},"end":{"line":102,"column":59}},{"start":{"line":102,"column":59},"end":{"line":102,"column":59}}]},"4":{"line":103,"type":"if","locations":[{"start":{"line":103,"column":8},"end":{"line":103,"column":8}},{"start":{"line":103,"column":8},"end":{"line":103,"column":8}}]},"5":{"line":113,"type":"if","locations":[{"start":{"line":113,"column":51},"end":{"line":113,"column":51}},{"start":{"line":113,"column":51},"end":{"line":113,"column":51}}]},"6":{"line":114,"type":"if","locations":[{"start":{"line":114,"column":8},"end":{"line":114,"column":8}},{"start":{"line":114,"column":8},"end":{"line":114,"column":8}}]},"7":{"line":126,"type":"if","locations":[{"start":{"line":126,"column":13},"end":{"line":126,"column":13}},{"start":{"line":126,"column":13},"end":{"line":126,"column":13}}]},"8":{"line":136,"type":"if","locations":[{"start":{"line":136,"column":13},"end":{"line":136,"column":13}},{"start":{"line":136,"column":13},"end":{"line":136,"column":13}}]},"9":{"line":146,"type":"if","locations":[{"start":{"line":146,"column":13},"end":{"line":146,"column":13}},{"start":{"line":146,"column":13},"end":{"line":146,"column":13}}]},"10":{"line":156,"type":"if","locations":[{"start":{"line":156,"column":13},"end":{"line":156,"column":13}},{"start":{"line":156,"column":13},"end":{"line":156,"column":13}}]},"11":{"line":169,"type":"if","locations":[{"start":{"line":169,"column":13},"end":{"line":169,"column":13}},{"start":{"line":169,"column":13},"end":{"line":169,"column":13}}]},"12":{"line":179,"type":"if","locations":[{"start":{"line":179,"column":13},"end":{"line":179,"column":13}},{"start":{"line":179,"column":13},"end":{"line":179,"column":13}}]},"13":{"line":189,"type":"if","locations":[{"start":{"line":189,"column":13},"end":{"line":189,"column":13}},{"start":{"line":189,"column":13},"end":{"line":189,"column":13}}]},"14":{"line":202,"type":"if","locations":[{"start":{"line":202,"column":13},"end":{"line":202,"column":13}},{"start":{"line":202,"column":13},"end":{"line":202,"column":13}}]},"15":{"line":215,"type":"if","locations":[{"start":{"line":215,"column":13},"end":{"line":215,"column":13}},{"start":{"line":215,"column":13},"end":{"line":215,"column":13}}]},"16":{"line":225,"type":"if","locations":[{"start":{"line":225,"column":13},"end":{"line":225,"column":13}},{"start":{"line":225,"column":13},"end":{"line":225,"column":13}}]}}},
-"contracts/modules/wrapper/extensions/ERC20SnapshotModule.sol":{"l":{"29":176,"40":16,"52":38,"63":18,"73":16},"path":"/home/ryan/Downloads/CM/CMTAT/contracts/modules/wrapper/extensions/ERC20SnapshotModule.sol","s":{"1":176,"2":16,"3":38,"4":18,"5":16},"b":{"1":[384,0],"2":[176,4],"3":[16,4],"4":[38,4],"5":[18,4],"6":[16,4]},"f":{"1":384,"2":176,"3":16,"4":38,"5":18,"6":16},"fnMap":{"1":{"name":"__ERC20SnasphotModule_init_unchained","line":19,"loc":{"start":{"line":19,"column":4},"end":{"line":21,"column":4}}},"2":{"name":"scheduleSnapshot","line":28,"loc":{"start":{"line":28,"column":4},"end":{"line":30,"column":4}}},"3":{"name":"scheduleSnapshotNotOptimized","line":39,"loc":{"start":{"line":37,"column":4},"end":{"line":41,"column":4}}},"4":{"name":"rescheduleSnapshot","line":51,"loc":{"start":{"line":48,"column":4},"end":{"line":53,"column":4}}},"5":{"name":"unscheduleLastSnapshot","line":62,"loc":{"start":{"line":60,"column":4},"end":{"line":64,"column":4}}},"6":{"name":"unscheduleSnapshotNotOptimized","line":72,"loc":{"start":{"line":70,"column":4},"end":{"line":74,"column":4}}}},"statementMap":{"1":{"start":{"line":29,"column":8},"end":{"line":29,"column":30}},"2":{"start":{"line":40,"column":8},"end":{"line":40,"column":42}},"3":{"start":{"line":52,"column":8},"end":{"line":52,"column":44}},"4":{"start":{"line":63,"column":8},"end":{"line":63,"column":36}},"5":{"start":{"line":73,"column":8},"end":{"line":73,"column":44}}},"branchMap":{"1":{"line":19,"type":"if","locations":[{"start":{"line":19,"column":61},"end":{"line":19,"column":61}},{"start":{"line":19,"column":61},"end":{"line":19,"column":61}}]},"2":{"line":28,"type":"if","locations":[{"start":{"line":28,"column":51},"end":{"line":28,"column":51}},{"start":{"line":28,"column":51},"end":{"line":28,"column":51}}]},"3":{"line":39,"type":"if","locations":[{"start":{"line":39,"column":13},"end":{"line":39,"column":13}},{"start":{"line":39,"column":13},"end":{"line":39,"column":13}}]},"4":{"line":51,"type":"if","locations":[{"start":{"line":51,"column":13},"end":{"line":51,"column":13}},{"start":{"line":51,"column":13},"end":{"line":51,"column":13}}]},"5":{"line":62,"type":"if","locations":[{"start":{"line":62,"column":13},"end":{"line":62,"column":13}},{"start":{"line":62,"column":13},"end":{"line":62,"column":13}}]},"6":{"line":72,"type":"if","locations":[{"start":{"line":72,"column":13},"end":{"line":72,"column":13}},{"start":{"line":72,"column":13},"end":{"line":72,"column":13}}]}}},
-"contracts/modules/wrapper/extensions/MetaTxModule.sol":{"l":{},"path":"/home/ryan/Downloads/CM/CMTAT/contracts/modules/wrapper/extensions/MetaTxModule.sol","s":{},"b":{},"f":{"1":199},"fnMap":{"1":{"name":"constructor","line":19,"loc":{"start":{"line":17,"column":4},"end":{"line":21,"column":4}}}},"statementMap":{},"branchMap":{}},
+"contracts/modules/internal/ERC20SnapshotModuleInternal.sol":{"l":{"37":480,"38":480,"46":160,"47":160,"48":480,"50":160,"58":80,"59":80,"60":80,"66":80,"78":1200,"83":1200,"92":720,"96":720,"108":430,"109":430,"111":99,"112":99,"114":55,"117":44,"121":331,"122":331,"130":485,"137":375},"path":"/home/ryan/Downloads/CM/CMTAT/contracts/modules/internal/ERC20SnapshotModuleInternal.sol","s":{"1":160,"2":80,"3":1200,"4":1200,"5":720,"6":720,"7":430,"8":430,"9":99,"10":99,"11":55,"12":44,"13":331,"14":331,"15":485,"16":375},"b":{"1":[387,0],"2":[400,800],"3":[36,684],"4":[99,331],"5":[55,44]},"f":{"1":387,"2":480,"3":160,"4":80,"5":1200,"6":720,"7":430,"8":485,"9":375},"fnMap":{"1":{"name":"__ERC20Snapshot_init_unchained","line":27,"loc":{"start":{"line":27,"column":4},"end":{"line":30,"column":4}}},"2":{"name":"snapshotInfo","line":36,"loc":{"start":{"line":36,"column":4},"end":{"line":39,"column":4}}},"3":{"name":"snapshotInfoBatch","line":45,"loc":{"start":{"line":45,"column":4},"end":{"line":51,"column":4}}},"4":{"name":"snapshotInfoBatch","line":57,"loc":{"start":{"line":57,"column":4},"end":{"line":68,"column":4}}},"5":{"name":"snapshotBalanceOf","line":74,"loc":{"start":{"line":74,"column":4},"end":{"line":84,"column":4}}},"6":{"name":"snapshotTotalSupply","line":91,"loc":{"start":{"line":91,"column":4},"end":{"line":97,"column":4}}},"7":{"name":"_snapshotUpdate","line":104,"loc":{"start":{"line":104,"column":4},"end":{"line":124,"column":4}}},"8":{"name":"_updateAccountSnapshot","line":129,"loc":{"start":{"line":129,"column":4},"end":{"line":131,"column":4}}},"9":{"name":"_updateTotalSupplySnapshot","line":136,"loc":{"start":{"line":136,"column":4},"end":{"line":138,"column":4}}}},"statementMap":{"1":{"start":{"line":47,"column":8},"end":{"line":47,"column":1933}},"2":{"start":{"line":60,"column":8},"end":{"line":60,"column":2596}},"3":{"start":{"line":78,"column":8},"end":{"line":78,"column":3393}},"4":{"start":{"line":83,"column":8},"end":{"line":83,"column":53}},"5":{"start":{"line":92,"column":8},"end":{"line":92,"column":3864}},"6":{"start":{"line":96,"column":8},"end":{"line":96,"column":50}},"7":{"start":{"line":108,"column":8},"end":{"line":108,"column":28}},"8":{"start":{"line":109,"column":8},"end":{"line":109,"column":4394}},"9":{"start":{"line":111,"column":12},"end":{"line":111,"column":39}},"10":{"start":{"line":112,"column":12},"end":{"line":112,"column":4520}},"11":{"start":{"line":114,"column":16},"end":{"line":114,"column":41}},"12":{"start":{"line":117,"column":16},"end":{"line":117,"column":43}},"13":{"start":{"line":121,"column":12},"end":{"line":121,"column":37}},"14":{"start":{"line":122,"column":12},"end":{"line":122,"column":39}},"15":{"start":{"line":130,"column":8},"end":{"line":130,"column":77}},"16":{"start":{"line":137,"column":8},"end":{"line":137,"column":60}}},"branchMap":{"1":{"line":27,"type":"if","locations":[{"start":{"line":27,"column":55},"end":{"line":27,"column":55}},{"start":{"line":27,"column":55},"end":{"line":27,"column":55}}]},"2":{"line":83,"type":"if","locations":[{"start":{"line":83,"column":29},"end":{"line":83,"column":33}},{"start":{"line":83,"column":37},"end":{"line":83,"column":52}}]},"3":{"line":96,"type":"if","locations":[{"start":{"line":96,"column":29},"end":{"line":96,"column":33}},{"start":{"line":96,"column":37},"end":{"line":96,"column":49}}]},"4":{"line":109,"type":"if","locations":[{"start":{"line":109,"column":8},"end":{"line":109,"column":8}},{"start":{"line":109,"column":8},"end":{"line":109,"column":8}}]},"5":{"line":112,"type":"if","locations":[{"start":{"line":112,"column":12},"end":{"line":112,"column":12}},{"start":{"line":112,"column":12},"end":{"line":112,"column":12}}]}}},
+"contracts/modules/internal/ValidationModuleInternal.sol":{"l":{"27":387,"28":16,"29":16,"41":12,"50":6,"61":6,"65":57},"path":"/home/ryan/Downloads/CM/CMTAT/contracts/modules/internal/ValidationModuleInternal.sol","s":{"1":387,"2":16,"3":12,"4":6,"5":6,"6":57},"b":{"1":[387,0],"2":[16,371]},"f":{"1":387,"2":12,"3":6,"4":6,"5":57},"fnMap":{"1":{"name":"__Validation_init_unchained","line":26,"loc":{"start":{"line":24,"column":4},"end":{"line":31,"column":4}}},"2":{"name":"_validateTransfer","line":36,"loc":{"start":{"line":36,"column":4},"end":{"line":42,"column":4}}},"3":{"name":"_messageForTransferRestriction","line":47,"loc":{"start":{"line":47,"column":4},"end":{"line":51,"column":4}}},"4":{"name":"_detectTransferRestriction","line":56,"loc":{"start":{"line":56,"column":4},"end":{"line":62,"column":4}}},"5":{"name":"_operateOnTransfer","line":64,"loc":{"start":{"line":64,"column":4},"end":{"line":66,"column":4}}}},"statementMap":{"1":{"start":{"line":27,"column":8},"end":{"line":27,"column":758}},"2":{"start":{"line":29,"column":12},"end":{"line":29,"column":39}},"3":{"start":{"line":41,"column":8},"end":{"line":41,"column":60}},"4":{"start":{"line":50,"column":8},"end":{"line":50,"column":72}},"5":{"start":{"line":61,"column":8},"end":{"line":61,"column":69}},"6":{"start":{"line":65,"column":8},"end":{"line":65,"column":61}}},"branchMap":{"1":{"line":26,"type":"if","locations":[{"start":{"line":26,"column":15},"end":{"line":26,"column":15}},{"start":{"line":26,"column":15},"end":{"line":26,"column":15}}]},"2":{"line":27,"type":"if","locations":[{"start":{"line":27,"column":8},"end":{"line":27,"column":8}},{"start":{"line":27,"column":8},"end":{"line":27,"column":8}}]}}},
+"contracts/modules/security/AuthorizationModule.sol":{"l":{"24":387,"25":3,"27":384,"28":384,"29":0,"42":8,"43":2,"45":6,"46":6,"50":35,"51":3,"52":3,"54":2,"57":33,"61":5,"62":3,"63":3,"65":2,"68":3,"79":1443,"80":810,"82":633},"path":"/home/ryan/Downloads/CM/CMTAT/contracts/modules/security/AuthorizationModule.sol","s":{"1":387,"2":384,"3":384,"4":8,"5":6,"6":35,"7":3,"8":3,"9":33,"10":5,"11":3,"12":3,"13":3,"14":1443,"15":810,"16":633},"b":{"1":[387,0],"2":[3,384],"3":[0,384],"4":[8,2],"5":[2,6],"6":[35,4],"7":[3,32],"8":[2,1],"9":[5,4],"10":[3,2],"11":[2,1],"12":[810,633]},"f":{"1":387,"2":8,"3":35,"4":5,"5":1443},"fnMap":{"1":{"name":"__AuthorizationModule_init_unchained","line":23,"loc":{"start":{"line":22,"column":4},"end":{"line":33,"column":4}}},"2":{"name":"setAuthorizationEngine","line":41,"loc":{"start":{"line":39,"column":4},"end":{"line":47,"column":4}}},"3":{"name":"grantRole","line":49,"loc":{"start":{"line":49,"column":4},"end":{"line":58,"column":4}}},"4":{"name":"revokeRole","line":60,"loc":{"start":{"line":60,"column":4},"end":{"line":69,"column":4}}},"5":{"name":"hasRole","line":74,"loc":{"start":{"line":74,"column":4},"end":{"line":83,"column":4}}}},"statementMap":{"1":{"start":{"line":24,"column":8},"end":{"line":24,"column":889}},"2":{"start":{"line":27,"column":8},"end":{"line":27,"column":44}},"3":{"start":{"line":28,"column":8},"end":{"line":28,"column":1056}},"4":{"start":{"line":42,"column":8},"end":{"line":42,"column":1483}},"5":{"start":{"line":46,"column":8},"end":{"line":46,"column":54}},"6":{"start":{"line":50,"column":8},"end":{"line":50,"column":1852}},"7":{"start":{"line":51,"column":12},"end":{"line":51,"column":79}},"8":{"start":{"line":52,"column":12},"end":{"line":52,"column":2000}},"9":{"start":{"line":57,"column":8},"end":{"line":57,"column":64}},"10":{"start":{"line":61,"column":8},"end":{"line":61,"column":2361}},"11":{"start":{"line":62,"column":12},"end":{"line":62,"column":80}},"12":{"start":{"line":63,"column":12},"end":{"line":63,"column":2510}},"13":{"start":{"line":68,"column":8},"end":{"line":68,"column":65}},"14":{"start":{"line":79,"column":8},"end":{"line":79,"column":3041}},"15":{"start":{"line":80,"column":12},"end":{"line":80,"column":23}},"16":{"start":{"line":82,"column":8},"end":{"line":82,"column":62}}},"branchMap":{"1":{"line":23,"type":"if","locations":[{"start":{"line":23,"column":13},"end":{"line":23,"column":13}},{"start":{"line":23,"column":13},"end":{"line":23,"column":13}}]},"2":{"line":24,"type":"if","locations":[{"start":{"line":24,"column":8},"end":{"line":24,"column":8}},{"start":{"line":24,"column":8},"end":{"line":24,"column":8}}]},"3":{"line":28,"type":"if","locations":[{"start":{"line":28,"column":8},"end":{"line":28,"column":8}},{"start":{"line":28,"column":8},"end":{"line":28,"column":8}}]},"4":{"line":41,"type":"if","locations":[{"start":{"line":41,"column":15},"end":{"line":41,"column":15}},{"start":{"line":41,"column":15},"end":{"line":41,"column":15}}]},"5":{"line":42,"type":"if","locations":[{"start":{"line":42,"column":8},"end":{"line":42,"column":8}},{"start":{"line":42,"column":8},"end":{"line":42,"column":8}}]},"6":{"line":49,"type":"if","locations":[{"start":{"line":49,"column":70},"end":{"line":49,"column":70}},{"start":{"line":49,"column":70},"end":{"line":49,"column":70}}]},"7":{"line":50,"type":"if","locations":[{"start":{"line":50,"column":8},"end":{"line":50,"column":8}},{"start":{"line":50,"column":8},"end":{"line":50,"column":8}}]},"8":{"line":52,"type":"if","locations":[{"start":{"line":52,"column":12},"end":{"line":52,"column":12}},{"start":{"line":52,"column":12},"end":{"line":52,"column":12}}]},"9":{"line":60,"type":"if","locations":[{"start":{"line":60,"column":71},"end":{"line":60,"column":71}},{"start":{"line":60,"column":71},"end":{"line":60,"column":71}}]},"10":{"line":61,"type":"if","locations":[{"start":{"line":61,"column":8},"end":{"line":61,"column":8}},{"start":{"line":61,"column":8},"end":{"line":61,"column":8}}]},"11":{"line":63,"type":"if","locations":[{"start":{"line":63,"column":12},"end":{"line":63,"column":12}},{"start":{"line":63,"column":12},"end":{"line":63,"column":12}}]},"12":{"line":79,"type":"if","locations":[{"start":{"line":79,"column":8},"end":{"line":79,"column":8}},{"start":{"line":79,"column":8},"end":{"line":79,"column":8}}]}}},
+"contracts/modules/wrapper/controllers/ValidationModule.sol":{"l":{"37":20,"38":6,"40":14,"41":14,"52":20,"53":3,"58":4,"63":2,"68":2,"70":6,"72":3,"88":17,"89":4,"91":2,"93":2,"95":6,"97":3,"106":19,"107":4,"109":15,"110":12,"112":3,"120":483,"121":32,"123":451,"127":464,"128":28,"130":436,"131":57,"133":379},"path":"/home/ryan/Downloads/CM/CMTAT/contracts/modules/wrapper/controllers/ValidationModule.sol","s":{"1":20,"2":14,"3":20,"4":3,"5":17,"6":4,"7":13,"8":2,"9":11,"10":2,"11":9,"12":6,"13":3,"14":17,"15":4,"16":13,"17":2,"18":11,"19":2,"20":9,"21":6,"22":3,"23":19,"24":4,"25":15,"26":12,"27":3,"28":483,"29":32,"30":451,"31":464,"32":28,"33":436,"34":57,"35":379},"b":{"1":[384,0],"2":[20,6],"3":[6,14],"4":[3,17],"5":[4,13],"6":[2,11],"7":[2,9],"8":[6,3],"9":[4,13],"10":[2,11],"11":[2,9],"12":[6,3],"13":[4,15],"14":[12,3],"15":[32,451],"16":[22,6],"17":[6,4],"18":[28,436],"19":[57,379]},"f":{"1":384,"2":20,"3":20,"4":17,"5":19,"6":483,"7":464},"fnMap":{"1":{"name":"__ValidationModule_init_unchained","line":26,"loc":{"start":{"line":26,"column":4},"end":{"line":28,"column":4}}},"2":{"name":"setRuleEngine","line":36,"loc":{"start":{"line":34,"column":4},"end":{"line":42,"column":4}}},"3":{"name":"messageForTransferRestriction","line":49,"loc":{"start":{"line":49,"column":4},"end":{"line":74,"column":4}}},"4":{"name":"detectTransferRestriction","line":83,"loc":{"start":{"line":83,"column":4},"end":{"line":99,"column":4}}},"5":{"name":"validateTransfer","line":101,"loc":{"start":{"line":101,"column":4},"end":{"line":113,"column":4}}},"6":{"name":"_validateTransferByModule","line":115,"loc":{"start":{"line":115,"column":4},"end":{"line":124,"column":4}}},"7":{"name":"_operateOnTransfer","line":126,"loc":{"start":{"line":126,"column":4},"end":{"line":134,"column":4}}}},"statementMap":{"1":{"start":{"line":37,"column":8},"end":{"line":37,"column":1014}},"2":{"start":{"line":41,"column":8},"end":{"line":41,"column":36}},"3":{"start":{"line":52,"column":8},"end":{"line":52,"column":1701}},"4":{"start":{"line":53,"column":12},"end":{"line":53,"column":35}},"5":{"start":{"line":54,"column":15},"end":{"line":54,"column":1817}},"6":{"start":{"line":58,"column":12},"end":{"line":58,"column":48}},"7":{"start":{"line":59,"column":15},"end":{"line":59,"column":1993}},"8":{"start":{"line":63,"column":12},"end":{"line":63,"column":53}},"9":{"start":{"line":64,"column":15},"end":{"line":64,"column":2179}},"10":{"start":{"line":68,"column":12},"end":{"line":68,"column":51}},"11":{"start":{"line":69,"column":15},"end":{"line":69,"column":2361}},"12":{"start":{"line":70,"column":12},"end":{"line":70,"column":66}},"13":{"start":{"line":72,"column":12},"end":{"line":72,"column":36}},"14":{"start":{"line":88,"column":8},"end":{"line":88,"column":3057}},"15":{"start":{"line":89,"column":12},"end":{"line":89,"column":69}},"16":{"start":{"line":90,"column":15},"end":{"line":90,"column":3159}},"17":{"start":{"line":91,"column":12},"end":{"line":91,"column":74}},"18":{"start":{"line":92,"column":15},"end":{"line":92,"column":3270}},"19":{"start":{"line":93,"column":12},"end":{"line":93,"column":72}},"20":{"start":{"line":94,"column":15},"end":{"line":94,"column":3377}},"21":{"start":{"line":95,"column":12},"end":{"line":95,"column":63}},"22":{"start":{"line":97,"column":12},"end":{"line":97,"column":56}},"23":{"start":{"line":106,"column":8},"end":{"line":106,"column":3723}},"24":{"start":{"line":107,"column":12},"end":{"line":107,"column":24}},"25":{"start":{"line":109,"column":8},"end":{"line":109,"column":3819}},"26":{"start":{"line":110,"column":12},"end":{"line":110,"column":54}},"27":{"start":{"line":112,"column":8},"end":{"line":112,"column":19}},"28":{"start":{"line":120,"column":8},"end":{"line":120,"column":4108}},"29":{"start":{"line":121,"column":12},"end":{"line":121,"column":24}},"30":{"start":{"line":123,"column":8},"end":{"line":123,"column":19}},"31":{"start":{"line":127,"column":8},"end":{"line":127,"column":4334}},"32":{"start":{"line":128,"column":12},"end":{"line":128,"column":24}},"33":{"start":{"line":130,"column":8},"end":{"line":130,"column":4429}},"34":{"start":{"line":131,"column":12},"end":{"line":131,"column":80}},"35":{"start":{"line":133,"column":8},"end":{"line":133,"column":19}}},"branchMap":{"1":{"line":26,"type":"if","locations":[{"start":{"line":26,"column":58},"end":{"line":26,"column":58}},{"start":{"line":26,"column":58},"end":{"line":26,"column":58}}]},"2":{"line":36,"type":"if","locations":[{"start":{"line":36,"column":15},"end":{"line":36,"column":15}},{"start":{"line":36,"column":15},"end":{"line":36,"column":15}}]},"3":{"line":37,"type":"if","locations":[{"start":{"line":37,"column":8},"end":{"line":37,"column":8}},{"start":{"line":37,"column":8},"end":{"line":37,"column":8}}]},"4":{"line":52,"type":"if","locations":[{"start":{"line":52,"column":8},"end":{"line":52,"column":8}},{"start":{"line":52,"column":8},"end":{"line":52,"column":8}}]},"5":{"line":54,"type":"if","locations":[{"start":{"line":54,"column":15},"end":{"line":54,"column":15}},{"start":{"line":54,"column":15},"end":{"line":54,"column":15}}]},"6":{"line":59,"type":"if","locations":[{"start":{"line":59,"column":15},"end":{"line":59,"column":15}},{"start":{"line":59,"column":15},"end":{"line":59,"column":15}}]},"7":{"line":64,"type":"if","locations":[{"start":{"line":64,"column":15},"end":{"line":64,"column":15}},{"start":{"line":64,"column":15},"end":{"line":64,"column":15}}]},"8":{"line":69,"type":"if","locations":[{"start":{"line":69,"column":15},"end":{"line":69,"column":15}},{"start":{"line":69,"column":15},"end":{"line":69,"column":15}}]},"9":{"line":88,"type":"if","locations":[{"start":{"line":88,"column":8},"end":{"line":88,"column":8}},{"start":{"line":88,"column":8},"end":{"line":88,"column":8}}]},"10":{"line":90,"type":"if","locations":[{"start":{"line":90,"column":15},"end":{"line":90,"column":15}},{"start":{"line":90,"column":15},"end":{"line":90,"column":15}}]},"11":{"line":92,"type":"if","locations":[{"start":{"line":92,"column":15},"end":{"line":92,"column":15}},{"start":{"line":92,"column":15},"end":{"line":92,"column":15}}]},"12":{"line":94,"type":"if","locations":[{"start":{"line":94,"column":15},"end":{"line":94,"column":15}},{"start":{"line":94,"column":15},"end":{"line":94,"column":15}}]},"13":{"line":106,"type":"if","locations":[{"start":{"line":106,"column":8},"end":{"line":106,"column":8}},{"start":{"line":106,"column":8},"end":{"line":106,"column":8}}]},"14":{"line":109,"type":"if","locations":[{"start":{"line":109,"column":8},"end":{"line":109,"column":8}},{"start":{"line":109,"column":8},"end":{"line":109,"column":8}}]},"15":{"line":120,"type":"if","locations":[{"start":{"line":120,"column":8},"end":{"line":120,"column":8}},{"start":{"line":120,"column":8},"end":{"line":120,"column":8}}]},"16":{"line":120,"type":"cond-expr","locations":[{"start":{"line":120,"column":12},"end":{"line":120,"column":19}},{"start":{"line":120,"column":24},"end":{"line":120,"column":35}}]},"17":{"line":120,"type":"cond-expr","locations":[{"start":{"line":120,"column":12},"end":{"line":120,"column":35}},{"start":{"line":120,"column":40},"end":{"line":120,"column":49}}]},"18":{"line":127,"type":"if","locations":[{"start":{"line":127,"column":8},"end":{"line":127,"column":8}},{"start":{"line":127,"column":8},"end":{"line":127,"column":8}}]},"19":{"line":130,"type":"if","locations":[{"start":{"line":130,"column":8},"end":{"line":130,"column":8}},{"start":{"line":130,"column":8},"end":{"line":130,"column":8}}]}}},
+"contracts/modules/wrapper/core/BaseModule.sol":{"l":{"46":384,"47":384,"48":384,"49":384,"59":2,"60":2,"69":2,"70":2,"79":2,"80":2,"87":6,"88":4,"90":2,"91":2},"path":"/home/ryan/Downloads/CM/CMTAT/contracts/modules/wrapper/core/BaseModule.sol","s":{"1":2,"2":2,"3":2,"4":6,"5":2},"b":{"1":[384,0],"2":[2,4],"3":[2,4],"4":[2,4],"5":[6,4],"6":[4,2]},"f":{"1":384,"2":2,"3":2,"4":2,"5":6},"fnMap":{"1":{"name":"__Base_init_unchained","line":45,"loc":{"start":{"line":40,"column":4},"end":{"line":50,"column":4}}},"2":{"name":"setTokenId","line":58,"loc":{"start":{"line":56,"column":4},"end":{"line":61,"column":4}}},"3":{"name":"setTerms","line":68,"loc":{"start":{"line":66,"column":4},"end":{"line":71,"column":4}}},"4":{"name":"setInformation","line":78,"loc":{"start":{"line":76,"column":4},"end":{"line":81,"column":4}}},"5":{"name":"setFlag","line":86,"loc":{"start":{"line":86,"column":4},"end":{"line":92,"column":4}}}},"statementMap":{"1":{"start":{"line":60,"column":8},"end":{"line":60,"column":40}},"2":{"start":{"line":70,"column":8},"end":{"line":70,"column":33}},"3":{"start":{"line":80,"column":8},"end":{"line":80,"column":52}},"4":{"start":{"line":87,"column":8},"end":{"line":87,"column":2469}},"5":{"start":{"line":91,"column":8},"end":{"line":91,"column":24}}},"branchMap":{"1":{"line":45,"type":"if","locations":[{"start":{"line":45,"column":15},"end":{"line":45,"column":15}},{"start":{"line":45,"column":15},"end":{"line":45,"column":15}}]},"2":{"line":58,"type":"if","locations":[{"start":{"line":58,"column":13},"end":{"line":58,"column":13}},{"start":{"line":58,"column":13},"end":{"line":58,"column":13}}]},"3":{"line":68,"type":"if","locations":[{"start":{"line":68,"column":13},"end":{"line":68,"column":13}},{"start":{"line":68,"column":13},"end":{"line":68,"column":13}}]},"4":{"line":78,"type":"if","locations":[{"start":{"line":78,"column":13},"end":{"line":78,"column":13}},{"start":{"line":78,"column":13},"end":{"line":78,"column":13}}]},"5":{"line":86,"type":"if","locations":[{"start":{"line":86,"column":43},"end":{"line":86,"column":43}},{"start":{"line":86,"column":43},"end":{"line":86,"column":43}}]},"6":{"line":87,"type":"if","locations":[{"start":{"line":87,"column":8},"end":{"line":87,"column":8}},{"start":{"line":87,"column":8},"end":{"line":87,"column":8}}]}}},
+"contracts/modules/wrapper/core/EnforcementModule.sol":{"l":{"38":22,"52":8},"path":"/home/ryan/Downloads/CM/CMTAT/contracts/modules/wrapper/core/EnforcementModule.sol","s":{"1":22,"2":8},"b":{"1":[384,0],"2":[22,4],"3":[8,4]},"f":{"1":384,"2":22,"3":8},"fnMap":{"1":{"name":"__EnforcementModule_init_unchained","line":25,"loc":{"start":{"line":25,"column":4},"end":{"line":27,"column":4}}},"2":{"name":"freeze","line":37,"loc":{"start":{"line":34,"column":4},"end":{"line":39,"column":4}}},"3":{"name":"unfreeze","line":51,"loc":{"start":{"line":48,"column":4},"end":{"line":53,"column":4}}}},"statementMap":{"1":{"start":{"line":38,"column":8},"end":{"line":38,"column":39}},"2":{"start":{"line":52,"column":8},"end":{"line":52,"column":41}}},"branchMap":{"1":{"line":25,"type":"if","locations":[{"start":{"line":25,"column":59},"end":{"line":25,"column":59}},{"start":{"line":25,"column":59},"end":{"line":25,"column":59}}]},"2":{"line":37,"type":"if","locations":[{"start":{"line":37,"column":13},"end":{"line":37,"column":13}},{"start":{"line":37,"column":13},"end":{"line":37,"column":13}}]},"3":{"line":51,"type":"if","locations":[{"start":{"line":51,"column":13},"end":{"line":51,"column":13}},{"start":{"line":51,"column":13},"end":{"line":51,"column":13}}]}}},
+"contracts/modules/wrapper/core/ERC20BaseModule.sol":{"l":{"31":384,"41":2,"60":18,"61":4,"65":14,"66":8,"69":6,"72":14,"76":2,"91":18,"93":2,"94":2,"97":2,"106":4,"107":4,"108":6,"110":4},"path":"/home/ryan/Downloads/CM/CMTAT/contracts/modules/wrapper/core/ERC20BaseModule.sol","s":{"1":2,"2":18,"3":14,"4":6,"5":14,"6":2,"7":18,"8":2,"9":2,"10":2,"11":4},"b":{"1":[384,0],"2":[4,14],"3":[8,6],"4":[2,0]},"f":{"1":384,"2":2,"3":18,"4":18,"5":4},"fnMap":{"1":{"name":"__ERC20BaseModule_init_unchained","line":30,"loc":{"start":{"line":28,"column":4},"end":{"line":32,"column":4}}},"2":{"name":"decimals","line":40,"loc":{"start":{"line":40,"column":4},"end":{"line":42,"column":4}}},"3":{"name":"transferBatch","line":56,"loc":{"start":{"line":56,"column":4},"end":{"line":77,"column":4}}},"4":{"name":"transferFrom","line":86,"loc":{"start":{"line":86,"column":4},"end":{"line":98,"column":4}}},"5":{"name":"balanceInfo","line":105,"loc":{"start":{"line":105,"column":4},"end":{"line":111,"column":4}}}},"statementMap":{"1":{"start":{"line":41,"column":8},"end":{"line":41,"column":24}},"2":{"start":{"line":60,"column":8},"end":{"line":60,"column":1942}},"3":{"start":{"line":65,"column":8},"end":{"line":65,"column":2159}},"4":{"start":{"line":69,"column":8},"end":{"line":69,"column":2354}},"5":{"start":{"line":72,"column":12},"end":{"line":72,"column":70}},"6":{"start":{"line":76,"column":8},"end":{"line":76,"column":19}},"7":{"start":{"line":91,"column":8},"end":{"line":91,"column":68}},"8":{"start":{"line":93,"column":8},"end":{"line":93,"column":3304}},"9":{"start":{"line":94,"column":12},"end":{"line":94,"column":49}},"10":{"start":{"line":97,"column":8},"end":{"line":97,"column":21}},"11":{"start":{"line":107,"column":8},"end":{"line":107,"column":3797}}},"branchMap":{"1":{"line":30,"type":"if","locations":[{"start":{"line":30,"column":15},"end":{"line":30,"column":15}},{"start":{"line":30,"column":15},"end":{"line":30,"column":15}}]},"2":{"line":60,"type":"if","locations":[{"start":{"line":60,"column":8},"end":{"line":60,"column":8}},{"start":{"line":60,"column":8},"end":{"line":60,"column":8}}]},"3":{"line":65,"type":"if","locations":[{"start":{"line":65,"column":8},"end":{"line":65,"column":8}},{"start":{"line":65,"column":8},"end":{"line":65,"column":8}}]},"4":{"line":93,"type":"if","locations":[{"start":{"line":93,"column":8},"end":{"line":93,"column":8}},{"start":{"line":93,"column":8},"end":{"line":93,"column":8}}]}}},
+"contracts/modules/wrapper/core/ERC20BurnModule.sol":{"l":{"37":18,"38":14,"61":20,"62":4,"66":16,"67":8,"70":8,"71":24,"72":20,"95":6,"96":6,"97":6,"99":4,"102":2,"103":2,"106":2,"108":2,"110":2},"path":"/home/ryan/Downloads/CM/CMTAT/contracts/modules/wrapper/core/ERC20BurnModule.sol","s":{"1":18,"2":14,"3":20,"4":16,"5":8,"6":24,"7":20,"8":6,"9":6,"10":6,"11":2,"12":2,"13":2,"14":2},"b":{"1":[384,0],"2":[18,8],"3":[20,4],"4":[4,16],"5":[8,8],"6":[6,4],"7":[4,2]},"f":{"1":384,"2":18,"3":20,"4":6},"fnMap":{"1":{"name":"__ERC20BurnModule_init_unchained","line":19,"loc":{"start":{"line":19,"column":4},"end":{"line":21,"column":4}}},"2":{"name":"burn","line":36,"loc":{"start":{"line":32,"column":4},"end":{"line":39,"column":4}}},"3":{"name":"burnBatch","line":60,"loc":{"start":{"line":56,"column":4},"end":{"line":74,"column":4}}},"4":{"name":"burnFrom","line":92,"loc":{"start":{"line":90,"column":4},"end":{"line":111,"column":4}}}},"statementMap":{"1":{"start":{"line":37,"column":8},"end":{"line":37,"column":28}},"2":{"start":{"line":38,"column":8},"end":{"line":38,"column":41}},"3":{"start":{"line":61,"column":8},"end":{"line":61,"column":2316}},"4":{"start":{"line":66,"column":8},"end":{"line":66,"column":2538}},"5":{"start":{"line":70,"column":8},"end":{"line":70,"column":2738}},"6":{"start":{"line":71,"column":12},"end":{"line":71,"column":40}},"7":{"start":{"line":72,"column":12},"end":{"line":72,"column":53}},"8":{"start":{"line":95,"column":8},"end":{"line":95,"column":38}},"9":{"start":{"line":96,"column":8},"end":{"line":96,"column":61}},"10":{"start":{"line":97,"column":8},"end":{"line":97,"column":3627}},"11":{"start":{"line":103,"column":12},"end":{"line":103,"column":62}},"12":{"start":{"line":106,"column":8},"end":{"line":106,"column":28}},"13":{"start":{"line":108,"column":8},"end":{"line":108,"column":45}},"14":{"start":{"line":110,"column":8},"end":{"line":110,"column":45}}},"branchMap":{"1":{"line":19,"type":"if","locations":[{"start":{"line":19,"column":57},"end":{"line":19,"column":57}},{"start":{"line":19,"column":57},"end":{"line":19,"column":57}}]},"2":{"line":36,"type":"if","locations":[{"start":{"line":36,"column":13},"end":{"line":36,"column":13}},{"start":{"line":36,"column":13},"end":{"line":36,"column":13}}]},"3":{"line":60,"type":"if","locations":[{"start":{"line":60,"column":13},"end":{"line":60,"column":13}},{"start":{"line":60,"column":13},"end":{"line":60,"column":13}}]},"4":{"line":61,"type":"if","locations":[{"start":{"line":61,"column":8},"end":{"line":61,"column":8}},{"start":{"line":61,"column":8},"end":{"line":61,"column":8}}]},"5":{"line":66,"type":"if","locations":[{"start":{"line":66,"column":8},"end":{"line":66,"column":8}},{"start":{"line":66,"column":8},"end":{"line":66,"column":8}}]},"6":{"line":92,"type":"if","locations":[{"start":{"line":92,"column":8},"end":{"line":92,"column":8}},{"start":{"line":92,"column":8},"end":{"line":92,"column":8}}]},"7":{"line":97,"type":"if","locations":[{"start":{"line":97,"column":8},"end":{"line":97,"column":8}},{"start":{"line":97,"column":8},"end":{"line":97,"column":8}}]}}},
+"contracts/modules/wrapper/core/ERC20MintModule.sol":{"l":{"35":277,"36":277,"58":30,"59":4,"63":26,"64":8,"67":18,"68":54,"69":54},"path":"/home/ryan/Downloads/CM/CMTAT/contracts/modules/wrapper/core/ERC20MintModule.sol","s":{"1":277,"2":277,"3":30,"4":26,"5":18,"6":54,"7":54},"b":{"1":[384,0],"2":[277,8],"3":[30,4],"4":[4,26],"5":[8,18]},"f":{"1":384,"2":277,"3":30},"fnMap":{"1":{"name":"__ERC20MintModule_init_unchained","line":17,"loc":{"start":{"line":17,"column":4},"end":{"line":19,"column":4}}},"2":{"name":"mint","line":34,"loc":{"start":{"line":34,"column":4},"end":{"line":37,"column":4}}},"3":{"name":"mintBatch","line":57,"loc":{"start":{"line":54,"column":4},"end":{"line":71,"column":4}}}},"statementMap":{"1":{"start":{"line":35,"column":8},"end":{"line":35,"column":28}},"2":{"start":{"line":36,"column":8},"end":{"line":36,"column":33}},"3":{"start":{"line":58,"column":8},"end":{"line":58,"column":2105}},"4":{"start":{"line":63,"column":8},"end":{"line":63,"column":2327}},"5":{"start":{"line":67,"column":8},"end":{"line":67,"column":2527}},"6":{"start":{"line":68,"column":12},"end":{"line":68,"column":40}},"7":{"start":{"line":69,"column":12},"end":{"line":69,"column":45}}},"branchMap":{"1":{"line":17,"type":"if","locations":[{"start":{"line":17,"column":57},"end":{"line":17,"column":57}},{"start":{"line":17,"column":57},"end":{"line":17,"column":57}}]},"2":{"line":34,"type":"if","locations":[{"start":{"line":34,"column":57},"end":{"line":34,"column":57}},{"start":{"line":34,"column":57},"end":{"line":34,"column":57}}]},"3":{"line":57,"type":"if","locations":[{"start":{"line":57,"column":13},"end":{"line":57,"column":13}},{"start":{"line":57,"column":13},"end":{"line":57,"column":13}}]},"4":{"line":58,"type":"if","locations":[{"start":{"line":58,"column":8},"end":{"line":58,"column":8}},{"start":{"line":58,"column":8},"end":{"line":58,"column":8}}]},"5":{"line":63,"type":"if","locations":[{"start":{"line":63,"column":8},"end":{"line":63,"column":8}},{"start":{"line":63,"column":8},"end":{"line":63,"column":8}}]}}},
+"contracts/modules/wrapper/core/PauseModule.sol":{"l":{"40":14,"52":8,"53":4,"55":4,"71":2,"72":2,"73":2,"80":4},"path":"/home/ryan/Downloads/CM/CMTAT/contracts/modules/wrapper/core/PauseModule.sol","s":{"1":14,"2":8,"3":4,"4":2,"5":2,"6":4},"b":{"1":[384,0],"2":[14,6],"3":[8,4],"4":[4,4],"5":[2,4]},"f":{"1":384,"2":14,"3":8,"4":2,"5":4},"fnMap":{"1":{"name":"__PauseModule_init_unchained","line":26,"loc":{"start":{"line":26,"column":4},"end":{"line":28,"column":4}}},"2":{"name":"pause","line":39,"loc":{"start":{"line":39,"column":4},"end":{"line":41,"column":4}}},"3":{"name":"unpause","line":51,"loc":{"start":{"line":51,"column":4},"end":{"line":56,"column":4}}},"4":{"name":"deactivateContract","line":69,"loc":{"start":{"line":67,"column":4},"end":{"line":74,"column":4}}},"5":{"name":"deactivated","line":79,"loc":{"start":{"line":79,"column":4},"end":{"line":81,"column":4}}}},"statementMap":{"1":{"start":{"line":40,"column":8},"end":{"line":40,"column":15}},"2":{"start":{"line":52,"column":8},"end":{"line":52,"column":1627}},"3":{"start":{"line":55,"column":8},"end":{"line":55,"column":17}},"4":{"start":{"line":72,"column":7},"end":{"line":72,"column":14}},"5":{"start":{"line":73,"column":7},"end":{"line":73,"column":37}},"6":{"start":{"line":80,"column":8},"end":{"line":80,"column":28}}},"branchMap":{"1":{"line":26,"type":"if","locations":[{"start":{"line":26,"column":53},"end":{"line":26,"column":53}},{"start":{"line":26,"column":53},"end":{"line":26,"column":53}}]},"2":{"line":39,"type":"if","locations":[{"start":{"line":39,"column":28},"end":{"line":39,"column":28}},{"start":{"line":39,"column":28},"end":{"line":39,"column":28}}]},"3":{"line":51,"type":"if","locations":[{"start":{"line":51,"column":30},"end":{"line":51,"column":30}},{"start":{"line":51,"column":30},"end":{"line":51,"column":30}}]},"4":{"line":52,"type":"if","locations":[{"start":{"line":52,"column":8},"end":{"line":52,"column":8}},{"start":{"line":52,"column":8},"end":{"line":52,"column":8}}]},"5":{"line":69,"type":"if","locations":[{"start":{"line":69,"column":8},"end":{"line":69,"column":8}},{"start":{"line":69,"column":8},"end":{"line":69,"column":8}}]}}},
+"contracts/modules/wrapper/extensions/DebtModule/CreditEventsModule.sol":{"l":{"41":2,"42":2,"43":2,"44":2,"53":6,"54":4,"56":2,"57":2,"66":6,"67":4,"69":2,"70":2,"79":2,"80":2},"path":"/home/ryan/Downloads/CM/CMTAT/contracts/modules/wrapper/extensions/DebtModule/CreditEventsModule.sol","s":{"1":2,"2":2,"3":2,"4":6,"5":2,"6":6,"7":2,"8":2},"b":{"1":[384,0],"2":[2,4],"3":[6,4],"4":[4,2],"5":[6,4],"6":[4,2],"7":[2,4]},"f":{"1":384,"2":2,"3":6,"4":6,"5":2},"fnMap":{"1":{"name":"__CreditEvents_init_unchained","line":28,"loc":{"start":{"line":28,"column":4},"end":{"line":30,"column":4}}},"2":{"name":"setCreditEvents","line":40,"loc":{"start":{"line":36,"column":4},"end":{"line":45,"column":4}}},"3":{"name":"setFlagDefault","line":52,"loc":{"start":{"line":50,"column":4},"end":{"line":58,"column":4}}},"4":{"name":"setFlagRedeemed","line":65,"loc":{"start":{"line":63,"column":4},"end":{"line":71,"column":4}}},"5":{"name":"setRating","line":78,"loc":{"start":{"line":76,"column":4},"end":{"line":81,"column":4}}}},"statementMap":{"1":{"start":{"line":42,"column":8},"end":{"line":42,"column":38}},"2":{"start":{"line":43,"column":8},"end":{"line":43,"column":40}},"3":{"start":{"line":44,"column":8},"end":{"line":44,"column":37}},"4":{"start":{"line":53,"column":8},"end":{"line":53,"column":1784}},"5":{"start":{"line":57,"column":8},"end":{"line":57,"column":38}},"6":{"start":{"line":66,"column":8},"end":{"line":66,"column":2227}},"7":{"start":{"line":70,"column":8},"end":{"line":70,"column":40}},"8":{"start":{"line":80,"column":8},"end":{"line":80,"column":37}}},"branchMap":{"1":{"line":28,"type":"if","locations":[{"start":{"line":28,"column":54},"end":{"line":28,"column":54}},{"start":{"line":28,"column":54},"end":{"line":28,"column":54}}]},"2":{"line":40,"type":"if","locations":[{"start":{"line":40,"column":13},"end":{"line":40,"column":13}},{"start":{"line":40,"column":13},"end":{"line":40,"column":13}}]},"3":{"line":52,"type":"if","locations":[{"start":{"line":52,"column":13},"end":{"line":52,"column":13}},{"start":{"line":52,"column":13},"end":{"line":52,"column":13}}]},"4":{"line":53,"type":"if","locations":[{"start":{"line":53,"column":8},"end":{"line":53,"column":8}},{"start":{"line":53,"column":8},"end":{"line":53,"column":8}}]},"5":{"line":65,"type":"if","locations":[{"start":{"line":65,"column":13},"end":{"line":65,"column":13}},{"start":{"line":65,"column":13},"end":{"line":65,"column":13}}]},"6":{"line":66,"type":"if","locations":[{"start":{"line":66,"column":8},"end":{"line":66,"column":8}},{"start":{"line":66,"column":8},"end":{"line":66,"column":8}}]},"7":{"line":78,"type":"if","locations":[{"start":{"line":78,"column":13},"end":{"line":78,"column":13}},{"start":{"line":78,"column":13},"end":{"line":78,"column":13}}]}}},
+"contracts/modules/wrapper/extensions/DebtModule/DebtBaseModule.sol":{"l":{"69":2,"70":2,"71":2,"72":2,"73":2,"74":2,"75":2,"79":2,"83":2,"87":2,"91":2,"96":2,"98":2,"105":6,"106":4,"108":2,"109":2,"116":6,"117":4,"119":2,"120":2,"129":2,"130":2,"139":2,"140":2,"149":2,"150":2,"159":2,"160":2,"172":2,"173":2,"182":2,"183":2,"192":2,"193":2,"205":2,"206":2,"218":2,"219":2,"228":2,"229":2},"path":"/home/ryan/Downloads/CM/CMTAT/contracts/modules/wrapper/extensions/DebtModule/DebtBaseModule.sol","s":{"1":2,"2":2,"3":2,"4":2,"5":2,"6":2,"7":2,"8":2,"9":2,"10":2,"11":2,"12":2,"13":6,"14":2,"15":6,"16":2,"17":2,"18":2,"19":2,"20":2,"21":2,"22":2,"23":2,"24":2,"25":2,"26":2},"b":{"1":[384,0],"2":[2,4],"3":[6,4],"4":[4,2],"5":[6,4],"6":[4,2],"7":[2,4],"8":[2,4],"9":[2,4],"10":[2,4],"11":[2,4],"12":[2,4],"13":[2,4],"14":[2,4],"15":[2,4],"16":[2,4]},"f":{"1":384,"2":2,"3":6,"4":6,"5":2,"6":2,"7":2,"8":2,"9":2,"10":2,"11":2,"12":2,"13":2,"14":2},"fnMap":{"1":{"name":"__DebtBaseModule_init_unchained","line":60,"loc":{"start":{"line":60,"column":4},"end":{"line":62,"column":4}}},"2":{"name":"setDebt","line":68,"loc":{"start":{"line":68,"column":4},"end":{"line":99,"column":4}}},"3":{"name":"setInterestRate","line":104,"loc":{"start":{"line":104,"column":4},"end":{"line":110,"column":4}}},"4":{"name":"setParValue","line":115,"loc":{"start":{"line":115,"column":4},"end":{"line":121,"column":4}}},"5":{"name":"setGuarantor","line":128,"loc":{"start":{"line":126,"column":4},"end":{"line":131,"column":4}}},"6":{"name":"setBondHolder","line":138,"loc":{"start":{"line":136,"column":4},"end":{"line":141,"column":4}}},"7":{"name":"setMaturityDate","line":148,"loc":{"start":{"line":146,"column":4},"end":{"line":151,"column":4}}},"8":{"name":"setInterestScheduleFormat","line":158,"loc":{"start":{"line":156,"column":4},"end":{"line":164,"column":4}}},"9":{"name":"setInterestPaymentDate","line":171,"loc":{"start":{"line":169,"column":4},"end":{"line":174,"column":4}}},"10":{"name":"setDayCountConvention","line":181,"loc":{"start":{"line":179,"column":4},"end":{"line":184,"column":4}}},"11":{"name":"setBusinessDayConvention","line":191,"loc":{"start":{"line":189,"column":4},"end":{"line":197,"column":4}}},"12":{"name":"setPublicHolidaysCalendar","line":204,"loc":{"start":{"line":202,"column":4},"end":{"line":210,"column":4}}},"13":{"name":"setIssuanceDate","line":217,"loc":{"start":{"line":215,"column":4},"end":{"line":220,"column":4}}},"14":{"name":"setCouponFrequency","line":227,"loc":{"start":{"line":225,"column":4},"end":{"line":230,"column":4}}}},"statementMap":{"1":{"start":{"line":70,"column":8},"end":{"line":70,"column":45}},"2":{"start":{"line":71,"column":8},"end":{"line":71,"column":37}},"3":{"start":{"line":72,"column":8},"end":{"line":72,"column":56}},"4":{"start":{"line":73,"column":8},"end":{"line":73,"column":59}},"5":{"start":{"line":74,"column":8},"end":{"line":74,"column":65}},"6":{"start":{"line":75,"column":8},"end":{"line":75,"column":2589}},"7":{"start":{"line":79,"column":8},"end":{"line":79,"column":2720}},"8":{"start":{"line":83,"column":8},"end":{"line":83,"column":2842}},"9":{"start":{"line":87,"column":8},"end":{"line":87,"column":2961}},"10":{"start":{"line":91,"column":8},"end":{"line":91,"column":3089}},"11":{"start":{"line":96,"column":8},"end":{"line":96,"column":65}},"12":{"start":{"line":98,"column":8},"end":{"line":98,"column":74}},"13":{"start":{"line":105,"column":8},"end":{"line":105,"column":3572}},"14":{"start":{"line":109,"column":8},"end":{"line":109,"column":40}},"15":{"start":{"line":116,"column":8},"end":{"line":116,"column":3968}},"16":{"start":{"line":120,"column":8},"end":{"line":120,"column":32}},"17":{"start":{"line":130,"column":8},"end":{"line":130,"column":46}},"18":{"start":{"line":140,"column":8},"end":{"line":140,"column":49}},"19":{"start":{"line":150,"column":8},"end":{"line":150,"column":55}},"20":{"start":{"line":160,"column":8},"end":{"line":160,"column":5402}},"21":{"start":{"line":173,"column":8},"end":{"line":173,"column":76}},"22":{"start":{"line":183,"column":8},"end":{"line":183,"column":73}},"23":{"start":{"line":193,"column":8},"end":{"line":193,"column":6592}},"24":{"start":{"line":206,"column":8},"end":{"line":206,"column":7028}},"25":{"start":{"line":219,"column":8},"end":{"line":219,"column":55}},"26":{"start":{"line":229,"column":8},"end":{"line":229,"column":64}}},"branchMap":{"1":{"line":60,"type":"if","locations":[{"start":{"line":60,"column":56},"end":{"line":60,"column":56}},{"start":{"line":60,"column":56},"end":{"line":60,"column":56}}]},"2":{"line":68,"type":"if","locations":[{"start":{"line":68,"column":53},"end":{"line":68,"column":53}},{"start":{"line":68,"column":53},"end":{"line":68,"column":53}}]},"3":{"line":104,"type":"if","locations":[{"start":{"line":104,"column":59},"end":{"line":104,"column":59}},{"start":{"line":104,"column":59},"end":{"line":104,"column":59}}]},"4":{"line":105,"type":"if","locations":[{"start":{"line":105,"column":8},"end":{"line":105,"column":8}},{"start":{"line":105,"column":8},"end":{"line":105,"column":8}}]},"5":{"line":115,"type":"if","locations":[{"start":{"line":115,"column":51},"end":{"line":115,"column":51}},{"start":{"line":115,"column":51},"end":{"line":115,"column":51}}]},"6":{"line":116,"type":"if","locations":[{"start":{"line":116,"column":8},"end":{"line":116,"column":8}},{"start":{"line":116,"column":8},"end":{"line":116,"column":8}}]},"7":{"line":128,"type":"if","locations":[{"start":{"line":128,"column":13},"end":{"line":128,"column":13}},{"start":{"line":128,"column":13},"end":{"line":128,"column":13}}]},"8":{"line":138,"type":"if","locations":[{"start":{"line":138,"column":13},"end":{"line":138,"column":13}},{"start":{"line":138,"column":13},"end":{"line":138,"column":13}}]},"9":{"line":148,"type":"if","locations":[{"start":{"line":148,"column":13},"end":{"line":148,"column":13}},{"start":{"line":148,"column":13},"end":{"line":148,"column":13}}]},"10":{"line":158,"type":"if","locations":[{"start":{"line":158,"column":13},"end":{"line":158,"column":13}},{"start":{"line":158,"column":13},"end":{"line":158,"column":13}}]},"11":{"line":171,"type":"if","locations":[{"start":{"line":171,"column":13},"end":{"line":171,"column":13}},{"start":{"line":171,"column":13},"end":{"line":171,"column":13}}]},"12":{"line":181,"type":"if","locations":[{"start":{"line":181,"column":13},"end":{"line":181,"column":13}},{"start":{"line":181,"column":13},"end":{"line":181,"column":13}}]},"13":{"line":191,"type":"if","locations":[{"start":{"line":191,"column":13},"end":{"line":191,"column":13}},{"start":{"line":191,"column":13},"end":{"line":191,"column":13}}]},"14":{"line":204,"type":"if","locations":[{"start":{"line":204,"column":13},"end":{"line":204,"column":13}},{"start":{"line":204,"column":13},"end":{"line":204,"column":13}}]},"15":{"line":217,"type":"if","locations":[{"start":{"line":217,"column":13},"end":{"line":217,"column":13}},{"start":{"line":217,"column":13},"end":{"line":217,"column":13}}]},"16":{"line":227,"type":"if","locations":[{"start":{"line":227,"column":13},"end":{"line":227,"column":13}},{"start":{"line":227,"column":13},"end":{"line":227,"column":13}}]}}},
+"contracts/modules/wrapper/extensions/ERC20SnapshotModule.sol":{"l":{"30":176,"41":16,"53":38,"64":18,"74":16},"path":"/home/ryan/Downloads/CM/CMTAT/contracts/modules/wrapper/extensions/ERC20SnapshotModule.sol","s":{"1":176,"2":16,"3":38,"4":18,"5":16},"b":{"1":[384,0],"2":[176,4],"3":[16,4],"4":[38,4],"5":[18,4],"6":[16,4]},"f":{"1":384,"2":176,"3":16,"4":38,"5":18,"6":16},"fnMap":{"1":{"name":"__ERC20SnasphotModule_init_unchained","line":20,"loc":{"start":{"line":20,"column":4},"end":{"line":22,"column":4}}},"2":{"name":"scheduleSnapshot","line":29,"loc":{"start":{"line":29,"column":4},"end":{"line":31,"column":4}}},"3":{"name":"scheduleSnapshotNotOptimized","line":40,"loc":{"start":{"line":38,"column":4},"end":{"line":42,"column":4}}},"4":{"name":"rescheduleSnapshot","line":52,"loc":{"start":{"line":49,"column":4},"end":{"line":54,"column":4}}},"5":{"name":"unscheduleLastSnapshot","line":63,"loc":{"start":{"line":61,"column":4},"end":{"line":65,"column":4}}},"6":{"name":"unscheduleSnapshotNotOptimized","line":73,"loc":{"start":{"line":71,"column":4},"end":{"line":75,"column":4}}}},"statementMap":{"1":{"start":{"line":30,"column":8},"end":{"line":30,"column":30}},"2":{"start":{"line":41,"column":8},"end":{"line":41,"column":42}},"3":{"start":{"line":53,"column":8},"end":{"line":53,"column":44}},"4":{"start":{"line":64,"column":8},"end":{"line":64,"column":36}},"5":{"start":{"line":74,"column":8},"end":{"line":74,"column":44}}},"branchMap":{"1":{"line":20,"type":"if","locations":[{"start":{"line":20,"column":61},"end":{"line":20,"column":61}},{"start":{"line":20,"column":61},"end":{"line":20,"column":61}}]},"2":{"line":29,"type":"if","locations":[{"start":{"line":29,"column":51},"end":{"line":29,"column":51}},{"start":{"line":29,"column":51},"end":{"line":29,"column":51}}]},"3":{"line":40,"type":"if","locations":[{"start":{"line":40,"column":13},"end":{"line":40,"column":13}},{"start":{"line":40,"column":13},"end":{"line":40,"column":13}}]},"4":{"line":52,"type":"if","locations":[{"start":{"line":52,"column":13},"end":{"line":52,"column":13}},{"start":{"line":52,"column":13},"end":{"line":52,"column":13}}]},"5":{"line":63,"type":"if","locations":[{"start":{"line":63,"column":13},"end":{"line":63,"column":13}},{"start":{"line":63,"column":13},"end":{"line":63,"column":13}}]},"6":{"line":73,"type":"if","locations":[{"start":{"line":73,"column":13},"end":{"line":73,"column":13}},{"start":{"line":73,"column":13},"end":{"line":73,"column":13}}]}}},
+"contracts/modules/wrapper/extensions/MetaTxModule.sol":{"l":{},"path":"/home/ryan/Downloads/CM/CMTAT/contracts/modules/wrapper/extensions/MetaTxModule.sol","s":{},"b":{},"f":{"1":204},"fnMap":{"1":{"name":"constructor","line":18,"loc":{"start":{"line":16,"column":4},"end":{"line":20,"column":4}}}},"statementMap":{},"branchMap":{}},
"contracts/test/proxy/CMTAT_PROXY.sol":{"l":{},"path":"/home/ryan/Downloads/CM/CMTAT/contracts/test/proxy/CMTAT_PROXY.sol","s":{},"b":{},"f":{"1":1},"fnMap":{"1":{"name":"constructor","line":18,"loc":{"start":{"line":16,"column":4},"end":{"line":20,"column":4}}}},"statementMap":{},"branchMap":{}}}
diff --git a/doc/general/test/coverage/index.html b/doc/general/test/coverage/index.html
index f0b6357e..b4ae6e63 100644
--- a/doc/general/test/coverage/index.html
+++ b/doc/general/test/coverage/index.html
@@ -20,24 +20,24 @@
- 99.65%
+ 99.66%
Statements
- 285/286
+ 291/292
- 92.86%
+ 93.1%
Branches
- 260/280
+ 270/290
- 99.12%
+ 99.13%
Functions
- 113/114
+ 114/115
- 99.48%
+ 99.49%
Lines
- 386/388
+ 388/390
@@ -75,13 +75,13 @@
contracts/deployment/
100%
- 13/13
+ 18/18
100%
- 4/4
+ 14/14
100%
7/7
100%
- 21/21
+ 31/31
@@ -153,13 +153,13 @@
contracts/modules/internal/
100%
- 30/30
+ 31/31
85%
17/20
100%
- 17/17
+ 18/18
100%
- 38/38
+ 42/42
@@ -172,7 +172,7 @@
100%
14/14
100%
- 108/108
+ 102/102
@@ -211,7 +211,7 @@
100%
25/25
100%
- 74/74
+ 68/68
@@ -259,7 +259,7 @@
diff --git a/doc/general/test/coverage/lcov-report/contracts/CMTAT_PROXY.sol.html b/doc/general/test/coverage/lcov-report/contracts/CMTAT_PROXY.sol.html
index ff47c5ca..1f6a919f 100644
--- a/doc/general/test/coverage/lcov-report/contracts/CMTAT_PROXY.sol.html
+++ b/doc/general/test/coverage/lcov-report/contracts/CMTAT_PROXY.sol.html
@@ -80,7 +80,7 @@
-10×
+15×
@@ -112,7 +112,7 @@
diff --git a/doc/general/test/coverage/lcov-report/contracts/CMTAT_STANDALONE.sol.html b/doc/general/test/coverage/lcov-report/contracts/CMTAT_STANDALONE.sol.html
index 29e13247..9c1ded84 100644
--- a/doc/general/test/coverage/lcov-report/contracts/CMTAT_STANDALONE.sol.html
+++ b/doc/general/test/coverage/lcov-report/contracts/CMTAT_STANDALONE.sol.html
@@ -208,7 +208,7 @@
diff --git a/doc/general/test/coverage/lcov-report/contracts/deployment/CMTAT_BEACON_FACTORY.sol.html b/doc/general/test/coverage/lcov-report/contracts/deployment/CMTAT_BEACON_FACTORY.sol.html
index b37a7f2a..92433794 100644
--- a/doc/general/test/coverage/lcov-report/contracts/deployment/CMTAT_BEACON_FACTORY.sol.html
+++ b/doc/general/test/coverage/lcov-report/contracts/deployment/CMTAT_BEACON_FACTORY.sol.html
@@ -22,12 +22,12 @@
100%
Statements
- 7/7
+ 10/10
100%
Branches
- 2/2
+ 8/8
100%
@@ -37,7 +37,7 @@
100%
Lines
- 11/11
+ 17/17
@@ -134,7 +134,17 @@
89
90
91
-92
+92
+93
+94
+95
+96
+97
+98
+99
+100
+101
+102
@@ -165,6 +175,16 @@
+
+9×
+2×
+
+7×
+2×
+
+5×
+2×
+
3×
3×
3×
@@ -225,7 +245,7 @@
1×
- // SPDX-License-Identifier: UNLICENSED
+ //SPDX-License-Identifier: MPL-2.0
pragma solidity ^0.8.20;
import "@openzeppelin/contracts/proxy/beacon/BeaconProxy.sol";
@@ -233,6 +253,7 @@
import '@openzeppelin/contracts/proxy/beacon/UpgradeableBeacon.sol';
import "../CMTAT_PROXY.sol";
import "../modules/CMTAT_BASE.sol";
+import "../libraries/FactoryErrors.sol";
import '@openzeppelin/contracts/access/AccessControl.sol';
/**
@@ -256,6 +277,15 @@
* @param beaconOwner owner
*/
constructor(address implementation_, address factoryAdmin, address beaconOwner) {
+ if(factoryAdmin == address(0)){
+ revert FactoryErrors.CMTAT_Factory_AddressZeroNotAllowedForFactoryAdmin();
+ }
+ if(beaconOwner == address(0)){
+ revert FactoryErrors.CMTAT_Factory_AddressZeroNotAllowedForBeaconOwner();
+ }
+ if(implementation_ == address(0)){
+ revert FactoryErrors.CMTAT_Factory_AddressZeroNotAllowedForLogicContract();
+ }
beacon = new UpgradeableBeacon(implementation_, beaconOwner);
_grantRole(DEFAULT_ADMIN_ROLE, factoryAdmin);
_grantRole(CMTAT_DEPLOYER_ROLE, factoryAdmin);
@@ -322,7 +352,7 @@
diff --git a/doc/general/test/coverage/lcov-report/contracts/deployment/CMTAT_TP_FACTORY.sol.html b/doc/general/test/coverage/lcov-report/contracts/deployment/CMTAT_TP_FACTORY.sol.html
index 72f2fa0c..d87ce0c4 100644
--- a/doc/general/test/coverage/lcov-report/contracts/deployment/CMTAT_TP_FACTORY.sol.html
+++ b/doc/general/test/coverage/lcov-report/contracts/deployment/CMTAT_TP_FACTORY.sol.html
@@ -22,12 +22,12 @@
100%
Statements
- 6/6
+ 8/8
100%
Branches
- 2/2
+ 6/6
100%
@@ -37,7 +37,7 @@
100%
Lines
- 10/10
+ 14/14
@@ -120,7 +120,16 @@
75
76
77
-78
+78
+79
+80
+81
+82
+83
+84
+85
+86
+
@@ -147,6 +156,13 @@
+
+7×
+2×
+
+5×
+2×
+
3×
3×
3×
@@ -197,12 +213,12 @@
1×
- // SPDX-License-Identifier: UNLICENSED
+ //SPDX-License-Identifier: MPL-2.0
pragma solidity ^0.8.20;
-import "@openzeppelin/contracts/proxy/transparent/ProxyAdmin.sol";
import "@openzeppelin/contracts/proxy/transparent/TransparentUpgradeableProxy.sol";
import "../CMTAT_PROXY.sol";
+import "../libraries/FactoryErrors.sol";
import '@openzeppelin/contracts/access/AccessControl.sol';
/**
* @notice Factory to deploy transparent proxy
@@ -218,12 +234,20 @@
bytes32 public constant CMTAT_DEPLOYER_ROLE = keccak256("CMTAT_DEPLOYER_ROLE");
address public immutable logic;
address[] public cmtatsList;
+
+
/**
* @param logic_ contract implementation
* @param factoryAdmin admin
*/
constructor(address logic_, address factoryAdmin) {
+ if(logic_ == address(0)){
+ revert FactoryErrors.CMTAT_Factory_AddressZeroNotAllowedForLogicContract();
+ }
+ if(factoryAdmin == address(0)){
+ revert FactoryErrors.CMTAT_Factory_AddressZeroNotAllowedForFactoryAdmin();
+ }
logic = logic_;
_grantRole(DEFAULT_ADMIN_ROLE, factoryAdmin);
_grantRole(CMTAT_DEPLOYER_ROLE, factoryAdmin);
@@ -280,7 +304,7 @@
diff --git a/doc/general/test/coverage/lcov-report/contracts/deployment/index.html b/doc/general/test/coverage/lcov-report/contracts/deployment/index.html
index ebfe16f5..946d15e3 100644
--- a/doc/general/test/coverage/lcov-report/contracts/deployment/index.html
+++ b/doc/general/test/coverage/lcov-report/contracts/deployment/index.html
@@ -22,12 +22,12 @@
100%
Statements
- 13/13
+ 18/18
100%
Branches
- 4/4
+ 14/14
100%
@@ -37,7 +37,7 @@
100%
Lines
- 21/21
+ 31/31
@@ -62,26 +62,26 @@
CMTAT_BEACON_FACTORY.sol
100%
- 7/7
+ 10/10
100%
- 2/2
+ 8/8
100%
4/4
100%
- 11/11
+ 17/17
CMTAT_TP_FACTORY.sol
100%
- 6/6
+ 8/8
100%
- 2/2
+ 6/6
100%
3/3
100%
- 10/10
+ 14/14
@@ -90,7 +90,7 @@
diff --git a/doc/general/test/coverage/lcov-report/contracts/index.html b/doc/general/test/coverage/lcov-report/contracts/index.html
index 1fbde2bb..65f726b6 100644
--- a/doc/general/test/coverage/lcov-report/contracts/index.html
+++ b/doc/general/test/coverage/lcov-report/contracts/index.html
@@ -90,7 +90,7 @@
diff --git a/doc/general/test/coverage/lcov-report/contracts/interfaces/ICCIPToken.sol.html b/doc/general/test/coverage/lcov-report/contracts/interfaces/ICCIPToken.sol.html
index 0b62b74f..e63184e5 100644
--- a/doc/general/test/coverage/lcov-report/contracts/interfaces/ICCIPToken.sol.html
+++ b/doc/general/test/coverage/lcov-report/contracts/interfaces/ICCIPToken.sol.html
@@ -93,7 +93,7 @@
//SPDX-License-Identifier: MPL-2.0
-pragma solidity ^0.8.0;
+pragma solidity ^0.8.20;
/**
* @notice CCIP Pool with mint
@@ -121,7 +121,7 @@
diff --git a/doc/general/test/coverage/lcov-report/contracts/interfaces/ICMTATSnapshot.sol.html b/doc/general/test/coverage/lcov-report/contracts/interfaces/ICMTATSnapshot.sol.html
index 34c90baf..7c285dc9 100644
--- a/doc/general/test/coverage/lcov-report/contracts/interfaces/ICMTATSnapshot.sol.html
+++ b/doc/general/test/coverage/lcov-report/contracts/interfaces/ICMTATSnapshot.sol.html
@@ -70,7 +70,29 @@
25
26
27
-28
+28
+29
+30
+31
+32
+33
+34
+35
+36
+37
+38
+39
+
+
+
+
+
+
+
+
+
+
+
@@ -99,17 +121,12 @@
//SPDX-License-Identifier: MPL-2.0
-pragma solidity ^0.8.0;
+pragma solidity ^0.8.20;
/**
* @notice interface to represent a CMTAT with snapshot
*/
interface ICMTATSnapshot {
- /**
- * @notice Return snapshotBalanceOf and snapshotTotalSupply to avoid multiple calls
- * @return ownerBalance , totalSupply - see snapshotBalanceOf and snapshotTotalSupply
- */
- function snapshotInfo(uint256 time, address owner) external view returns (uint256 ownerBalance, uint256 totalSupply);
/**
* @notice Return the number of tokens owned by the given owner at the time when the snapshot with the given time was created.
* @return value stored in the snapshot, or the actual balance if no snapshot
@@ -121,8 +138,24 @@
* @return value stored in the snapshot, or the actual totalSupply if no snapshot
*/
function snapshotTotalSupply(uint256 time) external view returns (uint256);
-
+ /**
+ * @notice Return snapshotBalanceOf and snapshotTotalSupply to avoid multiple calls
+ * @return ownerBalance , totalSupply - see snapshotBalanceOf and snapshotTotalSupply
+ */
+ function snapshotInfo(uint256 time, address owner) external view returns (uint256 ownerBalance, uint256 totalSupply);
+ /**
+ * @notice Return snapshotBalanceOf for each address in the array and the total supply
+ * @return ownerBalances array with the balance of each address, the total supply
+ */
function snapshotInfoBatch(uint256 time, address[] calldata addresses) external view returns (uint256[] memory ownerBalances, uint256 totalSupply);
+
+ /**
+ * @notice Return snapshotBalanceOf for each address in the array and the total supply
+ * @return ownerBalances array with the balance of each address, the total supply
+ */
+ function snapshotInfoBatch(uint256[] calldata times, address[] calldata addresses) external view returns (uint256[][] memory ownerBalances, uint256[] memory totalSupply);
+
+
}
@@ -130,7 +163,7 @@
diff --git a/doc/general/test/coverage/lcov-report/contracts/interfaces/IDebtGlobal.sol.html b/doc/general/test/coverage/lcov-report/contracts/interfaces/IDebtGlobal.sol.html
index 663df801..47fcaefb 100644
--- a/doc/general/test/coverage/lcov-report/contracts/interfaces/IDebtGlobal.sol.html
+++ b/doc/general/test/coverage/lcov-report/contracts/interfaces/IDebtGlobal.sol.html
@@ -103,7 +103,7 @@
//SPDX-License-Identifier: MPL-2.0
-pragma solidity ^0.8.0;
+pragma solidity ^0.8.20;
/**
* @notice interface to represent debt tokens
@@ -136,7 +136,7 @@
diff --git a/doc/general/test/coverage/lcov-report/contracts/interfaces/draft-IERC1404/draft-IERC1404.sol.html b/doc/general/test/coverage/lcov-report/contracts/interfaces/draft-IERC1404/draft-IERC1404.sol.html
index ca2921b6..349aeece 100644
--- a/doc/general/test/coverage/lcov-report/contracts/interfaces/draft-IERC1404/draft-IERC1404.sol.html
+++ b/doc/general/test/coverage/lcov-report/contracts/interfaces/draft-IERC1404/draft-IERC1404.sol.html
@@ -97,10 +97,10 @@
//SPDX-License-Identifier: MPL-2.0
-pragma solidity ^0.8.0;
+pragma solidity ^0.8.20;
/*
-@dev Contrary to the ERC-1404, this interface does not inherit from the ERC20 interface
+* @dev Contrary to the ERC-1404, this interface does not inherit from the ERC20 interface
*/
interface IERC1404 {
/**
@@ -127,7 +127,7 @@
diff --git a/doc/general/test/coverage/lcov-report/contracts/interfaces/draft-IERC1404/draft-IERC1404EnumCode.sol.html b/doc/general/test/coverage/lcov-report/contracts/interfaces/draft-IERC1404/draft-IERC1404EnumCode.sol.html
new file mode 100644
index 00000000..e44fda76
--- /dev/null
+++ b/doc/general/test/coverage/lcov-report/contracts/interfaces/draft-IERC1404/draft-IERC1404EnumCode.sol.html
@@ -0,0 +1,110 @@
+
+
+
+ Code coverage report for contracts/interfaces/draft-IERC1404/draft-IERC1404EnumCode.sol
+
+
+
+
+
+
+
+
+
+
+
+
+ 100%
+ Statements
+ 0/0
+
+
+ 100%
+ Branches
+ 0/0
+
+
+ 100%
+ Functions
+ 0/0
+
+
+ 100%
+ Lines
+ 0/0
+
+
+
+
+
+1
+2
+3
+4
+5
+6
+7
+8
+9
+10
+11
+12
+13
+14
+15
+16
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ //SPDX-License-Identifier: MPL-2.0
+
+pragma solidity ^0.8.20;
+
+interface IERC1404EnumCode {
+ /*
+ * @dev leave the code 4-9 free/unused for further additions in your ruleEngine implementation
+ */
+ enum REJECTED_CODE_BASE {
+ TRANSFER_OK,
+ TRANSFER_REJECTED_PAUSED,
+ TRANSFER_REJECTED_FROM_FROZEN,
+ TRANSFER_REJECTED_TO_FROZEN
+ }
+}
+
+
+
+
+
+
+
+
+
+
+
diff --git a/doc/general/test/coverage/lcov-report/contracts/interfaces/draft-IERC1404/draft-IERC1404Wrapper.sol.html b/doc/general/test/coverage/lcov-report/contracts/interfaces/draft-IERC1404/draft-IERC1404Wrapper.sol.html
index 9ebdff15..86c0dea2 100644
--- a/doc/general/test/coverage/lcov-report/contracts/interfaces/draft-IERC1404/draft-IERC1404Wrapper.sol.html
+++ b/doc/general/test/coverage/lcov-report/contracts/interfaces/draft-IERC1404/draft-IERC1404Wrapper.sol.html
@@ -61,23 +61,7 @@
16
17
18
-19
-20
-21
-22
-23
-24
-25
-26
-27
-
-
-
-
-
-
-
-
+19
@@ -97,20 +81,12 @@
//SPDX-License-Identifier: MPL-2.0
-pragma solidity ^0.8.0;
+pragma solidity ^0.8.20;
import "./draft-IERC1404.sol";
+import "./draft-IERC1404EnumCode.sol";
-interface IERC1404Wrapper is IERC1404 {
- /*
- @dev leave the code 4-9 free/unused for further additions in your ruleEngine implementation
- */
- enum REJECTED_CODE_BASE {
- TRANSFER_OK,
- TRANSFER_REJECTED_PAUSED,
- TRANSFER_REJECTED_FROM_FROZEN,
- TRANSFER_REJECTED_TO_FROZEN
- }
+interface IERC1404Wrapper is IERC1404, IERC1404EnumCode {
/**
* @dev Returns true if the transfer is valid, and false otherwise.
@@ -127,7 +103,7 @@
diff --git a/doc/general/test/coverage/lcov-report/contracts/interfaces/draft-IERC1404/index.html b/doc/general/test/coverage/lcov-report/contracts/interfaces/draft-IERC1404/index.html
index 63ea4ba7..d1570445 100644
--- a/doc/general/test/coverage/lcov-report/contracts/interfaces/draft-IERC1404/index.html
+++ b/doc/general/test/coverage/lcov-report/contracts/interfaces/draft-IERC1404/index.html
@@ -71,6 +71,19 @@
0/0
+
+ draft-IERC1404EnumCode.sol
+
+ 100%
+ 0/0
+ 100%
+ 0/0
+ 100%
+ 0/0
+ 100%
+ 0/0
+
+
draft-IERC1404Wrapper.sol
@@ -90,7 +103,7 @@
diff --git a/doc/general/test/coverage/lcov-report/contracts/interfaces/engine/IAuthorizationEngine.sol.html b/doc/general/test/coverage/lcov-report/contracts/interfaces/engine/IAuthorizationEngine.sol.html
index b045ca87..efafbc17 100644
--- a/doc/general/test/coverage/lcov-report/contracts/interfaces/engine/IAuthorizationEngine.sol.html
+++ b/doc/general/test/coverage/lcov-report/contracts/interfaces/engine/IAuthorizationEngine.sol.html
@@ -85,7 +85,7 @@
// SPDX-License-Identifier: MPL-2.0
-pragma solidity ^0.8.0;
+pragma solidity ^0.8.20;
interface IAuthorizationEngine {
/**
@@ -109,7 +109,7 @@
diff --git a/doc/general/test/coverage/lcov-report/contracts/interfaces/engine/IRuleEngine.sol.html b/doc/general/test/coverage/lcov-report/contracts/interfaces/engine/IRuleEngine.sol.html
index fc3ec454..1bc8a4d2 100644
--- a/doc/general/test/coverage/lcov-report/contracts/interfaces/engine/IRuleEngine.sol.html
+++ b/doc/general/test/coverage/lcov-report/contracts/interfaces/engine/IRuleEngine.sol.html
@@ -79,7 +79,7 @@
// SPDX-License-Identifier: MPL-2.0
-pragma solidity ^0.8.0;
+pragma solidity ^0.8.20;
import "../draft-IERC1404/draft-IERC1404Wrapper.sol";
@@ -100,7 +100,7 @@
diff --git a/doc/general/test/coverage/lcov-report/contracts/interfaces/engine/index.html b/doc/general/test/coverage/lcov-report/contracts/interfaces/engine/index.html
index daba08c1..38389bf0 100644
--- a/doc/general/test/coverage/lcov-report/contracts/interfaces/engine/index.html
+++ b/doc/general/test/coverage/lcov-report/contracts/interfaces/engine/index.html
@@ -90,7 +90,7 @@
diff --git a/doc/general/test/coverage/lcov-report/contracts/interfaces/index.html b/doc/general/test/coverage/lcov-report/contracts/interfaces/index.html
index 815c8395..0eabfb3c 100644
--- a/doc/general/test/coverage/lcov-report/contracts/interfaces/index.html
+++ b/doc/general/test/coverage/lcov-report/contracts/interfaces/index.html
@@ -103,7 +103,7 @@
diff --git a/doc/general/test/coverage/lcov-report/contracts/libraries/Errors.sol.html b/doc/general/test/coverage/lcov-report/contracts/libraries/Errors.sol.html
index 574b275e..e6ba0ed7 100644
--- a/doc/general/test/coverage/lcov-report/contracts/libraries/Errors.sol.html
+++ b/doc/general/test/coverage/lcov-report/contracts/libraries/Errors.sol.html
@@ -247,7 +247,7 @@
diff --git a/doc/general/test/coverage/lcov-report/contracts/libraries/FactoryErrors.sol.html b/doc/general/test/coverage/lcov-report/contracts/libraries/FactoryErrors.sol.html
new file mode 100644
index 00000000..053c177f
--- /dev/null
+++ b/doc/general/test/coverage/lcov-report/contracts/libraries/FactoryErrors.sol.html
@@ -0,0 +1,92 @@
+
+
+
+ Code coverage report for contracts/libraries/FactoryErrors.sol
+
+
+
+
+
+
+
+
+
+
+
+
+ 100%
+ Statements
+ 0/0
+
+
+ 100%
+ Branches
+ 0/0
+
+
+ 100%
+ Functions
+ 0/0
+
+
+ 100%
+ Lines
+ 0/0
+
+
+
+
+
+1
+2
+3
+4
+5
+6
+7
+8
+9
+10
+
+
+
+
+
+
+
+
+ //SPDX-License-Identifier: MPL-2.0
+
+pragma solidity ^0.8.20;
+
+library FactoryErrors {
+ error CMTAT_Factory_AddressZeroNotAllowedForFactoryAdmin();
+ error CMTAT_Factory_AddressZeroNotAllowedForBeaconOwner();
+ error CMTAT_Factory_AddressZeroNotAllowedForLogicContract();
+}
+
+
+
+
+
+
+
+
+
+
+
diff --git a/doc/general/test/coverage/lcov-report/contracts/libraries/index.html b/doc/general/test/coverage/lcov-report/contracts/libraries/index.html
index fc0eb653..6f5a0847 100644
--- a/doc/general/test/coverage/lcov-report/contracts/libraries/index.html
+++ b/doc/general/test/coverage/lcov-report/contracts/libraries/index.html
@@ -71,13 +71,26 @@
0/0
+
+ FactoryErrors.sol
+
+ 100%
+ 0/0
+ 100%
+ 0/0
+ 100%
+ 0/0
+ 100%
+ 0/0
+
+
diff --git a/doc/general/test/coverage/lcov-report/contracts/modules/CMTAT_BASE.sol.html b/doc/general/test/coverage/lcov-report/contracts/modules/CMTAT_BASE.sol.html
index 60561b71..e6372f2e 100644
--- a/doc/general/test/coverage/lcov-report/contracts/modules/CMTAT_BASE.sol.html
+++ b/doc/general/test/coverage/lcov-report/contracts/modules/CMTAT_BASE.sol.html
@@ -799,7 +799,7 @@
diff --git a/doc/general/test/coverage/lcov-report/contracts/modules/index.html b/doc/general/test/coverage/lcov-report/contracts/modules/index.html
index 7e219b42..a21c1a14 100644
--- a/doc/general/test/coverage/lcov-report/contracts/modules/index.html
+++ b/doc/general/test/coverage/lcov-report/contracts/modules/index.html
@@ -77,7 +77,7 @@
diff --git a/doc/general/test/coverage/lcov-report/contracts/modules/internal/ERC20SnapshotModuleInternal.sol.html b/doc/general/test/coverage/lcov-report/contracts/modules/internal/ERC20SnapshotModuleInternal.sol.html
index e350cd02..62c41c3d 100644
--- a/doc/general/test/coverage/lcov-report/contracts/modules/internal/ERC20SnapshotModuleInternal.sol.html
+++ b/doc/general/test/coverage/lcov-report/contracts/modules/internal/ERC20SnapshotModuleInternal.sol.html
@@ -22,7 +22,7 @@
100%
Statements
- 15/15
+ 16/16
90%
@@ -32,12 +32,12 @@
100%
Functions
- 8/8
+ 9/9
100%
Lines
- 20/20
+ 24/24
@@ -172,7 +172,19 @@
127
128
129
-130
+130
+131
+132
+133
+134
+135
+136
+137
+138
+139
+140
+141
+142
@@ -208,23 +220,34 @@
+480×
+480×
-480×
+
+
+160×
+160×
480×
+160×
+
+80×
80×
80×
-240×
+
+
+
+
80×
@@ -237,12 +260,13 @@
-960×
+
+1200×
-960×
+1200×
@@ -251,11 +275,11 @@
-640×
+720×
-640×
+720×
@@ -305,13 +329,8 @@
pragma solidity ^0.8.20;
-import "../../../openzeppelin-contracts-upgradeable/contracts/utils/ContextUpgradeable.sol";
-import "../../../openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol";
import "../../../openzeppelin-contracts-upgradeable/contracts/token/ERC20/ERC20Upgradeable.sol";
import {Arrays} from '@openzeppelin/contracts/utils/Arrays.sol';
-
-import "../../libraries/Errors.sol";
-import "../../interfaces/ICMTATSnapshot.sol";
import "./base/SnapshotModuleBase.sol";
/**
* @dev Snapshot module internal.
@@ -347,7 +366,7 @@
}
/**
- * @notice Return snapshotBalanceOf for each address in an array and the total supply
+ * @notice Return snapshotBalanceOf for each address in the array and the total supply
* @return ownerBalances array with the balance of each address, the total supply
*/
function snapshotInfoBatch(uint256 time, address[] calldata addresses) public view returns (uint256[] memory ownerBalances, uint256 totalSupply) {
@@ -357,6 +376,23 @@
}
totalSupply = snapshotTotalSupply(time);
}
+
+ /**
+ * @notice Return snapshotBalanceOf for each address in the array and the total supply
+ * @return ownerBalances array with the balance of each address, the total supply
+ */
+ function snapshotInfoBatch(uint256[] calldata times, address[] calldata addresses) public view returns (uint256[][] memory ownerBalances, uint256[] memory totalSupply) {
+ ownerBalances = new uint256[][](times.length);
+ totalSupply = new uint256[](times.length);
+ for(uint256 iT = 0; iT < times.length; ++iT){
+ /*ownerBalances[iT] = new uint256[](addresses.length);
+ for(uint256 jA = 0; jA < addresses.length; ++jA){
+ ownerBalances[iT][jA] = snapshotBalanceOf(times[iT], addresses[jA]);
+ }
+ totalSupply[iT] = snapshotTotalSupply(times[iT]);*/
+ (ownerBalances[iT], totalSupply[iT]) = snapshotInfoBatch(times[iT],addresses);
+ }
+ }
/**
* @notice Return the number of tokens owned by the given owner at the time when the snapshot with the given time was created.
@@ -436,7 +472,7 @@
diff --git a/doc/general/test/coverage/lcov-report/contracts/modules/internal/EnforcementModuleInternal.sol.html b/doc/general/test/coverage/lcov-report/contracts/modules/internal/EnforcementModuleInternal.sol.html
index 704ff82a..76be6850 100644
--- a/doc/general/test/coverage/lcov-report/contracts/modules/internal/EnforcementModuleInternal.sol.html
+++ b/doc/general/test/coverage/lcov-report/contracts/modules/internal/EnforcementModuleInternal.sol.html
@@ -313,7 +313,7 @@
diff --git a/doc/general/test/coverage/lcov-report/contracts/modules/internal/ValidationModuleInternal.sol.html b/doc/general/test/coverage/lcov-report/contracts/modules/internal/ValidationModuleInternal.sol.html
index d018890c..10dac068 100644
--- a/doc/general/test/coverage/lcov-report/contracts/modules/internal/ValidationModuleInternal.sol.html
+++ b/doc/general/test/coverage/lcov-report/contracts/modules/internal/ValidationModuleInternal.sol.html
@@ -112,9 +112,7 @@
67
68
69
-70
-71
-
+70
@@ -189,7 +187,6 @@
import "../../../openzeppelin-contracts-upgradeable/contracts/utils/ContextUpgradeable.sol";
import "../../../openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol";
-import "../../interfaces/draft-IERC1404/draft-IERC1404Wrapper.sol";
import "../../interfaces/engine/IRuleEngine.sol";
/**
* @dev Validation module.
@@ -259,7 +256,7 @@
diff --git a/doc/general/test/coverage/lcov-report/contracts/modules/internal/base/SnapshotModuleBase.sol.html b/doc/general/test/coverage/lcov-report/contracts/modules/internal/base/SnapshotModuleBase.sol.html
index 1fab691f..dff594d5 100644
--- a/doc/general/test/coverage/lcov-report/contracts/modules/internal/base/SnapshotModuleBase.sol.html
+++ b/doc/general/test/coverage/lcov-report/contracts/modules/internal/base/SnapshotModuleBase.sol.html
@@ -37,7 +37,7 @@
100%
Lines
- 108/108
+ 102/102
@@ -448,13 +448,7 @@
403
404
405
-406
-407
-408
-409
-410
-411
-412
+406
@@ -554,13 +548,11 @@
8×
+
8×
12×
-12×
-12×
-
@@ -713,11 +705,9 @@
12×
4×
+
8×
16×
-16×
-16×
-
8×
@@ -747,12 +737,12 @@
-1600×
+1920×
-1600×
-1248×
+1920×
+1484×
-352×
+436×
@@ -848,6 +838,7 @@
86×
86×
+
86×
116×
52×
@@ -856,9 +847,6 @@
64×
-52×
-52×
-
86×
@@ -965,13 +953,11 @@
indexLowerBound -
1;
nextScheduledSnapshot = new uint256[](arraySize);
- for (uint256 i; i < arraySize; ) {
+ // No need of unchecked block since Soliditiy 0.8.22
+ for (uint256 i; i < arraySize; ++i) {
nextScheduledSnapshot[i] = _scheduledSnapshots[
indexLowerBound + 1 + i
];
- unchecked {
- ++i;
- }
}
}
}
@@ -1124,11 +1110,9 @@
if (!isFound) {
revert Errors.CMTAT_SnapshotModule_SnapshotNotFound();
}
- for (uint256 i = index; i + 1 < _scheduledSnapshots.length; ) {
+ // No need of unchecked block since Soliditiy 0.8.22
+ for (uint256 i = index; i + 1 < _scheduledSnapshots.length; ++i ) {
_scheduledSnapshots[i] = _scheduledSnapshots[i + 1];
- unchecked {
- ++i;
- }
}
_scheduledSnapshots.pop();
}
@@ -1259,7 +1243,8 @@
// mostRecent is initialized in the loop
uint256 mostRecent;
index = currentArraySize;
- for (uint256 i = _currentSnapshotIndex; i < currentArraySize; ) {
+ // No need of unchecked block since Soliditiy 0.8.22
+ for (uint256 i = _currentSnapshotIndex; i < currentArraySize; ++i ) {
if (_scheduledSnapshots[i] <= block.timestamp) {
mostRecent = _scheduledSnapshots[i];
index = i;
@@ -1267,9 +1252,6 @@
// All snapshot are planned in the futur
break;
}
- unchecked {
- ++i;
- }
}
return (mostRecent, index);
}
@@ -1282,7 +1264,7 @@
diff --git a/doc/general/test/coverage/lcov-report/contracts/modules/internal/base/index.html b/doc/general/test/coverage/lcov-report/contracts/modules/internal/base/index.html
index b765f516..2d1fa4db 100644
--- a/doc/general/test/coverage/lcov-report/contracts/modules/internal/base/index.html
+++ b/doc/general/test/coverage/lcov-report/contracts/modules/internal/base/index.html
@@ -37,7 +37,7 @@
100%
Lines
- 108/108
+ 102/102
@@ -68,7 +68,7 @@
100%
14/14
100%
- 108/108
+ 102/102
@@ -77,7 +77,7 @@
diff --git a/doc/general/test/coverage/lcov-report/contracts/modules/internal/index.html b/doc/general/test/coverage/lcov-report/contracts/modules/internal/index.html
index 420d138d..94760538 100644
--- a/doc/general/test/coverage/lcov-report/contracts/modules/internal/index.html
+++ b/doc/general/test/coverage/lcov-report/contracts/modules/internal/index.html
@@ -22,7 +22,7 @@
100%
Statements
- 30/30
+ 31/31
85%
@@ -32,12 +32,12 @@
100%
Functions
- 17/17
+ 18/18
100%
Lines
- 38/38
+ 42/42
@@ -62,13 +62,13 @@
ERC20SnapshotModuleInternal.sol
100%
- 15/15
+ 16/16
90%
9/10
100%
- 8/8
+ 9/9
100%
- 20/20
+ 24/24
@@ -103,7 +103,7 @@
diff --git a/doc/general/test/coverage/lcov-report/contracts/modules/security/AuthorizationModule.sol.html b/doc/general/test/coverage/lcov-report/contracts/modules/security/AuthorizationModule.sol.html
index 130b2aae..81024f87 100644
--- a/doc/general/test/coverage/lcov-report/contracts/modules/security/AuthorizationModule.sol.html
+++ b/doc/general/test/coverage/lcov-report/contracts/modules/security/AuthorizationModule.sol.html
@@ -129,43 +129,7 @@
84
85
86
-87
-88
-89
-90
-91
-92
-93
-94
-95
-96
-97
-98
-99
-100
-101
-102
-103
-104
-105
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+87
@@ -256,33 +220,15 @@
pragma solidity ^0.8.20;
import "../../../openzeppelin-contracts-upgradeable/contracts/access/AccessControlUpgradeable.sol";
-import "../../../openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol";
-
import "../../libraries/Errors.sol";
import "../../interfaces/engine/IAuthorizationEngine.sol";
+
abstract contract AuthorizationModule is AccessControlUpgradeable {
IAuthorizationEngine private authorizationEngine;
/**
* @dev Emitted when a rule engine is set.
*/
event AuthorizationEngine(IAuthorizationEngine indexed newAuthorizationEngine);
- // BurnModule
- bytes32 public constant BURNER_ROLE = keccak256("BURNER_ROLE");
- bytes32 public constant BURNER_FROM_ROLE = keccak256("BURNER_FROM_ROLE");
- // CreditEvents
- bytes32 public constant DEBT_CREDIT_EVENT_ROLE =
- keccak256("DEBT_CREDIT_EVENT_ROLE");
- // DebtModule
- bytes32 public constant DEBT_ROLE = keccak256("DEBT_ROLE");
- // EnforcementModule
- bytes32 public constant ENFORCER_ROLE = keccak256("ENFORCER_ROLE");
- // MintModule
- bytes32 public constant MINTER_ROLE = keccak256("MINTER_ROLE");
- // PauseModule
- bytes32 public constant PAUSER_ROLE = keccak256("PAUSER_ROLE");
- // SnapshotModule
- bytes32 public constant SNAPSHOOTER_ROLE = keccak256("SNAPSHOOTER_ROLE");
-
/**
* @dev
*
@@ -361,7 +307,7 @@
diff --git a/doc/general/test/coverage/lcov-report/contracts/modules/security/index.html b/doc/general/test/coverage/lcov-report/contracts/modules/security/index.html
index fb7160c2..f33d7151 100644
--- a/doc/general/test/coverage/lcov-report/contracts/modules/security/index.html
+++ b/doc/general/test/coverage/lcov-report/contracts/modules/security/index.html
@@ -77,7 +77,7 @@
diff --git a/doc/general/test/coverage/lcov-report/contracts/modules/wrapper/controllers/ValidationModule.sol.html b/doc/general/test/coverage/lcov-report/contracts/modules/wrapper/controllers/ValidationModule.sol.html
index ab31fed8..3d62462e 100644
--- a/doc/general/test/coverage/lcov-report/contracts/modules/wrapper/controllers/ValidationModule.sol.html
+++ b/doc/general/test/coverage/lcov-report/contracts/modules/wrapper/controllers/ValidationModule.sol.html
@@ -180,9 +180,7 @@
135
136
137
-138
-139
-
+138
@@ -323,7 +321,6 @@
pragma solidity ^0.8.20;
-import "../../../../openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol";
import "../../security/AuthorizationModule.sol";
import "../../internal/ValidationModuleInternal.sol";
import "../core/PauseModule.sol";
@@ -463,7 +460,7 @@
diff --git a/doc/general/test/coverage/lcov-report/contracts/modules/wrapper/controllers/index.html b/doc/general/test/coverage/lcov-report/contracts/modules/wrapper/controllers/index.html
index 6d378fd7..a6acad6f 100644
--- a/doc/general/test/coverage/lcov-report/contracts/modules/wrapper/controllers/index.html
+++ b/doc/general/test/coverage/lcov-report/contracts/modules/wrapper/controllers/index.html
@@ -77,7 +77,7 @@
diff --git a/doc/general/test/coverage/lcov-report/contracts/modules/wrapper/core/BaseModule.sol.html b/doc/general/test/coverage/lcov-report/contracts/modules/wrapper/core/BaseModule.sol.html
index 9a406bd6..3bc3b0e3 100644
--- a/doc/general/test/coverage/lcov-report/contracts/modules/wrapper/core/BaseModule.sol.html
+++ b/doc/general/test/coverage/lcov-report/contracts/modules/wrapper/core/BaseModule.sol.html
@@ -138,9 +138,7 @@
93
94
95
-96
-97
-
+96
@@ -240,7 +238,6 @@
pragma solidity ^0.8.20;
// required OZ imports here
-import "../../../../openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol";
import "../../security/AuthorizationModule.sol";
import "../../../libraries/Errors.sol";
@@ -337,7 +334,7 @@
diff --git a/doc/general/test/coverage/lcov-report/contracts/modules/wrapper/core/ERC20BaseModule.sol.html b/doc/general/test/coverage/lcov-report/contracts/modules/wrapper/core/ERC20BaseModule.sol.html
index b1e2b157..34b30b36 100644
--- a/doc/general/test/coverage/lcov-report/contracts/modules/wrapper/core/ERC20BaseModule.sol.html
+++ b/doc/general/test/coverage/lcov-report/contracts/modules/wrapper/core/ERC20BaseModule.sol.html
@@ -37,7 +37,7 @@
100%
Lines
- 19/19
+ 17/17
@@ -157,12 +157,7 @@
112
113
114
-115
-116
-117
-118
-119
-
+115
@@ -234,9 +229,6 @@
14×
-10×
-10×
-
@@ -284,7 +276,6 @@
pragma solidity ^0.8.20;
// required OZ imports here
-import "../../../../openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol";
import "../../../../openzeppelin-contracts-upgradeable/contracts/token/ERC20/ERC20Upgradeable.sol";
import "../../../libraries/Errors.sol";
@@ -347,14 +338,11 @@
if (bool(tos.length != values.length)) {
revert Errors.CMTAT_ERC20BaseModule_TosValueslengthMismatch();
}
-
- for (uint256 i = 0; i < tos.length; ) {
+ // No need of unchecked block since Soliditiy 0.8.22
+ for (uint256 i = 0; i < tos.length; ++i) {
// We call directly the internal function transfer
// The reason is that the public function adds only the owner address recovery
ERC20Upgradeable._transfer(_msgSender(), tos[i], values[i]);
- unchecked {
- ++i;
- }
}
// not really useful
// Here only to keep the same behaviour as transfer
@@ -403,7 +391,7 @@
diff --git a/doc/general/test/coverage/lcov-report/contracts/modules/wrapper/core/ERC20BurnModule.sol.html b/doc/general/test/coverage/lcov-report/contracts/modules/wrapper/core/ERC20BurnModule.sol.html
index c34fba8e..b01c2741 100644
--- a/doc/general/test/coverage/lcov-report/contracts/modules/wrapper/core/ERC20BurnModule.sol.html
+++ b/doc/general/test/coverage/lcov-report/contracts/modules/wrapper/core/ERC20BurnModule.sol.html
@@ -37,7 +37,7 @@
100%
Lines
- 20/20
+ 18/18
@@ -157,9 +157,8 @@
112
113
114
-115
-116
-117
+115
+
@@ -230,9 +229,6 @@
8×
24×
20×
-20×
-20×
-
@@ -280,10 +276,11 @@
pragma solidity ^0.8.20;
import "../../../../openzeppelin-contracts-upgradeable/contracts/token/ERC20/ERC20Upgradeable.sol";
-import "../../../../openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol";
import "../../security/AuthorizationModule.sol";
import "../../../interfaces/ICCIPToken.sol";
abstract contract ERC20BurnModule is ERC20Upgradeable, ICCIPBurnFromERC20, AuthorizationModule {
+ bytes32 public constant BURNER_ROLE = keccak256("BURNER_ROLE");
+ bytes32 public constant BURNER_FROM_ROLE = keccak256("BURNER_FROM_ROLE");
/**
* @notice Emitted when the specified `value` amount of tokens owned by `owner`are destroyed with the given `reason`
*/
@@ -342,13 +339,10 @@
if (bool(accounts.length != values.length)) {
revert Errors.CMTAT_BurnModule_AccountsValueslengthMismatch();
}
-
- for (uint256 i = 0; i < accounts.length; ) {
+ // No need of unchecked block since Soliditiy 0.8.22
+ for (uint256 i = 0; i < accounts.length; ++i ) {
_burn(accounts[i], values[i]);
emit Burn(accounts[i], values[i], reason);
- unchecked {
- ++i;
- }
}
}
@@ -397,7 +391,7 @@
diff --git a/doc/general/test/coverage/lcov-report/contracts/modules/wrapper/core/ERC20MintModule.sol.html b/doc/general/test/coverage/lcov-report/contracts/modules/wrapper/core/ERC20MintModule.sol.html
index 1398d9f1..f077c4e3 100644
--- a/doc/general/test/coverage/lcov-report/contracts/modules/wrapper/core/ERC20MintModule.sol.html
+++ b/doc/general/test/coverage/lcov-report/contracts/modules/wrapper/core/ERC20MintModule.sol.html
@@ -37,7 +37,7 @@
100%
Lines
- 11/11
+ 9/9
@@ -117,9 +117,8 @@
72
73
74
-75
-76
-77
+75
+
@@ -187,9 +186,6 @@
18×
54×
54×
-54×
-54×
-
@@ -200,10 +196,11 @@
pragma solidity ^0.8.20;
import "../../../../openzeppelin-contracts-upgradeable/contracts/token/ERC20/ERC20Upgradeable.sol";
-import "../../../../openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol";
import "../../security/AuthorizationModule.sol";
import "../../../interfaces/ICCIPToken.sol";
abstract contract ERC20MintModule is ERC20Upgradeable, ICCIPMintERC20, AuthorizationModule {
+ // MintModule
+ bytes32 public constant MINTER_ROLE = keccak256("MINTER_ROLE");
/**
* @notice Emitted when the specified `value` amount of new tokens are created and
* allocated to the specified `account`.
@@ -259,13 +256,10 @@
if (bool(accounts.length != values.length)) {
revert Errors.CMTAT_MintModule_AccountsValueslengthMismatch();
}
-
- for (uint256 i = 0; i < accounts.length; ) {
+ // No need of unchecked block since Soliditiy 0.8.22
+ for (uint256 i = 0; i < accounts.length; ++i ) {
_mint(accounts[i], values[i]);
emit Mint(accounts[i], values[i]);
- unchecked {
- ++i;
- }
}
}
@@ -277,7 +271,7 @@
diff --git a/doc/general/test/coverage/lcov-report/contracts/modules/wrapper/core/EnforcementModule.sol.html b/doc/general/test/coverage/lcov-report/contracts/modules/wrapper/core/EnforcementModule.sol.html
index 04c7c7fa..d0f53140 100644
--- a/doc/general/test/coverage/lcov-report/contracts/modules/wrapper/core/EnforcementModule.sol.html
+++ b/doc/general/test/coverage/lcov-report/contracts/modules/wrapper/core/EnforcementModule.sol.html
@@ -97,7 +97,11 @@
52
53
54
-55
+55
+56
+57
+
+
@@ -167,6 +171,8 @@
EnforcementModuleInternal,
AuthorizationModule
{
+ // EnforcementModule
+ bytes32 public constant ENFORCER_ROLE = keccak256("ENFORCER_ROLE");
string internal constant TEXT_TRANSFER_REJECTED_FROM_FROZEN =
"Address FROM is frozen";
@@ -211,7 +217,7 @@
diff --git a/doc/general/test/coverage/lcov-report/contracts/modules/wrapper/core/PauseModule.sol.html b/doc/general/test/coverage/lcov-report/contracts/modules/wrapper/core/PauseModule.sol.html
index a9f614b3..5d2f5fd8 100644
--- a/doc/general/test/coverage/lcov-report/contracts/modules/wrapper/core/PauseModule.sol.html
+++ b/doc/general/test/coverage/lcov-report/contracts/modules/wrapper/core/PauseModule.sol.html
@@ -126,7 +126,9 @@
81
82
83
-84
+84
+85
+
@@ -214,7 +216,6 @@
pragma solidity ^0.8.20;
import "../../../../openzeppelin-contracts-upgradeable/contracts/utils/PausableUpgradeable.sol";
-import "../../../../openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol";
import "../../security/AuthorizationModule.sol";
/**
@@ -228,6 +229,8 @@
* event of a large bug.
*/
abstract contract PauseModule is PausableUpgradeable, AuthorizationModule {
+ // PauseModule
+ bytes32 public constant PAUSER_ROLE = keccak256("PAUSER_ROLE");
string internal constant TEXT_TRANSFER_REJECTED_PAUSED =
"All transfers paused";
bool private isDeactivated;
@@ -298,7 +301,7 @@
diff --git a/doc/general/test/coverage/lcov-report/contracts/modules/wrapper/core/index.html b/doc/general/test/coverage/lcov-report/contracts/modules/wrapper/core/index.html
index 370d1aa0..a7da88fb 100644
--- a/doc/general/test/coverage/lcov-report/contracts/modules/wrapper/core/index.html
+++ b/doc/general/test/coverage/lcov-report/contracts/modules/wrapper/core/index.html
@@ -37,7 +37,7 @@
100%
Lines
- 74/74
+ 68/68
@@ -81,7 +81,7 @@
100%
5/5
100%
- 19/19
+ 17/17
@@ -94,7 +94,7 @@
100%
4/4
100%
- 20/20
+ 18/18
@@ -107,7 +107,7 @@
100%
3/3
100%
- 11/11
+ 9/9
@@ -142,7 +142,7 @@
diff --git a/doc/general/test/coverage/lcov-report/contracts/modules/wrapper/extensions/DebtModule/CreditEventsModule.sol.html b/doc/general/test/coverage/lcov-report/contracts/modules/wrapper/extensions/DebtModule/CreditEventsModule.sol.html
index 8a5d4012..75060568 100644
--- a/doc/general/test/coverage/lcov-report/contracts/modules/wrapper/extensions/DebtModule/CreditEventsModule.sol.html
+++ b/doc/general/test/coverage/lcov-report/contracts/modules/wrapper/extensions/DebtModule/CreditEventsModule.sol.html
@@ -124,7 +124,13 @@
79
80
81
-82
+82
+83
+84
+85
+
+
+
@@ -222,6 +228,9 @@
ContextUpgradeable,
AuthorizationModule
{
+ // CreditEvents
+ bytes32 public constant DEBT_CREDIT_EVENT_ROLE =
+ keccak256("DEBT_CREDIT_EVENT_ROLE");
CreditEvents public creditEvents;
/* Events */
@@ -292,7 +301,7 @@
diff --git a/doc/general/test/coverage/lcov-report/contracts/modules/wrapper/extensions/DebtModule/DebtBaseModule.sol.html b/doc/general/test/coverage/lcov-report/contracts/modules/wrapper/extensions/DebtModule/DebtBaseModule.sol.html
index 79629ed0..322d1741 100644
--- a/doc/general/test/coverage/lcov-report/contracts/modules/wrapper/extensions/DebtModule/DebtBaseModule.sol.html
+++ b/doc/general/test/coverage/lcov-report/contracts/modules/wrapper/extensions/DebtModule/DebtBaseModule.sol.html
@@ -274,7 +274,11 @@
229
230
231
-232
+232
+233
+234
+
+
@@ -522,6 +526,8 @@
ContextUpgradeable,
AuthorizationModule
{
+ // DebtModule
+ bytes32 public constant DEBT_ROLE = keccak256("DEBT_ROLE");
DebtBase public debt;
/* Events */
@@ -742,7 +748,7 @@
diff --git a/doc/general/test/coverage/lcov-report/contracts/modules/wrapper/extensions/DebtModule/index.html b/doc/general/test/coverage/lcov-report/contracts/modules/wrapper/extensions/DebtModule/index.html
index b57b4919..b75db962 100644
--- a/doc/general/test/coverage/lcov-report/contracts/modules/wrapper/extensions/DebtModule/index.html
+++ b/doc/general/test/coverage/lcov-report/contracts/modules/wrapper/extensions/DebtModule/index.html
@@ -90,7 +90,7 @@
diff --git a/doc/general/test/coverage/lcov-report/contracts/modules/wrapper/extensions/ERC20SnapshotModule.sol.html b/doc/general/test/coverage/lcov-report/contracts/modules/wrapper/extensions/ERC20SnapshotModule.sol.html
index ef56e98d..fe06161a 100644
--- a/doc/general/test/coverage/lcov-report/contracts/modules/wrapper/extensions/ERC20SnapshotModule.sol.html
+++ b/doc/general/test/coverage/lcov-report/contracts/modules/wrapper/extensions/ERC20SnapshotModule.sol.html
@@ -120,7 +120,9 @@
75
76
77
-78
+78
+79
+
@@ -201,7 +203,6 @@
pragma solidity ^0.8.20;
-import "../../../../openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol";
import "../../security/AuthorizationModule.sol";
import "../../internal/ERC20SnapshotModuleInternal.sol";
@@ -215,6 +216,8 @@
ERC20SnapshotModuleInternal,
AuthorizationModule
{
+ // SnapshotModule
+ bytes32 public constant SNAPSHOOTER_ROLE = keccak256("SNAPSHOOTER_ROLE");
function __ERC20SnasphotModule_init_unchained() internal E onlyInitializing {
// no variable to initialize
}
@@ -280,7 +283,7 @@
diff --git a/doc/general/test/coverage/lcov-report/contracts/modules/wrapper/extensions/MetaTxModule.sol.html b/doc/general/test/coverage/lcov-report/contracts/modules/wrapper/extensions/MetaTxModule.sol.html
index 516d8345..0d146d71 100644
--- a/doc/general/test/coverage/lcov-report/contracts/modules/wrapper/extensions/MetaTxModule.sol.html
+++ b/doc/general/test/coverage/lcov-report/contracts/modules/wrapper/extensions/MetaTxModule.sol.html
@@ -66,9 +66,7 @@
21
22
23
-24
-25
-
+24
@@ -96,7 +94,6 @@
pragma solidity ^0.8.20;
import "../../../../openzeppelin-contracts-upgradeable/contracts/metatx/ERC2771ContextUpgradeable.sol";
-import "../../../../openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol";
/**
* @dev Meta transaction (gasless) module.
@@ -121,7 +118,7 @@
diff --git a/doc/general/test/coverage/lcov-report/contracts/modules/wrapper/extensions/index.html b/doc/general/test/coverage/lcov-report/contracts/modules/wrapper/extensions/index.html
index b386ec88..9b3e8d2d 100644
--- a/doc/general/test/coverage/lcov-report/contracts/modules/wrapper/extensions/index.html
+++ b/doc/general/test/coverage/lcov-report/contracts/modules/wrapper/extensions/index.html
@@ -90,7 +90,7 @@
diff --git a/doc/general/test/coverage/lcov-report/contracts/test/proxy/CMTAT_PROXY.sol.html b/doc/general/test/coverage/lcov-report/contracts/test/proxy/CMTAT_PROXY.sol.html
index a462c258..77a7b2e2 100644
--- a/doc/general/test/coverage/lcov-report/contracts/test/proxy/CMTAT_PROXY.sol.html
+++ b/doc/general/test/coverage/lcov-report/contracts/test/proxy/CMTAT_PROXY.sol.html
@@ -118,7 +118,7 @@
diff --git a/doc/general/test/coverage/lcov-report/contracts/test/proxy/index.html b/doc/general/test/coverage/lcov-report/contracts/test/proxy/index.html
index 8e5a5676..c64aa1d2 100644
--- a/doc/general/test/coverage/lcov-report/contracts/test/proxy/index.html
+++ b/doc/general/test/coverage/lcov-report/contracts/test/proxy/index.html
@@ -77,7 +77,7 @@
diff --git a/doc/general/test/coverage/lcov-report/index.html b/doc/general/test/coverage/lcov-report/index.html
index f0b6357e..b4ae6e63 100644
--- a/doc/general/test/coverage/lcov-report/index.html
+++ b/doc/general/test/coverage/lcov-report/index.html
@@ -20,24 +20,24 @@
- 99.65%
+ 99.66%
Statements
- 285/286
+ 291/292
- 92.86%
+ 93.1%
Branches
- 260/280
+ 270/290
- 99.12%
+ 99.13%
Functions
- 113/114
+ 114/115
- 99.48%
+ 99.49%
Lines
- 386/388
+ 388/390
@@ -75,13 +75,13 @@
contracts/deployment/
100%
- 13/13
+ 18/18
100%
- 4/4
+ 14/14
100%
7/7
100%
- 21/21
+ 31/31
@@ -153,13 +153,13 @@
contracts/modules/internal/
100%
- 30/30
+ 31/31
85%
17/20
100%
- 17/17
+ 18/18
100%
- 38/38
+ 42/42
@@ -172,7 +172,7 @@
100%
14/14
100%
- 108/108
+ 102/102
@@ -211,7 +211,7 @@
100%
25/25
100%
- 74/74
+ 68/68
@@ -259,7 +259,7 @@
diff --git a/doc/general/test/coverage/lcov.info b/doc/general/test/coverage/lcov.info
index ead7a6f7..6b536d59 100644
--- a/doc/general/test/coverage/lcov.info
+++ b/doc/general/test/coverage/lcov.info
@@ -3,8 +3,8 @@ SF:/home/ryan/Downloads/CM/CMTAT/contracts/CMTAT_PROXY.sol
FN:15,constructor
FNF:1
FNH:1
-FNDA:10,constructor
-DA:17,10
+FNDA:15,constructor
+DA:17,15
LF:1
LH:1
BRF:0
@@ -24,60 +24,80 @@ BRH:0
end_of_record
TN:
SF:/home/ryan/Downloads/CM/CMTAT/contracts/deployment/CMTAT_BEACON_FACTORY.sol
-FN:31,constructor
-FN:53,deployCMTAT
-FN:81,getAddress
-FN:89,implementation
+FN:32,constructor
+FN:63,deployCMTAT
+FN:91,getAddress
+FN:99,implementation
FNF:4
FNH:4
-FNDA:3,constructor
+FNDA:9,constructor
FNDA:2,deployCMTAT
FNDA:1,getAddress
FNDA:1,implementation
-DA:32,3
-DA:33,3
-DA:34,3
-DA:54,2
-DA:70,2
-DA:71,2
-DA:72,2
-DA:73,2
-DA:74,2
-DA:82,1
-DA:90,1
-LF:11
-LH:11
-BRDA:53,1,0,2
-BRDA:53,1,1,2
-BRF:2
-BRH:2
+DA:33,9
+DA:34,2
+DA:36,7
+DA:37,2
+DA:39,5
+DA:40,2
+DA:42,3
+DA:43,3
+DA:44,3
+DA:64,2
+DA:80,2
+DA:81,2
+DA:82,2
+DA:83,2
+DA:84,2
+DA:92,1
+DA:100,1
+LF:17
+LH:17
+BRDA:33,1,0,2
+BRDA:33,1,1,7
+BRDA:36,2,0,2
+BRDA:36,2,1,5
+BRDA:39,3,0,2
+BRDA:39,3,1,3
+BRDA:63,4,0,2
+BRDA:63,4,1,2
+BRF:8
+BRH:8
end_of_record
TN:
SF:/home/ryan/Downloads/CM/CMTAT/contracts/deployment/CMTAT_TP_FACTORY.sol
-FN:27,constructor
-FN:46,deployCMTAT
-FN:75,getAddress
+FN:29,constructor
+FN:54,deployCMTAT
+FN:83,getAddress
FNF:3
FNH:3
-FNDA:3,constructor
+FNDA:7,constructor
FNDA:2,deployCMTAT
FNDA:1,getAddress
-DA:28,3
-DA:29,3
-DA:30,3
-DA:47,2
-DA:64,2
-DA:65,2
-DA:66,2
-DA:67,2
-DA:68,2
-DA:76,1
-LF:10
-LH:10
-BRDA:46,1,0,2
-BRDA:46,1,1,2
-BRF:2
-BRH:2
+DA:30,7
+DA:31,2
+DA:33,5
+DA:34,2
+DA:36,3
+DA:37,3
+DA:38,3
+DA:55,2
+DA:72,2
+DA:73,2
+DA:74,2
+DA:75,2
+DA:76,2
+DA:84,1
+LF:14
+LH:14
+BRDA:30,1,0,2
+BRDA:30,1,1,5
+BRDA:33,2,0,2
+BRDA:33,2,1,3
+BRDA:54,3,0,2
+BRDA:54,3,1,2
+BRF:6
+BRH:6
end_of_record
TN:
SF:/home/ryan/Downloads/CM/CMTAT/contracts/interfaces/draft-IERC1404/draft-IERC1404.sol
@@ -89,6 +109,15 @@ BRF:0
BRH:0
end_of_record
TN:
+SF:/home/ryan/Downloads/CM/CMTAT/contracts/interfaces/draft-IERC1404/draft-IERC1404EnumCode.sol
+FNF:0
+FNH:0
+LF:0
+LH:0
+BRF:0
+BRH:0
+end_of_record
+TN:
SF:/home/ryan/Downloads/CM/CMTAT/contracts/interfaces/draft-IERC1404/draft-IERC1404Wrapper.sol
FNF:0
FNH:0
@@ -152,6 +181,15 @@ BRF:0
BRH:0
end_of_record
TN:
+SF:/home/ryan/Downloads/CM/CMTAT/contracts/libraries/FactoryErrors.sol
+FNF:0
+FNH:0
+LF:0
+LH:0
+BRF:0
+BRH:0
+end_of_record
+TN:
SF:/home/ryan/Downloads/CM/CMTAT/contracts/modules/CMTAT_BASE.sol
FN:69,initialize
FN:98,__CMTAT_init
@@ -226,17 +264,17 @@ SF:/home/ryan/Downloads/CM/CMTAT/contracts/modules/internal/base/SnapshotModuleB
FN:64,__SnapshotModuleBase_init_unchained
FN:74,getAllSnapshots
FN:82,getNextSnapshots
-FN:120,_scheduleSnapshot
-FN:151,_scheduleSnapshotNotOptimized
-FN:184,_rescheduleSnapshot
-FN:230,_unscheduleLastSnapshot
-FN:252,_unscheduleSnapshotNotOptimized
-FN:276,_valueAt
-FN:309,_updateSnapshot
-FN:325,_setCurrentSnapshot
-FN:339,_lastSnapshot
-FN:353,_findScheduledSnapshotIndex
-FN:379,_findScheduledMostRecentPastSnapshot
+FN:118,_scheduleSnapshot
+FN:149,_scheduleSnapshotNotOptimized
+FN:182,_rescheduleSnapshot
+FN:228,_unscheduleLastSnapshot
+FN:250,_unscheduleSnapshotNotOptimized
+FN:272,_valueAt
+FN:305,_updateSnapshot
+FN:321,_setCurrentSnapshot
+FN:335,_lastSnapshot
+FN:349,_findScheduledSnapshotIndex
+FN:375,_findScheduledMostRecentPastSnapshot
FNF:14
FNH:14
FNDA:387,__SnapshotModuleBase_init_unchained
@@ -247,7 +285,7 @@ FNDA:16,_scheduleSnapshotNotOptimized
FNDA:38,_rescheduleSnapshot
FNDA:18,_unscheduleLastSnapshot
FNDA:16,_unscheduleSnapshotNotOptimized
-FNDA:1600,_valueAt
+FNDA:1920,_valueAt
FNDA:860,_updateSnapshot
FNDA:430,_setCurrentSnapshot
FNDA:860,_lastSnapshot
@@ -262,107 +300,101 @@ DA:92,48
DA:95,20
DA:97,8
DA:100,8
-DA:101,8
-DA:102,12
-DA:105,12
-DA:106,12
-DA:112,28
-DA:122,176
-DA:123,4
-DA:129,172
-DA:131,98
-DA:134,98
-DA:135,4
-DA:141,4
-DA:144,164
-DA:145,164
-DA:152,16
-DA:153,4
+DA:102,8
+DA:103,12
+DA:110,28
+DA:120,176
+DA:121,4
+DA:127,172
+DA:129,98
+DA:132,98
+DA:133,4
+DA:139,4
+DA:142,164
+DA:143,164
+DA:150,16
+DA:151,4
+DA:156,12
DA:158,12
-DA:160,12
-DA:161,4
-DA:164,8
-DA:165,2
-DA:167,6
-DA:170,6
+DA:159,4
+DA:162,8
+DA:163,2
+DA:165,6
+DA:168,6
+DA:169,10
+DA:170,10
DA:171,10
-DA:172,10
-DA:173,10
-DA:176,6
-DA:178,8
-DA:186,38
-DA:187,4
-DA:189,34
-DA:190,4
-DA:195,30
-DA:196,4
-DA:198,26
-DA:199,26
-DA:200,8
-DA:202,18
-DA:203,14
-DA:204,14
-DA:205,4
-DA:211,4
-DA:214,10
-DA:215,6
-DA:216,4
+DA:174,6
+DA:176,8
+DA:184,38
+DA:185,4
+DA:187,34
+DA:188,4
+DA:193,30
+DA:194,4
+DA:196,26
+DA:197,26
+DA:198,8
+DA:200,18
+DA:201,14
+DA:202,14
+DA:203,4
+DA:209,4
+DA:212,10
+DA:213,6
+DA:214,4
+DA:220,6
DA:222,6
-DA:224,6
-DA:232,18
-DA:233,4
-DA:235,14
-DA:236,4
-DA:239,10
-DA:240,4
-DA:242,6
-DA:243,6
-DA:253,16
-DA:254,4
-DA:256,12
-DA:257,12
-DA:258,4
-DA:260,8
-DA:261,16
-DA:262,16
-DA:263,16
-DA:266,8
-DA:294,1600
-DA:296,1600
-DA:297,1248
-DA:299,352
-DA:313,860
-DA:314,860
-DA:315,36
-DA:316,36
+DA:230,18
+DA:231,4
+DA:233,14
+DA:234,4
+DA:237,10
+DA:238,4
+DA:240,6
+DA:241,6
+DA:251,16
+DA:252,4
+DA:254,12
+DA:255,12
+DA:256,4
+DA:259,8
+DA:260,16
+DA:262,8
+DA:290,1920
+DA:292,1920
+DA:293,1484
+DA:295,436
+DA:309,860
+DA:310,860
+DA:311,36
+DA:312,36
+DA:322,430
DA:326,430
-DA:330,430
-DA:331,18
-DA:332,18
-DA:342,860
-DA:343,852
-DA:345,8
-DA:356,50
-DA:357,50
-DA:359,50
-DA:363,30
+DA:327,18
+DA:328,18
+DA:338,860
+DA:339,852
+DA:341,8
+DA:352,50
+DA:353,50
+DA:355,50
+DA:359,30
+DA:363,10
DA:367,10
-DA:371,10
-DA:384,498
-DA:386,498
-DA:390,412
-DA:393,86
-DA:394,86
-DA:395,86
-DA:396,116
-DA:397,52
-DA:398,52
-DA:401,64
-DA:403,52
-DA:404,52
-DA:407,86
-LF:108
-LH:108
+DA:380,498
+DA:382,498
+DA:386,412
+DA:389,86
+DA:390,86
+DA:392,86
+DA:393,116
+DA:394,52
+DA:395,52
+DA:398,64
+DA:401,86
+LF:102
+LH:102
BRDA:64,1,0,387
BRDA:64,1,1,0
BRDA:85,2,0,68
@@ -371,66 +403,66 @@ BRDA:91,3,0,48
BRDA:91,3,1,20
BRDA:95,4,0,8
BRDA:95,4,1,12
-BRDA:122,5,0,4
-BRDA:122,5,1,172
-BRDA:129,6,0,98
-BRDA:129,6,1,74
-BRDA:134,7,0,4
-BRDA:134,7,1,94
-BRDA:140,8,0,4
-BRDA:140,8,1,90
-BRDA:152,9,0,4
-BRDA:152,9,1,12
-BRDA:160,10,0,4
-BRDA:160,10,1,8
-BRDA:164,11,0,2
-BRDA:164,11,1,6
-BRDA:186,12,0,4
-BRDA:186,12,1,34
-BRDA:189,13,0,4
-BRDA:189,13,1,30
-BRDA:195,14,0,4
-BRDA:195,14,1,26
-BRDA:199,15,0,8
-BRDA:199,15,1,18
-BRDA:202,16,0,14
-BRDA:202,16,1,4
-BRDA:204,17,0,4
-BRDA:204,17,1,10
-BRDA:210,18,0,4
-BRDA:210,18,1,6
-BRDA:214,19,0,6
-BRDA:214,19,1,4
-BRDA:215,20,0,4
-BRDA:215,20,1,2
-BRDA:232,21,0,4
-BRDA:232,21,1,14
-BRDA:235,22,0,4
-BRDA:235,22,1,10
-BRDA:239,23,0,4
-BRDA:239,23,1,6
-BRDA:253,24,0,4
-BRDA:253,24,1,12
-BRDA:257,25,0,4
-BRDA:257,25,1,8
-BRDA:296,26,0,1248
-BRDA:296,26,1,352
-BRDA:314,27,0,36
-BRDA:314,27,1,824
-BRDA:330,28,0,18
-BRDA:330,28,1,412
-BRDA:342,29,0,852
-BRDA:342,29,1,8
-BRDA:359,30,0,30
-BRDA:359,30,1,20
-BRDA:366,31,0,10
-BRDA:366,31,1,10
-BRDA:386,32,0,412
-BRDA:386,32,1,86
-BRDA:387,33,0,412
-BRDA:387,33,1,0
-BRDA:396,34,0,52
-BRDA:396,34,1,64
+BRDA:120,5,0,4
+BRDA:120,5,1,172
+BRDA:127,6,0,98
+BRDA:127,6,1,74
+BRDA:132,7,0,4
+BRDA:132,7,1,94
+BRDA:138,8,0,4
+BRDA:138,8,1,90
+BRDA:150,9,0,4
+BRDA:150,9,1,12
+BRDA:158,10,0,4
+BRDA:158,10,1,8
+BRDA:162,11,0,2
+BRDA:162,11,1,6
+BRDA:184,12,0,4
+BRDA:184,12,1,34
+BRDA:187,13,0,4
+BRDA:187,13,1,30
+BRDA:193,14,0,4
+BRDA:193,14,1,26
+BRDA:197,15,0,8
+BRDA:197,15,1,18
+BRDA:200,16,0,14
+BRDA:200,16,1,4
+BRDA:202,17,0,4
+BRDA:202,17,1,10
+BRDA:208,18,0,4
+BRDA:208,18,1,6
+BRDA:212,19,0,6
+BRDA:212,19,1,4
+BRDA:213,20,0,4
+BRDA:213,20,1,2
+BRDA:230,21,0,4
+BRDA:230,21,1,14
+BRDA:233,22,0,4
+BRDA:233,22,1,10
+BRDA:237,23,0,4
+BRDA:237,23,1,6
+BRDA:251,24,0,4
+BRDA:251,24,1,12
+BRDA:255,25,0,4
+BRDA:255,25,1,8
+BRDA:292,26,0,1484
+BRDA:292,26,1,436
+BRDA:310,27,0,36
+BRDA:310,27,1,824
+BRDA:326,28,0,18
+BRDA:326,28,1,412
+BRDA:338,29,0,852
+BRDA:338,29,1,8
+BRDA:355,30,0,30
+BRDA:355,30,1,20
+BRDA:362,31,0,10
+BRDA:362,31,1,10
+BRDA:382,32,0,412
+BRDA:382,32,1,86
+BRDA:383,33,0,412
+BRDA:383,33,1,0
+BRDA:393,34,0,52
+BRDA:393,34,1,64
BRF:68
BRH:66
end_of_record
@@ -470,66 +502,72 @@ BRH:5
end_of_record
TN:
SF:/home/ryan/Downloads/CM/CMTAT/contracts/modules/internal/ERC20SnapshotModuleInternal.sol
-FN:32,__ERC20Snapshot_init_unchained
-FN:41,snapshotInfo
-FN:50,snapshotInfoBatch
-FN:62,snapshotBalanceOf
-FN:79,snapshotTotalSupply
-FN:92,_snapshotUpdate
-FN:117,_updateAccountSnapshot
-FN:124,_updateTotalSupplySnapshot
-FNF:8
-FNH:8
+FN:27,__ERC20Snapshot_init_unchained
+FN:36,snapshotInfo
+FN:45,snapshotInfoBatch
+FN:57,snapshotInfoBatch
+FN:74,snapshotBalanceOf
+FN:91,snapshotTotalSupply
+FN:104,_snapshotUpdate
+FN:129,_updateAccountSnapshot
+FN:136,_updateTotalSupplySnapshot
+FNF:9
+FNH:9
FNDA:387,__ERC20Snapshot_init_unchained
FNDA:480,snapshotInfo
+FNDA:160,snapshotInfoBatch
FNDA:80,snapshotInfoBatch
-FNDA:960,snapshotBalanceOf
-FNDA:640,snapshotTotalSupply
+FNDA:1200,snapshotBalanceOf
+FNDA:720,snapshotTotalSupply
FNDA:430,_snapshotUpdate
FNDA:485,_updateAccountSnapshot
FNDA:375,_updateTotalSupplySnapshot
-DA:42,480
-DA:43,480
-DA:51,80
-DA:52,80
-DA:53,240
-DA:55,80
-DA:66,960
-DA:71,960
-DA:80,640
-DA:84,640
-DA:96,430
-DA:97,430
-DA:99,99
-DA:100,99
-DA:102,55
-DA:105,44
-DA:109,331
-DA:110,331
-DA:118,485
-DA:125,375
-LF:20
-LH:20
-BRDA:32,1,0,387
-BRDA:32,1,1,0
-BRDA:71,2,0,320
-BRDA:71,2,1,640
-BRDA:84,3,0,32
-BRDA:84,3,1,608
-BRDA:97,4,0,99
-BRDA:97,4,1,331
-BRDA:100,5,0,55
-BRDA:100,5,1,44
+DA:37,480
+DA:38,480
+DA:46,160
+DA:47,160
+DA:48,480
+DA:50,160
+DA:58,80
+DA:59,80
+DA:60,80
+DA:66,80
+DA:78,1200
+DA:83,1200
+DA:92,720
+DA:96,720
+DA:108,430
+DA:109,430
+DA:111,99
+DA:112,99
+DA:114,55
+DA:117,44
+DA:121,331
+DA:122,331
+DA:130,485
+DA:137,375
+LF:24
+LH:24
+BRDA:27,1,0,387
+BRDA:27,1,1,0
+BRDA:83,2,0,400
+BRDA:83,2,1,800
+BRDA:96,3,0,36
+BRDA:96,3,1,684
+BRDA:109,4,0,99
+BRDA:109,4,1,331
+BRDA:112,5,0,55
+BRDA:112,5,1,44
BRF:10
BRH:9
end_of_record
TN:
SF:/home/ryan/Downloads/CM/CMTAT/contracts/modules/internal/ValidationModuleInternal.sol
-FN:27,__Validation_init_unchained
-FN:37,_validateTransfer
-FN:48,_messageForTransferRestriction
-FN:57,_detectTransferRestriction
-FN:65,_operateOnTransfer
+FN:26,__Validation_init_unchained
+FN:36,_validateTransfer
+FN:47,_messageForTransferRestriction
+FN:56,_detectTransferRestriction
+FN:64,_operateOnTransfer
FNF:5
FNH:5
FNDA:387,__Validation_init_unchained
@@ -537,29 +575,29 @@ FNDA:12,_validateTransfer
FNDA:6,_messageForTransferRestriction
FNDA:6,_detectTransferRestriction
FNDA:57,_operateOnTransfer
-DA:28,387
+DA:27,387
+DA:28,16
DA:29,16
-DA:30,16
-DA:42,12
-DA:51,6
-DA:62,6
-DA:66,57
+DA:41,12
+DA:50,6
+DA:61,6
+DA:65,57
LF:7
LH:7
-BRDA:27,1,0,387
-BRDA:27,1,1,0
-BRDA:28,2,0,16
-BRDA:28,2,1,371
+BRDA:26,1,0,387
+BRDA:26,1,1,0
+BRDA:27,2,0,16
+BRDA:27,2,1,371
BRF:4
BRH:3
end_of_record
TN:
SF:/home/ryan/Downloads/CM/CMTAT/contracts/modules/security/AuthorizationModule.sol
-FN:41,__AuthorizationModule_init_unchained
-FN:59,setAuthorizationEngine
-FN:67,grantRole
-FN:78,revokeRole
-FN:92,hasRole
+FN:23,__AuthorizationModule_init_unchained
+FN:41,setAuthorizationEngine
+FN:49,grantRole
+FN:60,revokeRole
+FN:74,hasRole
FNF:5
FNH:5
FNDA:387,__AuthorizationModule_init_unchained
@@ -567,66 +605,66 @@ FNDA:8,setAuthorizationEngine
FNDA:35,grantRole
FNDA:5,revokeRole
FNDA:1443,hasRole
-DA:42,387
-DA:43,3
-DA:45,384
-DA:46,384
-DA:47,0
-DA:60,8
-DA:61,2
-DA:63,6
-DA:64,6
-DA:68,35
-DA:69,3
-DA:70,3
-DA:72,2
-DA:75,33
-DA:79,5
-DA:80,3
-DA:81,3
-DA:83,2
-DA:86,3
-DA:97,1443
-DA:98,810
-DA:100,633
+DA:24,387
+DA:25,3
+DA:27,384
+DA:28,384
+DA:29,0
+DA:42,8
+DA:43,2
+DA:45,6
+DA:46,6
+DA:50,35
+DA:51,3
+DA:52,3
+DA:54,2
+DA:57,33
+DA:61,5
+DA:62,3
+DA:63,3
+DA:65,2
+DA:68,3
+DA:79,1443
+DA:80,810
+DA:82,633
LF:22
LH:21
-BRDA:41,1,0,387
-BRDA:41,1,1,0
-BRDA:42,2,0,3
-BRDA:42,2,1,384
-BRDA:46,3,0,0
-BRDA:46,3,1,384
-BRDA:59,4,0,8
-BRDA:59,4,1,2
-BRDA:60,5,0,2
-BRDA:60,5,1,6
-BRDA:67,6,0,35
-BRDA:67,6,1,4
-BRDA:68,7,0,3
-BRDA:68,7,1,32
-BRDA:70,8,0,2
-BRDA:70,8,1,1
-BRDA:78,9,0,5
-BRDA:78,9,1,4
-BRDA:79,10,0,3
-BRDA:79,10,1,2
-BRDA:81,11,0,2
-BRDA:81,11,1,1
-BRDA:97,12,0,810
-BRDA:97,12,1,633
+BRDA:23,1,0,387
+BRDA:23,1,1,0
+BRDA:24,2,0,3
+BRDA:24,2,1,384
+BRDA:28,3,0,0
+BRDA:28,3,1,384
+BRDA:41,4,0,8
+BRDA:41,4,1,2
+BRDA:42,5,0,2
+BRDA:42,5,1,6
+BRDA:49,6,0,35
+BRDA:49,6,1,4
+BRDA:50,7,0,3
+BRDA:50,7,1,32
+BRDA:52,8,0,2
+BRDA:52,8,1,1
+BRDA:60,9,0,5
+BRDA:60,9,1,4
+BRDA:61,10,0,3
+BRDA:61,10,1,2
+BRDA:63,11,0,2
+BRDA:63,11,1,1
+BRDA:79,12,0,810
+BRDA:79,12,1,633
BRF:24
BRH:22
end_of_record
TN:
SF:/home/ryan/Downloads/CM/CMTAT/contracts/modules/wrapper/controllers/ValidationModule.sol
-FN:27,__ValidationModule_init_unchained
-FN:37,setRuleEngine
-FN:50,messageForTransferRestriction
-FN:84,detectTransferRestriction
-FN:102,validateTransfer
-FN:116,_validateTransferByModule
-FN:127,_operateOnTransfer
+FN:26,__ValidationModule_init_unchained
+FN:36,setRuleEngine
+FN:49,messageForTransferRestriction
+FN:83,detectTransferRestriction
+FN:101,validateTransfer
+FN:115,_validateTransferByModule
+FN:126,_operateOnTransfer
FNF:7
FNH:7
FNDA:384,__ValidationModule_init_unchained
@@ -636,86 +674,86 @@ FNDA:17,detectTransferRestriction
FNDA:19,validateTransfer
FNDA:483,_validateTransferByModule
FNDA:464,_operateOnTransfer
-DA:38,20
-DA:39,6
+DA:37,20
+DA:38,6
+DA:40,14
DA:41,14
-DA:42,14
-DA:53,20
-DA:54,3
-DA:59,4
-DA:64,2
-DA:69,2
-DA:71,6
-DA:73,3
-DA:89,17
-DA:90,4
-DA:92,2
-DA:94,2
-DA:96,6
-DA:98,3
-DA:107,19
-DA:108,4
-DA:110,15
-DA:111,12
-DA:113,3
-DA:121,483
-DA:122,32
-DA:124,451
-DA:128,464
-DA:129,28
-DA:131,436
-DA:132,57
-DA:134,379
+DA:52,20
+DA:53,3
+DA:58,4
+DA:63,2
+DA:68,2
+DA:70,6
+DA:72,3
+DA:88,17
+DA:89,4
+DA:91,2
+DA:93,2
+DA:95,6
+DA:97,3
+DA:106,19
+DA:107,4
+DA:109,15
+DA:110,12
+DA:112,3
+DA:120,483
+DA:121,32
+DA:123,451
+DA:127,464
+DA:128,28
+DA:130,436
+DA:131,57
+DA:133,379
LF:30
LH:30
-BRDA:27,1,0,384
-BRDA:27,1,1,0
-BRDA:37,2,0,20
-BRDA:37,2,1,6
-BRDA:38,3,0,6
-BRDA:38,3,1,14
-BRDA:53,4,0,3
-BRDA:53,4,1,17
-BRDA:55,5,0,4
-BRDA:55,5,1,13
-BRDA:60,6,0,2
-BRDA:60,6,1,11
-BRDA:65,7,0,2
-BRDA:65,7,1,9
-BRDA:70,8,0,6
-BRDA:70,8,1,3
-BRDA:89,9,0,4
-BRDA:89,9,1,13
-BRDA:91,10,0,2
-BRDA:91,10,1,11
-BRDA:93,11,0,2
-BRDA:93,11,1,9
-BRDA:95,12,0,6
-BRDA:95,12,1,3
-BRDA:107,13,0,4
-BRDA:107,13,1,15
-BRDA:110,14,0,12
-BRDA:110,14,1,3
-BRDA:121,15,0,32
-BRDA:121,15,1,451
-BRDA:121,16,0,22
-BRDA:121,16,1,6
-BRDA:121,17,0,6
-BRDA:121,17,1,4
-BRDA:128,18,0,28
-BRDA:128,18,1,436
-BRDA:131,19,0,57
-BRDA:131,19,1,379
+BRDA:26,1,0,384
+BRDA:26,1,1,0
+BRDA:36,2,0,20
+BRDA:36,2,1,6
+BRDA:37,3,0,6
+BRDA:37,3,1,14
+BRDA:52,4,0,3
+BRDA:52,4,1,17
+BRDA:54,5,0,4
+BRDA:54,5,1,13
+BRDA:59,6,0,2
+BRDA:59,6,1,11
+BRDA:64,7,0,2
+BRDA:64,7,1,9
+BRDA:69,8,0,6
+BRDA:69,8,1,3
+BRDA:88,9,0,4
+BRDA:88,9,1,13
+BRDA:90,10,0,2
+BRDA:90,10,1,11
+BRDA:92,11,0,2
+BRDA:92,11,1,9
+BRDA:94,12,0,6
+BRDA:94,12,1,3
+BRDA:106,13,0,4
+BRDA:106,13,1,15
+BRDA:109,14,0,12
+BRDA:109,14,1,3
+BRDA:120,15,0,32
+BRDA:120,15,1,451
+BRDA:120,16,0,22
+BRDA:120,16,1,6
+BRDA:120,17,0,6
+BRDA:120,17,1,4
+BRDA:127,18,0,28
+BRDA:127,18,1,436
+BRDA:130,19,0,57
+BRDA:130,19,1,379
BRF:38
BRH:37
end_of_record
TN:
SF:/home/ryan/Downloads/CM/CMTAT/contracts/modules/wrapper/core/BaseModule.sol
-FN:46,__Base_init_unchained
-FN:59,setTokenId
-FN:69,setTerms
-FN:79,setInformation
-FN:87,setFlag
+FN:45,__Base_init_unchained
+FN:58,setTokenId
+FN:68,setTerms
+FN:78,setInformation
+FN:86,setFlag
FNF:5
FNH:5
FNDA:384,__Base_init_unchained
@@ -723,67 +761,67 @@ FNDA:2,setTokenId
FNDA:2,setTerms
FNDA:2,setInformation
FNDA:6,setFlag
+DA:46,384
DA:47,384
DA:48,384
DA:49,384
-DA:50,384
+DA:59,2
DA:60,2
-DA:61,2
+DA:69,2
DA:70,2
-DA:71,2
+DA:79,2
DA:80,2
-DA:81,2
-DA:88,6
-DA:89,4
+DA:87,6
+DA:88,4
+DA:90,2
DA:91,2
-DA:92,2
LF:14
LH:14
-BRDA:46,1,0,384
-BRDA:46,1,1,0
-BRDA:59,2,0,2
-BRDA:59,2,1,4
-BRDA:69,3,0,2
-BRDA:69,3,1,4
-BRDA:79,4,0,2
-BRDA:79,4,1,4
-BRDA:87,5,0,6
-BRDA:87,5,1,4
-BRDA:88,6,0,4
-BRDA:88,6,1,2
+BRDA:45,1,0,384
+BRDA:45,1,1,0
+BRDA:58,2,0,2
+BRDA:58,2,1,4
+BRDA:68,3,0,2
+BRDA:68,3,1,4
+BRDA:78,4,0,2
+BRDA:78,4,1,4
+BRDA:86,5,0,6
+BRDA:86,5,1,4
+BRDA:87,6,0,4
+BRDA:87,6,1,2
BRF:12
BRH:11
end_of_record
TN:
SF:/home/ryan/Downloads/CM/CMTAT/contracts/modules/wrapper/core/EnforcementModule.sol
-FN:23,__EnforcementModule_init_unchained
-FN:35,freeze
-FN:49,unfreeze
+FN:25,__EnforcementModule_init_unchained
+FN:37,freeze
+FN:51,unfreeze
FNF:3
FNH:3
FNDA:384,__EnforcementModule_init_unchained
FNDA:22,freeze
FNDA:8,unfreeze
-DA:36,22
-DA:50,8
+DA:38,22
+DA:52,8
LF:2
LH:2
-BRDA:23,1,0,384
-BRDA:23,1,1,0
-BRDA:35,2,0,22
-BRDA:35,2,1,4
-BRDA:49,3,0,8
-BRDA:49,3,1,4
+BRDA:25,1,0,384
+BRDA:25,1,1,0
+BRDA:37,2,0,22
+BRDA:37,2,1,4
+BRDA:51,3,0,8
+BRDA:51,3,1,4
BRF:6
BRH:5
end_of_record
TN:
SF:/home/ryan/Downloads/CM/CMTAT/contracts/modules/wrapper/core/ERC20BaseModule.sol
-FN:31,__ERC20BaseModule_init_unchained
-FN:41,decimals
-FN:57,transferBatch
-FN:90,transferFrom
-FN:109,balanceInfo
+FN:30,__ERC20BaseModule_init_unchained
+FN:40,decimals
+FN:56,transferBatch
+FN:86,transferFrom
+FN:105,balanceInfo
FNF:5
FNH:5
FNDA:384,__ERC20BaseModule_init_unchained
@@ -791,132 +829,126 @@ FNDA:2,decimals
FNDA:18,transferBatch
FNDA:18,transferFrom
FNDA:4,balanceInfo
-DA:32,384
-DA:42,2
-DA:61,18
-DA:62,4
-DA:66,14
-DA:67,8
-DA:70,6
-DA:73,14
-DA:74,10
-DA:75,10
-DA:80,2
-DA:95,18
+DA:31,384
+DA:41,2
+DA:60,18
+DA:61,4
+DA:65,14
+DA:66,8
+DA:69,6
+DA:72,14
+DA:76,2
+DA:91,18
+DA:93,2
+DA:94,2
DA:97,2
-DA:98,2
-DA:101,2
+DA:106,4
+DA:107,4
+DA:108,6
DA:110,4
-DA:111,4
-DA:112,6
-DA:114,4
-LF:19
-LH:19
-BRDA:31,1,0,384
-BRDA:31,1,1,0
-BRDA:61,2,0,4
-BRDA:61,2,1,14
-BRDA:66,3,0,8
-BRDA:66,3,1,6
-BRDA:97,4,0,2
-BRDA:97,4,1,0
+LF:17
+LH:17
+BRDA:30,1,0,384
+BRDA:30,1,1,0
+BRDA:60,2,0,4
+BRDA:60,2,1,14
+BRDA:65,3,0,8
+BRDA:65,3,1,6
+BRDA:93,4,0,2
+BRDA:93,4,1,0
BRF:8
BRH:6
end_of_record
TN:
SF:/home/ryan/Downloads/CM/CMTAT/contracts/modules/wrapper/core/ERC20BurnModule.sol
-FN:18,__ERC20BurnModule_init_unchained
-FN:35,burn
-FN:59,burnBatch
-FN:94,burnFrom
+FN:19,__ERC20BurnModule_init_unchained
+FN:36,burn
+FN:60,burnBatch
+FN:92,burnFrom
FNF:4
FNH:4
FNDA:384,__ERC20BurnModule_init_unchained
FNDA:18,burn
FNDA:20,burnBatch
FNDA:6,burnFrom
-DA:36,18
-DA:37,14
-DA:60,20
-DA:61,4
-DA:65,16
-DA:66,8
-DA:69,8
-DA:70,24
-DA:71,20
+DA:37,18
+DA:38,14
+DA:61,20
+DA:62,4
+DA:66,16
+DA:67,8
+DA:70,8
+DA:71,24
DA:72,20
-DA:73,20
+DA:95,6
+DA:96,6
DA:97,6
-DA:98,6
-DA:99,6
-DA:101,4
-DA:104,2
-DA:105,2
+DA:99,4
+DA:102,2
+DA:103,2
+DA:106,2
DA:108,2
DA:110,2
-DA:112,2
-LF:20
-LH:20
-BRDA:18,1,0,384
-BRDA:18,1,1,0
-BRDA:35,2,0,18
-BRDA:35,2,1,8
-BRDA:59,3,0,20
-BRDA:59,3,1,4
-BRDA:60,4,0,4
-BRDA:60,4,1,16
-BRDA:65,5,0,8
-BRDA:65,5,1,8
-BRDA:94,6,0,6
-BRDA:94,6,1,4
-BRDA:99,7,0,4
-BRDA:99,7,1,2
+LF:18
+LH:18
+BRDA:19,1,0,384
+BRDA:19,1,1,0
+BRDA:36,2,0,18
+BRDA:36,2,1,8
+BRDA:60,3,0,20
+BRDA:60,3,1,4
+BRDA:61,4,0,4
+BRDA:61,4,1,16
+BRDA:66,5,0,8
+BRDA:66,5,1,8
+BRDA:92,6,0,6
+BRDA:92,6,1,4
+BRDA:97,7,0,4
+BRDA:97,7,1,2
BRF:14
BRH:13
end_of_record
TN:
SF:/home/ryan/Downloads/CM/CMTAT/contracts/modules/wrapper/core/ERC20MintModule.sol
-FN:16,__ERC20MintModule_init_unchained
-FN:33,mint
-FN:56,mintBatch
+FN:17,__ERC20MintModule_init_unchained
+FN:34,mint
+FN:57,mintBatch
FNF:3
FNH:3
FNDA:384,__ERC20MintModule_init_unchained
FNDA:277,mint
FNDA:30,mintBatch
-DA:34,277
DA:35,277
-DA:57,30
-DA:58,4
-DA:62,26
-DA:63,8
-DA:66,18
-DA:67,54
+DA:36,277
+DA:58,30
+DA:59,4
+DA:63,26
+DA:64,8
+DA:67,18
DA:68,54
DA:69,54
-DA:70,54
-LF:11
-LH:11
-BRDA:16,1,0,384
-BRDA:16,1,1,0
-BRDA:33,2,0,277
-BRDA:33,2,1,8
-BRDA:56,3,0,30
-BRDA:56,3,1,4
-BRDA:57,4,0,4
-BRDA:57,4,1,26
-BRDA:62,5,0,8
-BRDA:62,5,1,18
+LF:9
+LH:9
+BRDA:17,1,0,384
+BRDA:17,1,1,0
+BRDA:34,2,0,277
+BRDA:34,2,1,8
+BRDA:57,3,0,30
+BRDA:57,3,1,4
+BRDA:58,4,0,4
+BRDA:58,4,1,26
+BRDA:63,5,0,8
+BRDA:63,5,1,18
BRF:10
BRH:9
end_of_record
TN:
SF:/home/ryan/Downloads/CM/CMTAT/contracts/modules/wrapper/core/PauseModule.sol
-FN:25,__PauseModule_init_unchained
-FN:38,pause
-FN:50,unpause
-FN:68,deactivateContract
-FN:78,deactivated
+FN:26,__PauseModule_init_unchained
+FN:39,pause
+FN:51,unpause
+FN:69,deactivateContract
+FN:79,deactivated
FNF:5
FNH:5
FNDA:384,__PauseModule_init_unchained
@@ -924,36 +956,36 @@ FNDA:14,pause
FNDA:8,unpause
FNDA:2,deactivateContract
FNDA:4,deactivated
-DA:39,14
-DA:51,8
-DA:52,4
-DA:54,4
-DA:70,2
+DA:40,14
+DA:52,8
+DA:53,4
+DA:55,4
DA:71,2
DA:72,2
-DA:79,4
+DA:73,2
+DA:80,4
LF:8
LH:8
-BRDA:25,1,0,384
-BRDA:25,1,1,0
-BRDA:38,2,0,14
-BRDA:38,2,1,6
-BRDA:50,3,0,8
-BRDA:50,3,1,4
-BRDA:51,4,0,4
-BRDA:51,4,1,4
-BRDA:68,5,0,2
-BRDA:68,5,1,4
+BRDA:26,1,0,384
+BRDA:26,1,1,0
+BRDA:39,2,0,14
+BRDA:39,2,1,6
+BRDA:51,3,0,8
+BRDA:51,3,1,4
+BRDA:52,4,0,4
+BRDA:52,4,1,4
+BRDA:69,5,0,2
+BRDA:69,5,1,4
BRF:10
BRH:9
end_of_record
TN:
SF:/home/ryan/Downloads/CM/CMTAT/contracts/modules/wrapper/extensions/DebtModule/CreditEventsModule.sol
-FN:25,__CreditEvents_init_unchained
-FN:37,setCreditEvents
-FN:49,setFlagDefault
-FN:62,setFlagRedeemed
-FN:75,setRating
+FN:28,__CreditEvents_init_unchained
+FN:40,setCreditEvents
+FN:52,setFlagDefault
+FN:65,setFlagRedeemed
+FN:78,setRating
FNF:5
FNH:5
FNDA:384,__CreditEvents_init_unchained
@@ -961,55 +993,55 @@ FNDA:2,setCreditEvents
FNDA:6,setFlagDefault
FNDA:6,setFlagRedeemed
FNDA:2,setRating
-DA:38,2
-DA:39,2
-DA:40,2
DA:41,2
-DA:50,6
-DA:51,4
-DA:53,2
-DA:54,2
-DA:63,6
-DA:64,4
-DA:66,2
-DA:67,2
-DA:76,2
-DA:77,2
+DA:42,2
+DA:43,2
+DA:44,2
+DA:53,6
+DA:54,4
+DA:56,2
+DA:57,2
+DA:66,6
+DA:67,4
+DA:69,2
+DA:70,2
+DA:79,2
+DA:80,2
LF:14
LH:14
-BRDA:25,1,0,384
-BRDA:25,1,1,0
-BRDA:37,2,0,2
-BRDA:37,2,1,4
-BRDA:49,3,0,6
-BRDA:49,3,1,4
-BRDA:50,4,0,4
-BRDA:50,4,1,2
-BRDA:62,5,0,6
-BRDA:62,5,1,4
-BRDA:63,6,0,4
-BRDA:63,6,1,2
-BRDA:75,7,0,2
-BRDA:75,7,1,4
+BRDA:28,1,0,384
+BRDA:28,1,1,0
+BRDA:40,2,0,2
+BRDA:40,2,1,4
+BRDA:52,3,0,6
+BRDA:52,3,1,4
+BRDA:53,4,0,4
+BRDA:53,4,1,2
+BRDA:65,5,0,6
+BRDA:65,5,1,4
+BRDA:66,6,0,4
+BRDA:66,6,1,2
+BRDA:78,7,0,2
+BRDA:78,7,1,4
BRF:14
BRH:13
end_of_record
TN:
SF:/home/ryan/Downloads/CM/CMTAT/contracts/modules/wrapper/extensions/DebtModule/DebtBaseModule.sol
-FN:58,__DebtBaseModule_init_unchained
-FN:66,setDebt
-FN:102,setInterestRate
-FN:113,setParValue
-FN:126,setGuarantor
-FN:136,setBondHolder
-FN:146,setMaturityDate
-FN:156,setInterestScheduleFormat
-FN:169,setInterestPaymentDate
-FN:179,setDayCountConvention
-FN:189,setBusinessDayConvention
-FN:202,setPublicHolidaysCalendar
-FN:215,setIssuanceDate
-FN:225,setCouponFrequency
+FN:60,__DebtBaseModule_init_unchained
+FN:68,setDebt
+FN:104,setInterestRate
+FN:115,setParValue
+FN:128,setGuarantor
+FN:138,setBondHolder
+FN:148,setMaturityDate
+FN:158,setInterestScheduleFormat
+FN:171,setInterestPaymentDate
+FN:181,setDayCountConvention
+FN:191,setBusinessDayConvention
+FN:204,setPublicHolidaysCalendar
+FN:217,setIssuanceDate
+FN:227,setCouponFrequency
FNF:14
FNH:14
FNDA:384,__DebtBaseModule_init_unchained
@@ -1026,92 +1058,92 @@ FNDA:2,setBusinessDayConvention
FNDA:2,setPublicHolidaysCalendar
FNDA:2,setIssuanceDate
FNDA:2,setCouponFrequency
-DA:67,2
-DA:68,2
DA:69,2
DA:70,2
DA:71,2
DA:72,2
DA:73,2
-DA:77,2
-DA:81,2
-DA:85,2
-DA:89,2
-DA:94,2
+DA:74,2
+DA:75,2
+DA:79,2
+DA:83,2
+DA:87,2
+DA:91,2
DA:96,2
-DA:103,6
-DA:104,4
-DA:106,2
-DA:107,2
-DA:114,6
-DA:115,4
-DA:117,2
-DA:118,2
-DA:127,2
-DA:128,2
-DA:137,2
-DA:138,2
-DA:147,2
-DA:148,2
-DA:157,2
-DA:158,2
-DA:170,2
-DA:171,2
-DA:180,2
-DA:181,2
-DA:190,2
-DA:191,2
-DA:203,2
-DA:204,2
-DA:216,2
-DA:217,2
-DA:226,2
-DA:227,2
+DA:98,2
+DA:105,6
+DA:106,4
+DA:108,2
+DA:109,2
+DA:116,6
+DA:117,4
+DA:119,2
+DA:120,2
+DA:129,2
+DA:130,2
+DA:139,2
+DA:140,2
+DA:149,2
+DA:150,2
+DA:159,2
+DA:160,2
+DA:172,2
+DA:173,2
+DA:182,2
+DA:183,2
+DA:192,2
+DA:193,2
+DA:205,2
+DA:206,2
+DA:218,2
+DA:219,2
+DA:228,2
+DA:229,2
LF:41
LH:41
-BRDA:58,1,0,384
-BRDA:58,1,1,0
-BRDA:66,2,0,2
-BRDA:66,2,1,4
-BRDA:102,3,0,6
-BRDA:102,3,1,4
-BRDA:103,4,0,4
-BRDA:103,4,1,2
-BRDA:113,5,0,6
-BRDA:113,5,1,4
-BRDA:114,6,0,4
-BRDA:114,6,1,2
-BRDA:126,7,0,2
-BRDA:126,7,1,4
-BRDA:136,8,0,2
-BRDA:136,8,1,4
-BRDA:146,9,0,2
-BRDA:146,9,1,4
-BRDA:156,10,0,2
-BRDA:156,10,1,4
-BRDA:169,11,0,2
-BRDA:169,11,1,4
-BRDA:179,12,0,2
-BRDA:179,12,1,4
-BRDA:189,13,0,2
-BRDA:189,13,1,4
-BRDA:202,14,0,2
-BRDA:202,14,1,4
-BRDA:215,15,0,2
-BRDA:215,15,1,4
-BRDA:225,16,0,2
-BRDA:225,16,1,4
+BRDA:60,1,0,384
+BRDA:60,1,1,0
+BRDA:68,2,0,2
+BRDA:68,2,1,4
+BRDA:104,3,0,6
+BRDA:104,3,1,4
+BRDA:105,4,0,4
+BRDA:105,4,1,2
+BRDA:115,5,0,6
+BRDA:115,5,1,4
+BRDA:116,6,0,4
+BRDA:116,6,1,2
+BRDA:128,7,0,2
+BRDA:128,7,1,4
+BRDA:138,8,0,2
+BRDA:138,8,1,4
+BRDA:148,9,0,2
+BRDA:148,9,1,4
+BRDA:158,10,0,2
+BRDA:158,10,1,4
+BRDA:171,11,0,2
+BRDA:171,11,1,4
+BRDA:181,12,0,2
+BRDA:181,12,1,4
+BRDA:191,13,0,2
+BRDA:191,13,1,4
+BRDA:204,14,0,2
+BRDA:204,14,1,4
+BRDA:217,15,0,2
+BRDA:217,15,1,4
+BRDA:227,16,0,2
+BRDA:227,16,1,4
BRF:32
BRH:31
end_of_record
TN:
SF:/home/ryan/Downloads/CM/CMTAT/contracts/modules/wrapper/extensions/ERC20SnapshotModule.sol
-FN:19,__ERC20SnasphotModule_init_unchained
-FN:28,scheduleSnapshot
-FN:39,scheduleSnapshotNotOptimized
-FN:51,rescheduleSnapshot
-FN:62,unscheduleLastSnapshot
-FN:72,unscheduleSnapshotNotOptimized
+FN:20,__ERC20SnasphotModule_init_unchained
+FN:29,scheduleSnapshot
+FN:40,scheduleSnapshotNotOptimized
+FN:52,rescheduleSnapshot
+FN:63,unscheduleLastSnapshot
+FN:73,unscheduleSnapshotNotOptimized
FNF:6
FNH:6
FNDA:384,__ERC20SnasphotModule_init_unchained
@@ -1120,34 +1152,34 @@ FNDA:16,scheduleSnapshotNotOptimized
FNDA:38,rescheduleSnapshot
FNDA:18,unscheduleLastSnapshot
FNDA:16,unscheduleSnapshotNotOptimized
-DA:29,176
-DA:40,16
-DA:52,38
-DA:63,18
-DA:73,16
+DA:30,176
+DA:41,16
+DA:53,38
+DA:64,18
+DA:74,16
LF:5
LH:5
-BRDA:19,1,0,384
-BRDA:19,1,1,0
-BRDA:28,2,0,176
-BRDA:28,2,1,4
-BRDA:39,3,0,16
-BRDA:39,3,1,4
-BRDA:51,4,0,38
-BRDA:51,4,1,4
-BRDA:62,5,0,18
-BRDA:62,5,1,4
-BRDA:72,6,0,16
-BRDA:72,6,1,4
+BRDA:20,1,0,384
+BRDA:20,1,1,0
+BRDA:29,2,0,176
+BRDA:29,2,1,4
+BRDA:40,3,0,16
+BRDA:40,3,1,4
+BRDA:52,4,0,38
+BRDA:52,4,1,4
+BRDA:63,5,0,18
+BRDA:63,5,1,4
+BRDA:73,6,0,16
+BRDA:73,6,1,4
BRF:12
BRH:11
end_of_record
TN:
SF:/home/ryan/Downloads/CM/CMTAT/contracts/modules/wrapper/extensions/MetaTxModule.sol
-FN:19,constructor
+FN:18,constructor
FNF:1
FNH:1
-FNDA:199,constructor
+FNDA:204,constructor
LF:0
LH:0
BRF:0
diff --git a/doc/schema/drawio/architecture.drawio b/doc/schema/drawio/architecture.drawio
index ad3dd6ff..f8517718 100644
--- a/doc/schema/drawio/architecture.drawio
+++ b/doc/schema/drawio/architecture.drawio
@@ -1 +1 @@
-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
\ No newline at end of file
+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
\ No newline at end of file
diff --git a/doc/schema/drawio/architecture.pdf b/doc/schema/drawio/architecture.pdf
index ddbab2f8..5341b3dd 100644
Binary files a/doc/schema/drawio/architecture.pdf and b/doc/schema/drawio/architecture.pdf differ
diff --git a/test/common/AuthorizationModule/AuthorizationModuleCommon.js b/test/common/AuthorizationModule/AuthorizationModuleCommon.js
index 756fc95f..614a542e 100644
--- a/test/common/AuthorizationModule/AuthorizationModuleCommon.js
+++ b/test/common/AuthorizationModule/AuthorizationModuleCommon.js
@@ -2,7 +2,11 @@ const { expectEvent } = require('@openzeppelin/test-helpers')
const {
expectRevertCustomError
} = require('../../../openzeppelin-contracts-upgradeable/test/helpers/customError')
-const { PAUSER_ROLE, DEFAULT_ADMIN_ROLE, ZERO_ADDRESS } = require('../../utils')
+const {
+ PAUSER_ROLE,
+ DEFAULT_ADMIN_ROLE,
+ ZERO_ADDRESS
+} = require('../../utils')
const chai = require('chai')
const should = chai.should()
function AuthorizationModuleCommon (admin, address1, address2) {
diff --git a/test/common/AuthorizationModule/AuthorizationModuleSetAuthorizationEngineCommon.js b/test/common/AuthorizationModule/AuthorizationModuleSetAuthorizationEngineCommon.js
index 0f691ac4..a2539d74 100644
--- a/test/common/AuthorizationModule/AuthorizationModuleSetAuthorizationEngineCommon.js
+++ b/test/common/AuthorizationModule/AuthorizationModuleSetAuthorizationEngineCommon.js
@@ -5,13 +5,20 @@ const {
const { DEFAULT_ADMIN_ROLE } = require('../../utils.js')
const { should } = require('chai').should()
-function AuthorizationModuleSetAuthorizationEngineCommon (admin, address1, authorizationEngine) {
+function AuthorizationModuleSetAuthorizationEngineCommon (
+ admin,
+ address1,
+ authorizationEngine
+) {
context('AuthorizationEngineSetTest', function () {
it('testCanBeSetByAdminIfNotAlreadySet', async function () {
// Act
- this.logs = await this.cmtat.setAuthorizationEngine(this.authorizationEngineMock.address, {
- from: admin
- })
+ this.logs = await this.cmtat.setAuthorizationEngine(
+ this.authorizationEngineMock.address,
+ {
+ from: admin
+ }
+ )
// Assert
// emits a RuleEngineSet event
expectEvent(this.logs, 'AuthorizationEngine', {
@@ -21,14 +28,20 @@ function AuthorizationModuleSetAuthorizationEngineCommon (admin, address1, autho
it('testCannotBeSetByAdminIfAlreadySet', async function () {
// Arrange
- await this.cmtat.setAuthorizationEngine(this.authorizationEngineMock.address, {
- from: admin
- })
+ await this.cmtat.setAuthorizationEngine(
+ this.authorizationEngineMock.address,
+ {
+ from: admin
+ }
+ )
// Act
await expectRevertCustomError(
- this.cmtat.setAuthorizationEngine(this.authorizationEngineMock.address, {
- from: admin
- }),
+ this.cmtat.setAuthorizationEngine(
+ this.authorizationEngineMock.address,
+ {
+ from: admin
+ }
+ ),
'CMTAT_AuthorizationModule_AuthorizationEngineAlreadySet',
[]
)
@@ -37,7 +50,10 @@ function AuthorizationModuleSetAuthorizationEngineCommon (admin, address1, autho
it('testCannotNonAdminSetAuthorizationEngine', async function () {
// Act
await expectRevertCustomError(
- this.cmtat.setAuthorizationEngine(this.authorizationEngineMock.address, { from: address1 }),
+ this.cmtat.setAuthorizationEngine(
+ this.authorizationEngineMock.address,
+ { from: address1 }
+ ),
'AccessControlUnauthorizedAccount',
[address1, DEFAULT_ADMIN_ROLE]
)
@@ -48,19 +64,27 @@ function AuthorizationModuleSetAuthorizationEngineCommon (admin, address1, autho
// Arrange
await this.authorizationEngineMock.authorizeAdminChange(address1)
// Act
- await this.cmtat.setAuthorizationEngine(this.authorizationEngineMock.address, { from: admin })
+ await this.cmtat.setAuthorizationEngine(
+ this.authorizationEngineMock.address,
+ { from: admin }
+ )
// Assert
this.logs = await this.cmtat.grantRole(DEFAULT_ADMIN_ROLE, address1, {
from: admin
});
// Assert
- (await this.cmtat.hasRole(DEFAULT_ADMIN_ROLE, address1)).should.equal(true)
+ (await this.cmtat.hasRole(DEFAULT_ADMIN_ROLE, address1)).should.equal(
+ true
+ )
})
// Mock
it('testCannotTransferAdminIfNotAuthorizedByTheEngine', async function () {
// Arrange
- await this.cmtat.setAuthorizationEngine(this.authorizationEngineMock.address, { from: admin })
+ await this.cmtat.setAuthorizationEngine(
+ this.authorizationEngineMock.address,
+ { from: admin }
+ )
// Act
await expectRevertCustomError(
this.cmtat.grantRole(DEFAULT_ADMIN_ROLE, address1, {
@@ -75,19 +99,27 @@ function AuthorizationModuleSetAuthorizationEngineCommon (admin, address1, autho
// Arrange
await this.authorizationEngineMock.authorizeAdminChange(address1)
// Act
- await this.cmtat.setAuthorizationEngine(this.authorizationEngineMock.address, { from: admin })
+ await this.cmtat.setAuthorizationEngine(
+ this.authorizationEngineMock.address,
+ { from: admin }
+ )
// Assert
this.logs = await this.cmtat.revokeRole(DEFAULT_ADMIN_ROLE, address1, {
from: admin
});
// Assert
- (await this.cmtat.hasRole(DEFAULT_ADMIN_ROLE, address1)).should.equal(false)
+ (await this.cmtat.hasRole(DEFAULT_ADMIN_ROLE, address1)).should.equal(
+ false
+ )
})
// Mock
it('testCannotRevokeAdminIfNotAuthorizedByTheEngine', async function () {
// Arrange
- await this.cmtat.setAuthorizationEngine(this.authorizationEngineMock.address, { from: admin })
+ await this.cmtat.setAuthorizationEngine(
+ this.authorizationEngineMock.address,
+ { from: admin }
+ )
await this.authorizationEngineMock.setRevokeAdminRoleAuthorized(false)
// Act
await expectRevertCustomError(
diff --git a/test/common/ERC20BaseModuleCommon.js b/test/common/ERC20BaseModuleCommon.js
index 13283856..7a16ec1e 100644
--- a/test/common/ERC20BaseModuleCommon.js
+++ b/test/common/ERC20BaseModuleCommon.js
@@ -33,26 +33,16 @@ function ERC20BaseModuleCommon (admin, address1, address2, address3, proxyTest)
it('testHasTheCorrectBalanceInfo', async function () {
// Act + Assert
// Assert
- let ADDRESSES = [address1, address2, address3 ];
- let result = await this.cmtat.balanceInfo(ADDRESSES);
- result[0][0].should.be.bignumber.equal(
- TOKEN_AMOUNTS[0]
- );
- result[0][1].should.be.bignumber.equal(
- TOKEN_AMOUNTS[1]
- );
- result[1].should.be.bignumber.equal(
- TOKEN_INITIAL_SUPPLY
- );
+ const ADDRESSES = [address1, address2, address3]
+ let result = await this.cmtat.balanceInfo(ADDRESSES)
+ result[0][0].should.be.bignumber.equal(TOKEN_AMOUNTS[0])
+ result[0][1].should.be.bignumber.equal(TOKEN_AMOUNTS[1])
+ result[1].should.be.bignumber.equal(TOKEN_INITIAL_SUPPLY)
- let ADDRESSES2 = [];
- result = await this.cmtat.balanceInfo(ADDRESSES2);
- BN(result[0].length).should.be.bignumber.equal(
- BN(0)
- );
- result[1].should.be.bignumber.equal(
- TOKEN_INITIAL_SUPPLY
- )
+ const ADDRESSES2 = []
+ result = await this.cmtat.balanceInfo(ADDRESSES2)
+ BN(result[0].length).should.be.bignumber.equal(BN(0))
+ result[1].should.be.bignumber.equal(TOKEN_INITIAL_SUPPLY)
})
})
diff --git a/test/common/ERC20BurnModuleCommon.js b/test/common/ERC20BurnModuleCommon.js
index 6f41bb96..73363ef8 100644
--- a/test/common/ERC20BurnModuleCommon.js
+++ b/test/common/ERC20BurnModuleCommon.js
@@ -1,5 +1,10 @@
const { BN, expectEvent } = require('@openzeppelin/test-helpers')
-const { BURNER_ROLE, BURNER_FROM_ROLE, MINTER_ROLE, ZERO_ADDRESS } = require('../utils')
+const {
+ BURNER_ROLE,
+ BURNER_FROM_ROLE,
+ MINTER_ROLE,
+ ZERO_ADDRESS
+} = require('../utils')
const {
expectRevertCustomError
} = require('../../openzeppelin-contracts-upgradeable/test/helpers/customError.js')
@@ -134,7 +139,9 @@ function ERC20BurnModuleCommon (admin, address1, address2, address3) {
await this.cmtat.grantRole(BURNER_FROM_ROLE, address2, { from: admin })
await this.cmtat.approve(address2, 50, { from: address1 })
// Act
- this.logs = await this.cmtat.burnFrom(address1, AMOUNT_TO_BURN, { from: address2 })
+ this.logs = await this.cmtat.burnFrom(address1, AMOUNT_TO_BURN, {
+ from: address2
+ })
// Assert
expectEvent(this.logs, 'Transfer', {
from: address1,
@@ -155,14 +162,16 @@ function ERC20BurnModuleCommon (admin, address1, address2, address3) {
await expectRevertCustomError(
this.cmtat.burnFrom(address1, AMOUNT_TO_BURN, { from: admin }),
'ERC20InsufficientAllowance',
- [admin, 0, AMOUNT_TO_BURN])
+ [admin, 0, AMOUNT_TO_BURN]
+ )
})
it('testCannotBeBurntWithoutBurnerFromRole', async function () {
await expectRevertCustomError(
this.cmtat.burnFrom(address1, 20, { from: address2 }),
'AccessControlUnauthorizedAccount',
- [address2, BURNER_FROM_ROLE])
+ [address2, BURNER_FROM_ROLE]
+ )
})
})
@@ -185,7 +194,14 @@ function ERC20BurnModuleCommon (admin, address1, address2, address3) {
await this.cmtat.grantRole(MINTER_ROLE, address2, { from: admin })
// await this.cmtat.approve(address2, 50, { from: address1 })
// Act
- this.logs = await this.cmtat.burnAndMint(address1, address3, AMOUNT_TO_BURN, AMOUNT_TO_MINT, 'recovery', { from: address2 })
+ this.logs = await this.cmtat.burnAndMint(
+ address1,
+ address3,
+ AMOUNT_TO_BURN,
+ AMOUNT_TO_MINT,
+ 'recovery',
+ { from: address2 }
+ )
// Assert
expectEvent(this.logs, 'Transfer', {
from: address1,
@@ -208,9 +224,15 @@ function ERC20BurnModuleCommon (admin, address1, address2, address3) {
account: address3,
value: AMOUNT_TO_MINT
});
- (await this.cmtat.balanceOf(address1)).should.be.bignumber.equal(INITIAL_SUPPLY.sub(AMOUNT_TO_BURN));
- (await this.cmtat.balanceOf(address3)).should.be.bignumber.equal(AMOUNT_TO_MINT);
- (await this.cmtat.totalSupply()).should.be.bignumber.equal(INITIAL_SUPPLY.sub(AMOUNT_TO_BURN).add(AMOUNT_TO_MINT))
+ (await this.cmtat.balanceOf(address1)).should.be.bignumber.equal(
+ INITIAL_SUPPLY.sub(AMOUNT_TO_BURN)
+ );
+ (await this.cmtat.balanceOf(address3)).should.be.bignumber.equal(
+ AMOUNT_TO_MINT
+ );
+ (await this.cmtat.totalSupply()).should.be.bignumber.equal(
+ INITIAL_SUPPLY.sub(AMOUNT_TO_BURN).add(AMOUNT_TO_MINT)
+ )
})
it('canBeBurnAndMintWithoutMinterRole', async function () {
@@ -221,9 +243,17 @@ function ERC20BurnModuleCommon (admin, address1, address2, address3) {
// await this.cmtat.approve(address2, 50, { from: address1 })
// Act
await expectRevertCustomError(
- this.cmtat.burnAndMint(address1, address3, AMOUNT_TO_BURN, AMOUNT_TO_MINT, 'recovery', { from: address2 }),
+ this.cmtat.burnAndMint(
+ address1,
+ address3,
+ AMOUNT_TO_BURN,
+ AMOUNT_TO_MINT,
+ 'recovery',
+ { from: address2 }
+ ),
'AccessControlUnauthorizedAccount',
- [address2, MINTER_ROLE])
+ [address2, MINTER_ROLE]
+ )
})
it('canBeBurnAndMintWithoutBurnerRole', async function () {
@@ -234,9 +264,17 @@ function ERC20BurnModuleCommon (admin, address1, address2, address3) {
// await this.cmtat.approve(address2, 50, { from: address1 })
// Assert
await expectRevertCustomError(
- this.cmtat.burnAndMint(address1, address3, AMOUNT_TO_BURN, AMOUNT_TO_MINT, 'recovery', { from: address2 }),
+ this.cmtat.burnAndMint(
+ address1,
+ address3,
+ AMOUNT_TO_BURN,
+ AMOUNT_TO_MINT,
+ 'recovery',
+ { from: address2 }
+ ),
'AccessControlUnauthorizedAccount',
- [address2, BURNER_ROLE])
+ [address2, BURNER_ROLE]
+ )
})
})
@@ -371,12 +409,9 @@ function ERC20BurnModuleCommon (admin, address1, address2, address3) {
const ADDRESS2_BALANCE = await this.cmtat.balanceOf(address2)
// Act
await expectRevertCustomError(
- this.cmtat.burnBatch(
- TOKEN_HOLDER,
- TOKEN_BY_HOLDERS_TO_BURN_FAIL,
- '',
- { from: admin }
- ),
+ this.cmtat.burnBatch(TOKEN_HOLDER, TOKEN_BY_HOLDERS_TO_BURN_FAIL, '', {
+ from: admin
+ }),
'ERC20InsufficientBalance',
[address2, ADDRESS2_BALANCE, TOKEN_BY_HOLDERS_TO_BURN_FAIL[2]]
)
diff --git a/test/common/ERC20SnapshotModuleCommon/ERC20SnapshotModuleCommonRescheduling.js b/test/common/ERC20SnapshotModuleCommon/ERC20SnapshotModuleCommonRescheduling.js
index 63aaa933..bc687140 100644
--- a/test/common/ERC20SnapshotModuleCommon/ERC20SnapshotModuleCommonRescheduling.js
+++ b/test/common/ERC20SnapshotModuleCommon/ERC20SnapshotModuleCommonRescheduling.js
@@ -13,7 +13,12 @@ const {
checkArraySnapshot
} = require('./ERC20SnapshotModuleUtils/ERC20SnapshotModuleUtils')
-function ERC20SnapshotModuleCommonRescheduling (owner, address1, address2, address3) {
+function ERC20SnapshotModuleCommonRescheduling (
+ owner,
+ address1,
+ address2,
+ address3
+) {
context('Snapshot rescheduling', function () {
beforeEach(async function () {
this.currentTime = await time.latest()
diff --git a/test/common/ERC20SnapshotModuleCommon/ERC20SnapshotModuleCommonScheduling.js b/test/common/ERC20SnapshotModuleCommon/ERC20SnapshotModuleCommonScheduling.js
index b5e21ce0..b86f5a0c 100644
--- a/test/common/ERC20SnapshotModuleCommon/ERC20SnapshotModuleCommonScheduling.js
+++ b/test/common/ERC20SnapshotModuleCommon/ERC20SnapshotModuleCommonScheduling.js
@@ -12,7 +12,12 @@ const {
checkArraySnapshot
} = require('./ERC20SnapshotModuleUtils/ERC20SnapshotModuleUtils')
-function ERC20SnapshotModuleCommonScheduling (owner, address1, address2, address3) {
+function ERC20SnapshotModuleCommonScheduling (
+ owner,
+ address1,
+ address2,
+ address3
+) {
context('Snapshot scheduling', function () {
beforeEach(async function () {
this.currentTime = await time.latest()
@@ -50,7 +55,9 @@ function ERC20SnapshotModuleCommonScheduling (owner, address1, address2, address
this.logs = await this.cmtat.scheduleSnapshot(SNAPSHOT_TIME, {
from: owner
})
- const SNAPSHOT_TIME_INVALID = SNAPSHOT_TIME.sub(time.duration.seconds(60))
+ const SNAPSHOT_TIME_INVALID = SNAPSHOT_TIME.sub(
+ time.duration.seconds(60)
+ )
await expectRevertCustomError(
this.cmtat.scheduleSnapshot(SNAPSHOT_TIME_INVALID, {
from: owner
diff --git a/test/common/ERC20SnapshotModuleCommon/ERC20SnapshotModuleCommonUnschedule.js b/test/common/ERC20SnapshotModuleCommon/ERC20SnapshotModuleCommonUnschedule.js
index 58a45585..a42b8256 100644
--- a/test/common/ERC20SnapshotModuleCommon/ERC20SnapshotModuleCommonUnschedule.js
+++ b/test/common/ERC20SnapshotModuleCommon/ERC20SnapshotModuleCommonUnschedule.js
@@ -13,7 +13,12 @@ const {
checkArraySnapshot
} = require('./ERC20SnapshotModuleUtils/ERC20SnapshotModuleUtils')
-function ERC20SnapshotModuleCommonUnschedule (owner, address1, address2, address3) {
+function ERC20SnapshotModuleCommonUnschedule (
+ owner,
+ address1,
+ address2,
+ address3
+) {
context('unscheduleSnapshotNotOptimized', function () {
beforeEach(async function () {
this.currentTime = await time.latest()
diff --git a/test/common/ERC20SnapshotModuleCommon/ERC20SnapshotModuleUtils/ERC20SnapshotModuleUtils.js b/test/common/ERC20SnapshotModuleCommon/ERC20SnapshotModuleUtils/ERC20SnapshotModuleUtils.js
index e0a8f18a..ce96fa64 100644
--- a/test/common/ERC20SnapshotModuleCommon/ERC20SnapshotModuleUtils/ERC20SnapshotModuleUtils.js
+++ b/test/common/ERC20SnapshotModuleCommon/ERC20SnapshotModuleUtils/ERC20SnapshotModuleUtils.js
@@ -11,24 +11,29 @@ async function checkSnapshot (time, totalSupply, addresses, balances) {
// Values before the snapshot
(await this.cmtat.snapshotTotalSupply(time)).should.be.bignumber.equal(
totalSupply
- );
- const result = await this.cmtat.methods['snapshotInfoBatch(uint256,address[])'](time, addresses);
+ )
+ const result = await this.cmtat.methods[
+ 'snapshotInfoBatch(uint256,address[])'
+ ](time, addresses)
const times = [time]
- const result2 = await this.cmtat.methods['snapshotInfoBatch(uint256[],address[])'](times, addresses);
+ const result2 = await this.cmtat.methods[
+ 'snapshotInfoBatch(uint256[],address[])'
+ ](times, addresses)
for (let i = 0; i < balances.length; ++i) {
(
await this.cmtat.snapshotBalanceOf(time, addresses[i])
).should.be.bignumber.equal(balances[i])
- await this.cmtat.snapshotInfo(time, addresses[i]);
- const { 0: ownerBalance, 1: totalSupplyGet } = await this.cmtat.snapshotInfo(time, addresses[i]);
+ await this.cmtat.snapshotInfo(time, addresses[i])
+ const { 0: ownerBalance, 1: totalSupplyGet } =
+ await this.cmtat.snapshotInfo(time, addresses[i])
// const [ownerBalance, totalSupplyGet]
ownerBalance.should.be.bignumber.equal(balances[i])
result[0][i].should.be.bignumber.equal(balances[i])
- result2[0][0][i].should.be.bignumber.equal(balances[i]);
+ result2[0][0][i].should.be.bignumber.equal(balances[i])
totalSupplyGet.should.be.bignumber.equal(totalSupply)
}
- result[1].should.be.bignumber.equal(totalSupply);
- result2[1][0].should.be.bignumber.equal(totalSupply);
+ result[1].should.be.bignumber.equal(totalSupply)
+ result2[1][0].should.be.bignumber.equal(totalSupply)
}
async function checkArraySnapshot (snapshots, snapshotsValue) {
diff --git a/test/common/ERC20SnapshotModuleCommon/global/ERC20SnapshotModuleMultiplePlannedTest.js b/test/common/ERC20SnapshotModuleCommon/global/ERC20SnapshotModuleMultiplePlannedTest.js
index 3b9e9fcd..c4128811 100644
--- a/test/common/ERC20SnapshotModuleCommon/global/ERC20SnapshotModuleMultiplePlannedTest.js
+++ b/test/common/ERC20SnapshotModuleCommon/global/ERC20SnapshotModuleMultiplePlannedTest.js
@@ -1,6 +1,8 @@
const { time, BN } = require('@openzeppelin/test-helpers')
const { should } = require('chai').should()
-const { checkSnapshot } = require('../ERC20SnapshotModuleUtils/ERC20SnapshotModuleUtils')
+const {
+ checkSnapshot
+} = require('../ERC20SnapshotModuleUtils/ERC20SnapshotModuleUtils')
function ERC20SnapshotModuleMultiplePlannedTest (
admin,
diff --git a/test/common/ERC20SnapshotModuleCommon/global/ERC20SnapshotModuleOnePlannedSnapshotTest.js b/test/common/ERC20SnapshotModuleCommon/global/ERC20SnapshotModuleOnePlannedSnapshotTest.js
index 989f26d9..83c03981 100644
--- a/test/common/ERC20SnapshotModuleCommon/global/ERC20SnapshotModuleOnePlannedSnapshotTest.js
+++ b/test/common/ERC20SnapshotModuleCommon/global/ERC20SnapshotModuleOnePlannedSnapshotTest.js
@@ -1,6 +1,8 @@
const { time } = require('@openzeppelin/test-helpers')
const { should } = require('chai').should()
-const { checkSnapshot } = require('../ERC20SnapshotModuleUtils/ERC20SnapshotModuleUtils')
+const {
+ checkSnapshot
+} = require('../ERC20SnapshotModuleUtils/ERC20SnapshotModuleUtils')
const reason = 'BURN_TEST'
function ERC20SnapshotModuleOnePlannedSnapshotTest (
diff --git a/test/common/ERC20SnapshotModuleCommon/global/ERC20SnapshotModuleZeroPlannedSnapshot.js b/test/common/ERC20SnapshotModuleCommon/global/ERC20SnapshotModuleZeroPlannedSnapshot.js
index eac3d097..be02a075 100644
--- a/test/common/ERC20SnapshotModuleCommon/global/ERC20SnapshotModuleZeroPlannedSnapshot.js
+++ b/test/common/ERC20SnapshotModuleCommon/global/ERC20SnapshotModuleZeroPlannedSnapshot.js
@@ -1,6 +1,8 @@
const { time } = require('@openzeppelin/test-helpers')
const { should } = require('chai').should()
-const { checkSnapshot } = require('../ERC20SnapshotModuleUtils/ERC20SnapshotModuleUtils')
+const {
+ checkSnapshot
+} = require('../ERC20SnapshotModuleUtils/ERC20SnapshotModuleUtils')
function ERC20SnapshotModuleCommonGlobal (admin, address1, address2, address3) {
context('zeroPlannedSnapshotTest', function () {
diff --git a/test/common/EnforcementModuleCommon.js b/test/common/EnforcementModuleCommon.js
index 60cf5127..1c7fd267 100644
--- a/test/common/EnforcementModuleCommon.js
+++ b/test/common/EnforcementModuleCommon.js
@@ -62,7 +62,9 @@ function EnforcementModuleCommon (owner, address1, address2, address3) {
});
// Act + Assert
// Act + Assert
- (await this.cmtat.validateTransfer(address1, address2, 10)).should.be.equal(false);
+ (
+ await this.cmtat.validateTransfer(address1, address2, 10)
+ ).should.be.equal(false);
// Assert
(await this.cmtat.frozen(address1)).should.equal(true)
@@ -198,9 +200,7 @@ function EnforcementModuleCommon (owner, address1, address2, address3) {
from: owner
})
// Assert
- expectEvent.notEmitted(
- this.logs,
- 'Freeze');
+ expectEvent.notEmitted(this.logs, 'Freeze');
(await this.cmtat.frozen(address1)).should.equal(true)
})
@@ -213,17 +213,11 @@ function EnforcementModuleCommon (owner, address1, address2, address3) {
await this.cmtat.unfreeze(address1, reasonFreeze, { from: owner })
// Act
- this.logs = await this.cmtat.unfreeze(
- address1,
- reasonUnfreeze,
- {
- from: owner
- }
- )
+ this.logs = await this.cmtat.unfreeze(address1, reasonUnfreeze, {
+ from: owner
+ })
// Assert
- expectEvent.notEmitted(
- this.logs,
- 'Unfreeze');
+ expectEvent.notEmitted(this.logs, 'Unfreeze');
(await this.cmtat.frozen(address1)).should.equal(false)
})
})
diff --git a/test/common/PauseModuleCommon.js b/test/common/PauseModuleCommon.js
index 82d90264..3a7babb5 100644
--- a/test/common/PauseModuleCommon.js
+++ b/test/common/PauseModuleCommon.js
@@ -104,7 +104,13 @@ function PauseModuleCommon (admin, address1, address2, address3) {
// Act
await this.cmtat.pause({ from: admin });
// Act + Assert
- (await this.cmtat.validateTransfer(address1, address2, AMOUNT_TO_TRANSFER)).should.be.equal(false);
+ (
+ await this.cmtat.validateTransfer(
+ address1,
+ address2,
+ AMOUNT_TO_TRANSFER
+ )
+ ).should.be.equal(false);
// Assert
(
await this.cmtat.detectTransferRestriction(
diff --git a/test/common/ValidationModule/ValidationModuleCommon.js b/test/common/ValidationModule/ValidationModuleCommon.js
index f733f41e..04be0b0b 100644
--- a/test/common/ValidationModule/ValidationModuleCommon.js
+++ b/test/common/ValidationModule/ValidationModuleCommon.js
@@ -31,7 +31,9 @@ function ValidationModuleCommon (
from: admin
});
// Act + Assert
- (await this.cmtat.validateTransfer(address1, address2, 10)).should.be.equal(true)
+ (
+ await this.cmtat.validateTransfer(address1, address2, 10)
+ ).should.be.equal(true)
})
it('testCanDetectTransferRestrictionValidTransfer', async function () {
@@ -39,7 +41,9 @@ function ValidationModuleCommon (
(
await this.cmtat.detectTransferRestriction(address1, address2, 11)
).should.be.bignumber.equal('0');
- (await this.cmtat.validateTransfer(address1, address2, 11)).should.be.equal(true)
+ (
+ await this.cmtat.validateTransfer(address1, address2, 11)
+ ).should.be.equal(true)
})
it('testCanReturnMessageValidTransfer', async function () {
@@ -59,8 +63,13 @@ function ValidationModuleCommon (
)
).should.be.bignumber.equal('10');
- (await this.cmtat.validateTransfer(address1, address2, RULE_MOCK_AMOUNT_MAX + 1))
- .should.be.equal(false)
+ (
+ await this.cmtat.validateTransfer(
+ address1,
+ address2,
+ RULE_MOCK_AMOUNT_MAX + 1
+ )
+ ).should.be.equal(false)
})
it('testCanReturnMessageWithAmountTooHigh', async function () {
@@ -81,7 +90,13 @@ function ValidationModuleCommon (
it('testCanTransferAllowedByRule', async function () {
const AMOUNT_TO_TRANSFER = 11;
// Act
- (await this.cmtat.validateTransfer(address1, address2, AMOUNT_TO_TRANSFER)).should.be.equal(true)
+ (
+ await this.cmtat.validateTransfer(
+ address1,
+ address2,
+ AMOUNT_TO_TRANSFER
+ )
+ ).should.be.equal(true)
// Act
await this.cmtat.transfer(address2, AMOUNT_TO_TRANSFER, {
from: address1
@@ -102,7 +117,13 @@ function ValidationModuleCommon (
it('testCannotTransferIfNotAllowedByRule', async function () {
const AMOUNT_TO_TRANSFER = RULE_MOCK_AMOUNT_MAX + 1;
// Act
- (await this.cmtat.validateTransfer(address1, address2, AMOUNT_TO_TRANSFER)).should.be.equal(false)
+ (
+ await this.cmtat.validateTransfer(
+ address1,
+ address2,
+ AMOUNT_TO_TRANSFER
+ )
+ ).should.be.equal(false)
// Act
await expectRevertCustomError(
this.cmtat.transfer(address2, AMOUNT_TO_TRANSFER, { from: address1 }),
diff --git a/test/deploymentUtils.js b/test/deploymentUtils.js
index 0c4c786a..041da677 100644
--- a/test/deploymentUtils.js
+++ b/test/deploymentUtils.js
@@ -1,8 +1,6 @@
const { ZERO_ADDRESS } = require('./utils')
const CMTAT_STANDALONE = artifacts.require('CMTAT_STANDALONE')
-const CMTAT_STANDALONE_SNAPSHOT = artifacts.require(
- 'CMTAT_STANDALONE'
-)
+const CMTAT_STANDALONE_SNAPSHOT = artifacts.require('CMTAT_STANDALONE')
const CMTAT_PROXY = artifacts.require('CMTAT_PROXY')
// const CMTAT_PROXY_SNAPSHOT_TRUFFLE = artifacts.require('CMTATSnapshotProxyTest')
const CMTAT_PROXY_SNAPSHOT_TRUFFLE = artifacts.require('CMTAT_PROXY')
@@ -29,10 +27,13 @@ async function deployCMTATStandalone (_, admin, deployerAddress) {
return cmtat
}
-async function deployCMTATProxyImplementation (deployerAddress, forwarderIrrevocable) {
- const cmtat = await CMTAT_PROXY.new(forwarderIrrevocable,
- { from: deployerAddress }
- )
+async function deployCMTATProxyImplementation (
+ deployerAddress,
+ forwarderIrrevocable
+) {
+ const cmtat = await CMTAT_PROXY.new(forwarderIrrevocable, {
+ from: deployerAddress
+ })
return cmtat
}
diff --git a/test/proxy/general/Beacon.test.js b/test/proxy/general/Beacon.test.js
index 3a64cd3c..f8746b11 100644
--- a/test/proxy/general/Beacon.test.js
+++ b/test/proxy/general/Beacon.test.js
@@ -1,5 +1,4 @@
-const CMTAT_BEACON_FACTORY = artifacts.require(
- 'CMTAT_BEACON_FACTORY')
+const CMTAT_BEACON_FACTORY = artifacts.require('CMTAT_BEACON_FACTORY')
const { should } = require('chai').should()
const {
expectRevertCustomError
@@ -7,7 +6,10 @@ const {
const CMTAT = artifacts.require('CMTAT_PROXY')
const { DEFAULT_ADMIN_ROLE, CMTAT_DEPLOYER_ROLE } = require('../../utils')
const { ZERO_ADDRESS } = require('../../utils')
-const { DEPLOYMENT_FLAG, deployCMTATProxyImplementation } = require('../../deploymentUtils')
+const {
+ DEPLOYMENT_FLAG,
+ deployCMTATProxyImplementation
+} = require('../../deploymentUtils')
const { upgrades } = require('hardhat')
const DEPLOYMENT_DECIMAL = 0
const { BN, expectEvent } = require('@openzeppelin/test-helpers')
@@ -15,20 +17,29 @@ contract(
'Proxy - Security Test',
function ([_, admin, attacker, deployerAddress]) {
beforeEach(async function () {
- this.CMTAT_PROXY_IMPL = await deployCMTATProxyImplementation(_, deployerAddress)
- this.FACTORY = await CMTAT_BEACON_FACTORY.new(this.CMTAT_PROXY_IMPL.address, admin, admin)
+ this.CMTAT_PROXY_IMPL = await deployCMTATProxyImplementation(
+ _,
+ deployerAddress
+ )
+ this.FACTORY = await CMTAT_BEACON_FACTORY.new(
+ this.CMTAT_PROXY_IMPL.address,
+ admin,
+ admin
+ )
})
context('FactoryDeployment', function () {
it('testCanReturnTheRightImplementation', async function () {
// Act + Assert
- (await this.FACTORY.implementation()).should.equal(this.CMTAT_PROXY_IMPL.address)
+ (await this.FACTORY.implementation()).should.equal(
+ this.CMTAT_PROXY_IMPL.address
+ )
})
})
context('Deploy CMTAT with Factory', function () {
it('testCannotBeDeployedByAttacker', async function () {
- // Act
+ // Act
await expectRevertCustomError(
this.FACTORY.deployCMTAT(
admin,
@@ -40,12 +51,13 @@ contract(
'https://cmta.ch',
ZERO_ADDRESS,
'CMTAT_info',
- DEPLOYMENT_FLAG, { from: attacker }),
+ DEPLOYMENT_FLAG,
+ { from: attacker }
+ ),
'AccessControlUnauthorizedAccount',
[attacker, CMTAT_DEPLOYER_ROLE]
)
})
- // Here the argument to indicate if it is deployed with a proxy, set at false by the attacker
it('testCanDeployCMTATWithFactory', async function () {
// Act
this.logs = await this.FACTORY.deployCMTAT(
@@ -58,12 +70,14 @@ contract(
'https://cmta.ch',
ZERO_ADDRESS,
'CMTAT_info',
- DEPLOYMENT_FLAG, {
+ DEPLOYMENT_FLAG,
+ {
from: admin
- });
+ }
+ )
// Check Id increment
- (this.logs.logs[1].args[1]).should.be.bignumber.equal(BN(0))
+ this.logs.logs[1].args[1].should.be.bignumber.equal(BN(0))
// Assert
const CMTAT_ADDRESS = this.logs.logs[1].args[0];
// Check address with ID
@@ -83,11 +97,13 @@ contract(
'https://cmta.ch',
ZERO_ADDRESS,
'CMTAT_info',
- DEPLOYMENT_FLAG, {
+ DEPLOYMENT_FLAG,
+ {
from: admin
- });
+ }
+ )
// Check Id increment
- (this.logs.logs[1].args[1]).should.be.bignumber.equal(BN(1))
+ this.logs.logs[1].args[1].should.be.bignumber.equal(BN(1))
})
})
}
diff --git a/test/proxy/general/BeaconFactoryDeploy.test copy.js b/test/proxy/general/BeaconFactoryDeploy.test copy.js
new file mode 100644
index 00000000..d48bf1d8
--- /dev/null
+++ b/test/proxy/general/BeaconFactoryDeploy.test copy.js
@@ -0,0 +1,60 @@
+const CMTAT_BEACON_FACTORY = artifacts.require('CMTAT_BEACON_FACTORY')
+const { should } = require('chai').should()
+const {
+ expectRevertCustomError
+} = require('../../../openzeppelin-contracts-upgradeable/test/helpers/customError.js')
+const CMTAT = artifacts.require('CMTAT_PROXY')
+const { DEFAULT_ADMIN_ROLE, CMTAT_DEPLOYER_ROLE } = require('../../utils.js')
+const { ZERO_ADDRESS } = require('../../utils.js')
+const {
+ DEPLOYMENT_FLAG,
+ deployCMTATProxyImplementation
+} = require('../../deploymentUtils.js')
+const { upgrades } = require('hardhat')
+const DEPLOYMENT_DECIMAL = 0
+const { BN, expectEvent } = require('@openzeppelin/test-helpers')
+contract(
+ 'Deploy Beacon with Factory',
+ function ([_, admin, attacker, deployerAddress]) {
+ beforeEach(async function () {
+ this.CMTAT_PROXY_IMPL = await deployCMTATProxyImplementation(
+ _,
+ deployerAddress
+ )
+ })
+
+ context('BeaconDeployment', function () {
+ it('testCannotDeployIfImplementationIsZero', async function () {
+ await expectRevertCustomError(
+ CMTAT_BEACON_FACTORY.new(ZERO_ADDRESS, admin, admin, { from: admin }),
+ 'CMTAT_Factory_AddressZeroNotAllowedForLogicContract',
+ []
+ )
+ })
+ it('testCannotDeployIfFactoryAdminIsZero', async function () {
+ await expectRevertCustomError(
+ CMTAT_BEACON_FACTORY.new(
+ this.CMTAT_PROXY_IMPL.address,
+ ZERO_ADDRESS,
+ admin,
+ { from: admin }
+ ),
+ 'CMTAT_Factory_AddressZeroNotAllowedForFactoryAdmin',
+ []
+ )
+ })
+ it('testCannotDeployIfBeaconOwnerIsZero', async function () {
+ await expectRevertCustomError(
+ CMTAT_BEACON_FACTORY.new(
+ this.CMTAT_PROXY_IMPL.address,
+ admin,
+ ZERO_ADDRESS,
+ { from: admin }
+ ),
+ 'CMTAT_Factory_AddressZeroNotAllowedForBeaconOwner',
+ []
+ )
+ })
+ })
+ }
+)
diff --git a/test/proxy/general/Proxy.test.js b/test/proxy/general/Proxy.test.js
index b2ceb818..f75fd9b0 100644
--- a/test/proxy/general/Proxy.test.js
+++ b/test/proxy/general/Proxy.test.js
@@ -26,7 +26,6 @@ contract(
})
context('Attacker', function () {
- // Here the argument to indicate if it is deployed with a proxy, set at false by the attacker
it('testCannotBeTakenControlByAttacker', async function () {
// Act
await expectRevertCustomError(
diff --git a/test/proxy/general/Transparent.test.js b/test/proxy/general/Transparent.test.js
index 8b090985..e99f2ab4 100644
--- a/test/proxy/general/Transparent.test.js
+++ b/test/proxy/general/Transparent.test.js
@@ -1,29 +1,44 @@
-const CMTAT_TP_FACTORY = artifacts.require(
- 'CMTAT_TP_FACTORY')
+const CMTAT_TP_FACTORY = artifacts.require('CMTAT_TP_FACTORY')
const { should } = require('chai').should()
const {
expectRevertCustomError
} = require('../../../openzeppelin-contracts-upgradeable/test/helpers/customError.js')
const CMTAT = artifacts.require('CMTAT_PROXY')
-const { DEFAULT_ADMIN_ROLE, PAUSER_ROLE, CMTAT_DEPLOYER_ROLE } = require('../../utils.js')
+const {
+ DEFAULT_ADMIN_ROLE,
+ PAUSER_ROLE,
+ CMTAT_DEPLOYER_ROLE
+} = require('../../utils.js')
const { ZERO_ADDRESS } = require('../../utils.js')
const DECIMAL = 0
-const { deployCMTATProxy, DEPLOYMENT_FLAG, deployCMTATProxyImplementation } = require('../../deploymentUtils.js')
+const {
+ deployCMTATProxy,
+ DEPLOYMENT_FLAG,
+ deployCMTATProxyImplementation
+} = require('../../deploymentUtils.js')
const { upgrades } = require('hardhat')
const DEPLOYMENT_DECIMAL = 0
const { BN, expectEvent } = require('@openzeppelin/test-helpers')
contract(
- 'Proxy - Security Test',
+ 'Deploy TP with Factory',
function ([_, admin, attacker, deployerAddress]) {
beforeEach(async function () {
- this.CMTAT_PROXY_IMPL = await deployCMTATProxyImplementation(_, deployerAddress)
- this.FACTORY = await CMTAT_TP_FACTORY.new(this.CMTAT_PROXY_IMPL.address, admin)
+ this.CMTAT_PROXY_IMPL = await deployCMTATProxyImplementation(
+ _,
+ deployerAddress
+ )
+ this.FACTORY = await CMTAT_TP_FACTORY.new(
+ this.CMTAT_PROXY_IMPL.address,
+ admin
+ )
})
context('FactoryDeployment', function () {
it('testCanReturnTheRightImplementation', async function () {
// Act + Assert
- (await this.FACTORY.logic()).should.equal(this.CMTAT_PROXY_IMPL.address)
+ (await this.FACTORY.logic()).should.equal(
+ this.CMTAT_PROXY_IMPL.address
+ )
})
})
@@ -42,12 +57,13 @@ contract(
'https://cmta.ch',
ZERO_ADDRESS,
'CMTAT_info',
- DEPLOYMENT_FLAG, { from: attacker }),
+ DEPLOYMENT_FLAG,
+ { from: attacker }
+ ),
'AccessControlUnauthorizedAccount',
[attacker, CMTAT_DEPLOYER_ROLE]
)
})
- // Here the argument to indicate if it is deployed with a proxy, set at false by the attacker
it('testCanDeployCMTATWithFactory', async function () {
// Act
this.logs = await this.FACTORY.deployCMTAT(
@@ -61,12 +77,14 @@ contract(
'https://cmta.ch',
ZERO_ADDRESS,
'CMTAT_info',
- DEPLOYMENT_FLAG, {
+ DEPLOYMENT_FLAG,
+ {
from: admin
- });
+ }
+ )
// Assert
// Check Id
- (this.logs.logs[1].args[1]).should.be.bignumber.equal(BN(0))
+ this.logs.logs[1].args[1].should.be.bignumber.equal(BN(0))
const CMTAT_ADDRESS = this.logs.logs[1].args[0];
// Check address with ID
(await this.FACTORY.getAddress(0)).should.equal(CMTAT_ADDRESS)
@@ -86,11 +104,13 @@ contract(
'https://cmta.ch',
ZERO_ADDRESS,
'CMTAT_info',
- DEPLOYMENT_FLAG, {
+ DEPLOYMENT_FLAG,
+ {
from: admin
- });
+ }
+ )
// Check Id increment
- (this.logs.logs[1].args[1]).should.be.bignumber.equal(BN(1))
+ this.logs.logs[1].args[1].should.be.bignumber.equal(BN(1))
})
})
}
diff --git a/test/proxy/general/TransparentFactoyDeploy.test.js b/test/proxy/general/TransparentFactoyDeploy.test.js
new file mode 100644
index 00000000..524073ea
--- /dev/null
+++ b/test/proxy/general/TransparentFactoyDeploy.test.js
@@ -0,0 +1,53 @@
+const CMTAT_TP_FACTORY = artifacts.require('CMTAT_TP_FACTORY')
+const { should } = require('chai').should()
+const {
+ expectRevertCustomError
+} = require('../../../openzeppelin-contracts-upgradeable/test/helpers/customError.js')
+const CMTAT = artifacts.require('CMTAT_PROXY')
+const {
+ DEFAULT_ADMIN_ROLE,
+ PAUSER_ROLE,
+ CMTAT_DEPLOYER_ROLE
+} = require('../../utils.js')
+const { ZERO_ADDRESS } = require('../../utils.js')
+const DECIMAL = 0
+const {
+ deployCMTATProxy,
+ DEPLOYMENT_FLAG,
+ deployCMTATProxyImplementation
+} = require('../../deploymentUtils.js')
+const { upgrades } = require('hardhat')
+const DEPLOYMENT_DECIMAL = 0
+const { BN, expectEvent } = require('@openzeppelin/test-helpers')
+contract(
+ 'Deploy TP with Factory',
+ function ([_, admin, attacker, deployerAddress]) {
+ beforeEach(async function () {
+ this.CMTAT_PROXY_IMPL = await deployCMTATProxyImplementation(
+ _,
+ deployerAddress
+ )
+ // this.FACTORY = await CMTAT_TP_FACTORY.new(this.CMTAT_PROXY_IMPL.address, admin)
+ })
+
+ context('FactoryDeployment', function () {
+ it('testCannotDeployIfImplementationIsZero', async function () {
+ await expectRevertCustomError(
+ CMTAT_TP_FACTORY.new(ZERO_ADDRESS, admin, { from: admin }),
+ 'CMTAT_Factory_AddressZeroNotAllowedForLogicContract',
+ []
+ )
+ })
+
+ it('testCannotDeployIfFactoryAdminIsZero', async function () {
+ await expectRevertCustomError(
+ CMTAT_TP_FACTORY.new(this.CMTAT_PROXY_IMPL.address, ZERO_ADDRESS, {
+ from: admin
+ }),
+ 'CMTAT_Factory_AddressZeroNotAllowedForFactoryAdmin',
+ []
+ )
+ })
+ })
+ }
+)
diff --git a/test/proxy/modules/AuthorizationModule/AuthorizationModule.test.js b/test/proxy/modules/AuthorizationModule/AuthorizationModule.test.js
index 0c86064c..a109c457 100644
--- a/test/proxy/modules/AuthorizationModule/AuthorizationModule.test.js
+++ b/test/proxy/modules/AuthorizationModule/AuthorizationModule.test.js
@@ -7,7 +7,9 @@ contract(
function ([_, admin, address1, address2, deployerAddress]) {
beforeEach(async function () {
this.cmtat = await deployCMTATProxy(_, admin, deployerAddress)
- this.authorizationEngineMock = await AuthorizationEngineMock.new({ from: admin })
+ this.authorizationEngineMock = await AuthorizationEngineMock.new({
+ from: admin
+ })
})
AuthorizationModuleCommon(admin, address1, address2)
diff --git a/test/proxy/modules/ERC20SnapshotModule.test.js b/test/proxy/modules/ERC20SnapshotModule.test.js
index 2746ed01..add41917 100644
--- a/test/proxy/modules/ERC20SnapshotModule.test.js
+++ b/test/proxy/modules/ERC20SnapshotModule.test.js
@@ -18,11 +18,26 @@ contract(
)
})
ERC20SnapshotModuleMultiplePlannedTest(admin, address1, address2, address3)
- ERC20SnapshotModuleOnePlannedSnapshotTest(admin, address1, address2, address3)
- ERC20SnapshotModuleZeroPlannedSnapshotTest(admin, address1, address2, address3)
+ ERC20SnapshotModuleOnePlannedSnapshotTest(
+ admin,
+ address1,
+ address2,
+ address3
+ )
+ ERC20SnapshotModuleZeroPlannedSnapshotTest(
+ admin,
+ address1,
+ address2,
+ address3
+ )
ERC20SnapshotModuleCommonRescheduling(admin, address1, address2, address3)
ERC20SnapshotModuleCommonScheduling(admin, address1, address2, address3)
ERC20SnapshotModuleCommonUnschedule(admin, address1, address2, address3)
- ERC20SnapshotModuleCommonGetNextSnapshot(admin, address1, address2, address3)
+ ERC20SnapshotModuleCommonGetNextSnapshot(
+ admin,
+ address1,
+ address2,
+ address3
+ )
}
)
diff --git a/test/standard/modules/ERC20SnapshotModule.test.js b/test/standard/modules/ERC20SnapshotModule.test.js
index 5e01b210..dcb5e2fc 100644
--- a/test/standard/modules/ERC20SnapshotModule.test.js
+++ b/test/standard/modules/ERC20SnapshotModule.test.js
@@ -17,11 +17,26 @@ contract(
)
})
ERC20SnapshotModuleMultiplePlannedTest(admin, address1, address2, address3)
- ERC20SnapshotModuleOnePlannedSnapshotTest(admin, address1, address2, address3)
- ERC20SnapshotModuleZeroPlannedSnapshotTest(admin, address1, address2, address3)
+ ERC20SnapshotModuleOnePlannedSnapshotTest(
+ admin,
+ address1,
+ address2,
+ address3
+ )
+ ERC20SnapshotModuleZeroPlannedSnapshotTest(
+ admin,
+ address1,
+ address2,
+ address3
+ )
ERC20SnapshotModuleCommonRescheduling(admin, address1, address2, address3)
ERC20SnapshotModuleCommonScheduling(admin, address1, address2, address3)
ERC20SnapshotModuleCommonUnschedule(admin, address1, address2, address3)
- ERC20SnapshotModuleCommonGetNextSnapshot(admin, address1, address2, address3)
+ ERC20SnapshotModuleCommonGetNextSnapshot(
+ admin,
+ address1,
+ address2,
+ address3
+ )
}
)
diff --git a/test/utils.js b/test/utils.js
index 3c07dd6b..cc236e64 100644
--- a/test/utils.js
+++ b/test/utils.js
@@ -17,7 +17,8 @@ module.exports = {
'0xaa2de0737115053bf7d3d68e733306557628aef4b4aefa746cbf344fc7267247', // keccak256("DEBT_CREDIT_EVENT_ROLE");
DEFAULT_ADMIN_ROLE:
'0x0000000000000000000000000000000000000000000000000000000000000000',
- CMTAT_DEPLOYER_ROLE: '0x13293a342e85bb7a675992804d0c6194d27d85f90a7401d0666e206fe3b06a03',
+ CMTAT_DEPLOYER_ROLE:
+ '0x13293a342e85bb7a675992804d0c6194d27d85f90a7401d0666e206fe3b06a03',
ZERO_ADDRESS: '0x0000000000000000000000000000000000000000',
RULE_MOCK_AMOUNT_MAX: '20',
CMTAT_TRANSFER_REJECT: 'CMTAT: transfer rejected by validation module',