dsa-governance/deployments/mainnet_1/PayloadIGP11.json
2024-03-14 01:05:28 -04:00

1 line
43 KiB
JSON

{"metadata":"{\"defaultCompiler\":{\"version\":\"0.7.3\"},\"sources\":{\"contracts/payloads/IGP11/PayloadIGP11.sol\":{\"content\":\"pragma solidity ^0.7.0;\\npragma experimental ABIEncoderV2;\\n\\ninterface IGovernorBravo {\\n function _acceptAdmin() external;\\n\\n function _setVotingDelay(uint newVotingDelay) external;\\n\\n function _setVotingPeriod(uint newVotingPeriod) external;\\n\\n function _acceptAdminOnTimelock() external;\\n\\n function _setImplementation(address implementation_) external;\\n\\n function propose(\\n address[] memory targets,\\n uint[] memory values,\\n string[] memory signatures,\\n bytes[] memory calldatas,\\n string memory description\\n ) external returns (uint);\\n\\n function admin() external view returns (address);\\n\\n function pendingAdmin() external view returns (address);\\n\\n function timelock() external view returns (address);\\n\\n function votingDelay() external view returns (uint256);\\n\\n function votingPeriod() external view returns (uint256);\\n}\\n\\ninterface ITimelock {\\n function acceptAdmin() external;\\n\\n function setDelay(uint delay_) external;\\n\\n function setPendingAdmin(address pendingAdmin_) external;\\n\\n function queueTransaction(\\n address target,\\n uint value,\\n string memory signature,\\n bytes memory data,\\n uint eta\\n ) external returns (bytes32);\\n\\n function executeTransaction(\\n address target,\\n uint value,\\n string memory signature,\\n bytes memory data,\\n uint eta\\n ) external payable returns (bytes memory);\\n\\n function pendingAdmin() external view returns (address);\\n\\n function admin() external view returns (address);\\n\\n function delay() external view returns (uint256);\\n}\\n\\ninterface IInstaIndex {\\n function changeMaster(address _newMaster) external;\\n function updateMaster() external;\\n function master() external view returns (address);\\n}\\n\\ninterface AdminModuleStructs {\\n struct AddressBool {\\n address addr;\\n bool value;\\n }\\n\\n struct AddressUint256 {\\n address addr;\\n uint256 value;\\n }\\n\\n struct RateDataV1Params {\\n address token;\\n uint256 kink;\\n uint256 rateAtUtilizationZero;\\n uint256 rateAtUtilizationKink;\\n uint256 rateAtUtilizationMax;\\n }\\n\\n struct RateDataV2Params {\\n address token;\\n uint256 kink1;\\n uint256 kink2;\\n uint256 rateAtUtilizationZero;\\n uint256 rateAtUtilizationKink1;\\n uint256 rateAtUtilizationKink2;\\n uint256 rateAtUtilizationMax;\\n }\\n\\n struct TokenConfig {\\n address token;\\n uint256 fee;\\n uint256 threshold;\\n }\\n\\n struct UserSupplyConfig {\\n address user;\\n address token;\\n uint8 mode;\\n uint256 expandPercent;\\n uint256 expandDuration;\\n uint256 baseWithdrawalLimit;\\n }\\n\\n struct UserBorrowConfig {\\n address user;\\n address token;\\n uint8 mode;\\n uint256 expandPercent;\\n uint256 expandDuration;\\n uint256 baseDebtCeiling;\\n uint256 maxDebtCeiling;\\n }\\n}\\n\\ninterface IFluidLiquidityAdmin {\\n /// @notice adds/removes auths. Auths generally could be contracts which can have restricted actions defined on contract.\\n /// auths can be helpful in reducing governance overhead where it's not needed.\\n /// @param authsStatus_ array of structs setting allowed status for an address.\\n /// status true => add auth, false => remove auth\\n function updateAuths(AdminModuleStructs.AddressBool[] calldata authsStatus_) external;\\n\\n /// @notice adds/removes guardians. Only callable by Governance.\\n /// @param guardiansStatus_ array of structs setting allowed status for an address.\\n /// status true => add guardian, false => remove guardian\\n function updateGuardians(AdminModuleStructs.AddressBool[] calldata guardiansStatus_) external;\\n\\n /// @notice changes the revenue collector address (contract that is sent revenue). Only callable by Governance.\\n /// @param revenueCollector_ new revenue collector address\\n function updateRevenueCollector(address revenueCollector_) external;\\n\\n /// @notice changes current status, e.g. for pausing or unpausing all user operations. Only callable by Auths.\\n /// @param newStatus_ new status\\n /// status = 2 -> pause, status = 1 -> resume.\\n function changeStatus(uint256 newStatus_) external;\\n\\n /// @notice update tokens rate data version 1. Only callable by Auths.\\n /// @param tokensRateData_ array of RateDataV1Params with rate data to set for each token\\n function updateRateDataV1s(AdminModuleStructs.RateDataV1Params[] calldata tokensRateData_) external;\\n\\n /// @notice update tokens rate data version 2. Only callable by Auths.\\n /// @param tokensRateData_ array of RateDataV2Params with rate data to set for each token\\n function updateRateDataV2s(AdminModuleStructs.RateDataV2Params[] calldata tokensRateData_) external;\\n\\n /// @notice updates token configs: fee charge on borrowers interest & storage update utilization threshold.\\n /// Only callable by Auths.\\n /// @param tokenConfigs_ contains token address, fee & utilization threshold\\n function updateTokenConfigs(AdminModuleStructs.TokenConfig[] calldata tokenConfigs_) external;\\n\\n /// @notice updates user classes: 0 is for new protocols, 1 is for established protocols.\\n /// Only callable by Auths.\\n /// @param userClasses_ struct array of uint256 value to assign for each user address\\n function updateUserClasses(AdminModuleStructs.AddressUint256[] calldata userClasses_) external;\\n\\n /// @notice sets user supply configs per token basis. Eg: with interest or interest-free and automated limits.\\n /// Only callable by Auths.\\n /// @param userSupplyConfigs_ struct array containing user supply config, see `UserSupplyConfig` struct for more info\\n function updateUserSupplyConfigs(AdminModuleStructs.UserSupplyConfig[] memory userSupplyConfigs_) external;\\n\\n /// @notice setting user borrow configs per token basis. Eg: with interest or interest-free and automated limits.\\n /// Only callable by Auths.\\n /// @param userBorrowConfigs_ struct array containing user borrow config, see `UserBorrowConfig` struct for more info\\n function updateUserBorrowConfigs(AdminModuleStructs.UserBorrowConfig[] memory userBorrowConfigs_) external;\\n\\n /// @notice pause operations for a particular user in class 0 (class 1 users can't be paused by guardians).\\n /// Only callable by Guardians.\\n /// @param user_ address of user to pause operations for\\n /// @param supplyTokens_ token addresses to pause withdrawals for\\n /// @param borrowTokens_ token addresses to pause borrowings for\\n function pauseUser(address user_, address[] calldata supplyTokens_, address[] calldata borrowTokens_) external;\\n\\n /// @notice unpause operations for a particular user in class 0 (class 1 users can't be paused by guardians).\\n /// Only callable by Guardians.\\n /// @param user_ address of user to unpause operations for\\n /// @param supplyTokens_ token addresses to unpause withdrawals for\\n /// @param borrowTokens_ token addresses to unpause borrowings for\\n function unpauseUser(address user_, address[] calldata supplyTokens_, address[] calldata borrowTokens_) external;\\n\\n /// @notice collects revenue for tokens to configured revenueCollector address.\\n /// @param tokens_ array of tokens to collect revenue for\\n /// @dev Note that this can revert if token balance is < revenueAmount (utilization > 100%)\\n function collectRevenue(address[] calldata tokens_) external;\\n\\n /// @notice gets the current updated exchange prices for n tokens and updates all prices, rates related data in storage.\\n /// @param tokens_ tokens to update exchange prices for\\n /// @return supplyExchangePrices_ new supply rates of overall system for each token\\n /// @return borrowExchangePrices_ new borrow rates of overall system for each token\\n function updateExchangePrices(\\n address[] calldata tokens_\\n ) external returns (uint256[] memory supplyExchangePrices_, uint256[] memory borrowExchangePrices_);\\n}\\n\\ninterface IFluidVaultT1Factory {\\n function deployVault(address vaultDeploymentLogic_, bytes calldata vaultDeploymentData_) external returns (address vault_);\\n}\\n\\ninterface IFluidVaultT1DeploymentLogic {\\n function vaultT1(\\n address supplyToken_,\\n address borrowToken_\\n ) external;\\n}\\n\\n\\ninterface IFluidVaultT1 {\\n /// @notice updates the Vault oracle to `newOracle_`. Must implement the FluidOracle interface.\\n function updateOracle(address newOracle_) external;\\n\\n /// @notice updates the all Vault core settings according to input params.\\n /// All input values are expected in 1e2 (1% = 100, 100% = 10_000).\\n function updateCoreSettings(\\n uint256 supplyRateMagnifier_,\\n uint256 borrowRateMagnifier_,\\n uint256 collateralFactor_,\\n uint256 liquidationThreshold_,\\n uint256 liquidationMaxLimit_,\\n uint256 withdrawGap_,\\n uint256 liquidationPenalty_,\\n uint256 borrowFee_\\n ) external;\\n\\n /// @notice updates the allowed rebalancer to `newRebalancer_`.\\n function updateRebalancer(address newRebalancer_) external;\\n\\n /// @notice updates the supply rate magnifier to `supplyRateMagnifier_`. Input in 1e2 (1% = 100, 100% = 10_000).\\n function updateSupplyRateMagnifier(uint supplyRateMagnifier_) external;\\n}\\n\\ncontract PayloadIGP11 {\\n uint256 public constant PROPOSAL_ID = 11;\\n\\n address public constant PROPOSER =\\n 0xA45f7bD6A5Ff45D31aaCE6bCD3d426D9328cea01;\\n\\n IGovernorBravo public constant GOVERNOR =\\n IGovernorBravo(0x0204Cd037B2ec03605CFdFe482D8e257C765fA1B);\\n ITimelock public constant TIMELOCK =\\n ITimelock(0x2386DC45AdDed673317eF068992F19421B481F4c);\\n\\n address public constant TEAM_MULTISIG = \\n 0x4F6F977aCDD1177DCD81aB83074855EcB9C2D49e;\\n\\n address public immutable ADDRESS_THIS;\\n \\n IFluidLiquidityAdmin public constant LIQUIDITY = IFluidLiquidityAdmin(0x52Aa899454998Be5b000Ad077a46Bbe360F4e497);\\n IFluidVaultT1Factory public constant VAULT_T1_FACTORY = IFluidVaultT1Factory(0x324c5Dc1fC42c7a4D43d92df1eBA58a54d13Bf2d);\\n IFluidVaultT1DeploymentLogic public constant VAULT_T1_DEPLOYMENT_LOGIC = IFluidVaultT1DeploymentLogic(0x15f6F562Ae136240AB9F4905cb50aCA54bCbEb5F);\\n\\n address public constant ETH_ADDRESS = 0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE;\\n address public constant weETH_ADDRESS = 0xCd5fE23C85820F7B72D0926FC9b05b43E359b7ee;\\n address public constant wstETH_ADDRESS = 0x7f39C581F595B53c5cb19bD0b3f8dA6c935E2Ca0;\\n\\n constructor() {\\n ADDRESS_THIS = address(this);\\n }\\n\\n function propose(string memory description) external {\\n require(msg.sender == PROPOSER || msg.sender == TEAM_MULTISIG, \\\"msg.sender-not-proposer-or-multisig\\\");\\n\\n uint256 totalActions = 1;\\n address[] memory targets = new address[](totalActions);\\n uint256[] memory values = new uint256[](totalActions);\\n string[] memory signatures = new string[](totalActions);\\n bytes[] memory calldatas = new bytes[](totalActions);\\n\\n // Action 1: call executePayload on timelock contract to execute payload related to Fluid\\n targets[0] = address(TIMELOCK);\\n values[0] = 0;\\n signatures[0] = \\\"executePayload(address,string,bytes)\\\";\\n calldatas[0] = abi.encode(ADDRESS_THIS, \\\"execute()\\\", abi.encode());\\n\\n uint256 proposedId = GOVERNOR.propose(\\n targets,\\n values,\\n signatures,\\n calldatas,\\n description\\n );\\n\\n require(proposedId == PROPOSAL_ID, \\\"PROPOSAL_IS_NOT_SAME\\\");\\n }\\n\\n function execute() external {\\n require(address(this) == address(TIMELOCK), \\\"not-valid-caller\\\");\\n\\n // Action 1: Set market rates for weETH on Liquidity.\\n action1();\\n\\n // Action 2: Set token config for weETH on Liquidity.\\n action2();\\n\\n // Action 3: Deploy weETH/wstETH vault.\\n address vault_ = action3();\\n\\n // Action 4: Set user supply config for the vault on Liquidity Layer.\\n action4(vault_);\\n\\n // Action 5: Set user borrow config for the vault on Liquidity Layer.\\n action5(vault_);\\n\\n // Action 6: Update core settings on weETH/wstETH vault.\\n action6(vault_);\\n\\n // Action 7: Update oracle on weETH/wstETH vault.\\n action7(vault_);\\n\\n // Action 8: Update rebalancer on weETH/wstETH vault.\\n action8(vault_);\\n\\n // Action 9: Update supply magnifier on wstETH/ETH, wstETH/USDC & wstETH/USDT vault \\n action9();\\n\\n // Action 10: Update market rates for wstETH on Liquidity.\\n action10();\\n\\n // Action 11: Update token config for wstETH on Liquidity.\\n action11();\\n }\\n\\n function verifyProposal() external view {}\\n\\n /***********************************|\\n | Proposal Payload Actions |\\n |__________________________________*/\\n\\n /// @notice Action 1: Set market rates for weETH on Liquidity.\\n function action1() internal {\\n AdminModuleStructs.RateDataV2Params[] memory params_ = new AdminModuleStructs.RateDataV2Params[](1);\\n\\n params_[0] = AdminModuleStructs.RateDataV2Params({\\n token: weETH_ADDRESS, // weETH\\n kink1: 50 * 1e2, // 50%\\n kink2: 80 * 1e2, // 80%\\n rateAtUtilizationZero: 0, // 0%\\n rateAtUtilizationKink1: 20 * 1e2, // 20%\\n rateAtUtilizationKink2: 40 * 1e2, // 40%\\n rateAtUtilizationMax: 100 * 1e2 // 100%\\n });\\n\\n LIQUIDITY.updateRateDataV2s(params_);\\n }\\n\\n /// @notice Action 2: Set token config for weETH on Liquidity.\\n function action2() internal {\\n AdminModuleStructs.TokenConfig[] memory params_ = new AdminModuleStructs.TokenConfig[](1);\\n\\n params_[0] = AdminModuleStructs.TokenConfig({\\n token: weETH_ADDRESS, // weETH\\n threshold: 0.3 * 1e2, // 0.3\\n fee: 10 * 1e2 // 10%\\n });\\n\\n LIQUIDITY.updateTokenConfigs(params_);\\n }\\n\\n /// @notice Action 3: Deploy weETH/wstETH vault.\\n function action3() internal returns (address vault_){\\n vault_ = VAULT_T1_FACTORY.deployVault(\\n address(VAULT_T1_DEPLOYMENT_LOGIC),\\n abi.encodeWithSelector(\\n IFluidVaultT1DeploymentLogic.vaultT1.selector,\\n weETH_ADDRESS, // weETH,\\n wstETH_ADDRESS // wstETH\\n )\\n );\\n }\\n\\n /// @notice Action 4: Set user supply config for the vault on Liquidity Layer.\\n function action4(address vault_) internal {\\n AdminModuleStructs.UserSupplyConfig[] memory configs_ = new AdminModuleStructs.UserSupplyConfig[](1);\\n \\n configs_[0] = AdminModuleStructs.UserSupplyConfig({\\n user: address(vault_),\\n token: weETH_ADDRESS,\\n mode: 1,\\n expandPercent: 25 * 1e2,\\n expandDuration: 12 hours,\\n baseWithdrawalLimit: 4000 * 1e18\\n });\\n\\n LIQUIDITY.updateUserSupplyConfigs(configs_);\\n }\\n\\n /// @notice Action 5: Set user borrow config for the vault on Liquidity Layer.\\n function action5(address vault_) internal {\\n AdminModuleStructs.UserBorrowConfig[] memory configs_ = new AdminModuleStructs.UserBorrowConfig[](1);\\n \\n configs_[0] = AdminModuleStructs.UserBorrowConfig({\\n user: address(vault_),\\n token: wstETH_ADDRESS,\\n mode: 1,\\n expandPercent: 25 * 1e2,\\n expandDuration: 12 hours,\\n baseDebtCeiling: 4000 * 1e18,\\n maxDebtCeiling: 10000 * 1e18\\n });\\n\\n LIQUIDITY.updateUserBorrowConfigs(configs_);\\n }\\n\\n /// @notice Action 6: Update core settings on weETH/wstETH vault.\\n function action6(address vault_) internal {\\n IFluidVaultT1(vault_).updateCoreSettings(\\n 100 * 1e2, // 1x supplyRateMagnifier\\n 100 * 1e2, // 1x borrowRateMagnifier\\n 90.5 * 1e2, // 90.5% collateralFactor\\n 93 * 1e2, // 93% liquidationThreshold\\n 95 * 1e2, // 95% liquidationMaxLimit\\n 5 * 1e2, // 5% withdrawGap\\n 1 * 1e2, // 2% liquidationPenalty\\n 0 // 0% borrowFee\\n );\\n }\\n\\n /// @notice Action 7: Update oracle on weETH/wstETH vault.\\n function action7(address vault_) internal {\\n IFluidVaultT1(vault_).updateOracle(0x9eC721a12b6005aF8c6E8CFa9c86B5f12ff473E4);\\n }\\n\\n /// @notice Action 8: Update rebalancer on weETH/wstETH vault.\\n function action8(address vault_) internal {\\n IFluidVaultT1(vault_).updateRebalancer(0x264786EF916af64a1DB19F513F24a3681734ce92);\\n }\\n\\n /// @notice Action 9: UpdateSupplyMagnifier on wstETH/ETH, wstETH/USDC & wstETH/USDT vault \\n function action9() internal {\\n // wstETH/ETH\\n IFluidVaultT1(0xA0F83Fc5885cEBc0420ce7C7b139Adc80c4F4D91).updateSupplyRateMagnifier(1 * 1e4); // 1x\\n // wstETH/USDC\\n IFluidVaultT1(0x51197586F6A9e2571868b6ffaef308f3bdfEd3aE).updateSupplyRateMagnifier(1 * 1e4); // 1x\\n // wstETH/USDT\\n IFluidVaultT1(0x1c2bB46f36561bc4F05A94BD50916496aa501078).updateSupplyRateMagnifier(1 * 1e4); // 1x\\n }\\n\\n /// @notice Action 10: Update market rates for wstETH on Liquidity.\\n function action10() internal {\\n AdminModuleStructs.RateDataV2Params[] memory params_ = new AdminModuleStructs.RateDataV2Params[](1);\\n\\n params_[0] = AdminModuleStructs.RateDataV2Params({\\n token: wstETH_ADDRESS, // wstETH\\n kink1: 50 * 1e2, // 50%\\n kink2: 80 * 1e2, // 80%\\n rateAtUtilizationZero: 0, // 0%\\n rateAtUtilizationKink1: 15 * 1e2, // 15%\\n rateAtUtilizationKink2: 30 * 1e2, // 30%\\n rateAtUtilizationMax: 150 * 1e2 // 150%\\n });\\n\\n LIQUIDITY.updateRateDataV2s(params_);\\n }\\n\\n /// @notice Action 11: Update token config for wstETH on Liquidity.\\n function action11() internal {\\n AdminModuleStructs.TokenConfig[] memory params_ = new AdminModuleStructs.TokenConfig[](1);\\n\\n params_[0] = AdminModuleStructs.TokenConfig({\\n token: wstETH_ADDRESS, // wstETH\\n threshold: 0.3 * 1e2, // 0.3\\n fee: 70 * 1e2 // 70%\\n });\\n\\n LIQUIDITY.updateTokenConfigs(params_);\\n }\\n}\\n\",\"versionPragma\":\"^0.7.0\"}}}","address":"0xee9D547aEEf6af4eB5Cd3e3A6f558afC6c2389E0","bytecode":"0x60a060405234801561001057600080fd5b5030606081901b6080526115e0610036600039806104f0528061064752506115e06000f3fe608060405234801561001057600080fd5b50600436106100f55760003560e01c80638a1c736411610097578063aaff049311610066578063aaff049314610182578063b788f3a11461018a578063bffa7f0f14610192578063cc025f7c1461019a576100f5565b80638a1c736414610157578063a44855981461015f578063a734f06e14610167578063aa98df391461016f576100f5565b806361461954116100d3578063614619541461013557806366760d7d1461013f5780636dc0ae22146101475780637aadef8b1461014f576100f5565b80630bc9136e146100fa5780632861c7d114610118578063474585e21461012d575b600080fd5b6101026101a2565b60405161010f91906114ac565b60405180910390f35b6101206101a7565b60405161010f9190611194565b6101206101bf565b61013d6101d7565b005b61013d610277565b610120610279565b610120610291565b6101206102a9565b6101206102c1565b6101206102d9565b61013d61017d366004610fc3565b6102f1565b6101206105fd565b610120610615565b61012061062d565b610120610645565b600b81565b7352aa899454998be5b000ad077a46bbe360f4e49781565b7315f6f562ae136240ab9f4905cb50aca54bcbeb5f81565b30732386dc45added673317ef068992f19421b481f4c146102135760405162461bcd60e51b815260040161020a9061155c565b60405180910390fd5b61021b610669565b61022361077c565b600061022d61083a565b905061023881610954565b61024181610a71565b61024a81610b67565b61025381610bad565b61025c81610bed565b610264610c2d565b61026c610d70565b610274610e0c565b50565b565b730204cd037b2ec03605cfdfe482d8e257c765fa1b81565b732386dc45added673317ef068992f19421b481f4c81565b73324c5dc1fc42c7a4d43d92df1eba58a54d13bf2d81565b737f39c581f595b53c5cb19bd0b3f8da6c935e2ca081565b73eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee81565b3373a45f7bd6a5ff45d31aace6bcd3d426d9328cea011480610326575033734f6f977acdd1177dcd81ab83074855ecb9c2d49e145b6103425760405162461bcd60e51b815260040161020a906114eb565b604080516001808252818301909252606090826020808301908036833701905050905060608267ffffffffffffffff8111801561037e57600080fd5b506040519080825280602002602001820160405280156103a8578160200160208202803683370190505b50905060608367ffffffffffffffff811180156103c457600080fd5b506040519080825280602002602001820160405280156103f857816020015b60608152602001906001900390816103e35790505b50905060608467ffffffffffffffff8111801561041457600080fd5b5060405190808252806020026020018201604052801561044857816020015b60608152602001906001900390816104335790505b509050732386dc45added673317ef068992f19421b481f4c8460008151811061046d57fe5b60200260200101906001600160a01b031690816001600160a01b03168152505060008360008151811061049c57fe5b60200260200101818152505060405180606001604052806024815260200161158760249139826000815181106104ce57fe5b60209081029190910181019190915260408051600081529182018152610517917f00000000000000000000000000000000000000000000000000000000000000009181016111ee565b6040516020818303038152906040528160008151811061053357fe5b6020908102919091010152604051636d4ab48d60e11b8152600090730204cd037b2ec03605cfdfe482d8e257c765fa1b9063da95691a906105809088908890889088908e9060040161122f565b602060405180830381600087803b15801561059a57600080fd5b505af11580156105ae573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105d29190611058565b9050600b81146105f45760405162461bcd60e51b815260040161020a9061152e565b50505050505050565b73cd5fe23c85820f7b72d0926fc9b05b43e359b7ee81565b734f6f977acdd1177dcd81ab83074855ecb9c2d49e81565b73a45f7bd6a5ff45d31aace6bcd3d426d9328cea0181565b7f000000000000000000000000000000000000000000000000000000000000000081565b604080516001808252818301909252606091816020015b610688610e88565b8152602001906001900390816106805790505090506040518060e0016040528073cd5fe23c85820f7b72d0926fc9b05b43e359b7ee6001600160a01b031681526020016113888152602001611f408152602001600081526020016107d08152602001610fa081526020016127108152508160008151811061070557fe5b6020908102919091010152604051639dde597760e01b81527352aa899454998be5b000ad077a46bbe360f4e49790639dde5977906107479084906004016112ce565b600060405180830381600087803b15801561076157600080fd5b505af1158015610775573d6000803e3d6000fd5b5050505050565b604080516001808252818301909252606091816020015b61079b610ece565b815260200190600190039081610793579050509050604051806060016040528073cd5fe23c85820f7b72d0926fc9b05b43e359b7ee6001600160a01b031681526020016103e88152602001601e815250816000815181106107f857fe5b60209081029190910101526040516338b7e8e760e01b81527352aa899454998be5b000ad077a46bbe360f4e497906338b7e8e790610747908490600401611359565b600073324c5dc1fc42c7a4d43d92df1eba58a54d13bf2d6001600160a01b031663968cbade7315f6f562ae136240ab9f4905cb50aca54bcbeb5f63f9f872f560e01b73cd5fe23c85820f7b72d0926fc9b05b43e359b7ee737f39c581f595b53c5cb19bd0b3f8da6c935e2ca06040516024016108b79291906111a8565b60408051601f198184030181529181526020820180516001600160e01b03166001600160e01b03199485161790525160e085901b90921682526108fd92916004016111c2565b602060405180830381600087803b15801561091757600080fd5b505af115801561092b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061094f9190610f95565b905090565b604080516001808252818301909252606091816020015b610973610ef8565b81526020019060019003908161096b5790505090506040518060c00160405280836001600160a01b0316815260200173cd5fe23c85820f7b72d0926fc9b05b43e359b7ee6001600160a01b03168152602001600160ff1681526020016109c4815260200161a8c0815260200168d8d726b7177a800000815250816000815181106109f957fe5b60209081029190910101526040516301635db560e11b81527352aa899454998be5b000ad077a46bbe360f4e497906302c6bb6a90610a3b908490600401611432565b600060405180830381600087803b158015610a5557600080fd5b505af1158015610a69573d6000803e3d6000fd5b505050505050565b604080516001808252818301909252606091816020015b610a90610f43565b815260200190600190039081610a885790505090506040518060e00160405280836001600160a01b03168152602001737f39c581f595b53c5cb19bd0b3f8da6c935e2ca06001600160a01b03168152602001600160ff1681526020016109c4815260200161a8c0815260200168d8d726b7177a800000815260200169021e19e0c9bab240000081525081600081518110610b2657fe5b602090810291909101015260405162dc47c360e11b81527352aa899454998be5b000ad077a46bbe360f4e497906301b88f8690610a3b9084906004016113ae565b6040516354b04ef560e01b81526001600160a01b038216906354b04ef5906107479061271090819061235a906124549061251c906101f4906064906000906004016114b5565b60405163072d137f60e21b81526001600160a01b03821690631cb44dfc9061074790739ec721a12b6005af8c6e8cfa9c86b5f12ff473e490600401611194565b60405163b046a44960e01b81526001600160a01b0382169063b046a449906107479073264786ef916af64a1db19f513f24a3681734ce9290600401611194565b604051634a138a7160e01b815273a0f83fc5885cebc0420ce7c7b139adc80c4f4d9190634a138a7190610c6690612710906004016114ac565b600060405180830381600087803b158015610c8057600080fd5b505af1158015610c94573d6000803e3d6000fd5b5050604051634a138a7160e01b81527351197586f6a9e2571868b6ffaef308f3bdfed3ae9250634a138a719150610cd190612710906004016114ac565b600060405180830381600087803b158015610ceb57600080fd5b505af1158015610cff573d6000803e3d6000fd5b5050604051634a138a7160e01b8152731c2bb46f36561bc4f05a94bd50916496aa5010789250634a138a719150610d3c90612710906004016114ac565b600060405180830381600087803b158015610d5657600080fd5b505af1158015610d6a573d6000803e3d6000fd5b50505050565b604080516001808252818301909252606091816020015b610d8f610e88565b815260200190600190039081610d875790505090506040518060e00160405280737f39c581f595b53c5cb19bd0b3f8da6c935e2ca06001600160a01b031681526020016113888152602001611f408152602001600081526020016105dc8152602001610bb88152602001613a988152508160008151811061070557fe5b604080516001808252818301909252606091816020015b610e2b610ece565b815260200190600190039081610e235790505090506040518060600160405280737f39c581f595b53c5cb19bd0b3f8da6c935e2ca06001600160a01b03168152602001611b588152602001601e815250816000815181106107f857fe5b6040518060e0016040528060006001600160a01b031681526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b604051806060016040528060006001600160a01b0316815260200160008152602001600081525090565b6040518060c0016040528060006001600160a01b0316815260200160006001600160a01b03168152602001600060ff1681526020016000815260200160008152602001600081525090565b6040518060e0016040528060006001600160a01b0316815260200160006001600160a01b03168152602001600060ff168152602001600081526020016000815260200160008152602001600081525090565b600060208284031215610fa6578081fd5b81516001600160a01b0381168114610fbc578182fd5b9392505050565b60006020808385031215610fd5578182fd5b823567ffffffffffffffff80821115610fec578384fd5b818501915085601f830112610fff578384fd5b81358181111561100b57fe5b604051601f8201601f191681018501838111828210171561102857fe5b604052818152838201850188101561103e578586fd5b818585018683013790810190930193909352509392505050565b600060208284031215611069578081fd5b5051919050565b60008282518085526020808601955080818302840101818601855b848110156110b957601f198684030189526110a7838351611149565b9884019892509083019060010161108b565b5090979650505050505050565b60008282518085526020808601955080818302840101818601855b848110156110b957601f198684030189526110fd838351611149565b988401989250908301906001016110e1565b6000815180845260208085019450808401835b8381101561113e57815187529582019590820190600101611122565b509495945050505050565b60008151808452815b8181101561116e57602081850181015186830182015201611152565b8181111561117f5782602083870101525b50601f01601f19169290920160200192915050565b6001600160a01b0391909116815260200190565b6001600160a01b0392831681529116602082015260400190565b6001600160a01b03831681526040602082018190526000906111e690830184611149565b949350505050565b600060018060a01b038416825260606020830152600960608301526865786563757465282960b81b608083015260a060408301526111e660a0830184611149565b60a0808252865190820181905260009060209060c0840190828a01845b828110156112715781516001600160a01b03168452928401929084019060010161124c565b50505083810382850152611285818961110f565b915050828103604084015261129a81876110c6565b905082810360608401526112ae8186611070565b905082810360808401526112c28185611149565b98975050505050505050565b602080825282518282018190526000919060409081850190868401855b8281101561134c57815180516001600160a01b0316855286810151878601528581015186860152606080820151908601526080808201519086015260a0808201519086015260c0908101519085015260e090930192908501906001016112eb565b5091979650505050505050565b602080825282518282018190526000919060409081850190868401855b8281101561134c57815180516001600160a01b0316855286810151878601528501518585015260609093019290850190600101611376565b602080825282518282018190526000919060409081850190868401855b8281101561134c57815180516001600160a01b0390811686528782015116878601528581015160ff1686860152606080820151908601526080808201519086015260a0808201519086015260c0908101519085015260e090930192908501906001016113cb565b602080825282518282018190526000919060409081850190868401855b8281101561134c57815180516001600160a01b0390811686528782015116878601528581015160ff1686860152606080820151908601526080808201519086015260a0908101519085015260c0909301929085019060010161144f565b90815260200190565b978852602088019690965260408701949094526060860192909252608085015260a084015260c083015260e08201526101000190565b60208082526023908201527f6d73672e73656e6465722d6e6f742d70726f706f7365722d6f722d6d756c746960408201526273696760e81b606082015260800190565b60208082526014908201527350524f504f53414c5f49535f4e4f545f53414d4560601b604082015260600190565b60208082526010908201526f3737ba16bb30b634b216b1b0b63632b960811b60408201526060019056fe657865637574655061796c6f616428616464726573732c737472696e672c627974657329a2646970667358221220266c23bafbbdcae4c1dc0d6befca0fcdb32ec262a36695bf13f476353647ab6f64736f6c63430007030033","deployedBytecode":"0x608060405234801561001057600080fd5b50600436106100f55760003560e01c80638a1c736411610097578063aaff049311610066578063aaff049314610182578063b788f3a11461018a578063bffa7f0f14610192578063cc025f7c1461019a576100f5565b80638a1c736414610157578063a44855981461015f578063a734f06e14610167578063aa98df391461016f576100f5565b806361461954116100d3578063614619541461013557806366760d7d1461013f5780636dc0ae22146101475780637aadef8b1461014f576100f5565b80630bc9136e146100fa5780632861c7d114610118578063474585e21461012d575b600080fd5b6101026101a2565b60405161010f91906114ac565b60405180910390f35b6101206101a7565b60405161010f9190611194565b6101206101bf565b61013d6101d7565b005b61013d610277565b610120610279565b610120610291565b6101206102a9565b6101206102c1565b6101206102d9565b61013d61017d366004610fc3565b6102f1565b6101206105fd565b610120610615565b61012061062d565b610120610645565b600b81565b7352aa899454998be5b000ad077a46bbe360f4e49781565b7315f6f562ae136240ab9f4905cb50aca54bcbeb5f81565b30732386dc45added673317ef068992f19421b481f4c146102135760405162461bcd60e51b815260040161020a9061155c565b60405180910390fd5b61021b610669565b61022361077c565b600061022d61083a565b905061023881610954565b61024181610a71565b61024a81610b67565b61025381610bad565b61025c81610bed565b610264610c2d565b61026c610d70565b610274610e0c565b50565b565b730204cd037b2ec03605cfdfe482d8e257c765fa1b81565b732386dc45added673317ef068992f19421b481f4c81565b73324c5dc1fc42c7a4d43d92df1eba58a54d13bf2d81565b737f39c581f595b53c5cb19bd0b3f8da6c935e2ca081565b73eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee81565b3373a45f7bd6a5ff45d31aace6bcd3d426d9328cea011480610326575033734f6f977acdd1177dcd81ab83074855ecb9c2d49e145b6103425760405162461bcd60e51b815260040161020a906114eb565b604080516001808252818301909252606090826020808301908036833701905050905060608267ffffffffffffffff8111801561037e57600080fd5b506040519080825280602002602001820160405280156103a8578160200160208202803683370190505b50905060608367ffffffffffffffff811180156103c457600080fd5b506040519080825280602002602001820160405280156103f857816020015b60608152602001906001900390816103e35790505b50905060608467ffffffffffffffff8111801561041457600080fd5b5060405190808252806020026020018201604052801561044857816020015b60608152602001906001900390816104335790505b509050732386dc45added673317ef068992f19421b481f4c8460008151811061046d57fe5b60200260200101906001600160a01b031690816001600160a01b03168152505060008360008151811061049c57fe5b60200260200101818152505060405180606001604052806024815260200161158760249139826000815181106104ce57fe5b60209081029190910181019190915260408051600081529182018152610517917f00000000000000000000000000000000000000000000000000000000000000009181016111ee565b6040516020818303038152906040528160008151811061053357fe5b6020908102919091010152604051636d4ab48d60e11b8152600090730204cd037b2ec03605cfdfe482d8e257c765fa1b9063da95691a906105809088908890889088908e9060040161122f565b602060405180830381600087803b15801561059a57600080fd5b505af11580156105ae573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105d29190611058565b9050600b81146105f45760405162461bcd60e51b815260040161020a9061152e565b50505050505050565b73cd5fe23c85820f7b72d0926fc9b05b43e359b7ee81565b734f6f977acdd1177dcd81ab83074855ecb9c2d49e81565b73a45f7bd6a5ff45d31aace6bcd3d426d9328cea0181565b7f000000000000000000000000000000000000000000000000000000000000000081565b604080516001808252818301909252606091816020015b610688610e88565b8152602001906001900390816106805790505090506040518060e0016040528073cd5fe23c85820f7b72d0926fc9b05b43e359b7ee6001600160a01b031681526020016113888152602001611f408152602001600081526020016107d08152602001610fa081526020016127108152508160008151811061070557fe5b6020908102919091010152604051639dde597760e01b81527352aa899454998be5b000ad077a46bbe360f4e49790639dde5977906107479084906004016112ce565b600060405180830381600087803b15801561076157600080fd5b505af1158015610775573d6000803e3d6000fd5b5050505050565b604080516001808252818301909252606091816020015b61079b610ece565b815260200190600190039081610793579050509050604051806060016040528073cd5fe23c85820f7b72d0926fc9b05b43e359b7ee6001600160a01b031681526020016103e88152602001601e815250816000815181106107f857fe5b60209081029190910101526040516338b7e8e760e01b81527352aa899454998be5b000ad077a46bbe360f4e497906338b7e8e790610747908490600401611359565b600073324c5dc1fc42c7a4d43d92df1eba58a54d13bf2d6001600160a01b031663968cbade7315f6f562ae136240ab9f4905cb50aca54bcbeb5f63f9f872f560e01b73cd5fe23c85820f7b72d0926fc9b05b43e359b7ee737f39c581f595b53c5cb19bd0b3f8da6c935e2ca06040516024016108b79291906111a8565b60408051601f198184030181529181526020820180516001600160e01b03166001600160e01b03199485161790525160e085901b90921682526108fd92916004016111c2565b602060405180830381600087803b15801561091757600080fd5b505af115801561092b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061094f9190610f95565b905090565b604080516001808252818301909252606091816020015b610973610ef8565b81526020019060019003908161096b5790505090506040518060c00160405280836001600160a01b0316815260200173cd5fe23c85820f7b72d0926fc9b05b43e359b7ee6001600160a01b03168152602001600160ff1681526020016109c4815260200161a8c0815260200168d8d726b7177a800000815250816000815181106109f957fe5b60209081029190910101526040516301635db560e11b81527352aa899454998be5b000ad077a46bbe360f4e497906302c6bb6a90610a3b908490600401611432565b600060405180830381600087803b158015610a5557600080fd5b505af1158015610a69573d6000803e3d6000fd5b505050505050565b604080516001808252818301909252606091816020015b610a90610f43565b815260200190600190039081610a885790505090506040518060e00160405280836001600160a01b03168152602001737f39c581f595b53c5cb19bd0b3f8da6c935e2ca06001600160a01b03168152602001600160ff1681526020016109c4815260200161a8c0815260200168d8d726b7177a800000815260200169021e19e0c9bab240000081525081600081518110610b2657fe5b602090810291909101015260405162dc47c360e11b81527352aa899454998be5b000ad077a46bbe360f4e497906301b88f8690610a3b9084906004016113ae565b6040516354b04ef560e01b81526001600160a01b038216906354b04ef5906107479061271090819061235a906124549061251c906101f4906064906000906004016114b5565b60405163072d137f60e21b81526001600160a01b03821690631cb44dfc9061074790739ec721a12b6005af8c6e8cfa9c86b5f12ff473e490600401611194565b60405163b046a44960e01b81526001600160a01b0382169063b046a449906107479073264786ef916af64a1db19f513f24a3681734ce9290600401611194565b604051634a138a7160e01b815273a0f83fc5885cebc0420ce7c7b139adc80c4f4d9190634a138a7190610c6690612710906004016114ac565b600060405180830381600087803b158015610c8057600080fd5b505af1158015610c94573d6000803e3d6000fd5b5050604051634a138a7160e01b81527351197586f6a9e2571868b6ffaef308f3bdfed3ae9250634a138a719150610cd190612710906004016114ac565b600060405180830381600087803b158015610ceb57600080fd5b505af1158015610cff573d6000803e3d6000fd5b5050604051634a138a7160e01b8152731c2bb46f36561bc4f05a94bd50916496aa5010789250634a138a719150610d3c90612710906004016114ac565b600060405180830381600087803b158015610d5657600080fd5b505af1158015610d6a573d6000803e3d6000fd5b50505050565b604080516001808252818301909252606091816020015b610d8f610e88565b815260200190600190039081610d875790505090506040518060e00160405280737f39c581f595b53c5cb19bd0b3f8da6c935e2ca06001600160a01b031681526020016113888152602001611f408152602001600081526020016105dc8152602001610bb88152602001613a988152508160008151811061070557fe5b604080516001808252818301909252606091816020015b610e2b610ece565b815260200190600190039081610e235790505090506040518060600160405280737f39c581f595b53c5cb19bd0b3f8da6c935e2ca06001600160a01b03168152602001611b588152602001601e815250816000815181106107f857fe5b6040518060e0016040528060006001600160a01b031681526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b604051806060016040528060006001600160a01b0316815260200160008152602001600081525090565b6040518060c0016040528060006001600160a01b0316815260200160006001600160a01b03168152602001600060ff1681526020016000815260200160008152602001600081525090565b6040518060e0016040528060006001600160a01b0316815260200160006001600160a01b03168152602001600060ff168152602001600081526020016000815260200160008152602001600081525090565b600060208284031215610fa6578081fd5b81516001600160a01b0381168114610fbc578182fd5b9392505050565b60006020808385031215610fd5578182fd5b823567ffffffffffffffff80821115610fec578384fd5b818501915085601f830112610fff578384fd5b81358181111561100b57fe5b604051601f8201601f191681018501838111828210171561102857fe5b604052818152838201850188101561103e578586fd5b818585018683013790810190930193909352509392505050565b600060208284031215611069578081fd5b5051919050565b60008282518085526020808601955080818302840101818601855b848110156110b957601f198684030189526110a7838351611149565b9884019892509083019060010161108b565b5090979650505050505050565b60008282518085526020808601955080818302840101818601855b848110156110b957601f198684030189526110fd838351611149565b988401989250908301906001016110e1565b6000815180845260208085019450808401835b8381101561113e57815187529582019590820190600101611122565b509495945050505050565b60008151808452815b8181101561116e57602081850181015186830182015201611152565b8181111561117f5782602083870101525b50601f01601f19169290920160200192915050565b6001600160a01b0391909116815260200190565b6001600160a01b0392831681529116602082015260400190565b6001600160a01b03831681526040602082018190526000906111e690830184611149565b949350505050565b600060018060a01b038416825260606020830152600960608301526865786563757465282960b81b608083015260a060408301526111e660a0830184611149565b60a0808252865190820181905260009060209060c0840190828a01845b828110156112715781516001600160a01b03168452928401929084019060010161124c565b50505083810382850152611285818961110f565b915050828103604084015261129a81876110c6565b905082810360608401526112ae8186611070565b905082810360808401526112c28185611149565b98975050505050505050565b602080825282518282018190526000919060409081850190868401855b8281101561134c57815180516001600160a01b0316855286810151878601528581015186860152606080820151908601526080808201519086015260a0808201519086015260c0908101519085015260e090930192908501906001016112eb565b5091979650505050505050565b602080825282518282018190526000919060409081850190868401855b8281101561134c57815180516001600160a01b0316855286810151878601528501518585015260609093019290850190600101611376565b602080825282518282018190526000919060409081850190868401855b8281101561134c57815180516001600160a01b0390811686528782015116878601528581015160ff1686860152606080820151908601526080808201519086015260a0808201519086015260c0908101519085015260e090930192908501906001016113cb565b602080825282518282018190526000919060409081850190868401855b8281101561134c57815180516001600160a01b0390811686528782015116878601528581015160ff1686860152606080820151908601526080808201519086015260a0908101519085015260c0909301929085019060010161144f565b90815260200190565b978852602088019690965260408701949094526060860192909252608085015260a084015260c083015260e08201526101000190565b60208082526023908201527f6d73672e73656e6465722d6e6f742d70726f706f7365722d6f722d6d756c746960408201526273696760e81b606082015260800190565b60208082526014908201527350524f504f53414c5f49535f4e4f545f53414d4560601b604082015260600190565b60208082526010908201526f3737ba16bb30b634b216b1b0b63632b960811b60408201526060019056fe657865637574655061796c6f616428616464726573732c737472696e672c627974657329a2646970667358221220266c23bafbbdcae4c1dc0d6befca0fcdb32ec262a36695bf13f476353647ab6f64736f6c63430007030033","abi":[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"name":"ADDRESS_THIS","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"ETH_ADDRESS","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"GOVERNOR","outputs":[{"internalType":"contract IGovernorBravo","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"LIQUIDITY","outputs":[{"internalType":"contract IFluidLiquidityAdmin","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"PROPOSAL_ID","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"PROPOSER","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"TEAM_MULTISIG","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"TIMELOCK","outputs":[{"internalType":"contract ITimelock","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"VAULT_T1_DEPLOYMENT_LOGIC","outputs":[{"internalType":"contract IFluidVaultT1DeploymentLogic","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"VAULT_T1_FACTORY","outputs":[{"internalType":"contract IFluidVaultT1Factory","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"execute","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"description","type":"string"}],"name":"propose","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"verifyProposal","outputs":[],"stateMutability":"view","type":"function"},{"inputs":[],"name":"weETH_ADDRESS","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"wstETH_ADDRESS","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"}]}