From 2659fdffc1778bfb21ef8cb31555345fc952dbc9 Mon Sep 17 00:00:00 2001 From: Riccardo Persiani Date: Wed, 23 Apr 2025 13:26:14 +0200 Subject: [PATCH 01/24] Support Delayed Token Update (#40) * feat: support delayed token update * feat: support slashing percentage --- README.md | 22 +- package.json | 2 +- scripts/DeployProxy.s.sol | 5 + src/core/SSVBasedApps.sol | 53 ++- src/core/interfaces/IBasedAppManager.sol | 16 +- src/core/interfaces/ICore.sol | 16 +- src/core/interfaces/IProtocolManager.sol | 2 + src/core/interfaces/IStrategyManager.sol | 4 +- src/core/libraries/CoreStorageLib.sol | 17 +- src/core/libraries/ProtocolStorageLib.sol | 1 + src/core/modules/BasedAppsManager.sol | 61 +-- src/core/modules/ProtocolManager.sol | 9 + src/core/modules/StrategyManager.sol | 51 +-- src/middleware/interfaces/IBasedApp.sol | 7 +- src/middleware/modules/core/BasedAppCore.sol | 26 +- test/SSVBasedApps.t.sol | 2 + test/helpers/Setup.t.sol | 1 + test/helpers/Utils.t.sol | 60 +-- test/mocks/MockBApp2.sol | 11 +- test/mocks/MockBAppAccessControl.sol | 7 +- test/mocks/MockNonCompliantBApp.sol | 10 +- test/modules/BasedAppsManager.t.sol | 28 ++ test/modules/ProtocolManager.t.sol | 21 + test/modules/SlashingManager.bapp.t.sol | 253 +++++++----- test/modules/SlashingManager.eoa.t.sol | 174 ++++---- test/modules/StrategyManager.t.sol | 407 ++----------------- 26 files changed, 604 insertions(+), 662 deletions(-) diff --git a/README.md b/README.md index e1b8a1b9..e8f36a59 100644 --- a/README.md +++ b/README.md @@ -138,13 +138,31 @@ These functions verify balances and authorize the caller to retrieve their accum ### How to Deploy -**1)** Run the deployment script defined in `scripts/`: +**1)** Run the deployment script `DeployProxy.s.sol` defined in `scripts/`: __`❍ npm run deploy:holesky`__: verification is done automatically. __`❍ npm run deploy:hoodi`__: verification needs to be done manually for now. -### Public Testnet +### How to Update Module Contracts + +It is possible to update each one of the three modules: `StrategyManager`, `BasedAppsManager` and `ProtocolManager`. + +It is possible to update multiple modules at the same time. + +**1)** Go on the Proxy Contract on Etherscan, under "Write as Proxy" call the function: + +__`❍ updateModules`__: specifying the correct module id and the new module address. + +### How to Upgrade the Implementation Contract + +**1)** Go on the Proxy Contract on Etherscan, under "Write as Proxy" call the function: + +__`❍ upgradeToAndCall`__: specifying the new implementation address. The data field can be left empty in this case. + +There is also the `UpgradeProxy.s.sol` script file that can be run easily from the CLI. + +### Public Testnet Holesky | Name | Proxy | Implementation | Notes | | -------- | -------- | -------- | -------- | diff --git a/package.json b/package.json index 480a1c62..3cccce85 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "based-applications", - "version": "0.0.0", + "version": "0.0.1", "description": "SSV Based Applications", "author": "SSV.Network", "repository": { diff --git a/scripts/DeployProxy.s.sol b/scripts/DeployProxy.s.sol index 8ef0810d..ad0e6bf8 100644 --- a/scripts/DeployProxy.s.sol +++ b/scripts/DeployProxy.s.sol @@ -32,6 +32,7 @@ contract DeployProxy is Script { withdrawalExpireTime: 3 days, obligationTimelockPeriod: 14 days, obligationExpireTime: 3 days, + tokenUpdateTimelockPeriod: 14 days, maxFeeIncrement: 500 }); @@ -76,6 +77,10 @@ contract DeployProxy is Script { config.obligationTimelockPeriod ); console.log("Obligation Expire Time:", config.obligationExpireTime); + console.log( + "Token Update Timelock Period:", + config.tokenUpdateTimelockPeriod + ); console.log("Max Shares:", config.maxShares); console.log("Max Fee Increment:", config.maxFeeIncrement); vm.stopBroadcast(); diff --git a/src/core/SSVBasedApps.sol b/src/core/SSVBasedApps.sol index cc2001fd..34b0dd35 100644 --- a/src/core/SSVBasedApps.sol +++ b/src/core/SSVBasedApps.sol @@ -72,7 +72,7 @@ contract SSVBasedApps is IBasedAppManager ssvBasedAppManger_, IStrategyManager ssvStrategyManager_, IProtocolManager protocolManager_, - ProtocolStorageLib.Data memory config + ProtocolStorageLib.Data calldata config ) external override initializer onlyProxy { __UUPSUpgradeable_init(); __Ownable_init_unchained(owner_); @@ -89,7 +89,7 @@ contract SSVBasedApps is IBasedAppManager ssvBasedAppManger_, IStrategyManager ssvStrategyManager_, IProtocolManager protocolManager_, - ProtocolStorageLib.Data memory config + ProtocolStorageLib.Data calldata config ) internal onlyInitializing { CoreStorageLib.Data storage s = CoreStorageLib.load(); ProtocolStorageLib.Data storage sp = ProtocolStorageLib.load(); @@ -114,6 +114,7 @@ contract SSVBasedApps is sp.withdrawalExpireTime = config.withdrawalExpireTime; sp.obligationTimelockPeriod = config.obligationTimelockPeriod; sp.obligationExpireTime = config.obligationExpireTime; + sp.tokenUpdateTimelockPeriod = config.tokenUpdateTimelockPeriod; sp.maxShares = config.maxShares; emit MaxFeeIncrementSet(sp.maxFeeIncrement); @@ -147,6 +148,12 @@ contract SSVBasedApps is _delegateTo(SSVCoreModules.SSV_BAPPS_MANAGER); } + function updateBAppsTokens( + ICore.TokenConfig[] calldata tokenConfigs + ) external { + _delegateTo(SSVCoreModules.SSV_BAPPS_MANAGER); + } + function createObligation( uint32 strategyId, address bApp, @@ -271,7 +278,7 @@ contract SSVBasedApps is uint32 strategyId, address bApp, address token, - uint256 amount, + uint32 percentage, bytes calldata data ) external { _delegateTo(SSVCoreModules.SSV_STRATEGY_MANAGER); @@ -323,6 +330,10 @@ contract SSVBasedApps is _delegateTo(SSVCoreModules.SSV_PROTOCOL_MANAGER); } + function updateTokenUpdateTimelockPeriod(uint32 value) external onlyOwner { + _delegateTo(SSVCoreModules.SSV_PROTOCOL_MANAGER); + } + function updateMaxShares(uint256 value) external onlyOwner { _delegateTo(SSVCoreModules.SSV_PROTOCOL_MANAGER); } @@ -364,6 +375,13 @@ contract SSVBasedApps is return (s.strategies[strategyId].owner, s.strategies[strategyId].fee); } + function ownedStrategies( + address owner + ) external view returns (uint32[] memory strategyIds) { + CoreStorageLib.Data storage s = CoreStorageLib.load(); + return s.strategyOwners[owner]; + } + function strategyAccountShares( uint32 strategyId, address account, @@ -420,22 +438,25 @@ contract SSVBasedApps is ); } - function usedTokens( - uint32 strategyId, - address token - ) external view returns (uint32) { - CoreStorageLib.Data storage s = CoreStorageLib.load(); - return s.usedTokens[strategyId][token]; - } - function bAppTokens( address bApp, address token - ) external view returns (uint32 value, bool isSet) { + ) + external + view + returns ( + uint32 currentValue, + bool isSet, + uint32 pendingValue, + uint32 effectTime + ) + { CoreStorageLib.Data storage s = CoreStorageLib.load(); return ( - s.bAppTokens[bApp][token].value, - s.bAppTokens[bApp][token].isSet + s.bAppTokens[bApp][token].currentValue, + s.bAppTokens[bApp][token].isSet, + s.bAppTokens[bApp][token].pendingValue, + s.bAppTokens[bApp][token].effectTime ); } @@ -533,6 +554,10 @@ contract SSVBasedApps is return ProtocolStorageLib.load().obligationExpireTime; } + function tokenUpdateTimelockPeriod() external view returns (uint32) { + return ProtocolStorageLib.load().tokenUpdateTimelockPeriod; + } + function getVersion() external pure returns (string memory) { return "0.0.1"; } diff --git a/src/core/interfaces/IBasedAppManager.sol b/src/core/interfaces/IBasedAppManager.sol index 6c30eccc..57e94954 100644 --- a/src/core/interfaces/IBasedAppManager.sol +++ b/src/core/interfaces/IBasedAppManager.sol @@ -1,17 +1,20 @@ // SPDX-License-Identifier: GPL-3.0 pragma solidity 0.8.29; +import { ICore } from "@ssv/src/core/interfaces/ICore.sol"; + interface IBasedAppManager { - event BAppMetadataURIUpdated( - address indexed bAppAddress, - string metadataURI - ); + event BAppMetadataURIUpdated(address indexed bApp, string metadataURI); event BAppRegistered( - address indexed bAppAddress, + address indexed bApp, address[] tokens, uint32[] sharedRiskLevel, string metadataURI ); + event BAppTokensUpdated( + address indexed bApp, + ICore.TokenConfig[] tokenConfigs + ); function registerBApp( address[] calldata tokens, @@ -19,6 +22,9 @@ interface IBasedAppManager { string calldata metadataURI ) external; function updateBAppMetadataURI(string calldata metadataURI) external; + function updateBAppsTokens( + ICore.TokenConfig[] calldata tokenConfigs + ) external; error BAppAlreadyRegistered(); error BAppDoesNotSupportInterface(); diff --git a/src/core/interfaces/ICore.sol b/src/core/interfaces/ICore.sol index 86f9df0c..645306b9 100644 --- a/src/core/interfaces/ICore.sol +++ b/src/core/interfaces/ICore.sol @@ -7,9 +7,13 @@ interface ICore { /// @dev The shared risk level /// Encoding: The value is stored as a uint32. However, it represents a real (float) value. /// To get the actual real value (decode), divide by 10^6. - uint32 value; + uint32 currentValue; /// @dev if the shared risk level is set bool isSet; + /// @dev The value to be updated + uint32 pendingValue; + /// @dev The block time when the update request was sent + uint32 effectTime; } /// @notice Represents an Obligation @@ -67,4 +71,14 @@ interface ICore { /// @dev The account latest generation mapping(address => uint256) accountGeneration; } + + struct TokenUpdateRequest { + TokenConfig[] tokens; + uint32 requestTime; + } + + struct TokenConfig { + address token; + uint32 sharedRiskLevel; + } } diff --git a/src/core/interfaces/IProtocolManager.sol b/src/core/interfaces/IProtocolManager.sol index 7d22b049..fae64d56 100644 --- a/src/core/interfaces/IProtocolManager.sol +++ b/src/core/interfaces/IProtocolManager.sol @@ -6,6 +6,7 @@ interface IProtocolManager { event FeeTimelockPeriodUpdated(uint32 feeTimelockPeriod); event ObligationExpireTimeUpdated(uint32 obligationExpireTime); event ObligationTimelockPeriodUpdated(uint32 obligationTimelockPeriod); + event TokenUpdateTimelockPeriodUpdated(uint32 tokenUpdateTimelockPeriod); event StrategyMaxFeeIncrementUpdated(uint32 maxFeeIncrement); event StrategyMaxSharesUpdated(uint256 maxShares); event WithdrawalExpireTimeUpdated(uint32 withdrawalExpireTime); @@ -17,6 +18,7 @@ interface IProtocolManager { function updateMaxShares(uint256 value) external; function updateObligationExpireTime(uint32 value) external; function updateObligationTimelockPeriod(uint32 value) external; + function updateTokenUpdateTimelockPeriod(uint32 value) external; function updateWithdrawalExpireTime(uint32 value) external; function updateWithdrawalTimelockPeriod(uint32 value) external; } diff --git a/src/core/interfaces/IStrategyManager.sol b/src/core/interfaces/IStrategyManager.sol index fe4d770c..dfe61993 100644 --- a/src/core/interfaces/IStrategyManager.sol +++ b/src/core/interfaces/IStrategyManager.sol @@ -93,7 +93,7 @@ interface IStrategyManager { uint32 indexed strategyId, address indexed bApp, address token, - uint256 amount, + uint32 percentage, address receiver ); @@ -148,7 +148,7 @@ interface IStrategyManager { uint32 strategyId, address bApp, address token, - uint256 amount, + uint32 percentage, bytes calldata data ) external; function updateAccountMetadataURI(string calldata metadataURI) external; diff --git a/src/core/libraries/CoreStorageLib.sol b/src/core/libraries/CoreStorageLib.sol index 41d09964..c130ce43 100644 --- a/src/core/libraries/CoreStorageLib.sol +++ b/src/core/libraries/CoreStorageLib.sol @@ -21,6 +21,11 @@ library CoreStorageLib { * @dev The strategy ID is incremental and unique */ mapping(uint32 strategyId => ICore.Strategy) strategies; + /** + * @notice Tracks the owners of the strategies + * @dev The strategy ID is incremental and unique + */ + mapping(address owner => uint32[] strategyId) strategyOwners; /** * @notice Links an account to a single strategy for a specific bApp * @dev Guarantees that an account cannot have more than one strategy for a given bApp @@ -47,12 +52,6 @@ library CoreStorageLib { * @dev Uses a hash of the bApp and token to map the obligation percentage for the strategy. */ mapping(uint32 strategyId => mapping(address bApp => mapping(address token => ICore.Obligation))) obligations; - /** - * @notice Tracks unallocated tokens in a strategy. - * @dev Count the number of bApps that have one obligation set for the token. - * If the counter is 0, the token is unused and we can allow fast withdrawal. - */ - mapping(uint32 strategyId => mapping(address token => uint32 bAppsCounter)) usedTokens; /** * @notice Tracks all the withdrawal requests divided by token per strategy. * @dev User can have only one pending withdrawal request per token. @@ -87,6 +86,12 @@ library CoreStorageLib { * @dev The bApp is identified with its address */ mapping(address bApp => mapping(address token => ICore.SharedRiskLevel)) bAppTokens; + /** + * @notice Tracks the token update requests for a bApp + * @dev Only the bApp owner can submit one. + * Submitting a new request will overwrite the previous one and reset the timer. + */ + mapping(address bApp => ICore.TokenUpdateRequest) tokenUpdateRequests; } uint256 private constant SSV_BASED_APPS_STORAGE_POSITION = diff --git a/src/core/libraries/ProtocolStorageLib.sol b/src/core/libraries/ProtocolStorageLib.sol index 8fba0bd6..3ef850d1 100644 --- a/src/core/libraries/ProtocolStorageLib.sol +++ b/src/core/libraries/ProtocolStorageLib.sol @@ -11,6 +11,7 @@ library ProtocolStorageLib { uint32 withdrawalExpireTime; uint32 obligationTimelockPeriod; uint32 obligationExpireTime; + uint32 tokenUpdateTimelockPeriod; uint32 maxFeeIncrement; uint256 maxShares; } diff --git a/src/core/modules/BasedAppsManager.sol b/src/core/modules/BasedAppsManager.sol index 2a9e17c5..b0ad9980 100644 --- a/src/core/modules/BasedAppsManager.sol +++ b/src/core/modules/BasedAppsManager.sol @@ -4,16 +4,15 @@ pragma solidity 0.8.29; import { ICore } from "@ssv/src/core/interfaces/ICore.sol"; import { IBasedAppManager } from "@ssv/src/core/interfaces/IBasedAppManager.sol"; import { CoreStorageLib } from "@ssv/src/core/libraries/CoreStorageLib.sol"; +import { ProtocolStorageLib } from "@ssv/src/core/libraries/ProtocolStorageLib.sol"; import { ValidationLib } from "@ssv/src/core/libraries/ValidationLib.sol"; contract BasedAppsManager is IBasedAppManager { /// @notice Allow the function to be called only by a registered bApp - modifier onlyRegisteredBApp() { - CoreStorageLib.Data storage s = CoreStorageLib.load(); + function _onlyRegisteredBApp(CoreStorageLib.Data storage s) private view { if (!s.registeredBApps[msg.sender]) { revert IBasedAppManager.BAppNotRegistered(); } - _; } /// @notice Registers a bApp. @@ -42,12 +41,42 @@ contract BasedAppsManager is IBasedAppManager { /// @notice Function to update the metadata URI of the Based Application /// @param metadataURI The new metadata URI - function updateBAppMetadataURI( - string calldata metadataURI - ) external onlyRegisteredBApp { + function updateBAppMetadataURI(string calldata metadataURI) external { + _onlyRegisteredBApp(CoreStorageLib.load()); emit BAppMetadataURIUpdated(msg.sender, metadataURI); } + function updateBAppsTokens( + ICore.TokenConfig[] memory tokenConfigs + ) external { + CoreStorageLib.Data storage s = CoreStorageLib.load(); + + _onlyRegisteredBApp(s); + + uint32 requestTime = uint32(block.timestamp); + + address token; + ICore.SharedRiskLevel storage tokenData; + ProtocolStorageLib.Data storage sp = ProtocolStorageLib.load(); + + for (uint256 i = 0; i < tokenConfigs.length; ) { + token = tokenConfigs[i].token; + tokenData = s.bAppTokens[msg.sender][token]; + // Update current value if the previous effect time has passed + if (requestTime > tokenData.effectTime) { + tokenData.currentValue = tokenData.pendingValue; + } + tokenData.pendingValue = tokenConfigs[i].sharedRiskLevel; + tokenData.effectTime = requestTime + sp.tokenUpdateTimelockPeriod; + tokenData.isSet = true; + unchecked { + i++; + } + } + + emit BAppTokensUpdated(msg.sender, tokenConfigs); + } + /// @notice Function to add tokens to a bApp /// @param bApp The address of the bApp /// @param tokens The list of tokens to add @@ -67,26 +96,12 @@ contract BasedAppsManager is IBasedAppManager { if (s.bAppTokens[bApp][token].isSet) { revert IBasedAppManager.TokenAlreadyAddedToBApp(token); } - _setTokenRiskLevel(bApp, token, sharedRiskLevels[i]); + ICore.SharedRiskLevel storage tokenData = s.bAppTokens[bApp][token]; + tokenData.currentValue = sharedRiskLevels[i]; + tokenData.isSet = true; unchecked { i++; } } } - - /// @notice Internal function to set the shared risk level for a token - /// @param bApp The address of the bApp - /// @param token The address of the token - /// @param sharedRiskLevel The shared risk level - function _setTokenRiskLevel( - address bApp, - address token, - uint32 sharedRiskLevel - ) internal { - CoreStorageLib.Data storage s = CoreStorageLib.load(); - ICore.SharedRiskLevel storage tokenData = s.bAppTokens[bApp][token]; - - tokenData.value = sharedRiskLevel; - tokenData.isSet = true; - } } diff --git a/src/core/modules/ProtocolManager.sol b/src/core/modules/ProtocolManager.sol index db1a8146..3c93f001 100644 --- a/src/core/modules/ProtocolManager.sol +++ b/src/core/modules/ProtocolManager.sol @@ -43,6 +43,15 @@ contract ProtocolManager is IProtocolManager { emit ObligationExpireTimeUpdated(obligationExpireTime); } + function updateTokenUpdateTimelockPeriod( + uint32 tokenUpdateTimelockPeriod + ) external { + ProtocolStorageLib + .load() + .tokenUpdateTimelockPeriod = tokenUpdateTimelockPeriod; + emit TokenUpdateTimelockPeriodUpdated(tokenUpdateTimelockPeriod); + } + function updateMaxShares(uint256 maxShares) external { ProtocolStorageLib.load().maxShares = maxShares; emit StrategyMaxSharesUpdated(maxShares); diff --git a/src/core/modules/StrategyManager.sol b/src/core/modules/StrategyManager.sol index a5685030..1e0a01c6 100644 --- a/src/core/modules/StrategyManager.sol +++ b/src/core/modules/StrategyManager.sol @@ -144,6 +144,8 @@ contract StrategyManager is ReentrancyGuardTransient, IStrategyManager { newStrategy.owner = msg.sender; newStrategy.fee = fee; + s.strategyOwners[msg.sender].push(strategyId); + emit StrategyCreated(strategyId, msg.sender, fee, metadataURI); } @@ -387,14 +389,7 @@ contract StrategyManager is ReentrancyGuardTransient, IStrategyManager { sp.obligationExpireTime ); - if ( - percentage == 0 && - s.obligations[strategyId][bApp][address(token)].percentage > 0 - ) { - s.usedTokens[strategyId][address(token)] -= 1; - } - - _updateObligation(strategyId, bApp, address(token), percentage); + s.obligations[strategyId][bApp][address(token)].percentage = percentage; emit ObligationUpdated(strategyId, bApp, address(token), percentage); @@ -526,7 +521,6 @@ contract StrategyManager is ReentrancyGuardTransient, IStrategyManager { } if (obligationPercentage != 0) { - s.usedTokens[strategyId][token] += 1; s .obligations[strategyId][bApp][token] .percentage = obligationPercentage; @@ -566,28 +560,6 @@ contract StrategyManager is ReentrancyGuardTransient, IStrategyManager { } } - /// @notice Update a single obligation for a bApp - /// @param strategyId The ID of the strategy - /// @param bApp The address of the bApp - /// @param token The address of the token - function _updateObligation( - uint32 strategyId, - address bApp, - address token, - uint32 obligationPercentage - ) private { - CoreStorageLib.Data storage s = CoreStorageLib.load(); - - if ( - s.obligations[strategyId][bApp][token].percentage == 0 && - obligationPercentage > 0 - ) { - s.usedTokens[strategyId][token] += 1; - } - s - .obligations[strategyId][bApp][token].percentage = obligationPercentage; - } - /// @notice Check the timelocks /// @param requestTime The time of the request /// @param timelockPeriod The timelock period @@ -761,16 +733,17 @@ contract StrategyManager is ReentrancyGuardTransient, IStrategyManager { /// @param strategyId The ID of the strategy /// @param bApp The address of the bApp /// @param token The address of the token - /// @param amount The amount to slash + /// @param percentage The amount to slash /// @param data Optional parameter that could be required by the service function slash( uint32 strategyId, address bApp, address token, - uint256 amount, + uint32 percentage, bytes calldata data ) external nonReentrant { - if (amount == 0) revert InvalidAmount(); + ValidationLib.validatePercentageAndNonZero(percentage); + CoreStorageLib.Data storage s = CoreStorageLib.load(); if (!s.registeredBApps[bApp]) { @@ -778,7 +751,10 @@ contract StrategyManager is ReentrancyGuardTransient, IStrategyManager { } uint256 slashableBalance = getSlashableBalance(strategyId, bApp, token); - if (slashableBalance < amount) revert InsufficientBalance(); + if (slashableBalance == 0) revert InsufficientBalance(); + uint256 amount = (slashableBalance * percentage) / MAX_PERCENTAGE; + + // if (slashableBalance < amount) revert InsufficientBalance(); address receiver; bool exit; @@ -790,7 +766,8 @@ contract StrategyManager is ReentrancyGuardTransient, IStrategyManager { (success, receiver, exit) = IBasedApp(bApp).slash( strategyId, token, - amount, + percentage, + msg.sender, data ); if (!success) revert IStrategyManager.BAppSlashingFailed(); @@ -817,7 +794,7 @@ contract StrategyManager is ReentrancyGuardTransient, IStrategyManager { strategyId, bApp, token, - amount, + percentage, receiver ); } diff --git a/src/middleware/interfaces/IBasedApp.sol b/src/middleware/interfaces/IBasedApp.sol index ddbe2863..787e89b5 100644 --- a/src/middleware/interfaces/IBasedApp.sol +++ b/src/middleware/interfaces/IBasedApp.sol @@ -2,6 +2,7 @@ pragma solidity 0.8.29; import { IERC165 } from "@openzeppelin/contracts/utils/introspection/IERC165.sol"; +import { ICore } from "@ssv/src/core/interfaces/ICore.sol"; interface IBasedApp is IERC165 { function optInToBApp( @@ -18,11 +19,15 @@ interface IBasedApp is IERC165 { function slash( uint32 strategyId, address token, - uint256 amount, + uint32 percentage, + address sender, bytes calldata data ) external returns (bool success, address receiver, bool exit); function supportsInterface(bytes4 interfaceId) external view returns (bool); function updateBAppMetadataURI(string calldata metadataURI) external; + function updateBAppTokens( + ICore.TokenConfig[] calldata tokenConfigs + ) external; error UnauthorizedCaller(); } diff --git a/src/middleware/modules/core/BasedAppCore.sol b/src/middleware/modules/core/BasedAppCore.sol index 21de53cd..abcab974 100644 --- a/src/middleware/modules/core/BasedAppCore.sol +++ b/src/middleware/modules/core/BasedAppCore.sol @@ -9,6 +9,8 @@ import { IBasedAppManager } from "@ssv/src/core/interfaces/IBasedAppManager.sol" import { IStrategyManager } from "@ssv/src/core/interfaces/IStrategyManager.sol"; +import { ICore } from "@ssv/src/core/interfaces/ICore.sol"; + // ===================================================================================== // ⚠️ WARNING: IMPLEMENT OWNER OR ACCESS ROLES ⚠️ // ------------------------------------------------------------------------------------- @@ -69,6 +71,16 @@ abstract contract BasedAppCore is IBasedApp { ); } + /// @notice Updates the tokens of a BApp + /// @param tokenConfigs new list of tokens and their shared risk levels + function updateBAppTokens( + ICore.TokenConfig[] calldata tokenConfigs + ) external virtual { + IBasedAppManager(SSV_BASED_APPS_NETWORK).updateBAppsTokens( + tokenConfigs + ); + } + function withdrawSlashingFund( address token, uint256 amount @@ -105,10 +117,18 @@ abstract contract BasedAppCore is IBasedApp { /*strategyId*/ address, /*token*/ - uint256, - /*amount*/ + uint32, + /*percentage*/ + address, + /*sender*/ bytes calldata - ) external virtual onlySSVBasedAppManager returns (bool, address, bool) { + ) + external + virtual + /*data*/ + onlySSVBasedAppManager + returns (bool, address, bool) + { ///@dev --- CORE LOGIC (TO BE IMPLEMENTED) --- ///@dev --- RETURN TRUE IF SUCCESS, FALSE OTHERWISE --- ///@dev --- RETURN RECEIVER ADDRESS FOR THE SLASHED FUNDS --- diff --git a/test/SSVBasedApps.t.sol b/test/SSVBasedApps.t.sol index 31439204..083aec83 100644 --- a/test/SSVBasedApps.t.sol +++ b/test/SSVBasedApps.t.sol @@ -163,6 +163,7 @@ contract SSVBasedAppsTest is Setup, Ownable2StepUpgradeable { withdrawalExpireTime: 3 days, obligationTimelockPeriod: 14 days, obligationExpireTime: 3 days, + tokenUpdateTimelockPeriod: 14 days, maxShares: 1e50 }); vm.expectRevert( @@ -192,6 +193,7 @@ contract SSVBasedAppsTest is Setup, Ownable2StepUpgradeable { withdrawalExpireTime: 3 days, obligationTimelockPeriod: 14 days, obligationExpireTime: 3 days, + tokenUpdateTimelockPeriod: 14 days, maxFeeIncrement: 10_001 }); vm.expectRevert( diff --git a/test/helpers/Setup.t.sol b/test/helpers/Setup.t.sol index 1ee4e99b..83ee86aa 100644 --- a/test/helpers/Setup.t.sol +++ b/test/helpers/Setup.t.sol @@ -109,6 +109,7 @@ contract Setup is Test { withdrawalExpireTime: 3 days, obligationTimelockPeriod: 14 days, obligationExpireTime: 3 days, + tokenUpdateTimelockPeriod: 14 days, maxShares: 1e50 }); diff --git a/test/helpers/Utils.t.sol b/test/helpers/Utils.t.sol index dc1f11a1..98cab438 100644 --- a/test/helpers/Utils.t.sol +++ b/test/helpers/Utils.t.sol @@ -3,6 +3,7 @@ pragma solidity 0.8.29; import { SSVBasedApps } from "@ssv/src/core/SSVBasedApps.sol"; import { Setup } from "@ssv/test/helpers/Setup.t.sol"; +import { ICore } from "@ssv/src/core/interfaces/ICore.sol"; contract UtilsTest is Setup { function createSingleTokenAndSingleRiskLevel( @@ -53,10 +54,8 @@ contract UtilsTest is Setup { bool isRegistered = proxiedManager.registeredBApps(bApp); assertEq(isRegistered, true, "BApp registered"); for (uint32 i = 0; i < tokensInput.length; i++) { - (uint32 sharedRiskLevel, bool isSet) = proxiedManager.bAppTokens( - bApp, - tokensInput[i] - ); + (uint32 sharedRiskLevel, bool isSet, , ) = proxiedManager + .bAppTokens(bApp, tokensInput[i]); assertEq( riskLevelInput[i], sharedRiskLevel, @@ -73,7 +72,6 @@ contract UtilsTest is Setup { address token, uint32 percentage, SSVBasedApps proxiedManager, - uint32 expectedTokens, bool expectedIsSet ) internal view { uint32 id = proxiedManager.accountBAppStrategy(owner, bApp); @@ -85,8 +83,6 @@ contract UtilsTest is Setup { ); assertEq(isSet, expectedIsSet, "Obligation is set"); assertEq(obligationPercentage, percentage, "Obligation percentage"); - uint256 usedTokens = proxiedManager.usedTokens(strategyId, token); - assertEq(usedTokens, expectedTokens, "Used tokens"); (address strategyOwner, ) = proxiedManager.strategies(strategyId); if (strategyOwner != address(0)) { assertEq(owner, strategyOwner, "Strategy owner"); @@ -98,7 +94,6 @@ contract UtilsTest is Setup { address bApp, address token, uint32 expectedPercentage, - uint32 expectedUsedTokens, bool expectedIsSet, SSVBasedApps proxiedManager ) internal view { @@ -109,8 +104,6 @@ contract UtilsTest is Setup { ); assertEq(percentage, expectedPercentage, "Obligation percentage"); assertEq(isSet, expectedIsSet, "Obligation is set"); - uint32 usedTokens = proxiedManager.usedTokens(strategyId, token); - assertEq(usedTokens, expectedUsedTokens, "Used tokens"); } function checkSlashableBalance( @@ -302,19 +295,6 @@ contract UtilsTest is Setup { ); } - function checkUsedTokens( - uint32 strategyId, - address token, - uint32 expectedUsedTokens - ) internal view { - uint32 usedTokens = proxiedManager.usedTokens(strategyId, token); - assertEq( - usedTokens, - expectedUsedTokens, - "Should have set the correct used tokens" - ); - } - function checkAdjustedPercentage( address token, uint256 previousBalance, @@ -340,4 +320,38 @@ contract UtilsTest is Setup { ); return adjustedPercentage; } + + function checkBAppUpdatedTokens( + ICore.TokenConfig[] memory tokenConfigs, + address bApp + ) internal view { + bool isRegistered = proxiedManager.registeredBApps(bApp); + assertEq(isRegistered, true, "BApp registered"); + for (uint32 i = 0; i < tokenConfigs.length; i++) { + ( + , + bool isSet, + uint32 pendingValue, + uint32 effectiveTime + ) = proxiedManager.bAppTokens(bApp, tokenConfigs[i].token); + assertEq( + tokenConfigs[i].sharedRiskLevel, + pendingValue, + "BApp risk level percentage" + ); + assertNotEq(effectiveTime, 0); + assertEq(isSet, true, "BApp token set"); + } + } + + function calculateSlashAmount( + uint256 depositAmount, + uint32 obligationPercentage, + uint32 slashingPercentage + ) internal view returns (uint256) { + uint256 obligatedAmount = (depositAmount * obligationPercentage) / + proxiedManager.maxPercentage(); + return ((obligatedAmount * slashingPercentage) / + proxiedManager.maxPercentage()); + } } diff --git a/test/mocks/MockBApp2.sol b/test/mocks/MockBApp2.sol index c65ba6c6..847efbb7 100644 --- a/test/mocks/MockBApp2.sol +++ b/test/mocks/MockBApp2.sol @@ -18,12 +18,15 @@ contract BasedAppMock2 is BasedAppCore { } function slash( - uint32, /*strategyId*/ - address, + uint32, /*token*/ - uint256, - /*amount*/ + address, + /*percentage*/ + uint32, + /*sender*/ + address, + /*data*/ bytes calldata ) external diff --git a/test/mocks/MockBAppAccessControl.sol b/test/mocks/MockBAppAccessControl.sol index a5248181..5b81531d 100644 --- a/test/mocks/MockBAppAccessControl.sol +++ b/test/mocks/MockBAppAccessControl.sol @@ -25,13 +25,16 @@ contract BasedAppMock3 is AccessControlBasedApp { /*strategyId*/ address, /*token*/ - uint256, - /*amount*/ + uint32, + /*percentage*/ + address, + /*sender*/ bytes calldata ) external view override + /*data*/ onlySSVBasedAppManager returns (bool, address, bool) { diff --git a/test/mocks/MockNonCompliantBApp.sol b/test/mocks/MockNonCompliantBApp.sol index 9a76355c..aa9bc64d 100644 --- a/test/mocks/MockNonCompliantBApp.sol +++ b/test/mocks/MockNonCompliantBApp.sol @@ -11,7 +11,7 @@ interface ICustomBasedAppManager { uint32 strategyId, address bApp, address token, - uint256 amount, + uint32 percentage, bytes calldata data ) external; } @@ -44,12 +44,16 @@ contract NonCompliantBApp { ); } - function slash(uint32 strategyId, address token, uint256 amount) external { + function slash( + uint32 strategyId, + address token, + uint32 percentage + ) external { ICustomBasedAppManager(BASED_APP_MANAGER).slash( strategyId, address(this), token, - amount, + percentage, "" ); } diff --git a/test/modules/BasedAppsManager.t.sol b/test/modules/BasedAppsManager.t.sol index 8059d2f6..741b1b55 100644 --- a/test/modules/BasedAppsManager.t.sol +++ b/test/modules/BasedAppsManager.t.sol @@ -10,6 +10,7 @@ import { UtilsTest } from "@ssv/test/helpers/Utils.t.sol"; import { IBasedAppManager, IBasedApp } from "@ssv/test/helpers/Setup.t.sol"; import { IBasedAppManager } from "@ssv/src/core/interfaces/IBasedAppManager.sol"; import { ValidationLib } from "@ssv/src/core/libraries/ValidationLib.sol"; +import { ICore } from "@ssv/src/core/interfaces/ICore.sol"; contract BasedAppsManagerTest is UtilsTest { string public metadataURI = "http://metadata.com"; @@ -457,4 +458,31 @@ contract BasedAppsManagerTest is UtilsTest { } vm.stopPrank(); } + + function testUpdateBAppTokens() public { + testRegisterBApp(); + ( + address[] memory tokensInput, + uint32[] memory sharedRiskLevelInput + ) = createTwoTokenAndRiskInputs(); + ICore.TokenConfig[] memory tokenConfigs = new ICore.TokenConfig[]( + tokensInput.length + ); + for (uint256 i = 0; i < tokensInput.length; i++) { + tokenConfigs[i] = ICore.TokenConfig({ + token: tokensInput[i], + sharedRiskLevel: sharedRiskLevelInput[i] + 1000 + }); + } + for (uint256 i = 0; i < bApps.length; i++) { + vm.prank(USER1); + vm.expectEmit(true, true, false, false); + emit IBasedAppManager.BAppTokensUpdated( + address(bApps[i]), + tokenConfigs + ); + bApps[i].updateBAppTokens(tokenConfigs); + checkBAppUpdatedTokens(tokenConfigs, address(bApps[i])); + } + } } diff --git a/test/modules/ProtocolManager.t.sol b/test/modules/ProtocolManager.t.sol index d9d8ff97..134d8758 100644 --- a/test/modules/ProtocolManager.t.sol +++ b/test/modules/ProtocolManager.t.sol @@ -67,6 +67,16 @@ contract ProtocolManagerTest is Setup, Ownable2StepUpgradeable { ); } + function testUpdateTokenUpdateTimelockPeriod() public { + vm.prank(OWNER); + proxiedManager.updateTokenUpdateTimelockPeriod(7 days); + assertEq( + proxiedManager.tokenUpdateTimelockPeriod(), + 7 days, + "TokenUpdate timelock update failed" + ); + } + function testMaxPercentage() public view { assertEq( proxiedManager.maxPercentage(), @@ -170,6 +180,17 @@ contract ProtocolManagerTest is Setup, Ownable2StepUpgradeable { proxiedManager.updateObligationExpireTime(1 days); } + function testRevertUpdateTokenUpdateTimelockPeriodWithNonOwner() public { + vm.prank(ATTACKER); + vm.expectRevert( + abi.encodeWithSelector( + OwnableUnauthorizedAccount.selector, + address(ATTACKER) + ) + ); + proxiedManager.updateTokenUpdateTimelockPeriod(7 days); + } + function testRevertUpdateMaxSharesWithNonOwner() public { vm.prank(ATTACKER); vm.expectRevert( diff --git a/test/modules/SlashingManager.bapp.t.sol b/test/modules/SlashingManager.bapp.t.sol index 4d157454..7a71dd06 100644 --- a/test/modules/SlashingManager.bapp.t.sol +++ b/test/modules/SlashingManager.bapp.t.sol @@ -45,15 +45,20 @@ contract SlashingManagerTest is StrategyManagerTest { ); } - function testSlashBApp(uint256 slashAmount) public { + function testSlashBApp(uint32 slashPercentage) public { uint32 percentage = 9000; uint256 depositAmount = 100_000; address token = address(erc20mock); vm.assume( - slashAmount > 0 && - slashAmount <= - (depositAmount * percentage) / proxiedManager.maxPercentage() + slashPercentage > 0 && + slashPercentage <= proxiedManager.maxPercentage() ); + uint256 slashAmount = calculateSlashAmount( + depositAmount, + percentage, + slashPercentage + ); + testStrategyOptInToBApp(percentage); vm.prank(USER2); proxiedManager.depositERC20( @@ -67,16 +72,17 @@ contract SlashingManagerTest is StrategyManagerTest { STRATEGY1, address(bApp1), token, - slashAmount, + slashPercentage, address(bApp1) ); proxiedManager.slash( STRATEGY1, address(bApp1), token, - slashAmount, + slashPercentage, abi.encodePacked("0x00") ); + uint256 newStrategyBalance = depositAmount - slashAmount; checkTotalSharesAndTotalBalance( STRATEGY1, @@ -89,16 +95,22 @@ contract SlashingManagerTest is StrategyManagerTest { checkSlashingFund(address(bApp1), token, slashAmount); } - function testSlashBAppWithEth(uint256 slashAmount) public { + function testSlashBAppWithEth(uint32 slashPercentage) public { testStrategyOptInToBAppWithETH(); uint32 percentage = 10_000; uint256 depositAmount = 1 ether; address token = ETH_ADDRESS; vm.assume( - slashAmount > 0 && - slashAmount <= - (depositAmount * percentage) / proxiedManager.maxPercentage() + slashPercentage > 0 && + slashPercentage <= proxiedManager.maxPercentage() ); + + uint256 slashAmount = calculateSlashAmount( + depositAmount, + percentage, + slashPercentage + ); + vm.prank(USER2); proxiedManager.depositETH{ value: depositAmount }(STRATEGY1); vm.prank(USER1); @@ -107,14 +119,14 @@ contract SlashingManagerTest is StrategyManagerTest { STRATEGY1, address(bApp1), token, - slashAmount, + slashPercentage, address(bApp1) ); proxiedManager.slash( STRATEGY1, address(bApp1), token, - slashAmount, + slashPercentage, abi.encodePacked("0x00") ); uint256 newStrategyBalance = depositAmount - slashAmount; @@ -129,15 +141,17 @@ contract SlashingManagerTest is StrategyManagerTest { checkSlashingFund(address(bApp1), token, slashAmount); } - function testSlashBAppButInternalSlashRevert(uint256 slashAmount) public { + function testSlashBAppButInternalSlashRevert( + uint32 slashPercentage + ) public { uint32 percentage = 9000; uint256 depositAmount = 100_000; address token = address(erc20mock); vm.assume( - slashAmount > 0 && - slashAmount <= - (depositAmount * percentage) / proxiedManager.maxPercentage() + slashPercentage > 0 && + slashPercentage <= proxiedManager.maxPercentage() ); + testStrategyOptInToBApp(percentage); vm.prank(USER2); proxiedManager.depositERC20( @@ -153,7 +167,7 @@ contract SlashingManagerTest is StrategyManagerTest { STRATEGY1, address(bApp2), token, - slashAmount, + slashPercentage, abi.encodePacked("0x00") ); checkTotalSharesAndTotalBalance( @@ -181,7 +195,7 @@ contract SlashingManagerTest is StrategyManagerTest { depositAmount ); vm.prank(USER1); - uint256 slashAmount = 1; + uint32 slashPercentage = 100; vm.expectRevert( abi.encodeWithSelector(IBasedAppManager.BAppNotRegistered.selector) ); @@ -189,7 +203,7 @@ contract SlashingManagerTest is StrategyManagerTest { STRATEGY1, USER1, address(erc20mock), - slashAmount, + slashPercentage, abi.encodePacked("0x00") ); } @@ -198,7 +212,7 @@ contract SlashingManagerTest is StrategyManagerTest { uint32 percentage = 9000; uint256 depositAmount = 100_000; address token = address(erc20mock); - uint256 slashAmount = 1000; + uint32 slashPercentage = 100; testStrategyOptInToBApp(percentage); vm.prank(USER2); proxiedManager.depositERC20( @@ -214,27 +228,32 @@ contract SlashingManagerTest is StrategyManagerTest { bApps[i].slash( STRATEGY1, token, - slashAmount, + slashPercentage, + address(bApps[i]), abi.encodePacked("0x00") ); } } function testWithdrawSlashingFundErc20() public { - uint256 slashAmount = 100; - testSlashBApp(slashAmount); + uint32 slashPercentage = 9000; + testSlashBApp(slashPercentage); vm.expectEmit(true, true, true, true); - emit IStrategyManager.SlashingFundWithdrawn( - address(erc20mock), - slashAmount - ); + emit IStrategyManager.SlashingFundWithdrawn(address(erc20mock), 1); vm.prank(USER1); - bApp1.withdrawSlashingFund(address(erc20mock), slashAmount); + bApp1.withdrawSlashingFund(address(erc20mock), 1); } function testWithdrawSlashingFundEth() public { - uint256 slashAmount = 0.2 ether; - testSlashBAppWithEth(slashAmount); + uint32 slashPercentage = 9000; + uint32 percentage = 10000; + uint256 depositAmount = 1 ether; + uint256 slashAmount = calculateSlashAmount( + depositAmount, + percentage, + slashPercentage + ); + testSlashBAppWithEth(slashPercentage); vm.expectEmit(true, true, true, true); emit IStrategyManager.SlashingFundWithdrawn(ETH_ADDRESS, slashAmount); vm.prank(USER1); @@ -242,8 +261,13 @@ contract SlashingManagerTest is StrategyManagerTest { } function testRevertWithdrawSlashingFundErc20WithEth() public { - uint256 slashAmount = 100; - testSlashBApp(slashAmount); + uint32 slashPercentage = 100; + uint256 slashAmount = calculateSlashAmount( + 1 ether, + proxiedManager.maxPercentage(), + slashPercentage + ); + testSlashBApp(slashPercentage); vm.prank(USER1); vm.expectRevert( abi.encodeWithSelector(IStrategyManager.InvalidToken.selector) @@ -251,26 +275,9 @@ contract SlashingManagerTest is StrategyManagerTest { proxiedManager.withdrawSlashingFund(ETH_ADDRESS, slashAmount); } - function testRevertWithdrawSlashingFundErc20WithInsufficientBalance() - public - { - uint256 slashAmount = 100; - testSlashBApp(slashAmount); - vm.prank(address(bApp1)); - vm.expectRevert( - abi.encodeWithSelector( - IStrategyManager.InsufficientBalance.selector - ) - ); - proxiedManager.withdrawSlashingFund( - address(erc20mock), - slashAmount + 1 - ); - } - function testRevertWithdrawSlashingFundErc20WithZeroAmount() public { - uint256 slashAmount = 100; - testSlashBApp(slashAmount); + uint32 slashPercentage = 100; + testSlashBApp(slashPercentage); vm.prank(USER1); vm.expectRevert( abi.encodeWithSelector(IStrategyManager.InvalidAmount.selector) @@ -282,7 +289,8 @@ contract SlashingManagerTest is StrategyManagerTest { public { uint256 slashAmount = 100; - testSlashBApp(slashAmount); + uint32 slashPercentage = 10000; + testSlashBApp(slashPercentage); vm.prank(address(bApp1)); vm.expectRevert( abi.encodeWithSelector( @@ -293,8 +301,8 @@ contract SlashingManagerTest is StrategyManagerTest { } function testRevertWithdrawETHSlashingFundErc20WithZeroAmount() public { - uint256 slashAmount = 100; - testSlashBApp(slashAmount); + uint32 slashPercentage = 100; + testSlashBApp(slashPercentage); vm.prank(USER1); vm.expectRevert( abi.encodeWithSelector(IStrategyManager.InvalidAmount.selector) @@ -303,11 +311,16 @@ contract SlashingManagerTest is StrategyManagerTest { } function testFinalizeWithdrawalAfterSlashingRedeemsLowerAmount() public { - uint256 slashAmount = 100; + uint32 slashPercentage = 100; uint32 percentage = 9000; uint256 depositAmount = 100_000; uint256 withdrawalAmount = (depositAmount * 50) / 100; address token = address(erc20mock); + uint256 slashAmount = calculateSlashAmount( + depositAmount, + percentage, + slashPercentage + ); testStrategyOptInToBApp(percentage); @@ -334,14 +347,14 @@ contract SlashingManagerTest is StrategyManagerTest { STRATEGY1, address(bApp1), token, - slashAmount, + slashPercentage, address(bApp1) ); proxiedManager.slash( STRATEGY1, address(bApp1), token, - slashAmount, + slashPercentage, abi.encodePacked("0x00") ); uint256 newStrategyBalance = depositAmount - slashAmount; @@ -361,17 +374,23 @@ contract SlashingManagerTest is StrategyManagerTest { vm.prank(USER2); proxiedManager.finalizeWithdrawal(STRATEGY1, IERC20(erc20mock)); - checkTotalSharesAndTotalBalance(STRATEGY1, token, 50_000, 49_950); + checkTotalSharesAndTotalBalance(STRATEGY1, token, 50_000, 49_550); checkAccountShares(STRATEGY1, USER2, token, 50_000); checkSlashableBalance(STRATEGY1, address(bApp1), token, 0); checkSlashingFund(address(bApp1), token, slashAmount); } function testFinalizeWithdrawalETHAfterSlashingRedeemsLowerAmount() public { - uint256 slashAmount = 100; + uint32 slashPercentage = 100; uint256 depositAmount = 100_000; uint256 withdrawalAmount = (depositAmount * 50) / 100; address token = ETH_ADDRESS; + uint32 percentage = 10000; + uint256 slashAmount = calculateSlashAmount( + depositAmount, + percentage, + slashPercentage + ); testStrategyOptInToBAppWithETH(); @@ -394,14 +413,14 @@ contract SlashingManagerTest is StrategyManagerTest { STRATEGY1, address(bApp1), token, - slashAmount, + slashPercentage, address(bApp1) ); proxiedManager.slash( STRATEGY1, address(bApp1), token, - slashAmount, + slashPercentage, abi.encodePacked("0x00") ); uint256 newStrategyBalance = depositAmount - slashAmount; @@ -421,7 +440,7 @@ contract SlashingManagerTest is StrategyManagerTest { vm.prank(USER2); proxiedManager.finalizeWithdrawalETH(STRATEGY1); - checkTotalSharesAndTotalBalance(STRATEGY1, token, 50_000, 49_950); + checkTotalSharesAndTotalBalance(STRATEGY1, token, 50_000, 49_500); checkAccountShares(STRATEGY1, USER2, token, 50_000); checkSlashableBalance(STRATEGY1, address(bApp1), token, 0); checkSlashingFund(address(bApp1), token, slashAmount); @@ -429,11 +448,17 @@ contract SlashingManagerTest is StrategyManagerTest { function testSlashBAppTotalBalance(uint256 depositAmount) public { uint32 percentage = 10_000; + uint32 slashPercentage = proxiedManager.maxPercentage(); vm.assume( depositAmount > 0 && depositAmount <= proxiedManager.maxShares() ); address token = address(erc20mock); - uint256 slashAmount = depositAmount; + uint256 slashAmount = calculateSlashAmount( + depositAmount, + percentage, + slashPercentage + ); + testStrategyOptInToBApp(percentage); vm.prank(USER2); proxiedManager.depositERC20( @@ -447,7 +472,7 @@ contract SlashingManagerTest is StrategyManagerTest { STRATEGY1, address(bApp1), token, - slashAmount, + slashPercentage, address(bApp1) ); checkGeneration(STRATEGY1, token, 0); @@ -455,7 +480,7 @@ contract SlashingManagerTest is StrategyManagerTest { STRATEGY1, address(bApp1), token, - slashAmount, + slashPercentage, abi.encodePacked("0x00") ); uint256 newStrategyBalance = depositAmount - slashAmount; @@ -510,7 +535,8 @@ contract SlashingManagerTest is StrategyManagerTest { function testSlashBAppWhenObligationIsZero() public { uint256 depositAmount = 100_000 * 10 ** 18; address token = address(erc20mock); - uint256 slashAmount = depositAmount / 2; + uint32 slashPercentage = 100; + testStrategyOptInToBAppWithMultipleTokensWithPercentageZero(); vm.prank(USER2); proxiedManager.depositERC20( @@ -529,7 +555,7 @@ contract SlashingManagerTest is StrategyManagerTest { STRATEGY1, address(bApp1), token, - slashAmount, + slashPercentage, abi.encodePacked("0x00") ); checkTotalSharesAndTotalBalance( @@ -547,10 +573,16 @@ contract SlashingManagerTest is StrategyManagerTest { function testFinalizeWithdrawalAfterPartialSlashBAppWithdrawSmallerAmount() public { - testStrategyOptInToBApp(proxiedManager.maxPercentage()); + uint32 percentage = proxiedManager.maxPercentage(); + testStrategyOptInToBApp(percentage); uint256 depositAmount = 1000; uint256 withdrawalAmount = 800; - uint256 slashAmount = 300; + uint32 slashPercentage = 10_00; + uint256 slashAmount = calculateSlashAmount( + depositAmount, + percentage, + slashPercentage + ); address token = address(erc20mock); vm.startPrank(USER1); proxiedManager.depositERC20( @@ -563,10 +595,11 @@ contract SlashingManagerTest is StrategyManagerTest { STRATEGY1, address(bApp1), token, - slashAmount, + slashPercentage, abi.encodePacked("0x00") ); - uint256 newStrategyBalance = depositAmount - slashAmount; // 700 + + uint256 newStrategyBalance = depositAmount - slashAmount; checkTotalSharesAndTotalBalance( STRATEGY1, token, @@ -577,9 +610,10 @@ contract SlashingManagerTest is StrategyManagerTest { checkSlashableBalance(STRATEGY1, address(bApp1), token, 0); checkSlashingFund(address(bApp1), token, slashAmount); checkGeneration(STRATEGY1, token, 0); + vm.warp(block.timestamp + proxiedManager.withdrawalTimelockPeriod()); - proxiedManager.finalizeWithdrawal(STRATEGY1, IERC20(token)); // this ends up withdrawing 560 (800 * 70% since 30% was slashed) - uint256 effectiveWithdrawalAmount = 560; + proxiedManager.finalizeWithdrawal(STRATEGY1, IERC20(token)); // this ends up withdrawing 720 + uint256 effectiveWithdrawalAmount = 720; checkTotalSharesAndTotalBalance( STRATEGY1, token, @@ -601,7 +635,12 @@ contract SlashingManagerTest is StrategyManagerTest { uint32 percentage = 10_000; uint256 depositAmount = 100_000; address token = address(erc20mock); - uint256 slashAmount = 10_000; + uint32 slashPercentage = 100; + uint256 slashAmount = calculateSlashAmount( + depositAmount, + percentage, + slashPercentage + ); testStrategyOptInToBApp(percentage); vm.prank(USER2); proxiedManager.depositERC20( @@ -615,14 +654,14 @@ contract SlashingManagerTest is StrategyManagerTest { STRATEGY1, address(bApp3), token, - slashAmount, + slashPercentage, address(0) ); proxiedManager.slash( STRATEGY1, address(bApp3), token, - slashAmount, + slashPercentage, abi.encodePacked("0x00") ); (uint32 adjustedPercentage, ) = proxiedManager.obligations( @@ -630,7 +669,7 @@ contract SlashingManagerTest is StrategyManagerTest { address(bApp3), token ); - assertEq(adjustedPercentage, 9000, "Obligation percentage"); + assertEq(adjustedPercentage, 9900, "Obligation percentage"); uint256 newStrategyBalance = depositAmount - slashAmount; checkTotalSharesAndTotalBalance( STRATEGY1, @@ -639,12 +678,12 @@ contract SlashingManagerTest is StrategyManagerTest { newStrategyBalance ); checkAccountShares(STRATEGY1, USER2, token, depositAmount); - checkSlashableBalance(STRATEGY1, address(bApp3), token, 81_000); + checkSlashableBalance(STRATEGY1, address(bApp3), token, 98010); checkSlashingFund(address(0), token, slashAmount); } function testSlashBAppAdjust( - uint256 slashAmount, + uint32 slashPercentage, uint256 depositAmount ) public { uint32 percentage = 10_000; @@ -654,10 +693,13 @@ contract SlashingManagerTest is StrategyManagerTest { depositAmount <= proxiedManager.maxShares() && percentage > 0 && percentage <= proxiedManager.maxPercentage() && - slashAmount > 0 && - slashAmount != depositAmount && - slashAmount <= - (depositAmount * percentage) / proxiedManager.maxPercentage() + slashPercentage > 0 && + slashPercentage <= proxiedManager.maxPercentage() + ); + uint256 slashAmount = calculateSlashAmount( + depositAmount, + percentage, + slashPercentage ); testStrategyOptInToBApp(percentage); vm.prank(USER2); @@ -672,14 +714,14 @@ contract SlashingManagerTest is StrategyManagerTest { STRATEGY1, address(bApp3), token, - slashAmount, + slashPercentage, address(0) ); proxiedManager.slash( STRATEGY1, address(bApp3), token, - slashAmount, + slashPercentage, abi.encodePacked("0x00") ); uint32 adjustedPercentage = checkAdjustedPercentage( @@ -712,7 +754,12 @@ contract SlashingManagerTest is StrategyManagerTest { vm.assume( depositAmount > 0 && depositAmount <= proxiedManager.maxShares() ); - uint256 slashAmount = depositAmount; + uint32 slashPercentage = 10_000; + uint256 slashAmount = calculateSlashAmount( + depositAmount, + percentage, + slashPercentage + ); testStrategyOptInToBApp(percentage); vm.prank(USER2); proxiedManager.depositERC20( @@ -726,14 +773,14 @@ contract SlashingManagerTest is StrategyManagerTest { STRATEGY1, address(bApp3), token, - slashAmount, + slashPercentage, address(0) ); proxiedManager.slash( STRATEGY1, address(bApp3), token, - slashAmount, + slashPercentage, abi.encodePacked("0x00") ); (uint32 adjustedPercentage, ) = proxiedManager.obligations( @@ -755,7 +802,13 @@ contract SlashingManagerTest is StrategyManagerTest { function testSlashBAppAdjustBasicETHWithAdjust() public { uint256 depositAmount = 100 ether; address token = ETH_ADDRESS; - uint256 slashAmount = 10 ether; + uint32 slashPercentage = 100; + uint32 percentage = 10_000; + uint256 slashAmount = calculateSlashAmount( + depositAmount, + percentage, + slashPercentage + ); testStrategyOptInToBAppWithETH(); vm.deal(USER2, depositAmount); vm.prank(USER2); @@ -766,14 +819,14 @@ contract SlashingManagerTest is StrategyManagerTest { STRATEGY1, address(bApp3), token, - slashAmount, + slashPercentage, address(0) ); proxiedManager.slash( STRATEGY1, address(bApp3), token, - slashAmount, + slashPercentage, abi.encodePacked("0x00") ); (uint32 adjustedPercentage, ) = proxiedManager.obligations( @@ -781,7 +834,7 @@ contract SlashingManagerTest is StrategyManagerTest { address(bApp3), token ); - assertEq(adjustedPercentage, 9000, "Obligation percentage"); + assertEq(adjustedPercentage, 9900, "Obligation percentage"); uint256 newStrategyBalance = depositAmount - slashAmount; checkTotalSharesAndTotalBalance( STRATEGY1, @@ -790,14 +843,22 @@ contract SlashingManagerTest is StrategyManagerTest { newStrategyBalance ); checkAccountShares(STRATEGY1, USER2, token, depositAmount); - checkSlashableBalance(STRATEGY1, address(bApp3), token, 81 ether); + checkSlashableBalance(STRATEGY1, address(bApp3), token, 98.01 ether); checkSlashingFund(address(0), token, slashAmount); } function testSlashBAppAdjustBasicETH() public { uint256 depositAmount = 100 ether; address token = ETH_ADDRESS; - uint256 slashAmount = 10 ether; + // uint256 slashAmount = 10 ether; + uint32 slashPercentage = 100; + uint32 percentage = 10_000; + uint256 slashAmount = calculateSlashAmount( + depositAmount, + percentage, + slashPercentage + ); + testStrategyOptInToBAppWithETH(); vm.deal(USER2, depositAmount); vm.prank(USER2); @@ -808,14 +869,14 @@ contract SlashingManagerTest is StrategyManagerTest { STRATEGY1, address(bApp4), token, - slashAmount, + slashPercentage, address(bApp4) ); proxiedManager.slash( STRATEGY1, address(bApp4), token, - slashAmount, + slashPercentage, abi.encodePacked("0x00") ); (uint32 adjustedPercentage, ) = proxiedManager.obligations( diff --git a/test/modules/SlashingManager.eoa.t.sol b/test/modules/SlashingManager.eoa.t.sol index 379705bd..cc5ea2d4 100644 --- a/test/modules/SlashingManager.eoa.t.sol +++ b/test/modules/SlashingManager.eoa.t.sol @@ -3,6 +3,7 @@ pragma solidity 0.8.29; import { IERC20, IStrategyManager, IBasedAppManager } from "@ssv/test/helpers/Setup.t.sol"; import { StrategyManagerTest } from "@ssv/test/modules/StrategyManager.t.sol"; +import { ValidationLib } from "@ssv/src/core/libraries/ValidationLib.sol"; contract SlashingManagerEOATest is StrategyManagerTest { function testGetSlashableBalanceBasic() public { @@ -42,7 +43,10 @@ contract SlashingManagerEOATest is StrategyManagerTest { uint32 percentage = 9000; uint256 depositAmount = 100_000; address token = address(erc20mock); - uint256 slashAmount = 1000; + uint32 slashPercentage = 100; + uint256 slashAmount = (((depositAmount * percentage) / + proxiedManager.maxPercentage()) * slashPercentage) / + proxiedManager.maxPercentage(); testStrategyOptInToBAppEOA(percentage); vm.prank(USER2); proxiedManager.depositERC20( @@ -55,10 +59,10 @@ contract SlashingManagerEOATest is StrategyManagerTest { STRATEGY1, USER1, token, - slashAmount, + slashPercentage, abi.encodePacked("0x00") ); - uint256 newStrategyBalance = depositAmount - slashAmount; // 100,000 - 1,000 = 99,000 ERC20 + uint256 newStrategyBalance = depositAmount - slashAmount; checkAccountShares(STRATEGY1, USER2, token, depositAmount); checkTotalSharesAndTotalBalance( STRATEGY1, @@ -66,18 +70,20 @@ contract SlashingManagerEOATest is StrategyManagerTest { depositAmount, newStrategyBalance ); - checkSlashableBalance(STRATEGY1, USER1, token, 0); // 99,000 * 90% = 89,100 ERC20 + checkSlashableBalance(STRATEGY1, USER1, token, 0); checkSlashingFund(USER1, token, slashAmount); } - function testSlashEOA(uint256 slashAmount) public { + function testSlashEOA(uint32 slashPercentage) public { uint32 percentage = 9000; uint256 depositAmount = 100_000; address token = address(erc20mock); + uint256 slashAmount = (depositAmount * percentage * slashPercentage) / + proxiedManager.maxPercentage() / + proxiedManager.maxPercentage(); vm.assume( - slashAmount > 0 && - slashAmount <= - (depositAmount * percentage) / proxiedManager.maxPercentage() + slashPercentage > 0 && + slashPercentage <= proxiedManager.maxPercentage() ); testStrategyOptInToBAppEOA(percentage); vm.prank(USER2); @@ -98,7 +104,7 @@ contract SlashingManagerEOATest is StrategyManagerTest { STRATEGY1, USER1, token, - slashAmount, + slashPercentage, abi.encodePacked("0x00") ); uint256 newStrategyBalance = depositAmount - slashAmount; @@ -113,17 +119,17 @@ contract SlashingManagerEOATest is StrategyManagerTest { checkSlashingFund(USER1, token, slashAmount); } - function testSlashEOAWithEth(uint256 slashAmount) public { + function testSlashEOAWithEth(uint32 slashPercentage) public { uint32 percentage = 9000; uint256 depositAmount = 3 ether; address token = ETH_ADDRESS; - vm.assume( - slashAmount > 0 && - slashAmount <= - (depositAmount * percentage) / proxiedManager.maxPercentage() + slashPercentage > 0 && + slashPercentage <= proxiedManager.maxPercentage() ); - + uint256 slashAmount = (depositAmount * percentage * slashPercentage) / + proxiedManager.maxPercentage() / + proxiedManager.maxPercentage(); testStrategyOptInToBAppEOAWithETH(percentage); vm.prank(USER2); proxiedManager.depositETH{ value: depositAmount }(STRATEGY1); @@ -140,7 +146,7 @@ contract SlashingManagerEOATest is StrategyManagerTest { STRATEGY1, USER1, token, - slashAmount, + slashPercentage, abi.encodePacked("0x00") ); uint256 newStrategyBalance = depositAmount - slashAmount; @@ -155,18 +161,19 @@ contract SlashingManagerEOATest is StrategyManagerTest { checkSlashingFund(USER1, token, slashAmount); } - function testRevertSlashEOAWithZeroAmount() public { + function testRevertSlashEOAWithZeroPercentage() public { testStrategyOptInToBAppEOA(1000); vm.prank(USER1); - uint256 slashAmount = 0; + uint32 slashPercentage = 0; + vm.expectRevert( - abi.encodeWithSelector(IStrategyManager.InvalidAmount.selector) + abi.encodeWithSelector(ValidationLib.InvalidPercentage.selector) ); proxiedManager.slash( STRATEGY1, USER1, address(erc20mock), - slashAmount, + slashPercentage, abi.encodePacked("0x00") ); } @@ -174,7 +181,8 @@ contract SlashingManagerEOATest is StrategyManagerTest { function testRevertSlashEOAWithInsufficientBalance() public { uint32 percentage = 9000; address token = address(erc20mock); - uint256 slashAmount = 1; + uint32 slashPercentage = 100; + testStrategyOptInToBAppEOA(percentage); vm.prank(USER1); vm.expectRevert( @@ -186,7 +194,7 @@ contract SlashingManagerEOATest is StrategyManagerTest { STRATEGY1, USER1, token, - slashAmount, + slashPercentage, abi.encodePacked("0x00") ); } @@ -195,7 +203,8 @@ contract SlashingManagerEOATest is StrategyManagerTest { uint32 percentage = 9000; uint256 depositAmount = 100_000; address token = address(erc20mock); - uint256 slashAmount = 1000; + uint32 slashPercentage = 100; + testStrategyOptInToBAppEOA(percentage); vm.prank(USER2); proxiedManager.depositERC20( @@ -209,14 +218,15 @@ contract SlashingManagerEOATest is StrategyManagerTest { STRATEGY1, USER1, token, - slashAmount, + slashPercentage, abi.encodePacked("0x00") ); } function testWithdrawSlashingFundErc20FromEOA() public { uint256 slashAmount = 100; - testSlashEOA(slashAmount); + uint32 slashPercentage = 9000; + testSlashEOA(slashPercentage); vm.expectEmit(true, true, true, true); emit IStrategyManager.SlashingFundWithdrawn( address(erc20mock), @@ -228,7 +238,8 @@ contract SlashingManagerEOATest is StrategyManagerTest { function testWithdrawSlashingFundEthFromEOA() public { uint256 slashAmount = 0.2 ether; - testSlashEOAWithEth(slashAmount); + uint32 slashPercentage = 1000; + testSlashEOAWithEth(slashPercentage); vm.expectEmit(true, true, true, true); emit IStrategyManager.SlashingFundWithdrawn(ETH_ADDRESS, slashAmount); vm.prank(USER1); @@ -236,16 +247,17 @@ contract SlashingManagerEOATest is StrategyManagerTest { } // Slash Non Compatible BApp - - function testSlashNonCompatibleBApp(uint256 slashAmount) public { + function testSlashNonCompatibleBApp(uint32 slashPercentage) public { uint32 percentage = 9000; uint256 depositAmount = 100_000; address token = address(erc20mock); vm.assume( - slashAmount > 0 && - slashAmount <= - (depositAmount * percentage) / proxiedManager.maxPercentage() + slashPercentage > 0 && + slashPercentage <= proxiedManager.maxPercentage() ); + uint256 slashAmount = (depositAmount * percentage * slashPercentage) / + proxiedManager.maxPercentage() / + proxiedManager.maxPercentage(); testStrategyOptInToBAppNonCompliant(percentage); vm.prank(USER2); proxiedManager.depositERC20( @@ -259,10 +271,10 @@ contract SlashingManagerEOATest is StrategyManagerTest { STRATEGY1, address(nonCompliantBApp), token, - slashAmount, + slashPercentage, address(nonCompliantBApp) ); - nonCompliantBApp.slash(STRATEGY1, token, slashAmount); + nonCompliantBApp.slash(STRATEGY1, token, slashPercentage); uint256 newStrategyBalance = depositAmount - slashAmount; checkTotalSharesAndTotalBalance( STRATEGY1, @@ -279,7 +291,8 @@ contract SlashingManagerEOATest is StrategyManagerTest { uint32 percentage = 9000; uint256 depositAmount = 100_000; address token = address(erc20mock); - uint256 slashAmount = 2; + uint32 slashPercentage = 100; + testStrategyOptInToBAppNonCompliant(percentage); vm.startPrank(USER2); proxiedManager.depositERC20( @@ -298,7 +311,7 @@ contract SlashingManagerEOATest is StrategyManagerTest { STRATEGY1, address(nonCompliantBApp), token, - slashAmount, + slashPercentage, abi.encodePacked("0x00") ); vm.stopPrank(); @@ -306,6 +319,8 @@ contract SlashingManagerEOATest is StrategyManagerTest { function testRevertSlashEOANotRegistered() public { uint256 depositAmount = 100_000; + uint32 slashPercentage = 100; + vm.prank(USER2); proxiedManager.depositERC20( STRATEGY1, @@ -313,7 +328,6 @@ contract SlashingManagerEOATest is StrategyManagerTest { depositAmount ); vm.prank(USER1); - uint256 slashAmount = 1; vm.expectRevert( abi.encodeWithSelector(IBasedAppManager.BAppNotRegistered.selector) ); @@ -321,14 +335,15 @@ contract SlashingManagerEOATest is StrategyManagerTest { STRATEGY1, USER1, address(erc20mock), - slashAmount, + slashPercentage, abi.encodePacked("0x00") ); } function testRevertWithdrawSlashingFundErc20WithEthEOA() public { uint256 slashAmount = 100; - testSlashEOA(slashAmount); + uint32 slashPercentage = 100; + testSlashEOA(slashPercentage); vm.prank(USER1); vm.expectRevert( abi.encodeWithSelector(IStrategyManager.InvalidToken.selector) @@ -336,26 +351,9 @@ contract SlashingManagerEOATest is StrategyManagerTest { proxiedManager.withdrawSlashingFund(ETH_ADDRESS, slashAmount); } - function testRevertWithdrawSlashingFundErc20WithInsufficientBalanceEOA() - public - { - uint256 slashAmount = 100; - testSlashEOA(slashAmount); - vm.prank(USER1); - vm.expectRevert( - abi.encodeWithSelector( - IStrategyManager.InsufficientBalance.selector - ) - ); - proxiedManager.withdrawSlashingFund( - address(erc20mock), - slashAmount + 1 - ); - } - function testRevertWithdrawSlashingFundErc20WithZeroAmountEOA() public { - uint256 slashAmount = 100; - testSlashEOA(slashAmount); + uint32 slashPercentage = 100; + testSlashEOA(slashPercentage); vm.prank(USER1); vm.expectRevert( abi.encodeWithSelector(IStrategyManager.InvalidAmount.selector) @@ -367,7 +365,8 @@ contract SlashingManagerEOATest is StrategyManagerTest { public { uint256 slashAmount = 100; - testSlashEOA(slashAmount); + uint32 slashPercentage = 100; + testSlashEOA(slashPercentage); vm.prank(USER1); vm.expectRevert( abi.encodeWithSelector( @@ -378,8 +377,8 @@ contract SlashingManagerEOATest is StrategyManagerTest { } function testRevertWithdrawETHSlashingFundErc20WithZeroAmountEOA() public { - uint256 slashAmount = 100; - testSlashEOA(slashAmount); + uint32 slashPercentage = 100; + testSlashEOA(slashPercentage); vm.prank(USER1); vm.expectRevert( abi.encodeWithSelector(IStrategyManager.InvalidAmount.selector) @@ -388,11 +387,16 @@ contract SlashingManagerEOATest is StrategyManagerTest { } function testFinalizeWithdrawalAfterSlashingRedeemsLowerAmountEOA() public { - uint256 slashAmount = 100; uint32 percentage = 9000; uint256 depositAmount = 100_000; uint256 withdrawalAmount = (depositAmount * 50) / 100; address token = address(erc20mock); + uint32 slashPercentage = 100; + uint256 slashAmount = calculateSlashAmount( + depositAmount, + percentage, + slashPercentage + ); testStrategyOptInToBAppEOA(percentage); @@ -419,14 +423,14 @@ contract SlashingManagerEOATest is StrategyManagerTest { STRATEGY1, USER1, token, - slashAmount, + slashPercentage, USER1 ); proxiedManager.slash( STRATEGY1, USER1, token, - slashAmount, + slashPercentage, abi.encodePacked("0x00") ); uint256 newStrategyBalance = depositAmount - slashAmount; @@ -446,7 +450,7 @@ contract SlashingManagerEOATest is StrategyManagerTest { vm.prank(USER2); proxiedManager.finalizeWithdrawal(STRATEGY1, IERC20(erc20mock)); - checkTotalSharesAndTotalBalance(STRATEGY1, token, 50_000, 49_950); + checkTotalSharesAndTotalBalance(STRATEGY1, token, 50_000, 49_550); checkAccountShares(STRATEGY1, USER2, token, 50_000); checkSlashableBalance(STRATEGY1, USER1, token, 0); checkSlashingFund(USER1, token, slashAmount); @@ -455,11 +459,16 @@ contract SlashingManagerEOATest is StrategyManagerTest { function testFinalizeWithdrawalETHAfterSlashingRedeemsLowerAmountEOA() public { - uint256 slashAmount = 100; uint32 percentage = 10_000; uint256 depositAmount = 100_000; uint256 withdrawalAmount = (depositAmount * 50) / 100; address token = ETH_ADDRESS; + uint32 slashPercentage = 100; + uint256 slashAmount = calculateSlashAmount( + depositAmount, + percentage, + slashPercentage + ); testStrategyOptInToBAppEOAWithETH(percentage); @@ -482,14 +491,14 @@ contract SlashingManagerEOATest is StrategyManagerTest { STRATEGY1, USER1, token, - slashAmount, + slashPercentage, USER1 ); proxiedManager.slash( STRATEGY1, USER1, token, - slashAmount, + slashPercentage, abi.encodePacked("0x00") ); uint256 newStrategyBalance = depositAmount - slashAmount; @@ -509,7 +518,7 @@ contract SlashingManagerEOATest is StrategyManagerTest { vm.prank(USER2); proxiedManager.finalizeWithdrawalETH(STRATEGY1); - checkTotalSharesAndTotalBalance(STRATEGY1, token, 50_000, 49_950); + checkTotalSharesAndTotalBalance(STRATEGY1, token, 50_000, 49_500); checkAccountShares(STRATEGY1, USER2, token, 50_000); checkSlashableBalance(STRATEGY1, USER1, token, 0); checkSlashingFund(USER1, token, slashAmount); @@ -521,7 +530,13 @@ contract SlashingManagerEOATest is StrategyManagerTest { ); uint32 percentage = 10_000; address token = address(erc20mock); - uint256 slashAmount = depositAmount; + uint32 slashPercentage = proxiedManager.maxPercentage(); + uint256 slashAmount = calculateSlashAmount( + depositAmount, + percentage, + slashPercentage + ); + testStrategyOptInToBAppEOA(percentage); vm.prank(USER2); proxiedManager.depositERC20( @@ -535,7 +550,7 @@ contract SlashingManagerEOATest is StrategyManagerTest { STRATEGY1, USER1, token, - slashAmount, + slashPercentage, abi.encodePacked("0x00") ); checkGeneration(STRATEGY1, token, 1); @@ -616,10 +631,16 @@ contract SlashingManagerEOATest is StrategyManagerTest { function testFinalizeWithdrawalAfterPartialSlashBAppWithdrawSmallerAmountEOA() public { - testStrategyOptInToBAppEOA(proxiedManager.maxPercentage()); + uint32 percentage = proxiedManager.maxPercentage(); + testStrategyOptInToBAppEOA(percentage); uint256 depositAmount = 1000; uint256 withdrawalAmount = 800; - uint256 slashAmount = 300; + uint32 slashPercentage = 10_00; + uint256 slashAmount = calculateSlashAmount( + depositAmount, + percentage, + slashPercentage + ); address token = address(erc20mock); vm.startPrank(USER1); proxiedManager.depositERC20( @@ -632,7 +653,7 @@ contract SlashingManagerEOATest is StrategyManagerTest { STRATEGY1, USER1, token, - slashAmount, + slashPercentage, abi.encodePacked("0x00") ); uint256 newStrategyBalance = depositAmount - slashAmount; // 700 @@ -647,8 +668,8 @@ contract SlashingManagerEOATest is StrategyManagerTest { checkSlashingFund(USER1, token, slashAmount); checkGeneration(STRATEGY1, token, 0); vm.warp(block.timestamp + proxiedManager.withdrawalTimelockPeriod()); - proxiedManager.finalizeWithdrawal(STRATEGY1, IERC20(token)); // this ends up withdrawing 560 (800 * 70% since 30% was slashed) - uint256 effectiveWithdrawalAmount = 560; + proxiedManager.finalizeWithdrawal(STRATEGY1, IERC20(token)); // this ends up withdrawing 720 + uint256 effectiveWithdrawalAmount = 720; checkTotalSharesAndTotalBalance( STRATEGY1, token, @@ -668,7 +689,8 @@ contract SlashingManagerEOATest is StrategyManagerTest { function testRevertWithdrawSlashingFundErc20WithEthOnEOA() public { uint256 slashAmount = 100; - testSlashEOA(slashAmount); + uint32 slashPercentage = 100; + testSlashEOA(slashPercentage); vm.prank(USER1); vm.expectRevert( abi.encodeWithSelector(IStrategyManager.InvalidToken.selector) diff --git a/test/modules/StrategyManager.t.sol b/test/modules/StrategyManager.t.sol index f27fe6c3..1e27c20e 100644 --- a/test/modules/StrategyManager.t.sol +++ b/test/modules/StrategyManager.t.sol @@ -46,9 +46,36 @@ contract StrategyManagerTest is UtilsTest, BasedAppsManagerTest { STRATEGY1_INITIAL_FEE, "" ); + uint32[] memory strategies = proxiedManager.ownedStrategies(USER1); + assertEq( + strategies.length, + 1, + "Should have created 1 strategy for USER1" + ); + assertEq( + strategies[0], + strategyId1, + "Should have the correct ID for Strategy 1" + ); proxiedManager.createStrategy(STRATEGY2_INITIAL_FEE, ""); proxiedManager.createStrategy(STRATEGY3_INITIAL_FEE, ""); - + strategies = proxiedManager.ownedStrategies(USER1); + assertEq(strategies.length, 3, "Should have created the strategy"); + assertEq( + strategies[0], + strategyId1, + "Should have the correct ID for Strategy 1" + ); + assertEq( + strategies[1], + STRATEGY2, + "Should have the correct ID for Strategy 2" + ); + assertEq( + strategies[2], + STRATEGY3, + "Should have the correct ID for Strategy 3" + ); assertEq( strategyId1, STRATEGY1, @@ -70,6 +97,17 @@ contract StrategyManagerTest is UtilsTest, BasedAppsManagerTest { STRATEGY4_INITIAL_FEE, "" ); + strategies = proxiedManager.ownedStrategies(USER2); + assertEq( + strategies.length, + 1, + "Should have created one strategy for USER2" + ); + assertEq( + strategies[0], + strategyId4, + "Should have the correct ID for Strategy 4" + ); assertEq( strategyId4, STRATEGY4, @@ -390,7 +428,6 @@ contract StrategyManagerTest is UtilsTest, BasedAppsManagerTest { address(erc20mock), percentage, proxiedManager, - uint32(i) + 1, true ); } @@ -442,7 +479,6 @@ contract StrategyManagerTest is UtilsTest, BasedAppsManagerTest { address(erc20mock), percentage, proxiedManager, - 1, true ); uint32 counter = bApp1.counter(); @@ -485,7 +521,6 @@ contract StrategyManagerTest is UtilsTest, BasedAppsManagerTest { address(erc20mock), percentage, proxiedManager, - 1, true ); vm.stopPrank(); @@ -526,7 +561,6 @@ contract StrategyManagerTest is UtilsTest, BasedAppsManagerTest { ETH_ADDRESS, percentage, proxiedManager, - 1, true ); vm.stopPrank(); @@ -567,7 +601,6 @@ contract StrategyManagerTest is UtilsTest, BasedAppsManagerTest { address(erc20mock), percentage, proxiedManager, - 1, true ); vm.stopPrank(); @@ -600,7 +633,6 @@ contract StrategyManagerTest is UtilsTest, BasedAppsManagerTest { address(erc20mock), 0, proxiedManager, - 0, false ); uint32 counter = bApp1.counter(); @@ -645,7 +677,6 @@ contract StrategyManagerTest is UtilsTest, BasedAppsManagerTest { address(erc20mock), 0, proxiedManager, - 0, false ); } @@ -689,7 +720,6 @@ contract StrategyManagerTest is UtilsTest, BasedAppsManagerTest { address(erc20mock), percentage, proxiedManager, - 1, true ); checkStrategyInfo( @@ -699,7 +729,6 @@ contract StrategyManagerTest is UtilsTest, BasedAppsManagerTest { address(erc20mock2), percentage, proxiedManager, - 1, true ); vm.stopPrank(); @@ -776,7 +805,6 @@ contract StrategyManagerTest is UtilsTest, BasedAppsManagerTest { address(erc20mock), percentage, proxiedManager, - uint32(i) + 1, true ); } @@ -848,7 +876,6 @@ contract StrategyManagerTest is UtilsTest, BasedAppsManagerTest { address(erc20mock), percentage, proxiedManager, - 0, true ); } @@ -890,7 +917,6 @@ contract StrategyManagerTest is UtilsTest, BasedAppsManagerTest { ETH_ADDRESS, percentage, proxiedManager, - uint32(i) + 1, true ); } @@ -1226,7 +1252,6 @@ contract StrategyManagerTest is UtilsTest, BasedAppsManagerTest { address(bApps[i]), token, percentage, - uint32(i) + 1, true, proxiedManager ); @@ -1586,7 +1611,6 @@ contract StrategyManagerTest is UtilsTest, BasedAppsManagerTest { ); vm.startPrank(USER1); - checkUsedTokens(STRATEGY1, address(erc20mock), uint32(bApps.length)); vm.warp( block.timestamp + @@ -1616,7 +1640,6 @@ contract StrategyManagerTest is UtilsTest, BasedAppsManagerTest { true ); } - checkUsedTokens(STRATEGY1, address(erc20mock), 0); vm.stopPrank(); } @@ -1998,7 +2021,6 @@ contract StrategyManagerTest is UtilsTest, BasedAppsManagerTest { address(bApps[i]), address(erc20mock), percentage, - uint32(i) + 1, true, proxiedManager ); @@ -2021,7 +2043,6 @@ contract StrategyManagerTest is UtilsTest, BasedAppsManagerTest { address(bApps[i]), ETH_ADDRESS, proxiedManager.maxPercentage(), - uint32(i) + 1, true, proxiedManager ); @@ -2062,7 +2083,6 @@ contract StrategyManagerTest is UtilsTest, BasedAppsManagerTest { address(bApps[i]), address(erc20mock), 0, - 0, true, proxiedManager ); @@ -2085,7 +2105,6 @@ contract StrategyManagerTest is UtilsTest, BasedAppsManagerTest { address(bApps[i]), ETH_ADDRESS, 0, - 0, true, proxiedManager ); @@ -2116,7 +2135,6 @@ contract StrategyManagerTest is UtilsTest, BasedAppsManagerTest { address(bApps[i]), ETH_ADDRESS, 5000, - uint32(i) + 1, true, proxiedManager ); @@ -2207,346 +2225,6 @@ contract StrategyManagerTest is UtilsTest, BasedAppsManagerTest { vm.stopPrank(); } - function testUpdateUsedTokensCorrectly() public { - testCreateNewObligationSuccessful(); - vm.startPrank(USER1); - address token = address(erc20mock2); - - updateObligation(STRATEGY1, address(bApp1), token, 9700); - checkObligationInfo( - STRATEGY1, - address(bApp1), - token, - 9700, - uint32(bApps.length), - true, - proxiedManager - ); - - proxiedManager.proposeUpdateObligation( - STRATEGY1, - address(bApp1), - token, - 0 - ); - checkProposedObligation( - STRATEGY1, - address(bApp1), - token, - 9700, - 0, - block.timestamp, - true - ); - vm.warp(block.timestamp + proxiedManager.obligationTimelockPeriod()); - proxiedManager.finalizeUpdateObligation( - STRATEGY1, - address(bApp1), - token - ); - checkProposedObligation( - STRATEGY1, - address(bApp1), - token, - 0, - 0, - 0, - true - ); - checkObligationInfo( - STRATEGY1, - address(bApp1), - token, - 0, - uint32(bApps.length) - 1, - true, - proxiedManager - ); - - vm.expectRevert( - abi.encodeWithSelector( - IStrategyManager.ObligationAlreadySet.selector - ) - ); - proxiedManager.createObligation(STRATEGY1, address(bApp1), token, 1000); - updateObligation(STRATEGY1, address(bApp1), token, 1000); - checkObligationInfo( - STRATEGY1, - address(bApp1), - token, - 1000, - uint32(bApps.length), - true, - proxiedManager - ); - vm.stopPrank(); - } - - function testUpdateUsedTokens() public { - uint32 percentage = 10_000; - testCreateStrategies(); - testRegisterBAppWith2Tokens(); - - vm.startPrank(USER1); - proxiedManager.depositERC20(STRATEGY1, IERC20(erc20mock), 100_000); - ( - address[] memory tokensInput, - uint32[] memory obligationPercentagesInput - ) = createSingleTokenAndSingleObligationPercentage( - address(erc20mock), - percentage - ); - - proxiedManager.optInToBApp( - STRATEGY1, - address(bApp1), - tokensInput, - obligationPercentagesInput, - abi.encodePacked("0x00") - ); - proxiedManager.optInToBApp( - STRATEGY1, - address(bApp2), - tokensInput, - obligationPercentagesInput, - abi.encodePacked("0x00") - ); - - uint32 strategyId = proxiedManager.accountBAppStrategy( - USER1, - address(bApp1) - ); - assertEq( - strategyId, - STRATEGY1, - "BApp1 should have the strategy ID set correctly" - ); - - strategyId = proxiedManager.accountBAppStrategy(USER1, address(bApp2)); - assertEq( - strategyId, - STRATEGY1, - "BApp2 should have the strategy ID set correctly" - ); - - (uint256 obligationPercentage, bool isSet) = proxiedManager.obligations( - strategyId, - address(bApp1), - address(erc20mock) - ); - assertEq(isSet, true, "BApp1 Should have the obligation set"); - assertEq( - obligationPercentage, - percentage, - "Should have the obligation percentage set correctly" - ); - - (obligationPercentage, isSet) = proxiedManager.obligations( - strategyId, - address(bApp2), - address(erc20mock) - ); - assertEq(isSet, true, "BApp2 Should have the obligation set"); - assertEq( - obligationPercentage, - percentage, - "Should have the obligation percentage set correctly" - ); - - checkUsedTokens(strategyId, address(erc20mock), 2); - - proxiedManager.proposeUpdateObligation( - STRATEGY1, - address(bApp2), - address(erc20mock), - 0 - ); - checkUsedTokens(strategyId, address(erc20mock), 2); - - vm.warp(block.timestamp + proxiedManager.obligationTimelockPeriod()); - proxiedManager.finalizeUpdateObligation( - STRATEGY1, - address(bApp2), - address(erc20mock) - ); - checkUsedTokens(strategyId, address(erc20mock), 1); - - proxiedManager.proposeUpdateObligation( - STRATEGY1, - address(bApp1), - address(erc20mock), - 0 - ); - checkUsedTokens(strategyId, address(erc20mock), 1); - - vm.warp(block.timestamp + proxiedManager.obligationTimelockPeriod()); - proxiedManager.finalizeUpdateObligation( - STRATEGY1, - address(bApp1), - address(erc20mock) - ); - checkUsedTokens(strategyId, address(erc20mock), 0); - - proxiedManager.proposeUpdateObligation( - STRATEGY1, - address(bApp1), - address(erc20mock), - 1 - ); - checkUsedTokens(strategyId, address(erc20mock), 0); - - vm.warp(block.timestamp + proxiedManager.obligationTimelockPeriod()); - proxiedManager.finalizeUpdateObligation( - STRATEGY1, - address(bApp1), - address(erc20mock) - ); - checkUsedTokens(strategyId, address(erc20mock), 1); - - proxiedManager.proposeUpdateObligation( - STRATEGY1, - address(bApp2), - address(erc20mock), - 1 - ); - checkUsedTokens(strategyId, address(erc20mock), 1); - - vm.warp(block.timestamp + proxiedManager.obligationTimelockPeriod()); - proxiedManager.finalizeUpdateObligation( - STRATEGY1, - address(bApp2), - address(erc20mock) - ); - checkUsedTokens(strategyId, address(erc20mock), 2); - vm.stopPrank(); - } - - function testUpdateUsedTokensETH() public { - uint32 percentage = 10_000; - testCreateStrategies(); - testRegisterBAppWithETH(); - vm.startPrank(USER1); - proxiedManager.depositETH{ value: 1 ether }(STRATEGY1); - ( - address[] memory tokensInput, - uint32[] memory obligationPercentagesInput - ) = createSingleTokenAndSingleObligationPercentage( - ETH_ADDRESS, - percentage - ); - - proxiedManager.optInToBApp( - STRATEGY1, - address(bApp1), - tokensInput, - obligationPercentagesInput, - abi.encodePacked("0x00") - ); - checkObligationInfo( - STRATEGY1, - address(bApp1), - ETH_ADDRESS, - percentage, - 1, - true, - proxiedManager - ); - - proxiedManager.optInToBApp( - STRATEGY1, - address(bApp2), - tokensInput, - obligationPercentagesInput, - abi.encodePacked("0x00") - ); - checkObligationInfo( - STRATEGY1, - address(bApp2), - ETH_ADDRESS, - percentage, - 2, - true, - proxiedManager - ); - - proxiedManager.proposeUpdateObligation( - STRATEGY1, - address(bApp2), - ETH_ADDRESS, - 0 - ); - checkObligationInfo( - STRATEGY1, - address(bApp2), - ETH_ADDRESS, - percentage, - 2, - true, - proxiedManager - ); - - vm.warp(block.timestamp + proxiedManager.obligationTimelockPeriod()); - - proxiedManager.finalizeUpdateObligation( - STRATEGY1, - address(bApp2), - ETH_ADDRESS - ); - checkObligationInfo( - STRATEGY1, - address(bApp2), - ETH_ADDRESS, - 0, - 1, - true, - proxiedManager - ); - - proxiedManager.proposeUpdateObligation( - STRATEGY1, - address(bApp1), - ETH_ADDRESS, - 0 - ); - checkObligationInfo( - STRATEGY1, - address(bApp1), - ETH_ADDRESS, - percentage, - 1, - true, - proxiedManager - ); - - vm.warp(block.timestamp + proxiedManager.obligationTimelockPeriod()); - - proxiedManager.finalizeUpdateObligation( - STRATEGY1, - address(bApp1), - ETH_ADDRESS - ); - checkObligationInfo( - STRATEGY1, - address(bApp1), - ETH_ADDRESS, - 0, - 0, - true, - proxiedManager - ); - checkObligationInfo( - STRATEGY1, - address(bApp2), - ETH_ADDRESS, - 0, - 0, - true, - proxiedManager - ); - - vm.stopPrank(); - } - function testRevertProposeWithdrawInsufficientLiquidity() public { testCreateObligationETHWithZeroPercentage(); // Registers BApp and does the opt in vm.prank(USER1); @@ -2615,11 +2293,13 @@ contract StrategyManagerTest is UtilsTest, BasedAppsManagerTest { vm.startPrank(USER1); proxiedManager.depositETH{ value: 1 ether }(STRATEGY1); proxiedManager.proposeWithdrawalETH(STRATEGY1, 1 ether); + uint32 slashPercentage = 5000; proxiedManager.slash( STRATEGY1, address(bApp1), ETH_ADDRESS, - 0.5 ether, + // 0.5 ether, + slashPercentage, abi.encode("0x00") ); vm.warp(block.timestamp + proxiedManager.withdrawalTimelockPeriod()); @@ -2634,11 +2314,12 @@ contract StrategyManagerTest is UtilsTest, BasedAppsManagerTest { vm.startPrank(USER1); proxiedManager.depositETH{ value: 1 ether }(STRATEGY1); proxiedManager.proposeWithdrawalETH(STRATEGY1, 1 ether); + uint32 slashPercentage = 10_000; proxiedManager.slash( STRATEGY1, address(bApp1), ETH_ADDRESS, - 1 ether, + slashPercentage, abi.encode("0x00") ); vm.warp(block.timestamp + proxiedManager.withdrawalTimelockPeriod()); From cbef692f5a0e9511f81feb1cb6c8730d7a545d49 Mon Sep 17 00:00:00 2001 From: Marco Tabasco Date: Wed, 23 Apr 2025 13:50:50 +0200 Subject: [PATCH 02/24] Feature deactivation on demand (#42) * feat: feature deactivation on demand --- README.md | 4 + doc/feature_activation.md | 100 +++++++++++++ scripts/DeployProxy.s.sol | 3 +- src/core/SSVBasedApps.sol | 11 ++ src/core/interfaces/IProtocolManager.sol | 1 + src/core/interfaces/IStrategyManager.sol | 2 + src/core/libraries/ProtocolStorageLib.sol | 5 + src/core/modules/ProtocolManager.sol | 8 ++ src/core/modules/StrategyManager.sol | 29 ++++ src/middleware/README.md | 11 +- test/SSVBasedApps.t.sol | 6 +- test/helpers/Setup.t.sol | 3 +- test/modules/ProtocolManager.t.sol | 121 ++++++++++++++++ test/modules/StrategyManager.t.sol | 168 ++++++++++++++++++++++ 14 files changed, 462 insertions(+), 10 deletions(-) create mode 100644 doc/feature_activation.md diff --git a/README.md b/README.md index e8f36a59..8fab390b 100644 --- a/README.md +++ b/README.md @@ -122,6 +122,10 @@ These functions verify balances and authorize the caller to retrieve their accum   +## :gear: _Feature activation_ + +[Feature activation](./specs/feature_activation.md) + ## :page_facing_up: _Whitepaper_ [Whitepaper](https://ssv.network/wp-content/uploads/2025/01/SSV2.0-Based-Applications-Protocol-1.pdf) diff --git a/doc/feature_activation.md b/doc/feature_activation.md new file mode 100644 index 00000000..ffcd0d01 --- /dev/null +++ b/doc/feature_activation.md @@ -0,0 +1,100 @@ +# Feature Flags in StrategyManager + +## Purpose + +Introduce a compact, on‑chain mechanism to enable or disable selected features of the `StrategyManager` contract without a full redeploy. By packing multiple boolean toggles into a single `uint32`, the design: + +- Minimizes storage footprint and gas cost. +- Provides an upgrade‑friendly switchboard for safety (e.g., emergency pause). +- Centralizes feature management under DAO control. + +## Technical Explanation + +- **Storage**: A `uint32 disabledFeatures` field in `ProtocolStorageLib.Data`. +- **Bitmask Layout**: + - Bit 0 (LSB) → Slashing Disabled (`SLASHING_DISABLED = 1 << 0`) + - Bit 1 → Withdrawals Disabled (`WITHDRAWALS_DISABLED = 1 << 1`) + - Further bits reserved for future toggles. + +- **Checks**: Two internal functions in `StrategyManager`: + ```solidity + function _checkSlashingAllowed() internal view { + if (ProtocolStorageLib.load().disabledFeatures & SLASHING_DISABLED != 0) + revert SlashingDisabled(); + } + + function _checkWithdrawalsAllowed() internal view { + if (ProtocolStorageLib.load().disabledFeatures & WITHDRAWALS_DISABLED != 0) + revert WithdrawalsDisabled(); + } + ``` + - Called at the entry points of: + - `slash(...)` + - `proposeWithdrawal(...)` + - `finalizeWithdrawal(...)` + - `proposeWithdrawalETH(...)` + - `finalizeWithdrawalETH(...)` + +## Authorized Accounts + +- Only the **DAO (owner)** can update the entire `disabledFeatures` bitmask via: + ```solidity + function updateDisabledFeatures(uint32 disabledFeatures) external onlyOwner; + ``` +- No per-feature granularity: toggles are applied in bulk. + +## Current Features That Can Be Enabled/Disabled + +| Bit Position | Feature | Constant | Description | +|:------------:|:-------------------|:----------------------|:------------------------------------------| +| 0 | Slashing | `SLASHING_DISABLED` | Stops all calls to `slash(...)` | +| 1 | Withdrawals | `WITHDRAWALS_DISABLED`| Stops all withdrawal proposals and finalizations | + +## Usage & Examples + +1. **Disable slashing only**: + ```js + // binary: 0b...01 → 1 + SSVBasedApps.updateDisabledFeatures(1); + // `slash(...)` now reverts with `SlashingDisabled()`. + ``` +2. **Re-enable slashing, disable withdrawals**: + ```js + // binary: 0b...10 → 2 + SSVBasedApps.updateDisabledFeatures(2); + // `slash(...)` resumes; `proposeWithdrawal(...)` and `finalizeWithdrawal(...)` revert. + ``` +3. **Disable both**: + ```js + SSVBasedApps.updateDisabledFeatures(3); + ``` +4. **Full example:** + ```js + // bit-definitions + const SLASHING_DISABLED = 1 << 0; // 0b0001 + const WITHDRAWALS_DISABLED = 1 << 1; // 0b0010 + + // Suppose you want to disable only withdrawals: + let flags = 0; + flags |= WITHDRAWALS_DISABLED; // flags === 0b0010 + + // Later you decide to also disable slashing: + flags |= SLASHING_DISABLED; // flags === 0b0011 + + // To re-enable withdrawals but keep slashing disabled: + flags &= ~WITHDRAWALS_DISABLED; // flags === 0b0001 + + // Finally, send the update on-chain: + await SSVBasedApps.updateDisabledFeatures(flags); + ``` + +## Future Extensions + +- Reserve bits 2–31 for other purposes: + - Feature disabling + - Emergency pause (global) + + +--- +*This document outlines the bitmask‑driven feature gating mechanism for `StrategyManager`. It ensures rapid reaction to on‑chain emergencies and fine‑grained control over critical operations.* + diff --git a/scripts/DeployProxy.s.sol b/scripts/DeployProxy.s.sol index ad0e6bf8..99384295 100644 --- a/scripts/DeployProxy.s.sol +++ b/scripts/DeployProxy.s.sol @@ -33,7 +33,8 @@ contract DeployProxy is Script { obligationTimelockPeriod: 14 days, obligationExpireTime: 3 days, tokenUpdateTimelockPeriod: 14 days, - maxFeeIncrement: 500 + maxFeeIncrement: 500, + disabledFeatures: 0 }); bytes memory initData = abi.encodeWithSelector( diff --git a/src/core/SSVBasedApps.sol b/src/core/SSVBasedApps.sol index 34b0dd35..f17cdcef 100644 --- a/src/core/SSVBasedApps.sol +++ b/src/core/SSVBasedApps.sol @@ -116,6 +116,7 @@ contract SSVBasedApps is sp.obligationExpireTime = config.obligationExpireTime; sp.tokenUpdateTimelockPeriod = config.tokenUpdateTimelockPeriod; sp.maxShares = config.maxShares; + sp.disabledFeatures = config.disabledFeatures; emit MaxFeeIncrementSet(sp.maxFeeIncrement); } @@ -342,6 +343,12 @@ contract SSVBasedApps is _delegateTo(SSVCoreModules.SSV_PROTOCOL_MANAGER); } + function updateDisabledFeatures( + uint32 disabledFeatures + ) external onlyOwner { + _delegateTo(SSVCoreModules.SSV_PROTOCOL_MANAGER); + } + // ***************************** // ** Section: External Views ** // ***************************** @@ -554,6 +561,10 @@ contract SSVBasedApps is return ProtocolStorageLib.load().obligationExpireTime; } + function disabledFeatures() external view returns (uint32) { + return ProtocolStorageLib.load().disabledFeatures; + } + function tokenUpdateTimelockPeriod() external view returns (uint32) { return ProtocolStorageLib.load().tokenUpdateTimelockPeriod; } diff --git a/src/core/interfaces/IProtocolManager.sol b/src/core/interfaces/IProtocolManager.sol index fae64d56..65801c25 100644 --- a/src/core/interfaces/IProtocolManager.sol +++ b/src/core/interfaces/IProtocolManager.sol @@ -11,6 +11,7 @@ interface IProtocolManager { event StrategyMaxSharesUpdated(uint256 maxShares); event WithdrawalExpireTimeUpdated(uint32 withdrawalExpireTime); event WithdrawalTimelockPeriodUpdated(uint32 withdrawalTimelockPeriod); + event DisabledFeaturesUpdated(uint32 disabledFeatures); function updateFeeExpireTime(uint32 value) external; function updateFeeTimelockPeriod(uint32 value) external; diff --git a/src/core/interfaces/IStrategyManager.sol b/src/core/interfaces/IStrategyManager.sol index dfe61993..f2506d2e 100644 --- a/src/core/interfaces/IStrategyManager.sol +++ b/src/core/interfaces/IStrategyManager.sol @@ -188,7 +188,9 @@ interface IStrategyManager { error ObligationAlreadySet(); error ObligationHasNotBeenCreated(); error RequestTimeExpired(); + error SlashingDisabled(); error TimelockNotElapsed(); error TokenNotSupportedByBApp(address token); error WithdrawTransferFailed(); + error WithdrawalsDisabled(); } diff --git a/src/core/libraries/ProtocolStorageLib.sol b/src/core/libraries/ProtocolStorageLib.sol index 3ef850d1..50136616 100644 --- a/src/core/libraries/ProtocolStorageLib.sol +++ b/src/core/libraries/ProtocolStorageLib.sol @@ -13,6 +13,11 @@ library ProtocolStorageLib { uint32 obligationExpireTime; uint32 tokenUpdateTimelockPeriod; uint32 maxFeeIncrement; + // each bit, starting from the LSB, represents a DISABLED feature + // bit 0 = slashingDisabled + // bit 1 = withdrawalsDisabled + // ... + uint32 disabledFeatures; uint256 maxShares; } diff --git a/src/core/modules/ProtocolManager.sol b/src/core/modules/ProtocolManager.sol index 3c93f001..cb006f62 100644 --- a/src/core/modules/ProtocolManager.sol +++ b/src/core/modules/ProtocolManager.sol @@ -5,6 +5,9 @@ import { IProtocolManager } from "@ssv/src/core/interfaces/IProtocolManager.sol" import { ProtocolStorageLib } from "@ssv/src/core/libraries/ProtocolStorageLib.sol"; contract ProtocolManager is IProtocolManager { + uint32 private constant SLASHING_DISABLED = 1 << 0; + uint32 private constant WITHDRAWALS_DISABLED = 1 << 1; + function updateFeeTimelockPeriod(uint32 feeTimelockPeriod) external { ProtocolStorageLib.load().feeTimelockPeriod = feeTimelockPeriod; emit FeeTimelockPeriodUpdated(feeTimelockPeriod); @@ -61,4 +64,9 @@ contract ProtocolManager is IProtocolManager { ProtocolStorageLib.load().maxFeeIncrement = maxFeeIncrement; emit StrategyMaxFeeIncrementUpdated(maxFeeIncrement); } + + function updateDisabledFeatures(uint32 disabledFeatures) external { + ProtocolStorageLib.load().disabledFeatures = disabledFeatures; + emit DisabledFeaturesUpdated(disabledFeatures); + } } diff --git a/src/core/modules/StrategyManager.sol b/src/core/modules/StrategyManager.sol index 1e0a01c6..8f4af829 100644 --- a/src/core/modules/StrategyManager.sol +++ b/src/core/modules/StrategyManager.sol @@ -18,6 +18,9 @@ import { IBasedApp } from "@ssv/src/middleware/interfaces/IBasedApp.sol"; contract StrategyManager is ReentrancyGuardTransient, IStrategyManager { using SafeERC20 for IERC20; + uint32 private constant SLASHING_DISABLED = 1 << 0; + uint32 private constant WITHDRAWALS_DISABLED = 1 << 1; + /// @notice Checks if the caller is the strategy owner /// @param strategyId The ID of the strategy /// @param s The CoreStorageLib data @@ -255,6 +258,8 @@ contract StrategyManager is ReentrancyGuardTransient, IStrategyManager { address token, uint256 amount ) external { + _checkWithdrawalsAllowed(); + if (token == ETH_ADDRESS) revert InvalidToken(); _proposeWithdrawal(strategyId, token, amount); } @@ -266,6 +271,8 @@ contract StrategyManager is ReentrancyGuardTransient, IStrategyManager { uint32 strategyId, IERC20 token ) external nonReentrant { + _checkWithdrawalsAllowed(); + uint256 amount = _finalizeWithdrawal(strategyId, address(token)); token.safeTransfer(msg.sender, amount); @@ -283,12 +290,15 @@ contract StrategyManager is ReentrancyGuardTransient, IStrategyManager { /// @param strategyId The ID of the strategy. /// @param amount The amount of ETH to withdraw. function proposeWithdrawalETH(uint32 strategyId, uint256 amount) external { + _checkWithdrawalsAllowed(); _proposeWithdrawal(strategyId, ETH_ADDRESS, amount); } /// @notice Finalize the ETH withdrawal after the timelock period has passed. /// @param strategyId The ID of the strategy. function finalizeWithdrawalETH(uint32 strategyId) external nonReentrant { + _checkWithdrawalsAllowed(); + uint256 amount = _finalizeWithdrawal(strategyId, ETH_ADDRESS); payable(msg.sender).transfer(amount); @@ -742,6 +752,8 @@ contract StrategyManager is ReentrancyGuardTransient, IStrategyManager { uint32 percentage, bytes calldata data ) external nonReentrant { + _checkSlashingAllowed(); + ValidationLib.validatePercentageAndNonZero(percentage); CoreStorageLib.Data storage s = CoreStorageLib.load(); @@ -888,4 +900,21 @@ contract StrategyManager is ReentrancyGuardTransient, IStrategyManager { s.slashingFund[msg.sender][token] -= amount; } + + function _checkSlashingAllowed() internal view { + if ( + ProtocolStorageLib.load().disabledFeatures & SLASHING_DISABLED != 0 + ) { + revert SlashingDisabled(); + } + } + + function _checkWithdrawalsAllowed() internal view { + if ( + ProtocolStorageLib.load().disabledFeatures & WITHDRAWALS_DISABLED != + 0 + ) { + revert WithdrawalsDisabled(); + } + } } diff --git a/src/middleware/README.md b/src/middleware/README.md index 66bbed2a..785a6526 100644 --- a/src/middleware/README.md +++ b/src/middleware/README.md @@ -1,4 +1,4 @@ -# :construction_worker: :closed_lock_with_key: __Middleware Contracts__ +# :construction_worker: :closed_lock_with_key: **Middleware Contracts** ## Modules & Examples for BApp Development @@ -78,11 +78,10 @@ Ideal for BApps that want to avoid excessive reward costs. ## :page_facing_up: To Have: Examples -* **BLS Strategy Example**: Demonstrates how to implement and use the BLS verification module securely. +- **BLS Strategy Example**: Demonstrates how to implement and use the BLS verification module securely. -* **ECDSA Strategy Example**: Showcases a lighter alternative using ECDSA verification. +- **ECDSA Strategy Example**: Showcases a lighter alternative using ECDSA verification. -* **Capped Strategy Example**: Implements a BApp that limits deposits to 100k SSV. - -* **Whitelist Manager Example**: Uses whitelist-based permissions instead of owner-based control. +- **Capped Strategy Example**: Implements a BApp that limits deposits to 100k SSV. +- **Whitelist Manager Example**: Uses whitelist-based permissions instead of owner-based control. diff --git a/test/SSVBasedApps.t.sol b/test/SSVBasedApps.t.sol index 083aec83..6033dfe0 100644 --- a/test/SSVBasedApps.t.sol +++ b/test/SSVBasedApps.t.sol @@ -164,7 +164,8 @@ contract SSVBasedAppsTest is Setup, Ownable2StepUpgradeable { obligationTimelockPeriod: 14 days, obligationExpireTime: 3 days, tokenUpdateTimelockPeriod: 14 days, - maxShares: 1e50 + maxShares: 1e50, + disabledFeatures: 0 }); vm.expectRevert( abi.encodeWithSelector( @@ -194,7 +195,8 @@ contract SSVBasedAppsTest is Setup, Ownable2StepUpgradeable { obligationTimelockPeriod: 14 days, obligationExpireTime: 3 days, tokenUpdateTimelockPeriod: 14 days, - maxFeeIncrement: 10_001 + maxFeeIncrement: 10_001, + disabledFeatures: 0 }); vm.expectRevert( abi.encodeWithSelector( diff --git a/test/helpers/Setup.t.sol b/test/helpers/Setup.t.sol index 83ee86aa..53eb9fcc 100644 --- a/test/helpers/Setup.t.sol +++ b/test/helpers/Setup.t.sol @@ -110,7 +110,8 @@ contract Setup is Test { obligationTimelockPeriod: 14 days, obligationExpireTime: 3 days, tokenUpdateTimelockPeriod: 14 days, - maxShares: 1e50 + maxShares: 1e50, + disabledFeatures: 0 }); bytes memory data = abi.encodeWithSelector( diff --git a/test/modules/ProtocolManager.t.sol b/test/modules/ProtocolManager.t.sol index 134d8758..c9457716 100644 --- a/test/modules/ProtocolManager.t.sol +++ b/test/modules/ProtocolManager.t.sol @@ -5,6 +5,11 @@ import { Ownable2StepUpgradeable } from "@openzeppelin/contracts-upgradeable/acc import { ETH_ADDRESS } from "@ssv/src/core/libraries/ValidationLib.sol"; import { Setup } from "@ssv/test/helpers/Setup.t.sol"; +import { IProtocolManager } from "@ssv/src/core/interfaces/IProtocolManager.sol"; +import { IBasedAppManager } from "@ssv/src/core/interfaces/IBasedAppManager.sol"; +import { IStrategyManager } from "@ssv/src/core/interfaces/IStrategyManager.sol"; +import { ERC1967Proxy } from "@openzeppelin/contracts/proxy/ERC1967/ERC1967Proxy.sol"; +import { SSVBasedApps } from "@ssv/src/core/SSVBasedApps.sol"; contract ProtocolManagerTest is Setup, Ownable2StepUpgradeable { function testUpdateFeeTimelockPeriod() public { @@ -213,4 +218,120 @@ contract ProtocolManagerTest is Setup, Ownable2StepUpgradeable { ); proxiedManager.updateMaxFeeIncrement(501); } + + /// @notice By default, no features should be disabled + function testDefaultDisabledFeaturesIsZero() public { + assertEq( + proxiedManager.disabledFeatures(), + 0, + "default disabledFeatures should be zero" + ); + } + + /// @notice The initializer should respect `config.disabledFeatures` + function testInitializeDisabledFeaturesFromConfig() public { + // Override config in Setup + config.disabledFeatures = 3; // slashing & withdrawals disabled + + // Re-deploy a fresh proxy with the modified config + bytes memory initData = abi.encodeWithSelector( + implementation.initialize.selector, + address(OWNER), + IBasedAppManager(basedAppsManagerMod), + IStrategyManager(strategyManagerMod), + IProtocolManager(protocolManagerMod), + config + ); + ERC1967Proxy proxy = new ERC1967Proxy( + address(implementation), + initData + ); + SSVBasedApps proxiedManager = SSVBasedApps(payable(address(proxy))); + + // It should read back exactly what we set + assertEq( + proxiedManager.disabledFeatures(), + 3, + "initializer did not set disabledFeatures from config" + ); + } + + /// @notice Only the owner can update the feature mask + function testUpdateFeatureDisabledFlagsAsOwner() public { + vm.prank(OWNER); + proxiedManager.updateDisabledFeatures(2); + assertEq( + proxiedManager.disabledFeatures(), + 2, + "owner update of disabledFeatures failed" + ); + } + + /// @notice Updating the flags should emit DisabledFeaturesUpdated + function testEmitDisabledFeaturesUpdatedEvent() public { + vm.prank(OWNER); + vm.expectEmit(true, false, false, true); + emit IProtocolManager.DisabledFeaturesUpdated(5); + proxiedManager.updateDisabledFeatures(5); + } + + function testRevertUpdateDisabledFeaturesWithNonOwner() public { + vm.prank(ATTACKER); + vm.expectRevert( + abi.encodeWithSelector( + OwnableUnauthorizedAccount.selector, + address(ATTACKER) + ) + ); + proxiedManager.updateDisabledFeatures(1); + } + + function testSetIndividualDisabledFeatureBits() public { + vm.prank(OWNER); + proxiedManager.updateDisabledFeatures(1 << 0); + assertEq( + proxiedManager.disabledFeatures(), + 1, + "slashingDisabled bit not set correctly" + ); + vm.prank(OWNER); + proxiedManager.updateDisabledFeatures(1 << 1); + assertEq( + proxiedManager.disabledFeatures(), + 2, + "withdrawalsDisabled bit not set correctly" + ); + } + + function testClearFlags() public { + vm.prank(OWNER); + proxiedManager.updateDisabledFeatures(3); + assertEq(proxiedManager.disabledFeatures(), 3, "mask precondition"); + vm.prank(OWNER); + proxiedManager.updateDisabledFeatures(0); + assertEq(proxiedManager.disabledFeatures(), 0, "flags not cleared"); + } + + function testCombinedFlags() public { + uint32 mask = (1 << 0) | (1 << 2) | (1 << 4); + vm.prank(OWNER); + proxiedManager.updateDisabledFeatures(mask); + assertEq( + proxiedManager.disabledFeatures(), + mask, + "combined mask mismatch" + ); + } + + function testOtherParamsUnaffectedByFeatureMask() public { + vm.prank(OWNER); + proxiedManager.updateDisabledFeatures(type(uint32).max); + vm.prank(OWNER); + proxiedManager.updateFeeTimelockPeriod(2 days); + assertEq( + proxiedManager.feeTimelockPeriod(), + 2 days, + "feeTimelockPeriod should update despite flags" + ); + } } diff --git a/test/modules/StrategyManager.t.sol b/test/modules/StrategyManager.t.sol index 1e27c20e..49f2f668 100644 --- a/test/modules/StrategyManager.t.sol +++ b/test/modules/StrategyManager.t.sol @@ -2359,4 +2359,172 @@ contract StrategyManagerTest is UtilsTest, BasedAppsManagerTest { newWithdrawalAmount ); } + + function testSlashWhenEnabled() public { + uint32 pct = proxiedManager.maxPercentage(); + // register & opt‐in + testStrategyOptInToBApp(pct); + // deposit 1 token + vm.startPrank(USER1); + erc20mock.approve(address(proxiedManager), 1); + proxiedManager.depositERC20(STRATEGY1, erc20mock, 1); + vm.stopPrank(); + // slash from bApp1 + vm.prank(address(bApp1)); + proxiedManager.slash( + STRATEGY1, + address(bApp1), + address(erc20mock), + 10_000, + "" + ); + // after slash, strategy balance should be zero + uint256 bal = proxiedManager.strategyTotalBalance( + STRATEGY1, + address(erc20mock) + ); + assertEq(bal, 0, "Strategy balance should have decreased by 1"); + } + + function testSlashRevertsWhenDisabled() public { + // disable slashing + vm.prank(OWNER); + proxiedManager.updateDisabledFeatures(1 << 0); + // now any slash call must revert + vm.prank(address(bApp1)); + vm.expectRevert( + abi.encodeWithSelector(IStrategyManager.SlashingDisabled.selector) + ); + proxiedManager.slash( + STRATEGY1, + address(bApp1), + address(erc20mock), + 10_000, + "" + ); + } + + function testSlashSucceedsAfterReenable() public { + // re‐enable slashing + vm.prank(OWNER); + proxiedManager.updateDisabledFeatures(0); + // prepare valid slash (opt-in + deposit) + uint32 pct = proxiedManager.maxPercentage(); + testStrategyOptInToBApp(pct); + vm.startPrank(USER1); + erc20mock.approve(address(proxiedManager), 1); + proxiedManager.depositERC20(STRATEGY1, erc20mock, 1); + vm.stopPrank(); + // should no longer revert + vm.prank(address(bApp1)); + proxiedManager.slash( + STRATEGY1, + address(bApp1), + address(erc20mock), + 10_000, + "" + ); + // confirm balance dropped + uint256 bal = proxiedManager.strategyTotalBalance( + STRATEGY1, + address(erc20mock) + ); + assertEq(bal, 0, "Slash should succeed once re-enabled"); + } + + function testProposeAndFinalizeWithdrawalWhenEnabled() public { + // set up a deposit + testCreateStrategyAndSingleDeposit(100); + // propose withdrawal + vm.prank(USER1); + proxiedManager.proposeWithdrawal(STRATEGY1, address(erc20mock), 50); + // fast-forward timelock + vm.warp(block.timestamp + proxiedManager.withdrawalTimelockPeriod()); + // finalize and check balances + vm.prank(USER1); + proxiedManager.finalizeWithdrawal(STRATEGY1, erc20mock); + uint256 remaining = proxiedManager.strategyAccountShares( + STRATEGY1, + USER1, + address(erc20mock) + ); + assertEq( + remaining, + 50, + "User should have 50 tokens left in the strategy" + ); + } + + function testProposeWithdrawalRevertsWhenDisabled() public { + // disable withdrawals (bit 1) + vm.prank(OWNER); + proxiedManager.updateDisabledFeatures(1 << 1); + + // attempt to propose an ERC20 withdrawal + vm.prank(USER1); + vm.expectRevert( + abi.encodeWithSelector( + IStrategyManager.WithdrawalsDisabled.selector + ) + ); + proxiedManager.proposeWithdrawal(STRATEGY1, address(erc20mock), 1); + } + + function testFinalizeWithdrawalRevertsWhenDisabled() public { + // first get a pending withdrawal + testProposeWithdrawalFromStrategy(); + + // disable withdrawals + vm.prank(OWNER); + proxiedManager.updateDisabledFeatures(1 << 1); + + // now finalize should revert + vm.warp(block.timestamp + proxiedManager.withdrawalTimelockPeriod()); + vm.prank(USER1); + vm.expectRevert( + abi.encodeWithSelector( + IStrategyManager.WithdrawalsDisabled.selector + ) + ); + proxiedManager.finalizeWithdrawal(STRATEGY1, erc20mock); + } + + function testProposeWithdrawalETHRevertsWhenDisabled() public { + // deposit some ETH first + testCreateStrategyETHAndDepositETH(); + + // disable withdrawals + vm.prank(OWNER); + proxiedManager.updateDisabledFeatures(1 << 1); + + // attempt to propose an ETH withdrawal + vm.prank(USER1); + vm.expectRevert( + abi.encodeWithSelector( + IStrategyManager.WithdrawalsDisabled.selector + ) + ); + proxiedManager.proposeWithdrawalETH(STRATEGY1, 1 ether); + } + + function testFinalizeWithdrawalETHRevertsWhenDisabled() public { + // get a pending ETH withdrawal + testProposeWithdrawalETHFromStrategy(0.5 ether); + + // disable withdrawals + vm.prank(OWNER); + proxiedManager.updateDisabledFeatures(1 << 1); + + // warp past timelock + vm.warp(block.timestamp + proxiedManager.withdrawalTimelockPeriod()); + + // now finalize should revert + vm.prank(USER1); + vm.expectRevert( + abi.encodeWithSelector( + IStrategyManager.WithdrawalsDisabled.selector + ) + ); + proxiedManager.finalizeWithdrawalETH(STRATEGY1); + } } From fe6da4ef54bf391e4f201891538fb49977013772 Mon Sep 17 00:00:00 2001 From: Riccardo Persiani Date: Wed, 23 Apr 2025 16:21:21 +0200 Subject: [PATCH 03/24] feat: update adjust percentage formula and optimizations --- src/core/modules/StrategyManager.sol | 71 +++++++++++++------------ test/helpers/Utils.t.sol | 3 +- test/modules/SlashingManager.bapp.t.sol | 9 ++-- 3 files changed, 45 insertions(+), 38 deletions(-) diff --git a/src/core/modules/StrategyManager.sol b/src/core/modules/StrategyManager.sol index 8f4af829..2263358c 100644 --- a/src/core/modules/StrategyManager.sol +++ b/src/core/modules/StrategyManager.sol @@ -723,16 +723,12 @@ contract StrategyManager is ReentrancyGuardTransient, IStrategyManager { /// @param token The address of the token /// @return slashableBalance The slashable balance function getSlashableBalance( + CoreStorageLib.Data storage s, uint32 strategyId, address bApp, - address token + address token, + ICore.Shares storage strategyTokenShares ) internal view returns (uint256 slashableBalance) { - CoreStorageLib.Data storage s = CoreStorageLib.load(); - - ICore.Shares storage strategyTokenShares = s.strategyTokenShares[ - strategyId - ][token]; - uint32 percentage = s.obligations[strategyId][bApp][token].percentage; uint256 balance = strategyTokenShares.totalTokenBalance; @@ -762,18 +758,23 @@ contract StrategyManager is ReentrancyGuardTransient, IStrategyManager { revert IBasedAppManager.BAppNotRegistered(); } - uint256 slashableBalance = getSlashableBalance(strategyId, bApp, token); + ICore.Shares storage strategyTokenShares = s.strategyTokenShares[ + strategyId + ][token]; + uint256 slashableBalance = getSlashableBalance( + s, + strategyId, + bApp, + token, + strategyTokenShares + ); if (slashableBalance == 0) revert InsufficientBalance(); uint256 amount = (slashableBalance * percentage) / MAX_PERCENTAGE; - // if (slashableBalance < amount) revert InsufficientBalance(); - address receiver; bool exit; bool success; - ICore.Shares storage strategyTokenShares = s.strategyTokenShares[ - strategyId - ][token]; + if (_isBApp(bApp)) { (success, receiver, exit) = IBasedApp(bApp).slash( strategyId, @@ -784,22 +785,30 @@ contract StrategyManager is ReentrancyGuardTransient, IStrategyManager { ); if (!success) revert IStrategyManager.BAppSlashingFailed(); - if (exit) _exitStrategy(strategyId, bApp, token); - else _adjustObligation(strategyId, bApp, token, amount); + if (exit) _exitStrategy(s, strategyId, bApp, token); + else + _adjustObligation( + s, + strategyId, + bApp, + token, + amount, + strategyTokenShares + ); } else { // Only the bApp EOA or non-compliant bapp owner can slash if (msg.sender != bApp) revert InvalidBAppOwner(msg.sender, bApp); receiver = bApp; - _exitStrategy(strategyId, bApp, token); + _exitStrategy(s, strategyId, bApp, token); } strategyTokenShares.totalTokenBalance -= amount; s.slashingFund[receiver][token] += amount; if (strategyTokenShares.totalTokenBalance == 0) { - delete s.strategyTokenShares[strategyId][token].totalTokenBalance; - delete s.strategyTokenShares[strategyId][token].totalShareBalance; - s.strategyTokenShares[strategyId][token].currentGeneration += 1; + delete strategyTokenShares.totalTokenBalance; + delete strategyTokenShares.totalShareBalance; + strategyTokenShares.currentGeneration += 1; } emit IStrategyManager.StrategySlashed( @@ -812,50 +821,46 @@ contract StrategyManager is ReentrancyGuardTransient, IStrategyManager { } function _exitStrategy( + CoreStorageLib.Data storage s, uint32 strategyId, address bApp, address token ) private { - CoreStorageLib.Data storage s = CoreStorageLib.load(); s.obligations[strategyId][bApp][token].percentage = 0; emit IStrategyManager.ObligationUpdated(strategyId, bApp, token, 0); } function _adjustObligation( + CoreStorageLib.Data storage s, uint32 strategyId, address bApp, address token, - uint256 amount + uint256 amount, + ICore.Shares storage strategyTokenShares ) internal { - CoreStorageLib.Data storage s = CoreStorageLib.load(); ICore.Obligation storage obligation = s.obligations[strategyId][bApp][ token ]; - ICore.Shares storage strategyTokenShares = s.strategyTokenShares[ - strategyId - ][token]; uint256 currentStrategyBalance = strategyTokenShares.totalTokenBalance; uint256 currentObligatedBalance = (obligation.percentage * currentStrategyBalance) / MAX_PERCENTAGE; uint256 postSlashStrategyBalance = currentStrategyBalance - amount; uint256 postSlashObligatedBalance = currentObligatedBalance - amount; if (postSlashStrategyBalance == 0) { - s.obligations[strategyId][bApp][token].percentage = 0; + obligation.percentage = 0; emit IStrategyManager.ObligationUpdated(strategyId, bApp, token, 0); } else { - uint32 postSlashPercentage = uint32( - (postSlashObligatedBalance * MAX_PERCENTAGE) / - currentStrategyBalance + uint32 postSlashObligationPercentage = uint32( + (postSlashObligatedBalance / postSlashStrategyBalance) * + MAX_PERCENTAGE ); - s - .obligations[strategyId][bApp][token] - .percentage = postSlashPercentage; + obligation.percentage = postSlashObligationPercentage; emit IStrategyManager.ObligationUpdated( strategyId, bApp, token, - postSlashPercentage + postSlashObligationPercentage ); } } diff --git a/test/helpers/Utils.t.sol b/test/helpers/Utils.t.sol index 98cab438..9bffb8c9 100644 --- a/test/helpers/Utils.t.sol +++ b/test/helpers/Utils.t.sol @@ -304,9 +304,10 @@ contract UtilsTest is Setup { uint256 previousObligatedBalance = (previousPercentage * previousBalance) / proxiedManager.maxPercentage(); uint256 newObligatedBalance = previousObligatedBalance - slashAmount; + uint256 newTotalBalance = previousBalance - slashAmount; uint32 expectedAdjustedPercentage = uint32( (newObligatedBalance * proxiedManager.maxPercentage()) / - previousBalance + newTotalBalance ); (uint32 adjustedPercentage, ) = proxiedManager.obligations( STRATEGY1, diff --git a/test/modules/SlashingManager.bapp.t.sol b/test/modules/SlashingManager.bapp.t.sol index 7a71dd06..3a7c7684 100644 --- a/test/modules/SlashingManager.bapp.t.sol +++ b/test/modules/SlashingManager.bapp.t.sol @@ -641,6 +641,7 @@ contract SlashingManagerTest is StrategyManagerTest { percentage, slashPercentage ); + assertEq(slashAmount, 1000, "Slash amount should be 1000"); testStrategyOptInToBApp(percentage); vm.prank(USER2); proxiedManager.depositERC20( @@ -669,7 +670,7 @@ contract SlashingManagerTest is StrategyManagerTest { address(bApp3), token ); - assertEq(adjustedPercentage, 9900, "Obligation percentage"); + assertEq(adjustedPercentage, 10000, "Adjusted obligation percentage"); uint256 newStrategyBalance = depositAmount - slashAmount; checkTotalSharesAndTotalBalance( STRATEGY1, @@ -678,7 +679,7 @@ contract SlashingManagerTest is StrategyManagerTest { newStrategyBalance ); checkAccountShares(STRATEGY1, USER2, token, depositAmount); - checkSlashableBalance(STRATEGY1, address(bApp3), token, 98010); + checkSlashableBalance(STRATEGY1, address(bApp3), token, 99000); checkSlashingFund(address(0), token, slashAmount); } @@ -834,7 +835,7 @@ contract SlashingManagerTest is StrategyManagerTest { address(bApp3), token ); - assertEq(adjustedPercentage, 9900, "Obligation percentage"); + assertEq(adjustedPercentage, 10000, "Obligation percentage"); uint256 newStrategyBalance = depositAmount - slashAmount; checkTotalSharesAndTotalBalance( STRATEGY1, @@ -843,7 +844,7 @@ contract SlashingManagerTest is StrategyManagerTest { newStrategyBalance ); checkAccountShares(STRATEGY1, USER2, token, depositAmount); - checkSlashableBalance(STRATEGY1, address(bApp3), token, 98.01 ether); + checkSlashableBalance(STRATEGY1, address(bApp3), token, 99.00 ether); checkSlashingFund(address(0), token, slashAmount); } From cd8b1b2753f380a835b1523ef7c3ae85fc325791 Mon Sep 17 00:00:00 2001 From: Riccardo Persiani Date: Wed, 23 Apr 2025 23:56:16 +0200 Subject: [PATCH 04/24] feat: update adjust percentage formula and optimizations --- src/core/modules/StrategyManager.sol | 71 +++++++++++++------------ test/helpers/Utils.t.sol | 3 +- test/modules/SlashingManager.bapp.t.sol | 9 ++-- 3 files changed, 45 insertions(+), 38 deletions(-) diff --git a/src/core/modules/StrategyManager.sol b/src/core/modules/StrategyManager.sol index 8f4af829..2263358c 100644 --- a/src/core/modules/StrategyManager.sol +++ b/src/core/modules/StrategyManager.sol @@ -723,16 +723,12 @@ contract StrategyManager is ReentrancyGuardTransient, IStrategyManager { /// @param token The address of the token /// @return slashableBalance The slashable balance function getSlashableBalance( + CoreStorageLib.Data storage s, uint32 strategyId, address bApp, - address token + address token, + ICore.Shares storage strategyTokenShares ) internal view returns (uint256 slashableBalance) { - CoreStorageLib.Data storage s = CoreStorageLib.load(); - - ICore.Shares storage strategyTokenShares = s.strategyTokenShares[ - strategyId - ][token]; - uint32 percentage = s.obligations[strategyId][bApp][token].percentage; uint256 balance = strategyTokenShares.totalTokenBalance; @@ -762,18 +758,23 @@ contract StrategyManager is ReentrancyGuardTransient, IStrategyManager { revert IBasedAppManager.BAppNotRegistered(); } - uint256 slashableBalance = getSlashableBalance(strategyId, bApp, token); + ICore.Shares storage strategyTokenShares = s.strategyTokenShares[ + strategyId + ][token]; + uint256 slashableBalance = getSlashableBalance( + s, + strategyId, + bApp, + token, + strategyTokenShares + ); if (slashableBalance == 0) revert InsufficientBalance(); uint256 amount = (slashableBalance * percentage) / MAX_PERCENTAGE; - // if (slashableBalance < amount) revert InsufficientBalance(); - address receiver; bool exit; bool success; - ICore.Shares storage strategyTokenShares = s.strategyTokenShares[ - strategyId - ][token]; + if (_isBApp(bApp)) { (success, receiver, exit) = IBasedApp(bApp).slash( strategyId, @@ -784,22 +785,30 @@ contract StrategyManager is ReentrancyGuardTransient, IStrategyManager { ); if (!success) revert IStrategyManager.BAppSlashingFailed(); - if (exit) _exitStrategy(strategyId, bApp, token); - else _adjustObligation(strategyId, bApp, token, amount); + if (exit) _exitStrategy(s, strategyId, bApp, token); + else + _adjustObligation( + s, + strategyId, + bApp, + token, + amount, + strategyTokenShares + ); } else { // Only the bApp EOA or non-compliant bapp owner can slash if (msg.sender != bApp) revert InvalidBAppOwner(msg.sender, bApp); receiver = bApp; - _exitStrategy(strategyId, bApp, token); + _exitStrategy(s, strategyId, bApp, token); } strategyTokenShares.totalTokenBalance -= amount; s.slashingFund[receiver][token] += amount; if (strategyTokenShares.totalTokenBalance == 0) { - delete s.strategyTokenShares[strategyId][token].totalTokenBalance; - delete s.strategyTokenShares[strategyId][token].totalShareBalance; - s.strategyTokenShares[strategyId][token].currentGeneration += 1; + delete strategyTokenShares.totalTokenBalance; + delete strategyTokenShares.totalShareBalance; + strategyTokenShares.currentGeneration += 1; } emit IStrategyManager.StrategySlashed( @@ -812,50 +821,46 @@ contract StrategyManager is ReentrancyGuardTransient, IStrategyManager { } function _exitStrategy( + CoreStorageLib.Data storage s, uint32 strategyId, address bApp, address token ) private { - CoreStorageLib.Data storage s = CoreStorageLib.load(); s.obligations[strategyId][bApp][token].percentage = 0; emit IStrategyManager.ObligationUpdated(strategyId, bApp, token, 0); } function _adjustObligation( + CoreStorageLib.Data storage s, uint32 strategyId, address bApp, address token, - uint256 amount + uint256 amount, + ICore.Shares storage strategyTokenShares ) internal { - CoreStorageLib.Data storage s = CoreStorageLib.load(); ICore.Obligation storage obligation = s.obligations[strategyId][bApp][ token ]; - ICore.Shares storage strategyTokenShares = s.strategyTokenShares[ - strategyId - ][token]; uint256 currentStrategyBalance = strategyTokenShares.totalTokenBalance; uint256 currentObligatedBalance = (obligation.percentage * currentStrategyBalance) / MAX_PERCENTAGE; uint256 postSlashStrategyBalance = currentStrategyBalance - amount; uint256 postSlashObligatedBalance = currentObligatedBalance - amount; if (postSlashStrategyBalance == 0) { - s.obligations[strategyId][bApp][token].percentage = 0; + obligation.percentage = 0; emit IStrategyManager.ObligationUpdated(strategyId, bApp, token, 0); } else { - uint32 postSlashPercentage = uint32( - (postSlashObligatedBalance * MAX_PERCENTAGE) / - currentStrategyBalance + uint32 postSlashObligationPercentage = uint32( + (postSlashObligatedBalance / postSlashStrategyBalance) * + MAX_PERCENTAGE ); - s - .obligations[strategyId][bApp][token] - .percentage = postSlashPercentage; + obligation.percentage = postSlashObligationPercentage; emit IStrategyManager.ObligationUpdated( strategyId, bApp, token, - postSlashPercentage + postSlashObligationPercentage ); } } diff --git a/test/helpers/Utils.t.sol b/test/helpers/Utils.t.sol index 98cab438..9bffb8c9 100644 --- a/test/helpers/Utils.t.sol +++ b/test/helpers/Utils.t.sol @@ -304,9 +304,10 @@ contract UtilsTest is Setup { uint256 previousObligatedBalance = (previousPercentage * previousBalance) / proxiedManager.maxPercentage(); uint256 newObligatedBalance = previousObligatedBalance - slashAmount; + uint256 newTotalBalance = previousBalance - slashAmount; uint32 expectedAdjustedPercentage = uint32( (newObligatedBalance * proxiedManager.maxPercentage()) / - previousBalance + newTotalBalance ); (uint32 adjustedPercentage, ) = proxiedManager.obligations( STRATEGY1, diff --git a/test/modules/SlashingManager.bapp.t.sol b/test/modules/SlashingManager.bapp.t.sol index 7a71dd06..3a7c7684 100644 --- a/test/modules/SlashingManager.bapp.t.sol +++ b/test/modules/SlashingManager.bapp.t.sol @@ -641,6 +641,7 @@ contract SlashingManagerTest is StrategyManagerTest { percentage, slashPercentage ); + assertEq(slashAmount, 1000, "Slash amount should be 1000"); testStrategyOptInToBApp(percentage); vm.prank(USER2); proxiedManager.depositERC20( @@ -669,7 +670,7 @@ contract SlashingManagerTest is StrategyManagerTest { address(bApp3), token ); - assertEq(adjustedPercentage, 9900, "Obligation percentage"); + assertEq(adjustedPercentage, 10000, "Adjusted obligation percentage"); uint256 newStrategyBalance = depositAmount - slashAmount; checkTotalSharesAndTotalBalance( STRATEGY1, @@ -678,7 +679,7 @@ contract SlashingManagerTest is StrategyManagerTest { newStrategyBalance ); checkAccountShares(STRATEGY1, USER2, token, depositAmount); - checkSlashableBalance(STRATEGY1, address(bApp3), token, 98010); + checkSlashableBalance(STRATEGY1, address(bApp3), token, 99000); checkSlashingFund(address(0), token, slashAmount); } @@ -834,7 +835,7 @@ contract SlashingManagerTest is StrategyManagerTest { address(bApp3), token ); - assertEq(adjustedPercentage, 9900, "Obligation percentage"); + assertEq(adjustedPercentage, 10000, "Obligation percentage"); uint256 newStrategyBalance = depositAmount - slashAmount; checkTotalSharesAndTotalBalance( STRATEGY1, @@ -843,7 +844,7 @@ contract SlashingManagerTest is StrategyManagerTest { newStrategyBalance ); checkAccountShares(STRATEGY1, USER2, token, depositAmount); - checkSlashableBalance(STRATEGY1, address(bApp3), token, 98.01 ether); + checkSlashableBalance(STRATEGY1, address(bApp3), token, 99.00 ether); checkSlashingFund(address(0), token, slashAmount); } From 01dd57f2909e39b6e5adfd6b97c3da9c0938a223 Mon Sep 17 00:00:00 2001 From: Riccardo Persiani Date: Thu, 24 Apr 2025 09:12:37 +0200 Subject: [PATCH 05/24] fix: <- test case --- test/modules/SlashingManager.bapp.t.sol | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/test/modules/SlashingManager.bapp.t.sol b/test/modules/SlashingManager.bapp.t.sol index 3a7c7684..df1a36d2 100644 --- a/test/modules/SlashingManager.bapp.t.sol +++ b/test/modules/SlashingManager.bapp.t.sol @@ -102,7 +102,7 @@ contract SlashingManagerTest is StrategyManagerTest { address token = ETH_ADDRESS; vm.assume( slashPercentage > 0 && - slashPercentage <= proxiedManager.maxPercentage() + slashPercentage < proxiedManager.maxPercentage() ); uint256 slashAmount = calculateSlashAmount( @@ -695,7 +695,7 @@ contract SlashingManagerTest is StrategyManagerTest { percentage > 0 && percentage <= proxiedManager.maxPercentage() && slashPercentage > 0 && - slashPercentage <= proxiedManager.maxPercentage() + slashPercentage < proxiedManager.maxPercentage() ); uint256 slashAmount = calculateSlashAmount( depositAmount, From 1c20380750f2aea89ca62bcc65c865486f2dd8ef Mon Sep 17 00:00:00 2001 From: Marco Tabasco Date: Thu, 24 Apr 2025 13:48:27 +0200 Subject: [PATCH 06/24] Updated deployment scripts (#45) * feat: update deployment process --- .env.sample | 4 + README.md | 6 +- artifacts/deploy-hoodi-stage.json | 13 ++ foundry.toml | 9 ++ lib/forge-std | 2 +- lib/openzeppelin-contracts | 2 +- lib/openzeppelin-contracts-upgradeable | 2 +- package-lock.json | 4 +- package.json | 10 +- remappings.txt | 6 +- script/DeployAll.sol | 146 ++++++++++++++++++++++ script/DeployAllHoodi.s.sol | 27 ++++ script/DeployAllMainnet.s.sol | 19 +++ script/config/hoodi-prod.json | 12 ++ script/config/hoodi-stage.json | 12 ++ script/config/mainnet.json | 12 ++ scripts/DeployProxy.s.sol | 89 ------------- scripts/UpgradeProxy.s.sol | 32 ----- src/core/libraries/ProtocolStorageLib.sol | 2 +- test/modules/SlashingManager.bapp.t.sol | 1 - 20 files changed, 270 insertions(+), 140 deletions(-) create mode 100644 .env.sample create mode 100644 artifacts/deploy-hoodi-stage.json create mode 100644 script/DeployAll.sol create mode 100644 script/DeployAllHoodi.s.sol create mode 100644 script/DeployAllMainnet.s.sol create mode 100644 script/config/hoodi-prod.json create mode 100644 script/config/hoodi-stage.json create mode 100644 script/config/mainnet.json delete mode 100644 scripts/DeployProxy.s.sol delete mode 100644 scripts/UpgradeProxy.s.sol diff --git a/.env.sample b/.env.sample new file mode 100644 index 00000000..de8c0bf4 --- /dev/null +++ b/.env.sample @@ -0,0 +1,4 @@ +HOODI_RPC_URL= +MAINNET_RPC_URL= +ETHERSCAN_API_KEY= +DEPLOYER_PRIVATE_KEY= \ No newline at end of file diff --git a/README.md b/README.md index 8fab390b..2f625457 100644 --- a/README.md +++ b/README.md @@ -142,11 +142,11 @@ These functions verify balances and authorize the caller to retrieve their accum ### How to Deploy -**1)** Run the deployment script `DeployProxy.s.sol` defined in `scripts/`: +**2)** Set the environment variables in the `.env` file. -__`❍ npm run deploy:holesky`__: verification is done automatically. +**1)** Run the deployment script `DeployAllHoodi.s.sol` defined in `script/`: -__`❍ npm run deploy:hoodi`__: verification needs to be done manually for now. +__`❍ npm run deploy:hoodi-stage`__: verification is done automatically. ### How to Update Module Contracts diff --git a/artifacts/deploy-hoodi-stage.json b/artifacts/deploy-hoodi-stage.json new file mode 100644 index 00000000..8923d47c --- /dev/null +++ b/artifacts/deploy-hoodi-stage.json @@ -0,0 +1,13 @@ +{ + "addresses": { + "BAppsModule": "0xF2b0c91b5256aD75585438C2722d5E7119666288", + "ProtocolModule": "0x5C08fb73Ba1E8Fd2894e0A3706C1e4CfBEA3F833", + "SSVBasedAppsImpl": "0x7E438E9264B431Fb62fbE2BFa350b9860cf7E8AA", + "SSVBasedAppsProxy": "0x1F3d4e4aEeA5406e3A7119d8daa31C67Ed3B13de", + "StrategyModule": "0x4b4638B067946c395C32CD0DFE5399E0899C7542" + }, + "chainInfo": { + "chainId": 560048, + "deploymentBlock": 253405 + } +} \ No newline at end of file diff --git a/foundry.toml b/foundry.toml index f7122ba6..b2904e3f 100644 --- a/foundry.toml +++ b/foundry.toml @@ -7,6 +7,15 @@ optimizer = true optimizer_runs = 10_000 gas_reports = ["*"] gas_reports_ignore = ["ERC20Mock", "BasedAppMock", "BasedAppMock2", "BasedAppMock3", "ERC1967Proxy"] +fs_permissions = [{ access = "read", path = "./script/config/"}, { access = "write", path = "./artifacts/"}] + +[rpc_endpoints] +hoodi = "${HOODI_RPC_URL}" +mainnet = "${MAINNET_RPC_URL}" + +[etherscan] +hoodi = { key = "${ETHERSCAN_API_KEY}" } +mainnet = { key = "${ETHERSCAN_API_KEY}" } [fmt] bracket_spacing = false diff --git a/lib/forge-std b/lib/forge-std index bf909b22..9530d9ec 160000 --- a/lib/forge-std +++ b/lib/forge-std @@ -1 +1 @@ -Subproject commit bf909b22fa55e244796dfa920c9639fdffa1c545 +Subproject commit 9530d9ec702df1b27b7f8f50c0a63a11b1b5fba9 diff --git a/lib/openzeppelin-contracts b/lib/openzeppelin-contracts index 9586aaf3..da32fb3b 160000 --- a/lib/openzeppelin-contracts +++ b/lib/openzeppelin-contracts @@ -1 +1 @@ -Subproject commit 9586aaf35241daf4b17e4858bf7c86edbb4b7247 +Subproject commit da32fb3bd89be5ad3c70dd329a34c9f150fa552f diff --git a/lib/openzeppelin-contracts-upgradeable b/lib/openzeppelin-contracts-upgradeable index 773e11a8..50740658 160000 --- a/lib/openzeppelin-contracts-upgradeable +++ b/lib/openzeppelin-contracts-upgradeable @@ -1 +1 @@ -Subproject commit 773e11a869622361ac63dc1da992d1156f440464 +Subproject commit 50740658e6f1798de061de16155ee196a68e4956 diff --git a/package-lock.json b/package-lock.json index c28090d3..b60352aa 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "based-applications", - "version": "0.0.0", + "version": "0.0.1", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "based-applications", - "version": "0.0.0", + "version": "0.0.1", "license": "GPL-3.0", "devDependencies": { "@openzeppelin/contracts-upgradeable": "^5.3.0", diff --git a/package.json b/package.json index 3cccce85..89870459 100644 --- a/package.json +++ b/package.json @@ -20,9 +20,9 @@ "scripts": { "compile": "forge compile", "build": "npm run lint:fix && forge clean && forge build", - "deploy:holesky": "npm run build && forge script scripts/DeployProxy.s.sol --rpc-url $HOLESKY_RPC_URL --private-key $PRIVATE_KEY --verify -vvv --broadcast", - "deploy:hoodi": "npm run build && forge script scripts/DeployProxy.s.sol --rpc-url $HOODI_RPC_URL --private-key $PRIVATE_KEY --etherscan-api-key $ETHERSCAN_API_KEY --verify -vvv --broadcast", - "verify:hoodi": "forge verify-contract --rpc-url https://hoodi.cloud.blockscout.com/api/eth-rpc --verifier blockscout --verifier-url 'https://hoodi.cloud.blockscout.com/api/' $IMPLEMENTATION_ADDRESS src/SSVBasedApps.sol:SSVBasedApps", + "deploy:hoodi-stage": "source .env && forge script script/DeployAllHoodi.s.sol false --sig 'run(bool)' --rpc-url $HOODI_RPC_URL --private-key $DEPLOYER_PRIVATE_KEY --verify -vvv --broadcast", + "deploy:hoodi-prod": "source .env && forge script script/DeployAllHoodi.s.sol true --sig 'run(bool)' --rpc-url $HOODI_RPC_URL --private-key $DEPLOYER_PRIVATE_KEY --verify -vvv --broadcast", + "deploy:mainnet": "source .env && forge script script/DeployAllMainnet.s.sol --rpc-url $MAINNET_RPC_URL --private-key $DEPLOYER_PRIVATE_KEY --verify -vvv --broadcast", "gas-report": "forge test --gas-report", "generate-docs": "solc --include-path node_modules --base-path . --combined-json userdoc,devdoc src/SSVBasedApps.sol --output-dir ./docs --overwrite", "prepare": "husky", @@ -30,8 +30,8 @@ "lint:check": "prettier --check **.sol", "lint:fix": "prettier --write **.sol", "test": "forge test", - "test-coverage": "forge coverage --no-match-coverage \"(scripts|test)\"", - "test-coverage-report": "forge coverage --no-match-coverage \"(scripts|test)\" --report debug > test.txt" + "test-coverage": "forge coverage --no-match-coverage \"(script|test)\"", + "test-coverage-report": "forge coverage --no-match-coverage \"(script|test)\" --report debug > test.txt" }, "devDependencies": { "@openzeppelin/contracts-upgradeable": "^5.3.0", diff --git a/remappings.txt b/remappings.txt index d79616a2..6d581d02 100644 --- a/remappings.txt +++ b/remappings.txt @@ -3,10 +3,8 @@ @ssv/src/middleware=src/middleware @ssv/lib/=lib/ @ssv/test/=test/ -@ssv/scripts/=scripts/ -@ssv/forge-std/=lib/forge-std/src/ +@ssv/script/=script/ @ssv/src/core=src/core @ssv/src/core/interfaces=src/core/interfaces @ssv/src/core/libraries=src/core/libraries -@ssv/src/core/modules=src/core/modules - +@ssv/src/core/modules=src/core/modules \ No newline at end of file diff --git a/script/DeployAll.sol b/script/DeployAll.sol new file mode 100644 index 00000000..673c0df4 --- /dev/null +++ b/script/DeployAll.sol @@ -0,0 +1,146 @@ +// SPDX-License-Identifier: GPL-3.0 +pragma solidity 0.8.29; + +import { ERC1967Proxy } from "@openzeppelin/contracts/proxy/ERC1967/ERC1967Proxy.sol"; +import { Script, console } from "forge-std/Script.sol"; +import { stdJson } from "forge-std/StdJson.sol"; + +import { StrategyManager } from "src/core/modules/StrategyManager.sol"; +import { BasedAppsManager } from "src/core/modules/BasedAppsManager.sol"; +import { ProtocolManager } from "src/core/modules/ProtocolManager.sol"; +import { SSVBasedApps } from "src/core/SSVBasedApps.sol"; +import { ProtocolStorageLib } from "src/core/libraries/ProtocolStorageLib.sol"; + +contract DeployAll is Script { + using stdJson for string; + + function _deployAll(string memory raw) internal returns (string memory) { + vm.startBroadcast(); + + SSVBasedApps impl = new SSVBasedApps(); + StrategyManager strategyMod = new StrategyManager(); + BasedAppsManager bAppsMod = new BasedAppsManager(); + ProtocolManager protocolMod = new ProtocolManager(); + + ERC1967Proxy proxy = deployProxy( + impl, + strategyMod, + bAppsMod, + protocolMod, + raw + ); + + vm.stopBroadcast(); + + console.log("SSVBasedApps Impl: ", address(impl)); + console.log("StrategyModule: ", address(strategyMod)); + console.log("BAppsModule: ", address(bAppsMod)); + console.log("ProtocolModule: ", address(protocolMod)); + console.log("SSVBasedApps Proxy: ", address(proxy)); + + return saveToJson(impl, proxy, strategyMod, bAppsMod, protocolMod); + } + + function saveToJson( + SSVBasedApps impl, + ERC1967Proxy proxy, + StrategyManager strategyMod, + BasedAppsManager bAppsMod, + ProtocolManager protocolMod + ) internal returns (string memory) { + string memory parent = "parent"; + + string memory deployed_addresses = "addresses"; + vm.serializeAddress( + deployed_addresses, + "SSVBasedAppsProxy", + address(proxy) + ); + vm.serializeAddress( + deployed_addresses, + "SSVBasedAppsImpl", + address(impl) + ); + vm.serializeAddress( + deployed_addresses, + "StrategyModule", + address(strategyMod) + ); + vm.serializeAddress( + deployed_addresses, + "BAppsModule", + address(bAppsMod) + ); + + string memory deployed_addresses_output = vm.serializeAddress( + deployed_addresses, + "ProtocolModule", + address(protocolMod) + ); + + string memory chain_info = "chainInfo"; + vm.serializeUint(chain_info, "deploymentBlock", block.number); + string memory chain_info_output = vm.serializeUint( + chain_info, + "chainId", + block.chainid + ); + + // serialize all the data + vm.serializeString( + parent, + deployed_addresses, + deployed_addresses_output + ); + + return vm.serializeString(parent, chain_info, chain_info_output); + } + + function deployProxy( + SSVBasedApps impl, + StrategyManager strategyMod, + BasedAppsManager bAppsMod, + ProtocolManager protocolMod, + string memory raw + ) internal returns (ERC1967Proxy proxy) { + return + new ERC1967Proxy( + address(impl), + abi.encodeWithSelector( + impl.initialize.selector, + msg.sender, + address(bAppsMod), + address(strategyMod), + address(protocolMod), + ProtocolStorageLib.Data({ + feeTimelockPeriod: uint32( + raw.readUint(".feeTimelockPeriod") + ), + feeExpireTime: uint32(raw.readUint(".feeExpireTime")), + withdrawalTimelockPeriod: uint32( + raw.readUint(".withdrawalTimelockPeriod") + ), + withdrawalExpireTime: uint32( + raw.readUint(".withdrawalExpireTime") + ), + obligationTimelockPeriod: uint32( + raw.readUint(".obligationTimelockPeriod") + ), + obligationExpireTime: uint32( + raw.readUint(".obligationExpireTime") + ), + tokenUpdateTimelockPeriod: uint32( + raw.readUint(".tokenUpdateTimelockPeriod") + ), + maxShares: raw.readUint(".maxShares"), + maxFeeIncrement: uint32( + raw.readUint(".maxFeeIncrement") + ), + disabledFeatures: uint32( + raw.readUint(".disabledFeatures") + ) + }) + ) + ); + } +} diff --git a/script/DeployAllHoodi.s.sol b/script/DeployAllHoodi.s.sol new file mode 100644 index 00000000..95432c9a --- /dev/null +++ b/script/DeployAllHoodi.s.sol @@ -0,0 +1,27 @@ +// SPDX-License-Identifier: GPL-3.0 +pragma solidity 0.8.29; + +import { Script } from "forge-std/Script.sol"; +import { DeployAll } from "./DeployAll.sol"; + +contract DeployAllHoodi is Script, DeployAll { + function run(bool isProd) external { + if (block.chainid != 560_048) { + revert("This script is only for the Hoodi prod"); + } + + string memory cfgPath; + string memory outPath; + if (isProd) { + cfgPath = "script/config/hoodi-prod.json"; + outPath = "artifacts/deploy-hoodi-prod.json"; + } else { + cfgPath = "script/config/hoodi-stage.json"; + outPath = "artifacts/deploy-hoodi-stage.json"; + } + + string memory finalJson = _deployAll(vm.readFile(cfgPath)); + + vm.writeJson(finalJson, outPath); + } +} diff --git a/script/DeployAllMainnet.s.sol b/script/DeployAllMainnet.s.sol new file mode 100644 index 00000000..4da956cc --- /dev/null +++ b/script/DeployAllMainnet.s.sol @@ -0,0 +1,19 @@ +// SPDX-License-Identifier: GPL-3.0 +pragma solidity 0.8.29; + +import { Script, console } from "forge-std/Script.sol"; +import { DeployAll } from "./DeployAll.sol"; + +contract DeployAllHoodi is Script, DeployAll { + function run() external { + if (block.chainid != 1) { + revert("This script is only for Mainnet"); + } + + string memory finalJson = _deployAll( + vm.readFile("script/config/mainnet.json") + ); + + vm.writeJson(finalJson, "artifacts/deploy-mainnet.json"); + } +} diff --git a/script/config/hoodi-prod.json b/script/config/hoodi-prod.json new file mode 100644 index 00000000..9b0f9b60 --- /dev/null +++ b/script/config/hoodi-prod.json @@ -0,0 +1,12 @@ +{ + "feeTimelockPeriod": 86400, + "feeExpireTime": 3600, + "withdrawalTimelockPeriod": 172800, + "withdrawalExpireTime": 86400, + "obligationTimelockPeriod": 172800, + "obligationExpireTime": 86400, + "tokenUpdateTimelockPeriod": 3600, + "maxShares": "1e50", + "maxFeeIncrement": 500, + "disabledFeatures": 0 +} diff --git a/script/config/hoodi-stage.json b/script/config/hoodi-stage.json new file mode 100644 index 00000000..9b0f9b60 --- /dev/null +++ b/script/config/hoodi-stage.json @@ -0,0 +1,12 @@ +{ + "feeTimelockPeriod": 86400, + "feeExpireTime": 3600, + "withdrawalTimelockPeriod": 172800, + "withdrawalExpireTime": 86400, + "obligationTimelockPeriod": 172800, + "obligationExpireTime": 86400, + "tokenUpdateTimelockPeriod": 3600, + "maxShares": "1e50", + "maxFeeIncrement": 500, + "disabledFeatures": 0 +} diff --git a/script/config/mainnet.json b/script/config/mainnet.json new file mode 100644 index 00000000..60fe7331 --- /dev/null +++ b/script/config/mainnet.json @@ -0,0 +1,12 @@ +{ + "feeTimelockPeriod": 604800, + "feeExpireTime": 86400, + "withdrawalTimelockPeriod": 1209600, + "withdrawalExpireTime": 259200, + "obligationTimelockPeriod": 1209600, + "obligationExpireTime": 259200, + "tokenUpdateTimelockPeriod": 1209600, + "maxShares": "1e50", + "maxFeeIncrement": 500, + "disabledFeatures": 3 +} diff --git a/scripts/DeployProxy.s.sol b/scripts/DeployProxy.s.sol deleted file mode 100644 index 99384295..00000000 --- a/scripts/DeployProxy.s.sol +++ /dev/null @@ -1,89 +0,0 @@ -// SPDX-License-Identifier: GPL-3.0 -pragma solidity 0.8.29; - -import { ERC1967Proxy } from "@openzeppelin/contracts/proxy/ERC1967/ERC1967Proxy.sol"; - -import { Script, console } from "@ssv/forge-std/Script.sol"; -import { StrategyManager } from "@ssv/src/core/modules/StrategyManager.sol"; -import { BasedAppsManager } from "@ssv/src/core/modules/BasedAppsManager.sol"; -import { ProtocolManager } from "@ssv/src/core/modules/ProtocolManager.sol"; -import { IBasedAppManager } from "@ssv/src/core/interfaces/IBasedAppManager.sol"; -import { IStrategyManager } from "@ssv/src/core/interfaces/IStrategyManager.sol"; -import { IProtocolManager } from "@ssv/src/core/interfaces/IProtocolManager.sol"; -import { SSVBasedApps } from "src/core/SSVBasedApps.sol"; -import { ProtocolStorageLib } from "@ssv/src/core/libraries/ProtocolStorageLib.sol"; - -// solhint-disable no-console -contract DeployProxy is Script { - function run() external { - vm.startBroadcast(); - - SSVBasedApps implementation = new SSVBasedApps(); - - StrategyManager strategyManagerMod = new StrategyManager(); - BasedAppsManager basedAppsManagerMod = new BasedAppsManager(); - ProtocolManager protocolManagerMod = new ProtocolManager(); - - ProtocolStorageLib.Data memory config = ProtocolStorageLib.Data({ - feeTimelockPeriod: 7 days, - feeExpireTime: 1 days, - withdrawalTimelockPeriod: 14 days, - maxShares: 1e50, - withdrawalExpireTime: 3 days, - obligationTimelockPeriod: 14 days, - obligationExpireTime: 3 days, - tokenUpdateTimelockPeriod: 14 days, - maxFeeIncrement: 500, - disabledFeatures: 0 - }); - - bytes memory initData = abi.encodeWithSelector( - implementation.initialize.selector, - msg.sender, - IBasedAppManager(basedAppsManagerMod), - IStrategyManager(strategyManagerMod), - IProtocolManager(protocolManagerMod), - config - ); - - ERC1967Proxy proxy = new ERC1967Proxy( - address(implementation), - initData - ); - - console.log("Implementation deployed at:", address(implementation)); - console.log( - "Module StrategyManager deployed at:", - address(strategyManagerMod) - ); - console.log( - "Module BasedAppsManager deployed at:", - address(basedAppsManagerMod) - ); - console.log( - "Module ProtocolManager deployed at:", - address(protocolManagerMod) - ); - console.log("Proxy deployed at:", address(proxy)); - - console.log("Fee Timelock Period:", config.feeTimelockPeriod); - console.log("Fee Expire Time:", config.feeExpireTime); - console.log( - "Withdrawal Timelock Period:", - config.withdrawalTimelockPeriod - ); - console.log("Withdrawal Expire Time:", config.withdrawalExpireTime); - console.log( - "Obligation Timelock Period:", - config.obligationTimelockPeriod - ); - console.log("Obligation Expire Time:", config.obligationExpireTime); - console.log( - "Token Update Timelock Period:", - config.tokenUpdateTimelockPeriod - ); - console.log("Max Shares:", config.maxShares); - console.log("Max Fee Increment:", config.maxFeeIncrement); - vm.stopBroadcast(); - } -} diff --git a/scripts/UpgradeProxy.s.sol b/scripts/UpgradeProxy.s.sol deleted file mode 100644 index 2ac113e5..00000000 --- a/scripts/UpgradeProxy.s.sol +++ /dev/null @@ -1,32 +0,0 @@ -// SPDX-License-Identifier: GPL-3.0 -pragma solidity 0.8.29; - -import { Script, console } from "@ssv/forge-std/Script.sol"; - -interface IUUPSUpgradeable { - function upgradeToAndCall( - address newImplementation, - bytes calldata data - ) external; -} - -// solhint-disable no-console -contract UpgradeScript is Script { - function run() external { - vm.startBroadcast(); - - address proxyAddress = vm.envAddress("PROXY_ADDRESS"); - address newImplementation = vm.envAddress("IMPLEMENTATION_ADDRESS"); - - IUUPSUpgradeable(proxyAddress).upgradeToAndCall(newImplementation, ""); - - console.log( - "Proxy ", - proxyAddress, - " upgraded to new implementation: ", - newImplementation - ); - - vm.stopBroadcast(); - } -} diff --git a/src/core/libraries/ProtocolStorageLib.sol b/src/core/libraries/ProtocolStorageLib.sol index 50136616..579968ef 100644 --- a/src/core/libraries/ProtocolStorageLib.sol +++ b/src/core/libraries/ProtocolStorageLib.sol @@ -13,12 +13,12 @@ library ProtocolStorageLib { uint32 obligationExpireTime; uint32 tokenUpdateTimelockPeriod; uint32 maxFeeIncrement; + uint256 maxShares; // each bit, starting from the LSB, represents a DISABLED feature // bit 0 = slashingDisabled // bit 1 = withdrawalsDisabled // ... uint32 disabledFeatures; - uint256 maxShares; } uint256 private constant SSV_STORAGE_POSITION = diff --git a/test/modules/SlashingManager.bapp.t.sol b/test/modules/SlashingManager.bapp.t.sol index df1a36d2..9f8a0255 100644 --- a/test/modules/SlashingManager.bapp.t.sol +++ b/test/modules/SlashingManager.bapp.t.sol @@ -851,7 +851,6 @@ contract SlashingManagerTest is StrategyManagerTest { function testSlashBAppAdjustBasicETH() public { uint256 depositAmount = 100 ether; address token = ETH_ADDRESS; - // uint256 slashAmount = 10 ether; uint32 slashPercentage = 100; uint32 percentage = 10_000; uint256 slashAmount = calculateSlashAmount( From dddaa6f8fb0452079c939db009d98cc3e3b44ba1 Mon Sep 17 00:00:00 2001 From: Marco Tabasco Date: Fri, 2 May 2025 16:48:23 +0200 Subject: [PATCH 07/24] Release/v0.1.0 (#46) * docs: slashing & withdrawal mechanics * chore: stage & prod deployment --- .gitignore | 7 +- README.md | 74 +-- artifacts/deploy-hoodi-prod.json | 25 + artifacts/deploy-hoodi-stage.json | 24 +- docs/.gitignore | 1 + docs/book.css | 13 + docs/book.toml | 13 + docs/solidity.min.js | 74 +++ docs/src/README.md | 132 ++++ docs/src/SUMMARY.md | 34 + docs/src/src/README.md | 5 + docs/src/src/core/README.md | 7 + .../SSVBasedApps.sol/contract.SSVBasedApps.md | 572 +++++++++++++++++ .../interface.IBasedAppManager.md | 76 +++ .../interfaces/ICore.sol/interface.ICore.md | 105 +++ .../interface.IProtocolManager.md | 129 ++++ .../interface.ISSVBasedApps.md | 59 ++ .../interface.IStrategyManager.md | 449 +++++++++++++ docs/src/src/core/interfaces/README.md | 8 + .../CoreStorageLib.sol/enum.SSVCoreModules.md | 12 + .../library.CoreStorageLib.md | 46 ++ .../library.ProtocolStorageLib.md | 40 ++ docs/src/src/core/libraries/README.md | 8 + .../constants.ValidationLib.md | 15 + .../library.ValidationLib.md | 52 ++ .../contract.BasedAppsManager.md | 75 +++ .../contract.ProtocolManager.md | 93 +++ docs/src/src/core/modules/README.md | 6 + .../contract.StrategyManager.md | 604 ++++++++++++++++++ docs/src/src/middleware/README.md | 6 + docs/src/src/middleware/examples/README.md | 4 + .../contract.WhitelistExample.md | 27 + .../IBasedApp.sol/interface.IBasedApp.md | 59 ++ .../interface.IBasedAppWhitelisted.md | 44 ++ docs/src/src/middleware/interfaces/README.md | 5 + .../abstract.BasedAppWhitelisted.md | 30 + docs/src/src/middleware/modules/README.md | 6 + .../abstract.AccessControlBasedApp.md | 106 +++ .../abstract.OwnableBasedApp.md | 77 +++ .../middleware/modules/core+roles/README.md | 5 + .../BasedAppCore.sol/abstract.BasedAppCore.md | 167 +++++ .../src/src/middleware/modules/core/README.md | 4 + .../bApp-onboarding.md | 0 .../feature-activation.md | 0 guides/generations.md | 115 ++++ guides/img/sw_correlated.png | Bin 0 -> 360443 bytes guides/img/sw_early_attack.png | Bin 0 -> 365604 bytes guides/img/sw_example.png | Bin 0 -> 226354 bytes guides/img/sw_late_attack.png | Bin 0 -> 323273 bytes guides/slashing-and-withdrawals.md | 221 +++++++ package-lock.json | 4 +- package.json | 2 +- script/DeployAll.sol | 57 +- script/config/hoodi-stage.json | 12 +- src/core/SSVBasedApps.sol | 2 +- src/core/libraries/ProtocolStorageLib.sol | 2 +- src/core/modules/BasedAppsManager.sol | 2 +- test/helpers/Setup.t.sol | 2 +- 58 files changed, 3622 insertions(+), 95 deletions(-) create mode 100644 artifacts/deploy-hoodi-prod.json create mode 100644 docs/.gitignore create mode 100644 docs/book.css create mode 100644 docs/book.toml create mode 100644 docs/solidity.min.js create mode 100644 docs/src/README.md create mode 100644 docs/src/SUMMARY.md create mode 100644 docs/src/src/README.md create mode 100644 docs/src/src/core/README.md create mode 100644 docs/src/src/core/SSVBasedApps.sol/contract.SSVBasedApps.md create mode 100644 docs/src/src/core/interfaces/IBasedAppManager.sol/interface.IBasedAppManager.md create mode 100644 docs/src/src/core/interfaces/ICore.sol/interface.ICore.md create mode 100644 docs/src/src/core/interfaces/IProtocolManager.sol/interface.IProtocolManager.md create mode 100644 docs/src/src/core/interfaces/ISSVBasedApps.sol/interface.ISSVBasedApps.md create mode 100644 docs/src/src/core/interfaces/IStrategyManager.sol/interface.IStrategyManager.md create mode 100644 docs/src/src/core/interfaces/README.md create mode 100644 docs/src/src/core/libraries/CoreStorageLib.sol/enum.SSVCoreModules.md create mode 100644 docs/src/src/core/libraries/CoreStorageLib.sol/library.CoreStorageLib.md create mode 100644 docs/src/src/core/libraries/ProtocolStorageLib.sol/library.ProtocolStorageLib.md create mode 100644 docs/src/src/core/libraries/README.md create mode 100644 docs/src/src/core/libraries/ValidationLib.sol/constants.ValidationLib.md create mode 100644 docs/src/src/core/libraries/ValidationLib.sol/library.ValidationLib.md create mode 100644 docs/src/src/core/modules/BasedAppsManager.sol/contract.BasedAppsManager.md create mode 100644 docs/src/src/core/modules/ProtocolManager.sol/contract.ProtocolManager.md create mode 100644 docs/src/src/core/modules/README.md create mode 100644 docs/src/src/core/modules/StrategyManager.sol/contract.StrategyManager.md create mode 100644 docs/src/src/middleware/README.md create mode 100644 docs/src/src/middleware/examples/README.md create mode 100644 docs/src/src/middleware/examples/WhitelistExample.sol/contract.WhitelistExample.md create mode 100644 docs/src/src/middleware/interfaces/IBasedApp.sol/interface.IBasedApp.md create mode 100644 docs/src/src/middleware/interfaces/IBasedAppWhitelisted.sol/interface.IBasedAppWhitelisted.md create mode 100644 docs/src/src/middleware/interfaces/README.md create mode 100644 docs/src/src/middleware/modules/BasedAppWhitelisted.sol/abstract.BasedAppWhitelisted.md create mode 100644 docs/src/src/middleware/modules/README.md create mode 100644 docs/src/src/middleware/modules/core+roles/AccessControlBasedApp.sol/abstract.AccessControlBasedApp.md create mode 100644 docs/src/src/middleware/modules/core+roles/OwnableBasedApp.sol/abstract.OwnableBasedApp.md create mode 100644 docs/src/src/middleware/modules/core+roles/README.md create mode 100644 docs/src/src/middleware/modules/core/BasedAppCore.sol/abstract.BasedAppCore.md create mode 100644 docs/src/src/middleware/modules/core/README.md rename doc/bAppOnBoarding.md => guides/bApp-onboarding.md (100%) rename doc/feature_activation.md => guides/feature-activation.md (100%) create mode 100644 guides/generations.md create mode 100644 guides/img/sw_correlated.png create mode 100644 guides/img/sw_early_attack.png create mode 100644 guides/img/sw_example.png create mode 100644 guides/img/sw_late_attack.png create mode 100644 guides/slashing-and-withdrawals.md diff --git a/.gitignore b/.gitignore index 2ab6307d..68a6866c 100644 --- a/.gitignore +++ b/.gitignore @@ -8,9 +8,6 @@ out/ /broadcast/**/dry-run/ /broadcast -# Docs -docs/ - # Dotenv file .env @@ -21,6 +18,4 @@ coverage/ report/ lcov.info -.gas-snapshot - -test.txt \ No newline at end of file +.gas-snapshot \ No newline at end of file diff --git a/README.md b/README.md index 2f625457..dda8eab2 100644 --- a/README.md +++ b/README.md @@ -61,82 +61,25 @@ __`❍ forge test`__   -## 🔨 _Slashing Mechanism_ +## 🔨 _Slashing & Withdrawals Mechanisms_ -The `slash` function allows for the reduction of a strategy’s token balance under specific conditions, either as a penalty or to enforce protocol-defined behavior. Slashing can happen in two distinct modes, depending on whether: +[Slashing & Withdrawals](./guides/slashing-and-withdrawals.md) -**1)** The bApp is a compliant smart contract; +[Generation pattern](./guides/generations.md) -**2)** The bApp is a non-compliant smart contract or an EOA. +## :gear: _Feature Activation_ -### 🧠 Compliant BApp - -If the bApp is a compliant contract implementing the required interface `IBasedApp`, - -The slash function of the bApp is called: `(success, receiver, exit) = IBasedApp(bApp).slash(...)` - -* `data` parameter is forwarded and may act as a proof or auxiliary input. - -* The bApp decides: - - * Who receives the slashed funds by setting the `receiver` fund, it can burn by setting the receiver as `address(0)`; - - * Whether to exit the strategy or adjust obligations; - - * If `exit == true`, the strategy is exited and the obligation value is set to 0; - - * Otherwise, obligations are adjusted proportionally based on remaining balances, the new obligated amount is set to the previous one less the slashed amount; - - * Funds are credited to the receiver in the slashing fund. - -### 🔐 Non-compliant bApp (EOA or Non-compliant Contract) - -If the bApp is an EOA or does not comply with the required interface: - -* Only the bApp itself can invoke slashing; - -* The receiver of slashed funds is forcibly set to the bApp itself; - -* The strategy is always exited (no obligation adjustment); - -* Funds are added to the bApp’s slashing fund. - -### ⏳ Post Slashing - -⚠️ Important: After an obligation has been exited, it can be updated again to a value greater than 0, but only after a 14-day obligation timelock. - -This acts as a safeguard to prevent immediate re-entry and encourages more deliberate strategy participation. - -### 💸 Slashing Fund - -Slashed tokens are not immediately transferred. They are deposited into an internal slashing fund. - -The `receiver` (set during slashing) can later withdraw them using: - -``` -function withdrawSlashingFund(address token, uint256 amount) external -function withdrawETHSlashingFund(uint256 amount) external -``` - -These functions verify balances and authorize the caller to retrieve their accumulated slashed tokens. - -  - -## :gear: _Feature activation_ - -[Feature activation](./specs/feature_activation.md) +[Feature Activation](./guides/feature-activation.md) ## :page_facing_up: _Whitepaper_ [Whitepaper](https://ssv.network/wp-content/uploads/2025/01/SSV2.0-Based-Applications-Protocol-1.pdf) -  ## :books: _More Resources_ -[Based Apps Onboarding Guide](./doc/bAppOnBoarding.md) +[Based Apps Onboarding Guide](./guides/bApp-onboarding.md) -  ## :rocket: _Deployments_ @@ -164,13 +107,12 @@ __`❍ updateModules`__: specifying the correct module id and the new module add __`❍ upgradeToAndCall`__: specifying the new implementation address. The data field can be left empty in this case. -There is also the `UpgradeProxy.s.sol` script file that can be run easily from the CLI. -### Public Testnet Holesky +### Public Testnet Hoodi | Name | Proxy | Implementation | Notes | | -------- | -------- | -------- | -------- | -| [`BasedApplications`](https://github.com/ssvlabs/based-applications/blob/main/src/BasedAppManager.sol) | [`0x1Bd6ceB98Daf7FfEB590236b720F81b65213836A`](https://holesky.etherscan.io/address/0x1Bd6ceB98Daf7FfEB590236b720F81b65213836A) | [`0x9a09A49870353867b0ce9901B44E84C32B2A47AC`](https://holesky.etherscan.io/address/0x9a09A49870353867b0ce9901B44E84C32B2A47AC) | Proxy: [`UUPS@5.1.0`](https://github.com/OpenZeppelin/openzeppelin-contracts-upgradeable/blob/v5.1.0/contracts/proxy/utils/UUPSUpgradeable.sol) | +| [`SSVBasedApps`](https://github.com/ssvlabs/based-applications/blob/main/src/BasedAppManager.sol) | [``](https://holesky.etherscan.io/address/0x1Bd6ceB98Daf7FfEB590236b720F81b65213836A) | [``](https://holesky.etherscan.io/address/0x9a09A49870353867b0ce9901B44E84C32B2A47AC) | Proxy: [`UUPS@5.1.0`](https://github.com/OpenZeppelin/openzeppelin-contracts-upgradeable/blob/v5.1.0/contracts/proxy/utils/UUPSUpgradeable.sol) |   diff --git a/artifacts/deploy-hoodi-prod.json b/artifacts/deploy-hoodi-prod.json new file mode 100644 index 00000000..d9a64146 --- /dev/null +++ b/artifacts/deploy-hoodi-prod.json @@ -0,0 +1,25 @@ +{ + "addresses": { + "BAppsModule": "0xCf9894B93C34E9Af8E912EcE7089DCE879740141", + "ProtocolModule": "0xA11022BB79cE25F9bAdfDB426746A4a47a1FD768", + "SSVBasedAppsImpl": "0xe5a75122b158D405518C6752aEE5D40b8FB1C364", + "SSVBasedAppsProxy": "0xc7fCFeEc5FB9962bDC2234A7a25dCec739e27f9f", + "StrategyModule": "0x0B81DcaF34f4455221A7d446eA41A70B8Baf91FF" + }, + "chainInfo": { + "chainId": 560048, + "deploymentBlock": 260728 + }, + "parameters": { + "disabledFeatures": 0, + "feeExpireTime": 3600, + "feeTimelockPeriod": 86400, + "maxFeeIncrement": 500, + "maxShares": 100000000000000000000000000000000000000000000000000, + "obligationExpireTime": 86400, + "obligationTimelockPeriod": 172800, + "tokenUpdateTimelockPeriod": 3600, + "withdrawalExpireTime": 86400, + "withdrawalTimelockPeriod": 172800 + } +} \ No newline at end of file diff --git a/artifacts/deploy-hoodi-stage.json b/artifacts/deploy-hoodi-stage.json index 8923d47c..3e35ccf0 100644 --- a/artifacts/deploy-hoodi-stage.json +++ b/artifacts/deploy-hoodi-stage.json @@ -1,13 +1,25 @@ { "addresses": { - "BAppsModule": "0xF2b0c91b5256aD75585438C2722d5E7119666288", - "ProtocolModule": "0x5C08fb73Ba1E8Fd2894e0A3706C1e4CfBEA3F833", - "SSVBasedAppsImpl": "0x7E438E9264B431Fb62fbE2BFa350b9860cf7E8AA", - "SSVBasedAppsProxy": "0x1F3d4e4aEeA5406e3A7119d8daa31C67Ed3B13de", - "StrategyModule": "0x4b4638B067946c395C32CD0DFE5399E0899C7542" + "BAppsModule": "0xdC97f7935Ed6FDcA407dDdE95EB26f7807E52Dc9", + "ProtocolModule": "0x7AadaE0f159eECCe6a4Faad78FFF94e1eab4C540", + "SSVBasedAppsImpl": "0xfCD7243D8fBb441497fEd67e19B7681C27BB20aD", + "SSVBasedAppsProxy": "0x40d959B95e7c56962D6d388d87921c03734b9C2C", + "StrategyModule": "0x7cF08Af55c6939BB748D4c4D2d219791EDe9dBC1" }, "chainInfo": { "chainId": 560048, - "deploymentBlock": 253405 + "deploymentBlock": 259312 + }, + "parameters": { + "disabledFeatures": 0, + "feeExpireTime": 3600, + "feeTimelockPeriod": 300, + "maxFeeIncrement": 500, + "maxShares": 100000000000000000000000000000000000000000000000000, + "obligationExpireTime": 3600, + "obligationTimelockPeriod": 300, + "tokenUpdateTimelockPeriod": 300, + "withdrawalExpireTime": 3600, + "withdrawalTimelockPeriod": 300 } } \ No newline at end of file diff --git a/docs/.gitignore b/docs/.gitignore new file mode 100644 index 00000000..4e42a1bc --- /dev/null +++ b/docs/.gitignore @@ -0,0 +1 @@ +book/ \ No newline at end of file diff --git a/docs/book.css b/docs/book.css new file mode 100644 index 00000000..b5ce903f --- /dev/null +++ b/docs/book.css @@ -0,0 +1,13 @@ +table { + margin: 0 auto; + border-collapse: collapse; + width: 100%; +} + +table td:first-child { + width: 15%; +} + +table td:nth-child(2) { + width: 25%; +} \ No newline at end of file diff --git a/docs/book.toml b/docs/book.toml new file mode 100644 index 00000000..a2e2683a --- /dev/null +++ b/docs/book.toml @@ -0,0 +1,13 @@ +[book] +src = "src" +title = "" + +[output.html] +no-section-label = true +additional-js = ["solidity.min.js"] +additional-css = ["book.css"] +mathjax-support = true +git-repository-url = "https://github.com/ssvlabs/based-applications" + +[output.html.fold] +enable = true diff --git a/docs/solidity.min.js b/docs/solidity.min.js new file mode 100644 index 00000000..19249329 --- /dev/null +++ b/docs/solidity.min.js @@ -0,0 +1,74 @@ +hljs.registerLanguage("solidity",(()=>{"use strict";function e(){try{return!0 +}catch(e){return!1}} +var a=/-?(\b0[xX]([a-fA-F0-9]_?)*[a-fA-F0-9]|(\b[1-9](_?\d)*(\.((\d_?)*\d)?)?|\.\d(_?\d)*)([eE][-+]?\d(_?\d)*)?|\b0)(?!\w|\$)/ +;e()&&(a=a.source.replace(/\\b/g,"(?{ +var a=r(e),o=l(e),c=/[A-Za-z_$][A-Za-z_$0-9.]*/,d=e.inherit(e.TITLE_MODE,{ +begin:/[A-Za-z$_][0-9A-Za-z$_]*/,lexemes:c,keywords:n}),u={className:"params", +begin:/\(/,end:/\)/,excludeBegin:!0,excludeEnd:!0,lexemes:c,keywords:n, +contains:[e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,a,o,s]},_={ +className:"operator",begin:/:=|->/};return{keywords:n,lexemes:c, +contains:[a,o,i,t,e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,s,_,{ +className:"function",lexemes:c,beginKeywords:"function",end:"{",excludeEnd:!0, +contains:[d,u,e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,_]}]}}, +solAposStringMode:r,solQuoteStringMode:l,HEX_APOS_STRING_MODE:i, +HEX_QUOTE_STRING_MODE:t,SOL_NUMBER:s,isNegativeLookbehindAvailable:e} +;const{baseAssembly:c,solAposStringMode:d,solQuoteStringMode:u,HEX_APOS_STRING_MODE:_,HEX_QUOTE_STRING_MODE:m,SOL_NUMBER:b,isNegativeLookbehindAvailable:E}=o +;return e=>{for(var a=d(e),s=u(e),n=[],i=0;i<32;i++)n[i]=i+1 +;var t=n.map((e=>8*e)),r=[];for(i=0;i<=80;i++)r[i]=i +;var l=n.map((e=>"bytes"+e)).join(" ")+" ",o=t.map((e=>"uint"+e)).join(" ")+" ",g=t.map((e=>"int"+e)).join(" ")+" ",M=[].concat.apply([],t.map((e=>r.map((a=>e+"x"+a))))),p={ +keyword:"var bool string int uint "+g+o+"byte bytes "+l+"fixed ufixed "+M.map((e=>"fixed"+e)).join(" ")+" "+M.map((e=>"ufixed"+e)).join(" ")+" enum struct mapping address new delete if else for while continue break return throw emit try catch revert unchecked _ function modifier event constructor fallback receive error virtual override constant immutable anonymous indexed storage memory calldata external public internal payable pure view private returns import from as using pragma contract interface library is abstract type assembly", +literal:"true false wei gwei szabo finney ether seconds minutes hours days weeks years", +built_in:"self this super selfdestruct suicide now msg block tx abi blockhash gasleft assert require Error Panic sha3 sha256 keccak256 ripemd160 ecrecover addmod mulmod log0 log1 log2 log3 log4" +},O={className:"operator",begin:/[+\-!~*\/%<>&^|=]/ +},C=/[A-Za-z_$][A-Za-z_$0-9]*/,N={className:"params",begin:/\(/,end:/\)/, +excludeBegin:!0,excludeEnd:!0,lexemes:C,keywords:p, +contains:[e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,a,s,b,"self"]},f={ +begin:/\.\s*/,end:/[^A-Za-z0-9$_\.]/,excludeBegin:!0,excludeEnd:!0,keywords:{ +built_in:"gas value selector address length push pop send transfer call callcode delegatecall staticcall balance code codehash wrap unwrap name creationCode runtimeCode interfaceId min max" +},relevance:2},y=e.inherit(e.TITLE_MODE,{begin:/[A-Za-z$_][0-9A-Za-z$_]*/, +lexemes:C,keywords:p}),w={className:"built_in", +begin:(E()?"(?`](https://holesky.etherscan.io/address/0x1Bd6ceB98Daf7FfEB590236b720F81b65213836A) | [``](https://holesky.etherscan.io/address/0x9a09A49870353867b0ce9901B44E84C32B2A47AC) | Proxy: [`UUPS@5.1.0`](https://github.com/OpenZeppelin/openzeppelin-contracts-upgradeable/blob/v5.1.0/contracts/proxy/utils/UUPSUpgradeable.sol) | + +  + +## :scroll: _License_ + +2025 SSV Network + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, version 3 of the License, or any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the [GNU General Public License](LICENSE) +along with this program. If not, see . \ No newline at end of file diff --git a/docs/src/SUMMARY.md b/docs/src/SUMMARY.md new file mode 100644 index 00000000..2a0eba86 --- /dev/null +++ b/docs/src/SUMMARY.md @@ -0,0 +1,34 @@ +# Summary +- [Home](README.md) +# src + - [❱ core](src/core/README.md) + - [❱ interfaces](src/core/interfaces/README.md) + - [IBasedAppManager](src/core/interfaces/IBasedAppManager.sol/interface.IBasedAppManager.md) + - [ICore](src/core/interfaces/ICore.sol/interface.ICore.md) + - [IProtocolManager](src/core/interfaces/IProtocolManager.sol/interface.IProtocolManager.md) + - [ISSVBasedApps](src/core/interfaces/ISSVBasedApps.sol/interface.ISSVBasedApps.md) + - [IStrategyManager](src/core/interfaces/IStrategyManager.sol/interface.IStrategyManager.md) + - [❱ libraries](src/core/libraries/README.md) + - [SSVCoreModules](src/core/libraries/CoreStorageLib.sol/enum.SSVCoreModules.md) + - [CoreStorageLib](src/core/libraries/CoreStorageLib.sol/library.CoreStorageLib.md) + - [ProtocolStorageLib](src/core/libraries/ProtocolStorageLib.sol/library.ProtocolStorageLib.md) + - [ValidationLib](src/core/libraries/ValidationLib.sol/library.ValidationLib.md) + - [ValidationLib constants](src/core/libraries/ValidationLib.sol/constants.ValidationLib.md) + - [❱ modules](src/core/modules/README.md) + - [BasedAppsManager](src/core/modules/BasedAppsManager.sol/contract.BasedAppsManager.md) + - [ProtocolManager](src/core/modules/ProtocolManager.sol/contract.ProtocolManager.md) + - [StrategyManager](src/core/modules/StrategyManager.sol/contract.StrategyManager.md) + - [SSVBasedApps](src/core/SSVBasedApps.sol/contract.SSVBasedApps.md) + - [❱ middleware](src/middleware/README.md) + - [❱ examples](src/middleware/examples/README.md) + - [WhitelistExample](src/middleware/examples/WhitelistExample.sol/contract.WhitelistExample.md) + - [❱ interfaces](src/middleware/interfaces/README.md) + - [IBasedApp](src/middleware/interfaces/IBasedApp.sol/interface.IBasedApp.md) + - [IBasedAppWhitelisted](src/middleware/interfaces/IBasedAppWhitelisted.sol/interface.IBasedAppWhitelisted.md) + - [❱ modules](src/middleware/modules/README.md) + - [❱ core](src/middleware/modules/core/README.md) + - [BasedAppCore](src/middleware/modules/core/BasedAppCore.sol/abstract.BasedAppCore.md) + - [❱ core+roles](src/middleware/modules/core+roles/README.md) + - [AccessControlBasedApp](src/middleware/modules/core+roles/AccessControlBasedApp.sol/abstract.AccessControlBasedApp.md) + - [OwnableBasedApp](src/middleware/modules/core+roles/OwnableBasedApp.sol/abstract.OwnableBasedApp.md) + - [BasedAppWhitelisted](src/middleware/modules/BasedAppWhitelisted.sol/abstract.BasedAppWhitelisted.md) diff --git a/docs/src/src/README.md b/docs/src/src/README.md new file mode 100644 index 00000000..2c17bcbb --- /dev/null +++ b/docs/src/src/README.md @@ -0,0 +1,5 @@ + + +# Contents +- [core](/src/core) +- [middleware](/src/middleware) diff --git a/docs/src/src/core/README.md b/docs/src/src/core/README.md new file mode 100644 index 00000000..3d574836 --- /dev/null +++ b/docs/src/src/core/README.md @@ -0,0 +1,7 @@ + + +# Contents +- [interfaces](/src/core/interfaces) +- [libraries](/src/core/libraries) +- [modules](/src/core/modules) +- [SSVBasedApps](SSVBasedApps.sol/contract.SSVBasedApps.md) diff --git a/docs/src/src/core/SSVBasedApps.sol/contract.SSVBasedApps.md b/docs/src/src/core/SSVBasedApps.sol/contract.SSVBasedApps.md new file mode 100644 index 00000000..879f1405 --- /dev/null +++ b/docs/src/src/core/SSVBasedApps.sol/contract.SSVBasedApps.md @@ -0,0 +1,572 @@ +# SSVBasedApps +[Git Source](https://github.com/ssvlabs/based-applications/blob/f462573124548b82b6a002d4ef069bdfacf5c637/src/core/SSVBasedApps.sol) + +**Inherits:** +[ISSVBasedApps](/src/core/interfaces/ISSVBasedApps.sol/interface.ISSVBasedApps.md), UUPSUpgradeable, Ownable2StepUpgradeable, [IBasedAppManager](/src/core/interfaces/IBasedAppManager.sol/interface.IBasedAppManager.md), [IStrategyManager](/src/core/interfaces/IStrategyManager.sol/interface.IStrategyManager.md), [IProtocolManager](/src/core/interfaces/IProtocolManager.sol/interface.IProtocolManager.md) + +**Author:** + +Marco Tabasco +Riccardo Persiani + +The Core Contract to manage Based Applications, Validator Balance Delegations & Strategies for SSV Based Applications Platform. +GLOSSARY ** + +*The following terms are used throughout the contract: +- **Account**: An Ethereum address that can: +1. Delegate its balance to another address. +2. Create and manage a strategy. +3. Create and manage or be a bApp. +- **Based Application**: or bApp. +The entity that requests validation services from operators. On-chain is represented by an Ethereum address. +A bApp can be created by registering to this Core Contract, specifying the risk level. +The bApp can also specify one or many tokens as slashable capital to be provided by strategies. +During the bApp registration, the bApp owner can set the shared risk level and optionally a metadata URI, to be used in the SSV bApp marketplace. +- **Delegator**: An Ethereum address that has Ethereum Validator Balance of Staked ETH within the SSV platform. This capital delegated is non-slashable. +The delegator can decide to delegate its balance to itself or/and to a single or many receiver accounts. +The delegator has to set its address as the receiver account, when the delegator wants to delegate its balance to itself. +The delegated balance goes to an account and not to a strategy. This receiver account can manage only a single strategy. +- **Strategy**: The entity that manages the slashable assets bounded to based apps. +The strategy has its own balance, accounted in this core contract. +The strategy can be created by an account that becomes its owner. +The assets can be ERC20 tokens or Native ETH tokens, that can be deposited or withdrawn by the participants. +The strategy can manage its assets via s.obligations to one or many bApps. +- **Obligation**: A percentage of the strategy's balance of ERC20 (or Native ETH), that is reserved for securing a bApp. +The obligation is set exclusively by the strategy owner and can be updated by the strategy owner. +The tokens specified in an obligation needs to match the tokens specified in the bApp. +AUTHORS *** + + +## Functions +### initialize + + +```solidity +function initialize( + address owner_, + IBasedAppManager ssvBasedAppManger_, + IStrategyManager ssvStrategyManager_, + IProtocolManager protocolManager_, + ProtocolStorageLib.Data calldata config +) external override initializer onlyProxy; +``` + +### __SSVBasedApplications_init_unchained + + +```solidity +function __SSVBasedApplications_init_unchained( + IBasedAppManager ssvBasedAppManger_, + IStrategyManager ssvStrategyManager_, + IProtocolManager protocolManager_, + ProtocolStorageLib.Data calldata config +) internal onlyInitializing; +``` + +### constructor + +**Note:** +oz-upgrades-unsafe-allow: constructor + + +```solidity +constructor(); +``` + +### _authorizeUpgrade + + +```solidity +function _authorizeUpgrade(address) internal override onlyOwner; +``` + +### updateBAppMetadataURI + + +```solidity +function updateBAppMetadataURI(string calldata metadataURI) external; +``` + +### registerBApp + + +```solidity +function registerBApp(address[] calldata tokens, uint32[] calldata sharedRiskLevels, string calldata metadataURI) external; +``` + +### updateBAppsTokens + + +```solidity +function updateBAppsTokens(ICore.TokenConfig[] calldata tokenConfigs) external; +``` + +### createObligation + + +```solidity +function createObligation(uint32 strategyId, address bApp, address token, uint32 obligationPercentage) external; +``` + +### createStrategy + + +```solidity +function createStrategy(uint32 fee, string calldata metadataURI) external returns (uint32 strategyId); +``` + +### delegateBalance + + +```solidity +function delegateBalance(address receiver, uint32 percentage) external; +``` + +### depositERC20 + + +```solidity +function depositERC20(uint32 strategyId, IERC20 token, uint256 amount) external; +``` + +### depositETH + + +```solidity +function depositETH(uint32 strategyId) external payable; +``` + +### finalizeFeeUpdate + + +```solidity +function finalizeFeeUpdate(uint32 strategyId) external; +``` + +### finalizeUpdateObligation + + +```solidity +function finalizeUpdateObligation(uint32 strategyId, address bApp, address token) external; +``` + +### finalizeWithdrawal + + +```solidity +function finalizeWithdrawal(uint32 strategyId, IERC20 token) external; +``` + +### finalizeWithdrawalETH + + +```solidity +function finalizeWithdrawalETH(uint32 strategyId) external; +``` + +### getSlashableBalance + + +```solidity +function getSlashableBalance(uint32 strategyId, address bApp, address token) public view returns (uint256 slashableBalance); +``` + +### proposeFeeUpdate + + +```solidity +function proposeFeeUpdate(uint32 strategyId, uint32 proposedFee) external; +``` + +### proposeUpdateObligation + + +```solidity +function proposeUpdateObligation(uint32 strategyId, address bApp, address token, uint32 obligationPercentage) external; +``` + +### proposeWithdrawal + + +```solidity +function proposeWithdrawal(uint32 strategyId, address token, uint256 amount) external; +``` + +### proposeWithdrawalETH + + +```solidity +function proposeWithdrawalETH(uint32 strategyId, uint256 amount) external; +``` + +### reduceFee + + +```solidity +function reduceFee(uint32 strategyId, uint32 proposedFee) external; +``` + +### removeDelegatedBalance + + +```solidity +function removeDelegatedBalance(address receiver) external; +``` + +### updateDelegatedBalance + + +```solidity +function updateDelegatedBalance(address receiver, uint32 percentage) external; +``` + +### updateStrategyMetadataURI + + +```solidity +function updateStrategyMetadataURI(uint32 strategyId, string calldata metadataURI) external; +``` + +### updateAccountMetadataURI + + +```solidity +function updateAccountMetadataURI(string calldata metadataURI) external; +``` + +### slash + + +```solidity +function slash(uint32 strategyId, address bApp, address token, uint32 percentage, bytes calldata data) external; +``` + +### withdrawSlashingFund + + +```solidity +function withdrawSlashingFund(address token, uint256 amount) external; +``` + +### withdrawETHSlashingFund + + +```solidity +function withdrawETHSlashingFund(uint256 amount) external; +``` + +### optInToBApp + + +```solidity +function optInToBApp(uint32 strategyId, address bApp, address[] calldata tokens, uint32[] calldata obligationPercentages, bytes calldata data) external; +``` + +### updateFeeTimelockPeriod + + +```solidity +function updateFeeTimelockPeriod(uint32 value) external onlyOwner; +``` + +### updateFeeExpireTime + + +```solidity +function updateFeeExpireTime(uint32 value) external onlyOwner; +``` + +### updateWithdrawalTimelockPeriod + + +```solidity +function updateWithdrawalTimelockPeriod(uint32 value) external onlyOwner; +``` + +### updateWithdrawalExpireTime + + +```solidity +function updateWithdrawalExpireTime(uint32 value) external onlyOwner; +``` + +### updateObligationTimelockPeriod + + +```solidity +function updateObligationTimelockPeriod(uint32 value) external onlyOwner; +``` + +### updateObligationExpireTime + + +```solidity +function updateObligationExpireTime(uint32 value) external onlyOwner; +``` + +### updateTokenUpdateTimelockPeriod + + +```solidity +function updateTokenUpdateTimelockPeriod(uint32 value) external onlyOwner; +``` + +### updateMaxShares + + +```solidity +function updateMaxShares(uint256 value) external onlyOwner; +``` + +### updateMaxFeeIncrement + + +```solidity +function updateMaxFeeIncrement(uint32 value) external onlyOwner; +``` + +### updateDisabledFeatures + + +```solidity +function updateDisabledFeatures(uint32 disabledFeatures) external onlyOwner; +``` + +### delegations + + +```solidity +function delegations(address account, address receiver) external view returns (uint32); +``` + +### totalDelegatedPercentage + + +```solidity +function totalDelegatedPercentage(address delegator) external view returns (uint32); +``` + +### registeredBApps + + +```solidity +function registeredBApps(address bApp) external view returns (bool isRegistered); +``` + +### strategies + + +```solidity +function strategies(uint32 strategyId) external view returns (address strategyOwner, uint32 fee); +``` + +### ownedStrategies + + +```solidity +function ownedStrategies(address owner) external view returns (uint32[] memory strategyIds); +``` + +### strategyAccountShares + + +```solidity +function strategyAccountShares(uint32 strategyId, address account, address token) external view returns (uint256); +``` + +### strategyTotalBalance + + +```solidity +function strategyTotalBalance(uint32 strategyId, address token) external view returns (uint256); +``` + +### strategyTotalShares + + +```solidity +function strategyTotalShares(uint32 strategyId, address token) external view returns (uint256); +``` + +### strategyGeneration + + +```solidity +function strategyGeneration(uint32 strategyId, address token) external view returns (uint256); +``` + +### obligations + + +```solidity +function obligations(uint32 strategyId, address bApp, address token) external view returns (uint32 percentage, bool isSet); +``` + +### bAppTokens + + +```solidity +function bAppTokens(address bApp, address token) external view returns (uint32 currentValue, bool isSet, uint32 pendingValue, uint32 effectTime); +``` + +### accountBAppStrategy + + +```solidity +function accountBAppStrategy(address account, address bApp) external view returns (uint32); +``` + +### feeUpdateRequests + + +```solidity +function feeUpdateRequests(uint32 strategyId) external view returns (uint32 percentage, uint32 requestTime); +``` + +### withdrawalRequests + + +```solidity +function withdrawalRequests(uint32 strategyId, address account, address token) external view returns (uint256 shares, uint32 requestTime); +``` + +### obligationRequests + + +```solidity +function obligationRequests(uint32 strategyId, address token, address bApp) external view returns (uint32 percentage, uint32 requestTime); +``` + +### slashingFund + + +```solidity +function slashingFund(address account, address token) external view returns (uint256); +``` + +### maxPercentage + + +```solidity +function maxPercentage() external pure returns (uint32); +``` + +### ethAddress + + +```solidity +function ethAddress() external pure returns (address); +``` + +### maxShares + + +```solidity +function maxShares() external view returns (uint256); +``` + +### maxFeeIncrement + + +```solidity +function maxFeeIncrement() external view returns (uint32); +``` + +### feeTimelockPeriod + + +```solidity +function feeTimelockPeriod() external view returns (uint32); +``` + +### feeExpireTime + + +```solidity +function feeExpireTime() external view returns (uint32); +``` + +### withdrawalTimelockPeriod + + +```solidity +function withdrawalTimelockPeriod() external view returns (uint32); +``` + +### withdrawalExpireTime + + +```solidity +function withdrawalExpireTime() external view returns (uint32); +``` + +### obligationTimelockPeriod + + +```solidity +function obligationTimelockPeriod() external view returns (uint32); +``` + +### obligationExpireTime + + +```solidity +function obligationExpireTime() external view returns (uint32); +``` + +### disabledFeatures + + +```solidity +function disabledFeatures() external view returns (uint32); +``` + +### tokenUpdateTimelockPeriod + + +```solidity +function tokenUpdateTimelockPeriod() external view returns (uint32); +``` + +### getVersion + + +```solidity +function getVersion() external pure returns (string memory); +``` + +### getModuleAddress + +Retrieves the currently configured Module contract address. + + +```solidity +function getModuleAddress(SSVCoreModules moduleId) external view returns (address); +``` +**Parameters** + +|Name|Type|Description| +|----|----|-----------| +|`moduleId`|`SSVCoreModules`|The ID of the SSV Module.| + +**Returns** + +|Name|Type|Description| +|----|----|-----------| +|``|`address`|The address of the SSV Module.| + + +### updateModule + + +```solidity +function updateModule(SSVCoreModules[] calldata moduleIds, address[] calldata moduleAddresses) external onlyOwner; +``` + +### _delegateTo + + +```solidity +function _delegateTo(SSVCoreModules moduleId) internal; +``` + diff --git a/docs/src/src/core/interfaces/IBasedAppManager.sol/interface.IBasedAppManager.md b/docs/src/src/core/interfaces/IBasedAppManager.sol/interface.IBasedAppManager.md new file mode 100644 index 00000000..0f5a03d7 --- /dev/null +++ b/docs/src/src/core/interfaces/IBasedAppManager.sol/interface.IBasedAppManager.md @@ -0,0 +1,76 @@ +# IBasedAppManager +[Git Source](https://github.com/ssvlabs/based-applications/blob/f462573124548b82b6a002d4ef069bdfacf5c637/src/core/interfaces/IBasedAppManager.sol) + + +## Functions +### registerBApp + + +```solidity +function registerBApp(address[] calldata tokens, uint32[] calldata sharedRiskLevels, string calldata metadataURI) external; +``` + +### updateBAppMetadataURI + + +```solidity +function updateBAppMetadataURI(string calldata metadataURI) external; +``` + +### updateBAppsTokens + + +```solidity +function updateBAppsTokens(ICore.TokenConfig[] calldata tokenConfigs) external; +``` + +## Events +### BAppMetadataURIUpdated + +```solidity +event BAppMetadataURIUpdated(address indexed bApp, string metadataURI); +``` + +### BAppRegistered + +```solidity +event BAppRegistered(address indexed bApp, address[] tokens, uint32[] sharedRiskLevel, string metadataURI); +``` + +### BAppTokensUpdated + +```solidity +event BAppTokensUpdated(address indexed bApp, ICore.TokenConfig[] tokenConfigs); +``` + +## Errors +### BAppAlreadyRegistered + +```solidity +error BAppAlreadyRegistered(); +``` + +### BAppDoesNotSupportInterface + +```solidity +error BAppDoesNotSupportInterface(); +``` + +### BAppNotRegistered + +```solidity +error BAppNotRegistered(); +``` + +### TokenAlreadyAddedToBApp + +```solidity +error TokenAlreadyAddedToBApp(address token); +``` + +### ZeroAddressNotAllowed + +```solidity +error ZeroAddressNotAllowed(); +``` + diff --git a/docs/src/src/core/interfaces/ICore.sol/interface.ICore.md b/docs/src/src/core/interfaces/ICore.sol/interface.ICore.md new file mode 100644 index 00000000..c14f6948 --- /dev/null +++ b/docs/src/src/core/interfaces/ICore.sol/interface.ICore.md @@ -0,0 +1,105 @@ +# ICore +[Git Source](https://github.com/ssvlabs/based-applications/blob/f462573124548b82b6a002d4ef069bdfacf5c637/src/core/interfaces/ICore.sol) + + +## Structs +### SharedRiskLevel +Represents a SharedRiskLevel + + +```solidity +struct SharedRiskLevel { + uint32 currentValue; + bool isSet; + uint32 pendingValue; + uint32 effectTime; +} +``` + +### Obligation +Represents an Obligation + + +```solidity +struct Obligation { + uint32 percentage; + bool isSet; +} +``` + +### Strategy +Represents a Strategy + + +```solidity +struct Strategy { + address owner; + uint32 fee; +} +``` + +### FeeUpdateRequest +Represents a FeeUpdateRequest + + +```solidity +struct FeeUpdateRequest { + uint32 percentage; + uint32 requestTime; +} +``` + +### WithdrawalRequest +Represents a request for a withdrawal from a participant of a strategy + + +```solidity +struct WithdrawalRequest { + uint256 shares; + uint32 requestTime; +} +``` + +### ObligationRequest +Represents a change in the obligation in a strategy. Only the owner can submit one. + + +```solidity +struct ObligationRequest { + uint32 percentage; + uint32 requestTime; +} +``` + +### Shares +Represents the shares system of a strategy + + +```solidity +struct Shares { + uint256 totalTokenBalance; + uint256 totalShareBalance; + uint256 currentGeneration; + mapping(address => uint256) accountShareBalance; + mapping(address => uint256) accountGeneration; +} +``` + +### TokenUpdateRequest + +```solidity +struct TokenUpdateRequest { + TokenConfig[] tokens; + uint32 requestTime; +} +``` + +### TokenConfig + +```solidity +struct TokenConfig { + address token; + uint32 sharedRiskLevel; +} +``` + diff --git a/docs/src/src/core/interfaces/IProtocolManager.sol/interface.IProtocolManager.md b/docs/src/src/core/interfaces/IProtocolManager.sol/interface.IProtocolManager.md new file mode 100644 index 00000000..4672c707 --- /dev/null +++ b/docs/src/src/core/interfaces/IProtocolManager.sol/interface.IProtocolManager.md @@ -0,0 +1,129 @@ +# IProtocolManager +[Git Source](https://github.com/ssvlabs/based-applications/blob/f462573124548b82b6a002d4ef069bdfacf5c637/src/core/interfaces/IProtocolManager.sol) + + +## Functions +### updateFeeExpireTime + + +```solidity +function updateFeeExpireTime(uint32 value) external; +``` + +### updateFeeTimelockPeriod + + +```solidity +function updateFeeTimelockPeriod(uint32 value) external; +``` + +### updateMaxFeeIncrement + + +```solidity +function updateMaxFeeIncrement(uint32 value) external; +``` + +### updateMaxShares + + +```solidity +function updateMaxShares(uint256 value) external; +``` + +### updateObligationExpireTime + + +```solidity +function updateObligationExpireTime(uint32 value) external; +``` + +### updateObligationTimelockPeriod + + +```solidity +function updateObligationTimelockPeriod(uint32 value) external; +``` + +### updateTokenUpdateTimelockPeriod + + +```solidity +function updateTokenUpdateTimelockPeriod(uint32 value) external; +``` + +### updateWithdrawalExpireTime + + +```solidity +function updateWithdrawalExpireTime(uint32 value) external; +``` + +### updateWithdrawalTimelockPeriod + + +```solidity +function updateWithdrawalTimelockPeriod(uint32 value) external; +``` + +## Events +### FeeExpireTimeUpdated + +```solidity +event FeeExpireTimeUpdated(uint32 feeExpireTime); +``` + +### FeeTimelockPeriodUpdated + +```solidity +event FeeTimelockPeriodUpdated(uint32 feeTimelockPeriod); +``` + +### ObligationExpireTimeUpdated + +```solidity +event ObligationExpireTimeUpdated(uint32 obligationExpireTime); +``` + +### ObligationTimelockPeriodUpdated + +```solidity +event ObligationTimelockPeriodUpdated(uint32 obligationTimelockPeriod); +``` + +### TokenUpdateTimelockPeriodUpdated + +```solidity +event TokenUpdateTimelockPeriodUpdated(uint32 tokenUpdateTimelockPeriod); +``` + +### StrategyMaxFeeIncrementUpdated + +```solidity +event StrategyMaxFeeIncrementUpdated(uint32 maxFeeIncrement); +``` + +### StrategyMaxSharesUpdated + +```solidity +event StrategyMaxSharesUpdated(uint256 maxShares); +``` + +### WithdrawalExpireTimeUpdated + +```solidity +event WithdrawalExpireTimeUpdated(uint32 withdrawalExpireTime); +``` + +### WithdrawalTimelockPeriodUpdated + +```solidity +event WithdrawalTimelockPeriodUpdated(uint32 withdrawalTimelockPeriod); +``` + +### DisabledFeaturesUpdated + +```solidity +event DisabledFeaturesUpdated(uint32 disabledFeatures); +``` + diff --git a/docs/src/src/core/interfaces/ISSVBasedApps.sol/interface.ISSVBasedApps.md b/docs/src/src/core/interfaces/ISSVBasedApps.sol/interface.ISSVBasedApps.md new file mode 100644 index 00000000..cdffb5cb --- /dev/null +++ b/docs/src/src/core/interfaces/ISSVBasedApps.sol/interface.ISSVBasedApps.md @@ -0,0 +1,59 @@ +# ISSVBasedApps +[Git Source](https://github.com/ssvlabs/based-applications/blob/f462573124548b82b6a002d4ef069bdfacf5c637/src/core/interfaces/ISSVBasedApps.sol) + + +## Functions +### getModuleAddress + + +```solidity +function getModuleAddress(SSVCoreModules moduleId) external view returns (address); +``` + +### getVersion + + +```solidity +function getVersion() external pure returns (string memory version); +``` + +### initialize + + +```solidity +function initialize( + address owner_, + IBasedAppManager ssvBasedAppManger_, + IStrategyManager ssvStrategyManager_, + IProtocolManager protocolManager_, + ProtocolStorageLib.Data memory config +) external; +``` + +### updateModule + + +```solidity +function updateModule(SSVCoreModules[] calldata moduleIds, address[] calldata moduleAddresses) external; +``` + +## Events +### ModuleUpdated + +```solidity +event ModuleUpdated(SSVCoreModules indexed moduleId, address moduleAddress); +``` + +## Errors +### InvalidMaxFeeIncrement + +```solidity +error InvalidMaxFeeIncrement(); +``` + +### TargetModuleDoesNotExist + +```solidity +error TargetModuleDoesNotExist(uint8 moduleId); +``` + diff --git a/docs/src/src/core/interfaces/IStrategyManager.sol/interface.IStrategyManager.md b/docs/src/src/core/interfaces/IStrategyManager.sol/interface.IStrategyManager.md new file mode 100644 index 00000000..27fcf9dc --- /dev/null +++ b/docs/src/src/core/interfaces/IStrategyManager.sol/interface.IStrategyManager.md @@ -0,0 +1,449 @@ +# IStrategyManager +[Git Source](https://github.com/ssvlabs/based-applications/blob/f462573124548b82b6a002d4ef069bdfacf5c637/src/core/interfaces/IStrategyManager.sol) + + +## Functions +### createObligation + + +```solidity +function createObligation(uint32 strategyId, address bApp, address token, uint32 obligationPercentage) external; +``` + +### createStrategy + + +```solidity +function createStrategy(uint32 fee, string calldata metadataURI) external returns (uint32 strategyId); +``` + +### delegateBalance + + +```solidity +function delegateBalance(address receiver, uint32 percentage) external; +``` + +### depositERC20 + + +```solidity +function depositERC20(uint32 strategyId, IERC20 token, uint256 amount) external; +``` + +### depositETH + + +```solidity +function depositETH(uint32 strategyId) external payable; +``` + +### finalizeFeeUpdate + + +```solidity +function finalizeFeeUpdate(uint32 strategyId) external; +``` + +### finalizeUpdateObligation + + +```solidity +function finalizeUpdateObligation(uint32 strategyId, address bApp, address token) external; +``` + +### finalizeWithdrawal + + +```solidity +function finalizeWithdrawal(uint32 strategyId, IERC20 token) external; +``` + +### finalizeWithdrawalETH + + +```solidity +function finalizeWithdrawalETH(uint32 strategyId) external; +``` + +### optInToBApp + + +```solidity +function optInToBApp(uint32 strategyId, address bApp, address[] calldata tokens, uint32[] calldata obligationPercentages, bytes calldata data) external; +``` + +### proposeFeeUpdate + + +```solidity +function proposeFeeUpdate(uint32 strategyId, uint32 proposedFee) external; +``` + +### proposeUpdateObligation + + +```solidity +function proposeUpdateObligation(uint32 strategyId, address bApp, address token, uint32 obligationPercentage) external; +``` + +### proposeWithdrawal + + +```solidity +function proposeWithdrawal(uint32 strategyId, address token, uint256 amount) external; +``` + +### proposeWithdrawalETH + + +```solidity +function proposeWithdrawalETH(uint32 strategyId, uint256 amount) external; +``` + +### reduceFee + + +```solidity +function reduceFee(uint32 strategyId, uint32 proposedFee) external; +``` + +### removeDelegatedBalance + + +```solidity +function removeDelegatedBalance(address receiver) external; +``` + +### slash + + +```solidity +function slash(uint32 strategyId, address bApp, address token, uint32 percentage, bytes calldata data) external; +``` + +### updateAccountMetadataURI + + +```solidity +function updateAccountMetadataURI(string calldata metadataURI) external; +``` + +### updateDelegatedBalance + + +```solidity +function updateDelegatedBalance(address receiver, uint32 percentage) external; +``` + +### updateStrategyMetadataURI + + +```solidity +function updateStrategyMetadataURI(uint32 strategyId, string calldata metadataURI) external; +``` + +### withdrawETHSlashingFund + + +```solidity +function withdrawETHSlashingFund(uint256 amount) external; +``` + +### withdrawSlashingFund + + +```solidity +function withdrawSlashingFund(address token, uint256 amount) external; +``` + +## Events +### AccountMetadataURIUpdated + +```solidity +event AccountMetadataURIUpdated(address indexed account, string metadataURI); +``` + +### BAppOptedInByStrategy + +```solidity +event BAppOptedInByStrategy(uint32 indexed strategyId, address indexed bApp, bytes data, address[] tokens, uint32[] obligationPercentages); +``` + +### DelegationCreated + +```solidity +event DelegationCreated(address indexed delegator, address indexed receiver, uint32 percentage); +``` + +### DelegationRemoved + +```solidity +event DelegationRemoved(address indexed delegator, address indexed receiver); +``` + +### DelegationUpdated + +```solidity +event DelegationUpdated(address indexed delegator, address indexed receiver, uint32 percentage); +``` + +### MaxFeeIncrementSet + +```solidity +event MaxFeeIncrementSet(uint32 newMaxFeeIncrement); +``` + +### ObligationCreated + +```solidity +event ObligationCreated(uint32 indexed strategyId, address indexed bApp, address token, uint32 percentage); +``` + +### ObligationUpdated + +```solidity +event ObligationUpdated(uint32 indexed strategyId, address indexed bApp, address token, uint32 percentage); +``` + +### ObligationUpdateProposed + +```solidity +event ObligationUpdateProposed(uint32 indexed strategyId, address indexed bApp, address token, uint32 percentage); +``` + +### StrategyCreated + +```solidity +event StrategyCreated(uint32 indexed strategyId, address indexed owner, uint32 fee, string metadataURI); +``` + +### StrategyDeposit + +```solidity +event StrategyDeposit(uint32 indexed strategyId, address indexed account, address token, uint256 amount); +``` + +### StrategyFeeUpdated + +```solidity +event StrategyFeeUpdated(uint32 indexed strategyId, address owner, uint32 newFee, bool isFast); +``` + +### StrategyFeeUpdateProposed + +```solidity +event StrategyFeeUpdateProposed(uint32 indexed strategyId, address owner, uint32 proposedFee); +``` + +### StrategyMetadataURIUpdated + +```solidity +event StrategyMetadataURIUpdated(uint32 indexed strategyId, string metadataURI); +``` + +### StrategyWithdrawal + +```solidity +event StrategyWithdrawal(uint32 indexed strategyId, address indexed account, address token, uint256 amount, bool isFast); +``` + +### StrategyWithdrawalProposed + +```solidity +event StrategyWithdrawalProposed(uint32 indexed strategyId, address indexed account, address token, uint256 amount); +``` + +### SlashingFundWithdrawn + +```solidity +event SlashingFundWithdrawn(address token, uint256 amount); +``` + +### StrategySlashed + +```solidity +event StrategySlashed(uint32 indexed strategyId, address indexed bApp, address token, uint32 percentage, address receiver); +``` + +## Errors +### BAppAlreadyOptedIn + +```solidity +error BAppAlreadyOptedIn(); +``` + +### BAppNotOptedIn + +```solidity +error BAppNotOptedIn(); +``` + +### BAppOptInFailed + +```solidity +error BAppOptInFailed(); +``` + +### BAppSlashingFailed + +```solidity +error BAppSlashingFailed(); +``` + +### DelegationAlreadyExists + +```solidity +error DelegationAlreadyExists(); +``` + +### DelegationDoesNotExist + +```solidity +error DelegationDoesNotExist(); +``` + +### DelegationExistsWithSameValue + +```solidity +error DelegationExistsWithSameValue(); +``` + +### ExceedingMaxShares + +```solidity +error ExceedingMaxShares(); +``` + +### ExceedingPercentageUpdate + +```solidity +error ExceedingPercentageUpdate(); +``` + +### FeeAlreadySet + +```solidity +error FeeAlreadySet(); +``` + +### InsufficientBalance + +```solidity +error InsufficientBalance(); +``` + +### InsufficientLiquidity + +```solidity +error InsufficientLiquidity(); +``` + +### InvalidAccountGeneration + +```solidity +error InvalidAccountGeneration(); +``` + +### InvalidAmount + +```solidity +error InvalidAmount(); +``` + +### InvalidBAppOwner + +```solidity +error InvalidBAppOwner(address caller, address expectedOwner); +``` + +### InvalidPercentageIncrement + +```solidity +error InvalidPercentageIncrement(); +``` + +### InvalidStrategyFee + +```solidity +error InvalidStrategyFee(); +``` + +### InvalidStrategyOwner + +```solidity +error InvalidStrategyOwner(address caller, address expectedOwner); +``` + +### InvalidToken + +```solidity +error InvalidToken(); +``` + +### NoPendingFeeUpdate + +```solidity +error NoPendingFeeUpdate(); +``` + +### NoPendingObligationUpdate + +```solidity +error NoPendingObligationUpdate(); +``` + +### NoPendingWithdrawal + +```solidity +error NoPendingWithdrawal(); +``` + +### ObligationAlreadySet + +```solidity +error ObligationAlreadySet(); +``` + +### ObligationHasNotBeenCreated + +```solidity +error ObligationHasNotBeenCreated(); +``` + +### RequestTimeExpired + +```solidity +error RequestTimeExpired(); +``` + +### SlashingDisabled + +```solidity +error SlashingDisabled(); +``` + +### TimelockNotElapsed + +```solidity +error TimelockNotElapsed(); +``` + +### TokenNotSupportedByBApp + +```solidity +error TokenNotSupportedByBApp(address token); +``` + +### WithdrawTransferFailed + +```solidity +error WithdrawTransferFailed(); +``` + +### WithdrawalsDisabled + +```solidity +error WithdrawalsDisabled(); +``` + diff --git a/docs/src/src/core/interfaces/README.md b/docs/src/src/core/interfaces/README.md new file mode 100644 index 00000000..6997ead1 --- /dev/null +++ b/docs/src/src/core/interfaces/README.md @@ -0,0 +1,8 @@ + + +# Contents +- [IBasedAppManager](IBasedAppManager.sol/interface.IBasedAppManager.md) +- [ICore](ICore.sol/interface.ICore.md) +- [IProtocolManager](IProtocolManager.sol/interface.IProtocolManager.md) +- [ISSVBasedApps](ISSVBasedApps.sol/interface.ISSVBasedApps.md) +- [IStrategyManager](IStrategyManager.sol/interface.IStrategyManager.md) diff --git a/docs/src/src/core/libraries/CoreStorageLib.sol/enum.SSVCoreModules.md b/docs/src/src/core/libraries/CoreStorageLib.sol/enum.SSVCoreModules.md new file mode 100644 index 00000000..b20a0c76 --- /dev/null +++ b/docs/src/src/core/libraries/CoreStorageLib.sol/enum.SSVCoreModules.md @@ -0,0 +1,12 @@ +# SSVCoreModules +[Git Source](https://github.com/ssvlabs/based-applications/blob/f462573124548b82b6a002d4ef069bdfacf5c637/src/core/libraries/CoreStorageLib.sol) + + +```solidity +enum SSVCoreModules { + SSV_PROTOCOL_MANAGER, + SSV_BAPPS_MANAGER, + SSV_STRATEGY_MANAGER +} +``` + diff --git a/docs/src/src/core/libraries/CoreStorageLib.sol/library.CoreStorageLib.md b/docs/src/src/core/libraries/CoreStorageLib.sol/library.CoreStorageLib.md new file mode 100644 index 00000000..aba2eba0 --- /dev/null +++ b/docs/src/src/core/libraries/CoreStorageLib.sol/library.CoreStorageLib.md @@ -0,0 +1,46 @@ +# CoreStorageLib +[Git Source](https://github.com/ssvlabs/based-applications/blob/f462573124548b82b6a002d4ef069bdfacf5c637/src/core/libraries/CoreStorageLib.sol) + + +## State Variables +### SSV_BASED_APPS_STORAGE_POSITION + +```solidity +uint256 private constant SSV_BASED_APPS_STORAGE_POSITION = uint256(keccak256("ssv.based-apps.storage.main")) - 1; +``` + + +## Functions +### load + + +```solidity +function load() internal pure returns (Data storage sd); +``` + +## Structs +### Data +Represents all operational state required by the SSV Based Application platform. + + +```solidity +struct Data { + uint32 _strategyCounter; + mapping(SSVCoreModules => address) ssvContracts; + mapping(uint32 strategyId => ICore.Strategy) strategies; + mapping(address owner => uint32[] strategyId) strategyOwners; + mapping(address account => mapping(address bApp => uint32 strategyId)) accountBAppStrategy; + mapping(address delegator => mapping(address account => uint32 percentage)) delegations; + mapping(address delegator => uint32 totalPercentage) totalDelegatedPercentage; + mapping(uint32 strategyId => mapping(address token => ICore.Shares shares)) strategyTokenShares; + mapping(uint32 strategyId => mapping(address bApp => mapping(address token => ICore.Obligation))) obligations; + mapping(uint32 strategyId => mapping(address account => mapping(address token => ICore.WithdrawalRequest))) withdrawalRequests; + mapping(uint32 strategyId => mapping(address token => mapping(address bApp => ICore.ObligationRequest))) obligationRequests; + mapping(uint32 strategyId => ICore.FeeUpdateRequest) feeUpdateRequests; + mapping(address account => mapping(address token => uint256 amount)) slashingFund; + mapping(address bApp => bool isRegistered) registeredBApps; + mapping(address bApp => mapping(address token => ICore.SharedRiskLevel)) bAppTokens; + mapping(address bApp => ICore.TokenUpdateRequest) tokenUpdateRequests; +} +``` + diff --git a/docs/src/src/core/libraries/ProtocolStorageLib.sol/library.ProtocolStorageLib.md b/docs/src/src/core/libraries/ProtocolStorageLib.sol/library.ProtocolStorageLib.md new file mode 100644 index 00000000..aa331895 --- /dev/null +++ b/docs/src/src/core/libraries/ProtocolStorageLib.sol/library.ProtocolStorageLib.md @@ -0,0 +1,40 @@ +# ProtocolStorageLib +[Git Source](https://github.com/ssvlabs/based-applications/blob/f462573124548b82b6a002d4ef069bdfacf5c637/src/core/libraries/ProtocolStorageLib.sol) + + +## State Variables +### SSV_STORAGE_POSITION + +```solidity +uint256 private constant SSV_STORAGE_POSITION = uint256(keccak256("ssv.based-apps.storage.protocol")) - 1; +``` + + +## Functions +### load + + +```solidity +function load() internal pure returns (Data storage sd); +``` + +## Structs +### Data +Represents the operational settings and parameters required by the SSV Based Application Platform + + +```solidity +struct Data { + uint256 maxShares; + uint32 feeTimelockPeriod; + uint32 feeExpireTime; + uint32 withdrawalTimelockPeriod; + uint32 withdrawalExpireTime; + uint32 obligationTimelockPeriod; + uint32 obligationExpireTime; + uint32 tokenUpdateTimelockPeriod; + uint32 maxFeeIncrement; + uint32 disabledFeatures; +} +``` + diff --git a/docs/src/src/core/libraries/README.md b/docs/src/src/core/libraries/README.md new file mode 100644 index 00000000..3eba618a --- /dev/null +++ b/docs/src/src/core/libraries/README.md @@ -0,0 +1,8 @@ + + +# Contents +- [SSVCoreModules](CoreStorageLib.sol/enum.SSVCoreModules.md) +- [CoreStorageLib](CoreStorageLib.sol/library.CoreStorageLib.md) +- [ProtocolStorageLib](ProtocolStorageLib.sol/library.ProtocolStorageLib.md) +- [ValidationLib](ValidationLib.sol/library.ValidationLib.md) +- [ValidationLib constants](ValidationLib.sol/constants.ValidationLib.md) diff --git a/docs/src/src/core/libraries/ValidationLib.sol/constants.ValidationLib.md b/docs/src/src/core/libraries/ValidationLib.sol/constants.ValidationLib.md new file mode 100644 index 00000000..08c55976 --- /dev/null +++ b/docs/src/src/core/libraries/ValidationLib.sol/constants.ValidationLib.md @@ -0,0 +1,15 @@ +# Constants +[Git Source](https://github.com/ssvlabs/based-applications/blob/f462573124548b82b6a002d4ef069bdfacf5c637/src/core/libraries/ValidationLib.sol) + +### MAX_PERCENTAGE + +```solidity +uint32 constant MAX_PERCENTAGE = 1e4; +``` + +### ETH_ADDRESS + +```solidity +address constant ETH_ADDRESS = 0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE; +``` + diff --git a/docs/src/src/core/libraries/ValidationLib.sol/library.ValidationLib.md b/docs/src/src/core/libraries/ValidationLib.sol/library.ValidationLib.md new file mode 100644 index 00000000..b62afb71 --- /dev/null +++ b/docs/src/src/core/libraries/ValidationLib.sol/library.ValidationLib.md @@ -0,0 +1,52 @@ +# ValidationLib +[Git Source](https://github.com/ssvlabs/based-applications/blob/f462573124548b82b6a002d4ef069bdfacf5c637/src/core/libraries/ValidationLib.sol) + + +## Functions +### validatePercentage + + +```solidity +function validatePercentage(uint32 percentage) internal pure; +``` + +### validatePercentageAndNonZero + + +```solidity +function validatePercentageAndNonZero(uint32 percentage) internal pure; +``` + +### validateArrayLengths + + +```solidity +function validateArrayLengths(address[] calldata tokens, uint32[] memory values) internal pure; +``` + +### validateNonZeroAddress + + +```solidity +function validateNonZeroAddress(address addr) internal pure; +``` + +## Errors +### InvalidPercentage + +```solidity +error InvalidPercentage(); +``` + +### LengthsNotMatching + +```solidity +error LengthsNotMatching(); +``` + +### ZeroAddressNotAllowed + +```solidity +error ZeroAddressNotAllowed(); +``` + diff --git a/docs/src/src/core/modules/BasedAppsManager.sol/contract.BasedAppsManager.md b/docs/src/src/core/modules/BasedAppsManager.sol/contract.BasedAppsManager.md new file mode 100644 index 00000000..84eb2c0a --- /dev/null +++ b/docs/src/src/core/modules/BasedAppsManager.sol/contract.BasedAppsManager.md @@ -0,0 +1,75 @@ +# BasedAppsManager +[Git Source](https://github.com/ssvlabs/based-applications/blob/f462573124548b82b6a002d4ef069bdfacf5c637/src/core/modules/BasedAppsManager.sol) + +**Inherits:** +[IBasedAppManager](/src/core/interfaces/IBasedAppManager.sol/interface.IBasedAppManager.md) + + +## Functions +### _onlyRegisteredBApp + +Allow the function to be called only by a registered bApp + + +```solidity +function _onlyRegisteredBApp(CoreStorageLib.Data storage s) private view; +``` + +### registerBApp + +Registers a bApp. + +*Allows creating a bApp even with an empty token list.* + + +```solidity +function registerBApp(address[] calldata tokens, uint32[] calldata sharedRiskLevels, string calldata metadataURI) external; +``` +**Parameters** + +|Name|Type|Description| +|----|----|-----------| +|`tokens`|`address[]`|The list of tokens the bApp accepts; can be empty.| +|`sharedRiskLevels`|`uint32[]`|The shared risk level of the bApp.| +|`metadataURI`|`string`|The metadata URI of the bApp, which is a link (e.g., http://example.com) to a JSON file containing metadata such as the name, description, logo, etc.| + + +### updateBAppMetadataURI + +Function to update the metadata URI of the Based Application + + +```solidity +function updateBAppMetadataURI(string calldata metadataURI) external; +``` +**Parameters** + +|Name|Type|Description| +|----|----|-----------| +|`metadataURI`|`string`|The new metadata URI| + + +### updateBAppsTokens + + +```solidity +function updateBAppsTokens(ICore.TokenConfig[] calldata tokenConfigs) external; +``` + +### _addNewTokens + +Function to add tokens to a bApp + + +```solidity +function _addNewTokens(address bApp, address[] calldata tokens, uint32[] calldata sharedRiskLevels) internal; +``` +**Parameters** + +|Name|Type|Description| +|----|----|-----------| +|`bApp`|`address`|The address of the bApp| +|`tokens`|`address[]`|The list of tokens to add| +|`sharedRiskLevels`|`uint32[]`|The shared risk levels of the tokens| + + diff --git a/docs/src/src/core/modules/ProtocolManager.sol/contract.ProtocolManager.md b/docs/src/src/core/modules/ProtocolManager.sol/contract.ProtocolManager.md new file mode 100644 index 00000000..605925a0 --- /dev/null +++ b/docs/src/src/core/modules/ProtocolManager.sol/contract.ProtocolManager.md @@ -0,0 +1,93 @@ +# ProtocolManager +[Git Source](https://github.com/ssvlabs/based-applications/blob/f462573124548b82b6a002d4ef069bdfacf5c637/src/core/modules/ProtocolManager.sol) + +**Inherits:** +[IProtocolManager](/src/core/interfaces/IProtocolManager.sol/interface.IProtocolManager.md) + + +## State Variables +### SLASHING_DISABLED + +```solidity +uint32 private constant SLASHING_DISABLED = 1 << 0; +``` + + +### WITHDRAWALS_DISABLED + +```solidity +uint32 private constant WITHDRAWALS_DISABLED = 1 << 1; +``` + + +## Functions +### updateFeeTimelockPeriod + + +```solidity +function updateFeeTimelockPeriod(uint32 feeTimelockPeriod) external; +``` + +### updateFeeExpireTime + + +```solidity +function updateFeeExpireTime(uint32 feeExpireTime) external; +``` + +### updateWithdrawalTimelockPeriod + + +```solidity +function updateWithdrawalTimelockPeriod(uint32 withdrawalTimelockPeriod) external; +``` + +### updateWithdrawalExpireTime + + +```solidity +function updateWithdrawalExpireTime(uint32 withdrawalExpireTime) external; +``` + +### updateObligationTimelockPeriod + + +```solidity +function updateObligationTimelockPeriod(uint32 obligationTimelockPeriod) external; +``` + +### updateObligationExpireTime + + +```solidity +function updateObligationExpireTime(uint32 obligationExpireTime) external; +``` + +### updateTokenUpdateTimelockPeriod + + +```solidity +function updateTokenUpdateTimelockPeriod(uint32 tokenUpdateTimelockPeriod) external; +``` + +### updateMaxShares + + +```solidity +function updateMaxShares(uint256 maxShares) external; +``` + +### updateMaxFeeIncrement + + +```solidity +function updateMaxFeeIncrement(uint32 maxFeeIncrement) external; +``` + +### updateDisabledFeatures + + +```solidity +function updateDisabledFeatures(uint32 disabledFeatures) external; +``` + diff --git a/docs/src/src/core/modules/README.md b/docs/src/src/core/modules/README.md new file mode 100644 index 00000000..532896ac --- /dev/null +++ b/docs/src/src/core/modules/README.md @@ -0,0 +1,6 @@ + + +# Contents +- [BasedAppsManager](BasedAppsManager.sol/contract.BasedAppsManager.md) +- [ProtocolManager](ProtocolManager.sol/contract.ProtocolManager.md) +- [StrategyManager](StrategyManager.sol/contract.StrategyManager.md) diff --git a/docs/src/src/core/modules/StrategyManager.sol/contract.StrategyManager.md b/docs/src/src/core/modules/StrategyManager.sol/contract.StrategyManager.md new file mode 100644 index 00000000..b8697d3c --- /dev/null +++ b/docs/src/src/core/modules/StrategyManager.sol/contract.StrategyManager.md @@ -0,0 +1,604 @@ +# StrategyManager +[Git Source](https://github.com/ssvlabs/based-applications/blob/f462573124548b82b6a002d4ef069bdfacf5c637/src/core/modules/StrategyManager.sol) + +**Inherits:** +ReentrancyGuardTransient, [IStrategyManager](/src/core/interfaces/IStrategyManager.sol/interface.IStrategyManager.md) + + +## State Variables +### SLASHING_DISABLED + +```solidity +uint32 private constant SLASHING_DISABLED = 1 << 0; +``` + + +### WITHDRAWALS_DISABLED + +```solidity +uint32 private constant WITHDRAWALS_DISABLED = 1 << 1; +``` + + +## Functions +### _onlyStrategyOwner + +Checks if the caller is the strategy owner + + +```solidity +function _onlyStrategyOwner(uint32 strategyId, CoreStorageLib.Data storage s) private view; +``` +**Parameters** + +|Name|Type|Description| +|----|----|-----------| +|`strategyId`|`uint32`|The ID of the strategy| +|`s`|`CoreStorageLib.Data`|The CoreStorageLib data| + + +### updateAccountMetadataURI + +Function to update the metadata URI of the Account + + +```solidity +function updateAccountMetadataURI(string calldata metadataURI) external; +``` +**Parameters** + +|Name|Type|Description| +|----|----|-----------| +|`metadataURI`|`string`|The new metadata URI| + + +### delegateBalance + +Function to delegate a percentage of the account's balance to another account + +*The percentage is scaled by 1e4 so the minimum unit is 0.01%* + + +```solidity +function delegateBalance(address account, uint32 percentage) external; +``` +**Parameters** + +|Name|Type|Description| +|----|----|-----------| +|`account`|`address`|The address of the account to delegate to| +|`percentage`|`uint32`|The percentage of the account's balance to delegate| + + +### updateDelegatedBalance + +Function to update the delegated validator balance percentage to another account + +*The percentage is scaled by 1e4 so the minimum unit is 0.01%* + + +```solidity +function updateDelegatedBalance(address account, uint32 percentage) external; +``` +**Parameters** + +|Name|Type|Description| +|----|----|-----------| +|`account`|`address`|The address of the account to delegate to| +|`percentage`|`uint32`|The updated percentage of the account's balance to delegate| + + +### removeDelegatedBalance + +Removes delegation from an account. + + +```solidity +function removeDelegatedBalance(address account) external; +``` +**Parameters** + +|Name|Type|Description| +|----|----|-----------| +|`account`|`address`|The address of the account whose delegation is being removed.| + + +### createStrategy + +Function to create a new Strategy + + +```solidity +function createStrategy(uint32 fee, string calldata metadataURI) external returns (uint32 strategyId); +``` +**Parameters** + +|Name|Type|Description| +|----|----|-----------| +|`fee`|`uint32`|| +|`metadataURI`|`string`|The metadata URI of the strategy| + +**Returns** + +|Name|Type|Description| +|----|----|-----------| +|`strategyId`|`uint32`|The ID of the new Strategy| + + +### updateStrategyMetadataURI + +Function to update the metadata URI of the Strategy + + +```solidity +function updateStrategyMetadataURI(uint32 strategyId, string calldata metadataURI) external; +``` +**Parameters** + +|Name|Type|Description| +|----|----|-----------| +|`strategyId`|`uint32`|The id of the strategy| +|`metadataURI`|`string`|The new metadata URI| + + +### optInToBApp + +Opt-in to a bApp with a list of tokens and obligation percentages + +*checks that each token is supported by the bApp, but not that the obligation is > 0* + + +```solidity +function optInToBApp(uint32 strategyId, address bApp, address[] calldata tokens, uint32[] calldata obligationPercentages, bytes calldata data) external; +``` +**Parameters** + +|Name|Type|Description| +|----|----|-----------| +|`strategyId`|`uint32`|The ID of the strategy| +|`bApp`|`address`|The address of the bApp| +|`tokens`|`address[]`|The list of tokens to opt-in with| +|`obligationPercentages`|`uint32[]`|The list of obligation percentages for each token| +|`data`|`bytes`|Optional parameter that could be required by the service| + + +### _isBApp + +Function to check if an address uses the correct bApp interface + + +```solidity +function _isBApp(address bApp) private view returns (bool); +``` +**Parameters** + +|Name|Type|Description| +|----|----|-----------| +|`bApp`|`address`|The address of the bApp| + +**Returns** + +|Name|Type|Description| +|----|----|-----------| +|``|`bool`|True if the address uses the correct bApp interface| + + +### depositERC20 + +Deposit ERC20 tokens into the strategy + + +```solidity +function depositERC20(uint32 strategyId, IERC20 token, uint256 amount) external nonReentrant; +``` +**Parameters** + +|Name|Type|Description| +|----|----|-----------| +|`strategyId`|`uint32`|The ID of the strategy| +|`token`|`IERC20`|The ERC20 token address| +|`amount`|`uint256`|The amount to deposit| + + +### depositETH + +Deposit ETH into the strategy + + +```solidity +function depositETH(uint32 strategyId) external payable nonReentrant; +``` +**Parameters** + +|Name|Type|Description| +|----|----|-----------| +|`strategyId`|`uint32`|The ID of the strategy| + + +### proposeWithdrawal + +Propose a withdrawal of ERC20 tokens from the strategy. + + +```solidity +function proposeWithdrawal(uint32 strategyId, address token, uint256 amount) external; +``` +**Parameters** + +|Name|Type|Description| +|----|----|-----------| +|`strategyId`|`uint32`|The ID of the strategy.| +|`token`|`address`|The ERC20 token address.| +|`amount`|`uint256`|The amount to withdraw.| + + +### finalizeWithdrawal + +Finalize the ERC20 withdrawal after the timelock period has passed. + + +```solidity +function finalizeWithdrawal(uint32 strategyId, IERC20 token) external nonReentrant; +``` +**Parameters** + +|Name|Type|Description| +|----|----|-----------| +|`strategyId`|`uint32`|The ID of the strategy.| +|`token`|`IERC20`|The ERC20 token address.| + + +### proposeWithdrawalETH + +Propose an ETH withdrawal from the strategy. + + +```solidity +function proposeWithdrawalETH(uint32 strategyId, uint256 amount) external; +``` +**Parameters** + +|Name|Type|Description| +|----|----|-----------| +|`strategyId`|`uint32`|The ID of the strategy.| +|`amount`|`uint256`|The amount of ETH to withdraw.| + + +### finalizeWithdrawalETH + +Finalize the ETH withdrawal after the timelock period has passed. + + +```solidity +function finalizeWithdrawalETH(uint32 strategyId) external nonReentrant; +``` +**Parameters** + +|Name|Type|Description| +|----|----|-----------| +|`strategyId`|`uint32`|The ID of the strategy.| + + +### createObligation + +Add a new obligation for a bApp + + +```solidity +function createObligation(uint32 strategyId, address bApp, address token, uint32 obligationPercentage) external; +``` +**Parameters** + +|Name|Type|Description| +|----|----|-----------| +|`strategyId`|`uint32`|The ID of the strategy| +|`bApp`|`address`|The address of the bApp| +|`token`|`address`|The address of the token| +|`obligationPercentage`|`uint32`|The obligation percentage| + + +### proposeUpdateObligation + +Propose a withdrawal of ERC20 tokens from the strategy. + + +```solidity +function proposeUpdateObligation(uint32 strategyId, address bApp, address token, uint32 obligationPercentage) external; +``` +**Parameters** + +|Name|Type|Description| +|----|----|-----------| +|`strategyId`|`uint32`|The ID of the strategy.| +|`bApp`|`address`|| +|`token`|`address`|The ERC20 token address.| +|`obligationPercentage`|`uint32`|The new percentage of the obligation| + + +### finalizeUpdateObligation + +Finalize the withdrawal after the timelock period has passed. + + +```solidity +function finalizeUpdateObligation(uint32 strategyId, address bApp, address token) external; +``` +**Parameters** + +|Name|Type|Description| +|----|----|-----------| +|`strategyId`|`uint32`|The ID of the strategy.| +|`bApp`|`address`|The address of the bApp.| +|`token`|`address`|The ERC20 token address.| + + +### reduceFee + +Instantly lowers the fee for a strategy + + +```solidity +function reduceFee(uint32 strategyId, uint32 proposedFee) external; +``` +**Parameters** + +|Name|Type|Description| +|----|----|-----------| +|`strategyId`|`uint32`|The ID of the strategy| +|`proposedFee`|`uint32`|The proposed fee| + + +### proposeFeeUpdate + +Propose a new fee for a strategy + + +```solidity +function proposeFeeUpdate(uint32 strategyId, uint32 proposedFee) external; +``` +**Parameters** + +|Name|Type|Description| +|----|----|-----------| +|`strategyId`|`uint32`|The ID of the strategy| +|`proposedFee`|`uint32`|The proposed fee| + + +### finalizeFeeUpdate + +Finalize the fee update for a strategy + + +```solidity +function finalizeFeeUpdate(uint32 strategyId) external; +``` +**Parameters** + +|Name|Type|Description| +|----|----|-----------| +|`strategyId`|`uint32`|The ID of the strategy| + + +### _createOptInObligations + +Set the obligation percentages for a strategy + + +```solidity +function _createOptInObligations(uint32 strategyId, address bApp, address[] calldata tokens, uint32[] calldata obligationPercentages) private; +``` +**Parameters** + +|Name|Type|Description| +|----|----|-----------| +|`strategyId`|`uint32`|The ID of the strategy| +|`bApp`|`address`|The address of the bApp| +|`tokens`|`address[]`|The list of tokens to set s.obligations for| +|`obligationPercentages`|`uint32[]`|The list of obligation percentages for each token| + + +### _createSingleObligation + +Set a single obligation for a strategy + + +```solidity +function _createSingleObligation(uint32 strategyId, address bApp, address token, uint32 obligationPercentage) private; +``` +**Parameters** + +|Name|Type|Description| +|----|----|-----------| +|`strategyId`|`uint32`|The ID of the strategy| +|`bApp`|`address`|The address of the bApp| +|`token`|`address`|The address of the token| +|`obligationPercentage`|`uint32`|The obligation percentage| + + +### _validateObligationUpdateInput + +Validate the input for the obligation creation or update + + +```solidity +function _validateObligationUpdateInput(uint32 strategyId, address bApp, address token, uint32 obligationPercentage) private view; +``` +**Parameters** + +|Name|Type|Description| +|----|----|-----------| +|`strategyId`|`uint32`|The ID of the strategy| +|`bApp`|`address`|The address of the bApp| +|`token`|`address`|The address of the token| +|`obligationPercentage`|`uint32`|The obligation percentage| + + +### _checkTimelocks + +Check the timelocks + + +```solidity +function _checkTimelocks(uint256 requestTime, uint256 timelockPeriod, uint256 expireTime) internal view; +``` +**Parameters** + +|Name|Type|Description| +|----|----|-----------| +|`requestTime`|`uint256`|The time of the request| +|`timelockPeriod`|`uint256`|The timelock period| +|`expireTime`|`uint256`|The expire time| + + +### _beforeDeposit + + +```solidity +function _beforeDeposit(uint32 strategyId, address token, uint256 amount) internal; +``` + +### _proposeWithdrawal + +*override the previous share balance* + + +```solidity +function _proposeWithdrawal(uint32 strategyId, address token, uint256 amount) internal; +``` + +### _finalizeWithdrawal + + +```solidity +function _finalizeWithdrawal(uint32 strategyId, address token) private returns (uint256 amount); +``` + +### getSlashableBalance + +Get the slashable balance for a strategy + + +```solidity +function getSlashableBalance(CoreStorageLib.Data storage s, uint32 strategyId, address bApp, address token, ICore.Shares storage strategyTokenShares) + internal + view + returns (uint256 slashableBalance); +``` +**Parameters** + +|Name|Type|Description| +|----|----|-----------| +|`s`|`CoreStorageLib.Data`|| +|`strategyId`|`uint32`|The ID of the strategy| +|`bApp`|`address`|The address of the bApp| +|`token`|`address`|The address of the token| +|`strategyTokenShares`|`ICore.Shares`|| + +**Returns** + +|Name|Type|Description| +|----|----|-----------| +|`slashableBalance`|`uint256`|The slashable balance| + + +### slash + +Slash a strategy + + +```solidity +function slash(uint32 strategyId, address bApp, address token, uint32 percentage, bytes calldata data) external nonReentrant; +``` +**Parameters** + +|Name|Type|Description| +|----|----|-----------| +|`strategyId`|`uint32`|The ID of the strategy| +|`bApp`|`address`|The address of the bApp| +|`token`|`address`|The address of the token| +|`percentage`|`uint32`|The amount to slash| +|`data`|`bytes`|Optional parameter that could be required by the service| + + +### _exitStrategy + + +```solidity +function _exitStrategy(CoreStorageLib.Data storage s, uint32 strategyId, address bApp, address token) private; +``` + +### _adjustObligation + + +```solidity +function _adjustObligation( + CoreStorageLib.Data storage s, + uint32 strategyId, + address bApp, + address token, + uint256 amount, + ICore.Shares storage strategyTokenShares +) internal; +``` + +### withdrawSlashingFund + +Withdraw the slashing fund for a token + + +```solidity +function withdrawSlashingFund(address token, uint256 amount) external nonReentrant; +``` +**Parameters** + +|Name|Type|Description| +|----|----|-----------| +|`token`|`address`|The address of the token| +|`amount`|`uint256`|The amount to withdraw| + + +### withdrawETHSlashingFund + +Withdraw the slashing fund for ETH + + +```solidity +function withdrawETHSlashingFund(uint256 amount) external nonReentrant; +``` +**Parameters** + +|Name|Type|Description| +|----|----|-----------| +|`amount`|`uint256`|The amount to withdraw| + + +### _withdrawSlashingFund + +General withdraw code the slashing fund + + +```solidity +function _withdrawSlashingFund(address token, uint256 amount) internal; +``` +**Parameters** + +|Name|Type|Description| +|----|----|-----------| +|`token`|`address`|The address of the token| +|`amount`|`uint256`|The amount to withdraw| + + +### _checkSlashingAllowed + + +```solidity +function _checkSlashingAllowed() internal view; +``` + +### _checkWithdrawalsAllowed + + +```solidity +function _checkWithdrawalsAllowed() internal view; +``` + diff --git a/docs/src/src/middleware/README.md b/docs/src/src/middleware/README.md new file mode 100644 index 00000000..5f178fe0 --- /dev/null +++ b/docs/src/src/middleware/README.md @@ -0,0 +1,6 @@ + + +# Contents +- [examples](/src/middleware/examples) +- [interfaces](/src/middleware/interfaces) +- [modules](/src/middleware/modules) diff --git a/docs/src/src/middleware/examples/README.md b/docs/src/src/middleware/examples/README.md new file mode 100644 index 00000000..0d309593 --- /dev/null +++ b/docs/src/src/middleware/examples/README.md @@ -0,0 +1,4 @@ + + +# Contents +- [WhitelistExample](WhitelistExample.sol/contract.WhitelistExample.md) diff --git a/docs/src/src/middleware/examples/WhitelistExample.sol/contract.WhitelistExample.md b/docs/src/src/middleware/examples/WhitelistExample.sol/contract.WhitelistExample.md new file mode 100644 index 00000000..4df60b4f --- /dev/null +++ b/docs/src/src/middleware/examples/WhitelistExample.sol/contract.WhitelistExample.md @@ -0,0 +1,27 @@ +# WhitelistExample +[Git Source](https://github.com/ssvlabs/based-applications/blob/f462573124548b82b6a002d4ef069bdfacf5c637/src/middleware/examples/WhitelistExample.sol) + +**Inherits:** +[OwnableBasedApp](/src/middleware/modules/core+roles/OwnableBasedApp.sol/abstract.OwnableBasedApp.md), [BasedAppWhitelisted](/src/middleware/modules/BasedAppWhitelisted.sol/abstract.BasedAppWhitelisted.md) + + +## Functions +### constructor + + +```solidity +constructor(address _basedAppManager, address _initOwner) OwnableBasedApp(_basedAppManager, _initOwner); +``` + +### optInToBApp + + +```solidity +function optInToBApp(uint32 strategyId, address[] calldata, uint32[] calldata, bytes calldata) + external + view + override + onlySSVBasedAppManager + returns (bool success); +``` + diff --git a/docs/src/src/middleware/interfaces/IBasedApp.sol/interface.IBasedApp.md b/docs/src/src/middleware/interfaces/IBasedApp.sol/interface.IBasedApp.md new file mode 100644 index 00000000..0573fdac --- /dev/null +++ b/docs/src/src/middleware/interfaces/IBasedApp.sol/interface.IBasedApp.md @@ -0,0 +1,59 @@ +# IBasedApp +[Git Source](https://github.com/ssvlabs/based-applications/blob/f462573124548b82b6a002d4ef069bdfacf5c637/src/middleware/interfaces/IBasedApp.sol) + +**Inherits:** +IERC165 + + +## Functions +### optInToBApp + + +```solidity +function optInToBApp(uint32 strategyId, address[] calldata tokens, uint32[] calldata obligationPercentages, bytes calldata data) external returns (bool); +``` + +### registerBApp + + +```solidity +function registerBApp(address[] calldata tokens, uint32[] calldata sharedRiskLevels, string calldata metadataURI) external; +``` + +### slash + + +```solidity +function slash(uint32 strategyId, address token, uint32 percentage, address sender, bytes calldata data) + external + returns (bool success, address receiver, bool exit); +``` + +### supportsInterface + + +```solidity +function supportsInterface(bytes4 interfaceId) external view returns (bool); +``` + +### updateBAppMetadataURI + + +```solidity +function updateBAppMetadataURI(string calldata metadataURI) external; +``` + +### updateBAppTokens + + +```solidity +function updateBAppTokens(ICore.TokenConfig[] calldata tokenConfigs) external; +``` + +## Errors +### UnauthorizedCaller + +```solidity +error UnauthorizedCaller(); +``` + diff --git a/docs/src/src/middleware/interfaces/IBasedAppWhitelisted.sol/interface.IBasedAppWhitelisted.md b/docs/src/src/middleware/interfaces/IBasedAppWhitelisted.sol/interface.IBasedAppWhitelisted.md new file mode 100644 index 00000000..0c9bda76 --- /dev/null +++ b/docs/src/src/middleware/interfaces/IBasedAppWhitelisted.sol/interface.IBasedAppWhitelisted.md @@ -0,0 +1,44 @@ +# IBasedAppWhitelisted +[Git Source](https://github.com/ssvlabs/based-applications/blob/f462573124548b82b6a002d4ef069bdfacf5c637/src/middleware/interfaces/IBasedAppWhitelisted.sol) + + +## Functions +### addWhitelisted + + +```solidity +function addWhitelisted(uint32 strategyId) external; +``` + +### removeWhitelisted + + +```solidity +function removeWhitelisted(uint32 strategyId) external; +``` + +## Errors +### AlreadyWhitelisted + +```solidity +error AlreadyWhitelisted(); +``` + +### NonWhitelistedCaller + +```solidity +error NonWhitelistedCaller(); +``` + +### NotWhitelisted + +```solidity +error NotWhitelisted(); +``` + +### ZeroID + +```solidity +error ZeroID(); +``` + diff --git a/docs/src/src/middleware/interfaces/README.md b/docs/src/src/middleware/interfaces/README.md new file mode 100644 index 00000000..ae5a297b --- /dev/null +++ b/docs/src/src/middleware/interfaces/README.md @@ -0,0 +1,5 @@ + + +# Contents +- [IBasedApp](IBasedApp.sol/interface.IBasedApp.md) +- [IBasedAppWhitelisted](IBasedAppWhitelisted.sol/interface.IBasedAppWhitelisted.md) diff --git a/docs/src/src/middleware/modules/BasedAppWhitelisted.sol/abstract.BasedAppWhitelisted.md b/docs/src/src/middleware/modules/BasedAppWhitelisted.sol/abstract.BasedAppWhitelisted.md new file mode 100644 index 00000000..d373b492 --- /dev/null +++ b/docs/src/src/middleware/modules/BasedAppWhitelisted.sol/abstract.BasedAppWhitelisted.md @@ -0,0 +1,30 @@ +# BasedAppWhitelisted +[Git Source](https://github.com/ssvlabs/based-applications/blob/f462573124548b82b6a002d4ef069bdfacf5c637/src/middleware/modules/BasedAppWhitelisted.sol) + +**Inherits:** +[IBasedAppWhitelisted](/src/middleware/interfaces/IBasedAppWhitelisted.sol/interface.IBasedAppWhitelisted.md) + + +## State Variables +### isWhitelisted + +```solidity +mapping(uint32 => bool) public isWhitelisted; +``` + + +## Functions +### addWhitelisted + + +```solidity +function addWhitelisted(uint32 strategyId) external virtual; +``` + +### removeWhitelisted + + +```solidity +function removeWhitelisted(uint32 strategyId) external virtual; +``` + diff --git a/docs/src/src/middleware/modules/README.md b/docs/src/src/middleware/modules/README.md new file mode 100644 index 00000000..a80ba19f --- /dev/null +++ b/docs/src/src/middleware/modules/README.md @@ -0,0 +1,6 @@ + + +# Contents +- [core](/src/middleware/modules/core) +- [core+roles](/src/middleware/modules/core+roles) +- [BasedAppWhitelisted](BasedAppWhitelisted.sol/abstract.BasedAppWhitelisted.md) diff --git a/docs/src/src/middleware/modules/core+roles/AccessControlBasedApp.sol/abstract.AccessControlBasedApp.md b/docs/src/src/middleware/modules/core+roles/AccessControlBasedApp.sol/abstract.AccessControlBasedApp.md new file mode 100644 index 00000000..10043154 --- /dev/null +++ b/docs/src/src/middleware/modules/core+roles/AccessControlBasedApp.sol/abstract.AccessControlBasedApp.md @@ -0,0 +1,106 @@ +# AccessControlBasedApp +[Git Source](https://github.com/ssvlabs/based-applications/blob/f462573124548b82b6a002d4ef069bdfacf5c637/src/middleware/modules/core+roles/AccessControlBasedApp.sol) + +**Inherits:** +[BasedAppCore](/src/middleware/modules/core/BasedAppCore.sol/abstract.BasedAppCore.md), AccessControl + + +## State Variables +### MANAGER_ROLE + +```solidity +bytes32 public constant MANAGER_ROLE = keccak256("MANAGER_ROLE"); +``` + + +### OWNER_ROLE + +```solidity +bytes32 public constant OWNER_ROLE = keccak256("OWNER_ROLE"); +``` + + +## Functions +### constructor + + +```solidity +constructor(address _basedAppManager, address owner) AccessControl() BasedAppCore(_basedAppManager); +``` + +### grantManagerRole + + +```solidity +function grantManagerRole(address manager) external onlyRole(DEFAULT_ADMIN_ROLE); +``` + +### revokeManagerRole + + +```solidity +function revokeManagerRole(address manager) external onlyRole(DEFAULT_ADMIN_ROLE); +``` + +### registerBApp + +Registers a BApp calling the SSV SSVBasedApps + +*metadata should point to a json that respect template: +{ +"name": "SSV Based App", +"website": "https://www.ssvlabs.io/", +"description": "SSV Based App Core", +"logo": "https://link-to-your-logo.png", +"social": "https://x.com/ssv_network" +}* + + +```solidity +function registerBApp(address[] calldata tokens, uint32[] calldata sharedRiskLevels, string calldata metadataURI) external override onlyRole(MANAGER_ROLE); +``` +**Parameters** + +|Name|Type|Description| +|----|----|-----------| +|`tokens`|`address[]`|array of token addresses| +|`sharedRiskLevels`|`uint32[]`|array of shared risk levels| +|`metadataURI`|`string`|URI of the metadata| + + +### updateBAppMetadataURI + +Updates the metadata URI of a BApp + + +```solidity +function updateBAppMetadataURI(string calldata metadataURI) external override onlyRole(MANAGER_ROLE); +``` +**Parameters** + +|Name|Type|Description| +|----|----|-----------| +|`metadataURI`|`string`|new metadata URI| + + +### supportsInterface + +Checks if the contract supports the interface + + +```solidity +function supportsInterface(bytes4 interfaceId) public pure override(AccessControl, BasedAppCore) returns (bool isSupported); +``` +**Parameters** + +|Name|Type|Description| +|----|----|-----------| +|`interfaceId`|`bytes4`|interface id| + +**Returns** + +|Name|Type|Description| +|----|----|-----------| +|`isSupported`|`bool`|if the contract supports the interface| + + diff --git a/docs/src/src/middleware/modules/core+roles/OwnableBasedApp.sol/abstract.OwnableBasedApp.md b/docs/src/src/middleware/modules/core+roles/OwnableBasedApp.sol/abstract.OwnableBasedApp.md new file mode 100644 index 00000000..45ec53a6 --- /dev/null +++ b/docs/src/src/middleware/modules/core+roles/OwnableBasedApp.sol/abstract.OwnableBasedApp.md @@ -0,0 +1,77 @@ +# OwnableBasedApp +[Git Source](https://github.com/ssvlabs/based-applications/blob/f462573124548b82b6a002d4ef069bdfacf5c637/src/middleware/modules/core+roles/OwnableBasedApp.sol) + +**Inherits:** +Ownable, [BasedAppCore](/src/middleware/modules/core/BasedAppCore.sol/abstract.BasedAppCore.md) + + +## Functions +### constructor + + +```solidity +constructor(address _basedAppManager, address _initOwner) BasedAppCore(_basedAppManager) Ownable(_initOwner); +``` + +### registerBApp + +Registers a BApp calling the SSV SSVBasedApps + +*metadata should point to a json that respect template: +{ +"name": "SSV Based App", +"website": "https://www.ssvlabs.io/", +"description": "SSV Based App Core", +"logo": "https://link-to-your-logo.png", +"social": "https://x.com/ssv_network" +}* + + +```solidity +function registerBApp(address[] calldata tokens, uint32[] calldata sharedRiskLevels, string calldata metadataURI) external override onlyOwner; +``` +**Parameters** + +|Name|Type|Description| +|----|----|-----------| +|`tokens`|`address[]`|array of token addresses| +|`sharedRiskLevels`|`uint32[]`|array of shared risk levels| +|`metadataURI`|`string`|URI of the metadata| + + +### updateBAppMetadataURI + +Updates the metadata URI of a BApp + + +```solidity +function updateBAppMetadataURI(string calldata metadataURI) external override onlyOwner; +``` +**Parameters** + +|Name|Type|Description| +|----|----|-----------| +|`metadataURI`|`string`|new metadata URI| + + +### supportsInterface + +Checks if the contract supports the interface + + +```solidity +function supportsInterface(bytes4 interfaceId) public pure override(BasedAppCore) returns (bool isSupported); +``` +**Parameters** + +|Name|Type|Description| +|----|----|-----------| +|`interfaceId`|`bytes4`|interface id| + +**Returns** + +|Name|Type|Description| +|----|----|-----------| +|`isSupported`|`bool`|if the contract supports the interface| + + diff --git a/docs/src/src/middleware/modules/core+roles/README.md b/docs/src/src/middleware/modules/core+roles/README.md new file mode 100644 index 00000000..1fbff46f --- /dev/null +++ b/docs/src/src/middleware/modules/core+roles/README.md @@ -0,0 +1,5 @@ + + +# Contents +- [AccessControlBasedApp](AccessControlBasedApp.sol/abstract.AccessControlBasedApp.md) +- [OwnableBasedApp](OwnableBasedApp.sol/abstract.OwnableBasedApp.md) diff --git a/docs/src/src/middleware/modules/core/BasedAppCore.sol/abstract.BasedAppCore.md b/docs/src/src/middleware/modules/core/BasedAppCore.sol/abstract.BasedAppCore.md new file mode 100644 index 00000000..6dae71ec --- /dev/null +++ b/docs/src/src/middleware/modules/core/BasedAppCore.sol/abstract.BasedAppCore.md @@ -0,0 +1,167 @@ +# BasedAppCore +[Git Source](https://github.com/ssvlabs/based-applications/blob/f462573124548b82b6a002d4ef069bdfacf5c637/src/middleware/modules/core/BasedAppCore.sol) + +**Inherits:** +[IBasedApp](/src/middleware/interfaces/IBasedApp.sol/interface.IBasedApp.md) + + +## State Variables +### SSV_BASED_APPS_NETWORK +Address of the SSV Based App Manager contract + + +```solidity +address public immutable SSV_BASED_APPS_NETWORK; +``` + + +## Functions +### onlySSVBasedAppManager + +*Allows only the SSV Based App Manager to call the function* + + +```solidity +modifier onlySSVBasedAppManager(); +``` + +### constructor + +constructor for the BasedAppCore contract, +initializes the contract with the SSVBasedApps address and the owner and disables the initializers. + + +```solidity +constructor(address _ssvBasedAppsNetwork); +``` +**Parameters** + +|Name|Type|Description| +|----|----|-----------| +|`_ssvBasedAppsNetwork`|`address`|address of the SSVBasedApps contract| + + +### registerBApp + +Registers a BApp calling the SSV SSVBasedApps + +*metadata should point to a json that respect template: +{ +"name": "SSV Based App", +"website": "https://www.ssvlabs.io/", +"description": "SSV Based App Core", +"logo": "https://link-to-your-logo.png", +"social": "https://x.com/ssv_network" +}* + + +```solidity +function registerBApp(address[] calldata tokens, uint32[] calldata sharedRiskLevels, string calldata metadataURI) external virtual; +``` +**Parameters** + +|Name|Type|Description| +|----|----|-----------| +|`tokens`|`address[]`|array of token addresses| +|`sharedRiskLevels`|`uint32[]`|array of shared risk levels| +|`metadataURI`|`string`|URI of the metadata| + + +### updateBAppMetadataURI + +Updates the metadata URI of a BApp + + +```solidity +function updateBAppMetadataURI(string calldata metadataURI) external virtual; +``` +**Parameters** + +|Name|Type|Description| +|----|----|-----------| +|`metadataURI`|`string`|new metadata URI| + + +### updateBAppTokens + +Updates the tokens of a BApp + + +```solidity +function updateBAppTokens(ICore.TokenConfig[] calldata tokenConfigs) external virtual; +``` +**Parameters** + +|Name|Type|Description| +|----|----|-----------| +|`tokenConfigs`|`ICore.TokenConfig[]`|new list of tokens and their shared risk levels| + + +### withdrawSlashingFund + + +```solidity +function withdrawSlashingFund(address token, uint256 amount) external virtual; +``` + +### withdrawETHSlashingFund + + +```solidity +function withdrawETHSlashingFund(uint256 amount) external virtual; +``` + +### optInToBApp + +Allows a Strategy to Opt-in to a BApp, it can be called only by the SSV Based App Manager + + +```solidity +function optInToBApp(uint32, address[] calldata, uint32[] calldata, bytes calldata) external virtual onlySSVBasedAppManager returns (bool success); +``` + +### slash + +*--- CORE LOGIC (TO BE IMPLEMENTED) ---* + +*--- RETURN TRUE IF SUCCESS, FALSE OTHERWISE ---* + + +```solidity +function slash(uint32, address, uint32, address, bytes calldata) external virtual onlySSVBasedAppManager returns (bool, address, bool); +``` + +### supportsInterface + +Checks if the contract supports the interface + +*--- CORE LOGIC (TO BE IMPLEMENTED) ---* + +*--- RETURN TRUE IF SUCCESS, FALSE OTHERWISE ---* + +*--- RETURN RECEIVER ADDRESS FOR THE SLASHED FUNDS ---* + + +```solidity +function supportsInterface(bytes4 interfaceId) public pure virtual returns (bool); +``` +**Parameters** + +|Name|Type|Description| +|----|----|-----------| +|`interfaceId`|`bytes4`|interface id| + +**Returns** + +|Name|Type|Description| +|----|----|-----------| +|``|`bool`|true if the contract supports the interface| + + +### receive + + +```solidity +receive() external payable virtual; +``` + diff --git a/docs/src/src/middleware/modules/core/README.md b/docs/src/src/middleware/modules/core/README.md new file mode 100644 index 00000000..4ac46fa6 --- /dev/null +++ b/docs/src/src/middleware/modules/core/README.md @@ -0,0 +1,4 @@ + + +# Contents +- [BasedAppCore](BasedAppCore.sol/abstract.BasedAppCore.md) diff --git a/doc/bAppOnBoarding.md b/guides/bApp-onboarding.md similarity index 100% rename from doc/bAppOnBoarding.md rename to guides/bApp-onboarding.md diff --git a/doc/feature_activation.md b/guides/feature-activation.md similarity index 100% rename from doc/feature_activation.md rename to guides/feature-activation.md diff --git a/guides/generations.md b/guides/generations.md new file mode 100644 index 00000000..0f16bc12 --- /dev/null +++ b/guides/generations.md @@ -0,0 +1,115 @@ +# Generation Versioning in Strategy Shares + +## Purpose + +When a slashing event fully drains a strategy’s token balance, we need to ensure that any _old_ share‑balances and pending withdrawals become invalidated. The “generation” mechanism provides a simple versioning layer: bumping the `currentGeneration` counter makes all previous per‑account shares stale, preventing them from being redeemed after a full slash. + +## Rationale + +Without generation/versioning: + +1. A user deposits → receives `N` shares. +2. A slash drains the strategy → token balance is zero. +3. If we didn’t invalidate old shares, a user could still call `withdraw`, burn “old” shares, and withdraw zero tokens—potentially confusing or even exploitable in edge flows. + +By grouping every deposit/withdraw epoch under a “generation” number: + +- **Deposits** record both a share count _and_ the current generation at that time. +- On a full‑balance slash, we bump `currentGeneration`. +- Any subsequent withdrawal attempts carry an out‑of‑date generation tag and revert. + +This cleanly tears down all outstanding share balances in one on‑chain operation. + +## High-Level Flow + +1. **Deposit** + - If `totalShares == 0` (fresh strategy), `shares = amount`; + - Store `accountGeneration[msg.sender] = currentGeneration`; + - Add to `accountShareBalance[msg.sender]`. + +2. **Slash & Generation bump** + - If `strategyTokenShares.totalTokenBalance` goes to zero after slashing: + ```solidity + delete strategyTokenShares.totalTokenBalance; + delete strategyTokenShares.totalShareBalance; + strategyTokenShares.currentGeneration += 1; + ``` + - Now `currentGeneration` > any `accountGeneration[...]` recorded so far. + +3. **Withdraw** + - On `proposeWithdrawal` and `finalizeWithdrawal`, we check + ```solidity + if (strategyTokenShares.currentGeneration != + strategyTokenShares.accountGeneration[msg.sender] + ) revert InvalidAccountGeneration(); + ``` + - Out‑of‑date generations cannot proceed. + +## Technical Explanation + +### Storage Layout (excerpt) + +```solidity +struct Shares { + uint256 totalTokenBalance; + uint256 totalShareBalance; + uint256 currentGeneration; + mapping(address => uint256) accountShareBalance; + mapping(address => uint256) accountGeneration; +} +mapping(uint32 strategyId => mapping(address token => Shares)) public strategyTokenShares; +``` + +- `currentGeneration` is a global counter per `(strategyId,token)` pair. +- `accountGeneration[addr]` records which generation that account last deposited in. +- When generations mismatch, the user’s local `accountShareBalance` is considered invalid. + +### Deposit (`_beforeDeposit`) + +```solidity +if (strategyTokenShares.currentGeneration + != strategyTokenShares.accountGeneration[msg.sender] +) { + // brand-new generation for this account + strategyTokenShares.accountGeneration[msg.sender] + = strategyTokenShares.currentGeneration; + strategyTokenShares.accountShareBalance[msg.sender] + = computedShares; +} else { + // same generation: accumulate shares + strategyTokenShares.accountShareBalance[msg.sender] += computedShares; +} +``` + +### Full Slash & Bump + +```solidity +if (strategyTokenShares.totalTokenBalance == 0) { + // clear balances + delete strategyTokenShares.totalTokenBalance; + delete strategyTokenShares.totalShareBalance; + // bump to invalidate everyone else + strategyTokenShares.currentGeneration += 1; +} +``` + +### Withdrawal Check + +```solidity +// in _proposeWithdrawal or finalize: +if (strategyTokenShares.currentGeneration + != strategyTokenShares.accountGeneration[msg.sender] +) revert InvalidAccountGeneration(); +``` + +## References + +- **CoreStorageLib** + Defines `strategyTokenShares` and where `Shares` lives: + [`src/core/libraries/CoreStorageLib.sol`](src/core/libraries/CoreStorageLib.sol) +- **ERC-20 share math + generation logic** + In `StrategyManager._beforeDeposit`, `StrategyManager._proposeWithdrawal`, and the slash handlers: + [`src/core/modules/StrategyManager.sol`](src/core/modules/StrategyManager.sol) +- **IStrategyManager.Shares** + Describes the struct and intent: + [`src/core/interfaces/ICore.sol`](src/core/interfaces/ICore.sol) diff --git a/guides/img/sw_correlated.png b/guides/img/sw_correlated.png new file mode 100644 index 0000000000000000000000000000000000000000..93ba38ae9ef8edd154e64f09b19d64c64f01ad78 GIT binary patch literal 360443 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 ug?~KIP$;~=}-&E4s=wyJ^;jCOUlnbU2*kbdS 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 z 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%0AKAFuR|bI;D2yBxu4-OEKhMoBwx9=Y#@0JZE zSWbUNx=WoM82-uEE4u@J0JFI6tR>v~db1|?5bxGFtJ91KZ)u3_<(Bf{(-zfR5|Q>M zIini}L8%9u=PIhR&+t;$?;S-nxq!JG^|B%)a^cRGt1V3nt}>-HYTi}m9ojrd)pXoo zzRX8vx~qTMaQU5K-Z_|zii%_TZF62V-CIVA>8s@Z|3Mi=tXfvUk8HdbY`*@>$AHpQ z>QM^oXYC2?F^yiK;RiZ&9oSQDa^LlNi)XkkR9~Oh?ziohFfkD;=4gqTDR<8R@7waZ z=XYt(Dh3U~k@$$QFE9Nx+lQ*?Rc`9mZ)IItn;0Rp?%3OCT(Jl`D7(ZC=jhHFolu4- z;cb?5tFyWe*1@*rcEWC<7R0qM@X7~5uW;wDARvDlz=rE*Lmhto7yzIgFkork9xB!GhHkfn zau6G%ec!~8_P!C?-(}+sQzRrt$3AchF zK7EE?)ua2R3}r&Br`1gjQ;fO%GT=n{%-Tc+W4CWsVm2G8^mH;;^jbMUjSbC`>57XB zG6W;4;_SD2ETF!^QDdb~pKR8r6FQ$APWe8ICU^g;sHQA{{x%d{ANW_@>86QNt<(>nIo-Fatf&U!meCyZVq{MdgzD>831hUP8VBhi~;r$98 z4&52kv7K2b$#1Wzp_8R_jZ)qgQzbY={D^V>6O@Z$qvlN4JpPdJTEGKdfn`FPEP`Z` z@owK~*Y>FZ14-^rDaJW&QNE_L+B?2esULEA24>6dyamXSyYQx$E9}yqX$|^-8{M$= zzRO-C*}kd>q1$Yz)qTn_@+wL5kI5%)0n9B1ZPD*C;HMkJuA3#knGu+Lms!FMx8I~d z8(=W;MGP~0pgE`?5Qr8;^yOcxz}dS8#@NKTcaOx#`@|Q$Z0+ClI0Yh&_L4_=#o6Qeyzw1xr`_n&3F3keElO-7aoJd``bTAWDNy z9Z0nk;mVF>Wn39Mzsi}{6qB<~T5}F~fu2ZCsBm~~8Ll!nCU1RU&*~*0$}2P4E0}0F z&irNIx0hlw0kZ;@T{qStXdjz_m|lAhzoB#Rse#WuY87jfJL_JIpx2ld3tWg3|?i|w|?Uli4+%$zEn zT5@f7o-BuPexK-)mOd7&^xzfSY?;NNF5*kGOzfhzPJiMgD?>->%Oi5tUn@(>TDT}n z8jwpjwb?qWz0vHw9`aCnsF6KV+9yEq?l;2v;QI)1fz`fFIC9Eg3sS6Dz+}a5v2*uR z80W04d_SFEJj*3%t0#M|SfN%6964g)z4dNa`{v~UfnKkXLL%R1y3x&bEYtzV=&$Mw zPV{g+;4dycM7%<{zrYUIN=x!-26jnQgRBi`#W1`%+_UOz-qOR!XQ1NF8*0T*Lw)RuDDKm`nm!-qYe6 z5E|^}TuF~l@(;gd%4D6Hr!`XdO?v5zUzYId+hn|IbJu1~+B3=Y`&L#%oVSC2k=>iH`w8ijIkY*}E4%Y0nBEd&s-!#gYFwD7hBG=-a~kwcm`8@AM(X)~2~y9>>7B%jh-+@i_LRX)7@ zl3g{1ruM%Y+{G)M11Mr<&xEb*E4Qh96V!r6yEfdm z8K0hrvG!wpIy9n~8w8i9j)eB{`FVQ_V zK&_ulJzH#;Hb09**gC+G=1&6AC#}@g{lQx>jxl>%2Q3?T3Tm4y$IqYH`t;`GjRmV~ zQbTHfI*6rYsdRz8J!8o~WYzz9)ome_7ar?kWTTs{P72IAIw{E5+n&>%d4No=jPE)! z_oHB_Um(9TbEgckNTVu7fLsYV^CQ)fd{5^RY?j)SePML!jl=O!~bvHOv3J+dzDE$r>5WU7>Sfg~KEVr0m!ChEE3+d}!l8{Ee~2Wkzf^~Pz^C=5J8m2&f;3J!d&_-i zbGX&?qzkv0c$*zQguQs7j5kgs7Gkr`u_~qVQ7zg}!GBYD>(}C$jfVho%U=jP0RF|e zfqkDn3|xKQ+F)0-JlunCZy}}4_QP&61%Kk>%QxqVK?W841Z z$nSoyGt1BYcs(7Pe%F_%lTli3#Yq@NG1b(v&<`})3(eQsrP{BXpZ(gDXy>T?eyz^f zA!?6((xMY;@$8*8?Jht9u0W%tca_K{YJ;JKhlsarbYTv=PF3QS70Nd=_Z5E+CQ7$o z!Ml0;IsB^AzCfu(MjqkB_OI&#FnAS+pg@t0?sJ`7Vh2!aS^ilcjM^zaYVlUdb*un* zdBh!@czEdY#tQ&XF08atH5p&8U*?LKau1Y17&u!5=f;aFXbi>qHTB$~+1fh|YN7!S zK`mXLtjH~~N7{RtUcNBT=C&)rENZVEp*?7i!Dzx)=pv{4GV8DSwCkBnXm4k0WNGQ= zmZcdW8W}=4VOsn04AR>4T{aUXu25)vxJ9=xGwiJQlWEbm_d9q5#W5 zcf~{wn3Efg0^-e@Nbe=(Ry@EGMx#6IS_!A+iY8tkxqHR!+wcLQ*YVk)T|%_?(%mEF zKWHgc01L0DzPDLkIBc_vw_O5%t9dPNCl>tS!w5NPWFXeo7R{f)3rCqHOwiwlo4(51 zcrPpV>S#tz<~#ibIh~|^!F+esgTe2)nWd~B-3^YQ9Kh}b};3sgqTO-Li--uDJXaIX)%PQ(Xdnja_<9#gPN{s9u%~UwQN(&30JfEDisl3$j z*=SnEC~cgH3H!Z}D(1W_?gR42VRoV)-KAI2<8xXO7+ifr zru(|(6d5_iF)bDI^k<0zKbjR6i()A!F@)Y$U#mT^PD3Mb=9Iq1mFv<;YFW~3BM;TM zj}96U|Ba}Z-LTTm-}6m8r*_e`e*VJ7rFx4jrdhR#i3ep62n1Z;IjP@k*^8sE#4uC! z#_lL__hs_kyCY;gYn`;&{9dx^U#hx92OI(;@3I~L!?E}8rH5;L?$^`{uod5%Q4orS z-6+u5UGwh%Cq`5{sna1%0YJrjNxu5zY#UonG5_e)Q>iFWWN49bKD=sr8tedvAu19O;v&KuJjD(Xe+`ruG?1WMyV*0Evdy zz|;oj3GGnJUys%{k^!Wwmdtue_d8OG90JZq+81Zzn`RzZD2Fn(Zyi5Z?!5ww!f&4e zdEYp9^G^BZ#^D&*1+I3v1`ONs3#J`kk1M%~SHMesn`do5CT1LDzFKAW$d!^RQy4r= zuWiYxH4`HdS+n7$yG(2oh_)Fkj5WSPtYlF2bZIrvedaP2=D}zC8se|q4#FQm<(D`i$NXjeSEMnzHy+0b1e$a{EH<+(0bLAYPkf>irxHC6} z-qaqal%-HS1;B$cTJ|$^d@X~DIZS*#xC#_R6J-~CEVy8prKAtoxfo_PNzV-M)Dx;- z3wIT`jsl*OhBxxm9~77Yj61NE^fJQ23==d zL$KZ5ijh8vS>cWfuF;9H$NUWJCsH?cp0@$i))-wt{pnohx^6nk**i z#Sj&vcGzM^o<<$+Hb&0*Bb~!pJK)GilB#LQ>VQA)(xnW7K3nO%PI0R@tK67|Mopwf zd{G+^F};$n%H_fV~w1s_k#X zBR{LYNy~z{Y-XAmEE8Y6mzCS?xmSqsj^&Fb8%jIHaAT~DvmJG4+c5Uy>3O{u4W17LEO zMgWC0tVd0sTVJQKUF$Q2Ykzi%W6Jv=JyA|H_QI@#Uyi9e>3*p8gN}4{BWX4!(OW9Pax0JOsa$!oU3K z_$i;glLg6Wg;*DPM|Z_|Kc6+fNUt^j;HSq@h^V0i=A%ca(8O)HhEDQ!g?tB%V~%#> zBHQ`p!m`|v0b;xGUe5G?G^`q^z-o)Oim3hrg-5_Fqg%_StF{9}7gNuMOpfv#XNx|Z zlBnRv3yR6Zn@S}o0YQyn^uhMEqzkrgiYW}Yb2cJsrrO`7i~v}v=;t(W2C{!m3hq4r8vohhT$7`6r#qf>-e4bir>?|Fa% zJm=*UZ060|STS2Z5x4j8>$!>6p8_~+GjpQ+tY3q&A+DW)PkULTl4S^q)}pM{WT!Q%!tiBmi^2OsQl9ih}ZWr z;=Y*d)&M`wHo2ASXx%)&#U{71a5&x8I`Zt(&{oEogtqIKj_uz=f*@MGXN$EdyIFx) z0icp5y@1izRNt{OW1-Kmt)urlW>{)v5~e-;eVm^5U=*6)2_YnescX=97cv>SItsP5 zu~)a#dVqFh<2x^_d;vIe-o{uEH0M8j=Q_4j_iZihUC=GYy^|>6^4cgy9XoOeyEa@u zY20PhuAaw*nS(w3ijVt5cZgqJRFtJLvVnZbd}V~5_CV#>wt2|^bcBLgp8&w|zJTri zqaboyJu##5GO;Qyvr#4#&7XK@<1>djGYeaWm?~&##6#8k>mxnnX#G1jIY|SE1(43E zdP%CzyL#^N9Ro?x+fOV}nsqr`Ef?-l)MEfzEH07dN<0|nIpT3(Bm$}sOO=O9VDIOPPKpzo)EK3l$X_u+I1zWPX0r;O90*Uq_b9sTr_ zGyU0X&mft|Zvf@lthxXKr0~z9`)(1}6f)W0K9j@6e^%JUCAacgv$M1G|D)_J1ET8M zHqgx=AS0oY(u%Z{bPpgBN~bi^-CctSCJFMU?4e2Ebvt+M#8B+wp` zC@&h2*O0DuD0Z6L-6t=tl4({NT7668zJlh%f#OA^K$53Q1ES)zcC!e<)RvpJA)hO{ zemT{=Z`+M&j@I=lMl0QbDC0OeerE38()1g^eB`Q6Kx8_YK%x zZtZ$Pp$B7*GPDk@ZyZ2#a43`Yo#AHg!-}9~pu3=^c~R@VPsxF6;5|rS9P4yF%i@Pk zlsS$*q?OVei0rQ9YErbGcwWYN(@LZ6Ghhpqd?|nMj#VnbDd*7;T4|4aQ7<*$&Ew;z z?H|pwj33+Zt<+I9)e{cz7Zqu7xZFH8S6QGL;M?#fOPdSz(TXqH?wRx_L&$sG`=5 zW0?PNN@UYI5@vN za>|DX6U`XKFXw5NZG^*6#9HZ1kMIJ?1l3dCzwe!4g$4&-r_X0KUW;w>^8JFMS6zK_ z1MNtsN=1tVE(unGKqVy_0*tnpqi=dCIMYt^p9|W#~Y6_Rq-V6GFx#N=}FG*tC8i$=iu! zNAcfn^-Bi))av=C+=GZ{^akUQXWjvdXqR}_yXOFuZkLT8m zO@0mLfBx&gY3Sy|VEVnX1U65i{}fax6xZg@2MMPb8(+V}?|mu%^4Z5XkjwH*xtt&8 zEVAy{QKk}Zkz3lFnk}f$k2H->xQ^m-IJj3kkEv zajE_xN=j`kepJ-%huo_qzm{GfI_|QO`N$nvhU2fcBV!|G9q;7T&tfN|5;$Q#!p#De z`s)9knb%2x2|Ix_s@C7z8h&|n<~s>JMFY8*JZCn>VgA_f!35njPJnKp{PjYz4qqzh z6L1MRw1*m^(pzx$D<5QQi0qS@F?LZcsz-i;8-p zRn|~K`D?;~k*TG!y=Nl0NhZN?nsSkx$Lgc~SOyi%o4}15vW%*BZ za%mX{s!Z7&zDXxjUVPWU`Qr8Wi$SQ~lxCoO|I^s=H&24NMrY@!q@Q_pbt!cH8QkvR zSYu)Kc}s^?B;J|8eB_KIN}1hcKHKGTzaULB3U;1+m-6pp1iB#ZV*7Y-BQ0L?r+nd- z=Ly>_)i+HOf0?z}A#fpix}B}^|JU2#0S#1gievdY{59eo}2z~9LrQk(#fJkpiY^+7>wM&;j6`_~uz`pu>U^pe^ZwnqWK1>i6t{A`e#NtBsn zu%Ts1>fN1@VODfEd(R3YB8@VaUSPV^!bNCQZ}tB;Hykzwp4@3V(EXq5hYN)$Uj1-1 zlfU4SR>u#_6z24Na`UZ}EMC4Vj1!P!z)yF!$L1&bFVph3#}BUPyQ}0kmZqJbP3j+( zMg);jE={vHc#tCW`%wqT zKB6>v4o_;Of~5=Mcm##fSsy~N_O{U|jo`e_w`w8-V|O>|a~s{(K_8P4Yip3Q~hvLOb<`t$)nN|F=)x zg7N%kZ{cr~@c(-GzgDpSuMhp2FAxL?^8fWP|Lt<&p*KTTf}U3U|M!z%*(T)A(fH@1 z{>Om*It1+A0D;l*w*y+g&+vag{;%`Sf^@R{vuU(LLRaa>KZqr7ryT#NMZhU;(+4Ki z+pOfQyt;Dx@v7H6DJf}bOXdQDC>`RyuFxTewzMC9d95B;m1xc zE-huVKK<6iS6VuADgc3Z2~t4cK~mwg{~v#-YWf83J?#=q7G4=r$jQu%6QO+6IoX$- zkf2rQGOghAFXtIcg+SoiK^n?ukNt^%}3>lxp@1vxfwN8$Yhu8ZG@Nn~nQC@$a z_?}atmM74U?49d8C2k&-SFWQih9nQey^Hef&mXgA@-U!(!&u{m>_7hY-$(xal@Gou z(3||8CS>U7kYP=8UeaHP0T1|Ie@(H@<$znhJzQQP&B4Lp;ByTVpI~*#p*9mL-+Ja{ zg#}iGgO0YxU;3S%65KJS7#iq|ee>lD9dAYH+5XNRwK0L}=h8}RCuG1&MO9fI1-Yc6 zq5>n9S3P6Oi0dWv?-%~-a(wa>kdRk5s{ObqwAjv1+w*zwHFsQWY=6jTJq+Yzpj!Wd33qhZ~PdD!?@`dg(e>g-$ z1dlzZU?ySgZCb!;e-deAc%+2u_gJXZNSE&d4P2HB8{5wQ*nmq8%}$q={SmJ}uhVAE zL<-|%f1aICK{jG4e?QWRDfYToPG;HFiKIZ@6T_gNJyVe@aBZp}C3VsMw;{T@@O4@W zz=TxN!2e$++y6e3)kJ+9{K<~D#zoF6ER_ml&YpTgAf01Ea!AoUu@96!#9`sER~4ElW7-sGkEf)`0-{Y*ufAqih@hjL1A{@ zt3_9%Z|pD3_c16>BheAbLxpuGwx!8fTZR)4e^F6V9%*Uc0soklk1`RuZ)ZNXe{=^y zhKxFJ5^p@(8-e~WxA;UE2FSgL3Sas)IeTw&6a2vi@Yk^Wm}??kz(7!uJmRl6e;;8) zHB?DirN4RFw#;nT`RB!}{4GBA@|VD;LMyUi^M1MY@d5&r0CC!w-nPhq;k~G-%)`bD ziCwfKIVL_^PR;}^ExLq6*f|!Nq)&<-y%v8Lt*<>@mQzt~u9By;pl7&3?_&j(=R|n6 zZl`f^W~IuGThpONLI+jf`<9UZ<-U68D1dApLxYCjhR!CD4t`(;?q*+HU8TLd>R7Rv zQTy*h*%T#5aqhue>ur_E$Pn|Yz=fEYIB@ev1ZoJOc*(RIXYN#&os4*Lv`FK{4qld* z(6j?Z)a2~!ti(N5Qrah<1!lxcQX<5$d`0a*fc@=b91M%3suRNk&e~VSjmQLi2vT8Urx?*ja<5du@q5t3P z-Kdgo%N|vk@dh=0$F~xrlEwMu=l3@CO;1iFyU>R_zh^Y>g&p3qO6Vr=`nF@7YPV)# zli`LByjx$K7YWg<#AH@g*UX<1ntK{pLxcl?b3SK$rSe~v>}Hu9KyL%Ns-l^{nKGXZ zB_FVpIYHZflVijk{6{3{!3~ng1c8#BE{XJyrvEqN;gd-Z0H3Rh;dO z!6Yq?P3{rC(W3n9Y%a^1yjnCd$Dc3LtP`Y=9_nElvE|S*q_Jh)Uk&KHezBC1aZ66| z4qC7OeUcv`-Nk8aG@<6D8b6hRe*6e^`uo2btwJ7@TR{CXXO4r!Z}(r)WrZ(uzGa>*^t=(eWZAdAu5GP}6>e=U&aOTSk?Ex; zmc(p{HO!!b4)=WPO%MMfvQ%g)HT=Hvhp?905heLGph!N}E4qFx>OOC>k!z@=rKQC; z(>5ACQ4()5)_{!bQDZ*DyM(K*rL0`r6O{mWH{~jHpU^ti=`>5X_-)?6aI2o<-31Pa zri%v|fBPGP6-tPVP;*}GPoZb@(C-Q}{B8LDw!ne9>cu=)=+zTC`lod7f`b_ye|`_D zIa-$;C`s%bYLA(PGi$yoBpTI&#Tn9?7TbE?N1?m1qE z6qIeP_<<(Soky(Jj?@wHz**?oKw{0^^_Tqj`nnmHm+Ww9bDg0auZpdxCqlixPwbNW zW~7I=3{i;>*-eMX(6l^C%NaxHv6~E^bh8;s{We}V=IIW2$HO8i2CTo`@T|HD=yT0o zH>76%a>RdgPtSa!l@V3h9~)e*rMo0}@(@xB6Pu(Y9o_Ar)V)={k0zWcXpD`WX3DrU zKMXagDyzz)$2iV+2v5`-3K%9V>^bC2mOvERLTgOvF(0snkyMk|-)pB>>mqN^1G~ga zX%u?h&(8)5js;T{n%HtA@sUE^AlEo9iRJIKOL#IWE__x+zd(r3Iv!7`zm> zv$a=+nSe%*@$yVDH(U31x&xS>X|R`U--^q)XYEgkks50K zpk9qj4H{xqKS(Cf-{5&Z2=YA2Lb0$^?wV+<-fnxUxeyf-6A=)A29oX3WrbGsbDH}8 z_2@PEpcEtK9JSuc_yqDCS;gfg&J>lia=r6zJd7YSr^ed*KaSPaLizl3(A0Yhf1=be z&2GC+ttMD1XbZG6SQiL7-R{oPWftzW*4Z>)F-%(eCx~f{u_2!-%Sihx{v!MDl0!n= z&x9k>tm2G5=YP5In5cGTv{Y{xp0&reCSRW_4SmCcWI-g3u5%}W$Mp?h9lg)tBS>;S0kQ9Z3OVy!Y^Cvk7adr@s&z=rT4X5HIAuJdn^zVuDJ zo0(0$p{9%kk2^vBcM!;{Xjy5N~`I}3D5P~4q>Yudva%`|B+F3(4aG##&A9X?@(m5i3Q1p{AFCD{npY4}@HO=v95^^8 z25i)WgqCJA4fQoDksHCIQ@je5f82_VC7oQ$aVC8rG@F|-DzJ}Q;gu2U_i9(U@pmPQ ztD7$>E}Hi6&>I>d&Yy`I#En{VEG&2B*c+w(%y?8IASYK|%Zs+^<%@h>64EL3f<=!k zP7_d#d$6?JY1IaU$=69(JS-w!KF0Sr)8XyS`Od%`6}*?2pq2e%yTPG50ZlqCFg-zX z5qFQ+gxUAg+0OjIwg4(drVnM?i0vaW9fj|g_Se0PVCSHb@0pyxkPyk!3;)hx;~f^y zFw`OL%I#%dRpu-0jOa1JGQATVs}#0v_YbMB`NGp8PKOUCc=!G-h@b;KBS%JHk2xy} zfK~Xa)SuIG;@R%*u9BP_0+8dDcr?2@Txu*E$6=2D5G5xOg{ywo?;;~cI~Al(R3;l; z`%%v~4RS`ZJFNEOZ%iI4$!lwqZO$|%U!Bif(^p|k;x%m&Ti2x^Fw%pgK;!K*syqvF zkCHRK`ux_;-X70lCgTM`oS-M~v|Tr2!6ZwL*3CG6xEV)~!_X1a5hMem7e5@ectW=R zs^m2aBS_z*#WnASeD^$vxj};R`3Dm=tc-%3uwll(BBW7yisNxTDXqqEyW@6w%q+Kh zImK`NS(H2|ZxzO>`#!oqOLwGyN}my4nv0v2CD+`kzjz;4YHMz@<2y4Pcqj4Km3=}vVDT!>ZbL+G@ zEzCr0c}C9mm|h@EZjuo|OMG&yFk1@^CkcR^W2OqHwT&Uc!n&@Swl>SIR$7%*6f`FZ z3gDfUGt!A}2TO-Nwce@PWzLgvOQ;*7p>j@_b*62JxOeZXXVt5d{@XahL_wGEE9O+j zYa;MWzb)jlgMbLlNjPs!@hp*`(@NSSjac2Lxb!P3Vh$$di_Ux*`}$tfdq;1OFmnK0 zGRpLJ9-YVYxR03YcHTe|MDYxKIz*GP$^ zhL#mWCO#Q>3>Evu59F_FdmbvEfi#(T2BB|e^F7A2oChLg1x@d1&g6F)8pgRA`AV`&kmt)bffaa&LLM!{Z(tLWjgM)+M zL|pj?$rOghRc&0+OkrN46fXm`>>-MsEJ?-z;|3j{6{Yf`p`Fq97deKO7M;DV!EV>P zjC*F}<|Ftzy2i!!7zxXy-}@Yw;FE1nt*{J@DEG`Aj95#pXMmU$bJ_& zXEbYyGvLvQ=JN8E-p(uine;^I)GBH7D26Pr>5g%k1eGf*8D{clN6$m10qzCP!W2gg z`}Gz-awg26z?68adPSd{bvD84mh5L4mNV7C3f~2kYQ;bFZH{LU=lsl?xx8C$J|kQ| z7L$|wqioNZx7eP+Fe7WtSdm3&l~wPI6u0+oHqLd@qlbU3nm_z1Oc9K)%5u6o-S8RU z!?SR{FtUr`9L2W|iQ=JT8Q<@$&`A#g4d8wmBQ|>4b4jUZDW# z$Sl0BdyheS)|@UR>F1@y+M#3ug}k4D-i{fM{a~MWz(%smJbDyVTbCEvbWxgE4pCO7 zRL#Hjqdp#sgd0&v33x&FT98pe5?vgZ?_HCfxB&E90LFvV!KO;{vED8Y&O&bP*2dH2 z_%g3cw=XR;>bfsc`vvWnUs^`j-HecoPuvUk$GQ^c&p42y17uf*3R_|wxF3cN_QtT7 zn2OqGw)ST?2rq8E*3rO>Zarr6uxi09R=_dq9;439WtP*kMQNqMQxKL%nG>K#W?uSf zB1=|yw74_}6C{&aT(%IG32{Z#x^ z4#X}ADX2_QgZp=$W>5Bx_)bkaXUbq-L{GIm!VomyBPOF{2nwRLpOKN$I>f=FZW{tO z#&Qr~{kU2r8c5>Tulbl3%6#gu)oY1Pqaj1CVQnK|qnr1HDP6(ePO2|U(bWn|*%+wli z^Jhz;+6iVNzgvgyJ!8S`Hm40?HbM&JW5eAgF_C{J1U}UCAc}+I7ctVq04F~IWah-r z=I39d+)5JkR7Z*h=~5}v?~Do2nKq<%Cj;D{I4$EKQA~Xt0)|*XB1r2BK?Y?F_1(l` zCk;?uA|Yro?$Qo6y$D>Re!;*HCkM#!3<3*kXa+xj{$?6Huko6y(G2n(j-o{-VxToXBo$9J$?P8vNC-dxBmk zerb;It1snt!#NYkNc#Ti)2C*9feTwD?PO`^TeYG5{BbMz@){;=G`XkZ@cT08{;Flz zU^5h5Q3VSMyr#BRF@{NNwa@#Ct@Z2IGP9T-Bm@!?620^#Whnn(?q)=nm`_DIfSraR zJSu0Uhk_TSQsPd^cfj{OEQ>f){$fH&qU3X~|L48#wQj?#HEvOaUu#tPbP^|1xc>nL zg|j~+17TqPydlF$QTXJXu5sS1ggBZ8>eI~*yt|pci4b=4J0|nDbo(rqT=jArqZw3G2^^n`S+ z??uh=L$rqHpPvI)JwlFeWIXnmqKq^9{kovtflKF%6=?VzFOdp~ptNHvns%AC)VOF7Yw)d~tnTBEd*9|MCXV|v zxb4S98NL4ewxUQwa>?Ur;7io@+_P4v%$(9~DguA3a%C8gcq5vp%;Z&GYJkgT=Kr{fd2#ZIyjnH5eEc z$FB)=84gcf%D{5nD;_CdaynhtT~IJ|-3c<2tw+U76Q*o`K)}5HFS)x(8Hk2+sy}^| z@(=|$rzkiFnH){P*$zhD{WOT%={>;kz&PLnp!I|Dca6=;@(pxo{XWQO^ne36;W48h z-eH#kVP4{_m?zT?D6@nZG+BX=@sDay4 z$b+|FYC%p;z63h~X@l<}((lN*eJ&TxqR?(x$~2 zC&{NFi=@f?wY{BT#k%Spu?}C;=Dl;v^P^3TqOcgVwi7s-_N-FiMj`@1u|84G;JO=% zwCn|#96paX1v6UQStoWr@@r6CSV_MyR$0TKf(IB5p1Y+<`DH-u#vm}!1GG;W^CG>} z?EUYDL$mW!ZmfnNHe8NY znCC%_gLdcCB_KW4z75YvOJhVqt5R4ov0fh=iAfcmegLub3Y<%L1Dz|(w)COBnRtq1jqO~T zMw&U!1VS~oE`*MO2W5oxBOJ=q;IJa_@UrK&;bO*p{d3;+B1^B<98%7n&W0HApjD>9 zo73q0g|RjGSACmXp<$kjK;o+lOgxgwz9yqrlrIc!M z^CB$bX7saLz?OfQ<-#l@_^mLR?wQA?TZ%tv&&l?i*bn^jl|s*iTiRHZh$cFYI_Cdy z{Y_#hDoj^0)%JUsiRzM&mM;%nNTiShLJJmpUe(G`(o_^`2%E<+rJD(cn$PvE6d_Tz z$@L+Lc8nBkArspiXf|4)FBv5k**Bv1CRJSro%0ZkZ;~H#jSM-c&s_v=00;UfC!GmQ zg6~#7HBdKQJ{sQL6yKKTXVCP=rNL?CiooeU$`I;d zk^?z;8l+SZM8KR0Qliq074EO}Day!%*nNd`49HQG+ZAcooAe`uBNGx{-jLI;2_QL7 zxos5OLX&-=5E_RJ3nRl_0#nGWl+2EmV5KG!An-Nt;T^IGB}!DQG(Fs*@rDoI3cj{> z;Y%_DyY=Dy@K>&Bhlmka@x_HlU{Fxn@eg-dqz?qv2U=G5VV&98v~gV4WPbkI0z&U@ zLfK`sO;E?pT=^aT$E_G0uN+M!B#Su`q<1fg1CZJ!%cN0eooYd@{4YEta-_YT3+|v!a@K(UAd1Z}5nIFNxsegIryovaC7-*)PCQ{orh)NaxIF;kEQCc3WNL54XH;5QNKZ09XZ;`_38Y zLL(WWnjFw3PkUz%tb&PX5xNIdN($=eKLVx*-97~GrPk6^X7vLx&yUfT$oOMlkTbtT zK%DT!&g?y1O46tm^7N|}oZ8+Z=a9ACGC)U@Q*~NAIC4m*5F#KF;(lB6oQ!G{W$8a{=`d~dL}alXps6P((`e?V?B=0whP4>1~gHTpC( zE9g}p#Od-0Q;t#-U9>O)TNtAXYaI_(O7rYh5T>GGw>LN$Y?kmkc&lQ1pIih&Wl1xM zs%+Nbcp5aSU@;G;yw;Sc+OND+U7!Axm&_nzj`GiK(disUl2l81)jLo(+SSLANjhPjpnSt%(R==}jQ0>uV< zYY}BpilyX}jqR|HG6LuQm_tTkI0(3_5-%t>D^ji9oN~v?)#l;} zJ^j-Y5pyXzezEtFO>w?D0a&ECO(URyDM}KFfLkQUM@#qk@!OA?gotn|8TDmAuId)3 z4&IDL&OSmCJBER>jtncu-HEoSHDVW5sc*w;vc;?-p?imvjl?Yu_+ng<*O++KtbxHtBZJ31{~-}@BAG392`F>!|zf8$~7DUs0mNP+Uhhat=5q~fE>RX zmgFVri4xZ#m#anImw9$$!$rOech_ci1I*u!egGNKhp>e%U^le52)2ngN6ouVU6FL` z?nf4mmiFZd$c>jr8fPFdVP!)aa0%$Qf*O%SMo4m1_WV0d$X(T^W&<@G#~L~36UspT zeci8#0i~u3KOA`N9*qHm4vR`FUO$~q7ZVC`@di&KgWAU>9WJ*VCho?JTHJHZUW{Bj z8m^}l>KS7D=;pllkicJ@b!HGSaeJr5?fn`!aCzPEMw(HJpgV$&aOQEE87zhF0Wb0R@@arzq>Dgp&3E1sxmty>!3Mi#m}*NHYnWoM?vszc&5WR`;< zsjx`}fGNRrLsemUbmZs7d$doE>^y~=sKFWiC0z2bq6U5!_L*w64bO?u;K+(Cf-XMX ztZy|ZU5*puK>}%HTLP=l?yX(^YH-C=Dq6587<%0JIpHd zJR2&u<;qpsn()}flSznOGc7ax_Ed_WOjZo#bVA%nXTXcV31@S#mb@jym+o;YDNk)x zoK{01sif@ZJIDS@LW8Hnk?O~?k;rHR=xkdECJ(K-rA_k+jMKlP`Tr?j__W>BaP^17 z4e^H2KV_w-Kg$q%ZZ=bHK1RR7(Ddl!&5RuIbZ=*e!rR+>>B9{_G!du8rxDG%epE%e z*|gNuNaR)hP=Qf7oTdHe^m63DSxn=F7!O?i4wJdTkio9`GbGp&p?Q+mnQ4T8+sRyj z>Dj^BH~)x_XP#i34}AZ|ohUpEg=&nR<7Ft^RDrFQV`KIEFQ>5>`kQ@Q|I zzLfyR!7nQaUd+qoeLCu1`E#wj(O z3Nxn#2zp+l;@IzX)5Q;kU6<`Xp<=mf`m=wn3CIqO!MWT@Dx|-3)1QDAA7p)_D|@}q zBeUss%0KYwX%FLM7%40(_&uT*40G2F+Q-x|6%i5)$*O9S``)}_;(@sZaa-zt^z(yN)GTX$9O-uGH}{xcYi+Affr&_pe5%fN)&wsM zV{?>VeQfDXTvEvy9Ta(F?f&si7)0=K&!Dma&mT4&Mh6eLyIg;%%G=I_nD9jL(Cs^p zIm37$tZ3EPo-1Xk(-=58{8aspwUGDvs55~1pc}{r-QE+`=9Re*k)^nmrkGTT z+|T_^T_@HZwMkEta%y9^{KQ-PtLWHpL5cFOZi0+{N9~pw1$o}Aw0%C_#CL9ErAd}< zrP?^%jXF<7-RmI!^LqZU?$l){r5~)ZWIj^3=AI6)jtEjPfM%d$Q_mx&t=VNg3&u| zvwQ^xBO@)usN~wsT!8$IjG+j<%Oy5yw%t^fEtsdU*qWolZOiVR*H**bPm8<`8634B zFd|cJRl(!!0wQRvMR7;Aj8Ig-^j+|(KbRS(>>qdCN{FUhx(@v6?VDG`kcdbaa zoI9cjOfgq64l364)1!+tsK*F%UsmCSuB$rxM|Cn_HJNOU4loI#XO4Ogkyb?1RO)6?@f*T_7Sxq67py2%73>Nqa+xLEhFVnIg6y4D+)Z~6G)`){d2s;5^go5JptPY{Qef_uj&Kb3e6tBT+HP6|K9RJ*$aT znZPZEoN~f4Azqv*mRwW(L8-is)Xt%KG^LTkG>gH1)JXm;_moM3RRhb2_>4^sCP>O{LKSYR4LDBf&oa{Bu_>Cp&t+C>nPF6eaZImlrk&l!-U`_e|%I zyyquUIgrPQP41L2Fx38JPqD@c$ph7b7*=#)>y`q5O+%n()(1a2`_G= z*>h{4Glr}&Eg~J>C_?n2Bo$tcoBiYoqVBDJB9tBg9Ns!q4 zMB*{S2~N)J4MO#M^idoQT50tco#s^}>Dq#}^KYeEYut~mx;i>ofTulgRt|-M251;c`R9=%y;qzTI7@m~^ zTy?VCyj{qk#x$s7gX$(02f>mTpx#{8)^x3+lN0CCj$)BS0p_<|r?pP#j~@z zar~~I2X($SG~hMu)`0QzQiZV;I?0U9mFLlSMmfWY=*%$;$I=y2cqWOjJ&++Jh-ndkcY8jj4d^X$rPw{aB6LD7B!iH^&Wg4j#Ne+s)jVPv(L2bwWiS zyy~@wA?^}ReLg)e(37Ld?=xKX#xeHpK$4xh16^k zu*kYo9{I~iqj;fi4mJm*5;izEJ5q?t_-*|($kSxWbG;1zY&O#7OJlbhiT*B9mTOVh zTD;WiL#AH+MQ5nuNc^2LQ&kU6&y!15dZyOns_w6Oj0EhK9*-SEcNKD`yeC|u2iabr zhomrq&yIwP_U-fIJM+7lRA!O9;M79UK{aPL5~gr=9gKEWm27?j$}v%dxcVEbF9kjQ z<-P`2ezcAu`|2CpymH2+?BPurJk-8S@*_)ErYX@$rgw2VO$Y^xL`E>Nc8x%FNZBLU zZZ%Ozv3b{5NlU@u)Sis{O}lhj@A38WBbzQ{ZBrxEC7Q(4)WxBxQA(xo1Q?#{_n0x( zxX;eVk5&*ic9=nrX&M2h_7IDoKRZV|{YXx0hC90hdKq;@zPoecXe2(!4|X_~FWt%j zWa1|g3pvekd(Z!fT`1_=d3L8>ot@V9(M2dCHuM*z6?10#!!VT3HjKH&u4cEz?`nxoCbM6^r7k6(f zG-*K1A+*!kvwhPTZ!(F82_8(ozvZza4D zX*ij`19_{g1AKuz28z*G24EZewpn~54h^P*L zS*~===EKYL{XQXCctP1^4r`zu|H;LEUsQLZmq5BCIha#?OXNGwh2WLj-fMqw1r}aM zcncHy(cyfWmo`1Z$W28PRqqbvupr&**FZ`0J;#YM(_v6@R?8Ne%aC)I|_hu5errktUYZbWfD78bAp4-pH1w~ z0;)BpE`*0`^Ws0Yu)u^vLg%=b#+hbNBr-fELY(E!nKP z_-(1;&pyQI3z_hcOQn8OlVajaGj+6eq9sWl6uh!S7bwjIxP5)gDn#xFt>>zMR;SVT_pxWYy8-S~pIxf)wTK6PjA^VZ<>A zUiI%maUUnWHnHc(xZ2a&JWiZYv4J}Dh1AnJTs(#vO87S38u2nPOHG)IK(@XJYko-< z;lPw?a~Ct7Jt8&hL3Pu<9X`k)Mj}fh?~lu3J!O716;&0v zO3#J{Bjn@u+c;1i1b0`>sV} zH8AuZ5Nr1`=HeW>9dX#b4k$fCsJ66q^8MlTW>X@527wIuA zFdR)TRjl%uiX=-*V{|}IP-s0(DE^$j_s^QCM?t4>c^J_aYj ztbGH%3{&B-^SA^NmnkpL&NkKkzi{3^qf9jousTstu*#vP?cu=>su;T8Ql(A*!Hx$% z0?wM3a6T^HNL?a?6uZ^+$-H{dir)w|J%U3%29ouL+a$Q}wi2v?J)NW3Qc*}~O(CRw zgP_JOAIg(g1+#hC6ss7)DLgQYi#dV8AFs(z4~Ar;>`A67^6_lu-q8 zB;4+Y_J#vhC9>7q%#Sx-ZQvns%{dyj(`m5`3?ZDjVreN*R4M2+`)I-Y?vr zFj;sUBL5-CW*a%(@*9vYVBAZB(m@;(bT$|Gu52EZ=Te&Gns`@%^jPfd)OMk5K;U>P zP1kziaLKcqu3rU^`$;^mqhply5{Md4E(dHr*f)dXe&w$$m+?0J?U?|_su+mN^GVyJ zuMHu)x53nm$=myy;SBcDUW~`%q?p&J@oYU${bP9slHBTh+n2=MWgD1veLX$tTr(bu zS_^Y}_svlOtq+ob2-P#6icA|^{-j&s8km~!{z3$iFrJr#le`Ooyc zVVci$t{eh;GvWoerp9;oN72LB5qadkp}o0Q_SY$r0kTU2#u(N{Mltu#j7V_&{RS>E zY~%C`LrOQ+&a~Fb1er#3m35pj>&>Mw4p(QTwJ}o6np>b*MMARX^9r;)e$9%7LlQ*F zG00hY&bAe*-k^dd?&3;MNG91ZU6*gF2!BV^N>njfR@H}V5BCptgl!|@9~#pYzd6IEok<`-c?SL?p%erQVH z$LVnTxuiU+n9fuRs z4HusVRhT&~_^?0q3U6ljk$^Gaq*r z(waj=?6F{O0-vP?k$0#XLtaVI%J)Num1Rc<16h(N!s*g???7PYr^z~-i;I3x)Y89{ z2a6@Z<--`hcBZ}B`r_4(w3`GY>kpNcOh0ECfQZ04y$xal{onmn5dt zR|c@#8mh(s2pw#U$?^b?#8waS;UFmhqgpY%!fHB~1cEdvVvacs?4&lQj1Gde@V8eW z=9GP~JD&Bp&>986eU!0{Bg-!gqRqJr5NNwz)%BNxQaZZmo8(`;!Xnluh_UMd>+836 zD6Q14tBkSB!1Hob6ta`=UG zJSUw5i7p9{XX2#q?@l}G#?!FTF_y|U0S0m>_6u#n>ppJ;+>Z!hKfp$iG%&#S+p67e zz#nNF>|zl_lHqqh%C}=c&Bvm}HQlgf8VbSVj ziwV)zn>=B6rV7iD%xOIUoz+?_6|`g6ThPgd_A*ddCjBE9p2m^!U`?W_!{dizv--fN zzUdj!YU|XZGg_vC)FBKjtBH7FcPwMub(fX~3d_qTZ6tPE30fYW@!XP$A4!Trc04ZI zP2LjB*e-`b$+C)4ZnlX|vSg&fY21hIk83|lfgNu!Vr4kmh&_lYPt@pSv&?-=38E%n z2+>a9Fgg-loGc};W|7EQ-Epf?NJae}Ti4JpK zrho?5y}{CrmUVzOd8qMxQOIGwUodyxJy^ZU)kR@U@X~b8(*A_~huuo)dae}j1Mg4K zUi-0cgv?Kp^6^dD(Rh;+L_L<;8Py-Wg2 zOiaY62Rgm+6U10N2+O-72}? z1I*5#C(Z6v#o!mV08^ z_1iEkRpLDa+zx09Kqceq7!d+kG!cv8H`E2f))Q2M77!+k3Umke2CTbqsA9L>O>dQv zl$5t&obX$CuwbsF6!}INsa3Kp31W!?j10QB@Zjf+93rWmfSRlFO~qbb8u6%g?*ilo z2M2M1U^EGvo>_jUjKbjj9AO28`vqzxZ*Jt<)zMTAknS=RqU?U`i-LZ@v|;ea*! zNB^sg0Qd0FthCO<`@Q&sl??aS4DPoq;l&gk%eBFikl2l2EQedG`gU4Rd^xR!BE^!K zq;yYk3YR~*hhdi*ANQjfJEaOwUv~H@wu1>MSgTP4tP+(kC^iPLufwbxq z+1q>M?17J{r(VhkHqblPG()I=;AT8lT=yS|tXLM$W#a7lq`xpLp%?KTDU!7B00~X5 z%Abs730NoS0an?~g!C)C@ZQ)PiwToadF(!HNp@dv%CwSCr^$<0*_SJ|v<(LTSME4)ab2nax@#_B04^rGpJw`q_ksu-K zd!HUJ(dXd;Gx{c0k+=i{1DEbqNy^~nzE(t)6Ke^$ygC`8@=R~ii zy8g$rX>ji$@8PPbXxmFfarP=|JdzD=&Z4dL*!NaH5|Y-aTHyhMe?lp8VEZaPpNKDr z_W)`Ka{=V^@OBatbe7vf2;>RTE`tlCy^_o!Jc>uaZ3%shlOZA>^0Tmp2CZ5r`qt9Q z%1Sdf_+v~U__YN34oyNGNMdSp`sO)YrJt#ZtX~i8#lpRNS1v0SphrqTdIuTTCDGQ_ zhDyNMw9V0)MisMU=*C*X3JuDXdYW`U$=wIKcK||{P)`(?KiDl>ZatIacCac8R^<&a zxiLJODtr{_Am=42hSo}Vj;b2Ua&{iPWx-aZCx}X4dm3;D_}EU z9>g*Hmj)WAYn}6UZ_D_c!E|oGoEtow7xgfCgbQ=^C+MZp{O%CYPakxDkv{;7uu3}- zH;XI@>?^oDSqQy#cUT>XkdK@D)0dW(5pI8du$*Y%vNVIH*Y@}?6%{ax@WTaAk1*)&N@ zOH);8n(04S??2iA72+N9kzMMvk+DmFhPUUOUKX%25EpX6w`#Vo+eO`+Y{w$2(^01^ z_OwlE|AcZ^wf0AoS|%FIR@zR$+TGlQ(NOaNO0=bPigYboW|@_LjxHvlyAmd-xAS!hp3_z80VI@Bm{WR`}NuQa%&v&aypmtJI%JpHMtK{ zfPQg8;4u3Rd>K! zPLzPgeSM@gCbIO-je_5&py6j?;?TgF_}o1qH&lz zx6s`$-^ri6pIQ*7H60j>>J{eJq#5-!C6zAdWB7ue0CN-A=aZuEv(TF=lWmT;PyNIU7Wv8w(t}-x$FkeDr_7%cRqwiIfJ{ENegrUWl>U@Pd-MBdP$p ziM~0CLVb(lA*h~SE^KD;V$$~tc-$fgRN>S-D%JsZz&?spJBJo`k4#T1)6?Z>-yb$X zPo6w^e1K#_LZJm0iu;j$2dhYeG-UV-Toky}mh3>^9K0&q3|2M2btKgE0c=;uXbmD@ z_;k;PEWs7Y7!3u5gJ|lR#$1!XKK4-m{X-ZfjD6gSJ5!y$9~D*yj{v))m1-Hw&khlB zR5hv0gtAGl%MYX^B;-Oo)nAPhfW1U7j%U2R(~e)1;haA>5{4POwDK$ZI6-*7utFHi zciV?QFE6Jgf@<#^=#lXn;_;yiKznwDbh-Xr3QpKj7^S!Z*b)_qY7$RXV`f;{#^8V| zfl4FHC|&md5cbw#QN`Wc@17ZkQCjK7KtNh*=s{FeBm|^Wx`zg-0Te_jrF&3PI;9yz z2I-WRknZj}+u!>>&pFq5&vl)@=D(SJZP;sn*S+rhvqXF3r@6=c?CsD}degWHLZLuaMHBH(>5Fuh~`|pR1geaP& zju9jOhE|BGR6V9*%gFa2c3jh<*1=sgLTugEQ(J*iu~eW)w$uQ0ohyN*Q)}rY--JhK z;^oOqt-5i0uuFxxBVnqNkZT>d8k=G;wYk&8H<0dp9+8hcK;jE;D?2v&*xHmsR5M>p zS91hu3Zivf+Ak;>aqZ0!hGueoH!kaqQPW?2J6TJ*TnB zY3imgA&JQz4tNduA>(c2LA2{8s$Kl0ESM~S@+d6f4WEOPxyPq#;Ob9WApl<05AN9E-a05LEn04khR8 z;8EW3`m=9b-2Ea!Z2?8TTnUh0C7)cJ>Q%zU&)nYg#Xv1-OrspW>U*zPN&CYN78c5@(RgrrHG4#!wp1CoUXUQ6L67H+szEt7zEN3P8szDwU zz-CoqOnWyc=CXGinB6Dr+Rwz%GJh)ma)43F200J?V||tzl!}8E(~6sEhJ@+Xj^9pX zbYGf4Qo%gh;Z6(7GmgK{6j>u>Dn70}g*^$&*j^@^Z$A3gukimBaDVYH2+sA&%#axl zJZq+21v7b(&l^b4KlEola{1XI_8~|T93I?t&UOF(^JanWlU-6VHB6k6)77H}%q;L3 z*u~_h62fMMaCXPGL{udnTZXlB5t240H?4v$*C47W!M<%UfTB6Wff2x^W5mK>0z@;E zmSo(d!+<*&$q_0iG zgjrbLs?L87B_}5*A_6$U+YPLBQ6&s_4L~l3`+_6HJWa>QYH=JZ{u0tN-WXsms60cyZD;!0%wy(1ECARUeFQUZ>Zw+w z7U}2%KH@Wf&}42U-0}?bX;vdATnXQq^d{1o)q7nKj!8PL&+q~aW=Bb`F>K&Q-{BgA zOkw_`Q=>)`Z;a1O?EX|(M-R+_qB;@oU9KWQpWe%y&tuJYV2FxhJ#5Nmt(aI^ZvxY^i#~lAdc&do1tz~!HjmMFjLx;!O~unNqmd+ zH9J$KuiQ=z{iE(3yI)YI)bE#E7xJre`VJf74IV(4Yip6J8r6tDGJ+p|zzo{^16b|q z2v~KAfydttw#3cfylgjDFdW+WkvC=Z8Yv`EapDl4Tw`SGk@fPty>rC1dLA`xm^?87 z%nwye{9G#tRm_^pAsrO+_D1&e&W-nD9Q=szLvaeLM@ChdeGVW8!*y`_=?oZj% zxHZ>pzJ+&7#7`qeA z2G}~fF6!tp=fnoNi-M$x!>kfe0?UG|KON@YiM&Zah`bsPOFSpiv6dI z|1Z(El}JM~hH_Gz*6%VSfbt#@hSFmC)*Y+;Olz8WOPl7OZ%tDyd_^R~S=eyVr`Kk@ zzqL3fJZwNzt~adOuW9xLq)u?9{;8_OHC)3b-?{f9V>u$VD=>LUy|;hd{3Dl$c<6_* zw^`%M0XHQZS-MnCo^Uq5ta1Po!jK{;BEi~03<^i z{gq(bBwPT2`O!)=LxRPE6U@P-bpN6m8dDD;b$j6bO=jjowW*fGvc^8ZU?^Z{8g2V_ zjSVABa7yGMhr5Bs4`BH17*RJ4;Kuhe&EUp_IEs>IrckaL$J&*93;UtIINhXVTNsWV z*@HhceNejOJPXLO`B0xVde}3jsX{g ziH2~AEsUbP0de1pgOPo3`o!%a>B|VQ{vmx7%;?b9>wspk9)@T@bAy6)>zpWwqu2*T zRMKS(HcUxrEL!1x_o|QOw0w=zpCtDgWpX)k0v3L!D>-ldpt%pRj+o#7AQ23b?gfFP z4EGhzm>6b}Z;83tkn7$+6C}xI+`7}IIG4EXZUi~tf@$(TT+cg10EwjVj(2*~;6&{U zZaO$_#6Mz=6*ol8Uyq%P>?aGGu)l?6*O$s*kFZ9Sjy3|7N|iTMr@_-sj5iz0OoUgT^(@)VgO<3lMAE;Bx!mxS3KsCQ0Xs;rcQC`quMX>+UOS3r}CB_%Ty_ks(sNZ{1q8n1v}e zQ{7$a=Gwp59n73#Zg1-hB|J37r4Oc_?YX+#VK09>ywQP8A2A|qa!QII*~7|SjSB;B zgay+@*PrKvpXZQQzauQ;Ymhj(&q>qcmA9n0{K7^sb-{JV3r<^nP~j#u$&{<^?N}Rh zYus2?eni!tz8-q4Uwz19FB>J7NB?F7^<|WkKS}s@3PjB)y5w6UQzD232^dyqTbnU_ zuCphUBWq;Yca70oVHa$EZbWBC8+|tnhqBqyNj#fq{G@!o#p)U`Sg}Vd^Qwwe(gn=$ zzRU?ptJlt!3#XkP+V+U4C}iX`|9$hmgxAlXH>DKMdS0)xkoa5lZd=Y5oN<+089UGJ zmmECa{gCCl84uTp^E=#qO%f&X2BErs(Zrt4_oux-OlWL@+U&oqiCiPd8D8lmZP_f z>cutYvqL)gBWS$O#dUV(NHO$Xx7lgq+5=|P+`Z}Nd=BTvh;)zeIlI5lBq}Ts%;VH; z3o%0y{tWyfXEJC?(unt&hs<@VXUcy#g#%eX4;N8~X+{0tW%55FCE5TCzAd}ej3rN5 zSC8K^cmNQf0)U>G0Rn-HM&Lc*nFDqNM6R}A;5`uaNt4d_T^1HP14g-r`#!TP#&Bm4 zx>y;j3d5o?Y*CF=C0}F!87K*6Fuk&c3ixm;b23i}*Mg7)QnF*|0Hrt->9YEZ7bFc} zCgHwFO`a%ho4^dVB#cqPJOq*<5`&WckR&;;KHVTW$onvQp(izFiGg_)r$7S0`A@-! zEdql2{7`bh!!KXHP+5gk0h7Oa#a#bF>_os6CRD>K3$}d&%fEgHZSZz;)RK|1@A}yi znBy;GlR{;5hyD{!HekT@HsV7?(yref@NGn!I7V{x-smQYXpkWTh@ zU|`&8&0@oad*!_{U;QuEjBJ{IcMLQ=H_ z%s}jZI=zaiq_M1Ahcysf{VWu>16@A-t!0!2CXclV=Kms_8_6lqZ4u0GHzEWFKAZlj zHW)7@2T1+VWw0*YX(u8Kbzbz&hekGF+C&;i8;yjtK;91{@UV3cppF4HveH?tHi*>3 zE)8TU{&otwG_Es#0TC#iUMgv_?R|KuMyH4-3t$vts&Qh$A4D~(j5h6{iBYCu0rDYauT;HECj$2_2;Bi+P;DXw zRDspesyF~UnueKrNdsM~#^G>;a=KydqncS`k$zuCHm=rHK9lp4g^>%#P*-0I6J#k<^YbCy9cfXZs)?ADsnrI0oU34EvyF2 z^ilif@tqt?uI5KQr?ZE5mBpK0>)kJ${$!ylrB*&IRu}|TNe#oP2f=xL)O%LOMoMAJ zmLF9Z3U1IZD*O9n($+{!eBzDlJpI*EjOAVbd9uMzlC!!pq(}@ut%(v_3qsW%{`m47 z+V_pzsy_hSWES%7WxBFVhuo{H8qx3rXQKPdO|mIi^>w_iq1TQaxzA=#M7sPL!9c>ReEE2{BP*uHP*ZwLEh|-K zd3JBS(SdrQ%=Q~QL`?MxOYvcKG*MzVhnoL=}1L^A> z8PN*3fe8^tQSAZF=Zj)ZFDc@k&VWA;J@zR}2xe4b9Ideq)w9y)+bu*g1&-1&#G}^* z*x0D{A#1Q74?AoC3#(qR$mkKzfTNN)AC#@d4~T-F5duO; zg4OTW$FD^ZMvbLlEW>4z#xCTH#_JoJKZ!$p6eV0-_R;}KizT{IA`r6P}3H~^g zKmqhvAIkef9DG4j59z};@Ks;|`c-?eD?m8f4oHBbhg6OAOc_(9ywqy4p!nfPY0^T+ zO_%jzbjUm6TWtT*0_6ZTzV%<&e@TxC(f3F(By1zX>F{f$j9QXOSU>cPse=&dlLb+= zpX^(8SU%XEZ6Q#2zOU&03-As6x(ynD47|gzOn|eI&(6Em^u>9bZ$3=2VpE=Xq``5W@sZGCoG{WTEje;eQh)OWbREV ze}-fAaPx_dOY_@%qfeHFTw6;Wi30JkyGTpvtMk3e5h}Vh5%6>vSc6L5iJ}+}leN<# zh>+CpotY(EpChf&HuW^w)S7)CHmoZ=-9F1{r82E^B5|>P(sh)N2}j5=(920sxl%4a%cViuyMH{$kd+#3 z`PN3ygt|JqXcd&t=MI}V>T38iWS9(W$zx@kkOt0_n9J7((;;r9td!r#P zCwETagWY#pjHzry0sl>8%rjZXnUHn5AHNkw$YlNvw8GaJbJKbMp{DxqRJnh*26Ezk z6qn-stot4?N+O(hiNCP)HsY}scZFiIn=Ba%GQFdHtz@%`Oqb3Ix!qhsQ_kgc=j5B_ zVpdbzoBy=T2+fHtAt|WA z3iyzS?=}c3!jzN6NwkaRG*&o{&p&GHoo>&E+i=& z!_~QvJb`v6jiLX|hW|fG)<5uRpBa2xUKT}gJ{#hPwEf}KPgf=I3gVa0#)=Zf5uhmu z9$Apt3Gu;7C|BFkX|%PtX=m6|E&xR<2=*qxi6yiR5eN1`_M9r_-V7&&4foHB8QcLNpGDDWD@wVWW_U_-=JNv zt+idS_Qi2e{<7#zD@=J>*}FreN(}x;I5$07`Vo;`W}%2fjwb(%@jk5p`5|fMjW)k8 z&7a4eN8Jcc7v+{$ToZU<1|%KTuAUcx6wC`Rae%!m4rV ziR!@|1CfamnwmxWd8Z(h+zJDn!*C2|x7FyA$K$))NHFuDacL#lu`#dw+A5+VeC~Rm zjUrI9JMGL-xBRL3p*>U5;({-~16&0!jhx?svCaNl}6<}h)GdmQrg z`V0deg0m!r=;FV$rbqVMIE_c(#5B3?Hg2zF5gKsx)^iBf zD)KPo(8^zzv8&Ajv#^-wSYAI;^~8^h@87=DuXh$n-h0g)K(j!)+6jmUuMNW;l(Dh z1DwWhQeZ$EgKePc&Xo7oE3%*2cs@)cC~Ch--MgFeNsv%ZQoZEM@RJMfNx_%2EKve1 z6QxYXPxQ&p7x?{OVq{NA0EP`wI5`Z}+CmyP9NB1lA@*C#S8pvDPZxpUWAU25;b!nV zVNa@xKH@r37Do8k8~AJ*27OB$|AOfVg9?X@psO2?Hyr)-)-*}G1z7%`o00*KnXQCa zh%m&G(<_S{KEZb}+?j)=DNj;N1v{duEkt5Pb116II*5ypF}N(P>-ZAJ3Uztj@lMS&y4kllKYWzc_)UkMfkgBiez1%cZ z(|?p7&x0l4D;MC;QC4sH`g*xXA#Fx@#etVle(^yRgFl+QPbHA9}w|> zJeozy|AZ=u?|R9$A~Ui$9*pD6)6kfFbh8lR?}{X#B@fs<-6I;2#sn%o^DpG5jG{E= z$o%>n%9p{}l*NRC&_EtSZ~^WB$sly*MoP^;_~^pVcf#Gv<%>+$k0AnaT+CQ5lmaTN zkHNtpjsPHw3DvUWKv5+GQ_|sn7=h34L9L>w2I3HcsUO`uwE{D8I1{woe< zke5*gG(ZSp#)lwRYDD5abhyPSaDNel4x4=he8PCm#=ZBw1{o2xqg_A4yyhV-Ab(1> z@*VPo9&xz!Pwi^%1n%kGL6g*j5zKE*3|5(yFbvxahk8+fHq8VBmUrOYT*3hK0?J9u zMyl+!$aZ@<$d{#$VH|ReWhN%OPBZP0s7}f^YftR_KqgcIX;>~y@ug8j` z!W1S7S>C@!Wp8T-#Qmtg7V?C5Cii;Z`Ezm17g^x<%N#-{sFnPi)nJSSQ!;uF{vunh zc64cW6T!(4(MxxQm92sa4>>9pM&gT+_khq_%#uCQaRjFUf-vK|Snn_)x?)C3x+U=7 zDwhOKB*(wcl)d+*@NF3lo4eM=#pae$ta}H`5#d##NW7jy3c-$6AqlbEcDF zA(a^*3P=sJhIpc2xVw|w-QkE_n0=ePfb8Y**T6U@d)Oa<{qJlLo}dcWa|`MI7c?1v zIFfZS{aE9?qe?dEa0B^7#uVX*iMFCWjj;b+=i#^@mCp~Wg#fKf*-ZR=mAxO;X@2HhEgMhu1LmzfY z%w@gI7>Y>6L*d_`-Xh{-rm^f`gk<&Gf*IkZEkBQxL+1AEZ>ybogDruR$OSKoVpbDX z2bXCubHkd}3Rt~o%n2wa#>8o9sQ**V>sOeVpZ)qe36-a1Q@3|sj5%l~X;fypq5MbE zGkPmacqcoqwO)PcgVo>^iEimhO7rbQ_bMvpS>-{Uwkc*`hPO{iHRHtom8ZW%ndRl0 ztK;chTgEAJe-1Yd=Wk4au58J8eeu+9Ivh$tm3)l>bvi#r($&USTT>bva^0^pdLx`| zX%!pN{8PcO70>flTiSEgi^yz2*9Pa}=)=ukb z@gOpz>0#PdYp#^nm&CufIs)~B9$$on<&^A1w-+mb6S@C8j!_Z}MSq{Hu%TxjGxgkT zt?B&To%)89;mJjC7#0YYTO*#-dn)N2>~3$Mk`uv_{Uy-n+af~wARuN7q|amptY7AB zii@EAhKeUrR=%FO4_3KxkHLkTv2;kkDd9c74;$k_QVqT&GJ{Pgv*lL{UMsBbS7a#_j^FQm2HgBIu_d1Bw^NZ}0sdc2(@bKj_%O_hymbPz=+v6f#;0 zLJScAI#6eR!9DT%z&Bt9!U?F7Ujm%MB7icRG$+8w3$Ox35MkpD&=vK8e+45uGjk33 zkQku2qY$C7&7m*L7>KPn0D~IWu($QOAq)&H=@?C;Hj>HPK z3>UkhD$7O(`o~=voEHbaE6CcD0q^!0*;Gj%^%t9lTkk^v4nP1YxEi2{^8sWa>d;y! z(t^b0p*)TcO(~?TM*>hq@$K7ks`8_l?HG|ak^=8lK2T+uF{~b!6GJXRYWpz{s-aNB zw=fPiCgg{|LQEW^c$cM~SJov5ZP#QFo&3DT;YykCr|>GQ+o z^by(*A;vLPu$wR*YwMcR2L*zp0E0u*KYPzR;!5Y)Nusu{{;vwQN62_@=HMrX*xm}x`2xxVb zzJksR139Nrk5%Fn#Xe1@iE-_aIa;>8e^D;Xvuev9h196*xOk*vxQve?jD1dg3TzMEDu!r+K`jdk*k_JB55;8T7UI{p? z!rWdPg>ZjkHx;P5(Q^R;=^7b?!cB}TAln>8{OFW5m@KC;3H|_bC~j}m`hZTc&%Ju< zA+bxq1__30PN2vaZ8z)Lh75H(xDeGM#8WRLj479HUdZ#{*JdWeeF^8Fryous8Masv ztS;^+on9Y*7aD+HTMd?w7MW;(;V^Z`UHasFZ~ezUQ^ z@S35Gf4?c7HG*E$PCNS0i79fK8xO4KpW@sI*=)li5A3-wB>we_`9ztPFhD8GNHk4k z`AhM4O42RH7nC7yqhwW*KXiO!cy3y<8_mwamG+1Kp#OWatP&l=b6>hQ6`BAN4xG*g zni4(^7RWuhT2Dn_G=7g=8ja%1h!rhY6cs)Q-;m={`XlZJZtiI5N{<-@)5?b2#IP)nj*TBR;XITvIwro?7rMSyc&w5u`LClfTFbMyfa_RL_ zuIoDAba80NZV(phvwowi_S15c)XSj$&G)Vc*wu%yfTCUza=9Av2CWw|j3U3H+{Hz* zO!IXI8swSVg&lGQgWb4zB<@mLEOhwG=k1!MIad`;${P3JPos3&_?Bn=SvMzONP3PbZ=x`MNO;o(mD~?i=zd*3Z#SDJ zHCAqtTEMs$x1J!`jZ0Fv{1X?GW^M4e?!4Fc^Xtn$HyoLS$tgE;W^*tLo2_|>7ikE=G-`I9kl^|ZLFSFBu5a8zeF)jVFq2CAiQx_9W$LFlDPSCGv^W63 zV*IF?V<@o@^zCb@$0N{`mY1KimYr~lcfrYl(!c!7yC2GcImR59j=P8PNB)7>0|8L< zHajHhw&J)NIbX4Ia#>tLMC`N`zzM>oIUPPxGgk;1(*nt%ge)E1-Mlpf3*GJQpFpe8 zFEA2h*E}i!Aeb?BPhp&$kqRtcKcQGmW+`+A-bY&!XFduU`2x3RK&as~X4p_Pr-Ts} zWHTl!hA7$9GcX%lVf4Fn_{kSD+N6;P$Vw z4jWF2(6uZdSxMR_o%HiR2Ueg}b3WJ5kCRM{Z~FFEKF0I1$>Vree~_~&?fz2xiwcv& zj>(EvlMcbrztV|!p(#XIFCIYE6)Mvb+Yg_k>O@Vu4k|flEpywGQ#j23`c&nQrdY^w zaB?P`H>+{JoYck(#)Jxz&wLgPyj=E|>sSKNn85vvl2bNj+M#9;T2iR^EvWR5Y0!rrds8OLX7F} zEMJ+2H&wi3Aw&^lEjN?T-Ped7v(S00AjB;qzIF>1Ir&~zi*Cf!s~R$i_owZ`&#v#m z_ZnHd7GeTiQpkqr$>ZzKcRRsm-TI~F{!82hSguane@-s45KyF?#XJfE|L9ph$cEE^ z9v(MxeTMv^a~D@VYNQUec9VIrj};Rts3(?mHM_IKCFz&A!J1+rLtaMfbX}A7BF`A# zmNJ;q8ByRHLsmz6mDm^ywHK+2`cNf#{_2rF`(PFbK^b}R4>+-W@4sru_zLGySAWf~ zQtvF^=+kIb*QHahw0lI&fEWx?`yCdam-njMdFz=P7#_=^-!9K_lC}SRS7tO+SV2XH zLtS?IE~0yM4k|W4qa?JTp!Gfel<-p6E-&~#mWXMIs33j6bUuRhPF-V)fkci)!PDox zQ4)X7p4-orBs$D|y8r6W#b!nexozT^a9p{xwkqdi!d+yEY4Uub_I0v&QD0I%{8LEqo@5-(xR+f^dfiL&n0hXxOOE}`tH!;4_w3S z(q1zSHV77cfIPPG*tpZpSF8U=mNJh{TJvAogS=uhfm^(w=NIZ?syCkt?sIV&caH)A zh}t<_wWJJ5{%u;7dz+BGhM&XTjNoX8dABtsk>)cAAG=B*?(>Gq7N7LlVZ1y3R^0>B z*3XY0*seaBLrdKGTP6}VXIa;i(}~$@V%Mo$djy7RsHkavRq-azH~2SNP0HW7BGt$@ z^j(>pdqFR-e)E~=v;oU#lZx|5ajf~r#m>K8f?D7c?ysly-a?><3@s-mBf6O z0XR25P&1=qk0xCr-+2W(gl_5rJUkgh#?Y9Ar(llb-T6tce^pPI)e?dM@(!X4T@=UR zWrOXF#hCWchd(yD$l2(z$eGaHN5Y_tQSCviT(RS z1i>%oX_QY7bGT_9|9Hn^S_7(ADjw2Uj`49&uGb|Rb!m%YIq}?XM)0~4maHM%VB3fS z*eHVMMQSvnN$Jyf0f4H_V1@(xKvuhmHsleu+Y|F(9BzE4a~~QDoj7hjfY3W3;JA;& z!{;s$zeT-ZC}=PN;Q_26gq+oZSpyQU4`{!XVR8(@(JukvWj;RI-cHurMAc7>PCJb* zUpEU~303vKJ0<+UXr=$OUv>&>08@vE&E9+_d9W7XGf+g|d(&yX6%r#FD4)TKJS`n^ zHHTnP5kvH*76rJ+pV+e?$pNO<#{~cpKL31@(d$gB^3FwDYWMK+6<>`8iZ14!uC3&x zSIt=zh<0fcQ(U)u!U}$|@U_*TQ@8}ou2WDoZF&T_t;53Xp@oqep98_+R?Th3Z`$qv z&*`}+O<#guWVe5L)1MVw34(VPGFJrxE(m zO2-t~_;_-ygati1(qa%_)lvOXv`Z;$%W472oS=XfTyQCR*3@(`toP>@d-0Gw9nc|9 zUCq5W^A?5@k6Uv#dKWPtUP`5%h=4DD41ENmP1cX!wYYt0uKX&Fc`)o;++S?e^w~Ym z>hw+heRLUTiG-Mu%&A?FkFdz@C1;(VTe+Q=%Zdq;fUQO5TN)1!zYL#aouU_MvE0d3 zo8idC*D!xWncPIP%#d_OCv=KqTw!Uzv#DkJ|)I%z4yZ17_8G>(_+~6$?kIO1JlNUHIMa=)$V$8x8H2Q zd9&=x89v83n~_8ypH72M7S1UPM^k>jei}Iyy-_Y3npk|_;^Z(>cyHTIq9=86x*3y> z7cU>hFob+K<`%X{SD2Lf${weilTlH7Ns~8GQ4>wjfB6(>?G%Yh&!XR4{E ze*w{uygY{F4K{v-C=N#YWb6IsSw_LROU5widzMPkTvwq!o`X#!4v8BQ9{W?CHisG$dEQDoWF^5aWZz-q^=66zyP4d`FxEJkj<;ePNDd`|>Yuy%H zz5Z5utyMW+QjgFd^=1z@4_knlI9ubDtQI2?~C;bs3c9e(`JT z(_Z-5ahD3dy?$lT>}>IAIS{cix%YzJxjpuV^~%3v?f=xv|9&73s8oUdq5M6^%%A7R z1}TL;xu2PACBi8sUy1_bW-^iFyxHJ@1XMV5~;4k-hKp zxZE8yOVnh$oxl2{~b9UKmvk-7y$3Tz)S9K2BLChG=A;) zI6cWJwQC@0($Lzug}c5oZa2AasvukTY=2keu6uQDE_rN{9?JGf>$gA5aEvznj0=XfId^JB8i4Da0rr4xe zlz~;!2y<|oC|J&jLNn>NDi4saW*(^lxisfuywmclMaK$j~b=#Dikpc=zso(pLSHd`MzvtYTgYGas8^(cyZ0H zqtZEPC@REnNU6j5%C#M8Pm^dqaYRd{_;Tmg9B_Z}vh!TP?(%bVzP5s@hh2fzq`a8j z9}fQdvsfM>0qd7LpPa%f-nbWWeAgfAfo4~S+5D?cJH2SN72ZxG1~c)1!m~bptd7xgj7tx)>WR;xaYBpY<%xMA5J}&JFKIOyM^3Yy|}%C zvmC{Et)d#+Hup7#+8@)4>eX?x_8I*7T;!ifpM#iy-unQh*2^aJMLO;!YF= znKe!*RG&2go=dKJZ`t`e@MEABu;uAzBsROvieaCRuK0l=oe_(pLC8E82Fp(-{Fji= z@%E$WFfXYnq66Y{2Eqh@2lBJZZfxM80#7>$6EW38Lx?se81O^uxil{g(H6OaHl<33 zpw03UEtC?Q+A1dxE5;x90`~?q-8Q~^{}-Z;E^Re%-uc^l14X&?Hxu!;y$sKXw)=Xq zvxESxwe-e1Iuu`AZY+3?E0m}>+sBz_r_PvpN)cdxr(f=KNJaq2v;GQe^$A&kv|X|d zTJ00g^hnh<0>sPS_bxEU&He*k-S!>0K zo_;#biUa~{PZvB-@6Yk?=}Jimqzx)8Pawn3niJYuXe$t>wa^&OIzVfo z_VTBS^W}l8kMCl+#M;`3@Ko5>Y#IY@a*XnlELNd3xaEDtO^+|)-2+wDwm|a!Z_iWd zqVgdQ<2=?$qa6SuA*6XCSC=mBUFA#nwrceUILTF@U!k>HVr?l!^(;R*MdeCW2R8am z&ms4*#0;*X5O%rq!e}3cNhBTHOqLf@B9{omjnY6~2+1+DIFW+X5(eM6I z)YCiaASsXW(zX-fOS&_ybFWi#Gfvt&QYtq-EzS-^#O)RaC~Y{Fn=HjyPP<%PKEJ2b zTRD?0$%?CZwU@M;ucsVO1vAjp#CY0|l^RW@R%=@DPTrIBP=KDKPW=8PXKB$nX0WEE z8MiM1o;g$@L^IS^}42gaJl8PwdGG0&k-uK|RfJ>s}n2~INvniAawVp;F8`W>6Ry>rL-F}M(f z2Oz`|#N6OUKf6P!KM==fzyMLM*#qnYa*CQR-+brZ903KQB1-@Z`ix8`ty^8#jEQ?( zP@hYoPYH8`^v%5BM39nMpXrtEtN?jt2_P(k+g?Byr~rC)6!gf52cVZ38?mnxE>Dm& ze{~TW3pn~+WiNm(!2MS~@#GQa>_^;@-)7CydMWt-HjZH99%*gn<3V4Ut=MB>=*IHv#qH!OkJ#Yqk5H=K33d>b}G0`=&yg0Jnf2n)KS;Ar%3>kh359 zetAZx!ln|K;G&Sm2HdO4KaT4uAsGFI1=JD?&$*#aTY#E#1s%9X{AX|A@Kz0qHg?fuPE}s{TneDcVHqI!&5YJ&9b&vdsKv!^NNf zUYy+6OlbQeyy1BE&g^K@GETSHo#!)utVQWb1h33wPR}Ej{s}` z3#DMV$XruR6EUev@hiJc#F4$o6=A1X&v6J@(z#ZA*!q*tF%}&+HtPF+y5{^ZNduQx zgvv-%cTW&E?@;)~HyAv37ek~n|n=k&m!=}oN9 z`PPW}#)mu87g0@{zGt0@7l>!>(Tjo~g9(LX6FK)RUc{#AMJA}B2cjH}*nN9M$gu67 zuBK*8;(WdL77F7PI?CRCnr^O?D2(1;ADrfaO-nAi9mxNm-OdR$*zL?0&&@Tyt+s%0 zf~e$y+JX}-X%wl07Vs7qv4h`V8C-ZrYZ%3r0AI)LE@7Bu*r?+8BJ`_2LlU+lJux?M zFA*ijO8^y^0G@>MRsTL|-oagK0qDsK@Zjs=Ce4b8ICgp`w|DGIU zguGEtq$Xb53qUuUlOpZG-HYbXWSpQCT#A<9{V#;-M_3|Ya`QUs_IMa;4Eg(*DkYhV z_lukFVVu6i9*_1(h+W%C$y7sRC<$Novsl>zE|&v)CM&NNWp+F00yRy%5DxVqbLOp< zzHT0O+~Y%-0G+}sWBxeJ2o5V#K&k0s!_gc>>E6hhiFnTVqj1YAXssT^Khc!6v=5Nu zpTwcvjmxieMn$7owsXi$otexDpN9Q@qW@;!1^*ZkEEqT7_@$C}H?q@oI|=B=L?Ca6 z95@z*e7)0Y;8Iw2DijekeKvK(W5xV}97T~M56Deh-$c@3qP=d>F@D(8&}?DNKugCyH)@8}A`h0;Z< zH%(fxIey5V4j?K}5$gK3_*O$Fleg44(%YyR-n zEJfYt$4#uFjEF9dt4i(RqUk%pC%$i4_u9XQEdDabLn>|uW(~_e@Jg|Y%QGr(Mm;ff zl`brDVz9rLQ&~WNG_WzXvM{AzXI=avweIm$a>>2dD@Wh(pDGm3B%GVYl`_5S%0OtT zs(J5{R9vXo)d;8)1k9lV9ts_8Y45%(@Vz1(`)*Q6#X4$>Qk?@F+1gBRFmE0&m>^X5 zq!rBx`W6Rh)8hUZ^~Cj`2*RjY?HrDfdonwSLL% zZPn}thi83q66&-Y|A7oiLPX9TUviC$xHkQ#j^yCv_EP(^N!JzzcdkBV5ifQ?gpN+9 zxqhm>-J;P}mL8N!n4I0;9N6e8hqoynrOFq$M7CP;Ov|)YC-x*t=u|mK{H;iRDWpiK zkIqXOb5u?Any?4@=%Z!hPK0Em4JK~0j;;wE`>aSCmkbqoo3%n3n?@ZQU39;96r>0o zPA`fK_{{GMojrFHQW3KsJJqJr8PxbEHvd;V`FD#bpF-d$6>NuuPI-syYls-Yp?yhZ z{0mOO?4X8|td4ADwdd5tWPk+(&!&P&#oeqnfw<4I(U3$S z=-|!-5!*poZ4li{kYgZ5#c~iy>Hy=wUZ)6Ysu!6dz>ti3iPpUYtePh_bhc% z;@UXUJbyf-2=z(4NeZ;qgw;bMei8})d`7KJ;-S2Xc>nXa*7oGThndC#Uh5P~<3_o`2uVt?<^{WZkEz`P<=O1nk6Wn)x|lsCO_li0S2XiDeKHbDpwRLe<~Cp1 z(qTz5pSi#mLK_8TT5a+-nSiH=i8|kUsKCGzjNsSG8y-?c;pgIX)T18-Ta0KXnLD}X zBr&wLXOLX@Q1FxfqEK5lzHiNq3pw&N*6Bm6wISgls6Zqwl=-jWa^NZ9X=}eIUD(nP zuW4~piddTgfeZ+ z2O!ua4)lXw>xnN7lyC-eCCNB!R(~R#Pr{r&?2ux`(i(qNEBt|FoVq|pG7YUHLwn%W zrVktj99+VPUF#j%^g~V#{*l0neijv^T!Cp~RR?ex%lG^t?kI`9r)WFqBX}QSoCT9& zMd3~#LgMU*T%QSZ(n@Ot8rsq>fcNtFMm2VF?}Q! znoD4ffgin`=_@(Ae>FNII`xu-7WOf%7F?dPx}y2FJT99CGYtzXauxH-3C^ddbnhD#c0`~1D#T&L zd>`-T&^ATI+V0(s^XK@}?90%(t*EPLL-q8)s+f7>Jd!l* zw70)gsm3c|efwpMBzxYs$;;G;fh;B7JVRdRNfJe3wEF_yCr|y(tFi~`Uup}3Q}fTj zXKjY=zVRjm{hepDT<>tvA<7<98YXwPp6yIYwP2oHGM3(U?qAuQe%@l}%iSh27{lxM z$0qS;yEhZPH2iBfA)sK)d^%b)-oR2{YVZq<{a~1idAIl1d0bpLO@y?WrVHD*yX=b2 z-MRy2%ilA1Fd3hd+|1ZN=Z3Bz{-f(+a!{ow9_O2>l4i{X)(=*KjO`L>HIX5qi#HK_zbkg#FR*~^Ba(9@1qh0q|CI4xY z3GK6{4BF=m$}6*eAu?{Bt%OIwYRESds8b)%^IbO zqNv^0s@f~4($?Oa+Dh%(B}(nBs8y*DtM;n>-G1NmyvOss@B953M?w*V^Zej`*s?%L#uzGTL{CyvjEQ3 zrGk&U@aqEaaou)&>CXt|g`#xpDxt`bGf2*7v({gUB}UaYRNva(4G=T|5{A3<&Un%7 z_m4K`G_onv6#@2WUg)Aj?qUM)Q{)5tPWgPq|(mtc_Cv_};s)VY-zxaUv@Qsv3`7X!Esj5GhnF z3ZK*0%kfGgCanRTPF3ofT+n$u9ON=mcD>>{K*vMVH$vAX-;C6Msr>@w25_{UxX%Z9&UOb5k631ysGG^+4vF4T&y@vd?L&dlF**- zT52Z$7XzEYCA-f4RlgXf<4SA<$>XY!PJ42aCu~EgocJ+jm7hbi=vfUxm4yyzoBrgm z9KlYQ6f{>asb;4N>KPTvvqI0$jEtKt87}WZAn*Y2G;17hlvPe6D$+n}BTaBn25oMS zX1BHj35RK`Q#Q*_M4c3~_9-xXR|`o0HGu9$XCCPKo?lCfiz7di#Q99$<*(j1U|xK! zBV)7JaAE-Q&|P*QmHyeFM5opBPal&rB=P=L-S8{k0zS5*5U8a`CfKzY>D+JI8-~ zP+m6UjyTQYG;)~s@`-xMBz#o49?mm^E5@=r9VdkjA=Vy>seO`gy!Ay(UXkul2=VKS zUB1RQ<`|v2f5Dyw9e{I~(Pq=M;pICB9rY8=K3SafMX;Ito3_@0lGIR=PbmcUFD9ML z8Re^=kBd1bALKo(#^FxkdrqVxL;i7)?#A|d_ed|SzR{OOjpAp!Ce`kIQu8uaF=MrU zCZrsstD^$AzIcR6AC6dsMYmUf+&45{KP`WACZ3`igZA$cxw}+mX1Qq;>08$eN%`_z zLmt+(AVatA6CK;}TJe8U%FnMT<>HdMvk+{T8_O+!hOUSh%!il$G`8=YpSld}nP&C| zh*j$Jhcf%yWi&H%D0rW>e~|&WB6AkyuRXfKAUVw6!$>3!*gF-p< zOno+FIQmGio5K@&fMkL=8CFrN_7ZeRGS!Fd#tgCas~JPywh<2@Oc+P94i{c@3#GT~ zwycD`aNPFhX9N_0e6VVZaC>-%2Kf}NB|uX+W1be7VAiV?kaH27+Ibg&Chkr?0p9Mx z3=bRE%ZM0x&al1Ha6_1LuGw&=y(@o_28(mHFoAW$P|jBJd+Et3|!~&}5 zRjCX6l$C$mPE@5F4LS-HrdRNwQYY(D$`7cIUKd6v!wf-yeVn2Jc^F9M$Eh1>84l!J zb-A34wZu4}YZ=atsJh0nHQl-_sNm~AqjWw(MJ zp7F!B_=@~VNI^=#%9xzwT49^Go7z`1kjSKJ%-hVxFRMag+D>odIB~o<@$_)=>%e22 zOz(P-PC*25`Nqt%KTc509Q`h(@4dJ}z%LlXCSRfe|uBIs?p^%Y(7s$DKi zAI_bvFofkSC|0%GiJ$g4z=1jbl8L1r{=HxL8fb~4Bz{{DC$5YqwrbUH$3I_ey87u~ zO;IX=ia39#zS)$j?U<~@UQzy(@wAjsd3v$9wTM*p+pvIw$zo3Z0oeVnyYKtYbvA9| ztOsVw>5c}8**CK$8mhgCSDm~3bnCFIy5qhC6gLw6=3DGqN{^3TRQdGCNIkM*n0lu4 zd;_jqq9M@JZ_oE-+9S4~LzBJ1`)}(lOSW9*;{PkkN&iMjk=$TAZlGa>oz{=FO;i+k zwkdR}tSY|uDE4@e`}32=AHuG7Gg^fjHW8^V0b52!vCyi)i$CO8pm74o*3T;l6l~g; z=|iRMoS)(!>7~o4M0wwTOwSmkW6Qd<@~bZEwR}ldja|myBg1zlDpBC4|L+r};?+bM z?)~Y936vBN#<;(OS&$Y$qn#b!0g`8S2sHV6*P%H?l^OM(dGi>S4fO{YTu2F)fwkY? zzUwa6n|9LIt3fsKliJ}XODX}0NfEeI0=A$Trs10!GUOR#k^K5-E(2O$Ve(rQ15%2*8-H1c2*jdI0BG~@j{%OU5)*W#48X%HEA!<=YN}FtDF2huq9BM(Se!~<>6}>RU7Gu zDvqZQBO}m8-(!A$OE#MaC6%~AOtc&1%B2&IP;>#cM=KvgOFwYVm?Rwr8grPFY`fJs z`;l^u5Bbz!TZ_-*Qx1V{RmM}SYK_bY2`b5%0}oFt&vy_)VIF4v?L2!(L|K?=nB=Bf z(rZ+ia|8aj9A;q>DaoXoB0UqxDz)T6C;h$#pu?gize2>z&P=qOp8+L`0%^m0zczh4 z@8jMxU;gcKG$=M0wBS7qlX}cYlRG!!cWMM z`J(dTPzi?GjRvsI>w7hvIOD|IwwbPN&E02%Fjn;EeG44nT9nk5U50^LmJ9uGg4AS` z<6Ps^1tErx3iU;%;-2wN`+)~j8I2uIf+-BranKbHTDzNB_?QX+)}!FP6$zlQf6D^N z?T~m%gV{9%xV&BD|H@zP$xpb5Jco}Q(>|1{ZVjV^SH+u_9sup zBWKoOR!TlKlPAtLL9W$f68`D}q^@#ZI(VHbnossaW){7w`+Y5T6h!=)wR&zmw6Q<_ zw40&vq-Sc5PBqb`uQZ%X&JGxy!{424GV76nxjU=Hf4nH@<=zTBP_73g?AA5_$j5X|oEO ze6P1GnD`{1$=^I$Z+RHE?@j#oCig`g)^z7MDafR_^|g{NP?eV)u)z zvH0K0!H#@DaOw9vgd}Cly8jL@ZXU*|{&VYN|5pXCy|cEN@}3+i5$i%13Qf`2IKA*w zTfT-rC(NpQj~za{+U3}0{7qV`b-FL)0`ENh=Pap z8MGdn{MIKE!HzeyHxHu$EC4P5j`@aHgSjLf+Nsz0t<-}!Q8>CM{}m%H$jEOgsdWr_ z&>P!|)U&|Ax}a|{j__?bgBrl&;)f>Ly-BrlMJq}D1_--T>;NZcCS-Ow@n8bL4>k+> za7QNyFaxf@R{-kbj`zCKOx=?fh|et*py^VYPl-}gWsbh7^Trz_szuPxQ39xNemiQE zrsJ_$-F(1(X%lsb)=ziH8;Bv?5YK!Osv?4}%(i?2Zuv@yxDWm`N$I+eE)A_BrQwF} z>INELoR;U|&vxooq4V2V9Kc03{eqNX?4gjy=B)1arz|-Kh%;T`Snf!#_MV{wELisRPqq8( zZXff8H~QYbCgzh;pRzG@6fgb8x2NcrH42?9DC5p3rJxHKFTQVg>}Z?2Mj8mJns|#k zXlR`P^@q#6u73zD=}D=vQv8t?3Qc$w`9nfan=mHG?knN<#+?Jg@VC-D4g&~4wDShg zT(Kib1rV}bd!RCR>^G+^Ur%hOe0*;1oB!uW9P>UIP9F3IQv|pDY;%LSxNPRN^u!UN z)sSjv_i6T22=m*B@9FKq*CqKmbh9>}P@eY&!}^JUk~RW@BF^btGm=AMI??XNx1$q* zlEKb$T9q}%<{lVnf~dykF*qQ;)x0#eT2_tgIjszAbBaCYFMXgDGThJx? z69n1HTOR};hHym5ofI)9nb2JbA&X|y9#VtLQc*ZZ*Lb`a>tknu5RSIWP`P0K@LL&o z-QFiC6%Wyv+1tj?;cpAG#K1{4y|l)`^B#EZjnKH=BkG?1keP_vxan&W4{knxnTXt)`TWtP<0Vs! zBde2~S+ioN_B>aXz--Wnwpw)7-A<$Z(|O0+b2F3IO`m^V#1PJQi)eg_%B%vzbDPw} z9c0g(gEd+_CQn{Hyet^~C0Y3PzQS*X6k*%yvlsn@O^ZzyYL?2cboF~arQFGwnTXvR ze9p^9XKi>*6sLCb5#+}iBnTNq=e=HD_%`x-pIwB>=zo4}T18N`cq&+&V#$R3^uY7` zY%o7K8CKcv2IQG{C5HLxJ54{)YT97xv70rC9cVQTdRXIB{^!X~g70yMQ=WOD)MOr| zhck1=W7D-GTHcKopX$7d*f&#!|D{)ED?_COBnN3#df`zI7h^AOi*PU**>gYLShJRh zB`QAyds#+wKNXXEG*_*<{I_chTCE%;sW|;8IiDg~;MtJ$7Uyp_U;qjZ$N~T$?fISf zy`Nk%#w$Wr6-Jrz z*MaJtiDKg9=)3LXgp)cLcwKs9lek;R`mI5)6$BFU5(iqaGz_a>N~V4%M^e_G#ZUn; zM7zDZ&oS6c55YHxYp z+&9Lrho|o_E;AHelU#&W^hq%``gN`IM3XtD*Vi|+(DRgE6^1*cwP=`^V$X+Y`i8F; zDy_}8EiknIU72QezI8rkzh3y;3Co}=pM6<>p^>`JL!D>bCo@N^1TTGO`IH8|6p3gV zZ2?%AJu!h{QK|%zG)bL;!j#uHnUMc?$2lovOz&sGK6oD*o-*~(no z4T2<3k$kZ3OPq2^Jf#faRg7xAI4Bo(#-Mc(6L0c!Pr>DxX&`kt{Zb+P!G01e=a7SI z)#CEy`2A1$kHoO5l0~lB*@lUwJ#mv4)w(TD7^N=r^Vy74`kPv2Dot+wnbl*-ozLlwHiw4;90yE1#4Pm&nzE?k=u zw|v&IyTL8?T;ucDQ2dxZwj_3u?0iwPvrf5@~>nW{hY))*N5s-2g-H32f~tg?Tqwj9{U z`*-vs$Q!Pt4ga10=E??&YJ-aiftCsrJ{?_|-zGJl#4sX&lA#nGbx8tT)1cSM1Ec(@ ziaH{=pHizQQK29J7b%Ka^5S<+SP2^{k$I7z{(AB{$b8!>T{zc0OEF6Sgj)F)wAT*k zpft?c6WNHz*m?Qt5U4QrMhGQtAZ^)w#^5!FLpHs+4(Q1gLMfSl7Ida&bXkWgTdTRf zrju|?4-xTO!Q;wxn5mtxpg?}&^^CXyIm~9%3P9HQW1>SXZ;?JArGN;zOjk%ZV^l=}cK*A+#~PF3VtzFuHeKKPUCn{(H41BV=yW4A2N-sm@Zaa2mGp zojV7`){>M9?$-bsK2#VO<#y&=cmqDUJanMw;c!Ba;f<`2)H=z2A{yFZKHb&svm1fs z(>R45*6-r)DW?IilsVIl&TA=UYDO3mmUl0y)fxH-lpCe%mu)v*jBtfSTN(~3^M0>)zkbv=Y0}+lE zDc;LOCFvRKvAb~e0aIDlGIybLA|5U4_@?Y!?#reW*?0R#h9mf}teq5Hz=Gj|b8Fp-a&7z0 zOV*|S7styR^|(%>X#y-6mKd@9%Wp{U7Vowm5f@|~$lUp=c$+DYH-vX`k=On_-C>w>P> zv`0c`us|XQ?5)zk*u=4`)%O=eY8Ri_Ulj@7>@81CwLuNi>3(mf+L+=aKqQ}z1%J;s zxmS|RZZ}q)rg54Uz$^BoMp!FXg=sdTJGuqDUj2(T3DhN|Sm1AQ`P!c;Zq#z}>f_?Z z>@Czse>Qe@Qbg|3nDBOpHk3#_;yAfIaR z7>EIj)qh&6Lw@y=qshTa!0s*32VQYq%h?1L%7v0O$3t_N3_0iQf259VqeR&94@SUa z0rNMIY&035Tz|7Fk3T{gA+FvH*Y{FvYh{;r1x z0yKtjpc{cg>`H^J^F)CQgVb-3XV~^y$n#;iVANq7vlra=qaS<*aI8e3K=aWnx!IeE z{yC@J@{S2VR74F#k~lUU>PvrrTWd;d7z!?zEP>({2nlFlZ`RSbfWJlg>aNBmy&c1eT~da$N2Ght z@HwwNNoijRQ74tTIF6{7;zxoD<24G81+XHa3vbUP^<4{;7Z$+rBvYxJd}}8h@8a-~}wERgztkrioA5Nve{rkG2F#8W7o+%0wsh4mYwX zC7f`Jh9~zmI4Atm{au*e$R;2pF2&w&N;CrH#EsKS^O}26w72Jv)#XG66TOaAX1k@@_${B_*7twy zKtRM_kk90$%EPOG8lB^aNT5ILF4-!t&`MLN?uWaLm4{k+4X*(qI8#e zrz|qGCYNzU$85tP!v4##kKq@k0&e}W8*PGxy)CfsyLELW>kMbCoof7=5*u!|F)zQZNWlep^OrCq3UOe(=z=L^) zyIiNWPH_#b4JwBYhL-65+gMp0o8Sv-^^%gZr2WQ`xoruWqak)}*=Jf}*k=0De)Oa7 zD2@~<8_Gl*_=@P|;7qGqHO0m(|7qPzQH}3TVqGdh+n`M(>e)#4PWRc*#_T{S;b z>;DZXoU6Ej?UYtd?E=leNb%CA_O$~?9X4jVuVRlGS@cKy+bO@S{fHCqJg&Y^zh|m4 zpsE)ar-|T;`uFSq3zx*3f#hvp`5d;6Uf zhirbBM<^|H4tU6S)7qw6Tzbz6fS<+_n;h zsN>1O?kQ={e?hPin}>-z=ioWepb1z+o&P z@EsF>>w0JML5@(8m|+R2bqR8+C@FKPbTtSB(h>MPxJx7w8jmdqw|rWfjSz~em~A5J zy*~q^@feKR6nWaS4puL0=#GQ>a=*?f+e|OzSFc|EiCw>tvUbqpIN@^q%D)0zWR_6q zRcZ->bax4l0qybl*D6?pcj^KzFFt1b+<(gXt48j8U+);pd}-GeWM}<7Bw;5ylsgD} z%kuicz|TL5(QWInYLUWG4?EYT6neF|<2OrK+9o>*f61SxEvK8+8^kPvna-HouH+cj zJ+|_iThrH$znhBkqG(;(;n}a-6iJbB;f0`1JZ&dUTw%UsWoI$dXS32(t@JorZZ}l^ z?A9IB`#sJID;j{l6Fs9*6 zOI7+!>WtS}ynX}KCO${-QC8{NnVB-#5MiGkcdwlcYxj2t=9#L^+I8?(>-vmrV)#i| z-6UxaX_DlnU!1ACvbO13=M|`uKsl$Tvf$Uk=$D2%Z%wc#pd*t~c=^L^>{n^=9&{FW z=Xgy~vc5pLo@;o(y~)p}nsEBU5gxdhYvFpy6@Vxte0lk-C%3U)!BHOI+0_ z8E7-n9qUb8#op&jkQ7^h`0%|vhv~n_)ql+y>5YV3fcM&jp9y2x z+qw=VG2uI&k?3IOY}hNPDC`cDOYQa4k$DvmhbobjJBBa-&PpdOFfK=9iwZ)Gf`xl3 znccQE01cRhHhm2~=qHJS?uI~=+pxh~E^c_dc=2i!*FKikJ3&EK6fcRiFtXSz{S44% zu)EJR9OfDTIvnwel0+;}v0nL9|t}TyHp%eh7K%sBu zl+&1WDc8j-*B-A~OLM&R9pIWX+29Mbeti`5BfK4wC0SmHCy;$D8WCB6%m5Nhh~^+~ zA)a8CLZi8G?TvWmWzE?qE_bmE1UD1z-U?*2&2UR}Fy29q*r~MyN(ELpcYUC;3!>-U zSO81=Djh%7%QOP9c}%Dbt$3tsFHj1~Kx&3x!UE5660KyfH7TAEYLFty44GEqjjFvi+oih_zTD=LUI|rs02s-+mU-<5noB!AOJvO1 zf?O9V`%VbRGLQvgOz-Y%cY0@+*lm8?S2$tYj70xrAb8zv_=Jg%X5Qt?VjF;YERhIZ zjzRP?;VLvTSM|clkhYRRP}t)~!;UA18)<^WPaaMp3fk+{Gr4SO(uZh%ef9D10)6Zu z?xb&GY3BpW10#%-<*v=T$WBX;L`XhcK=(FNhz}C%Q5|O1zSlbj(}#GgZ3f;;z7d7^ zKth{duRdE=sEHiMCBy7IP(%Ir`?eC)^*(RF0N(X5tuGqRU1o64h6r(|=K_>~yl!+sZvY&CE04E&ai1WqinV5MYZJowquLFPTF33{M!BwM|0o`<5I+ z+hkUJ^f76VF*^pW@vD2{XI02x=bX5d$n z%O=aM7FMGcac#L2hYLRoQGCJ!m`;sZ`P*0LA)oUaUF1KrU5pO}IhH^_A=3#vphzE? z{X8qHu1i6U^rUd_pM&Lz-D@5f?9w>xq~OydWrj(+pOm9^XfNFo&C{^+i!?z;@4UlE^e_EAstaQl)4TB2>ohd4U+bXCddywg>ML2;un^fDJH;(Y7)>E96z zOFG#_MLO?WE*M$gg$nn#kExxBKWkYY2Bp9M@7flkpUn$uP53l!ozFr6q_-q1zj5sY z6j|UsXI-c}^v(5PrDtlP*qaq(^35>oZADpUMv~VD>yrZb@g3?s)3)_HzrW%C(fhRm zdTiV_zNy8^B;msWrAmr=1ObE+A~EZ;_4SZ>!#bZV(SYR!Dq6_0({MOsA42yGe-i(X zG#CZ(IhY$TNpyMeCW+@W~FohI5PB*~FHD;t zk|}<2TQU-&- zPSh~a9TeGUZA$PrEdSS#%-(}0HlesvEs%Y5M2KC z@QHLmyja0Vf!!o8PedFmDI!_m(MFHZW0s1%cc1;FYN=ow z!wS&fuCi!(J+;r@;GbVZkxiPd-KF^<`OErPAy&-&|VC(6NV1y448 z!a8F)Kr7`f3FDpl%ZsB8S?JOaaK}l7&*ZZt2&^S_&Dv;$J`QC>o}Z7@x->9Iy9I~S zHC6r4-Az~Y<^wI#WgF|NMd zh@IjnEJ&X$eD~VP%vgAoXEKobXmBShC15i3tkHbxP?`8sAENxZzyRIjr2U$07mKZn zXI?(vo}|bHRCCY71jIco*vwe#xqqIf9!e$lSs5RnfcQa^S&Lzdp0c+15%J8C#xVYu zP^sllANkk{AHJoXkEoyn7ZT1UcSwl=&B6XycZoUnFVgM_qON9-X)D1T;i~-i#&khXCyl|)&BB!V6kS#|BhH{+S2?$aG*aB z=$I;`Pjz`HPuC=Zc`A_1SrHrR zYyLrraSJ7jl5>6vgF?GM+5HWXsd}>wL&%u_CS5*!{Fog8B<+UzQX*$eWCF3&k&k#4 zi1QQxSBU7YhiKp?k{`v6sz=@dY)E{8KQQ>MEhKTh*((QtexILclvNhcLn+k2&d}FM zQ52G_zs#i`&kp_aKi#!Mb%9%R_pkV2qg9Up!@AVS^IRd6N`>alu&p&K4dbe1|8g&jv z*Ej}B8*mu#uQ`K`rwI^Vm*xatbnCX)sF?FXQACEI74t=_%pBt&X5-7_~@^9(+VCb2~9F;|HBC0=OG-_pe0n5Ndy8Cy2|baHXJ z6-7fHcu?fTK!(MKVF$1y451Ui&VB&Oz<__68*vlJ#U>j*HjO6nLrD=CJRJSF8JG?k zwpXE?A_!!6F~dcjiTnx)NrQR1{XStYx5ht@^&$(q%gZGZEfkq288*r>d?VC(O=cwf zvryTvBSepOjAlqJX&+VWg@T*f`=D|q^_zT1J!H-OcXbl`IOvAWjNWGY5O-cXx$7!| zkQcON)Qpw`ihOk594$eRJ+LGCtE6o{^TD4~+JZJCoZJNGaqg-<6X2;Wj{gnN!E_vg zhQ)EdO6H2)FUeo6Lc=qwv|0?G1G!v^Y>`Q((-VpO4$spr^z{vQ{l0_#4XGD#6cm)9 znMtX!YzGldxQc2-dlqqyWY~#Uagjs&m)=NFT`_vvw^ZE_x;1VxO*^iaXSvSXfNdP( z?O!`2Fxxw%>KV&T?2S#32Gy_MVxvSx^{fnA3tk-z6|WEr&f@RhHekxmu0KjImQ>sBl+>8f^u76>i$x$lGD&tXGz>eM zRuk{o`uA(zxNwPf@>WbxrPqY*?h<)x;sOlrFTejKS7^Tak!Ir9#j-){+-W+7`{e2W zkemL$nBa~A$OZ5ySbgn~CmVG@vl^FVAhi3F=4QdPy)Fy@g<3t>Y3ALMaTkber%N9YAWwWQx z0xx*(0zS^YmaEpw3_V}$6|ag@IfLQERm1A{pC%pl>NcaE)^HLG17t^Q;~JaIds;+Y z`io*bJbdOhv%gVQrp7?zw+&(piK!p($8d=#!hqJ+;Dme7w?_XeDUHcMu9KFfthXDn zgvWBaZgzPG%mS{~F)DS5Y0+l3X2^?z1|w($S=Me&SH8yMUH%Bk7B&}SxjS0+2N@uW z4CvLT>h`QTw)C~pGJmii+_>BZbjl>^%4b6B6Wldg0+A!{yh56VyV#~5LxdrsUT6&1 zBUVw?zu)$r1fz0t4x%N4T}_>b(k$<-v?| z#mFA<3J%9=UR#pan?cRk`0K;WLuc=8;vt+5F*a+Np`>>{4JL1SZetpjGpmmT(8cwH zdl(f~1*V3f_LQ_8vB#z&i6fK62&TK=t|wIf@m%+L7jFit`krxv_nM92#>BH-++WD> zl_1jU!0{OCN`#NvF&8BieQX2Gg5=oHCk?oITlHZ?=+z%9Fa08-pkj>YcCGF1%5sQa zdcm6Hh!#cbNTghH>7n)j2*i?T!UTv+}rZ>a7}c zPgSct-HzIqKe*B3!Bh5JH4!z!dK|MmaQ;IQbs_!@Lh)CGy(F@xb;+@KK6jy&=UsR9 zf6(^-9X$WzsSDHr5j1haeUD6DLV)2ns(W`Gb<4uh14V{{@Jd9AP+{nuZ$=Xgo8_Qk z+1%S~WzJ|;DR}C)1|hPrD&BKQEx_ztflW9f`SDG&T;|w)5-;01n(kPeVwhC`{RW)3 z5x-BUs20hOBpA$(*MC;#h8RMO$j9HmfNJV?kw<*M89RNoh6o%oJ76AZ{BpjwK9U<6 za=({ova|QY*bU5EaiwfoI@#Us+Y`6=9=nWvX>fDvV3{(*0eIqABKh)=5A z{us*i%BZ3o6@L{3XL^z0g7YL4g+i@OteNifOmkyhjUqo=EM*Uj3>F3Ssz2#s9j2?N z#?TEw(7}i#|+e^+y#iIdlFu8@!+ickrL)D{7^T-QNDOU-G<3)wmFlP%81QFP`ss=AQ!6k!WMrukwrqtMW%(TOq||vf{Snp5_TQJ-UM8llOYC2>Il#LNMvDV0 z0$HiX&+Sh^`QekQ*|WVZ{v__|SGRR#nrs!1GaDQ=VeP56{t@g&>fyVWKjm)F>+EX` zXk|!I9CL}&ElJ6r+)C^`hpYIz-}tpuZfrRxJ=wCStG1^9i9^jB%dq-tsGR-l(_o#W z!Pwvd<&R#5c3&Y#gXX`s0d*DWesdxOsvka-MfcnAvC7SS{Z{HPczkA;RZK!r& z-T9a0v01H)rE6r;l2O69KzXn!gQ#ALb5d56({uW5yzRvNiol1?if-m`Z`h-%c)>>O zlV0XBD;1(=zdbu+ai{JOl08gbr15MJ&Sv-6c<-N| zg(V~)Rc=5v9!tmcJ$gt7@g9?aEE;CgQ_Gq=un4R%>x5riUsTRQvqufljEUaVL+y~# z?0|kseyNzsNEe(y!10IiW5Wm@c50aral09Gfg=+p!3RLN~ox15c>US6E?z0{yvjN6F{C29nFb~CM_dZb8VmzaprHO(v> z%L1m2k8B3hxvOo5Y7bic&%M*0f;;3tv#S`lPN9org2=8DX^wj@atceKpm<3AmA*ys zj@enZ#=S-g3Z{6?nWMhHDGkD1Af4v2_v_8zvbhL_n*JU$vTKuZO+C#fMK`6d<&^f9 zN46o8k97>Maf9(8BiEhdBDMA#w6ldVCa>M6%4VgHD7w!BQh3tpQrM%v7U_#^KeH2Hj3-@+^c(T`m|$tIdfdqv9Z)4zrBJiWmp27D0B*-AvlY)f$D;u z*utpUN!Od(*3UnmjC%idi1mBiDm*4N4I}v@Xjut)XwZD}=z5sZ06L3!h>4Ytzr`eW ztnVpt!LUqn2yA6{nK`OkD`AmBk7{oVR}ELs81qs04t~kqI}~SX#+NYHN2T^__j^?U zb}h_RcU?3-vhLF4dF}JtJ>w#*a${HT<-b-Q|6P%B^**J*gZPQm-F5vI3w(gsIn>Jj zQ6e+^HFRzLM{%565EKrKK4QsUxI=i2z*c~z9c+&Kb~i^C;mAG90HbE&v!my$1M2JL zpurWsLR&7C?S7F4zoaFpyM&M$&=rE85i-zYAOKnb3^A+&kI%up5dJt0%{veeL#i{- zcT=q~4()&Z`k%0Zi#(_LY^_GObq;Nroj3UAbN+s^#}wJ}WyW=bL8Cx-_=g_>Gqnz% z*9(KK-ArT}8*LdF#Gc2ynYeL7d>51@UoEO;_@r}Do~fV0p|8 zU|slD_#SXMOCTsAC{Xc73c(`@#9KxlWy?p=OAPWKZT70PxJ>$9X{Tg|cAmc7#UVI# zI)#`{kOU~*wdmvUQ(~M4{?ERWvP=)wJE-=hA5&={CccgF0m;ItgPOa$^OLVt>s4)3 z6RhD+&U{DQQ<^-}N}p!grho0zDtIr&mh1gqwCKfVWpzm(=2t}CefPI{g^Z^@>vjz@ zV0i4s{x0?I_@_B{BOj01>}tB1rTG~#ftejiIv^E zrIjTDPSS=~A#bHI`#M?MtHL z(Zyrk>gOuH1y27j(EcBfvUkB$!?SD%@PXYNV(A=k zUSN5$zq-3De>nv$L8{|nM!@hvKEKn$FOk-iDJm>n4A+gQej?IG!H^f32C%i8R}dRe za5dOR*F(Wh$Vy-Z8^!E03E|(GEYGUYhRk$`@omw9Fe3zdZ6UEIm=G1ntAVfz$WaWE z!R&&g<4oxFS($Iacr{~$3f|CpG;4_}hqJzu2wR=x~fq~+A!HJRhRFMl@Uuu-+&!?9%zdU7st zQ^!?u67%u$v2Q*bm!!V7H#6pEG-u(BqnIu=X;rz9b%}U6TVp`@!0+!v5s~}wtZ}6> z#))t9pRc|P=kz8o=HHILy)3;mzGl;BUpIey)otD2Nm)<(;CHj` z&g+)>-f>jATjAAtgZA&FWR|tkSo@UaY#8J`dTxm%ax&ONYm`i?t{tx2{#^d`p>B(R zh4}B+`*{DBiT!8r!hZlr$$w0K&##MJ{Y;XK0@&x~=dVR02Az=x^?^GEv?N*9_HPvD zf)R3D4Gj(K8WS)!NXT8m;!@Fta|S*`DzA<(vRzRB#ko)enpDj;8`t^QQQk5uH)Etg z%$$xQEH!PKfM#pUpTAbytgf!M26>5HGz});ptuU3pzgg%BNcV?m9Tsl%vb0En`l`n8h3kn z_`=>Re!5GpteWfeDDV~cb`NJ(_j-A&<42h!BnSW&7d{9ig1BG*G===WS=5t2kQ43$ z8D(}ND&7i&Of-wb2Ds#n165tB5p>o9FMNNb4CDR7KRg5q`!e7^`bGNC1|p8>U!Lcw z5?3?$+{a^CX#{yspI?wE%R~uz^K|5x?k9Eis$-Gz@zGD}vM~RN-UkVf_AWdLfqq|@ zW!X%#f%~636~_+0iW+~2d$C{cD1k`8sKqg=`QrB-BXgFYyLj1l=Z&kc4k{Aia-Usi zS07~xuS#8=eb2acUSb}y4C^~xD!L0~a)vb3br}Fm1!5YllUveCRRlK@?lRu(`trxu z_ucwK@D=~@1^{e7QA#v|9c?{ezA;xyN(%dF zlsjy)3Di~gfR&OQ;H8zv<=t)5#DG?iT3$*tc9fd#TR8^*!1fm?D1mt2e2hz@>UGW8 zS7NP7001($nv%k!%{gOm-*~rSCFcVL;Fhzp{*Y%IEI8|7zSt(1s!Bg(~#Fa`o zmb}C3>$e?$5a;S67TYqnrV)3tc99b1?_COhyhrKK?*xZ^iC)$09t#Aqbyh7DxbJVL z<3>gDpSX(@PZb1rJyHl`}z-ICZ)YSYh6GRq*){uzUJ6)AZszsr4)$ z1emj?gDndeUf(GVR6*+~>mgW2fq7(rY9TKA>UZk?v2~$)rouvTrYkNs_E|41ngD17 zb*8acK;8)~)*|vs`tt*f5_*AuNH4*G^y_>PRNEU+AjfbbNepWwxk9qa^zdl`9>2$Jy-VNZcg?HJXIWxoOUPpovx_YsBjvJz@ z!*?{wXj5++b*6mz{Me;Vs24*WL90<9hzT%tdJM%hl1oG51gY4#tiG zZR)!Aqu5>Q2o%z(gF^qa?NIsn&AFy7JdcUb#++cPRhi7iUo3mlPET9Pz{OtH?shvu1r+oMeBF-?kuTvgr}!B0e<=}+9i$;mVrz;kweK;8`~iEkYF@c%i0|8+Uo z0TtDDGIv&m{&^h#5zumIy*%H#(mhmp?b)pVO3cjU2ZcfLef&)iz*Y2U5$Q_33wH5f z(kv-T{-S>I4!9+VYYQeYRtvilBH2Mn>GFi{*EG>$diT%tS$;9ut)8 zm`@pl&;(t7F%-ZV-XA7e@0wDRhS8w09-PV$D7Eebf2{zB$r8Z-$bG(>=fuDd{PPV0 z`M-f@;AN@OZ)juEKp)`BY5=-vLT#4mW~!{gkP`436sy4>lPVT5rmG6JR4aplVPamm z6kBz<|5Mnt$1}bD@tMh7R*3rLo_j_`QAAA|IYjQaTtmyPa#Ox$T8QHrD-YI zaF&P&k!5DFL>KpjqZwg-&(1lob6&qcsz3I9?e*GT+w**$=W}^J&*$@g3)vn9{aAn) zaV0%-Mx8YIS53K06^h4G8LSU1?e?TP5_?BfLni-Ta;7;0(9O?Md{i^%b<)HTX#li_Q2)O|EQAE5)^<*pdjCQz*8UsbW~-{37Ew4ZJ4N-*a`X!D90soXw}KAY23oX0+5@^ z>GljgvqykffWUcGdSuVa%8GZDuFum`eSLkGUBo#a53g;NmFgR4zOq?C3PFrXO=WIE z$f~`_RM?8R8(ek`4}oro)^39^E54Q#05F@+BTYWFW7JKYuL+FvT#|Fuo%;GWHgVL+ zDC5AkG?|>-+)o8$1xFxc;>%FTzTkStYE!cOG?o?!kcM&! z3Z|mT>S}7oBO+=hkw2X6Ut(w`Kw&6yjJJ_Cn6#2mEhQFjdU|E0Rm)5~W)PUJI|<~-}d!w6j3IZ{;>+OsDluWwv;dKOC)sSX=? z>LtJVO7B2R)9Ud3EYw~xj8LzxC$)n+HxjRynp(*zVM3z){mVrzg)A=uvK`_dXX4`< zS+O9UaU*7N+zJquvo34!LIvWLN5@{~*MOYY%KZCe*KCIBZ5Clu2FHUDf@w(+ad3Cv zb=R)+W>OOL^~Pe!ttKN`-rI+M$!|gpdqce?zq``^e4wL&g7o`q=C*>Zv*CkEKBTU$ zUK7IF&1i8&Hmu0WcI^OWT_mwFX0hE#Bou?0_qhD!Z3EGGw7Xzmc7j-07@17w?C5sXKukjP=BhJut-U&K}$RU8BgSN`F{?HCSHiMCa{0`{I4vP{MVKtCc6gul(+zQ_AG z8jYr1JZ^3*DJjW!lCLEysn_Q2Kf3VI!tp|F;3^kjT6JbB9J2BBBkQ~Xayuu0xU^kH zrt`Y0)yXd-Fx2F7JW(X{?(rjTbaHt1jk`FBA+X&;85A{wY3!n3KR}`IwsihjrD{O%1Ao=ZZa9h zcje&K32Komc~h-d-G3r=WgIRK2FH0!g+}PWmFZ*9=;&zT`eK!9bpW`&b8vCd(Di(> z%C@2nhm$VY682k#8WuLS8Sfu)1t}|xEQEQpUmPYezo%?xIASz@ZTYp6AYk*-lQEN% zlUuLu|GYJfNe&y~gH{bShlriq1m(fL9xzu@rguGdeQ@eJ_@6ZP>{4AlYYi_bOrXvI z0_U5*{q~>g-rxS&{ogl*4@)2dCufQsGvNZT-`!BH{zJj*!2Xw;J)&KlOLK_|Axl-Z zzRw1y8>?S_NfTEzaWkeV(5gX0TcOWGU%UtjtGB}^3q^Oaep}S4852 z)4zQF9NO92o8Q;xP#V(S*47CSz0`K?>a0!THc0G~#GprqX%}+}3y}xTy~}-(rDTmp zw38nTn>` zz)bzYTVEwA2VJ^U&%Y?I^=D}p<7I`nDCWM*-*doOWp?oKT^m46epAQYA8L;O=1on< z9VRyeA46+(_f?WWHTOY> zy14ARbHw86)HZ#6eYJi27_g}E?t;@K!S)v~td)_}hT(9dgthu2lbAkO|NbbF*-ive zsQg1^g`Jl071Ta~#=0YkJe{$zv2jIEHXw9a|)kT6)vq`&#h#6!2v-$`IMwyO|1> z5WKH+C5Z(5U?2%M&9k(y=*r${e#fUNLBO=Az1@OQ?!k5nxvHh2a@617|M~m#65B*8 zP2@JV!c27EQ(Ddi23DNyB{SnspFZ8wNStlh0gp<>9X?sMlU`G!zj&y8gU#Wp8XJ3j z0+&WJAeyY_k4cdotvogW|96*5WY$jlt$Dfe?f_aN5DK%1I^m4bkPfLiCG zh6w=yc`yM1u@>YMctxdz#E5`^(9}s?-AG4Woy*A6{kD_KEdl~~lIsIiJtAXhWa2HB zTlDnrb8W7T*p-V%R^PTsitD8kH2)TunVQ!)s~AUxQg`%Gw&*Y01Bz6LB(qj@9r8> zCGYoW*5K8R_Mt=Gu58ge`zx<+Uh_TqG-YKdXOA4E%_LwRJ*6O5W?UY*puWJZqfO5# zG*};)k67Nh#ha|J5$hg9=7)YB%NhIqN?f)pHr&6Z+0AJDNV4<8=~2~8;|}`!QKSRB zs;q4c-*-cl-uGyik%gT<>+?X9M*1h}0j~{@dP58kf@nDQetJH6VOGfg__w~RHa;0P z6`#*>hN1|+WnE~DMdr9u*3wY&eKai0${e4}BCr3NrZWC`u>nokL}8SM-VOeOxcj9v z*~e- zfFRn5faI@p48Sw~=K*-&$NYXKei%hS2L56I55F9uKWCE%=MeunCe{M)5vX2P*Uh7Mm zxTHnJMa6lPD7d(|6g+RZPiKM^-C-rpbc=W{e}dD(k9d3ZayyK&(^*VfMcuD2o&5B@^``uY7m zZ}~a>&z0P~{<e@33aASwR$p?`bp|2_1o*DX(VcUN#tZ>9fPufGQW{ms7yDv054{clt8 zd!B#23MN{KLP6|bi>5>|^@NBKtRu`x!|)1t23CguAW&|>wk4`;EF~LB+%dwAIZIH|GQ}k1;hNQ|FbFlpXq)fNkq~7|XaZl)t z4z4=z4`6lw%b~#Cr2b2vx%hwG?VpzP|GL}1hqnLUx!W)-?BsaA8M~4lLZe`)`2D@@ ztC#tx#7|?}^8XN8za)a#^h4eOZT5eRO)3I}9aeeTi8N`}!TtyH_i5YAor_L$?hYx3 zeBKF$|L-WH@)M-DtIaEeNqYb2rdM?47Za6f+M{V{Hyih@R!5)ft$wU>joMF{TKO*z*SOD>Vx!ok13yvz&%B5AK5mJj=WXLWIp~HT|G-9bwkhlm zFz(HToRkjAtwmhFopEc2qaiOD?|NaeAe4`5sIQ~{Ilu9p4qGc}R{}2H9I zDOf)=dJnce4$fMehzcCL?ojmBX1WimnFGgV-uv=0&u=ULu^Yt`xx1OU=nwakey!j( zf6kUO?qgm4pGo|;n^Sp0SG&_EL|klrf?H8ujG@=Lf$Th8HX+?kCHcPB7&j-L@jc|r z%Yvwatb1QhlwkWPrqpPd=SA=H&fg;4C#eZhZ!7O9?DX)mp)*qRkG@tIB7lFg{cX(_ z4GGG|n@@gju6~Uyb)G1-#b!8U#j1%Nixf+bnb{|lu4DyhG4tWv8&5gd znX>#AVki0%r4#*K8o!Sbc8g&K;`ek2qLYAm$-sQ4k<IIfth;2g=Qhf4kB>&QIU_kkaAhOX=DWA=Q%ghMY&Hd$-TiRYq9U`u znwUrv%N(t+UimIcezV~+)>IyG!jX%2r90#RI;TGB*ZIeY^j;)PPqgl=TyP_>gKd`l z?BE~bHZ7s0Gd@$1{+}`miqUaAXVC`n*||44oQtZixqPkxwzk4~RL@R-u#{|QC*jfa zfI9)r+FjC4tE|9O!WM*O`{VVjkOvOjrOhBNwa1Ayu`roCJ{>Nys9D|k{-v-a$~aFe za$_wRn4kodMaH-{^dGMefwzttv2^Rs%&jZ#mn(K{W4j7f5G+RMM}EEA6{W#xkT z|96T3_c@$TG8?%2*5mW@G%fAOGW+f*8g{vkYch)WzQwre->LH2LxR{8y+0cu=Jt?D zpw^B(;A@%fb|-Vm2RFVxAEguA?p9he?i>||LT&GHs`;Il!*6^yOBd1d(uaezlVo8v zbHVbKUT>wauL_Irc(;JOP{-O1kAB0^bSSixx@IPCBuj&+e-7*oSFrC+R zbGJpf{5yTg$TPRoxlv6IRmh^ncdSViA^nb=FSiP%o=uIHr$kt*N7GOX6;+z#1U3GS zfcT>D|A115RS0BW%FO!lHh|PtHm@l`$o%qLnq_&u+Uv@85FG@+HlG|5N-&1;wly7X zu-z#9^u%|za)LzJ8Uz$<{aP{QX2Y(*G}F=N_b)Fab_XQY$BS?9`yDZQ5hL=9Nd)EO zB%*GmUg!Jv`5k|CDJI?C(>j?pY}`6T5r?G>fqGx@i5pAFb#=K#~X z1+4y&*n=Px+eB`hD67|U-KR_;U}Ds=V3wmn`j$j_g5X%c+V|-A=Plr}M{c#>$1LpK ze!P{LBQd|bzdj}N8jSfk79M#{hG6Bj0V5vGj}7SVG^rf`Hdq5;$i7Y4|p($6fVO zH#(k@ysZRalnX&i6@T)rTo#Aea*v*OFtIk#H3lj-dihT#z%BG&Te7wg>fFy zLI_{o@Ixq;nbFVV$)W_v$q^~0RX=qp_z@thT#pDblQPua1+Yl=!hA+5FRCX}+#B={I*;js z*MS)x<}!X`9brx!w+bk-m5*t5YuN58ZKDvn5O|GN3{LO_*>wh~6@qN&7i$ijxI2EM zoyo$*7}vMI9`Oq!_3~%KvO@MGi6W}Bh%PbjB;Pix)Up!{Y$?d1J2o?6Z?V?`F; z$FDl~rlWo>g+2$MEiQ4av>N|Ay#JlA!!Cw$9v+TllZ7oZZdb8-=|I`*!)0sWB)8 z9^d8M{Xj?t8&-Pi_x`W1CP_EBeU#~f~fJB3-~tjryn6EUh0lrg)q z&IKQ>w*-w%l-b+M8+BL#bMnNws8wf=Ei0{q3_w*_RBe8+EEbZXw0HfNA>w%u9M$3P9FsvfU1ht~R)Pl{#s^Z4!#Q_k-Ys~7d(p-NxpuE1#c{`v z0+$XnxgCZS_v1yPS=nCz&=c0p5g=Ucjr;b_kPUrC;#^xv@XsGoe?!@s3^os20L(dq z&qz^XP8kDdW151Fx|k9hWX>815g96MYt#aVUVO%?VS`ZKji+Q8ns&eB=n+zNun-pw zt}ElcI?O#>{{B~_3loS24kEB(dGGAMfw$kO_Ps12?4=us9a~*&?i$@ZZz)C!f}H289zT8hERZPF$!Hgh&1wO{<%k48F*omKa7ks zP<%LFuu~PLYvJFHhfUR>gbX4I%XaEatv5rKan+ z)OH#R{y6kJ@+t zAF0wzx|Wx*K5^C|Kkv5tBEGwT+Z%ZqJ??rM;XmWqFM{=LKDv>2WB3z2{TN6$^b^V= z7d;eO)`e(0%qxbJ0w!*y-B8O`3bG61K4}_VJC9}VFCRKN%szQpXsWo&IMw>?vvPtUi!fBby#wzt4*dT=yr$nAOWIE+@%SvrnFPLAe~7LZaF{)Ig2lON-@$(N)vYzP^MwQcqQ z9@L7i25?xW{O3-;*rEjYdG&Y_wg{ss*P0vNf>DPZG5C5I<2&n5$b5~j_jSdfoGk!c z?ia8(mwJ+H0S2`N7{7>vVSE|9$EtZ3HpieROkZM%rX7q~|CAN50k3YyI;%xopU&nn z2mp&`x2Cf}+6?>+aeIT__U&=Hc*ir=uG_y{zNG^IFz1CbAHzQ;_4i1SbDapPf=6Ix zbh?x~>T(-IWH1jE=(XoV&Oi0b2yLNms{Zq^NSmAO)H3mrDR>-)56_n(tY53EhGpQ6 zHr}}7%l@lq$OlL>+{M@>C#GGp6CS?6LQ1t4r$UXr{(J!%UN2PAaDE<_LZ;aW;$+#? z$m+nKu|G43M!{e7PYC<=8bRpM(565sXdRsm1?$(Uz+~ysx(cgZD}M8d^T_X{^o`sPSrHyKEg#|*yIM2I&x2a!X8VG$SD!#ZhrQ!L zDT?{V8=nNURh)47#dJ_56Af7^Lt5{gfi&Rr=hlGaP((CmFv5zzlU&6qB<5}X-8H67 z;&DLZ_*thn?f#DUlc^xgRWGlN{Ud1lKq5Wsw|HPL*O?4uR6mG(Kp`=r$$SIadDUqS z`t%eP3mtnm{J~j=FxC5~Iu|I^gq4K4fafx!m42)urrsRf*bX{}Wp+K6k&^f#Zs8pu zr#L8$?Yq&gj<(U1gpoX18NG(B_8)JhQCG4Fbm8ly#3Y|of82IrNc^HpLc3biaYyha zLVCif=V?~v^=km$%ECZ=cNJt1o+;xrkS6Jium-g^1%hIM!|{)u4l9I#U@&;8`S7i~ zU^R`#`^c>rCO=4{pVozMLm|hKsAj)Jn|xv4+ZP~79xjt$&fB%vT%mXpLu=5;spGYw z+W-r){G9gf>l&9D1NLda7xOc(>~tWx6HjSO%TpfBaSx7uGDObjX$ivq^Tms74%f#T zf#ogu3C5O;?kIRAs&1e!Z-IiErQ2|DF4J#0#dJX_<9!$}QcAVSP^q$$$)Y1QIz_`W zW|yuNITy;yT*Tm%bde)6^mXPDzB=p-e4@h_(*hZMYaqW4{js+`B|c57j1xCltp&v@ zTb)t`fvA&*ZP1`UN2&VoQ0=5(Ejk<2-M@+(xrfMv8YsqM$Dp{=s_~xY2z&OKU(P&S z4e(Bth;@zVKNVN6_{3jESVNy5Z$&Fdu({Pf9WfI)JM5NpW=a4a(Xcn^jD4sl8e1`O znO-PpNV1|4AJn1&1tot{i7U7F3F@ZpxI9cV{)W#4;DJzHyY*S zPy-NQXSl%+VZ~+u?y(@$(aOwtU;Y7C8h^YM*TyvH0#0zvTfFEFCt?S&bmS^m&?m1W z9wRzhGdNit#}td<{5MqMPMX{?c>(_gpf|vg9x5RIm!)0S@ZGRXv}s za)Ihs=SWGmWt`_1-jf3S&Owl z)dk6Y>CSSu3lvI_eCVU;Gdoj}B(52gBgDl_Lr zDF}TU-GvMHpfQLnVC}^trr-H+;cRUsxuGKL&`9A3YmurFo&F<*WqLScu(8pMYt4)r zpi&DOi1%XtT01E|BWQ5a+5}ktqkoP(mNkV8rnfxoF6-uClb-Q@*V2(@PPT$_Ui?}ygl4?Ev%Xu?QWeH_ zW+jbWF8&NX*SH3SxxvGbJOFLm(~u2fBEC0HXuU}kX|BxNTfgZj)$a1UPQ^D z{!IJ^t#QOAotPQg5*agBR9@bG=GXEv^u9$4V1+rRl7%Y<&f6XzuF&EphNNTg6pm%c z&+o>sHNxT-PLUGrrEzq+CJqIl#1X;9p@OFdZw^d4>;-dxg}etwwGSiPO6>Y|(Xl)O z_%h#v;03gF1x5#Tix)@)TvQwnZwT{D{oThqG!wiJ{{q7g2>cmxGjkb5{Y7MvS$bs_ zvjy5!?Kbj|N2n>gpbn)wx!u~;BI z8>*-fUbKF1rN%pAO#k{F-EfRZc_hRKu39i zekajI7OB4{>Q8?9-I6TgX?g8x&cK7x4XYp!QKdo5hrY7Nd3LwZKNxg1>n`g){z{u3om7`%taDNu3EssprTn)Ej@cD1{1wZnJVX>9;mVLpb!Wq zd?j7|N!a2TVCy)M(DdHy^uLiwn98I zlv`~Ae9-or8Q(d@;ru%NXNEMH|y1ug|EwXp%0$_lr-Q&&6``e zTn`3ZiWDSvbf?o{M`X;tT-Ug#v$5YqPvmsQ@GA~xF@(p!^di1sGJf>PJ$X7t8}xy8 z6BnH=UwJh2ZT2240E3GolEQq*q#UGQiL#VW{1jn*=y~Ye1+XW%u)p|6V!~?~9wOGo zRV5iW+kP_0ijH6BsO-L(%P@X=pID$a3LA)xWbSen3PKC9>~lZ}4=u!hId{%Fp2(H2 zcKZ#-{_gO=Oe#?-C&xeA84VTa9SRCgPnjG<=Cz*ShE6o->3OoD&>+#KgN0S;2Pl)z zZ^o470Kbj}1+x3XMWb~e_yZ%eoCA#!sxaow3{@I7OKQ5uZ$aB>TarTgmW0pO2{>+{ zcISl*b{uePusD}Qr5}#LEZb6@=cYM5V&SJE*(hA0364qX5>)#I$p&%)o|pRDKLcbO zulaZ+PrG|e;dTE`X{6+W*ffnCD4plOq>j0Z4MFvg3wVfP|Av2pOCe%2;`psTydB^% zG#f^e!u@Y%!iB1z52v&G!!Q)TT)!w&KL56PnR<)oG=qL*WoNt-P;s;Y}#X%8gziC6!J9gH! zI5%JnWmo0vtj=-EGb(wk+o_Qfl`7o(wo1>R$OX&mw3ncJ%ll#>Nn5W?Y+~Lg002?a z>A{^)0W}#|Uyo~DV(I7NC!3m%b6bHDQ5duVh3V}4?Zq4<^Pn}9ZwSmvlQg07@s9w;G-ZRCZmaO%m3!T zo$+z6*0)TwlTAYw;5J)iS=2sM$-~pG`T)ss6W`<2))w30CBfDPU?ZlORI{R3P}S(l387Q#tTGce_tRIB zc9Z86K@z{@DeuWoVzKtR!T@T-&FU;_GKIv{>?o8uj~Ck}D(*o5gmL?r!D#&&N*}&7Z8~@}$~_L#BK6kSuz3^?_`V0z_I&K@>F`Q?uIA7-;p@ zx?P{W1`Xy8GzXEmjhr82bQRr8LY*p7y|5(L+M5x}{6Py8K>PlXqcp2~pYOBN=IaY{EVF@8?RD;OESW!w@%|}lR7H6|ifdr? z_LIv7vggEw6iLx4m1$4EliTHzQ==o*2o`h2ACN8P+NiIkE%??lvfq7gylr;J7@iJ` zv_>e*S85r!zPhyGeyFrF4$VL)SMI)qTH4p1_XxD_iho&Y*1ke1T5GckS`!LmcP3js z3^+k$x9X?LO_xSx4mXChW5cg0SJ4z-HJ{t^-90|qlyS-0USLseEqooC&a|X3d<*En7e~$u_~Gp_j1&;@+<}v)OPZ{xsX`{qc6$rL+5twH9Tx5qe8?l}a~X>jb8Z-2k*vZfI;k zS~-_>Ti7~EsMv9IA;~Ab)~YPw(*|=-b1k#Zx_qxSa^uw_`_qxu(pq2Pruq#p}WiFy&6W0bmWXw0bM^@b;AKwrme#)^D@001FYXJFr-|PG1IUFAbaMzbGbO%{?=~2et8h-9g z<@Ix{JgaNL(vVSd#1IrVjsdoz`DkV{m!-Jw=i!q-5t^H;PnGMD#v1NO?^t&h_2S8X z?ZU$}ZjLs>Dyb8L@yzXl>|j=pIW?B=tz?{6s{B0zN%SGh87{`3m@KNfBi3rKo+G@9 z%%EA^;H>xEdYIvdZeqz7I04>Hqwj5NuN*}@ykGk0%3D+Kq48-W)?wrlNBxdDV=Zb zQV$v6_R&PLmi!M}9Rg~4e zR>4IMXQjs05fr%8EHNy(Lk^te&0JR#DI2~l#0xJ$EB?Z4$nyqSP79GpYtW4KX^_e3 z^!I9Qq+F2Cs#9JvLmi$Sr`^AZpe!I)ed}8BeA6SdeVx+S8fh(3w6_0?fe;S{3{wK9 z%=ll$;h$XoyXJ9K%c*J;(>Mn)#&-o(oRgr?T#x7V_@*$DKWI?WRTfV>m6-p-OP+QtM!xgUjbIF9Lf2X(ibrG+);SBt%-f zFcQ8!NEDMm2bZSuK_LZle^bWOZ2HWH!*=n8CvJqzGm9 z)ZcKRWDe^-$xkXT$Qi$^ZL7;Q17!P()Z`3E>2yQfZb-~!e3b4S(QRw0R9c}MVP6rY zjkK1f{v-1cWSj^&`PtsS*rBDPA~mG28*%*eNSkbI$vXm))eQ`R2@yBz(M~Nf=PWwT zm8S9<-OnU@#Jw9Q1_S>WUlM{`C2>SZ0x(Q`D?bQVWQ&$ri6-Bv*NF9G z^F}U?cG5UIx?J|X8?M7z+uPloiN(bJNv}jAtPvU9I9-=Bypd-~qz=<g_ikj8el^<_Ema-tRJA}qGId-cfMIEx6+&|0K*(|SQmRSOGEPHU-DQK^A zJNxd~^#rD;p`Ef9iBvRPAsHSH?VYGKG4ci*0{K*|G1c@U8nF;#maY!F>J#W;uy)zI zZ3NW~s$~WXLGDMnGe(IVifzSjHdvoDqmFbo>4RNsu~DC0+r6sVO3v!qE4)3uJt0n7 zX5m(MPA-3WoOX@-N81gmRDUj}XGJ52E7_b=R-aacMbgZ+sMuf(j_i^BkZ|2GtUN}G zj&-3Y4K?V*b||@q3@UTsplJ4FZTgFL03AWm;|cpjsihB)_}8AdI2BK>P|@?ARUBNILku2tS>sb3+}W`WM=KnjU?!~BnF=`O0C;v@A~YwYNg?w)%PHe=#bnGbB7<2MUn=;*PeJ(bFZU{oWBr25q>$ub0Q+m zzebuO#i7ux-r6c!(#B-hi%lJROgVI1~Bs{^1D z(tvPjA~ngGe#|A!p_pxAJ|@yk_z4@rh(&(sf%@p}Ooa+V3cXsvXWz|U0M{Xs!Mt&d ze$?THr`N_+lG$;aWY7-B{aBXb2|KUnDc2}KO4Mth@w|rNwVbJKf|D?1yi0WiY*+mF zrG?fX;sta^Kmy#go5K8&h2K@29(Iia_6^>2eoO%xynG>0QayZcI)*R~nrZ{RB+Q;=q|BD3y&FC6dbjCy63$5S1t*%tH>3r`Jt8Y-H;-DF|B%@- zbEfs$Y*f;8X27`(dqL8b+pEJ*CH61%Ki~!aS#M0z<*?MQ-zGaBN<7N5o#7lY0@-%!5Aw@$cMx zx(5+7)$yGgVdOm7U05jH2QJ6n`)Wk%l4HEb*e@?^*U)mhwvd7e!q z3j_LPBqM35YxPGy?U7Zf&MU>qKxbGnvI3Ey&*JWCdnuH7_DAkP#;(fhm_6q48IcRJ zb6WyC^MR6DT`47c^a;(f9Z@OaUaDb_PQ;d;ZV44&oqv13iY%eV>dznF?1Gx*A>P4)TmAqKe^?gM(T8iYpXOjzbaV}|DB$0Ozs zFme*}X1yU3V%=S5?~my-w7OClPhB=tOz~mMP6G;WzqxRs(+drDN*^4t*O~+* zV~VYhrPI?xoiB`6{UyE52Cd)Np=rf`+Ex>WBB6`lT2xv$hoD$MEmE^2IVr%!WhIN- zYG0(?(oA9?Wik&P_KZ-YY)$-zVCH7fjU-npfPfZAKm-uscjPi=UuCRYWbT(t=H!1q z785lpycAV@f-=}Azt>f)vbJ7rs|!RiuM2T zxgardi6Ny)j})eH15(fzZb#X9-fx-4;I*D{%(bLii@PkQRC%=~Oi(HT2J9(QKHMab zJLT;{E4~VmYN|$<9M&23dp-ei{0_FXoyK{jQMd?b4KATH5%g!v?0z)qrHO{+@^qdf z@k|L{;2I>Zb7t;08P2;!zfvH4z?K8KNGRlBqH`b>c(5hzjX6kgzL1z~s3Z$G`NGPc zzQa$fPaU-+WJnw6bQboa)=W7n9iN?}HSjr-+rFUk3REt7u5efGHlkn zGObENr)8{xbl;Df_e#Gy*3_VV{C9K+%O|0$;WFo`>0-Y?dML8a*-P5nP4{DqEBkE8 z;@rI~`r$1VM|3Sl+gvoZd4lYa^8}r|yPfl$yG}0LlLT9NSL?!@$%FA^vZOakK$u3o zkXy-dWE*lz)gT=5#4_rL)Y9QG<%T3(8!g9*3Z};L88x3jw9e=`th#Rf+Ah1O9kZ36 zt+$B?2W_2KA~O7kH`P*B6&;6!F%f-m)=^RovYDu2=||@w9xyB(&}kuq=$3LJ4IYWS z-G&B(fi+)V6?O%Le=@&NZpl$gFG&t}82ZU=(1lP>BlSN&Xtxw0E3-jd*EHI}h2F*@ zb5%Dk@2D6>L(0t^ssnHQ# zcBFJfj4|ErBhob^vw5-*7zt$T@Ll#Xv{UR*4wCA)seQz-XXC=lO*0D3JRWJ zXTQ~}W{4h+XVz@;cOAqelUBjdk5KH}hmon5h1a!^>BRX{|QtH4vIdq($b<0a^$6~t+4 z7Z@IEoJ`Az_ns=Kstnq((zv|zeko+>hrdBgtve9y#@Mw5PQ7is{g8A&NMG=x>Tz!q z61Qv?*BU{F$#y!?@lY&-`7hx0DBWEvOAGquHg;-qr<7LYY}(rJn_d=zDEircnVPs0 z&<O3{cUmir_B0?G| zj7}uFcpb}IWY`*W1_wo$aGkQNR&t@cx~z(Qak;?27O#UWzB;f}u&O2@%AAM{wn@k{ zlR)rMh(XqNq=lg2bn@IBcLd;{o&W|53sm*a?-$NlC$5jA-UgIrVb6S$Hb?9Ne}s>} z2er78B^4^NDX?zAIsNi#9!pxbd{^6^2O{T*p_giF{2IHlc@y=Rs-w09eRpK}t}gcj zHP$2S^fS=UZv={F;}%W5KD$ySHFcDYzfp%gkhj^(ziTk-t4d%=uru4(>GFej@C>#+ z;UVqct%+ozlzvOPlDP)KjyD5+AYUAhNe8uiH@mOP4m;;O5yBf&ct)-3-!P=3ZfL_P zQ=^Uxh>%MtuDPdD(hHc}7!-_;Yp6+ zHlYKthVa({Db)aVOqR(=>`!r_K%hKy8e0~aBkN?*kR1pd>aN09>#h=04Rtx`VY>v8 zDT7bsyVbPH%pQ%2F$PPpaoRG4pP>jAfa{9$p{(&Lw43ewka&~+)W8O)FJ0qlVpBoX z)k@voG(%19L1VAhZER_1KO-mVTf*;9kifTcf6rj?7AK$~Q5*2tScBRF%_YBn~VzWeO zFI?&=yweJl2Cgpe$y2Ygb66qm!x*l zH0*+IQ6G0bp3-$t-9_!6q3t_ER35LX;?j zfgQ1GGR+s-Nffpw&O~J7D5K7B7T5$6Y4@iEuys>gAq2`Tbb1+dvf4T#b6ykZaMK|< zx>FB~ggcgr${54)*fjMi?m1-yT4JnGo-qVxB&U{eJTA{1QwJp@PhwTyHV5Tg7dKz{pItYbXDV?f(p4ZY0Au;iJN^9?6c_})!x32 zHRXjh{n}ngNPdA^#X#2}+(XcJ!=>CtNQujrD~)?jy#tMS;-JKj{i)gr1SXgO>MX8RV%uYAsRszlhXKkM`UZ z7LimMns(sss0WP`Hu8rPoZ&(wUWoHD%<;+7S&IcJyxl6|s$uI3ur7&wn=?E5nC4gX zmyst?^NBEd+C6o>d&L6bIQl4zb=KwJw};nnCTTAGJV)c8S$1aeX5cif2YPqD{^pI1 z62B$4nnTaeQd4RO9fQ6l3|=f5ph*&AIX=C6n&0Bt-M@Mj|DT&MUw|Umiw-LJC6d;|<=V^moM2M-@6C)GOm5cRk+7F zq*g=z!!_b!0%$q>!S=MJI8(7UNj&t2ASq6k79&q#(K+AX)g&N#j?hk!rJN=VL5Gg1 z>m$knr%zz-s63@zk(;h?Oi3nc0yVi8G&Uu+ww43#lfRbq9WNp-(Xs3`r@(O57Q<7o z3U-xKPp%L1J*v*?%u$JLNg_i28~b?SoC-|>f}%{CXXDXjnH%Mw`Io*dg)cpTh7*2k%dZk(DI(#3@AMV#%hs_ys6Eg?3mwOm3A;-YL}FH_@=})PXqpd-CmQbs!-7 z{)6mKM?GQ6`!GlyijZ+~q(Z6Alp~(K`@E-$r_2Uv&mxk5SB6hntyc4~dx!Iq#Zs^S z(!A86>>;g7`o*@06uYL#(k$Eo5Q|Xb_kIt2*a=kNG?XflRYtt$nHKW`LY=k?8?K0r zvtJFTv}(H}C^sx@42#p}>Zn2(&N+05 zS)lKvuuOx`pQWePSekg~YPQpM#!GE4eOEm}a zSizbv|m>-27*R1N5t4x*7s;@P$g~D)*(J2|AAj{IH^F zU8d8gR?^p?HR2SG{s1qpWMej~r7&B*E(9)jrmi@BF*)-&K%`8F{8Mq=Td{GlC(vAh=- zB@&yT|JwE1Z59<|g7{RS06*_J<2BuhRQUPro$;!c#D#zB$MlguSQ+_pCe6qbaV)~8 z%x$_n=d$ClgV;IUA-_Zod3U&1)Jy6pQ0@S2C-UVqW!VV_WK%)|L`JU?jUb z>!@ z*PTIi^Q|7JItRQbL%%8+T)4~><4o7eZLX_o>;(Qlg23ruV*)!%NGXa`aIC;lm5mX_ zQ;BmHg`*`bp6~!ll(SZWik<&epToxG>9*}Ppr|v9>$2k}l8Df%yBJT(!WOBeVGQYl z_bs>XKnolrV_yi&iS}b>qt?!-wb~6=L$J(k`3fH7?Y*zgr49Fzf4jnm zQ_ImTjt_k?*&v^gf=f6$g-$r4_0->?^n`mp{}hg6@-^lom`7jJ>G&`$-PdH_%r560 z)2)uSPJp9uF$#%`DrQ=PR|dZKhR~_D#vJi)B&B~yW0GNh;uVvBy+0m+g6rn3G0n-V1S&|7Gs_YOgNFCv1{L205W#ULOcz4sy@f}qlD zbd(ZM34|s^6cj;>K&UFxRl2_W%v|Tr+~3^$pLZ=5i?xQ4lXLdj-}XG8&DwgU@`HAn z)Mc;BZGp1(7p9AkiAc;0^hA&k4-k&oGMlpyr>^a5#QQZJZAlimKsunwGAsML!|UQP zzyt9OZBzccS&^JBY{#F6U1m~Eg`EY7;XewDLgmR6x-Wp4nHjP?FWRO}TUnP{#>*wn z_U#-Y<1tV`pIXoz)HgUfR8}Vf^dZS-Ri?wYqN}Xs#co>?N?EC9AF!|xfvp(0KqKC) zn{(^*rtW~fG?D*a8J(GO0%P|{_*70oW*J=%H-XCQLN3taB4&(w)LxLsaOxqEbYegF z;rK%mc_zhO#?=|Ae9A#N?>l6CC~<1v#+3f|Z8HeNC!Ij>F5;rxelH~MJ;{no-ly{I=Vc3~Idx4tTA6_eV5uf`uU+#I@6^!1; zZsj|agBac&_2&s8&e}-kag(XqYh}!aa@0-mij#vp&HZX|{!I3F59_62r_sy)ev%Y= zwZMo;QT*+4p8_nQSkYM*L2>zTR;zcnqmbsBOT&Z2G&0|OXv`yKTS0Pzk8<@q{NU=h z&tqQbFWjP9wOtyJS4ga4{wMbz($F#HnQ7lmicRUw#WFA4o^-~~9M2lwep%px;WnIw z7m8e&aZZ>icFsOvmA4OAt-Riw#F6G)fTW|WQGRPLcywfuSzMyV>C&BCj~wRQH3h2D zrq1}7X~4&^(lI*oys0pDnMr^vR5G^N#@0djs6?*fA~VD2<_pcaVxY)Bl%C3}2zXD} z^qlr*=ulfAT+ZxYXpM5qF;k9hf8@JY_*+P}hV*y}+_-;biaoQYsL1g2f_NLC7Mtb&zBxyi}nuksmg zh@9)WUosI}pB|7~%p|tTzgl|h7%%32kSP9^jooSG%otz!UPeJ9rNVv&^5zrVX6FV3 z^JBSZ`3Mb{i3r7gNOdMM%z(D%KhUGSPHEu@e~xHx5<$Ga1@x{~I@j+|HtUY0%<|N7 z$eGjxrw;lflZzqQ`o}X#a#S(wK3g8{MIfz-43rXMOA}K-?R4D|l#On%kVo6*8}1~_ zrC-r}QPb5v6N^dPnsny>j<;GFJtpgm;W#!JP<-&AGr^s2zlWHHx-9P+{ZW$Yh1e$X zYK*H41%=X&NO9QK&o~xmn&f4K+G1x@h7+g9?*eK-_IMym*7#kduf$NWm0T~ddl4OB zqdrn5omucSQzQLp@dgoVsMTFw(AN-U@O|Fa{H;k1V}IRqoPV4ivRmj#c`=EaWUd(| zskcV@xYCSP43gQ3bsXki7bttO{cgTCSO8iV_LG^Fb5$^0bK&fwruE93R^R*M_K}+o zn|{v8t;QZXl)F{G@0Y&%V0(Fw399;49RGP`xITridmPnX6qKrDVF|$m9i2@UbSF(% z*dgV$6F1=VbkAv&PL*nG)OXFJF&f>j3BAYPQN2}`#x`3907bPItsFonnCwUoO}t^~ zHIhDxR0eiujIJQ1P;Ukz{d;z@Ppa<7EU=T(1J00ks!LDoI|vKmR4a79R)mICOXq7K zQ0Di&TmK~4n}YBLCfy1%3W5nSFcK*PC+$ukwsCu}mDJW5wt_cpvaV zV5vt~@Ew8X*Yg*45JCQQvs$(qS=D!%J0E#!>_l$+qZD}|$*A*fZ?X+evik5Mbi~YR z!l1Ex-^LtUUsECFDyL8Ga^D{lgLe4(nsz8s#vF7|odd5dL`EOTEwJToCO@}99J%&- z4rV@;@%Vy#L3jPAnWUkp&1L4^6ZE;4i5hkiwafcIPedOuTAgNc-w<~{%3CiqT{EWK z*^X`@+{sD0%wRNVCW2&*qvD(YjMY-?MBQ@g%^AMr&oliyJO`5XSMnTd5&BdA?vEcu z3P|vb@h(F*WohD_lCMHO%JWy22Kn7P#Z&m^B~#205j?=PeRsAn+-a;`3#6V!a2#gL z{akR9A!TtorX5e3GOI^@E_Kc_Uh(buI}vQ>ZwbojJ?PqZhQ&FN^d-EvahNdx)`Wbe zo@iln#z|}LFGX)}Hoob4k?NYLzJI@lSH@P{t1A>3O^kx;A8qC2ONQMG(NAL`5YWMB z4WZilSn@Bf1xrL4md&$RjX&U#1tNd7uL&4(}-p=yCFS#f@to`6J|EO#idV> z(ukl%=V!aVM!ZveZ`f$$Mw`_17PiDi$}Mft%9dM@<~uV(aei{8!qpt!>XmepAV2Z* zaC>^%;H$B^fI$Fy_IFbwke0pSBaPRZ?<7dR8mP-ByW=>bWB-!lg1)^9V}ktLcS9PT z&2ZF0Qxlhd*gJYPJ_fQx-~MZd7_AH5nag&CMckp1t>Q~6t*uQr0*L<5G_(K-9^Xym zaID9#we%N&(9dJhe4~t!0!Z;xE3tgYw_bYUj+T|ZO?)E%=h7tJ)UpO*R}woe^KqR6 zU$C&_`WOn6rDqaPBHja;zw5i1j#acsYn|eE=RwvWq82*k=jc1kx6Bfbq|%^~@?FT7 zV-8P&J9}i|3+OHQisjT3KzERL+_3&SjqgCS)dB4_#=at`rXnPJ`Th+XoAVFm3cl*E0&G^ z=*N>Of8PKude$Tt0S7Y{mrp+U&@piX3>4@uwqXBK-Pj;_wdCo6pV#L;gL-LZ4(tLrJ z^v$2g@yKgDc!ln`Kk|b=ZLOz{0Ho)s-q5dN{}NCB>Ax`*=)w85N^Q6^jax%#1mG)E zh)b`G7)Oj90A@~fWGvNI4yylIjx`)7lwp|4B2byeP1KVw`1f=z4ftnuzs8nSPU=X- zd(o+uT@y6!eJeaxoz_7$PU5({0-$FxZ-cL6U!j3#abB^x-Du z8mA)@;F!6W!0o`BPTuzzR0~xjO$l%se+S`~#&B-WI{%=Mm8Nm`eSt}7)D?*~4NNV9 z8`V*EI0y#J9GDCGSZg-tK6nA*v;4W{C z5tfk7X^cjWAVPxxb1Lxj8}Y!kDNUI>@$Q~;)n7UFx`1Z+XxrLG@X$9q+S=2#%sT+FznjV*dCYnSb@ZH6#nzGmI^mZ>OhV3ss-7vxeSut0<3q&ko zVPs8^ec^lm<{Dy$zrx)mISg@1pxdlwsq)>CLH;+bz$8+RrrtPtEXJF0MToIe09Gc= zS8Mcw!X0IR2C7MOmm*c^yqZVbE(qA_ zS0|)#ShxTwpC_}Gb?)_|U6LhP!lajCa&%?Rx;J=;nSN){SNxw@Q`b`dphrXihwCXi zyetw#x4>?9^)Jjv(5}w_;HKdPqV@trKn#o#;_v2 zcd{fqXt>N;hRgmDnf`c-bZ$X3$NQqgZokE||9q6pItKCBIS8jTDD%Wer(-lnu3{=B zol9AwdAaKye8il${{sz?ivcF98TLKBW`A=*q{qAaEW8bY5SZ;OtjWn`ozv$qq|qmg zLI&)Q@ne9g7(D~;WS^Ba(41p-R!zP)5N~xMtlqGshrIJ0z4{jfMc}9XtC5QnZmCWj zI5Ef$r$AR=PH!^)2;bOKNd7X z_s{Xi>goUc=KkNM^QW7oQw8Sg7nK$4{(VpW@*)28tAG9Re-GsU$G;Y1%M8Ty7thxI z`yu_YrvLgU{^J*1N5O(uzOefw`0pA6|MAOz$p&hmQgH0Kv+n=To6}JNn!Mhlo55@U z?4JDl8XS*HF7BhsL#Aj*$;JA15Vx=5- zhr0XnV&?%o^O8ob_(F(ACY9hiaKa}5{-FvjpO!{ANI^>>(B-A+b~mt(->#>7(hPkh zYVe0`Nap(f*~64`gL#EP#3{^}ja^T3F!0pVKut|Q6XxaxQ=E!>v+8uX;t-gKx&hO4 z@mKQ8u-xJffT-;P`VMYGmt?XF-zMr@Z~$0ILJ^yL@C8jmWnKuqriDvm<$r6w_|FTI z>!;$+Ji1K?=mLUS#I1IODP;R|t7&>m4Kj~qA-?Gy+UP5hX!Sz?xnn3d%AkIIT=lg5 zm3N-{po7>2)ZH3dMS-`(<2xXUJJj_uGVTg$0LJblR$Kehk)_|pm6kM6`&W0w_aE&v z**eT*5D^m($=xAN&dvwWe&qvcMw%RErlY=tj7G_!omXq;VC!WU$UE66e8IrY6S?_Y zJfFI{jCn4Q^cw(}m%dBBnG}Fv#-ZE@T=Wf**m{+TXGMUYIVk|L#+CJou;>4IPyTi( ziyVmogY=`+IGNV@9IU#5)iLQN>%c)rKI@F(iO~+M{-RI)@7+{gNbWb^b{o)= z&5is8y&={tPKcm1Hl4_Ak(L7d}KZX;58V6e_sMf%cLUa1Jnh9U;i_J zVgW2J4<2-TUJrYP0MLI&H$T{k+%2#0{j>XVicI_P>nV_^djs?p)v4pkHZP2R<0OOX zoZlI+Co`Hu!CFc1`_R@Cp#lhZQCpzG`afq`K%4{SUtJ3mLU38%!@p}@`3KRW(A!KRWl@+dA*hoh=k8wSbD zXf@^zl;_eFjYO+Jp{+dxfRr@^$K6?gY|6-V0r$kAoB{%6)PpxI0qF9djV$Hv7eN|} zgOy8BG{!tZ*14r3M5KAfcheH{9c73E3e-h1&7{6}tTirzYnFzt`BE6e&Z_$}1c>swVTIgwPm^Z5y1mMC1-!Yl zcI}r$A*d9b3?K>n>H(3ciJ6-B9!yA19$fj&g2oRw{z=e{VIo6&jOeWcYcw1%7=3l% zMp9rmvnn0~d-l%lmlsr@D}YIVPys*%m7lUZcy#@zICG>l;Jo@rksqP;T6jCa{u96* z%hs0xTJ>UM2Y6?Aoy=wvtxs$K@^B)v1zO-Kpcx)d{P6J9{d$mu$7@CGDgBPH1q&AR zRe9=CR$8XpBXriqgaK6C3`Bl|o|WN0hv;9soz6Fy*nBtuuM=ON(57QK#s=U+a^ubc z2@s`m>{7SzUtYeLN-8J_x`A1^+faeL+vJ7&bYP?d2MOq@f{T?8E2nyQWOhIap9I_z ziUfcgYFKffq~CWre=7(NURE<~!?8Zj3v6ldv>8Rlc zybx9d>u-rS9o9i1n(EQlFO>yZ-D2LM(xh^tG~VIb!ICAfk;~P0)S8hw-Dc2I$8%*u z;OE5nN;2Tocwe`%r2<=xQy|vcSWLs3%ET1~zzWLObe{Y{X#Vq^c*R8q#gUNRg&Q6t zO9|{};1JopB%~g6VUj=@R_A8>vs+B3=^R1k&j)P8Toqmiti?o#(W?O<+@$`ju~m?# zfq$~Yrm7}j4b-eM00N{XzkR~brQRH02TcGiXgL8e-qk@QRqh`BT=xYqS2F$x%#FoD zqc{EYsc`o|y$A7cjTs$lhJ}F(u6Ds)y!R>O+?*7AdkSnunx#41lMue-J4j9H!S4R% zwSd}NE+(MTgvyrY6AO`3Q08Ol4F%uhZ&vEV>B`*{;`X@la%px~Tz=M5Xlzd2!#|lC2vF9|A)Txp**edd zLcnkbPp3*itO68s2;7)2B2en~3lLhrT{X%4waLXC<;M)k_rVM_!HZ?s<<;Nfe|HiX zY~7FbB+6bqAS3RB_l{=|V3@rIliM)U_yrmPjXK7Ng-qA#jziKKB7o@QA@qfvbio~a zd>!P}1!*sZ|CdiB{-?UWRRPW8r}DNCKZ~8FUM_D~ZMks1eVI&VkM7%ilBgT#;7cIL zWT>QNtY|Zg%3K8o!H6&roKVG>wz3QR-4GC}FWO(YdtIbR{wU&C zoV=$&miz=7r5feRA|eGWKabbB*aNZG3tE{X0bBKEk9iM=f7m5J7uWqJD|ERe2G!K)QxZh?T`M_}Vb>!?%bM;q{ z@R$h9P%=D{(uWpkVthTI&g4g~C7n_sMW#XA)`=_1+9!WRf@WYx$n@=~)!&RnO&}$z zVq^L6cU?!O2LhyyLzWz+HiJ7bX+Fj%DV_%^AF#2xfu!W(*VbQlZy@@ufqw-kY+7!W>T3@!x>Mo6#@~(sy3quXSk{ja zAqG^NJCXkzz-GsTXr>5}3W&goa-q@rYF9-z;P+_wG>#Y%?QnZGd)V0kfE=lj2K(b0 zHUm(7#N^Z#K>8KDv$tH=1$JY0o<7$&8qSyIN}VwrrCQqpJvwg^xgE4t0oOvijb9pA z0egBx-*00(KL9%ov77mX6ptWYebWEtZ~Huc!M4T|!V4I;K2iM& z$uAKta%=`JpJLu~_%5{o<(bHe1Sh!%(3GTg0bkX$oRGoEMjUA9EpTZS5nT9VyKa34 zJG%_e=Of%c2n&!9%K=Pi-f!zF2Jk$!(mCYI`lm_8)$qS54|JSB$veho{Q=|>zwXMv zEA9dkGAK=8iM$080=k|XZ`u-Ksk1)aD_Z^85G=CpnBn~s_cC;Pn}gc4-`T`W>A?db z&j+*#v?&NqMP>mdPDK{eIDG+O;cE|LSQPTknp_h(UM!~Hw|;wTb9#FD=hVwEZST7C zll$*ho-GGQXuaS1vgELQW_z!;DQJ3m?*ne|OlbWOL)EHjhovLR=GBpX;*YVr$Jp&2 zo)qr;yjN*c<>>VA`|BlC{X?p5DjdD`0Y;MIO|`@0;~#i#48a`hX4X|AzmEZq$ z!M|VjAKyzjU?vk%4v)G)pT3ugTB!-7RRtz#kEB^8Z5tIbpPpyk1>53TVLOwV1F(!! zw!tZ4-+p=b_ygGF&+en1y0`137|F8f z&-7>z%d@mDgS|wB$Xe@`jN4?*yJ~MAwNN1YGFlUCTxqFE^<}yRKUH$6d{KWoe=^q=U zu+>)7U%@1!{&E%ZoyiXC=&LYBL`*ny_PXS>!PxD8eTd&b${*iZ;yS>i_4L%Y?>sTn z8w9Mw=p2;Lk&u#G5+Um^Qhx$^(}x$uYOkeFx4q$w-I62Jeau=tmO})@qF|s{O;iWz zQQ+4tq>@FT?s+}r zFMUA38Lu0LTCB}nhr z3baAeKLyK@@{;fs;Gw^IAUz$rbj$Rk@PQe=)CH`?O>-T5od&s0z#pITFF#mXlK}^2 zGsv|CiEo=gEPMj0=2x~$`zNJ8O`dO3T&dstS#+sgo^c|cikWaz*_(+f?&FWVC;~8x zd;o-s&n8#I4N4lJHy1#nT$pvC@O$@zCXdS>Z?2+nhdr`|7ugWb|40ppo{pDTKf4E%QZx%eJ3<$bhNi6Q&lPxJ$LCK3gRX_JZ`MTG+4T99-k&5Vg$^lMyk}nMo>q+M?)|h1jy`%saq4c*0!S#Dy`gSfg^bD0^>}?8 zShn+pU^56kQn~nFHiHK+v2hb|b>8)TS5{TYMN_FSKuqytF1=2O2@!2|aTdgAMdCPM zsLq(Ebhk!bD-rP55ibO(yST^xqz=q1N2ho_t=kNQu-Yd%c#=e8H?(QA#D3a8x#An})@+3YzjnKXf_Gi)IE*$781`q&FnE#oatB*kIBW0IE3Ob-`iCx9= zJG1U<(1P^vvjy=jR~nB0kh*&-*r|((i@gm%2}im;QsVMPi$Egw;TaGQidd=x$2T#H7$Q=!l~>&~9r38R}_I zzBDq&{rLpwiNFM-`0_*ypPJ;H-`!mJzLgbq(6xI0hb^XmZY}-}RKHk>JOpp`_u#x6 z!w(sMJ-3(_`6M(Veqhuuq#R<1YUoP<9U$Dz0dh1*kOl`F{qJXT^;(U&F<=(EhUq zAbG}h+rbw>TZz6r?&f0`V1|*MDbgM zh~GqgXYXiwp+AFuMeptkfFFxY%!WT^-1LXRT);^Q@h=pKNg<4)pYo-hZf@C{=9SG~ z@&@54)9^SbHI5gnFU9Fk0pExFxb%kMJl&Ryc9uN|>8FEh>8d4ctG(#MuoIo}308Tt zL$-wHrC1y|L1gyc@uGaRg2rxG`{GS+raPZ9pg=O83x(v0ht2=xE#!cOU?Kr?T+MbN zsgryQWWTQo*buZ!G5@triFwc#8U*VzU=>i5j+;r;pS+p$KJQ+~1rqrJJ(!9z>A(_{ zSbwS~q~)8eAhGcM@f84_GrRJ3tsa}l*weH--k)C(fE7f=>$H-e@*)p-gF9u zURBx2ZUc_G&|ZGc`Z8$2G#@_Ypb!`UO^jtsjGi?!JD3pPXl1i1yQRaA-&p{7FD0VA z6?;T{pJR*PEsqh(ImvkK$f0h3#3$=Y>wdyb1aHD{NAjbxh0pja0TEeq?D)D9TDw9G zlEO5M-TdxmtneTV-Vqo1%%haHOse~^zTdWlWn2Yy*QUz0(DG7$j_^;1*<{W|l4N$O z?T@9PK}N|A(y)18Tp07p&k`wWJ(CAE#ecZBYk0qvD&nqlZXI=gbQ{XFBSrh|hg6;Dq!&PF*seK5AH3uidM7rAe`T`iG36#P*f1iC z92|zwRSl!)FOdt`$?D>`>uCZPGvLo8NnvL)7Md|R$mXA$61XtW!#MkW>khG2C-hW~ z<(HSABbba1o`PPFi22v|Y)h;+QbC3Own+j*V);jsldK~`X2=*Re@{0scJ2m)!Lstj zHyDtST>%vW?kD=w^~>4NF=Zak26DG69UkA~R=-l+%HS!eWO`AqM>c(2OfeY_?_}0v z8SoNZFZG!L!OLBbwKrI6Q~IE6UISleDHjAJdQZSWWfW3?{irvs8**TiJ>#Rt13Q|G zL%abbnbC@rR#tY;c5qPIt25y24CWpIlo>mc*`G^K8RmTIp1D8NWf+x#Pk_p*c+{6# zmlIz%^(;(uC25CY+|!KQ;(5gH4B#Zcoyukr< ztUr|K#+i4su@?FNz}{}?0M}}IWd$Ghp@n&S;OQa=2#Qk&HD{?aI|)3LN_^N(t5FtJ zbOQ9s<-tg)aAvWUlPtdi9!>PhAlRkxkE zUTrX+zAZ*myCn=2BJv?-w>Z=h11~fow&2g3*a8xAmiQFpV;{VEQx76_XVWzg;d+h zFvoPm2>xt!P~Pz1)eMYUhmyRKE*B>+gL4@≷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%0AH`KURC4yJNoFBLSV18o?QBD0Tkp` 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

  • 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 z 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 ZK)BiNFV(10a32T&(h_nnOJ5iS{C_c*ZM^^h literal 0 HcmV?d00001 diff --git a/guides/img/sw_late_attack.png b/guides/img/sw_late_attack.png new file mode 100644 index 0000000000000000000000000000000000000000..ca1574b4b6d739e92deb63af3f1d6821201f8391 GIT binary patch literal 323273 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 z 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%0Ag+n`G2s{`F5R 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®A? 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 literal 0 HcmV?d00001 diff --git a/guides/slashing-and-withdrawals.md b/guides/slashing-and-withdrawals.md new file mode 100644 index 00000000..89fa1b48 --- /dev/null +++ b/guides/slashing-and-withdrawals.md @@ -0,0 +1,221 @@ +# Slashing & Withdrawals + +> _This document describes the rationale and technical implementation of slashing and withdrawal mechanisms in the SSV Based Applications platform._ + +--- + +## 1. Rationale & Security Considerations + +Slashing is particularly sensitive to withdrawal operations as they are the gateway for malicious strategies to attempt risk-free attacks — when a strategy commits slashable offenses and then withdraws its funds before suffering any penalty. + +As a security mechanism, withdrawals are implemented as a two-step process: + +1. **Withdrawal Request** (`proposeWithdrawal`) — strategy submits a request and records a share-based amount and timestamp. +2. **Execution** (`finalizeWithdrawal`) — after a configurable time window, the requested amount is released. + +However, to fully prevent risk‑free attacks, bApps should **track pending withdrawals** and **immediately adjust the strategy’s voting weight** to reflect its _future_ obligated balance upon the request. + +--- + +## 2. Illustrative Example + +![alt text](./img/sw_example.png "Example") + +For simplicity, assume **X** obligated tokens correspond to **X%** of voting weight. + +- At **t0**, the strategy’s voting weight is aligned with its obligated balance: 10 tokens ⇒ **10%** voting weight. +- At **t1**, the strategy calls `proposeWithdrawal(6)`. The bApp should immediately align the voting weight to reflect the _future_ obligated balance (10 − 6 = 4 tokens), reducing weight to **4%** even though the tokens remain until finalization. +- At **t1 + Δwindow**, executing the withdrawal releases the 6 tokens, leaving 4 tokens and **4%** weight. + +| Time | Obligated Balance | Voting Weight | +|----------------------------|-------------------|---------------| +| **t0** | 10 tokens | 10% | +| **t1** (_after request_) | 10 tokens | **4%** | +| **t1 + Δwindow** (finalize)| 4 tokens | 4% | + +--- + +## 3. Late‑Attack Scenario + +![alt text](./img/sw_late_attack.png "Late attack") + +Therefore, if the strategy attacks **just before** `finalizeWithdrawal`, its attack power is already capped to **4%**. The bApp can still call `slash(...)` on the remaining obligated tokens, seizing those 4 tokens. + +--- + +## 4. Early‑Attack Scenario + +![alt text](./img/sw_early_attack.png "Early attack") + +A strategy may attack at full **10%** voting power **before** the bApp detects its withdrawal request. In this case, although more powerful, the bApp can still fully slash up to **100%** of the obligation (10 tokens) at any point _during_ the withdrawal waiting period, preventing a risk‑free exit. + +--- + +## 5. Correlated Slashing & Withdrawal Timing + +![alt text](./img/sw_correlated.png "Correlated attack") + +When using correlated slashing, bApps often wait a delay Δ_slash after detecting a slashable offense before executing the penalty. To prevent a strategy from escaping in the gap: + +```text +Δ_slashing < Δ_withdrawal +``` + +That is, the correlated slashing window must be **shorter** than the withdrawal timelock window, ensuring the slash occurs _before_ funds can be withdrawn. + +--- + +## 6. Core On‑Chain Data Structures + +Refer to `libraries/CoreStorageLib.sol` and `libraries/ProtocolStorageLib.sol` for complete definitions. + +```solidity +// CoreStorageLib.Data +mapping(uint32 => mapping(address => mapping(address => ICore.WithdrawalRequest))) withdrawalRequests; +mapping(uint32 => mapping(address => mapping(address => ICore.Obligation))) obligations; +mapping(address => mapping(address => uint256)) slashingFund; + +// ProtocolStorageLib.Data +uint32 withdrawalTimelockPeriod; +uint32 withdrawalExpireTime; +uint32 disabledFeatures; // bitmask: slashingDisabled, withdrawalsDisabled, ... +``` + +--- + +## 7. Key Contract Snippets + +### Propose Withdrawal + +```solidity +function proposeWithdrawal( + uint32 strategyId, + address token, + uint256 amount +) external { + _checkWithdrawalsAllowed(); + _proposeWithdrawal(strategyId, token, amount); +} +``` + +### Finalize Withdrawal + +```solidity +function finalizeWithdrawal( + uint32 strategyId, + IERC20 token +) external nonReentrant { + _checkWithdrawalsAllowed(); + uint256 amount = _finalizeWithdrawal(strategyId, address(token)); + token.safeTransfer(msg.sender, amount); +} +``` + +### Slash Strategy + +```solidity +function slash( + uint32 strategyId, + address bApp, + address token, + uint32 percentage, + bytes calldata data +) external nonReentrant { + _checkSlashingAllowed(); + uint256 slashable = getSlashableBalance(strategyId, bApp, token); + uint256 amount = (slashable * percentage) / MAX_PERCENTAGE; + // delegate to bApp callback, adjust obligations or exit + s.slashingFund[receiver][token] += amount; +} +``` + + +## 8. Consequences for bApps + +When a slashing event or withdrawal occurs, bApps face several technical and economic consequences: + +### 8.1 Reduced Security Collateral +- **Obligated capital depletion** + Slashing permanently removes tokens from the strategy’s collateral. If the strategy was the only provider for that token, the bApp’s total secured stake decreases, potentially exposing it to higher risk. +- **Voting-weight impact** + Reduced obligations also lower the strategy’s voting weight, which may affect governance quorum and the bApp’s ability to influence protocol parameters. + +### 8.2 Financial Flows +- **Slashing fund accrual** + Upon a slash, the bApp (or designated receiver) accumulates funds in its `slashingFund` balance. These can be withdrawn via `withdrawSlashingFund(...)`: + ```solidity + function withdrawSlashingFund(address token, uint256 amount) external nonReentrant; + ``` +- **Capital rebalancing** + The bApp must decide whether to: + 1. **Replenish** obligations by incentivizing strategies to deposit more. + 2. **Adjust risk levels** or reduce service capacity to match the new collateral. + +### 8.3 Governance and Reputation +- **Risk-level adjustment** + Repeated slashing may trigger bApp marketplace logic (off-chain or on-chain) to flag higher shared risk levels for delegators and integrators. +- **Strategy exit** + If a strategy’s obligations drop to zero (full exit), the bApp loses that collateral entirely and must opt-in a new strategy or await new deposits. + +## 9. Slashing Mechanism Details + +This section consolidates the detailed behavior of the `slash(...)` function for both compliant and non‑compliant bApps, as well as post‑slashing rules and the slashing fund lifecycle. + +### 9.1 Modes of Invocation + +**1) Compliant bApp (Smart Contract implementing `IBasedApp`)** + +- The platform calls: + ```solidity + (success, receiver, exit) = IBasedApp(bApp).slash( + strategyId, + token, + percentage, + msg.sender, + data + ); + ``` +- `data` is forwarded, often containing proofs or auxiliary input. +- The bApp contract decides: + - **Receiver** of slashed funds (e.g. burn with `address(0)` or send to a treasury). + - **Exit or Adjust**: + - If `exit == true`, the strategy’s obligation percentage is set to 0 (full exit). + - Otherwise, obligations are reduced proportionally: + ```solidity + newObligated = oldObligated - amount; + newTotal = oldTotal - amount; + obligation.pct = newObligated * MAX_PERCENTAGE / newTotal; + ``` +- Finally, the slashed `amount` is credited to `slashingFund[receiver][token]`. + +**2) Non‑Compliant bApp (EOA or contract not supporting `IBasedApp`)** + +- Only the bApp address itself can invoke `slash(...)`. +- Receiver is forcibly `bApp` address. +- Strategy always **exits**: obligation percentage → 0. +- Slashed tokens accumulate in `slashingFund[bApp][token]`. + +### 9.2 Post‑Slashing Rules + +- **Re‑opt‑in Timelock** + After a strategy obligation is exited (percentage == 0), a new obligation can only be created again after the protocol’s **obligation timelock** (default 14 days). This prevents immediate re‑entry and enforces deliberate participation. + +### 9.3 Slashing Fund Lifecycle + +- **Accrual** + Slashed tokens are held in an internal fund (`slashingFund` mapping) until withdrawal. + +- **Withdrawal** + The designated receiver calls: + ```solidity + function withdrawSlashingFund(address token, uint256 amount) external nonReentrant; + function withdrawETHSlashingFund(uint256 amount) external nonReentrant; + ``` + under non‑zero and balance‑checked preconditions. + +- **Economic Impact** + Withdrawn funds are immediately available to the receiver, while the strategy’s capital and voting power remain permanently reduced. + + + + diff --git a/package-lock.json b/package-lock.json index b60352aa..400094dc 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "based-applications", - "version": "0.0.1", + "version": "0.1.0", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "based-applications", - "version": "0.0.1", + "version": "0.1.0", "license": "GPL-3.0", "devDependencies": { "@openzeppelin/contracts-upgradeable": "^5.3.0", diff --git a/package.json b/package.json index 89870459..cd7cf2e3 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "based-applications", - "version": "0.0.1", + "version": "0.1.0", "description": "SSV Based Applications", "author": "SSV.Network", "repository": { diff --git a/script/DeployAll.sol b/script/DeployAll.sol index 673c0df4..f014367c 100644 --- a/script/DeployAll.sol +++ b/script/DeployAll.sol @@ -38,7 +38,7 @@ contract DeployAll is Script { console.log("ProtocolModule: ", address(protocolMod)); console.log("SSVBasedApps Proxy: ", address(proxy)); - return saveToJson(impl, proxy, strategyMod, bAppsMod, protocolMod); + return saveToJson(impl, proxy, strategyMod, bAppsMod, protocolMod, raw); } function saveToJson( @@ -46,7 +46,8 @@ contract DeployAll is Script { ERC1967Proxy proxy, StrategyManager strategyMod, BasedAppsManager bAppsMod, - ProtocolManager protocolMod + ProtocolManager protocolMod, + string memory raw ) internal returns (string memory) { string memory parent = "parent"; @@ -78,6 +79,54 @@ contract DeployAll is Script { address(protocolMod) ); + string memory parameters = "parameters"; + vm.serializeUint( + parameters, + "feeTimelockPeriod", + raw.readUint(".feeTimelockPeriod") + ); + vm.serializeUint( + parameters, + "feeExpireTime", + raw.readUint(".feeExpireTime") + ); + vm.serializeUint( + parameters, + "withdrawalTimelockPeriod", + raw.readUint(".withdrawalTimelockPeriod") + ); + vm.serializeUint( + parameters, + "withdrawalExpireTime", + raw.readUint(".withdrawalExpireTime") + ); + vm.serializeUint( + parameters, + "obligationTimelockPeriod", + raw.readUint(".obligationTimelockPeriod") + ); + vm.serializeUint( + parameters, + "obligationExpireTime", + raw.readUint(".obligationExpireTime") + ); + vm.serializeUint( + parameters, + "tokenUpdateTimelockPeriod", + raw.readUint(".tokenUpdateTimelockPeriod") + ); + vm.serializeUint(parameters, "maxShares", raw.readUint(".maxShares")); + vm.serializeUint( + parameters, + "maxFeeIncrement", + raw.readUint(".maxFeeIncrement") + ); + string memory parameters_output = vm.serializeUint( + parameters, + "disabledFeatures", + raw.readUint(".disabledFeatures") + ); + string memory chain_info = "chainInfo"; vm.serializeUint(chain_info, "deploymentBlock", block.number); string memory chain_info_output = vm.serializeUint( @@ -92,8 +141,8 @@ contract DeployAll is Script { deployed_addresses, deployed_addresses_output ); - - return vm.serializeString(parent, chain_info, chain_info_output); + vm.serializeString(parent, chain_info, chain_info_output); + return vm.serializeString(parent, parameters, parameters_output); } function deployProxy( diff --git a/script/config/hoodi-stage.json b/script/config/hoodi-stage.json index 9b0f9b60..b7dc49ca 100644 --- a/script/config/hoodi-stage.json +++ b/script/config/hoodi-stage.json @@ -1,11 +1,11 @@ { - "feeTimelockPeriod": 86400, + "feeTimelockPeriod": 300, "feeExpireTime": 3600, - "withdrawalTimelockPeriod": 172800, - "withdrawalExpireTime": 86400, - "obligationTimelockPeriod": 172800, - "obligationExpireTime": 86400, - "tokenUpdateTimelockPeriod": 3600, + "withdrawalTimelockPeriod": 300, + "withdrawalExpireTime": 3600, + "obligationTimelockPeriod": 300, + "obligationExpireTime": 3600, + "tokenUpdateTimelockPeriod": 300, "maxShares": "1e50", "maxFeeIncrement": 500, "disabledFeatures": 0 diff --git a/src/core/SSVBasedApps.sol b/src/core/SSVBasedApps.sol index f17cdcef..31b81362 100644 --- a/src/core/SSVBasedApps.sol +++ b/src/core/SSVBasedApps.sol @@ -570,7 +570,7 @@ contract SSVBasedApps is } function getVersion() external pure returns (string memory) { - return "0.0.1"; + return "0.1.0"; } // ********************************* diff --git a/src/core/libraries/ProtocolStorageLib.sol b/src/core/libraries/ProtocolStorageLib.sol index 579968ef..2f277342 100644 --- a/src/core/libraries/ProtocolStorageLib.sol +++ b/src/core/libraries/ProtocolStorageLib.sol @@ -5,6 +5,7 @@ library ProtocolStorageLib { /// @title SSV Based Apps Storage Protocol /// @notice Represents the operational settings and parameters required by the SSV Based Application Platform struct Data { + uint256 maxShares; uint32 feeTimelockPeriod; uint32 feeExpireTime; uint32 withdrawalTimelockPeriod; @@ -13,7 +14,6 @@ library ProtocolStorageLib { uint32 obligationExpireTime; uint32 tokenUpdateTimelockPeriod; uint32 maxFeeIncrement; - uint256 maxShares; // each bit, starting from the LSB, represents a DISABLED feature // bit 0 = slashingDisabled // bit 1 = withdrawalsDisabled diff --git a/src/core/modules/BasedAppsManager.sol b/src/core/modules/BasedAppsManager.sol index b0ad9980..024ced56 100644 --- a/src/core/modules/BasedAppsManager.sol +++ b/src/core/modules/BasedAppsManager.sol @@ -47,7 +47,7 @@ contract BasedAppsManager is IBasedAppManager { } function updateBAppsTokens( - ICore.TokenConfig[] memory tokenConfigs + ICore.TokenConfig[] calldata tokenConfigs ) external { CoreStorageLib.Data storage s = CoreStorageLib.load(); diff --git a/test/helpers/Setup.t.sol b/test/helpers/Setup.t.sol index 53eb9fcc..d6824a41 100644 --- a/test/helpers/Setup.t.sol +++ b/test/helpers/Setup.t.sol @@ -124,7 +124,7 @@ contract Setup is Test { ); proxy = new ERC1967Proxy(address(implementation), data); proxiedManager = SSVBasedApps(payable(address(proxy))); - assertEq(proxiedManager.getVersion(), "0.0.1", "Version mismatch"); + assertEq(proxiedManager.getVersion(), "0.1.0", "Version mismatch"); assertEq( proxiedManager.maxFeeIncrement(), 500, From 7fb441769f9b57596111963e3364bdb386def79c Mon Sep 17 00:00:00 2001 From: Riccardo Persiani Date: Mon, 12 May 2025 10:11:47 +0200 Subject: [PATCH 08/24] fix(strategy-manager): change slashing and obligationUpdate event order --- src/core/modules/StrategyManager.sol | 31 ++++++++++++++-------------- 1 file changed, 16 insertions(+), 15 deletions(-) diff --git a/src/core/modules/StrategyManager.sol b/src/core/modules/StrategyManager.sol index 2263358c..fb8425b2 100644 --- a/src/core/modules/StrategyManager.sol +++ b/src/core/modules/StrategyManager.sol @@ -556,7 +556,6 @@ contract StrategyManager is ReentrancyGuardTransient, IStrategyManager { revert BAppNotOptedIn(); } - //if (obligationPercentage > MAX_PERCENTAGE) revert ICore.InvalidPercentage(); ValidationLib.validatePercentage(obligationPercentage); if ( @@ -774,7 +773,7 @@ contract StrategyManager is ReentrancyGuardTransient, IStrategyManager { address receiver; bool exit; bool success; - + uint32 obligationPercentage; if (_isBApp(bApp)) { (success, receiver, exit) = IBasedApp(bApp).slash( strategyId, @@ -785,9 +784,11 @@ contract StrategyManager is ReentrancyGuardTransient, IStrategyManager { ); if (!success) revert IStrategyManager.BAppSlashingFailed(); - if (exit) _exitStrategy(s, strategyId, bApp, token); - else - _adjustObligation( + if (exit) { + _exitStrategy(s, strategyId, bApp, token); + obligationPercentage = 0; + } else + obligationPercentage = _adjustObligation( s, strategyId, bApp, @@ -818,6 +819,13 @@ contract StrategyManager is ReentrancyGuardTransient, IStrategyManager { percentage, receiver ); + + emit IStrategyManager.ObligationUpdated( + strategyId, + bApp, + token, + obligationPercentage + ); } function _exitStrategy( @@ -827,8 +835,6 @@ contract StrategyManager is ReentrancyGuardTransient, IStrategyManager { address token ) private { s.obligations[strategyId][bApp][token].percentage = 0; - - emit IStrategyManager.ObligationUpdated(strategyId, bApp, token, 0); } function _adjustObligation( @@ -838,7 +844,7 @@ contract StrategyManager is ReentrancyGuardTransient, IStrategyManager { address token, uint256 amount, ICore.Shares storage strategyTokenShares - ) internal { + ) internal returns (uint32 obligationPercentage) { ICore.Obligation storage obligation = s.obligations[strategyId][bApp][ token ]; @@ -849,19 +855,14 @@ contract StrategyManager is ReentrancyGuardTransient, IStrategyManager { uint256 postSlashObligatedBalance = currentObligatedBalance - amount; if (postSlashStrategyBalance == 0) { obligation.percentage = 0; - emit IStrategyManager.ObligationUpdated(strategyId, bApp, token, 0); + return 0; } else { uint32 postSlashObligationPercentage = uint32( (postSlashObligatedBalance / postSlashStrategyBalance) * MAX_PERCENTAGE ); obligation.percentage = postSlashObligationPercentage; - emit IStrategyManager.ObligationUpdated( - strategyId, - bApp, - token, - postSlashObligationPercentage - ); + return postSlashObligationPercentage; } } From 1a21e656412a33b8bc9e89956acda0f0b884315b Mon Sep 17 00:00:00 2001 From: Riccardo Persiani Date: Tue, 27 May 2025 15:46:44 +0200 Subject: [PATCH 09/24] fix(strategy): revert slashing if strategy not opted in --- src/core/modules/StrategyManager.sol | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/src/core/modules/StrategyManager.sol b/src/core/modules/StrategyManager.sol index fb8425b2..765704f6 100644 --- a/src/core/modules/StrategyManager.sol +++ b/src/core/modules/StrategyManager.sol @@ -734,6 +734,18 @@ contract StrategyManager is ReentrancyGuardTransient, IStrategyManager { return (balance * percentage) / MAX_PERCENTAGE; } + function _checkStrategyOptedIn( + CoreStorageLib.Data storage s, + uint32 strategyId, + address bApp + ) internal view { + // It is possible to slash only if the strategy owner has opted-in to the bApp + address strategyOwner = s.strategies[strategyId].owner; // Load the strategy to check if it exists + if (s.accountBAppStrategy[strategyOwner][bApp] != strategyId) { + revert BAppNotOptedIn(); + } + } + /// @notice Slash a strategy /// @param strategyId The ID of the strategy /// @param bApp The address of the bApp @@ -757,6 +769,8 @@ contract StrategyManager is ReentrancyGuardTransient, IStrategyManager { revert IBasedAppManager.BAppNotRegistered(); } + _checkStrategyOptedIn(s, strategyId, bApp); + ICore.Shares storage strategyTokenShares = s.strategyTokenShares[ strategyId ][token]; From a023070b7e8d8e7a1baf428591bb6bba8ca7fdcc Mon Sep 17 00:00:00 2001 From: Riccardo Persiani Date: Tue, 27 May 2025 15:58:59 +0200 Subject: [PATCH 10/24] test(strategy): revert slash not opted in strategy --- test/modules/SlashingManager.bapp.t.sol | 29 +++++++++++++++++++++++++ test/modules/SlashingManager.eoa.t.sol | 29 +++++++++++++++++++++++++ 2 files changed, 58 insertions(+) diff --git a/test/modules/SlashingManager.bapp.t.sol b/test/modules/SlashingManager.bapp.t.sol index 9f8a0255..97642c81 100644 --- a/test/modules/SlashingManager.bapp.t.sol +++ b/test/modules/SlashingManager.bapp.t.sol @@ -907,4 +907,33 @@ contract SlashingManagerTest is StrategyManagerTest { ); bApp4.withdrawETHSlashingFund(1 ether); } + + function testRevertSlashStrategyNotOptedInToBApp() public { + uint256 depositAmount = 100_000; + uint32 slashPercentage = 100; + + testCreateStrategies(); + testRegisterBAppWith2Tokens(); + + vm.prank(USER2); + proxiedManager.depositERC20( + STRATEGY1, + IERC20(erc20mock), + depositAmount + ); + vm.prank(USER1); + vm.expectRevert( + abi.encodeWithSelector( + IStrategyManager.BAppNotOptedIn.selector, + STRATEGY1 + ) + ); + proxiedManager.slash( + STRATEGY1, + address(bApp1), + address(erc20mock), + slashPercentage, + abi.encodePacked("0x00") + ); + } } diff --git a/test/modules/SlashingManager.eoa.t.sol b/test/modules/SlashingManager.eoa.t.sol index cc5ea2d4..cae26ae4 100644 --- a/test/modules/SlashingManager.eoa.t.sol +++ b/test/modules/SlashingManager.eoa.t.sol @@ -340,6 +340,35 @@ contract SlashingManagerEOATest is StrategyManagerTest { ); } + function testRevertSlashStrategyNotOptedInToEOA() public { + uint256 depositAmount = 100_000; + uint32 slashPercentage = 100; + + testCreateStrategies(); + testRegisterBAppWithEOA(); + + vm.prank(USER2); + proxiedManager.depositERC20( + STRATEGY1, + IERC20(erc20mock), + depositAmount + ); + vm.prank(USER1); + vm.expectRevert( + abi.encodeWithSelector( + IStrategyManager.BAppNotOptedIn.selector, + STRATEGY1 + ) + ); + proxiedManager.slash( + STRATEGY1, + USER1, + address(erc20mock), + slashPercentage, + abi.encodePacked("0x00") + ); + } + function testRevertWithdrawSlashingFundErc20WithEthEOA() public { uint256 slashAmount = 100; uint32 slashPercentage = 100; From 5b2de18370b6f6c00fec8178a506249d5790afb9 Mon Sep 17 00:00:00 2001 From: Riccardo Persiani Date: Tue, 27 May 2025 16:07:49 +0200 Subject: [PATCH 11/24] chore: <- update solhint --- package-lock.json | 17 ++++++++++++----- package.json | 2 +- 2 files changed, 13 insertions(+), 6 deletions(-) diff --git a/package-lock.json b/package-lock.json index 400094dc..1724a0da 100644 --- a/package-lock.json +++ b/package-lock.json @@ -14,7 +14,7 @@ "lint-staged": "^15.5.1", "prettier": "^3.5.3", "prettier-plugin-solidity": "^1.4.2", - "solhint": "^5.0.5" + "solhint": "^5.1.0" } }, "node_modules/@babel/code-frame": { @@ -1802,13 +1802,13 @@ } }, "node_modules/solhint": { - "version": "5.0.5", - "resolved": "https://registry.npmjs.org/solhint/-/solhint-5.0.5.tgz", - "integrity": "sha512-WrnG6T+/UduuzSWsSOAbfq1ywLUDwNea3Gd5hg6PS+pLUm8lz2ECNr0beX609clBxmDeZ3676AiA9nPDljmbJQ==", + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/solhint/-/solhint-5.1.0.tgz", + "integrity": "sha512-KWg4gnOnznxHXzH0fUvnhnxnk+1R50GiPChcPeQgA7SKQTSF1LLIEh8R1qbkCEn/fFzz4CfJs+Gh7Rl9uhHy+g==", "dev": true, "license": "MIT", "dependencies": { - "@solidity-parser/parser": "^0.19.0", + "@solidity-parser/parser": "^0.20.0", "ajv": "^6.12.6", "antlr4": "^4.13.1-patch-1", "ast-parents": "^0.0.1", @@ -1834,6 +1834,13 @@ "prettier": "^2.8.3" } }, + "node_modules/solhint/node_modules/@solidity-parser/parser": { + "version": "0.20.1", + "resolved": "https://registry.npmjs.org/@solidity-parser/parser/-/parser-0.20.1.tgz", + "integrity": "sha512-58I2sRpzaQUN+jJmWbHfbWf9AKfzqCI8JAdFB0vbyY+u8tBRcuTt9LxzasvR0LGQpcRv97eyV7l61FQ3Ib7zVw==", + "dev": true, + "license": "MIT" + }, "node_modules/solhint/node_modules/prettier": { "version": "2.8.8", "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.8.8.tgz", diff --git a/package.json b/package.json index cd7cf2e3..cd47c75a 100644 --- a/package.json +++ b/package.json @@ -39,7 +39,7 @@ "lint-staged": "^15.5.1", "prettier": "^3.5.3", "prettier-plugin-solidity": "^1.4.2", - "solhint": "^5.0.5" + "solhint": "^5.1.0" }, "lint-staged": { "src/**/*.sol": "solhint" From 90ede9d6e7bbeb65c2033cbaf322d8f9ccda68da Mon Sep 17 00:00:00 2001 From: Riccardo Persiani Date: Wed, 28 May 2025 14:34:23 +0200 Subject: [PATCH 12/24] Add Security Checks for Config (#49) * feat: add and enforce basic checks for config vars --- src/core/SSVBasedApps.sol | 41 ++- src/core/interfaces/ISSVBasedApps.sol | 8 + src/core/modules/ProtocolManager.sol | 22 ++ test/Config.t.sol | 345 ++++++++++++++++++++++++++ test/SSVBasedApps.t.sol | 64 +---- test/helpers/Setup.t.sol | 10 +- test/modules/ProtocolManager.t.sol | 94 ++++++- test/modules/StrategyManager.t.sol | 2 +- 8 files changed, 510 insertions(+), 76 deletions(-) create mode 100644 test/Config.t.sol diff --git a/src/core/SSVBasedApps.sol b/src/core/SSVBasedApps.sol index 31b81362..450d6c57 100644 --- a/src/core/SSVBasedApps.sol +++ b/src/core/SSVBasedApps.sol @@ -103,10 +103,45 @@ contract SSVBasedApps is protocolManager_ ); - if (config.maxFeeIncrement == 0 || config.maxFeeIncrement > 10_000) { + if ( + config.maxFeeIncrement == 0 || + config.maxFeeIncrement > MAX_PERCENTAGE + ) { revert InvalidMaxFeeIncrement(); } + if (config.maxShares == 0 || config.maxShares < 1e38) { + revert InvalidMaxShares(); + } + + if (config.feeTimelockPeriod == 0) { + revert InvalidFeeTimelockPeriod(); + } + + if (config.feeExpireTime == 0) { + revert InvalidFeeExpireTime(); + } + + if (config.withdrawalTimelockPeriod == 0) { + revert InvalidWithdrawalTimelockPeriod(); + } + + if (config.withdrawalExpireTime == 0) { + revert InvalidWithdrawalExpireTime(); + } + + if (config.obligationTimelockPeriod == 0) { + revert InvalidObligationTimelockPeriod(); + } + + if (config.obligationExpireTime == 0) { + revert InvalidObligationExpireTime(); + } + + if (config.tokenUpdateTimelockPeriod == 0) { + revert InvalidTokenUpdateTimelockPeriod(); + } + sp.maxFeeIncrement = config.maxFeeIncrement; sp.feeTimelockPeriod = config.feeTimelockPeriod; sp.feeExpireTime = config.feeExpireTime; @@ -343,9 +378,7 @@ contract SSVBasedApps is _delegateTo(SSVCoreModules.SSV_PROTOCOL_MANAGER); } - function updateDisabledFeatures( - uint32 disabledFeatures - ) external onlyOwner { + function updateDisabledFeatures(uint32 value) external onlyOwner { _delegateTo(SSVCoreModules.SSV_PROTOCOL_MANAGER); } diff --git a/src/core/interfaces/ISSVBasedApps.sol b/src/core/interfaces/ISSVBasedApps.sol index 93950c25..20abc57a 100644 --- a/src/core/interfaces/ISSVBasedApps.sol +++ b/src/core/interfaces/ISSVBasedApps.sol @@ -27,5 +27,13 @@ interface ISSVBasedApps { ) external; error InvalidMaxFeeIncrement(); + error InvalidMaxShares(); + error InvalidFeeTimelockPeriod(); + error InvalidFeeExpireTime(); + error InvalidWithdrawalTimelockPeriod(); + error InvalidWithdrawalExpireTime(); + error InvalidObligationTimelockPeriod(); + error InvalidObligationExpireTime(); + error InvalidTokenUpdateTimelockPeriod(); error TargetModuleDoesNotExist(uint8 moduleId); } diff --git a/src/core/modules/ProtocolManager.sol b/src/core/modules/ProtocolManager.sol index cb006f62..68169e76 100644 --- a/src/core/modules/ProtocolManager.sol +++ b/src/core/modules/ProtocolManager.sol @@ -3,17 +3,25 @@ pragma solidity 0.8.29; import { IProtocolManager } from "@ssv/src/core/interfaces/IProtocolManager.sol"; import { ProtocolStorageLib } from "@ssv/src/core/libraries/ProtocolStorageLib.sol"; +import { ISSVBasedApps } from "@ssv/src/core/interfaces/ISSVBasedApps.sol"; contract ProtocolManager is IProtocolManager { uint32 private constant SLASHING_DISABLED = 1 << 0; uint32 private constant WITHDRAWALS_DISABLED = 1 << 1; + uint32 private constant MIN_TIME_LOCK_PERIOD = 1 days; + uint32 private constant MIN_EXPIRE_TIME = 1 hours; + function updateFeeTimelockPeriod(uint32 feeTimelockPeriod) external { + if (feeTimelockPeriod < MIN_TIME_LOCK_PERIOD) + revert ISSVBasedApps.InvalidFeeTimelockPeriod(); ProtocolStorageLib.load().feeTimelockPeriod = feeTimelockPeriod; emit FeeTimelockPeriodUpdated(feeTimelockPeriod); } function updateFeeExpireTime(uint32 feeExpireTime) external { + if (feeExpireTime < MIN_EXPIRE_TIME) + revert ISSVBasedApps.InvalidFeeExpireTime(); ProtocolStorageLib.load().feeExpireTime = feeExpireTime; emit FeeExpireTimeUpdated(feeExpireTime); } @@ -21,6 +29,8 @@ contract ProtocolManager is IProtocolManager { function updateWithdrawalTimelockPeriod( uint32 withdrawalTimelockPeriod ) external { + if (withdrawalTimelockPeriod < MIN_TIME_LOCK_PERIOD) + revert ISSVBasedApps.InvalidWithdrawalTimelockPeriod(); ProtocolStorageLib .load() .withdrawalTimelockPeriod = withdrawalTimelockPeriod; @@ -28,6 +38,8 @@ contract ProtocolManager is IProtocolManager { } function updateWithdrawalExpireTime(uint32 withdrawalExpireTime) external { + if (withdrawalExpireTime < MIN_EXPIRE_TIME) + revert ISSVBasedApps.InvalidWithdrawalExpireTime(); ProtocolStorageLib.load().withdrawalExpireTime = withdrawalExpireTime; emit WithdrawalExpireTimeUpdated(withdrawalExpireTime); } @@ -35,6 +47,8 @@ contract ProtocolManager is IProtocolManager { function updateObligationTimelockPeriod( uint32 obligationTimelockPeriod ) external { + if (obligationTimelockPeriod < MIN_TIME_LOCK_PERIOD) + revert ISSVBasedApps.InvalidObligationTimelockPeriod(); ProtocolStorageLib .load() .obligationTimelockPeriod = obligationTimelockPeriod; @@ -42,6 +56,8 @@ contract ProtocolManager is IProtocolManager { } function updateObligationExpireTime(uint32 obligationExpireTime) external { + if (obligationExpireTime < MIN_EXPIRE_TIME) + revert ISSVBasedApps.InvalidObligationExpireTime(); ProtocolStorageLib.load().obligationExpireTime = obligationExpireTime; emit ObligationExpireTimeUpdated(obligationExpireTime); } @@ -49,6 +65,8 @@ contract ProtocolManager is IProtocolManager { function updateTokenUpdateTimelockPeriod( uint32 tokenUpdateTimelockPeriod ) external { + if (tokenUpdateTimelockPeriod < MIN_TIME_LOCK_PERIOD) + revert ISSVBasedApps.InvalidTokenUpdateTimelockPeriod(); ProtocolStorageLib .load() .tokenUpdateTimelockPeriod = tokenUpdateTimelockPeriod; @@ -56,11 +74,15 @@ contract ProtocolManager is IProtocolManager { } function updateMaxShares(uint256 maxShares) external { + if (maxShares < 1e38) revert ISSVBasedApps.InvalidMaxShares(); ProtocolStorageLib.load().maxShares = maxShares; emit StrategyMaxSharesUpdated(maxShares); } function updateMaxFeeIncrement(uint32 maxFeeIncrement) external { + if (maxFeeIncrement < 50) + // 0.5% increment + revert ISSVBasedApps.InvalidMaxFeeIncrement(); ProtocolStorageLib.load().maxFeeIncrement = maxFeeIncrement; emit StrategyMaxFeeIncrementUpdated(maxFeeIncrement); } diff --git a/test/Config.t.sol b/test/Config.t.sol new file mode 100644 index 00000000..f38ff639 --- /dev/null +++ b/test/Config.t.sol @@ -0,0 +1,345 @@ +// SPDX-License-Identifier: GPL-3.0 +pragma solidity 0.8.29; + +import { Test } from "forge-std/Test.sol"; + +import { ERC1967Proxy } from "@openzeppelin/contracts/proxy/ERC1967/ERC1967Proxy.sol"; + +import { BasedAppsManager } from "@ssv/src/core/modules/BasedAppsManager.sol"; +import { IBasedAppManager } from "@ssv/src/core/interfaces/IBasedAppManager.sol"; +import { IProtocolManager } from "@ssv/src/core/interfaces/IProtocolManager.sol"; +import { IStrategyManager } from "@ssv/src/core/interfaces/IStrategyManager.sol"; +import { SSVBasedApps } from "@ssv/src/core/SSVBasedApps.sol"; +import { ProtocolManager } from "@ssv/src/core/modules/ProtocolManager.sol"; +import { StrategyManager } from "@ssv/src/core/modules/StrategyManager.sol"; +import { ProtocolStorageLib } from "@ssv/src/core/libraries/ProtocolStorageLib.sol"; +import { ISSVBasedApps } from "@ssv/src/core/interfaces/ISSVBasedApps.sol"; + +contract Config is Test { + // Main Contract + SSVBasedApps public implementation; + // Modules + StrategyManager public strategyManagerMod; + BasedAppsManager public basedAppsManagerMod; + ProtocolManager public protocolManagerMod; + + // Proxies + ERC1967Proxy public proxy; // UUPS Proxy contract + SSVBasedApps public proxiedManager; // Proxy interface for interaction + + // EOAs + address public immutable OWNER = makeAddr("Owner"); + + // Constants + address public constant ETH_ADDRESS = + 0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE; + uint32 public constant MAX_FEE_INCREMENT = 500; // 5% + // Array containing all the BApps created + ProtocolStorageLib.Data public config; + + function setUp() public virtual { + vm.label(OWNER, "Owner"); + vm.startPrank(OWNER); + basedAppsManagerMod = new BasedAppsManager(); + strategyManagerMod = new StrategyManager(); + protocolManagerMod = new ProtocolManager(); + implementation = new SSVBasedApps(); + vm.stopPrank(); + } + + function testRevertInvalidMaxFeeIncrementWithZeroFee() public virtual { + config = ProtocolStorageLib.Data({ + maxFeeIncrement: 0, + feeTimelockPeriod: 0 days, + feeExpireTime: 1 days, + withdrawalTimelockPeriod: 14 days, + withdrawalExpireTime: 3 days, + obligationTimelockPeriod: 14 days, + obligationExpireTime: 3 days, + tokenUpdateTimelockPeriod: 14 days, + maxShares: 1e50, + disabledFeatures: 0 + }); + + bytes memory data = abi.encodeWithSelector( + implementation.initialize.selector, + address(OWNER), + IBasedAppManager(basedAppsManagerMod), + IStrategyManager(strategyManagerMod), + IProtocolManager(protocolManagerMod), + config + ); + vm.expectRevert( + abi.encodeWithSelector( + ISSVBasedApps.InvalidMaxFeeIncrement.selector + ) + ); + proxy = new ERC1967Proxy(address(implementation), data); + } + + function testRevertInvalidMaxFeeIncrementWithExcessiveFee() public virtual { + config = ProtocolStorageLib.Data({ + maxFeeIncrement: 10001, + feeTimelockPeriod: 0 days, + feeExpireTime: 1 days, + withdrawalTimelockPeriod: 14 days, + withdrawalExpireTime: 3 days, + obligationTimelockPeriod: 14 days, + obligationExpireTime: 3 days, + tokenUpdateTimelockPeriod: 14 days, + maxShares: 1e50, + disabledFeatures: 0 + }); + + bytes memory data = abi.encodeWithSelector( + implementation.initialize.selector, + address(OWNER), + IBasedAppManager(basedAppsManagerMod), + IStrategyManager(strategyManagerMod), + IProtocolManager(protocolManagerMod), + config + ); + vm.expectRevert( + abi.encodeWithSelector( + ISSVBasedApps.InvalidMaxFeeIncrement.selector + ) + ); + proxy = new ERC1967Proxy(address(implementation), data); + } + + function testRevertInvalidFeeTimelockPeriod() public virtual { + config = ProtocolStorageLib.Data({ + maxFeeIncrement: MAX_FEE_INCREMENT, + feeTimelockPeriod: 0 days, + feeExpireTime: 1 days, + withdrawalTimelockPeriod: 14 days, + withdrawalExpireTime: 3 days, + obligationTimelockPeriod: 14 days, + obligationExpireTime: 3 days, + tokenUpdateTimelockPeriod: 14 days, + maxShares: 1e50, + disabledFeatures: 0 + }); + + bytes memory data = abi.encodeWithSelector( + implementation.initialize.selector, + address(OWNER), + IBasedAppManager(basedAppsManagerMod), + IStrategyManager(strategyManagerMod), + IProtocolManager(protocolManagerMod), + config + ); + vm.expectRevert( + abi.encodeWithSelector( + ISSVBasedApps.InvalidFeeTimelockPeriod.selector + ) + ); + proxy = new ERC1967Proxy(address(implementation), data); + } + + function testRevertInvalidFeeExpireTime() public virtual { + config = ProtocolStorageLib.Data({ + maxFeeIncrement: MAX_FEE_INCREMENT, + feeTimelockPeriod: 1 days, + feeExpireTime: 0 minutes, + withdrawalTimelockPeriod: 14 days, + withdrawalExpireTime: 3 days, + obligationTimelockPeriod: 14 days, + obligationExpireTime: 3 days, + tokenUpdateTimelockPeriod: 14 days, + maxShares: 1e50, + disabledFeatures: 0 + }); + + bytes memory data = abi.encodeWithSelector( + implementation.initialize.selector, + address(OWNER), + IBasedAppManager(basedAppsManagerMod), + IStrategyManager(strategyManagerMod), + IProtocolManager(protocolManagerMod), + config + ); + vm.expectRevert( + abi.encodeWithSelector(ISSVBasedApps.InvalidFeeExpireTime.selector) + ); + proxy = new ERC1967Proxy(address(implementation), data); + } + + function testRevertInvalidWithdrawalTimelockPeriod() public virtual { + config = ProtocolStorageLib.Data({ + maxFeeIncrement: MAX_FEE_INCREMENT, + feeTimelockPeriod: 1 days, + feeExpireTime: 1 hours, + withdrawalTimelockPeriod: 0 days, + withdrawalExpireTime: 3 days, + obligationTimelockPeriod: 14 days, + obligationExpireTime: 3 days, + tokenUpdateTimelockPeriod: 14 days, + maxShares: 1e50, + disabledFeatures: 0 + }); + + bytes memory data = abi.encodeWithSelector( + implementation.initialize.selector, + address(OWNER), + IBasedAppManager(basedAppsManagerMod), + IStrategyManager(strategyManagerMod), + IProtocolManager(protocolManagerMod), + config + ); + vm.expectRevert( + abi.encodeWithSelector( + ISSVBasedApps.InvalidWithdrawalTimelockPeriod.selector + ) + ); + proxy = new ERC1967Proxy(address(implementation), data); + } + + function testRevertInvalidWithdrawalExpireTime() public virtual { + config = ProtocolStorageLib.Data({ + maxFeeIncrement: MAX_FEE_INCREMENT, + feeTimelockPeriod: 1 days, + feeExpireTime: 1 hours, + withdrawalTimelockPeriod: 1 days, + withdrawalExpireTime: 0 hours, + obligationTimelockPeriod: 14 days, + obligationExpireTime: 3 days, + tokenUpdateTimelockPeriod: 14 days, + maxShares: 1e50, + disabledFeatures: 0 + }); + + bytes memory data = abi.encodeWithSelector( + implementation.initialize.selector, + address(OWNER), + IBasedAppManager(basedAppsManagerMod), + IStrategyManager(strategyManagerMod), + IProtocolManager(protocolManagerMod), + config + ); + vm.expectRevert( + abi.encodeWithSelector( + ISSVBasedApps.InvalidWithdrawalExpireTime.selector + ) + ); + proxy = new ERC1967Proxy(address(implementation), data); + } + + function testRevertInvalidObligationTimelockPeriod() public virtual { + config = ProtocolStorageLib.Data({ + maxFeeIncrement: MAX_FEE_INCREMENT, + feeTimelockPeriod: 1 days, + feeExpireTime: 1 hours, + withdrawalTimelockPeriod: 1 days, + withdrawalExpireTime: 1 hours, + obligationTimelockPeriod: 0 hours, + obligationExpireTime: 3 days, + tokenUpdateTimelockPeriod: 14 days, + maxShares: 1e50, + disabledFeatures: 0 + }); + + bytes memory data = abi.encodeWithSelector( + implementation.initialize.selector, + address(OWNER), + IBasedAppManager(basedAppsManagerMod), + IStrategyManager(strategyManagerMod), + IProtocolManager(protocolManagerMod), + config + ); + vm.expectRevert( + abi.encodeWithSelector( + ISSVBasedApps.InvalidObligationTimelockPeriod.selector + ) + ); + proxy = new ERC1967Proxy(address(implementation), data); + } + + function testRevertInvalidObligationExpireTime() public virtual { + config = ProtocolStorageLib.Data({ + maxFeeIncrement: MAX_FEE_INCREMENT, + feeTimelockPeriod: 1 days, + feeExpireTime: 1 hours, + withdrawalTimelockPeriod: 1 days, + withdrawalExpireTime: 1 hours, + obligationTimelockPeriod: 1 days, + obligationExpireTime: 0 hours, + tokenUpdateTimelockPeriod: 14 days, + maxShares: 1e50, + disabledFeatures: 0 + }); + + bytes memory data = abi.encodeWithSelector( + implementation.initialize.selector, + address(OWNER), + IBasedAppManager(basedAppsManagerMod), + IStrategyManager(strategyManagerMod), + IProtocolManager(protocolManagerMod), + config + ); + vm.expectRevert( + abi.encodeWithSelector( + ISSVBasedApps.InvalidObligationExpireTime.selector + ) + ); + proxy = new ERC1967Proxy(address(implementation), data); + } + + function testRevertInvalidTokenUpdateTimelockPeriod() public virtual { + config = ProtocolStorageLib.Data({ + maxFeeIncrement: MAX_FEE_INCREMENT, + feeTimelockPeriod: 1 days, + feeExpireTime: 1 hours, + withdrawalTimelockPeriod: 1 days, + withdrawalExpireTime: 1 hours, + obligationTimelockPeriod: 1 days, + obligationExpireTime: 1 hours, + tokenUpdateTimelockPeriod: 0 days, + maxShares: 1e50, + disabledFeatures: 0 + }); + + bytes memory data = abi.encodeWithSelector( + implementation.initialize.selector, + address(OWNER), + IBasedAppManager(basedAppsManagerMod), + IStrategyManager(strategyManagerMod), + IProtocolManager(protocolManagerMod), + config + ); + vm.expectRevert( + abi.encodeWithSelector( + ISSVBasedApps.InvalidTokenUpdateTimelockPeriod.selector + ) + ); + proxy = new ERC1967Proxy(address(implementation), data); + } + + function testRevertInvalidMaxShares() public virtual { + config = ProtocolStorageLib.Data({ + maxFeeIncrement: MAX_FEE_INCREMENT, + feeTimelockPeriod: 1 days, + feeExpireTime: 1 hours, + withdrawalTimelockPeriod: 1 days, + withdrawalExpireTime: 1 hours, + obligationTimelockPeriod: 1 days, + obligationExpireTime: 1 hours, + tokenUpdateTimelockPeriod: 1 days, + maxShares: 1e37, + disabledFeatures: 0 + }); + + bytes memory data = abi.encodeWithSelector( + implementation.initialize.selector, + address(OWNER), + IBasedAppManager(basedAppsManagerMod), + IStrategyManager(strategyManagerMod), + IProtocolManager(protocolManagerMod), + config + ); + vm.expectRevert( + abi.encodeWithSelector(ISSVBasedApps.InvalidMaxShares.selector) + ); + proxy = new ERC1967Proxy(address(implementation), data); + } +} diff --git a/test/SSVBasedApps.t.sol b/test/SSVBasedApps.t.sol index 6033dfe0..60dc3859 100644 --- a/test/SSVBasedApps.t.sol +++ b/test/SSVBasedApps.t.sol @@ -3,10 +3,8 @@ pragma solidity 0.8.29; import { Ownable2StepUpgradeable } from "@openzeppelin/contracts-upgradeable/access/Ownable2StepUpgradeable.sol"; -import { Setup, IStrategyManager, IBasedAppManager, IProtocolManager, SSVBasedApps, ERC1967Proxy } from "@ssv/test/helpers/Setup.t.sol"; +import { Setup, IStrategyManager, IBasedAppManager, IProtocolManager, SSVBasedApps } from "@ssv/test/helpers/Setup.t.sol"; import { ISSVBasedApps } from "@ssv/src/core/interfaces/ISSVBasedApps.sol"; -import { ICore } from "@ssv/src/core/interfaces/ICore.sol"; -import { ProtocolStorageLib } from "@ssv/src/core/libraries/ProtocolStorageLib.sol"; import { SSVCoreModules } from "@ssv/src/core/libraries/CoreStorageLib.sol"; contract SSVBasedAppsTest is Setup, Ownable2StepUpgradeable { @@ -154,66 +152,6 @@ contract SSVBasedAppsTest is Setup, Ownable2StepUpgradeable { ); } - function testRevertInitializeWithZeroFee() public { - ProtocolStorageLib.Data memory configZeroFee = ProtocolStorageLib.Data({ - maxFeeIncrement: 0, - feeTimelockPeriod: 7 days, - feeExpireTime: 1 days, - withdrawalTimelockPeriod: 14 days, - withdrawalExpireTime: 3 days, - obligationTimelockPeriod: 14 days, - obligationExpireTime: 3 days, - tokenUpdateTimelockPeriod: 14 days, - maxShares: 1e50, - disabledFeatures: 0 - }); - vm.expectRevert( - abi.encodeWithSelector( - ISSVBasedApps.InvalidMaxFeeIncrement.selector - ) - ); - - bytes memory initData = abi.encodeWithSelector( - implementation.initialize.selector, - address(OWNER), - address(basedAppsManagerMod), - address(strategyManagerMod), - address(protocolManagerMod), - configZeroFee - ); - proxy = new ERC1967Proxy(address(implementation), initData); - } - - function testRevertInitializeWithExcessiveFee() public { - ProtocolStorageLib.Data memory configExcessiveFee = ProtocolStorageLib - .Data({ - feeTimelockPeriod: 7 days, - feeExpireTime: 1 days, - withdrawalTimelockPeriod: 14 days, - maxShares: 1e50, - withdrawalExpireTime: 3 days, - obligationTimelockPeriod: 14 days, - obligationExpireTime: 3 days, - tokenUpdateTimelockPeriod: 14 days, - maxFeeIncrement: 10_001, - disabledFeatures: 0 - }); - vm.expectRevert( - abi.encodeWithSelector( - ISSVBasedApps.InvalidMaxFeeIncrement.selector - ) - ); - bytes memory initData = abi.encodeWithSelector( - implementation.initialize.selector, - address(OWNER), - address(basedAppsManagerMod), - address(strategyManagerMod), - address(protocolManagerMod), - configExcessiveFee - ); - proxy = new ERC1967Proxy(address(implementation), initData); - } - function testUpdateStrategyModule() public { SSVCoreModules[] memory moduleIds = new SSVCoreModules[](1); address[] memory moduleAddresses = new address[](1); diff --git a/test/helpers/Setup.t.sol b/test/helpers/Setup.t.sol index d6824a41..481958de 100644 --- a/test/helpers/Setup.t.sol +++ b/test/helpers/Setup.t.sol @@ -62,10 +62,10 @@ contract Setup is Test { uint32 public constant STRATEGY3 = 3; uint32 public constant STRATEGY4 = 4; // Fees - uint32 public constant STRATEGY1_INITIAL_FEE = 5; - uint32 public constant STRATEGY2_INITIAL_FEE = 0; - uint32 public constant STRATEGY3_INITIAL_FEE = 1000; - uint32 public constant STRATEGY4_INITIAL_FEE = 900; + uint32 public constant STRATEGY1_INITIAL_FEE = 5; // %0.05 + uint32 public constant STRATEGY2_INITIAL_FEE = 0; // %0.00 + uint32 public constant STRATEGY3_INITIAL_FEE = 1000; // %10.00 + uint32 public constant STRATEGY4_INITIAL_FEE = 900; // %9.00 uint32 public constant STRATEGY1_UPDATE_FEE = 10; // Initial Balances uint256 public constant INITIAL_USER1_BALANCE_ERC20 = 1000 * 10 ** 18; @@ -82,7 +82,7 @@ contract Setup is Test { // Constants address public constant ETH_ADDRESS = 0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE; - uint32 public constant MAX_FEE_INCREMENT = 500; + uint32 public constant MAX_FEE_INCREMENT = 500; // 5% // Array containing all the BApps created IBasedApp[] public bApps; ProtocolStorageLib.Data public config; diff --git a/test/modules/ProtocolManager.t.sol b/test/modules/ProtocolManager.t.sol index c9457716..fa6d1a08 100644 --- a/test/modules/ProtocolManager.t.sol +++ b/test/modules/ProtocolManager.t.sol @@ -10,6 +10,7 @@ import { IBasedAppManager } from "@ssv/src/core/interfaces/IBasedAppManager.sol" import { IStrategyManager } from "@ssv/src/core/interfaces/IStrategyManager.sol"; import { ERC1967Proxy } from "@openzeppelin/contracts/proxy/ERC1967/ERC1967Proxy.sol"; import { SSVBasedApps } from "@ssv/src/core/SSVBasedApps.sol"; +import { ISSVBasedApps } from "@ssv/src/core/interfaces/ISSVBasedApps.sol"; contract ProtocolManagerTest is Setup, Ownable2StepUpgradeable { function testUpdateFeeTimelockPeriod() public { @@ -100,7 +101,7 @@ contract ProtocolManagerTest is Setup, Ownable2StepUpgradeable { function testUpdateMaxShares() public { vm.prank(OWNER); - uint256 newValue = 1e18; + uint256 newValue = 1e38; proxiedManager.updateMaxShares(newValue); assertEq( proxiedManager.maxShares(), @@ -182,7 +183,7 @@ contract ProtocolManagerTest is Setup, Ownable2StepUpgradeable { address(ATTACKER) ) ); - proxiedManager.updateObligationExpireTime(1 days); + proxiedManager.updateObligationExpireTime(59 minutes); } function testRevertUpdateTokenUpdateTimelockPeriodWithNonOwner() public { @@ -220,7 +221,7 @@ contract ProtocolManagerTest is Setup, Ownable2StepUpgradeable { } /// @notice By default, no features should be disabled - function testDefaultDisabledFeaturesIsZero() public { + function testDefaultDisabledFeaturesIsZero() public view { assertEq( proxiedManager.disabledFeatures(), 0, @@ -334,4 +335,91 @@ contract ProtocolManagerTest is Setup, Ownable2StepUpgradeable { "feeTimelockPeriod should update despite flags" ); } + + function testRevertUpdateFeeTimelockPeriod() public { + vm.prank(OWNER); + vm.expectRevert( + abi.encodeWithSelector( + ISSVBasedApps.InvalidFeeTimelockPeriod.selector + ) + ); + proxiedManager.updateFeeTimelockPeriod(23 hours); + } + + function testRevertUpdateFeeExpireTime() public { + vm.prank(OWNER); + vm.expectRevert( + abi.encodeWithSelector(ISSVBasedApps.InvalidFeeExpireTime.selector) + ); + proxiedManager.updateFeeExpireTime(59 minutes); + } + + function testRevertUpdateWithdrawalTimelockPeriod() public { + vm.prank(OWNER); + vm.expectRevert( + abi.encodeWithSelector( + ISSVBasedApps.InvalidWithdrawalTimelockPeriod.selector + ) + ); + proxiedManager.updateWithdrawalTimelockPeriod(23 hours); + } + + function testRevertUpdateWithdrawalExpireTime() public { + vm.prank(OWNER); + vm.expectRevert( + abi.encodeWithSelector( + ISSVBasedApps.InvalidWithdrawalExpireTime.selector + ) + ); + proxiedManager.updateWithdrawalExpireTime(59 minutes); + } + + function testRevertUpdateObligationTimelockPeriod() public { + vm.prank(OWNER); + vm.expectRevert( + abi.encodeWithSelector( + ISSVBasedApps.InvalidObligationTimelockPeriod.selector + ) + ); + proxiedManager.updateObligationTimelockPeriod(23 hours); + } + + function testRevertUpdateObligationExpireTime() public { + vm.prank(OWNER); + vm.expectRevert( + abi.encodeWithSelector( + ISSVBasedApps.InvalidObligationExpireTime.selector + ) + ); + proxiedManager.updateObligationExpireTime(59 minutes); + } + + function testRevertUpdateTokenUpdateTimelockPeriod() public { + vm.prank(OWNER); + vm.expectRevert( + abi.encodeWithSelector( + ISSVBasedApps.InvalidTokenUpdateTimelockPeriod.selector + ) + ); + proxiedManager.updateTokenUpdateTimelockPeriod(23 hours); + } + + function testRevertUpdateMaxShares() public { + vm.prank(OWNER); + uint256 newValue = 1e37; + vm.expectRevert( + abi.encodeWithSelector(ISSVBasedApps.InvalidMaxShares.selector) + ); + proxiedManager.updateMaxShares(newValue); + } + + function testRevertUpdateMaxFeeIncrement() public { + vm.prank(OWNER); + vm.expectRevert( + abi.encodeWithSelector( + ISSVBasedApps.InvalidMaxFeeIncrement.selector + ) + ); + proxiedManager.updateMaxFeeIncrement(49); + } } diff --git a/test/modules/StrategyManager.t.sol b/test/modules/StrategyManager.t.sol index 49f2f668..d2acd7a0 100644 --- a/test/modules/StrategyManager.t.sol +++ b/test/modules/StrategyManager.t.sol @@ -1345,7 +1345,7 @@ contract StrategyManagerTest is UtilsTest, BasedAppsManagerTest { returns (uint32 proposedFee) { testStrategyOptInToBApp(9000); - proposedFee = 20; + proposedFee = 505; vm.prank(USER1); vm.expectEmit(true, true, true, true); emit IStrategyManager.StrategyFeeUpdateProposed( From 1c86fe4237ffb496b9194de307c8e8c5512868af Mon Sep 17 00:00:00 2001 From: Riccardo Persiani Date: Wed, 28 May 2025 14:39:46 +0200 Subject: [PATCH 13/24] Enrich SSVBasedApps interface (#51) --- src/core/SSVBasedApps.sol | 5 +- src/core/interfaces/ISSVBasedApps.sol | 9 ++- src/core/interfaces/IViews.sol | 91 +++++++++++++++++++++++++++ 3 files changed, 99 insertions(+), 6 deletions(-) create mode 100644 src/core/interfaces/IViews.sol diff --git a/src/core/SSVBasedApps.sol b/src/core/SSVBasedApps.sol index 450d6c57..3a38d4bc 100644 --- a/src/core/SSVBasedApps.sol +++ b/src/core/SSVBasedApps.sol @@ -59,10 +59,7 @@ import { ProtocolStorageLib } from "@ssv/src/core/libraries/ProtocolStorageLib.s contract SSVBasedApps is ISSVBasedApps, UUPSUpgradeable, - Ownable2StepUpgradeable, - IBasedAppManager, - IStrategyManager, - IProtocolManager + Ownable2StepUpgradeable { // *************************** // ** Section: Initializers ** diff --git a/src/core/interfaces/ISSVBasedApps.sol b/src/core/interfaces/ISSVBasedApps.sol index 20abc57a..2b3adce3 100644 --- a/src/core/interfaces/ISSVBasedApps.sol +++ b/src/core/interfaces/ISSVBasedApps.sol @@ -4,16 +4,21 @@ pragma solidity 0.8.29; import { IStrategyManager } from "@ssv/src/core/interfaces/IStrategyManager.sol"; import { IBasedAppManager } from "@ssv/src/core/interfaces/IBasedAppManager.sol"; import { IProtocolManager } from "@ssv/src/core/interfaces/IProtocolManager.sol"; +import { IViews } from "@ssv/src/core/interfaces/IViews.sol"; import { SSVCoreModules } from "@ssv/src/core/libraries/CoreStorageLib.sol"; import { ProtocolStorageLib } from "@ssv/src/core/libraries/ProtocolStorageLib.sol"; -interface ISSVBasedApps { +interface ISSVBasedApps is + IStrategyManager, + IBasedAppManager, + IProtocolManager, + IViews +{ event ModuleUpdated(SSVCoreModules indexed moduleId, address moduleAddress); function getModuleAddress( SSVCoreModules moduleId ) external view returns (address); - function getVersion() external pure returns (string memory version); function initialize( address owner_, IBasedAppManager ssvBasedAppManger_, diff --git a/src/core/interfaces/IViews.sol b/src/core/interfaces/IViews.sol new file mode 100644 index 00000000..b1d30776 --- /dev/null +++ b/src/core/interfaces/IViews.sol @@ -0,0 +1,91 @@ +// SPDX-License-Identifier: GPL-3.0 +pragma solidity 0.8.29; + +interface IViews { + function delegations( + address account, + address receiver + ) external view returns (uint32); + function totalDelegatedPercentage( + address delegator + ) external view returns (uint32); + function registeredBApps( + address bApp + ) external view returns (bool isRegistered); + function strategies( + uint32 strategyId + ) external view returns (address strategyOwner, uint32 fee); + function ownedStrategies( + address owner + ) external view returns (uint32[] memory strategyIds); + function strategyAccountShares( + uint32 strategyId, + address account, + address token + ) external view returns (uint256); + function strategyTotalBalance( + uint32 strategyId, + address token + ) external view returns (uint256); + function strategyTotalShares( + uint32 strategyId, + address token + ) external view returns (uint256); + function strategyGeneration( + uint32 strategyId, + address token + ) external view returns (uint256); + function obligations( + uint32 strategyId, + address bApp, + address token + ) external view returns (uint32 percentage, bool isSet); + function bAppTokens( + address bApp, + address token + ) + external + view + returns ( + uint32 currentValue, + bool isSet, + uint32 pendingValue, + uint32 effectTime + ); + function accountBAppStrategy( + address account, + address bApp + ) external view returns (uint32); + function feeUpdateRequests( + uint32 strategyId + ) external view returns (uint32 percentage, uint32 requestTime); + function withdrawalRequests( + uint32 strategyId, + address account, + address token + ) external view returns (uint256 shares, uint32 requestTime); + function obligationRequests( + uint32 strategyId, + address token, + address bApp + ) external view returns (uint32 percentage, uint32 requestTime); + function slashingFund( + address account, + address token + ) external view returns (uint256); + + // External Protocol Views + function maxPercentage() external pure returns (uint32); + function ethAddress() external pure returns (address); + function maxShares() external view returns (uint256); + function maxFeeIncrement() external view returns (uint32); + function feeTimelockPeriod() external view returns (uint32); + function feeExpireTime() external view returns (uint32); + function withdrawalTimelockPeriod() external view returns (uint32); + function withdrawalExpireTime() external view returns (uint32); + function obligationTimelockPeriod() external view returns (uint32); + function obligationExpireTime() external view returns (uint32); + function disabledFeatures() external view returns (uint32); + function tokenUpdateTimelockPeriod() external view returns (uint32); + function getVersion() external pure returns (string memory); +} From 58dae6b906e1fbd6273bf43dbd341a0e65d8a8fc Mon Sep 17 00:00:00 2001 From: Riccardo Persiani Date: Wed, 28 May 2025 14:43:16 +0200 Subject: [PATCH 14/24] Remove IERC165 Interface Check (#52) * feat: remove interface support in favour of contract check --- src/core/modules/StrategyManager.sol | 16 +++++----- src/middleware/interfaces/IBasedApp.sol | 4 +-- .../core+roles/AccessControlBasedApp.sol | 17 ----------- .../modules/core+roles/OwnableBasedApp.sol | 12 -------- src/middleware/modules/core/BasedAppCore.sol | 13 --------- test/modules/BasedAppsManager.t.sol | 27 ----------------- test/modules/SlashingManager.eoa.t.sol | 29 ++----------------- 7 files changed, 11 insertions(+), 107 deletions(-) diff --git a/src/core/modules/StrategyManager.sol b/src/core/modules/StrategyManager.sol index 765704f6..6bd7cef3 100644 --- a/src/core/modules/StrategyManager.sol +++ b/src/core/modules/StrategyManager.sol @@ -4,7 +4,6 @@ pragma solidity 0.8.29; import { IERC20 } from "@openzeppelin/contracts/token/ERC20/IERC20.sol"; import { ReentrancyGuardTransient } from "@openzeppelin/contracts/utils/ReentrancyGuardTransient.sol"; import { SafeERC20 } from "@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol"; -import { ERC165Checker } from "@openzeppelin/contracts/utils/introspection/ERC165Checker.sol"; import { ValidationLib, MAX_PERCENTAGE, ETH_ADDRESS } from "@ssv/src/core/libraries/ValidationLib.sol"; import { ICore } from "@ssv/src/core/interfaces/ICore.sol"; @@ -198,7 +197,7 @@ contract StrategyManager is ReentrancyGuardTransient, IStrategyManager { s.accountBAppStrategy[msg.sender][bApp] = strategyId; - if (_isBApp(bApp)) { + if (_isContract(bApp)) { bool success = IBasedApp(bApp).optInToBApp( strategyId, tokens, @@ -217,12 +216,11 @@ contract StrategyManager is ReentrancyGuardTransient, IStrategyManager { ); } - /// @notice Function to check if an address uses the correct bApp interface + /// @notice Function to check if an address is a contract /// @param bApp The address of the bApp - /// @return True if the address uses the correct bApp interface - function _isBApp(address bApp) private view returns (bool) { - return - ERC165Checker.supportsInterface(bApp, type(IBasedApp).interfaceId); + /// @return True if the address is a contract + function _isContract(address bApp) private view returns (bool) { + return bApp.code.length > 0; } /// @notice Deposit ERC20 tokens into the strategy @@ -788,7 +786,7 @@ contract StrategyManager is ReentrancyGuardTransient, IStrategyManager { bool exit; bool success; uint32 obligationPercentage; - if (_isBApp(bApp)) { + if (_isContract(bApp)) { (success, receiver, exit) = IBasedApp(bApp).slash( strategyId, token, @@ -811,7 +809,7 @@ contract StrategyManager is ReentrancyGuardTransient, IStrategyManager { strategyTokenShares ); } else { - // Only the bApp EOA or non-compliant bapp owner can slash + // Only the bApp EOA can slash if (msg.sender != bApp) revert InvalidBAppOwner(msg.sender, bApp); receiver = bApp; _exitStrategy(s, strategyId, bApp, token); diff --git a/src/middleware/interfaces/IBasedApp.sol b/src/middleware/interfaces/IBasedApp.sol index 787e89b5..d04adfdb 100644 --- a/src/middleware/interfaces/IBasedApp.sol +++ b/src/middleware/interfaces/IBasedApp.sol @@ -1,10 +1,9 @@ // SPDX-License-Identifier: GPL-3.0 pragma solidity 0.8.29; -import { IERC165 } from "@openzeppelin/contracts/utils/introspection/IERC165.sol"; import { ICore } from "@ssv/src/core/interfaces/ICore.sol"; -interface IBasedApp is IERC165 { +interface IBasedApp { function optInToBApp( uint32 strategyId, address[] calldata tokens, @@ -23,7 +22,6 @@ interface IBasedApp is IERC165 { address sender, bytes calldata data ) external returns (bool success, address receiver, bool exit); - function supportsInterface(bytes4 interfaceId) external view returns (bool); function updateBAppMetadataURI(string calldata metadataURI) external; function updateBAppTokens( ICore.TokenConfig[] calldata tokenConfigs diff --git a/src/middleware/modules/core+roles/AccessControlBasedApp.sol b/src/middleware/modules/core+roles/AccessControlBasedApp.sol index 04b4a1ac..20a330be 100644 --- a/src/middleware/modules/core+roles/AccessControlBasedApp.sol +++ b/src/middleware/modules/core+roles/AccessControlBasedApp.sol @@ -2,7 +2,6 @@ pragma solidity 0.8.29; import { AccessControl } from "@openzeppelin/contracts/access/AccessControl.sol"; -import { IERC165 } from "@openzeppelin/contracts/utils/introspection/IERC165.sol"; import { IBasedApp } from "@ssv/src/middleware/interfaces/IBasedApp.sol"; import { BasedAppCore } from "@ssv/src/middleware/modules/core/BasedAppCore.sol"; @@ -66,20 +65,4 @@ abstract contract AccessControlBasedApp is BasedAppCore, AccessControl { metadataURI ); } - - /// @notice Checks if the contract supports the interface - /// @param interfaceId interface id - /// @return isSupported if the contract supports the interface - function supportsInterface( - bytes4 interfaceId - ) - public - pure - override(AccessControl, BasedAppCore) - returns (bool isSupported) - { - return - interfaceId == type(IBasedApp).interfaceId || - interfaceId == type(IERC165).interfaceId; - } } diff --git a/src/middleware/modules/core+roles/OwnableBasedApp.sol b/src/middleware/modules/core+roles/OwnableBasedApp.sol index eec60448..02d72d07 100644 --- a/src/middleware/modules/core+roles/OwnableBasedApp.sol +++ b/src/middleware/modules/core+roles/OwnableBasedApp.sol @@ -2,7 +2,6 @@ pragma solidity 0.8.29; import { Ownable } from "@openzeppelin/contracts/access/Ownable.sol"; -import { IERC165 } from "@openzeppelin/contracts/utils/introspection/IERC165.sol"; import { IBasedApp } from "@ssv/src/middleware/interfaces/IBasedApp.sol"; import { BasedAppCore } from "@ssv/src/middleware/modules/core/BasedAppCore.sol"; @@ -48,15 +47,4 @@ abstract contract OwnableBasedApp is Ownable, BasedAppCore { metadataURI ); } - - /// @notice Checks if the contract supports the interface - /// @param interfaceId interface id - /// @return isSupported if the contract supports the interface - function supportsInterface( - bytes4 interfaceId - ) public pure override(BasedAppCore) returns (bool isSupported) { - return - interfaceId == type(IBasedApp).interfaceId || - interfaceId == type(IERC165).interfaceId; - } } diff --git a/src/middleware/modules/core/BasedAppCore.sol b/src/middleware/modules/core/BasedAppCore.sol index abcab974..aa32bf19 100644 --- a/src/middleware/modules/core/BasedAppCore.sol +++ b/src/middleware/modules/core/BasedAppCore.sol @@ -1,8 +1,6 @@ // SPDX-License-Identifier: GPL-3.0 pragma solidity 0.8.29; -import { IERC165 } from "@openzeppelin/contracts/utils/introspection/IERC165.sol"; - import { IBasedApp } from "@ssv/src/middleware/interfaces/IBasedApp.sol"; import { IBasedAppManager } from "@ssv/src/core/interfaces/IBasedAppManager.sol"; @@ -135,17 +133,6 @@ abstract contract BasedAppCore is IBasedApp { return (true, address(this), true); } - /// @notice Checks if the contract supports the interface - /// @param interfaceId interface id - /// @return true if the contract supports the interface - function supportsInterface( - bytes4 interfaceId - ) public pure virtual returns (bool) { - return - interfaceId == type(IBasedApp).interfaceId || - interfaceId == type(IERC165).interfaceId; - } - // Receive function to accept plain Ether transfers receive() external payable virtual {} } diff --git a/test/modules/BasedAppsManager.t.sol b/test/modules/BasedAppsManager.t.sol index 741b1b55..da79d85c 100644 --- a/test/modules/BasedAppsManager.t.sol +++ b/test/modules/BasedAppsManager.t.sol @@ -3,8 +3,6 @@ pragma solidity 0.8.29; import { Ownable } from "@openzeppelin/contracts/access/Ownable.sol"; import { IAccessControl } from "@openzeppelin/contracts/access/IAccessControl.sol"; -import { IERC20 } from "@openzeppelin/contracts/token/ERC20/IERC20.sol"; -import { IERC165 } from "@openzeppelin/contracts/utils/introspection/IERC165.sol"; import { UtilsTest } from "@ssv/test/helpers/Utils.t.sol"; import { IBasedAppManager, IBasedApp } from "@ssv/test/helpers/Setup.t.sol"; @@ -434,31 +432,6 @@ contract BasedAppsManagerTest is UtilsTest { } } - function testSupportInterface() public { - vm.startPrank(USER1); - for (uint256 i = 0; i < bApps.length; i++) { - bool success = bApps[i].supportsInterface( - type(IBasedApp).interfaceId - ); - assertEq(success, true, "supportsInterface based app"); - bool failed = bApps[i].supportsInterface( - type(IBasedAppManager).interfaceId - ); - assertEq( - failed, - false, - "does not supportsInterface based app manager" - ); - bool failed2 = bApps[i].supportsInterface(type(IERC20).interfaceId); - assertEq(failed2, false, "does not supportsInterface"); - bool success2 = bApps[i].supportsInterface( - type(IERC165).interfaceId - ); - assertEq(success2, true, "does supportsInterface of IERC165"); - } - vm.stopPrank(); - } - function testUpdateBAppTokens() public { testRegisterBApp(); ( diff --git a/test/modules/SlashingManager.eoa.t.sol b/test/modules/SlashingManager.eoa.t.sol index cae26ae4..40fe647c 100644 --- a/test/modules/SlashingManager.eoa.t.sol +++ b/test/modules/SlashingManager.eoa.t.sol @@ -246,7 +246,7 @@ contract SlashingManagerEOATest is StrategyManagerTest { proxiedManager.withdrawETHSlashingFund(slashAmount); } - // Slash Non Compatible BApp + // Slash Non Compatible BApp, does not implement the slash function inside the contract function testSlashNonCompatibleBApp(uint32 slashPercentage) public { uint32 percentage = 9000; uint256 depositAmount = 100_000; @@ -266,25 +266,8 @@ contract SlashingManagerEOATest is StrategyManagerTest { depositAmount ); vm.prank(USER1); - vm.expectEmit(true, true, true, true); - emit IStrategyManager.StrategySlashed( - STRATEGY1, - address(nonCompliantBApp), - token, - slashPercentage, - address(nonCompliantBApp) - ); + vm.expectRevert(); nonCompliantBApp.slash(STRATEGY1, token, slashPercentage); - uint256 newStrategyBalance = depositAmount - slashAmount; - checkTotalSharesAndTotalBalance( - STRATEGY1, - token, - depositAmount, - newStrategyBalance - ); - checkAccountShares(STRATEGY1, USER2, token, depositAmount); - checkSlashableBalance(STRATEGY1, address(nonCompliantBApp), token, 0); - checkSlashingFund(address(nonCompliantBApp), token, slashAmount); } function testRevertSlashNonCompatibleBAppWithNonOwner() public { @@ -300,13 +283,7 @@ contract SlashingManagerEOATest is StrategyManagerTest { IERC20(erc20mock), depositAmount ); - vm.expectRevert( - abi.encodeWithSelector( - IStrategyManager.InvalidBAppOwner.selector, - USER2, - address(nonCompliantBApp) - ) - ); + vm.expectRevert(); proxiedManager.slash( STRATEGY1, address(nonCompliantBApp), From 5c94bdabec97d373d401a86f61c0a5fa69c8de4c Mon Sep 17 00:00:00 2001 From: Riccardo Persiani Date: Wed, 28 May 2025 14:45:16 +0200 Subject: [PATCH 15/24] feat: check bApp registered during OptIn (#53) --- src/core/modules/StrategyManager.sol | 4 ++++ test/modules/StrategyManager.t.sol | 30 +++++++++++++++++++++++++++- 2 files changed, 33 insertions(+), 1 deletion(-) diff --git a/src/core/modules/StrategyManager.sol b/src/core/modules/StrategyManager.sol index 6bd7cef3..c172fc45 100644 --- a/src/core/modules/StrategyManager.sol +++ b/src/core/modules/StrategyManager.sol @@ -182,6 +182,10 @@ contract StrategyManager is ReentrancyGuardTransient, IStrategyManager { ValidationLib.validateArrayLengths(tokens, obligationPercentages); + if (!s.registeredBApps[bApp]) { + revert IBasedAppManager.BAppNotRegistered(); + } + // Check if a strategy exists for the given bApp. // It is not possible opt-in to the same bApp twice with the same strategy owner. if (s.accountBAppStrategy[msg.sender][bApp] != 0) { diff --git a/test/modules/StrategyManager.t.sol b/test/modules/StrategyManager.t.sol index d2acd7a0..3812d753 100644 --- a/test/modules/StrategyManager.t.sol +++ b/test/modules/StrategyManager.t.sol @@ -4,7 +4,7 @@ pragma solidity 0.8.29; import { IERC20, BasedAppMock } from "@ssv/test/helpers/Setup.t.sol"; import { BasedAppsManagerTest } from "@ssv/test/modules/BasedAppsManager.t.sol"; import { IStrategyManager } from "@ssv/src/core/interfaces/IStrategyManager.sol"; -import { IStrategyManager } from "@ssv/src/core/interfaces/IStrategyManager.sol"; +import { IBasedAppManager } from "@ssv/src/core/interfaces/IBasedAppManager.sol"; import { UtilsTest } from "@ssv/test/helpers/Utils.t.sol"; import { ValidationLib } from "@ssv/src/core/libraries/ValidationLib.sol"; @@ -1041,6 +1041,34 @@ contract StrategyManagerTest is UtilsTest, BasedAppsManagerTest { vm.stopPrank(); } + function testRevertStrategyOptingInToNonExistingBApp( + uint32 percentage + ) public { + vm.assume( + percentage > 0 && percentage <= proxiedManager.maxPercentage() + ); + testCreateStrategies(); + vm.startPrank(USER1); + address[] memory tokensInput = new address[](0); + uint32[] memory obligationPercentagesInput = new uint32[](0); + for (uint256 i = 0; i < bApps.length; i++) { + vm.expectRevert( + abi.encodeWithSelector( + IBasedAppManager.BAppNotRegistered.selector, + address(erc20mock2) + ) + ); + proxiedManager.optInToBApp( + STRATEGY1, + address(bApps[i]), + tokensInput, + obligationPercentagesInput, + abi.encodePacked("0x00") + ); + } + vm.stopPrank(); + } + function testStrategyOwnerDepositERC20WithNoObligation( uint256 amount ) public { From 8555ef470651412170ac205ad7e74b752b23da39 Mon Sep 17 00:00:00 2001 From: Riccardo Persiani Date: Wed, 28 May 2025 15:33:29 +0200 Subject: [PATCH 16/24] Use `ICore.TokenConfig` for `registerBApp()` (#50) --- src/core/SSVBasedApps.sol | 25 +- src/core/interfaces/IBasedAppManager.sol | 6 +- src/core/interfaces/ISSVBasedApps.sol | 1 + src/core/libraries/ValidationLib.sol | 3 + src/core/modules/BasedAppsManager.sol | 23 +- src/core/modules/ProtocolManager.sol | 4 +- src/middleware/interfaces/IBasedApp.sol | 3 +- .../core+roles/AccessControlBasedApp.sol | 10 +- .../modules/core+roles/OwnableBasedApp.sol | 10 +- src/middleware/modules/core/BasedAppCore.sol | 11 +- test/Config.t.sol | 35 +- test/helpers/Utils.t.sol | 24 +- .../examples/WhitelistExample.t.sol | 14 +- test/mocks/MockNonCompliantBApp.sol | 11 +- test/modules/BasedAppsManager.t.sol | 342 ++++++------------ test/modules/StrategyManager.t.sol | 4 +- 16 files changed, 221 insertions(+), 305 deletions(-) diff --git a/src/core/SSVBasedApps.sol b/src/core/SSVBasedApps.sol index 3a38d4bc..288f3959 100644 --- a/src/core/SSVBasedApps.sol +++ b/src/core/SSVBasedApps.sol @@ -5,7 +5,7 @@ import { IERC20 } from "@openzeppelin/contracts/token/ERC20/IERC20.sol"; import { Ownable2StepUpgradeable } from "@openzeppelin/contracts-upgradeable/access/Ownable2StepUpgradeable.sol"; import { UUPSUpgradeable } from "@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol"; -import { MAX_PERCENTAGE, ETH_ADDRESS } from "@ssv/src/core/libraries/ValidationLib.sol"; +import { MIN_EXPIRE_TIME, MIN_TIME_LOCK_PERIOD, MAX_PERCENTAGE, ETH_ADDRESS } from "@ssv/src/core/libraries/ValidationLib.sol"; import { IBasedAppManager } from "@ssv/src/core/interfaces/IBasedAppManager.sol"; import { ICore } from "@ssv/src/core/interfaces/ICore.sol"; import { ISSVBasedApps } from "@ssv/src/core/interfaces/ISSVBasedApps.sol"; @@ -107,38 +107,42 @@ contract SSVBasedApps is revert InvalidMaxFeeIncrement(); } - if (config.maxShares == 0 || config.maxShares < 1e38) { + if (config.maxShares == 0 || config.maxShares < 1e50) { revert InvalidMaxShares(); } - if (config.feeTimelockPeriod == 0) { + if (config.feeTimelockPeriod < MIN_TIME_LOCK_PERIOD) { revert InvalidFeeTimelockPeriod(); } - if (config.feeExpireTime == 0) { + if (config.feeExpireTime < MIN_EXPIRE_TIME) { revert InvalidFeeExpireTime(); } - if (config.withdrawalTimelockPeriod == 0) { + if (config.withdrawalTimelockPeriod < MIN_TIME_LOCK_PERIOD) { revert InvalidWithdrawalTimelockPeriod(); } - if (config.withdrawalExpireTime == 0) { + if (config.withdrawalExpireTime < MIN_EXPIRE_TIME) { revert InvalidWithdrawalExpireTime(); } - if (config.obligationTimelockPeriod == 0) { + if (config.obligationTimelockPeriod < MIN_TIME_LOCK_PERIOD) { revert InvalidObligationTimelockPeriod(); } - if (config.obligationExpireTime == 0) { + if (config.obligationExpireTime < MIN_EXPIRE_TIME) { revert InvalidObligationExpireTime(); } - if (config.tokenUpdateTimelockPeriod == 0) { + if (config.tokenUpdateTimelockPeriod < MIN_EXPIRE_TIME) { revert InvalidTokenUpdateTimelockPeriod(); } + if (config.disabledFeatures > 3) { + revert InvalidDisabledFeatures(); + } + sp.maxFeeIncrement = config.maxFeeIncrement; sp.feeTimelockPeriod = config.feeTimelockPeriod; sp.feeExpireTime = config.feeExpireTime; @@ -174,8 +178,7 @@ contract SSVBasedApps is } function registerBApp( - address[] calldata tokens, - uint32[] calldata sharedRiskLevels, + ICore.TokenConfig[] calldata tokenConfigs, string calldata metadataURI ) external { _delegateTo(SSVCoreModules.SSV_BAPPS_MANAGER); diff --git a/src/core/interfaces/IBasedAppManager.sol b/src/core/interfaces/IBasedAppManager.sol index 57e94954..55441b7d 100644 --- a/src/core/interfaces/IBasedAppManager.sol +++ b/src/core/interfaces/IBasedAppManager.sol @@ -7,8 +7,7 @@ interface IBasedAppManager { event BAppMetadataURIUpdated(address indexed bApp, string metadataURI); event BAppRegistered( address indexed bApp, - address[] tokens, - uint32[] sharedRiskLevel, + ICore.TokenConfig[] tokenConfigs, string metadataURI ); event BAppTokensUpdated( @@ -17,8 +16,7 @@ interface IBasedAppManager { ); function registerBApp( - address[] calldata tokens, - uint32[] calldata sharedRiskLevels, + ICore.TokenConfig[] calldata tokenConfigs, string calldata metadataURI ) external; function updateBAppMetadataURI(string calldata metadataURI) external; diff --git a/src/core/interfaces/ISSVBasedApps.sol b/src/core/interfaces/ISSVBasedApps.sol index 2b3adce3..9451794c 100644 --- a/src/core/interfaces/ISSVBasedApps.sol +++ b/src/core/interfaces/ISSVBasedApps.sol @@ -40,5 +40,6 @@ interface ISSVBasedApps is error InvalidObligationTimelockPeriod(); error InvalidObligationExpireTime(); error InvalidTokenUpdateTimelockPeriod(); + error InvalidDisabledFeatures(); error TargetModuleDoesNotExist(uint8 moduleId); } diff --git a/src/core/libraries/ValidationLib.sol b/src/core/libraries/ValidationLib.sol index 7dd4ebec..3dd1ece0 100644 --- a/src/core/libraries/ValidationLib.sol +++ b/src/core/libraries/ValidationLib.sol @@ -1,6 +1,9 @@ // SPDX-License-Identifier: GPL-3.0-or-later pragma solidity 0.8.29; +uint32 constant MIN_TIME_LOCK_PERIOD = 1 days; +uint32 constant MIN_EXPIRE_TIME = 1 hours; + uint32 constant MAX_PERCENTAGE = 1e4; // 100% in basis points address constant ETH_ADDRESS = 0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE; diff --git a/src/core/modules/BasedAppsManager.sol b/src/core/modules/BasedAppsManager.sol index 024ced56..5f5d0c02 100644 --- a/src/core/modules/BasedAppsManager.sol +++ b/src/core/modules/BasedAppsManager.sol @@ -16,14 +16,12 @@ contract BasedAppsManager is IBasedAppManager { } /// @notice Registers a bApp. - /// @param tokens The list of tokens the bApp accepts; can be empty. - /// @param sharedRiskLevels The shared risk level of the bApp. + /// @param tokenConfigs The list of tokens configs the bApp accepts; can be empty. /// @param metadataURI The metadata URI of the bApp, which is a link (e.g., http://example.com) /// to a JSON file containing metadata such as the name, description, logo, etc. /// @dev Allows creating a bApp even with an empty token list. function registerBApp( - address[] calldata tokens, - uint32[] calldata sharedRiskLevels, + ICore.TokenConfig[] calldata tokenConfigs, string calldata metadataURI ) external { CoreStorageLib.Data storage s = CoreStorageLib.load(); @@ -34,9 +32,9 @@ contract BasedAppsManager is IBasedAppManager { s.registeredBApps[msg.sender] = true; - _addNewTokens(msg.sender, tokens, sharedRiskLevels); + _addNewTokens(msg.sender, tokenConfigs); - emit BAppRegistered(msg.sender, tokens, sharedRiskLevels, metadataURI); + emit BAppRegistered(msg.sender, tokenConfigs, metadataURI); } /// @notice Function to update the metadata URI of the Based Application @@ -79,25 +77,22 @@ contract BasedAppsManager is IBasedAppManager { /// @notice Function to add tokens to a bApp /// @param bApp The address of the bApp - /// @param tokens The list of tokens to add - /// @param sharedRiskLevels The shared risk levels of the tokens + /// @param tokenConfigs The list of tokens to add function _addNewTokens( address bApp, - address[] calldata tokens, - uint32[] calldata sharedRiskLevels + ICore.TokenConfig[] calldata tokenConfigs ) internal { - ValidationLib.validateArrayLengths(tokens, sharedRiskLevels); - uint256 length = tokens.length; + uint256 length = tokenConfigs.length; address token; CoreStorageLib.Data storage s = CoreStorageLib.load(); for (uint256 i = 0; i < length; ) { - token = tokens[i]; + token = tokenConfigs[i].token; ValidationLib.validateNonZeroAddress(token); if (s.bAppTokens[bApp][token].isSet) { revert IBasedAppManager.TokenAlreadyAddedToBApp(token); } ICore.SharedRiskLevel storage tokenData = s.bAppTokens[bApp][token]; - tokenData.currentValue = sharedRiskLevels[i]; + tokenData.currentValue = tokenConfigs[i].sharedRiskLevel; tokenData.isSet = true; unchecked { i++; diff --git a/src/core/modules/ProtocolManager.sol b/src/core/modules/ProtocolManager.sol index 68169e76..ad45a2fb 100644 --- a/src/core/modules/ProtocolManager.sol +++ b/src/core/modules/ProtocolManager.sol @@ -1,6 +1,7 @@ // SPDX-License-Identifier: GPL-3.0-or-later pragma solidity 0.8.29; +import { MIN_EXPIRE_TIME, MIN_TIME_LOCK_PERIOD } from "@ssv/src/core/libraries/ValidationLib.sol"; import { IProtocolManager } from "@ssv/src/core/interfaces/IProtocolManager.sol"; import { ProtocolStorageLib } from "@ssv/src/core/libraries/ProtocolStorageLib.sol"; import { ISSVBasedApps } from "@ssv/src/core/interfaces/ISSVBasedApps.sol"; @@ -9,9 +10,6 @@ contract ProtocolManager is IProtocolManager { uint32 private constant SLASHING_DISABLED = 1 << 0; uint32 private constant WITHDRAWALS_DISABLED = 1 << 1; - uint32 private constant MIN_TIME_LOCK_PERIOD = 1 days; - uint32 private constant MIN_EXPIRE_TIME = 1 hours; - function updateFeeTimelockPeriod(uint32 feeTimelockPeriod) external { if (feeTimelockPeriod < MIN_TIME_LOCK_PERIOD) revert ISSVBasedApps.InvalidFeeTimelockPeriod(); diff --git a/src/middleware/interfaces/IBasedApp.sol b/src/middleware/interfaces/IBasedApp.sol index d04adfdb..c7892876 100644 --- a/src/middleware/interfaces/IBasedApp.sol +++ b/src/middleware/interfaces/IBasedApp.sol @@ -11,8 +11,7 @@ interface IBasedApp { bytes calldata data ) external returns (bool); function registerBApp( - address[] calldata tokens, - uint32[] calldata sharedRiskLevels, + ICore.TokenConfig[] calldata tokenConfigs, string calldata metadataURI ) external; function slash( diff --git a/src/middleware/modules/core+roles/AccessControlBasedApp.sol b/src/middleware/modules/core+roles/AccessControlBasedApp.sol index 20a330be..77f3b193 100644 --- a/src/middleware/modules/core+roles/AccessControlBasedApp.sol +++ b/src/middleware/modules/core+roles/AccessControlBasedApp.sol @@ -7,6 +7,7 @@ import { IBasedApp } from "@ssv/src/middleware/interfaces/IBasedApp.sol"; import { BasedAppCore } from "@ssv/src/middleware/modules/core/BasedAppCore.sol"; import { IBasedAppManager } from "@ssv/src/core/interfaces/IBasedAppManager.sol"; +import { ICore } from "@ssv/src/core/interfaces/ICore.sol"; abstract contract AccessControlBasedApp is BasedAppCore, AccessControl { bytes32 public constant MANAGER_ROLE = keccak256("MANAGER_ROLE"); @@ -33,8 +34,7 @@ abstract contract AccessControlBasedApp is BasedAppCore, AccessControl { } /// @notice Registers a BApp calling the SSV SSVBasedApps - /// @param tokens array of token addresses - /// @param sharedRiskLevels array of shared risk levels + /// @param tokenConfigs array of token addresses and shared risk levels /// @param metadataURI URI of the metadata /// @dev metadata should point to a json that respect template: /// { @@ -45,13 +45,11 @@ abstract contract AccessControlBasedApp is BasedAppCore, AccessControl { /// "social": "https://x.com/ssv_network" /// } function registerBApp( - address[] calldata tokens, - uint32[] calldata sharedRiskLevels, + ICore.TokenConfig[] calldata tokenConfigs, string calldata metadataURI ) external override onlyRole(MANAGER_ROLE) { IBasedAppManager(SSV_BASED_APPS_NETWORK).registerBApp( - tokens, - sharedRiskLevels, + tokenConfigs, metadataURI ); } diff --git a/src/middleware/modules/core+roles/OwnableBasedApp.sol b/src/middleware/modules/core+roles/OwnableBasedApp.sol index 02d72d07..2038b64a 100644 --- a/src/middleware/modules/core+roles/OwnableBasedApp.sol +++ b/src/middleware/modules/core+roles/OwnableBasedApp.sol @@ -7,6 +7,7 @@ import { IBasedApp } from "@ssv/src/middleware/interfaces/IBasedApp.sol"; import { BasedAppCore } from "@ssv/src/middleware/modules/core/BasedAppCore.sol"; import { IBasedAppManager } from "@ssv/src/core/interfaces/IBasedAppManager.sol"; +import { ICore } from "@ssv/src/core/interfaces/ICore.sol"; abstract contract OwnableBasedApp is Ownable, BasedAppCore { constructor( @@ -15,8 +16,7 @@ abstract contract OwnableBasedApp is Ownable, BasedAppCore { ) BasedAppCore(_basedAppManager) Ownable(_initOwner) {} /// @notice Registers a BApp calling the SSV SSVBasedApps - /// @param tokens array of token addresses - /// @param sharedRiskLevels array of shared risk levels + /// @param tokenConfigs array of token addresses and shared risk levels /// @param metadataURI URI of the metadata /// @dev metadata should point to a json that respect template: /// { @@ -27,13 +27,11 @@ abstract contract OwnableBasedApp is Ownable, BasedAppCore { /// "social": "https://x.com/ssv_network" /// } function registerBApp( - address[] calldata tokens, - uint32[] calldata sharedRiskLevels, + ICore.TokenConfig[] calldata tokenConfigs, string calldata metadataURI ) external override onlyOwner { IBasedAppManager(SSV_BASED_APPS_NETWORK).registerBApp( - tokens, - sharedRiskLevels, + tokenConfigs, metadataURI ); } diff --git a/src/middleware/modules/core/BasedAppCore.sol b/src/middleware/modules/core/BasedAppCore.sol index aa32bf19..6a8dd0b4 100644 --- a/src/middleware/modules/core/BasedAppCore.sol +++ b/src/middleware/modules/core/BasedAppCore.sol @@ -35,9 +35,8 @@ abstract contract BasedAppCore is IBasedApp { SSV_BASED_APPS_NETWORK = _ssvBasedAppsNetwork; } - /// @notice Registers a BApp calling the SSV SSVBasedApps - /// @param tokens array of token addresses - /// @param sharedRiskLevels array of shared risk levels + /// @notice Registers a BApp calling the SSVBasedApps + /// @param tokenConfigs array of token configs (address, shared risk level) /// @param metadataURI URI of the metadata /// @dev metadata should point to a json that respect template: /// { @@ -48,13 +47,11 @@ abstract contract BasedAppCore is IBasedApp { /// "social": "https://x.com/ssv_network" /// } function registerBApp( - address[] calldata tokens, - uint32[] calldata sharedRiskLevels, + ICore.TokenConfig[] calldata tokenConfigs, string calldata metadataURI ) external virtual { IBasedAppManager(SSV_BASED_APPS_NETWORK).registerBApp( - tokens, - sharedRiskLevels, + tokenConfigs, metadataURI ); } diff --git a/test/Config.t.sol b/test/Config.t.sol index f38ff639..22f42104 100644 --- a/test/Config.t.sol +++ b/test/Config.t.sol @@ -141,7 +141,7 @@ contract Config is Test { config = ProtocolStorageLib.Data({ maxFeeIncrement: MAX_FEE_INCREMENT, feeTimelockPeriod: 1 days, - feeExpireTime: 0 minutes, + feeExpireTime: 59 minutes, withdrawalTimelockPeriod: 14 days, withdrawalExpireTime: 3 days, obligationTimelockPeriod: 14 days, @@ -232,7 +232,7 @@ contract Config is Test { feeExpireTime: 1 hours, withdrawalTimelockPeriod: 1 days, withdrawalExpireTime: 1 hours, - obligationTimelockPeriod: 0 hours, + obligationTimelockPeriod: 23 hours, obligationExpireTime: 3 days, tokenUpdateTimelockPeriod: 14 days, maxShares: 1e50, @@ -325,7 +325,7 @@ contract Config is Test { obligationTimelockPeriod: 1 days, obligationExpireTime: 1 hours, tokenUpdateTimelockPeriod: 1 days, - maxShares: 1e37, + maxShares: 1e49, disabledFeatures: 0 }); @@ -342,4 +342,33 @@ contract Config is Test { ); proxy = new ERC1967Proxy(address(implementation), data); } + function testRevertInvalidDisabledFeatures() public virtual { + config = ProtocolStorageLib.Data({ + maxFeeIncrement: MAX_FEE_INCREMENT, + feeTimelockPeriod: 1 days, + feeExpireTime: 1 hours, + withdrawalTimelockPeriod: 1 days, + withdrawalExpireTime: 3 days, + obligationTimelockPeriod: 14 days, + obligationExpireTime: 3 days, + tokenUpdateTimelockPeriod: 14 days, + maxShares: 1e50, + disabledFeatures: 4 + }); + + bytes memory data = abi.encodeWithSelector( + implementation.initialize.selector, + address(OWNER), + IBasedAppManager(basedAppsManagerMod), + IStrategyManager(strategyManagerMod), + IProtocolManager(protocolManagerMod), + config + ); + vm.expectRevert( + abi.encodeWithSelector( + ISSVBasedApps.InvalidDisabledFeatures.selector + ) + ); + proxy = new ERC1967Proxy(address(implementation), data); + } } diff --git a/test/helpers/Utils.t.sol b/test/helpers/Utils.t.sol index 9bffb8c9..97e52ad0 100644 --- a/test/helpers/Utils.t.sol +++ b/test/helpers/Utils.t.sol @@ -22,6 +22,16 @@ contract UtilsTest is Setup { sharedRiskLevelInput = new uint32[](1); sharedRiskLevelInput[0] = sharedRiskLevel; } + function createSingleTokenConfig( + address token, + uint32 sharedRiskLevel + ) internal pure returns (ICore.TokenConfig[] memory tokenConfigs) { + tokenConfigs = new ICore.TokenConfig[](1); + tokenConfigs[0] = ICore.TokenConfig({ + token: token, + sharedRiskLevel: sharedRiskLevel + }); + } function createSingleTokenAndSingleObligationPercentage( address token, @@ -41,23 +51,17 @@ contract UtilsTest is Setup { } function checkBAppInfo( - address[] memory tokensInput, - uint32[] memory riskLevelInput, + ICore.TokenConfig[] memory tokenConfigsInput, address bApp, SSVBasedApps proxiedManager ) internal view { - assertEq( - tokensInput.length, - riskLevelInput.length, - "BApp tokens and sharedRiskLevel length" - ); bool isRegistered = proxiedManager.registeredBApps(bApp); assertEq(isRegistered, true, "BApp registered"); - for (uint32 i = 0; i < tokensInput.length; i++) { + for (uint32 i = 0; i < tokenConfigsInput.length; i++) { (uint32 sharedRiskLevel, bool isSet, , ) = proxiedManager - .bAppTokens(bApp, tokensInput[i]); + .bAppTokens(bApp, tokenConfigsInput[i].token); assertEq( - riskLevelInput[i], + tokenConfigsInput[i].sharedRiskLevel, sharedRiskLevel, "BApp risk level percentage" ); diff --git a/test/middleware/examples/WhitelistExample.t.sol b/test/middleware/examples/WhitelistExample.t.sol index 1462be9b..59406e5b 100644 --- a/test/middleware/examples/WhitelistExample.t.sol +++ b/test/middleware/examples/WhitelistExample.t.sol @@ -4,6 +4,7 @@ pragma solidity 0.8.29; import { IBasedAppWhitelisted } from "@ssv/src/middleware/interfaces/IBasedAppWhitelisted.sol"; import { IBasedApp } from "@ssv/test/helpers/Setup.t.sol"; import { UtilsTest } from "@ssv/test/helpers/Utils.t.sol"; +import { ICore } from "@ssv/src/core/interfaces/ICore.sol"; contract WhitelistExampleTest is UtilsTest { function testCreateStrategies() public { @@ -31,14 +32,13 @@ contract WhitelistExampleTest is UtilsTest { function testRegisterWhitelistExampleBApp() public { vm.startPrank(USER1); - ( - address[] memory tokensInput, - uint32[] memory sharedRiskLevelInput - ) = createSingleTokenAndSingleRiskLevel(address(erc20mock), 102); - whitelistExample.registerBApp(tokensInput, sharedRiskLevelInput, ""); + ICore.TokenConfig[] memory tokenConfigsInput = createSingleTokenConfig( + address(erc20mock), + 102 + ); + whitelistExample.registerBApp(tokenConfigsInput, ""); checkBAppInfo( - tokensInput, - sharedRiskLevelInput, + tokenConfigsInput, address(whitelistExample), proxiedManager ); diff --git a/test/mocks/MockNonCompliantBApp.sol b/test/mocks/MockNonCompliantBApp.sol index aa9bc64d..5885c5a1 100644 --- a/test/mocks/MockNonCompliantBApp.sol +++ b/test/mocks/MockNonCompliantBApp.sol @@ -1,10 +1,11 @@ // SPDX-License-Identifier: GPL-3.0 pragma solidity 0.8.29; +import { ICore } from "@ssv/src/core/interfaces/ICore.sol"; + interface ICustomBasedAppManager { function registerBApp( - address[] calldata tokens, - uint32[] calldata sharedRiskLevels, + ICore.TokenConfig[] calldata tokenConfigs, string calldata metadataURI ) external; function slash( @@ -33,13 +34,11 @@ contract NonCompliantBApp { } function registerBApp( - address[] calldata tokens, - uint32[] calldata sharedRiskLevels, + ICore.TokenConfig[] calldata tokenConfigs, string calldata metadataURI ) external { ICustomBasedAppManager(BASED_APP_MANAGER).registerBApp( - tokens, - sharedRiskLevels, + tokenConfigs, metadataURI ); } diff --git a/test/modules/BasedAppsManager.t.sol b/test/modules/BasedAppsManager.t.sol index da79d85c..ece4afb9 100644 --- a/test/modules/BasedAppsManager.t.sol +++ b/test/modules/BasedAppsManager.t.sol @@ -25,77 +25,50 @@ contract BasedAppsManagerTest is UtilsTest { function createTwoTokenAndRiskInputs() private view - returns ( - address[] memory tokensInput, - uint32[] memory sharedRiskLevelInput - ) + returns (ICore.TokenConfig[] memory tokenConfigsInput) { - tokensInput = new address[](2); - sharedRiskLevelInput = new uint32[](2); + address[] memory tokensInput = new address[](2); + uint32[] memory sharedRiskLevelInput = new uint32[](2); tokensInput[0] = address(erc20mock); tokensInput[1] = address(erc20mock2); sharedRiskLevelInput[0] = 102; sharedRiskLevelInput[1] = 103; + tokenConfigsInput = new ICore.TokenConfig[](2); + for (uint256 i = 0; i < tokensInput.length; i++) { + tokenConfigsInput[i] = ICore.TokenConfig({ + token: tokensInput[i], + sharedRiskLevel: sharedRiskLevelInput[i] + }); + } } function createTwoTokenAndRiskInputsWithTheSameToken() private view - returns ( - address[] memory tokensInput, - uint32[] memory sharedRiskLevelInput - ) + returns (ICore.TokenConfig[] memory tokenConfigsInput) { - tokensInput = new address[](2); - sharedRiskLevelInput = new uint32[](2); + tokenConfigsInput = new ICore.TokenConfig[](2); + address[] memory tokensInput = new address[](2); + uint32[] memory sharedRiskLevelInput = new uint32[](2); tokensInput[0] = address(erc20mock); tokensInput[1] = address(erc20mock); sharedRiskLevelInput[0] = 102; sharedRiskLevelInput[1] = 103; - } - - function createTwoTokenAndMoreRiskInputs() - private - view - returns ( - address[] memory tokensInput, - uint32[] memory sharedRiskLevelInput - ) - { - tokensInput = new address[](2); - sharedRiskLevelInput = new uint32[](3); - tokensInput[0] = address(erc20mock); - tokensInput[1] = address(erc20mock2); - sharedRiskLevelInput[0] = 102; - sharedRiskLevelInput[1] = 103; - sharedRiskLevelInput[1] = 104; - } - - function createTwoTokenAndLessRiskInputs() - private - view - returns ( - address[] memory tokensInput, - uint32[] memory sharedRiskLevelInput - ) - { - tokensInput = new address[](2); - sharedRiskLevelInput = new uint32[](1); - tokensInput[0] = address(erc20mock); - tokensInput[1] = address(erc20mock2); - sharedRiskLevelInput[0] = 102; + for (uint256 i = 0; i < tokensInput.length; i++) { + tokenConfigsInput[i] = ICore.TokenConfig({ + token: tokensInput[i], + sharedRiskLevel: sharedRiskLevelInput[i] + }); + } } function createFiveTokenAndRiskInputs() private view - returns ( - address[] memory tokensInput, - uint32[] memory sharedRiskLevelInput - ) + returns (ICore.TokenConfig[] memory tokenConfigsInput) { - tokensInput = new address[](5); - sharedRiskLevelInput = new uint32[](5); + address[] memory tokensInput = new address[](5); + uint32[] memory sharedRiskLevelInput = new uint32[](5); tokensInput[0] = address(erc20mock); tokensInput[1] = address(erc20mock2); tokensInput[2] = address(erc20mock3); @@ -106,127 +79,93 @@ contract BasedAppsManagerTest is UtilsTest { sharedRiskLevelInput[2] = 104; sharedRiskLevelInput[3] = 105; sharedRiskLevelInput[4] = 106; + tokenConfigsInput = new ICore.TokenConfig[](5); + for (uint256 i = 0; i < tokensInput.length; i++) { + tokenConfigsInput[i] = ICore.TokenConfig({ + token: tokensInput[i], + sharedRiskLevel: sharedRiskLevelInput[i] + }); + } } function testRegisterBApp() public { - ( - address[] memory tokensInput, - uint32[] memory sharedRiskLevelInput - ) = createSingleTokenAndSingleRiskLevel(address(erc20mock), 102); + ICore.TokenConfig[] memory tokenConfigsInput = createSingleTokenConfig( + address(erc20mock), + 102 + ); for (uint256 i = 0; i < bApps.length; i++) { vm.prank(USER1); vm.expectEmit(true, true, true, true); emit IBasedAppManager.BAppRegistered( address(bApps[i]), - tokensInput, - sharedRiskLevelInput, - metadataURIs[i] - ); - bApps[i].registerBApp( - tokensInput, - sharedRiskLevelInput, + tokenConfigsInput, metadataURIs[i] ); - checkBAppInfo( - tokensInput, - sharedRiskLevelInput, - address(bApps[i]), - proxiedManager - ); + bApps[i].registerBApp(tokenConfigsInput, metadataURIs[i]); + checkBAppInfo(tokenConfigsInput, address(bApps[i]), proxiedManager); } } function testRegisterBAppWithEOA() public { - ( - address[] memory tokensInput, - uint32[] memory sharedRiskLevelInput - ) = createSingleTokenAndSingleRiskLevel(address(erc20mock), 102); - vm.prank(USER1); - proxiedManager.registerBApp( - tokensInput, - sharedRiskLevelInput, - metadataURIs[0] + ICore.TokenConfig[] memory tokenConfigsInput = createSingleTokenConfig( + address(erc20mock), + 102 ); - checkBAppInfo(tokensInput, sharedRiskLevelInput, USER1, proxiedManager); + vm.prank(USER1); + proxiedManager.registerBApp(tokenConfigsInput, metadataURIs[0]); + checkBAppInfo(tokenConfigsInput, USER1, proxiedManager); } function testRegisterBAppWithEOAWithEth() public { - ( - address[] memory tokensInput, - uint32[] memory sharedRiskLevelInput - ) = createSingleTokenAndSingleRiskLevel(ETH_ADDRESS, 102); - vm.prank(USER1); - proxiedManager.registerBApp( - tokensInput, - sharedRiskLevelInput, - metadataURIs[0] + ICore.TokenConfig[] memory tokenConfigsInput = createSingleTokenConfig( + ETH_ADDRESS, + 102 ); - checkBAppInfo(tokensInput, sharedRiskLevelInput, USER1, proxiedManager); + vm.prank(USER1); + proxiedManager.registerBApp(tokenConfigsInput, metadataURIs[0]); + checkBAppInfo(tokenConfigsInput, USER1, proxiedManager); } function testRegisterBAppWith2Tokens() public { - ( - address[] memory tokensInput, - uint32[] memory sharedRiskLevelInput - ) = createTwoTokenAndRiskInputs(); + ICore.TokenConfig[] + memory tokenConfigsInput = createTwoTokenAndRiskInputs(); for (uint256 i = 0; i < bApps.length; i++) { vm.prank(USER1); - bApps[i].registerBApp(tokensInput, sharedRiskLevelInput, ""); - checkBAppInfo( - tokensInput, - sharedRiskLevelInput, - address(bApps[i]), - proxiedManager - ); + bApps[i].registerBApp(tokenConfigsInput, ""); + checkBAppInfo(tokenConfigsInput, address(bApps[i]), proxiedManager); } } function testRegisterBAppWithETH() public { - ( - address[] memory tokensInput, - uint32[] memory sharedRiskLevelInput - ) = createSingleTokenAndSingleRiskLevel(ETH_ADDRESS, 100); + ICore.TokenConfig[] memory tokenConfigsInput = createSingleTokenConfig( + ETH_ADDRESS, + 100 + ); for (uint256 i = 0; i < bApps.length; i++) { vm.prank(USER1); - bApps[i].registerBApp(tokensInput, sharedRiskLevelInput, ""); - checkBAppInfo( - tokensInput, - sharedRiskLevelInput, - address(bApps[i]), - proxiedManager - ); + bApps[i].registerBApp(tokenConfigsInput, ""); + checkBAppInfo(tokenConfigsInput, address(bApps[i]), proxiedManager); } } function testRegisterBAppWithNoTokens() public { - address[] memory tokensInput = new address[](0); - uint32[] memory sharedRiskLevelInput = new uint32[](0); + ICore.TokenConfig[] memory tokenConfigsInput = new ICore.TokenConfig[]( + 0 + ); for (uint256 i = 0; i < bApps.length; i++) { vm.prank(USER1); - bApps[i].registerBApp(tokensInput, sharedRiskLevelInput, ""); - checkBAppInfo( - tokensInput, - sharedRiskLevelInput, - address(bApps[i]), - proxiedManager - ); + bApps[i].registerBApp(tokenConfigsInput, ""); + checkBAppInfo(tokenConfigsInput, address(bApps[i]), proxiedManager); } } function testRegisterBAppWithFiveTokens() public { - ( - address[] memory tokensInput, - uint32[] memory sharedRiskLevelInput - ) = createFiveTokenAndRiskInputs(); + ICore.TokenConfig[] + memory tokenConfigsInput = createFiveTokenAndRiskInputs(); for (uint256 i = 0; i < bApps.length; i++) { vm.prank(USER1); - bApps[i].registerBApp(tokensInput, sharedRiskLevelInput, ""); - checkBAppInfo( - tokensInput, - sharedRiskLevelInput, - address(bApps[i]), - proxiedManager - ); + bApps[i].registerBApp(tokenConfigsInput, ""); + checkBAppInfo(tokenConfigsInput, address(bApps[i]), proxiedManager); } } @@ -237,40 +176,42 @@ contract BasedAppsManagerTest is UtilsTest { uint32[] memory sharedRiskLevelInput = new uint32[](2); sharedRiskLevelInput[0] = 102; sharedRiskLevelInput[1] = 102; + ICore.TokenConfig[] memory tokenConfigsInput = new ICore.TokenConfig[]( + tokensInput.length + ); + for (uint256 i = 0; i < tokensInput.length; i++) { + tokenConfigsInput[i] = ICore.TokenConfig({ + token: tokensInput[i], + sharedRiskLevel: sharedRiskLevelInput[i] + }); + } for (uint256 i = 0; i < bApps.length; i++) { vm.prank(USER1); - bApps[i].registerBApp(tokensInput, sharedRiskLevelInput, ""); - checkBAppInfo( - tokensInput, - sharedRiskLevelInput, - address(bApps[i]), - proxiedManager - ); + bApps[i].registerBApp(tokenConfigsInput, ""); + checkBAppInfo(tokenConfigsInput, address(bApps[i]), proxiedManager); } } function testRevertRegisterBAppWithSameTokens() public { - ( - address[] memory tokensInput, - uint32[] memory sharedRiskLevelInput - ) = createTwoTokenAndRiskInputsWithTheSameToken(); + ICore.TokenConfig[] + memory tokenConfigsInput = createTwoTokenAndRiskInputsWithTheSameToken(); for (uint256 i = 0; i < bApps.length; i++) { vm.prank(USER1); vm.expectRevert( abi.encodeWithSelector( IBasedAppManager.TokenAlreadyAddedToBApp.selector, - tokensInput[0] + tokenConfigsInput[0].token ) ); - bApps[i].registerBApp(tokensInput, sharedRiskLevelInput, ""); + bApps[i].registerBApp(tokenConfigsInput, ""); } } function testRevertRegisterBAppWithTokenZero() public { - ( - address[] memory tokensInput, - uint32[] memory sharedRiskLevelInput - ) = createSingleTokenAndSingleRiskLevel(address(0), 102); + ICore.TokenConfig[] memory tokenConfigsInput = createSingleTokenConfig( + address(0), + 102 + ); for (uint256 i = 0; i < bApps.length; i++) { vm.prank(USER1); vm.expectRevert( @@ -278,100 +219,55 @@ contract BasedAppsManagerTest is UtilsTest { ValidationLib.ZeroAddressNotAllowed.selector ) ); - bApps[i].registerBApp( - tokensInput, - sharedRiskLevelInput, - metadataURIs[i] - ); + bApps[i].registerBApp(tokenConfigsInput, metadataURIs[i]); } } function testRevertRegisterBAppTwice() public { vm.startPrank(USER1); - address[] memory tokensInput = new address[](1); - tokensInput[0] = address(erc20mock); - uint32[] memory sharedRiskLevelInput = new uint32[](1); - sharedRiskLevelInput[0] = 102; - bApp1.registerBApp(tokensInput, sharedRiskLevelInput, ""); + ICore.TokenConfig[] memory tokenConfigsInput = createSingleTokenConfig( + address(erc20mock), + 102 + ); + bApp1.registerBApp(tokenConfigsInput, ""); vm.expectRevert( abi.encodeWithSelector( IBasedAppManager.BAppAlreadyRegistered.selector ) ); - bApp1.registerBApp(tokensInput, sharedRiskLevelInput, ""); - bApp2.registerBApp(tokensInput, sharedRiskLevelInput, ""); + bApp1.registerBApp(tokenConfigsInput, ""); + bApp2.registerBApp(tokenConfigsInput, ""); vm.expectRevert( abi.encodeWithSelector( IBasedAppManager.BAppAlreadyRegistered.selector ) ); - bApp2.registerBApp(tokensInput, sharedRiskLevelInput, ""); - bApp3.registerBApp(tokensInput, sharedRiskLevelInput, ""); + bApp2.registerBApp(tokenConfigsInput, ""); + bApp3.registerBApp(tokenConfigsInput, ""); vm.expectRevert( abi.encodeWithSelector( IBasedAppManager.BAppAlreadyRegistered.selector ) ); - bApp3.registerBApp(tokensInput, sharedRiskLevelInput, ""); + bApp3.registerBApp(tokenConfigsInput, ""); vm.stopPrank(); } function testRegisterBAppFromNonBAppContract() public { vm.startPrank(USER1); - address[] memory tokensInput = new address[](1); - tokensInput[0] = address(erc20mock); - uint32[] memory sharedRiskLevelInput = new uint32[](1); - sharedRiskLevelInput[0] = 102; - nonCompliantBApp.registerBApp(tokensInput, sharedRiskLevelInput, ""); + ICore.TokenConfig[] memory tokenConfigsInput = createSingleTokenConfig( + address(erc20mock), + 102 + ); + nonCompliantBApp.registerBApp(tokenConfigsInput, ""); checkBAppInfo( - tokensInput, - sharedRiskLevelInput, + tokenConfigsInput, address(nonCompliantBApp), proxiedManager ); vm.stopPrank(); } - function testRevertRegisterBAppWithMismatchTokenRiskLengthOne() public { - ( - address[] memory tokensInput, - uint32[] memory sharedRiskLevelInput - ) = createTwoTokenAndMoreRiskInputs(); - for (uint256 i = 0; i < bApps.length; i++) { - vm.prank(USER1); - vm.expectRevert( - abi.encodeWithSelector( - ValidationLib.LengthsNotMatching.selector - ) - ); - bApps[i].registerBApp( - tokensInput, - sharedRiskLevelInput, - metadataURIs[i] - ); - } - } - - function testRevertRegisterBAppWithMismatchTokenRiskLengthTwo() public { - ( - address[] memory tokensInput, - uint32[] memory sharedRiskLevelInput - ) = createTwoTokenAndLessRiskInputs(); - for (uint256 i = 0; i < bApps.length; i++) { - vm.prank(USER1); - vm.expectRevert( - abi.encodeWithSelector( - ValidationLib.LengthsNotMatching.selector - ) - ); - bApps[i].registerBApp( - tokensInput, - sharedRiskLevelInput, - metadataURIs[i] - ); - } - } - function testUpdateBAppMetadata() public { testRegisterBApp(); for (uint256 i = 0; i < bApps.length; i++) { @@ -434,28 +330,26 @@ contract BasedAppsManagerTest is UtilsTest { function testUpdateBAppTokens() public { testRegisterBApp(); - ( - address[] memory tokensInput, - uint32[] memory sharedRiskLevelInput - ) = createTwoTokenAndRiskInputs(); - ICore.TokenConfig[] memory tokenConfigs = new ICore.TokenConfig[]( - tokensInput.length - ); - for (uint256 i = 0; i < tokensInput.length; i++) { - tokenConfigs[i] = ICore.TokenConfig({ - token: tokensInput[i], - sharedRiskLevel: sharedRiskLevelInput[i] + 1000 - }); - } + ICore.TokenConfig[] + memory tokenConfigsInput = createTwoTokenAndRiskInputs(); + // ICore.TokenConfig[] memory tokenConfigs = new ICore.TokenConfig[]( + // tokensInput.length + // ); + // for (uint256 i = 0; i < tokensInput.length; i++) { + // tokenConfigs[i] = ICore.TokenConfig({ + // token: tokensInput[i], + // sharedRiskLevel: sharedRiskLevelInput[i] + 1000 + // }); + // } for (uint256 i = 0; i < bApps.length; i++) { vm.prank(USER1); vm.expectEmit(true, true, false, false); emit IBasedAppManager.BAppTokensUpdated( address(bApps[i]), - tokenConfigs + tokenConfigsInput ); - bApps[i].updateBAppTokens(tokenConfigs); - checkBAppUpdatedTokens(tokenConfigs, address(bApps[i])); + bApps[i].updateBAppTokens(tokenConfigsInput); + checkBAppUpdatedTokens(tokenConfigsInput, address(bApps[i])); } } } diff --git a/test/modules/StrategyManager.t.sol b/test/modules/StrategyManager.t.sol index 3812d753..dea18ae0 100644 --- a/test/modules/StrategyManager.t.sol +++ b/test/modules/StrategyManager.t.sol @@ -7,6 +7,7 @@ import { IStrategyManager } from "@ssv/src/core/interfaces/IStrategyManager.sol" import { IBasedAppManager } from "@ssv/src/core/interfaces/IBasedAppManager.sol"; import { UtilsTest } from "@ssv/test/helpers/Utils.t.sol"; import { ValidationLib } from "@ssv/src/core/libraries/ValidationLib.sol"; +import { ICore } from "@ssv/src/core/interfaces/ICore.sol"; contract StrategyManagerTest is UtilsTest, BasedAppsManagerTest { function updateObligation( @@ -665,8 +666,7 @@ contract StrategyManagerTest is UtilsTest, BasedAppsManagerTest { abi.encodePacked("0x00") ); checkBAppInfo( - new address[](0), - new uint32[](0), + new ICore.TokenConfig[](0), address(bApps[i]), proxiedManager ); From 7767ca64ef2698a19c2b8369d4594a31e0b3d1f0 Mon Sep 17 00:00:00 2001 From: Marco Tabasco Date: Wed, 28 May 2025 16:17:11 +0200 Subject: [PATCH 17/24] chore: update prettier dependency (#62) --- .prettierrc | 2 +- package-lock.json | 852 +++++++----------- package.json | 4 +- script/DeployAll.sol | 4 +- script/DeployAllSepolia.s.sol | 19 + src/core/SSVBasedApps.sol | 38 +- src/core/interfaces/ISSVBasedApps.sol | 16 +- src/core/modules/BasedAppsManager.sol | 8 +- src/core/modules/ProtocolManager.sol | 13 +- src/core/modules/StrategyManager.sol | 30 +- src/middleware/examples/WhitelistExample.sol | 8 +- .../modules/BasedAppWhitelisted.sol | 4 +- .../core+roles/AccessControlBasedApp.sol | 12 +- .../modules/core+roles/OwnableBasedApp.sol | 8 +- src/middleware/modules/core/BasedAppCore.sol | 8 +- test/Config.t.sol | 20 +- test/SSVBasedApps.t.sol | 14 +- test/helpers/Setup.t.sol | 24 +- .../examples/WhitelistExample.t.sol | 4 +- test/mocks/MockBApp.sol | 4 +- test/mocks/MockBApp2.sol | 4 +- test/mocks/MockBApp4RejectEth.sol | 4 +- test/mocks/MockBAppAccessControl.sol | 4 +- test/modules/BasedAppsManager.t.sol | 8 +- test/modules/DelegationManager.t.sol | 4 +- test/modules/ProtocolManager.t.sol | 20 +- test/modules/SlashingManager.bapp.t.sol | 14 +- test/modules/SlashingManager.eoa.t.sol | 6 +- test/modules/StrategyManager.t.sol | 8 +- 29 files changed, 559 insertions(+), 605 deletions(-) create mode 100644 script/DeployAllSepolia.s.sol diff --git a/.prettierrc b/.prettierrc index c8b57798..b6c6aac5 100644 --- a/.prettierrc +++ b/.prettierrc @@ -8,7 +8,7 @@ { "files": "*.sol", "options": { - "parser": "solidity-parse", + "parser": "slang", "printWidth": 80, "tabWidth": 4, "useTabs": false, diff --git a/package-lock.json b/package-lock.json index 1724a0da..25a42d2c 100644 --- a/package-lock.json +++ b/package-lock.json @@ -11,43 +11,55 @@ "devDependencies": { "@openzeppelin/contracts-upgradeable": "^5.3.0", "husky": "^9.1.7", - "lint-staged": "^15.5.1", + "lint-staged": "^15.5.2", "prettier": "^3.5.3", - "prettier-plugin-solidity": "^1.4.2", + "prettier-plugin-solidity": "^2.0.0", "solhint": "^5.1.0" } }, "node_modules/@babel/code-frame": { - "version": "7.26.2", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.26.2.tgz", - "integrity": "sha512-RJlIHRueQgwWitWgF8OdFYGZX328Ax5BCemNGlqHfplnRT9ESi8JkFlvaVYbS+UubVY6dpv87Fs2u5M29iNFVQ==", + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.27.1.tgz", + "integrity": "sha512-cjQ7ZlQ0Mv3b47hABuTevyTuYN4i+loJKGeV9flcCgIK37cCXRh+L1bd3iBHlynerhQ7BhCkn2BPbQUL+rGqFg==", "dev": true, - "license": "MIT", "dependencies": { - "@babel/helper-validator-identifier": "^7.25.9", + "@babel/helper-validator-identifier": "^7.27.1", "js-tokens": "^4.0.0", - "picocolors": "^1.0.0" + "picocolors": "^1.1.1" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-validator-identifier": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.25.9.tgz", - "integrity": "sha512-Ed61U6XJc3CVRfkERJWDz4dJwKe7iLmmJsbOGu9wSloNSFttHV0I8g6UAgb7qnK5ly5bGLPd4oXZlxCdANBOWQ==", + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.27.1.tgz", + "integrity": "sha512-D2hP9eA+Sqx1kBZgzxZh0y1trbuU+JoDkiEwqhQ36nodYqJwyEIhPSdMNd7lOm/4io72luTPWH20Yda0xOuUow==", "dev": true, - "license": "MIT", "engines": { "node": ">=6.9.0" } }, + "node_modules/@bytecodealliance/preview2-shim": { + "version": "0.17.2", + "resolved": "https://registry.npmjs.org/@bytecodealliance/preview2-shim/-/preview2-shim-0.17.2.tgz", + "integrity": "sha512-mNm/lblgES8UkVle8rGImXOz4TtL3eU3inHay/7TVchkKrb/lgcVvTK0+VAw8p5zQ0rgQsXm1j5dOlAAd+MeoA==", + "dev": true + }, + "node_modules/@nomicfoundation/slang": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@nomicfoundation/slang/-/slang-1.1.0.tgz", + "integrity": "sha512-g2BofMUq1qCP22L/ksOftScrCxjdHTxgg8ch5PYon2zfSSKGCMwE4TgIC64CuorMcSsvCmqNNFEWR/fwFcMeTw==", + "dev": true, + "dependencies": { + "@bytecodealliance/preview2-shim": "0.17.2" + } + }, "node_modules/@openzeppelin/contracts": { "version": "5.3.0", "resolved": "https://registry.npmjs.org/@openzeppelin/contracts/-/contracts-5.3.0.tgz", "integrity": "sha512-zj/KGoW7zxWUE8qOI++rUM18v+VeLTTzKs/DJFkSzHpQFPD/jKKF0TrMxBfGLl3kpdELCNccvB3zmofSzm4nlA==", "dev": true, - "license": "MIT", "peer": true }, "node_modules/@openzeppelin/contracts-upgradeable": { @@ -55,7 +67,6 @@ "resolved": "https://registry.npmjs.org/@openzeppelin/contracts-upgradeable/-/contracts-upgradeable-5.3.0.tgz", "integrity": "sha512-yVzSSyTMWO6rapGI5tuqkcLpcGGXA0UA1vScyV5EhE5yw8By3Ewex9rDUw8lfVw0iTkvR/egjfcW5vpk03lqZg==", "dev": true, - "license": "MIT", "peerDependencies": { "@openzeppelin/contracts": "5.3.0" } @@ -65,7 +76,6 @@ "resolved": "https://registry.npmjs.org/@pnpm/config.env-replace/-/config.env-replace-1.1.0.tgz", "integrity": "sha512-htyl8TWnKL7K/ESFa1oW2UB5lVDxuF5DpM7tBi6Hu2LNL3mWkIzNLG6N4zoCUP1lCKNxWy/3iu8mS8MvToGd6w==", "dev": true, - "license": "MIT", "engines": { "node": ">=12.22.0" } @@ -75,7 +85,6 @@ "resolved": "https://registry.npmjs.org/@pnpm/network.ca-file/-/network.ca-file-1.0.2.tgz", "integrity": "sha512-YcPQ8a0jwYU9bTdJDpXjMi7Brhkr1mXsXrUJvjqM2mQDgkRiz8jFaQGOdaLxgjtUfQgZhKy/O3cG/YwmgKaxLA==", "dev": true, - "license": "MIT", "dependencies": { "graceful-fs": "4.2.10" }, @@ -88,7 +97,6 @@ "resolved": "https://registry.npmjs.org/@pnpm/npm-conf/-/npm-conf-2.3.1.tgz", "integrity": "sha512-c83qWb22rNRuB0UaVCI0uRPNRr8Z0FWnEIvT47jiHAmOIUHbBOg5XvV7pM5x+rKn9HRpjxquDbXYSXr3fAKFcw==", "dev": true, - "license": "MIT", "dependencies": { "@pnpm/config.env-replace": "^1.1.0", "@pnpm/network.ca-file": "^1.0.1", @@ -103,7 +111,6 @@ "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-5.6.0.tgz", "integrity": "sha512-TV7t8GKYaJWsn00tFDqBw8+Uqmr8A0fRU1tvTQhyZzGv0sJCGRQL3JGMI3ucuKo3XIZdUP+Lx7/gh2t3lewy7g==", "dev": true, - "license": "MIT", "engines": { "node": ">=14.16" }, @@ -112,18 +119,16 @@ } }, "node_modules/@solidity-parser/parser": { - "version": "0.19.0", - "resolved": "https://registry.npmjs.org/@solidity-parser/parser/-/parser-0.19.0.tgz", - "integrity": "sha512-RV16k/qIxW/wWc+mLzV3ARyKUaMUTBy9tOLMzFhtNSKYeTAanQ3a5MudJKf/8arIFnA2L27SNjarQKmFg0w/jA==", - "dev": true, - "license": "MIT" + "version": "0.20.1", + "resolved": "https://registry.npmjs.org/@solidity-parser/parser/-/parser-0.20.1.tgz", + "integrity": "sha512-58I2sRpzaQUN+jJmWbHfbWf9AKfzqCI8JAdFB0vbyY+u8tBRcuTt9LxzasvR0LGQpcRv97eyV7l61FQ3Ib7zVw==", + "dev": true }, "node_modules/@szmarczak/http-timer": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/@szmarczak/http-timer/-/http-timer-5.0.1.tgz", "integrity": "sha512-+PmQX0PiAYPMeVYe237LJAYvOMYW1j2rH5YROyS3b4CTVJum34HfRvKvAzozHAQG0TnHNdUfY9nCeUyRAs//cw==", "dev": true, - "license": "MIT", "dependencies": { "defer-to-connect": "^2.0.1" }, @@ -135,15 +140,13 @@ "version": "4.0.4", "resolved": "https://registry.npmjs.org/@types/http-cache-semantics/-/http-cache-semantics-4.0.4.tgz", "integrity": "sha512-1m0bIFVc7eJWyve9S0RnuRgcQqF/Xd5QsUZAZeQFr1Q3/p9JWoQQEqmVy+DPTNpGXwhgIetAoYF8JSc33q29QA==", - "dev": true, - "license": "MIT" + "dev": true }, "node_modules/ajv": { "version": "6.12.6", "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", "dev": true, - "license": "MIT", "dependencies": { "fast-deep-equal": "^3.1.1", "fast-json-stable-stringify": "^2.0.0", @@ -160,7 +163,6 @@ "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-7.0.0.tgz", "integrity": "sha512-GdYO7a61mR0fOlAsvC9/rIHf7L96sBc6dEWzeOu+KAea5bZyQRPIpojrVoI4AXGJS/ycu/fBTdLrUkA4ODrvjw==", "dev": true, - "license": "MIT", "dependencies": { "environment": "^1.0.0" }, @@ -172,26 +174,24 @@ } }, "node_modules/ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.1.0.tgz", + "integrity": "sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA==", "dev": true, - "license": "MIT", "engines": { - "node": ">=8" + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-regex?sponsor=1" } }, "node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz", + "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==", "dev": true, - "license": "MIT", - "dependencies": { - "color-convert": "^2.0.1" - }, "engines": { - "node": ">=8" + "node": ">=12" }, "funding": { "url": "https://github.com/chalk/ansi-styles?sponsor=1" @@ -202,7 +202,6 @@ "resolved": "https://registry.npmjs.org/antlr4/-/antlr4-4.13.2.tgz", "integrity": "sha512-QiVbZhyy4xAZ17UPEuG3YTOt8ZaoeOR1CvEAqrEsDBsOqINslaB147i9xqljZqoyf5S+EUlGStaj+t22LT9MOg==", "dev": true, - "license": "BSD-3-Clause", "engines": { "node": ">=16" } @@ -211,22 +210,19 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", - "dev": true, - "license": "Python-2.0" + "dev": true }, "node_modules/ast-parents": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/ast-parents/-/ast-parents-0.0.1.tgz", "integrity": "sha512-XHusKxKz3zoYk1ic8Un640joHbFMhbqneyoZfoKnEGtf2ey9Uh/IdpcQplODdO/kENaMIWsD0nJm4+wX3UNLHA==", - "dev": true, - "license": "MIT" + "dev": true }, "node_modules/astral-regex": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-2.0.0.tgz", "integrity": "sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==", "dev": true, - "license": "MIT", "engines": { "node": ">=8" } @@ -235,15 +231,13 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", - "dev": true, - "license": "MIT" + "dev": true }, "node_modules/brace-expansion": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", "dev": true, - "license": "MIT", "dependencies": { "balanced-match": "^1.0.0" } @@ -253,7 +247,6 @@ "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", "dev": true, - "license": "MIT", "dependencies": { "fill-range": "^7.1.1" }, @@ -266,7 +259,6 @@ "resolved": "https://registry.npmjs.org/cacheable-lookup/-/cacheable-lookup-7.0.0.tgz", "integrity": "sha512-+qJyx4xiKra8mZrcwhjMRMUhD5NR1R8esPkzIYxX96JiecFoxAXFuz/GpR3+ev4PE1WamHip78wV0vcmPQtp8w==", "dev": true, - "license": "MIT", "engines": { "node": ">=14.16" } @@ -276,7 +268,6 @@ "resolved": "https://registry.npmjs.org/cacheable-request/-/cacheable-request-10.2.14.tgz", "integrity": "sha512-zkDT5WAF4hSSoUgyfg5tFIxz8XQK+25W/TLVojJTMKBaxevLBBtLxgqguAuVQB8PVW79FVjHcU+GJ9tVbDZ9mQ==", "dev": true, - "license": "MIT", "dependencies": { "@types/http-cache-semantics": "^4.0.2", "get-stream": "^6.0.1", @@ -290,28 +281,34 @@ "node": ">=14.16" } }, + "node_modules/cacheable-request/node_modules/get-stream": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", + "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/callsites": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", "dev": true, - "license": "MIT", "engines": { "node": ">=6" } }, "node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "version": "5.4.1", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.4.1.tgz", + "integrity": "sha512-zgVZuo2WcZgfUEmsn6eO3kINexW8RAE4maiQ8QNs8CtpPCSyMiYsULR3HQYkm3w8FIA3SberyMJMSldGsW+U3w==", "dev": true, - "license": "MIT", - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, "engines": { - "node": ">=10" + "node": "^12.17.0 || ^14.13 || >=16.0.0" }, "funding": { "url": "https://github.com/chalk/chalk?sponsor=1" @@ -322,7 +319,6 @@ "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-5.0.0.tgz", "integrity": "sha512-aCj4O5wKyszjMmDT4tZj93kxyydN/K5zPWSCe6/0AV/AA1pqe5ZBIw0a2ZfPQV7lL5/yb5HsUreJ6UFAF1tEQw==", "dev": true, - "license": "MIT", "dependencies": { "restore-cursor": "^5.0.0" }, @@ -338,7 +334,6 @@ "resolved": "https://registry.npmjs.org/cli-truncate/-/cli-truncate-4.0.0.tgz", "integrity": "sha512-nPdaFdQ0h/GEigbPClz11D0v/ZJEwxmeVZGeMo3Z5StPtUTkA9o1lD6QwoirYiSDzbcwn2XcjwmCp68W1IS4TA==", "dev": true, - "license": "MIT", "dependencies": { "slice-ansi": "^5.0.0", "string-width": "^7.0.0" @@ -350,109 +345,11 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/cli-truncate/node_modules/ansi-regex": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.1.0.tgz", - "integrity": "sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/ansi-regex?sponsor=1" - } - }, - "node_modules/cli-truncate/node_modules/ansi-styles": { - "version": "6.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz", - "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/cli-truncate/node_modules/emoji-regex": { - "version": "10.4.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-10.4.0.tgz", - "integrity": "sha512-EC+0oUMY1Rqm4O6LLrgjtYDvcVYTy7chDnM4Q7030tP4Kwj3u/pR6gP9ygnp2CJMK5Gq+9Q2oqmrFJAz01DXjw==", - "dev": true, - "license": "MIT" - }, - "node_modules/cli-truncate/node_modules/is-fullwidth-code-point": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-4.0.0.tgz", - "integrity": "sha512-O4L094N2/dZ7xqVdrXhh9r1KODPJpFms8B5sGdJLPy664AgvXsreZUyCQQNItZRDlYug4xStLjNp/sz3HvBowQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/cli-truncate/node_modules/slice-ansi": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-5.0.0.tgz", - "integrity": "sha512-FC+lgizVPfie0kkhqUScwRu1O/lF6NOgJmlCgK+/LYxDCTk8sGelYaHDhFcDN+Sn3Cv+3VSa4Byeo+IMCzpMgQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-styles": "^6.0.0", - "is-fullwidth-code-point": "^4.0.0" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/slice-ansi?sponsor=1" - } - }, - "node_modules/cli-truncate/node_modules/string-width": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-7.2.0.tgz", - "integrity": "sha512-tsaTIkKW9b4N+AEj+SVA+WhJzV7/zMhcSu78mLKWSk7cXMOSHsBKFWUs0fWwq8QyK3MgJBQRX6Gbi4kYbdvGkQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "emoji-regex": "^10.3.0", - "get-east-asian-width": "^1.0.0", - "strip-ansi": "^7.1.0" - }, - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/cli-truncate/node_modules/strip-ansi": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", - "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-regex": "^6.0.1" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/strip-ansi?sponsor=1" - } - }, "node_modules/color-convert": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dev": true, - "license": "MIT", "dependencies": { "color-name": "~1.1.4" }, @@ -464,24 +361,21 @@ "version": "1.1.4", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true, - "license": "MIT" + "dev": true }, "node_modules/colorette": { "version": "2.0.20", "resolved": "https://registry.npmjs.org/colorette/-/colorette-2.0.20.tgz", "integrity": "sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w==", - "dev": true, - "license": "MIT" + "dev": true }, "node_modules/commander": { - "version": "10.0.1", - "resolved": "https://registry.npmjs.org/commander/-/commander-10.0.1.tgz", - "integrity": "sha512-y4Mg2tXshplEbSGzx7amzPwKKOCGuoSRP/CjEdwwk0FOGlUbq6lKuoyDZTNZkmxHdJtp54hdfY/JUrdL7Xfdug==", + "version": "13.1.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-13.1.0.tgz", + "integrity": "sha512-/rFeCpNJQbhSZjGVwO9RFV3xPqbnERS8MmIQzCtD/zl6gpJuV/bMLuN92oG3F7d8oDEHHRrujSXNUr8fpjntKw==", "dev": true, - "license": "MIT", "engines": { - "node": ">=14" + "node": ">=18" } }, "node_modules/config-chain": { @@ -489,7 +383,6 @@ "resolved": "https://registry.npmjs.org/config-chain/-/config-chain-1.1.13.tgz", "integrity": "sha512-qj+f8APARXHrM0hraqXYb2/bOVSV4PvJQlNZ/DVj0QrmNM2q2euizkeuVckQ57J+W0mRH6Hvi+k50M4Jul2VRQ==", "dev": true, - "license": "MIT", "dependencies": { "ini": "^1.3.4", "proto-list": "~1.2.1" @@ -500,7 +393,6 @@ "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-8.3.6.tgz", "integrity": "sha512-kcZ6+W5QzcJ3P1Mt+83OUv/oHFqZHIx8DuxG6eZ5RGMERoLqp4BuGjhHLYGK+Kf5XVkQvqBSmAy/nGWN3qDgEA==", "dev": true, - "license": "MIT", "dependencies": { "import-fresh": "^3.3.0", "js-yaml": "^4.1.0", @@ -527,7 +419,6 @@ "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz", "integrity": "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==", "dev": true, - "license": "MIT", "dependencies": { "path-key": "^3.1.0", "shebang-command": "^2.0.0", @@ -538,11 +429,10 @@ } }, "node_modules/debug": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.0.tgz", - "integrity": "sha512-6WTZ/IxCY/T6BALoZHaE4ctp9xm+Z5kY/pzYaCHRFeyVhojxlrm+46y68HA6hr0TcwEssoxNiDEUJQjfPZ/RYA==", + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.1.tgz", + "integrity": "sha512-KcKCqiftBJcZr++7ykoDIEwSa3XWowTfNPo92BYxjXiyYEVrUQh2aLyhxBCwww+heortUFxEJYcRzosstTEBYQ==", "dev": true, - "license": "MIT", "dependencies": { "ms": "^2.1.3" }, @@ -560,7 +450,6 @@ "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-6.0.0.tgz", "integrity": "sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ==", "dev": true, - "license": "MIT", "dependencies": { "mimic-response": "^3.1.0" }, @@ -576,7 +465,6 @@ "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-3.1.0.tgz", "integrity": "sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ==", "dev": true, - "license": "MIT", "engines": { "node": ">=10" }, @@ -589,7 +477,6 @@ "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz", "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==", "dev": true, - "license": "MIT", "engines": { "node": ">=4.0.0" } @@ -599,24 +486,21 @@ "resolved": "https://registry.npmjs.org/defer-to-connect/-/defer-to-connect-2.0.1.tgz", "integrity": "sha512-4tvttepXG1VaYGrRibk5EwJd1t4udunSOVMdLSAL6mId1ix438oPwPZMALY41FCijukO1L0twNcGsdzS7dHgDg==", "dev": true, - "license": "MIT", "engines": { "node": ">=10" } }, "node_modules/emoji-regex": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", - "dev": true, - "license": "MIT" + "version": "10.4.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-10.4.0.tgz", + "integrity": "sha512-EC+0oUMY1Rqm4O6LLrgjtYDvcVYTy7chDnM4Q7030tP4Kwj3u/pR6gP9ygnp2CJMK5Gq+9Q2oqmrFJAz01DXjw==", + "dev": true }, "node_modules/environment": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/environment/-/environment-1.1.0.tgz", "integrity": "sha512-xUtoPkMggbz0MPyPiIWr1Kp4aeWJjDZ6SMvURhimjdZgsRuDplF5/s9hcgGhyXMhs+6vpnuoiZ2kFiu3FMnS8Q==", "dev": true, - "license": "MIT", "engines": { "node": ">=18" }, @@ -629,7 +513,6 @@ "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", "dev": true, - "license": "MIT", "dependencies": { "is-arrayish": "^0.2.1" } @@ -638,15 +521,13 @@ "version": "5.0.1", "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-5.0.1.tgz", "integrity": "sha512-GWkBvjiSZK87ELrYOSESUYeVIc9mvLLf/nXalMOS5dYrgZq9o5OVkbZAVM06CVxYsCwH9BDZFPlQTlPA1j4ahA==", - "dev": true, - "license": "MIT" + "dev": true }, "node_modules/execa": { "version": "8.0.1", "resolved": "https://registry.npmjs.org/execa/-/execa-8.0.1.tgz", "integrity": "sha512-VyhnebXciFV2DESc+p6B+y0LjSm0krU4OgJN44qFAhBY0TJ+1V61tYD2+wHusZ6F9n5K+vl8k0sTy7PEfV4qpg==", "dev": true, - "license": "MIT", "dependencies": { "cross-spawn": "^7.0.3", "get-stream": "^8.0.1", @@ -665,39 +546,23 @@ "url": "https://github.com/sindresorhus/execa?sponsor=1" } }, - "node_modules/execa/node_modules/get-stream": { - "version": "8.0.1", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-8.0.1.tgz", - "integrity": "sha512-VaUJspBffn/LMCJVoMvSAdmscJyS1auj5Zulnn5UoYcY531UWmdwhRWkcGKnGU93m5HSXP9LP2usOryrBtQowA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=16" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/fast-deep-equal": { "version": "3.1.3", "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", - "dev": true, - "license": "MIT" + "dev": true }, "node_modules/fast-diff": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/fast-diff/-/fast-diff-1.3.0.tgz", "integrity": "sha512-VxPP4NqbUjj6MaAOafWeUn2cXWLcCtljklUtZf0Ind4XQ+QPtmA0b18zZy0jIQx+ExRVCR/ZQpBmik5lXshNsw==", - "dev": true, - "license": "Apache-2.0" + "dev": true }, "node_modules/fast-json-stable-stringify": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", - "dev": true, - "license": "MIT" + "dev": true }, "node_modules/fast-uri": { "version": "3.0.6", @@ -713,15 +578,13 @@ "type": "opencollective", "url": "https://opencollective.com/fastify" } - ], - "license": "BSD-3-Clause" + ] }, "node_modules/fill-range": { "version": "7.1.1", "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", "dev": true, - "license": "MIT", "dependencies": { "to-regex-range": "^5.0.1" }, @@ -734,7 +597,6 @@ "resolved": "https://registry.npmjs.org/form-data-encoder/-/form-data-encoder-2.1.4.tgz", "integrity": "sha512-yDYSgNMraqvnxiEXO4hi88+YZxaHC6QKzb5N84iRCTDeRO7ZALpir/lVmf/uXUhnwUr2O4HU8s/n6x+yNjQkHw==", "dev": true, - "license": "MIT", "engines": { "node": ">= 14.17" } @@ -743,15 +605,13 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", - "dev": true, - "license": "ISC" + "dev": true }, "node_modules/get-east-asian-width": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/get-east-asian-width/-/get-east-asian-width-1.3.0.tgz", "integrity": "sha512-vpeMIQKxczTD/0s2CdEWHcb0eeJe6TFjxb+J5xgX7hScxqrGuyjmv4c1D4A/gelKfyox0gJJwIHF+fLjeaM8kQ==", "dev": true, - "license": "MIT", "engines": { "node": ">=18" }, @@ -760,13 +620,12 @@ } }, "node_modules/get-stream": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", - "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-8.0.1.tgz", + "integrity": "sha512-VaUJspBffn/LMCJVoMvSAdmscJyS1auj5Zulnn5UoYcY531UWmdwhRWkcGKnGU93m5HSXP9LP2usOryrBtQowA==", "dev": true, - "license": "MIT", "engines": { - "node": ">=10" + "node": ">=16" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" @@ -778,7 +637,6 @@ "integrity": "sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==", "deprecated": "Glob versions prior to v9 are no longer supported", "dev": true, - "license": "ISC", "dependencies": { "fs.realpath": "^1.0.0", "inflight": "^1.0.4", @@ -798,7 +656,6 @@ "resolved": "https://registry.npmjs.org/got/-/got-12.6.1.tgz", "integrity": "sha512-mThBblvlAF1d4O5oqyvN+ZxLAYwIJK7bpMxgYqPD9okW0C3qm5FFn7k811QrcuEBwaogR3ngOFoCfs6mRv7teQ==", "dev": true, - "license": "MIT", "dependencies": { "@sindresorhus/is": "^5.2.0", "@szmarczak/http-timer": "^5.0.1", @@ -819,36 +676,44 @@ "url": "https://github.com/sindresorhus/got?sponsor=1" } }, + "node_modules/got/node_modules/get-stream": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", + "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/graceful-fs": { "version": "4.2.10", "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.10.tgz", "integrity": "sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==", - "dev": true, - "license": "ISC" + "dev": true }, "node_modules/has-flag": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true, - "license": "MIT", "engines": { "node": ">=8" } }, "node_modules/http-cache-semantics": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.1.1.tgz", - "integrity": "sha512-er295DKPVsV82j5kw1Gjt+ADA/XYHsajl82cGNQG2eyoPkvgUhX+nDIyelzhIWbbsXP39EHcI6l5tYs2FYqYXQ==", - "dev": true, - "license": "BSD-2-Clause" + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.2.0.tgz", + "integrity": "sha512-dTxcvPXqPvXBQpq5dUr6mEMJX4oIEFv6bwom3FDwKRDsuIjjJGANqhBuoAn9c1RQJIdAKav33ED65E2ys+87QQ==", + "dev": true }, "node_modules/http2-wrapper": { "version": "2.2.1", "resolved": "https://registry.npmjs.org/http2-wrapper/-/http2-wrapper-2.2.1.tgz", "integrity": "sha512-V5nVw1PAOgfI3Lmeaj2Exmeg7fenjhRUgz1lPSezy1CuhPYbgQtbQj4jZfEAEMlaL+vupsvhjqCyjzob0yxsmQ==", "dev": true, - "license": "MIT", "dependencies": { "quick-lru": "^5.1.1", "resolve-alpn": "^1.2.0" @@ -862,7 +727,6 @@ "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-5.0.0.tgz", "integrity": "sha512-AXcZb6vzzrFAUE61HnN4mpLqd/cSIwNQjtNWR0euPm6y0iqx3G4gOXaIDdtdDwZmhwe82LA6+zinmW4UBWVePQ==", "dev": true, - "license": "Apache-2.0", "engines": { "node": ">=16.17.0" } @@ -872,7 +736,6 @@ "resolved": "https://registry.npmjs.org/husky/-/husky-9.1.7.tgz", "integrity": "sha512-5gs5ytaNjBrh5Ow3zrvdUUY+0VxIuWVL4i9irt6friV+BqdCfmV11CQTWMiBYWHbXhco+J1kHfTOUkePhCDvMA==", "dev": true, - "license": "MIT", "bin": { "husky": "bin.js" }, @@ -888,7 +751,6 @@ "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.2.tgz", "integrity": "sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==", "dev": true, - "license": "MIT", "engines": { "node": ">= 4" } @@ -898,7 +760,6 @@ "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.1.tgz", "integrity": "sha512-TR3KfrTZTYLPB6jUjfx6MF9WcWrHL9su5TObK4ZkYgBdWKPOFoSoQIdEuTuR82pmtxH2spWG9h6etwfr1pLBqQ==", "dev": true, - "license": "MIT", "dependencies": { "parent-module": "^1.0.0", "resolve-from": "^4.0.0" @@ -916,7 +777,6 @@ "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", "deprecated": "This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful.", "dev": true, - "license": "ISC", "dependencies": { "once": "^1.3.0", "wrappy": "1" @@ -926,31 +786,30 @@ "version": "2.0.4", "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", - "dev": true, - "license": "ISC" + "dev": true }, "node_modules/ini": { "version": "1.3.8", "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==", - "dev": true, - "license": "ISC" + "dev": true }, "node_modules/is-arrayish": { "version": "0.2.1", "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==", - "dev": true, - "license": "MIT" + "dev": true }, "node_modules/is-fullwidth-code-point": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-4.0.0.tgz", + "integrity": "sha512-O4L094N2/dZ7xqVdrXhh9r1KODPJpFms8B5sGdJLPy664AgvXsreZUyCQQNItZRDlYug4xStLjNp/sz3HvBowQ==", "dev": true, - "license": "MIT", "engines": { - "node": ">=8" + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/is-number": { @@ -958,7 +817,6 @@ "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", "dev": true, - "license": "MIT", "engines": { "node": ">=0.12.0" } @@ -968,7 +826,6 @@ "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-3.0.0.tgz", "integrity": "sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==", "dev": true, - "license": "MIT", "engines": { "node": "^12.20.0 || ^14.13.1 || >=16.0.0" }, @@ -980,22 +837,19 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", - "dev": true, - "license": "ISC" + "dev": true }, "node_modules/js-tokens": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", - "dev": true, - "license": "MIT" + "dev": true }, "node_modules/js-yaml": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", "dev": true, - "license": "MIT", "dependencies": { "argparse": "^2.0.1" }, @@ -1007,29 +861,25 @@ "version": "3.0.1", "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz", "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==", - "dev": true, - "license": "MIT" + "dev": true }, "node_modules/json-parse-even-better-errors": { "version": "2.3.1", "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==", - "dev": true, - "license": "MIT" + "dev": true }, "node_modules/json-schema-traverse": { "version": "0.4.1", "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", - "dev": true, - "license": "MIT" + "dev": true }, "node_modules/keyv": { "version": "4.5.4", "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz", "integrity": "sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==", "dev": true, - "license": "MIT", "dependencies": { "json-buffer": "3.0.1" } @@ -1039,7 +889,6 @@ "resolved": "https://registry.npmjs.org/latest-version/-/latest-version-7.0.0.tgz", "integrity": "sha512-KvNT4XqAMzdcL6ka6Tl3i2lYeFDgXNCuIX+xNx6ZMVR1dFq+idXd9FLKNMOIx0t9mJ9/HudyX4oZWXZQ0UJHeg==", "dev": true, - "license": "MIT", "dependencies": { "package-json": "^8.1.0" }, @@ -1055,7 +904,6 @@ "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-3.1.3.tgz", "integrity": "sha512-/vlFKAoH5Cgt3Ie+JLhRbwOsCQePABiU3tJ1egGvyQ+33R/vcwM2Zl2QR/LzjsBeItPt3oSVXapn+m4nQDvpzw==", "dev": true, - "license": "MIT", "engines": { "node": ">=14" }, @@ -1067,15 +915,13 @@ "version": "1.2.4", "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz", "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==", - "dev": true, - "license": "MIT" + "dev": true }, "node_modules/lint-staged": { - "version": "15.5.1", - "resolved": "https://registry.npmjs.org/lint-staged/-/lint-staged-15.5.1.tgz", - "integrity": "sha512-6m7u8mue4Xn6wK6gZvSCQwBvMBR36xfY24nF5bMTf2MHDYG6S3yhJuOgdYVw99hsjyDt2d4z168b3naI8+NWtQ==", + "version": "15.5.2", + "resolved": "https://registry.npmjs.org/lint-staged/-/lint-staged-15.5.2.tgz", + "integrity": "sha512-YUSOLq9VeRNAo/CTaVmhGDKG+LBtA8KF1X4K5+ykMSwWST1vDxJRB2kv2COgLb1fvpCo+A/y9A0G0znNVmdx4w==", "dev": true, - "license": "MIT", "dependencies": { "chalk": "^5.4.1", "commander": "^13.1.0", @@ -1098,35 +944,11 @@ "url": "https://opencollective.com/lint-staged" } }, - "node_modules/lint-staged/node_modules/chalk": { - "version": "5.4.1", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.4.1.tgz", - "integrity": "sha512-zgVZuo2WcZgfUEmsn6eO3kINexW8RAE4maiQ8QNs8CtpPCSyMiYsULR3HQYkm3w8FIA3SberyMJMSldGsW+U3w==", - "dev": true, - "license": "MIT", - "engines": { - "node": "^12.17.0 || ^14.13 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/lint-staged/node_modules/commander": { - "version": "13.1.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-13.1.0.tgz", - "integrity": "sha512-/rFeCpNJQbhSZjGVwO9RFV3xPqbnERS8MmIQzCtD/zl6gpJuV/bMLuN92oG3F7d8oDEHHRrujSXNUr8fpjntKw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=18" - } - }, "node_modules/listr2": { - "version": "8.3.2", - "resolved": "https://registry.npmjs.org/listr2/-/listr2-8.3.2.tgz", - "integrity": "sha512-vsBzcU4oE+v0lj4FhVLzr9dBTv4/fHIa57l+GCwovP8MoFNZJTOhGU8PXd4v2VJCbECAaijBiHntiekFMLvo0g==", + "version": "8.3.3", + "resolved": "https://registry.npmjs.org/listr2/-/listr2-8.3.3.tgz", + "integrity": "sha512-LWzX2KsqcB1wqQ4AHgYb4RsDXauQiqhjLk+6hjbaeHG4zpjjVAB6wC/gz6X0l+Du1cN3pUB5ZlrvTbhGSNnUQQ==", "dev": true, - "license": "MIT", "dependencies": { "cli-truncate": "^4.0.0", "colorette": "^2.0.20", @@ -1143,22 +965,19 @@ "version": "4.17.21", "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", - "dev": true, - "license": "MIT" + "dev": true }, "node_modules/lodash.truncate": { "version": "4.4.2", "resolved": "https://registry.npmjs.org/lodash.truncate/-/lodash.truncate-4.4.2.tgz", "integrity": "sha512-jttmRe7bRse52OsWIMDLaXxWqRAmtIUccAQ3garviCqJjafXOfNMO0yMfNpdD6zbGaTU0P5Nz7e7gAT6cKmJRw==", - "dev": true, - "license": "MIT" + "dev": true }, "node_modules/log-update": { "version": "6.1.0", "resolved": "https://registry.npmjs.org/log-update/-/log-update-6.1.0.tgz", "integrity": "sha512-9ie8ItPR6tjY5uYJh8K/Zrv/RMZ5VOlOWvtZdEHYSTFKZfIBPQa9tOAEeAWhd+AnIneLJ22w5fjOYtoutpWq5w==", "dev": true, - "license": "MIT", "dependencies": { "ansi-escapes": "^7.0.0", "cli-cursor": "^5.0.0", @@ -1173,46 +992,19 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/log-update/node_modules/ansi-regex": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.1.0.tgz", - "integrity": "sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA==", + "node_modules/log-update/node_modules/is-fullwidth-code-point": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-5.0.0.tgz", + "integrity": "sha512-OVa3u9kkBbw7b8Xw5F9P+D/T9X+Z4+JruYVNapTjPYZYUznQ5YfWeFkOj606XYYW8yugTfC8Pj0hYqvi4ryAhA==", "dev": true, - "license": "MIT", + "dependencies": { + "get-east-asian-width": "^1.0.0" + }, "engines": { - "node": ">=12" + "node": ">=18" }, "funding": { - "url": "https://github.com/chalk/ansi-regex?sponsor=1" - } - }, - "node_modules/log-update/node_modules/ansi-styles": { - "version": "6.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz", - "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/log-update/node_modules/is-fullwidth-code-point": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-5.0.0.tgz", - "integrity": "sha512-OVa3u9kkBbw7b8Xw5F9P+D/T9X+Z4+JruYVNapTjPYZYUznQ5YfWeFkOj606XYYW8yugTfC8Pj0hYqvi4ryAhA==", - "dev": true, - "license": "MIT", - "dependencies": { - "get-east-asian-width": "^1.0.0" - }, - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/log-update/node_modules/slice-ansi": { @@ -1220,7 +1012,6 @@ "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-7.1.0.tgz", "integrity": "sha512-bSiSngZ/jWeX93BqeIAbImyTbEihizcwNjFoRUIY/T1wWQsfsm2Vw1agPKylXvQTU7iASGdHhyqRlqQzfz+Htg==", "dev": true, - "license": "MIT", "dependencies": { "ansi-styles": "^6.2.1", "is-fullwidth-code-point": "^5.0.0" @@ -1232,28 +1023,11 @@ "url": "https://github.com/chalk/slice-ansi?sponsor=1" } }, - "node_modules/log-update/node_modules/strip-ansi": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", - "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-regex": "^6.0.1" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/strip-ansi?sponsor=1" - } - }, "node_modules/lowercase-keys": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-3.0.0.tgz", "integrity": "sha512-ozCC6gdQ+glXOQsveKD0YsDy8DSQFjDTz4zyzEHNV5+JP5D62LmfDZ6o1cycFx9ouG940M5dE8C8CTewdj2YWQ==", "dev": true, - "license": "MIT", "engines": { "node": "^12.20.0 || ^14.13.1 || >=16.0.0" }, @@ -1265,15 +1039,13 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", - "dev": true, - "license": "MIT" + "dev": true }, "node_modules/micromatch": { "version": "4.0.8", "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz", "integrity": "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==", "dev": true, - "license": "MIT", "dependencies": { "braces": "^3.0.3", "picomatch": "^2.3.1" @@ -1287,7 +1059,6 @@ "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-4.0.0.tgz", "integrity": "sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==", "dev": true, - "license": "MIT", "engines": { "node": ">=12" }, @@ -1300,7 +1071,6 @@ "resolved": "https://registry.npmjs.org/mimic-function/-/mimic-function-5.0.1.tgz", "integrity": "sha512-VP79XUPxV2CigYP3jWwAUFSku2aKqBH7uTAapFWCBqutsbmDo96KY5o8uh6U+/YSIn5OxJnXp73beVkpqMIGhA==", "dev": true, - "license": "MIT", "engines": { "node": ">=18" }, @@ -1313,7 +1083,6 @@ "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-4.0.0.tgz", "integrity": "sha512-e5ISH9xMYU0DzrT+jl8q2ze9D6eWBto+I8CNpe+VI+K2J/F/k3PdkdTdz4wvGVH4NTpo+NRYTVIuMQEMMcsLqg==", "dev": true, - "license": "MIT", "engines": { "node": "^12.20.0 || ^14.13.1 || >=16.0.0" }, @@ -1326,7 +1095,6 @@ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz", "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==", "dev": true, - "license": "ISC", "dependencies": { "brace-expansion": "^2.0.1" }, @@ -1339,7 +1107,6 @@ "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", "dev": true, - "license": "MIT", "funding": { "url": "https://github.com/sponsors/ljharb" } @@ -1348,15 +1115,13 @@ "version": "2.1.3", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", - "dev": true, - "license": "MIT" + "dev": true }, "node_modules/normalize-url": { "version": "8.0.1", "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-8.0.1.tgz", "integrity": "sha512-IO9QvjUMWxPQQhs60oOu10CRkWCiZzSUkzbXGGV9pviYl1fXYcvkzQ5jV9z8Y6un8ARoVRl4EtC6v6jNqbaJ/w==", "dev": true, - "license": "MIT", "engines": { "node": ">=14.16" }, @@ -1369,7 +1134,6 @@ "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-5.3.0.tgz", "integrity": "sha512-ppwTtiJZq0O/ai0z7yfudtBpWIoxM8yE6nHi1X47eFR2EWORqfbu6CnPlNsjeN683eT0qG6H/Pyf9fCcvjnnnQ==", "dev": true, - "license": "MIT", "dependencies": { "path-key": "^4.0.0" }, @@ -1385,7 +1149,6 @@ "resolved": "https://registry.npmjs.org/path-key/-/path-key-4.0.0.tgz", "integrity": "sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==", "dev": true, - "license": "MIT", "engines": { "node": ">=12" }, @@ -1398,7 +1161,6 @@ "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", "dev": true, - "license": "ISC", "dependencies": { "wrappy": "1" } @@ -1408,7 +1170,6 @@ "resolved": "https://registry.npmjs.org/onetime/-/onetime-6.0.0.tgz", "integrity": "sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ==", "dev": true, - "license": "MIT", "dependencies": { "mimic-fn": "^4.0.0" }, @@ -1424,7 +1185,6 @@ "resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-3.0.0.tgz", "integrity": "sha512-mlVgR3PGuzlo0MmTdk4cXqXWlwQDLnONTAg6sm62XkMJEiRxN3GL3SffkYvqwonbkJBcrI7Uvv5Zh9yjvn2iUw==", "dev": true, - "license": "MIT", "engines": { "node": ">=12.20" } @@ -1434,7 +1194,6 @@ "resolved": "https://registry.npmjs.org/package-json/-/package-json-8.1.1.tgz", "integrity": "sha512-cbH9IAIJHNj9uXi196JVsRlt7cHKak6u/e6AkL/bkRelZ7rlL3X1YKxsZwa36xipOEKAsdtmaG6aAJoM1fx2zA==", "dev": true, - "license": "MIT", "dependencies": { "got": "^12.1.0", "registry-auth-token": "^5.0.1", @@ -1453,7 +1212,6 @@ "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", "dev": true, - "license": "MIT", "dependencies": { "callsites": "^3.0.0" }, @@ -1466,7 +1224,6 @@ "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", "dev": true, - "license": "MIT", "dependencies": { "@babel/code-frame": "^7.0.0", "error-ex": "^1.3.1", @@ -1485,7 +1242,6 @@ "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", "dev": true, - "license": "MIT", "engines": { "node": ">=8" } @@ -1495,7 +1251,6 @@ "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", "dev": true, - "license": "MIT", "engines": { "node": ">=8" } @@ -1504,15 +1259,13 @@ "version": "1.1.1", "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz", "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==", - "dev": true, - "license": "ISC" + "dev": true }, "node_modules/picomatch": { "version": "2.3.1", "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", "dev": true, - "license": "MIT", "engines": { "node": ">=8.6" }, @@ -1525,7 +1278,6 @@ "resolved": "https://registry.npmjs.org/pidtree/-/pidtree-0.6.0.tgz", "integrity": "sha512-eG2dWTVw5bzqGRztnHExczNxt5VGsE6OwTeCG3fdUf9KBsZzO3R5OIIIzWR+iZA0NtZ+RDVdaoE2dK1cn6jH4g==", "dev": true, - "license": "MIT", "bin": { "pidtree": "bin/pidtree.js" }, @@ -1538,7 +1290,6 @@ "resolved": "https://registry.npmjs.org/pluralize/-/pluralize-8.0.0.tgz", "integrity": "sha512-Nc3IT5yHzflTfbjgqWcCPpo7DaKy4FnpB0l/zCAW0Tc7jxAiuqSxHasntB3D7887LSrA93kDJ9IXovxJYxyLCA==", "dev": true, - "license": "MIT", "engines": { "node": ">=4" } @@ -1548,7 +1299,6 @@ "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.5.3.tgz", "integrity": "sha512-QQtaxnoDJeAkDvDKWCLiwIXkTgRhwYDEQCghU9Z6q03iyek/rxRh/2lC3HB7P8sWT2xC/y5JDctPLBIGzHKbhw==", "dev": true, - "license": "MIT", "bin": { "prettier": "bin/prettier.cjs" }, @@ -1560,35 +1310,33 @@ } }, "node_modules/prettier-plugin-solidity": { - "version": "1.4.2", - "resolved": "https://registry.npmjs.org/prettier-plugin-solidity/-/prettier-plugin-solidity-1.4.2.tgz", - "integrity": "sha512-VVD/4XlDjSzyPWWCPW8JEleFa8JNKFYac5kNlMjVXemQyQZKfpekPMhFZSePuXB6L+RixlFvWe20iacGjFYrLw==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/prettier-plugin-solidity/-/prettier-plugin-solidity-2.0.0.tgz", + "integrity": "sha512-tis3SwLSrYKDzzRFle48fjPM4GQKBtkVBUajAkt4b75/cc6zojFP7qjz6fDxKfup+34q0jKeSM3QeP9flJFXWw==", "dev": true, - "license": "MIT", "dependencies": { - "@solidity-parser/parser": "^0.19.0", - "semver": "^7.6.3" + "@nomicfoundation/slang": "1.1.0", + "@solidity-parser/parser": "^0.20.1", + "semver": "^7.7.1" }, "engines": { "node": ">=18" }, "peerDependencies": { - "prettier": ">=2.3.0" + "prettier": ">=3.0.0" } }, "node_modules/proto-list": { "version": "1.2.4", "resolved": "https://registry.npmjs.org/proto-list/-/proto-list-1.2.4.tgz", "integrity": "sha512-vtK/94akxsTMhe0/cbfpR+syPuszcuwhqVjJq26CuNDgFGj682oRBXOP5MJpv2r7JtE8MsiepGIqvvOTBwn2vA==", - "dev": true, - "license": "ISC" + "dev": true }, "node_modules/punycode": { "version": "2.3.1", "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==", "dev": true, - "license": "MIT", "engines": { "node": ">=6" } @@ -1598,7 +1346,6 @@ "resolved": "https://registry.npmjs.org/quick-lru/-/quick-lru-5.1.1.tgz", "integrity": "sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA==", "dev": true, - "license": "MIT", "engines": { "node": ">=10" }, @@ -1611,7 +1358,6 @@ "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz", "integrity": "sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==", "dev": true, - "license": "(BSD-2-Clause OR MIT OR Apache-2.0)", "dependencies": { "deep-extend": "^0.6.0", "ini": "~1.3.0", @@ -1627,7 +1373,6 @@ "resolved": "https://registry.npmjs.org/registry-auth-token/-/registry-auth-token-5.1.0.tgz", "integrity": "sha512-GdekYuwLXLxMuFTwAPg5UKGLW/UXzQrZvH/Zj791BQif5T05T0RsaLfHc9q3ZOKi7n+BoprPD9mJ0O0k4xzUlw==", "dev": true, - "license": "MIT", "dependencies": { "@pnpm/npm-conf": "^2.1.0" }, @@ -1640,7 +1385,6 @@ "resolved": "https://registry.npmjs.org/registry-url/-/registry-url-6.0.1.tgz", "integrity": "sha512-+crtS5QjFRqFCoQmvGduwYWEBng99ZvmFvF+cUJkGYF1L1BfU8C6Zp9T7f5vPAwyLkUExpvK+ANVZmGU49qi4Q==", "dev": true, - "license": "MIT", "dependencies": { "rc": "1.2.8" }, @@ -1656,7 +1400,6 @@ "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==", "dev": true, - "license": "MIT", "engines": { "node": ">=0.10.0" } @@ -1665,15 +1408,13 @@ "version": "1.2.1", "resolved": "https://registry.npmjs.org/resolve-alpn/-/resolve-alpn-1.2.1.tgz", "integrity": "sha512-0a1F4l73/ZFZOakJnQ3FvkJ2+gSTQWz/r2KE5OdDY0TxPm5h4GkqkWWfM47T7HsbnOtcJVEF4epCVy6u7Q3K+g==", - "dev": true, - "license": "MIT" + "dev": true }, "node_modules/resolve-from": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", "dev": true, - "license": "MIT", "engines": { "node": ">=4" } @@ -1683,7 +1424,6 @@ "resolved": "https://registry.npmjs.org/responselike/-/responselike-3.0.0.tgz", "integrity": "sha512-40yHxbNcl2+rzXvZuVkrYohathsSJlMTXKryG5y8uciHv1+xDLHQpgjG64JUO9nrEq2jGLH6IZ8BcZyw3wrweg==", "dev": true, - "license": "MIT", "dependencies": { "lowercase-keys": "^3.0.0" }, @@ -1699,7 +1439,6 @@ "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-5.1.0.tgz", "integrity": "sha512-oMA2dcrw6u0YfxJQXm342bFKX/E4sG9rbTzO9ptUcR/e8A33cHuvStiYOwH7fszkZlZ1z/ta9AAoPk2F4qIOHA==", "dev": true, - "license": "MIT", "dependencies": { "onetime": "^7.0.0", "signal-exit": "^4.1.0" @@ -1716,7 +1455,6 @@ "resolved": "https://registry.npmjs.org/onetime/-/onetime-7.0.0.tgz", "integrity": "sha512-VXJjc87FScF88uafS3JllDgvAm+c/Slfz06lorj2uAY34rlUu0Nt+v8wreiImcrgAjjIHp1rXpTDlLOGw29WwQ==", "dev": true, - "license": "MIT", "dependencies": { "mimic-function": "^5.0.0" }, @@ -1731,15 +1469,13 @@ "version": "1.4.1", "resolved": "https://registry.npmjs.org/rfdc/-/rfdc-1.4.1.tgz", "integrity": "sha512-q1b3N5QkRUWUl7iyylaaj3kOpIT0N2i9MqIEQXP73GVsN9cw3fdx8X63cEmWhJGi2PPCF23Ijp7ktmd39rawIA==", - "dev": true, - "license": "MIT" + "dev": true }, "node_modules/semver": { - "version": "7.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.1.tgz", - "integrity": "sha512-hlq8tAfn0m/61p4BVRcPzIGr6LKiMwo4VM6dGi6pt4qcRkmNzTcWq6eCEjEh+qXjkMDvPlOFFSGwQjoEa6gyMA==", + "version": "7.7.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.2.tgz", + "integrity": "sha512-RF0Fw+rO5AMf9MAyaRXI4AV0Ulj5lMHqVxxdSgiVbixSCXoEmmX/jk0CuJw4+3SqroYO9VoUh+HcuJivvtJemA==", "dev": true, - "license": "ISC", "bin": { "semver": "bin/semver.js" }, @@ -1752,7 +1488,6 @@ "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", "dev": true, - "license": "MIT", "dependencies": { "shebang-regex": "^3.0.0" }, @@ -1765,7 +1500,6 @@ "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", "dev": true, - "license": "MIT", "engines": { "node": ">=8" } @@ -1775,7 +1509,6 @@ "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", "dev": true, - "license": "ISC", "engines": { "node": ">=14" }, @@ -1784,18 +1517,16 @@ } }, "node_modules/slice-ansi": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-4.0.0.tgz", - "integrity": "sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-5.0.0.tgz", + "integrity": "sha512-FC+lgizVPfie0kkhqUScwRu1O/lF6NOgJmlCgK+/LYxDCTk8sGelYaHDhFcDN+Sn3Cv+3VSa4Byeo+IMCzpMgQ==", "dev": true, - "license": "MIT", "dependencies": { - "ansi-styles": "^4.0.0", - "astral-regex": "^2.0.0", - "is-fullwidth-code-point": "^3.0.0" + "ansi-styles": "^6.0.0", + "is-fullwidth-code-point": "^4.0.0" }, "engines": { - "node": ">=10" + "node": ">=12" }, "funding": { "url": "https://github.com/chalk/slice-ansi?sponsor=1" @@ -1806,7 +1537,6 @@ "resolved": "https://registry.npmjs.org/solhint/-/solhint-5.1.0.tgz", "integrity": "sha512-KWg4gnOnznxHXzH0fUvnhnxnk+1R50GiPChcPeQgA7SKQTSF1LLIEh8R1qbkCEn/fFzz4CfJs+Gh7Rl9uhHy+g==", "dev": true, - "license": "MIT", "dependencies": { "@solidity-parser/parser": "^0.20.0", "ajv": "^6.12.6", @@ -1834,19 +1564,60 @@ "prettier": "^2.8.3" } }, - "node_modules/solhint/node_modules/@solidity-parser/parser": { - "version": "0.20.1", - "resolved": "https://registry.npmjs.org/@solidity-parser/parser/-/parser-0.20.1.tgz", - "integrity": "sha512-58I2sRpzaQUN+jJmWbHfbWf9AKfzqCI8JAdFB0vbyY+u8tBRcuTt9LxzasvR0LGQpcRv97eyV7l61FQ3Ib7zVw==", + "node_modules/solhint/node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/solhint/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, - "license": "MIT" + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/solhint/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/solhint/node_modules/commander": { + "version": "10.0.1", + "resolved": "https://registry.npmjs.org/commander/-/commander-10.0.1.tgz", + "integrity": "sha512-y4Mg2tXshplEbSGzx7amzPwKKOCGuoSRP/CjEdwwk0FOGlUbq6lKuoyDZTNZkmxHdJtp54hdfY/JUrdL7Xfdug==", + "dev": true, + "engines": { + "node": ">=14" + } }, "node_modules/solhint/node_modules/prettier": { "version": "2.8.8", "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.8.8.tgz", "integrity": "sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q==", "dev": true, - "license": "MIT", "optional": true, "bin": { "prettier": "bin-prettier.js" @@ -1858,42 +1629,57 @@ "url": "https://github.com/prettier/prettier?sponsor=1" } }, + "node_modules/solhint/node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/string-argv": { "version": "0.3.2", "resolved": "https://registry.npmjs.org/string-argv/-/string-argv-0.3.2.tgz", "integrity": "sha512-aqD2Q0144Z+/RqG52NeHEkZauTAUWJO8c6yTftGJKO3Tja5tUgIfmIl6kExvhtxSDP7fXB6DvzkfMpCd/F3G+Q==", "dev": true, - "license": "MIT", "engines": { "node": ">=0.6.19" } }, "node_modules/string-width": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", - "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-7.2.0.tgz", + "integrity": "sha512-tsaTIkKW9b4N+AEj+SVA+WhJzV7/zMhcSu78mLKWSk7cXMOSHsBKFWUs0fWwq8QyK3MgJBQRX6Gbi4kYbdvGkQ==", "dev": true, - "license": "MIT", "dependencies": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" + "emoji-regex": "^10.3.0", + "get-east-asian-width": "^1.0.0", + "strip-ansi": "^7.1.0" }, "engines": { - "node": ">=8" + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/strip-ansi": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", + "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", "dev": true, - "license": "MIT", "dependencies": { - "ansi-regex": "^5.0.1" + "ansi-regex": "^6.0.1" }, "engines": { - "node": ">=8" + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/strip-ansi?sponsor=1" } }, "node_modules/strip-final-newline": { @@ -1901,7 +1687,6 @@ "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-3.0.0.tgz", "integrity": "sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw==", "dev": true, - "license": "MIT", "engines": { "node": ">=12" }, @@ -1914,7 +1699,6 @@ "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", "integrity": "sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ==", "dev": true, - "license": "MIT", "engines": { "node": ">=0.10.0" } @@ -1924,7 +1708,6 @@ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dev": true, - "license": "MIT", "dependencies": { "has-flag": "^4.0.0" }, @@ -1937,7 +1720,6 @@ "resolved": "https://registry.npmjs.org/table/-/table-6.9.0.tgz", "integrity": "sha512-9kY+CygyYM6j02t5YFHbNz2FN5QmYGv9zAjVp4lCDjlCw7amdckXlEt/bjMhUIfj4ThGRE4gCUH5+yGnNuPo5A==", "dev": true, - "license": "BSD-3-Clause", "dependencies": { "ajv": "^8.0.1", "lodash.truncate": "^4.4.2", @@ -1954,7 +1736,6 @@ "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.17.1.tgz", "integrity": "sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==", "dev": true, - "license": "MIT", "dependencies": { "fast-deep-equal": "^3.1.3", "fast-uri": "^3.0.1", @@ -1966,26 +1747,105 @@ "url": "https://github.com/sponsors/epoberezkin" } }, + "node_modules/table/node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/table/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/table/node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "dev": true + }, + "node_modules/table/node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "dev": true, + "engines": { + "node": ">=8" + } + }, "node_modules/table/node_modules/json-schema-traverse": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", + "dev": true + }, + "node_modules/table/node_modules/slice-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-4.0.0.tgz", + "integrity": "sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.0.0", + "astral-regex": "^2.0.0", + "is-fullwidth-code-point": "^3.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/slice-ansi?sponsor=1" + } + }, + "node_modules/table/node_modules/string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", "dev": true, - "license": "MIT" + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/table/node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } }, "node_modules/text-table": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==", - "dev": true, - "license": "MIT" + "dev": true }, "node_modules/to-regex-range": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", "dev": true, - "license": "MIT", "dependencies": { "is-number": "^7.0.0" }, @@ -1998,7 +1858,6 @@ "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", "dev": true, - "license": "BSD-2-Clause", "dependencies": { "punycode": "^2.1.0" } @@ -2008,7 +1867,6 @@ "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", "dev": true, - "license": "ISC", "dependencies": { "isexe": "^2.0.0" }, @@ -2024,7 +1882,6 @@ "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-9.0.0.tgz", "integrity": "sha512-G8ura3S+3Z2G+mkgNRq8dqaFZAuxfsxpBB8OCTGRTCtp+l/v9nbFNmCUP1BZMts3G1142MsZfn6eeUKrr4PD1Q==", "dev": true, - "license": "MIT", "dependencies": { "ansi-styles": "^6.2.1", "string-width": "^7.0.0", @@ -2037,91 +1894,22 @@ "url": "https://github.com/chalk/wrap-ansi?sponsor=1" } }, - "node_modules/wrap-ansi/node_modules/ansi-regex": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.1.0.tgz", - "integrity": "sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/ansi-regex?sponsor=1" - } - }, - "node_modules/wrap-ansi/node_modules/ansi-styles": { - "version": "6.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz", - "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/wrap-ansi/node_modules/emoji-regex": { - "version": "10.4.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-10.4.0.tgz", - "integrity": "sha512-EC+0oUMY1Rqm4O6LLrgjtYDvcVYTy7chDnM4Q7030tP4Kwj3u/pR6gP9ygnp2CJMK5Gq+9Q2oqmrFJAz01DXjw==", - "dev": true, - "license": "MIT" - }, - "node_modules/wrap-ansi/node_modules/string-width": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-7.2.0.tgz", - "integrity": "sha512-tsaTIkKW9b4N+AEj+SVA+WhJzV7/zMhcSu78mLKWSk7cXMOSHsBKFWUs0fWwq8QyK3MgJBQRX6Gbi4kYbdvGkQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "emoji-regex": "^10.3.0", - "get-east-asian-width": "^1.0.0", - "strip-ansi": "^7.1.0" - }, - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/wrap-ansi/node_modules/strip-ansi": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", - "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-regex": "^6.0.1" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/strip-ansi?sponsor=1" - } - }, "node_modules/wrappy": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", - "dev": true, - "license": "ISC" + "dev": true }, "node_modules/yaml": { - "version": "2.7.1", - "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.7.1.tgz", - "integrity": "sha512-10ULxpnOCQXxJvBgxsn9ptjq6uviG/htZKk9veJGhlqn3w/DxQ631zFF+nlQXLwmImeS5amR2dl2U8sg6U9jsQ==", + "version": "2.8.0", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.8.0.tgz", + "integrity": "sha512-4lLa/EcQCB0cJkyts+FpIRx5G/llPxfP6VQU5KByHEhLxY3IJCH0f0Hy1MHI8sClTvsIb8qwRJ6R/ZdlDJ/leQ==", "dev": true, - "license": "ISC", "bin": { "yaml": "bin.mjs" }, "engines": { - "node": ">= 14" + "node": ">= 14.6" } } } diff --git a/package.json b/package.json index cd47c75a..bb77fd19 100644 --- a/package.json +++ b/package.json @@ -36,9 +36,9 @@ "devDependencies": { "@openzeppelin/contracts-upgradeable": "^5.3.0", "husky": "^9.1.7", - "lint-staged": "^15.5.1", + "lint-staged": "^15.5.2", "prettier": "^3.5.3", - "prettier-plugin-solidity": "^1.4.2", + "prettier-plugin-solidity": "^2.0.0", "solhint": "^5.1.0" }, "lint-staged": { diff --git a/script/DeployAll.sol b/script/DeployAll.sol index f014367c..4856923a 100644 --- a/script/DeployAll.sol +++ b/script/DeployAll.sol @@ -1,7 +1,9 @@ // SPDX-License-Identifier: GPL-3.0 pragma solidity 0.8.29; -import { ERC1967Proxy } from "@openzeppelin/contracts/proxy/ERC1967/ERC1967Proxy.sol"; +import { + ERC1967Proxy +} from "@openzeppelin/contracts/proxy/ERC1967/ERC1967Proxy.sol"; import { Script, console } from "forge-std/Script.sol"; import { stdJson } from "forge-std/StdJson.sol"; diff --git a/script/DeployAllSepolia.s.sol b/script/DeployAllSepolia.s.sol new file mode 100644 index 00000000..f66ce64f --- /dev/null +++ b/script/DeployAllSepolia.s.sol @@ -0,0 +1,19 @@ +// SPDX-License-Identifier: GPL-3.0 +pragma solidity 0.8.29; + +import { Script, console } from "forge-std/Script.sol"; +import { DeployAll } from "./DeployAll.sol"; + +contract DeployAllHoodi is Script, DeployAll { + function run() external { + if (block.chainid != 11155111) { + revert("This script is only for Sepolia"); + } + + string memory finalJson = _deployAll( + vm.readFile("script/config/sepolia.json") + ); + + vm.writeJson(finalJson, "artifacts/deploy-sepolia.json"); + } +} diff --git a/src/core/SSVBasedApps.sol b/src/core/SSVBasedApps.sol index 288f3959..ea323dc6 100644 --- a/src/core/SSVBasedApps.sol +++ b/src/core/SSVBasedApps.sol @@ -2,17 +2,37 @@ pragma solidity 0.8.29; import { IERC20 } from "@openzeppelin/contracts/token/ERC20/IERC20.sol"; -import { Ownable2StepUpgradeable } from "@openzeppelin/contracts-upgradeable/access/Ownable2StepUpgradeable.sol"; -import { UUPSUpgradeable } from "@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol"; - -import { MIN_EXPIRE_TIME, MIN_TIME_LOCK_PERIOD, MAX_PERCENTAGE, ETH_ADDRESS } from "@ssv/src/core/libraries/ValidationLib.sol"; -import { IBasedAppManager } from "@ssv/src/core/interfaces/IBasedAppManager.sol"; +import { + Ownable2StepUpgradeable +} from "@openzeppelin/contracts-upgradeable/access/Ownable2StepUpgradeable.sol"; +import { + UUPSUpgradeable +} from "@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol"; + +import { + MIN_EXPIRE_TIME, + MIN_TIME_LOCK_PERIOD, + MAX_PERCENTAGE, + ETH_ADDRESS +} from "@ssv/src/core/libraries/ValidationLib.sol"; +import { + IBasedAppManager +} from "@ssv/src/core/interfaces/IBasedAppManager.sol"; import { ICore } from "@ssv/src/core/interfaces/ICore.sol"; import { ISSVBasedApps } from "@ssv/src/core/interfaces/ISSVBasedApps.sol"; -import { IProtocolManager } from "@ssv/src/core/interfaces/IProtocolManager.sol"; -import { IStrategyManager } from "@ssv/src/core/interfaces/IStrategyManager.sol"; -import { CoreStorageLib, SSVCoreModules } from "@ssv/src/core/libraries/CoreStorageLib.sol"; -import { ProtocolStorageLib } from "@ssv/src/core/libraries/ProtocolStorageLib.sol"; +import { + IProtocolManager +} from "@ssv/src/core/interfaces/IProtocolManager.sol"; +import { + IStrategyManager +} from "@ssv/src/core/interfaces/IStrategyManager.sol"; +import { + CoreStorageLib, + SSVCoreModules +} from "@ssv/src/core/libraries/CoreStorageLib.sol"; +import { + ProtocolStorageLib +} from "@ssv/src/core/libraries/ProtocolStorageLib.sol"; /** * @title SSVBasedApps diff --git a/src/core/interfaces/ISSVBasedApps.sol b/src/core/interfaces/ISSVBasedApps.sol index 9451794c..791f1b22 100644 --- a/src/core/interfaces/ISSVBasedApps.sol +++ b/src/core/interfaces/ISSVBasedApps.sol @@ -1,12 +1,20 @@ // SPDX-License-Identifier: GPL-3.0 pragma solidity 0.8.29; -import { IStrategyManager } from "@ssv/src/core/interfaces/IStrategyManager.sol"; -import { IBasedAppManager } from "@ssv/src/core/interfaces/IBasedAppManager.sol"; -import { IProtocolManager } from "@ssv/src/core/interfaces/IProtocolManager.sol"; +import { + IStrategyManager +} from "@ssv/src/core/interfaces/IStrategyManager.sol"; +import { + IBasedAppManager +} from "@ssv/src/core/interfaces/IBasedAppManager.sol"; +import { + IProtocolManager +} from "@ssv/src/core/interfaces/IProtocolManager.sol"; import { IViews } from "@ssv/src/core/interfaces/IViews.sol"; import { SSVCoreModules } from "@ssv/src/core/libraries/CoreStorageLib.sol"; -import { ProtocolStorageLib } from "@ssv/src/core/libraries/ProtocolStorageLib.sol"; +import { + ProtocolStorageLib +} from "@ssv/src/core/libraries/ProtocolStorageLib.sol"; interface ISSVBasedApps is IStrategyManager, diff --git a/src/core/modules/BasedAppsManager.sol b/src/core/modules/BasedAppsManager.sol index 5f5d0c02..f2b3ed9d 100644 --- a/src/core/modules/BasedAppsManager.sol +++ b/src/core/modules/BasedAppsManager.sol @@ -2,9 +2,13 @@ pragma solidity 0.8.29; import { ICore } from "@ssv/src/core/interfaces/ICore.sol"; -import { IBasedAppManager } from "@ssv/src/core/interfaces/IBasedAppManager.sol"; +import { + IBasedAppManager +} from "@ssv/src/core/interfaces/IBasedAppManager.sol"; import { CoreStorageLib } from "@ssv/src/core/libraries/CoreStorageLib.sol"; -import { ProtocolStorageLib } from "@ssv/src/core/libraries/ProtocolStorageLib.sol"; +import { + ProtocolStorageLib +} from "@ssv/src/core/libraries/ProtocolStorageLib.sol"; import { ValidationLib } from "@ssv/src/core/libraries/ValidationLib.sol"; contract BasedAppsManager is IBasedAppManager { diff --git a/src/core/modules/ProtocolManager.sol b/src/core/modules/ProtocolManager.sol index ad45a2fb..a2f5b623 100644 --- a/src/core/modules/ProtocolManager.sol +++ b/src/core/modules/ProtocolManager.sol @@ -1,9 +1,16 @@ // SPDX-License-Identifier: GPL-3.0-or-later pragma solidity 0.8.29; -import { MIN_EXPIRE_TIME, MIN_TIME_LOCK_PERIOD } from "@ssv/src/core/libraries/ValidationLib.sol"; -import { IProtocolManager } from "@ssv/src/core/interfaces/IProtocolManager.sol"; -import { ProtocolStorageLib } from "@ssv/src/core/libraries/ProtocolStorageLib.sol"; +import { + MIN_EXPIRE_TIME, + MIN_TIME_LOCK_PERIOD +} from "@ssv/src/core/libraries/ValidationLib.sol"; +import { + IProtocolManager +} from "@ssv/src/core/interfaces/IProtocolManager.sol"; +import { + ProtocolStorageLib +} from "@ssv/src/core/libraries/ProtocolStorageLib.sol"; import { ISSVBasedApps } from "@ssv/src/core/interfaces/ISSVBasedApps.sol"; contract ProtocolManager is IProtocolManager { diff --git a/src/core/modules/StrategyManager.sol b/src/core/modules/StrategyManager.sol index c172fc45..3bdbd2b8 100644 --- a/src/core/modules/StrategyManager.sol +++ b/src/core/modules/StrategyManager.sol @@ -2,15 +2,29 @@ pragma solidity 0.8.29; import { IERC20 } from "@openzeppelin/contracts/token/ERC20/IERC20.sol"; -import { ReentrancyGuardTransient } from "@openzeppelin/contracts/utils/ReentrancyGuardTransient.sol"; -import { SafeERC20 } from "@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol"; - -import { ValidationLib, MAX_PERCENTAGE, ETH_ADDRESS } from "@ssv/src/core/libraries/ValidationLib.sol"; +import { + ReentrancyGuardTransient +} from "@openzeppelin/contracts/utils/ReentrancyGuardTransient.sol"; +import { + SafeERC20 +} from "@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol"; + +import { + ValidationLib, + MAX_PERCENTAGE, + ETH_ADDRESS +} from "@ssv/src/core/libraries/ValidationLib.sol"; import { ICore } from "@ssv/src/core/interfaces/ICore.sol"; -import { IStrategyManager } from "@ssv/src/core/interfaces/IStrategyManager.sol"; +import { + IStrategyManager +} from "@ssv/src/core/interfaces/IStrategyManager.sol"; import { CoreStorageLib } from "@ssv/src/core/libraries/CoreStorageLib.sol"; -import { ProtocolStorageLib } from "@ssv/src/core/libraries/ProtocolStorageLib.sol"; -import { IBasedAppManager } from "@ssv/src/core/interfaces/IBasedAppManager.sol"; +import { + ProtocolStorageLib +} from "@ssv/src/core/libraries/ProtocolStorageLib.sol"; +import { + IBasedAppManager +} from "@ssv/src/core/interfaces/IBasedAppManager.sol"; import { IBasedApp } from "@ssv/src/middleware/interfaces/IBasedApp.sol"; @@ -534,7 +548,7 @@ contract StrategyManager is ReentrancyGuardTransient, IStrategyManager { if (obligationPercentage != 0) { s - .obligations[strategyId][bApp][token] + .obligations[strategyId][bApp][token] .percentage = obligationPercentage; } diff --git a/src/middleware/examples/WhitelistExample.sol b/src/middleware/examples/WhitelistExample.sol index ec9e344e..45ed2b7e 100644 --- a/src/middleware/examples/WhitelistExample.sol +++ b/src/middleware/examples/WhitelistExample.sol @@ -1,8 +1,12 @@ // SPDX-License-Identifier: GPL-3.0 pragma solidity 0.8.29; -import { BasedAppWhitelisted } from "@ssv/src/middleware/modules/BasedAppWhitelisted.sol"; -import { OwnableBasedApp } from "@ssv/src/middleware/modules/core+roles/OwnableBasedApp.sol"; +import { + BasedAppWhitelisted +} from "@ssv/src/middleware/modules/BasedAppWhitelisted.sol"; +import { + OwnableBasedApp +} from "@ssv/src/middleware/modules/core+roles/OwnableBasedApp.sol"; contract WhitelistExample is OwnableBasedApp, BasedAppWhitelisted { constructor( diff --git a/src/middleware/modules/BasedAppWhitelisted.sol b/src/middleware/modules/BasedAppWhitelisted.sol index 2bdab384..aebb90ef 100644 --- a/src/middleware/modules/BasedAppWhitelisted.sol +++ b/src/middleware/modules/BasedAppWhitelisted.sol @@ -1,7 +1,9 @@ // SPDX-License-Identifier: GPL-3.0 pragma solidity 0.8.29; -import { IBasedAppWhitelisted } from "@ssv/src/middleware/interfaces/IBasedAppWhitelisted.sol"; +import { + IBasedAppWhitelisted +} from "@ssv/src/middleware/interfaces/IBasedAppWhitelisted.sol"; abstract contract BasedAppWhitelisted is IBasedAppWhitelisted { mapping(uint32 => bool) public isWhitelisted; diff --git a/src/middleware/modules/core+roles/AccessControlBasedApp.sol b/src/middleware/modules/core+roles/AccessControlBasedApp.sol index 77f3b193..2a894551 100644 --- a/src/middleware/modules/core+roles/AccessControlBasedApp.sol +++ b/src/middleware/modules/core+roles/AccessControlBasedApp.sol @@ -1,12 +1,18 @@ // SPDX-License-Identifier: GPL-3.0 pragma solidity 0.8.29; -import { AccessControl } from "@openzeppelin/contracts/access/AccessControl.sol"; +import { + AccessControl +} from "@openzeppelin/contracts/access/AccessControl.sol"; import { IBasedApp } from "@ssv/src/middleware/interfaces/IBasedApp.sol"; -import { BasedAppCore } from "@ssv/src/middleware/modules/core/BasedAppCore.sol"; +import { + BasedAppCore +} from "@ssv/src/middleware/modules/core/BasedAppCore.sol"; -import { IBasedAppManager } from "@ssv/src/core/interfaces/IBasedAppManager.sol"; +import { + IBasedAppManager +} from "@ssv/src/core/interfaces/IBasedAppManager.sol"; import { ICore } from "@ssv/src/core/interfaces/ICore.sol"; abstract contract AccessControlBasedApp is BasedAppCore, AccessControl { diff --git a/src/middleware/modules/core+roles/OwnableBasedApp.sol b/src/middleware/modules/core+roles/OwnableBasedApp.sol index 2038b64a..27450933 100644 --- a/src/middleware/modules/core+roles/OwnableBasedApp.sol +++ b/src/middleware/modules/core+roles/OwnableBasedApp.sol @@ -4,9 +4,13 @@ pragma solidity 0.8.29; import { Ownable } from "@openzeppelin/contracts/access/Ownable.sol"; import { IBasedApp } from "@ssv/src/middleware/interfaces/IBasedApp.sol"; -import { BasedAppCore } from "@ssv/src/middleware/modules/core/BasedAppCore.sol"; +import { + BasedAppCore +} from "@ssv/src/middleware/modules/core/BasedAppCore.sol"; -import { IBasedAppManager } from "@ssv/src/core/interfaces/IBasedAppManager.sol"; +import { + IBasedAppManager +} from "@ssv/src/core/interfaces/IBasedAppManager.sol"; import { ICore } from "@ssv/src/core/interfaces/ICore.sol"; abstract contract OwnableBasedApp is Ownable, BasedAppCore { diff --git a/src/middleware/modules/core/BasedAppCore.sol b/src/middleware/modules/core/BasedAppCore.sol index 6a8dd0b4..8647b447 100644 --- a/src/middleware/modules/core/BasedAppCore.sol +++ b/src/middleware/modules/core/BasedAppCore.sol @@ -3,9 +3,13 @@ pragma solidity 0.8.29; import { IBasedApp } from "@ssv/src/middleware/interfaces/IBasedApp.sol"; -import { IBasedAppManager } from "@ssv/src/core/interfaces/IBasedAppManager.sol"; +import { + IBasedAppManager +} from "@ssv/src/core/interfaces/IBasedAppManager.sol"; -import { IStrategyManager } from "@ssv/src/core/interfaces/IStrategyManager.sol"; +import { + IStrategyManager +} from "@ssv/src/core/interfaces/IStrategyManager.sol"; import { ICore } from "@ssv/src/core/interfaces/ICore.sol"; diff --git a/test/Config.t.sol b/test/Config.t.sol index 22f42104..feb36aa4 100644 --- a/test/Config.t.sol +++ b/test/Config.t.sol @@ -3,16 +3,26 @@ pragma solidity 0.8.29; import { Test } from "forge-std/Test.sol"; -import { ERC1967Proxy } from "@openzeppelin/contracts/proxy/ERC1967/ERC1967Proxy.sol"; +import { + ERC1967Proxy +} from "@openzeppelin/contracts/proxy/ERC1967/ERC1967Proxy.sol"; import { BasedAppsManager } from "@ssv/src/core/modules/BasedAppsManager.sol"; -import { IBasedAppManager } from "@ssv/src/core/interfaces/IBasedAppManager.sol"; -import { IProtocolManager } from "@ssv/src/core/interfaces/IProtocolManager.sol"; -import { IStrategyManager } from "@ssv/src/core/interfaces/IStrategyManager.sol"; +import { + IBasedAppManager +} from "@ssv/src/core/interfaces/IBasedAppManager.sol"; +import { + IProtocolManager +} from "@ssv/src/core/interfaces/IProtocolManager.sol"; +import { + IStrategyManager +} from "@ssv/src/core/interfaces/IStrategyManager.sol"; import { SSVBasedApps } from "@ssv/src/core/SSVBasedApps.sol"; import { ProtocolManager } from "@ssv/src/core/modules/ProtocolManager.sol"; import { StrategyManager } from "@ssv/src/core/modules/StrategyManager.sol"; -import { ProtocolStorageLib } from "@ssv/src/core/libraries/ProtocolStorageLib.sol"; +import { + ProtocolStorageLib +} from "@ssv/src/core/libraries/ProtocolStorageLib.sol"; import { ISSVBasedApps } from "@ssv/src/core/interfaces/ISSVBasedApps.sol"; contract Config is Test { diff --git a/test/SSVBasedApps.t.sol b/test/SSVBasedApps.t.sol index 60dc3859..d44735a8 100644 --- a/test/SSVBasedApps.t.sol +++ b/test/SSVBasedApps.t.sol @@ -1,9 +1,17 @@ // SPDX-License-Identifier: GPL-3.0 pragma solidity 0.8.29; -import { Ownable2StepUpgradeable } from "@openzeppelin/contracts-upgradeable/access/Ownable2StepUpgradeable.sol"; - -import { Setup, IStrategyManager, IBasedAppManager, IProtocolManager, SSVBasedApps } from "@ssv/test/helpers/Setup.t.sol"; +import { + Ownable2StepUpgradeable +} from "@openzeppelin/contracts-upgradeable/access/Ownable2StepUpgradeable.sol"; + +import { + Setup, + IStrategyManager, + IBasedAppManager, + IProtocolManager, + SSVBasedApps +} from "@ssv/test/helpers/Setup.t.sol"; import { ISSVBasedApps } from "@ssv/src/core/interfaces/ISSVBasedApps.sol"; import { SSVCoreModules } from "@ssv/src/core/libraries/CoreStorageLib.sol"; diff --git a/test/helpers/Setup.t.sol b/test/helpers/Setup.t.sol index 481958de..1a3ebece 100644 --- a/test/helpers/Setup.t.sol +++ b/test/helpers/Setup.t.sol @@ -3,24 +3,36 @@ pragma solidity 0.8.29; import { Test } from "forge-std/Test.sol"; -import { ERC1967Proxy } from "@openzeppelin/contracts/proxy/ERC1967/ERC1967Proxy.sol"; +import { + ERC1967Proxy +} from "@openzeppelin/contracts/proxy/ERC1967/ERC1967Proxy.sol"; import { BasedAppMock } from "@ssv/test/mocks/MockBApp.sol"; import { BasedAppMock2 } from "@ssv/test/mocks/MockBApp2.sol"; import { BasedAppMock3 } from "@ssv/test/mocks/MockBAppAccessControl.sol"; import { BasedAppMock4 } from "@ssv/test/mocks/MockBApp4RejectEth.sol"; import { BasedAppsManager } from "@ssv/src/core/modules/BasedAppsManager.sol"; -import { IBasedAppManager } from "@ssv/src/core/interfaces/IBasedAppManager.sol"; +import { + IBasedAppManager +} from "@ssv/src/core/interfaces/IBasedAppManager.sol"; import { IERC20, ERC20Mock } from "@ssv/test/mocks/MockERC20.sol"; -import { IProtocolManager } from "@ssv/src/core/interfaces/IProtocolManager.sol"; -import { IStrategyManager } from "@ssv/src/core/interfaces/IStrategyManager.sol"; +import { + IProtocolManager +} from "@ssv/src/core/interfaces/IProtocolManager.sol"; +import { + IStrategyManager +} from "@ssv/src/core/interfaces/IStrategyManager.sol"; import { NonCompliantBApp } from "@ssv/test/mocks/MockNonCompliantBApp.sol"; import { SSVBasedApps } from "@ssv/src/core/SSVBasedApps.sol"; import { ProtocolManager } from "@ssv/src/core/modules/ProtocolManager.sol"; import { StrategyManager } from "@ssv/src/core/modules/StrategyManager.sol"; -import { ProtocolStorageLib } from "@ssv/src/core/libraries/ProtocolStorageLib.sol"; +import { + ProtocolStorageLib +} from "@ssv/src/core/libraries/ProtocolStorageLib.sol"; -import { WhitelistExample } from "@ssv/src/middleware/examples/WhitelistExample.sol"; +import { + WhitelistExample +} from "@ssv/src/middleware/examples/WhitelistExample.sol"; import { IBasedApp } from "@ssv/src/middleware/interfaces/IBasedApp.sol"; contract Setup is Test { diff --git a/test/middleware/examples/WhitelistExample.t.sol b/test/middleware/examples/WhitelistExample.t.sol index 59406e5b..6ffe0cba 100644 --- a/test/middleware/examples/WhitelistExample.t.sol +++ b/test/middleware/examples/WhitelistExample.t.sol @@ -1,7 +1,9 @@ // SPDX-License-Identifier: GPL-3.0 pragma solidity 0.8.29; -import { IBasedAppWhitelisted } from "@ssv/src/middleware/interfaces/IBasedAppWhitelisted.sol"; +import { + IBasedAppWhitelisted +} from "@ssv/src/middleware/interfaces/IBasedAppWhitelisted.sol"; import { IBasedApp } from "@ssv/test/helpers/Setup.t.sol"; import { UtilsTest } from "@ssv/test/helpers/Utils.t.sol"; import { ICore } from "@ssv/src/core/interfaces/ICore.sol"; diff --git a/test/mocks/MockBApp.sol b/test/mocks/MockBApp.sol index db494642..3e895316 100644 --- a/test/mocks/MockBApp.sol +++ b/test/mocks/MockBApp.sol @@ -1,7 +1,9 @@ // SPDX-License-Identifier: GPL-3.0 pragma solidity 0.8.29; -import { OwnableBasedApp } from "@ssv/src/middleware/modules/core+roles/OwnableBasedApp.sol"; +import { + OwnableBasedApp +} from "@ssv/src/middleware/modules/core+roles/OwnableBasedApp.sol"; contract BasedAppMock is OwnableBasedApp { event OptInToBApp( diff --git a/test/mocks/MockBApp2.sol b/test/mocks/MockBApp2.sol index 847efbb7..7df5ea44 100644 --- a/test/mocks/MockBApp2.sol +++ b/test/mocks/MockBApp2.sol @@ -1,7 +1,9 @@ // SPDX-License-Identifier: GPL-3.0 pragma solidity 0.8.29; -import { BasedAppCore } from "@ssv/src/middleware/modules/core/BasedAppCore.sol"; +import { + BasedAppCore +} from "@ssv/src/middleware/modules/core/BasedAppCore.sol"; contract BasedAppMock2 is BasedAppCore { event OptInToBApp( diff --git a/test/mocks/MockBApp4RejectEth.sol b/test/mocks/MockBApp4RejectEth.sol index deb4fb92..ac790371 100644 --- a/test/mocks/MockBApp4RejectEth.sol +++ b/test/mocks/MockBApp4RejectEth.sol @@ -1,7 +1,9 @@ // SPDX-License-Identifier: GPL-3.0 pragma solidity 0.8.29; -import { OwnableBasedApp } from "@ssv/src/middleware/modules/core+roles/OwnableBasedApp.sol"; +import { + OwnableBasedApp +} from "@ssv/src/middleware/modules/core+roles/OwnableBasedApp.sol"; contract BasedAppMock4 is OwnableBasedApp { event OptInToBApp( diff --git a/test/mocks/MockBAppAccessControl.sol b/test/mocks/MockBAppAccessControl.sol index 5b81531d..51ee107f 100644 --- a/test/mocks/MockBAppAccessControl.sol +++ b/test/mocks/MockBAppAccessControl.sol @@ -1,7 +1,9 @@ // SPDX-License-Identifier: GPL-3.0 pragma solidity 0.8.29; -import { AccessControlBasedApp } from "@ssv/src/middleware/modules/core+roles/AccessControlBasedApp.sol"; +import { + AccessControlBasedApp +} from "@ssv/src/middleware/modules/core+roles/AccessControlBasedApp.sol"; contract BasedAppMock3 is AccessControlBasedApp { event OptInToBApp( diff --git a/test/modules/BasedAppsManager.t.sol b/test/modules/BasedAppsManager.t.sol index ece4afb9..f75f163d 100644 --- a/test/modules/BasedAppsManager.t.sol +++ b/test/modules/BasedAppsManager.t.sol @@ -2,11 +2,15 @@ pragma solidity 0.8.29; import { Ownable } from "@openzeppelin/contracts/access/Ownable.sol"; -import { IAccessControl } from "@openzeppelin/contracts/access/IAccessControl.sol"; +import { + IAccessControl +} from "@openzeppelin/contracts/access/IAccessControl.sol"; import { UtilsTest } from "@ssv/test/helpers/Utils.t.sol"; import { IBasedAppManager, IBasedApp } from "@ssv/test/helpers/Setup.t.sol"; -import { IBasedAppManager } from "@ssv/src/core/interfaces/IBasedAppManager.sol"; +import { + IBasedAppManager +} from "@ssv/src/core/interfaces/IBasedAppManager.sol"; import { ValidationLib } from "@ssv/src/core/libraries/ValidationLib.sol"; import { ICore } from "@ssv/src/core/interfaces/ICore.sol"; diff --git a/test/modules/DelegationManager.t.sol b/test/modules/DelegationManager.t.sol index 518cba61..e9326ddf 100644 --- a/test/modules/DelegationManager.t.sol +++ b/test/modules/DelegationManager.t.sol @@ -2,7 +2,9 @@ pragma solidity 0.8.29; import { Setup } from "@ssv/test/helpers/Setup.t.sol"; -import { IStrategyManager } from "@ssv/src/core/interfaces/IStrategyManager.sol"; +import { + IStrategyManager +} from "@ssv/src/core/interfaces/IStrategyManager.sol"; import { ValidationLib } from "@ssv/src/core/libraries/ValidationLib.sol"; contract BasedAppManagerDelegateTest is Setup { diff --git a/test/modules/ProtocolManager.t.sol b/test/modules/ProtocolManager.t.sol index fa6d1a08..64f321b0 100644 --- a/test/modules/ProtocolManager.t.sol +++ b/test/modules/ProtocolManager.t.sol @@ -1,14 +1,24 @@ // SPDX-License-Identifier: GPL-3.0 pragma solidity 0.8.29; -import { Ownable2StepUpgradeable } from "@openzeppelin/contracts-upgradeable/access/Ownable2StepUpgradeable.sol"; +import { + Ownable2StepUpgradeable +} from "@openzeppelin/contracts-upgradeable/access/Ownable2StepUpgradeable.sol"; import { ETH_ADDRESS } from "@ssv/src/core/libraries/ValidationLib.sol"; import { Setup } from "@ssv/test/helpers/Setup.t.sol"; -import { IProtocolManager } from "@ssv/src/core/interfaces/IProtocolManager.sol"; -import { IBasedAppManager } from "@ssv/src/core/interfaces/IBasedAppManager.sol"; -import { IStrategyManager } from "@ssv/src/core/interfaces/IStrategyManager.sol"; -import { ERC1967Proxy } from "@openzeppelin/contracts/proxy/ERC1967/ERC1967Proxy.sol"; +import { + IProtocolManager +} from "@ssv/src/core/interfaces/IProtocolManager.sol"; +import { + IBasedAppManager +} from "@ssv/src/core/interfaces/IBasedAppManager.sol"; +import { + IStrategyManager +} from "@ssv/src/core/interfaces/IStrategyManager.sol"; +import { + ERC1967Proxy +} from "@openzeppelin/contracts/proxy/ERC1967/ERC1967Proxy.sol"; import { SSVBasedApps } from "@ssv/src/core/SSVBasedApps.sol"; import { ISSVBasedApps } from "@ssv/src/core/interfaces/ISSVBasedApps.sol"; diff --git a/test/modules/SlashingManager.bapp.t.sol b/test/modules/SlashingManager.bapp.t.sol index 97642c81..8dde6d1e 100644 --- a/test/modules/SlashingManager.bapp.t.sol +++ b/test/modules/SlashingManager.bapp.t.sol @@ -1,10 +1,18 @@ // SPDX-License-Identifier: GPL-3.0 pragma solidity 0.8.29; -import { IERC20, IStrategyManager, IBasedApp } from "@ssv/test/helpers/Setup.t.sol"; +import { + IERC20, + IStrategyManager, + IBasedApp +} from "@ssv/test/helpers/Setup.t.sol"; import { StrategyManagerTest } from "@ssv/test/modules/StrategyManager.t.sol"; -import { IStrategyManager } from "@ssv/src/core/interfaces/IStrategyManager.sol"; -import { IBasedAppManager } from "@ssv/src/core/interfaces/IBasedAppManager.sol"; +import { + IStrategyManager +} from "@ssv/src/core/interfaces/IStrategyManager.sol"; +import { + IBasedAppManager +} from "@ssv/src/core/interfaces/IBasedAppManager.sol"; contract SlashingManagerTest is StrategyManagerTest { function testGetSlashableBalanceBasic() public { diff --git a/test/modules/SlashingManager.eoa.t.sol b/test/modules/SlashingManager.eoa.t.sol index 40fe647c..008004dd 100644 --- a/test/modules/SlashingManager.eoa.t.sol +++ b/test/modules/SlashingManager.eoa.t.sol @@ -1,7 +1,11 @@ // SPDX-License-Identifier: GPL-3.0 pragma solidity 0.8.29; -import { IERC20, IStrategyManager, IBasedAppManager } from "@ssv/test/helpers/Setup.t.sol"; +import { + IERC20, + IStrategyManager, + IBasedAppManager +} from "@ssv/test/helpers/Setup.t.sol"; import { StrategyManagerTest } from "@ssv/test/modules/StrategyManager.t.sol"; import { ValidationLib } from "@ssv/src/core/libraries/ValidationLib.sol"; diff --git a/test/modules/StrategyManager.t.sol b/test/modules/StrategyManager.t.sol index dea18ae0..ee17802a 100644 --- a/test/modules/StrategyManager.t.sol +++ b/test/modules/StrategyManager.t.sol @@ -3,8 +3,12 @@ pragma solidity 0.8.29; import { IERC20, BasedAppMock } from "@ssv/test/helpers/Setup.t.sol"; import { BasedAppsManagerTest } from "@ssv/test/modules/BasedAppsManager.t.sol"; -import { IStrategyManager } from "@ssv/src/core/interfaces/IStrategyManager.sol"; -import { IBasedAppManager } from "@ssv/src/core/interfaces/IBasedAppManager.sol"; +import { + IStrategyManager +} from "@ssv/src/core/interfaces/IStrategyManager.sol"; +import { + IBasedAppManager +} from "@ssv/src/core/interfaces/IBasedAppManager.sol"; import { UtilsTest } from "@ssv/test/helpers/Utils.t.sol"; import { ValidationLib } from "@ssv/src/core/libraries/ValidationLib.sol"; import { ICore } from "@ssv/src/core/interfaces/ICore.sol"; From 900166ea3ee84c2664f0360173fcc1c832e5fdd9 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Wed, 28 May 2025 16:29:40 +0200 Subject: [PATCH 18/24] chore(deps): update dependency solhint to ^5.1.0 (#56) * chore: add Renovate config --- .github/renovate.json | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 .github/renovate.json diff --git a/.github/renovate.json b/.github/renovate.json new file mode 100644 index 00000000..087a33bb --- /dev/null +++ b/.github/renovate.json @@ -0,0 +1,5 @@ +{ + "extends": [ + "github>ssvlabs/shared-configs//renovate/renovate.json" + ] +} \ No newline at end of file From 892568ce17f6ad8cde062a2546e0ce32f178a7d9 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Wed, 28 May 2025 16:35:51 +0200 Subject: [PATCH 19/24] chore(deps): update dependency node to v22 (#59) * chore(deps): update dependency node to v22 --- .github/workflows/tests.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml index f8a86c44..d68b352a 100644 --- a/.github/workflows/tests.yml +++ b/.github/workflows/tests.yml @@ -23,7 +23,7 @@ jobs: - name: Install Node.js uses: actions/setup-node@v4 with: - node-version: '18' + node-version: '22' cache: 'npm' cache-dependency-path: package-lock.json From c9464a87a864c634286dce243352a4e82f7074f9 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Wed, 28 May 2025 16:58:22 +0200 Subject: [PATCH 20/24] chore(deps): update dependency lint-staged to v16 (#58) * chore(deps): update dependency lint-staged to v16 --- package-lock.json | 479 +++++++++++++++++++++------------------------- package.json | 2 +- 2 files changed, 219 insertions(+), 262 deletions(-) diff --git a/package-lock.json b/package-lock.json index 25a42d2c..9c49699e 100644 --- a/package-lock.json +++ b/package-lock.json @@ -11,7 +11,7 @@ "devDependencies": { "@openzeppelin/contracts-upgradeable": "^5.3.0", "husky": "^9.1.7", - "lint-staged": "^15.5.2", + "lint-staged": "^16.0.0", "prettier": "^3.5.3", "prettier-plugin-solidity": "^2.0.0", "solhint": "^5.1.0" @@ -22,6 +22,7 @@ "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.27.1.tgz", "integrity": "sha512-cjQ7ZlQ0Mv3b47hABuTevyTuYN4i+loJKGeV9flcCgIK37cCXRh+L1bd3iBHlynerhQ7BhCkn2BPbQUL+rGqFg==", "dev": true, + "license": "MIT", "dependencies": { "@babel/helper-validator-identifier": "^7.27.1", "js-tokens": "^4.0.0", @@ -36,6 +37,7 @@ "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.27.1.tgz", "integrity": "sha512-D2hP9eA+Sqx1kBZgzxZh0y1trbuU+JoDkiEwqhQ36nodYqJwyEIhPSdMNd7lOm/4io72luTPWH20Yda0xOuUow==", "dev": true, + "license": "MIT", "engines": { "node": ">=6.9.0" } @@ -44,13 +46,15 @@ "version": "0.17.2", "resolved": "https://registry.npmjs.org/@bytecodealliance/preview2-shim/-/preview2-shim-0.17.2.tgz", "integrity": "sha512-mNm/lblgES8UkVle8rGImXOz4TtL3eU3inHay/7TVchkKrb/lgcVvTK0+VAw8p5zQ0rgQsXm1j5dOlAAd+MeoA==", - "dev": true + "dev": true, + "license": "(Apache-2.0 WITH LLVM-exception)" }, "node_modules/@nomicfoundation/slang": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/@nomicfoundation/slang/-/slang-1.1.0.tgz", "integrity": "sha512-g2BofMUq1qCP22L/ksOftScrCxjdHTxgg8ch5PYon2zfSSKGCMwE4TgIC64CuorMcSsvCmqNNFEWR/fwFcMeTw==", "dev": true, + "license": "MIT", "dependencies": { "@bytecodealliance/preview2-shim": "0.17.2" } @@ -60,6 +64,7 @@ "resolved": "https://registry.npmjs.org/@openzeppelin/contracts/-/contracts-5.3.0.tgz", "integrity": "sha512-zj/KGoW7zxWUE8qOI++rUM18v+VeLTTzKs/DJFkSzHpQFPD/jKKF0TrMxBfGLl3kpdELCNccvB3zmofSzm4nlA==", "dev": true, + "license": "MIT", "peer": true }, "node_modules/@openzeppelin/contracts-upgradeable": { @@ -67,6 +72,7 @@ "resolved": "https://registry.npmjs.org/@openzeppelin/contracts-upgradeable/-/contracts-upgradeable-5.3.0.tgz", "integrity": "sha512-yVzSSyTMWO6rapGI5tuqkcLpcGGXA0UA1vScyV5EhE5yw8By3Ewex9rDUw8lfVw0iTkvR/egjfcW5vpk03lqZg==", "dev": true, + "license": "MIT", "peerDependencies": { "@openzeppelin/contracts": "5.3.0" } @@ -76,6 +82,7 @@ "resolved": "https://registry.npmjs.org/@pnpm/config.env-replace/-/config.env-replace-1.1.0.tgz", "integrity": "sha512-htyl8TWnKL7K/ESFa1oW2UB5lVDxuF5DpM7tBi6Hu2LNL3mWkIzNLG6N4zoCUP1lCKNxWy/3iu8mS8MvToGd6w==", "dev": true, + "license": "MIT", "engines": { "node": ">=12.22.0" } @@ -85,6 +92,7 @@ "resolved": "https://registry.npmjs.org/@pnpm/network.ca-file/-/network.ca-file-1.0.2.tgz", "integrity": "sha512-YcPQ8a0jwYU9bTdJDpXjMi7Brhkr1mXsXrUJvjqM2mQDgkRiz8jFaQGOdaLxgjtUfQgZhKy/O3cG/YwmgKaxLA==", "dev": true, + "license": "MIT", "dependencies": { "graceful-fs": "4.2.10" }, @@ -97,6 +105,7 @@ "resolved": "https://registry.npmjs.org/@pnpm/npm-conf/-/npm-conf-2.3.1.tgz", "integrity": "sha512-c83qWb22rNRuB0UaVCI0uRPNRr8Z0FWnEIvT47jiHAmOIUHbBOg5XvV7pM5x+rKn9HRpjxquDbXYSXr3fAKFcw==", "dev": true, + "license": "MIT", "dependencies": { "@pnpm/config.env-replace": "^1.1.0", "@pnpm/network.ca-file": "^1.0.1", @@ -111,6 +120,7 @@ "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-5.6.0.tgz", "integrity": "sha512-TV7t8GKYaJWsn00tFDqBw8+Uqmr8A0fRU1tvTQhyZzGv0sJCGRQL3JGMI3ucuKo3XIZdUP+Lx7/gh2t3lewy7g==", "dev": true, + "license": "MIT", "engines": { "node": ">=14.16" }, @@ -122,13 +132,15 @@ "version": "0.20.1", "resolved": "https://registry.npmjs.org/@solidity-parser/parser/-/parser-0.20.1.tgz", "integrity": "sha512-58I2sRpzaQUN+jJmWbHfbWf9AKfzqCI8JAdFB0vbyY+u8tBRcuTt9LxzasvR0LGQpcRv97eyV7l61FQ3Ib7zVw==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/@szmarczak/http-timer": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/@szmarczak/http-timer/-/http-timer-5.0.1.tgz", "integrity": "sha512-+PmQX0PiAYPMeVYe237LJAYvOMYW1j2rH5YROyS3b4CTVJum34HfRvKvAzozHAQG0TnHNdUfY9nCeUyRAs//cw==", "dev": true, + "license": "MIT", "dependencies": { "defer-to-connect": "^2.0.1" }, @@ -140,13 +152,15 @@ "version": "4.0.4", "resolved": "https://registry.npmjs.org/@types/http-cache-semantics/-/http-cache-semantics-4.0.4.tgz", "integrity": "sha512-1m0bIFVc7eJWyve9S0RnuRgcQqF/Xd5QsUZAZeQFr1Q3/p9JWoQQEqmVy+DPTNpGXwhgIetAoYF8JSc33q29QA==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/ajv": { "version": "6.12.6", "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", "dev": true, + "license": "MIT", "dependencies": { "fast-deep-equal": "^3.1.1", "fast-json-stable-stringify": "^2.0.0", @@ -163,6 +177,7 @@ "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-7.0.0.tgz", "integrity": "sha512-GdYO7a61mR0fOlAsvC9/rIHf7L96sBc6dEWzeOu+KAea5bZyQRPIpojrVoI4AXGJS/ycu/fBTdLrUkA4ODrvjw==", "dev": true, + "license": "MIT", "dependencies": { "environment": "^1.0.0" }, @@ -178,6 +193,7 @@ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.1.0.tgz", "integrity": "sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA==", "dev": true, + "license": "MIT", "engines": { "node": ">=12" }, @@ -190,6 +206,7 @@ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz", "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==", "dev": true, + "license": "MIT", "engines": { "node": ">=12" }, @@ -202,6 +219,7 @@ "resolved": "https://registry.npmjs.org/antlr4/-/antlr4-4.13.2.tgz", "integrity": "sha512-QiVbZhyy4xAZ17UPEuG3YTOt8ZaoeOR1CvEAqrEsDBsOqINslaB147i9xqljZqoyf5S+EUlGStaj+t22LT9MOg==", "dev": true, + "license": "BSD-3-Clause", "engines": { "node": ">=16" } @@ -210,19 +228,22 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", - "dev": true + "dev": true, + "license": "Python-2.0" }, "node_modules/ast-parents": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/ast-parents/-/ast-parents-0.0.1.tgz", "integrity": "sha512-XHusKxKz3zoYk1ic8Un640joHbFMhbqneyoZfoKnEGtf2ey9Uh/IdpcQplODdO/kENaMIWsD0nJm4+wX3UNLHA==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/astral-regex": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-2.0.0.tgz", "integrity": "sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==", "dev": true, + "license": "MIT", "engines": { "node": ">=8" } @@ -231,13 +252,15 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/brace-expansion": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", "dev": true, + "license": "MIT", "dependencies": { "balanced-match": "^1.0.0" } @@ -247,6 +270,7 @@ "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", "dev": true, + "license": "MIT", "dependencies": { "fill-range": "^7.1.1" }, @@ -259,6 +283,7 @@ "resolved": "https://registry.npmjs.org/cacheable-lookup/-/cacheable-lookup-7.0.0.tgz", "integrity": "sha512-+qJyx4xiKra8mZrcwhjMRMUhD5NR1R8esPkzIYxX96JiecFoxAXFuz/GpR3+ev4PE1WamHip78wV0vcmPQtp8w==", "dev": true, + "license": "MIT", "engines": { "node": ">=14.16" } @@ -268,6 +293,7 @@ "resolved": "https://registry.npmjs.org/cacheable-request/-/cacheable-request-10.2.14.tgz", "integrity": "sha512-zkDT5WAF4hSSoUgyfg5tFIxz8XQK+25W/TLVojJTMKBaxevLBBtLxgqguAuVQB8PVW79FVjHcU+GJ9tVbDZ9mQ==", "dev": true, + "license": "MIT", "dependencies": { "@types/http-cache-semantics": "^4.0.2", "get-stream": "^6.0.1", @@ -281,23 +307,12 @@ "node": ">=14.16" } }, - "node_modules/cacheable-request/node_modules/get-stream": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", - "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/callsites": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", "dev": true, + "license": "MIT", "engines": { "node": ">=6" } @@ -307,6 +322,7 @@ "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.4.1.tgz", "integrity": "sha512-zgVZuo2WcZgfUEmsn6eO3kINexW8RAE4maiQ8QNs8CtpPCSyMiYsULR3HQYkm3w8FIA3SberyMJMSldGsW+U3w==", "dev": true, + "license": "MIT", "engines": { "node": "^12.17.0 || ^14.13 || >=16.0.0" }, @@ -319,6 +335,7 @@ "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-5.0.0.tgz", "integrity": "sha512-aCj4O5wKyszjMmDT4tZj93kxyydN/K5zPWSCe6/0AV/AA1pqe5ZBIw0a2ZfPQV7lL5/yb5HsUreJ6UFAF1tEQw==", "dev": true, + "license": "MIT", "dependencies": { "restore-cursor": "^5.0.0" }, @@ -334,6 +351,7 @@ "resolved": "https://registry.npmjs.org/cli-truncate/-/cli-truncate-4.0.0.tgz", "integrity": "sha512-nPdaFdQ0h/GEigbPClz11D0v/ZJEwxmeVZGeMo3Z5StPtUTkA9o1lD6QwoirYiSDzbcwn2XcjwmCp68W1IS4TA==", "dev": true, + "license": "MIT", "dependencies": { "slice-ansi": "^5.0.0", "string-width": "^7.0.0" @@ -350,6 +368,7 @@ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dev": true, + "license": "MIT", "dependencies": { "color-name": "~1.1.4" }, @@ -361,21 +380,24 @@ "version": "1.1.4", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/colorette": { "version": "2.0.20", "resolved": "https://registry.npmjs.org/colorette/-/colorette-2.0.20.tgz", "integrity": "sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/commander": { - "version": "13.1.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-13.1.0.tgz", - "integrity": "sha512-/rFeCpNJQbhSZjGVwO9RFV3xPqbnERS8MmIQzCtD/zl6gpJuV/bMLuN92oG3F7d8oDEHHRrujSXNUr8fpjntKw==", + "version": "14.0.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-14.0.0.tgz", + "integrity": "sha512-2uM9rYjPvyq39NwLRqaiLtWHyDC1FvryJDa2ATTVims5YAS4PupsEQsDvP14FqhFr0P49CYDugi59xaxJlTXRA==", "dev": true, + "license": "MIT", "engines": { - "node": ">=18" + "node": ">=20" } }, "node_modules/config-chain": { @@ -383,6 +405,7 @@ "resolved": "https://registry.npmjs.org/config-chain/-/config-chain-1.1.13.tgz", "integrity": "sha512-qj+f8APARXHrM0hraqXYb2/bOVSV4PvJQlNZ/DVj0QrmNM2q2euizkeuVckQ57J+W0mRH6Hvi+k50M4Jul2VRQ==", "dev": true, + "license": "MIT", "dependencies": { "ini": "^1.3.4", "proto-list": "~1.2.1" @@ -393,6 +416,7 @@ "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-8.3.6.tgz", "integrity": "sha512-kcZ6+W5QzcJ3P1Mt+83OUv/oHFqZHIx8DuxG6eZ5RGMERoLqp4BuGjhHLYGK+Kf5XVkQvqBSmAy/nGWN3qDgEA==", "dev": true, + "license": "MIT", "dependencies": { "import-fresh": "^3.3.0", "js-yaml": "^4.1.0", @@ -414,25 +438,12 @@ } } }, - "node_modules/cross-spawn": { - "version": "7.0.6", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz", - "integrity": "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==", - "dev": true, - "dependencies": { - "path-key": "^3.1.0", - "shebang-command": "^2.0.0", - "which": "^2.0.1" - }, - "engines": { - "node": ">= 8" - } - }, "node_modules/debug": { "version": "4.4.1", "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.1.tgz", "integrity": "sha512-KcKCqiftBJcZr++7ykoDIEwSa3XWowTfNPo92BYxjXiyYEVrUQh2aLyhxBCwww+heortUFxEJYcRzosstTEBYQ==", "dev": true, + "license": "MIT", "dependencies": { "ms": "^2.1.3" }, @@ -450,6 +461,7 @@ "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-6.0.0.tgz", "integrity": "sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ==", "dev": true, + "license": "MIT", "dependencies": { "mimic-response": "^3.1.0" }, @@ -465,6 +477,7 @@ "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-3.1.0.tgz", "integrity": "sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ==", "dev": true, + "license": "MIT", "engines": { "node": ">=10" }, @@ -477,6 +490,7 @@ "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz", "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==", "dev": true, + "license": "MIT", "engines": { "node": ">=4.0.0" } @@ -486,6 +500,7 @@ "resolved": "https://registry.npmjs.org/defer-to-connect/-/defer-to-connect-2.0.1.tgz", "integrity": "sha512-4tvttepXG1VaYGrRibk5EwJd1t4udunSOVMdLSAL6mId1ix438oPwPZMALY41FCijukO1L0twNcGsdzS7dHgDg==", "dev": true, + "license": "MIT", "engines": { "node": ">=10" } @@ -494,13 +509,15 @@ "version": "10.4.0", "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-10.4.0.tgz", "integrity": "sha512-EC+0oUMY1Rqm4O6LLrgjtYDvcVYTy7chDnM4Q7030tP4Kwj3u/pR6gP9ygnp2CJMK5Gq+9Q2oqmrFJAz01DXjw==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/environment": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/environment/-/environment-1.1.0.tgz", "integrity": "sha512-xUtoPkMggbz0MPyPiIWr1Kp4aeWJjDZ6SMvURhimjdZgsRuDplF5/s9hcgGhyXMhs+6vpnuoiZ2kFiu3FMnS8Q==", "dev": true, + "license": "MIT", "engines": { "node": ">=18" }, @@ -513,6 +530,7 @@ "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", "dev": true, + "license": "MIT", "dependencies": { "is-arrayish": "^0.2.1" } @@ -521,48 +539,29 @@ "version": "5.0.1", "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-5.0.1.tgz", "integrity": "sha512-GWkBvjiSZK87ELrYOSESUYeVIc9mvLLf/nXalMOS5dYrgZq9o5OVkbZAVM06CVxYsCwH9BDZFPlQTlPA1j4ahA==", - "dev": true - }, - "node_modules/execa": { - "version": "8.0.1", - "resolved": "https://registry.npmjs.org/execa/-/execa-8.0.1.tgz", - "integrity": "sha512-VyhnebXciFV2DESc+p6B+y0LjSm0krU4OgJN44qFAhBY0TJ+1V61tYD2+wHusZ6F9n5K+vl8k0sTy7PEfV4qpg==", "dev": true, - "dependencies": { - "cross-spawn": "^7.0.3", - "get-stream": "^8.0.1", - "human-signals": "^5.0.0", - "is-stream": "^3.0.0", - "merge-stream": "^2.0.0", - "npm-run-path": "^5.1.0", - "onetime": "^6.0.0", - "signal-exit": "^4.1.0", - "strip-final-newline": "^3.0.0" - }, - "engines": { - "node": ">=16.17" - }, - "funding": { - "url": "https://github.com/sindresorhus/execa?sponsor=1" - } + "license": "MIT" }, "node_modules/fast-deep-equal": { "version": "3.1.3", "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/fast-diff": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/fast-diff/-/fast-diff-1.3.0.tgz", "integrity": "sha512-VxPP4NqbUjj6MaAOafWeUn2cXWLcCtljklUtZf0Ind4XQ+QPtmA0b18zZy0jIQx+ExRVCR/ZQpBmik5lXshNsw==", - "dev": true + "dev": true, + "license": "Apache-2.0" }, "node_modules/fast-json-stable-stringify": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/fast-uri": { "version": "3.0.6", @@ -578,13 +577,15 @@ "type": "opencollective", "url": "https://opencollective.com/fastify" } - ] + ], + "license": "BSD-3-Clause" }, "node_modules/fill-range": { "version": "7.1.1", "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", "dev": true, + "license": "MIT", "dependencies": { "to-regex-range": "^5.0.1" }, @@ -597,6 +598,7 @@ "resolved": "https://registry.npmjs.org/form-data-encoder/-/form-data-encoder-2.1.4.tgz", "integrity": "sha512-yDYSgNMraqvnxiEXO4hi88+YZxaHC6QKzb5N84iRCTDeRO7ZALpir/lVmf/uXUhnwUr2O4HU8s/n6x+yNjQkHw==", "dev": true, + "license": "MIT", "engines": { "node": ">= 14.17" } @@ -605,13 +607,15 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", - "dev": true + "dev": true, + "license": "ISC" }, "node_modules/get-east-asian-width": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/get-east-asian-width/-/get-east-asian-width-1.3.0.tgz", "integrity": "sha512-vpeMIQKxczTD/0s2CdEWHcb0eeJe6TFjxb+J5xgX7hScxqrGuyjmv4c1D4A/gelKfyox0gJJwIHF+fLjeaM8kQ==", "dev": true, + "license": "MIT", "engines": { "node": ">=18" }, @@ -620,12 +624,13 @@ } }, "node_modules/get-stream": { - "version": "8.0.1", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-8.0.1.tgz", - "integrity": "sha512-VaUJspBffn/LMCJVoMvSAdmscJyS1auj5Zulnn5UoYcY531UWmdwhRWkcGKnGU93m5HSXP9LP2usOryrBtQowA==", + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", + "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", "dev": true, + "license": "MIT", "engines": { - "node": ">=16" + "node": ">=10" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" @@ -637,6 +642,7 @@ "integrity": "sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==", "deprecated": "Glob versions prior to v9 are no longer supported", "dev": true, + "license": "ISC", "dependencies": { "fs.realpath": "^1.0.0", "inflight": "^1.0.4", @@ -656,6 +662,7 @@ "resolved": "https://registry.npmjs.org/got/-/got-12.6.1.tgz", "integrity": "sha512-mThBblvlAF1d4O5oqyvN+ZxLAYwIJK7bpMxgYqPD9okW0C3qm5FFn7k811QrcuEBwaogR3ngOFoCfs6mRv7teQ==", "dev": true, + "license": "MIT", "dependencies": { "@sindresorhus/is": "^5.2.0", "@szmarczak/http-timer": "^5.0.1", @@ -676,29 +683,19 @@ "url": "https://github.com/sindresorhus/got?sponsor=1" } }, - "node_modules/got/node_modules/get-stream": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", - "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/graceful-fs": { "version": "4.2.10", "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.10.tgz", "integrity": "sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==", - "dev": true + "dev": true, + "license": "ISC" }, "node_modules/has-flag": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true, + "license": "MIT", "engines": { "node": ">=8" } @@ -707,13 +704,15 @@ "version": "4.2.0", "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.2.0.tgz", "integrity": "sha512-dTxcvPXqPvXBQpq5dUr6mEMJX4oIEFv6bwom3FDwKRDsuIjjJGANqhBuoAn9c1RQJIdAKav33ED65E2ys+87QQ==", - "dev": true + "dev": true, + "license": "BSD-2-Clause" }, "node_modules/http2-wrapper": { "version": "2.2.1", "resolved": "https://registry.npmjs.org/http2-wrapper/-/http2-wrapper-2.2.1.tgz", "integrity": "sha512-V5nVw1PAOgfI3Lmeaj2Exmeg7fenjhRUgz1lPSezy1CuhPYbgQtbQj4jZfEAEMlaL+vupsvhjqCyjzob0yxsmQ==", "dev": true, + "license": "MIT", "dependencies": { "quick-lru": "^5.1.1", "resolve-alpn": "^1.2.0" @@ -722,20 +721,12 @@ "node": ">=10.19.0" } }, - "node_modules/human-signals": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-5.0.0.tgz", - "integrity": "sha512-AXcZb6vzzrFAUE61HnN4mpLqd/cSIwNQjtNWR0euPm6y0iqx3G4gOXaIDdtdDwZmhwe82LA6+zinmW4UBWVePQ==", - "dev": true, - "engines": { - "node": ">=16.17.0" - } - }, "node_modules/husky": { "version": "9.1.7", "resolved": "https://registry.npmjs.org/husky/-/husky-9.1.7.tgz", "integrity": "sha512-5gs5ytaNjBrh5Ow3zrvdUUY+0VxIuWVL4i9irt6friV+BqdCfmV11CQTWMiBYWHbXhco+J1kHfTOUkePhCDvMA==", "dev": true, + "license": "MIT", "bin": { "husky": "bin.js" }, @@ -751,6 +742,7 @@ "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.2.tgz", "integrity": "sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==", "dev": true, + "license": "MIT", "engines": { "node": ">= 4" } @@ -760,6 +752,7 @@ "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.1.tgz", "integrity": "sha512-TR3KfrTZTYLPB6jUjfx6MF9WcWrHL9su5TObK4ZkYgBdWKPOFoSoQIdEuTuR82pmtxH2spWG9h6etwfr1pLBqQ==", "dev": true, + "license": "MIT", "dependencies": { "parent-module": "^1.0.0", "resolve-from": "^4.0.0" @@ -777,6 +770,7 @@ "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", "deprecated": "This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful.", "dev": true, + "license": "ISC", "dependencies": { "once": "^1.3.0", "wrappy": "1" @@ -786,25 +780,29 @@ "version": "2.0.4", "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", - "dev": true + "dev": true, + "license": "ISC" }, "node_modules/ini": { "version": "1.3.8", "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==", - "dev": true + "dev": true, + "license": "ISC" }, "node_modules/is-arrayish": { "version": "0.2.1", "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/is-fullwidth-code-point": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-4.0.0.tgz", "integrity": "sha512-O4L094N2/dZ7xqVdrXhh9r1KODPJpFms8B5sGdJLPy664AgvXsreZUyCQQNItZRDlYug4xStLjNp/sz3HvBowQ==", "dev": true, + "license": "MIT", "engines": { "node": ">=12" }, @@ -817,39 +815,24 @@ "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", "dev": true, + "license": "MIT", "engines": { "node": ">=0.12.0" } }, - "node_modules/is-stream": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-3.0.0.tgz", - "integrity": "sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==", - "dev": true, - "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/isexe": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", - "dev": true - }, "node_modules/js-tokens": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/js-yaml": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", "dev": true, + "license": "MIT", "dependencies": { "argparse": "^2.0.1" }, @@ -861,25 +844,29 @@ "version": "3.0.1", "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz", "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/json-parse-even-better-errors": { "version": "2.3.1", "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/json-schema-traverse": { "version": "0.4.1", "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/keyv": { "version": "4.5.4", "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz", "integrity": "sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==", "dev": true, + "license": "MIT", "dependencies": { "json-buffer": "3.0.1" } @@ -889,6 +876,7 @@ "resolved": "https://registry.npmjs.org/latest-version/-/latest-version-7.0.0.tgz", "integrity": "sha512-KvNT4XqAMzdcL6ka6Tl3i2lYeFDgXNCuIX+xNx6ZMVR1dFq+idXd9FLKNMOIx0t9mJ9/HudyX4oZWXZQ0UJHeg==", "dev": true, + "license": "MIT", "dependencies": { "package-json": "^8.1.0" }, @@ -904,6 +892,7 @@ "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-3.1.3.tgz", "integrity": "sha512-/vlFKAoH5Cgt3Ie+JLhRbwOsCQePABiU3tJ1egGvyQ+33R/vcwM2Zl2QR/LzjsBeItPt3oSVXapn+m4nQDvpzw==", "dev": true, + "license": "MIT", "engines": { "node": ">=14" }, @@ -915,30 +904,32 @@ "version": "1.2.4", "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz", "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/lint-staged": { - "version": "15.5.2", - "resolved": "https://registry.npmjs.org/lint-staged/-/lint-staged-15.5.2.tgz", - "integrity": "sha512-YUSOLq9VeRNAo/CTaVmhGDKG+LBtA8KF1X4K5+ykMSwWST1vDxJRB2kv2COgLb1fvpCo+A/y9A0G0znNVmdx4w==", + "version": "16.1.0", + "resolved": "https://registry.npmjs.org/lint-staged/-/lint-staged-16.1.0.tgz", + "integrity": "sha512-HkpQh69XHxgCjObjejBT3s2ILwNjFx8M3nw+tJ/ssBauDlIpkx2RpqWSi1fBgkXLSSXnbR3iEq1NkVtpvV+FLQ==", "dev": true, + "license": "MIT", "dependencies": { "chalk": "^5.4.1", - "commander": "^13.1.0", - "debug": "^4.4.0", - "execa": "^8.0.1", + "commander": "^14.0.0", + "debug": "^4.4.1", "lilconfig": "^3.1.3", - "listr2": "^8.2.5", + "listr2": "^8.3.3", "micromatch": "^4.0.8", + "nano-spawn": "^1.0.2", "pidtree": "^0.6.0", "string-argv": "^0.3.2", - "yaml": "^2.7.0" + "yaml": "^2.8.0" }, "bin": { "lint-staged": "bin/lint-staged.js" }, "engines": { - "node": ">=18.12.0" + "node": ">=20.17" }, "funding": { "url": "https://opencollective.com/lint-staged" @@ -949,6 +940,7 @@ "resolved": "https://registry.npmjs.org/listr2/-/listr2-8.3.3.tgz", "integrity": "sha512-LWzX2KsqcB1wqQ4AHgYb4RsDXauQiqhjLk+6hjbaeHG4zpjjVAB6wC/gz6X0l+Du1cN3pUB5ZlrvTbhGSNnUQQ==", "dev": true, + "license": "MIT", "dependencies": { "cli-truncate": "^4.0.0", "colorette": "^2.0.20", @@ -965,19 +957,22 @@ "version": "4.17.21", "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/lodash.truncate": { "version": "4.4.2", "resolved": "https://registry.npmjs.org/lodash.truncate/-/lodash.truncate-4.4.2.tgz", "integrity": "sha512-jttmRe7bRse52OsWIMDLaXxWqRAmtIUccAQ3garviCqJjafXOfNMO0yMfNpdD6zbGaTU0P5Nz7e7gAT6cKmJRw==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/log-update": { "version": "6.1.0", "resolved": "https://registry.npmjs.org/log-update/-/log-update-6.1.0.tgz", "integrity": "sha512-9ie8ItPR6tjY5uYJh8K/Zrv/RMZ5VOlOWvtZdEHYSTFKZfIBPQa9tOAEeAWhd+AnIneLJ22w5fjOYtoutpWq5w==", "dev": true, + "license": "MIT", "dependencies": { "ansi-escapes": "^7.0.0", "cli-cursor": "^5.0.0", @@ -997,6 +992,7 @@ "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-5.0.0.tgz", "integrity": "sha512-OVa3u9kkBbw7b8Xw5F9P+D/T9X+Z4+JruYVNapTjPYZYUznQ5YfWeFkOj606XYYW8yugTfC8Pj0hYqvi4ryAhA==", "dev": true, + "license": "MIT", "dependencies": { "get-east-asian-width": "^1.0.0" }, @@ -1012,6 +1008,7 @@ "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-7.1.0.tgz", "integrity": "sha512-bSiSngZ/jWeX93BqeIAbImyTbEihizcwNjFoRUIY/T1wWQsfsm2Vw1agPKylXvQTU7iASGdHhyqRlqQzfz+Htg==", "dev": true, + "license": "MIT", "dependencies": { "ansi-styles": "^6.2.1", "is-fullwidth-code-point": "^5.0.0" @@ -1028,6 +1025,7 @@ "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-3.0.0.tgz", "integrity": "sha512-ozCC6gdQ+glXOQsveKD0YsDy8DSQFjDTz4zyzEHNV5+JP5D62LmfDZ6o1cycFx9ouG940M5dE8C8CTewdj2YWQ==", "dev": true, + "license": "MIT", "engines": { "node": "^12.20.0 || ^14.13.1 || >=16.0.0" }, @@ -1035,17 +1033,12 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/merge-stream": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", - "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", - "dev": true - }, "node_modules/micromatch": { "version": "4.0.8", "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz", "integrity": "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==", "dev": true, + "license": "MIT", "dependencies": { "braces": "^3.0.3", "picomatch": "^2.3.1" @@ -1054,23 +1047,12 @@ "node": ">=8.6" } }, - "node_modules/mimic-fn": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-4.0.0.tgz", - "integrity": "sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==", - "dev": true, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/mimic-function": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/mimic-function/-/mimic-function-5.0.1.tgz", "integrity": "sha512-VP79XUPxV2CigYP3jWwAUFSku2aKqBH7uTAapFWCBqutsbmDo96KY5o8uh6U+/YSIn5OxJnXp73beVkpqMIGhA==", "dev": true, + "license": "MIT", "engines": { "node": ">=18" }, @@ -1083,6 +1065,7 @@ "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-4.0.0.tgz", "integrity": "sha512-e5ISH9xMYU0DzrT+jl8q2ze9D6eWBto+I8CNpe+VI+K2J/F/k3PdkdTdz4wvGVH4NTpo+NRYTVIuMQEMMcsLqg==", "dev": true, + "license": "MIT", "engines": { "node": "^12.20.0 || ^14.13.1 || >=16.0.0" }, @@ -1095,6 +1078,7 @@ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz", "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==", "dev": true, + "license": "ISC", "dependencies": { "brace-expansion": "^2.0.1" }, @@ -1107,6 +1091,7 @@ "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", "dev": true, + "license": "MIT", "funding": { "url": "https://github.com/sponsors/ljharb" } @@ -1115,42 +1100,30 @@ "version": "2.1.3", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", - "dev": true - }, - "node_modules/normalize-url": { - "version": "8.0.1", - "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-8.0.1.tgz", - "integrity": "sha512-IO9QvjUMWxPQQhs60oOu10CRkWCiZzSUkzbXGGV9pviYl1fXYcvkzQ5jV9z8Y6un8ARoVRl4EtC6v6jNqbaJ/w==", "dev": true, - "engines": { - "node": ">=14.16" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } + "license": "MIT" }, - "node_modules/npm-run-path": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-5.3.0.tgz", - "integrity": "sha512-ppwTtiJZq0O/ai0z7yfudtBpWIoxM8yE6nHi1X47eFR2EWORqfbu6CnPlNsjeN683eT0qG6H/Pyf9fCcvjnnnQ==", + "node_modules/nano-spawn": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/nano-spawn/-/nano-spawn-1.0.2.tgz", + "integrity": "sha512-21t+ozMQDAL/UGgQVBbZ/xXvNO10++ZPuTmKRO8k9V3AClVRht49ahtDjfY8l1q6nSHOrE5ASfthzH3ol6R/hg==", "dev": true, - "dependencies": { - "path-key": "^4.0.0" - }, + "license": "MIT", "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + "node": ">=20.17" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "url": "https://github.com/sindresorhus/nano-spawn?sponsor=1" } }, - "node_modules/npm-run-path/node_modules/path-key": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-4.0.0.tgz", - "integrity": "sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==", + "node_modules/normalize-url": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-8.0.1.tgz", + "integrity": "sha512-IO9QvjUMWxPQQhs60oOu10CRkWCiZzSUkzbXGGV9pviYl1fXYcvkzQ5jV9z8Y6un8ARoVRl4EtC6v6jNqbaJ/w==", "dev": true, + "license": "MIT", "engines": { - "node": ">=12" + "node": ">=14.16" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" @@ -1161,20 +1134,22 @@ "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", "dev": true, + "license": "ISC", "dependencies": { "wrappy": "1" } }, "node_modules/onetime": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/onetime/-/onetime-6.0.0.tgz", - "integrity": "sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ==", + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-7.0.0.tgz", + "integrity": "sha512-VXJjc87FScF88uafS3JllDgvAm+c/Slfz06lorj2uAY34rlUu0Nt+v8wreiImcrgAjjIHp1rXpTDlLOGw29WwQ==", "dev": true, + "license": "MIT", "dependencies": { - "mimic-fn": "^4.0.0" + "mimic-function": "^5.0.0" }, "engines": { - "node": ">=12" + "node": ">=18" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" @@ -1185,6 +1160,7 @@ "resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-3.0.0.tgz", "integrity": "sha512-mlVgR3PGuzlo0MmTdk4cXqXWlwQDLnONTAg6sm62XkMJEiRxN3GL3SffkYvqwonbkJBcrI7Uvv5Zh9yjvn2iUw==", "dev": true, + "license": "MIT", "engines": { "node": ">=12.20" } @@ -1194,6 +1170,7 @@ "resolved": "https://registry.npmjs.org/package-json/-/package-json-8.1.1.tgz", "integrity": "sha512-cbH9IAIJHNj9uXi196JVsRlt7cHKak6u/e6AkL/bkRelZ7rlL3X1YKxsZwa36xipOEKAsdtmaG6aAJoM1fx2zA==", "dev": true, + "license": "MIT", "dependencies": { "got": "^12.1.0", "registry-auth-token": "^5.0.1", @@ -1212,6 +1189,7 @@ "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", "dev": true, + "license": "MIT", "dependencies": { "callsites": "^3.0.0" }, @@ -1224,6 +1202,7 @@ "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", "dev": true, + "license": "MIT", "dependencies": { "@babel/code-frame": "^7.0.0", "error-ex": "^1.3.1", @@ -1237,20 +1216,12 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/path-key": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", - "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", - "dev": true, - "engines": { - "node": ">=8" - } - }, "node_modules/path-type": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", "dev": true, + "license": "MIT", "engines": { "node": ">=8" } @@ -1259,13 +1230,15 @@ "version": "1.1.1", "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz", "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==", - "dev": true + "dev": true, + "license": "ISC" }, "node_modules/picomatch": { "version": "2.3.1", "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", "dev": true, + "license": "MIT", "engines": { "node": ">=8.6" }, @@ -1278,6 +1251,7 @@ "resolved": "https://registry.npmjs.org/pidtree/-/pidtree-0.6.0.tgz", "integrity": "sha512-eG2dWTVw5bzqGRztnHExczNxt5VGsE6OwTeCG3fdUf9KBsZzO3R5OIIIzWR+iZA0NtZ+RDVdaoE2dK1cn6jH4g==", "dev": true, + "license": "MIT", "bin": { "pidtree": "bin/pidtree.js" }, @@ -1290,6 +1264,7 @@ "resolved": "https://registry.npmjs.org/pluralize/-/pluralize-8.0.0.tgz", "integrity": "sha512-Nc3IT5yHzflTfbjgqWcCPpo7DaKy4FnpB0l/zCAW0Tc7jxAiuqSxHasntB3D7887LSrA93kDJ9IXovxJYxyLCA==", "dev": true, + "license": "MIT", "engines": { "node": ">=4" } @@ -1299,6 +1274,7 @@ "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.5.3.tgz", "integrity": "sha512-QQtaxnoDJeAkDvDKWCLiwIXkTgRhwYDEQCghU9Z6q03iyek/rxRh/2lC3HB7P8sWT2xC/y5JDctPLBIGzHKbhw==", "dev": true, + "license": "MIT", "bin": { "prettier": "bin/prettier.cjs" }, @@ -1314,6 +1290,7 @@ "resolved": "https://registry.npmjs.org/prettier-plugin-solidity/-/prettier-plugin-solidity-2.0.0.tgz", "integrity": "sha512-tis3SwLSrYKDzzRFle48fjPM4GQKBtkVBUajAkt4b75/cc6zojFP7qjz6fDxKfup+34q0jKeSM3QeP9flJFXWw==", "dev": true, + "license": "MIT", "dependencies": { "@nomicfoundation/slang": "1.1.0", "@solidity-parser/parser": "^0.20.1", @@ -1330,13 +1307,15 @@ "version": "1.2.4", "resolved": "https://registry.npmjs.org/proto-list/-/proto-list-1.2.4.tgz", "integrity": "sha512-vtK/94akxsTMhe0/cbfpR+syPuszcuwhqVjJq26CuNDgFGj682oRBXOP5MJpv2r7JtE8MsiepGIqvvOTBwn2vA==", - "dev": true + "dev": true, + "license": "ISC" }, "node_modules/punycode": { "version": "2.3.1", "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==", "dev": true, + "license": "MIT", "engines": { "node": ">=6" } @@ -1346,6 +1325,7 @@ "resolved": "https://registry.npmjs.org/quick-lru/-/quick-lru-5.1.1.tgz", "integrity": "sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA==", "dev": true, + "license": "MIT", "engines": { "node": ">=10" }, @@ -1358,6 +1338,7 @@ "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz", "integrity": "sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==", "dev": true, + "license": "(BSD-2-Clause OR MIT OR Apache-2.0)", "dependencies": { "deep-extend": "^0.6.0", "ini": "~1.3.0", @@ -1373,6 +1354,7 @@ "resolved": "https://registry.npmjs.org/registry-auth-token/-/registry-auth-token-5.1.0.tgz", "integrity": "sha512-GdekYuwLXLxMuFTwAPg5UKGLW/UXzQrZvH/Zj791BQif5T05T0RsaLfHc9q3ZOKi7n+BoprPD9mJ0O0k4xzUlw==", "dev": true, + "license": "MIT", "dependencies": { "@pnpm/npm-conf": "^2.1.0" }, @@ -1385,6 +1367,7 @@ "resolved": "https://registry.npmjs.org/registry-url/-/registry-url-6.0.1.tgz", "integrity": "sha512-+crtS5QjFRqFCoQmvGduwYWEBng99ZvmFvF+cUJkGYF1L1BfU8C6Zp9T7f5vPAwyLkUExpvK+ANVZmGU49qi4Q==", "dev": true, + "license": "MIT", "dependencies": { "rc": "1.2.8" }, @@ -1400,6 +1383,7 @@ "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==", "dev": true, + "license": "MIT", "engines": { "node": ">=0.10.0" } @@ -1408,13 +1392,15 @@ "version": "1.2.1", "resolved": "https://registry.npmjs.org/resolve-alpn/-/resolve-alpn-1.2.1.tgz", "integrity": "sha512-0a1F4l73/ZFZOakJnQ3FvkJ2+gSTQWz/r2KE5OdDY0TxPm5h4GkqkWWfM47T7HsbnOtcJVEF4epCVy6u7Q3K+g==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/resolve-from": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", "dev": true, + "license": "MIT", "engines": { "node": ">=4" } @@ -1424,6 +1410,7 @@ "resolved": "https://registry.npmjs.org/responselike/-/responselike-3.0.0.tgz", "integrity": "sha512-40yHxbNcl2+rzXvZuVkrYohathsSJlMTXKryG5y8uciHv1+xDLHQpgjG64JUO9nrEq2jGLH6IZ8BcZyw3wrweg==", "dev": true, + "license": "MIT", "dependencies": { "lowercase-keys": "^3.0.0" }, @@ -1439,6 +1426,7 @@ "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-5.1.0.tgz", "integrity": "sha512-oMA2dcrw6u0YfxJQXm342bFKX/E4sG9rbTzO9ptUcR/e8A33cHuvStiYOwH7fszkZlZ1z/ta9AAoPk2F4qIOHA==", "dev": true, + "license": "MIT", "dependencies": { "onetime": "^7.0.0", "signal-exit": "^4.1.0" @@ -1450,32 +1438,19 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/restore-cursor/node_modules/onetime": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/onetime/-/onetime-7.0.0.tgz", - "integrity": "sha512-VXJjc87FScF88uafS3JllDgvAm+c/Slfz06lorj2uAY34rlUu0Nt+v8wreiImcrgAjjIHp1rXpTDlLOGw29WwQ==", - "dev": true, - "dependencies": { - "mimic-function": "^5.0.0" - }, - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/rfdc": { "version": "1.4.1", "resolved": "https://registry.npmjs.org/rfdc/-/rfdc-1.4.1.tgz", "integrity": "sha512-q1b3N5QkRUWUl7iyylaaj3kOpIT0N2i9MqIEQXP73GVsN9cw3fdx8X63cEmWhJGi2PPCF23Ijp7ktmd39rawIA==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/semver": { "version": "7.7.2", "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.2.tgz", "integrity": "sha512-RF0Fw+rO5AMf9MAyaRXI4AV0Ulj5lMHqVxxdSgiVbixSCXoEmmX/jk0CuJw4+3SqroYO9VoUh+HcuJivvtJemA==", "dev": true, + "license": "ISC", "bin": { "semver": "bin/semver.js" }, @@ -1483,32 +1458,12 @@ "node": ">=10" } }, - "node_modules/shebang-command": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", - "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", - "dev": true, - "dependencies": { - "shebang-regex": "^3.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/shebang-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", - "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", - "dev": true, - "engines": { - "node": ">=8" - } - }, "node_modules/signal-exit": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", "dev": true, + "license": "ISC", "engines": { "node": ">=14" }, @@ -1521,6 +1476,7 @@ "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-5.0.0.tgz", "integrity": "sha512-FC+lgizVPfie0kkhqUScwRu1O/lF6NOgJmlCgK+/LYxDCTk8sGelYaHDhFcDN+Sn3Cv+3VSa4Byeo+IMCzpMgQ==", "dev": true, + "license": "MIT", "dependencies": { "ansi-styles": "^6.0.0", "is-fullwidth-code-point": "^4.0.0" @@ -1537,6 +1493,7 @@ "resolved": "https://registry.npmjs.org/solhint/-/solhint-5.1.0.tgz", "integrity": "sha512-KWg4gnOnznxHXzH0fUvnhnxnk+1R50GiPChcPeQgA7SKQTSF1LLIEh8R1qbkCEn/fFzz4CfJs+Gh7Rl9uhHy+g==", "dev": true, + "license": "MIT", "dependencies": { "@solidity-parser/parser": "^0.20.0", "ajv": "^6.12.6", @@ -1569,6 +1526,7 @@ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", "dev": true, + "license": "MIT", "engines": { "node": ">=8" } @@ -1578,6 +1536,7 @@ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, + "license": "MIT", "dependencies": { "color-convert": "^2.0.1" }, @@ -1593,6 +1552,7 @@ "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, + "license": "MIT", "dependencies": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" @@ -1609,6 +1569,7 @@ "resolved": "https://registry.npmjs.org/commander/-/commander-10.0.1.tgz", "integrity": "sha512-y4Mg2tXshplEbSGzx7amzPwKKOCGuoSRP/CjEdwwk0FOGlUbq6lKuoyDZTNZkmxHdJtp54hdfY/JUrdL7Xfdug==", "dev": true, + "license": "MIT", "engines": { "node": ">=14" } @@ -1618,6 +1579,7 @@ "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.8.8.tgz", "integrity": "sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q==", "dev": true, + "license": "MIT", "optional": true, "bin": { "prettier": "bin-prettier.js" @@ -1634,6 +1596,7 @@ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", "dev": true, + "license": "MIT", "dependencies": { "ansi-regex": "^5.0.1" }, @@ -1646,6 +1609,7 @@ "resolved": "https://registry.npmjs.org/string-argv/-/string-argv-0.3.2.tgz", "integrity": "sha512-aqD2Q0144Z+/RqG52NeHEkZauTAUWJO8c6yTftGJKO3Tja5tUgIfmIl6kExvhtxSDP7fXB6DvzkfMpCd/F3G+Q==", "dev": true, + "license": "MIT", "engines": { "node": ">=0.6.19" } @@ -1655,6 +1619,7 @@ "resolved": "https://registry.npmjs.org/string-width/-/string-width-7.2.0.tgz", "integrity": "sha512-tsaTIkKW9b4N+AEj+SVA+WhJzV7/zMhcSu78mLKWSk7cXMOSHsBKFWUs0fWwq8QyK3MgJBQRX6Gbi4kYbdvGkQ==", "dev": true, + "license": "MIT", "dependencies": { "emoji-regex": "^10.3.0", "get-east-asian-width": "^1.0.0", @@ -1672,6 +1637,7 @@ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", "dev": true, + "license": "MIT", "dependencies": { "ansi-regex": "^6.0.1" }, @@ -1682,23 +1648,12 @@ "url": "https://github.com/chalk/strip-ansi?sponsor=1" } }, - "node_modules/strip-final-newline": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-3.0.0.tgz", - "integrity": "sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw==", - "dev": true, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/strip-json-comments": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", "integrity": "sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ==", "dev": true, + "license": "MIT", "engines": { "node": ">=0.10.0" } @@ -1708,6 +1663,7 @@ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dev": true, + "license": "MIT", "dependencies": { "has-flag": "^4.0.0" }, @@ -1720,6 +1676,7 @@ "resolved": "https://registry.npmjs.org/table/-/table-6.9.0.tgz", "integrity": "sha512-9kY+CygyYM6j02t5YFHbNz2FN5QmYGv9zAjVp4lCDjlCw7amdckXlEt/bjMhUIfj4ThGRE4gCUH5+yGnNuPo5A==", "dev": true, + "license": "BSD-3-Clause", "dependencies": { "ajv": "^8.0.1", "lodash.truncate": "^4.4.2", @@ -1736,6 +1693,7 @@ "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.17.1.tgz", "integrity": "sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==", "dev": true, + "license": "MIT", "dependencies": { "fast-deep-equal": "^3.1.3", "fast-uri": "^3.0.1", @@ -1752,6 +1710,7 @@ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", "dev": true, + "license": "MIT", "engines": { "node": ">=8" } @@ -1761,6 +1720,7 @@ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, + "license": "MIT", "dependencies": { "color-convert": "^2.0.1" }, @@ -1775,13 +1735,15 @@ "version": "8.0.0", "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/table/node_modules/is-fullwidth-code-point": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", "dev": true, + "license": "MIT", "engines": { "node": ">=8" } @@ -1790,13 +1752,15 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/table/node_modules/slice-ansi": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-4.0.0.tgz", "integrity": "sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==", "dev": true, + "license": "MIT", "dependencies": { "ansi-styles": "^4.0.0", "astral-regex": "^2.0.0", @@ -1814,6 +1778,7 @@ "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", "dev": true, + "license": "MIT", "dependencies": { "emoji-regex": "^8.0.0", "is-fullwidth-code-point": "^3.0.0", @@ -1828,6 +1793,7 @@ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", "dev": true, + "license": "MIT", "dependencies": { "ansi-regex": "^5.0.1" }, @@ -1839,13 +1805,15 @@ "version": "0.2.0", "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/to-regex-range": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", "dev": true, + "license": "MIT", "dependencies": { "is-number": "^7.0.0" }, @@ -1858,30 +1826,17 @@ "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", "dev": true, + "license": "BSD-2-Clause", "dependencies": { "punycode": "^2.1.0" } }, - "node_modules/which": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", - "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", - "dev": true, - "dependencies": { - "isexe": "^2.0.0" - }, - "bin": { - "node-which": "bin/node-which" - }, - "engines": { - "node": ">= 8" - } - }, "node_modules/wrap-ansi": { "version": "9.0.0", "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-9.0.0.tgz", "integrity": "sha512-G8ura3S+3Z2G+mkgNRq8dqaFZAuxfsxpBB8OCTGRTCtp+l/v9nbFNmCUP1BZMts3G1142MsZfn6eeUKrr4PD1Q==", "dev": true, + "license": "MIT", "dependencies": { "ansi-styles": "^6.2.1", "string-width": "^7.0.0", @@ -1898,13 +1853,15 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", - "dev": true + "dev": true, + "license": "ISC" }, "node_modules/yaml": { "version": "2.8.0", "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.8.0.tgz", "integrity": "sha512-4lLa/EcQCB0cJkyts+FpIRx5G/llPxfP6VQU5KByHEhLxY3IJCH0f0Hy1MHI8sClTvsIb8qwRJ6R/ZdlDJ/leQ==", "dev": true, + "license": "ISC", "bin": { "yaml": "bin.mjs" }, diff --git a/package.json b/package.json index bb77fd19..445ef9d9 100644 --- a/package.json +++ b/package.json @@ -36,7 +36,7 @@ "devDependencies": { "@openzeppelin/contracts-upgradeable": "^5.3.0", "husky": "^9.1.7", - "lint-staged": "^15.5.2", + "lint-staged": "^16.0.0", "prettier": "^3.5.3", "prettier-plugin-solidity": "^2.0.0", "solhint": "^5.1.0" From 9ee223c9e6bcb97dbfab57ef22d3d67297275dd1 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Wed, 28 May 2025 16:58:58 +0200 Subject: [PATCH 21/24] chore(deps): update dependency node to v22 (#64) * chore(deps): update dependency node to v22 From 3ee95af731e4fce61ac2b03f418aa4e9fb5f64bd Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Wed, 28 May 2025 17:05:08 +0200 Subject: [PATCH 22/24] chore(deps): update dependency solhint to ^5.1.0 (#63) * chore(deps): update dependency solhint to ^5.1.0 From 572d843bfc3dcc3ff29e6bb71ada5457bbdccb6d Mon Sep 17 00:00:00 2001 From: Marco Tabasco Date: Thu, 29 May 2025 00:51:40 +0200 Subject: [PATCH 23/24] chore: update docs + add release notes --- RELEASE_NOTES.md | 27 +++ docs/src/README.md | 3 +- docs/src/SUMMARY.md | 1 + .../SSVBasedApps.sol/contract.SSVBasedApps.md | 8 +- .../interface.IBasedAppManager.md | 6 +- .../interfaces/ICore.sol/interface.ICore.md | 2 +- .../interface.IProtocolManager.md | 2 +- .../interface.ISSVBasedApps.md | 66 +++++- .../interface.IStrategyManager.md | 2 +- .../interfaces/IViews.sol/interface.IViews.md | 208 ++++++++++++++++++ docs/src/src/core/interfaces/README.md | 1 + .../CoreStorageLib.sol/enum.SSVCoreModules.md | 2 +- .../library.CoreStorageLib.md | 2 +- .../library.ProtocolStorageLib.md | 2 +- .../constants.ValidationLib.md | 14 +- .../library.ValidationLib.md | 2 +- .../contract.BasedAppsManager.md | 12 +- .../contract.ProtocolManager.md | 2 +- .../contract.StrategyManager.md | 19 +- .../contract.WhitelistExample.md | 2 +- .../IBasedApp.sol/interface.IBasedApp.md | 14 +- .../interface.IBasedAppWhitelisted.md | 2 +- .../abstract.BasedAppWhitelisted.md | 2 +- .../abstract.AccessControlBasedApp.md | 28 +-- .../abstract.OwnableBasedApp.md | 28 +-- .../BasedAppCore.sol/abstract.BasedAppCore.md | 32 +-- 26 files changed, 359 insertions(+), 130 deletions(-) create mode 100644 RELEASE_NOTES.md create mode 100644 docs/src/src/core/interfaces/IViews.sol/interface.IViews.md diff --git a/RELEASE_NOTES.md b/RELEASE_NOTES.md new file mode 100644 index 00000000..0cd755bb --- /dev/null +++ b/RELEASE_NOTES.md @@ -0,0 +1,27 @@ +# Release Notes + +## [v0.1.1] 2024-06-xx + +### Functions + +#### Modified +- `function registerBApp(ICore.TokenConfig[] calldata tokenConfigs, string calldata metadataURI) external` +- `function updateDisabledFeatures(uint32 value) external onlyOwner` + +### Errors + +#### New +- `error InvalidDisabledFeatures();` +- `error InvalidFeeExpireTime();` +- `error InvalidFeeTimelockPeriod();` +- `error InvalidMaxShares();` +- `error InvalidObligationExpireTime();` +- `error InvalidObligationTimelockPeriod();` +- `error InvalidTokenUpdateTimelockPeriod();` +- `error InvalidWithdrawalExpireTime();` +- `error InvalidWithdrawalTimelockPeriod();` + +### Events + +#### Modified +- `event BAppRegistered(address indexed bApp, ICore.TokenConfig[] tokenConfigs, string metadataURI);` diff --git a/docs/src/README.md b/docs/src/README.md index ad5e85ce..dda8eab2 100644 --- a/docs/src/README.md +++ b/docs/src/README.md @@ -65,6 +65,8 @@ __`❍ forge test`__ [Slashing & Withdrawals](./guides/slashing-and-withdrawals.md) +[Generation pattern](./guides/generations.md) + ## :gear: _Feature Activation_ [Feature Activation](./guides/feature-activation.md) @@ -78,7 +80,6 @@ __`❍ forge test`__ [Based Apps Onboarding Guide](./guides/bApp-onboarding.md) -  ## :rocket: _Deployments_ diff --git a/docs/src/SUMMARY.md b/docs/src/SUMMARY.md index 2a0eba86..2a23b608 100644 --- a/docs/src/SUMMARY.md +++ b/docs/src/SUMMARY.md @@ -8,6 +8,7 @@ - [IProtocolManager](src/core/interfaces/IProtocolManager.sol/interface.IProtocolManager.md) - [ISSVBasedApps](src/core/interfaces/ISSVBasedApps.sol/interface.ISSVBasedApps.md) - [IStrategyManager](src/core/interfaces/IStrategyManager.sol/interface.IStrategyManager.md) + - [IViews](src/core/interfaces/IViews.sol/interface.IViews.md) - [❱ libraries](src/core/libraries/README.md) - [SSVCoreModules](src/core/libraries/CoreStorageLib.sol/enum.SSVCoreModules.md) - [CoreStorageLib](src/core/libraries/CoreStorageLib.sol/library.CoreStorageLib.md) diff --git a/docs/src/src/core/SSVBasedApps.sol/contract.SSVBasedApps.md b/docs/src/src/core/SSVBasedApps.sol/contract.SSVBasedApps.md index 879f1405..57b5d4f6 100644 --- a/docs/src/src/core/SSVBasedApps.sol/contract.SSVBasedApps.md +++ b/docs/src/src/core/SSVBasedApps.sol/contract.SSVBasedApps.md @@ -1,8 +1,8 @@ # SSVBasedApps -[Git Source](https://github.com/ssvlabs/based-applications/blob/f462573124548b82b6a002d4ef069bdfacf5c637/src/core/SSVBasedApps.sol) +[Git Source](https://github.com/ssvlabs/based-applications/blob/3ee95af731e4fce61ac2b03f418aa4e9fb5f64bd/src/core/SSVBasedApps.sol) **Inherits:** -[ISSVBasedApps](/src/core/interfaces/ISSVBasedApps.sol/interface.ISSVBasedApps.md), UUPSUpgradeable, Ownable2StepUpgradeable, [IBasedAppManager](/src/core/interfaces/IBasedAppManager.sol/interface.IBasedAppManager.md), [IStrategyManager](/src/core/interfaces/IStrategyManager.sol/interface.IStrategyManager.md), [IProtocolManager](/src/core/interfaces/IProtocolManager.sol/interface.IProtocolManager.md) +[ISSVBasedApps](/src/core/interfaces/ISSVBasedApps.sol/interface.ISSVBasedApps.md), UUPSUpgradeable, Ownable2StepUpgradeable **Author:** @@ -91,7 +91,7 @@ function updateBAppMetadataURI(string calldata metadataURI) external; ```solidity -function registerBApp(address[] calldata tokens, uint32[] calldata sharedRiskLevels, string calldata metadataURI) external; +function registerBApp(ICore.TokenConfig[] calldata tokenConfigs, string calldata metadataURI) external; ``` ### updateBAppsTokens @@ -329,7 +329,7 @@ function updateMaxFeeIncrement(uint32 value) external onlyOwner; ```solidity -function updateDisabledFeatures(uint32 disabledFeatures) external onlyOwner; +function updateDisabledFeatures(uint32 value) external onlyOwner; ``` ### delegations diff --git a/docs/src/src/core/interfaces/IBasedAppManager.sol/interface.IBasedAppManager.md b/docs/src/src/core/interfaces/IBasedAppManager.sol/interface.IBasedAppManager.md index 0f5a03d7..4fb15889 100644 --- a/docs/src/src/core/interfaces/IBasedAppManager.sol/interface.IBasedAppManager.md +++ b/docs/src/src/core/interfaces/IBasedAppManager.sol/interface.IBasedAppManager.md @@ -1,5 +1,5 @@ # IBasedAppManager -[Git Source](https://github.com/ssvlabs/based-applications/blob/f462573124548b82b6a002d4ef069bdfacf5c637/src/core/interfaces/IBasedAppManager.sol) +[Git Source](https://github.com/ssvlabs/based-applications/blob/3ee95af731e4fce61ac2b03f418aa4e9fb5f64bd/src/core/interfaces/IBasedAppManager.sol) ## Functions @@ -7,7 +7,7 @@ ```solidity -function registerBApp(address[] calldata tokens, uint32[] calldata sharedRiskLevels, string calldata metadataURI) external; +function registerBApp(ICore.TokenConfig[] calldata tokenConfigs, string calldata metadataURI) external; ``` ### updateBAppMetadataURI @@ -34,7 +34,7 @@ event BAppMetadataURIUpdated(address indexed bApp, string metadataURI); ### BAppRegistered ```solidity -event BAppRegistered(address indexed bApp, address[] tokens, uint32[] sharedRiskLevel, string metadataURI); +event BAppRegistered(address indexed bApp, ICore.TokenConfig[] tokenConfigs, string metadataURI); ``` ### BAppTokensUpdated diff --git a/docs/src/src/core/interfaces/ICore.sol/interface.ICore.md b/docs/src/src/core/interfaces/ICore.sol/interface.ICore.md index c14f6948..24ae6f6e 100644 --- a/docs/src/src/core/interfaces/ICore.sol/interface.ICore.md +++ b/docs/src/src/core/interfaces/ICore.sol/interface.ICore.md @@ -1,5 +1,5 @@ # ICore -[Git Source](https://github.com/ssvlabs/based-applications/blob/f462573124548b82b6a002d4ef069bdfacf5c637/src/core/interfaces/ICore.sol) +[Git Source](https://github.com/ssvlabs/based-applications/blob/3ee95af731e4fce61ac2b03f418aa4e9fb5f64bd/src/core/interfaces/ICore.sol) ## Structs diff --git a/docs/src/src/core/interfaces/IProtocolManager.sol/interface.IProtocolManager.md b/docs/src/src/core/interfaces/IProtocolManager.sol/interface.IProtocolManager.md index 4672c707..bb7fa5b1 100644 --- a/docs/src/src/core/interfaces/IProtocolManager.sol/interface.IProtocolManager.md +++ b/docs/src/src/core/interfaces/IProtocolManager.sol/interface.IProtocolManager.md @@ -1,5 +1,5 @@ # IProtocolManager -[Git Source](https://github.com/ssvlabs/based-applications/blob/f462573124548b82b6a002d4ef069bdfacf5c637/src/core/interfaces/IProtocolManager.sol) +[Git Source](https://github.com/ssvlabs/based-applications/blob/3ee95af731e4fce61ac2b03f418aa4e9fb5f64bd/src/core/interfaces/IProtocolManager.sol) ## Functions diff --git a/docs/src/src/core/interfaces/ISSVBasedApps.sol/interface.ISSVBasedApps.md b/docs/src/src/core/interfaces/ISSVBasedApps.sol/interface.ISSVBasedApps.md index cdffb5cb..ca7e186e 100644 --- a/docs/src/src/core/interfaces/ISSVBasedApps.sol/interface.ISSVBasedApps.md +++ b/docs/src/src/core/interfaces/ISSVBasedApps.sol/interface.ISSVBasedApps.md @@ -1,5 +1,8 @@ # ISSVBasedApps -[Git Source](https://github.com/ssvlabs/based-applications/blob/f462573124548b82b6a002d4ef069bdfacf5c637/src/core/interfaces/ISSVBasedApps.sol) +[Git Source](https://github.com/ssvlabs/based-applications/blob/3ee95af731e4fce61ac2b03f418aa4e9fb5f64bd/src/core/interfaces/ISSVBasedApps.sol) + +**Inherits:** +[IStrategyManager](/src/core/interfaces/IStrategyManager.sol/interface.IStrategyManager.md), [IBasedAppManager](/src/core/interfaces/IBasedAppManager.sol/interface.IBasedAppManager.md), [IProtocolManager](/src/core/interfaces/IProtocolManager.sol/interface.IProtocolManager.md), [IViews](/src/core/interfaces/IViews.sol/interface.IViews.md) ## Functions @@ -10,13 +13,6 @@ function getModuleAddress(SSVCoreModules moduleId) external view returns (address); ``` -### getVersion - - -```solidity -function getVersion() external pure returns (string memory version); -``` - ### initialize @@ -51,6 +47,60 @@ event ModuleUpdated(SSVCoreModules indexed moduleId, address moduleAddress); error InvalidMaxFeeIncrement(); ``` +### InvalidMaxShares + +```solidity +error InvalidMaxShares(); +``` + +### InvalidFeeTimelockPeriod + +```solidity +error InvalidFeeTimelockPeriod(); +``` + +### InvalidFeeExpireTime + +```solidity +error InvalidFeeExpireTime(); +``` + +### InvalidWithdrawalTimelockPeriod + +```solidity +error InvalidWithdrawalTimelockPeriod(); +``` + +### InvalidWithdrawalExpireTime + +```solidity +error InvalidWithdrawalExpireTime(); +``` + +### InvalidObligationTimelockPeriod + +```solidity +error InvalidObligationTimelockPeriod(); +``` + +### InvalidObligationExpireTime + +```solidity +error InvalidObligationExpireTime(); +``` + +### InvalidTokenUpdateTimelockPeriod + +```solidity +error InvalidTokenUpdateTimelockPeriod(); +``` + +### InvalidDisabledFeatures + +```solidity +error InvalidDisabledFeatures(); +``` + ### TargetModuleDoesNotExist ```solidity diff --git a/docs/src/src/core/interfaces/IStrategyManager.sol/interface.IStrategyManager.md b/docs/src/src/core/interfaces/IStrategyManager.sol/interface.IStrategyManager.md index 27fcf9dc..e77b31e8 100644 --- a/docs/src/src/core/interfaces/IStrategyManager.sol/interface.IStrategyManager.md +++ b/docs/src/src/core/interfaces/IStrategyManager.sol/interface.IStrategyManager.md @@ -1,5 +1,5 @@ # IStrategyManager -[Git Source](https://github.com/ssvlabs/based-applications/blob/f462573124548b82b6a002d4ef069bdfacf5c637/src/core/interfaces/IStrategyManager.sol) +[Git Source](https://github.com/ssvlabs/based-applications/blob/3ee95af731e4fce61ac2b03f418aa4e9fb5f64bd/src/core/interfaces/IStrategyManager.sol) ## Functions diff --git a/docs/src/src/core/interfaces/IViews.sol/interface.IViews.md b/docs/src/src/core/interfaces/IViews.sol/interface.IViews.md new file mode 100644 index 00000000..a50a20aa --- /dev/null +++ b/docs/src/src/core/interfaces/IViews.sol/interface.IViews.md @@ -0,0 +1,208 @@ +# IViews +[Git Source](https://github.com/ssvlabs/based-applications/blob/3ee95af731e4fce61ac2b03f418aa4e9fb5f64bd/src/core/interfaces/IViews.sol) + + +## Functions +### delegations + + +```solidity +function delegations(address account, address receiver) external view returns (uint32); +``` + +### totalDelegatedPercentage + + +```solidity +function totalDelegatedPercentage(address delegator) external view returns (uint32); +``` + +### registeredBApps + + +```solidity +function registeredBApps(address bApp) external view returns (bool isRegistered); +``` + +### strategies + + +```solidity +function strategies(uint32 strategyId) external view returns (address strategyOwner, uint32 fee); +``` + +### ownedStrategies + + +```solidity +function ownedStrategies(address owner) external view returns (uint32[] memory strategyIds); +``` + +### strategyAccountShares + + +```solidity +function strategyAccountShares(uint32 strategyId, address account, address token) external view returns (uint256); +``` + +### strategyTotalBalance + + +```solidity +function strategyTotalBalance(uint32 strategyId, address token) external view returns (uint256); +``` + +### strategyTotalShares + + +```solidity +function strategyTotalShares(uint32 strategyId, address token) external view returns (uint256); +``` + +### strategyGeneration + + +```solidity +function strategyGeneration(uint32 strategyId, address token) external view returns (uint256); +``` + +### obligations + + +```solidity +function obligations(uint32 strategyId, address bApp, address token) external view returns (uint32 percentage, bool isSet); +``` + +### bAppTokens + + +```solidity +function bAppTokens(address bApp, address token) external view returns (uint32 currentValue, bool isSet, uint32 pendingValue, uint32 effectTime); +``` + +### accountBAppStrategy + + +```solidity +function accountBAppStrategy(address account, address bApp) external view returns (uint32); +``` + +### feeUpdateRequests + + +```solidity +function feeUpdateRequests(uint32 strategyId) external view returns (uint32 percentage, uint32 requestTime); +``` + +### withdrawalRequests + + +```solidity +function withdrawalRequests(uint32 strategyId, address account, address token) external view returns (uint256 shares, uint32 requestTime); +``` + +### obligationRequests + + +```solidity +function obligationRequests(uint32 strategyId, address token, address bApp) external view returns (uint32 percentage, uint32 requestTime); +``` + +### slashingFund + + +```solidity +function slashingFund(address account, address token) external view returns (uint256); +``` + +### maxPercentage + + +```solidity +function maxPercentage() external pure returns (uint32); +``` + +### ethAddress + + +```solidity +function ethAddress() external pure returns (address); +``` + +### maxShares + + +```solidity +function maxShares() external view returns (uint256); +``` + +### maxFeeIncrement + + +```solidity +function maxFeeIncrement() external view returns (uint32); +``` + +### feeTimelockPeriod + + +```solidity +function feeTimelockPeriod() external view returns (uint32); +``` + +### feeExpireTime + + +```solidity +function feeExpireTime() external view returns (uint32); +``` + +### withdrawalTimelockPeriod + + +```solidity +function withdrawalTimelockPeriod() external view returns (uint32); +``` + +### withdrawalExpireTime + + +```solidity +function withdrawalExpireTime() external view returns (uint32); +``` + +### obligationTimelockPeriod + + +```solidity +function obligationTimelockPeriod() external view returns (uint32); +``` + +### obligationExpireTime + + +```solidity +function obligationExpireTime() external view returns (uint32); +``` + +### disabledFeatures + + +```solidity +function disabledFeatures() external view returns (uint32); +``` + +### tokenUpdateTimelockPeriod + + +```solidity +function tokenUpdateTimelockPeriod() external view returns (uint32); +``` + +### getVersion + + +```solidity +function getVersion() external pure returns (string memory); +``` + diff --git a/docs/src/src/core/interfaces/README.md b/docs/src/src/core/interfaces/README.md index 6997ead1..0593724a 100644 --- a/docs/src/src/core/interfaces/README.md +++ b/docs/src/src/core/interfaces/README.md @@ -6,3 +6,4 @@ - [IProtocolManager](IProtocolManager.sol/interface.IProtocolManager.md) - [ISSVBasedApps](ISSVBasedApps.sol/interface.ISSVBasedApps.md) - [IStrategyManager](IStrategyManager.sol/interface.IStrategyManager.md) +- [IViews](IViews.sol/interface.IViews.md) diff --git a/docs/src/src/core/libraries/CoreStorageLib.sol/enum.SSVCoreModules.md b/docs/src/src/core/libraries/CoreStorageLib.sol/enum.SSVCoreModules.md index b20a0c76..68a026db 100644 --- a/docs/src/src/core/libraries/CoreStorageLib.sol/enum.SSVCoreModules.md +++ b/docs/src/src/core/libraries/CoreStorageLib.sol/enum.SSVCoreModules.md @@ -1,5 +1,5 @@ # SSVCoreModules -[Git Source](https://github.com/ssvlabs/based-applications/blob/f462573124548b82b6a002d4ef069bdfacf5c637/src/core/libraries/CoreStorageLib.sol) +[Git Source](https://github.com/ssvlabs/based-applications/blob/3ee95af731e4fce61ac2b03f418aa4e9fb5f64bd/src/core/libraries/CoreStorageLib.sol) ```solidity diff --git a/docs/src/src/core/libraries/CoreStorageLib.sol/library.CoreStorageLib.md b/docs/src/src/core/libraries/CoreStorageLib.sol/library.CoreStorageLib.md index aba2eba0..cfb1ab50 100644 --- a/docs/src/src/core/libraries/CoreStorageLib.sol/library.CoreStorageLib.md +++ b/docs/src/src/core/libraries/CoreStorageLib.sol/library.CoreStorageLib.md @@ -1,5 +1,5 @@ # CoreStorageLib -[Git Source](https://github.com/ssvlabs/based-applications/blob/f462573124548b82b6a002d4ef069bdfacf5c637/src/core/libraries/CoreStorageLib.sol) +[Git Source](https://github.com/ssvlabs/based-applications/blob/3ee95af731e4fce61ac2b03f418aa4e9fb5f64bd/src/core/libraries/CoreStorageLib.sol) ## State Variables diff --git a/docs/src/src/core/libraries/ProtocolStorageLib.sol/library.ProtocolStorageLib.md b/docs/src/src/core/libraries/ProtocolStorageLib.sol/library.ProtocolStorageLib.md index aa331895..bce8a21b 100644 --- a/docs/src/src/core/libraries/ProtocolStorageLib.sol/library.ProtocolStorageLib.md +++ b/docs/src/src/core/libraries/ProtocolStorageLib.sol/library.ProtocolStorageLib.md @@ -1,5 +1,5 @@ # ProtocolStorageLib -[Git Source](https://github.com/ssvlabs/based-applications/blob/f462573124548b82b6a002d4ef069bdfacf5c637/src/core/libraries/ProtocolStorageLib.sol) +[Git Source](https://github.com/ssvlabs/based-applications/blob/3ee95af731e4fce61ac2b03f418aa4e9fb5f64bd/src/core/libraries/ProtocolStorageLib.sol) ## State Variables diff --git a/docs/src/src/core/libraries/ValidationLib.sol/constants.ValidationLib.md b/docs/src/src/core/libraries/ValidationLib.sol/constants.ValidationLib.md index 08c55976..a39eaf59 100644 --- a/docs/src/src/core/libraries/ValidationLib.sol/constants.ValidationLib.md +++ b/docs/src/src/core/libraries/ValidationLib.sol/constants.ValidationLib.md @@ -1,5 +1,17 @@ # Constants -[Git Source](https://github.com/ssvlabs/based-applications/blob/f462573124548b82b6a002d4ef069bdfacf5c637/src/core/libraries/ValidationLib.sol) +[Git Source](https://github.com/ssvlabs/based-applications/blob/3ee95af731e4fce61ac2b03f418aa4e9fb5f64bd/src/core/libraries/ValidationLib.sol) + +### MIN_TIME_LOCK_PERIOD + +```solidity +uint32 constant MIN_TIME_LOCK_PERIOD = 1 days; +``` + +### MIN_EXPIRE_TIME + +```solidity +uint32 constant MIN_EXPIRE_TIME = 1 hours; +``` ### MAX_PERCENTAGE diff --git a/docs/src/src/core/libraries/ValidationLib.sol/library.ValidationLib.md b/docs/src/src/core/libraries/ValidationLib.sol/library.ValidationLib.md index b62afb71..0440a706 100644 --- a/docs/src/src/core/libraries/ValidationLib.sol/library.ValidationLib.md +++ b/docs/src/src/core/libraries/ValidationLib.sol/library.ValidationLib.md @@ -1,5 +1,5 @@ # ValidationLib -[Git Source](https://github.com/ssvlabs/based-applications/blob/f462573124548b82b6a002d4ef069bdfacf5c637/src/core/libraries/ValidationLib.sol) +[Git Source](https://github.com/ssvlabs/based-applications/blob/3ee95af731e4fce61ac2b03f418aa4e9fb5f64bd/src/core/libraries/ValidationLib.sol) ## Functions diff --git a/docs/src/src/core/modules/BasedAppsManager.sol/contract.BasedAppsManager.md b/docs/src/src/core/modules/BasedAppsManager.sol/contract.BasedAppsManager.md index 84eb2c0a..e31ce82a 100644 --- a/docs/src/src/core/modules/BasedAppsManager.sol/contract.BasedAppsManager.md +++ b/docs/src/src/core/modules/BasedAppsManager.sol/contract.BasedAppsManager.md @@ -1,5 +1,5 @@ # BasedAppsManager -[Git Source](https://github.com/ssvlabs/based-applications/blob/f462573124548b82b6a002d4ef069bdfacf5c637/src/core/modules/BasedAppsManager.sol) +[Git Source](https://github.com/ssvlabs/based-applications/blob/3ee95af731e4fce61ac2b03f418aa4e9fb5f64bd/src/core/modules/BasedAppsManager.sol) **Inherits:** [IBasedAppManager](/src/core/interfaces/IBasedAppManager.sol/interface.IBasedAppManager.md) @@ -23,14 +23,13 @@ Registers a bApp. ```solidity -function registerBApp(address[] calldata tokens, uint32[] calldata sharedRiskLevels, string calldata metadataURI) external; +function registerBApp(ICore.TokenConfig[] calldata tokenConfigs, string calldata metadataURI) external; ``` **Parameters** |Name|Type|Description| |----|----|-----------| -|`tokens`|`address[]`|The list of tokens the bApp accepts; can be empty.| -|`sharedRiskLevels`|`uint32[]`|The shared risk level of the bApp.| +|`tokenConfigs`|`ICore.TokenConfig[]`|The list of tokens configs the bApp accepts; can be empty.| |`metadataURI`|`string`|The metadata URI of the bApp, which is a link (e.g., http://example.com) to a JSON file containing metadata such as the name, description, logo, etc.| @@ -62,14 +61,13 @@ Function to add tokens to a bApp ```solidity -function _addNewTokens(address bApp, address[] calldata tokens, uint32[] calldata sharedRiskLevels) internal; +function _addNewTokens(address bApp, ICore.TokenConfig[] calldata tokenConfigs) internal; ``` **Parameters** |Name|Type|Description| |----|----|-----------| |`bApp`|`address`|The address of the bApp| -|`tokens`|`address[]`|The list of tokens to add| -|`sharedRiskLevels`|`uint32[]`|The shared risk levels of the tokens| +|`tokenConfigs`|`ICore.TokenConfig[]`|The list of tokens to add| diff --git a/docs/src/src/core/modules/ProtocolManager.sol/contract.ProtocolManager.md b/docs/src/src/core/modules/ProtocolManager.sol/contract.ProtocolManager.md index 605925a0..8d080770 100644 --- a/docs/src/src/core/modules/ProtocolManager.sol/contract.ProtocolManager.md +++ b/docs/src/src/core/modules/ProtocolManager.sol/contract.ProtocolManager.md @@ -1,5 +1,5 @@ # ProtocolManager -[Git Source](https://github.com/ssvlabs/based-applications/blob/f462573124548b82b6a002d4ef069bdfacf5c637/src/core/modules/ProtocolManager.sol) +[Git Source](https://github.com/ssvlabs/based-applications/blob/3ee95af731e4fce61ac2b03f418aa4e9fb5f64bd/src/core/modules/ProtocolManager.sol) **Inherits:** [IProtocolManager](/src/core/interfaces/IProtocolManager.sol/interface.IProtocolManager.md) diff --git a/docs/src/src/core/modules/StrategyManager.sol/contract.StrategyManager.md b/docs/src/src/core/modules/StrategyManager.sol/contract.StrategyManager.md index b8697d3c..15c37bd1 100644 --- a/docs/src/src/core/modules/StrategyManager.sol/contract.StrategyManager.md +++ b/docs/src/src/core/modules/StrategyManager.sol/contract.StrategyManager.md @@ -1,5 +1,5 @@ # StrategyManager -[Git Source](https://github.com/ssvlabs/based-applications/blob/f462573124548b82b6a002d4ef069bdfacf5c637/src/core/modules/StrategyManager.sol) +[Git Source](https://github.com/ssvlabs/based-applications/blob/3ee95af731e4fce61ac2b03f418aa4e9fb5f64bd/src/core/modules/StrategyManager.sol) **Inherits:** ReentrancyGuardTransient, [IStrategyManager](/src/core/interfaces/IStrategyManager.sol/interface.IStrategyManager.md) @@ -162,13 +162,13 @@ function optInToBApp(uint32 strategyId, address bApp, address[] calldata tokens, |`data`|`bytes`|Optional parameter that could be required by the service| -### _isBApp +### _isContract -Function to check if an address uses the correct bApp interface +Function to check if an address is a contract ```solidity -function _isBApp(address bApp) private view returns (bool); +function _isContract(address bApp) private view returns (bool); ``` **Parameters** @@ -180,7 +180,7 @@ function _isBApp(address bApp) private view returns (bool); |Name|Type|Description| |----|----|-----------| -|``|`bool`|True if the address uses the correct bApp interface| +|``|`bool`|True if the address is a contract| ### depositERC20 @@ -501,6 +501,13 @@ function getSlashableBalance(CoreStorageLib.Data storage s, uint32 strategyId, a |`slashableBalance`|`uint256`|The slashable balance| +### _checkStrategyOptedIn + + +```solidity +function _checkStrategyOptedIn(CoreStorageLib.Data storage s, uint32 strategyId, address bApp) internal view; +``` + ### slash Slash a strategy @@ -538,7 +545,7 @@ function _adjustObligation( address token, uint256 amount, ICore.Shares storage strategyTokenShares -) internal; +) internal returns (uint32 obligationPercentage); ``` ### withdrawSlashingFund diff --git a/docs/src/src/middleware/examples/WhitelistExample.sol/contract.WhitelistExample.md b/docs/src/src/middleware/examples/WhitelistExample.sol/contract.WhitelistExample.md index 4df60b4f..e1a56051 100644 --- a/docs/src/src/middleware/examples/WhitelistExample.sol/contract.WhitelistExample.md +++ b/docs/src/src/middleware/examples/WhitelistExample.sol/contract.WhitelistExample.md @@ -1,5 +1,5 @@ # WhitelistExample -[Git Source](https://github.com/ssvlabs/based-applications/blob/f462573124548b82b6a002d4ef069bdfacf5c637/src/middleware/examples/WhitelistExample.sol) +[Git Source](https://github.com/ssvlabs/based-applications/blob/3ee95af731e4fce61ac2b03f418aa4e9fb5f64bd/src/middleware/examples/WhitelistExample.sol) **Inherits:** [OwnableBasedApp](/src/middleware/modules/core+roles/OwnableBasedApp.sol/abstract.OwnableBasedApp.md), [BasedAppWhitelisted](/src/middleware/modules/BasedAppWhitelisted.sol/abstract.BasedAppWhitelisted.md) diff --git a/docs/src/src/middleware/interfaces/IBasedApp.sol/interface.IBasedApp.md b/docs/src/src/middleware/interfaces/IBasedApp.sol/interface.IBasedApp.md index 0573fdac..8ad4607b 100644 --- a/docs/src/src/middleware/interfaces/IBasedApp.sol/interface.IBasedApp.md +++ b/docs/src/src/middleware/interfaces/IBasedApp.sol/interface.IBasedApp.md @@ -1,8 +1,5 @@ # IBasedApp -[Git Source](https://github.com/ssvlabs/based-applications/blob/f462573124548b82b6a002d4ef069bdfacf5c637/src/middleware/interfaces/IBasedApp.sol) - -**Inherits:** -IERC165 +[Git Source](https://github.com/ssvlabs/based-applications/blob/3ee95af731e4fce61ac2b03f418aa4e9fb5f64bd/src/middleware/interfaces/IBasedApp.sol) ## Functions @@ -17,7 +14,7 @@ function optInToBApp(uint32 strategyId, address[] calldata tokens, uint32[] call ```solidity -function registerBApp(address[] calldata tokens, uint32[] calldata sharedRiskLevels, string calldata metadataURI) external; +function registerBApp(ICore.TokenConfig[] calldata tokenConfigs, string calldata metadataURI) external; ``` ### slash @@ -29,13 +26,6 @@ function slash(uint32 strategyId, address token, uint32 percentage, address send returns (bool success, address receiver, bool exit); ``` -### supportsInterface - - -```solidity -function supportsInterface(bytes4 interfaceId) external view returns (bool); -``` - ### updateBAppMetadataURI diff --git a/docs/src/src/middleware/interfaces/IBasedAppWhitelisted.sol/interface.IBasedAppWhitelisted.md b/docs/src/src/middleware/interfaces/IBasedAppWhitelisted.sol/interface.IBasedAppWhitelisted.md index 0c9bda76..5db5cac9 100644 --- a/docs/src/src/middleware/interfaces/IBasedAppWhitelisted.sol/interface.IBasedAppWhitelisted.md +++ b/docs/src/src/middleware/interfaces/IBasedAppWhitelisted.sol/interface.IBasedAppWhitelisted.md @@ -1,5 +1,5 @@ # IBasedAppWhitelisted -[Git Source](https://github.com/ssvlabs/based-applications/blob/f462573124548b82b6a002d4ef069bdfacf5c637/src/middleware/interfaces/IBasedAppWhitelisted.sol) +[Git Source](https://github.com/ssvlabs/based-applications/blob/3ee95af731e4fce61ac2b03f418aa4e9fb5f64bd/src/middleware/interfaces/IBasedAppWhitelisted.sol) ## Functions diff --git a/docs/src/src/middleware/modules/BasedAppWhitelisted.sol/abstract.BasedAppWhitelisted.md b/docs/src/src/middleware/modules/BasedAppWhitelisted.sol/abstract.BasedAppWhitelisted.md index d373b492..4a1798b8 100644 --- a/docs/src/src/middleware/modules/BasedAppWhitelisted.sol/abstract.BasedAppWhitelisted.md +++ b/docs/src/src/middleware/modules/BasedAppWhitelisted.sol/abstract.BasedAppWhitelisted.md @@ -1,5 +1,5 @@ # BasedAppWhitelisted -[Git Source](https://github.com/ssvlabs/based-applications/blob/f462573124548b82b6a002d4ef069bdfacf5c637/src/middleware/modules/BasedAppWhitelisted.sol) +[Git Source](https://github.com/ssvlabs/based-applications/blob/3ee95af731e4fce61ac2b03f418aa4e9fb5f64bd/src/middleware/modules/BasedAppWhitelisted.sol) **Inherits:** [IBasedAppWhitelisted](/src/middleware/interfaces/IBasedAppWhitelisted.sol/interface.IBasedAppWhitelisted.md) diff --git a/docs/src/src/middleware/modules/core+roles/AccessControlBasedApp.sol/abstract.AccessControlBasedApp.md b/docs/src/src/middleware/modules/core+roles/AccessControlBasedApp.sol/abstract.AccessControlBasedApp.md index 10043154..9103c220 100644 --- a/docs/src/src/middleware/modules/core+roles/AccessControlBasedApp.sol/abstract.AccessControlBasedApp.md +++ b/docs/src/src/middleware/modules/core+roles/AccessControlBasedApp.sol/abstract.AccessControlBasedApp.md @@ -1,5 +1,5 @@ # AccessControlBasedApp -[Git Source](https://github.com/ssvlabs/based-applications/blob/f462573124548b82b6a002d4ef069bdfacf5c637/src/middleware/modules/core+roles/AccessControlBasedApp.sol) +[Git Source](https://github.com/ssvlabs/based-applications/blob/3ee95af731e4fce61ac2b03f418aa4e9fb5f64bd/src/middleware/modules/core+roles/AccessControlBasedApp.sol) **Inherits:** [BasedAppCore](/src/middleware/modules/core/BasedAppCore.sol/abstract.BasedAppCore.md), AccessControl @@ -57,14 +57,13 @@ Registers a BApp calling the SSV SSVBasedApps ```solidity -function registerBApp(address[] calldata tokens, uint32[] calldata sharedRiskLevels, string calldata metadataURI) external override onlyRole(MANAGER_ROLE); +function registerBApp(ICore.TokenConfig[] calldata tokenConfigs, string calldata metadataURI) external override onlyRole(MANAGER_ROLE); ``` **Parameters** |Name|Type|Description| |----|----|-----------| -|`tokens`|`address[]`|array of token addresses| -|`sharedRiskLevels`|`uint32[]`|array of shared risk levels| +|`tokenConfigs`|`ICore.TokenConfig[]`|array of token addresses and shared risk levels| |`metadataURI`|`string`|URI of the metadata| @@ -83,24 +82,3 @@ function updateBAppMetadataURI(string calldata metadataURI) external override on |`metadataURI`|`string`|new metadata URI| -### supportsInterface - -Checks if the contract supports the interface - - -```solidity -function supportsInterface(bytes4 interfaceId) public pure override(AccessControl, BasedAppCore) returns (bool isSupported); -``` -**Parameters** - -|Name|Type|Description| -|----|----|-----------| -|`interfaceId`|`bytes4`|interface id| - -**Returns** - -|Name|Type|Description| -|----|----|-----------| -|`isSupported`|`bool`|if the contract supports the interface| - - diff --git a/docs/src/src/middleware/modules/core+roles/OwnableBasedApp.sol/abstract.OwnableBasedApp.md b/docs/src/src/middleware/modules/core+roles/OwnableBasedApp.sol/abstract.OwnableBasedApp.md index 45ec53a6..fa6eec5b 100644 --- a/docs/src/src/middleware/modules/core+roles/OwnableBasedApp.sol/abstract.OwnableBasedApp.md +++ b/docs/src/src/middleware/modules/core+roles/OwnableBasedApp.sol/abstract.OwnableBasedApp.md @@ -1,5 +1,5 @@ # OwnableBasedApp -[Git Source](https://github.com/ssvlabs/based-applications/blob/f462573124548b82b6a002d4ef069bdfacf5c637/src/middleware/modules/core+roles/OwnableBasedApp.sol) +[Git Source](https://github.com/ssvlabs/based-applications/blob/3ee95af731e4fce61ac2b03f418aa4e9fb5f64bd/src/middleware/modules/core+roles/OwnableBasedApp.sol) **Inherits:** Ownable, [BasedAppCore](/src/middleware/modules/core/BasedAppCore.sol/abstract.BasedAppCore.md) @@ -28,14 +28,13 @@ Registers a BApp calling the SSV SSVBasedApps ```solidity -function registerBApp(address[] calldata tokens, uint32[] calldata sharedRiskLevels, string calldata metadataURI) external override onlyOwner; +function registerBApp(ICore.TokenConfig[] calldata tokenConfigs, string calldata metadataURI) external override onlyOwner; ``` **Parameters** |Name|Type|Description| |----|----|-----------| -|`tokens`|`address[]`|array of token addresses| -|`sharedRiskLevels`|`uint32[]`|array of shared risk levels| +|`tokenConfigs`|`ICore.TokenConfig[]`|array of token addresses and shared risk levels| |`metadataURI`|`string`|URI of the metadata| @@ -54,24 +53,3 @@ function updateBAppMetadataURI(string calldata metadataURI) external override on |`metadataURI`|`string`|new metadata URI| -### supportsInterface - -Checks if the contract supports the interface - - -```solidity -function supportsInterface(bytes4 interfaceId) public pure override(BasedAppCore) returns (bool isSupported); -``` -**Parameters** - -|Name|Type|Description| -|----|----|-----------| -|`interfaceId`|`bytes4`|interface id| - -**Returns** - -|Name|Type|Description| -|----|----|-----------| -|`isSupported`|`bool`|if the contract supports the interface| - - diff --git a/docs/src/src/middleware/modules/core/BasedAppCore.sol/abstract.BasedAppCore.md b/docs/src/src/middleware/modules/core/BasedAppCore.sol/abstract.BasedAppCore.md index 6dae71ec..17d90255 100644 --- a/docs/src/src/middleware/modules/core/BasedAppCore.sol/abstract.BasedAppCore.md +++ b/docs/src/src/middleware/modules/core/BasedAppCore.sol/abstract.BasedAppCore.md @@ -1,5 +1,5 @@ # BasedAppCore -[Git Source](https://github.com/ssvlabs/based-applications/blob/f462573124548b82b6a002d4ef069bdfacf5c637/src/middleware/modules/core/BasedAppCore.sol) +[Git Source](https://github.com/ssvlabs/based-applications/blob/3ee95af731e4fce61ac2b03f418aa4e9fb5f64bd/src/middleware/modules/core/BasedAppCore.sol) **Inherits:** [IBasedApp](/src/middleware/interfaces/IBasedApp.sol/interface.IBasedApp.md) @@ -43,7 +43,7 @@ constructor(address _ssvBasedAppsNetwork); ### registerBApp -Registers a BApp calling the SSV SSVBasedApps +Registers a BApp calling the SSVBasedApps *metadata should point to a json that respect template: { @@ -56,14 +56,13 @@ Registers a BApp calling the SSV SSVBasedApps ```solidity -function registerBApp(address[] calldata tokens, uint32[] calldata sharedRiskLevels, string calldata metadataURI) external virtual; +function registerBApp(ICore.TokenConfig[] calldata tokenConfigs, string calldata metadataURI) external virtual; ``` **Parameters** |Name|Type|Description| |----|----|-----------| -|`tokens`|`address[]`|array of token addresses| -|`sharedRiskLevels`|`uint32[]`|array of shared risk levels| +|`tokenConfigs`|`ICore.TokenConfig[]`|array of token configs (address, shared risk level)| |`metadataURI`|`string`|URI of the metadata| @@ -131,9 +130,7 @@ function optInToBApp(uint32, address[] calldata, uint32[] calldata, bytes callda function slash(uint32, address, uint32, address, bytes calldata) external virtual onlySSVBasedAppManager returns (bool, address, bool); ``` -### supportsInterface - -Checks if the contract supports the interface +### receive *--- CORE LOGIC (TO BE IMPLEMENTED) ---* @@ -142,25 +139,6 @@ Checks if the contract supports the interface *--- RETURN RECEIVER ADDRESS FOR THE SLASHED FUNDS ---* -```solidity -function supportsInterface(bytes4 interfaceId) public pure virtual returns (bool); -``` -**Parameters** - -|Name|Type|Description| -|----|----|-----------| -|`interfaceId`|`bytes4`|interface id| - -**Returns** - -|Name|Type|Description| -|----|----|-----------| -|``|`bool`|true if the contract supports the interface| - - -### receive - - ```solidity receive() external payable virtual; ``` From b48bc58a7113c952c1cbfe5a5c2b576d9bb37b85 Mon Sep 17 00:00:00 2001 From: Riccardo Persiani Date: Fri, 30 May 2025 12:10:42 +0200 Subject: [PATCH 24/24] feat: support opt-out WIP --- src/core/SSVBasedApps.sol | 2 +- src/core/interfaces/ICore.sol | 9 +++++ src/core/interfaces/IStrategyManager.sol | 5 +++ src/core/libraries/CoreStorageLib.sol | 2 +- src/core/modules/StrategyManager.sol | 47 +++++++++++++++++++++--- 5 files changed, 58 insertions(+), 7 deletions(-) diff --git a/src/core/SSVBasedApps.sol b/src/core/SSVBasedApps.sol index ea323dc6..6fdd958d 100644 --- a/src/core/SSVBasedApps.sol +++ b/src/core/SSVBasedApps.sol @@ -525,7 +525,7 @@ contract SSVBasedApps is address bApp ) external view returns (uint32) { CoreStorageLib.Data storage s = CoreStorageLib.load(); - return s.accountBAppStrategy[account][bApp]; + return s.accountBAppStrategy[account][bApp].strategyId; } function feeUpdateRequests( diff --git a/src/core/interfaces/ICore.sol b/src/core/interfaces/ICore.sol index 645306b9..2949a275 100644 --- a/src/core/interfaces/ICore.sol +++ b/src/core/interfaces/ICore.sol @@ -32,6 +32,15 @@ interface ICore { uint32 fee; } + struct StrategyOptIn { + /// @dev The strategy ID + uint32 strategyId; + /// @dev The block time when the opt-in was sent + uint32 requestTime; + /// @dev The opt-out time + uint32 optOutEffectiveTime; + } + /// @notice Represents a FeeUpdateRequest struct FeeUpdateRequest { /// @dev The new fee percentage diff --git a/src/core/interfaces/IStrategyManager.sol b/src/core/interfaces/IStrategyManager.sol index f2506d2e..649be827 100644 --- a/src/core/interfaces/IStrategyManager.sol +++ b/src/core/interfaces/IStrategyManager.sol @@ -15,6 +15,10 @@ interface IStrategyManager { address[] tokens, uint32[] obligationPercentages ); + event BAppOptedOutByStrategy( + uint32 indexed strategyId, + address indexed bApp + ); event DelegationCreated( address indexed delegator, address indexed receiver, @@ -165,6 +169,7 @@ interface IStrategyManager { error BAppAlreadyOptedIn(); error BAppNotOptedIn(); + error BAppAlreadyOptedOut(); error BAppOptInFailed(); error BAppSlashingFailed(); error DelegationAlreadyExists(); diff --git a/src/core/libraries/CoreStorageLib.sol b/src/core/libraries/CoreStorageLib.sol index c130ce43..2e4160b0 100644 --- a/src/core/libraries/CoreStorageLib.sol +++ b/src/core/libraries/CoreStorageLib.sol @@ -30,7 +30,7 @@ library CoreStorageLib { * @notice Links an account to a single strategy for a specific bApp * @dev Guarantees that an account cannot have more than one strategy for a given bApp */ - mapping(address account => mapping(address bApp => uint32 strategyId)) accountBAppStrategy; + mapping(address account => mapping(address bApp => ICore.StrategyOptIn strategyOptIn)) accountBAppStrategy; /** * @notice Tracks the percentage of validator balance a delegator has delegated to a specific receiver account * @dev Each delegator can allocate a portion of their validator balance to multiple accounts including itself diff --git a/src/core/modules/StrategyManager.sol b/src/core/modules/StrategyManager.sol index 3bdbd2b8..995942a5 100644 --- a/src/core/modules/StrategyManager.sol +++ b/src/core/modules/StrategyManager.sol @@ -202,7 +202,12 @@ contract StrategyManager is ReentrancyGuardTransient, IStrategyManager { // Check if a strategy exists for the given bApp. // It is not possible opt-in to the same bApp twice with the same strategy owner. - if (s.accountBAppStrategy[msg.sender][bApp] != 0) { + // use the effectiveTime to check if the strategy is not opted-in and opted-out + if ( + (s.accountBAppStrategy[msg.sender][bApp].strategyId != 0 && + s.accountBAppStrategy[msg.sender][bApp].optOutEffectiveTime == + 0) + ) { revert BAppAlreadyOptedIn(); } @@ -213,7 +218,12 @@ contract StrategyManager is ReentrancyGuardTransient, IStrategyManager { obligationPercentages ); - s.accountBAppStrategy[msg.sender][bApp] = strategyId; + // todo, save in one struct to save gas + s.accountBAppStrategy[msg.sender][bApp].strategyId = strategyId; + s.accountBAppStrategy[msg.sender][bApp].requestTime = uint32( + block.timestamp + ); + s.accountBAppStrategy[msg.sender][bApp].optOutEffectiveTime = 0; if (_isContract(bApp)) { bool success = IBasedApp(bApp).optInToBApp( @@ -235,6 +245,29 @@ contract StrategyManager is ReentrancyGuardTransient, IStrategyManager { } /// @notice Function to check if an address is a contract + function optOutFromBApp(uint32 strategyId, address bApp) external { + CoreStorageLib.Data storage s = CoreStorageLib.load(); + _onlyStrategyOwner(strategyId, s); + + if (s.accountBAppStrategy[msg.sender][bApp].strategyId != strategyId) { + revert BAppNotOptedIn(); + } + + if ( + s.accountBAppStrategy[msg.sender][bApp].optOutEffectiveTime < + block.timestamp + ) { + revert BAppAlreadyOptedOut(); + } + + s.accountBAppStrategy[msg.sender][bApp].optOutEffectiveTime = + uint32(block.timestamp) + + 1; //ProtocolStorageLib.load().bAppOptOutDelay; + + emit IStrategyManager.BAppOptedOutByStrategy(strategyId, bApp); + } + + /// @notice Function to check if an address uses the correct bApp interface /// @param bApp The address of the bApp /// @return True if the address is a contract function _isContract(address bApp) private view returns (bool) { @@ -342,7 +375,7 @@ contract StrategyManager is ReentrancyGuardTransient, IStrategyManager { CoreStorageLib.Data storage s = CoreStorageLib.load(); _onlyStrategyOwner(strategyId, s); - if (s.accountBAppStrategy[msg.sender][bApp] != strategyId) { + if (s.accountBAppStrategy[msg.sender][bApp].strategyId != strategyId) { revert BAppNotOptedIn(); } @@ -568,7 +601,7 @@ contract StrategyManager is ReentrancyGuardTransient, IStrategyManager { ) private view { CoreStorageLib.Data storage s = CoreStorageLib.load(); - if (s.accountBAppStrategy[msg.sender][bApp] != strategyId) { + if (s.accountBAppStrategy[msg.sender][bApp].strategyId != strategyId) { revert BAppNotOptedIn(); } @@ -757,7 +790,9 @@ contract StrategyManager is ReentrancyGuardTransient, IStrategyManager { ) internal view { // It is possible to slash only if the strategy owner has opted-in to the bApp address strategyOwner = s.strategies[strategyId].owner; // Load the strategy to check if it exists - if (s.accountBAppStrategy[strategyOwner][bApp] != strategyId) { + if ( + s.accountBAppStrategy[strategyOwner][bApp].strategyId != strategyId + ) { revert BAppNotOptedIn(); } } @@ -787,6 +822,8 @@ contract StrategyManager is ReentrancyGuardTransient, IStrategyManager { _checkStrategyOptedIn(s, strategyId, bApp); + // TODO _checkIfDeregistred(); use delay? + ICore.Shares storage strategyTokenShares = s.strategyTokenShares[ strategyId ][token];