Overview
ETH Balance
0 ETH
Eth Value
$0.00More Info
Private Name Tags
ContractCreator
View more zero value Internal Transactions in Advanced View mode
Advanced mode:
Loading...
Loading
Contract Source Code Verified (Exact Match)
Contract Name:
ReturnsVault
Compiler Version
v0.8.17+commit.8df45f5f
Optimization Enabled:
Yes with 200 runs
Other Settings:
default evmVersion
Contract Source Code (Solidity Standard Json-Input format)
//SPDX-License-Identifier: UNLICENSED // ________ _______ _________ ________ ________ // |\ __ \|\ ___ \|\___ ___\\ __ \|\ ____\ // \ \ \|\ \ \ __/\|___ \ \_\ \ \|\ \ \ \___|_ // \ \ __ \ \ \_|/__ \ \ \ \ \ \\\ \ \_____ \ // \ \ \ \ \ \ \_|\ \ \ \ \ \ \ \\\ \|____|\ \ // \ \__\ \__\ \_______\ \ \__\ \ \_______\____\_\ \ // \|__|\|__|\|_______| \|__| \|_______|\_________\ // \|_________| pragma solidity ^0.8.9; import "../interfaces/IAetos.sol"; import "../interfaces/IProposalManager.sol"; import "../utils/DAO.sol"; import "../interfaces/IReturnsVault.sol"; import "../uniswap/uniswap-periphery/interfaces/IUniswapV2Router02.sol"; contract ReturnsVault is DAO { IAetos aetos; /************************* Events **************************/ event ProposeProposal(uint256 indexed _id, Proposal _proposal); event VoteProposal(uint256 indexed _id, Vote indexed _vote); event ProcessProposal(uint256 indexed _id, Status _status); /******************** Public Variables *********************/ uint256 constant STANDARD_DECIMAL_PRECISION = 10 ** 18; bool public initialized = false; PrimaryToken public primaryToken; /******************** Structs and Definitions *********************/ struct PrimaryToken { address token; uint256 totalReturns; uint256 previousBalance; } /*********************** Constructor ************************/ /** * @notice Unused, needed to deploy implementation */ constructor() {} function initialize(address _aetos, address _baseToken) external { require(!initialized, "ER7"); //Contract already initialised aetos = IAetos(_aetos); setWhitelistedTokens(_baseToken, true); primaryToken.token = _baseToken; initialized = true; } /********************* Getter Functions *********************/ function getTotalReturns(address _token) external view returns (uint256) { uint256 balance = getStandardisedDecimalPrecision(IERC20DP(_token).balanceOf(address(this)), _token); if (balance > primaryToken.previousBalance) { return (primaryToken.totalReturns + _safeSubtract(balance, primaryToken.previousBalance)); } else { return primaryToken.totalReturns; } } function getWhitelistedTokens(address _token) public view returns (bool) { return whitelistedTokens[_token]; } function getPrimaryToken() public view returns (address) { return primaryToken.token; } function getStandardisedDecimalPrecision(uint256 _amount, address _token) public view returns (uint256) { return (_amount * STANDARD_DECIMAL_PRECISION) / 10 ** IERC20DP(_token).decimals(); } /********************* Setter Functions *********************/ function setWhitelistedTokens(address _token, bool _status) private { whitelistedTokens[_token] = _status; if (_status == true) { IERC20DP tempToken = IERC20DP(_token); emit CurrentBalance(_token, tempToken.balanceOf(address(this)), address(this)); } } /** * @notice propose * @param _proposalDraft Proposal being put forth to the DAO */ function propose(ProposalDraft memory _proposalDraft) external _onlyCouncil { require(_proposalDraft.proposalType <= 1, "ER1"); //Proposal Type Out of Bounds require(bytes(_proposalDraft.propVarsDraft.detailsURI).length > 0, "ER0"); //Need details uri // Assign object to inherit most relevant members; proposals[proposalIndex].proposalType = _proposalDraft.proposalType; _proposalDraft.propVarsDraft.proposer = msg.sender; proposals[proposalIndex].propVars = IProposalManager(aetos.getProposalManager()).handlePropVars(_proposalDraft.propVarsDraft); proposals[proposalIndex].propVars.threshold = aetos.getDAOConfigBaseVotingThreshold(); proposals[proposalIndex].propVars.endDate = block.timestamp + aetos.getDAOConfigVotingPeriod(); proposals[proposalIndex].existingAddress = _proposalDraft.existingAddress; proposals[proposalIndex].newAddress = _proposalDraft.newAddress; proposals[proposalIndex].amountOrIndex = _proposalDraft.amountOrIndex; proposals[proposalIndex].propVars.totalMembers = aetos.getNumCurrentCouncil(); proposals[proposalIndex].propVars.quorum = aetos.getNumCurrentCouncil(); /* AMM */ if (_proposalDraft.proposalType == 0) { require(!aetos.getCanJoin(), "ER8"); //Signups must have already stopped require(_proposalDraft.addressArray.length == 2, "ER2"); //Wrong route amount require(_proposalDraft.addressArray[0] == primaryToken.token, "ER9"); //Must be primary token require(whitelistedTokens[_proposalDraft.addressArray[0]] && whitelistedTokens[_proposalDraft.addressArray[1]], "ER3"); //This token is not approved proposals[proposalIndex].amm = _proposalDraft.amm; proposals[proposalIndex].addressArray = _proposalDraft.addressArray; } /* Token */ if (_proposalDraft.proposalType == 1) { proposals[proposalIndex].token = _proposalDraft.token; proposals[proposalIndex].whitelist = _proposalDraft.whitelist; } emit ProposeProposal(proposalIndex, proposals[proposalIndex]); proposalIndex++; } /* Voting */ /** * @notice vote * @param _index The index of the proposal * @param _vote What vote the user is casting */ function vote(uint256 _index, Vote _vote) external _onlyCouncil { proposals[_index].propVars = IProposalManager(aetos.getProposalManager()).voteProposal(msg.sender, proposals[_index].propVars, _vote); proposals[_index].propVars.voters.push(msg.sender); emit VoteProposal(_index, _vote); } /* Processing */ /** * @notice processInternalProposal * @param _index The index of the proposal */ function process(uint256 _index) external _onlyMember { proposals[_index].propVars = IProposalManager(aetos.getProposalManager()).processProposalSecurity(proposals[_index].propVars); if (proposals[_index].propVars.status == Status.Passed) { /* AMM */ if (proposals[_index].proposalType == 0) { require(whitelistedTokens[proposals[_index].addressArray[0]] && whitelistedTokens[proposals[_index].addressArray[1]], "ER3"); //This token is not approved // Not possible to cast between fixed and dynamic sized arrays address[] memory t = new address[](2); t[0] = proposals[_index].addressArray[0]; t[1] = proposals[_index].addressArray[1]; // Have to approve from the vault for the transaction to succeed IERC20DP(t[0]).approve(proposals[_index].amm, IERC20DP(t[0]).balanceOf(address(this))); uint256 prevBalance = getStandardisedDecimalPrecision(IERC20DP(t[0]).balanceOf(address(this)), t[0]); IUniswapV2Router02(proposals[_index].amm).swapExactTokensForTokensSupportingFeeOnTransferTokens( IERC20DP(t[0]).balanceOf(address(this)), 0, t, address(this), block.timestamp + 1000 ); uint256 newBalance = getStandardisedDecimalPrecision(IERC20DP(t[1]).balanceOf(address(this)), t[1]); if (newBalance > prevBalance) { primaryToken.totalReturns = primaryToken.totalReturns + _safeSubtract(newBalance, prevBalance); } else { primaryToken.totalReturns = _safeSubtract(primaryToken.totalReturns, _safeSubtract(prevBalance, newBalance)); } primaryToken.previousBalance = newBalance; primaryToken.token = t[1]; IERC20DP tempToken = IERC20DP(t[0]); emit CurrentBalance(t[0], tempToken.balanceOf(address(this)), address(this)); tempToken = IERC20DP(t[1]); emit CurrentBalance(t[1], tempToken.balanceOf(address(this)), address(this)); } /* Token */ if (proposals[_index].proposalType == 1) { setWhitelistedTokens(proposals[_index].token, proposals[_index].whitelist); } } emit ProcessProposal(_index, proposals[_index].propVars.status); } /* Aux */ function withdraw(address _token, address _recipient, uint256 _amount) external _onlyAetos { _sync(_token); IERC20DP(_token).transfer(_recipient, _amount); primaryToken.previousBalance = getStandardisedDecimalPrecision(IERC20DP(_token).balanceOf(address(this)), _token); IERC20DP tempToken = IERC20DP(_token); emit CurrentBalance(_token, tempToken.balanceOf(address(this)), address(this)); } function sync(address _token) external { _sync(_token); } function _sync(address _token) internal { require(primaryToken.token == _token, "ER3"); //This token is not approved uint256 balance = getStandardisedDecimalPrecision(IERC20DP(_token).balanceOf(address(this)), _token); if (balance > primaryToken.previousBalance) { primaryToken.totalReturns += _safeSubtract(balance, primaryToken.previousBalance); } } /************************ Modifiers *************************/ modifier _onlyAetos() { require(msg.sender == address(aetos), "ER4"); //Not AETOS contract _; } modifier _onlyMember() { MemberStatus status = MemberStatus(aetos.getMemberStatus(msg.sender)); require(status == MemberStatus.Member || status == MemberStatus.Council, "ER5"); //Not a member _; } modifier _onlyCouncil() { MemberStatus status = MemberStatus(aetos.getMemberStatus(msg.sender)); require(status == MemberStatus.Council, "ER6"); //Not a council member _; } }
//SPDX-License-Identifier: UNLICENSED pragma solidity ^0.8.9; import "../interfaces/IDAO.sol"; import "../tokens/IERC20DP.sol"; contract DAO is IDAO { /******************** Constants *********************/ /******************** Public Variables *********************/ mapping(address => bool) public whitelistedTokens; //Tokens whitelisted per vault (only stables should be used in v1 due to the shares mechanics) Sub vaults can interact with any tokens. uint256 public proposalIndex; /******************** Structs and Definitions *********************/ mapping(uint256 => Proposal) public proposals; function _safeSubtract(uint256 _num1, uint256 _num2) internal pure returns (uint256) { if (_num2 >= _num1) { return 0; } else { return (_num1 - _num2); } } function _nullCheck(address _address) internal pure { require(_address != address(0), "ED0"); //This address cannot be null } }
//SPDX-License-Identifier: UNLICENSED pragma solidity ^0.8.9; import "../interfaces/IDAO.sol"; interface IProposalManager is IDAO { function handlePropVars(ProposalVariablesDraft calldata _propVarsDraft) external view returns (ProposalVariables memory); function voteProposal(address _voter, ProposalVariables calldata _propVars, Vote _vote) external view returns (ProposalVariables memory); function processProposalSecurity(ProposalVariables calldata _propVars) external view returns (ProposalVariables memory); }
//SPDX-License-Identifier: UNLICENSED pragma solidity ^0.8.9; import "hardhat/console.sol"; import "./IDAO.sol"; interface IAetos is IDAO { enum CommitStatus { Pending, Slashed, Met, Pardoned } struct Members { uint256 shares; MemberStatus status; uint256 commited; CommitStatus[] commitSchedule; uint256 votesCasted; uint256 claimed; uint256 lastClaimed; string nickname; } enum CallStatus { Awaiting, Called } /********************* Getter Functions *********************/ function getDAOEndTime() external view returns (uint256); function getDAOConfigBaseVotingThreshold() external view returns (uint256); function getDAOConfigVotingPeriod() external view returns (uint256); function getMemberStatus(address _member) external view returns (MemberStatus); function getNumMembers() external view returns (uint256); function getCanJoin() external view returns (bool); function getOperationsVault() external view returns (address); function getReturnsVault() external view returns (address); function getProposalManager() external view returns (address); function getOperationsVaultPercentage() external view returns (uint256); function getNumCurrentCouncil() external view returns (uint256); function getTotalCouncilLength() external view returns (uint256); }
//SPDX-License-Identifier: UNLICENSED pragma solidity ^0.8.9; interface IReturnsVault { function initialize(address _baseToken) external; function getPrimaryToken() external view returns (address); function getWhitelistedTokens(address _token) external view returns (bool); function getTotalReturns(address _token) external returns (uint256); function sync(address _token) external; function withdraw( address _token, address _recipient, uint256 _amount ) external; }
pragma solidity >=0.6.2; import './IUniswapV2Router01.sol'; interface IUniswapV2Router02 is IUniswapV2Router01 { function removeLiquidityETHSupportingFeeOnTransferTokens( address token, uint liquidity, uint amountTokenMin, uint amountETHMin, address to, uint deadline ) external returns (uint amountETH); function removeLiquidityETHWithPermitSupportingFeeOnTransferTokens( address token, uint liquidity, uint amountTokenMin, uint amountETHMin, address to, uint deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s ) external returns (uint amountETH); function swapExactTokensForTokensSupportingFeeOnTransferTokens( uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline ) external; function swapExactETHForTokensSupportingFeeOnTransferTokens( uint amountOutMin, address[] calldata path, address to, uint deadline ) external payable; function swapExactTokensForETHSupportingFeeOnTransferTokens( uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline ) external; }
// SPDX-License-Identifier: MIT // OpenZeppelin Contracts (last updated v4.6.0) (token/ERC20/IERC20.sol) pragma solidity ^0.8.0; /** * @dev Interface of the ERC20 standard as defined in the EIP. */ interface IERC20DP { /** * @dev Emitted when `value` tokens are moved from one account (`from`) to * another (`to`). * * Note that `value` may be zero. */ event Transfer(address indexed from, address indexed to, uint256 value); /** * @dev Emitted when the allowance of a `spender` for an `owner` is set by * a call to {approve}. `value` is the new allowance. */ event Approval(address indexed owner, address indexed spender, uint256 value); /** * @dev Returns the amount of tokens in existence. */ function totalSupply() external view returns (uint256); /** * @dev Returns the amount of decimals. */ function decimals() external view returns (uint8); /** * @dev Returns the amount of tokens owned by `account`. */ function balanceOf(address account) external view returns (uint256); /** * @dev Moves `amount` tokens from the caller's account to `to`. * * Returns a boolean value indicating whether the operation succeeded. * * Emits a {Transfer} event. */ function transfer(address to, uint256 amount) external; /** * @dev Returns the remaining number of tokens that `spender` will be * allowed to spend on behalf of `owner` through {transferFrom}. This is * zero by default. * * This value changes when {approve} or {transferFrom} are called. */ function allowance(address owner, address spender) external view returns (uint256); /** * @dev Sets `amount` as the allowance of `spender` over the caller's tokens. * * Returns a boolean value indicating whether the operation succeeded. * * IMPORTANT: Beware that changing an allowance with this method brings the risk * that someone may use both the old and the new allowance by unfortunate * transaction ordering. One possible solution to mitigate this race * condition is to first reduce the spender's allowance to 0 and set the * desired value afterwards: * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729 * * Emits an {Approval} event. */ function approve(address spender, uint256 amount) external; /** * @dev Moves `amount` tokens from `from` to `to` using the * allowance mechanism. `amount` is then deducted from the caller's * allowance. * * Returns a boolean value indicating whether the operation succeeded. * * Emits a {Transfer} event. */ function transferFrom( address from, address to, uint256 amount ) external; }
//SPDX-License-Identifier: UNLICENSED pragma solidity ^0.8.9; interface IDAO { event CurrentBalance(address _token, uint256 _amount, address _vault); enum Vote { Null, Yes, No } enum Status { Pending, Passed, Failed } enum MemberStatus { NonMember, Member, Council } /* Aetos Proposal Types: 0: Text vote, 1: Replace a single council member, 2: Existing member kick, 3: Stop signups, 4: Stop DAO, 5: New Member, 6: Slash member, 7: Pardon member, 8: Issue bonus shares, 9: Nominate new council, 10: Assume role and withdraw Capital Vault Proposal Types: 0: AMM Swap, 1: Token Whitelist, 2: Funding Operations Vault Proposal Types: 0: AMM Swap, 1: Token Whitelist, 2: Contributor Returns Vault Proposal Types: 0: AMM Swap, 1: Token Whitelist Sub Vault Proposal Types: 0: Token Whitelist, 1: Custom Txn, 2: Close Sub Vault, 3: Manager add, 4: Manager remove, 5: Manager replace, 6: Issue Returns to main vaults */ struct Proposal { uint256 proposalType; address existingAddress; // Used in proposals that require existing member addresses address newAddress; // Used in proposals that introduce new member addresses address[] addressArray; uint256[] amountArray; address amm; address token; uint256 amountOrIndex; bool whitelist; bool active; CustomTxn customTxn; ProposalVariables propVars; } struct ProposalDraft { uint256 proposalType; address existingAddress; // Used in proposals that require existing member addresses address newAddress; // Used in proposals that introduce new member addresses address[] addressArray; uint256[] amountArray; address amm; address token; uint256 amountOrIndex; bool whitelist; bool active; CustomTxn customTxn; ProposalVariablesDraft propVarsDraft; } struct CustomTxn { address contractAddress; bytes params; } struct ProposalVariables { address proposer; uint256 startDate; // When the proposal was created uint256 endDate; // When the voting period ends for the proposal uint256 closedDate; // When the proposal was finalised uint256 threshold /* Between 0-100, i.e. 50 = 50% */; uint256 quorum; // Min amount of votes required uint256 totalMembers; //Total members that can potentially vote for this string detailsURI; uint256 yesVotes; uint256 noVotes; Status status; address[] voters; } struct ProposalVariablesDraft { address proposer; string detailsURI; } }
// SPDX-License-Identifier: MIT pragma solidity >= 0.4.22 <0.9.0; library console { address constant CONSOLE_ADDRESS = address(0x000000000000000000636F6e736F6c652e6c6f67); function _sendLogPayload(bytes memory payload) private view { uint256 payloadLength = payload.length; address consoleAddress = CONSOLE_ADDRESS; assembly { let payloadStart := add(payload, 32) let r := staticcall(gas(), consoleAddress, payloadStart, payloadLength, 0, 0) } } function log() internal view { _sendLogPayload(abi.encodeWithSignature("log()")); } function logInt(int256 p0) internal view { _sendLogPayload(abi.encodeWithSignature("log(int256)", p0)); } function logUint(uint256 p0) internal view { _sendLogPayload(abi.encodeWithSignature("log(uint256)", p0)); } function logString(string memory p0) internal view { _sendLogPayload(abi.encodeWithSignature("log(string)", p0)); } function logBool(bool p0) internal view { _sendLogPayload(abi.encodeWithSignature("log(bool)", p0)); } function logAddress(address p0) internal view { _sendLogPayload(abi.encodeWithSignature("log(address)", p0)); } function logBytes(bytes memory p0) internal view { _sendLogPayload(abi.encodeWithSignature("log(bytes)", p0)); } function logBytes1(bytes1 p0) internal view { _sendLogPayload(abi.encodeWithSignature("log(bytes1)", p0)); } function logBytes2(bytes2 p0) internal view { _sendLogPayload(abi.encodeWithSignature("log(bytes2)", p0)); } function logBytes3(bytes3 p0) internal view { _sendLogPayload(abi.encodeWithSignature("log(bytes3)", p0)); } function logBytes4(bytes4 p0) internal view { _sendLogPayload(abi.encodeWithSignature("log(bytes4)", p0)); } function logBytes5(bytes5 p0) internal view { _sendLogPayload(abi.encodeWithSignature("log(bytes5)", p0)); } function logBytes6(bytes6 p0) internal view { _sendLogPayload(abi.encodeWithSignature("log(bytes6)", p0)); } function logBytes7(bytes7 p0) internal view { _sendLogPayload(abi.encodeWithSignature("log(bytes7)", p0)); } function logBytes8(bytes8 p0) internal view { _sendLogPayload(abi.encodeWithSignature("log(bytes8)", p0)); } function logBytes9(bytes9 p0) internal view { _sendLogPayload(abi.encodeWithSignature("log(bytes9)", p0)); } function logBytes10(bytes10 p0) internal view { _sendLogPayload(abi.encodeWithSignature("log(bytes10)", p0)); } function logBytes11(bytes11 p0) internal view { _sendLogPayload(abi.encodeWithSignature("log(bytes11)", p0)); } function logBytes12(bytes12 p0) internal view { _sendLogPayload(abi.encodeWithSignature("log(bytes12)", p0)); } function logBytes13(bytes13 p0) internal view { _sendLogPayload(abi.encodeWithSignature("log(bytes13)", p0)); } function logBytes14(bytes14 p0) internal view { _sendLogPayload(abi.encodeWithSignature("log(bytes14)", p0)); } function logBytes15(bytes15 p0) internal view { _sendLogPayload(abi.encodeWithSignature("log(bytes15)", p0)); } function logBytes16(bytes16 p0) internal view { _sendLogPayload(abi.encodeWithSignature("log(bytes16)", p0)); } function logBytes17(bytes17 p0) internal view { _sendLogPayload(abi.encodeWithSignature("log(bytes17)", p0)); } function logBytes18(bytes18 p0) internal view { _sendLogPayload(abi.encodeWithSignature("log(bytes18)", p0)); } function logBytes19(bytes19 p0) internal view { _sendLogPayload(abi.encodeWithSignature("log(bytes19)", p0)); } function logBytes20(bytes20 p0) internal view { _sendLogPayload(abi.encodeWithSignature("log(bytes20)", p0)); } function logBytes21(bytes21 p0) internal view { _sendLogPayload(abi.encodeWithSignature("log(bytes21)", p0)); } function logBytes22(bytes22 p0) internal view { _sendLogPayload(abi.encodeWithSignature("log(bytes22)", p0)); } function logBytes23(bytes23 p0) internal view { _sendLogPayload(abi.encodeWithSignature("log(bytes23)", p0)); } function logBytes24(bytes24 p0) internal view { _sendLogPayload(abi.encodeWithSignature("log(bytes24)", p0)); } function logBytes25(bytes25 p0) internal view { _sendLogPayload(abi.encodeWithSignature("log(bytes25)", p0)); } function logBytes26(bytes26 p0) internal view { _sendLogPayload(abi.encodeWithSignature("log(bytes26)", p0)); } function logBytes27(bytes27 p0) internal view { _sendLogPayload(abi.encodeWithSignature("log(bytes27)", p0)); } function logBytes28(bytes28 p0) internal view { _sendLogPayload(abi.encodeWithSignature("log(bytes28)", p0)); } function logBytes29(bytes29 p0) internal view { _sendLogPayload(abi.encodeWithSignature("log(bytes29)", p0)); } function logBytes30(bytes30 p0) internal view { _sendLogPayload(abi.encodeWithSignature("log(bytes30)", p0)); } function logBytes31(bytes31 p0) internal view { _sendLogPayload(abi.encodeWithSignature("log(bytes31)", p0)); } function logBytes32(bytes32 p0) internal view { _sendLogPayload(abi.encodeWithSignature("log(bytes32)", p0)); } function log(uint256 p0) internal view { _sendLogPayload(abi.encodeWithSignature("log(uint256)", p0)); } function log(string memory p0) internal view { _sendLogPayload(abi.encodeWithSignature("log(string)", p0)); } function log(bool p0) internal view { _sendLogPayload(abi.encodeWithSignature("log(bool)", p0)); } function log(address p0) internal view { _sendLogPayload(abi.encodeWithSignature("log(address)", p0)); } function log(uint256 p0, uint256 p1) internal view { _sendLogPayload(abi.encodeWithSignature("log(uint256,uint256)", p0, p1)); } function log(uint256 p0, string memory p1) internal view { _sendLogPayload(abi.encodeWithSignature("log(uint256,string)", p0, p1)); } function log(uint256 p0, bool p1) internal view { _sendLogPayload(abi.encodeWithSignature("log(uint256,bool)", p0, p1)); } function log(uint256 p0, address p1) internal view { _sendLogPayload(abi.encodeWithSignature("log(uint256,address)", p0, p1)); } function log(string memory p0, uint256 p1) internal view { _sendLogPayload(abi.encodeWithSignature("log(string,uint256)", p0, p1)); } function log(string memory p0, string memory p1) internal view { _sendLogPayload(abi.encodeWithSignature("log(string,string)", p0, p1)); } function log(string memory p0, bool p1) internal view { _sendLogPayload(abi.encodeWithSignature("log(string,bool)", p0, p1)); } function log(string memory p0, address p1) internal view { _sendLogPayload(abi.encodeWithSignature("log(string,address)", p0, p1)); } function log(bool p0, uint256 p1) internal view { _sendLogPayload(abi.encodeWithSignature("log(bool,uint256)", p0, p1)); } function log(bool p0, string memory p1) internal view { _sendLogPayload(abi.encodeWithSignature("log(bool,string)", p0, p1)); } function log(bool p0, bool p1) internal view { _sendLogPayload(abi.encodeWithSignature("log(bool,bool)", p0, p1)); } function log(bool p0, address p1) internal view { _sendLogPayload(abi.encodeWithSignature("log(bool,address)", p0, p1)); } function log(address p0, uint256 p1) internal view { _sendLogPayload(abi.encodeWithSignature("log(address,uint256)", p0, p1)); } function log(address p0, string memory p1) internal view { _sendLogPayload(abi.encodeWithSignature("log(address,string)", p0, p1)); } function log(address p0, bool p1) internal view { _sendLogPayload(abi.encodeWithSignature("log(address,bool)", p0, p1)); } function log(address p0, address p1) internal view { _sendLogPayload(abi.encodeWithSignature("log(address,address)", p0, p1)); } function log(uint256 p0, uint256 p1, uint256 p2) internal view { _sendLogPayload(abi.encodeWithSignature("log(uint256,uint256,uint256)", p0, p1, p2)); } function log(uint256 p0, uint256 p1, string memory p2) internal view { _sendLogPayload(abi.encodeWithSignature("log(uint256,uint256,string)", p0, p1, p2)); } function log(uint256 p0, uint256 p1, bool p2) internal view { _sendLogPayload(abi.encodeWithSignature("log(uint256,uint256,bool)", p0, p1, p2)); } function log(uint256 p0, uint256 p1, address p2) internal view { _sendLogPayload(abi.encodeWithSignature("log(uint256,uint256,address)", p0, p1, p2)); } function log(uint256 p0, string memory p1, uint256 p2) internal view { _sendLogPayload(abi.encodeWithSignature("log(uint256,string,uint256)", p0, p1, p2)); } function log(uint256 p0, string memory p1, string memory p2) internal view { _sendLogPayload(abi.encodeWithSignature("log(uint256,string,string)", p0, p1, p2)); } function log(uint256 p0, string memory p1, bool p2) internal view { _sendLogPayload(abi.encodeWithSignature("log(uint256,string,bool)", p0, p1, p2)); } function log(uint256 p0, string memory p1, address p2) internal view { _sendLogPayload(abi.encodeWithSignature("log(uint256,string,address)", p0, p1, p2)); } function log(uint256 p0, bool p1, uint256 p2) internal view { _sendLogPayload(abi.encodeWithSignature("log(uint256,bool,uint256)", p0, p1, p2)); } function log(uint256 p0, bool p1, string memory p2) internal view { _sendLogPayload(abi.encodeWithSignature("log(uint256,bool,string)", p0, p1, p2)); } function log(uint256 p0, bool p1, bool p2) internal view { _sendLogPayload(abi.encodeWithSignature("log(uint256,bool,bool)", p0, p1, p2)); } function log(uint256 p0, bool p1, address p2) internal view { _sendLogPayload(abi.encodeWithSignature("log(uint256,bool,address)", p0, p1, p2)); } function log(uint256 p0, address p1, uint256 p2) internal view { _sendLogPayload(abi.encodeWithSignature("log(uint256,address,uint256)", p0, p1, p2)); } function log(uint256 p0, address p1, string memory p2) internal view { _sendLogPayload(abi.encodeWithSignature("log(uint256,address,string)", p0, p1, p2)); } function log(uint256 p0, address p1, bool p2) internal view { _sendLogPayload(abi.encodeWithSignature("log(uint256,address,bool)", p0, p1, p2)); } function log(uint256 p0, address p1, address p2) internal view { _sendLogPayload(abi.encodeWithSignature("log(uint256,address,address)", p0, p1, p2)); } function log(string memory p0, uint256 p1, uint256 p2) internal view { _sendLogPayload(abi.encodeWithSignature("log(string,uint256,uint256)", p0, p1, p2)); } function log(string memory p0, uint256 p1, string memory p2) internal view { _sendLogPayload(abi.encodeWithSignature("log(string,uint256,string)", p0, p1, p2)); } function log(string memory p0, uint256 p1, bool p2) internal view { _sendLogPayload(abi.encodeWithSignature("log(string,uint256,bool)", p0, p1, p2)); } function log(string memory p0, uint256 p1, address p2) internal view { _sendLogPayload(abi.encodeWithSignature("log(string,uint256,address)", p0, p1, p2)); } function log(string memory p0, string memory p1, uint256 p2) internal view { _sendLogPayload(abi.encodeWithSignature("log(string,string,uint256)", p0, p1, p2)); } function log(string memory p0, string memory p1, string memory p2) internal view { _sendLogPayload(abi.encodeWithSignature("log(string,string,string)", p0, p1, p2)); } function log(string memory p0, string memory p1, bool p2) internal view { _sendLogPayload(abi.encodeWithSignature("log(string,string,bool)", p0, p1, p2)); } function log(string memory p0, string memory p1, address p2) internal view { _sendLogPayload(abi.encodeWithSignature("log(string,string,address)", p0, p1, p2)); } function log(string memory p0, bool p1, uint256 p2) internal view { _sendLogPayload(abi.encodeWithSignature("log(string,bool,uint256)", p0, p1, p2)); } function log(string memory p0, bool p1, string memory p2) internal view { _sendLogPayload(abi.encodeWithSignature("log(string,bool,string)", p0, p1, p2)); } function log(string memory p0, bool p1, bool p2) internal view { _sendLogPayload(abi.encodeWithSignature("log(string,bool,bool)", p0, p1, p2)); } function log(string memory p0, bool p1, address p2) internal view { _sendLogPayload(abi.encodeWithSignature("log(string,bool,address)", p0, p1, p2)); } function log(string memory p0, address p1, uint256 p2) internal view { _sendLogPayload(abi.encodeWithSignature("log(string,address,uint256)", p0, p1, p2)); } function log(string memory p0, address p1, string memory p2) internal view { _sendLogPayload(abi.encodeWithSignature("log(string,address,string)", p0, p1, p2)); } function log(string memory p0, address p1, bool p2) internal view { _sendLogPayload(abi.encodeWithSignature("log(string,address,bool)", p0, p1, p2)); } function log(string memory p0, address p1, address p2) internal view { _sendLogPayload(abi.encodeWithSignature("log(string,address,address)", p0, p1, p2)); } function log(bool p0, uint256 p1, uint256 p2) internal view { _sendLogPayload(abi.encodeWithSignature("log(bool,uint256,uint256)", p0, p1, p2)); } function log(bool p0, uint256 p1, string memory p2) internal view { _sendLogPayload(abi.encodeWithSignature("log(bool,uint256,string)", p0, p1, p2)); } function log(bool p0, uint256 p1, bool p2) internal view { _sendLogPayload(abi.encodeWithSignature("log(bool,uint256,bool)", p0, p1, p2)); } function log(bool p0, uint256 p1, address p2) internal view { _sendLogPayload(abi.encodeWithSignature("log(bool,uint256,address)", p0, p1, p2)); } function log(bool p0, string memory p1, uint256 p2) internal view { _sendLogPayload(abi.encodeWithSignature("log(bool,string,uint256)", p0, p1, p2)); } function log(bool p0, string memory p1, string memory p2) internal view { _sendLogPayload(abi.encodeWithSignature("log(bool,string,string)", p0, p1, p2)); } function log(bool p0, string memory p1, bool p2) internal view { _sendLogPayload(abi.encodeWithSignature("log(bool,string,bool)", p0, p1, p2)); } function log(bool p0, string memory p1, address p2) internal view { _sendLogPayload(abi.encodeWithSignature("log(bool,string,address)", p0, p1, p2)); } function log(bool p0, bool p1, uint256 p2) internal view { _sendLogPayload(abi.encodeWithSignature("log(bool,bool,uint256)", p0, p1, p2)); } function log(bool p0, bool p1, string memory p2) internal view { _sendLogPayload(abi.encodeWithSignature("log(bool,bool,string)", p0, p1, p2)); } function log(bool p0, bool p1, bool p2) internal view { _sendLogPayload(abi.encodeWithSignature("log(bool,bool,bool)", p0, p1, p2)); } function log(bool p0, bool p1, address p2) internal view { _sendLogPayload(abi.encodeWithSignature("log(bool,bool,address)", p0, p1, p2)); } function log(bool p0, address p1, uint256 p2) internal view { _sendLogPayload(abi.encodeWithSignature("log(bool,address,uint256)", p0, p1, p2)); } function log(bool p0, address p1, string memory p2) internal view { _sendLogPayload(abi.encodeWithSignature("log(bool,address,string)", p0, p1, p2)); } function log(bool p0, address p1, bool p2) internal view { _sendLogPayload(abi.encodeWithSignature("log(bool,address,bool)", p0, p1, p2)); } function log(bool p0, address p1, address p2) internal view { _sendLogPayload(abi.encodeWithSignature("log(bool,address,address)", p0, p1, p2)); } function log(address p0, uint256 p1, uint256 p2) internal view { _sendLogPayload(abi.encodeWithSignature("log(address,uint256,uint256)", p0, p1, p2)); } function log(address p0, uint256 p1, string memory p2) internal view { _sendLogPayload(abi.encodeWithSignature("log(address,uint256,string)", p0, p1, p2)); } function log(address p0, uint256 p1, bool p2) internal view { _sendLogPayload(abi.encodeWithSignature("log(address,uint256,bool)", p0, p1, p2)); } function log(address p0, uint256 p1, address p2) internal view { _sendLogPayload(abi.encodeWithSignature("log(address,uint256,address)", p0, p1, p2)); } function log(address p0, string memory p1, uint256 p2) internal view { _sendLogPayload(abi.encodeWithSignature("log(address,string,uint256)", p0, p1, p2)); } function log(address p0, string memory p1, string memory p2) internal view { _sendLogPayload(abi.encodeWithSignature("log(address,string,string)", p0, p1, p2)); } function log(address p0, string memory p1, bool p2) internal view { _sendLogPayload(abi.encodeWithSignature("log(address,string,bool)", p0, p1, p2)); } function log(address p0, string memory p1, address p2) internal view { _sendLogPayload(abi.encodeWithSignature("log(address,string,address)", p0, p1, p2)); } function log(address p0, bool p1, uint256 p2) internal view { _sendLogPayload(abi.encodeWithSignature("log(address,bool,uint256)", p0, p1, p2)); } function log(address p0, bool p1, string memory p2) internal view { _sendLogPayload(abi.encodeWithSignature("log(address,bool,string)", p0, p1, p2)); } function log(address p0, bool p1, bool p2) internal view { _sendLogPayload(abi.encodeWithSignature("log(address,bool,bool)", p0, p1, p2)); } function log(address p0, bool p1, address p2) internal view { _sendLogPayload(abi.encodeWithSignature("log(address,bool,address)", p0, p1, p2)); } function log(address p0, address p1, uint256 p2) internal view { _sendLogPayload(abi.encodeWithSignature("log(address,address,uint256)", p0, p1, p2)); } function log(address p0, address p1, string memory p2) internal view { _sendLogPayload(abi.encodeWithSignature("log(address,address,string)", p0, p1, p2)); } function log(address p0, address p1, bool p2) internal view { _sendLogPayload(abi.encodeWithSignature("log(address,address,bool)", p0, p1, p2)); } function log(address p0, address p1, address p2) internal view { _sendLogPayload(abi.encodeWithSignature("log(address,address,address)", p0, p1, p2)); } function log(uint256 p0, uint256 p1, uint256 p2, uint256 p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(uint256,uint256,uint256,uint256)", p0, p1, p2, p3)); } function log(uint256 p0, uint256 p1, uint256 p2, string memory p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(uint256,uint256,uint256,string)", p0, p1, p2, p3)); } function log(uint256 p0, uint256 p1, uint256 p2, bool p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(uint256,uint256,uint256,bool)", p0, p1, p2, p3)); } function log(uint256 p0, uint256 p1, uint256 p2, address p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(uint256,uint256,uint256,address)", p0, p1, p2, p3)); } function log(uint256 p0, uint256 p1, string memory p2, uint256 p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(uint256,uint256,string,uint256)", p0, p1, p2, p3)); } function log(uint256 p0, uint256 p1, string memory p2, string memory p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(uint256,uint256,string,string)", p0, p1, p2, p3)); } function log(uint256 p0, uint256 p1, string memory p2, bool p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(uint256,uint256,string,bool)", p0, p1, p2, p3)); } function log(uint256 p0, uint256 p1, string memory p2, address p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(uint256,uint256,string,address)", p0, p1, p2, p3)); } function log(uint256 p0, uint256 p1, bool p2, uint256 p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(uint256,uint256,bool,uint256)", p0, p1, p2, p3)); } function log(uint256 p0, uint256 p1, bool p2, string memory p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(uint256,uint256,bool,string)", p0, p1, p2, p3)); } function log(uint256 p0, uint256 p1, bool p2, bool p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(uint256,uint256,bool,bool)", p0, p1, p2, p3)); } function log(uint256 p0, uint256 p1, bool p2, address p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(uint256,uint256,bool,address)", p0, p1, p2, p3)); } function log(uint256 p0, uint256 p1, address p2, uint256 p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(uint256,uint256,address,uint256)", p0, p1, p2, p3)); } function log(uint256 p0, uint256 p1, address p2, string memory p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(uint256,uint256,address,string)", p0, p1, p2, p3)); } function log(uint256 p0, uint256 p1, address p2, bool p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(uint256,uint256,address,bool)", p0, p1, p2, p3)); } function log(uint256 p0, uint256 p1, address p2, address p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(uint256,uint256,address,address)", p0, p1, p2, p3)); } function log(uint256 p0, string memory p1, uint256 p2, uint256 p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(uint256,string,uint256,uint256)", p0, p1, p2, p3)); } function log(uint256 p0, string memory p1, uint256 p2, string memory p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(uint256,string,uint256,string)", p0, p1, p2, p3)); } function log(uint256 p0, string memory p1, uint256 p2, bool p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(uint256,string,uint256,bool)", p0, p1, p2, p3)); } function log(uint256 p0, string memory p1, uint256 p2, address p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(uint256,string,uint256,address)", p0, p1, p2, p3)); } function log(uint256 p0, string memory p1, string memory p2, uint256 p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(uint256,string,string,uint256)", p0, p1, p2, p3)); } function log(uint256 p0, string memory p1, string memory p2, string memory p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(uint256,string,string,string)", p0, p1, p2, p3)); } function log(uint256 p0, string memory p1, string memory p2, bool p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(uint256,string,string,bool)", p0, p1, p2, p3)); } function log(uint256 p0, string memory p1, string memory p2, address p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(uint256,string,string,address)", p0, p1, p2, p3)); } function log(uint256 p0, string memory p1, bool p2, uint256 p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(uint256,string,bool,uint256)", p0, p1, p2, p3)); } function log(uint256 p0, string memory p1, bool p2, string memory p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(uint256,string,bool,string)", p0, p1, p2, p3)); } function log(uint256 p0, string memory p1, bool p2, bool p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(uint256,string,bool,bool)", p0, p1, p2, p3)); } function log(uint256 p0, string memory p1, bool p2, address p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(uint256,string,bool,address)", p0, p1, p2, p3)); } function log(uint256 p0, string memory p1, address p2, uint256 p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(uint256,string,address,uint256)", p0, p1, p2, p3)); } function log(uint256 p0, string memory p1, address p2, string memory p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(uint256,string,address,string)", p0, p1, p2, p3)); } function log(uint256 p0, string memory p1, address p2, bool p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(uint256,string,address,bool)", p0, p1, p2, p3)); } function log(uint256 p0, string memory p1, address p2, address p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(uint256,string,address,address)", p0, p1, p2, p3)); } function log(uint256 p0, bool p1, uint256 p2, uint256 p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(uint256,bool,uint256,uint256)", p0, p1, p2, p3)); } function log(uint256 p0, bool p1, uint256 p2, string memory p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(uint256,bool,uint256,string)", p0, p1, p2, p3)); } function log(uint256 p0, bool p1, uint256 p2, bool p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(uint256,bool,uint256,bool)", p0, p1, p2, p3)); } function log(uint256 p0, bool p1, uint256 p2, address p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(uint256,bool,uint256,address)", p0, p1, p2, p3)); } function log(uint256 p0, bool p1, string memory p2, uint256 p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(uint256,bool,string,uint256)", p0, p1, p2, p3)); } function log(uint256 p0, bool p1, string memory p2, string memory p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(uint256,bool,string,string)", p0, p1, p2, p3)); } function log(uint256 p0, bool p1, string memory p2, bool p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(uint256,bool,string,bool)", p0, p1, p2, p3)); } function log(uint256 p0, bool p1, string memory p2, address p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(uint256,bool,string,address)", p0, p1, p2, p3)); } function log(uint256 p0, bool p1, bool p2, uint256 p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(uint256,bool,bool,uint256)", p0, p1, p2, p3)); } function log(uint256 p0, bool p1, bool p2, string memory p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(uint256,bool,bool,string)", p0, p1, p2, p3)); } function log(uint256 p0, bool p1, bool p2, bool p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(uint256,bool,bool,bool)", p0, p1, p2, p3)); } function log(uint256 p0, bool p1, bool p2, address p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(uint256,bool,bool,address)", p0, p1, p2, p3)); } function log(uint256 p0, bool p1, address p2, uint256 p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(uint256,bool,address,uint256)", p0, p1, p2, p3)); } function log(uint256 p0, bool p1, address p2, string memory p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(uint256,bool,address,string)", p0, p1, p2, p3)); } function log(uint256 p0, bool p1, address p2, bool p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(uint256,bool,address,bool)", p0, p1, p2, p3)); } function log(uint256 p0, bool p1, address p2, address p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(uint256,bool,address,address)", p0, p1, p2, p3)); } function log(uint256 p0, address p1, uint256 p2, uint256 p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(uint256,address,uint256,uint256)", p0, p1, p2, p3)); } function log(uint256 p0, address p1, uint256 p2, string memory p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(uint256,address,uint256,string)", p0, p1, p2, p3)); } function log(uint256 p0, address p1, uint256 p2, bool p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(uint256,address,uint256,bool)", p0, p1, p2, p3)); } function log(uint256 p0, address p1, uint256 p2, address p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(uint256,address,uint256,address)", p0, p1, p2, p3)); } function log(uint256 p0, address p1, string memory p2, uint256 p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(uint256,address,string,uint256)", p0, p1, p2, p3)); } function log(uint256 p0, address p1, string memory p2, string memory p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(uint256,address,string,string)", p0, p1, p2, p3)); } function log(uint256 p0, address p1, string memory p2, bool p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(uint256,address,string,bool)", p0, p1, p2, p3)); } function log(uint256 p0, address p1, string memory p2, address p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(uint256,address,string,address)", p0, p1, p2, p3)); } function log(uint256 p0, address p1, bool p2, uint256 p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(uint256,address,bool,uint256)", p0, p1, p2, p3)); } function log(uint256 p0, address p1, bool p2, string memory p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(uint256,address,bool,string)", p0, p1, p2, p3)); } function log(uint256 p0, address p1, bool p2, bool p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(uint256,address,bool,bool)", p0, p1, p2, p3)); } function log(uint256 p0, address p1, bool p2, address p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(uint256,address,bool,address)", p0, p1, p2, p3)); } function log(uint256 p0, address p1, address p2, uint256 p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(uint256,address,address,uint256)", p0, p1, p2, p3)); } function log(uint256 p0, address p1, address p2, string memory p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(uint256,address,address,string)", p0, p1, p2, p3)); } function log(uint256 p0, address p1, address p2, bool p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(uint256,address,address,bool)", p0, p1, p2, p3)); } function log(uint256 p0, address p1, address p2, address p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(uint256,address,address,address)", p0, p1, p2, p3)); } function log(string memory p0, uint256 p1, uint256 p2, uint256 p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(string,uint256,uint256,uint256)", p0, p1, p2, p3)); } function log(string memory p0, uint256 p1, uint256 p2, string memory p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(string,uint256,uint256,string)", p0, p1, p2, p3)); } function log(string memory p0, uint256 p1, uint256 p2, bool p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(string,uint256,uint256,bool)", p0, p1, p2, p3)); } function log(string memory p0, uint256 p1, uint256 p2, address p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(string,uint256,uint256,address)", p0, p1, p2, p3)); } function log(string memory p0, uint256 p1, string memory p2, uint256 p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(string,uint256,string,uint256)", p0, p1, p2, p3)); } function log(string memory p0, uint256 p1, string memory p2, string memory p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(string,uint256,string,string)", p0, p1, p2, p3)); } function log(string memory p0, uint256 p1, string memory p2, bool p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(string,uint256,string,bool)", p0, p1, p2, p3)); } function log(string memory p0, uint256 p1, string memory p2, address p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(string,uint256,string,address)", p0, p1, p2, p3)); } function log(string memory p0, uint256 p1, bool p2, uint256 p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(string,uint256,bool,uint256)", p0, p1, p2, p3)); } function log(string memory p0, uint256 p1, bool p2, string memory p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(string,uint256,bool,string)", p0, p1, p2, p3)); } function log(string memory p0, uint256 p1, bool p2, bool p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(string,uint256,bool,bool)", p0, p1, p2, p3)); } function log(string memory p0, uint256 p1, bool p2, address p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(string,uint256,bool,address)", p0, p1, p2, p3)); } function log(string memory p0, uint256 p1, address p2, uint256 p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(string,uint256,address,uint256)", p0, p1, p2, p3)); } function log(string memory p0, uint256 p1, address p2, string memory p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(string,uint256,address,string)", p0, p1, p2, p3)); } function log(string memory p0, uint256 p1, address p2, bool p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(string,uint256,address,bool)", p0, p1, p2, p3)); } function log(string memory p0, uint256 p1, address p2, address p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(string,uint256,address,address)", p0, p1, p2, p3)); } function log(string memory p0, string memory p1, uint256 p2, uint256 p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(string,string,uint256,uint256)", p0, p1, p2, p3)); } function log(string memory p0, string memory p1, uint256 p2, string memory p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(string,string,uint256,string)", p0, p1, p2, p3)); } function log(string memory p0, string memory p1, uint256 p2, bool p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(string,string,uint256,bool)", p0, p1, p2, p3)); } function log(string memory p0, string memory p1, uint256 p2, address p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(string,string,uint256,address)", p0, p1, p2, p3)); } function log(string memory p0, string memory p1, string memory p2, uint256 p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(string,string,string,uint256)", p0, p1, p2, p3)); } function log(string memory p0, string memory p1, string memory p2, string memory p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(string,string,string,string)", p0, p1, p2, p3)); } function log(string memory p0, string memory p1, string memory p2, bool p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(string,string,string,bool)", p0, p1, p2, p3)); } function log(string memory p0, string memory p1, string memory p2, address p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(string,string,string,address)", p0, p1, p2, p3)); } function log(string memory p0, string memory p1, bool p2, uint256 p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(string,string,bool,uint256)", p0, p1, p2, p3)); } function log(string memory p0, string memory p1, bool p2, string memory p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(string,string,bool,string)", p0, p1, p2, p3)); } function log(string memory p0, string memory p1, bool p2, bool p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(string,string,bool,bool)", p0, p1, p2, p3)); } function log(string memory p0, string memory p1, bool p2, address p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(string,string,bool,address)", p0, p1, p2, p3)); } function log(string memory p0, string memory p1, address p2, uint256 p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(string,string,address,uint256)", p0, p1, p2, p3)); } function log(string memory p0, string memory p1, address p2, string memory p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(string,string,address,string)", p0, p1, p2, p3)); } function log(string memory p0, string memory p1, address p2, bool p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(string,string,address,bool)", p0, p1, p2, p3)); } function log(string memory p0, string memory p1, address p2, address p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(string,string,address,address)", p0, p1, p2, p3)); } function log(string memory p0, bool p1, uint256 p2, uint256 p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(string,bool,uint256,uint256)", p0, p1, p2, p3)); } function log(string memory p0, bool p1, uint256 p2, string memory p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(string,bool,uint256,string)", p0, p1, p2, p3)); } function log(string memory p0, bool p1, uint256 p2, bool p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(string,bool,uint256,bool)", p0, p1, p2, p3)); } function log(string memory p0, bool p1, uint256 p2, address p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(string,bool,uint256,address)", p0, p1, p2, p3)); } function log(string memory p0, bool p1, string memory p2, uint256 p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(string,bool,string,uint256)", p0, p1, p2, p3)); } function log(string memory p0, bool p1, string memory p2, string memory p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(string,bool,string,string)", p0, p1, p2, p3)); } function log(string memory p0, bool p1, string memory p2, bool p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(string,bool,string,bool)", p0, p1, p2, p3)); } function log(string memory p0, bool p1, string memory p2, address p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(string,bool,string,address)", p0, p1, p2, p3)); } function log(string memory p0, bool p1, bool p2, uint256 p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(string,bool,bool,uint256)", p0, p1, p2, p3)); } function log(string memory p0, bool p1, bool p2, string memory p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(string,bool,bool,string)", p0, p1, p2, p3)); } function log(string memory p0, bool p1, bool p2, bool p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(string,bool,bool,bool)", p0, p1, p2, p3)); } function log(string memory p0, bool p1, bool p2, address p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(string,bool,bool,address)", p0, p1, p2, p3)); } function log(string memory p0, bool p1, address p2, uint256 p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(string,bool,address,uint256)", p0, p1, p2, p3)); } function log(string memory p0, bool p1, address p2, string memory p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(string,bool,address,string)", p0, p1, p2, p3)); } function log(string memory p0, bool p1, address p2, bool p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(string,bool,address,bool)", p0, p1, p2, p3)); } function log(string memory p0, bool p1, address p2, address p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(string,bool,address,address)", p0, p1, p2, p3)); } function log(string memory p0, address p1, uint256 p2, uint256 p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(string,address,uint256,uint256)", p0, p1, p2, p3)); } function log(string memory p0, address p1, uint256 p2, string memory p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(string,address,uint256,string)", p0, p1, p2, p3)); } function log(string memory p0, address p1, uint256 p2, bool p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(string,address,uint256,bool)", p0, p1, p2, p3)); } function log(string memory p0, address p1, uint256 p2, address p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(string,address,uint256,address)", p0, p1, p2, p3)); } function log(string memory p0, address p1, string memory p2, uint256 p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(string,address,string,uint256)", p0, p1, p2, p3)); } function log(string memory p0, address p1, string memory p2, string memory p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(string,address,string,string)", p0, p1, p2, p3)); } function log(string memory p0, address p1, string memory p2, bool p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(string,address,string,bool)", p0, p1, p2, p3)); } function log(string memory p0, address p1, string memory p2, address p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(string,address,string,address)", p0, p1, p2, p3)); } function log(string memory p0, address p1, bool p2, uint256 p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(string,address,bool,uint256)", p0, p1, p2, p3)); } function log(string memory p0, address p1, bool p2, string memory p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(string,address,bool,string)", p0, p1, p2, p3)); } function log(string memory p0, address p1, bool p2, bool p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(string,address,bool,bool)", p0, p1, p2, p3)); } function log(string memory p0, address p1, bool p2, address p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(string,address,bool,address)", p0, p1, p2, p3)); } function log(string memory p0, address p1, address p2, uint256 p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(string,address,address,uint256)", p0, p1, p2, p3)); } function log(string memory p0, address p1, address p2, string memory p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(string,address,address,string)", p0, p1, p2, p3)); } function log(string memory p0, address p1, address p2, bool p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(string,address,address,bool)", p0, p1, p2, p3)); } function log(string memory p0, address p1, address p2, address p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(string,address,address,address)", p0, p1, p2, p3)); } function log(bool p0, uint256 p1, uint256 p2, uint256 p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(bool,uint256,uint256,uint256)", p0, p1, p2, p3)); } function log(bool p0, uint256 p1, uint256 p2, string memory p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(bool,uint256,uint256,string)", p0, p1, p2, p3)); } function log(bool p0, uint256 p1, uint256 p2, bool p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(bool,uint256,uint256,bool)", p0, p1, p2, p3)); } function log(bool p0, uint256 p1, uint256 p2, address p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(bool,uint256,uint256,address)", p0, p1, p2, p3)); } function log(bool p0, uint256 p1, string memory p2, uint256 p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(bool,uint256,string,uint256)", p0, p1, p2, p3)); } function log(bool p0, uint256 p1, string memory p2, string memory p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(bool,uint256,string,string)", p0, p1, p2, p3)); } function log(bool p0, uint256 p1, string memory p2, bool p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(bool,uint256,string,bool)", p0, p1, p2, p3)); } function log(bool p0, uint256 p1, string memory p2, address p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(bool,uint256,string,address)", p0, p1, p2, p3)); } function log(bool p0, uint256 p1, bool p2, uint256 p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(bool,uint256,bool,uint256)", p0, p1, p2, p3)); } function log(bool p0, uint256 p1, bool p2, string memory p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(bool,uint256,bool,string)", p0, p1, p2, p3)); } function log(bool p0, uint256 p1, bool p2, bool p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(bool,uint256,bool,bool)", p0, p1, p2, p3)); } function log(bool p0, uint256 p1, bool p2, address p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(bool,uint256,bool,address)", p0, p1, p2, p3)); } function log(bool p0, uint256 p1, address p2, uint256 p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(bool,uint256,address,uint256)", p0, p1, p2, p3)); } function log(bool p0, uint256 p1, address p2, string memory p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(bool,uint256,address,string)", p0, p1, p2, p3)); } function log(bool p0, uint256 p1, address p2, bool p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(bool,uint256,address,bool)", p0, p1, p2, p3)); } function log(bool p0, uint256 p1, address p2, address p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(bool,uint256,address,address)", p0, p1, p2, p3)); } function log(bool p0, string memory p1, uint256 p2, uint256 p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(bool,string,uint256,uint256)", p0, p1, p2, p3)); } function log(bool p0, string memory p1, uint256 p2, string memory p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(bool,string,uint256,string)", p0, p1, p2, p3)); } function log(bool p0, string memory p1, uint256 p2, bool p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(bool,string,uint256,bool)", p0, p1, p2, p3)); } function log(bool p0, string memory p1, uint256 p2, address p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(bool,string,uint256,address)", p0, p1, p2, p3)); } function log(bool p0, string memory p1, string memory p2, uint256 p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(bool,string,string,uint256)", p0, p1, p2, p3)); } function log(bool p0, string memory p1, string memory p2, string memory p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(bool,string,string,string)", p0, p1, p2, p3)); } function log(bool p0, string memory p1, string memory p2, bool p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(bool,string,string,bool)", p0, p1, p2, p3)); } function log(bool p0, string memory p1, string memory p2, address p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(bool,string,string,address)", p0, p1, p2, p3)); } function log(bool p0, string memory p1, bool p2, uint256 p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(bool,string,bool,uint256)", p0, p1, p2, p3)); } function log(bool p0, string memory p1, bool p2, string memory p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(bool,string,bool,string)", p0, p1, p2, p3)); } function log(bool p0, string memory p1, bool p2, bool p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(bool,string,bool,bool)", p0, p1, p2, p3)); } function log(bool p0, string memory p1, bool p2, address p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(bool,string,bool,address)", p0, p1, p2, p3)); } function log(bool p0, string memory p1, address p2, uint256 p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(bool,string,address,uint256)", p0, p1, p2, p3)); } function log(bool p0, string memory p1, address p2, string memory p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(bool,string,address,string)", p0, p1, p2, p3)); } function log(bool p0, string memory p1, address p2, bool p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(bool,string,address,bool)", p0, p1, p2, p3)); } function log(bool p0, string memory p1, address p2, address p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(bool,string,address,address)", p0, p1, p2, p3)); } function log(bool p0, bool p1, uint256 p2, uint256 p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(bool,bool,uint256,uint256)", p0, p1, p2, p3)); } function log(bool p0, bool p1, uint256 p2, string memory p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(bool,bool,uint256,string)", p0, p1, p2, p3)); } function log(bool p0, bool p1, uint256 p2, bool p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(bool,bool,uint256,bool)", p0, p1, p2, p3)); } function log(bool p0, bool p1, uint256 p2, address p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(bool,bool,uint256,address)", p0, p1, p2, p3)); } function log(bool p0, bool p1, string memory p2, uint256 p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(bool,bool,string,uint256)", p0, p1, p2, p3)); } function log(bool p0, bool p1, string memory p2, string memory p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(bool,bool,string,string)", p0, p1, p2, p3)); } function log(bool p0, bool p1, string memory p2, bool p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(bool,bool,string,bool)", p0, p1, p2, p3)); } function log(bool p0, bool p1, string memory p2, address p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(bool,bool,string,address)", p0, p1, p2, p3)); } function log(bool p0, bool p1, bool p2, uint256 p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(bool,bool,bool,uint256)", p0, p1, p2, p3)); } function log(bool p0, bool p1, bool p2, string memory p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(bool,bool,bool,string)", p0, p1, p2, p3)); } function log(bool p0, bool p1, bool p2, bool p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(bool,bool,bool,bool)", p0, p1, p2, p3)); } function log(bool p0, bool p1, bool p2, address p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(bool,bool,bool,address)", p0, p1, p2, p3)); } function log(bool p0, bool p1, address p2, uint256 p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(bool,bool,address,uint256)", p0, p1, p2, p3)); } function log(bool p0, bool p1, address p2, string memory p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(bool,bool,address,string)", p0, p1, p2, p3)); } function log(bool p0, bool p1, address p2, bool p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(bool,bool,address,bool)", p0, p1, p2, p3)); } function log(bool p0, bool p1, address p2, address p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(bool,bool,address,address)", p0, p1, p2, p3)); } function log(bool p0, address p1, uint256 p2, uint256 p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(bool,address,uint256,uint256)", p0, p1, p2, p3)); } function log(bool p0, address p1, uint256 p2, string memory p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(bool,address,uint256,string)", p0, p1, p2, p3)); } function log(bool p0, address p1, uint256 p2, bool p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(bool,address,uint256,bool)", p0, p1, p2, p3)); } function log(bool p0, address p1, uint256 p2, address p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(bool,address,uint256,address)", p0, p1, p2, p3)); } function log(bool p0, address p1, string memory p2, uint256 p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(bool,address,string,uint256)", p0, p1, p2, p3)); } function log(bool p0, address p1, string memory p2, string memory p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(bool,address,string,string)", p0, p1, p2, p3)); } function log(bool p0, address p1, string memory p2, bool p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(bool,address,string,bool)", p0, p1, p2, p3)); } function log(bool p0, address p1, string memory p2, address p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(bool,address,string,address)", p0, p1, p2, p3)); } function log(bool p0, address p1, bool p2, uint256 p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(bool,address,bool,uint256)", p0, p1, p2, p3)); } function log(bool p0, address p1, bool p2, string memory p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(bool,address,bool,string)", p0, p1, p2, p3)); } function log(bool p0, address p1, bool p2, bool p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(bool,address,bool,bool)", p0, p1, p2, p3)); } function log(bool p0, address p1, bool p2, address p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(bool,address,bool,address)", p0, p1, p2, p3)); } function log(bool p0, address p1, address p2, uint256 p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(bool,address,address,uint256)", p0, p1, p2, p3)); } function log(bool p0, address p1, address p2, string memory p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(bool,address,address,string)", p0, p1, p2, p3)); } function log(bool p0, address p1, address p2, bool p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(bool,address,address,bool)", p0, p1, p2, p3)); } function log(bool p0, address p1, address p2, address p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(bool,address,address,address)", p0, p1, p2, p3)); } function log(address p0, uint256 p1, uint256 p2, uint256 p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(address,uint256,uint256,uint256)", p0, p1, p2, p3)); } function log(address p0, uint256 p1, uint256 p2, string memory p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(address,uint256,uint256,string)", p0, p1, p2, p3)); } function log(address p0, uint256 p1, uint256 p2, bool p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(address,uint256,uint256,bool)", p0, p1, p2, p3)); } function log(address p0, uint256 p1, uint256 p2, address p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(address,uint256,uint256,address)", p0, p1, p2, p3)); } function log(address p0, uint256 p1, string memory p2, uint256 p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(address,uint256,string,uint256)", p0, p1, p2, p3)); } function log(address p0, uint256 p1, string memory p2, string memory p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(address,uint256,string,string)", p0, p1, p2, p3)); } function log(address p0, uint256 p1, string memory p2, bool p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(address,uint256,string,bool)", p0, p1, p2, p3)); } function log(address p0, uint256 p1, string memory p2, address p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(address,uint256,string,address)", p0, p1, p2, p3)); } function log(address p0, uint256 p1, bool p2, uint256 p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(address,uint256,bool,uint256)", p0, p1, p2, p3)); } function log(address p0, uint256 p1, bool p2, string memory p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(address,uint256,bool,string)", p0, p1, p2, p3)); } function log(address p0, uint256 p1, bool p2, bool p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(address,uint256,bool,bool)", p0, p1, p2, p3)); } function log(address p0, uint256 p1, bool p2, address p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(address,uint256,bool,address)", p0, p1, p2, p3)); } function log(address p0, uint256 p1, address p2, uint256 p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(address,uint256,address,uint256)", p0, p1, p2, p3)); } function log(address p0, uint256 p1, address p2, string memory p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(address,uint256,address,string)", p0, p1, p2, p3)); } function log(address p0, uint256 p1, address p2, bool p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(address,uint256,address,bool)", p0, p1, p2, p3)); } function log(address p0, uint256 p1, address p2, address p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(address,uint256,address,address)", p0, p1, p2, p3)); } function log(address p0, string memory p1, uint256 p2, uint256 p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(address,string,uint256,uint256)", p0, p1, p2, p3)); } function log(address p0, string memory p1, uint256 p2, string memory p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(address,string,uint256,string)", p0, p1, p2, p3)); } function log(address p0, string memory p1, uint256 p2, bool p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(address,string,uint256,bool)", p0, p1, p2, p3)); } function log(address p0, string memory p1, uint256 p2, address p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(address,string,uint256,address)", p0, p1, p2, p3)); } function log(address p0, string memory p1, string memory p2, uint256 p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(address,string,string,uint256)", p0, p1, p2, p3)); } function log(address p0, string memory p1, string memory p2, string memory p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(address,string,string,string)", p0, p1, p2, p3)); } function log(address p0, string memory p1, string memory p2, bool p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(address,string,string,bool)", p0, p1, p2, p3)); } function log(address p0, string memory p1, string memory p2, address p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(address,string,string,address)", p0, p1, p2, p3)); } function log(address p0, string memory p1, bool p2, uint256 p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(address,string,bool,uint256)", p0, p1, p2, p3)); } function log(address p0, string memory p1, bool p2, string memory p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(address,string,bool,string)", p0, p1, p2, p3)); } function log(address p0, string memory p1, bool p2, bool p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(address,string,bool,bool)", p0, p1, p2, p3)); } function log(address p0, string memory p1, bool p2, address p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(address,string,bool,address)", p0, p1, p2, p3)); } function log(address p0, string memory p1, address p2, uint256 p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(address,string,address,uint256)", p0, p1, p2, p3)); } function log(address p0, string memory p1, address p2, string memory p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(address,string,address,string)", p0, p1, p2, p3)); } function log(address p0, string memory p1, address p2, bool p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(address,string,address,bool)", p0, p1, p2, p3)); } function log(address p0, string memory p1, address p2, address p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(address,string,address,address)", p0, p1, p2, p3)); } function log(address p0, bool p1, uint256 p2, uint256 p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(address,bool,uint256,uint256)", p0, p1, p2, p3)); } function log(address p0, bool p1, uint256 p2, string memory p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(address,bool,uint256,string)", p0, p1, p2, p3)); } function log(address p0, bool p1, uint256 p2, bool p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(address,bool,uint256,bool)", p0, p1, p2, p3)); } function log(address p0, bool p1, uint256 p2, address p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(address,bool,uint256,address)", p0, p1, p2, p3)); } function log(address p0, bool p1, string memory p2, uint256 p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(address,bool,string,uint256)", p0, p1, p2, p3)); } function log(address p0, bool p1, string memory p2, string memory p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(address,bool,string,string)", p0, p1, p2, p3)); } function log(address p0, bool p1, string memory p2, bool p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(address,bool,string,bool)", p0, p1, p2, p3)); } function log(address p0, bool p1, string memory p2, address p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(address,bool,string,address)", p0, p1, p2, p3)); } function log(address p0, bool p1, bool p2, uint256 p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(address,bool,bool,uint256)", p0, p1, p2, p3)); } function log(address p0, bool p1, bool p2, string memory p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(address,bool,bool,string)", p0, p1, p2, p3)); } function log(address p0, bool p1, bool p2, bool p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(address,bool,bool,bool)", p0, p1, p2, p3)); } function log(address p0, bool p1, bool p2, address p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(address,bool,bool,address)", p0, p1, p2, p3)); } function log(address p0, bool p1, address p2, uint256 p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(address,bool,address,uint256)", p0, p1, p2, p3)); } function log(address p0, bool p1, address p2, string memory p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(address,bool,address,string)", p0, p1, p2, p3)); } function log(address p0, bool p1, address p2, bool p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(address,bool,address,bool)", p0, p1, p2, p3)); } function log(address p0, bool p1, address p2, address p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(address,bool,address,address)", p0, p1, p2, p3)); } function log(address p0, address p1, uint256 p2, uint256 p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(address,address,uint256,uint256)", p0, p1, p2, p3)); } function log(address p0, address p1, uint256 p2, string memory p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(address,address,uint256,string)", p0, p1, p2, p3)); } function log(address p0, address p1, uint256 p2, bool p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(address,address,uint256,bool)", p0, p1, p2, p3)); } function log(address p0, address p1, uint256 p2, address p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(address,address,uint256,address)", p0, p1, p2, p3)); } function log(address p0, address p1, string memory p2, uint256 p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(address,address,string,uint256)", p0, p1, p2, p3)); } function log(address p0, address p1, string memory p2, string memory p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(address,address,string,string)", p0, p1, p2, p3)); } function log(address p0, address p1, string memory p2, bool p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(address,address,string,bool)", p0, p1, p2, p3)); } function log(address p0, address p1, string memory p2, address p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(address,address,string,address)", p0, p1, p2, p3)); } function log(address p0, address p1, bool p2, uint256 p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(address,address,bool,uint256)", p0, p1, p2, p3)); } function log(address p0, address p1, bool p2, string memory p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(address,address,bool,string)", p0, p1, p2, p3)); } function log(address p0, address p1, bool p2, bool p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(address,address,bool,bool)", p0, p1, p2, p3)); } function log(address p0, address p1, bool p2, address p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(address,address,bool,address)", p0, p1, p2, p3)); } function log(address p0, address p1, address p2, uint256 p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(address,address,address,uint256)", p0, p1, p2, p3)); } function log(address p0, address p1, address p2, string memory p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(address,address,address,string)", p0, p1, p2, p3)); } function log(address p0, address p1, address p2, bool p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(address,address,address,bool)", p0, p1, p2, p3)); } function log(address p0, address p1, address p2, address p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(address,address,address,address)", p0, p1, p2, p3)); } }
pragma solidity >=0.6.2; interface IUniswapV2Router01 { function factory() external view returns (address); function WETH() external view returns (address); function addLiquidity( address tokenA, address tokenB, uint amountADesired, uint amountBDesired, uint amountAMin, uint amountBMin, address to, uint deadline ) external returns (uint amountA, uint amountB, uint liquidity); function addLiquidityETH( address token, uint amountTokenDesired, uint amountTokenMin, uint amountETHMin, address to, uint deadline ) external payable returns (uint amountToken, uint amountETH, uint liquidity); function removeLiquidity( address tokenA, address tokenB, uint liquidity, uint amountAMin, uint amountBMin, address to, uint deadline ) external returns (uint amountA, uint amountB); function removeLiquidityETH( address token, uint liquidity, uint amountTokenMin, uint amountETHMin, address to, uint deadline ) external returns (uint amountToken, uint amountETH); function removeLiquidityWithPermit( address tokenA, address tokenB, uint liquidity, uint amountAMin, uint amountBMin, address to, uint deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s ) external returns (uint amountA, uint amountB); function removeLiquidityETHWithPermit( address token, uint liquidity, uint amountTokenMin, uint amountETHMin, address to, uint deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s ) external returns (uint amountToken, uint amountETH); function swapExactTokensForTokens( uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline ) external returns (uint[] memory amounts); function swapTokensForExactTokens( uint amountOut, uint amountInMax, address[] calldata path, address to, uint deadline ) external returns (uint[] memory amounts); function swapExactETHForTokens(uint amountOutMin, address[] calldata path, address to, uint deadline) external payable returns (uint[] memory amounts); function swapTokensForExactETH(uint amountOut, uint amountInMax, address[] calldata path, address to, uint deadline) external returns (uint[] memory amounts); function swapExactTokensForETH(uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline) external returns (uint[] memory amounts); function swapETHForExactTokens(uint amountOut, address[] calldata path, address to, uint deadline) external payable returns (uint[] memory amounts); function quote(uint amountA, uint reserveA, uint reserveB) external pure returns (uint amountB); function getAmountOut(uint amountIn, uint reserveIn, uint reserveOut) external pure returns (uint amountOut); function getAmountIn(uint amountOut, uint reserveIn, uint reserveOut) external pure returns (uint amountIn); function getAmountsOut(uint amountIn, address[] calldata path) external view returns (uint[] memory amounts); function getAmountsIn(uint amountOut, address[] calldata path) external view returns (uint[] memory amounts); }
{ "optimizer": { "enabled": true, "runs": 200 }, "outputSelection": { "*": { "*": [ "evm.bytecode", "evm.deployedBytecode", "devdoc", "userdoc", "metadata", "abi" ] } }, "libraries": {} }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
Contract ABI
API[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"_token","type":"address"},{"indexed":false,"internalType":"uint256","name":"_amount","type":"uint256"},{"indexed":false,"internalType":"address","name":"_vault","type":"address"}],"name":"CurrentBalance","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"_id","type":"uint256"},{"indexed":false,"internalType":"enum IDAO.Status","name":"_status","type":"uint8"}],"name":"ProcessProposal","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"_id","type":"uint256"},{"components":[{"internalType":"uint256","name":"proposalType","type":"uint256"},{"internalType":"address","name":"existingAddress","type":"address"},{"internalType":"address","name":"newAddress","type":"address"},{"internalType":"address[]","name":"addressArray","type":"address[]"},{"internalType":"uint256[]","name":"amountArray","type":"uint256[]"},{"internalType":"address","name":"amm","type":"address"},{"internalType":"address","name":"token","type":"address"},{"internalType":"uint256","name":"amountOrIndex","type":"uint256"},{"internalType":"bool","name":"whitelist","type":"bool"},{"internalType":"bool","name":"active","type":"bool"},{"components":[{"internalType":"address","name":"contractAddress","type":"address"},{"internalType":"bytes","name":"params","type":"bytes"}],"internalType":"struct IDAO.CustomTxn","name":"customTxn","type":"tuple"},{"components":[{"internalType":"address","name":"proposer","type":"address"},{"internalType":"uint256","name":"startDate","type":"uint256"},{"internalType":"uint256","name":"endDate","type":"uint256"},{"internalType":"uint256","name":"closedDate","type":"uint256"},{"internalType":"uint256","name":"threshold","type":"uint256"},{"internalType":"uint256","name":"quorum","type":"uint256"},{"internalType":"uint256","name":"totalMembers","type":"uint256"},{"internalType":"string","name":"detailsURI","type":"string"},{"internalType":"uint256","name":"yesVotes","type":"uint256"},{"internalType":"uint256","name":"noVotes","type":"uint256"},{"internalType":"enum IDAO.Status","name":"status","type":"uint8"},{"internalType":"address[]","name":"voters","type":"address[]"}],"internalType":"struct IDAO.ProposalVariables","name":"propVars","type":"tuple"}],"indexed":false,"internalType":"struct IDAO.Proposal","name":"_proposal","type":"tuple"}],"name":"ProposeProposal","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"_id","type":"uint256"},{"indexed":true,"internalType":"enum IDAO.Vote","name":"_vote","type":"uint8"}],"name":"VoteProposal","type":"event"},{"inputs":[],"name":"getPrimaryToken","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_amount","type":"uint256"},{"internalType":"address","name":"_token","type":"address"}],"name":"getStandardisedDecimalPrecision","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_token","type":"address"}],"name":"getTotalReturns","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_token","type":"address"}],"name":"getWhitelistedTokens","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_aetos","type":"address"},{"internalType":"address","name":"_baseToken","type":"address"}],"name":"initialize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"initialized","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"primaryToken","outputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"uint256","name":"totalReturns","type":"uint256"},{"internalType":"uint256","name":"previousBalance","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_index","type":"uint256"}],"name":"process","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"proposalIndex","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"proposals","outputs":[{"internalType":"uint256","name":"proposalType","type":"uint256"},{"internalType":"address","name":"existingAddress","type":"address"},{"internalType":"address","name":"newAddress","type":"address"},{"internalType":"address","name":"amm","type":"address"},{"internalType":"address","name":"token","type":"address"},{"internalType":"uint256","name":"amountOrIndex","type":"uint256"},{"internalType":"bool","name":"whitelist","type":"bool"},{"internalType":"bool","name":"active","type":"bool"},{"components":[{"internalType":"address","name":"contractAddress","type":"address"},{"internalType":"bytes","name":"params","type":"bytes"}],"internalType":"struct IDAO.CustomTxn","name":"customTxn","type":"tuple"},{"components":[{"internalType":"address","name":"proposer","type":"address"},{"internalType":"uint256","name":"startDate","type":"uint256"},{"internalType":"uint256","name":"endDate","type":"uint256"},{"internalType":"uint256","name":"closedDate","type":"uint256"},{"internalType":"uint256","name":"threshold","type":"uint256"},{"internalType":"uint256","name":"quorum","type":"uint256"},{"internalType":"uint256","name":"totalMembers","type":"uint256"},{"internalType":"string","name":"detailsURI","type":"string"},{"internalType":"uint256","name":"yesVotes","type":"uint256"},{"internalType":"uint256","name":"noVotes","type":"uint256"},{"internalType":"enum IDAO.Status","name":"status","type":"uint8"},{"internalType":"address[]","name":"voters","type":"address[]"}],"internalType":"struct IDAO.ProposalVariables","name":"propVars","type":"tuple"}],"stateMutability":"view","type":"function"},{"inputs":[{"components":[{"internalType":"uint256","name":"proposalType","type":"uint256"},{"internalType":"address","name":"existingAddress","type":"address"},{"internalType":"address","name":"newAddress","type":"address"},{"internalType":"address[]","name":"addressArray","type":"address[]"},{"internalType":"uint256[]","name":"amountArray","type":"uint256[]"},{"internalType":"address","name":"amm","type":"address"},{"internalType":"address","name":"token","type":"address"},{"internalType":"uint256","name":"amountOrIndex","type":"uint256"},{"internalType":"bool","name":"whitelist","type":"bool"},{"internalType":"bool","name":"active","type":"bool"},{"components":[{"internalType":"address","name":"contractAddress","type":"address"},{"internalType":"bytes","name":"params","type":"bytes"}],"internalType":"struct IDAO.CustomTxn","name":"customTxn","type":"tuple"},{"components":[{"internalType":"address","name":"proposer","type":"address"},{"internalType":"string","name":"detailsURI","type":"string"}],"internalType":"struct IDAO.ProposalVariablesDraft","name":"propVarsDraft","type":"tuple"}],"internalType":"struct IDAO.ProposalDraft","name":"_proposalDraft","type":"tuple"}],"name":"propose","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_token","type":"address"}],"name":"sync","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_index","type":"uint256"},{"internalType":"enum IDAO.Vote","name":"_vote","type":"uint8"}],"name":"vote","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"whitelistedTokens","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_token","type":"address"},{"internalType":"address","name":"_recipient","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"withdraw","outputs":[],"stateMutability":"nonpayable","type":"function"}]
Contract Creation Code
60806040526003805460ff60a01b1916905534801561001d57600080fd5b506132568061002d6000396000f3fe608060405234801561001057600080fd5b50600436106100f55760003560e01c806391ac094c11610097578063a775888311610066578063a775888314610247578063d9caed1214610262578063daf9c21014610275578063ffb2c4791461029857600080fd5b806391ac094c146101ce578063943e82161461020e578063a27d870014610221578063a58411941461023457600080fd5b806324d6c8d5116100d357806324d6c8d514610165578063485cc9551461019157806351586847146101a45780635977e0f2146101c557600080fd5b8063013cf08b146100fa578063132cd0621461012c578063158ef93e14610141575b600080fd5b61010d6101083660046121ab565b6102ab565b6040516101239a99989796959493929190612350565b60405180910390f35b61013f61013a366004612667565b610556565b005b60035461015590600160a01b900460ff1681565b6040519015158152602001610123565b6101556101733660046127c3565b6001600160a01b031660009081526020819052604090205460ff1690565b61013f61019f3660046127e0565b610df7565b6101b76101b23660046127c3565b610e94565b604051908152602001610123565b6101b760015481565b6004546005546006546101e9926001600160a01b0316919083565b604080516001600160a01b039094168452602084019290925290820152606001610123565b61013f61021c366004612826565b610f4c565b6101b761022f36600461284b565b611258565b61013f6102423660046127c3565b6112ec565b6004546040516001600160a01b039091168152602001610123565b61013f610270366004612870565b6112f8565b6101556102833660046127c3565b60006020819052908152604090205460ff1681565b61013f6102a63660046121ab565b611470565b600260208181526000928352604092839020805460018201549382015460058301546006840154600785015460088601548951808b01909a526009870180546001600160a01b039081168c52600a89018054989c9b82169b9782169a968216999590911697939660ff80851697610100909504169594909384019190610330906128b1565b80601f016020809104026020016040519081016040528092919081815260200182805461035c906128b1565b80156103a95780601f1061037e576101008083540402835291602001916103a9565b820191906000526020600020905b81548152906001019060200180831161038c57829003601f168201915b5050509190925250506040805161018081018252600b850180546001600160a01b03168252600c8601546020830152600d86015492820192909252600e8501546060820152600f8501546080820152601085015460a0820152601185015460c082015260128501805494959491935060e0840191610426906128b1565b80601f0160208091040260200160405190810160405280929190818152602001828054610452906128b1565b801561049f5780601f106104745761010080835404028352916020019161049f565b820191906000526020600020905b81548152906001019060200180831161048257829003601f168201915b50505091835250506008820154602082015260098201546040820152600a82015460609091019060ff1660028111156104da576104da612214565b60028111156104eb576104eb612214565b8152602001600b820180548060200260200160405190810160405280929190818152602001828054801561054857602002820191906000526020600020905b81546001600160a01b0316815260019091019060200180831161052a575b50505050508152505090508a565b60035460405163dde8535f60e01b81523360048201526000916001600160a01b03169063dde8535f90602401602060405180830381865afa15801561059f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105c391906128f0565b905060028160028111156105d9576105d9612214565b146106115760405162461bcd60e51b815260206004820152600360248201526222a91b60e91b60448201526064015b60405180910390fd5b8151600110156106495760405162461bcd60e51b815260206004820152600360248201526245523160e81b6044820152606401610608565b60008261016001516020015151116106895760405162461bcd60e51b815260206004820152600360248201526204552360ec1b6044820152606401610608565b8151600154600090815260026020908152604091829020929092556101608401513390526003548151635d97505b60e01b815291516001600160a01b0390911692635d97505b92600480820193918290030181865afa1580156106f0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107149190612918565b6001600160a01b031663f11202348361016001516040518263ffffffff1660e01b81526004016107449190612935565b600060405180830381865afa158015610761573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526107899190810190612a13565b6001546000908152600260209081526040918290208351600b820180546001600160a01b0319166001600160a01b0390921691909117815591840151600c82015591830151600d8301556060830151600e8301556080830151600f83015560a0830151601083015560c0830151601183015560e08301519091601201906108109082612b5c565b5061010082015160088201556101208201516009820155610140820151600a8201805460ff1916600183600281111561084b5761084b612214565b0217905550610160820151805161086c91600b840191602090910190612131565b50506003546040805163e3d27f2960e01b815290516001600160a01b03909216925063e3d27f299160048083019260209291908290030181865afa1580156108b8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108dc9190612c1c565b600154600090815260026020908152604091829020600f01929092556003548151634f6c488b60e01b815291516001600160a01b0390911692634f6c488b92600481810193918290030181865afa15801561093b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061095f9190612c1c565b6109699042612c4b565b600180546000908152600260208181526040808420600d01959095558681015184548452858420850180546001600160a01b03199081166001600160a01b0393841617909155888701518654865287862090940180549091169382169390931790925560e0870151935483529184902060070192909255600354835163f80e1c8960e01b8152935192169263f80e1c8992600480830193928290030181865afa158015610a1a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a3e9190612c1c565b60015460009081526002602090815260409182902060110192909255600354815163f80e1c8960e01b815291516001600160a01b039091169263f80e1c8992600480820193918290030181865afa158015610a9d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ac19190612c1c565b60015460009081526002602052604081206010019190915582519003610d3357600360009054906101000a90046001600160a01b03166001600160a01b031663289c25f46040518163ffffffff1660e01b8152600401602060405180830381865afa158015610b34573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b589190612c5e565b15610b8b5760405162461bcd60e51b815260206004820152600360248201526208aa4760eb1b6044820152606401610608565b816060015151600214610bc65760405162461bcd60e51b815260206004820152600360248201526222a91960e91b6044820152606401610608565b600454606083015180516001600160a01b0390921691600090610beb57610beb612c7b565b60200260200101516001600160a01b031614610c2f5760405162461bcd60e51b815260206004820152600360248201526245523960e81b6044820152606401610608565b6000808360600151600081518110610c4957610c49612c7b565b6020908102919091018101516001600160a01b031682528101919091526040016000205460ff168015610cb957506000808360600151600181518110610c9157610c91612c7b565b6020908102919091018101516001600160a01b031682528101919091526040016000205460ff165b610cd55760405162461bcd60e51b815260040161060890612c91565b60a082015160018054600090815260026020908152604080832060050180546001600160a01b0319166001600160a01b03909616959095179094556060860151925482529290208151610d319360039092019290910190612131565b505b8151600103610d965760c08201516001805460009081526002602052604080822060060180546001600160a01b0319166001600160a01b03909516949094179093556101008501519154815291909120600801805460ff19169115159190911790555b6001546000818152600260205260409081902090517fc71a1e2cb91ef76d3fec5535207e4457a4bd2b772f99618204772d34df8ebb9891610dd691612e89565b60405180910390a260018054906000610dee83612f8e565b91905055505050565b600354600160a01b900460ff1615610e375760405162461bcd60e51b815260206004820152600360248201526245523760e81b6044820152606401610608565b600380546001600160a01b0319166001600160a01b038416179055610e5d816001611f6e565b600480546001600160a01b039092166001600160a01b0319909216919091179055506003805460ff60a01b1916600160a01b179055565b6040516370a0823160e01b81523060048201526000908190610f0c906001600160a01b038516906370a08231906024015b602060405180830381865afa158015610ee2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f069190612c1c565b84611258565b600654909150811115610f3c57610f2881600460020154612036565b600554610f359190612c4b565b9392505050565b5050600554919050565b50919050565b60035460405163dde8535f60e01b81523360048201526000916001600160a01b03169063dde8535f90602401602060405180830381865afa158015610f95573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fb991906128f0565b90506002816002811115610fcf57610fcf612214565b146110025760405162461bcd60e51b815260206004820152600360248201526222a91b60e91b6044820152606401610608565b600360009054906101000a90046001600160a01b03166001600160a01b0316635d97505b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611055573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110799190612918565b600084815260026020526040908190209051630836aaf960e21b81526001600160a01b0392909216916320daabe4916110bc913391600b01908790600401612fa7565b600060405180830381865afa1580156110d9573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526111019190810190612a13565b6000848152600260209081526040918290208351600b820180546001600160a01b0319166001600160a01b0390921691909117815591840151600c82015591830151600d8301556060830151600e8301556080830151600f83015560a0830151601083015560c0830151601183015560e08301519091601201906111859082612b5c565b5061010082015160088201556101208201516009820155610140820151600a8201805460ff191660018360028111156111c0576111c0612214565b021790555061016082015180516111e191600b840191602090910190612131565b505050600083815260026020818152604083206016018054600181018255908452922090910180546001600160a01b03191633179055829081111561122857611228612214565b60405184907fc92326dacbba7a4c0f0b5ca0bab775311245300cea304ed0655a887fb568662890600090a3505050565b6000816001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015611298573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112bc9190612fe4565b6112c790600a6130eb565b6112d9670de0b6b3a7640000856130fa565b6112e39190613111565b90505b92915050565b6112f581612058565b50565b6003546001600160a01b031633146113385760405162461bcd60e51b815260206004820152600360248201526211548d60ea1b6044820152606401610608565b61134183612058565b60405163a9059cbb60e01b81526001600160a01b0383811660048301526024820183905284169063a9059cbb90604401600060405180830381600087803b15801561138b57600080fd5b505af115801561139f573d6000803e3d6000fd5b50506040516370a0823160e01b81523060048201526113d392506001600160a01b03861691506370a0823190602401610ec5565b6006556040516370a0823160e01b815230600482015283906000805160206132018339815191529082906001600160a01b038216906370a0823190602401602060405180830381865afa15801561142e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114529190612c1c565b3060405161146293929190613133565b60405180910390a150505050565b60035460405163dde8535f60e01b81523360048201526000916001600160a01b03169063dde8535f90602401602060405180830381865afa1580156114b9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114dd91906128f0565b905060018160028111156114f3576114f3612214565b14806115105750600281600281111561150e5761150e612214565b145b6115425760405162461bcd60e51b815260206004820152600360248201526245523560e81b6044820152606401610608565b600360009054906101000a90046001600160a01b03166001600160a01b0316635d97505b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611595573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115b99190612918565b6001600160a01b031663e0d90d2260026000858152602001908152602001600020600b016040518263ffffffff1660e01b81526004016115f99190613156565b600060405180830381865afa158015611616573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261163e9190810190612a13565b6000838152600260209081526040918290208351600b820180546001600160a01b0319166001600160a01b0390921691909117815591840151600c82015591830151600d8301556060830151600e8301556080830151600f83015560a0830151601083015560c0830151601183015560e08301519091601201906116c29082612b5c565b5061010082015160088201556101208201516009820155610140820151600a8201805460ff191660018360028111156116fd576116fd612214565b0217905550610160820151805161171e91600b840191602090910190612131565b506001915061172a9050565b60008381526002602081905260409091206015015460ff169081111561175257611752612214565b03611f1b576000828152600260205260408120549003611ed65760008281526002602052604081206003018054829190829061179057611790612c7b565b60009182526020808320909101546001600160a01b0316835282019290925260400190205460ff16801561180f57506000828152600260205260408120600301805482919060019081106117e6576117e6612c7b565b60009182526020808320909101546001600160a01b0316835282019290925260400190205460ff165b61182b5760405162461bcd60e51b815260040161060890612c91565b604080516002808252606082018352600092602083019080368337505050600084815260026020526040812060030180549293509161186c5761186c612c7b565b600091825260208220015482516001600160a01b0390911691839161189357611893612c7b565b6001600160a01b039092166020928302919091018201526000848152600290915260409020600301805460019081106118ce576118ce612c7b565b9060005260206000200160009054906101000a90046001600160a01b0316816001815181106118ff576118ff612c7b565b60200260200101906001600160a01b031690816001600160a01b0316815250508060008151811061193257611932612c7b565b60200260200101516001600160a01b031663095ea7b36002600086815260200190815260200160002060050160009054906101000a90046001600160a01b03168360008151811061198557611985612c7b565b60209081029190910101516040516370a0823160e01b81523060048201526001600160a01b03909116906370a0823190602401602060405180830381865afa1580156119d5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119f99190612c1c565b6040516001600160e01b031960e085901b1681526001600160a01b0390921660048301526024820152604401600060405180830381600087803b158015611a3f57600080fd5b505af1158015611a53573d6000803e3d6000fd5b505050506000611b0382600081518110611a6f57611a6f612c7b565b60209081029190910101516040516370a0823160e01b81523060048201526001600160a01b03909116906370a0823190602401602060405180830381865afa158015611abf573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ae39190612c1c565b83600081518110611af657611af6612c7b565b6020026020010151611258565b60008581526002602052604081206005015484519293506001600160a01b031691635c11d795918591611b3857611b38612c7b565b60209081029190910101516040516370a0823160e01b81523060048201526001600160a01b03909116906370a0823190602401602060405180830381865afa158015611b88573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611bac9190612c1c565b60008530611bbc426103e8612c4b565b6040518663ffffffff1660e01b8152600401611bdc959493929190613169565b600060405180830381600087803b158015611bf657600080fd5b505af1158015611c0a573d6000803e3d6000fd5b505050506000611cad83600181518110611c2657611c26612c7b565b60209081029190910101516040516370a0823160e01b81523060048201526001600160a01b03909116906370a0823190602401602060405180830381865afa158015611c76573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c9a9190612c1c565b84600181518110611af657611af6612c7b565b905081811115611cd657611cc18183612036565b600554611cce9190612c4b565b600555611cf0565b600554611cec90611ce78484612036565b612036565b6005555b6006819055825183906001908110611d0a57611d0a612c7b565b6020026020010151600460000160006101000a8154816001600160a01b0302191690836001600160a01b03160217905550600083600081518110611d5057611d50612c7b565b6020026020010151905060008051602061320183398151915284600081518110611d7c57611d7c612c7b565b60209081029190910101516040516370a0823160e01b81523060048201526001600160a01b038416906370a0823190602401602060405180830381865afa158015611dcb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611def9190612c1c565b30604051611dff93929190613133565b60405180910390a183600181518110611e1a57611e1a612c7b565b6020026020010151905060008051602061320183398151915284600181518110611e4657611e46612c7b565b60209081029190910101516040516370a0823160e01b81523060048201526001600160a01b038416906370a0823190602401602060405180830381865afa158015611e95573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611eb99190612c1c565b30604051611ec993929190613133565b60405180910390a1505050505b600082815260026020526040902054600103611f1b5760008281526002602052604090206006810154600890910154611f1b916001600160a01b03169060ff16611f6e565b6000828152600260205260409081902060150154905183917fbdb492b15201001c44f021370ca5ea73640ddcc4b4ee020fb9791241973cc37e91611f629160ff16906131da565b60405180910390a25050565b6001600160a01b0382166000908152602081905260409020805460ff1916821515908117909155600103612032576040516370a0823160e01b815230600482015282906000805160206132018339815191529082906001600160a01b038216906370a0823190602401602060405180830381865afa158015611ff4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120189190612c1c565b3060405161202893929190613133565b60405180910390a1505b5050565b6000828210612047575060006112e6565b61205182846131ed565b90506112e6565b6004546001600160a01b038281169116146120855760405162461bcd60e51b815260040161060890612c91565b6040516370a0823160e01b81523060048201526000906120fa906001600160a01b038416906370a0823190602401602060405180830381865afa1580156120d0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120f49190612c1c565b83611258565b6006549091508111156120325761211681600460020154612036565b60058054600090612128908490612c4b565b90915550505050565b828054828255906000526020600020908101928215612186579160200282015b8281111561218657825182546001600160a01b0319166001600160a01b03909116178255602090920191600190910190612151565b50612192929150612196565b5090565b5b808211156121925760008155600101612197565b6000602082840312156121bd57600080fd5b5035919050565b60005b838110156121df5781810151838201526020016121c7565b50506000910152565b600081518084526122008160208601602086016121c4565b601f01601f19169290920160200192915050565b634e487b7160e01b600052602160045260246000fd5b600381106112f557634e487b7160e01b600052602160045260246000fd5b6122518161222a565b9052565b600081518084526020808501945080840160005b8381101561228e5781516001600160a01b031687529582019590820190600101612269565b509495945050505050565b80516001600160a01b0316825260006101806020830151602085015260408301516040850152606083015160608501526080830151608085015260a083015160a085015260c083015160c085015260e08301518160e08601526122fe828601826121e8565b9150506101008084015181860152506101208084015181860152506101408084015161232c82870182612248565b505061016080840151858303828701526123468382612255565b9695505050505050565b60006101408c835260018060a01b03808d166020850152808c166040850152808b166060850152808a1660808501528860a085015287151560c085015286151560e08501528161010085015280865116828501525050602084015160406101608401526123c16101808401826121e8565b90508281036101208401526123d68185612299565b9d9c50505050505050505050505050565b634e487b7160e01b600052604160045260246000fd5b604051610180810167ffffffffffffffff81118282101715612421576124216123e7565b60405290565b604051601f8201601f1916810167ffffffffffffffff81118282101715612450576124506123e7565b604052919050565b6001600160a01b03811681146112f557600080fd5b803561247881612458565b919050565b600067ffffffffffffffff821115612497576124976123e7565b5060051b60200190565b600082601f8301126124b257600080fd5b813560206124c76124c28361247d565b612427565b82815260059290921b840181019181810190868411156124e657600080fd5b8286015b8481101561250a5780356124fd81612458565b83529183019183016124ea565b509695505050505050565b600082601f83011261252657600080fd5b813560206125366124c28361247d565b82815260059290921b8401810191818101908684111561255557600080fd5b8286015b8481101561250a5780358352918301918301612559565b80151581146112f557600080fd5b803561247881612570565b600067ffffffffffffffff8211156125a3576125a36123e7565b50601f01601f191660200190565b6000604082840312156125c357600080fd5b6040516040810167ffffffffffffffff82821081831117156125e7576125e76123e7565b81604052829350843591506125fb82612458565b908252602090848201358181111561261257600080fd5b85019050601f8101861361262557600080fd5b80356126336124c282612589565b818152878483850101111561264757600080fd5b818484018583013760008483830101528084860152505050505092915050565b60006020828403121561267957600080fd5b813567ffffffffffffffff8082111561269157600080fd5b9083019061018082860312156126a657600080fd5b6126ae6123fd565b823581526126be6020840161246d565b60208201526126cf6040840161246d565b60408201526060830135828111156126e657600080fd5b6126f2878286016124a1565b60608301525060808301358281111561270a57600080fd5b61271687828601612515565b60808301525061272860a0840161246d565b60a082015261273960c0840161246d565b60c082015260e083013560e082015261010061275681850161257e565b9082015261012061276884820161257e565b90820152610140838101358381111561278057600080fd5b61278c888287016125b1565b82840152505061016080840135838111156127a657600080fd5b6127b2888287016125b1565b918301919091525095945050505050565b6000602082840312156127d557600080fd5b8135610f3581612458565b600080604083850312156127f357600080fd5b82356127fe81612458565b9150602083013561280e81612458565b809150509250929050565b600381106112f557600080fd5b6000806040838503121561283957600080fd5b82359150602083013561280e81612819565b6000806040838503121561285e57600080fd5b82359150602083013561280e81612458565b60008060006060848603121561288557600080fd5b833561289081612458565b925060208401356128a081612458565b929592945050506040919091013590565b600181811c908216806128c557607f821691505b602082108103610f4657634e487b7160e01b600052602260045260246000fd5b805161247881612819565b60006020828403121561290257600080fd5b8151610f3581612819565b805161247881612458565b60006020828403121561292a57600080fd5b8151610f3581612458565b602080825282516001600160a01b03168282015282015160408083015260009061296260608401826121e8565b949350505050565b600082601f83011261297b57600080fd5b81516129896124c282612589565b81815284602083860101111561299e57600080fd5b6129628260208301602087016121c4565b600082601f8301126129c057600080fd5b815160206129d06124c28361247d565b82815260059290921b840181019181810190868411156129ef57600080fd5b8286015b8481101561250a578051612a0681612458565b83529183019183016129f3565b600060208284031215612a2557600080fd5b815167ffffffffffffffff80821115612a3d57600080fd5b908301906101808286031215612a5257600080fd5b612a5a6123fd565b612a638361290d565b81526020830151602082015260408301516040820152606083015160608201526080830151608082015260a083015160a082015260c083015160c082015260e083015182811115612ab357600080fd5b612abf8782860161296a565b60e08301525061010083810151908201526101208084015190820152610140612ae98185016128e5565b908201526101608381015183811115612b0157600080fd5b6127b2888287016129af565b601f821115612b5757600081815260208120601f850160051c81016020861015612b345750805b601f850160051c820191505b81811015612b5357828155600101612b40565b5050505b505050565b815167ffffffffffffffff811115612b7657612b766123e7565b612b8a81612b8484546128b1565b84612b0d565b602080601f831160018114612bbf5760008415612ba75750858301515b600019600386901b1c1916600185901b178555612b53565b600085815260208120601f198616915b82811015612bee57888601518255948401946001909101908401612bcf565b5085821015612c0c5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b600060208284031215612c2e57600080fd5b5051919050565b634e487b7160e01b600052601160045260246000fd5b808201808211156112e6576112e6612c35565b600060208284031215612c7057600080fd5b8151610f3581612570565b634e487b7160e01b600052603260045260246000fd5b60208082526003908201526245523360e81b604082015260600190565b6000815480845260208085019450836000528060002060005b8381101561228e5781546001600160a01b031687529582019560019182019101612cc7565b6000815480845260208085019450836000528060002060005b8381101561228e57815487529582019560019182019101612d05565b60008154612d2e816128b1565b808552602060018381168015612d4b5760018114612d6557612d93565b60ff1985168884015283151560051b880183019550612d93565b866000528260002060005b85811015612d8b5781548a8201860152908301908401612d70565b890184019650505b505050505092915050565b80546001600160a01b031682526040602083018190526000906112e390840160018401612d21565b6000610180612ded84612de085546001600160a01b031690565b6001600160a01b03169052565b60018301546020850152600283015460408501526003830154606085015260048301546080850152600583015460a0850152600683015460c08501528060e0850152612e3e81850160078501612d21565b905060088301546101008501526009830154610120850152612e64600a84015460ff1690565b612e72610140860182612248565b5083810361016085015261296281600b8501612cae565b60208152815460208201526000612eaa60018401546001600160a01b031690565b6001600160a01b039081166040840152600284015416606083015261018060808301819052612ee06101a0840160038601612cae565b601f19808583030160a0860152612efa8260048801612cec565b9150612f1060058701546001600160a01b031690565b6001600160a01b0390811660c087015260068701541660e0860152600786015461010086015260088087015460ff8082161515610120890152911c1615156101408601528482038101610160860152612f6c8260098801612d9e565b915080858303018386015250612f8581600b8701612dc6565b95945050505050565b600060018201612fa057612fa0612c35565b5060010190565b6001600160a01b0384168152606060208201819052600090612fcb90830185612dc6565b9050612fd68361222a565b826040830152949350505050565b600060208284031215612ff657600080fd5b815160ff81168114610f3557600080fd5b600181815b8085111561304257816000190482111561302857613028612c35565b8085161561303557918102915b93841c939080029061300c565b509250929050565b600082613059575060016112e6565b81613066575060006112e6565b816001811461307c5760028114613086576130a2565b60019150506112e6565b60ff84111561309757613097612c35565b50506001821b6112e6565b5060208310610133831016604e8410600b84101617156130c5575081810a6112e6565b6130cf8383613007565b80600019048211156130e3576130e3612c35565b029392505050565b60006112e360ff84168361304a565b80820281158282048414176112e6576112e6612c35565b60008261312e57634e487b7160e01b600052601260045260246000fd5b500490565b6001600160a01b0393841681526020810192909252909116604082015260600190565b6020815260006112e36020830184612dc6565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b818110156131b95784516001600160a01b031683529383019391830191600101613194565b50506001600160a01b03969096166060850152505050608001529392505050565b602081016131e78361222a565b91905290565b818103818111156112e6576112e6612c3556fefbd50798349c0ef233dafbe6eea9f929785731d11f54b610aea96532af84a7fea26469706673582212201853bfb169f4236dafadfeaf57087d5a86606315ab0f032ee1eb7a9c0af1a86f64736f6c63430008110033
Deployed Bytecode
0x608060405234801561001057600080fd5b50600436106100f55760003560e01c806391ac094c11610097578063a775888311610066578063a775888314610247578063d9caed1214610262578063daf9c21014610275578063ffb2c4791461029857600080fd5b806391ac094c146101ce578063943e82161461020e578063a27d870014610221578063a58411941461023457600080fd5b806324d6c8d5116100d357806324d6c8d514610165578063485cc9551461019157806351586847146101a45780635977e0f2146101c557600080fd5b8063013cf08b146100fa578063132cd0621461012c578063158ef93e14610141575b600080fd5b61010d6101083660046121ab565b6102ab565b6040516101239a99989796959493929190612350565b60405180910390f35b61013f61013a366004612667565b610556565b005b60035461015590600160a01b900460ff1681565b6040519015158152602001610123565b6101556101733660046127c3565b6001600160a01b031660009081526020819052604090205460ff1690565b61013f61019f3660046127e0565b610df7565b6101b76101b23660046127c3565b610e94565b604051908152602001610123565b6101b760015481565b6004546005546006546101e9926001600160a01b0316919083565b604080516001600160a01b039094168452602084019290925290820152606001610123565b61013f61021c366004612826565b610f4c565b6101b761022f36600461284b565b611258565b61013f6102423660046127c3565b6112ec565b6004546040516001600160a01b039091168152602001610123565b61013f610270366004612870565b6112f8565b6101556102833660046127c3565b60006020819052908152604090205460ff1681565b61013f6102a63660046121ab565b611470565b600260208181526000928352604092839020805460018201549382015460058301546006840154600785015460088601548951808b01909a526009870180546001600160a01b039081168c52600a89018054989c9b82169b9782169a968216999590911697939660ff80851697610100909504169594909384019190610330906128b1565b80601f016020809104026020016040519081016040528092919081815260200182805461035c906128b1565b80156103a95780601f1061037e576101008083540402835291602001916103a9565b820191906000526020600020905b81548152906001019060200180831161038c57829003601f168201915b5050509190925250506040805161018081018252600b850180546001600160a01b03168252600c8601546020830152600d86015492820192909252600e8501546060820152600f8501546080820152601085015460a0820152601185015460c082015260128501805494959491935060e0840191610426906128b1565b80601f0160208091040260200160405190810160405280929190818152602001828054610452906128b1565b801561049f5780601f106104745761010080835404028352916020019161049f565b820191906000526020600020905b81548152906001019060200180831161048257829003601f168201915b50505091835250506008820154602082015260098201546040820152600a82015460609091019060ff1660028111156104da576104da612214565b60028111156104eb576104eb612214565b8152602001600b820180548060200260200160405190810160405280929190818152602001828054801561054857602002820191906000526020600020905b81546001600160a01b0316815260019091019060200180831161052a575b50505050508152505090508a565b60035460405163dde8535f60e01b81523360048201526000916001600160a01b03169063dde8535f90602401602060405180830381865afa15801561059f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105c391906128f0565b905060028160028111156105d9576105d9612214565b146106115760405162461bcd60e51b815260206004820152600360248201526222a91b60e91b60448201526064015b60405180910390fd5b8151600110156106495760405162461bcd60e51b815260206004820152600360248201526245523160e81b6044820152606401610608565b60008261016001516020015151116106895760405162461bcd60e51b815260206004820152600360248201526204552360ec1b6044820152606401610608565b8151600154600090815260026020908152604091829020929092556101608401513390526003548151635d97505b60e01b815291516001600160a01b0390911692635d97505b92600480820193918290030181865afa1580156106f0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107149190612918565b6001600160a01b031663f11202348361016001516040518263ffffffff1660e01b81526004016107449190612935565b600060405180830381865afa158015610761573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526107899190810190612a13565b6001546000908152600260209081526040918290208351600b820180546001600160a01b0319166001600160a01b0390921691909117815591840151600c82015591830151600d8301556060830151600e8301556080830151600f83015560a0830151601083015560c0830151601183015560e08301519091601201906108109082612b5c565b5061010082015160088201556101208201516009820155610140820151600a8201805460ff1916600183600281111561084b5761084b612214565b0217905550610160820151805161086c91600b840191602090910190612131565b50506003546040805163e3d27f2960e01b815290516001600160a01b03909216925063e3d27f299160048083019260209291908290030181865afa1580156108b8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108dc9190612c1c565b600154600090815260026020908152604091829020600f01929092556003548151634f6c488b60e01b815291516001600160a01b0390911692634f6c488b92600481810193918290030181865afa15801561093b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061095f9190612c1c565b6109699042612c4b565b600180546000908152600260208181526040808420600d01959095558681015184548452858420850180546001600160a01b03199081166001600160a01b0393841617909155888701518654865287862090940180549091169382169390931790925560e0870151935483529184902060070192909255600354835163f80e1c8960e01b8152935192169263f80e1c8992600480830193928290030181865afa158015610a1a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a3e9190612c1c565b60015460009081526002602090815260409182902060110192909255600354815163f80e1c8960e01b815291516001600160a01b039091169263f80e1c8992600480820193918290030181865afa158015610a9d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ac19190612c1c565b60015460009081526002602052604081206010019190915582519003610d3357600360009054906101000a90046001600160a01b03166001600160a01b031663289c25f46040518163ffffffff1660e01b8152600401602060405180830381865afa158015610b34573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b589190612c5e565b15610b8b5760405162461bcd60e51b815260206004820152600360248201526208aa4760eb1b6044820152606401610608565b816060015151600214610bc65760405162461bcd60e51b815260206004820152600360248201526222a91960e91b6044820152606401610608565b600454606083015180516001600160a01b0390921691600090610beb57610beb612c7b565b60200260200101516001600160a01b031614610c2f5760405162461bcd60e51b815260206004820152600360248201526245523960e81b6044820152606401610608565b6000808360600151600081518110610c4957610c49612c7b565b6020908102919091018101516001600160a01b031682528101919091526040016000205460ff168015610cb957506000808360600151600181518110610c9157610c91612c7b565b6020908102919091018101516001600160a01b031682528101919091526040016000205460ff165b610cd55760405162461bcd60e51b815260040161060890612c91565b60a082015160018054600090815260026020908152604080832060050180546001600160a01b0319166001600160a01b03909616959095179094556060860151925482529290208151610d319360039092019290910190612131565b505b8151600103610d965760c08201516001805460009081526002602052604080822060060180546001600160a01b0319166001600160a01b03909516949094179093556101008501519154815291909120600801805460ff19169115159190911790555b6001546000818152600260205260409081902090517fc71a1e2cb91ef76d3fec5535207e4457a4bd2b772f99618204772d34df8ebb9891610dd691612e89565b60405180910390a260018054906000610dee83612f8e565b91905055505050565b600354600160a01b900460ff1615610e375760405162461bcd60e51b815260206004820152600360248201526245523760e81b6044820152606401610608565b600380546001600160a01b0319166001600160a01b038416179055610e5d816001611f6e565b600480546001600160a01b039092166001600160a01b0319909216919091179055506003805460ff60a01b1916600160a01b179055565b6040516370a0823160e01b81523060048201526000908190610f0c906001600160a01b038516906370a08231906024015b602060405180830381865afa158015610ee2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f069190612c1c565b84611258565b600654909150811115610f3c57610f2881600460020154612036565b600554610f359190612c4b565b9392505050565b5050600554919050565b50919050565b60035460405163dde8535f60e01b81523360048201526000916001600160a01b03169063dde8535f90602401602060405180830381865afa158015610f95573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fb991906128f0565b90506002816002811115610fcf57610fcf612214565b146110025760405162461bcd60e51b815260206004820152600360248201526222a91b60e91b6044820152606401610608565b600360009054906101000a90046001600160a01b03166001600160a01b0316635d97505b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611055573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110799190612918565b600084815260026020526040908190209051630836aaf960e21b81526001600160a01b0392909216916320daabe4916110bc913391600b01908790600401612fa7565b600060405180830381865afa1580156110d9573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526111019190810190612a13565b6000848152600260209081526040918290208351600b820180546001600160a01b0319166001600160a01b0390921691909117815591840151600c82015591830151600d8301556060830151600e8301556080830151600f83015560a0830151601083015560c0830151601183015560e08301519091601201906111859082612b5c565b5061010082015160088201556101208201516009820155610140820151600a8201805460ff191660018360028111156111c0576111c0612214565b021790555061016082015180516111e191600b840191602090910190612131565b505050600083815260026020818152604083206016018054600181018255908452922090910180546001600160a01b03191633179055829081111561122857611228612214565b60405184907fc92326dacbba7a4c0f0b5ca0bab775311245300cea304ed0655a887fb568662890600090a3505050565b6000816001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015611298573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112bc9190612fe4565b6112c790600a6130eb565b6112d9670de0b6b3a7640000856130fa565b6112e39190613111565b90505b92915050565b6112f581612058565b50565b6003546001600160a01b031633146113385760405162461bcd60e51b815260206004820152600360248201526211548d60ea1b6044820152606401610608565b61134183612058565b60405163a9059cbb60e01b81526001600160a01b0383811660048301526024820183905284169063a9059cbb90604401600060405180830381600087803b15801561138b57600080fd5b505af115801561139f573d6000803e3d6000fd5b50506040516370a0823160e01b81523060048201526113d392506001600160a01b03861691506370a0823190602401610ec5565b6006556040516370a0823160e01b815230600482015283906000805160206132018339815191529082906001600160a01b038216906370a0823190602401602060405180830381865afa15801561142e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114529190612c1c565b3060405161146293929190613133565b60405180910390a150505050565b60035460405163dde8535f60e01b81523360048201526000916001600160a01b03169063dde8535f90602401602060405180830381865afa1580156114b9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114dd91906128f0565b905060018160028111156114f3576114f3612214565b14806115105750600281600281111561150e5761150e612214565b145b6115425760405162461bcd60e51b815260206004820152600360248201526245523560e81b6044820152606401610608565b600360009054906101000a90046001600160a01b03166001600160a01b0316635d97505b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611595573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115b99190612918565b6001600160a01b031663e0d90d2260026000858152602001908152602001600020600b016040518263ffffffff1660e01b81526004016115f99190613156565b600060405180830381865afa158015611616573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261163e9190810190612a13565b6000838152600260209081526040918290208351600b820180546001600160a01b0319166001600160a01b0390921691909117815591840151600c82015591830151600d8301556060830151600e8301556080830151600f83015560a0830151601083015560c0830151601183015560e08301519091601201906116c29082612b5c565b5061010082015160088201556101208201516009820155610140820151600a8201805460ff191660018360028111156116fd576116fd612214565b0217905550610160820151805161171e91600b840191602090910190612131565b506001915061172a9050565b60008381526002602081905260409091206015015460ff169081111561175257611752612214565b03611f1b576000828152600260205260408120549003611ed65760008281526002602052604081206003018054829190829061179057611790612c7b565b60009182526020808320909101546001600160a01b0316835282019290925260400190205460ff16801561180f57506000828152600260205260408120600301805482919060019081106117e6576117e6612c7b565b60009182526020808320909101546001600160a01b0316835282019290925260400190205460ff165b61182b5760405162461bcd60e51b815260040161060890612c91565b604080516002808252606082018352600092602083019080368337505050600084815260026020526040812060030180549293509161186c5761186c612c7b565b600091825260208220015482516001600160a01b0390911691839161189357611893612c7b565b6001600160a01b039092166020928302919091018201526000848152600290915260409020600301805460019081106118ce576118ce612c7b565b9060005260206000200160009054906101000a90046001600160a01b0316816001815181106118ff576118ff612c7b565b60200260200101906001600160a01b031690816001600160a01b0316815250508060008151811061193257611932612c7b565b60200260200101516001600160a01b031663095ea7b36002600086815260200190815260200160002060050160009054906101000a90046001600160a01b03168360008151811061198557611985612c7b565b60209081029190910101516040516370a0823160e01b81523060048201526001600160a01b03909116906370a0823190602401602060405180830381865afa1580156119d5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119f99190612c1c565b6040516001600160e01b031960e085901b1681526001600160a01b0390921660048301526024820152604401600060405180830381600087803b158015611a3f57600080fd5b505af1158015611a53573d6000803e3d6000fd5b505050506000611b0382600081518110611a6f57611a6f612c7b565b60209081029190910101516040516370a0823160e01b81523060048201526001600160a01b03909116906370a0823190602401602060405180830381865afa158015611abf573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ae39190612c1c565b83600081518110611af657611af6612c7b565b6020026020010151611258565b60008581526002602052604081206005015484519293506001600160a01b031691635c11d795918591611b3857611b38612c7b565b60209081029190910101516040516370a0823160e01b81523060048201526001600160a01b03909116906370a0823190602401602060405180830381865afa158015611b88573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611bac9190612c1c565b60008530611bbc426103e8612c4b565b6040518663ffffffff1660e01b8152600401611bdc959493929190613169565b600060405180830381600087803b158015611bf657600080fd5b505af1158015611c0a573d6000803e3d6000fd5b505050506000611cad83600181518110611c2657611c26612c7b565b60209081029190910101516040516370a0823160e01b81523060048201526001600160a01b03909116906370a0823190602401602060405180830381865afa158015611c76573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c9a9190612c1c565b84600181518110611af657611af6612c7b565b905081811115611cd657611cc18183612036565b600554611cce9190612c4b565b600555611cf0565b600554611cec90611ce78484612036565b612036565b6005555b6006819055825183906001908110611d0a57611d0a612c7b565b6020026020010151600460000160006101000a8154816001600160a01b0302191690836001600160a01b03160217905550600083600081518110611d5057611d50612c7b565b6020026020010151905060008051602061320183398151915284600081518110611d7c57611d7c612c7b565b60209081029190910101516040516370a0823160e01b81523060048201526001600160a01b038416906370a0823190602401602060405180830381865afa158015611dcb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611def9190612c1c565b30604051611dff93929190613133565b60405180910390a183600181518110611e1a57611e1a612c7b565b6020026020010151905060008051602061320183398151915284600181518110611e4657611e46612c7b565b60209081029190910101516040516370a0823160e01b81523060048201526001600160a01b038416906370a0823190602401602060405180830381865afa158015611e95573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611eb99190612c1c565b30604051611ec993929190613133565b60405180910390a1505050505b600082815260026020526040902054600103611f1b5760008281526002602052604090206006810154600890910154611f1b916001600160a01b03169060ff16611f6e565b6000828152600260205260409081902060150154905183917fbdb492b15201001c44f021370ca5ea73640ddcc4b4ee020fb9791241973cc37e91611f629160ff16906131da565b60405180910390a25050565b6001600160a01b0382166000908152602081905260409020805460ff1916821515908117909155600103612032576040516370a0823160e01b815230600482015282906000805160206132018339815191529082906001600160a01b038216906370a0823190602401602060405180830381865afa158015611ff4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120189190612c1c565b3060405161202893929190613133565b60405180910390a1505b5050565b6000828210612047575060006112e6565b61205182846131ed565b90506112e6565b6004546001600160a01b038281169116146120855760405162461bcd60e51b815260040161060890612c91565b6040516370a0823160e01b81523060048201526000906120fa906001600160a01b038416906370a0823190602401602060405180830381865afa1580156120d0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120f49190612c1c565b83611258565b6006549091508111156120325761211681600460020154612036565b60058054600090612128908490612c4b565b90915550505050565b828054828255906000526020600020908101928215612186579160200282015b8281111561218657825182546001600160a01b0319166001600160a01b03909116178255602090920191600190910190612151565b50612192929150612196565b5090565b5b808211156121925760008155600101612197565b6000602082840312156121bd57600080fd5b5035919050565b60005b838110156121df5781810151838201526020016121c7565b50506000910152565b600081518084526122008160208601602086016121c4565b601f01601f19169290920160200192915050565b634e487b7160e01b600052602160045260246000fd5b600381106112f557634e487b7160e01b600052602160045260246000fd5b6122518161222a565b9052565b600081518084526020808501945080840160005b8381101561228e5781516001600160a01b031687529582019590820190600101612269565b509495945050505050565b80516001600160a01b0316825260006101806020830151602085015260408301516040850152606083015160608501526080830151608085015260a083015160a085015260c083015160c085015260e08301518160e08601526122fe828601826121e8565b9150506101008084015181860152506101208084015181860152506101408084015161232c82870182612248565b505061016080840151858303828701526123468382612255565b9695505050505050565b60006101408c835260018060a01b03808d166020850152808c166040850152808b166060850152808a1660808501528860a085015287151560c085015286151560e08501528161010085015280865116828501525050602084015160406101608401526123c16101808401826121e8565b90508281036101208401526123d68185612299565b9d9c50505050505050505050505050565b634e487b7160e01b600052604160045260246000fd5b604051610180810167ffffffffffffffff81118282101715612421576124216123e7565b60405290565b604051601f8201601f1916810167ffffffffffffffff81118282101715612450576124506123e7565b604052919050565b6001600160a01b03811681146112f557600080fd5b803561247881612458565b919050565b600067ffffffffffffffff821115612497576124976123e7565b5060051b60200190565b600082601f8301126124b257600080fd5b813560206124c76124c28361247d565b612427565b82815260059290921b840181019181810190868411156124e657600080fd5b8286015b8481101561250a5780356124fd81612458565b83529183019183016124ea565b509695505050505050565b600082601f83011261252657600080fd5b813560206125366124c28361247d565b82815260059290921b8401810191818101908684111561255557600080fd5b8286015b8481101561250a5780358352918301918301612559565b80151581146112f557600080fd5b803561247881612570565b600067ffffffffffffffff8211156125a3576125a36123e7565b50601f01601f191660200190565b6000604082840312156125c357600080fd5b6040516040810167ffffffffffffffff82821081831117156125e7576125e76123e7565b81604052829350843591506125fb82612458565b908252602090848201358181111561261257600080fd5b85019050601f8101861361262557600080fd5b80356126336124c282612589565b818152878483850101111561264757600080fd5b818484018583013760008483830101528084860152505050505092915050565b60006020828403121561267957600080fd5b813567ffffffffffffffff8082111561269157600080fd5b9083019061018082860312156126a657600080fd5b6126ae6123fd565b823581526126be6020840161246d565b60208201526126cf6040840161246d565b60408201526060830135828111156126e657600080fd5b6126f2878286016124a1565b60608301525060808301358281111561270a57600080fd5b61271687828601612515565b60808301525061272860a0840161246d565b60a082015261273960c0840161246d565b60c082015260e083013560e082015261010061275681850161257e565b9082015261012061276884820161257e565b90820152610140838101358381111561278057600080fd5b61278c888287016125b1565b82840152505061016080840135838111156127a657600080fd5b6127b2888287016125b1565b918301919091525095945050505050565b6000602082840312156127d557600080fd5b8135610f3581612458565b600080604083850312156127f357600080fd5b82356127fe81612458565b9150602083013561280e81612458565b809150509250929050565b600381106112f557600080fd5b6000806040838503121561283957600080fd5b82359150602083013561280e81612819565b6000806040838503121561285e57600080fd5b82359150602083013561280e81612458565b60008060006060848603121561288557600080fd5b833561289081612458565b925060208401356128a081612458565b929592945050506040919091013590565b600181811c908216806128c557607f821691505b602082108103610f4657634e487b7160e01b600052602260045260246000fd5b805161247881612819565b60006020828403121561290257600080fd5b8151610f3581612819565b805161247881612458565b60006020828403121561292a57600080fd5b8151610f3581612458565b602080825282516001600160a01b03168282015282015160408083015260009061296260608401826121e8565b949350505050565b600082601f83011261297b57600080fd5b81516129896124c282612589565b81815284602083860101111561299e57600080fd5b6129628260208301602087016121c4565b600082601f8301126129c057600080fd5b815160206129d06124c28361247d565b82815260059290921b840181019181810190868411156129ef57600080fd5b8286015b8481101561250a578051612a0681612458565b83529183019183016129f3565b600060208284031215612a2557600080fd5b815167ffffffffffffffff80821115612a3d57600080fd5b908301906101808286031215612a5257600080fd5b612a5a6123fd565b612a638361290d565b81526020830151602082015260408301516040820152606083015160608201526080830151608082015260a083015160a082015260c083015160c082015260e083015182811115612ab357600080fd5b612abf8782860161296a565b60e08301525061010083810151908201526101208084015190820152610140612ae98185016128e5565b908201526101608381015183811115612b0157600080fd5b6127b2888287016129af565b601f821115612b5757600081815260208120601f850160051c81016020861015612b345750805b601f850160051c820191505b81811015612b5357828155600101612b40565b5050505b505050565b815167ffffffffffffffff811115612b7657612b766123e7565b612b8a81612b8484546128b1565b84612b0d565b602080601f831160018114612bbf5760008415612ba75750858301515b600019600386901b1c1916600185901b178555612b53565b600085815260208120601f198616915b82811015612bee57888601518255948401946001909101908401612bcf565b5085821015612c0c5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b600060208284031215612c2e57600080fd5b5051919050565b634e487b7160e01b600052601160045260246000fd5b808201808211156112e6576112e6612c35565b600060208284031215612c7057600080fd5b8151610f3581612570565b634e487b7160e01b600052603260045260246000fd5b60208082526003908201526245523360e81b604082015260600190565b6000815480845260208085019450836000528060002060005b8381101561228e5781546001600160a01b031687529582019560019182019101612cc7565b6000815480845260208085019450836000528060002060005b8381101561228e57815487529582019560019182019101612d05565b60008154612d2e816128b1565b808552602060018381168015612d4b5760018114612d6557612d93565b60ff1985168884015283151560051b880183019550612d93565b866000528260002060005b85811015612d8b5781548a8201860152908301908401612d70565b890184019650505b505050505092915050565b80546001600160a01b031682526040602083018190526000906112e390840160018401612d21565b6000610180612ded84612de085546001600160a01b031690565b6001600160a01b03169052565b60018301546020850152600283015460408501526003830154606085015260048301546080850152600583015460a0850152600683015460c08501528060e0850152612e3e81850160078501612d21565b905060088301546101008501526009830154610120850152612e64600a84015460ff1690565b612e72610140860182612248565b5083810361016085015261296281600b8501612cae565b60208152815460208201526000612eaa60018401546001600160a01b031690565b6001600160a01b039081166040840152600284015416606083015261018060808301819052612ee06101a0840160038601612cae565b601f19808583030160a0860152612efa8260048801612cec565b9150612f1060058701546001600160a01b031690565b6001600160a01b0390811660c087015260068701541660e0860152600786015461010086015260088087015460ff8082161515610120890152911c1615156101408601528482038101610160860152612f6c8260098801612d9e565b915080858303018386015250612f8581600b8701612dc6565b95945050505050565b600060018201612fa057612fa0612c35565b5060010190565b6001600160a01b0384168152606060208201819052600090612fcb90830185612dc6565b9050612fd68361222a565b826040830152949350505050565b600060208284031215612ff657600080fd5b815160ff81168114610f3557600080fd5b600181815b8085111561304257816000190482111561302857613028612c35565b8085161561303557918102915b93841c939080029061300c565b509250929050565b600082613059575060016112e6565b81613066575060006112e6565b816001811461307c5760028114613086576130a2565b60019150506112e6565b60ff84111561309757613097612c35565b50506001821b6112e6565b5060208310610133831016604e8410600b84101617156130c5575081810a6112e6565b6130cf8383613007565b80600019048211156130e3576130e3612c35565b029392505050565b60006112e360ff84168361304a565b80820281158282048414176112e6576112e6612c35565b60008261312e57634e487b7160e01b600052601260045260246000fd5b500490565b6001600160a01b0393841681526020810192909252909116604082015260600190565b6020815260006112e36020830184612dc6565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b818110156131b95784516001600160a01b031683529383019391830191600101613194565b50506001600160a01b03969096166060850152505050608001529392505050565b602081016131e78361222a565b91905290565b818103818111156112e6576112e6612c3556fefbd50798349c0ef233dafbe6eea9f929785731d11f54b610aea96532af84a7fea26469706673582212201853bfb169f4236dafadfeaf57087d5a86606315ab0f032ee1eb7a9c0af1a86f64736f6c63430008110033
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 31 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|
Loading...
Loading
A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.