diff --git a/.gitignore b/.gitignore index d959af7..cd9932e 100644 --- a/.gitignore +++ b/.gitignore @@ -35,5 +35,8 @@ types/* coverage coverage.json +# IDE config +.vscode/ + # MacOS junk .DS_Store \ No newline at end of file diff --git a/.openzeppelin/mainnet.json b/.openzeppelin/mainnet.json index 7459447..a5afcbd 100644 --- a/.openzeppelin/mainnet.json +++ b/.openzeppelin/mainnet.json @@ -220,11 +220,11 @@ } }, "AccessModule": { - "address": "0x35233753A7d304460D59d4F7a23e5fE0C492E8F6", - "constructorCode": "6080604052611b32806100136000396000f3fe", - "bodyBytecodeHash": "23a570a3093c879d72021f8764069c5484693923866e12a39dc23d3b74df54f2", - "localBytecodeHash": "b1edfc08df025471eaf034f533afb855d6968167378a1d496b7f0863cd299c24", - "deployedBytecodeHash": "b1edfc08df025471eaf034f533afb855d6968167378a1d496b7f0863cd299c24", + "address": "0xDEdCa877D3ec4e3937F157AdBa6DeE5c619aEb55", + "constructorCode": "6080604052611d32806100136000396000f3fe", + "bodyBytecodeHash": "328efade2ffc3088e0a1b9fc8cf7a6bc31f0c62fa5cb69f3fe871c4f52a231d1", + "localBytecodeHash": "e526cef23d4d543399f80fcd3e97a4e426a3046c6bfadd2efccd4fa31d3b93f2", + "deployedBytecodeHash": "e526cef23d4d543399f80fcd3e97a4e426a3046c6bfadd2efccd4fa31d3b93f2", "types": { "t_bool": { "id": "t_bool", @@ -255,9 +255,9 @@ "members": [ { "label": "bearer", - "astId": 16249, + "astId": 36853, "type": "t_mapping", - "src": "150:32:65" + "src": "150:32:132" } ] }, @@ -266,6 +266,12 @@ "valueType": "t_bool", "label": "mapping(key => bool)", "kind": "mapping" + }, + "t_mapping": { + "id": "t_mapping", + "valueType": "t_uint256", + "label": "mapping(key => uint256)", + "kind": "mapping" } }, "storage": [ @@ -273,41 +279,41 @@ "contract": "Initializable", "path": "@openzeppelin\\upgrades\\contracts\\Initializable.sol", "label": "initialized", - "astId": 18319, + "astId": 38923, "type": "t_bool", - "src": "757:24:82" + "src": "757:24:149" }, { "contract": "Initializable", "path": "@openzeppelin\\upgrades\\contracts\\Initializable.sol", "label": "initializing", - "astId": 18321, + "astId": 38925, "type": "t_bool", - "src": "876:25:82" + "src": "876:25:149" }, { "contract": "Initializable", "path": "@openzeppelin\\upgrades\\contracts\\Initializable.sol", "label": "______gap", - "astId": 18383, + "astId": 38987, "type": "t_array:50", - "src": "1982:29:82" + "src": "1982:29:149" }, { "contract": "Ownable", "path": "@openzeppelin\\contracts-ethereum-package\\contracts\\ownership\\Ownable.sol", "label": "_owner", - "astId": 17252, + "astId": 37856, "type": "t_address", - "src": "526:22:73" + "src": "526:22:140" }, { "contract": "Ownable", "path": "@openzeppelin\\contracts-ethereum-package\\contracts\\ownership\\Ownable.sol", "label": "______gap", - "astId": 17365, + "astId": 37969, "type": "t_array:50", - "src": "2471:29:73" + "src": "2471:29:140" }, { "contract": "Module", @@ -321,73 +327,89 @@ "contract": "PauserRole", "path": "@openzeppelin\\contracts-ethereum-package\\contracts\\access\\roles\\PauserRole.sol", "label": "_pausers", - "astId": 16592, + "astId": 37196, "type": "t_struct", - "src": "327:27:68" + "src": "327:27:135" }, { "contract": "PauserRole", "path": "@openzeppelin\\contracts-ethereum-package\\contracts\\access\\roles\\PauserRole.sol", "label": "______gap", - "astId": 16692, + "astId": 37296, "type": "t_array:50", - "src": "1193:29:68" + "src": "1193:29:135" }, { "contract": "Pausable", "path": "@openzeppelin\\contracts-ethereum-package\\contracts\\lifecycle\\Pausable.sol", "label": "_paused", - "astId": 16971, + "astId": 37575, "type": "t_bool", - "src": "909:20:71" + "src": "909:20:138" }, { "contract": "Pausable", "path": "@openzeppelin\\contracts-ethereum-package\\contracts\\lifecycle\\Pausable.sol", "label": "______gap", - "astId": 17054, + "astId": 37658, "type": "t_array:50", - "src": "2163:29:71" + "src": "2163:29:138" }, { "contract": "WhitelistAdminRole", "path": "@openzeppelin\\contracts-ethereum-package\\contracts\\access\\roles\\WhitelistAdminRole.sol", "label": "_whitelistAdmins", - "astId": 16715, + "astId": 37319, "type": "t_struct", - "src": "477:35:69" + "src": "477:35:136" }, { "contract": "WhitelistAdminRole", "path": "@openzeppelin\\contracts-ethereum-package\\contracts\\access\\roles\\WhitelistAdminRole.sol", "label": "______gap", - "astId": 16815, + "astId": 37419, "type": "t_array:50", - "src": "1503:29:69" + "src": "1503:29:136" }, { "contract": "WhitelistedRole", "path": "@openzeppelin\\contracts-ethereum-package\\contracts\\access\\roles\\WhitelistedRole.sol", "label": "_whitelisteds", - "astId": 16841, + "astId": 37445, "type": "t_struct", - "src": "709:32:70" + "src": "709:32:137" }, { "contract": "WhitelistedRole", "path": "@openzeppelin\\contracts-ethereum-package\\contracts\\access\\roles\\WhitelistedRole.sol", "label": "______gap", - "astId": 16949, + "astId": 37553, "type": "t_array:50", - "src": "1760:29:70" + "src": "1760:29:137" }, { "contract": "AccessModule", "path": "..\\..\\..\\D\\projects\\akropolis\\savings-pool\\contracts\\modules\\access\\AccessModule.sol", - "label": "whitelistEnabled", - "astId": 1700, + "label": "whitelistEnabledForAll", + "astId": 3103, "type": "t_bool", - "src": "433:28:36" + "src": "494:34:66" + }, + { + "contract": "AccessModule", + "path": "..\\..\\..\\D\\projects\\akropolis\\savings-pool\\contracts\\modules\\access\\AccessModule.sol", + "label": "whitelistEnabledForIntermediateSenders", + "astId": 3105, + "type": "t_bool", + "src": "534:50:66" + }, + { + "contract": "AccessModule", + "path": "..\\..\\..\\D\\projects\\akropolis\\savings-pool\\contracts\\modules\\access\\AccessModule.sol", + "label": "maxGasLeft", + "astId": 3109, + "type": "t_mapping", + "src": "590:41:66" } ], "warnings": { @@ -395,15 +417,88 @@ "hasSelfDestruct": false, "hasDelegateCall": false, "hasInitialValuesInDeclarations": false, - "uninitializedBaseContracts": [] + "uninitializedBaseContracts": [], + "storageUncheckedVars": [ + { + "contract": "PauserRole", + "path": "@openzeppelin\\contracts-ethereum-package\\contracts\\access\\roles\\PauserRole.sol", + "label": "_pausers", + "astId": 37196, + "type": "t_struct", + "src": "327:27:135" + }, + { + "contract": "WhitelistAdminRole", + "path": "@openzeppelin\\contracts-ethereum-package\\contracts\\access\\roles\\WhitelistAdminRole.sol", + "label": "_whitelistAdmins", + "astId": 37319, + "type": "t_struct", + "src": "477:35:136" + }, + { + "contract": "WhitelistedRole", + "path": "@openzeppelin\\contracts-ethereum-package\\contracts\\access\\roles\\WhitelistedRole.sol", + "label": "_whitelisteds", + "astId": 37445, + "type": "t_struct", + "src": "709:32:137" + } + ], + "storageDiff": [ + { + "action": "rename", + "updated": { + "index": 14, + "contract": "AccessModule", + "path": "..\\..\\..\\D\\projects\\akropolis\\savings-pool\\contracts\\modules\\access\\AccessModule.sol", + "label": "whitelistEnabledForAll", + "astId": 3103, + "type": "t_bool", + "src": "494:34:66" + }, + "original": { + "index": 14, + "contract": "AccessModule", + "path": "..\\..\\..\\D\\projects\\akropolis\\savings-pool\\contracts\\modules\\access\\AccessModule.sol", + "label": "whitelistEnabled", + "astId": 1700, + "type": "t_bool", + "src": "433:28:36" + } + }, + { + "action": "append", + "updated": { + "index": 15, + "contract": "AccessModule", + "path": "..\\..\\..\\D\\projects\\akropolis\\savings-pool\\contracts\\modules\\access\\AccessModule.sol", + "label": "whitelistEnabledForIntermediateSenders", + "astId": 3105, + "type": "t_bool", + "src": "534:50:66" + } + }, + { + "action": "append", + "updated": { + "index": 16, + "contract": "AccessModule", + "path": "..\\..\\..\\D\\projects\\akropolis\\savings-pool\\contracts\\modules\\access\\AccessModule.sol", + "label": "maxGasLeft", + "astId": 3109, + "type": "t_mapping", + "src": "590:41:66" + } + } + ] } }, "SavingsModule": { - "address": "0x1ceC0e358f882733c5ecC028d8A0c24Baee02004", - "constructorCode": "6080604052614c25806100136000396000f3fe", - "bodyBytecodeHash": "965a8da03e65c76c733df2249c144860bf3f00ea52a56419f92cbc996e9c7e36", - "localBytecodeHash": "84a2ad59145506fdd345f65ead6b1b205f8a46d04e46d107da973966353ba76e", - "deployedBytecodeHash": "84a2ad59145506fdd345f65ead6b1b205f8a46d04e46d107da973966353ba76e", + "address": "0x9ba1Cf4659bB5617A6Aa86Bf1503848Bee9888A9", + "constructorCode": "608060405261534d806100136000396000f3fe", + "bodyBytecodeHash": "2999a98ccea690f80c4454949bc49197f33dacab7dbcd71ca2b09817376004d0", + "localBytecodeHash": "866a7ed7b172e7e1ccba1e5dd1def05b378cd5c038df0b1c1d70a89bf72717eb", + "deployedBytecodeHash": "866a7ed7b172e7e1ccba1e5dd1def05b378cd5c038df0b1c1d70a89bf72717eb", "types": { "t_bool": { "id": "t_bool", @@ -434,25 +529,25 @@ "members": [ { "label": "poolToken", - "astId": 17205, + "astId": 17452, "type": "t_address", "src": "562:17:87" }, { "label": "totalShares", - "astId": 17207, + "astId": 17454, "type": "t_uint256", "src": "653:19:87" }, { "label": "rewardTokens", - "astId": 17210, + "astId": 17457, "type": "t_array:dyn", "src": "761:22:87" }, { "label": "amounts", - "astId": 17214, + "astId": 17461, "type": "t_mapping", "src": "849:33:87" } @@ -485,19 +580,19 @@ "members": [ { "label": "nextDistribution", - "astId": 17222, + "astId": 17469, "type": "t_uint256", "src": "1071:24:87" }, { "label": "shares", - "astId": 17226, + "astId": 17473, "type": "t_mapping", "src": "1105:34:87" }, { "label": "rewardsByProtocol", - "astId": 17230, + "astId": 17477, "type": "t_mapping>", "src": "1227:57:87" } @@ -510,7 +605,7 @@ "members": [ { "label": "amounts", - "astId": 17219, + "astId": 17466, "type": "t_mapping", "src": "933:33:87" } @@ -535,9 +630,9 @@ "members": [ { "label": "bearer", - "astId": 35647, + "astId": 36853, "type": "t_mapping", - "src": "150:32:130" + "src": "150:32:132" } ] }, @@ -554,7 +649,7 @@ "members": [ { "label": "decimals", - "astId": 17828, + "astId": 18076, "type": "t_uint8", "src": "2296:14:89" } @@ -578,43 +673,43 @@ "members": [ { "label": "poolToken", - "astId": 17808, + "astId": 18056, "type": "t_address", "src": "1864:19:89" }, { "label": "previousBalance", - "astId": 17810, + "astId": 18058, "type": "t_uint256", "src": "1893:23:89" }, { "label": "lastRewardDistribution", - "astId": 17812, + "astId": 18060, "type": "t_uint256", "src": "1926:30:89" }, { "label": "supportedRewardTokens", - "astId": 17815, + "astId": 18063, "type": "t_array:dyn", "src": "1966:31:89" }, { "label": "userCap", - "astId": 17819, + "astId": 18067, "type": "t_mapping", "src": "2007:35:89" }, { "label": "withdrawAllSlippage", - "astId": 17821, + "astId": 18069, "type": "t_uint256", "src": "2121:27:89" }, { "label": "isVipUser", - "astId": 17825, + "astId": 18073, "type": "t_mapping", "src": "2217:32:89" } @@ -638,41 +733,41 @@ "contract": "Initializable", "path": "@openzeppelin\\upgrades\\contracts\\Initializable.sol", "label": "initialized", - "astId": 37717, + "astId": 38923, "type": "t_bool", - "src": "757:24:147" + "src": "757:24:149" }, { "contract": "Initializable", "path": "@openzeppelin\\upgrades\\contracts\\Initializable.sol", "label": "initializing", - "astId": 37719, + "astId": 38925, "type": "t_bool", - "src": "876:25:147" + "src": "876:25:149" }, { "contract": "Initializable", "path": "@openzeppelin\\upgrades\\contracts\\Initializable.sol", "label": "______gap", - "astId": 37781, + "astId": 38987, "type": "t_array:50", - "src": "1982:29:147" + "src": "1982:29:149" }, { "contract": "Ownable", "path": "@openzeppelin\\contracts-ethereum-package\\contracts\\ownership\\Ownable.sol", "label": "_owner", - "astId": 36650, + "astId": 37856, "type": "t_address", - "src": "526:22:138" + "src": "526:22:140" }, { "contract": "Ownable", "path": "@openzeppelin\\contracts-ethereum-package\\contracts\\ownership\\Ownable.sol", "label": "______gap", - "astId": 36763, + "astId": 37969, "type": "t_array:50", - "src": "2471:29:138" + "src": "2471:29:140" }, { "contract": "Module", @@ -686,7 +781,7 @@ "contract": "RewardDistributions", "path": "..\\..\\..\\D\\projects\\akropolis\\savings-pool\\contracts\\modules\\savings\\RewardDistributions.sol", "label": "rewardDistributions", - "astId": 17234, + "astId": 17481, "type": "t_array:dyn>", "src": "1382:45:87" }, @@ -694,7 +789,7 @@ "contract": "RewardDistributions", "path": "..\\..\\..\\D\\projects\\akropolis\\savings-pool\\contracts\\modules\\savings\\RewardDistributions.sol", "label": "rewardBalances", - "astId": 17238, + "astId": 17485, "type": "t_mapping>", "src": "1433:46:87" }, @@ -702,23 +797,23 @@ "contract": "CapperRole", "path": "@openzeppelin\\contracts-ethereum-package\\contracts\\access\\roles\\CapperRole.sol", "label": "_cappers", - "astId": 35744, + "astId": 36950, "type": "t_struct", - "src": "327:27:131" + "src": "327:27:133" }, { "contract": "CapperRole", "path": "@openzeppelin\\contracts-ethereum-package\\contracts\\access\\roles\\CapperRole.sol", "label": "______gap", - "astId": 35844, + "astId": 37050, "type": "t_array:50", - "src": "1193:29:131" + "src": "1193:29:133" }, { "contract": "SavingsModule", "path": "..\\..\\..\\D\\projects\\akropolis\\savings-pool\\contracts\\modules\\savings\\SavingsModule.sol", "label": "registeredTokens", - "astId": 17832, + "astId": 18080, "type": "t_array:dyn", "src": "2323:26:89" }, @@ -726,7 +821,7 @@ "contract": "SavingsModule", "path": "..\\..\\..\\D\\projects\\akropolis\\savings-pool\\contracts\\modules\\savings\\SavingsModule.sol", "label": "registeredProtocols", - "astId": 17835, + "astId": 18083, "type": "t_array:dyn", "src": "2355:35:89" }, @@ -734,7 +829,7 @@ "contract": "SavingsModule", "path": "..\\..\\..\\D\\projects\\akropolis\\savings-pool\\contracts\\modules\\savings\\SavingsModule.sol", "label": "registeredRewardTokens", - "astId": 17838, + "astId": 18086, "type": "t_array:dyn", "src": "2396:32:89" }, @@ -742,7 +837,7 @@ "contract": "SavingsModule", "path": "..\\..\\..\\D\\projects\\akropolis\\savings-pool\\contracts\\modules\\savings\\SavingsModule.sol", "label": "tokens", - "astId": 17842, + "astId": 18090, "type": "t_mapping>", "src": "2434:36:89" }, @@ -750,7 +845,7 @@ "contract": "SavingsModule", "path": "..\\..\\..\\D\\projects\\akropolis\\savings-pool\\contracts\\modules\\savings\\SavingsModule.sol", "label": "protocols", - "astId": 17846, + "astId": 18094, "type": "t_mapping>", "src": "2476:42:89" }, @@ -758,7 +853,7 @@ "contract": "SavingsModule", "path": "..\\..\\..\\D\\projects\\akropolis\\savings-pool\\contracts\\modules\\savings\\SavingsModule.sol", "label": "poolTokenToProtocol", - "astId": 17850, + "astId": 18098, "type": "t_mapping", "src": "2600:47:89" }, @@ -766,7 +861,7 @@ "contract": "SavingsModule", "path": "..\\..\\..\\D\\projects\\akropolis\\savings-pool\\contracts\\modules\\savings\\SavingsModule.sol", "label": "rewardTokenRegistered", - "astId": 17854, + "astId": 18102, "type": "t_mapping", "src": "2694:54:89" }, @@ -774,7 +869,7 @@ "contract": "SavingsModule", "path": "..\\..\\..\\D\\projects\\akropolis\\savings-pool\\contracts\\modules\\savings\\SavingsModule.sol", "label": "userCapEnabled", - "astId": 17856, + "astId": 18104, "type": "t_bool", "src": "2791:26:89" }, @@ -782,7 +877,7 @@ "contract": "SavingsModule", "path": "..\\..\\..\\D\\projects\\akropolis\\savings-pool\\contracts\\modules\\savings\\SavingsModule.sol", "label": "protocolCapEnabled", - "astId": 17858, + "astId": 18106, "type": "t_bool", "src": "2823:30:89" }, @@ -790,7 +885,7 @@ "contract": "SavingsModule", "path": "..\\..\\..\\D\\projects\\akropolis\\savings-pool\\contracts\\modules\\savings\\SavingsModule.sol", "label": "defaultUserCap", - "astId": 17862, + "astId": 18110, "type": "t_mapping", "src": "2859:47:89" }, @@ -798,7 +893,7 @@ "contract": "SavingsModule", "path": "..\\..\\..\\D\\projects\\akropolis\\savings-pool\\contracts\\modules\\savings\\SavingsModule.sol", "label": "protocolCap", - "astId": 17866, + "astId": 18114, "type": "t_mapping", "src": "2912:44:89" }, @@ -806,9 +901,17 @@ "contract": "SavingsModule", "path": "..\\..\\..\\D\\projects\\akropolis\\savings-pool\\contracts\\modules\\savings\\SavingsModule.sol", "label": "vipUserEnabled", - "astId": 17868, + "astId": 18116, "type": "t_bool", "src": "2962:26:89" + }, + { + "contract": "SavingsModule", + "path": "..\\..\\..\\D\\projects\\akropolis\\savings-pool\\contracts\\modules\\savings\\SavingsModule.sol", + "label": "_guardCounter", + "astId": 18118, + "type": "t_uint256", + "src": "3063:29:89" } ], "warnings": { @@ -822,7 +925,7 @@ "contract": "RewardDistributions", "path": "..\\..\\..\\D\\projects\\akropolis\\savings-pool\\contracts\\modules\\savings\\RewardDistributions.sol", "label": "rewardDistributions", - "astId": 17234, + "astId": 17481, "type": "t_array:dyn>", "src": "1382:45:87" }, @@ -830,7 +933,7 @@ "contract": "RewardDistributions", "path": "..\\..\\..\\D\\projects\\akropolis\\savings-pool\\contracts\\modules\\savings\\RewardDistributions.sol", "label": "rewardBalances", - "astId": 17238, + "astId": 17485, "type": "t_mapping>", "src": "1433:46:87" }, @@ -838,15 +941,15 @@ "contract": "CapperRole", "path": "@openzeppelin\\contracts-ethereum-package\\contracts\\access\\roles\\CapperRole.sol", "label": "_cappers", - "astId": 35744, + "astId": 36950, "type": "t_struct", - "src": "327:27:131" + "src": "327:27:133" }, { "contract": "SavingsModule", "path": "..\\..\\..\\D\\projects\\akropolis\\savings-pool\\contracts\\modules\\savings\\SavingsModule.sol", "label": "tokens", - "astId": 17842, + "astId": 18090, "type": "t_mapping>", "src": "2434:36:89" }, @@ -854,12 +957,25 @@ "contract": "SavingsModule", "path": "..\\..\\..\\D\\projects\\akropolis\\savings-pool\\contracts\\modules\\savings\\SavingsModule.sol", "label": "protocols", - "astId": 17846, + "astId": 18094, "type": "t_mapping>", "src": "2476:42:89" } ], - "storageDiff": [] + "storageDiff": [ + { + "action": "append", + "updated": { + "index": 22, + "contract": "SavingsModule", + "path": "..\\..\\..\\D\\projects\\akropolis\\savings-pool\\contracts\\modules\\savings\\SavingsModule.sol", + "label": "_guardCounter", + "astId": 18118, + "type": "t_uint256", + "src": "3063:29:89" + } + } + ] } }, "StakingPool": { @@ -6766,11 +6882,11 @@ } }, "RewardVestingModule": { - "address": "0x5fF99A7127fb6948C3fB9fDDb2D18163f8B0629d", - "constructorCode": "6080604052612722806100136000396000f3fe", - "bodyBytecodeHash": "7270d497b26df64020b109e1b739664a54db1e9c52d833e407cda5a29039f6f3", - "localBytecodeHash": "2d007be8e46ee05cef21f5cdaf30048d1e5a2fe600c71c43ae39f53a5726d83f", - "deployedBytecodeHash": "2d007be8e46ee05cef21f5cdaf30048d1e5a2fe600c71c43ae39f53a5726d83f", + "address": "0x6EfaBC58A216d1Ac36f1e6D95FA15129ffe9C4b2", + "constructorCode": "60806040526127c7806100136000396000f3fe", + "bodyBytecodeHash": "03bda2bbbd7f26d7e499748e4af3ab48ebe3e7027e5eaf2689388094eee45995", + "localBytecodeHash": "c64df618e8515ec0472d21db2cf50792d150a23c58cb8dcd89e384d8a13ea840", + "deployedBytecodeHash": "c64df618e8515ec0472d21db2cf50792d150a23c58cb8dcd89e384d8a13ea840", "types": { "t_bool": { "id": "t_bool", @@ -6801,9 +6917,9 @@ "members": [ { "label": "bearer", - "astId": 20670, + "astId": 36853, "type": "t_mapping", - "src": "150:32:94" + "src": "150:32:132" } ] }, @@ -6820,15 +6936,15 @@ "members": [ { "label": "tokens", - "astId": 8994, + "astId": 16501, "type": "t_array:dyn", - "src": "1111:16:73" + "src": "1111:16:86" }, { "label": "rewardInfo", - "astId": 8998, + "astId": 16505, "type": "t_mapping>", - "src": "1137:39:73" + "src": "1137:39:86" } ] }, @@ -6846,15 +6962,15 @@ "members": [ { "label": "epochs", - "astId": 8988, + "astId": 16495, "type": "t_array:dyn>", - "src": "997:14:73" + "src": "997:14:86" }, { "label": "lastClaim", - "astId": 8990, + "astId": 16497, "type": "t_uint256", - "src": "1021:17:73" + "src": "1021:17:86" } ] }, @@ -6865,15 +6981,15 @@ "members": [ { "label": "end", - "astId": 8982, + "astId": 16489, "type": "t_uint256", - "src": "826:11:73" + "src": "826:11:86" }, { "label": "amount", - "astId": 8984, + "astId": 16491, "type": "t_uint256", - "src": "880:14:73" + "src": "880:14:86" } ] }, @@ -6902,41 +7018,41 @@ "contract": "Initializable", "path": "@openzeppelin\\upgrades\\contracts\\Initializable.sol", "label": "initialized", - "astId": 22740, + "astId": 38923, "type": "t_bool", - "src": "757:24:111" + "src": "757:24:149" }, { "contract": "Initializable", "path": "@openzeppelin\\upgrades\\contracts\\Initializable.sol", "label": "initializing", - "astId": 22742, + "astId": 38925, "type": "t_bool", - "src": "876:25:111" + "src": "876:25:149" }, { "contract": "Initializable", "path": "@openzeppelin\\upgrades\\contracts\\Initializable.sol", "label": "______gap", - "astId": 22804, + "astId": 38987, "type": "t_array:50", - "src": "1982:29:111" + "src": "1982:29:149" }, { "contract": "Ownable", "path": "@openzeppelin\\contracts-ethereum-package\\contracts\\ownership\\Ownable.sol", "label": "_owner", - "astId": 21673, + "astId": 37856, "type": "t_address", - "src": "526:22:102" + "src": "526:22:140" }, { "contract": "Ownable", "path": "@openzeppelin\\contracts-ethereum-package\\contracts\\ownership\\Ownable.sol", "label": "______gap", - "astId": 21786, + "astId": 37969, "type": "t_array:50", - "src": "2471:29:102" + "src": "2471:29:140" }, { "contract": "Module", @@ -6950,25 +7066,25 @@ "contract": "RewardManagerRole", "path": "..\\..\\..\\D\\projects\\akropolis\\savings-pool\\contracts\\modules\\reward\\RewardManagerRole.sol", "label": "_managers", - "astId": 8838, + "astId": 16345, "type": "t_struct", - "src": "448:28:72" + "src": "448:28:85" }, { "contract": "RewardVestingModule", "path": "..\\..\\..\\D\\projects\\akropolis\\savings-pool\\contracts\\modules\\reward\\RewardVestingModule.sol", "label": "rewards", - "astId": 9003, + "astId": 16510, "type": "t_mapping>", - "src": "1189:52:73" + "src": "1189:52:86" }, { "contract": "RewardVestingModule", "path": "..\\..\\..\\D\\projects\\akropolis\\savings-pool\\contracts\\modules\\reward\\RewardVestingModule.sol", "label": "defaultEpochLength", - "astId": 9005, + "astId": 16512, "type": "t_uint256", - "src": "1247:33:73" + "src": "1247:33:86" } ], "warnings": { @@ -6982,17 +7098,17 @@ "contract": "RewardManagerRole", "path": "..\\..\\..\\D\\projects\\akropolis\\savings-pool\\contracts\\modules\\reward\\RewardManagerRole.sol", "label": "_managers", - "astId": 8838, + "astId": 16345, "type": "t_struct", - "src": "448:28:72" + "src": "448:28:85" }, { "contract": "RewardVestingModule", "path": "..\\..\\..\\D\\projects\\akropolis\\savings-pool\\contracts\\modules\\reward\\RewardVestingModule.sol", "label": "rewards", - "astId": 9003, + "astId": 16510, "type": "t_mapping>", - "src": "1189:52:73" + "src": "1189:52:86" } ], "storageDiff": [] @@ -9087,7 +9203,7 @@ { "address": "0x5fFcf7da7BdC49CA8A2E7a542BD59dC38228Dd45", "version": "1.0.0", - "implementation": "0x35233753A7d304460D59d4F7a23e5fE0C492E8F6", + "implementation": "0xDEdCa877D3ec4e3937F157AdBa6DeE5c619aEb55", "admin": "0x8f608BCB8971cD7D3073C417A28DbD156d772402", "kind": "Upgradeable" } @@ -9096,7 +9212,7 @@ { "address": "0x73fC3038B4cD8FfD07482b92a52Ea806505e5748", "version": "1.0.0", - "implementation": "0x1ceC0e358f882733c5ecC028d8A0c24Baee02004", + "implementation": "0x9ba1Cf4659bB5617A6Aa86Bf1503848Bee9888A9", "admin": "0x8f608BCB8971cD7D3073C417A28DbD156d772402", "kind": "Upgradeable" } @@ -9285,7 +9401,7 @@ { "address": "0x2A9dcb9d79Aba0CC64565A87c9d20D11D1f33a07", "version": "1.0.0", - "implementation": "0x330c5a9ab746b16020d70108167ea518226a6a8b", + "implementation": "0x6EfaBC58A216d1Ac36f1e6D95FA15129ffe9C4b2", "admin": "0x8f608BCB8971cD7D3073C417A28DbD156d772402", "kind": "Upgradeable" } diff --git a/.openzeppelin/rinkeby.json b/.openzeppelin/rinkeby.json index 502e38a..7834b34 100644 --- a/.openzeppelin/rinkeby.json +++ b/.openzeppelin/rinkeby.json @@ -220,11 +220,11 @@ } }, "AccessModule": { - "address": "0x4310113e7BDcaA773a7aF690913B5a47434E30D3", - "constructorCode": "6080604052611b32806100136000396000f3fe", - "bodyBytecodeHash": "23a570a3093c879d72021f8764069c5484693923866e12a39dc23d3b74df54f2", - "localBytecodeHash": "b1edfc08df025471eaf034f533afb855d6968167378a1d496b7f0863cd299c24", - "deployedBytecodeHash": "b1edfc08df025471eaf034f533afb855d6968167378a1d496b7f0863cd299c24", + "address": "0x5BA0FD19461BEc40b90DAb2760536394847EC5D5", + "constructorCode": "6080604052611d32806100136000396000f3fe", + "bodyBytecodeHash": "328efade2ffc3088e0a1b9fc8cf7a6bc31f0c62fa5cb69f3fe871c4f52a231d1", + "localBytecodeHash": "e526cef23d4d543399f80fcd3e97a4e426a3046c6bfadd2efccd4fa31d3b93f2", + "deployedBytecodeHash": "e526cef23d4d543399f80fcd3e97a4e426a3046c6bfadd2efccd4fa31d3b93f2", "types": { "t_bool": { "id": "t_bool", @@ -255,9 +255,9 @@ "members": [ { "label": "bearer", - "astId": 16249, + "astId": 36853, "type": "t_mapping", - "src": "150:32:65" + "src": "150:32:132" } ] }, @@ -266,6 +266,12 @@ "valueType": "t_bool", "label": "mapping(key => bool)", "kind": "mapping" + }, + "t_mapping": { + "id": "t_mapping", + "valueType": "t_uint256", + "label": "mapping(key => uint256)", + "kind": "mapping" } }, "storage": [ @@ -273,41 +279,41 @@ "contract": "Initializable", "path": "@openzeppelin\\upgrades\\contracts\\Initializable.sol", "label": "initialized", - "astId": 18319, + "astId": 38923, "type": "t_bool", - "src": "757:24:82" + "src": "757:24:149" }, { "contract": "Initializable", "path": "@openzeppelin\\upgrades\\contracts\\Initializable.sol", "label": "initializing", - "astId": 18321, + "astId": 38925, "type": "t_bool", - "src": "876:25:82" + "src": "876:25:149" }, { "contract": "Initializable", "path": "@openzeppelin\\upgrades\\contracts\\Initializable.sol", "label": "______gap", - "astId": 18383, + "astId": 38987, "type": "t_array:50", - "src": "1982:29:82" + "src": "1982:29:149" }, { "contract": "Ownable", "path": "@openzeppelin\\contracts-ethereum-package\\contracts\\ownership\\Ownable.sol", "label": "_owner", - "astId": 17252, + "astId": 37856, "type": "t_address", - "src": "526:22:73" + "src": "526:22:140" }, { "contract": "Ownable", "path": "@openzeppelin\\contracts-ethereum-package\\contracts\\ownership\\Ownable.sol", "label": "______gap", - "astId": 17365, + "astId": 37969, "type": "t_array:50", - "src": "2471:29:73" + "src": "2471:29:140" }, { "contract": "Module", @@ -321,73 +327,89 @@ "contract": "PauserRole", "path": "@openzeppelin\\contracts-ethereum-package\\contracts\\access\\roles\\PauserRole.sol", "label": "_pausers", - "astId": 16592, + "astId": 37196, "type": "t_struct", - "src": "327:27:68" + "src": "327:27:135" }, { "contract": "PauserRole", "path": "@openzeppelin\\contracts-ethereum-package\\contracts\\access\\roles\\PauserRole.sol", "label": "______gap", - "astId": 16692, + "astId": 37296, "type": "t_array:50", - "src": "1193:29:68" + "src": "1193:29:135" }, { "contract": "Pausable", "path": "@openzeppelin\\contracts-ethereum-package\\contracts\\lifecycle\\Pausable.sol", "label": "_paused", - "astId": 16971, + "astId": 37575, "type": "t_bool", - "src": "909:20:71" + "src": "909:20:138" }, { "contract": "Pausable", "path": "@openzeppelin\\contracts-ethereum-package\\contracts\\lifecycle\\Pausable.sol", "label": "______gap", - "astId": 17054, + "astId": 37658, "type": "t_array:50", - "src": "2163:29:71" + "src": "2163:29:138" }, { "contract": "WhitelistAdminRole", "path": "@openzeppelin\\contracts-ethereum-package\\contracts\\access\\roles\\WhitelistAdminRole.sol", "label": "_whitelistAdmins", - "astId": 16715, + "astId": 37319, "type": "t_struct", - "src": "477:35:69" + "src": "477:35:136" }, { "contract": "WhitelistAdminRole", "path": "@openzeppelin\\contracts-ethereum-package\\contracts\\access\\roles\\WhitelistAdminRole.sol", "label": "______gap", - "astId": 16815, + "astId": 37419, "type": "t_array:50", - "src": "1503:29:69" + "src": "1503:29:136" }, { "contract": "WhitelistedRole", "path": "@openzeppelin\\contracts-ethereum-package\\contracts\\access\\roles\\WhitelistedRole.sol", "label": "_whitelisteds", - "astId": 16841, + "astId": 37445, "type": "t_struct", - "src": "709:32:70" + "src": "709:32:137" }, { "contract": "WhitelistedRole", "path": "@openzeppelin\\contracts-ethereum-package\\contracts\\access\\roles\\WhitelistedRole.sol", "label": "______gap", - "astId": 16949, + "astId": 37553, "type": "t_array:50", - "src": "1760:29:70" + "src": "1760:29:137" }, { "contract": "AccessModule", "path": "..\\..\\..\\D\\projects\\akropolis\\savings-pool\\contracts\\modules\\access\\AccessModule.sol", - "label": "whitelistEnabled", - "astId": 1700, + "label": "whitelistEnabledForAll", + "astId": 3103, "type": "t_bool", - "src": "433:28:36" + "src": "494:34:66" + }, + { + "contract": "AccessModule", + "path": "..\\..\\..\\D\\projects\\akropolis\\savings-pool\\contracts\\modules\\access\\AccessModule.sol", + "label": "whitelistEnabledForIntermediateSenders", + "astId": 3105, + "type": "t_bool", + "src": "534:50:66" + }, + { + "contract": "AccessModule", + "path": "..\\..\\..\\D\\projects\\akropolis\\savings-pool\\contracts\\modules\\access\\AccessModule.sol", + "label": "maxGasLeft", + "astId": 3109, + "type": "t_mapping", + "src": "590:41:66" } ], "warnings": { @@ -395,15 +417,88 @@ "hasSelfDestruct": false, "hasDelegateCall": false, "hasInitialValuesInDeclarations": false, - "uninitializedBaseContracts": [] + "uninitializedBaseContracts": [], + "storageUncheckedVars": [ + { + "contract": "PauserRole", + "path": "@openzeppelin\\contracts-ethereum-package\\contracts\\access\\roles\\PauserRole.sol", + "label": "_pausers", + "astId": 37196, + "type": "t_struct", + "src": "327:27:135" + }, + { + "contract": "WhitelistAdminRole", + "path": "@openzeppelin\\contracts-ethereum-package\\contracts\\access\\roles\\WhitelistAdminRole.sol", + "label": "_whitelistAdmins", + "astId": 37319, + "type": "t_struct", + "src": "477:35:136" + }, + { + "contract": "WhitelistedRole", + "path": "@openzeppelin\\contracts-ethereum-package\\contracts\\access\\roles\\WhitelistedRole.sol", + "label": "_whitelisteds", + "astId": 37445, + "type": "t_struct", + "src": "709:32:137" + } + ], + "storageDiff": [ + { + "action": "rename", + "updated": { + "index": 14, + "contract": "AccessModule", + "path": "..\\..\\..\\D\\projects\\akropolis\\savings-pool\\contracts\\modules\\access\\AccessModule.sol", + "label": "whitelistEnabledForAll", + "astId": 3103, + "type": "t_bool", + "src": "494:34:66" + }, + "original": { + "index": 14, + "contract": "AccessModule", + "path": "..\\..\\..\\D\\projects\\akropolis\\savings-pool\\contracts\\modules\\access\\AccessModule.sol", + "label": "whitelistEnabled", + "astId": 1700, + "type": "t_bool", + "src": "433:28:36" + } + }, + { + "action": "append", + "updated": { + "index": 15, + "contract": "AccessModule", + "path": "..\\..\\..\\D\\projects\\akropolis\\savings-pool\\contracts\\modules\\access\\AccessModule.sol", + "label": "whitelistEnabledForIntermediateSenders", + "astId": 3105, + "type": "t_bool", + "src": "534:50:66" + } + }, + { + "action": "append", + "updated": { + "index": 16, + "contract": "AccessModule", + "path": "..\\..\\..\\D\\projects\\akropolis\\savings-pool\\contracts\\modules\\access\\AccessModule.sol", + "label": "maxGasLeft", + "astId": 3109, + "type": "t_mapping", + "src": "590:41:66" + } + } + ] } }, "SavingsModule": { - "address": "0xE33c43A0C04864F66957A4B1c0a84f0c9758d936", - "constructorCode": "6080604052614c25806100136000396000f3fe", - "bodyBytecodeHash": "965a8da03e65c76c733df2249c144860bf3f00ea52a56419f92cbc996e9c7e36", - "localBytecodeHash": "84a2ad59145506fdd345f65ead6b1b205f8a46d04e46d107da973966353ba76e", - "deployedBytecodeHash": "84a2ad59145506fdd345f65ead6b1b205f8a46d04e46d107da973966353ba76e", + "address": "0x52069caa103c5C675A2fFA876Fca86A6520D1858", + "constructorCode": "608060405261534d806100136000396000f3fe", + "bodyBytecodeHash": "2999a98ccea690f80c4454949bc49197f33dacab7dbcd71ca2b09817376004d0", + "localBytecodeHash": "866a7ed7b172e7e1ccba1e5dd1def05b378cd5c038df0b1c1d70a89bf72717eb", + "deployedBytecodeHash": "866a7ed7b172e7e1ccba1e5dd1def05b378cd5c038df0b1c1d70a89bf72717eb", "types": { "t_bool": { "id": "t_bool", @@ -434,27 +529,27 @@ "members": [ { "label": "poolToken", - "astId": 11380, + "astId": 17452, "type": "t_address", - "src": "562:17:75" + "src": "562:17:87" }, { "label": "totalShares", - "astId": 11382, + "astId": 17454, "type": "t_uint256", - "src": "653:19:75" + "src": "653:19:87" }, { "label": "rewardTokens", - "astId": 11385, + "astId": 17457, "type": "t_array:dyn", - "src": "761:22:75" + "src": "761:22:87" }, { "label": "amounts", - "astId": 11389, + "astId": 17461, "type": "t_mapping", - "src": "849:33:75" + "src": "849:33:87" } ] }, @@ -485,21 +580,21 @@ "members": [ { "label": "nextDistribution", - "astId": 11397, + "astId": 17469, "type": "t_uint256", - "src": "1071:24:75" + "src": "1071:24:87" }, { "label": "shares", - "astId": 11401, + "astId": 17473, "type": "t_mapping", - "src": "1105:34:75" + "src": "1105:34:87" }, { "label": "rewardsByProtocol", - "astId": 11405, + "astId": 17477, "type": "t_mapping>", - "src": "1227:57:75" + "src": "1227:57:87" } ] }, @@ -510,9 +605,9 @@ "members": [ { "label": "amounts", - "astId": 11394, + "astId": 17466, "type": "t_mapping", - "src": "933:33:75" + "src": "933:33:87" } ] }, @@ -535,9 +630,9 @@ "members": [ { "label": "bearer", - "astId": 21289, + "astId": 36853, "type": "t_mapping", - "src": "150:32:95" + "src": "150:32:132" } ] }, @@ -554,9 +649,9 @@ "members": [ { "label": "decimals", - "astId": 11701, + "astId": 18076, "type": "t_uint8", - "src": "2296:14:76" + "src": "2296:14:89" } ] }, @@ -578,45 +673,45 @@ "members": [ { "label": "poolToken", - "astId": 11681, + "astId": 18056, "type": "t_address", - "src": "1864:19:76" + "src": "1864:19:89" }, { "label": "previousBalance", - "astId": 11683, + "astId": 18058, "type": "t_uint256", - "src": "1893:23:76" + "src": "1893:23:89" }, { "label": "lastRewardDistribution", - "astId": 11685, + "astId": 18060, "type": "t_uint256", - "src": "1926:30:76" + "src": "1926:30:89" }, { "label": "supportedRewardTokens", - "astId": 11688, + "astId": 18063, "type": "t_array:dyn", - "src": "1966:31:76" + "src": "1966:31:89" }, { "label": "userCap", - "astId": 11692, + "astId": 18067, "type": "t_mapping", - "src": "2007:35:76" + "src": "2007:35:89" }, { "label": "withdrawAllSlippage", - "astId": 11694, + "astId": 18069, "type": "t_uint256", - "src": "2121:27:76" + "src": "2121:27:89" }, { "label": "isVipUser", - "astId": 11698, + "astId": 18073, "type": "t_mapping", - "src": "2217:32:76" + "src": "2217:32:89" } ] }, @@ -638,41 +733,41 @@ "contract": "Initializable", "path": "@openzeppelin\\upgrades\\contracts\\Initializable.sol", "label": "initialized", - "astId": 23359, + "astId": 38923, "type": "t_bool", - "src": "757:24:112" + "src": "757:24:149" }, { "contract": "Initializable", "path": "@openzeppelin\\upgrades\\contracts\\Initializable.sol", "label": "initializing", - "astId": 23361, + "astId": 38925, "type": "t_bool", - "src": "876:25:112" + "src": "876:25:149" }, { "contract": "Initializable", "path": "@openzeppelin\\upgrades\\contracts\\Initializable.sol", "label": "______gap", - "astId": 23423, + "astId": 38987, "type": "t_array:50", - "src": "1982:29:112" + "src": "1982:29:149" }, { "contract": "Ownable", "path": "@openzeppelin\\contracts-ethereum-package\\contracts\\ownership\\Ownable.sol", "label": "_owner", - "astId": 22292, + "astId": 37856, "type": "t_address", - "src": "526:22:103" + "src": "526:22:140" }, { "contract": "Ownable", "path": "@openzeppelin\\contracts-ethereum-package\\contracts\\ownership\\Ownable.sol", "label": "______gap", - "astId": 22405, + "astId": 37969, "type": "t_array:50", - "src": "2471:29:103" + "src": "2471:29:140" }, { "contract": "Module", @@ -686,129 +781,137 @@ "contract": "RewardDistributions", "path": "..\\..\\..\\D\\projects\\akropolis\\savings-pool\\contracts\\modules\\savings\\RewardDistributions.sol", "label": "rewardDistributions", - "astId": 11409, + "astId": 17481, "type": "t_array:dyn>", - "src": "1382:45:75" + "src": "1382:45:87" }, { "contract": "RewardDistributions", "path": "..\\..\\..\\D\\projects\\akropolis\\savings-pool\\contracts\\modules\\savings\\RewardDistributions.sol", "label": "rewardBalances", - "astId": 11413, + "astId": 17485, "type": "t_mapping>", - "src": "1433:46:75" + "src": "1433:46:87" }, { "contract": "CapperRole", "path": "@openzeppelin\\contracts-ethereum-package\\contracts\\access\\roles\\CapperRole.sol", "label": "_cappers", - "astId": 21386, + "astId": 36950, "type": "t_struct", - "src": "327:27:96" + "src": "327:27:133" }, { "contract": "CapperRole", "path": "@openzeppelin\\contracts-ethereum-package\\contracts\\access\\roles\\CapperRole.sol", "label": "______gap", - "astId": 21486, + "astId": 37050, "type": "t_array:50", - "src": "1193:29:96" + "src": "1193:29:133" }, { "contract": "SavingsModule", "path": "..\\..\\..\\D\\projects\\akropolis\\savings-pool\\contracts\\modules\\savings\\SavingsModule.sol", "label": "registeredTokens", - "astId": 11705, + "astId": 18080, "type": "t_array:dyn", - "src": "2323:26:76" + "src": "2323:26:89" }, { "contract": "SavingsModule", "path": "..\\..\\..\\D\\projects\\akropolis\\savings-pool\\contracts\\modules\\savings\\SavingsModule.sol", "label": "registeredProtocols", - "astId": 11708, + "astId": 18083, "type": "t_array:dyn", - "src": "2355:35:76" + "src": "2355:35:89" }, { "contract": "SavingsModule", "path": "..\\..\\..\\D\\projects\\akropolis\\savings-pool\\contracts\\modules\\savings\\SavingsModule.sol", "label": "registeredRewardTokens", - "astId": 11711, + "astId": 18086, "type": "t_array:dyn", - "src": "2396:32:76" + "src": "2396:32:89" }, { "contract": "SavingsModule", "path": "..\\..\\..\\D\\projects\\akropolis\\savings-pool\\contracts\\modules\\savings\\SavingsModule.sol", "label": "tokens", - "astId": 11715, + "astId": 18090, "type": "t_mapping>", - "src": "2434:36:76" + "src": "2434:36:89" }, { "contract": "SavingsModule", "path": "..\\..\\..\\D\\projects\\akropolis\\savings-pool\\contracts\\modules\\savings\\SavingsModule.sol", "label": "protocols", - "astId": 11719, + "astId": 18094, "type": "t_mapping>", - "src": "2476:42:76" + "src": "2476:42:89" }, { "contract": "SavingsModule", "path": "..\\..\\..\\D\\projects\\akropolis\\savings-pool\\contracts\\modules\\savings\\SavingsModule.sol", "label": "poolTokenToProtocol", - "astId": 11723, + "astId": 18098, "type": "t_mapping", - "src": "2600:47:76" + "src": "2600:47:89" }, { "contract": "SavingsModule", "path": "..\\..\\..\\D\\projects\\akropolis\\savings-pool\\contracts\\modules\\savings\\SavingsModule.sol", "label": "rewardTokenRegistered", - "astId": 11727, + "astId": 18102, "type": "t_mapping", - "src": "2694:54:76" + "src": "2694:54:89" }, { "contract": "SavingsModule", "path": "..\\..\\..\\D\\projects\\akropolis\\savings-pool\\contracts\\modules\\savings\\SavingsModule.sol", "label": "userCapEnabled", - "astId": 11729, + "astId": 18104, "type": "t_bool", - "src": "2791:26:76" + "src": "2791:26:89" }, { "contract": "SavingsModule", "path": "..\\..\\..\\D\\projects\\akropolis\\savings-pool\\contracts\\modules\\savings\\SavingsModule.sol", "label": "protocolCapEnabled", - "astId": 11731, + "astId": 18106, "type": "t_bool", - "src": "2823:30:76" + "src": "2823:30:89" }, { "contract": "SavingsModule", "path": "..\\..\\..\\D\\projects\\akropolis\\savings-pool\\contracts\\modules\\savings\\SavingsModule.sol", "label": "defaultUserCap", - "astId": 11735, + "astId": 18110, "type": "t_mapping", - "src": "2859:47:76" + "src": "2859:47:89" }, { "contract": "SavingsModule", "path": "..\\..\\..\\D\\projects\\akropolis\\savings-pool\\contracts\\modules\\savings\\SavingsModule.sol", "label": "protocolCap", - "astId": 11739, + "astId": 18114, "type": "t_mapping", - "src": "2912:44:76" + "src": "2912:44:89" }, { "contract": "SavingsModule", "path": "..\\..\\..\\D\\projects\\akropolis\\savings-pool\\contracts\\modules\\savings\\SavingsModule.sol", "label": "vipUserEnabled", - "astId": 11741, + "astId": 18116, "type": "t_bool", - "src": "2962:26:76" + "src": "2962:26:89" + }, + { + "contract": "SavingsModule", + "path": "..\\..\\..\\D\\projects\\akropolis\\savings-pool\\contracts\\modules\\savings\\SavingsModule.sol", + "label": "_guardCounter", + "astId": 18118, + "type": "t_uint256", + "src": "3063:29:89" } ], "warnings": { @@ -822,52 +925,65 @@ "contract": "RewardDistributions", "path": "..\\..\\..\\D\\projects\\akropolis\\savings-pool\\contracts\\modules\\savings\\RewardDistributions.sol", "label": "rewardDistributions", - "astId": 11409, + "astId": 17481, "type": "t_array:dyn>", - "src": "1382:45:75" + "src": "1382:45:87" }, { "contract": "RewardDistributions", "path": "..\\..\\..\\D\\projects\\akropolis\\savings-pool\\contracts\\modules\\savings\\RewardDistributions.sol", "label": "rewardBalances", - "astId": 11413, + "astId": 17485, "type": "t_mapping>", - "src": "1433:46:75" + "src": "1433:46:87" }, { "contract": "CapperRole", "path": "@openzeppelin\\contracts-ethereum-package\\contracts\\access\\roles\\CapperRole.sol", "label": "_cappers", - "astId": 21386, + "astId": 36950, "type": "t_struct", - "src": "327:27:96" + "src": "327:27:133" }, { "contract": "SavingsModule", "path": "..\\..\\..\\D\\projects\\akropolis\\savings-pool\\contracts\\modules\\savings\\SavingsModule.sol", "label": "tokens", - "astId": 11715, + "astId": 18090, "type": "t_mapping>", - "src": "2434:36:76" + "src": "2434:36:89" }, { "contract": "SavingsModule", "path": "..\\..\\..\\D\\projects\\akropolis\\savings-pool\\contracts\\modules\\savings\\SavingsModule.sol", "label": "protocols", - "astId": 11719, + "astId": 18094, "type": "t_mapping>", - "src": "2476:42:76" + "src": "2476:42:89" } ], - "storageDiff": [] + "storageDiff": [ + { + "action": "append", + "updated": { + "index": 22, + "contract": "SavingsModule", + "path": "..\\..\\..\\D\\projects\\akropolis\\savings-pool\\contracts\\modules\\savings\\SavingsModule.sol", + "label": "_guardCounter", + "astId": 18118, + "type": "t_uint256", + "src": "3063:29:89" + } + } + ] } }, "StakingPool": { - "address": "0x252CE7e168f0de3030e227C97A0DbE2Ee8b430A9", - "constructorCode": "6080604052613d9d806100136000396000f3fe", - "bodyBytecodeHash": "57ad310ca18b26362e3bcabab0470b5497b6f39223269f011d117efb7dfc70c1", - "localBytecodeHash": "cde44b619a49f042f78645bd435ca179f49d46331133b8d4539ab3d2bda0d54d", - "deployedBytecodeHash": "cde44b619a49f042f78645bd435ca179f49d46331133b8d4539ab3d2bda0d54d", + "address": "0x9365aeF9c514CD3E15b81C0aC79B54274c34a555", + "constructorCode": "6080604052613e80806100136000396000f3fe", + "bodyBytecodeHash": "e2881eb0fa29aaf49a661adb8274ea4b50c083aec6ea2f0f952004815331c618", + "localBytecodeHash": "109c833ec1a28761032e62b8c30ad6067b7bd763ee451da51c7ff8d7af6d2552", + "deployedBytecodeHash": "109c833ec1a28761032e62b8c30ad6067b7bd763ee451da51c7ff8d7af6d2552", "types": { "t_bool": { "id": "t_bool", @@ -898,9 +1014,9 @@ "members": [ { "label": "bearer", - "astId": 21442, + "astId": 36853, "type": "t_mapping", - "src": "150:32:95" + "src": "150:32:132" } ] }, @@ -917,27 +1033,27 @@ "members": [ { "label": "totalStakedFor", - "astId": 14203, + "astId": 21930, "type": "t_uint256", - "src": "1932:22:79" + "src": "1994:22:94" }, { "label": "personalStakeIndex", - "astId": 14205, + "astId": 21932, "type": "t_uint256", - "src": "1961:26:79" + "src": "2026:26:94" }, { "label": "personalStakes", - "astId": 14208, + "astId": 21935, "type": "t_array:dyn>", - "src": "1994:22:79" + "src": "2062:22:94" }, { "label": "exists", - "astId": 14210, + "astId": 21937, "type": "t_bool", - "src": "2023:11:79" + "src": "2094:11:94" } ] }, @@ -948,21 +1064,21 @@ "members": [ { "label": "unlockedTimestamp", - "astId": 14196, + "astId": 21923, "type": "t_uint256", - "src": "1488:25:79" + "src": "1524:25:94" }, { "label": "actualAmount", - "astId": 14198, + "astId": 21925, "type": "t_uint256", - "src": "1519:20:79" + "src": "1559:20:94" }, { "label": "stakedFor", - "astId": 14200, + "astId": 21927, "type": "t_address", - "src": "1545:17:79" + "src": "1589:17:94" } ] }, @@ -985,12 +1101,12 @@ "label": "mapping(key => uint256)", "kind": "mapping" }, - "t_array:49": { - "id": "t_array:49", + "t_array:48": { + "id": "t_array:48", "valueType": "t_uint256", - "length": "49", + "length": "48", "kind": "array", - "label": "uint256[49]" + "label": "uint256[48]" }, "t_array:dyn": { "id": "t_array:dyn", @@ -1006,15 +1122,15 @@ "members": [ { "label": "distributions", - "astId": 13653, + "astId": 21380, "type": "t_array:dyn>", - "src": "845:34:78" + "src": "846:34:93" }, { "label": "unclaimed", - "astId": 13655, + "astId": 21382, "type": "t_uint256", - "src": "889:17:78" + "src": "890:17:93" } ] }, @@ -1025,15 +1141,15 @@ "members": [ { "label": "totalShares", - "astId": 13642, + "astId": 21369, "type": "t_uint256", - "src": "644:19:78" + "src": "643:19:93" }, { "label": "amount", - "astId": 13644, + "astId": 21371, "type": "t_uint256", - "src": "673:14:78" + "src": "672:14:93" } ] }, @@ -1057,9 +1173,9 @@ "members": [ { "label": "nextDistribution", - "astId": 13649, + "astId": 21376, "type": "t_mapping", - "src": "732:42:78" + "src": "731:44:93" } ] }, @@ -1075,41 +1191,41 @@ "contract": "Initializable", "path": "@openzeppelin\\upgrades\\contracts\\Initializable.sol", "label": "initialized", - "astId": 23512, + "astId": 38923, "type": "t_bool", - "src": "757:24:112" + "src": "757:24:149" }, { "contract": "Initializable", "path": "@openzeppelin\\upgrades\\contracts\\Initializable.sol", "label": "initializing", - "astId": 23514, + "astId": 38925, "type": "t_bool", - "src": "876:25:112" + "src": "876:25:149" }, { "contract": "Initializable", "path": "@openzeppelin\\upgrades\\contracts\\Initializable.sol", "label": "______gap", - "astId": 23576, + "astId": 38987, "type": "t_array:50", - "src": "1982:29:112" + "src": "1982:29:149" }, { "contract": "Ownable", "path": "@openzeppelin\\contracts-ethereum-package\\contracts\\ownership\\Ownable.sol", "label": "_owner", - "astId": 22445, + "astId": 37856, "type": "t_address", - "src": "526:22:103" + "src": "526:22:140" }, { "contract": "Ownable", "path": "@openzeppelin\\contracts-ethereum-package\\contracts\\ownership\\Ownable.sol", "label": "______gap", - "astId": 22558, + "astId": 37969, "type": "t_array:50", - "src": "2471:29:103" + "src": "2471:29:140" }, { "contract": "Module", @@ -1123,153 +1239,161 @@ "contract": "CapperRole", "path": "@openzeppelin\\contracts-ethereum-package\\contracts\\access\\roles\\CapperRole.sol", "label": "_cappers", - "astId": 21539, + "astId": 36950, "type": "t_struct", - "src": "327:27:96" + "src": "327:27:133" }, { "contract": "CapperRole", "path": "@openzeppelin\\contracts-ethereum-package\\contracts\\access\\roles\\CapperRole.sol", "label": "______gap", - "astId": 21639, + "astId": 37050, "type": "t_array:50", - "src": "1193:29:96" + "src": "1193:29:133" }, { "contract": "StakingPoolBase", "path": "..\\..\\..\\D\\projects\\akropolis\\savings-pool\\contracts\\modules\\staking\\StakingPoolBase.sol", "label": "stakingToken", - "astId": 14188, + "astId": 21915, "type": "t_address", - "src": "699:18:79" + "src": "706:18:94" }, { "contract": "StakingPoolBase", "path": "..\\..\\..\\D\\projects\\akropolis\\savings-pool\\contracts\\modules\\staking\\StakingPoolBase.sol", "label": "defaultLockInDuration", - "astId": 14190, + "astId": 21917, "type": "t_uint256", - "src": "778:36:79" + "src": "789:36:94" }, { "contract": "StakingPoolBase", "path": "..\\..\\..\\D\\projects\\akropolis\\savings-pool\\contracts\\modules\\staking\\StakingPoolBase.sol", "label": "stakeHolders", - "astId": 14194, + "astId": 21921, "type": "t_mapping>", - "src": "1156:54:79" + "src": "1179:53:94" }, { "contract": "StakingPoolBase", "path": "..\\..\\..\\D\\projects\\akropolis\\savings-pool\\contracts\\modules\\staking\\StakingPoolBase.sol", "label": "userCapEnabled", - "astId": 14213, + "astId": 21940, "type": "t_bool", - "src": "2043:26:79" + "src": "2118:26:94" }, { "contract": "StakingPoolBase", "path": "..\\..\\..\\D\\projects\\akropolis\\savings-pool\\contracts\\modules\\staking\\StakingPoolBase.sol", "label": "userCap", - "astId": 14217, + "astId": 21944, "type": "t_mapping", - "src": "2074:42:79" + "src": "2151:42:94" }, { "contract": "StakingPoolBase", "path": "..\\..\\..\\D\\projects\\akropolis\\savings-pool\\contracts\\modules\\staking\\StakingPoolBase.sol", "label": "defaultUserCap", - "astId": 14219, + "astId": 21946, "type": "t_uint256", - "src": "2193:29:79" + "src": "2269:29:94" }, { "contract": "StakingPoolBase", "path": "..\\..\\..\\D\\projects\\akropolis\\savings-pool\\contracts\\modules\\staking\\StakingPoolBase.sol", "label": "stakingCapEnabled", - "astId": 14221, + "astId": 21948, "type": "t_bool", - "src": "2226:29:79" + "src": "2304:29:94" }, { "contract": "StakingPoolBase", "path": "..\\..\\..\\D\\projects\\akropolis\\savings-pool\\contracts\\modules\\staking\\StakingPoolBase.sol", "label": "stakingCap", - "astId": 14223, + "astId": 21950, "type": "t_uint256", - "src": "2259:25:79" + "src": "2339:25:94" }, { "contract": "StakingPoolBase", "path": "..\\..\\..\\D\\projects\\akropolis\\savings-pool\\contracts\\modules\\staking\\StakingPoolBase.sol", "label": "vipUserEnabled", - "astId": 14225, + "astId": 21952, "type": "t_bool", - "src": "2290:26:79" + "src": "2371:26:94" }, { "contract": "StakingPoolBase", "path": "..\\..\\..\\D\\projects\\akropolis\\savings-pool\\contracts\\modules\\staking\\StakingPoolBase.sol", "label": "isVipUser", - "astId": 14229, + "astId": 21956, "type": "t_mapping", - "src": "2320:41:79" + "src": "2403:41:94" }, { "contract": "StakingPoolBase", "path": "..\\..\\..\\D\\projects\\akropolis\\savings-pool\\contracts\\modules\\staking\\StakingPoolBase.sol", "label": "totalStakedAmount", - "astId": 14231, + "astId": 21958, "type": "t_uint256", - "src": "2366:34:79" + "src": "2451:34:94" }, { "contract": "StakingPoolBase", "path": "..\\..\\..\\D\\projects\\akropolis\\savings-pool\\contracts\\modules\\staking\\StakingPoolBase.sol", "label": "coeffScore", - "astId": 14233, + "astId": 21960, + "type": "t_uint256", + "src": "2492:25:94" + }, + { + "contract": "StakingPoolBase", + "path": "..\\..\\..\\D\\projects\\akropolis\\savings-pool\\contracts\\modules\\staking\\StakingPoolBase.sol", + "label": "_guardCounter", + "astId": 21962, "type": "t_uint256", - "src": "2405:25:79" + "src": "2524:29:94" }, { "contract": "StakingPoolBase", "path": "..\\..\\..\\D\\projects\\akropolis\\savings-pool\\contracts\\modules\\staking\\StakingPoolBase.sol", "label": "______gap", - "astId": 15340, - "type": "t_array:49", - "src": "17105:29:79" + "astId": 23093, + "type": "t_array:48", + "src": "18344:29:94" }, { "contract": "StakingPool", "path": "..\\..\\..\\D\\projects\\akropolis\\savings-pool\\contracts\\modules\\staking\\StakingPool.sol", "label": "rewardVesting", - "astId": 13658, + "astId": 21385, "type": "t_address", - "src": "919:40:78" + "src": "920:40:93" }, { "contract": "StakingPool", "path": "..\\..\\..\\D\\projects\\akropolis\\savings-pool\\contracts\\modules\\staking\\StakingPool.sol", "label": "registeredRewardTokens", - "astId": 13661, + "astId": 21388, "type": "t_array:dyn", - "src": "965:41:78" + "src": "966:41:93" }, { "contract": "StakingPool", "path": "..\\..\\..\\D\\projects\\akropolis\\savings-pool\\contracts\\modules\\staking\\StakingPool.sol", "label": "rewards", - "astId": 13665, + "astId": 21392, "type": "t_mapping>", - "src": "1012:45:78" + "src": "1013:47:93" }, { "contract": "StakingPool", "path": "..\\..\\..\\D\\projects\\akropolis\\savings-pool\\contracts\\modules\\staking\\StakingPool.sol", "label": "userRewards", - "astId": 13669, + "astId": 21396, "type": "t_mapping>", - "src": "1063:53:78" + "src": "1066:55:93" } ], "warnings": { @@ -1283,36 +1407,70 @@ "contract": "CapperRole", "path": "@openzeppelin\\contracts-ethereum-package\\contracts\\access\\roles\\CapperRole.sol", "label": "_cappers", - "astId": 21539, + "astId": 36950, "type": "t_struct", - "src": "327:27:96" + "src": "327:27:133" }, { "contract": "StakingPoolBase", "path": "..\\..\\..\\D\\projects\\akropolis\\savings-pool\\contracts\\modules\\staking\\StakingPoolBase.sol", "label": "stakeHolders", - "astId": 14194, + "astId": 21921, "type": "t_mapping>", - "src": "1156:54:79" + "src": "1179:53:94" }, { "contract": "StakingPool", "path": "..\\..\\..\\D\\projects\\akropolis\\savings-pool\\contracts\\modules\\staking\\StakingPool.sol", "label": "rewards", - "astId": 13665, + "astId": 21392, "type": "t_mapping>", - "src": "1012:45:78" + "src": "1013:47:93" }, { "contract": "StakingPool", "path": "..\\..\\..\\D\\projects\\akropolis\\savings-pool\\contracts\\modules\\staking\\StakingPool.sol", "label": "userRewards", - "astId": 13669, + "astId": 21396, "type": "t_mapping>", - "src": "1063:53:78" + "src": "1066:55:93" } ], - "storageDiff": [] + "storageDiff": [ + { + "action": "replace", + "updated": { + "index": 20, + "contract": "StakingPoolBase", + "path": "..\\..\\..\\D\\projects\\akropolis\\savings-pool\\contracts\\modules\\staking\\StakingPoolBase.sol", + "label": "_guardCounter", + "astId": 21962, + "type": "t_uint256", + "src": "2524:29:94" + }, + "original": { + "index": 20, + "contract": "StakingPoolBase", + "path": "..\\..\\..\\D\\projects\\akropolis\\savings-pool\\contracts\\modules\\staking\\StakingPoolBase.sol", + "label": "______gap", + "astId": 15340, + "type": "t_array:49", + "src": "17105:29:79" + } + }, + { + "action": "insert", + "updated": { + "index": 21, + "contract": "StakingPoolBase", + "path": "..\\..\\..\\D\\projects\\akropolis\\savings-pool\\contracts\\modules\\staking\\StakingPoolBase.sol", + "label": "______gap", + "astId": 23093, + "type": "t_array:48", + "src": "18344:29:94" + } + } + ] } }, "CompoundProtocol_DAI": { @@ -3514,11 +3672,11 @@ } }, "StakingPoolADEL": { - "address": "0x6c632CACb7958c052f16693479d88aD89dC8b6d8", - "constructorCode": "6080604052613d9d806100136000396000f3fe", - "bodyBytecodeHash": "57ad310ca18b26362e3bcabab0470b5497b6f39223269f011d117efb7dfc70c1", - "localBytecodeHash": "cde44b619a49f042f78645bd435ca179f49d46331133b8d4539ab3d2bda0d54d", - "deployedBytecodeHash": "cde44b619a49f042f78645bd435ca179f49d46331133b8d4539ab3d2bda0d54d", + "address": "0x3e7c0Ad633323FC49801c57D56a7A2b75a23164F", + "constructorCode": "6080604052613e80806100136000396000f3fe", + "bodyBytecodeHash": "e2881eb0fa29aaf49a661adb8274ea4b50c083aec6ea2f0f952004815331c618", + "localBytecodeHash": "109c833ec1a28761032e62b8c30ad6067b7bd763ee451da51c7ff8d7af6d2552", + "deployedBytecodeHash": "109c833ec1a28761032e62b8c30ad6067b7bd763ee451da51c7ff8d7af6d2552", "types": { "t_bool": { "id": "t_bool", @@ -3549,9 +3707,9 @@ "members": [ { "label": "bearer", - "astId": 21442, + "astId": 36853, "type": "t_mapping", - "src": "150:32:95" + "src": "150:32:132" } ] }, @@ -3568,27 +3726,27 @@ "members": [ { "label": "totalStakedFor", - "astId": 14203, + "astId": 21930, "type": "t_uint256", - "src": "1932:22:79" + "src": "1994:22:94" }, { "label": "personalStakeIndex", - "astId": 14205, + "astId": 21932, "type": "t_uint256", - "src": "1961:26:79" + "src": "2026:26:94" }, { "label": "personalStakes", - "astId": 14208, + "astId": 21935, "type": "t_array:dyn>", - "src": "1994:22:79" + "src": "2062:22:94" }, { "label": "exists", - "astId": 14210, + "astId": 21937, "type": "t_bool", - "src": "2023:11:79" + "src": "2094:11:94" } ] }, @@ -3599,21 +3757,21 @@ "members": [ { "label": "unlockedTimestamp", - "astId": 14196, + "astId": 21923, "type": "t_uint256", - "src": "1488:25:79" + "src": "1524:25:94" }, { "label": "actualAmount", - "astId": 14198, + "astId": 21925, "type": "t_uint256", - "src": "1519:20:79" + "src": "1559:20:94" }, { "label": "stakedFor", - "astId": 14200, + "astId": 21927, "type": "t_address", - "src": "1545:17:79" + "src": "1589:17:94" } ] }, @@ -3636,12 +3794,12 @@ "label": "mapping(key => uint256)", "kind": "mapping" }, - "t_array:49": { - "id": "t_array:49", + "t_array:48": { + "id": "t_array:48", "valueType": "t_uint256", - "length": "49", + "length": "48", "kind": "array", - "label": "uint256[49]" + "label": "uint256[48]" }, "t_array:dyn": { "id": "t_array:dyn", @@ -3657,15 +3815,15 @@ "members": [ { "label": "distributions", - "astId": 13653, + "astId": 21380, "type": "t_array:dyn>", - "src": "845:34:78" + "src": "846:34:93" }, { "label": "unclaimed", - "astId": 13655, + "astId": 21382, "type": "t_uint256", - "src": "889:17:78" + "src": "890:17:93" } ] }, @@ -3676,15 +3834,15 @@ "members": [ { "label": "totalShares", - "astId": 13642, + "astId": 21369, "type": "t_uint256", - "src": "644:19:78" + "src": "643:19:93" }, { "label": "amount", - "astId": 13644, + "astId": 21371, "type": "t_uint256", - "src": "673:14:78" + "src": "672:14:93" } ] }, @@ -3708,9 +3866,9 @@ "members": [ { "label": "nextDistribution", - "astId": 13649, + "astId": 21376, "type": "t_mapping", - "src": "732:42:78" + "src": "731:44:93" } ] }, @@ -3726,41 +3884,41 @@ "contract": "Initializable", "path": "@openzeppelin\\upgrades\\contracts\\Initializable.sol", "label": "initialized", - "astId": 23512, + "astId": 38923, "type": "t_bool", - "src": "757:24:112" + "src": "757:24:149" }, { "contract": "Initializable", "path": "@openzeppelin\\upgrades\\contracts\\Initializable.sol", "label": "initializing", - "astId": 23514, + "astId": 38925, "type": "t_bool", - "src": "876:25:112" + "src": "876:25:149" }, { "contract": "Initializable", "path": "@openzeppelin\\upgrades\\contracts\\Initializable.sol", "label": "______gap", - "astId": 23576, + "astId": 38987, "type": "t_array:50", - "src": "1982:29:112" + "src": "1982:29:149" }, { "contract": "Ownable", "path": "@openzeppelin\\contracts-ethereum-package\\contracts\\ownership\\Ownable.sol", "label": "_owner", - "astId": 22445, + "astId": 37856, "type": "t_address", - "src": "526:22:103" + "src": "526:22:140" }, { "contract": "Ownable", "path": "@openzeppelin\\contracts-ethereum-package\\contracts\\ownership\\Ownable.sol", "label": "______gap", - "astId": 22558, + "astId": 37969, "type": "t_array:50", - "src": "2471:29:103" + "src": "2471:29:140" }, { "contract": "Module", @@ -3774,153 +3932,161 @@ "contract": "CapperRole", "path": "@openzeppelin\\contracts-ethereum-package\\contracts\\access\\roles\\CapperRole.sol", "label": "_cappers", - "astId": 21539, + "astId": 36950, "type": "t_struct", - "src": "327:27:96" + "src": "327:27:133" }, { "contract": "CapperRole", "path": "@openzeppelin\\contracts-ethereum-package\\contracts\\access\\roles\\CapperRole.sol", "label": "______gap", - "astId": 21639, + "astId": 37050, "type": "t_array:50", - "src": "1193:29:96" + "src": "1193:29:133" }, { "contract": "StakingPoolBase", "path": "..\\..\\..\\D\\projects\\akropolis\\savings-pool\\contracts\\modules\\staking\\StakingPoolBase.sol", "label": "stakingToken", - "astId": 14188, + "astId": 21915, "type": "t_address", - "src": "699:18:79" + "src": "706:18:94" }, { "contract": "StakingPoolBase", "path": "..\\..\\..\\D\\projects\\akropolis\\savings-pool\\contracts\\modules\\staking\\StakingPoolBase.sol", "label": "defaultLockInDuration", - "astId": 14190, + "astId": 21917, "type": "t_uint256", - "src": "778:36:79" + "src": "789:36:94" }, { "contract": "StakingPoolBase", "path": "..\\..\\..\\D\\projects\\akropolis\\savings-pool\\contracts\\modules\\staking\\StakingPoolBase.sol", "label": "stakeHolders", - "astId": 14194, + "astId": 21921, "type": "t_mapping>", - "src": "1156:54:79" + "src": "1179:53:94" }, { "contract": "StakingPoolBase", "path": "..\\..\\..\\D\\projects\\akropolis\\savings-pool\\contracts\\modules\\staking\\StakingPoolBase.sol", "label": "userCapEnabled", - "astId": 14213, + "astId": 21940, "type": "t_bool", - "src": "2043:26:79" + "src": "2118:26:94" }, { "contract": "StakingPoolBase", "path": "..\\..\\..\\D\\projects\\akropolis\\savings-pool\\contracts\\modules\\staking\\StakingPoolBase.sol", "label": "userCap", - "astId": 14217, + "astId": 21944, "type": "t_mapping", - "src": "2074:42:79" + "src": "2151:42:94" }, { "contract": "StakingPoolBase", "path": "..\\..\\..\\D\\projects\\akropolis\\savings-pool\\contracts\\modules\\staking\\StakingPoolBase.sol", "label": "defaultUserCap", - "astId": 14219, + "astId": 21946, "type": "t_uint256", - "src": "2193:29:79" + "src": "2269:29:94" }, { "contract": "StakingPoolBase", "path": "..\\..\\..\\D\\projects\\akropolis\\savings-pool\\contracts\\modules\\staking\\StakingPoolBase.sol", "label": "stakingCapEnabled", - "astId": 14221, + "astId": 21948, "type": "t_bool", - "src": "2226:29:79" + "src": "2304:29:94" }, { "contract": "StakingPoolBase", "path": "..\\..\\..\\D\\projects\\akropolis\\savings-pool\\contracts\\modules\\staking\\StakingPoolBase.sol", "label": "stakingCap", - "astId": 14223, + "astId": 21950, "type": "t_uint256", - "src": "2259:25:79" + "src": "2339:25:94" }, { "contract": "StakingPoolBase", "path": "..\\..\\..\\D\\projects\\akropolis\\savings-pool\\contracts\\modules\\staking\\StakingPoolBase.sol", "label": "vipUserEnabled", - "astId": 14225, + "astId": 21952, "type": "t_bool", - "src": "2290:26:79" + "src": "2371:26:94" }, { "contract": "StakingPoolBase", "path": "..\\..\\..\\D\\projects\\akropolis\\savings-pool\\contracts\\modules\\staking\\StakingPoolBase.sol", "label": "isVipUser", - "astId": 14229, + "astId": 21956, "type": "t_mapping", - "src": "2320:41:79" + "src": "2403:41:94" }, { "contract": "StakingPoolBase", "path": "..\\..\\..\\D\\projects\\akropolis\\savings-pool\\contracts\\modules\\staking\\StakingPoolBase.sol", "label": "totalStakedAmount", - "astId": 14231, + "astId": 21958, "type": "t_uint256", - "src": "2366:34:79" + "src": "2451:34:94" }, { "contract": "StakingPoolBase", "path": "..\\..\\..\\D\\projects\\akropolis\\savings-pool\\contracts\\modules\\staking\\StakingPoolBase.sol", "label": "coeffScore", - "astId": 14233, + "astId": 21960, + "type": "t_uint256", + "src": "2492:25:94" + }, + { + "contract": "StakingPoolBase", + "path": "..\\..\\..\\D\\projects\\akropolis\\savings-pool\\contracts\\modules\\staking\\StakingPoolBase.sol", + "label": "_guardCounter", + "astId": 21962, "type": "t_uint256", - "src": "2405:25:79" + "src": "2524:29:94" }, { "contract": "StakingPoolBase", "path": "..\\..\\..\\D\\projects\\akropolis\\savings-pool\\contracts\\modules\\staking\\StakingPoolBase.sol", "label": "______gap", - "astId": 15340, - "type": "t_array:49", - "src": "17105:29:79" + "astId": 23093, + "type": "t_array:48", + "src": "18344:29:94" }, { "contract": "StakingPool", "path": "..\\..\\..\\D\\projects\\akropolis\\savings-pool\\contracts\\modules\\staking\\StakingPool.sol", "label": "rewardVesting", - "astId": 13658, + "astId": 21385, "type": "t_address", - "src": "919:40:78" + "src": "920:40:93" }, { "contract": "StakingPool", "path": "..\\..\\..\\D\\projects\\akropolis\\savings-pool\\contracts\\modules\\staking\\StakingPool.sol", "label": "registeredRewardTokens", - "astId": 13661, + "astId": 21388, "type": "t_array:dyn", - "src": "965:41:78" + "src": "966:41:93" }, { "contract": "StakingPool", "path": "..\\..\\..\\D\\projects\\akropolis\\savings-pool\\contracts\\modules\\staking\\StakingPool.sol", "label": "rewards", - "astId": 13665, + "astId": 21392, "type": "t_mapping>", - "src": "1012:45:78" + "src": "1013:47:93" }, { "contract": "StakingPool", "path": "..\\..\\..\\D\\projects\\akropolis\\savings-pool\\contracts\\modules\\staking\\StakingPool.sol", "label": "userRewards", - "astId": 13669, + "astId": 21396, "type": "t_mapping>", - "src": "1063:53:78" + "src": "1066:55:93" } ], "warnings": { @@ -3934,44 +4100,78 @@ "contract": "CapperRole", "path": "@openzeppelin\\contracts-ethereum-package\\contracts\\access\\roles\\CapperRole.sol", "label": "_cappers", - "astId": 21539, + "astId": 36950, "type": "t_struct", - "src": "327:27:96" + "src": "327:27:133" }, { "contract": "StakingPoolBase", "path": "..\\..\\..\\D\\projects\\akropolis\\savings-pool\\contracts\\modules\\staking\\StakingPoolBase.sol", "label": "stakeHolders", - "astId": 14194, + "astId": 21921, "type": "t_mapping>", - "src": "1156:54:79" + "src": "1179:53:94" }, { "contract": "StakingPool", "path": "..\\..\\..\\D\\projects\\akropolis\\savings-pool\\contracts\\modules\\staking\\StakingPool.sol", "label": "rewards", - "astId": 13665, + "astId": 21392, "type": "t_mapping>", - "src": "1012:45:78" + "src": "1013:47:93" }, { "contract": "StakingPool", "path": "..\\..\\..\\D\\projects\\akropolis\\savings-pool\\contracts\\modules\\staking\\StakingPool.sol", "label": "userRewards", - "astId": 13669, + "astId": 21396, "type": "t_mapping>", - "src": "1063:53:78" + "src": "1066:55:93" } ], - "storageDiff": [] + "storageDiff": [ + { + "action": "replace", + "updated": { + "index": 20, + "contract": "StakingPoolBase", + "path": "..\\..\\..\\D\\projects\\akropolis\\savings-pool\\contracts\\modules\\staking\\StakingPoolBase.sol", + "label": "_guardCounter", + "astId": 21962, + "type": "t_uint256", + "src": "2524:29:94" + }, + "original": { + "index": 20, + "contract": "StakingPoolBase", + "path": "..\\..\\..\\D\\projects\\akropolis\\savings-pool\\contracts\\modules\\staking\\StakingPoolBase.sol", + "label": "______gap", + "astId": 15340, + "type": "t_array:49", + "src": "17105:29:79" + } + }, + { + "action": "insert", + "updated": { + "index": 21, + "contract": "StakingPoolBase", + "path": "..\\..\\..\\D\\projects\\akropolis\\savings-pool\\contracts\\modules\\staking\\StakingPoolBase.sol", + "label": "______gap", + "astId": 23093, + "type": "t_array:48", + "src": "18344:29:94" + } + } + ] } }, "RewardVestingModule": { - "address": "0xe55C42bD01553994Fd7EF6a21e30BDc6B732528D", - "constructorCode": "6080604052612722806100136000396000f3fe", - "bodyBytecodeHash": "7270d497b26df64020b109e1b739664a54db1e9c52d833e407cda5a29039f6f3", - "localBytecodeHash": "2d007be8e46ee05cef21f5cdaf30048d1e5a2fe600c71c43ae39f53a5726d83f", - "deployedBytecodeHash": "2d007be8e46ee05cef21f5cdaf30048d1e5a2fe600c71c43ae39f53a5726d83f", + "address": "0x83672186DD4349De39E559f03d07e2074aF4FF37", + "constructorCode": "60806040526127c7806100136000396000f3fe", + "bodyBytecodeHash": "03bda2bbbd7f26d7e499748e4af3ab48ebe3e7027e5eaf2689388094eee45995", + "localBytecodeHash": "c64df618e8515ec0472d21db2cf50792d150a23c58cb8dcd89e384d8a13ea840", + "deployedBytecodeHash": "c64df618e8515ec0472d21db2cf50792d150a23c58cb8dcd89e384d8a13ea840", "types": { "t_bool": { "id": "t_bool", @@ -4002,9 +4202,9 @@ "members": [ { "label": "bearer", - "astId": 20670, + "astId": 36853, "type": "t_mapping", - "src": "150:32:94" + "src": "150:32:132" } ] }, @@ -4021,15 +4221,15 @@ "members": [ { "label": "tokens", - "astId": 8994, + "astId": 16501, "type": "t_array:dyn", - "src": "1111:16:73" + "src": "1111:16:86" }, { "label": "rewardInfo", - "astId": 8998, + "astId": 16505, "type": "t_mapping>", - "src": "1137:39:73" + "src": "1137:39:86" } ] }, @@ -4047,15 +4247,15 @@ "members": [ { "label": "epochs", - "astId": 8988, + "astId": 16495, "type": "t_array:dyn>", - "src": "997:14:73" + "src": "997:14:86" }, { "label": "lastClaim", - "astId": 8990, + "astId": 16497, "type": "t_uint256", - "src": "1021:17:73" + "src": "1021:17:86" } ] }, @@ -4066,15 +4266,15 @@ "members": [ { "label": "end", - "astId": 8982, + "astId": 16489, "type": "t_uint256", - "src": "826:11:73" + "src": "826:11:86" }, { "label": "amount", - "astId": 8984, + "astId": 16491, "type": "t_uint256", - "src": "880:14:73" + "src": "880:14:86" } ] }, @@ -4103,41 +4303,41 @@ "contract": "Initializable", "path": "@openzeppelin\\upgrades\\contracts\\Initializable.sol", "label": "initialized", - "astId": 22740, + "astId": 38923, "type": "t_bool", - "src": "757:24:111" + "src": "757:24:149" }, { "contract": "Initializable", "path": "@openzeppelin\\upgrades\\contracts\\Initializable.sol", "label": "initializing", - "astId": 22742, + "astId": 38925, "type": "t_bool", - "src": "876:25:111" + "src": "876:25:149" }, { "contract": "Initializable", "path": "@openzeppelin\\upgrades\\contracts\\Initializable.sol", "label": "______gap", - "astId": 22804, + "astId": 38987, "type": "t_array:50", - "src": "1982:29:111" + "src": "1982:29:149" }, { "contract": "Ownable", "path": "@openzeppelin\\contracts-ethereum-package\\contracts\\ownership\\Ownable.sol", "label": "_owner", - "astId": 21673, + "astId": 37856, "type": "t_address", - "src": "526:22:102" + "src": "526:22:140" }, { "contract": "Ownable", "path": "@openzeppelin\\contracts-ethereum-package\\contracts\\ownership\\Ownable.sol", "label": "______gap", - "astId": 21786, + "astId": 37969, "type": "t_array:50", - "src": "2471:29:102" + "src": "2471:29:140" }, { "contract": "Module", @@ -4151,25 +4351,25 @@ "contract": "RewardManagerRole", "path": "..\\..\\..\\D\\projects\\akropolis\\savings-pool\\contracts\\modules\\reward\\RewardManagerRole.sol", "label": "_managers", - "astId": 8838, + "astId": 16345, "type": "t_struct", - "src": "448:28:72" + "src": "448:28:85" }, { "contract": "RewardVestingModule", "path": "..\\..\\..\\D\\projects\\akropolis\\savings-pool\\contracts\\modules\\reward\\RewardVestingModule.sol", "label": "rewards", - "astId": 9003, + "astId": 16510, "type": "t_mapping>", - "src": "1189:52:73" + "src": "1189:52:86" }, { "contract": "RewardVestingModule", "path": "..\\..\\..\\D\\projects\\akropolis\\savings-pool\\contracts\\modules\\reward\\RewardVestingModule.sol", "label": "defaultEpochLength", - "astId": 9005, + "astId": 16512, "type": "t_uint256", - "src": "1247:33:73" + "src": "1247:33:86" } ], "warnings": { @@ -4183,17 +4383,17 @@ "contract": "RewardManagerRole", "path": "..\\..\\..\\D\\projects\\akropolis\\savings-pool\\contracts\\modules\\reward\\RewardManagerRole.sol", "label": "_managers", - "astId": 8838, + "astId": 16345, "type": "t_struct", - "src": "448:28:72" + "src": "448:28:85" }, { "contract": "RewardVestingModule", "path": "..\\..\\..\\D\\projects\\akropolis\\savings-pool\\contracts\\modules\\reward\\RewardVestingModule.sol", "label": "rewards", - "astId": 9003, + "astId": 16510, "type": "t_mapping>", - "src": "1189:52:73" + "src": "1189:52:86" } ], "storageDiff": [] @@ -6528,7 +6728,7 @@ ], "storageDiff": [] } - } + } }, "solidityLibs": {}, "proxies": { @@ -6545,7 +6745,7 @@ { "address": "0xbFC891b6c83b36aFC9493957065D304661c4189A", "version": "1.0.0", - "implementation": "0x4310113e7BDcaA773a7aF690913B5a47434E30D3", + "implementation": "0x5BA0FD19461BEc40b90DAb2760536394847EC5D5", "admin": "0x7B27e0dAED14F0DFA17aa8a23f39c5dbF6FaAF12", "kind": "Upgradeable" } @@ -6554,7 +6754,7 @@ { "address": "0xb733994019A4F55CAa3f130400B7978Cc6624c39", "version": "1.0.0", - "implementation": "0xE33c43A0C04864F66957A4B1c0a84f0c9758d936", + "implementation": "0x52069caa103c5C675A2fFA876Fca86A6520D1858", "admin": "0x7B27e0dAED14F0DFA17aa8a23f39c5dbF6FaAF12", "kind": "Upgradeable" } @@ -6563,7 +6763,7 @@ { "address": "0x6887DF2f4296e8B772cb19479472A16E836dB9e0", "version": "1.0.0", - "implementation": "0xF7205f5Cb2fDF1275a4A017710CB498Ef4F53908", + "implementation": "0x9365aeF9c514CD3E15b81C0aC79B54274c34a555", "admin": "0x7B27e0dAED14F0DFA17aa8a23f39c5dbF6FaAF12", "kind": "Upgradeable" } @@ -6653,7 +6853,7 @@ { "address": "0x1a80540930B869df525981c4231Cd06b0Dcbf668", "version": "1.0.0", - "implementation": "0x6c632CACb7958c052f16693479d88aD89dC8b6d8", + "implementation": "0x3e7c0Ad633323FC49801c57D56a7A2b75a23164F", "admin": "0x7B27e0dAED14F0DFA17aa8a23f39c5dbF6FaAF12", "kind": "Upgradeable" } @@ -6662,7 +6862,7 @@ { "address": "0x214eAB7667848ec753A50Bf98416a8E12D3516f2", "version": "1.0.0", - "implementation": "0xe55C42bD01553994Fd7EF6a21e30BDc6B732528D", + "implementation": "0x83672186DD4349De39E559f03d07e2074aF4FF37", "admin": "0x7B27e0dAED14F0DFA17aa8a23f39c5dbF6FaAF12", "kind": "Upgradeable" } diff --git a/.prettierrc b/.prettierrc new file mode 100644 index 0000000..d1ce8f3 --- /dev/null +++ b/.prettierrc @@ -0,0 +1,3 @@ +{ + "printWidth": 180 +} \ No newline at end of file diff --git a/.solhint.json b/.solhint.json index 471ff62..6788692 100644 --- a/.solhint.json +++ b/.solhint.json @@ -1,5 +1,6 @@ { "extends": "solhint:default", + "plugins": ["prettier"], "rules": { "avoid-low-level-calls": "off", "avoid-tx-origin": "warn", @@ -16,6 +17,7 @@ "quotes": ["error", "double"], "separate-by-one-line-in-contract": "error", "space-after-comma": "error", - "statement-indent": "error" + "statement-indent": "error", + "prettier/prettier": "error" } } \ No newline at end of file diff --git a/abi/APRWithPoolOracle.json b/abi/APRWithPoolOracle.json new file mode 100644 index 0000000..f96cb62 --- /dev/null +++ b/abi/APRWithPoolOracle.json @@ -0,0 +1,299 @@ +[ + { + "constant": true, + "inputs": [ + { + "internalType": "address", + "name": "token", + "type": "address" + } + ], + "name": "getDDEXAPR", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "internalType": "address", + "name": "token", + "type": "address" + }, + { + "internalType": "uint256", + "name": "_supply", + "type": "uint256" + } + ], + "name": "getDDEXAPRAdjusted", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "internalType": "address", + "name": "token", + "type": "address" + } + ], + "name": "getLENDFAPR", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "internalType": "address", + "name": "token", + "type": "address" + }, + { + "internalType": "uint256", + "name": "_supply", + "type": "uint256" + } + ], + "name": "getLENDFAPRAdjusted", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "internalType": "address", + "name": "token", + "type": "address" + } + ], + "name": "getCompoundAPR", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "internalType": "address", + "name": "token", + "type": "address" + }, + { + "internalType": "uint256", + "name": "_supply", + "type": "uint256" + } + ], + "name": "getCompoundAPRAdjusted", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "internalType": "address", + "name": "token", + "type": "address" + } + ], + "name": "getFulcrumAPR", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "internalType": "address", + "name": "token", + "type": "address" + }, + { + "internalType": "uint256", + "name": "_supply", + "type": "uint256" + } + ], + "name": "getFulcrumAPRAdjusted", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "internalType": "uint256", + "name": "marketId", + "type": "uint256" + } + ], + "name": "getDyDxAPR", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "internalType": "uint256", + "name": "marketId", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "_supply", + "type": "uint256" + } + ], + "name": "getDyDxAPRAdjusted", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "getAaveCore", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "internalType": "address", + "name": "token", + "type": "address" + } + ], + "name": "getAaveAPR", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "internalType": "address", + "name": "token", + "type": "address" + }, + { + "internalType": "uint256", + "name": "_supply", + "type": "uint256" + } + ], + "name": "getAaveAPRAdjusted", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + } +] \ No newline at end of file diff --git a/abi/APRWithPoolOracleStub.json b/abi/APRWithPoolOracleStub.json new file mode 100644 index 0000000..f96cb62 --- /dev/null +++ b/abi/APRWithPoolOracleStub.json @@ -0,0 +1,299 @@ +[ + { + "constant": true, + "inputs": [ + { + "internalType": "address", + "name": "token", + "type": "address" + } + ], + "name": "getDDEXAPR", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "internalType": "address", + "name": "token", + "type": "address" + }, + { + "internalType": "uint256", + "name": "_supply", + "type": "uint256" + } + ], + "name": "getDDEXAPRAdjusted", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "internalType": "address", + "name": "token", + "type": "address" + } + ], + "name": "getLENDFAPR", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "internalType": "address", + "name": "token", + "type": "address" + }, + { + "internalType": "uint256", + "name": "_supply", + "type": "uint256" + } + ], + "name": "getLENDFAPRAdjusted", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "internalType": "address", + "name": "token", + "type": "address" + } + ], + "name": "getCompoundAPR", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "internalType": "address", + "name": "token", + "type": "address" + }, + { + "internalType": "uint256", + "name": "_supply", + "type": "uint256" + } + ], + "name": "getCompoundAPRAdjusted", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "internalType": "address", + "name": "token", + "type": "address" + } + ], + "name": "getFulcrumAPR", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "internalType": "address", + "name": "token", + "type": "address" + }, + { + "internalType": "uint256", + "name": "_supply", + "type": "uint256" + } + ], + "name": "getFulcrumAPRAdjusted", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "internalType": "uint256", + "name": "marketId", + "type": "uint256" + } + ], + "name": "getDyDxAPR", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "internalType": "uint256", + "name": "marketId", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "_supply", + "type": "uint256" + } + ], + "name": "getDyDxAPRAdjusted", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "getAaveCore", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "internalType": "address", + "name": "token", + "type": "address" + } + ], + "name": "getAaveAPR", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "internalType": "address", + "name": "token", + "type": "address" + }, + { + "internalType": "uint256", + "name": "_supply", + "type": "uint256" + } + ], + "name": "getAaveAPRAdjusted", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + } +] \ No newline at end of file diff --git a/abi/AToken.json b/abi/AToken.json new file mode 100644 index 0000000..c2696cd --- /dev/null +++ b/abi/AToken.json @@ -0,0 +1,17 @@ +[ + { + "constant": false, + "inputs": [ + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "redeem", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + } +] \ No newline at end of file diff --git a/abi/ATokenStub.json b/abi/ATokenStub.json new file mode 100644 index 0000000..acbbac0 --- /dev/null +++ b/abi/ATokenStub.json @@ -0,0 +1,466 @@ +[ + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "Approval", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "previousOwner", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "newOwner", + "type": "address" + } + ], + "name": "OwnershipTransferred", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "Transfer", + "type": "event" + }, + { + "constant": true, + "inputs": [ + { + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "internalType": "address", + "name": "spender", + "type": "address" + } + ], + "name": "allowance", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "approve", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "balanceOf", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "decimals", + "outputs": [ + { + "internalType": "uint8", + "name": "", + "type": "uint8" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "internalType": "uint256", + "name": "subtractedValue", + "type": "uint256" + } + ], + "name": "decreaseAllowance", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "internalType": "uint256", + "name": "addedValue", + "type": "uint256" + } + ], + "name": "increaseAllowance", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "isOwner", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "name", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "owner", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": false, + "inputs": [], + "name": "renounceOwnership", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "symbol", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "totalSupply", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "address", + "name": "recipient", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "transfer", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "address", + "name": "sender", + "type": "address" + }, + { + "internalType": "address", + "name": "recipient", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "transferFrom", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "address", + "name": "newOwner", + "type": "address" + } + ], + "name": "transferOwnership", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "underlying", + "outputs": [ + { + "internalType": "contract IERC20", + "name": "", + "type": "address" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "string", + "name": "name", + "type": "string" + }, + { + "internalType": "string", + "name": "symbol", + "type": "string" + }, + { + "internalType": "uint8", + "name": "decimals", + "type": "uint8" + } + ], + "name": "initialize", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [], + "name": "initialize", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "address", + "name": "_underlying", + "type": "address" + } + ], + "name": "initialize", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "address", + "name": "receiver", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "ownerMint", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "redeem", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + } +] \ No newline at end of file diff --git a/abi/Aave.json b/abi/Aave.json new file mode 100644 index 0000000..6fd437f --- /dev/null +++ b/abi/Aave.json @@ -0,0 +1,27 @@ +[ + { + "constant": false, + "inputs": [ + { + "internalType": "address", + "name": "_reserve", + "type": "address" + }, + { + "internalType": "uint256", + "name": "_amount", + "type": "uint256" + }, + { + "internalType": "uint16", + "name": "_referralCode", + "type": "uint16" + } + ], + "name": "deposit", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + } +] \ No newline at end of file diff --git a/abi/AaveStub.json b/abi/AaveStub.json new file mode 100644 index 0000000..29e6187 --- /dev/null +++ b/abi/AaveStub.json @@ -0,0 +1,190 @@ +[ + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "previousOwner", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "newOwner", + "type": "address" + } + ], + "name": "OwnershipTransferred", + "type": "event" + }, + { + "constant": true, + "inputs": [], + "name": "isOwner", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "owner", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": false, + "inputs": [], + "name": "renounceOwnership", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "name": "tokens", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "address", + "name": "newOwner", + "type": "address" + } + ], + "name": "transferOwnership", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [], + "name": "initialize", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "address", + "name": "sender", + "type": "address" + } + ], + "name": "initialize", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "address", + "name": "_underlying", + "type": "address" + } + ], + "name": "createAToken", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "address", + "name": "_reserve", + "type": "address" + }, + { + "internalType": "uint256", + "name": "_amount", + "type": "uint256" + }, + { + "internalType": "uint16", + "name": "", + "type": "uint16" + } + ], + "name": "deposit", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "getLendingPool", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "getLendingPoolCore", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + } +] \ No newline at end of file diff --git a/abi/AccessModule.json b/abi/AccessModule.json index 71a48bd..0ef0e87 100644 --- a/abi/AccessModule.json +++ b/abi/AccessModule.json @@ -111,14 +111,28 @@ }, { "anonymous": false, - "inputs": [], - "name": "WhitelistDisabled", + "inputs": [ + { + "indexed": false, + "internalType": "bool", + "name": "enabled", + "type": "bool" + } + ], + "name": "WhitelistForAllStatusChange", "type": "event" }, { "anonymous": false, - "inputs": [], - "name": "WhitelistEnabled", + "inputs": [ + { + "indexed": false, + "internalType": "bool", + "name": "enabled", + "type": "bool" + } + ], + "name": "WhitelistForIntermediateSendersStatusChange", "type": "event" }, { @@ -291,6 +305,27 @@ "stateMutability": "view", "type": "function" }, + { + "constant": true, + "inputs": [ + { + "internalType": "uint8", + "name": "", + "type": "uint8" + } + ], + "name": "maxGasLeft", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, { "constant": true, "inputs": [], @@ -438,7 +473,22 @@ { "constant": true, "inputs": [], - "name": "whitelistEnabled", + "name": "whitelistEnabledForAll", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "whitelistEnabledForIntermediateSenders", "outputs": [ { "internalType": "bool", @@ -476,8 +526,14 @@ }, { "constant": false, - "inputs": [], - "name": "enableWhitelist", + "inputs": [ + { + "internalType": "bool", + "name": "enabled", + "type": "bool" + } + ], + "name": "setWhitelistForAll", "outputs": [], "payable": false, "stateMutability": "nonpayable", @@ -485,13 +541,60 @@ }, { "constant": false, - "inputs": [], - "name": "disableWhitelist", + "inputs": [ + { + "internalType": "bool", + "name": "enabled", + "type": "bool" + } + ], + "name": "setWhitelistForIntermediateSenders", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function" }, + { + "constant": false, + "inputs": [ + { + "internalType": "enum IAccessModule.Operation", + "name": "operation", + "type": "uint8" + }, + { + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "setMaxGasLeft", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "internalType": "enum IAccessModule.Operation", + "name": "operation", + "type": "uint8" + } + ], + "name": "getMaxGasLeft", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, { "constant": true, "inputs": [ diff --git a/abi/CallExecutor.json b/abi/CallExecutor.json new file mode 100644 index 0000000..bd1f1e6 --- /dev/null +++ b/abi/CallExecutor.json @@ -0,0 +1,106 @@ +[ + { + "constant": true, + "inputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "name": "calls", + "outputs": [ + { + "internalType": "address payable", + "name": "target", + "type": "address" + }, + { + "internalType": "bytes", + "name": "callData", + "type": "bytes" + }, + { + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": false, + "inputs": [], + "name": "clearCalls", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "address payable", + "name": "target", + "type": "address" + }, + { + "internalType": "bytes", + "name": "callData", + "type": "bytes" + }, + { + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "addCall", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "uint256", + "name": "idx", + "type": "uint256" + }, + { + "internalType": "address payable", + "name": "target", + "type": "address" + }, + { + "internalType": "bytes", + "name": "callData", + "type": "bytes" + }, + { + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "setCall", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [], + "name": "execute", + "outputs": [], + "payable": true, + "stateMutability": "payable", + "type": "function" + } +] \ No newline at end of file diff --git a/abi/Compound.json b/abi/Compound.json new file mode 100644 index 0000000..99fca75 --- /dev/null +++ b/abi/Compound.json @@ -0,0 +1,59 @@ +[ + { + "constant": false, + "inputs": [ + { + "internalType": "uint256", + "name": "mintAmount", + "type": "uint256" + } + ], + "name": "mint", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "uint256", + "name": "redeemTokens", + "type": "uint256" + } + ], + "name": "redeem", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "exchangeRateStored", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + } +] \ No newline at end of file diff --git a/abi/DyDx.json b/abi/DyDx.json new file mode 100644 index 0000000..8281de7 --- /dev/null +++ b/abi/DyDx.json @@ -0,0 +1,148 @@ +[ + { + "constant": true, + "inputs": [ + { + "components": [ + { + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "internalType": "uint256", + "name": "number", + "type": "uint256" + } + ], + "internalType": "struct Structs.Info", + "name": "account", + "type": "tuple" + }, + { + "internalType": "uint256", + "name": "marketId", + "type": "uint256" + } + ], + "name": "getAccountWei", + "outputs": [ + { + "components": [ + { + "internalType": "bool", + "name": "sign", + "type": "bool" + }, + { + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "internalType": "struct Structs.Wei", + "name": "", + "type": "tuple" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "components": [ + { + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "internalType": "uint256", + "name": "number", + "type": "uint256" + } + ], + "internalType": "struct Structs.Info[]", + "name": "", + "type": "tuple[]" + }, + { + "components": [ + { + "internalType": "enum Structs.ActionType", + "name": "actionType", + "type": "uint8" + }, + { + "internalType": "uint256", + "name": "accountId", + "type": "uint256" + }, + { + "components": [ + { + "internalType": "bool", + "name": "sign", + "type": "bool" + }, + { + "internalType": "enum Structs.AssetDenomination", + "name": "denomination", + "type": "uint8" + }, + { + "internalType": "enum Structs.AssetReference", + "name": "ref", + "type": "uint8" + }, + { + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "internalType": "struct Structs.AssetAmount", + "name": "amount", + "type": "tuple" + }, + { + "internalType": "uint256", + "name": "primaryMarketId", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "secondaryMarketId", + "type": "uint256" + }, + { + "internalType": "address", + "name": "otherAddress", + "type": "address" + }, + { + "internalType": "uint256", + "name": "otherAccountId", + "type": "uint256" + }, + { + "internalType": "bytes", + "name": "data", + "type": "bytes" + } + ], + "internalType": "struct Structs.ActionArgs[]", + "name": "", + "type": "tuple[]" + } + ], + "name": "operate", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + } +] \ No newline at end of file diff --git a/abi/DyDxStub.json b/abi/DyDxStub.json new file mode 100644 index 0000000..d8e418b --- /dev/null +++ b/abi/DyDxStub.json @@ -0,0 +1,300 @@ +[ + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "token", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "market", + "type": "uint256" + } + ], + "name": "MarketAdded", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "previousOwner", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "newOwner", + "type": "address" + } + ], + "name": "OwnershipTransferred", + "type": "event" + }, + { + "constant": false, + "inputs": [], + "name": "initialize", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "address", + "name": "sender", + "type": "address" + } + ], + "name": "initialize", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "isOwner", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "name": "markets", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "owner", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": false, + "inputs": [], + "name": "renounceOwnership", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "address", + "name": "newOwner", + "type": "address" + } + ], + "name": "transferOwnership", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "address", + "name": "token", + "type": "address" + } + ], + "name": "addMarket", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "components": [ + { + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "internalType": "uint256", + "name": "number", + "type": "uint256" + } + ], + "internalType": "struct Structs.Info", + "name": "account", + "type": "tuple" + }, + { + "internalType": "uint256", + "name": "marketId", + "type": "uint256" + } + ], + "name": "getAccountWei", + "outputs": [ + { + "components": [ + { + "internalType": "bool", + "name": "sign", + "type": "bool" + }, + { + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "internalType": "struct Structs.Wei", + "name": "", + "type": "tuple" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "components": [ + { + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "internalType": "uint256", + "name": "number", + "type": "uint256" + } + ], + "internalType": "struct Structs.Info[]", + "name": "accounts", + "type": "tuple[]" + }, + { + "components": [ + { + "internalType": "enum Structs.ActionType", + "name": "actionType", + "type": "uint8" + }, + { + "internalType": "uint256", + "name": "accountId", + "type": "uint256" + }, + { + "components": [ + { + "internalType": "bool", + "name": "sign", + "type": "bool" + }, + { + "internalType": "enum Structs.AssetDenomination", + "name": "denomination", + "type": "uint8" + }, + { + "internalType": "enum Structs.AssetReference", + "name": "ref", + "type": "uint8" + }, + { + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "internalType": "struct Structs.AssetAmount", + "name": "amount", + "type": "tuple" + }, + { + "internalType": "uint256", + "name": "primaryMarketId", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "secondaryMarketId", + "type": "uint256" + }, + { + "internalType": "address", + "name": "otherAddress", + "type": "address" + }, + { + "internalType": "uint256", + "name": "otherAccountId", + "type": "uint256" + }, + { + "internalType": "bytes", + "name": "data", + "type": "bytes" + } + ], + "internalType": "struct Structs.ActionArgs[]", + "name": "args", + "type": "tuple[]" + } + ], + "name": "operate", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + } +] \ No newline at end of file diff --git a/abi/Fulcrum.json b/abi/Fulcrum.json new file mode 100644 index 0000000..562657c --- /dev/null +++ b/abi/Fulcrum.json @@ -0,0 +1,75 @@ +[ + { + "constant": false, + "inputs": [ + { + "internalType": "address", + "name": "receiver", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "mint", + "outputs": [ + { + "internalType": "uint256", + "name": "mintAmount", + "type": "uint256" + } + ], + "payable": true, + "stateMutability": "payable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "address", + "name": "receiver", + "type": "address" + }, + { + "internalType": "uint256", + "name": "burnAmount", + "type": "uint256" + } + ], + "name": "burn", + "outputs": [ + { + "internalType": "uint256", + "name": "loanAmountPaid", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "internalType": "address", + "name": "_owner", + "type": "address" + } + ], + "name": "assetBalanceOf", + "outputs": [ + { + "internalType": "uint256", + "name": "balance", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + } +] \ No newline at end of file diff --git a/abi/FulcrumStub.json b/abi/FulcrumStub.json new file mode 100644 index 0000000..d73b262 --- /dev/null +++ b/abi/FulcrumStub.json @@ -0,0 +1,504 @@ +[ + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "Approval", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "previousOwner", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "newOwner", + "type": "address" + } + ], + "name": "OwnershipTransferred", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "Transfer", + "type": "event" + }, + { + "constant": true, + "inputs": [ + { + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "internalType": "address", + "name": "spender", + "type": "address" + } + ], + "name": "allowance", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "approve", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "balanceOf", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "decimals", + "outputs": [ + { + "internalType": "uint8", + "name": "", + "type": "uint8" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "internalType": "uint256", + "name": "subtractedValue", + "type": "uint256" + } + ], + "name": "decreaseAllowance", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "internalType": "uint256", + "name": "addedValue", + "type": "uint256" + } + ], + "name": "increaseAllowance", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "isOwner", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "name", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "owner", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": false, + "inputs": [], + "name": "renounceOwnership", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "symbol", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "totalSupply", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "address", + "name": "recipient", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "transfer", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "address", + "name": "sender", + "type": "address" + }, + { + "internalType": "address", + "name": "recipient", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "transferFrom", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "address", + "name": "newOwner", + "type": "address" + } + ], + "name": "transferOwnership", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "underlying", + "outputs": [ + { + "internalType": "contract IERC20", + "name": "", + "type": "address" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "string", + "name": "name", + "type": "string" + }, + { + "internalType": "string", + "name": "symbol", + "type": "string" + }, + { + "internalType": "uint8", + "name": "decimals", + "type": "uint8" + } + ], + "name": "initialize", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [], + "name": "initialize", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "address", + "name": "_underlying", + "type": "address" + } + ], + "name": "initialize", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "address", + "name": "receiver", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "mint", + "outputs": [ + { + "internalType": "uint256", + "name": "mintAmount", + "type": "uint256" + } + ], + "payable": true, + "stateMutability": "payable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "address", + "name": "receiver", + "type": "address" + }, + { + "internalType": "uint256", + "name": "burnAmount", + "type": "uint256" + } + ], + "name": "burn", + "outputs": [ + { + "internalType": "uint256", + "name": "loanAmountPaid", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "internalType": "address", + "name": "_owner", + "type": "address" + } + ], + "name": "assetBalanceOf", + "outputs": [ + { + "internalType": "uint256", + "name": "balance", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + } +] \ No newline at end of file diff --git a/abi/IAccessModule.json b/abi/IAccessModule.json index 0f98e7c..132e69b 100644 --- a/abi/IAccessModule.json +++ b/abi/IAccessModule.json @@ -24,5 +24,26 @@ "payable": false, "stateMutability": "view", "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "internalType": "enum IAccessModule.Operation", + "name": "operation", + "type": "uint8" + } + ], + "name": "getMaxGasLeft", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" } ] \ No newline at end of file diff --git a/abi/IEarnAPRWithPool.json b/abi/IEarnAPRWithPool.json new file mode 100644 index 0000000..7a28a1b --- /dev/null +++ b/abi/IEarnAPRWithPool.json @@ -0,0 +1,797 @@ +[ + { + "inputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "previousOwner", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "newOwner", + "type": "address" + } + ], + "name": "OwnershipTransferred", + "type": "event" + }, + { + "constant": true, + "inputs": [], + "name": "APR", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "UNI", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "UNIAPR", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "UNIROI", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "name": "aave", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "name": "aaveUni", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "name": "compound", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "name": "dydx", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "name": "fulcrum", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "isOwner", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "owner", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "name": "pools", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": false, + "inputs": [], + "name": "renounceOwnership", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "address", + "name": "newOwner", + "type": "address" + } + ], + "name": "transferOwnership", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "name": "yTokens", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "internalType": "address", + "name": "_token", + "type": "address" + } + ], + "name": "recommend", + "outputs": [ + { + "internalType": "string", + "name": "choice", + "type": "string" + }, + { + "internalType": "uint256", + "name": "capr", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "iapr", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "aapr", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "dapr", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "internalType": "address", + "name": "_token", + "type": "address" + } + ], + "name": "getAPROptionsInc", + "outputs": [ + { + "internalType": "uint256", + "name": "_uniswap", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "_compound", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "_unicompound", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "_fulcrum", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "_unifulcrum", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "_aave", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "_uniaave", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "_dydx", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "_ddex", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "_lendf", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "internalType": "address", + "name": "_token", + "type": "address" + } + ], + "name": "getAPROptions", + "outputs": [ + { + "internalType": "uint256", + "name": "_uniswap", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "_compound", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "_unicompound", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "_fulcrum", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "_unifulcrum", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "_aave", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "_uniaave", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "_dydx", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "_ddex", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "_lendf", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "internalType": "address", + "name": "_token", + "type": "address" + }, + { + "internalType": "uint256", + "name": "_supply", + "type": "uint256" + } + ], + "name": "getAPROptionsAdjusted", + "outputs": [ + { + "internalType": "uint256", + "name": "_uniswap", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "_compound", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "_unicompound", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "_fulcrum", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "_unifulcrum", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "_aave", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "_uniaave", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "_dydx", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "_ddex", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "_lendf", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "internalType": "address", + "name": "_token", + "type": "address" + } + ], + "name": "viewPool", + "outputs": [ + { + "internalType": "address", + "name": "token", + "type": "address" + }, + { + "internalType": "address", + "name": "unipool", + "type": "address" + }, + { + "internalType": "uint256", + "name": "created", + "type": "uint256" + }, + { + "internalType": "string", + "name": "name", + "type": "string" + }, + { + "internalType": "string", + "name": "symbol", + "type": "string" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "address", + "name": "token", + "type": "address" + }, + { + "internalType": "uint256", + "name": "created", + "type": "uint256" + } + ], + "name": "addPool", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "address", + "name": "token", + "type": "address" + }, + { + "internalType": "address", + "name": "cToken", + "type": "address" + } + ], + "name": "addCToken", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "address", + "name": "token", + "type": "address" + }, + { + "internalType": "address", + "name": "iToken", + "type": "address" + } + ], + "name": "addIToken", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "address", + "name": "token", + "type": "address" + }, + { + "internalType": "address", + "name": "aToken", + "type": "address" + } + ], + "name": "addAToken", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "address", + "name": "token", + "type": "address" + }, + { + "internalType": "address", + "name": "aToken", + "type": "address" + } + ], + "name": "addAUniToken", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "address", + "name": "token", + "type": "address" + }, + { + "internalType": "address", + "name": "yToken", + "type": "address" + } + ], + "name": "addYToken", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "address", + "name": "token", + "type": "address" + }, + { + "internalType": "uint256", + "name": "dToken", + "type": "uint256" + } + ], + "name": "addDToken", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "address", + "name": "_new_UNIROI", + "type": "address" + } + ], + "name": "set_new_UNIROI", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "address", + "name": "_new_UNI", + "type": "address" + } + ], + "name": "set_new_UNI", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "address", + "name": "_new_UNIAPR", + "type": "address" + } + ], + "name": "set_new_UNIAPR", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "address", + "name": "_new_APR", + "type": "address" + } + ], + "name": "set_new_APR", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "contract IERC20", + "name": "_TokenAddress", + "type": "address" + } + ], + "name": "inCaseTokenGetsStuck", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [], + "name": "inCaseETHGetsStuck", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + } +] \ No newline at end of file diff --git a/abi/IIEarnManager.json b/abi/IIEarnManager.json new file mode 100644 index 0000000..1b20490 --- /dev/null +++ b/abi/IIEarnManager.json @@ -0,0 +1,43 @@ +[ + { + "constant": true, + "inputs": [ + { + "internalType": "address", + "name": "_token", + "type": "address" + } + ], + "name": "recommend", + "outputs": [ + { + "internalType": "string", + "name": "choice", + "type": "string" + }, + { + "internalType": "uint256", + "name": "capr", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "iapr", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "aapr", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "dapr", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + } +] \ No newline at end of file diff --git a/abi/ILendingPoolAddressesProvider.json b/abi/ILendingPoolAddressesProvider.json new file mode 100644 index 0000000..fda289d --- /dev/null +++ b/abi/ILendingPoolAddressesProvider.json @@ -0,0 +1,17 @@ +[ + { + "constant": true, + "inputs": [], + "name": "getLendingPool", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + } +] \ No newline at end of file diff --git a/abi/IUniswapAPR.json b/abi/IUniswapAPR.json new file mode 100644 index 0000000..47b2cbf --- /dev/null +++ b/abi/IUniswapAPR.json @@ -0,0 +1,69 @@ +[ + { + "constant": true, + "inputs": [], + "name": "getBlocksPerYear", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "internalType": "uint256", + "name": "roi", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "createdAt", + "type": "uint256" + } + ], + "name": "calcUniswapAPRFromROI", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "internalType": "address", + "name": "token", + "type": "address" + }, + { + "internalType": "uint256", + "name": "createdAt", + "type": "uint256" + } + ], + "name": "calcUniswapAPR", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + } +] \ No newline at end of file diff --git a/abi/IUniswapFactory.json b/abi/IUniswapFactory.json new file mode 100644 index 0000000..3f2b965 --- /dev/null +++ b/abi/IUniswapFactory.json @@ -0,0 +1,23 @@ +[ + { + "constant": true, + "inputs": [ + { + "internalType": "address", + "name": "token", + "type": "address" + } + ], + "name": "getExchange", + "outputs": [ + { + "internalType": "address", + "name": "exchange", + "type": "address" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + } +] \ No newline at end of file diff --git a/abi/IUniswapROI.json b/abi/IUniswapROI.json new file mode 100644 index 0000000..43207d1 --- /dev/null +++ b/abi/IUniswapROI.json @@ -0,0 +1,28 @@ +[ + { + "constant": true, + "inputs": [ + { + "internalType": "address", + "name": "token", + "type": "address" + } + ], + "name": "calcUniswapROI", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + } +] \ No newline at end of file diff --git a/abi/IYToken.json b/abi/IYToken.json new file mode 100644 index 0000000..04d1233 --- /dev/null +++ b/abi/IYToken.json @@ -0,0 +1,32 @@ +[ + { + "constant": true, + "inputs": [], + "name": "calcPoolValueInToken", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "decimals", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + } +] \ No newline at end of file diff --git a/abi/InvestingModule.json b/abi/InvestingModule.json index 749cfa8..f654532 100644 --- a/abi/InvestingModule.json +++ b/abi/InvestingModule.json @@ -942,6 +942,15 @@ "stateMutability": "nonpayable", "type": "function" }, + { + "constant": false, + "inputs": [], + "name": "upgradeGuardCounter", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, { "constant": true, "inputs": [ diff --git a/abi/LendingPoolAddressesProvider.json b/abi/LendingPoolAddressesProvider.json new file mode 100644 index 0000000..a0684e9 --- /dev/null +++ b/abi/LendingPoolAddressesProvider.json @@ -0,0 +1,32 @@ +[ + { + "constant": true, + "inputs": [], + "name": "getLendingPool", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "getLendingPoolCore", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + } +] \ No newline at end of file diff --git a/abi/ReentrancyGuard.json b/abi/ReentrancyGuard.json new file mode 100644 index 0000000..be0c43e --- /dev/null +++ b/abi/ReentrancyGuard.json @@ -0,0 +1,8 @@ +[ + { + "inputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "constructor" + } +] \ No newline at end of file diff --git a/abi/SavingsModule.json b/abi/SavingsModule.json index 73f6e7b..9834cf6 100644 --- a/abi/SavingsModule.json +++ b/abi/SavingsModule.json @@ -626,6 +626,15 @@ "stateMutability": "nonpayable", "type": "function" }, + { + "constant": false, + "inputs": [], + "name": "upgradeGuardCounter", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, { "constant": false, "inputs": [ @@ -795,9 +804,9 @@ "constant": false, "inputs": [ { - "internalType": "address", - "name": "_protocol", - "type": "address" + "internalType": "address[]", + "name": "_protocols", + "type": "address[]" }, { "internalType": "address[]", @@ -813,9 +822,9 @@ "name": "deposit", "outputs": [ { - "internalType": "uint256", + "internalType": "uint256[]", "name": "", - "type": "uint256" + "type": "uint256[]" } ], "payable": false, @@ -826,9 +835,9 @@ "constant": false, "inputs": [ { - "internalType": "address[]", - "name": "_protocols", - "type": "address[]" + "internalType": "address", + "name": "_protocol", + "type": "address" }, { "internalType": "address[]", @@ -844,9 +853,9 @@ "name": "deposit", "outputs": [ { - "internalType": "uint256[]", + "internalType": "uint256", "name": "", - "type": "uint256[]" + "type": "uint256" } ], "payable": false, diff --git a/abi/Structs.json b/abi/Structs.json new file mode 100644 index 0000000..0637a08 --- /dev/null +++ b/abi/Structs.json @@ -0,0 +1 @@ +[] \ No newline at end of file diff --git a/abi/yDAI.json b/abi/yDAI.json new file mode 100644 index 0000000..9a789a4 --- /dev/null +++ b/abi/yDAI.json @@ -0,0 +1,807 @@ +[ + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "Approval", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "Transfer", + "type": "event" + }, + { + "payable": true, + "stateMutability": "payable", + "type": "fallback" + }, + { + "constant": true, + "inputs": [], + "name": "aave", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "aaveToken", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "internalType": "address", + "name": "spender", + "type": "address" + } + ], + "name": "allowance", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "approve", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "apr", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "balanceOf", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "compound", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "dToken", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "decimals", + "outputs": [ + { + "internalType": "uint8", + "name": "", + "type": "uint8" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "internalType": "uint256", + "name": "subtractedValue", + "type": "uint256" + } + ], + "name": "decreaseAllowance", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "dydx", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "fulcrum", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "internalType": "uint256", + "name": "addedValue", + "type": "uint256" + } + ], + "name": "increaseAllowance", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "name", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "pool", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "provider", + "outputs": [ + { + "internalType": "enum yDAI.Lender", + "name": "", + "type": "uint8" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "symbol", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "token", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "totalSupply", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "address", + "name": "recipient", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "transfer", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "address", + "name": "sender", + "type": "address" + }, + { + "internalType": "address", + "name": "recipient", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "transferFrom", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [], + "name": "initialize", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "string", + "name": "name", + "type": "string" + }, + { + "internalType": "string", + "name": "symbol", + "type": "string" + }, + { + "internalType": "uint8", + "name": "decimals", + "type": "uint8" + } + ], + "name": "initialize", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "uint256", + "name": "_amount", + "type": "uint256" + } + ], + "name": "deposit", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "uint256", + "name": "_shares", + "type": "uint256" + } + ], + "name": "withdraw", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "recommend", + "outputs": [ + { + "internalType": "enum yDAI.Lender", + "name": "", + "type": "uint8" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "supplyDydx", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "getAave", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "getAaveCore", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": false, + "inputs": [], + "name": "approveToken", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "balance", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "balanceDydx", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "balanceCompound", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "balanceCompoundInToken", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "balanceFulcrumInToken", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "balanceFulcrum", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "balanceAave", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": false, + "inputs": [], + "name": "rebalance", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "supplyAave", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "supplyFulcrum", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "supplyCompound", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "uint256", + "name": "_amount", + "type": "uint256" + } + ], + "name": "invest", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "calcPoolValueInToken", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "getPricePerFullShare", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "uint256", + "name": "_shares", + "type": "uint256" + } + ], + "name": "redeem", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + } +] \ No newline at end of file diff --git a/contracts/interfaces/access/IAccessModule.sol b/contracts/interfaces/access/IAccessModule.sol index ac18cf5..4ee7d70 100644 --- a/contracts/interfaces/access/IAccessModule.sol +++ b/contracts/interfaces/access/IAccessModule.sol @@ -12,4 +12,6 @@ interface IAccessModule { * @param sender Sender of transaction */ function isOperationAllowed(Operation operation, address sender) external view returns(bool); + + function getMaxGasLeft(Operation operation) external view returns(uint256); } \ No newline at end of file diff --git a/contracts/modules/access/AccessChecker.sol b/contracts/modules/access/AccessChecker.sol index 92e3d14..f8ad5fc 100644 --- a/contracts/modules/access/AccessChecker.sol +++ b/contracts/modules/access/AccessChecker.sol @@ -9,5 +9,9 @@ contract AccessChecker is Module { IAccessModule am = IAccessModule(getModuleAddress(MODULE_ACCESS)); require(am.isOperationAllowed(operation, _msgSender()), "AccessChecker: operation not allowed"); _; + uint256 maxGasLeft = am.getMaxGasLeft(operation); + if(maxGasLeft > 0) { + require(gasleft() <= maxGasLeft, "Too many gas left"); + } } } \ No newline at end of file diff --git a/contracts/modules/access/AccessModule.sol b/contracts/modules/access/AccessModule.sol index 702e2d3..6f0dcd4 100644 --- a/contracts/modules/access/AccessModule.sol +++ b/contracts/modules/access/AccessModule.sol @@ -6,35 +6,49 @@ import "../../common/Module.sol"; import "../../interfaces/access/IAccessModule.sol"; contract AccessModule is Module, IAccessModule, Pausable, WhitelistedRole { - event WhitelistEnabled(); - event WhitelistDisabled(); + event WhitelistForAllStatusChange(bool enabled); + event WhitelistForIntermediateSendersStatusChange(bool enabled); - bool public whitelistEnabled; + bool public whitelistEnabledForAll; + bool public whitelistEnabledForIntermediateSenders; + mapping(uint8=>uint256) public maxGasLeft; //Zero value means no limit function initialize(address _pool) public initializer { Module.initialize(_pool); Pausable.initialize(_msgSender()); WhitelistedRole.initialize(_msgSender()); - // enableWhitelist(); //whitelist is disabled by default for testnet, will be enabled by default for mainnet } - function enableWhitelist() public onlyWhitelistAdmin { - whitelistEnabled = true; - emit WhitelistEnabled(); + function setWhitelistForAll(bool enabled) public onlyWhitelistAdmin { + whitelistEnabledForAll = enabled; + emit WhitelistForAllStatusChange(enabled); } - function disableWhitelist() public onlyWhitelistAdmin { - whitelistEnabled = false; - emit WhitelistDisabled(); + function setWhitelistForIntermediateSenders(bool enabled) public onlyWhitelistAdmin { + whitelistEnabledForIntermediateSenders = enabled; + emit WhitelistForIntermediateSendersStatusChange(enabled); + } + + function setMaxGasLeft(Operation operation, uint256 value) public onlyWhitelistAdmin { + maxGasLeft[uint8(operation)] = value; + } + + function getMaxGasLeft(Operation operation) public view returns(uint256) { + return maxGasLeft[uint8(operation)]; } function isOperationAllowed(Operation operation, address sender) public view returns(bool) { (operation); //noop to prevent compiler warning if (paused()) return false; - if (!whitelistEnabled) { - return true; - } else { + if (whitelistEnabledForAll) { + return isWhitelisted(sender); + } else if( + whitelistEnabledForIntermediateSenders && + tx.origin != sender + ){ return isWhitelisted(sender); + } else { + return true; } } } diff --git a/contracts/modules/reward/RewardVestingModule.sol b/contracts/modules/reward/RewardVestingModule.sol index 296acd8..9533df8 100644 --- a/contracts/modules/reward/RewardVestingModule.sol +++ b/contracts/modules/reward/RewardVestingModule.sol @@ -104,6 +104,7 @@ contract RewardVestingModule is Module, RewardManagerRole { RewardInfo storage ri = r.rewardInfo[token]; uint256 epochsLength = ri.epochs.length; require(epochsLength > 0, "RewardVesting: protocol or token not registered"); + if(epochsLength == 1) return; // We can never claim from epoch 0 Epoch storage lastEpoch = ri.epochs[epochsLength-1]; uint256 previousClaim = ri.lastClaim; @@ -129,7 +130,7 @@ contract RewardVestingModule is Module, RewardManagerRole { break; } } - if(ep.end > block.timestamp) { + if(i > 0 && ep.end > block.timestamp) { //Half-claim uint256 epStart = ri.epochs[i-1].end; uint256 claimStart = (previousClaim > epStart)?previousClaim:epStart; diff --git a/contracts/modules/savings/RewardDistributions.sol b/contracts/modules/savings/RewardDistributions.sol index 8e91251..6871fa5 100644 --- a/contracts/modules/savings/RewardDistributions.sol +++ b/contracts/modules/savings/RewardDistributions.sol @@ -68,13 +68,15 @@ contract RewardDistributions is Base, AccessChecker { for(i=0; i < rewardTokens.length; i++){ balances[i] = upr.amounts[rewardTokens[i]]; } + uint256 sh = rb.shares[poolToken]; + if(sh == 0) return balances; + uint256 next = rb.nextDistribution; while (next < rewardDistributions.length) { RewardTokenDistribution storage d = rewardDistributions[next]; next++; - uint256 sh = rb.shares[d.poolToken]; - if (sh == 0 || poolToken != d.poolToken) continue; + if (poolToken != d.poolToken) continue; for(i=0; i < rewardTokens.length; i++){ uint256 distrAmount = d.amounts[rewardTokens[i]]; balances[i] = balances[i].add(distrAmount.mul(sh).div(d.totalShares)); diff --git a/contracts/modules/savings/SavingsModule.sol b/contracts/modules/savings/SavingsModule.sol index 1427164..57eb360 100644 --- a/contracts/modules/savings/SavingsModule.sol +++ b/contracts/modules/savings/SavingsModule.sol @@ -58,12 +58,33 @@ contract SavingsModule is Module, AccessChecker, RewardDistributions, CapperRole mapping(address=>uint256) public protocolCap; bool public vipUserEnabled; // Enable VIP user (overrides protocol cap) + uint256 private _guardCounter; // See OpenZeppelin ReentrancyGuard. Copied here to allow upgrade of already deployed contracts + function initialize(address _pool) public initializer { Module.initialize(_pool); CapperRole.initialize(_msgSender()); + + _guardCounter = 1; // See OpenZeppelin ReentrancyGuard. + } + + function upgradeGuardCounter() public onlyOwner { + require(_guardCounter == 0, "Already upgraded"); + _guardCounter = 1; + } + + /** + * @dev Prevents a contract from calling itself, directly or indirectly. + * See OpenZeppelin ReentrancyGuard + */ + modifier nonReentrant() { + _guardCounter += 1; + uint256 localCounter = _guardCounter; + _; + require(localCounter == _guardCounter, "ReentrancyGuard: reentrant call"); } + function setUserCapEnabled(bool _userCapEnabled) public onlyCapper { userCapEnabled = _userCapEnabled; emit UserCapEnabledChange(userCapEnabled); @@ -198,18 +219,20 @@ contract SavingsModule is Module, AccessChecker, RewardDistributions, CapperRole * @param _tokens Array of tokens to deposit * @param _dnAmounts Array of amounts (denormalized to token decimals) */ - function deposit(address[] memory _protocols, address[] memory _tokens, uint256[] memory _dnAmounts) - public operationAllowed(IAccessModule.Operation.Deposit) + function deposit(address[] calldata _protocols, address[] calldata _tokens, uint256[] calldata _dnAmounts) + external nonReentrant operationAllowed(IAccessModule.Operation.Deposit) returns(uint256[] memory) { require(_protocols.length == _tokens.length && _tokens.length == _dnAmounts.length, "SavingsModule: size of arrays does not match"); + require(isAllTokensRegistered(_tokens), "SavingsModule: unsupported token"); + uint256[] memory ptAmounts = new uint256[](_protocols.length); for (uint256 i=0; i < _protocols.length; i++) { address[] memory tkns = new address[](1); tkns[0] = _tokens[i]; uint256[] memory amnts = new uint256[](1); amnts[0] = _dnAmounts[i]; - ptAmounts[i] = deposit(_protocols[i], tkns, amnts); + ptAmounts[i] = _deposit(_protocols[i], tkns, amnts); } return ptAmounts; } @@ -220,8 +243,15 @@ contract SavingsModule is Module, AccessChecker, RewardDistributions, CapperRole * @param _tokens Array of tokens to deposit * @param _dnAmounts Array of amounts (denormalized to token decimals) */ - function deposit(address _protocol, address[] memory _tokens, uint256[] memory _dnAmounts) - public operationAllowed(IAccessModule.Operation.Deposit) + function deposit(address _protocol, address[] calldata _tokens, uint256[] calldata _dnAmounts) + external nonReentrant operationAllowed(IAccessModule.Operation.Deposit) + returns(uint256) { + require(isAllTokensRegistered(_tokens), "SavingsModule: unsupported token"); + _deposit(_protocol, _tokens, _dnAmounts); + } + + function _deposit(address _protocol, address[] memory _tokens, uint256[] memory _dnAmounts) + internal returns(uint256) { //distributeRewardIfRequired(_protocol); @@ -293,7 +323,7 @@ contract SavingsModule is Module, AccessChecker, RewardDistributions, CapperRole * @return Amount of PoolToken burned from user */ function withdrawAll(address _protocol, uint256 nAmount) - public operationAllowed(IAccessModule.Operation.Withdraw) + external nonReentrant operationAllowed(IAccessModule.Operation.Withdraw) returns(uint256) { //distributeRewardIfRequired(_protocol); @@ -341,8 +371,9 @@ contract SavingsModule is Module, AccessChecker, RewardDistributions, CapperRole * @return Amount of PoolToken burned from user */ function withdraw(address _protocol, address token, uint256 dnAmount, uint256 maxNAmount) - public operationAllowed(IAccessModule.Operation.Withdraw) + external nonReentrant operationAllowed(IAccessModule.Operation.Withdraw) returns(uint256){ + require(isTokenRegistered(token), "SavingsModule: unsupported token"); //distributeRewardIfRequired(_protocol); uint256 nAmount = normalizeTokenAmount(token, dnAmount); @@ -353,13 +384,13 @@ contract SavingsModule is Module, AccessChecker, RewardDistributions, CapperRole uint256 yield; uint256 actualAmount; - uint256 fee; + //uint256 fee; if(nBalanceAfter.add(nAmount) > nBalanceBefore) { yield = nBalanceAfter.add(nAmount).sub(nBalanceBefore); actualAmount = nAmount; }else{ actualAmount = nBalanceBefore.sub(nBalanceAfter); - if (actualAmount > nAmount) fee = actualAmount-nAmount; + //if (actualAmount > nAmount) fee = actualAmount-nAmount; } require(maxNAmount == 0 || actualAmount <= maxNAmount, "SavingsModule: provided maxNAmount is too low"); @@ -374,7 +405,7 @@ contract SavingsModule is Module, AccessChecker, RewardDistributions, CapperRole PoolToken poolToken = PoolToken(protocols[_protocol].poolToken); poolToken.burnFrom(_msgSender(), actualAmount); emit WithdrawToken(_protocol, token, dnAmount); - emit Withdraw(_protocol, _msgSender(), actualAmount, fee); + emit Withdraw(_protocol, _msgSender(), actualAmount, /*fee*/ (actualAmount>nAmount)?actualAmount.sub(nAmount):0 ); if (yield > 0) { @@ -388,7 +419,7 @@ contract SavingsModule is Module, AccessChecker, RewardDistributions, CapperRole /** * @notice Distributes yield. May be called by bot, if there was no deposits/withdrawals */ - function distributeYield() public { + function distributeYield() external { for(uint256 i=0; iuint256) nextDistribution; //Next unclaimed distribution + mapping(address => uint256) nextDistribution; //Next unclaimed distribution } struct RewardData { @@ -29,9 +29,8 @@ contract StakingPool is StakingPoolBase { RewardVestingModule public rewardVesting; address[] internal registeredRewardTokens; - mapping(address=>RewardData) internal rewards; - mapping(address=>UserRewardInfo) internal userRewards; - + mapping(address => RewardData) internal rewards; + mapping(address => UserRewardInfo) internal userRewards; modifier onlyRewardDistributionModule() { require(_msgSender() == getModuleAddress(MODULE_REWARD_DISTR), "StakingPool: calls allowed from RewardDistributionModule only"); @@ -48,26 +47,26 @@ contract StakingPool is StakingPoolBase { emit RewardTokenRegistered(token); } - function claimRewardsFromVesting() public onlyCapper{ + function claimRewardsFromVesting() public onlyCapper { _claimRewardsFromVesting(); } - function isRegisteredRewardToken(address token) public view returns(bool) { - for(uint256 i=0; i 0){ + if (rwrds > 0) { rewards[token].unclaimed = rewards[token].unclaimed.sub(rwrds); IERC20(token).transfer(user, rwrds); emit RewardWithdraw(user, token, rwrds); @@ -116,7 +116,12 @@ contract StakingPool is StakingPoolBase { return rwrds; } - function createStake(address _address, uint256 _amount, uint256 _lockInDuration, bytes memory _data) internal { + function createStake( + address _address, + uint256 _amount, + uint256 _lockInDuration, + bytes memory _data + ) internal { _withdrawRewards(_address); super.createStake(_address, _amount, _lockInDuration, _data); } @@ -126,27 +131,22 @@ contract StakingPool is StakingPoolBase { super.withdrawStake(_amount, _data); } - function _claimRewardsFromVesting() internal { rewardVesting.claimRewards(); - for(uint256 i=0; i < registeredRewardTokens.length; i++){ + for (uint256 i = 0; i < registeredRewardTokens.length; i++) { address rt = registeredRewardTokens[i]; uint256 expectedBalance = rewards[rt].unclaimed; - if(rt == address(stakingToken)){ + if (rt == address(stakingToken)) { expectedBalance = expectedBalance.add(totalStaked()); } uint256 actualBalance = IERC20(rt).balanceOf(address(this)); - uint256 distributionAmount = actualBalance.sub(expectedBalance); - if(actualBalance > expectedBalance) { + if (actualBalance > expectedBalance) { + uint256 distributionAmount = actualBalance.sub(expectedBalance); uint256 totalShares = totalStaked(); - rewards[rt].distributions.push(RewardDistribution({ - totalShares: totalShares, - amount: distributionAmount - })); + rewards[rt].distributions.push(RewardDistribution({totalShares: totalShares, amount: distributionAmount})); rewards[rt].unclaimed = rewards[rt].unclaimed.add(distributionAmount); emit RewardDistributionCreated(rt, distributionAmount, totalShares); } } } - } diff --git a/contracts/modules/staking/StakingPoolBase.sol b/contracts/modules/staking/StakingPoolBase.sol index 6ae7a07..2995a11 100644 --- a/contracts/modules/staking/StakingPoolBase.sol +++ b/contracts/modules/staking/StakingPoolBase.sol @@ -11,496 +11,460 @@ import "@openzeppelin/contracts-ethereum-package/contracts/access/roles/CapperRo * @title ERC900 Simple Staking Interface basic implementation * @dev See https://github.com/ethereum/EIPs/blob/master/EIPS/eip-900.md */ -contract StakingPoolBase is Module, IERC900, CapperRole { - // @TODO: deploy this separately so we don't have to deploy it multiple times for each contract - using SafeMath for uint256; - - // Token used for staking - ERC20 stakingToken; +contract StakingPoolBase is Module, IERC900, CapperRole { + // @TODO: deploy this separately so we don't have to deploy it multiple times for each contract + using SafeMath for uint256; + + // Token used for staking + ERC20 stakingToken; + + // The default duration of stake lock-in (in seconds) + uint256 public defaultLockInDuration; + + // To save on gas, rather than create a separate mapping for totalStakedFor & personalStakes, + // both data structures are stored in a single mapping for a given addresses. + // + // It's possible to have a non-existing personalStakes, but have tokens in totalStakedFor + // if other users are staking on behalf of a given address. + mapping(address => StakeContract) public stakeHolders; + + // Struct for personal stakes (i.e., stakes made by this address) + // unlockedTimestamp - when the stake unlocks (in seconds since Unix epoch) + // actualAmount - the amount of tokens in the stake + // stakedFor - the address the stake was staked for + struct Stake { + uint256 unlockedTimestamp; + uint256 actualAmount; + address stakedFor; + } - // The default duration of stake lock-in (in seconds) - uint256 public defaultLockInDuration; + // Struct for all stake metadata at a particular address + // totalStakedFor - the number of tokens staked for this address + // personalStakeIndex - the index in the personalStakes array. + // personalStakes - append only array of stakes made by this address + // exists - whether or not there are stakes that involve this address + struct StakeContract { + uint256 totalStakedFor; + uint256 personalStakeIndex; + Stake[] personalStakes; + bool exists; + } - // To save on gas, rather than create a separate mapping for totalStakedFor & personalStakes, - // both data structures are stored in a single mapping for a given addresses. - // - // It's possible to have a non-existing personalStakes, but have tokens in totalStakedFor - // if other users are staking on behalf of a given address. - mapping (address => StakeContract) public stakeHolders; - - // Struct for personal stakes (i.e., stakes made by this address) - // unlockedTimestamp - when the stake unlocks (in seconds since Unix epoch) - // actualAmount - the amount of tokens in the stake - // stakedFor - the address the stake was staked for - struct Stake { - uint256 unlockedTimestamp; - uint256 actualAmount; - address stakedFor; - } + bool public userCapEnabled; - // Struct for all stake metadata at a particular address - // totalStakedFor - the number of tokens staked for this address - // personalStakeIndex - the index in the personalStakes array. - // personalStakes - append only array of stakes made by this address - // exists - whether or not there are stakes that involve this address - struct StakeContract { - uint256 totalStakedFor; + mapping(address => uint256) public userCap; //Limit of pool tokens which can be minted for a user during deposit - uint256 personalStakeIndex; + uint256 public defaultUserCap; + bool public stakingCapEnabled; + uint256 public stakingCap; - Stake[] personalStakes; + bool public vipUserEnabled; + mapping(address => bool) public isVipUser; - bool exists; - } + uint256 internal totalStakedAmount; - bool public userCapEnabled; + uint256 public coeffScore; - mapping(address => uint256) public userCap; //Limit of pool tokens which can be minted for a user during deposit + uint256 private _guardCounter; // See OpenZeppelin ReentrancyGuard. Copied here to allow upgrade of already deployed contracts - - uint256 public defaultUserCap; - bool public stakingCapEnabled; - uint256 public stakingCap; + event VipUserEnabledChange(bool enabled); + event VipUserChanged(address indexed user, bool isVip); + event StakingCapChanged(uint256 newCap); + event StakingCapEnabledChange(bool enabled); - bool public vipUserEnabled; - mapping(address => bool) public isVipUser; + //global cap + event DefaultUserCapChanged(uint256 newCap); - uint256 internal totalStakedAmount; + event UserCapEnabledChange(bool enabled); - uint256 public coeffScore; - + event UserCapChanged(address indexed user, uint256 newCap); + event Staked(address indexed user, uint256 amount, uint256 totalStacked, bytes data); + event Unstaked(address indexed user, uint256 amount, uint256 totalStacked, bytes data); + event setLockInDuration(uint256 defaultLockInDuration); + event CoeffScoreUpdated(uint256 coeff); - event VipUserEnabledChange(bool enabled); - event VipUserChanged(address indexed user, bool isVip); + /** + * @dev Prevents a contract from calling itself, directly or indirectly. + * See OpenZeppelin ReentrancyGuard + */ + modifier nonReentrant() { + _guardCounter += 1; + uint256 localCounter = _guardCounter; + _; + require(localCounter == _guardCounter, "ReentrancyGuard: reentrant call"); + } - event StakingCapChanged(uint256 newCap); - event StakingCapEnabledChange(bool enabled); + /** + * @dev Modifier that checks that this contract can transfer tokens from the + * balance in the stakingToken contract for the given address. + * @dev This modifier also transfers the tokens. + * @param _address address to transfer tokens from + * @param _amount uint256 the number of tokens + */ + modifier canStake(address _address, uint256 _amount) { + require(stakingToken.transferFrom(_address, address(this), _amount), "Stake required"); + + _; + } - //global cap - event DefaultUserCapChanged(uint256 newCap); + modifier isUserCapEnabledForStakeFor(uint256 stake) { + if (stakingCapEnabled && !(vipUserEnabled && isVipUser[_msgSender()])) { + require((stakingCap > totalStaked() && (stakingCap - totalStaked() >= stake)), "StakingPoolBase: stake exeeds staking cap"); + } - event UserCapEnabledChange(bool enabled); + if (userCapEnabled) { + uint256 cap = userCap[_msgSender()]; + //check default user cap settings + if (defaultUserCap > 0) { + uint256 totalStaked = totalStakedFor(_msgSender()); + //get new cap + if (defaultUserCap >= totalStaked) { + cap = defaultUserCap.sub(totalStaked); + } else { + cap = 0; + } + } + + require(cap >= stake, "StakingPoolBase: stake exeeds cap"); + cap = cap.sub(stake); + userCap[_msgSender()] = cap; + emit UserCapChanged(_msgSender(), cap); + } - event UserCapChanged(address indexed user, uint256 newCap); - event Staked(address indexed user, uint256 amount, uint256 totalStacked, bytes data); - event Unstaked(address indexed user, uint256 amount, uint256 totalStacked, bytes data); - event setLockInDuration(uint256 defaultLockInDuration); + _; + } - event CoeffScoreUpdated(uint256 coeff); - /** - * @dev Modifier that checks that this contract can transfer tokens from the - * balance in the stakingToken contract for the given address. - * @dev This modifier also transfers the tokens. - * @param _address address to transfer tokens from - * @param _amount uint256 the number of tokens - */ - modifier canStake(address _address, uint256 _amount) { - require( - stakingToken.transferFrom(_address, address(this), _amount), - "Stake required"); + modifier isUserCapEnabledForUnStakeFor(uint256 unStake) { + _; - _; - } + if (userCapEnabled) { + uint256 cap = userCap[_msgSender()]; + cap = cap.add(unStake); + if (cap > defaultUserCap) { + cap = defaultUserCap; + } - modifier isUserCapEnabledForStakeFor(uint256 stake) { + userCap[_msgSender()] = cap; + emit UserCapChanged(_msgSender(), cap); + } + } - if (stakingCapEnabled && !(vipUserEnabled && isVipUser[_msgSender()])) { - require((stakingCap > totalStaked() && (stakingCap-totalStaked() >= stake)), "StakingModule: stake exeeds staking cap"); + modifier checkUserCapDisabled() { + require(isUserCapEnabled() == false, "UserCapEnabled"); + _; } - if(userCapEnabled) { - uint256 cap = userCap[_msgSender()]; - //check default user cap settings - if (defaultUserCap > 0) { - uint256 totalStaked = totalStakedFor(_msgSender()); - //get new cap - if (defaultUserCap >= totalStaked) { - cap = defaultUserCap.sub(totalStaked); - } else { - cap = 0; - } - } - - require(cap >= stake, "StakingModule: stake exeeds cap"); - cap = cap.sub(stake); - userCap[_msgSender()] = cap; - emit UserCapChanged(_msgSender(), cap); + modifier checkUserCapEnabled() { + require(isUserCapEnabled(), "UserCapDisabled"); + _; } - - _; - } + function initialize( + address _pool, + ERC20 _stakingToken, + uint256 _defaultLockInDuration + ) public initializer { + stakingToken = _stakingToken; + defaultLockInDuration = _defaultLockInDuration; + Module.initialize(_pool); - modifier isUserCapEnabledForUnStakeFor(uint256 unStake) { - _; + CapperRole.initialize(_msgSender()); + } - if(userCapEnabled){ - uint256 cap = userCap[_msgSender()]; - cap = cap.add(unStake); + function setDefaultLockInDuration(uint256 _defaultLockInDuration) public onlyOwner { + defaultLockInDuration = _defaultLockInDuration; + emit setLockInDuration(_defaultLockInDuration); + } - if (cap > defaultUserCap) { - cap = defaultUserCap; - } + function setUserCapEnabled(bool _userCapEnabled) public onlyCapper { + userCapEnabled = _userCapEnabled; + emit UserCapEnabledChange(userCapEnabled); + } - userCap[_msgSender()] = cap; - emit UserCapChanged(_msgSender(), cap); - } - } + function setStakingCapEnabled(bool _stakingCapEnabled) public onlyCapper { + stakingCapEnabled = _stakingCapEnabled; + emit StakingCapEnabledChange(stakingCapEnabled); + } - modifier checkUserCapDisabled() { - require(isUserCapEnabled() == false, "UserCapEnabled"); - _; - } + function setDefaultUserCap(uint256 _newCap) public onlyCapper { + defaultUserCap = _newCap; + emit DefaultUserCapChanged(_newCap); + } - modifier checkUserCapEnabled() { - require(isUserCapEnabled(), "UserCapDisabled"); - _; - } - + function setStakingCap(uint256 _newCap) public onlyCapper { + stakingCap = _newCap; + emit StakingCapChanged(_newCap); + } - function initialize(address _pool, ERC20 _stakingToken, uint256 _defaultLockInDuration) public initializer { - stakingToken = _stakingToken; - defaultLockInDuration = _defaultLockInDuration; - Module.initialize(_pool); + function setUserCap(address user, uint256 cap) public onlyCapper { + userCap[user] = cap; + emit UserCapChanged(user, cap); + } - CapperRole.initialize(_msgSender()); - } - - function setDefaultLockInDuration(uint256 _defaultLockInDuration) public onlyOwner { - defaultLockInDuration = _defaultLockInDuration; - emit setLockInDuration(_defaultLockInDuration); - } - - function setUserCapEnabled(bool _userCapEnabled) public onlyCapper { - userCapEnabled = _userCapEnabled; - emit UserCapEnabledChange(userCapEnabled); - } - - function setStakingCapEnabled(bool _stakingCapEnabled) public onlyCapper { - stakingCapEnabled= _stakingCapEnabled; - emit StakingCapEnabledChange(stakingCapEnabled); - } - - function setDefaultUserCap(uint256 _newCap) public onlyCapper { - defaultUserCap = _newCap; - emit DefaultUserCapChanged(_newCap); - } - - function setStakingCap(uint256 _newCap) public onlyCapper { - stakingCap = _newCap; - emit StakingCapChanged(_newCap); - } - - function setUserCap(address user, uint256 cap) public onlyCapper { - userCap[user] = cap; - emit UserCapChanged(user, cap); - } - - function setUserCap(address[] memory users, uint256[] memory caps) public onlyCapper { - require(users.length == caps.length, "SavingsModule: arrays length not match"); - for(uint256 i=0; i < users.length; i++) { + function setUserCap(address[] memory users, uint256[] memory caps) public onlyCapper { + require(users.length == caps.length, "StakingPoolBase: arrays length not match"); + for (uint256 i = 0; i < users.length; i++) { userCap[users[i]] = caps[i]; emit UserCapChanged(users[i], caps[i]); } - } - - - function setVipUserEnabled(bool _vipUserEnabled) public onlyCapper { - vipUserEnabled = _vipUserEnabled; - emit VipUserEnabledChange(_vipUserEnabled); - } - - function setVipUser(address user, bool isVip) public onlyCapper { - isVipUser[user] = isVip; - emit VipUserChanged(user, isVip); - } - - - function setCoeffScore(uint256 coeff) public onlyCapper { - coeffScore = coeff; - - emit CoeffScoreUpdated(coeff); - } - - function isUserCapEnabled() public view returns(bool) { - return userCapEnabled; - } - - - function iStakingCapEnabled() public view returns(bool) { - return stakingCapEnabled; - } - - /** - * @dev Returns the timestamps for when active personal stakes for an address will unlock - * @dev These accessors functions are needed until https://github.com/ethereum/web3.js/issues/1241 is solved - * @param _address address that created the stakes - * @return uint256[] array of timestamps - */ - function getPersonalStakeUnlockedTimestamps(address _address) external view returns (uint256[] memory) { - uint256[] memory timestamps; - (timestamps,,) = getPersonalStakes(_address); - - return timestamps; - } - - - - - /** - * @dev Returns the stake actualAmount for active personal stakes for an address - * @dev These accessors functions are needed until https://github.com/ethereum/web3.js/issues/1241 is solved - * @param _address address that created the stakes - * @return uint256[] array of actualAmounts - */ - function getPersonalStakeActualAmounts(address _address) external view returns (uint256[] memory) { - uint256[] memory actualAmounts; - (,actualAmounts,) = getPersonalStakes(_address); - - return actualAmounts; - } - - function getPersonalStakeTotalAmount(address _address) public view returns(uint256) { - uint256[] memory actualAmounts; - (,actualAmounts,) = getPersonalStakes(_address); - uint256 totalStake; - for(uint256 i=0; i { //let snap:Snapshot; - let dai:FreeErc20Instance; + let dai:FreeERC20Instance; let cDai:CErc20StubInstance; - let comp:FreeErc20Instance; + let comp:FreeERC20Instance; let comptroller:ComptrollerStubInstance; @@ -63,10 +63,10 @@ contract("RewardDistributionModule - migration", async ([owner, user, ...otherAc let rewardVesting:RewardVestingModuleInstance; let compoundProtocolDai:CompoundProtocolInstance; let poolTokenCompoundProtocolDai:PoolTokenOldInstance|PoolTokenInstance; - let akro:FreeErc20Instance; - let adel:FreeErc20Instance; + let akro:FreeERC20Instance; + let adel:FreeERC20Instance; let stakingPoolAkro:StakingPoolInstance; - let stakingPoolAdel:StakingPoolAdelInstance; + let stakingPoolAdel:StakingPoolADELInstance; before(async () => { diff --git a/test/modules/reward/RewardDistributionModule_reward_migration.ts b/test/modules/reward/RewardDistributionModule_reward_migration.ts new file mode 100644 index 0000000..67fe18a --- /dev/null +++ b/test/modules/reward/RewardDistributionModule_reward_migration.ts @@ -0,0 +1,173 @@ +import { + PoolContract, PoolInstance, + AccessModuleContract, AccessModuleInstance, + SavingsModuleContract, SavingsModuleInstance, + SavingsModuleOldContract,SavingsModuleOldInstance, + RewardDistributionModuleContract,RewardDistributionModuleInstance, + RewardVestingModuleContract, RewardVestingModuleInstance, + CompoundProtocolContract,CompoundProtocolInstance, + PoolTokenContract,PoolTokenInstance, + StakingPoolContract,StakingPoolInstance, + StakingPoolADELContract,StakingPoolADELInstance, + FreeERC20Contract,FreeERC20Instance, + CErc20StubContract,CErc20StubInstance, + ComptrollerStubContract,ComptrollerStubInstance +} from "../../../types/truffle-contracts/index"; + + +const { BN, constants, expectEvent, shouldFail, time } = require("@openzeppelin/test-helpers"); +const { deployProxy, upgradeProxy } = require('@openzeppelin/truffle-upgrades'); +const UPGRADABLE_OPTS = { + unsafeAllowCustomTypes: true +}; + +import Snapshot from "./../../utils/snapshot"; +const should = require("chai").should(); +var expect = require("chai").expect; +const expectRevert= require("./../../utils/expectRevert"); +const expectEqualBN = require("./../../utils/expectEqualBN"); +const w3random = require("./../../utils/w3random"); + +const FreeERC20 = artifacts.require("FreeERC20"); +const CErc20Stub = artifacts.require("CErc20Stub"); +const ComptrollerStub = artifacts.require("ComptrollerStub"); + +const Pool = artifacts.require("Pool"); +const AccessModule = artifacts.require("AccessModule"); +const SavingsModule = artifacts.require("SavingsModule"); +const SavingsModuleOld = artifacts.require("SavingsModuleOld"); +const RewardVestingModule = artifacts.require("RewardVestingModule"); +const RewardDistributionModule = artifacts.require("RewardDistributionModule"); +const CompoundProtocol = artifacts.require("CompoundProtocol"); +const PoolToken = artifacts.require("PoolToken"); + +const StakingPool = artifacts.require("StakingPool"); +const StakingPoolADEL = artifacts.require("StakingPoolADEL"); + +contract("RewardDistributionModule - reward migration", async ([owner, user, ...otherAccounts]) => { + //let snap:Snapshot; + + let dai:FreeERC20Instance; + let cDai:CErc20StubInstance; + let comp:FreeERC20Instance; + let comptroller:ComptrollerStubInstance; + + + let pool:PoolInstance; + let access:AccessModuleInstance; + let savings:SavingsModuleOldInstance|SavingsModuleInstance; + let rewardDistributions:RewardDistributionModuleInstance; + let rewardVesting:RewardVestingModuleInstance; + let compoundProtocolDai:CompoundProtocolInstance; + let poolTokenCompoundProtocolDai:PoolTokenInstance; + let akro:FreeERC20Instance; + let adel:FreeERC20Instance; + let stakingPoolAkro:StakingPoolInstance; + let stakingPoolAdel:StakingPoolADELInstance; + + + before(async () => { + //Setup external contracts + dai = await FreeERC20.new(); + await dai.methods['initialize(string,string,uint8)']("Dai Stablecoin", "DAI", 18); + cDai = await CErc20Stub.new(); + await cDai.methods['initialize(address)'](dai.address); + comp = await FreeERC20.new(); + await comp.methods['initialize(string,string,uint8)']("Compound", "COMP", 18); + comptroller = await ComptrollerStub.new(); + await comptroller.methods['initialize(address)'](comp.address); + + + await comptroller.setSupportedCTokens([cDai.address]); + await comp.methods['mint(address,uint256)'](comptroller.address, web3.utils.toWei('1000000000')); + + //Setup system contracts + pool = await Pool.new(); + await pool.methods['initialize()'](); + access = await AccessModule.new(); + await access.methods['initialize(address)'](pool.address); + await pool.set('access', access.address, false); + + // savings = await SavingsModule.new(); + // await savings.methods['initialize(address)'](pool.address); + savings = await deployProxy(SavingsModuleOld, [pool.address], UPGRADABLE_OPTS); + await pool.set('savings', savings.address, false); + + akro = await FreeERC20.new(); + await akro.methods['initialize(string,string)']("Akropolis", "AKRO"); + await pool.set('akro', akro.address, false); + adel = await FreeERC20.new(); + await adel.methods['initialize(string,string)']("Akropolis Delphi", "ADEL"); + await pool.set('adel', adel.address, false); + + stakingPoolAkro = await StakingPool.new(); + await stakingPoolAkro.methods['initialize(address,address,uint256)'](pool.address, akro.address, '0'); + await pool.set('staking', stakingPoolAkro.address, false); + stakingPoolAdel = await StakingPoolADEL.new(); + await stakingPoolAdel.methods['initialize(address,address,uint256)'](pool.address, adel.address, '0'); + await pool.set('stakingAdel', stakingPoolAdel.address, false); + + compoundProtocolDai = await CompoundProtocol.new(); + await compoundProtocolDai.methods['initialize(address,address,address,address)'](pool.address, dai.address, cDai.address, comptroller.address); + poolTokenCompoundProtocolDai = await PoolToken.new(); + await poolTokenCompoundProtocolDai.methods['initialize(address,string,string)'](pool.address, "Delphi Compound DAI","dCDAI"); + await savings.registerProtocol(compoundProtocolDai.address, poolTokenCompoundProtocolDai.address); + await compoundProtocolDai.addDefiOperator(savings.address); + await poolTokenCompoundProtocolDai.addMinter(savings.address); + + rewardVesting = await RewardVestingModule.new(); + await rewardVesting.methods['initialize(address)'](pool.address); + await pool.set('reward', rewardVesting.address, false); + + rewardDistributions = await RewardDistributionModule.new(); + await rewardDistributions.methods['initialize(address)'](pool.address); + await pool.set('rewardDistributions', rewardDistributions.address, false); + await rewardDistributions.registerProtocol(compoundProtocolDai.address, poolTokenCompoundProtocolDai.address); + await compoundProtocolDai.addDefiOperator(rewardDistributions.address); + + //Save snapshot + //snap = await Snapshot.create(web3.currentProvider); + + //Create distributions + for(let i=0; i<50; i++){ + let randUser = Math.round(5*Math.random()); + await deposit(otherAccounts[randUser], w3random.interval(10, 20, 'ether')); + + await time.increase(7*24*60*60); + await (savings).distributeRewardsForced(compoundProtocolDai.address); + } + + // Upgrade Savings + savings = await upgradeProxy(savings.address, SavingsModule, UPGRADABLE_OPTS); + }); + + beforeEach(async () => { + //await snap.revert(); + }); + + + it('should use low gas if migrate rewards for user not participated in a pool', async () => { + let tx = await rewardDistributions.migrateRewards([user]); + //console.log(tx); + let gasUsed = tx.receipt.gasUsed; + expect(gasUsed).to.be.lt(100000); + }); + + it('should use low gas if withdraw rewards for user not participated in a pool', async () => { + let tx = await rewardDistributions.methods['withdrawReward()']({from:user}); + //console.log(tx); + let gasUsed = tx.receipt.gasUsed; + expect(gasUsed).to.be.lt(100000); + }); + + async function deposit(acc:string, amount:BN){ + await dai.methods['mint(address,uint256)'](acc, amount); + await dai.approve(savings.address, amount, {from:acc}); +console.log('balance', (await dai.balanceOf(acc)).toString()); +console.log('allowance', (await dai.allowance(acc,savings.address)).toString()); +console.log('deposit', acc, amount.toString()); + await savings.methods['deposit(address,address[],uint256[])'](compoundProtocolDai.address, [dai.address], [amount.divn(2)], {from:acc}); +console.log('deposit-done'); + } + +}); diff --git a/truffle-config.js b/truffle-config.js index 65bb419..5dc4511 100644 --- a/truffle-config.js +++ b/truffle-config.js @@ -95,7 +95,7 @@ module.exports = { //provider: () => new HDWalletProvider(process.env.DEV_MNEMONIC, "https://cloudflare-eth.com/"), provider: () => new HDWalletProvider(process.env.DEV_MNEMONIC, "https://mainnet.infura.io/v3/" + infuraProjectId), networkId: 1, // Mainnet's id - gasPrice: 45000000000, + gasPrice: 60000000000, }, // Another network with more advanced options... diff --git a/yarn.lock b/yarn.lock index db8360a..05ce64e 100644 --- a/yarn.lock +++ b/yarn.lock @@ -76,6 +76,21 @@ "@ethersproject/properties" ">=5.0.0-beta.131" "@ethersproject/strings" ">=5.0.0-beta.130" +"@ethersproject/abi@5.0.7": + version "5.0.7" + resolved "https://registry.yarnpkg.com/@ethersproject/abi/-/abi-5.0.7.tgz#79e52452bd3ca2956d0e1c964207a58ad1a0ee7b" + integrity sha512-Cqktk+hSIckwP/W8O47Eef60VwmoSC/L3lY0+dIBhQPCNn9E4V7rwmm2aFrNRRDJfFlGuZ1khkQUOc3oBX+niw== + dependencies: + "@ethersproject/address" "^5.0.4" + "@ethersproject/bignumber" "^5.0.7" + "@ethersproject/bytes" "^5.0.4" + "@ethersproject/constants" "^5.0.4" + "@ethersproject/hash" "^5.0.4" + "@ethersproject/keccak256" "^5.0.3" + "@ethersproject/logger" "^5.0.5" + "@ethersproject/properties" "^5.0.3" + "@ethersproject/strings" "^5.0.4" + "@ethersproject/abi@^5.0.0-beta.146": version "5.0.2" resolved "https://registry.yarnpkg.com/@ethersproject/abi/-/abi-5.0.2.tgz#7fe8f080aa1483fe32cd27bb5b8f2019266af1e2" @@ -91,51 +106,84 @@ "@ethersproject/properties" "^5.0.0" "@ethersproject/strings" "^5.0.0" -"@ethersproject/address@>=5.0.0-beta.128", "@ethersproject/address@^5.0.0": - version "5.0.1" - resolved "https://registry.yarnpkg.com/@ethersproject/address/-/address-5.0.1.tgz#882424fbbec1111abc1aa3482e647a72683c5377" - integrity sha512-kfQtXpBP2pI2TfoRRAYv8grHGiYw8U0c1KbMsC58/W33TIBy7gFSf/oAzOd94lNzdIUenKU0OuSzrHQfVcDDDA== - dependencies: - "@ethersproject/bignumber" "^5.0.0" - "@ethersproject/bytes" "^5.0.0" - "@ethersproject/keccak256" "^5.0.0" - "@ethersproject/logger" "^5.0.0" - "@ethersproject/rlp" "^5.0.0" +"@ethersproject/abstract-provider@^5.0.4": + version "5.0.7" + resolved "https://registry.yarnpkg.com/@ethersproject/abstract-provider/-/abstract-provider-5.0.7.tgz#04ee3bfe43323384e7fecf6c774975b8dec4bdc9" + integrity sha512-NF16JGn6M0zZP5ZS8KtDL2Rh7yHxZbUjBIHLNHMm/0X0BephhjUWy8jqs/Zks6kDJRzNthgmPVy41Ec0RYWPYA== + dependencies: + "@ethersproject/bignumber" "^5.0.7" + "@ethersproject/bytes" "^5.0.4" + "@ethersproject/logger" "^5.0.5" + "@ethersproject/networks" "^5.0.3" + "@ethersproject/properties" "^5.0.3" + "@ethersproject/transactions" "^5.0.5" + "@ethersproject/web" "^5.0.6" + +"@ethersproject/abstract-signer@^5.0.6": + version "5.0.9" + resolved "https://registry.yarnpkg.com/@ethersproject/abstract-signer/-/abstract-signer-5.0.9.tgz#238ddc06031aeb9dfceee2add965292d7dd1acbf" + integrity sha512-CM5UNmXQaA03MyYARFDDRjHWBxujO41tVle7glf5kHcQsDDULgqSVpkliLJMtPzZjOKFeCVZBHybTZDEZg5zzg== + dependencies: + "@ethersproject/abstract-provider" "^5.0.4" + "@ethersproject/bignumber" "^5.0.7" + "@ethersproject/bytes" "^5.0.4" + "@ethersproject/logger" "^5.0.5" + "@ethersproject/properties" "^5.0.3" + +"@ethersproject/address@>=5.0.0-beta.128", "@ethersproject/address@^5.0.0", "@ethersproject/address@^5.0.4", "@ethersproject/address@^5.0.5": + version "5.0.8" + resolved "https://registry.yarnpkg.com/@ethersproject/address/-/address-5.0.8.tgz#0c551659144a5a7643c6bea337149d410825298f" + integrity sha512-V87DHiZMZR6hmFYmoGaHex0D53UEbZpW75uj8AqPbjYUmi65RB4N2LPRcJXuWuN2R0Y2CxkvW6ArijWychr5FA== + dependencies: + "@ethersproject/bignumber" "^5.0.10" + "@ethersproject/bytes" "^5.0.4" + "@ethersproject/keccak256" "^5.0.3" + "@ethersproject/logger" "^5.0.5" + "@ethersproject/rlp" "^5.0.3" + +"@ethersproject/base64@^5.0.3": + version "5.0.6" + resolved "https://registry.yarnpkg.com/@ethersproject/base64/-/base64-5.0.6.tgz#26311ebf29ea3d0b9c300ccf3e1fdc44b7481516" + integrity sha512-HwrGn8YMiUf7bcdVvB4NJ+eWT0BtEFpDtrYxVXEbR7p/XBSJjwiR7DEggIiRvxbualMKg+EZijQWJ3az2li0uw== + dependencies: + "@ethersproject/bytes" "^5.0.4" + +"@ethersproject/bignumber@>=5.0.0-beta.130", "@ethersproject/bignumber@^5.0.0", "@ethersproject/bignumber@^5.0.10", "@ethersproject/bignumber@^5.0.7", "@ethersproject/bignumber@^5.0.8": + version "5.0.12" + resolved "https://registry.yarnpkg.com/@ethersproject/bignumber/-/bignumber-5.0.12.tgz#fe4a78667d7cb01790f75131147e82d6ea7e7cba" + integrity sha512-mbFZjwthx6vFlHG9owXP/C5QkNvsA+xHpDCkPPPdG2n1dS9AmZAL5DI0InNLid60rQWL3MXpEl19tFmtL7Q9jw== + dependencies: + "@ethersproject/bytes" "^5.0.8" + "@ethersproject/logger" "^5.0.5" bn.js "^4.4.0" -"@ethersproject/bignumber@>=5.0.0-beta.130", "@ethersproject/bignumber@^5.0.0": - version "5.0.4" - resolved "https://registry.yarnpkg.com/@ethersproject/bignumber/-/bignumber-5.0.4.tgz#2061a85cfe07d496a005047442fcb3277d371169" - integrity sha512-fgfwehdxS4BPRvq2B+joKqchW2E2cV3DE+O/DhG7jH3m2blM1VIzjtIOtJNjNI/YCgkygGjT1DaZS1j29RAwHw== +"@ethersproject/bytes@>=5.0.0-beta.129", "@ethersproject/bytes@^5.0.0", "@ethersproject/bytes@^5.0.4", "@ethersproject/bytes@^5.0.8": + version "5.0.8" + resolved "https://registry.yarnpkg.com/@ethersproject/bytes/-/bytes-5.0.8.tgz#cf1246a6a386086e590063a4602b1ffb6cc43db1" + integrity sha512-O+sJNVGzzuy51g+EMK8BegomqNIg+C2RO6vOt0XP6ac4o4saiq69FnjlsrNslaiMFVO7qcEHBsWJ9hx1tj1lMw== dependencies: - "@ethersproject/bytes" "^5.0.0" - "@ethersproject/logger" "^5.0.0" - "@ethersproject/properties" "^5.0.0" - bn.js "^4.4.0" + "@ethersproject/logger" "^5.0.5" -"@ethersproject/bytes@>=5.0.0-beta.129", "@ethersproject/bytes@^5.0.0": - version "5.0.2" - resolved "https://registry.yarnpkg.com/@ethersproject/bytes/-/bytes-5.0.2.tgz#42aa6e6fca4c594b282ef424dd082b8ffd67058b" - integrity sha512-QLE5zCreNv7KGh0AsXdvmdOYcWSJbnR654M+dLyY90g3D0ehVDSf+wxzG/GmWa79ESsqo/cWC1kJA1Vrcq7GFw== +"@ethersproject/constants@>=5.0.0-beta.128", "@ethersproject/constants@^5.0.0", "@ethersproject/constants@^5.0.4": + version "5.0.7" + resolved "https://registry.yarnpkg.com/@ethersproject/constants/-/constants-5.0.7.tgz#44ff979e5781b17c8c6901266896c3ee745f4e7e" + integrity sha512-cbQK1UpE4hamB52Eg6DLhJoXeQ1plSzekh5Ujir1xdREdwdsZPPXKczkrWqBBR0KyywJZHN/o/hj0w8j7scSGg== dependencies: - "@ethersproject/logger" "^5.0.0" + "@ethersproject/bignumber" "^5.0.7" -"@ethersproject/constants@>=5.0.0-beta.128", "@ethersproject/constants@^5.0.0": - version "5.0.1" - resolved "https://registry.yarnpkg.com/@ethersproject/constants/-/constants-5.0.1.tgz#51426b1d673661e905418ddeefca1f634866860d" - integrity sha512-Xec07hFCPN4wfC3WDiRay7KipkApl2msiKTrBHCuAwNMOM8M92+mlQp8tgfEL51DPwCZkmdk1f02kArc6caVSw== +"@ethersproject/hash@>=5.0.0-beta.128", "@ethersproject/hash@^5.0.4": + version "5.0.9" + resolved "https://registry.yarnpkg.com/@ethersproject/hash/-/hash-5.0.9.tgz#81252a848185b584aa600db4a1a68cad9229a4d4" + integrity sha512-e8/i2ZDeGSgCxXT0vocL54+pMbw5oX5fNjb2E3bAIvdkh5kH29M7zz1jHu1QDZnptIuvCZepIbhUH8lxKE2/SQ== dependencies: - "@ethersproject/bignumber" "^5.0.0" - -"@ethersproject/hash@>=5.0.0-beta.128": - version "5.0.1" - resolved "https://registry.yarnpkg.com/@ethersproject/hash/-/hash-5.0.1.tgz#8190240d250b9442dd25f1e8ec2d66e7d0d38237" - integrity sha512-1ByUXYvkszrSSks07xctBtZfpFnIVmftxWlAAnguxh6Q65vKECd/EPi5uI5xVOvnrYMH9Vb8MK1SofPX/6fArQ== - dependencies: - "@ethersproject/bytes" "^5.0.0" - "@ethersproject/keccak256" "^5.0.0" - "@ethersproject/logger" "^5.0.0" - "@ethersproject/strings" "^5.0.0" + "@ethersproject/abstract-signer" "^5.0.6" + "@ethersproject/address" "^5.0.5" + "@ethersproject/bignumber" "^5.0.8" + "@ethersproject/bytes" "^5.0.4" + "@ethersproject/keccak256" "^5.0.3" + "@ethersproject/logger" "^5.0.5" + "@ethersproject/properties" "^5.0.4" + "@ethersproject/strings" "^5.0.4" "@ethersproject/hash@^5.0.0": version "5.0.2" @@ -147,67 +195,85 @@ "@ethersproject/logger" "^5.0.0" "@ethersproject/strings" "^5.0.0" -"@ethersproject/keccak256@>=5.0.0-beta.127", "@ethersproject/keccak256@^5.0.0": - version "5.0.1" - resolved "https://registry.yarnpkg.com/@ethersproject/keccak256/-/keccak256-5.0.1.tgz#be91c11a8bdf4e94c8b900502d2a46b223fbdeb3" - integrity sha512-AtFm/4qHRQUvZcG3WYmaT7zV79dz72+N01w0XphcIBaD/7UZXyW85Uf08sirVlckHmh9fvc4UDWyHiroKsBT6Q== +"@ethersproject/keccak256@>=5.0.0-beta.127", "@ethersproject/keccak256@^5.0.0", "@ethersproject/keccak256@^5.0.3": + version "5.0.6" + resolved "https://registry.yarnpkg.com/@ethersproject/keccak256/-/keccak256-5.0.6.tgz#5b5ba715ef1be86efde5c271f896fa0daf0e1efe" + integrity sha512-eJ4Id/i2rwrf5JXEA7a12bG1phuxjj47mPZgDUbttuNBodhSuZF2nEO5QdpaRjmlphQ8Kt9PNqY/z7lhtJptZg== dependencies: - "@ethersproject/bytes" "^5.0.0" + "@ethersproject/bytes" "^5.0.4" js-sha3 "0.5.7" -"@ethersproject/logger@>=5.0.0-beta.129", "@ethersproject/logger@^5.0.0": - version "5.0.2" - resolved "https://registry.yarnpkg.com/@ethersproject/logger/-/logger-5.0.2.tgz#f24aa14a738a428d711c1828b44d50114a461b8b" - integrity sha512-NQe3O1/Nwkcp6bto6hsTvrcCeR/cOGK+RhOMn0Zi2FND6gdWsf1g+5ie8gQ1REqDX4MTGP/Y131dZas985ls/g== +"@ethersproject/logger@>=5.0.0-beta.129", "@ethersproject/logger@^5.0.0", "@ethersproject/logger@^5.0.5": + version "5.0.8" + resolved "https://registry.yarnpkg.com/@ethersproject/logger/-/logger-5.0.8.tgz#135c1903d35c878265f3cbf2b287042c4c20d5d4" + integrity sha512-SkJCTaVTnaZ3/ieLF5pVftxGEFX56pTH+f2Slrpv7cU0TNpUZNib84QQdukd++sWUp/S7j5t5NW+WegbXd4U/A== -"@ethersproject/properties@>=5.0.0-beta.131", "@ethersproject/properties@^5.0.0": - version "5.0.1" - resolved "https://registry.yarnpkg.com/@ethersproject/properties/-/properties-5.0.1.tgz#e1fecbfcb24f23bf3b64a2ac74f2751113d116e0" - integrity sha512-b3VZ/NpYIf64/hFXeWNxVCbY1xoMPIYM3n6Qnu6Ayr3bLt1olFPQfAaaRB0aOsLz7tMtmkT3DrA1KG/IrOgBRw== +"@ethersproject/networks@^5.0.3": + version "5.0.6" + resolved "https://registry.yarnpkg.com/@ethersproject/networks/-/networks-5.0.6.tgz#4d6586bbebfde1c027504ebf6dfb783b29c3803a" + integrity sha512-2Cg1N5109zzFOBfkyuPj+FfF7ioqAsRffmybJ2lrsiB5skphIAE72XNSCs4fqktlf+rwSh/5o/UXRjXxvSktZw== dependencies: - "@ethersproject/logger" "^5.0.0" + "@ethersproject/logger" "^5.0.5" -"@ethersproject/rlp@^5.0.0": - version "5.0.1" - resolved "https://registry.yarnpkg.com/@ethersproject/rlp/-/rlp-5.0.1.tgz#3407b0cb78f82a1a219aecff57578c0558ae26c8" - integrity sha512-3F8XE1zS4w8w4xiK1hMtFuVs6UnhQlmrEHLT85GanqK8vG5wGi81IQmkukL9tQIu2a5jykoO46ibja+6N1fpFg== +"@ethersproject/properties@>=5.0.0-beta.131", "@ethersproject/properties@^5.0.0", "@ethersproject/properties@^5.0.3", "@ethersproject/properties@^5.0.4": + version "5.0.6" + resolved "https://registry.yarnpkg.com/@ethersproject/properties/-/properties-5.0.6.tgz#44d82aaa294816fd63333e7def42426cf0e87b3b" + integrity sha512-a9DUMizYhJ0TbtuDkO9iYlb2CDlpSKqGPDr+amvlZhRspQ6jbl5Eq8jfu4SCcGlcfaTbguJmqGnyOGn1EFt6xA== dependencies: - "@ethersproject/bytes" "^5.0.0" - "@ethersproject/logger" "^5.0.0" + "@ethersproject/logger" "^5.0.5" -"@ethersproject/signing-key@^5.0.0": - version "5.0.2" - resolved "https://registry.yarnpkg.com/@ethersproject/signing-key/-/signing-key-5.0.2.tgz#ca3cff00d92220fcf7d124e03a139182d627cff3" - integrity sha512-kgpCdtgoLoKXJTwJPw3ggRW7EO93YCQ98zY8hBpIb4OK3FxFCR3UUjlrGEwjMnLHDjFrxpKCeJagGWf477RyMQ== +"@ethersproject/rlp@^5.0.3": + version "5.0.6" + resolved "https://registry.yarnpkg.com/@ethersproject/rlp/-/rlp-5.0.6.tgz#29f9097348a3c330811997433b7df89ab51cd644" + integrity sha512-M223MTaydfmQSsvqAl0FJZDYFlSqt6cgbhnssLDwqCKYegAHE16vrFyo+eiOapYlt32XAIJm0BXlqSunULzZuQ== dependencies: - "@ethersproject/bytes" "^5.0.0" - "@ethersproject/logger" "^5.0.0" - "@ethersproject/properties" "^5.0.0" - elliptic "6.5.3" + "@ethersproject/bytes" "^5.0.4" + "@ethersproject/logger" "^5.0.5" -"@ethersproject/strings@>=5.0.0-beta.130", "@ethersproject/strings@^5.0.0": - version "5.0.1" - resolved "https://registry.yarnpkg.com/@ethersproject/strings/-/strings-5.0.1.tgz#a93aafeede100c4aad7f48e25aad1ddc42eeccc7" - integrity sha512-N8LxdHGBT7GZdogkEOV5xKXYTz5PNHuNzcxLNPYfH3kpvWSyXshZBgAz8YE1a8sMZagGj+Ic6d3mHijdCTSkGA== +"@ethersproject/signing-key@^5.0.4": + version "5.0.7" + resolved "https://registry.yarnpkg.com/@ethersproject/signing-key/-/signing-key-5.0.7.tgz#d03bfc5f565efb962bafebf8e6965e70d1c46d31" + integrity sha512-JYndnhFPKH0daPcIjyhi+GMcw3srIHkQ40hGRe6DA0CdGrpMfgyfSYDQ2D8HL2lgR+Xm4SHfEB0qba6+sCyrvg== dependencies: - "@ethersproject/bytes" "^5.0.0" - "@ethersproject/constants" "^5.0.0" - "@ethersproject/logger" "^5.0.0" + "@ethersproject/bytes" "^5.0.4" + "@ethersproject/logger" "^5.0.5" + "@ethersproject/properties" "^5.0.3" + elliptic "6.5.3" -"@ethersproject/transactions@^5.0.0-beta.135": - version "5.0.1" - resolved "https://registry.yarnpkg.com/@ethersproject/transactions/-/transactions-5.0.1.tgz#61480dc600f4a49eb99627778e3b46b381f8bdd9" - integrity sha512-IGc6/5hri3PrqR/ZCj89osDiq3Lt0CSrycn6vlRl8SjpBKYDdcT+Ru5xkeC7YcsnqcdBmTL+jyR3SLudU+x2Kw== - dependencies: - "@ethersproject/address" "^5.0.0" - "@ethersproject/bignumber" "^5.0.0" - "@ethersproject/bytes" "^5.0.0" - "@ethersproject/constants" "^5.0.0" - "@ethersproject/keccak256" "^5.0.0" - "@ethersproject/logger" "^5.0.0" - "@ethersproject/properties" "^5.0.0" - "@ethersproject/rlp" "^5.0.0" - "@ethersproject/signing-key" "^5.0.0" +"@ethersproject/strings@>=5.0.0-beta.130", "@ethersproject/strings@^5.0.0", "@ethersproject/strings@^5.0.4": + version "5.0.7" + resolved "https://registry.yarnpkg.com/@ethersproject/strings/-/strings-5.0.7.tgz#8dc68f794c9e2901f3b75e53b2afbcb6b6c15037" + integrity sha512-a+6T80LvmXGMOOWQTZHtGGQEg1z4v8rm8oX70KNs55YtPXI/5J3LBbVf5pyqCKSlmiBw5IaepPvs5XGalRUSZQ== + dependencies: + "@ethersproject/bytes" "^5.0.4" + "@ethersproject/constants" "^5.0.4" + "@ethersproject/logger" "^5.0.5" + +"@ethersproject/transactions@^5.0.0-beta.135", "@ethersproject/transactions@^5.0.5": + version "5.0.8" + resolved "https://registry.yarnpkg.com/@ethersproject/transactions/-/transactions-5.0.8.tgz#3b4d7041e13b957a9c4f131e0aea9dae7b6f5a23" + integrity sha512-i7NtOXVzUe+YSU6QufzlRrI2WzHaTmULAKHJv4duIZMLqzehCBXGA9lTpFgFdqGYcQJ7vOtNFC2BB2mSjmuXqg== + dependencies: + "@ethersproject/address" "^5.0.4" + "@ethersproject/bignumber" "^5.0.7" + "@ethersproject/bytes" "^5.0.4" + "@ethersproject/constants" "^5.0.4" + "@ethersproject/keccak256" "^5.0.3" + "@ethersproject/logger" "^5.0.5" + "@ethersproject/properties" "^5.0.3" + "@ethersproject/rlp" "^5.0.3" + "@ethersproject/signing-key" "^5.0.4" + +"@ethersproject/web@^5.0.6": + version "5.0.11" + resolved "https://registry.yarnpkg.com/@ethersproject/web/-/web-5.0.11.tgz#d47da612b958b4439e415782a53c8f8461522d68" + integrity sha512-x03ihbPoN1S8Gsh9WSwxkYxUIumLi02ZEKJku1C43sxBfe+mdprWyvujzYlpuoRNfWRgNhdRDKMP8JbG6MwNGA== + dependencies: + "@ethersproject/base64" "^5.0.3" + "@ethersproject/bytes" "^5.0.4" + "@ethersproject/logger" "^5.0.5" + "@ethersproject/properties" "^5.0.3" + "@ethersproject/strings" "^5.0.4" "@firebase/analytics-types@0.3.1": version "0.3.1" @@ -555,19 +621,19 @@ web3 "^1.2.1" web3-utils "^1.2.1" -"@openzeppelin/truffle-upgrades@^1.1.0": - version "1.1.0" - resolved "https://registry.yarnpkg.com/@openzeppelin/truffle-upgrades/-/truffle-upgrades-1.1.0.tgz#a962a718cf3899e1bd3658b82fb1c1bdec35ee8f" - integrity sha512-YQmSMHdTNtknJO3Gav6WQTeUAXH9xIL7CiY+2xsinXjs/0OI6DeCE9rN8qFg/Opi6M2cNJiX2b4UDAM3AOKORg== +"@openzeppelin/truffle-upgrades@1.3.1": + version "1.3.1" + resolved "https://registry.yarnpkg.com/@openzeppelin/truffle-upgrades/-/truffle-upgrades-1.3.1.tgz#a43d5a6c1ed475a38ce7c52a4fc3be85b34598bb" + integrity sha512-rue1V7mBSYZIJigCDo0LK1WTP1B0ceAzjLZU6/LfHvQSxA22LrPIORDhr/lvAsfPFrVZBerUylX6hp4nQ0GXmQ== dependencies: - "@openzeppelin/upgrades-core" "^1.1.0" + "@openzeppelin/upgrades-core" "^1.4.2" "@truffle/contract" "^4.2.12" solidity-ast "^0.4.4" -"@openzeppelin/upgrades-core@^1.1.0": - version "1.1.0" - resolved "https://registry.yarnpkg.com/@openzeppelin/upgrades-core/-/upgrades-core-1.1.0.tgz#d4ce26ea68d19641c88014246b14812847ddc9f6" - integrity sha512-PjAtO5/9FEAH0EB49VgfVtjXEOUrTMboJxCWA8s3CXt13SjEnA9rJUoH7yp0FqcHcOOXp9PSIrlcvHe1BuHlfg== +"@openzeppelin/upgrades-core@^1.4.2": + version "1.4.2" + resolved "https://registry.yarnpkg.com/@openzeppelin/upgrades-core/-/upgrades-core-1.4.2.tgz#e96dbb36f839ff4d39b314ab79b18a08dbf94c90" + integrity sha512-GbhPu8HXNdfHQNSIDkDvncWzZmwuv+RrOnDcePo2B++uMxFiEbKNyKCwUVvqZZd8StlxyxCs95E1ci/TZ6Dzfg== dependencies: bn.js "^5.1.2" cbor "^5.0.2" @@ -693,6 +759,11 @@ resolved "https://registry.yarnpkg.com/@sindresorhus/is/-/is-0.14.0.tgz#9fb3a3cf3132328151f353de4632e01e52102bea" integrity sha512-9NET910DNaIPngYnLLPeg+Ogzqsi9uM4mSboU5y6p8S5DzMTVEsJZrawi+BoDNUVBa2DhJqQYUFvMDfgU062LQ== +"@solidity-parser/parser@^0.10.1": + version "0.10.1" + resolved "https://registry.yarnpkg.com/@solidity-parser/parser/-/parser-0.10.1.tgz#d3680d1ebebed21eee67f58a41eb92175204f0c7" + integrity sha512-tHDPCRMEBFDxBz5rioQRoKgOQGa/K2digdfR68cd5vO6IufAqoNt1sfjssQDf2KPqHPftICBQOqlcu0w5/Jisg== + "@solidity-parser/parser@^0.5.2": version "0.5.2" resolved "https://registry.yarnpkg.com/@solidity-parser/parser/-/parser-0.5.2.tgz#4d74670ead39e4f4fdab605a393ba8ea2390a2c4" @@ -759,10 +830,10 @@ utf8 "^3.0.0" web3-utils "1.2.1" -"@truffle/codec@^0.6.3": - version "0.6.3" - resolved "https://registry.yarnpkg.com/@truffle/codec/-/codec-0.6.3.tgz#e02f6857dd37f8b75a0af2fd62a48ccfb87b34a6" - integrity sha512-DNEQHOOMHyu3MtqTbkTCpwhxa5vMMF6Pek/qkYJRMAR67s1nyDRQiTbynm1qxCnyxTH2GeymynS9rWyATCM7Hg== +"@truffle/codec@^0.9.2": + version "0.9.2" + resolved "https://registry.yarnpkg.com/@truffle/codec/-/codec-0.9.2.tgz#7cd3d6e9004f4da1c1728aa4d923778b04779876" + integrity sha512-YGO7a1EJoHFmubpBm2jG6qfE3xNcwlrd6p01GporZPQtIC/JPZ8MaRw9YKj4r7cJRszSto6gXCdsmZpOFQs5Bg== dependencies: big.js "^5.2.2" bn.js "^4.11.8" @@ -775,7 +846,7 @@ semver "^6.3.0" source-map-support "^0.5.19" utf8 "^3.0.0" - web3-utils "1.2.1" + web3-utils "1.2.9" "@truffle/compile-solidity@^4.3.12": version "4.3.12" @@ -832,10 +903,10 @@ crypto-js "^3.1.9-1" debug "^4.1.0" -"@truffle/contract-schema@^3.2.5": - version "3.2.5" - resolved "https://registry.yarnpkg.com/@truffle/contract-schema/-/contract-schema-3.2.5.tgz#498bbadad955daefd2638af4b195607734b306b9" - integrity sha512-07lzyYJinGvpaKc/WUm1sigtE5qDjFfUb/wUfV5cNsUmRSd/Ji9vTZ+of/zYP4MztJQLT/ZtuG836oXhWgqntg== +"@truffle/contract-schema@^3.3.3": + version "3.3.3" + resolved "https://registry.yarnpkg.com/@truffle/contract-schema/-/contract-schema-3.3.3.tgz#3e9567596d5dd9843df195cc3a874b83246c2505" + integrity sha512-4bvcEoGycopJBPoCiqHP5Q72/1t/ixYS/pVHru+Rzvad641BgvoGrkd4YnyJ+E/MVb4ZLrndL7whmdGqV5B7SA== dependencies: ajv "^6.10.0" crypto-js "^3.1.9-1" @@ -889,24 +960,24 @@ web3-utils "1.2.1" "@truffle/contract@^4.2.12": - version "4.2.24" - resolved "https://registry.yarnpkg.com/@truffle/contract/-/contract-4.2.24.tgz#2ca272c895fb3134c5eadae6846e6b567983acee" - integrity sha512-zqDDDFAtholcplpRm5AJICZu7TMsEii4X72KsoVHWgKZ0jJseaTTqxE2zG45fmQWYXwPZzD4KrBtpQX8MPZH4w== + version "4.3.3" + resolved "https://registry.yarnpkg.com/@truffle/contract/-/contract-4.3.3.tgz#629f0c70d9f3c3dfade8ed95d407e63030306000" + integrity sha512-pY4G3CxzbVd46lm6AEmeLNa4qIuLcdwBfMcYARlQ7R0+hAoLT694lYC9ucAPA2VEarm4e0383dD53bHES4TMbQ== dependencies: "@truffle/blockchain-utils" "^0.0.25" - "@truffle/contract-schema" "^3.2.5" - "@truffle/debug-utils" "^4.2.10" + "@truffle/contract-schema" "^3.3.3" + "@truffle/debug-utils" "^5.0.6" "@truffle/error" "^0.0.11" - "@truffle/interface-adapter" "^0.4.16" + "@truffle/interface-adapter" "^0.4.18" bignumber.js "^7.2.1" ethereum-ens "^0.8.0" ethers "^4.0.0-beta.1" source-map-support "^0.5.19" - web3 "1.2.1" - web3-core-helpers "1.2.1" - web3-core-promievent "1.2.1" - web3-eth-abi "1.2.1" - web3-utils "1.2.1" + web3 "1.2.9" + web3-core-helpers "1.2.9" + web3-core-promievent "1.2.9" + web3-eth-abi "1.2.9" + web3-utils "1.2.9" "@truffle/debug-utils@^4.1.9": version "4.1.9" @@ -921,17 +992,17 @@ highlightjs-solidity "^1.0.17" node-dir "0.1.17" -"@truffle/debug-utils@^4.2.10": - version "4.2.10" - resolved "https://registry.yarnpkg.com/@truffle/debug-utils/-/debug-utils-4.2.10.tgz#b55b0797987a20c40713ee593d3796bd75aa91cd" - integrity sha512-zbvZTFIF+YoQbFF8cWz556utLy6c1bgKLmMX6k7UIqpo29ZkyWWYa/Lh9n32PWjKGihBkyA16qedMfi+MfUoUg== +"@truffle/debug-utils@^5.0.6": + version "5.0.6" + resolved "https://registry.yarnpkg.com/@truffle/debug-utils/-/debug-utils-5.0.6.tgz#255ad3f08d61a1182f2f9ae29528d31bbdc7ae25" + integrity sha512-XcXHXGTgzRW6lcjm8o/XPks7B0fa/rFR4ROsN+mzipL5U+mD43o2W8l3qVYTx2BOy1sTl8pOzJ4IqQOtvv7n2w== dependencies: - "@truffle/codec" "^0.6.3" - "@trufflesuite/chromafi" "^2.2.0" + "@truffle/codec" "^0.9.2" + "@trufflesuite/chromafi" "^2.2.2" chalk "^2.4.2" debug "^4.1.0" - highlight.js "^9.15.8" - highlightjs-solidity "^1.0.18" + highlight.js "^10.4.0" + highlightjs-solidity "^1.0.20" "@truffle/error@0.0.7", "@truffle/error@^0.0.7": version "0.0.7" @@ -1023,15 +1094,15 @@ source-map-support "^0.5.19" web3 "1.2.1" -"@truffle/interface-adapter@^0.4.16": - version "0.4.16" - resolved "https://registry.yarnpkg.com/@truffle/interface-adapter/-/interface-adapter-0.4.16.tgz#6bd65d9d17b4a2a51f39d05dd8b467daa8855792" - integrity sha512-lsxk26Lz/h0n8fe37K1ZxowxokXj0AZeNR10QHltDvkHukuTIC4L6fXvrUi74mCwI9hShl4CSBas1Q8kAyJyOA== +"@truffle/interface-adapter@^0.4.18": + version "0.4.18" + resolved "https://registry.yarnpkg.com/@truffle/interface-adapter/-/interface-adapter-0.4.18.tgz#1aac45596997d208085d5168f82b990624610646" + integrity sha512-P9JVSYD/CX3V+NgTWu+Bf71sLh8pMwrCpbiYRB93pRw/1H3ZTvt5iDC2MVvVxCs8FkSiy4OZzQK/DJ8+hXAmYw== dependencies: bn.js "^4.11.8" ethers "^4.0.32" source-map-support "^0.5.19" - web3 "1.2.1" + web3 "1.2.9" "@truffle/provider@^0.1.17": version "0.1.19" @@ -1092,10 +1163,10 @@ strip-indent "^2.0.0" super-split "^1.1.0" -"@trufflesuite/chromafi@^2.2.0": - version "2.2.0" - resolved "https://registry.yarnpkg.com/@trufflesuite/chromafi/-/chromafi-2.2.0.tgz#18cceacbb44f1e22ec956dd7ad21a2ed414b09c7" - integrity sha512-km4Px34wZ015PDjAK0wfYBx+zoCE4qR3AY9NWLUvtjnnzhCUkaRFCpZdvwDEyB75EzFBoLwV9iiqboz+mMXwBA== +"@trufflesuite/chromafi@^2.2.2": + version "2.2.2" + resolved "https://registry.yarnpkg.com/@trufflesuite/chromafi/-/chromafi-2.2.2.tgz#d3fc507aa8504faffc50fb892cedcfe98ff57f77" + integrity sha512-mItQwVBsb8qP/vaYHQ1kDt2vJLhjoEXJptT6y6fJGvFophMFhOI/NsTVUa0nJL1nyMeFiS6hSYuNVdpQZzB1gA== dependencies: ansi-mark "^1.0.0" ansi-regex "^3.0.0" @@ -1105,8 +1176,7 @@ cheerio "^1.0.0-rc.2" detect-indent "^5.0.0" he "^1.1.1" - highlight.js "^9.12.0" - husky "^0.14.3" + highlight.js "^10.4.1" lodash.merge "^4.6.2" min-indent "^1.0.0" strip-ansi "^4.0.0" @@ -1181,10 +1251,10 @@ xhr "^2.2.0" xtend "^4.0.1" -"@typechain/truffle-v5@^2.0.2": - version "2.0.2" - resolved "https://registry.yarnpkg.com/@typechain/truffle-v5/-/truffle-v5-2.0.2.tgz#709a78ffb120f52c693818fea72e0b0d146c3454" - integrity sha512-g4N2kfol1S3g/QUkmpzukCGZiKWUdXsSms1be/+W4+R0DPMz1Q/76tY+C6bD7G/KeLhkiDKcnZFmNVNcAgjIfQ== +"@typechain/truffle-v5@^4.0.0": + version "4.0.0" + resolved "https://registry.yarnpkg.com/@typechain/truffle-v5/-/truffle-v5-4.0.0.tgz#a20747f9a64eba66723b82112e96e85239ac35cd" + integrity sha512-J1/ZXzyWIxQF+vEhTD4qPN3IJKmIuLDtYSgIVqbX4OyEpwcXPqa9+SYEpTRlvlURuAlf8nFFjPr6MdllpPvBbQ== "@types/bn.js@^4.11.3", "@types/bn.js@^4.11.4", "@types/bn.js@^4.11.5", "@types/bn.js@^4.11.6": version "4.11.6" @@ -1267,9 +1337,9 @@ integrity sha512-jWeYcTo3sCH/rMgsdYXDTO85GNRyTCII5dayMIu/ZO4zbEot1E3iNGaOwpLReLUHjeNQFkgeNNVYlY4dX6azQQ== "@types/node@*": - version "14.0.23" - resolved "https://registry.yarnpkg.com/@types/node/-/node-14.0.23.tgz#676fa0883450ed9da0bb24156213636290892806" - integrity sha512-Z4U8yDAl5TFkmYsZdFPdjeMa57NOvnaf1tljHzhouaPEp7LCj2JKkejpI1ODviIAQuW4CcQmxkQ77rnLsOOoKw== + version "14.14.14" + resolved "https://registry.yarnpkg.com/@types/node/-/node-14.14.14.tgz#f7fd5f3cc8521301119f63910f0fb965c7d761ae" + integrity sha512-UHnOPWVWV1z+VV8k6L1HhG7UbGBgIdghqF3l9Ny9ApPghbjICXkUJSd/b9gOgQfjM1r+37cipdw/HJ3F6ICEnQ== "@types/node@^10.0.3": version "10.17.28" @@ -1277,9 +1347,9 @@ integrity sha512-dzjES1Egb4c1a89C7lKwQh8pwjYmlOAG9dW1pBgxEk57tMrLnssOfEthz8kdkNaBd7lIqQx7APm5+mZ619IiCQ== "@types/node@^10.12.18", "@types/node@^10.3.2": - version "10.17.27" - resolved "https://registry.yarnpkg.com/@types/node/-/node-10.17.27.tgz#391cb391c75646c8ad2a7b6ed3bbcee52d1bdf19" - integrity sha512-J0oqm9ZfAXaPdwNXMMgAhylw5fhmXkToJd06vuDUSAgEDZ/n/69/69UmyBZbc+zT34UnShuDSBqvim3SPnozJg== + version "10.17.49" + resolved "https://registry.yarnpkg.com/@types/node/-/node-10.17.49.tgz#ecf0b67bab4b84d0ec9b0709db4aac3824a51c4a" + integrity sha512-PGaJNs5IZz5XgzwJvL/1zRfZB7iaJ5BydZ8/Picm+lUNYoNO9iVTQkVy5eUh0dZDrx3rBOIs3GCbCRmMuYyqwg== "@types/node@^12.12.6": version "12.12.51" @@ -1287,9 +1357,9 @@ integrity sha512-6ILqt8iNThALrxDv2Q4LyYFQxULQz96HKNIFd4s9QRQaiHINYeUpLqeU/2IU7YMtvipG1fQVAy//vY8/fX1Y9w== "@types/node@^12.6.1": - version "12.12.50" - resolved "https://registry.yarnpkg.com/@types/node/-/node-12.12.50.tgz#e9b2e85fafc15f2a8aa8fdd41091b983da5fd6ee" - integrity sha512-5ImO01Fb8YsEOYpV+aeyGYztcYcjGsBvN4D7G5r1ef2cuQOpymjWNQi5V0rKHE6PC2ru3HkoUr/Br2/8GUA84w== + version "12.19.9" + resolved "https://registry.yarnpkg.com/@types/node/-/node-12.19.9.tgz#990ad687ad8b26ef6dcc34a4f69c33d40c95b679" + integrity sha512-yj0DOaQeUrk3nJ0bd3Y5PeDRJ6W0r+kilosLA+dzF3dola/o9hxhMSg2sFvVcA2UHS5JSOsZp4S0c1OEXc4m1Q== "@types/node@^13.7.0": version "13.13.14" @@ -1314,9 +1384,9 @@ "@types/node" "*" "@types/pbkdf2@^3.0.0": - version "3.0.0" - resolved "https://registry.yarnpkg.com/@types/pbkdf2/-/pbkdf2-3.0.0.tgz#5d9ca5f12a78a08cc89ad72883ad4a30af359229" - integrity sha512-6J6MHaAlBJC/eVMy9jOwj9oHaprfutukfW/Dyt0NEnpQ/6HN6YQrpvLwzWdWDeWZIdenjGHlbYDzyEODO5Z+2Q== + version "3.1.0" + resolved "https://registry.yarnpkg.com/@types/pbkdf2/-/pbkdf2-3.1.0.tgz#039a0e9b67da0cdc4ee5dab865caa6b267bb66b1" + integrity sha512-Cf63Rv7jCQ0LaL8tNXmEyqTHuIJxRdlS5vMh1mj5voN4+QFhVZnlZruezqpWYDiJ8UTzhP0VmeLXCmBk66YrMQ== dependencies: "@types/node" "*" @@ -1325,6 +1395,11 @@ resolved "https://registry.yarnpkg.com/@types/prettier/-/prettier-1.19.1.tgz#33509849f8e679e4add158959fdb086440e9553f" integrity sha512-5qOlnZscTn4xxM5MeGXAMOsIOIKIbh9e85zJWfBRVPlRMEVawzoPhINYbRGkBZCI8LxvBe7tJCdWiarA99OZfQ== +"@types/prettier@^2.1.1": + version "2.1.5" + resolved "https://registry.yarnpkg.com/@types/prettier/-/prettier-2.1.5.tgz#b6ab3bba29e16b821d84e09ecfaded462b816b00" + integrity sha512-UEyp8LwZ4Dg30kVU2Q3amHHyTn1jEdhCIE59ANed76GaT1Vp76DD3ZWSAxgCrw6wJ0TqeoBpqmfUHiUDPs//HQ== + "@types/qs@^6.2.31": version "6.9.4" resolved "https://registry.yarnpkg.com/@types/qs/-/qs-6.9.4.tgz#a59e851c1ba16c0513ea123830dd639a0a15cb6a" @@ -1444,7 +1519,17 @@ aes-js@^3.1.1: resolved "https://registry.yarnpkg.com/aes-js/-/aes-js-3.1.2.tgz#db9aabde85d5caabbfc0d4f2a4446960f627146a" integrity sha512-e5pEa2kBnBOgR4Y/p20pskXI74UEz7de8ZGVo58asOtvSVG5YAbJeELPZxOmt+Bnz3rX753YKhfIn4X4l1PPRQ== -ajv@^6.10.0, ajv@^6.10.2, ajv@^6.5.5, ajv@^6.9.1: +ajv@^6.10.0, ajv@^6.12.3: + version "6.12.6" + resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.12.6.tgz#baf5a62e802b07d977034586f8c3baf5adf26df4" + integrity sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g== + dependencies: + fast-deep-equal "^3.1.1" + fast-json-stable-stringify "^2.0.0" + json-schema-traverse "^0.4.1" + uri-js "^4.2.2" + +ajv@^6.10.2, ajv@^6.9.1: version "6.12.3" resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.12.3.tgz#18c5af38a111ddeb4f2697bd78d68abc1cabd706" integrity sha512-4K0cK3L1hsqk9xIb2z9vs/XU+PGJZ9PNpJRDS9YLzmNdX6jmVPfamLvTJr0aDAusnHyCHO6MjzlkAsgtqp9teA== @@ -1604,6 +1689,11 @@ array-back@^2.0.0: dependencies: typical "^2.6.1" +array-filter@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/array-filter/-/array-filter-1.0.0.tgz#baf79e62e6ef4c2a4c0b831232daffec251f9d83" + integrity sha1-uveeYubvTCpMC4MSMtr/7CUfnYM= + array-flatten@1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/array-flatten/-/array-flatten-1.1.1.tgz#9a5f699051b1e7073328f2a008968b64ea2955d2" @@ -1625,28 +1715,30 @@ array-unique@^0.2.1: integrity sha1-odl8yvy8JiXMcPrc6zalDFiwGlM= array.prototype.map@^1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/array.prototype.map/-/array.prototype.map-1.0.2.tgz#9a4159f416458a23e9483078de1106b2ef68f8ec" - integrity sha512-Az3OYxgsa1g7xDYp86l0nnN4bcmuEITGe1rbdEBVkrqkzMgDcbdQ2R7r41pNzti+4NMces3H8gMmuioZUilLgw== + version "1.0.3" + resolved "https://registry.yarnpkg.com/array.prototype.map/-/array.prototype.map-1.0.3.tgz#1609623618d3d84134a37d4a220030c2bd18420b" + integrity sha512-nNcb30v0wfDyIe26Yif3PcV1JXQp4zEeEfupG7L4SRjnD6HLbO5b2a7eVSba53bOx4YCHYMBHt+Fp4vYstneRA== dependencies: + call-bind "^1.0.0" define-properties "^1.1.3" - es-abstract "^1.17.0-next.1" + es-abstract "^1.18.0-next.1" es-array-method-boxes-properly "^1.0.0" - is-string "^1.0.4" + is-string "^1.0.5" asap@~2.0.6: version "2.0.6" resolved "https://registry.yarnpkg.com/asap/-/asap-2.0.6.tgz#e50347611d7e690943208bbdafebcbc2fb866d46" integrity sha1-5QNHYR1+aQlDIIu9r+vLwvuGbUY= -asn1.js@^4.0.0: - version "4.10.1" - resolved "https://registry.yarnpkg.com/asn1.js/-/asn1.js-4.10.1.tgz#b9c2bf5805f1e64aadeed6df3a2bfafb5a73f5a0" - integrity sha512-p32cOF5q0Zqs9uBiONKYLm6BClCoBCM5O9JfeUSlnQLBTxYdTK+pW+nXflm8UkKd2UYlEbYz5qEi0JuZR9ckSw== +asn1.js@^5.2.0: + version "5.4.1" + resolved "https://registry.yarnpkg.com/asn1.js/-/asn1.js-5.4.1.tgz#11a980b84ebb91781ce35b0fdc2ee294e3783f07" + integrity sha512-+I//4cYPccV8LdmBLiX8CYvf9Sp3vQsrqu2QNXRcrbiWvcx/UdlFiqUJJzxRQxgsZmvhXhn4cSKeSmoFjVdupA== dependencies: bn.js "^4.0.0" inherits "^2.0.1" minimalistic-assert "^1.0.0" + safer-buffer "^2.1.0" asn1@~0.2.3: version "0.2.4" @@ -1704,6 +1796,13 @@ atob@^2.1.2: resolved "https://registry.yarnpkg.com/atob/-/atob-2.1.2.tgz#6d9517eb9e030d2436666651e86bd9f6f13533c9" integrity sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg== +available-typed-arrays@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/available-typed-arrays/-/available-typed-arrays-1.0.2.tgz#6b098ca9d8039079ee3f77f7b783c4480ba513f5" + integrity sha512-XWX3OX8Onv97LMk/ftVyBibpGwY5a8SmuxZPzeOxqmuEqUCOM9ZE+uIaD1VNJ5QnvU2UQusvmKbuM1FR8QWGfQ== + dependencies: + array-filter "^1.0.0" + await-semaphore@^0.1.3: version "0.1.3" resolved "https://registry.yarnpkg.com/await-semaphore/-/await-semaphore-0.1.3.tgz#2b88018cc8c28e06167ae1cdff02504f1f9688d3" @@ -1715,9 +1814,9 @@ aws-sign2@~0.7.0: integrity sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg= aws4@^1.8.0: - version "1.10.0" - resolved "https://registry.yarnpkg.com/aws4/-/aws4-1.10.0.tgz#a17b3a8ea811060e74d47d306122400ad4497ae2" - integrity sha512-3YDiu347mtVtjpyV3u5kVqQLP242c06zwDOgpeRnybmXlYYsLbtTrUBUm8i8srONt+FWobl5aibnU1030PeeuA== + version "1.11.0" + resolved "https://registry.yarnpkg.com/aws4/-/aws4-1.11.0.tgz#d61f46d83b2519250e2784daf5b09479a8b41c59" + integrity sha512-xh1Rl34h6Fi1DC2WWKfxUTVqRsNnr6LsKz2+hfwDxQJWmrx8+c7ylaqBMcHfl1U1r2dsifOvKX3LQuLNZ+XSvA== axios@^0.18.0: version "0.18.1" @@ -2272,10 +2371,10 @@ base-x@^3.0.2, base-x@^3.0.8: dependencies: safe-buffer "^5.0.1" -base64-js@^1.0.2: - version "1.3.1" - resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.3.1.tgz#58ece8cb75dd07e71ed08c736abc5fac4dbf8df1" - integrity sha512-mLQ4i2QO1ytvGWFWmcngKO//JXAQueZvwEKtjgQFM4jIK0kU+ytMfplL8j+n5mspOfjHwoAg+9yhb7BwAHm36g== +base64-js@^1.3.1: + version "1.5.1" + resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.5.1.tgz#1b1b440160a5bf7ad40b650f095963481903930a" + integrity sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA== bcrypt-pbkdf@^1.0.0: version "1.0.2" @@ -2300,9 +2399,9 @@ bignumber.js@^8.0.2: integrity sha512-QD46ppGintwPGuL1KqmwhR0O+N2cZUg8JG/VzwI2e28sM9TqHjQB10lI4QAaMHVbLzwVLLAwEglpKPViWX+5NQ== bignumber.js@^9.0.0: - version "9.0.0" - resolved "https://registry.yarnpkg.com/bignumber.js/-/bignumber.js-9.0.0.tgz#805880f84a329b5eac6e7cb6f8274b6d82bdf075" - integrity sha512-t/OYhhJ2SD+YGBQcjY8GzzDHEk9f3nerxjtfa6tlMXfe7frs/WozhvCNoGvpM0P3bNf3Gq5ZRMlGr5f3r4/N8A== + version "9.0.1" + resolved "https://registry.yarnpkg.com/bignumber.js/-/bignumber.js-9.0.1.tgz#8d7ba124c882bfd8e43260c67475518d0689e4e5" + integrity sha512-IdZR9mh6ahOBv/hYGiXyVuyCetmGJhtYkqLBpTStdhEGjegpPlUawydyaF3pbIOFynJTpllEs+NP+CS9jKFLjA== binary-extensions@^2.0.0: version "2.1.0" @@ -2335,9 +2434,9 @@ bip66@^1.1.5: safe-buffer "^5.0.1" bl@^1.0.0: - version "1.2.2" - resolved "https://registry.yarnpkg.com/bl/-/bl-1.2.2.tgz#a160911717103c07410cef63ef51b397c025af9c" - integrity sha512-e8tQYnZodmebYDWGH7KMRvtzKXaJHx3BbilrgZCfvyLUYdKpK1t5PSPmpkny/SgiTSCnjfLW7v5rlONXVFkQEA== + version "1.2.3" + resolved "https://registry.yarnpkg.com/bl/-/bl-1.2.3.tgz#1e8dd80142eac80d7158c9dccc047fb620e035e7" + integrity sha512-pvcNpa0UU69UT341rO6AYy4FVAIkUHuZXRIWbq+zHnsVcRzDDjIAhGuuYoi0d//cwIwtt4pkpKycWEfjdV+vww== dependencies: readable-stream "^2.3.5" safe-buffer "^5.1.1" @@ -2367,10 +2466,10 @@ bn.js@^4.0.0, bn.js@^4.1.0, bn.js@^4.11.0, bn.js@^4.11.1, bn.js@^4.11.6, bn.js@^ resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-4.11.9.tgz#26d556829458f9d1e81fc48952493d0ba3507828" integrity sha512-E6QoYqCKZfgatHTdHzs1RRKP7ip4vvm+EyRUeE2RF0NblwVvb0p6jSVeNTOFxPn26QXN2o6SMfNxKp6kU8zQaw== -bn.js@^5.1.1, bn.js@^5.1.2: - version "5.1.2" - resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-5.1.2.tgz#c9686902d3c9a27729f43ab10f9d79c2004da7b0" - integrity sha512-40rZaf3bUNKTVYu9sIeeEGOg7g14Yvnj9kH7b50EiwX0Q7A6umbvfI5tvHaOERH0XigqKkfLkFQxzb4e6CIXnA== +bn.js@^5.0.0, bn.js@^5.1.1, bn.js@^5.1.2: + version "5.1.3" + resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-5.1.3.tgz#beca005408f642ebebea80b042b4d18d2ac0ee6b" + integrity sha512-GkTiFpjFtUzU9CbMeJ5iazkCzGL3jrhzerzZIuqLABjbwRaFt33I9tUdSNryIptM+RxDet6OKm2WnLXzW51KsQ== body-parser@1.19.0, body-parser@^1.16.0: version "1.19.0" @@ -2472,23 +2571,23 @@ browserify-des@^1.0.0: safe-buffer "^5.1.2" browserify-rsa@^4.0.0, browserify-rsa@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/browserify-rsa/-/browserify-rsa-4.0.1.tgz#21e0abfaf6f2029cf2fafb133567a701d4135524" - integrity sha1-IeCr+vbyApzy+vsTNWenAdQTVSQ= + version "4.1.0" + resolved "https://registry.yarnpkg.com/browserify-rsa/-/browserify-rsa-4.1.0.tgz#b2fd06b5b75ae297f7ce2dc651f918f5be158c8d" + integrity sha512-AdEER0Hkspgno2aR97SAf6vi0y0k8NuOpGnVH3O99rcA5Q6sh8QxcngtHuJ6uXwnfAXNM4Gn1Gb7/MV1+Ymbog== dependencies: - bn.js "^4.1.0" + bn.js "^5.0.0" randombytes "^2.0.1" browserify-sign@^4.0.0: - version "4.2.0" - resolved "https://registry.yarnpkg.com/browserify-sign/-/browserify-sign-4.2.0.tgz#545d0b1b07e6b2c99211082bf1b12cce7a0b0e11" - integrity sha512-hEZC1KEeYuoHRqhGhTy6gWrpJA3ZDjFWv0DE61643ZnOXAKJb3u7yWcrU0mMc9SwAqK1n7myPGndkp0dFG7NFA== + version "4.2.1" + resolved "https://registry.yarnpkg.com/browserify-sign/-/browserify-sign-4.2.1.tgz#eaf4add46dd54be3bb3b36c0cf15abbeba7956c3" + integrity sha512-/vrA5fguVAKKAVTNJjgSm1tRQDHUU6DbwO9IROu/0WAzC8PKhucDSh18J0RMvVeHAn5puMd+QHC2erPRNf8lmg== dependencies: bn.js "^5.1.1" browserify-rsa "^4.0.1" create-hash "^1.2.0" create-hmac "^1.1.7" - elliptic "^6.5.2" + elliptic "^6.5.3" inherits "^2.0.4" parse-asn1 "^5.1.5" readable-stream "^3.6.0" @@ -2574,12 +2673,19 @@ buffer-xor@^2.0.1: safe-buffer "^5.1.1" buffer@^5.0.5, buffer@^5.2.1, buffer@^5.5.0, buffer@^5.6.0: - version "5.6.0" - resolved "https://registry.yarnpkg.com/buffer/-/buffer-5.6.0.tgz#a31749dc7d81d84db08abf937b6b8c4033f62786" - integrity sha512-/gDYp/UtU0eA1ys8bOs9J6a+E/KWIY+DZ+Q2WESNUA0jFRsJOc0SNUO6xJ5SGA1xueg3NL65W6s+NY5l9cunuw== + version "5.7.1" + resolved "https://registry.yarnpkg.com/buffer/-/buffer-5.7.1.tgz#ba62e7c13133053582197160851a8f648e99eed0" + integrity sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ== dependencies: - base64-js "^1.0.2" - ieee754 "^1.1.4" + base64-js "^1.3.1" + ieee754 "^1.1.13" + +bufferutil@^4.0.1: + version "4.0.2" + resolved "https://registry.yarnpkg.com/bufferutil/-/bufferutil-4.0.2.tgz#79f68631910f6b993d870fc77dc0a2894eb96cd5" + integrity sha512-AtnG3W6M8B2n4xDQ5R+70EXvOpnXsFYg/AK2yTZd+HQ/oxAdz+GI+DvjmhBw3L0ole+LJ0ngqY4JMbDzkfNzhA== + dependencies: + node-gyp-build "^4.2.0" bytes@3.1.0: version "3.1.0" @@ -2599,6 +2705,14 @@ cacheable-request@^6.0.0: normalize-url "^4.1.0" responselike "^1.0.2" +call-bind@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/call-bind/-/call-bind-1.0.0.tgz#24127054bb3f9bdcb4b1fb82418186072f77b8ce" + integrity sha512-AEXsYIyyDY3MCzbwdhzG3Jx1R0J2wetQyUynn6dYHAO+bg8l1k7jwZtRv4ryryFs7EP+NDlikJlVe59jr0cM2w== + dependencies: + function-bind "^1.1.1" + get-intrinsic "^1.0.0" + callsites@^3.0.0: version "3.1.0" resolved "https://registry.yarnpkg.com/callsites/-/callsites-3.1.0.tgz#b3630abd8943432f54b3f0519238e33cd7df2f73" @@ -2619,7 +2733,7 @@ camelcase@^4.1.0: resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-4.1.0.tgz#d545635be1e33c542649c69173e5de6acfae34dd" integrity sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0= -camelcase@^5.0.0: +camelcase@^5.0.0, camelcase@^5.3.1: version "5.3.1" resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-5.3.1.tgz#e3c9b31569e106811df242f715725a1f4c494320" integrity sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg== @@ -2706,7 +2820,7 @@ chalk@^2.0.0, chalk@^2.0.1, chalk@^2.1.0, chalk@^2.3.2, chalk@^2.4.1, chalk@^2.4 escape-string-regexp "^1.0.5" supports-color "^5.3.0" -chalk@^4.1.0: +chalk@^4.0.0, chalk@^4.1.0: version "4.1.0" resolved "https://registry.yarnpkg.com/chalk/-/chalk-4.1.0.tgz#4e14870a618d9e2edd97dd8345fd9d9dc315646a" integrity sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A== @@ -2763,10 +2877,10 @@ chokidar@3.3.0: optionalDependencies: fsevents "~2.1.1" -chokidar@3.3.1: - version "3.3.1" - resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.3.1.tgz#c84e5b3d18d9a4d77558fef466b1bf16bbeb3450" - integrity sha512-4QYCEWOcK3OJrxwvyyAOxFuhpvOVCYkr33LPfFNBjAD/w3sEzWsp2BUOkI4l9bHvWioAd0rc6NlHUOEaWkTeqg== +chokidar@3.4.2: + version "3.4.2" + resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.4.2.tgz#38dc8e658dec3809741eb3ef7bb0a47fe424232d" + integrity sha512-IZHaDeBeI+sZJRX7lGcXsdzgvZqKv6sECqsbErJA4mHWfpRrD8B97kSFN4cQz6nGBGiuFia1MKR4d6c1o8Cv7A== dependencies: anymatch "~3.1.1" braces "~3.0.2" @@ -2774,7 +2888,7 @@ chokidar@3.3.1: is-binary-path "~2.1.0" is-glob "~4.0.1" normalize-path "~3.0.0" - readdirp "~3.3.0" + readdirp "~3.4.0" optionalDependencies: fsevents "~2.1.2" @@ -2972,18 +3086,11 @@ commander@3.0.2, commander@^3.0.0: resolved "https://registry.yarnpkg.com/commander/-/commander-3.0.2.tgz#6837c3fb677ad9933d1cfba42dd14d5117d6b39e" integrity sha512-Gar0ASD4BDyKC4hl4DwHqDrmvjoxWKZigVnAbn5H1owvm4CxCPdb0HQDehwNYMJpla5+M2tPmPARzhtYuwpHow== -commander@^2.15.0, commander@^2.15.1: +commander@^2.15.0, commander@^2.15.1, commander@^2.8.1: version "2.20.3" resolved "https://registry.yarnpkg.com/commander/-/commander-2.20.3.tgz#fd485e84c03eb4881c20722ba48035e8531aeb33" integrity sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ== -commander@~2.8.1: - version "2.8.1" - resolved "https://registry.yarnpkg.com/commander/-/commander-2.8.1.tgz#06be367febfda0c330aa1e2a072d3dc9762425d4" - integrity sha1-Br42f+v9oMMwqh4qBy09yXYkJdQ= - dependencies: - graceful-readlink ">= 1.0.0" - commondir@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/commondir/-/commondir-1.0.1.tgz#ddd800da0c66127393cca5950ea968a3aaf1253b" @@ -3102,12 +3209,12 @@ cors@^2.8.1: vary "^1" create-ecdh@^4.0.0: - version "4.0.3" - resolved "https://registry.yarnpkg.com/create-ecdh/-/create-ecdh-4.0.3.tgz#c9111b6f33045c4697f144787f9254cdc77c45ff" - integrity sha512-GbEHQPMOswGpKXM9kCWVrremUcBmjteUaQ01T9rkKCPDXfUHX0IoP9LpHYo2NPFampa4e+/pFDc3jQdxrxQLaw== + version "4.0.4" + resolved "https://registry.yarnpkg.com/create-ecdh/-/create-ecdh-4.0.4.tgz#d6e7f4bffa66736085a0762fd3a632684dabcc4e" + integrity sha512-mf+TCx8wWc9VpuxfP2ht0iSISLZnt0JgWlrOKZiNqyUZWnjIaCIVNQArMHnCZKfEYRg6IM7A+NeJoN8gf/Ws0A== dependencies: bn.js "^4.1.0" - elliptic "^6.0.0" + elliptic "^6.5.3" create-hash@^1.1.0, create-hash@^1.1.2, create-hash@^1.2.0: version "1.2.0" @@ -3258,13 +3365,20 @@ debug@3.2.6, debug@^3.0.1, debug@^3.1.0: dependencies: ms "^2.1.1" -debug@^4.0.1, debug@^4.1.0, debug@^4.1.1: +debug@4.1.1, debug@^4.0.1: version "4.1.1" resolved "https://registry.yarnpkg.com/debug/-/debug-4.1.1.tgz#3b72260255109c6b589cee050f1d516139664791" integrity sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw== dependencies: ms "^2.1.1" +debug@^4.1.0, debug@^4.1.1: + version "4.3.1" + resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.1.tgz#f0d229c505e0c6d8c49ac553d1b13dc183f6b2ee" + integrity sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ== + dependencies: + ms "2.1.2" + decamelize@^1.1.1, decamelize@^1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290" @@ -3489,6 +3603,11 @@ dir-glob@^3.0.1: dependencies: path-type "^4.0.0" +dir-to-object@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/dir-to-object/-/dir-to-object-2.0.0.tgz#29723e9bd1c3e58e4f307bd04ff634c0370c8f8a" + integrity sha512-sXs0JKIhymON7T1UZuO2Ud6VTNAx/VTBXIl4+3mjb2RgfOpt+hectX0x04YqPOPdkeOAKoJuKqwqnXXURNPNEA== + doctrine@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-3.0.0.tgz#addebead72a6574db783639dc87a121773973961" @@ -3528,9 +3647,9 @@ domelementtype@1, domelementtype@^1.3.0, domelementtype@^1.3.1: integrity sha512-BSKB+TSpMpFI/HOxCNr1O8aMOTZ8hT3pM3GQ0w/mWRmkhEDSFJkkyzz4XQsBV44BChwGkrDfMyjVD0eA2aFV3w== domelementtype@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/domelementtype/-/domelementtype-2.0.1.tgz#1f8bdfe91f5a78063274e803b4bdcedf6e94f94d" - integrity sha512-5HOHUDsYZWV8FGWN0Njbr/Rn7f/eWSQi1v7+HsUVwXgn8nWWlL64zKDkS0n8ZmQ3mlWOMuXOnR+7Nx/5tMO5AQ== + version "2.1.0" + resolved "https://registry.yarnpkg.com/domelementtype/-/domelementtype-2.1.0.tgz#a851c080a6d1c3d94344aed151d99f669edf585e" + integrity sha512-LsTgx/L5VpD+Q8lmsXSHW2WpA+eBlZ9HPf3erD1IoPF00/3JKHZ3BknUVA2QGDNu69ZNmyFmCWBSO45XjYKC5w== domhandler@^2.3.0: version "2.4.2" @@ -3646,7 +3765,7 @@ elliptic@6.5.2: minimalistic-assert "^1.0.0" minimalistic-crypto-utils "^1.0.0" -elliptic@6.5.3, elliptic@^6.0.0, elliptic@^6.4.0, elliptic@^6.5.2: +elliptic@6.5.3, elliptic@^6.4.0, elliptic@^6.5.2, elliptic@^6.5.3: version "6.5.3" resolved "https://registry.yarnpkg.com/elliptic/-/elliptic-6.5.3.tgz#cb59eb2efdaf73a0bd78ccd7015a62ad6e0f93d6" integrity sha512-IMqzv5wNQf+E6aHeIqATs0tOLeOTwj1QKbRcS3jBbYkl5oLAserA8yJTT7/VyHUYG91PRmPyeQDObKLPpeS4dw== @@ -3674,6 +3793,11 @@ emoji-regex@^8.0.0: resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-8.0.0.tgz#e818fd69ce5ccfcb404594f842963bf53164cc37" integrity sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A== +emoji-regex@^9.0.0: + version "9.2.0" + resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-9.2.0.tgz#a26da8e832b16a9753309f25e35e3c0efb9a066a" + integrity sha512-DNc3KFPK18bPdElMJnf/Pkv5TXhxFU3YFDEuGLDRtPmV4rkmCjBkCSEp22u6rBHdSN9Vlp/GK7k98prmE1Jgug== + encodeurl@~1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/encodeurl/-/encodeurl-1.0.2.tgz#ad3ff4c86ec2d029322f5a02c3a9a606c95b3f59" @@ -3710,9 +3834,9 @@ entities@^1.1.1, entities@~1.1.1: integrity sha512-f2LZMYl1Fzu7YSBKg+RoROelpOaNrcGmE9AZubeDfrCEia483oW4MI4VyFd5VNHIgQ/7qm1I0wUHK1eJnn2y2w== entities@^2.0.0: - version "2.0.3" - resolved "https://registry.yarnpkg.com/entities/-/entities-2.0.3.tgz#5c487e5742ab93c15abb5da22759b8590ec03b7f" - integrity sha512-MyoZ0jgnLvB2X3Lg5HqpFmn1kybDiIfEQmKzTb5apr51Rb+T3KdmMiqa70T+bhGnyv7bQ6WMj2QMHpGMmlrUYQ== + version "2.1.0" + resolved "https://registry.yarnpkg.com/entities/-/entities-2.1.0.tgz#992d3129cf7df6870b96c57858c249a120f8b8b5" + integrity sha512-hCx1oky9PFrJ611mf0ifBLBRW8lUUVRlFolb5gWRfIELabBlbp9xZvrqZLZAs+NxFnbfQoeGd8wDkygjg7U85w== env-paths@^2.2.0: version "2.2.0" @@ -3733,7 +3857,24 @@ error-ex@^1.2.0: dependencies: is-arrayish "^0.2.1" -es-abstract@^1.17.0-next.1, es-abstract@^1.17.2, es-abstract@^1.17.4, es-abstract@^1.17.5: +es-abstract@^1.17.0-next.1, es-abstract@^1.17.5: + version "1.17.7" + resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.17.7.tgz#a4de61b2f66989fc7421676c1cb9787573ace54c" + integrity sha512-VBl/gnfcJ7OercKA9MVaegWsBHFjV492syMudcnQZvt/Dw8ezpcOHYZXa/J96O8vx+g4x65YKhxOwDUh63aS5g== + dependencies: + es-to-primitive "^1.2.1" + function-bind "^1.1.1" + has "^1.0.3" + has-symbols "^1.0.1" + is-callable "^1.2.2" + is-regex "^1.1.1" + object-inspect "^1.8.0" + object-keys "^1.1.1" + object.assign "^4.1.1" + string.prototype.trimend "^1.0.1" + string.prototype.trimstart "^1.0.1" + +es-abstract@^1.17.2: version "1.17.6" resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.17.6.tgz#9142071707857b2cacc7b89ecb670316c3e2d52a" integrity sha512-Fr89bON3WFyUi5EvAeI48QTWX0AyekGgLA8H+c+7fbfCkJwRWRMLd8CQedNEyJuoYYhmtEqY92pgte1FAhBlhw== @@ -3750,17 +3891,36 @@ es-abstract@^1.17.0-next.1, es-abstract@^1.17.2, es-abstract@^1.17.4, es-abstrac string.prototype.trimend "^1.0.1" string.prototype.trimstart "^1.0.1" +es-abstract@^1.18.0-next.1: + version "1.18.0-next.1" + resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.18.0-next.1.tgz#6e3a0a4bda717e5023ab3b8e90bec36108d22c68" + integrity sha512-I4UGspA0wpZXWENrdA0uHbnhte683t3qT/1VFH9aX2dA5PPSf6QW5HHXf5HImaqPmjXaVeVk4RGWnaylmV7uAA== + dependencies: + es-to-primitive "^1.2.1" + function-bind "^1.1.1" + has "^1.0.3" + has-symbols "^1.0.1" + is-callable "^1.2.2" + is-negative-zero "^2.0.0" + is-regex "^1.1.1" + object-inspect "^1.8.0" + object-keys "^1.1.1" + object.assign "^4.1.1" + string.prototype.trimend "^1.0.1" + string.prototype.trimstart "^1.0.1" + es-array-method-boxes-properly@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/es-array-method-boxes-properly/-/es-array-method-boxes-properly-1.0.0.tgz#873f3e84418de4ee19c5be752990b2e44718d09e" integrity sha512-wd6JXUmyHmt8T5a2xreUwKcGPq6f1f+WwIJkijUqiGcJz1qqnZgP6XIK+QyIWU5lT7imeNxUll48bziG+TSYcA== es-get-iterator@^1.0.2: - version "1.1.0" - resolved "https://registry.yarnpkg.com/es-get-iterator/-/es-get-iterator-1.1.0.tgz#bb98ad9d6d63b31aacdc8f89d5d0ee57bcb5b4c8" - integrity sha512-UfrmHuWQlNMTs35e1ypnvikg6jCz3SK8v8ImvmDsh36fCVUR1MqoFDiyn0/k52C8NqO3YsO8Oe0azeesNuqSsQ== + version "1.1.1" + resolved "https://registry.yarnpkg.com/es-get-iterator/-/es-get-iterator-1.1.1.tgz#b93ddd867af16d5118e00881396533c1c6647ad9" + integrity sha512-qorBw8Y7B15DVLaJWy6WdEV/ZkieBcu6QCq/xzWzGOKJqgG1j754vXRfZ3NY7HSShneqU43mPB4OkQBTkvHhFw== dependencies: - es-abstract "^1.17.4" + call-bind "^1.0.0" + get-intrinsic "^1.0.1" has-symbols "^1.0.1" is-arguments "^1.0.4" is-map "^2.0.1" @@ -3813,6 +3973,11 @@ escape-string-regexp@1.0.5, escape-string-regexp@^1.0.2, escape-string-regexp@^1 resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" integrity sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ= +escape-string-regexp@4.0.0, escape-string-regexp@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz#14ba83a5d373e3d311e5afca29cf5bfad965bf34" + integrity sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA== + escodegen@1.8.x: version "1.8.1" resolved "https://registry.yarnpkg.com/escodegen/-/escodegen-1.8.1.tgz#5a5b53af4693110bebb0867aa3430dd3b70a1018" @@ -4212,11 +4377,16 @@ ethereumjs-blockchain@^4.0.3: rlp "^2.2.2" semaphore "^1.1.0" -ethereumjs-common@^1.1.0, ethereumjs-common@^1.3.2, ethereumjs-common@^1.5.0: +ethereumjs-common@^1.1.0: version "1.5.1" resolved "https://registry.yarnpkg.com/ethereumjs-common/-/ethereumjs-common-1.5.1.tgz#4e75042473a64daec0ed9fe84323dd9576aa5dba" integrity sha512-aVUPRLgmXORGXXEVkFYgPhr9TGtpBY2tGhZ9Uh0A3lIUzUDr1x6kQx33SbjPUkLkX3eniPQnIL/2psjkjrOfcQ== +ethereumjs-common@^1.3.2, ethereumjs-common@^1.5.0: + version "1.5.2" + resolved "https://registry.yarnpkg.com/ethereumjs-common/-/ethereumjs-common-1.5.2.tgz#2065dbe9214e850f2e955a80e650cb6999066979" + integrity sha512-hTfZjwGX52GS2jcVO6E2sx4YuFnf0Fhp5ylo4pEPhEffNln7vS59Hr5sLnp3/QCazFLluuBZ+FZ6J5HTp0EqCA== + ethereumjs-tx@^1.0.0, ethereumjs-tx@^1.1.1, ethereumjs-tx@^1.2.0, ethereumjs-tx@^1.2.2, ethereumjs-tx@^1.3.3, ethereumjs-tx@^1.3.7: version "1.3.7" resolved "https://registry.yarnpkg.com/ethereumjs-tx/-/ethereumjs-tx-1.3.7.tgz#88323a2d875b10549b8347e09f4862b546f3d89a" @@ -4298,9 +4468,9 @@ ethereumjs-util@^7.0.2: rlp "^2.2.4" ethereumjs-util@^7.0.3: - version "7.0.5" - resolved "https://registry.yarnpkg.com/ethereumjs-util/-/ethereumjs-util-7.0.5.tgz#bc6e178dedbccc4b188c9ae6ae38db1906884b7b" - integrity sha512-gLLZVXYUHR6pamO3h/+M1jzKz7qE20PKFyFKtq1PrIHA6wcLI96mDz96EMkkhXfrpk30rhpkw0iRnzxKhqaIdQ== + version "7.0.7" + resolved "https://registry.yarnpkg.com/ethereumjs-util/-/ethereumjs-util-7.0.7.tgz#484fb9c03b766b2ee64821281070616562fb5a59" + integrity sha512-vU5rtZBlZsgkTw3o6PDKyB8li2EgLavnAbsKcfsH2YhHH1Le+PP8vEiMnAnvgc1B6uMoaM5GDCrVztBw0Q5K9g== dependencies: "@types/bn.js" "^4.11.3" bn.js "^5.1.2" @@ -4378,7 +4548,22 @@ ethers@4.0.0-beta.3: uuid "2.0.1" xmlhttprequest "1.8.0" -ethers@^4.0.0-beta.1, ethers@^4.0.20, ethers@^4.0.32, ethers@^4.0.40: +ethers@^4.0.0-beta.1, ethers@^4.0.32: + version "4.0.48" + resolved "https://registry.yarnpkg.com/ethers/-/ethers-4.0.48.tgz#330c65b8133e112b0613156e57e92d9009d8fbbe" + integrity sha512-sZD5K8H28dOrcidzx9f8KYh8083n5BexIO3+SbE4jK83L85FxtpXZBCQdXb8gkg+7sBqomcLhhkU7UHL+F7I2g== + dependencies: + aes-js "3.0.0" + bn.js "^4.4.0" + elliptic "6.5.3" + hash.js "1.1.3" + js-sha3 "0.5.7" + scrypt-js "2.0.4" + setimmediate "1.0.4" + uuid "2.0.1" + xmlhttprequest "1.8.0" + +ethers@^4.0.20, ethers@^4.0.40: version "4.0.47" resolved "https://registry.yarnpkg.com/ethers/-/ethers-4.0.47.tgz#91b9cd80473b1136dd547095ff9171bd1fc68c85" integrity sha512-hssRYhngV4hiDNeZmVU/k5/E8xmLG8UpcNUzg6mb7lqhgpFPH/t7nuv20RjRrEf0gblzvi2XwR5Te+V3ZFc9pQ== @@ -4423,11 +4608,16 @@ eventemitter3@3.1.2: resolved "https://registry.yarnpkg.com/eventemitter3/-/eventemitter3-3.1.2.tgz#2d3d48f9c346698fce83a85d7d664e98535df6e7" integrity sha512-tvtQIeLVHjDkJYnzf2dgVMxfuSGJeM/7UCG17TT4EumTfNtF+0nebF/4zWOIkCreAbtNqhGEboB6BWrwqNaw4Q== -eventemitter3@4.0.4, eventemitter3@^4.0.0: +eventemitter3@4.0.4: version "4.0.4" resolved "https://registry.yarnpkg.com/eventemitter3/-/eventemitter3-4.0.4.tgz#b5463ace635a083d018bdc7c917b4c5f10a85384" integrity sha512-rlaVLnVxtxvoyLsQQFBx53YmXHDxRIzzTLbdfxqi4yocpSjAxXwkU0cScM5JgSKMqEhrZpnvQ2D9gjylR0AimQ== +eventemitter3@^4.0.0: + version "4.0.7" + resolved "https://registry.yarnpkg.com/eventemitter3/-/eventemitter3-4.0.7.tgz#2de9b68f6528d5644ef5c59526a1b4a07306169f" + integrity sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw== + events@^3.0.0: version "3.1.0" resolved "https://registry.yarnpkg.com/events/-/events-3.1.0.tgz#84279af1b34cb75aa88bf5ff291f6d0bd9b31a59" @@ -4578,6 +4768,11 @@ fast-deep-equal@^3.1.1: resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz#3a7d56b559d6cbc3eb512325244e619a65c6c525" integrity sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q== +fast-diff@^1.1.2: + version "1.2.0" + resolved "https://registry.yarnpkg.com/fast-diff/-/fast-diff-1.2.0.tgz#73ee11982d86caaf7959828d519cfe927fac5f03" + integrity sha512-xJuoT5+L99XlZ8twedaRf6Ax2TgQVxvgZOYoPKqZufmJib0tL2tegPBOZb1pVNgIhlqDlA0eO0c3wBvQcmzx4w== + fast-glob@^3.0.3: version "3.2.4" resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-3.2.4.tgz#d20aefbf99579383e7f3cc66529158c9b98554d3" @@ -4735,12 +4930,12 @@ find-up@3.0.0, find-up@^3.0.0: dependencies: locate-path "^3.0.0" -find-up@4.1.0, find-up@^4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/find-up/-/find-up-4.1.0.tgz#97afe7d6cdc0bc5928584b7c8d7b16e8a9aa5d19" - integrity sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw== +find-up@5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/find-up/-/find-up-5.0.0.tgz#4c92819ecb7083561e4f4a240a86be5198f536fc" + integrity sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng== dependencies: - locate-path "^5.0.0" + locate-path "^6.0.0" path-exists "^4.0.0" find-up@^1.0.0: @@ -4758,6 +4953,14 @@ find-up@^2.1.0: dependencies: locate-path "^2.0.0" +find-up@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/find-up/-/find-up-4.1.0.tgz#97afe7d6cdc0bc5928584b7c8d7b16e8a9aa5d19" + integrity sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw== + dependencies: + locate-path "^5.0.0" + path-exists "^4.0.0" + firebase@^7.8.0: version "7.16.1" resolved "https://registry.yarnpkg.com/firebase/-/firebase-7.16.1.tgz#a9f5803acba8ac937eb43f11a874a0901b015afc" @@ -4793,9 +4996,9 @@ flat-cache@^2.0.1: write "1.0.3" flat@^4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/flat/-/flat-4.1.0.tgz#090bec8b05e39cba309747f1d588f04dbaf98db2" - integrity sha512-Px/TiLIznH7gEDlPXcUD4KnBusa6kR6ayRUVcnEAbreRIuhkqow/mun59BuRXwoYk7ZQOLW1ZM05ilIvK38hFw== + version "4.1.1" + resolved "https://registry.yarnpkg.com/flat/-/flat-4.1.1.tgz#a392059cc382881ff98642f5da4dde0a959f309b" + integrity sha512-FmTtBsHskrU6FJ2VxCnsDb84wu9zhmO3cUX2kGFb5tuwhfXxGciiT0oRY+cck35QmG+NmGh5eLz6lLCpWTqwpA== dependencies: is-buffer "~2.0.3" @@ -4835,6 +5038,11 @@ for-own@^0.1.4: dependencies: for-in "^1.0.1" +foreach@^2.0.5: + version "2.0.5" + resolved "https://registry.yarnpkg.com/foreach/-/foreach-2.0.5.tgz#0bee005018aeb260d0a3af3ae658dd0136ec1b99" + integrity sha1-C+4AUBiusmDQo6865ljdATbsG5k= + forever-agent@~0.6.1: version "0.6.1" resolved "https://registry.yarnpkg.com/forever-agent/-/forever-agent-0.6.1.tgz#fbc71f0c41adeb37f96c577ad1ed42d8fdacca91" @@ -4864,9 +5072,9 @@ forwarded@~0.1.2: integrity sha1-mMI9qxF1ZXuMBXPozszZGw/xjIQ= fp-ts@^2.7.1: - version "2.8.3" - resolved "https://registry.yarnpkg.com/fp-ts/-/fp-ts-2.8.3.tgz#c09652bbf21e64d65a9f93587ad549ab0e03abe7" - integrity sha512-oGD3BTSzFCPs9alaI/2gh0SCNKyhPXkpeIBvkXNvnoczHfDAUd2HHtotCdLO0hOTTTTx8VKA0mhhR7LUNo+cKg== + version "2.9.1" + resolved "https://registry.yarnpkg.com/fp-ts/-/fp-ts-2.9.1.tgz#24557f66f9221f8a1922fce6cbe2b8ea6d0f3929" + integrity sha512-9++IpEtF2blK7tfSV+iHxO3KXdAGO/bPPQtUYqzC6XKzGOWNctqvlf13SpXxcu2mYaibOvneh/m9vAPLAHdoRQ== fresh@0.5.2: version "0.5.2" @@ -4981,6 +5189,15 @@ get-installed-path@^4.0.8: dependencies: global-modules "1.0.0" +get-intrinsic@^1.0.0, get-intrinsic@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/get-intrinsic/-/get-intrinsic-1.0.2.tgz#6820da226e50b24894e08859469dc68361545d49" + integrity sha512-aeX0vrFm21ILl3+JpFFRNe9aUvp6VFZb2/CTbgLb8j75kOhvoNYjt9d8KA/tJG4gSo8nzEDedRl0h7vDmBYRVg== + dependencies: + function-bind "^1.1.1" + has "^1.0.3" + has-symbols "^1.0.1" + get-port@^3.1.0: version "3.2.0" resolved "https://registry.yarnpkg.com/get-port/-/get-port-3.2.0.tgz#dd7ce7de187c06c8bf353796ac71e099f0980ebc" @@ -5014,9 +5231,9 @@ get-stream@^4.0.0, get-stream@^4.1.0: pump "^3.0.0" get-stream@^5.1.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-5.1.0.tgz#01203cdc92597f9b909067c3e656cc1f4d3c4dc9" - integrity sha512-EXr1FOzrzTfGeL0gQdeFEvOMm2mzMOglyiOXSTpPC+iAjAKftbr3jpCMWynogwYnM+eSj9sHGc6wjIcDvYiygw== + version "5.2.0" + resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-5.2.0.tgz#4966a1795ee5ace65e706c4b7beb71257d6e22d3" + integrity sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA== dependencies: pump "^3.0.0" @@ -5170,6 +5387,14 @@ global@~4.3.0: min-document "^2.19.0" process "~0.5.1" +global@~4.4.0: + version "4.4.0" + resolved "https://registry.yarnpkg.com/global/-/global-4.4.0.tgz#3e7b105179006a323ed71aafca3e9c57a5cc6406" + integrity sha512-wv/LAoHdRE3BeTGz53FAamhGlPLhlssK45usmGFThIi4XqnBmjKQ16u+RNbP7WvigRZDxUsM0J3gcQ5yicaL0w== + dependencies: + min-document "^2.19.0" + process "^0.11.10" + globals@^11.7.0: version "11.12.0" resolved "https://registry.yarnpkg.com/globals/-/globals-11.12.0.tgz#ab8795338868a0babd8525758018c2a7eb95c42e" @@ -5236,11 +5461,6 @@ graceful-fs@4.X, graceful-fs@^4.0.0, graceful-fs@^4.1.10, graceful-fs@^4.1.11, g resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.4.tgz#2256bde14d3632958c465ebc96dc467ca07a29fb" integrity sha512-WjKPNJF79dtJAVniUlGGWHYGz2jWxT6VhN/4m1NdkbZ2nOsEF+cI1Edgql5zCRhs/VsQYRvrXctxktVXZUkixw== -"graceful-readlink@>= 1.0.0": - version "1.0.1" - resolved "https://registry.yarnpkg.com/graceful-readlink/-/graceful-readlink-1.0.1.tgz#4cafad76bc62f02fa039b2f94e9a3dd3a391a725" - integrity sha1-TK+tdrxi8C+gObL5Tpo906ORpyU= - growl@1.10.5: version "1.10.5" resolved "https://registry.yarnpkg.com/growl/-/growl-1.10.5.tgz#f2735dc2283674fa67478b10181059355c369e5e" @@ -5281,11 +5501,11 @@ har-schema@^2.0.0: integrity sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI= har-validator@~5.1.3: - version "5.1.3" - resolved "https://registry.yarnpkg.com/har-validator/-/har-validator-5.1.3.tgz#1ef89ebd3e4996557675eed9893110dc350fa080" - integrity sha512-sNvOCzEQNr/qrvJgc3UG/kD4QtlHycrzwS+6mfTrrSq97BvaYcPZZI1ZSqGSPR73Cxn4LKTD4PttRwfU7jWq5g== + version "5.1.5" + resolved "https://registry.yarnpkg.com/har-validator/-/har-validator-5.1.5.tgz#1f0803b9f8cb20c0fa13822df1ecddb36bde1efd" + integrity sha512-nmT2T0lljbxdQZfspsno9hgrG3Uir6Ks5afism62poxqBM6sDnMEuPmzTq8XN0OEwqKLLdh1jQI3qyE66Nzb3w== dependencies: - ajv "^6.5.5" + ajv "^6.12.3" har-schema "^2.0.0" has-ansi@^2.0.0: @@ -5369,20 +5589,25 @@ he@1.2.0, he@^1.1.1: resolved "https://registry.yarnpkg.com/he/-/he-1.2.0.tgz#84ae65fa7eafb165fddb61566ae14baf05664f0f" integrity sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw== +highlight.js@^10.4.0, highlight.js@^10.4.1: + version "10.4.1" + resolved "https://registry.yarnpkg.com/highlight.js/-/highlight.js-10.4.1.tgz#d48fbcf4a9971c4361b3f95f302747afe19dbad0" + integrity sha512-yR5lWvNz7c85OhVAEAeFhVCc/GV4C30Fjzc/rCP0aCWzc1UUOPUk55dK/qdwTZHBvMZo+eZ2jpk62ndX/xMFlg== + highlight.js@^9.12.0, highlight.js@^9.15.8: - version "9.18.1" - resolved "https://registry.yarnpkg.com/highlight.js/-/highlight.js-9.18.1.tgz#ed21aa001fe6252bb10a3d76d47573c6539fe13c" - integrity sha512-OrVKYz70LHsnCgmbXctv/bfuvntIKDz177h0Co37DQ5jamGZLVmoCVMtjMtNZY3X9DrCcKfklHPNeA0uPZhSJg== + version "9.18.5" + resolved "https://registry.yarnpkg.com/highlight.js/-/highlight.js-9.18.5.tgz#d18a359867f378c138d6819edfc2a8acd5f29825" + integrity sha512-a5bFyofd/BHCX52/8i8uJkjr9DYwXIPnM/plwI6W7ezItLGqzt7X2G2nXuYSfsIJdkwwj/g9DG1LkcGJI/dDoA== highlightjs-solidity@^1.0.17: version "1.0.17" resolved "https://registry.yarnpkg.com/highlightjs-solidity/-/highlightjs-solidity-1.0.17.tgz#275539422d9675a80f958b6f0f3ad59037a6ccb9" integrity sha512-QHSoGDjsfFDBraXtHKdJj2xXlu0fpG2ycZI4woNXLOennJbER2zX5cJL8xdRKQ9kk0q76kt86NgAyMRkttfPQw== -highlightjs-solidity@^1.0.18: - version "1.0.18" - resolved "https://registry.yarnpkg.com/highlightjs-solidity/-/highlightjs-solidity-1.0.18.tgz#3deb0593689a26fbadf98e631bf2cd305a6417c9" - integrity sha512-k15h0br4oCRT0F0jTRuZbimerVt5V4n0k25h7oWi0kVqlBNeXPbSr5ddw02/2ukJmYfB8jauFDmxSauJjwM7Eg== +highlightjs-solidity@^1.0.20: + version "1.0.20" + resolved "https://registry.yarnpkg.com/highlightjs-solidity/-/highlightjs-solidity-1.0.20.tgz#37482fd47deda617994e1d1262df5a319c0a8580" + integrity sha512-Ixb87/4huazRJ7mriimL0DP2GvE5zgSk11VdMPGKMQCNwszDe8qK0PySySsuB88iXyDT/H2gdmvC2bgfrOi3qQ== hmac-drbg@^1.0.0: version "1.0.1" @@ -5539,10 +5764,10 @@ idna-uts46-hx@^2.3.1: dependencies: punycode "2.1.0" -ieee754@^1.1.13, ieee754@^1.1.4: - version "1.1.13" - resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.1.13.tgz#ec168558e95aa181fd87d37f55c32bbcb6708b84" - integrity sha512-4vf7I2LYV/HaWerSo3XmlMkp5eZ83i+/CDluXi/IGTs/O1sejBNhTtnxzmRZfvOUqj7lZjqHkeTvpgSFDlWZTg== +ieee754@^1.1.13: + version "1.2.1" + resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.2.1.tgz#8eb7a10a63fff25d15a57b001586d177d1b0d352" + integrity sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA== ignore@^4.0.6: version "4.0.6" @@ -5642,9 +5867,9 @@ invert-kv@^2.0.0: integrity sha512-wPVv/y/QQ/Uiirj/vh3oP+1Ww+AWehmi1g5fFWGPF6IpCBCDVrhgHRMvrLfdYcwDh3QJbGXDW4JAuzxElLSqKA== io-ts@^2.2.9: - version "2.2.10" - resolved "https://registry.yarnpkg.com/io-ts/-/io-ts-2.2.10.tgz#447d02df51717464a90712b146ec8dbc21b4a74b" - integrity sha512-WHx5jJe7hPpc6JoSIVbD+Xn6tYqe3cRvNpX24d8Wi15/kxhRWa8apo0Gzag6Xg99sCNY9OHKylw/Vhv0JAbNPQ== + version "2.2.13" + resolved "https://registry.yarnpkg.com/io-ts/-/io-ts-2.2.13.tgz#e04016685e863dd5cffb2b5262c5c9c74432dfda" + integrity sha512-BYJgE/BanovJKDvCnAkrr7f3gTucSyk+Sr5VtpouBO1/YfBKUyIn2z1ODG8LEF+1D4sjKZ3Bd/A5/v8JrJe5UQ== ipaddr.js@1.9.1: version "1.9.1" @@ -5652,9 +5877,11 @@ ipaddr.js@1.9.1: integrity sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g== is-arguments@^1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/is-arguments/-/is-arguments-1.0.4.tgz#3faf966c7cba0ff437fb31f6250082fcf0448cf3" - integrity sha512-xPh0Rmt8NE65sNzvyUmWgI1tz3mKq74lGA0mL8LYZcoIzKOzDh6HmrYm3d18k60nHerC8A9Km8kYu87zfSFnLA== + version "1.1.0" + resolved "https://registry.yarnpkg.com/is-arguments/-/is-arguments-1.1.0.tgz#62353031dfbee07ceb34656a6bde59efecae8dd9" + integrity sha512-1Ij4lOMPl/xB5kBDn7I+b2ttPMKa8szhEIrXDuXQD/oe3HJLTLhqhgGspwgyGd6MOywBUqVvYicF72lkgDnIHg== + dependencies: + call-bind "^1.0.0" is-arrayish@^0.2.1: version "0.2.1" @@ -5673,16 +5900,26 @@ is-buffer@^1.1.5: resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-1.1.6.tgz#efaa2ea9daa0d7ab2ea13a97b2b8ad51fefbe8be" integrity sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w== -is-buffer@^2.0.2, is-buffer@~2.0.3: +is-buffer@^2.0.2: version "2.0.4" resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-2.0.4.tgz#3e572f23c8411a5cfd9557c849e3665e0b290623" integrity sha512-Kq1rokWXOPXWuaMAqZiJW4XxsmD9zGx9q4aePabbn3qCRGedtH7Cm+zV8WETitMfu1wdh+Rvd6w5egwSngUX2A== -is-callable@^1.1.3, is-callable@^1.1.4, is-callable@^1.2.0: +is-buffer@~2.0.3: + version "2.0.5" + resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-2.0.5.tgz#ebc252e400d22ff8d77fa09888821a24a658c191" + integrity sha512-i2R6zNFDwgEHJyQUtJEk0XFi1i0dPFn/oqjK3/vPCcDeJvW5NQ83V8QbicfF1SupOaB0h8ntgBC2YiE7dfyctQ== + +is-callable@^1.1.3: version "1.2.0" resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.2.0.tgz#83336560b54a38e35e3a2df7afd0454d691468bb" integrity sha512-pyVD9AaGLxtg6srb2Ng6ynWJqkHU9bEM087AKck0w8QwDarTfNcpIYoU8x8Hv2Icm8u6kFJM18Dag8lyqGkviw== +is-callable@^1.1.4, is-callable@^1.2.0, is-callable@^1.2.2: + version "1.2.2" + resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.2.2.tgz#c7c6715cd22d4ddb48d3e19970223aceabb080d9" + integrity sha512-dnMqspv5nU3LoewK2N/y7KLtxtakvTuaCsU9FU50/QDmdbHNy/4/JuRtMHqRU22o3q+W89YQndQEeCVwK+3qrA== + is-ci@^1.0.10: version "1.2.1" resolved "https://registry.yarnpkg.com/is-ci/-/is-ci-1.2.1.tgz#e3779c8ee17fccf428488f6e281187f2e632841c" @@ -5754,6 +5991,11 @@ is-function@^1.0.1: resolved "https://registry.yarnpkg.com/is-function/-/is-function-1.0.2.tgz#4f097f30abf6efadac9833b17ca5dc03f8144e08" integrity sha512-lw7DUp0aWXYg+CBCN+JKkcE0Q2RayZnSvnZBlwgxHBQhqt5pZNVy4Ri7H9GmmXkdu7LUthszM+Tor1u/2iBcpQ== +is-generator-function@^1.0.7: + version "1.0.8" + resolved "https://registry.yarnpkg.com/is-generator-function/-/is-generator-function-1.0.8.tgz#dfb5c2b120e02b0a8d9d2c6806cd5621aa922f7b" + integrity sha512-2Omr/twNtufVZFr1GhxjOMFPAj2sjc/dKaIqBhvo4qciXfJmITGH6ZGd8eZYNHza8t1y0e01AuqRhJwfWp26WQ== + is-glob@^2.0.0, is-glob@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-2.0.1.tgz#d096f926a3ded5600f3fdfd91198cb0888c2d863" @@ -5781,15 +6023,20 @@ is-hex-prefixed@1.0.0: integrity sha1-fY035q135dEnFIkTxXPggtd39VQ= is-map@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/is-map/-/is-map-2.0.1.tgz#520dafc4307bb8ebc33b813de5ce7c9400d644a1" - integrity sha512-T/S49scO8plUiAOA2DBTBG3JHpn1yiw0kRp6dgiZ0v2/6twi5eiB0rHtHFH9ZIrvlWc6+4O+m4zg5+Z833aXgw== + version "2.0.2" + resolved "https://registry.yarnpkg.com/is-map/-/is-map-2.0.2.tgz#00922db8c9bf73e81b7a335827bc2a43f2b91127" + integrity sha512-cOZFQQozTha1f4MxLFzlgKYPTyj26picdZTx82hbc/Xf4K/tZOOXSCkMvU4pKioRXGDLJRn0GM7Upe7kR721yg== is-natural-number@^4.0.1: version "4.0.1" resolved "https://registry.yarnpkg.com/is-natural-number/-/is-natural-number-4.0.1.tgz#ab9d76e1db4ced51e35de0c72ebecf09f734cde8" integrity sha1-q5124dtM7VHjXeDHLr7PCfc0zeg= +is-negative-zero@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/is-negative-zero/-/is-negative-zero-2.0.1.tgz#3de746c18dda2319241a53675908d8f766f11c24" + integrity sha512-2z6JzQvZRa9A2Y7xC6dQQm4FSTSTNWjKIYYTt4246eMTJmIo0Q+ZyOsU66X8lxK1AbB92dFeglPLrhwpeRKO6w== + is-number@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/is-number/-/is-number-2.1.0.tgz#01fcbbb393463a548f2f466cce16dece49db908f" @@ -5812,7 +6059,12 @@ is-obj@^1.0.0: resolved "https://registry.yarnpkg.com/is-obj/-/is-obj-1.0.1.tgz#3e4729ac1f5fde025cd7d83a896dab9f4f67db0f" integrity sha1-PkcprB9f3gJc19g6iW2rn09n2w8= -is-object@^1.0.1, is-object@~1.0.1: +is-object@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/is-object/-/is-object-1.0.2.tgz#a56552e1c665c9e950b4a025461da87e72f86fcf" + integrity sha512-2rRIahhZr2UWb45fIOuvZGpFtz0TyOZLf32KxBbSoUCeZR495zCKlWUKKUByk3geS2eAs7ZAABt0Y/Rx0GiQGA== + +is-object@~1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/is-object/-/is-object-1.0.1.tgz#8952688c5ec2ffd6b03ecc85e769e02903083470" integrity sha1-iVJojF7C/9awPsyF52ngKQMINHA= @@ -5832,13 +6084,20 @@ is-primitive@^2.0.0: resolved "https://registry.yarnpkg.com/is-primitive/-/is-primitive-2.0.0.tgz#207bab91638499c07b2adf240a41a87210034575" integrity sha1-IHurkWOEmcB7Kt8kCkGochADRXU= -is-regex@^1.0.4, is-regex@^1.1.0: +is-regex@^1.0.4: version "1.1.0" resolved "https://registry.yarnpkg.com/is-regex/-/is-regex-1.1.0.tgz#ece38e389e490df0dc21caea2bd596f987f767ff" integrity sha512-iI97M8KTWID2la5uYXlkbSDQIg4F6o1sYboZKKTDpnDQMLtUL86zxhgDet3Q2SriaYsyGqZ6Mn2SjbRKeLHdqw== dependencies: has-symbols "^1.0.1" +is-regex@^1.1.0, is-regex@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/is-regex/-/is-regex-1.1.1.tgz#c6f98aacc546f6cec5468a07b7b153ab564a57b9" + integrity sha512-1+QkEcxiLlB7VEyFtyBg94e08OAsvq7FUBgApTq/w2ymCLyKJgDPsybBENVtA7XCQEgEXxKPonG+mvYRxh/LIg== + dependencies: + has-symbols "^1.0.1" + is-regex@~1.0.5: version "1.0.5" resolved "https://registry.yarnpkg.com/is-regex/-/is-regex-1.0.5.tgz#39d589a358bf18967f726967120b8fc1aed74eae" @@ -5852,16 +6111,16 @@ is-retry-allowed@^1.0.0: integrity sha512-RUbUeKwvm3XG2VYamhJL1xFktgjvPzL0Hq8C+6yrWIswDy3BIXGqCxhxkc30N9jqK311gVU137K8Ei55/zVJRg== is-set@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/is-set/-/is-set-2.0.1.tgz#d1604afdab1724986d30091575f54945da7e5f43" - integrity sha512-eJEzOtVyenDs1TMzSQ3kU3K+E0GUS9sno+F0OBT97xsgcJsF9nXMBtkT9/kut5JEpM7oL7X/0qxR17K3mcwIAA== + version "2.0.2" + resolved "https://registry.yarnpkg.com/is-set/-/is-set-2.0.2.tgz#90755fa4c2562dc1c5d4024760d6119b94ca18ec" + integrity sha512-+2cnTEZeY5z/iXGbLhPrOAaK/Mau5k5eXq9j14CpRTftq0pAJu2MwVRSZhyZWBzx3o6X795Lz6Bpb6R0GKf37g== is-stream@^1.0.0, is-stream@^1.0.1, is-stream@^1.1.0, is-stream@~1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-1.1.0.tgz#12d4a3dd4e68e0b79ceb8dbc84173ae80d91ca44" integrity sha1-EtSj3U5o4Lec6428hBc66A2RykQ= -is-string@^1.0.4, is-string@^1.0.5: +is-string@^1.0.5: version "1.0.5" resolved "https://registry.yarnpkg.com/is-string/-/is-string-1.0.5.tgz#40493ed198ef3ff477b8c7f92f644ec82a5cd3a6" integrity sha512-buY6VNRjhQMiF1qWDouloZlQbRhDPCebwxSjxMjxgemYT46YMd2NR0/H+fBhEfWX4A/w9TBJ+ol+okqJKFE6vQ== @@ -5873,6 +6132,17 @@ is-symbol@^1.0.2: dependencies: has-symbols "^1.0.1" +is-typed-array@^1.1.3: + version "1.1.4" + resolved "https://registry.yarnpkg.com/is-typed-array/-/is-typed-array-1.1.4.tgz#1f66f34a283a3c94a4335434661ca53fff801120" + integrity sha512-ILaRgn4zaSrVNXNGtON6iFNotXW3hAPF3+0fB1usg2jFlWqo5fEDdmJkz0zBfoi7Dgskr8Khi2xZ8cXqZEfXNA== + dependencies: + available-typed-arrays "^1.0.2" + call-bind "^1.0.0" + es-abstract "^1.18.0-next.1" + foreach "^2.0.5" + has-symbols "^1.0.1" + is-typedarray@^1.0.0, is-typedarray@~1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/is-typedarray/-/is-typedarray-1.0.0.tgz#e479c80858df0c1b11ddda6940f96011fcda4a9a" @@ -5997,7 +6267,7 @@ js-yaml@3.13.1: argparse "^1.0.7" esprima "^4.0.0" -js-yaml@3.x, js-yaml@^3.13.0, js-yaml@^3.13.1: +js-yaml@3.14.0, js-yaml@3.x, js-yaml@^3.13.0, js-yaml@^3.13.1: version "3.14.0" resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.14.0.tgz#a7a34170f26a21bb162424d8adacb4113a69e482" integrity sha512-/4IbIeHcD9VMHFqDR/gQ7EdZdLimOvW2DdcxFjdyyZ9NsbS+ccrXqVWDtab/lRl5AlUqmpBx8EhPaWR+OtY17A== @@ -6186,9 +6456,9 @@ keccak@^2.0.0: safe-buffer "^5.2.0" keccak@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/keccak/-/keccak-3.0.0.tgz#420d1de4a38a04f33ff8401f0535fb93756861d4" - integrity sha512-/4h4FIfFEpTEuySXi/nVFM5rqSKPnnhI7cL4K3MFSwoI3VyM7AhPSq3SsysARtnEBEeIKMBUWD8cTh9nHE8AkA== + version "3.0.1" + resolved "https://registry.yarnpkg.com/keccak/-/keccak-3.0.1.tgz#ae30a0e94dbe43414f741375cff6d64c8bea0bff" + integrity sha512-epq90L9jlFWCW7+pQa6JOnKn2Xgl2mtI664seYR6MHskvI9agt7AnDqmAlp9TqU4/caMYbA08Hi5DMZAl5zdkA== dependencies: node-addon-api "^2.0.0" node-gyp-build "^4.2.0" @@ -6386,6 +6656,13 @@ locate-path@^5.0.0: dependencies: p-locate "^4.1.0" +locate-path@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-6.0.0.tgz#55321eb309febbc59c4801d931a72452a681d286" + integrity sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw== + dependencies: + p-locate "^5.0.0" + lockfile@^1.0.4: version "1.0.4" resolved "https://registry.yarnpkg.com/lockfile/-/lockfile-1.0.4.tgz#07f819d25ae48f87e538e6578b6964a4981a5609" @@ -6532,7 +6809,12 @@ lodash.tostring@^4.0.0: resolved "https://registry.yarnpkg.com/lodash.tostring/-/lodash.tostring-4.1.4.tgz#560c27d1f8eadde03c2cce198fef5c031d8298fb" integrity sha1-Vgwn0fjq3eA8LM4Zj+9cAx2CmPs= -lodash@^4.15.0, lodash@^4.17.11, lodash@^4.17.12, lodash@^4.17.13, lodash@^4.17.14, lodash@^4.17.15, lodash@^4.17.19, lodash@^4.17.4: +lodash@^4.15.0, lodash@^4.17.15: + version "4.17.20" + resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.20.tgz#b44a9b6297bcb698f1c51a3545a2b3b368d59c52" + integrity sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA== + +lodash@^4.17.11, lodash@^4.17.12, lodash@^4.17.13, lodash@^4.17.14, lodash@^4.17.19, lodash@^4.17.4: version "4.17.19" resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.19.tgz#e48ddedbe30b3321783c5b4301fbd353bc1e4a4b" integrity sha512-JNvd8XER9GQX0v2qJgsaN/mzFCNA5BRe/j8JN9d+tWyGLSodKQHKFicdwNYzWwI3wjRnaKPsGj1XkBjx/F96DQ== @@ -6544,6 +6826,13 @@ log-symbols@3.0.0: dependencies: chalk "^2.4.2" +log-symbols@4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/log-symbols/-/log-symbols-4.0.0.tgz#69b3cc46d20f448eccdb75ea1fa733d9e821c920" + integrity sha512-FN8JBzLx6CzeMrB0tg6pqlGU1wCrXW+ZXGH481kfsBqer0hToTIiHdjH4Mq8xJUbvATujKCvaREGWpGUionraA== + dependencies: + chalk "^4.0.0" + log-symbols@^2.2.0: version "2.2.0" resolved "https://registry.yarnpkg.com/log-symbols/-/log-symbols-2.2.0.tgz#5740e1c5d6f0dfda4ad9323b5332107ef6b4c40a" @@ -6580,6 +6869,13 @@ lru-cache@^5.1.1: dependencies: yallist "^3.0.2" +lru-cache@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-6.0.0.tgz#6d6fe6570ebd96aaf90fcad1dafa3b2566db3a94" + integrity sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA== + dependencies: + yallist "^4.0.0" + ltgt@~2.2.0: version "2.2.1" resolved "https://registry.yarnpkg.com/ltgt/-/ltgt-2.2.1.tgz#f35ca91c493f7b73da0e07495304f17b31f87ee5" @@ -6867,28 +7163,28 @@ mkdirp@0.5.5, mkdirp@0.5.x, mkdirp@^0.5.0, mkdirp@^0.5.1, mkdirp@~0.5.1: dependencies: minimist "^1.2.5" -mocha@8.0.1: - version "8.0.1" - resolved "https://registry.yarnpkg.com/mocha/-/mocha-8.0.1.tgz#fe01f0530362df271aa8f99510447bc38b88d8ed" - integrity sha512-vefaXfdYI8+Yo8nPZQQi0QO2o+5q9UIMX1jZ1XMmK3+4+CQjc7+B0hPdUeglXiTlr8IHMVRo63IhO9Mzt6fxOg== +mocha@8.1.2: + version "8.1.2" + resolved "https://registry.yarnpkg.com/mocha/-/mocha-8.1.2.tgz#d67fad13300e4f5cd48135a935ea566f96caf827" + integrity sha512-I8FRAcuACNMLQn3lS4qeWLxXqLvGf6r2CaLstDpZmMUUSmvW6Cnm1AuHxgbc7ctZVRcfwspCRbDHymPsi3dkJw== dependencies: ansi-colors "4.1.1" browser-stdout "1.3.1" - chokidar "3.3.1" - debug "3.2.6" + chokidar "3.4.2" + debug "4.1.1" diff "4.0.2" - escape-string-regexp "1.0.5" - find-up "4.1.0" + escape-string-regexp "4.0.0" + find-up "5.0.0" glob "7.1.6" growl "1.10.5" he "1.2.0" - js-yaml "3.13.1" - log-symbols "3.0.0" + js-yaml "3.14.0" + log-symbols "4.0.0" minimatch "3.0.4" ms "2.1.2" object.assign "4.1.0" promise.allsettled "1.0.2" - serialize-javascript "3.0.0" + serialize-javascript "4.0.0" strip-json-comments "3.0.1" supports-color "7.1.0" which "2.0.2" @@ -6896,7 +7192,7 @@ mocha@8.0.1: workerpool "6.0.0" yargs "13.3.2" yargs-parser "13.1.2" - yargs-unparser "1.6.0" + yargs-unparser "1.6.1" mocha@^5.2.0: version "5.2.0" @@ -6946,9 +7242,9 @@ mocha@^7.1.1: yargs-unparser "1.6.0" mock-fs@^4.1.0: - version "4.12.0" - resolved "https://registry.yarnpkg.com/mock-fs/-/mock-fs-4.12.0.tgz#a5d50b12d2d75e5bec9dac3b67ffe3c41d31ade4" - integrity sha512-/P/HtrlvBxY4o/PzXY9cCNBrdylDNxg7gnrv2sMNxj+UJ2m8jSpl0/A6fuJeNAWr99ZvGWH8XCbE0vmnM5KupQ== + version "4.13.0" + resolved "https://registry.yarnpkg.com/mock-fs/-/mock-fs-4.13.0.tgz#31c02263673ec3789f90eb7b6963676aa407a598" + integrity sha512-DD0vOdofJdoaRNtnWcrXe6RQbpHkPPmtqGq14uRX0F8ZKJ5nv89CVTYl/BZdppDxBDaV0hl75htg3abpEWlPZA== module-not-found-error@^1.0.1: version "1.0.1" @@ -6986,11 +7282,16 @@ ms@2.1.1: resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.1.tgz#30a5864eb3ebb0a66f2ebe6d727af06a09d86e0a" integrity sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg== -ms@2.1.2, ms@^2.1.1: +ms@2.1.2: version "2.1.2" resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009" integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w== +ms@^2.1.1: + version "2.1.3" + resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.3.tgz#574c8138ce1d2b5861f0b44579dbadd60c6615b2" + integrity sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA== + multi-progress@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/multi-progress/-/multi-progress-2.0.0.tgz#29ccb42cf24874b1c6384f03127ce5dff7b22f2c" @@ -7022,9 +7323,9 @@ multicodec@^0.5.5: varint "^5.0.0" multicodec@^1.0.0: - version "1.0.3" - resolved "https://registry.yarnpkg.com/multicodec/-/multicodec-1.0.3.tgz#1d2c35140f0bff3afad336613ac53e3dda400e0b" - integrity sha512-8G4JKbHWSe/39Xx2uiI+/b/S6mGgimzwEN4TOCokFUIfofg1T8eHny88ht9eWImD2dng+EEQRsApXxA5ubhU4g== + version "1.0.4" + resolved "https://registry.yarnpkg.com/multicodec/-/multicodec-1.0.4.tgz#46ac064657c40380c28367c90304d8ed175a714f" + integrity sha512-NDd7FeS3QamVtbgfvu5h7fd1IlbaC4EQ0/pgU4zqE2vdHCmBGsUa0TiM8/TdSeG6BMPC92OOCf8F1ocE/Wkrrg== dependencies: buffer "^5.6.0" varint "^5.0.0" @@ -7052,11 +7353,16 @@ mythxjs@^1.3.11: chai-as-promised "^7.1.1" jsonwebtoken "^8.5.1" -nan@^2.13.2, nan@^2.14.0, nan@^2.2.1: +nan@^2.13.2, nan@^2.2.1: version "2.14.1" resolved "https://registry.yarnpkg.com/nan/-/nan-2.14.1.tgz#d7be34dfa3105b91494c3147089315eff8874b01" integrity sha512-isWHgVjnFjh2x2yuJ/tj3JbwoHu3UC2dX5G/88Cm24yB6YopVgxvBObDY7n5xW6ExmFhJpSEQqFPvq9zaXc8Jw== +nan@^2.14.0: + version "2.14.2" + resolved "https://registry.yarnpkg.com/nan/-/nan-2.14.2.tgz#f5376400695168f4cc694ac9393d0c9585eeea19" + integrity sha512-M2ufzIiINKCuDfBSAUr1vWQ+vuVcA9kqx8JJUsbQi6yf1uGRyb7HfpdfUr5qLXf3B/t8dPvcjhKMmlfnP47EzQ== + nano-json-stream-parser@^0.1.2: version "0.1.2" resolved "https://registry.yarnpkg.com/nano-json-stream-parser/-/nano-json-stream-parser-0.1.2.tgz#0cc8f6d0e2b622b479c40d499c46d64b755c6f5f" @@ -7128,9 +7434,9 @@ node-fetch@^1.0.1, node-fetch@~1.7.1: is-stream "^1.0.1" node-gyp-build@^4.2.0: - version "4.2.2" - resolved "https://registry.yarnpkg.com/node-gyp-build/-/node-gyp-build-4.2.2.tgz#3f44b65adaafd42fb6c3d81afd630e45c847eb66" - integrity sha512-Lqh7mrByWCM8Cf9UPqpeoVBBo5Ugx+RKu885GAzmLBVYjeywScxHXPGLa4JfYNZmcNGwzR0Glu5/9GaQZMFqyA== + version "4.2.3" + resolved "https://registry.yarnpkg.com/node-gyp-build/-/node-gyp-build-4.2.3.tgz#ce6277f853835f718829efb47db20f3e4d9c4739" + integrity sha512-MN6ZpzmfNCRM+3t57PTJHgHyw/h4OWnZ6mR8P5j/uZtqQr46RRuDE/P+g3n0YR/AiYXeWixZZzaip77gdICfRg== nofilter@^1.0.3: version "1.0.3" @@ -7235,10 +7541,10 @@ object-assign@^4, object-assign@^4.0.0, object-assign@^4.0.1, object-assign@^4.1 resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" integrity sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM= -object-inspect@^1.7.0: - version "1.8.0" - resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.8.0.tgz#df807e5ecf53a609cc6bfe93eac3cc7be5b3a9d0" - integrity sha512-jLdtEOB112fORuypAyl/50VRVIBIdVQOSUUGQHzJ4xBSbit81zRarz7GThkEFZy1RceYrWYcPcBFPQwHyAc1gA== +object-inspect@^1.7.0, object-inspect@^1.8.0: + version "1.9.0" + resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.9.0.tgz#c90521d74e1127b67266ded3394ad6116986533a" + integrity sha512-i3Bp9iTqwhaLZBxGkRfo5ZbE07BQRT7MGu8+nNgwW9ItGp1TzCTw2DLEoWwjClxBjOFI/hWljTAmYGCEwmtnOw== object-inspect@~1.7.0: version "1.7.0" @@ -7263,7 +7569,7 @@ object-keys@~0.4.0: resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-0.4.0.tgz#28a6aae7428dd2c3a92f3d95f21335dd204e0336" integrity sha1-KKaq50KN0sOpLz2V8hM13SBOAzY= -object.assign@4.1.0, object.assign@^4.1.0: +object.assign@4.1.0: version "4.1.0" resolved "https://registry.yarnpkg.com/object.assign/-/object.assign-4.1.0.tgz#968bf1100d7956bb3ca086f006f846b3bc4008da" integrity sha512-exHJeq6kBKj58mqGyTQ9DFvrZC/eR6OwxzoM9YRoGBqrXYonaFyGiFMuc9VZrXf7DarreEwMpurG3dd+CNyW5w== @@ -7273,6 +7579,16 @@ object.assign@4.1.0, object.assign@^4.1.0: has-symbols "^1.0.0" object-keys "^1.0.11" +object.assign@^4.1.0, object.assign@^4.1.1: + version "4.1.2" + resolved "https://registry.yarnpkg.com/object.assign/-/object.assign-4.1.2.tgz#0ed54a342eceb37b38ff76eb831a0e788cb63940" + integrity sha512-ixT2L5THXsApyiUPYKmW+2EHpXXe5Ii3M+f4e+aJFAHao5amFRW6J0OO6c/LU8Be47utCx2GL89hxGB6XSmKuQ== + dependencies: + call-bind "^1.0.0" + define-properties "^1.1.3" + has-symbols "^1.0.1" + object-keys "^1.1.1" + object.getownpropertydescriptors@^2.0.3, object.getownpropertydescriptors@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.1.0.tgz#369bf1f9592d8ab89d712dced5cb81c7c5352649" @@ -7296,6 +7612,13 @@ oboe@2.1.4: dependencies: http-https "^1.0.0" +oboe@2.1.5: + version "2.1.5" + resolved "https://registry.yarnpkg.com/oboe/-/oboe-2.1.5.tgz#5554284c543a2266d7a38f17e073821fbde393cd" + integrity sha1-VVQoTFQ6ImbXo48X4HOCH73jk80= + dependencies: + http-https "^1.0.0" + omni-fetch@^0.2.3: version "0.2.3" resolved "https://registry.yarnpkg.com/omni-fetch/-/omni-fetch-0.2.3.tgz#56a6f46ad170b6d978982cca5bd1c6b70597a58d" @@ -7435,6 +7758,13 @@ p-limit@^2.0.0, p-limit@^2.2.0: dependencies: p-try "^2.0.0" +p-limit@^3.0.2: + version "3.1.0" + resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-3.1.0.tgz#e1daccbe78d0d1388ca18c64fea38e3e57e3706b" + integrity sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ== + dependencies: + yocto-queue "^0.1.0" + p-locate@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-2.0.0.tgz#20a0103b222a70c8fd39cc2e580680f3dde5ec43" @@ -7456,6 +7786,13 @@ p-locate@^4.1.0: dependencies: p-limit "^2.2.0" +p-locate@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-5.0.0.tgz#83c8315c6785005e3bd021839411c9e110e6d834" + integrity sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw== + dependencies: + p-limit "^3.0.2" + p-timeout@^1.1.1: version "1.2.1" resolved "https://registry.yarnpkg.com/p-timeout/-/p-timeout-1.2.1.tgz#5eb3b353b7fce99f101a1038880bb054ebbea386" @@ -7486,13 +7823,12 @@ parent-module@^1.0.0: callsites "^3.0.0" parse-asn1@^5.0.0, parse-asn1@^5.1.5: - version "5.1.5" - resolved "https://registry.yarnpkg.com/parse-asn1/-/parse-asn1-5.1.5.tgz#003271343da58dc94cace494faef3d2147ecea0e" - integrity sha512-jkMYn1dcJqF6d5CpU689bq7w/b5ALS9ROVSpQDPrZsqqesUJii9qutvoT5ltGedNXMO2e16YUWIghG9KxaViTQ== + version "5.1.6" + resolved "https://registry.yarnpkg.com/parse-asn1/-/parse-asn1-5.1.6.tgz#385080a3ec13cb62a62d39409cb3e88844cdaed4" + integrity sha512-RnZRo1EPU6JBnra2vGHj0yhp6ebyjBZpmUCLHWiFhxlzvBCCpAuZ7elsBp1PVAbQN0/04VD/19rfzlBSwLstMw== dependencies: - asn1.js "^4.0.0" + asn1.js "^5.2.0" browserify-aes "^1.0.0" - create-hash "^1.1.0" evp_bytestokey "^1.0.0" pbkdf2 "^3.0.3" safe-buffer "^5.1.1" @@ -7628,7 +7964,7 @@ performance-now@^2.1.0: resolved "https://registry.yarnpkg.com/performance-now/-/performance-now-2.1.0.tgz#6309f4e0e5fa913ec1c69307ae364b4b377c9e7b" integrity sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns= -picomatch@^2.0.4, picomatch@^2.0.5, picomatch@^2.0.7, picomatch@^2.2.1: +picomatch@^2.0.4, picomatch@^2.0.5, picomatch@^2.2.1: version "2.2.2" resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.2.2.tgz#21f333e9b6b8eaff02468f5146ea406d345f4dad" integrity sha512-q0M/9eZHzmr0AulXyPwNfZjtwZ/RBZlbN3K3CErVrk50T2ASYI7Bye0EvekFY3IP1Nt2DHu0re+V2ZHIpMkuWg== @@ -7702,11 +8038,37 @@ preserve@^0.2.0: resolved "https://registry.yarnpkg.com/preserve/-/preserve-0.2.0.tgz#815ed1f6ebc65926f865b310c0713bcb3315ce4b" integrity sha1-gV7R9uvGWSb4ZbMQwHE7yzMVzks= +prettier-linter-helpers@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/prettier-linter-helpers/-/prettier-linter-helpers-1.0.0.tgz#d23d41fe1375646de2d0104d3454a3008802cf7b" + integrity sha512-GbK2cP9nraSSUF9N2XwUwqfzlAFlMNYYl+ShE/V+H8a9uNl/oUqB1w2EL54Jh0OlyRSd8RfWYJ3coVS4TROP2w== + dependencies: + fast-diff "^1.1.2" + +prettier-plugin-solidity@^1.0.0-beta.2: + version "1.0.0-beta.2" + resolved "https://registry.yarnpkg.com/prettier-plugin-solidity/-/prettier-plugin-solidity-1.0.0-beta.2.tgz#312a429cd0026b2cbdbe0ad8ef30c4f8db1f74b2" + integrity sha512-afn8Q0E0fY2I26fbagiBo1XRe7Cv/vs3t/N5Xbndzjgln+TXrtNxgWzhdZcFoZLN92WrFbxqqDoP6Lk5L80Fmw== + dependencies: + "@solidity-parser/parser" "^0.10.1" + dir-to-object "^2.0.0" + emoji-regex "^9.0.0" + escape-string-regexp "^4.0.0" + prettier "^2.0.5" + semver "^7.3.2" + solidity-comments-extractor "^0.0.4" + string-width "^4.2.0" + prettier@^1.14.2: version "1.19.1" resolved "https://registry.yarnpkg.com/prettier/-/prettier-1.19.1.tgz#f7d7f5ff8a9cd872a7be4ca142095956a60797cb" integrity sha512-s7PoyDv/II1ObgQunCbB9PdLmUcBZcnWOcxDh7O0N/UwDEsHyqkW+Qh28jW+mVuCdx7gLB0BotYI1Y6uI9iyew== +prettier@^2.0.5, prettier@^2.1.2, prettier@^2.2.1: + version "2.2.1" + resolved "https://registry.yarnpkg.com/prettier/-/prettier-2.2.1.tgz#795a1a78dd52f073da0cd42b21f9c91381923ff5" + integrity sha512-PqyhM2yCjg/oKkFPtTGUojv7gnZAoG80ttl45O6x2Ug/rMJw4wcc9k6aaf2hibP7BGVCCM33gZoGjyvt9mm16Q== + private@^0.1.6, private@^0.1.8: version "0.1.8" resolved "https://registry.yarnpkg.com/private/-/private-0.1.8.tgz#2381edb3689f7a53d653190060fcf822d2f368ff" @@ -7722,6 +8084,11 @@ process-nextick-args@~2.0.0: resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-2.0.1.tgz#7820d9b16120cc55ca9ae7792680ae7dba6d7fe2" integrity sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag== +process@^0.11.10: + version "0.11.10" + resolved "https://registry.yarnpkg.com/process/-/process-0.11.10.tgz#7332300e840161bda3e69a1d1d91a7d4bc16f182" + integrity sha1-czIwDoQBYb2j5podHZGn1LwW8YI= + process@~0.5.1: version "0.5.2" resolved "https://registry.yarnpkg.com/process/-/process-0.5.2.tgz#1638d8a8e34c2f440a91db95ab9aeb677fc185cf" @@ -8009,12 +8376,12 @@ readdirp@~3.2.0: dependencies: picomatch "^2.0.4" -readdirp@~3.3.0: - version "3.3.0" - resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-3.3.0.tgz#984458d13a1e42e2e9f5841b129e162f369aff17" - integrity sha512-zz0pAkSPOXXm1viEwygWIPSPkcBYjW1xU5j/JBh5t9bGCJwa6f9+BJa6VaB2g+b55yVrmXzqkyLf4xaWYM0IkQ== +readdirp@~3.4.0: + version "3.4.0" + resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-3.4.0.tgz#9fdccdf9e9155805449221ac645e8303ab5b9ada" + integrity sha512-0xe001vZBnJEK+uKcj8qOhyAKPzIT+gStxWr3LCB0DwcXR5NZJ3IaC+yGnHCYzB/S7ov3m3EEbZI2zeNvX+hGQ== dependencies: - picomatch "^2.0.7" + picomatch "^2.2.1" rechoir@^0.6.2: version "0.6.2" @@ -8447,20 +8814,20 @@ secp256k1@^3.0.1: safe-buffer "^5.1.2" secp256k1@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/secp256k1/-/secp256k1-4.0.1.tgz#b9570ca26ace9e74c3171512bba253da9c0b6d60" - integrity sha512-iGRjbGAKfXMqhtdkkuNxsgJQfJO8Oo78Rm7DAvsG3XKngq+nJIOGqrCSXcQqIVsmCj0wFanE5uTKFxV3T9j2wg== + version "4.0.2" + resolved "https://registry.yarnpkg.com/secp256k1/-/secp256k1-4.0.2.tgz#15dd57d0f0b9fdb54ac1fa1694f40e5e9a54f4a1" + integrity sha512-UDar4sKvWAksIlfX3xIaQReADn+WFnHvbVujpcbr+9Sf/69odMwy2MUsz5CKLQgX9nsIyrjuxL2imVyoNHa3fg== dependencies: elliptic "^6.5.2" node-addon-api "^2.0.0" node-gyp-build "^4.2.0" seek-bzip@^1.0.5: - version "1.0.5" - resolved "https://registry.yarnpkg.com/seek-bzip/-/seek-bzip-1.0.5.tgz#cfe917cb3d274bcffac792758af53173eb1fabdc" - integrity sha1-z+kXyz0nS8/6x5J1ivUxc+sfq9w= + version "1.0.6" + resolved "https://registry.yarnpkg.com/seek-bzip/-/seek-bzip-1.0.6.tgz#35c4171f55a680916b52a07859ecf3b5857f21c4" + integrity sha512-e1QtP3YL5tWww8uKaOCQ18UxIT2laNBXHjV/S2WYCiK4udiv8lkG89KRIoCjUagnAmCBurjF4zEVX2ByBbnCjQ== dependencies: - commander "~2.8.1" + commander "^2.8.1" semaphore@>=1.0.1, semaphore@^1.0.3, semaphore@^1.1.0: version "1.1.0" @@ -8482,6 +8849,13 @@ semver@^6.2.0, semver@^6.3.0: resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.0.tgz#ee0a64c8af5e8ceea67687b133761e1becbd1d3d" integrity sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw== +semver@^7.3.2: + version "7.3.4" + resolved "https://registry.yarnpkg.com/semver/-/semver-7.3.4.tgz#27aaa7d2e4ca76452f98d3add093a72c943edc97" + integrity sha512-tCfb2WLjqFAtXn4KEdxIhalnRtoKFN7nAwj0B3ZXCbQloV2tq5eDbcTmT68JJD3nRJq24/XgxtQKFIpQdtvmVw== + dependencies: + lru-cache "^6.0.0" + semver@~5.4.1: version "5.4.1" resolved "https://registry.yarnpkg.com/semver/-/semver-5.4.1.tgz#e059c09d8571f0540823733433505d3a2f00b18e" @@ -8506,10 +8880,12 @@ send@0.17.1: range-parser "~1.2.1" statuses "~1.5.0" -serialize-javascript@3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/serialize-javascript/-/serialize-javascript-3.0.0.tgz#492e489a2d77b7b804ad391a5f5d97870952548e" - integrity sha512-skZcHYw2vEX4bw90nAr2iTTsz6x2SrHEnfxgKYmZlvJYBEZrvbKtobJWlQ20zczKb3bsHHXXTYt48zBA7ni9cw== +serialize-javascript@4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/serialize-javascript/-/serialize-javascript-4.0.0.tgz#b525e1238489a5ecfc42afacc3fe99e666f4b1aa" + integrity sha512-GaNA54380uFefWghODBWEGisLZFj00nS5ACs6yHa9nLqlLpVLO8ChDGeKRjZnV4Nh4n0Qi7nhYZD/9fCPzEqkw== + dependencies: + randombytes "^2.1.0" serve-static@1.14.1: version "1.14.1" @@ -8692,10 +9068,22 @@ solc@^0.6.0: semver "^5.5.0" tmp "0.0.33" +solhint-plugin-prettier@^0.0.5: + version "0.0.5" + resolved "https://registry.yarnpkg.com/solhint-plugin-prettier/-/solhint-plugin-prettier-0.0.5.tgz#e3b22800ba435cd640a9eca805a7f8bc3e3e6a6b" + integrity sha512-7jmWcnVshIrO2FFinIvDQmhQpfpS2rRRn3RejiYgnjIE68xO2bvrYvjqVNfrio4xH9ghOqn83tKuTzLjEbmGIA== + dependencies: + prettier-linter-helpers "^1.0.0" + solidity-ast@^0.4.4: - version "0.4.4" - resolved "https://registry.yarnpkg.com/solidity-ast/-/solidity-ast-0.4.4.tgz#50bfcf493d4dc1cb00d0c3414d0caa6da99c6f00" - integrity sha512-mSU95VtoTWicTlh39YAW2dLfGwYWjJ2acf5bZhE38SmnhENXrrGrxJfsc1fbul+puYqfQ4Pih9YBj+zwp9OeFg== + version "0.4.16" + resolved "https://registry.yarnpkg.com/solidity-ast/-/solidity-ast-0.4.16.tgz#2873d0c8dac2835bf95646652794d563419cb95e" + integrity sha512-CBPH6nfsOA/1AmjGLWrYLFZNWuZHWZXUCeJ6YaXR5ogLqVmMD1Lzkt67b1GydKbCS3sd6A25gqAvJ8VEFOVy1g== + +solidity-comments-extractor@^0.0.4: + version "0.0.4" + resolved "https://registry.yarnpkg.com/solidity-comments-extractor/-/solidity-comments-extractor-0.0.4.tgz#ce420aef23641ffd0131c7d80ba85b6e1e42147e" + integrity sha512-58glBODwXIKMaQ7rfcJOrWtFQMMOK28tJ0/LcB5Xhu7WtAxk4UX2fpgKPuaL41XjMp/y0gAa1MTLqk018wuSzA== solidity-coverage@^0.7.9: version "0.7.9" @@ -8905,20 +9293,20 @@ string.prototype.trim@~1.2.1: function-bind "^1.1.1" string.prototype.trimend@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/string.prototype.trimend/-/string.prototype.trimend-1.0.1.tgz#85812a6b847ac002270f5808146064c995fb6913" - integrity sha512-LRPxFUaTtpqYsTeNKaFOw3R4bxIzWOnbQ837QfBylo8jIxtcbK/A/sMV7Q+OAV/vWo+7s25pOE10KYSjaSO06g== + version "1.0.3" + resolved "https://registry.yarnpkg.com/string.prototype.trimend/-/string.prototype.trimend-1.0.3.tgz#a22bd53cca5c7cf44d7c9d5c732118873d6cd18b" + integrity sha512-ayH0pB+uf0U28CtjlLvL7NaohvR1amUvVZk+y3DYb0Ey2PUV5zPkkKy9+U1ndVEIXO8hNg18eIv9Jntbii+dKw== dependencies: + call-bind "^1.0.0" define-properties "^1.1.3" - es-abstract "^1.17.5" string.prototype.trimstart@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/string.prototype.trimstart/-/string.prototype.trimstart-1.0.1.tgz#14af6d9f34b053f7cfc89b72f8f2ee14b9039a54" - integrity sha512-XxZn+QpvrBI1FOcg6dIpxUPgWCPuNXvMD72aaRaUQv1eD4e/Qy8i/hFTe0BUmD60p/QA6bh1avmuPTfNjqVWRw== + version "1.0.3" + resolved "https://registry.yarnpkg.com/string.prototype.trimstart/-/string.prototype.trimstart-1.0.3.tgz#9b4cb590e123bb36564401d59824298de50fd5aa" + integrity sha512-oBIBUy5lea5tt0ovtOFiEQaBkoBBkyJhZXzJYrSmDo5IUUqbOPvVezuRs/agBIdZ2p2Eo1FD6bD9USyBLfl3xg== dependencies: + call-bind "^1.0.0" define-properties "^1.1.3" - es-abstract "^1.17.5" string_decoder@^1.1.1: version "1.3.0" @@ -9035,7 +9423,7 @@ supports-color@6.0.0: dependencies: has-flag "^3.0.0" -supports-color@7.1.0, supports-color@^7.1.0: +supports-color@7.1.0: version "7.1.0" resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-7.1.0.tgz#68e32591df73e25ad1c4b49108a2ec507962bfd1" integrity sha512-oRSIpR8pxT1Wr2FquTNnGet79b3BWljqOuoW/h4oBhxJ/HUbX5nX6JSruTkvXDCFMwDPvsaTTbvMLKZWSy0R5g== @@ -9061,6 +9449,13 @@ supports-color@^5.3.0: dependencies: has-flag "^3.0.0" +supports-color@^7.1.0: + version "7.2.0" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-7.2.0.tgz#1b7dcdcb32b8138801b3e478ba6a51caa89648da" + integrity sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw== + dependencies: + has-flag "^4.0.0" + swarm-js@0.1.39: version "0.1.39" resolved "https://registry.yarnpkg.com/swarm-js/-/swarm-js-0.1.39.tgz#79becb07f291d4b2a178c50fee7aa6e10342c0e8" @@ -9426,13 +9821,13 @@ truffle-security@^1.7.3: tiny-async-pool "^1.0.4" uuid "^3.3.3" -truffle@^5.1.34: - version "5.1.34" - resolved "https://registry.yarnpkg.com/truffle/-/truffle-5.1.34.tgz#dfc311142a6447137cb18abfbb2722dce65dfd62" - integrity sha512-Z+EWLI8TOqRbPOu7PhhdFZ0EypIf+1wA6Z9UPKx2LMjX9uQzCl4e+d20Qvfz9uD/2C//pJlvXbyXu9LuYeumgQ== +truffle@^5.1.58: + version "5.1.58" + resolved "https://registry.yarnpkg.com/truffle/-/truffle-5.1.58.tgz#3202bc080ef71c811fe9181bfc47fff944afab62" + integrity sha512-BnMSq9+0vUj6B8OODs/U/cV7MiyNrKOKmeO1fhn2LOvN6XpOd06Qitw0V15lNxlCL+datx2WEZ9AnYql689bnQ== dependencies: app-module-path "^2.2.0" - mocha "8.0.1" + mocha "8.1.2" original-require "1.0.1" try-require@^1.2.1: @@ -9445,10 +9840,10 @@ ts-essentials@^1.0.0: resolved "https://registry.yarnpkg.com/ts-essentials/-/ts-essentials-1.0.4.tgz#ce3b5dade5f5d97cf69889c11bf7d2da8555b15a" integrity sha512-q3N1xS4vZpRouhYHDPwO0bDW3EZ6SK9CrrDHxi/D6BPReSjpVgWIOpLS2o0gSBZm+7q/wyKp6RVM1AeeW7uyfQ== -ts-essentials@^6.0.3: - version "6.0.7" - resolved "https://registry.yarnpkg.com/ts-essentials/-/ts-essentials-6.0.7.tgz#5f4880911b7581a873783740ce8b94da163d18a6" - integrity sha512-2E4HIIj4tQJlIHuATRHayv0EfMGK3ris/GRk1E3CFnsZzeNV+hUmelbaTZHLtXaZppM5oLhHRtO04gINC4Jusw== +ts-essentials@^7.0.1: + version "7.0.1" + resolved "https://registry.yarnpkg.com/ts-essentials/-/ts-essentials-7.0.1.tgz#d205508cae0cdadfb73c89503140cf2228389e2d" + integrity sha512-8lwh3QJtIc1UWhkQtr9XuksXu3O0YQdEE5g79guDfhCaU1FWTDIEDZ1ZSx4HTHUmlJZ8L812j3BZQ4a0aOUkSA== ts-generator@^0.0.8: version "0.0.8" @@ -9465,6 +9860,21 @@ ts-generator@^0.0.8: resolve "^1.8.1" ts-essentials "^1.0.0" +ts-generator@^0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/ts-generator/-/ts-generator-0.1.1.tgz#af46f2fb88a6db1f9785977e9590e7bcd79220ab" + integrity sha512-N+ahhZxTLYu1HNTQetwWcx3so8hcYbkKBHTr4b4/YgObFTIKkOSSsaa+nal12w8mfrJAyzJfETXawbNjSfP2gQ== + dependencies: + "@types/mkdirp" "^0.5.2" + "@types/prettier" "^2.1.1" + "@types/resolve" "^0.0.8" + chalk "^2.4.1" + glob "^7.1.2" + mkdirp "^0.5.1" + prettier "^2.1.2" + resolve "^1.8.1" + ts-essentials "^1.0.0" + ts-node@^8.10.2: version "8.10.2" resolved "https://registry.yarnpkg.com/ts-node/-/ts-node-8.10.2.tgz#eee03764633b1234ddd37f8db9ec10b75ec7fb8d" @@ -9529,9 +9939,9 @@ type@^1.0.1: integrity sha512-+5nt5AAniqsCnu2cEQQdpzCAh33kVx8n0VoFidKpB1dVVLAN/F+bgVOqOJqOnEnrhp222clB5p3vUlD+1QAnfg== type@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/type/-/type-2.0.0.tgz#5f16ff6ef2eb44f260494dae271033b29c09a9c3" - integrity sha512-KBt58xCHry4Cejnc2ISQAF7QY+ORngsWfxezO68+12hKV6lQY8P/psIkcbjeHWn7MqcgciWJyCCevFMJdIXpow== + version "2.1.0" + resolved "https://registry.yarnpkg.com/type/-/type-2.1.0.tgz#9bdc22c648cf8cf86dd23d32336a41cfb6475e3f" + integrity sha512-G9absDWvhAWCV2gmF1zKud3OyC61nZDwWvBL2DApaVFogI07CprggiQAOOjvp2NRjYWFzPyu7vwtDrQFq8jeSA== typechain-target-truffle@^1.0.1: version "1.0.2" @@ -9560,18 +9970,18 @@ typechain@^1.0.3: lodash "^4.17.15" ts-generator "^0.0.8" -typechain@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/typechain/-/typechain-2.0.0.tgz#62143b48cdf8f95a777f1b76617af077b2d44eee" - integrity sha512-O+hsAUwtBpqCfoq46Grm52OEdm0GBEu78LxrEzkkGdwUdCoCZpNb2HPzPoNB1MXiRnNhEOGMFyf05UbT2/bUEw== +typechain@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/typechain/-/typechain-4.0.1.tgz#b40eaf5ede15588d97a4b9a5f85120f7ea1cf262" + integrity sha512-H/1VpRmplp1qhCTVLU9PCgzyVCQ7Lth7YvaaI1hTvT31IpWnLLNpDpQD4vXJGr26T9BsZ0ZIceOwieAbcoywXw== dependencies: command-line-args "^4.0.7" debug "^4.1.1" fs-extra "^7.0.0" js-sha3 "^0.8.0" lodash "^4.17.15" - ts-essentials "^6.0.3" - ts-generator "^0.0.8" + ts-essentials "^7.0.1" + ts-generator "^0.1.1" typedarray-to-buffer@^3.1.5: version "3.1.5" @@ -9618,7 +10028,12 @@ underscore@1.9.1: resolved "https://registry.yarnpkg.com/underscore/-/underscore-1.9.1.tgz#06dce34a0e68a7babc29b365b8e74b8925203961" integrity sha512-5/4etnCkd9c8gwgowi5/om/mYO5ajCaOgdzj/oW+0eQV9WxKBDZw5+ycmKmeaTXjInS/W0BzpGLo2xR2aBwZdg== -underscore@^1.8.3, underscore@^1.9.1: +underscore@^1.8.3: + version "1.12.0" + resolved "https://registry.yarnpkg.com/underscore/-/underscore-1.12.0.tgz#4814940551fc80587cef7840d1ebb0f16453be97" + integrity sha512-21rQzss/XPMjolTiIezSu3JAjgagXKROtNrYFEOWK109qY1Uv2tVjPTZ1ci2HgvQDA16gHYSthQIJfB+XId/rQ== + +underscore@^1.9.1: version "1.10.2" resolved "https://registry.yarnpkg.com/underscore/-/underscore-1.10.2.tgz#73d6aa3668f3188e4adb0f1943bd12cfd7efaaaf" integrity sha512-N4P+Q/BuyuEKFJ43B9gYuOj4TQUHXX+j2FqguVOpjkssLUUrnJofCcBccJSCoeturDoZU6GorDTHSvUDlSQbTg== @@ -9654,9 +10069,9 @@ unpipe@1.0.0, unpipe@~1.0.0: integrity sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw= uri-js@^4.2.2: - version "4.2.2" - resolved "https://registry.yarnpkg.com/uri-js/-/uri-js-4.2.2.tgz#94c540e1ff772956e2299507c010aea6c8838eb0" - integrity sha512-KY9Frmirql91X2Qgjry0Wd4Y+YTdrdZheS8TFwvkbLWf/G5KNJDCh6pKL5OZctEW4+0Baa5idK2ZQuELRwPznQ== + version "4.4.0" + resolved "https://registry.yarnpkg.com/uri-js/-/uri-js-4.4.0.tgz#aa714261de793e8a82347a7bcc9ce74e86f28602" + integrity sha512-B0yRTzYdUCCn9n+F4+Gh4yIDtMQcaJsmYBDsTSG8g/OejKBodLQ2IHfN3bM7jUsRXndopT7OIXWdYqc1fjmV6g== dependencies: punycode "^2.1.0" @@ -9689,6 +10104,13 @@ url-to-options@^1.0.1: resolved "https://registry.yarnpkg.com/url-to-options/-/url-to-options-1.0.1.tgz#1505a03a289a48cbd7a434efbaeec5055f5633a9" integrity sha1-FQWgOiiaSMvXpDTvuu7FBV9WM6k= +utf-8-validate@^5.0.2: + version "5.0.3" + resolved "https://registry.yarnpkg.com/utf-8-validate/-/utf-8-validate-5.0.3.tgz#3b64e418ad2ff829809025fdfef595eab2f03a27" + integrity sha512-jtJM6fpGv8C1SoH4PtG22pGto6x+Y8uPprW0tw3//gGFhDDTiuksgradgFN6yRayDP4SyZZa6ZMGHLIa17+M8A== + dependencies: + node-gyp-build "^4.2.0" + utf8@3.0.0, utf8@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/utf8/-/utf8-3.0.0.tgz#f052eed1364d696e769ef058b183df88c87f69d1" @@ -9709,6 +10131,18 @@ util.promisify@^1.0.0: has-symbols "^1.0.1" object.getownpropertydescriptors "^2.1.0" +util@^0.12.0: + version "0.12.3" + resolved "https://registry.yarnpkg.com/util/-/util-0.12.3.tgz#971bb0292d2cc0c892dab7c6a5d37c2bec707888" + integrity sha512-I8XkoQwE+fPQEhy9v012V+TSdH2kp9ts29i20TaaDUXsg7x/onePbhFJUExBfv/2ay1ZOp/Vsm3nDlmnFGSAog== + dependencies: + inherits "^2.0.3" + is-arguments "^1.0.4" + is-generator-function "^1.0.7" + is-typed-array "^1.1.3" + safe-buffer "^5.1.2" + which-typed-array "^1.1.2" + utils-merge@1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/utils-merge/-/utils-merge-1.0.1.tgz#9f95710f50a267947b2ccc124741c1028427e713" @@ -9743,9 +10177,9 @@ validate-npm-package-license@^3.0.1: spdx-expression-parse "^3.0.0" varint@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/varint/-/varint-5.0.0.tgz#d826b89f7490732fabc0c0ed693ed475dcb29ebf" - integrity sha1-2Ca4n3SQcy+rwMDtaT7Uddyynr8= + version "5.0.2" + resolved "https://registry.yarnpkg.com/varint/-/varint-5.0.2.tgz#5b47f8a947eb668b848e034dcfa87d0ff8a7f7a4" + integrity sha512-lKxKYG6H03yCZUpAGOPOsMcGxd1RHCu1iKvEHYDPmTyq2HueGhD73ssNBqqQWfvYs04G9iUFRvmAVLW20Jw6ow== vary@^1, vary@~1.1.2: version "1.1.2" @@ -9849,6 +10283,16 @@ web3-bzz@1.2.9: swarm-js "^0.1.40" underscore "1.9.1" +web3-bzz@1.3.1: + version "1.3.1" + resolved "https://registry.yarnpkg.com/web3-bzz/-/web3-bzz-1.3.1.tgz#c7e13e5fbbbe4634b0d883e5440069fc58e58044" + integrity sha512-MN726zFpFpwhs3NMC35diJGkwTVUj+8LM/VWqooGX/MOjgYzNrJ7Wr8EzxoaTCy87edYNBprtxBkd0HzzLmung== + dependencies: + "@types/node" "^12.12.6" + got "9.6.0" + swarm-js "^0.1.40" + underscore "1.9.1" + web3-core-helpers@1.2.1: version "1.2.1" resolved "https://registry.yarnpkg.com/web3-core-helpers/-/web3-core-helpers-1.2.1.tgz#f5f32d71c60a4a3bd14786118e633ce7ca6d5d0d" @@ -9894,6 +10338,15 @@ web3-core-helpers@1.2.9: web3-eth-iban "1.2.9" web3-utils "1.2.9" +web3-core-helpers@1.3.1: + version "1.3.1" + resolved "https://registry.yarnpkg.com/web3-core-helpers/-/web3-core-helpers-1.3.1.tgz#ffd6f47c1b54a8523f00760a8d713f44d0f97e97" + integrity sha512-tMVU0ScyQUJd/HFWfZrvGf+QmPCodPyKQw1gQ+n9We/H3vPPbUxDjNeYnd4BbYy5O9ox+0XG6i3+JlwiSkgDkA== + dependencies: + underscore "1.9.1" + web3-eth-iban "1.3.1" + web3-utils "1.3.1" + web3-core-method@1.2.1: version "1.2.1" resolved "https://registry.yarnpkg.com/web3-core-method/-/web3-core-method-1.2.1.tgz#9df1bafa2cd8be9d9937e01c6a47fc768d15d90a" @@ -9951,6 +10404,18 @@ web3-core-method@1.2.9: web3-core-subscriptions "1.2.9" web3-utils "1.2.9" +web3-core-method@1.3.1: + version "1.3.1" + resolved "https://registry.yarnpkg.com/web3-core-method/-/web3-core-method-1.3.1.tgz#c1d8bf1e2104a8d625c99caf94218ad2dc948c92" + integrity sha512-dA38tNVZWTxBFMlLFunLD5Az1AWRi5HqM+AtQrTIhxWCzg7rJSHuaYOZ6A5MHKGPWpdykLhzlna0SsNv5AVs8w== + dependencies: + "@ethersproject/transactions" "^5.0.0-beta.135" + underscore "1.9.1" + web3-core-helpers "1.3.1" + web3-core-promievent "1.3.1" + web3-core-subscriptions "1.3.1" + web3-utils "1.3.1" + web3-core-promievent@1.2.1: version "1.2.1" resolved "https://registry.yarnpkg.com/web3-core-promievent/-/web3-core-promievent-1.2.1.tgz#003e8a3eb82fb27b6164a6d5b9cad04acf733838" @@ -9989,6 +10454,13 @@ web3-core-promievent@1.2.9: dependencies: eventemitter3 "3.1.2" +web3-core-promievent@1.3.1: + version "1.3.1" + resolved "https://registry.yarnpkg.com/web3-core-promievent/-/web3-core-promievent-1.3.1.tgz#b4da4b34cd9681e22fcda25994d7629280a1e046" + integrity sha512-jGu7TkwUqIHlvWd72AlIRpsJqdHBQnHMeMktrows2148gg5PBPgpJ10cPFmCCzKT6lDOVh9B7pZMf9eckMDmiA== + dependencies: + eventemitter3 "4.0.4" + web3-core-requestmanager@1.2.1: version "1.2.1" resolved "https://registry.yarnpkg.com/web3-core-requestmanager/-/web3-core-requestmanager-1.2.1.tgz#fa2e2206c3d738db38db7c8fe9c107006f5c6e3d" @@ -10044,6 +10516,18 @@ web3-core-requestmanager@1.2.9: web3-providers-ipc "1.2.9" web3-providers-ws "1.2.9" +web3-core-requestmanager@1.3.1: + version "1.3.1" + resolved "https://registry.yarnpkg.com/web3-core-requestmanager/-/web3-core-requestmanager-1.3.1.tgz#6dd2b5161ba778dfffe68994a4accff2decc54fe" + integrity sha512-9WTaN2SoyJX1amRyTzX2FtbVXsyWBI2Wef2Q3gPiWaEo/VRVm3e4Bq8MwxNTUMIJMO8RLGHjtdgsoDKPwfL73Q== + dependencies: + underscore "1.9.1" + util "^0.12.0" + web3-core-helpers "1.3.1" + web3-providers-http "1.3.1" + web3-providers-ipc "1.3.1" + web3-providers-ws "1.3.1" + web3-core-subscriptions@1.2.1: version "1.2.1" resolved "https://registry.yarnpkg.com/web3-core-subscriptions/-/web3-core-subscriptions-1.2.1.tgz#8c2368a839d4eec1c01a4b5650bbeb82d0e4a099" @@ -10089,6 +10573,15 @@ web3-core-subscriptions@1.2.9: underscore "1.9.1" web3-core-helpers "1.2.9" +web3-core-subscriptions@1.3.1: + version "1.3.1" + resolved "https://registry.yarnpkg.com/web3-core-subscriptions/-/web3-core-subscriptions-1.3.1.tgz#be1103259f91b7fc7f4c6a867aa34dea70a636f7" + integrity sha512-eX3N5diKmrxshc6ZBZ8EJxxAhCxdYPbYXuF2EfgdIyHmxwmYqIVvKepzO8388Bx8JD3D0Id/pKE0dC/FnDIHTQ== + dependencies: + eventemitter3 "4.0.4" + underscore "1.9.1" + web3-core-helpers "1.3.1" + web3-core@1.2.1: version "1.2.1" resolved "https://registry.yarnpkg.com/web3-core/-/web3-core-1.2.1.tgz#7278b58fb6495065e73a77efbbce781a7fddf1a9" @@ -10149,6 +10642,19 @@ web3-core@1.2.9: web3-core-requestmanager "1.2.9" web3-utils "1.2.9" +web3-core@1.3.1: + version "1.3.1" + resolved "https://registry.yarnpkg.com/web3-core/-/web3-core-1.3.1.tgz#fb0fc5d952a7f3d580a7e6155d2f28be064e64cb" + integrity sha512-QlBwSyjl2pqYUBE7lH9PfLxa8j6AzzAtvLUqkgoaaFJYLP/+XavW1n6dhVCTq+U3L3eNc+bMp9GLjGDJNXMnGg== + dependencies: + "@types/bn.js" "^4.11.5" + "@types/node" "^12.12.6" + bignumber.js "^9.0.0" + web3-core-helpers "1.3.1" + web3-core-method "1.3.1" + web3-core-requestmanager "1.3.1" + web3-utils "1.3.1" + web3-eth-abi@1.2.1: version "1.2.1" resolved "https://registry.yarnpkg.com/web3-eth-abi/-/web3-eth-abi-1.2.1.tgz#9b915b1c9ebf82f70cca631147035d5419064689" @@ -10194,6 +10700,15 @@ web3-eth-abi@1.2.9: underscore "1.9.1" web3-utils "1.2.9" +web3-eth-abi@1.3.1: + version "1.3.1" + resolved "https://registry.yarnpkg.com/web3-eth-abi/-/web3-eth-abi-1.3.1.tgz#d60fe5f15c7a3a426c553fdaa4199d07f1ad899c" + integrity sha512-ds4aTeKDUEqTXgncAtxvcfMpPiei9ey7+s2ZZ+OazK2CK5jWhFiJuuj9Q68kOT+hID7E1oSDVsNmJWFD/7lbMw== + dependencies: + "@ethersproject/abi" "5.0.7" + underscore "1.9.1" + web3-utils "1.3.1" + web3-eth-accounts@1.2.1: version "1.2.1" resolved "https://registry.yarnpkg.com/web3-eth-accounts/-/web3-eth-accounts-1.2.1.tgz#2741a8ef337a7219d57959ac8bd118b9d68d63cf" @@ -10281,6 +10796,23 @@ web3-eth-accounts@1.2.9: web3-core-method "1.2.9" web3-utils "1.2.9" +web3-eth-accounts@1.3.1: + version "1.3.1" + resolved "https://registry.yarnpkg.com/web3-eth-accounts/-/web3-eth-accounts-1.3.1.tgz#63b247461f1ae0ae46f9a5d5aa896ea80237143e" + integrity sha512-wsV3/0Pbn5+pI8PiCD1CYw7I1dkQujcP//aJ+ZH8PoaHQoG6HnJ7nTp7foqa0r/X5lizImz/g5S8D76t3Z9tHA== + dependencies: + crypto-browserify "3.12.0" + eth-lib "0.2.8" + ethereumjs-common "^1.3.2" + ethereumjs-tx "^2.1.1" + scrypt-js "^3.0.1" + underscore "1.9.1" + uuid "3.3.2" + web3-core "1.3.1" + web3-core-helpers "1.3.1" + web3-core-method "1.3.1" + web3-utils "1.3.1" + web3-eth-contract@1.2.1: version "1.2.1" resolved "https://registry.yarnpkg.com/web3-eth-contract/-/web3-eth-contract-1.2.1.tgz#3542424f3d341386fd9ff65e78060b85ac0ea8c4" @@ -10355,6 +10887,21 @@ web3-eth-contract@1.2.9: web3-eth-abi "1.2.9" web3-utils "1.2.9" +web3-eth-contract@1.3.1: + version "1.3.1" + resolved "https://registry.yarnpkg.com/web3-eth-contract/-/web3-eth-contract-1.3.1.tgz#05cb77bd2a671c5480897d20de487f3bae82e113" + integrity sha512-cHu9X1iGrK+Zbrj4wYKwHI1BtVGn/9O0JRsZqd9qcFGLwwAmaCJYy0sDn7PKCKDSL3qB+MDILoyI7FaDTWWTHg== + dependencies: + "@types/bn.js" "^4.11.5" + underscore "1.9.1" + web3-core "1.3.1" + web3-core-helpers "1.3.1" + web3-core-method "1.3.1" + web3-core-promievent "1.3.1" + web3-core-subscriptions "1.3.1" + web3-eth-abi "1.3.1" + web3-utils "1.3.1" + web3-eth-ens@1.2.1: version "1.2.1" resolved "https://registry.yarnpkg.com/web3-eth-ens/-/web3-eth-ens-1.2.1.tgz#a0e52eee68c42a8b9865ceb04e5fb022c2d971d5" @@ -10427,6 +10974,21 @@ web3-eth-ens@1.2.9: web3-eth-contract "1.2.9" web3-utils "1.2.9" +web3-eth-ens@1.3.1: + version "1.3.1" + resolved "https://registry.yarnpkg.com/web3-eth-ens/-/web3-eth-ens-1.3.1.tgz#ccfd621ddc1fecb44096bc8e60689499a9eb4421" + integrity sha512-MUQvYgUYQ5gAwbZyHwI7y+NTT6j98qG3MVhGCUf58inF5Gxmn9OlLJRw8Tofgf0K87Tk9Kqw1/2QxUE4PEZMMA== + dependencies: + content-hash "^2.5.2" + eth-ens-namehash "2.0.8" + underscore "1.9.1" + web3-core "1.3.1" + web3-core-helpers "1.3.1" + web3-core-promievent "1.3.1" + web3-eth-abi "1.3.1" + web3-eth-contract "1.3.1" + web3-utils "1.3.1" + web3-eth-iban@1.2.1: version "1.2.1" resolved "https://registry.yarnpkg.com/web3-eth-iban/-/web3-eth-iban-1.2.1.tgz#2c3801718946bea24e9296993a975c80b5acf880" @@ -10467,6 +11029,14 @@ web3-eth-iban@1.2.9: bn.js "4.11.8" web3-utils "1.2.9" +web3-eth-iban@1.3.1: + version "1.3.1" + resolved "https://registry.yarnpkg.com/web3-eth-iban/-/web3-eth-iban-1.3.1.tgz#4351e1a658efa5f3218357f0a38d6d8cad82481e" + integrity sha512-RCQLfR9Z+DNfpw7oUauYHg1HcVoEljzhwxKn3vi15gK0ssWnTwRGqUiIyVTeSb836G6oakOd5zh7XYqy7pn+nw== + dependencies: + bn.js "^4.11.9" + web3-utils "1.3.1" + web3-eth-personal@1.2.1: version "1.2.1" resolved "https://registry.yarnpkg.com/web3-eth-personal/-/web3-eth-personal-1.2.1.tgz#244e9911b7b482dc17c02f23a061a627c6e47faf" @@ -10526,6 +11096,18 @@ web3-eth-personal@1.2.9: web3-net "1.2.9" web3-utils "1.2.9" +web3-eth-personal@1.3.1: + version "1.3.1" + resolved "https://registry.yarnpkg.com/web3-eth-personal/-/web3-eth-personal-1.3.1.tgz#cfe8af01588870d195dabf0a8d9e34956fb8856d" + integrity sha512-/vZEQpXJfBfYoy9KT911ItfoscEfF0Q2j8tsXzC2xmmasSZ6YvAUuPhflVmAo0IHQSX9rmxq0q1p3sbnE3x2pQ== + dependencies: + "@types/node" "^12.12.6" + web3-core "1.3.1" + web3-core-helpers "1.3.1" + web3-core-method "1.3.1" + web3-net "1.3.1" + web3-utils "1.3.1" + web3-eth@1.2.1: version "1.2.1" resolved "https://registry.yarnpkg.com/web3-eth/-/web3-eth-1.2.1.tgz#b9989e2557c73a9e8ffdc107c6dafbe72c79c1b0" @@ -10621,6 +11203,25 @@ web3-eth@1.2.9: web3-net "1.2.9" web3-utils "1.2.9" +web3-eth@1.3.1: + version "1.3.1" + resolved "https://registry.yarnpkg.com/web3-eth/-/web3-eth-1.3.1.tgz#60ac4b58e5fd17b8dbbb8378abd63b02e8326727" + integrity sha512-e4iL8ovj0zNxzbv4LTHEv9VS03FxKlAZD+95MolwAqtVoUnKC2H9X6dli0w6eyXP0aKw+mwY0g0CWQHzqZvtXw== + dependencies: + underscore "1.9.1" + web3-core "1.3.1" + web3-core-helpers "1.3.1" + web3-core-method "1.3.1" + web3-core-subscriptions "1.3.1" + web3-eth-abi "1.3.1" + web3-eth-accounts "1.3.1" + web3-eth-contract "1.3.1" + web3-eth-ens "1.3.1" + web3-eth-iban "1.3.1" + web3-eth-personal "1.3.1" + web3-net "1.3.1" + web3-utils "1.3.1" + web3-net@1.2.1: version "1.2.1" resolved "https://registry.yarnpkg.com/web3-net/-/web3-net-1.2.1.tgz#edd249503315dd5ab4fa00220f6509d95bb7ab10" @@ -10666,6 +11267,15 @@ web3-net@1.2.9: web3-core-method "1.2.9" web3-utils "1.2.9" +web3-net@1.3.1: + version "1.3.1" + resolved "https://registry.yarnpkg.com/web3-net/-/web3-net-1.3.1.tgz#79374b1df37429b0839b83b0abc4440ac6181568" + integrity sha512-vuMMWMk+NWHlrNfszGp3qRjH/64eFLiNIwUi0kO8JXQ896SP3Ma0su5sBfSPxNCig047E9GQimrL9wvYAJSO5A== + dependencies: + web3-core "1.3.1" + web3-core-method "1.3.1" + web3-utils "1.3.1" + web3-providers-http@1.2.1: version "1.2.1" resolved "https://registry.yarnpkg.com/web3-providers-http/-/web3-providers-http-1.2.1.tgz#c93ea003a42e7b894556f7e19dd3540f947f5013" @@ -10706,6 +11316,14 @@ web3-providers-http@1.2.9: web3-core-helpers "1.2.9" xhr2-cookies "1.1.0" +web3-providers-http@1.3.1: + version "1.3.1" + resolved "https://registry.yarnpkg.com/web3-providers-http/-/web3-providers-http-1.3.1.tgz#becbea61706b2fa52e15aca6fe519ee108a8fab9" + integrity sha512-DOujG6Ts7/hAMj0PW5p9/1vwxAIr+1CJ6ZWHshtfOq1v1KnMphVTGOrjcTTUvPT33/DA/so2pgGoPMrgaEIIvQ== + dependencies: + web3-core-helpers "1.3.1" + xhr2-cookies "1.1.0" + web3-providers-ipc@1.2.1: version "1.2.1" resolved "https://registry.yarnpkg.com/web3-providers-ipc/-/web3-providers-ipc-1.2.1.tgz#017bfc687a8fc5398df2241eb98f135e3edd672c" @@ -10751,6 +11369,15 @@ web3-providers-ipc@1.2.9: underscore "1.9.1" web3-core-helpers "1.2.9" +web3-providers-ipc@1.3.1: + version "1.3.1" + resolved "https://registry.yarnpkg.com/web3-providers-ipc/-/web3-providers-ipc-1.3.1.tgz#3cb2572fc5286ab2f3117e0a2dce917816c3dedb" + integrity sha512-BNPscLbvwo+u/tYJrLvPnl/g/SQVSnqP/TjEsB033n4IXqTC4iZ9Of8EDmI0U6ds/9nwNqOBx3KsxbinL46UZA== + dependencies: + oboe "2.1.5" + underscore "1.9.1" + web3-core-helpers "1.3.1" + web3-providers-ws@1.2.1: version "1.2.1" resolved "https://registry.yarnpkg.com/web3-providers-ws/-/web3-providers-ws-1.2.1.tgz#2d941eaf3d5a8caa3214eff8dc16d96252b842cb" @@ -10798,6 +11425,16 @@ web3-providers-ws@1.2.9: web3-core-helpers "1.2.9" websocket "^1.0.31" +web3-providers-ws@1.3.1: + version "1.3.1" + resolved "https://registry.yarnpkg.com/web3-providers-ws/-/web3-providers-ws-1.3.1.tgz#a70140811d138a1a5cf3f0c39d11887c8e341c83" + integrity sha512-DAbVbiizv0Hr/bLKjyyKMHc/66ccVkudan3eRsf+R/PXWCqfXb7q6Lwodj4llvC047pEuLKR521ZKr5wbfk1KQ== + dependencies: + eventemitter3 "4.0.4" + underscore "1.9.1" + web3-core-helpers "1.3.1" + websocket "^1.0.32" + web3-shh@1.2.1: version "1.2.1" resolved "https://registry.yarnpkg.com/web3-shh/-/web3-shh-1.2.1.tgz#4460e3c1e07faf73ddec24ccd00da46f89152b0c" @@ -10848,6 +11485,16 @@ web3-shh@1.2.9: web3-core-subscriptions "1.2.9" web3-net "1.2.9" +web3-shh@1.3.1: + version "1.3.1" + resolved "https://registry.yarnpkg.com/web3-shh/-/web3-shh-1.3.1.tgz#42294d684358c22aa48616cb9a3eb2e9c1e6362f" + integrity sha512-57FTQvOW1Zm3wqfZpIEqL4apEQIR5JAxjqA4RM4eL0jbdr+Zj5Y4J93xisaEVl6/jMtZNlsqYKTVswx8mHu1xw== + dependencies: + web3-core "1.3.1" + web3-core-method "1.3.1" + web3-core-subscriptions "1.3.1" + web3-net "1.3.1" + web3-utils@1.2.1: version "1.2.1" resolved "https://registry.yarnpkg.com/web3-utils/-/web3-utils-1.2.1.tgz#21466e38291551de0ab34558de21512ac4274534" @@ -10917,6 +11564,20 @@ web3-utils@1.2.9, web3-utils@^1.2.1: underscore "1.9.1" utf8 "3.0.0" +web3-utils@1.3.1: + version "1.3.1" + resolved "https://registry.yarnpkg.com/web3-utils/-/web3-utils-1.3.1.tgz#9aa880dd8c9463fe5c099107889f86a085370c2e" + integrity sha512-9gPwFm8SXtIJuzdrZ37PRlalu40fufXxo+H2PiCwaO6RpKGAvlUlWU0qQbyToFNXg7W2H8djEgoAVac8NLMCKQ== + dependencies: + bn.js "^4.11.9" + eth-lib "0.2.8" + ethereum-bloom-filters "^1.0.6" + ethjs-unit "0.1.6" + number-to-bn "1.7.0" + randombytes "^2.1.0" + underscore "1.9.1" + utf8 "3.0.0" + web3@*: version "1.2.11" resolved "https://registry.yarnpkg.com/web3/-/web3-1.2.11.tgz#50f458b2e8b11aa37302071c170ed61cff332975" @@ -10971,7 +11632,7 @@ web3@1.2.6: web3-shh "1.2.6" web3-utils "1.2.6" -web3@^1.0.0-beta.34, web3@^1.2.1, web3@^1.2.4: +web3@1.2.9, web3@^1.2.1, web3@^1.2.4: version "1.2.9" resolved "https://registry.yarnpkg.com/web3/-/web3-1.2.9.tgz#cbcf1c0fba5e213a6dfb1f2c1f4b37062e4ce337" integrity sha512-Mo5aBRm0JrcNpN/g4VOrDzudymfOnHRC3s2VarhYxRA8aWgF5rnhQ0ziySaugpic1gksbXPe105pUWyRqw8HUA== @@ -10984,6 +11645,19 @@ web3@^1.0.0-beta.34, web3@^1.2.1, web3@^1.2.4: web3-shh "1.2.9" web3-utils "1.2.9" +web3@^1.0.0-beta.34: + version "1.3.1" + resolved "https://registry.yarnpkg.com/web3/-/web3-1.3.1.tgz#f780138c92ae3c42ea45e1a3c6ae8844e0aa5054" + integrity sha512-lDJwOLSRWHYwhPy4h5TNgBRJ/lED7lWXyVOXHCHcEC8ai3coBNdgEXWBu/GGYbZMsS89EoUOJ14j3Ufi4dUkog== + dependencies: + web3-bzz "1.3.1" + web3-core "1.3.1" + web3-eth "1.3.1" + web3-eth-personal "1.3.1" + web3-net "1.3.1" + web3-shh "1.3.1" + web3-utils "1.3.1" + websocket-driver@>=0.5.1: version "0.7.4" resolved "https://registry.yarnpkg.com/websocket-driver/-/websocket-driver-0.7.4.tgz#89ad5295bbf64b480abcba31e4953aca706f5760" @@ -10998,15 +11672,16 @@ websocket-extensions@>=0.1.1: resolved "https://registry.yarnpkg.com/websocket-extensions/-/websocket-extensions-0.1.4.tgz#7f8473bc839dfd87608adb95d7eb075211578a42" integrity sha512-OqedPIGOfsDlo31UNwYbCFMSaO9m9G/0faIHj5/dZFDMFqPTcx6UwqyOy3COEaEOg/9VsGIpdqn62W5KhoKSpg== -websocket@^1.0.31: - version "1.0.31" - resolved "https://registry.yarnpkg.com/websocket/-/websocket-1.0.31.tgz#e5d0f16c3340ed87670e489ecae6144c79358730" - integrity sha512-VAouplvGKPiKFDTeCCO65vYHsyay8DqoBSlzIO3fayrfOgU94lQN5a1uWVnFrMLceTJw/+fQXR5PGbUVRaHshQ== +websocket@^1.0.31, websocket@^1.0.32: + version "1.0.33" + resolved "https://registry.yarnpkg.com/websocket/-/websocket-1.0.33.tgz#407f763fc58e74a3fa41ca3ae5d78d3f5e3b82a5" + integrity sha512-XwNqM2rN5eh3G2CUQE3OHZj+0xfdH42+OFK6LdC2yqiC0YU8e5UK0nYre220T0IyyN031V/XOvtHvXozvJYFWA== dependencies: + bufferutil "^4.0.1" debug "^2.2.0" es5-ext "^0.10.50" - nan "^2.14.0" typedarray-to-buffer "^3.1.5" + utf-8-validate "^5.0.2" yaeti "^0.0.6" "websocket@github:web3-js/WebSocket-Node#polyfill/globalThis": @@ -11034,6 +11709,19 @@ which-module@^2.0.0: resolved "https://registry.yarnpkg.com/which-module/-/which-module-2.0.0.tgz#d9ef07dce77b9902b8a3a8fa4b31c3e3f7e6e87a" integrity sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho= +which-typed-array@^1.1.2: + version "1.1.4" + resolved "https://registry.yarnpkg.com/which-typed-array/-/which-typed-array-1.1.4.tgz#8fcb7d3ee5adf2d771066fba7cf37e32fe8711ff" + integrity sha512-49E0SpUe90cjpoc7BOJwyPHRqSAd12c10Qm2amdEZrJPCY2NDxaW01zHITrem+rnETY3dwrbH3UUrUwagfCYDA== + dependencies: + available-typed-arrays "^1.0.2" + call-bind "^1.0.0" + es-abstract "^1.18.0-next.1" + foreach "^2.0.5" + function-bind "^1.1.1" + has-symbols "^1.0.1" + is-typed-array "^1.1.3" + which@1.3.1, which@^1.1.1, which@^1.2.14, which@^1.2.9, which@^1.3.1: version "1.3.1" resolved "https://registry.yarnpkg.com/which/-/which-1.3.1.tgz#a45043d54f5805316da8d62f9f50918d3da70b0a" @@ -11170,7 +11858,17 @@ xhr2-cookies@1.1.0: dependencies: cookiejar "^2.1.1" -xhr@^2.0.4, xhr@^2.2.0, xhr@^2.3.3: +xhr@^2.0.4, xhr@^2.3.3: + version "2.6.0" + resolved "https://registry.yarnpkg.com/xhr/-/xhr-2.6.0.tgz#b69d4395e792b4173d6b7df077f0fc5e4e2b249d" + integrity sha512-/eCGLb5rxjx5e3mF1A7s+pLlR6CGyqWN91fv1JgER5mVWg1MZmlhBvy9kjcsOdRk8RrIujotWyJamfyrp+WIcA== + dependencies: + global "~4.4.0" + is-function "^1.0.1" + parse-headers "^2.0.0" + xtend "^4.0.0" + +xhr@^2.2.0: version "2.5.0" resolved "https://registry.yarnpkg.com/xhr/-/xhr-2.5.0.tgz#bed8d1676d5ca36108667692b74b316c496e49dd" integrity sha512-4nlO/14t3BNUZRXIXfXe+3N6w3s1KoxcJUUURctd64BLRe67E4gRwp4PjywtDY72fXpZ1y6Ch0VZQRY/gMPzzQ== @@ -11203,9 +11901,9 @@ y18n@^3.2.1: integrity sha1-bRX7qITAhnnA136I53WegR4H+kE= y18n@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/y18n/-/y18n-4.0.0.tgz#95ef94f85ecc81d007c264e190a120f0a3c8566b" - integrity sha512-r9S/ZyXu/Xu9q1tYlpsLIsa3EeLXXk0VwlxqTcFRfg9EhMW+17kbt9G0NrgCmhGb5vT2hyhJZLfDGx+7+5Uj/w== + version "4.0.1" + resolved "https://registry.yarnpkg.com/y18n/-/y18n-4.0.1.tgz#8db2b83c31c5d75099bb890b23f3094891e247d4" + integrity sha512-wNcy4NvjMYL8gogWWYAO7ZFWFfHcbdbE57tZO8e4cbpj8tfUcwrwqSl3ad8HxpYWCdXcJUCeKKZS62Av1affwQ== yaassertion@^1.0.0: version "1.0.2" @@ -11222,6 +11920,11 @@ yallist@^3.0.0, yallist@^3.0.2, yallist@^3.0.3: resolved "https://registry.yarnpkg.com/yallist/-/yallist-3.1.1.tgz#dbb7daf9bfd8bac9ab45ebf602b8cbad0d5d08fd" integrity sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g== +yallist@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/yallist/-/yallist-4.0.0.tgz#9bb92790d9c0effec63be73519e11a35019a3a72" + integrity sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A== + yargs-parser@13.1.2, yargs-parser@^13.1.0, yargs-parser@^13.1.2: version "13.1.2" resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-13.1.2.tgz#130f09702ebaeef2650d54ce6e3e5706f7a4fb38" @@ -11230,6 +11933,14 @@ yargs-parser@13.1.2, yargs-parser@^13.1.0, yargs-parser@^13.1.2: camelcase "^5.0.0" decamelize "^1.2.0" +yargs-parser@^15.0.1: + version "15.0.1" + resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-15.0.1.tgz#54786af40b820dcb2fb8025b11b4d659d76323b3" + integrity sha512-0OAMV2mAZQrs3FkNpDQcBk1x5HXb8X4twADss4S0Iuk+2dGnLOE/fRHrsYm542GduMveyA77OF4wrNJuanRCWw== + dependencies: + camelcase "^5.0.0" + decamelize "^1.2.0" + yargs-parser@^18.1.2: version "18.1.3" resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-18.1.3.tgz#be68c4975c6b2abf469236b0c870362fab09a7b0" @@ -11255,6 +11966,17 @@ yargs-unparser@1.6.0: lodash "^4.17.15" yargs "^13.3.0" +yargs-unparser@1.6.1: + version "1.6.1" + resolved "https://registry.yarnpkg.com/yargs-unparser/-/yargs-unparser-1.6.1.tgz#bd4b0ee05b4c94d058929c32cb09e3fce71d3c5f" + integrity sha512-qZV14lK9MWsGCmcr7u5oXGH0dbGqZAIxTDrWXZDo5zUr6b6iUmelNKO6x6R1dQT24AH3LgRxJpr8meWy2unolA== + dependencies: + camelcase "^5.3.1" + decamelize "^1.2.0" + flat "^4.1.0" + is-plain-obj "^1.1.0" + yargs "^14.2.3" + yargs@13.2.4: version "13.2.4" resolved "https://registry.yarnpkg.com/yargs/-/yargs-13.2.4.tgz#0b562b794016eb9651b98bd37acf364aa5d6dc83" @@ -11306,6 +12028,23 @@ yargs@4.6.0: y18n "^3.2.1" yargs-parser "^2.4.0" +yargs@^14.2.3: + version "14.2.3" + resolved "https://registry.yarnpkg.com/yargs/-/yargs-14.2.3.tgz#1a1c3edced1afb2a2fea33604bc6d1d8d688a414" + integrity sha512-ZbotRWhF+lkjijC/VhmOT9wSgyBQ7+zr13+YLkhfsSiTriYsMzkTUFP18pFhWwBeMa5gUc1MzbhrO6/VB7c9Xg== + dependencies: + cliui "^5.0.0" + decamelize "^1.2.0" + find-up "^3.0.0" + get-caller-file "^2.0.1" + require-directory "^2.1.1" + require-main-filename "^2.0.0" + set-blocking "^2.0.0" + string-width "^3.0.0" + which-module "^2.0.0" + y18n "^4.0.0" + yargs-parser "^15.0.1" + yargs@^15.3.1: version "15.4.1" resolved "https://registry.yarnpkg.com/yargs/-/yargs-15.4.1.tgz#0d87a16de01aee9d8bec2bfbf74f67851730f4f8" @@ -11335,3 +12074,8 @@ yn@3.1.1: version "3.1.1" resolved "https://registry.yarnpkg.com/yn/-/yn-3.1.1.tgz#1e87401a09d767c1d5eab26a6e4c185182d2eb50" integrity sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q== + +yocto-queue@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/yocto-queue/-/yocto-queue-0.1.0.tgz#0294eb3dee05028d31ee1a5fa2c556a6aaf10a1b" + integrity sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==