Overview
ETH Balance
0 ETH
Eth Value
$0.00More Info
Private Name Tags
ContractCreator
TokenTracker
View more zero value Internal Transactions in Advanced View mode
Advanced mode:
Loading...
Loading
Contract Name:
ConnectAaveV2
Compiler Version
v0.6.0+commit.26b70077
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2020-12-16 */ pragma solidity ^0.6.0; pragma experimental ABIEncoderV2; interface TokenInterface { function approve(address, uint256) external; function transfer(address, uint) external; function transferFrom(address, address, uint) external; function deposit() external payable; function withdraw(uint) external; function balanceOf(address) external view returns (uint); function decimals() external view returns (uint); } interface MemoryInterface { function getUint(uint id) external returns (uint num); function setUint(uint id, uint val) external; } interface EventInterface { function emitEvent(uint connectorType, uint connectorID, bytes32 eventCode, bytes calldata eventData) external; } contract Stores { /** * @dev Return ethereum address */ function getEthAddr() internal pure returns (address) { return 0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE; // ETH Address } /** * @dev Return memory variable address */ function getMemoryAddr() internal pure returns (address) { return 0x8a5419CfC711B2343c17a6ABf4B2bAFaBb06957F; // InstaMemory Address } /** * @dev Return InstaEvent Address. */ function getEventAddr() internal pure returns (address) { return 0x2af7ea6Cb911035f3eb1ED895Cb6692C39ecbA97; // InstaEvent Address } /** * @dev Get Uint value from InstaMemory Contract. */ function getUint(uint getId, uint val) internal returns (uint returnVal) { returnVal = getId == 0 ? val : MemoryInterface(getMemoryAddr()).getUint(getId); } /** * @dev Set Uint value in InstaMemory Contract. */ function setUint(uint setId, uint val) virtual internal { if (setId != 0) MemoryInterface(getMemoryAddr()).setUint(setId, val); } /** * @dev Connector Details */ function connectorID() public pure returns(uint model, uint id) { (model, id) = (1, 66); } } /** * @dev Wrappers over Solidity's arithmetic operations with added overflow * checks. * * Arithmetic operations in Solidity wrap on overflow. This can easily result * in bugs, because programmers usually assume that an overflow raises an * error, which is the standard behavior in high level programming languages. * `SafeMath` restores this intuition by reverting the transaction when an * operation overflows. * * Using this library instead of the unchecked operations eliminates an entire * class of bugs, so it's recommended to use it always. */ library SafeMath { /** * @dev Returns the addition of two unsigned integers, reverting on * overflow. * * Counterpart to Solidity's `+` operator. * * Requirements: * * - Addition cannot overflow. */ function add(uint256 a, uint256 b) internal pure returns (uint256) { uint256 c = a + b; require(c >= a, "SafeMath: addition overflow"); return c; } /** * @dev Returns the subtraction of two unsigned integers, reverting on * overflow (when the result is negative). * * Counterpart to Solidity's `-` operator. * * Requirements: * * - Subtraction cannot overflow. */ function sub(uint256 a, uint256 b) internal pure returns (uint256) { return sub(a, b, "SafeMath: subtraction overflow"); } /** * @dev Returns the subtraction of two unsigned integers, reverting with custom message on * overflow (when the result is negative). * * Counterpart to Solidity's `-` operator. * * Requirements: * * - Subtraction cannot overflow. */ function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { require(b <= a, errorMessage); uint256 c = a - b; return c; } /** * @dev Returns the multiplication of two unsigned integers, reverting on * overflow. * * Counterpart to Solidity's `*` operator. * * Requirements: * * - Multiplication cannot overflow. */ function mul(uint256 a, uint256 b) internal pure returns (uint256) { // Gas optimization: this is cheaper than requiring 'a' not being zero, but the // benefit is lost if 'b' is also tested. // See: https://github.com/OpenZeppelin/openzeppelin-contracts/pull/522 if (a == 0) { return 0; } uint256 c = a * b; require(c / a == b, "SafeMath: multiplication overflow"); return c; } /** * @dev Returns the integer division of two unsigned integers. Reverts on * division by zero. The result is rounded towards zero. * * Counterpart to Solidity's `/` operator. Note: this function uses a * `revert` opcode (which leaves remaining gas untouched) while Solidity * uses an invalid opcode to revert (consuming all remaining gas). * * Requirements: * * - The divisor cannot be zero. */ function div(uint256 a, uint256 b) internal pure returns (uint256) { return div(a, b, "SafeMath: division by zero"); } /** * @dev Returns the integer division of two unsigned integers. Reverts with custom message on * division by zero. The result is rounded towards zero. * * Counterpart to Solidity's `/` operator. Note: this function uses a * `revert` opcode (which leaves remaining gas untouched) while Solidity * uses an invalid opcode to revert (consuming all remaining gas). * * Requirements: * * - The divisor cannot be zero. */ function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { require(b > 0, errorMessage); uint256 c = a / b; // assert(a == b * c + a % b); // There is no case in which this doesn't hold return c; } /** * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo), * Reverts when dividing by zero. * * Counterpart to Solidity's `%` operator. This function uses a `revert` * opcode (which leaves remaining gas untouched) while Solidity uses an * invalid opcode to revert (consuming all remaining gas). * * Requirements: * * - The divisor cannot be zero. */ function mod(uint256 a, uint256 b) internal pure returns (uint256) { return mod(a, b, "SafeMath: modulo by zero"); } /** * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo), * Reverts with custom message when dividing by zero. * * Counterpart to Solidity's `%` operator. This function uses a `revert` * opcode (which leaves remaining gas untouched) while Solidity uses an * invalid opcode to revert (consuming all remaining gas). * * Requirements: * * - The divisor cannot be zero. */ function mod(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { require(b != 0, errorMessage); return a % b; } } contract DSMath { uint constant WAD = 10 ** 18; uint constant RAY = 10 ** 27; function add(uint x, uint y) internal pure returns (uint z) { z = SafeMath.add(x, y); } function sub(uint x, uint y) internal virtual pure returns (uint z) { z = SafeMath.sub(x, y); } function mul(uint x, uint y) internal pure returns (uint z) { z = SafeMath.mul(x, y); } function div(uint x, uint y) internal pure returns (uint z) { z = SafeMath.div(x, y); } function wmul(uint x, uint y) internal pure returns (uint z) { z = SafeMath.add(SafeMath.mul(x, y), WAD / 2) / WAD; } function wdiv(uint x, uint y) internal pure returns (uint z) { z = SafeMath.add(SafeMath.mul(x, WAD), y / 2) / y; } function rdiv(uint x, uint y) internal pure returns (uint z) { z = SafeMath.add(SafeMath.mul(x, RAY), y / 2) / y; } function rmul(uint x, uint y) internal pure returns (uint z) { z = SafeMath.add(SafeMath.mul(x, y), RAY / 2) / RAY; } } interface AaveInterface { function deposit(address _asset, uint256 _amount, address _onBehalfOf, uint16 _referralCode) external; function withdraw(address _asset, uint256 _amount, address _to) external; function borrow( address _asset, uint256 _amount, uint256 _interestRateMode, uint16 _referralCode, address _onBehalfOf ) external; function repay(address _asset, uint256 _amount, uint256 _rateMode, address _onBehalfOf) external; function setUserUseReserveAsCollateral(address _asset, bool _useAsCollateral) external; } interface AaveLendingPoolProviderInterface { function getLendingPool() external view returns (address); } // Aave Protocol Data Provider interface AaveDataProviderInterface { function getReserveTokensAddresses(address _asset) external view returns ( address aTokenAddress, address stableDebtTokenAddress, address variableDebtTokenAddress ); function getUserReserveData(address _asset, address _user) external view returns ( uint256 currentATokenBalance, uint256 currentStableDebt, uint256 currentVariableDebt, uint256 principalStableDebt, uint256 scaledVariableDebt, uint256 stableBorrowRate, uint256 liquidityRate, uint40 stableRateLastUpdated, bool usageAsCollateralEnabled ); } interface AaveAddressProviderRegistryInterface { function getAddressesProvidersList() external view returns (address[] memory); } interface ATokenInterface { function balanceOf(address _user) external view returns(uint256); } contract AaveHelpers is DSMath, Stores { /** * @dev get Aave Lending Pool Provider */ function getAaveProvider() internal pure returns (AaveLendingPoolProviderInterface) { return AaveLendingPoolProviderInterface(0xB53C1a33016B2DC2fF3653530bfF1848a515c8c5); //mainnet // return AaveLendingPoolProviderInterface(0x652B2937Efd0B5beA1c8d54293FC1289672AFC6b); //kovan } /** * @dev get Aave Protocol Data Provider */ function getAaveDataProvider() internal pure returns (AaveDataProviderInterface) { return AaveDataProviderInterface(0x057835Ad21a177dbdd3090bB1CAE03EaCF78Fc6d); //mainnet // return AaveDataProviderInterface(0x744C1aaA95232EeF8A9994C4E0b3a89659D9AB79); //kovan } /** * @dev Return Weth address */ function getWethAddr() internal pure returns (address) { return 0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2; // Mainnet WETH Address // return 0xd0A1E359811322d97991E03f863a0C30C2cF029C; // Kovan WETH Address } /** * @dev get Referral Code */ function getReferralCode() internal pure returns (uint16) { return 3228; } function getIsColl(AaveDataProviderInterface aaveData, address token, address user) internal view returns (bool isCol) { (, , , , , , , , isCol) = aaveData.getUserReserveData(token, user); } function convertEthToWeth(bool isEth, TokenInterface token, uint amount) internal { if(isEth) token.deposit.value(amount)(); } function convertWethToEth(bool isEth, TokenInterface token, uint amount) internal { if(isEth) { token.approve(address(token), amount); token.withdraw(amount); } } function getPaybackBalance(AaveDataProviderInterface aaveData, address token, uint rateMode) internal view returns (uint) { (, uint stableDebt, uint variableDebt, , , , , , ) = aaveData.getUserReserveData(token, address(this)); return rateMode == 1 ? stableDebt : variableDebt; } function getCollateralBalance(AaveDataProviderInterface aaveData, address token) internal view returns (uint bal) { (bal, , , , , , , ,) = aaveData.getUserReserveData(token, address(this)); } } contract BasicResolver is AaveHelpers { event LogDeposit(address indexed token, uint256 tokenAmt, uint256 getId, uint256 setId); event LogWithdraw(address indexed token, uint256 tokenAmt, uint256 getId, uint256 setId); event LogBorrow(address indexed token, uint256 tokenAmt, uint256 indexed rateMode, uint256 getId, uint256 setId); event LogPayback(address indexed token, uint256 tokenAmt, uint256 indexed rateMode, uint256 getId, uint256 setId); event LogEnableCollateral(address[] tokens); /** * @dev Deposit ETH/ERC20_Token. * @param token token address to deposit.(For ETH: 0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE) * @param amt token amount to deposit. * @param getId Get token amount at this ID from `InstaMemory` Contract. * @param setId Set token amount at this ID in `InstaMemory` Contract. */ function deposit(address token, uint amt, uint getId, uint setId) external payable { uint _amt = getUint(getId, amt); AaveInterface aave = AaveInterface(getAaveProvider().getLendingPool()); AaveDataProviderInterface aaveData = getAaveDataProvider(); bool isEth = token == getEthAddr(); address _token = isEth ? getWethAddr() : token; TokenInterface tokenContract = TokenInterface(_token); if (isEth) { _amt = _amt == uint(-1) ? address(this).balance : _amt; convertEthToWeth(isEth, tokenContract, _amt); } else { _amt = _amt == uint(-1) ? tokenContract.balanceOf(address(this)) : _amt; } tokenContract.approve(address(aave), _amt); aave.deposit(_token, _amt, address(this), getReferralCode()); if (!getIsColl(aaveData, _token, address(this))) { aave.setUserUseReserveAsCollateral(_token, true); } setUint(setId, _amt); emit LogDeposit(token, _amt, getId, setId); } /** * @dev Withdraw ETH/ERC20_Token. * @param token token address to withdraw.(For ETH: 0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE) * @param amt token amount to withdraw. * @param getId Get token amount at this ID from `InstaMemory` Contract. * @param setId Set token amount at this ID in `InstaMemory` Contract. */ function withdraw(address token, uint amt, uint getId, uint setId) external payable { uint _amt = getUint(getId, amt); AaveInterface aave = AaveInterface(getAaveProvider().getLendingPool()); bool isEth = token == getEthAddr(); address _token = isEth ? getWethAddr() : token; TokenInterface tokenContract = TokenInterface(_token); uint initialBal = tokenContract.balanceOf(address(this)); aave.withdraw(_token, _amt, address(this)); uint finalBal = tokenContract.balanceOf(address(this)); _amt = sub(finalBal, initialBal); convertWethToEth(isEth, tokenContract, _amt); setUint(setId, _amt); emit LogWithdraw(token, _amt, getId, setId); } /** * @dev Borrow ETH/ERC20_Token. * @param token token address to borrow.(For ETH: 0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE) * @param amt token amount to borrow. * @param rateMode type of borrow debt.(For Stable: 1, Variable: 2) * @param getId Get token amount at this ID from `InstaMemory` Contract. * @param setId Set token amount at this ID in `InstaMemory` Contract. */ function borrow(address token, uint amt, uint rateMode, uint getId, uint setId) external payable { uint _amt = getUint(getId, amt); AaveInterface aave = AaveInterface(getAaveProvider().getLendingPool()); bool isEth = token == getEthAddr(); address _token = isEth ? getWethAddr() : token; aave.borrow(_token, _amt, rateMode, getReferralCode(), address(this)); convertWethToEth(isEth, TokenInterface(_token), _amt); setUint(setId, _amt); emit LogBorrow(token, _amt, rateMode, getId, setId); } /** * @dev Payback borrowed ETH/ERC20_Token. * @param token token address to payback.(For ETH: 0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE) * @param amt token amount to payback. * @param rateMode type of borrow debt.(For Stable: 1, Variable: 2) * @param getId Get token amount at this ID from `InstaMemory` Contract. * @param setId Set token amount at this ID in `InstaMemory` Contract. */ function payback(address token, uint amt, uint rateMode, uint getId, uint setId) external payable { uint _amt = getUint(getId, amt); AaveInterface aave = AaveInterface(getAaveProvider().getLendingPool()); AaveDataProviderInterface aaveData = getAaveDataProvider(); bool isEth = token == getEthAddr(); address _token = isEth ? getWethAddr() : token; TokenInterface tokenContract = TokenInterface(_token); _amt = _amt == uint(-1) ? getPaybackBalance(aaveData, _token, rateMode) : _amt; if (isEth) convertEthToWeth(isEth, tokenContract, _amt); tokenContract.approve(address(aave), _amt); aave.repay(_token, _amt, rateMode, address(this)); setUint(setId, _amt); emit LogPayback(token, _amt, rateMode, getId, setId); } /** * @dev Enable collateral * @param tokens Array of tokens to enable collateral */ function enableCollateral(address[] calldata tokens) external payable { uint _length = tokens.length; require(_length > 0, "0-tokens-not-allowed"); AaveInterface aave = AaveInterface(getAaveProvider().getLendingPool()); AaveDataProviderInterface aaveData = getAaveDataProvider(); for (uint i = 0; i < _length; i++) { address token = tokens[i]; if (getCollateralBalance(aaveData, token) > 0 && !getIsColl(aaveData, token, address(this))) { aave.setUserUseReserveAsCollateral(token, true); } } emit LogEnableCollateral(tokens); } } contract ConnectAaveV2 is BasicResolver { string public name = "AaveV2-v1.1"; }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"token","type":"address"},{"indexed":false,"internalType":"uint256","name":"tokenAmt","type":"uint256"},{"indexed":true,"internalType":"uint256","name":"rateMode","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"getId","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"setId","type":"uint256"}],"name":"LogBorrow","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"token","type":"address"},{"indexed":false,"internalType":"uint256","name":"tokenAmt","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"getId","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"setId","type":"uint256"}],"name":"LogDeposit","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address[]","name":"tokens","type":"address[]"}],"name":"LogEnableCollateral","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"token","type":"address"},{"indexed":false,"internalType":"uint256","name":"tokenAmt","type":"uint256"},{"indexed":true,"internalType":"uint256","name":"rateMode","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"getId","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"setId","type":"uint256"}],"name":"LogPayback","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"token","type":"address"},{"indexed":false,"internalType":"uint256","name":"tokenAmt","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"getId","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"setId","type":"uint256"}],"name":"LogWithdraw","type":"event"},{"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"uint256","name":"amt","type":"uint256"},{"internalType":"uint256","name":"rateMode","type":"uint256"},{"internalType":"uint256","name":"getId","type":"uint256"},{"internalType":"uint256","name":"setId","type":"uint256"}],"name":"borrow","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"connectorID","outputs":[{"internalType":"uint256","name":"model","type":"uint256"},{"internalType":"uint256","name":"id","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"uint256","name":"amt","type":"uint256"},{"internalType":"uint256","name":"getId","type":"uint256"},{"internalType":"uint256","name":"setId","type":"uint256"}],"name":"deposit","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address[]","name":"tokens","type":"address[]"}],"name":"enableCollateral","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"uint256","name":"amt","type":"uint256"},{"internalType":"uint256","name":"rateMode","type":"uint256"},{"internalType":"uint256","name":"getId","type":"uint256"},{"internalType":"uint256","name":"setId","type":"uint256"}],"name":"payback","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"uint256","name":"amt","type":"uint256"},{"internalType":"uint256","name":"getId","type":"uint256"},{"internalType":"uint256","name":"setId","type":"uint256"}],"name":"withdraw","outputs":[],"stateMutability":"payable","type":"function"}]
Contract Creation Code
60806040526040518060400160405280600b81526020017f4161766556322d76312e31000000000000000000000000000000000000000000815250600090805190602001906200005192919062000066565b503480156200005f57600080fd5b5062000115565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10620000a957805160ff1916838001178555620000da565b82800160010185558215620000da579182015b82811115620000d9578251825591602001919060010190620000bc565b5b509050620000e99190620000ed565b5090565b6200011291905b808211156200010e576000816000905550600101620000f4565b5090565b90565b611e1580620001256000396000f3fe6080604052600436106100705760003560e01c80636abcd3de1161004e5780636abcd3de146100d8578063ce88b439146100f4578063da2b65c814610110578063eb15f7811461012c57610070565b806306fdde03146100755780634532d776146100a05780634e5e60e7146100bc575b600080fd5b34801561008157600080fd5b5061008a610158565b6040516100979190611b93565b60405180910390f35b6100ba60048036036100b59190810190611645565b6101f6565b005b6100d660048036036100d191908101906116a8565b6104ed565b005b6100f260048036036100ed91908101906116a8565b61077c565b005b61010e60048036036101099190810190611645565b610952565b005b61012a6004803603610125919081019061171f565b610d18565b005b34801561013857600080fd5b50610141610f0f565b60405161014f929190611c12565b60405180910390f35b60008054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156101ee5780601f106101c3576101008083540402835291602001916101ee565b820191906000526020600020905b8154815290600101906020018083116101d157829003601f168201915b505050505081565b60006102028385610f28565b9050600061020e610fd2565b73ffffffffffffffffffffffffffffffffffffffff16630261bf8b6040518163ffffffff1660e01b815260040160206040518083038186803b15801561025357600080fd5b505afa158015610267573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061028b919081019061161c565b90506000610297610fee565b73ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff161490506000816102d457876102dd565b6102dc61100a565b5b9050600081905060008173ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b815260040161031f91906119c5565b60206040518083038186803b15801561033757600080fd5b505afa15801561034b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061036f9190810190611764565b90508473ffffffffffffffffffffffffffffffffffffffff166369328dec8488306040518463ffffffff1660e01b81526004016103ae93929190611a5b565b600060405180830381600087803b1580156103c857600080fd5b505af11580156103dc573d6000803e3d6000fd5b5050505060008273ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b815260040161041b91906119c5565b60206040518083038186803b15801561043357600080fd5b505afa158015610447573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061046b9190810190611764565b90506104778183611026565b965061048485848961103a565b61048e888861111e565b8a73ffffffffffffffffffffffffffffffffffffffff167f9744d0a120f7c7d7906cfe3c05b50669fb49aa6d778b099d5d6edc386dee5b59888b8b6040516104d893929190611c3b565b60405180910390a25050505050505050505050565b60006104f98386610f28565b90506000610505610fd2565b73ffffffffffffffffffffffffffffffffffffffff16630261bf8b6040518163ffffffff1660e01b815260040160206040518083038186803b15801561054a57600080fd5b505afa15801561055e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610582919081019061161c565b9050600061058e61119f565b9050600061059a610fee565b73ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff161490506000816105d757896105e0565b6105df61100a565b5b905060008190507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff86146106145785610620565b61061f84838b6111bb565b5b9550821561063457610633838288611272565b5b8073ffffffffffffffffffffffffffffffffffffffff1663095ea7b386886040518363ffffffff1660e01b815260040161066f929190611a32565b600060405180830381600087803b15801561068957600080fd5b505af115801561069d573d6000803e3d6000fd5b505050508473ffffffffffffffffffffffffffffffffffffffff1663573ade8183888c306040518563ffffffff1660e01b81526004016106e09493929190611ad7565b600060405180830381600087803b1580156106fa57600080fd5b505af115801561070e573d6000803e3d6000fd5b5050505061071c878761111e565b888b73ffffffffffffffffffffffffffffffffffffffff167fda2016a89958b5c9b3ee30a3e0858b2dfcce432f8792d8f71dbf040e295e98e2888b8b60405161076793929190611c3b565b60405180910390a35050505050505050505050565b60006107888386610f28565b90506000610794610fd2565b73ffffffffffffffffffffffffffffffffffffffff16630261bf8b6040518163ffffffff1660e01b815260040160206040518083038186803b1580156107d957600080fd5b505afa1580156107ed573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610811919081019061161c565b9050600061081d610fee565b73ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff1614905060008161085a5788610863565b61086261100a565b5b90508273ffffffffffffffffffffffffffffffffffffffff1663a415bcad82868a61088c6112df565b306040518663ffffffff1660e01b81526004016108ad959493929190611b1c565b600060405180830381600087803b1580156108c757600080fd5b505af11580156108db573d6000803e3d6000fd5b505050506108ea82828661103a565b6108f4858561111e565b868973ffffffffffffffffffffffffffffffffffffffff167f7a820240d9f3ec4b998f20c82601ad5d316c006138f52c435c349ef46eae7ffb86898960405161093f93929190611c3b565b60405180910390a3505050505050505050565b600061095e8385610f28565b9050600061096a610fd2565b73ffffffffffffffffffffffffffffffffffffffff16630261bf8b6040518163ffffffff1660e01b815260040160206040518083038186803b1580156109af57600080fd5b505afa1580156109c3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506109e7919081019061161c565b905060006109f361119f565b905060006109ff610fee565b73ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff16149050600081610a3c5788610a45565b610a4461100a565b5b905060008190508215610a93577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8614610a7f5785610a81565b475b9550610a8e838288611272565b610b4d565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8614610ac05785610b4a565b8073ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401610af991906119c5565b60206040518083038186803b158015610b1157600080fd5b505afa158015610b25573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610b499190810190611764565b5b95505b8073ffffffffffffffffffffffffffffffffffffffff1663095ea7b386886040518363ffffffff1660e01b8152600401610b88929190611a32565b600060405180830381600087803b158015610ba257600080fd5b505af1158015610bb6573d6000803e3d6000fd5b505050508473ffffffffffffffffffffffffffffffffffffffff1663e8eda9df838830610be16112df565b6040518563ffffffff1660e01b8152600401610c009493929190611a92565b600060405180830381600087803b158015610c1a57600080fd5b505af1158015610c2e573d6000803e3d6000fd5b50505050610c3d8483306112e9565b610cb0578473ffffffffffffffffffffffffffffffffffffffff16635a3b74b98360016040518363ffffffff1660e01b8152600401610c7d929190611a09565b600060405180830381600087803b158015610c9757600080fd5b505af1158015610cab573d6000803e3d6000fd5b505050505b610cba878761111e565b8973ffffffffffffffffffffffffffffffffffffffff167f4b2bcb0ca50531683faa51870e1018aa0d7272c7f2acc5399389b0c0493865d9878a8a604051610d0493929190611c3b565b60405180910390a250505050505050505050565b600082829050905060008111610d63576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d5a90611bd7565b60405180910390fd5b6000610d6d610fd2565b73ffffffffffffffffffffffffffffffffffffffff16630261bf8b6040518163ffffffff1660e01b815260040160206040518083038186803b158015610db257600080fd5b505afa158015610dc6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610dea919081019061161c565b90506000610df661119f565b905060008090505b83811015610ece576000868683818110610e1457fe5b9050602002016020610e2991908101906115f3565b90506000610e3784836113ae565b118015610e4c5750610e4a8382306112e9565b155b15610ec0578373ffffffffffffffffffffffffffffffffffffffff16635a3b74b98260016040518363ffffffff1660e01b8152600401610e8d929190611a09565b600060405180830381600087803b158015610ea757600080fd5b505af1158015610ebb573d6000803e3d6000fd5b505050505b508080600101915050610dfe565b507f212f3c548fe60533d258f99a4d5a1b8578b6467e650b7ff5059b4c77f8e82cdb8585604051610f00929190611b6f565b60405180910390a15050505050565b6000806001604281915080905080925081935050509091565b6000808314610fc857610f3961146a565b73ffffffffffffffffffffffffffffffffffffffff1663a9c70eaa846040518263ffffffff1660e01b8152600401610f719190611bf7565b602060405180830381600087803b158015610f8b57600080fd5b505af1158015610f9f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610fc39190810190611764565b610fca565b815b905092915050565b600073b53c1a33016b2dc2ff3653530bff1848a515c8c5905090565b600073eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee905090565b600073c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2905090565b60006110328383611486565b905092915050565b8215611119578173ffffffffffffffffffffffffffffffffffffffff1663095ea7b383836040518363ffffffff1660e01b815260040161107b929190611a32565b600060405180830381600087803b15801561109557600080fd5b505af11580156110a9573d6000803e3d6000fd5b505050508173ffffffffffffffffffffffffffffffffffffffff16632e1a7d4d826040518263ffffffff1660e01b81526004016110e69190611bf7565b600060405180830381600087803b15801561110057600080fd5b505af1158015611114573d6000803e3d6000fd5b505050505b505050565b6000821461119b5761112e61146a565b73ffffffffffffffffffffffffffffffffffffffff166361e3c94483836040518363ffffffff1660e01b8152600401611168929190611c12565b600060405180830381600087803b15801561118257600080fd5b505af1158015611196573d6000803e3d6000fd5b505050505b5050565b600073057835ad21a177dbdd3090bb1cae03eacf78fc6d905090565b60008060008573ffffffffffffffffffffffffffffffffffffffff166328dd2d0186306040518363ffffffff1660e01b81526004016111fb9291906119e0565b6101206040518083038186803b15801561121457600080fd5b505afa158015611228573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061124c919081019061178d565b5050505050509250925050600184146112655780611267565b815b925050509392505050565b82156112da578173ffffffffffffffffffffffffffffffffffffffff1663d0e30db0826040518263ffffffff1660e01b81526004016000604051808303818588803b1580156112c057600080fd5b505af11580156112d4573d6000803e3d6000fd5b50505050505b505050565b6000610c9c905090565b60008373ffffffffffffffffffffffffffffffffffffffff166328dd2d0184846040518363ffffffff1660e01b81526004016113269291906119e0565b6101206040518083038186803b15801561133f57600080fd5b505afa158015611353573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250611377919081019061178d565b9091929394959697509091929394959650909192939495509091929394509091929350909192509091509050809150509392505050565b60008273ffffffffffffffffffffffffffffffffffffffff166328dd2d0183306040518363ffffffff1660e01b81526004016113eb9291906119e0565b6101206040518083038186803b15801561140457600080fd5b505afa158015611418573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061143c919081019061178d565b9091929394959650909192939495509091929394509091929350909192509091509050508091505092915050565b6000738a5419cfc711b2343c17a6abf4b2bafabb06957f905090565b60006114c883836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506114d0565b905092915050565b6000838311158290611518576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161150f9190611bb5565b60405180910390fd5b5060008385039050809150509392505050565b60008135905061153a81611d83565b92915050565b60008151905061154f81611d83565b92915050565b60008083601f84011261156757600080fd5b8235905067ffffffffffffffff81111561158057600080fd5b60208301915083602082028301111561159857600080fd5b9250929050565b6000815190506115ae81611d9a565b92915050565b6000813590506115c381611db1565b92915050565b6000815190506115d881611db1565b92915050565b6000815190506115ed81611dc8565b92915050565b60006020828403121561160557600080fd5b60006116138482850161152b565b91505092915050565b60006020828403121561162e57600080fd5b600061163c84828501611540565b91505092915050565b6000806000806080858703121561165b57600080fd5b60006116698782880161152b565b945050602061167a878288016115b4565b935050604061168b878288016115b4565b925050606061169c878288016115b4565b91505092959194509250565b600080600080600060a086880312156116c057600080fd5b60006116ce8882890161152b565b95505060206116df888289016115b4565b94505060406116f0888289016115b4565b9350506060611701888289016115b4565b9250506080611712888289016115b4565b9150509295509295909350565b6000806020838503121561173257600080fd5b600083013567ffffffffffffffff81111561174c57600080fd5b61175885828601611555565b92509250509250929050565b60006020828403121561177657600080fd5b6000611784848285016115c9565b91505092915050565b60008060008060008060008060006101208a8c0312156117ac57600080fd5b60006117ba8c828d016115c9565b99505060206117cb8c828d016115c9565b98505060406117dc8c828d016115c9565b97505060606117ed8c828d016115c9565b96505060806117fe8c828d016115c9565b95505060a061180f8c828d016115c9565b94505060c06118208c828d016115c9565b93505060e06118318c828d016115de565b9250506101006118438c828d0161159f565b9150509295985092959850929598565b600061185f838361186b565b60208301905092915050565b61187481611cd8565b82525050565b61188381611cd8565b82525050565b60006118958385611c9f565b93506118a082611c72565b8060005b858110156118d9576118b68284611cc1565b6118c08882611853565b97506118cb83611c92565b9250506001810190506118a4565b5085925050509392505050565b6118ef81611cea565b82525050565b600061190082611c87565b61190a8185611cb0565b935061191a818560208601611d3f565b61192381611d72565b840191505092915050565b600061193982611c7c565b6119438185611cb0565b9350611953818560208601611d3f565b61195c81611d72565b840191505092915050565b6000611974601483611cb0565b91507f302d746f6b656e732d6e6f742d616c6c6f7765640000000000000000000000006000830152602082019050919050565b6119b081611cf6565b82525050565b6119bf81611d24565b82525050565b60006020820190506119da600083018461187a565b92915050565b60006040820190506119f5600083018561187a565b611a02602083018461187a565b9392505050565b6000604082019050611a1e600083018561187a565b611a2b60208301846118e6565b9392505050565b6000604082019050611a47600083018561187a565b611a5460208301846119b6565b9392505050565b6000606082019050611a70600083018661187a565b611a7d60208301856119b6565b611a8a604083018461187a565b949350505050565b6000608082019050611aa7600083018761187a565b611ab460208301866119b6565b611ac1604083018561187a565b611ace60608301846119a7565b95945050505050565b6000608082019050611aec600083018761187a565b611af960208301866119b6565b611b0660408301856119b6565b611b13606083018461187a565b95945050505050565b600060a082019050611b31600083018861187a565b611b3e60208301876119b6565b611b4b60408301866119b6565b611b5860608301856119a7565b611b65608083018461187a565b9695505050505050565b60006020820190508181036000830152611b8a818486611889565b90509392505050565b60006020820190508181036000830152611bad818461192e565b905092915050565b60006020820190508181036000830152611bcf81846118f5565b905092915050565b60006020820190508181036000830152611bf081611967565b9050919050565b6000602082019050611c0c60008301846119b6565b92915050565b6000604082019050611c2760008301856119b6565b611c3460208301846119b6565b9392505050565b6000606082019050611c5060008301866119b6565b611c5d60208301856119b6565b611c6a60408301846119b6565b949350505050565b6000819050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600082825260208201905092915050565b6000611cd0602084018461152b565b905092915050565b6000611ce382611d04565b9050919050565b60008115159050919050565b600061ffff82169050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600064ffffffffff82169050919050565b60005b83811015611d5d578082015181840152602081019050611d42565b83811115611d6c576000848401525b50505050565b6000601f19601f8301169050919050565b611d8c81611cd8565b8114611d9757600080fd5b50565b611da381611cea565b8114611dae57600080fd5b50565b611dba81611d24565b8114611dc557600080fd5b50565b611dd181611d2e565b8114611ddc57600080fd5b5056fea2646970667358221220fe84969c6e8297ef80372d8b6340080ef0a33f673c1681c56bc50af0a5f3db2564736f6c63430006000033
Deployed Bytecode
0x6080604052600436106100705760003560e01c80636abcd3de1161004e5780636abcd3de146100d8578063ce88b439146100f4578063da2b65c814610110578063eb15f7811461012c57610070565b806306fdde03146100755780634532d776146100a05780634e5e60e7146100bc575b600080fd5b34801561008157600080fd5b5061008a610158565b6040516100979190611b93565b60405180910390f35b6100ba60048036036100b59190810190611645565b6101f6565b005b6100d660048036036100d191908101906116a8565b6104ed565b005b6100f260048036036100ed91908101906116a8565b61077c565b005b61010e60048036036101099190810190611645565b610952565b005b61012a6004803603610125919081019061171f565b610d18565b005b34801561013857600080fd5b50610141610f0f565b60405161014f929190611c12565b60405180910390f35b60008054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156101ee5780601f106101c3576101008083540402835291602001916101ee565b820191906000526020600020905b8154815290600101906020018083116101d157829003601f168201915b505050505081565b60006102028385610f28565b9050600061020e610fd2565b73ffffffffffffffffffffffffffffffffffffffff16630261bf8b6040518163ffffffff1660e01b815260040160206040518083038186803b15801561025357600080fd5b505afa158015610267573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061028b919081019061161c565b90506000610297610fee565b73ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff161490506000816102d457876102dd565b6102dc61100a565b5b9050600081905060008173ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b815260040161031f91906119c5565b60206040518083038186803b15801561033757600080fd5b505afa15801561034b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061036f9190810190611764565b90508473ffffffffffffffffffffffffffffffffffffffff166369328dec8488306040518463ffffffff1660e01b81526004016103ae93929190611a5b565b600060405180830381600087803b1580156103c857600080fd5b505af11580156103dc573d6000803e3d6000fd5b5050505060008273ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b815260040161041b91906119c5565b60206040518083038186803b15801561043357600080fd5b505afa158015610447573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061046b9190810190611764565b90506104778183611026565b965061048485848961103a565b61048e888861111e565b8a73ffffffffffffffffffffffffffffffffffffffff167f9744d0a120f7c7d7906cfe3c05b50669fb49aa6d778b099d5d6edc386dee5b59888b8b6040516104d893929190611c3b565b60405180910390a25050505050505050505050565b60006104f98386610f28565b90506000610505610fd2565b73ffffffffffffffffffffffffffffffffffffffff16630261bf8b6040518163ffffffff1660e01b815260040160206040518083038186803b15801561054a57600080fd5b505afa15801561055e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610582919081019061161c565b9050600061058e61119f565b9050600061059a610fee565b73ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff161490506000816105d757896105e0565b6105df61100a565b5b905060008190507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff86146106145785610620565b61061f84838b6111bb565b5b9550821561063457610633838288611272565b5b8073ffffffffffffffffffffffffffffffffffffffff1663095ea7b386886040518363ffffffff1660e01b815260040161066f929190611a32565b600060405180830381600087803b15801561068957600080fd5b505af115801561069d573d6000803e3d6000fd5b505050508473ffffffffffffffffffffffffffffffffffffffff1663573ade8183888c306040518563ffffffff1660e01b81526004016106e09493929190611ad7565b600060405180830381600087803b1580156106fa57600080fd5b505af115801561070e573d6000803e3d6000fd5b5050505061071c878761111e565b888b73ffffffffffffffffffffffffffffffffffffffff167fda2016a89958b5c9b3ee30a3e0858b2dfcce432f8792d8f71dbf040e295e98e2888b8b60405161076793929190611c3b565b60405180910390a35050505050505050505050565b60006107888386610f28565b90506000610794610fd2565b73ffffffffffffffffffffffffffffffffffffffff16630261bf8b6040518163ffffffff1660e01b815260040160206040518083038186803b1580156107d957600080fd5b505afa1580156107ed573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610811919081019061161c565b9050600061081d610fee565b73ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff1614905060008161085a5788610863565b61086261100a565b5b90508273ffffffffffffffffffffffffffffffffffffffff1663a415bcad82868a61088c6112df565b306040518663ffffffff1660e01b81526004016108ad959493929190611b1c565b600060405180830381600087803b1580156108c757600080fd5b505af11580156108db573d6000803e3d6000fd5b505050506108ea82828661103a565b6108f4858561111e565b868973ffffffffffffffffffffffffffffffffffffffff167f7a820240d9f3ec4b998f20c82601ad5d316c006138f52c435c349ef46eae7ffb86898960405161093f93929190611c3b565b60405180910390a3505050505050505050565b600061095e8385610f28565b9050600061096a610fd2565b73ffffffffffffffffffffffffffffffffffffffff16630261bf8b6040518163ffffffff1660e01b815260040160206040518083038186803b1580156109af57600080fd5b505afa1580156109c3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506109e7919081019061161c565b905060006109f361119f565b905060006109ff610fee565b73ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff16149050600081610a3c5788610a45565b610a4461100a565b5b905060008190508215610a93577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8614610a7f5785610a81565b475b9550610a8e838288611272565b610b4d565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8614610ac05785610b4a565b8073ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401610af991906119c5565b60206040518083038186803b158015610b1157600080fd5b505afa158015610b25573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610b499190810190611764565b5b95505b8073ffffffffffffffffffffffffffffffffffffffff1663095ea7b386886040518363ffffffff1660e01b8152600401610b88929190611a32565b600060405180830381600087803b158015610ba257600080fd5b505af1158015610bb6573d6000803e3d6000fd5b505050508473ffffffffffffffffffffffffffffffffffffffff1663e8eda9df838830610be16112df565b6040518563ffffffff1660e01b8152600401610c009493929190611a92565b600060405180830381600087803b158015610c1a57600080fd5b505af1158015610c2e573d6000803e3d6000fd5b50505050610c3d8483306112e9565b610cb0578473ffffffffffffffffffffffffffffffffffffffff16635a3b74b98360016040518363ffffffff1660e01b8152600401610c7d929190611a09565b600060405180830381600087803b158015610c9757600080fd5b505af1158015610cab573d6000803e3d6000fd5b505050505b610cba878761111e565b8973ffffffffffffffffffffffffffffffffffffffff167f4b2bcb0ca50531683faa51870e1018aa0d7272c7f2acc5399389b0c0493865d9878a8a604051610d0493929190611c3b565b60405180910390a250505050505050505050565b600082829050905060008111610d63576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d5a90611bd7565b60405180910390fd5b6000610d6d610fd2565b73ffffffffffffffffffffffffffffffffffffffff16630261bf8b6040518163ffffffff1660e01b815260040160206040518083038186803b158015610db257600080fd5b505afa158015610dc6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610dea919081019061161c565b90506000610df661119f565b905060008090505b83811015610ece576000868683818110610e1457fe5b9050602002016020610e2991908101906115f3565b90506000610e3784836113ae565b118015610e4c5750610e4a8382306112e9565b155b15610ec0578373ffffffffffffffffffffffffffffffffffffffff16635a3b74b98260016040518363ffffffff1660e01b8152600401610e8d929190611a09565b600060405180830381600087803b158015610ea757600080fd5b505af1158015610ebb573d6000803e3d6000fd5b505050505b508080600101915050610dfe565b507f212f3c548fe60533d258f99a4d5a1b8578b6467e650b7ff5059b4c77f8e82cdb8585604051610f00929190611b6f565b60405180910390a15050505050565b6000806001604281915080905080925081935050509091565b6000808314610fc857610f3961146a565b73ffffffffffffffffffffffffffffffffffffffff1663a9c70eaa846040518263ffffffff1660e01b8152600401610f719190611bf7565b602060405180830381600087803b158015610f8b57600080fd5b505af1158015610f9f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610fc39190810190611764565b610fca565b815b905092915050565b600073b53c1a33016b2dc2ff3653530bff1848a515c8c5905090565b600073eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee905090565b600073c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2905090565b60006110328383611486565b905092915050565b8215611119578173ffffffffffffffffffffffffffffffffffffffff1663095ea7b383836040518363ffffffff1660e01b815260040161107b929190611a32565b600060405180830381600087803b15801561109557600080fd5b505af11580156110a9573d6000803e3d6000fd5b505050508173ffffffffffffffffffffffffffffffffffffffff16632e1a7d4d826040518263ffffffff1660e01b81526004016110e69190611bf7565b600060405180830381600087803b15801561110057600080fd5b505af1158015611114573d6000803e3d6000fd5b505050505b505050565b6000821461119b5761112e61146a565b73ffffffffffffffffffffffffffffffffffffffff166361e3c94483836040518363ffffffff1660e01b8152600401611168929190611c12565b600060405180830381600087803b15801561118257600080fd5b505af1158015611196573d6000803e3d6000fd5b505050505b5050565b600073057835ad21a177dbdd3090bb1cae03eacf78fc6d905090565b60008060008573ffffffffffffffffffffffffffffffffffffffff166328dd2d0186306040518363ffffffff1660e01b81526004016111fb9291906119e0565b6101206040518083038186803b15801561121457600080fd5b505afa158015611228573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061124c919081019061178d565b5050505050509250925050600184146112655780611267565b815b925050509392505050565b82156112da578173ffffffffffffffffffffffffffffffffffffffff1663d0e30db0826040518263ffffffff1660e01b81526004016000604051808303818588803b1580156112c057600080fd5b505af11580156112d4573d6000803e3d6000fd5b50505050505b505050565b6000610c9c905090565b60008373ffffffffffffffffffffffffffffffffffffffff166328dd2d0184846040518363ffffffff1660e01b81526004016113269291906119e0565b6101206040518083038186803b15801561133f57600080fd5b505afa158015611353573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250611377919081019061178d565b9091929394959697509091929394959650909192939495509091929394509091929350909192509091509050809150509392505050565b60008273ffffffffffffffffffffffffffffffffffffffff166328dd2d0183306040518363ffffffff1660e01b81526004016113eb9291906119e0565b6101206040518083038186803b15801561140457600080fd5b505afa158015611418573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061143c919081019061178d565b9091929394959650909192939495509091929394509091929350909192509091509050508091505092915050565b6000738a5419cfc711b2343c17a6abf4b2bafabb06957f905090565b60006114c883836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506114d0565b905092915050565b6000838311158290611518576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161150f9190611bb5565b60405180910390fd5b5060008385039050809150509392505050565b60008135905061153a81611d83565b92915050565b60008151905061154f81611d83565b92915050565b60008083601f84011261156757600080fd5b8235905067ffffffffffffffff81111561158057600080fd5b60208301915083602082028301111561159857600080fd5b9250929050565b6000815190506115ae81611d9a565b92915050565b6000813590506115c381611db1565b92915050565b6000815190506115d881611db1565b92915050565b6000815190506115ed81611dc8565b92915050565b60006020828403121561160557600080fd5b60006116138482850161152b565b91505092915050565b60006020828403121561162e57600080fd5b600061163c84828501611540565b91505092915050565b6000806000806080858703121561165b57600080fd5b60006116698782880161152b565b945050602061167a878288016115b4565b935050604061168b878288016115b4565b925050606061169c878288016115b4565b91505092959194509250565b600080600080600060a086880312156116c057600080fd5b60006116ce8882890161152b565b95505060206116df888289016115b4565b94505060406116f0888289016115b4565b9350506060611701888289016115b4565b9250506080611712888289016115b4565b9150509295509295909350565b6000806020838503121561173257600080fd5b600083013567ffffffffffffffff81111561174c57600080fd5b61175885828601611555565b92509250509250929050565b60006020828403121561177657600080fd5b6000611784848285016115c9565b91505092915050565b60008060008060008060008060006101208a8c0312156117ac57600080fd5b60006117ba8c828d016115c9565b99505060206117cb8c828d016115c9565b98505060406117dc8c828d016115c9565b97505060606117ed8c828d016115c9565b96505060806117fe8c828d016115c9565b95505060a061180f8c828d016115c9565b94505060c06118208c828d016115c9565b93505060e06118318c828d016115de565b9250506101006118438c828d0161159f565b9150509295985092959850929598565b600061185f838361186b565b60208301905092915050565b61187481611cd8565b82525050565b61188381611cd8565b82525050565b60006118958385611c9f565b93506118a082611c72565b8060005b858110156118d9576118b68284611cc1565b6118c08882611853565b97506118cb83611c92565b9250506001810190506118a4565b5085925050509392505050565b6118ef81611cea565b82525050565b600061190082611c87565b61190a8185611cb0565b935061191a818560208601611d3f565b61192381611d72565b840191505092915050565b600061193982611c7c565b6119438185611cb0565b9350611953818560208601611d3f565b61195c81611d72565b840191505092915050565b6000611974601483611cb0565b91507f302d746f6b656e732d6e6f742d616c6c6f7765640000000000000000000000006000830152602082019050919050565b6119b081611cf6565b82525050565b6119bf81611d24565b82525050565b60006020820190506119da600083018461187a565b92915050565b60006040820190506119f5600083018561187a565b611a02602083018461187a565b9392505050565b6000604082019050611a1e600083018561187a565b611a2b60208301846118e6565b9392505050565b6000604082019050611a47600083018561187a565b611a5460208301846119b6565b9392505050565b6000606082019050611a70600083018661187a565b611a7d60208301856119b6565b611a8a604083018461187a565b949350505050565b6000608082019050611aa7600083018761187a565b611ab460208301866119b6565b611ac1604083018561187a565b611ace60608301846119a7565b95945050505050565b6000608082019050611aec600083018761187a565b611af960208301866119b6565b611b0660408301856119b6565b611b13606083018461187a565b95945050505050565b600060a082019050611b31600083018861187a565b611b3e60208301876119b6565b611b4b60408301866119b6565b611b5860608301856119a7565b611b65608083018461187a565b9695505050505050565b60006020820190508181036000830152611b8a818486611889565b90509392505050565b60006020820190508181036000830152611bad818461192e565b905092915050565b60006020820190508181036000830152611bcf81846118f5565b905092915050565b60006020820190508181036000830152611bf081611967565b9050919050565b6000602082019050611c0c60008301846119b6565b92915050565b6000604082019050611c2760008301856119b6565b611c3460208301846119b6565b9392505050565b6000606082019050611c5060008301866119b6565b611c5d60208301856119b6565b611c6a60408301846119b6565b949350505050565b6000819050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600082825260208201905092915050565b6000611cd0602084018461152b565b905092915050565b6000611ce382611d04565b9050919050565b60008115159050919050565b600061ffff82169050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600064ffffffffff82169050919050565b60005b83811015611d5d578082015181840152602081019050611d42565b83811115611d6c576000848401525b50505050565b6000601f19601f8301169050919050565b611d8c81611cd8565b8114611d9757600080fd5b50565b611da381611cea565b8114611dae57600080fd5b50565b611dba81611d24565b8114611dc557600080fd5b50565b611dd181611d2e565b8114611ddc57600080fd5b5056fea2646970667358221220fe84969c6e8297ef80372d8b6340080ef0a33f673c1681c56bc50af0a5f3db2564736f6c63430006000033
Deployed Bytecode Sourcemap
18409:85:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18456:34;;8:9:-1;5:2;;;30:1;27;20:12;5:2;18456:34:0;;;:::i;:::-;;;;;;;;;;;;;;;;14564:771;;;;;;;;;;;;;;;;:::i;:::-;;16786:844;;;;;;;;;;;;;;;;:::i;:::-;;15766:577;;;;;;;;;;;;;;;;:::i;:::-;;13126:1074;;;;;;;;;;;;;;;;:::i;:::-;;17745:657;;;;;;;;;;;;;;;;:::i;:::-;;1845:98;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1845:98:0;;;:::i;:::-;;;;;;;;;;;;;;;;;18456:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;14564:771::-;14659:9;14671:19;14679:5;14686:3;14671:7;:19::i;:::-;14659:31;;14703:18;14738:17;:15;:17::i;:::-;:32;;;:34;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;14738:34:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;14738:34:0;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;14738:34:0;;;;;;;;;14703:70;;14784:10;14806:12;:10;:12::i;:::-;14797:21;;:5;:21;;;14784:34;;14829:14;14846:5;:29;;14870:5;14846:29;;;14854:13;:11;:13::i;:::-;14846:29;14829:46;;14888:28;14934:6;14888:53;;14954:15;14972:13;:23;;;15004:4;14972:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;14972:38:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;14972:38:0;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;14972:38:0;;;;;;;;;14954:56;;15021:4;:13;;;15035:6;15043:4;15057;15021:42;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;15021:42:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;15021:42:0;;;;15074:13;15090;:23;;;15122:4;15090:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;15090:38:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;15090:38:0;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;15090:38:0;;;;;;;;;15074:54;;15148:25;15152:8;15162:10;15148:3;:25::i;:::-;15141:32;;15186:44;15203:5;15210:13;15225:4;15186:16;:44::i;:::-;15251:20;15259:5;15266:4;15251:7;:20::i;:::-;15301:5;15289:38;;;15308:4;15314:5;15321;15289:38;;;;;;;;;;;;;;;;;14564:771;;;;;;;;;;;:::o;16786:844::-;16895:9;16907:19;16915:5;16922:3;16907:7;:19::i;:::-;16895:31;;16939:18;16974:17;:15;:17::i;:::-;:32;;;:34;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;16974:34:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;16974:34:0;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;16974:34:0;;;;;;;;;16939:70;;17020:34;17057:21;:19;:21::i;:::-;17020:58;;17091:10;17113:12;:10;:12::i;:::-;17104:21;;:5;:21;;;17091:34;;17136:14;17153:5;:29;;17177:5;17153:29;;;17161:13;:11;:13::i;:::-;17153:29;17136:46;;17195:28;17241:6;17195:53;;17281:2;17268:4;:16;:71;;17335:4;17268:71;;;17287:45;17305:8;17315:6;17323:8;17287:17;:45::i;:::-;17268:71;17261:78;;17356:5;17352:55;;;17363:44;17380:5;17387:13;17402:4;17363:16;:44::i;:::-;17352:55;17420:13;:21;;;17450:4;17457;17420:42;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;17420:42:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;17420:42:0;;;;17475:4;:10;;;17486:6;17494:4;17500:8;17518:4;17475:49;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;17475:49:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;17475:49:0;;;;17537:20;17545:5;17552:4;17537:7;:20::i;:::-;17599:8;17586:5;17575:47;;;17593:4;17609:5;17616;17575:47;;;;;;;;;;;;;;;;;16786:844;;;;;;;;;;;:::o;15766:577::-;15874:9;15886:19;15894:5;15901:3;15886:7;:19::i;:::-;15874:31;;15918:18;15953:17;:15;:17::i;:::-;:32;;;:34;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;15953:34:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;15953:34:0;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;15953:34:0;;;;;;;;;15918:70;;16001:10;16023:12;:10;:12::i;:::-;16014:21;;:5;:21;;;16001:34;;16046:14;16063:5;:29;;16087:5;16063:29;;;16071:13;:11;:13::i;:::-;16063:29;16046:46;;16105:4;:11;;;16117:6;16125:4;16131:8;16141:17;:15;:17::i;:::-;16168:4;16105:69;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;16105:69:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;16105:69:0;;;;16185:53;16202:5;16224:6;16233:4;16185:16;:53::i;:::-;16251:20;16259:5;16266:4;16251:7;:20::i;:::-;16312:8;16299:5;16289:46;;;16306:4;16322:5;16329;16289:46;;;;;;;;;;;;;;;;;15766:577;;;;;;;;;:::o;13126:1074::-;13220:9;13232:19;13240:5;13247:3;13232:7;:19::i;:::-;13220:31;;13264:18;13299:17;:15;:17::i;:::-;:32;;;:34;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;13299:34:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;13299:34:0;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;13299:34:0;;;;;;;;;13264:70;;13345:34;13382:21;:19;:21::i;:::-;13345:58;;13416:10;13438:12;:10;:12::i;:::-;13429:21;;:5;:21;;;13416:34;;13461:14;13478:5;:29;;13502:5;13478:29;;;13486:13;:11;:13::i;:::-;13478:29;13461:46;;13520:28;13566:6;13520:53;;13590:5;13586:255;;;13632:2;13619:4;:16;:47;;13662:4;13619:47;;;13638:21;13619:47;13612:54;;13681:44;13698:5;13705:13;13720:4;13681:16;:44::i;:::-;13586:255;;;13778:2;13765:4;:16;:64;;13825:4;13765:64;;;13784:13;:23;;;13816:4;13784:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;13784:38:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;13784:38:0;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;13784:38:0;;;;;;;;;13765:64;13758:71;;13586:255;13853:13;:21;;;13883:4;13890;13853:42;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;13853:42:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;13853:42:0;;;;13908:4;:12;;;13921:6;13929:4;13943;13950:17;:15;:17::i;:::-;13908:60;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;13908:60:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;13908:60:0;;;;13986:42;13996:8;14006:6;14022:4;13986:9;:42::i;:::-;13981:124;;14045:4;:34;;;14080:6;14088:4;14045:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;14045:48:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;14045:48:0;;;;13981:124;14117:20;14125:5;14132:4;14117:7;:20::i;:::-;14166:5;14155:37;;;14173:4;14179:5;14186;14155:37;;;;;;;;;;;;;;;;;13126:1074;;;;;;;;;;:::o;17745:657::-;17826:12;17841:6;;:13;;17826:28;;17883:1;17873:7;:11;17865:44;;;;;;;;;;;;;;;;;;;;;;17922:18;17957:17;:15;:17::i;:::-;:32;;;:34;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;17957:34:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;17957:34:0;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;17957:34:0;;;;;;;;;17922:70;;18003:34;18040:21;:19;:21::i;:::-;18003:58;;18079:6;18088:1;18079:10;;18074:276;18095:7;18091:1;:11;18074:276;;;18124:13;18140:6;;18147:1;18140:9;;;;;;;;;;;;;;;;;;;;;;18124:25;;18208:1;18168:37;18189:8;18199:5;18168:20;:37::i;:::-;:41;:87;;;;;18214:41;18224:8;18234:5;18249:4;18214:9;:41::i;:::-;18213:42;18168:87;18164:175;;;18276:4;:34;;;18311:5;18318:4;18276:47;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;18276:47:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;18276:47:0;;;;18164:175;18074:276;18104:3;;;;;;;18074:276;;;;18367:27;18387:6;;18367:27;;;;;;;;;;;;;;;;17745:657;;;;;:::o;1845:98::-;1888:10;1900:7;1931:1;1934:2;1916:21;;;;;;;;;;;;;;1845:98;;:::o;1428:164::-;1485:14;1529:1;1520:5;:10;:66;;1555:15;:13;:15::i;:::-;1539:40;;;1580:5;1539:47;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1539:47:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1539:47:0;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;1539:47:0;;;;;;;;;1520:66;;;1533:3;1520:66;1508:78;;1428:164;;;;:::o;10051:301::-;10101:32;10186:42;10146:83;;10051:301;:::o;822:131::-;867:7;890:42;883:49;;822:131;:::o;10764:232::-;10810:7;10837:42;10830:49;;10764:232;:::o;7442:103::-;7502:6;7521:18;7534:1;7537;7521:12;:18::i;:::-;7517:22;;7442:103;;;;:::o;11508:210::-;11603:5;11600:111;;;11625:5;:13;;;11647:5;11655:6;11625:37;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;11625:37:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;11625:37:0;;;;11677:5;:14;;;11692:6;11677:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;11677:22:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;11677:22:0;;;;11600:111;11508:210;;;:::o;1661:137::-;1737:1;1728:5;:10;1724:68;;1756:15;:13;:15::i;:::-;1740:40;;;1781:5;1788:3;1740:52;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1740:52:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1740:52:0;;;;1724:68;1661:137;;:::o;10422:284::-;10476:25;10547:42;10514:76;;10422:284;:::o;11726:302::-;11842:4;11862:15;11879:17;11912:8;:27;;;11940:5;11955:4;11912:49;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;11912:49:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;11912:49:0;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;11912:49:0;;;;;;;;;11859:102;;;;;;;;;;;11991:1;11979:8;:13;:41;;12008:12;11979:41;;;11995:10;11979:41;11972:48;;;;11726:302;;;;;:::o;11360:140::-;11456:5;11453:39;;;11463:5;:13;;;11483:6;11463:29;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;11463:29:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;11463:29:0;;;;;11453:39;11360:140;;;:::o;11052:88::-;11102:6;11128:4;11121:11;;11052:88;:::o;11148:204::-;11255:10;11304:8;:27;;;11332:5;11339:4;11304:40;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;11304:40:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;11304:40:0;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;11304:40:0;;;;;;;;;11278:66;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11148:204;;;;;:::o;12036:205::-;12140:8;12184;:27;;;12212:5;12227:4;12184:49;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;12184:49:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;12184:49:0;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;12184:49:0;;;;;;;;;12161:72;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12036:205;;;;:::o;1015:142::-;1063:7;1086:42;1079:49;;1015:142;:::o;3256:136::-;3314:7;3341:43;3345:1;3348;3341:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;3334:50;;3256:136;;;;:::o;3695:192::-;3781:7;3814:1;3809;:6;;3817:12;3801:29;;;;;;;;;;;;;;;;;;;;;;;;;3841:9;3857:1;3853;:5;3841:17;;3878:1;3871:8;;;3695:192;;;;;:::o;5:130:-1:-;;85:6;72:20;63:29;;97:33;124:5;97:33;;;57:78;;;;;142:134;;226:6;220:13;211:22;;238:33;265:5;238:33;;;205:71;;;;;301:352;;;431:3;424:4;416:6;412:17;408:27;398:2;;449:1;446;439:12;398:2;482:6;469:20;459:30;;509:18;501:6;498:30;495:2;;;541:1;538;531:12;495:2;575:4;567:6;563:17;551:29;;626:3;618:4;610:6;606:17;596:8;592:32;589:41;586:2;;;643:1;640;633:12;586:2;391:262;;;;;;661:128;;742:6;736:13;727:22;;754:30;778:5;754:30;;;721:68;;;;;796:130;;876:6;863:20;854:29;;888:33;915:5;888:33;;;848:78;;;;;933:134;;1017:6;1011:13;1002:22;;1029:33;1056:5;1029:33;;;996:71;;;;;1074:132;;1157:6;1151:13;1142:22;;1169:32;1195:5;1169:32;;;1136:70;;;;;1213:241;;1317:2;1305:9;1296:7;1292:23;1288:32;1285:2;;;1333:1;1330;1323:12;1285:2;1368:1;1385:53;1430:7;1421:6;1410:9;1406:22;1385:53;;;1375:63;;1347:97;1279:175;;;;;1461:263;;1576:2;1564:9;1555:7;1551:23;1547:32;1544:2;;;1592:1;1589;1582:12;1544:2;1627:1;1644:64;1700:7;1691:6;1680:9;1676:22;1644:64;;;1634:74;;1606:108;1538:186;;;;;1731:617;;;;;1886:3;1874:9;1865:7;1861:23;1857:33;1854:2;;;1903:1;1900;1893:12;1854:2;1938:1;1955:53;2000:7;1991:6;1980:9;1976:22;1955:53;;;1945:63;;1917:97;2045:2;2063:53;2108:7;2099:6;2088:9;2084:22;2063:53;;;2053:63;;2024:98;2153:2;2171:53;2216:7;2207:6;2196:9;2192:22;2171:53;;;2161:63;;2132:98;2261:2;2279:53;2324:7;2315:6;2304:9;2300:22;2279:53;;;2269:63;;2240:98;1848:500;;;;;;;;2355:743;;;;;;2527:3;2515:9;2506:7;2502:23;2498:33;2495:2;;;2544:1;2541;2534:12;2495:2;2579:1;2596:53;2641:7;2632:6;2621:9;2617:22;2596:53;;;2586:63;;2558:97;2686:2;2704:53;2749:7;2740:6;2729:9;2725:22;2704:53;;;2694:63;;2665:98;2794:2;2812:53;2857:7;2848:6;2837:9;2833:22;2812:53;;;2802:63;;2773:98;2902:2;2920:53;2965:7;2956:6;2945:9;2941:22;2920:53;;;2910:63;;2881:98;3010:3;3029:53;3074:7;3065:6;3054:9;3050:22;3029:53;;;3019:63;;2989:99;2489:609;;;;;;;;;3105:397;;;3244:2;3232:9;3223:7;3219:23;3215:32;3212:2;;;3260:1;3257;3250:12;3212:2;3323:1;3312:9;3308:17;3295:31;3346:18;3338:6;3335:30;3332:2;;;3378:1;3375;3368:12;3332:2;3406:80;3478:7;3469:6;3458:9;3454:22;3406:80;;;3396:90;;;;3274:218;3206:296;;;;;;3509:263;;3624:2;3612:9;3603:7;3599:23;3595:32;3592:2;;;3640:1;3637;3630:12;3592:2;3675:1;3692:64;3748:7;3739:6;3728:9;3724:22;3692:64;;;3682:74;;3654:108;3586:186;;;;;3779:1349;;;;;;;;;;4026:3;4014:9;4005:7;4001:23;3997:33;3994:2;;;4043:1;4040;4033:12;3994:2;4078:1;4095:64;4151:7;4142:6;4131:9;4127:22;4095:64;;;4085:74;;4057:108;4196:2;4214:64;4270:7;4261:6;4250:9;4246:22;4214:64;;;4204:74;;4175:109;4315:2;4333:64;4389:7;4380:6;4369:9;4365:22;4333:64;;;4323:74;;4294:109;4434:2;4452:64;4508:7;4499:6;4488:9;4484:22;4452:64;;;4442:74;;4413:109;4553:3;4572:64;4628:7;4619:6;4608:9;4604:22;4572:64;;;4562:74;;4532:110;4673:3;4692:64;4748:7;4739:6;4728:9;4724:22;4692:64;;;4682:74;;4652:110;4793:3;4812:64;4868:7;4859:6;4848:9;4844:22;4812:64;;;4802:74;;4772:110;4913:3;4932:63;4987:7;4978:6;4967:9;4963:22;4932:63;;;4922:73;;4892:109;5032:3;5051:61;5104:7;5095:6;5084:9;5080:22;5051:61;;;5041:71;;5011:107;3988:1140;;;;;;;;;;;;5136:173;;5223:46;5265:3;5257:6;5223:46;;;5298:4;5293:3;5289:14;5275:28;;5216:93;;;;;5317:103;5390:24;5408:5;5390:24;;;5385:3;5378:37;5372:48;;;5427:113;5510:24;5528:5;5510:24;;;5505:3;5498:37;5492:48;;;5578:665;;5732:86;5811:6;5806:3;5732:86;;;5725:93;;5839:58;5891:5;5839:58;;;5917:7;5945:1;5930:291;5955:6;5952:1;5949:13;5930:291;;;6016:42;6051:6;6042:7;6016:42;;;6072:63;6131:3;6116:13;6072:63;;;6065:70;;6152:62;6207:6;6152:62;;;6142:72;;5987:234;5977:1;5974;5970:9;5965:14;;5930:291;;;5934:14;6234:3;6227:10;;5712:531;;;;;;;;6251:104;6328:21;6343:5;6328:21;;;6323:3;6316:34;6310:45;;;6362:347;;6474:39;6507:5;6474:39;;;6525:71;6589:6;6584:3;6525:71;;;6518:78;;6601:52;6646:6;6641:3;6634:4;6627:5;6623:16;6601:52;;;6674:29;6696:6;6674:29;;;6669:3;6665:39;6658:46;;6454:255;;;;;;6716:339;;6824:35;6853:5;6824:35;;;6871:71;6935:6;6930:3;6871:71;;;6864:78;;6947:52;6992:6;6987:3;6980:4;6973:5;6969:16;6947:52;;;7020:29;7042:6;7020:29;;;7015:3;7011:39;7004:46;;6804:251;;;;;;7063:320;;7223:67;7287:2;7282:3;7223:67;;;7216:74;;7323:22;7319:1;7314:3;7310:11;7303:43;7374:2;7369:3;7365:12;7358:19;;7209:174;;;;7391:110;7472:23;7489:5;7472:23;;;7467:3;7460:36;7454:47;;;7508:113;7591:24;7609:5;7591:24;;;7586:3;7579:37;7573:48;;;7628:213;;7746:2;7735:9;7731:18;7723:26;;7760:71;7828:1;7817:9;7813:17;7804:6;7760:71;;;7717:124;;;;;7848:324;;7994:2;7983:9;7979:18;7971:26;;8008:71;8076:1;8065:9;8061:17;8052:6;8008:71;;;8090:72;8158:2;8147:9;8143:18;8134:6;8090:72;;;7965:207;;;;;;8179:312;;8319:2;8308:9;8304:18;8296:26;;8333:71;8401:1;8390:9;8386:17;8377:6;8333:71;;;8415:66;8477:2;8466:9;8462:18;8453:6;8415:66;;;8290:201;;;;;;8498:324;;8644:2;8633:9;8629:18;8621:26;;8658:71;8726:1;8715:9;8711:17;8702:6;8658:71;;;8740:72;8808:2;8797:9;8793:18;8784:6;8740:72;;;8615:207;;;;;;8829:435;;9003:2;8992:9;8988:18;8980:26;;9017:71;9085:1;9074:9;9070:17;9061:6;9017:71;;;9099:72;9167:2;9156:9;9152:18;9143:6;9099:72;;;9182;9250:2;9239:9;9235:18;9226:6;9182:72;;;8974:290;;;;;;;9271:543;;9471:3;9460:9;9456:19;9448:27;;9486:71;9554:1;9543:9;9539:17;9530:6;9486:71;;;9568:72;9636:2;9625:9;9621:18;9612:6;9568:72;;;9651;9719:2;9708:9;9704:18;9695:6;9651:72;;;9734:70;9800:2;9789:9;9785:18;9776:6;9734:70;;;9442:372;;;;;;;;9821:547;;10023:3;10012:9;10008:19;10000:27;;10038:71;10106:1;10095:9;10091:17;10082:6;10038:71;;;10120:72;10188:2;10177:9;10173:18;10164:6;10120:72;;;10203;10271:2;10260:9;10256:18;10247:6;10203:72;;;10286;10354:2;10343:9;10339:18;10330:6;10286:72;;;9994:374;;;;;;;;10375:655;;10603:3;10592:9;10588:19;10580:27;;10618:71;10686:1;10675:9;10671:17;10662:6;10618:71;;;10700:72;10768:2;10757:9;10753:18;10744:6;10700:72;;;10783;10851:2;10840:9;10836:18;10827:6;10783:72;;;10866:70;10932:2;10921:9;10917:18;10908:6;10866:70;;;10947:73;11015:3;11004:9;11000:19;10991:6;10947:73;;;10574:456;;;;;;;;;11037:381;;11215:2;11204:9;11200:18;11192:26;;11265:9;11259:4;11255:20;11251:1;11240:9;11236:17;11229:47;11290:118;11403:4;11394:6;11386;11290:118;;;11282:126;;11186:232;;;;;;11425:293;;11559:2;11548:9;11544:18;11536:26;;11609:9;11603:4;11599:20;11595:1;11584:9;11580:17;11573:47;11634:74;11703:4;11694:6;11634:74;;;11626:82;;11530:188;;;;;11725:301;;11863:2;11852:9;11848:18;11840:26;;11913:9;11907:4;11903:20;11899:1;11888:9;11884:17;11877:47;11938:78;12011:4;12002:6;11938:78;;;11930:86;;11834:192;;;;;12033:407;;12224:2;12213:9;12209:18;12201:26;;12274:9;12268:4;12264:20;12260:1;12249:9;12245:17;12238:47;12299:131;12425:4;12299:131;;;12291:139;;12195:245;;;;12447:213;;12565:2;12554:9;12550:18;12542:26;;12579:71;12647:1;12636:9;12632:17;12623:6;12579:71;;;12536:124;;;;;12667:324;;12813:2;12802:9;12798:18;12790:26;;12827:71;12895:1;12884:9;12880:17;12871:6;12827:71;;;12909:72;12977:2;12966:9;12962:18;12953:6;12909:72;;;12784:207;;;;;;12998:435;;13172:2;13161:9;13157:18;13149:26;;13186:71;13254:1;13243:9;13239:17;13230:6;13186:71;;;13268:72;13336:2;13325:9;13321:18;13312:6;13268:72;;;13351;13419:2;13408:9;13404:18;13395:6;13351:72;;;13143:290;;;;;;;13440:118;;13528:3;13520:11;;13514:44;;;;13565:118;;13655:5;13649:12;13639:22;;13620:63;;;;13690:122;;13784:5;13778:12;13768:22;;13749:63;;;;13819:110;;13919:4;13914:3;13910:14;13902:22;;13896:33;;;;13937:178;;14067:6;14062:3;14055:19;14104:4;14099:3;14095:14;14080:29;;14048:67;;;;;14124:163;;14239:6;14234:3;14227:19;14276:4;14271:3;14267:14;14252:29;;14220:67;;;;;14296:119;;14370:39;14405:2;14400:3;14396:12;14391:3;14370:39;;;14361:48;;14354:61;;;;;14423:91;;14485:24;14503:5;14485:24;;;14474:35;;14468:46;;;;14521:85;;14594:5;14587:13;14580:21;14569:32;;14563:43;;;;14613:84;;14685:6;14678:5;14674:18;14663:29;;14657:40;;;;14704:121;;14777:42;14770:5;14766:54;14755:65;;14749:76;;;;14832:72;;14894:5;14883:16;;14877:27;;;;14911:90;;14983:12;14976:5;14972:24;14961:35;;14955:46;;;;15009:268;15074:1;15081:101;15095:6;15092:1;15089:13;15081:101;;;15171:1;15166:3;15162:11;15156:18;15152:1;15147:3;15143:11;15136:39;15117:2;15114:1;15110:10;15105:15;;15081:101;;;15197:6;15194:1;15191:13;15188:2;;;15262:1;15253:6;15248:3;15244:16;15237:27;15188:2;15058:219;;;;;15285:97;;15373:2;15369:7;15364:2;15357:5;15353:14;15349:28;15339:38;;15333:49;;;;15390:117;15459:24;15477:5;15459:24;;;15452:5;15449:35;15439:2;;15498:1;15495;15488:12;15439:2;15433:74;;15514:111;15580:21;15595:5;15580:21;;;15573:5;15570:32;15560:2;;15616:1;15613;15606:12;15560:2;15554:71;;15632:117;15701:24;15719:5;15701:24;;;15694:5;15691:35;15681:2;;15740:1;15737;15730:12;15681:2;15675:74;;15756:115;15824:23;15841:5;15824:23;;;15817:5;15814:34;15804:2;;15862:1;15859;15852:12;15804:2;15798:73;
Swarm Source
ipfs://fe84969c6e8297ef80372d8b6340080ef0a33f673c1681c56bc50af0a5f3db25
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 30 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.