More Info
Private Name Tags
ContractCreator
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Latest 25 internal transactions (View All)
Advanced mode:
Parent Transaction Hash | Block |
From
|
To
|
|||
---|---|---|---|---|---|---|
14529142 | 1028 days ago | 0.65670696 ETH | ||||
14529142 | 1028 days ago | 0.65670696 ETH | ||||
14516624 | 1030 days ago | 0.01701076 ETH | ||||
14516624 | 1030 days ago | 0.01701076 ETH | ||||
14512961 | 1031 days ago | 0.00919602 ETH | ||||
14512961 | 1031 days ago | 0.00919602 ETH | ||||
14505225 | 1032 days ago | 0.0162662 ETH | ||||
14505225 | 1032 days ago | 0.0162662 ETH | ||||
14502616 | 1033 days ago | 0.00915283 ETH | ||||
14502616 | 1033 days ago | 0.00915283 ETH | ||||
14500275 | 1033 days ago | 0.01072777 ETH | ||||
14500275 | 1033 days ago | 0.01072777 ETH | ||||
14499927 | 1033 days ago | 0.01069052 ETH | ||||
14499927 | 1033 days ago | 0.01069052 ETH | ||||
14499920 | 1033 days ago | 0.00893376 ETH | ||||
14499920 | 1033 days ago | 0.00893376 ETH | ||||
14498883 | 1033 days ago | 0.04482685 ETH | ||||
14498883 | 1033 days ago | 0.04482685 ETH | ||||
14496941 | 1034 days ago | 0.00727049 ETH | ||||
14496941 | 1034 days ago | 0.00727049 ETH | ||||
14496860 | 1034 days ago | 0.01413714 ETH | ||||
14496860 | 1034 days ago | 0.01413714 ETH | ||||
14496795 | 1034 days ago | 0.01413714 ETH | ||||
14496795 | 1034 days ago | 0.01413714 ETH | ||||
14496732 | 1034 days ago | 0.00992232 ETH |
Loading...
Loading
Contract Source Code Verified (Exact Match)
Contract Name:
DividendDistributor
Compiler Version
v0.8.7+commit.e28d00a7
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2022-03-22 */ // File: @openzeppelin/contracts/token/ERC20/IERC20.sol // SPDX-License-Identifier: MIT // OpenZeppelin Contracts v4.4.1 (token/ERC20/IERC20.sol) pragma solidity ^0.8.0; /** * @dev Interface of the ERC20 standard as defined in the EIP. */ interface IERC20 { /** * @dev Returns the amount of tokens in existence. */ function totalSupply() external view returns (uint256); /** * @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 `recipient`. * * Returns a boolean value indicating whether the operation succeeded. * * Emits a {Transfer} event. */ function transfer(address recipient, uint256 amount) external returns (bool); /** * @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 returns (bool); /** * @dev Moves `amount` tokens from `sender` to `recipient` 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 sender, address recipient, uint256 amount ) external returns (bool); /** * @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); } // File: @openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol // OpenZeppelin Contracts v4.4.1 (token/ERC20/extensions/IERC20Metadata.sol) pragma solidity ^0.8.0; /** * @dev Interface for the optional metadata functions from the ERC20 standard. * * _Available since v4.1._ */ interface IERC20Metadata is IERC20 { /** * @dev Returns the name of the token. */ function name() external view returns (string memory); /** * @dev Returns the symbol of the token. */ function symbol() external view returns (string memory); /** * @dev Returns the decimals places of the token. */ function decimals() external view returns (uint8); } // File: @openzeppelin/contracts/utils/Context.sol // OpenZeppelin Contracts v4.4.1 (utils/Context.sol) pragma solidity ^0.8.0; /** * @dev Provides information about the current execution context, including the * sender of the transaction and its data. While these are generally available * via msg.sender and msg.data, they should not be accessed in such a direct * manner, since when dealing with meta-transactions the account sending and * paying for execution may not be the actual sender (as far as an application * is concerned). * * This contract is only required for intermediate, library-like contracts. */ abstract contract Context { function _msgSender() internal view virtual returns (address) { return msg.sender; } function _msgData() internal view virtual returns (bytes calldata) { return msg.data; } } // File: @openzeppelin/contracts/utils/math/SafeMath.sol // OpenZeppelin Contracts v4.4.1 (utils/math/SafeMath.sol) pragma solidity ^0.8.0; // CAUTION // This version of SafeMath should only be used with Solidity 0.8 or later, // because it relies on the compiler's built in overflow checks. /** * @dev Wrappers over Solidity's arithmetic operations. * * NOTE: `SafeMath` is generally not needed starting with Solidity 0.8, since the compiler * now has built in overflow checking. */ library SafeMath { /** * @dev Returns the addition of two unsigned integers, with an overflow flag. * * _Available since v3.4._ */ function tryAdd(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { uint256 c = a + b; if (c < a) return (false, 0); return (true, c); } } /** * @dev Returns the substraction of two unsigned integers, with an overflow flag. * * _Available since v3.4._ */ function trySub(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { if (b > a) return (false, 0); return (true, a - b); } } /** * @dev Returns the multiplication of two unsigned integers, with an overflow flag. * * _Available since v3.4._ */ function tryMul(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { // 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 (true, 0); uint256 c = a * b; if (c / a != b) return (false, 0); return (true, c); } } /** * @dev Returns the division of two unsigned integers, with a division by zero flag. * * _Available since v3.4._ */ function tryDiv(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { if (b == 0) return (false, 0); return (true, a / b); } } /** * @dev Returns the remainder of dividing two unsigned integers, with a division by zero flag. * * _Available since v3.4._ */ function tryMod(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { if (b == 0) return (false, 0); return (true, a % b); } } /** * @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) { return a + b; } /** * @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 a - b; } /** * @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) { return a * b; } /** * @dev Returns the integer division of two unsigned integers, reverting on * division by zero. The result is rounded towards zero. * * Counterpart to Solidity's `/` operator. * * Requirements: * * - The divisor cannot be zero. */ function div(uint256 a, uint256 b) internal pure returns (uint256) { return a / b; } /** * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo), * reverting 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 a % b; } /** * @dev Returns the subtraction of two unsigned integers, reverting with custom message on * overflow (when the result is negative). * * CAUTION: This function is deprecated because it requires allocating memory for the error * message unnecessarily. For custom revert reasons use {trySub}. * * Counterpart to Solidity's `-` operator. * * Requirements: * * - Subtraction cannot overflow. */ function sub( uint256 a, uint256 b, string memory errorMessage ) internal pure returns (uint256) { unchecked { require(b <= a, errorMessage); return a - b; } } /** * @dev Returns the integer division of two unsigned integers, reverting 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) { unchecked { require(b > 0, errorMessage); return a / b; } } /** * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo), * reverting with custom message when dividing by zero. * * CAUTION: This function is deprecated because it requires allocating memory for the error * message unnecessarily. For custom revert reasons use {tryMod}. * * 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) { unchecked { require(b > 0, errorMessage); return a % b; } } } // File: @openzeppelin/contracts/access/Ownable.sol // OpenZeppelin Contracts v4.4.1 (access/Ownable.sol) pragma solidity ^0.8.0; /** * @dev Contract module which provides a basic access control mechanism, where * there is an account (an owner) that can be granted exclusive access to * specific functions. * * By default, the owner account will be the one that deploys the contract. This * can later be changed with {transferOwnership}. * * This module is used through inheritance. It will make available the modifier * `onlyOwner`, which can be applied to your functions to restrict their use to * the owner. */ abstract contract Ownable is Context { address private _owner; event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); /** * @dev Initializes the contract setting the deployer as the initial owner. */ constructor() { _transferOwnership(_msgSender()); } /** * @dev Returns the address of the current owner. */ function owner() public view virtual returns (address) { return _owner; } /** * @dev Throws if called by any account other than the owner. */ modifier onlyOwner() { require(owner() == _msgSender(), "Ownable: caller is not the owner"); _; } /** * @dev Leaves the contract without owner. It will not be possible to call * `onlyOwner` functions anymore. Can only be called by the current owner. * * NOTE: Renouncing ownership will leave the contract without an owner, * thereby removing any functionality that is only available to the owner. */ function renounceOwnership() public virtual onlyOwner { _transferOwnership(address(0)); } /** * @dev Transfers ownership of the contract to a new account (`newOwner`). * Can only be called by the current owner. */ function transferOwnership(address newOwner) public virtual onlyOwner { require(newOwner != address(0), "Ownable: new owner is the zero address"); _transferOwnership(newOwner); } /** * @dev Transfers ownership of the contract to a new account (`newOwner`). * Internal function without access restriction. */ function _transferOwnership(address newOwner) internal virtual { address oldOwner = _owner; _owner = newOwner; emit OwnershipTransferred(oldOwner, newOwner); } } interface IBURNER { function burnEmUp() external payable; } interface IUniswapV2Factory { function createPair(address tokenA, address tokenB) external returns (address pair); } interface IUniswapV2Router02 { function swapExactTokensForETHSupportingFeeOnTransferTokens( 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 factory() external pure returns (address); function WETH() external pure returns (address); function addLiquidityETH( address token, uint amountTokenDesired, uint amountTokenMin, uint amountETHMin, address to, uint deadline ) external payable returns (uint amountToken, uint amountETH, uint liquidity); function removeLiquidityETH( address token, uint liquidity, uint amountTokenMin, uint amountETHMin, address to, uint deadline ) external returns (uint amountToken, uint amountETH); } interface IDividendDistributor { function setDistributionCriteria(uint256 _minPeriod, uint256 _minDistribution) external; function setShare(address shareholder, uint256 amount) external; function deposit() external payable; function process(uint256 gas) external; } contract DividendDistributor is IDividendDistributor { using SafeMath for uint256; address _token; struct Share { uint256 amount; uint256 totalExcluded; uint256 totalRealised; } IUniswapV2Router02 router; IERC20 public RewardToken; address[] shareholders; mapping (address => uint256) shareholderIndexes; mapping (address => uint256) shareholderClaims; mapping (address => Share) public shares; uint256 public totalShares; uint256 public totalDividends; uint256 public totalDistributed; uint256 public dividendsPerShare; uint256 public dividendsPerShareAccuracyFactor = 10 ** 36; uint256 public minPeriod = 30 minutes; uint256 public minDistribution = 1 * (10 ** 18); uint256 currentIndex; bool initialized; modifier initialization() { require(!initialized); _; initialized = true; } modifier onlyToken() { require(msg.sender == _token); _; } constructor (address _router, address _reflectionToken, address token) { router = IUniswapV2Router02(_router); RewardToken = IERC20(_reflectionToken); _token = token; } function setDistributionCriteria(uint256 newMinPeriod, uint256 newMinDistribution) external override onlyToken { minPeriod = newMinPeriod; minDistribution = newMinDistribution; } function setShare(address shareholder, uint256 amount) external override onlyToken { if(shares[shareholder].amount > 0){ distributeDividend(shareholder); } if(amount > 0 && shares[shareholder].amount == 0){ addShareholder(shareholder); }else if(amount == 0 && shares[shareholder].amount > 0){ removeShareholder(shareholder); } totalShares = totalShares.sub(shares[shareholder].amount).add(amount); shares[shareholder].amount = amount; shares[shareholder].totalExcluded = getCumulativeDividends(shares[shareholder].amount); } function deposit() external payable override onlyToken { uint256 balanceBefore = RewardToken.balanceOf(address(this)); address[] memory path = new address[](2); path[0] = router.WETH(); path[1] = address(RewardToken); router.swapExactETHForTokensSupportingFeeOnTransferTokens{value: msg.value}( 0, path, address(this), block.timestamp ); uint256 amount = RewardToken.balanceOf(address(this)).sub(balanceBefore); totalDividends = totalDividends.add(amount); dividendsPerShare = dividendsPerShare.add(dividendsPerShareAccuracyFactor.mul(amount).div(totalShares)); } function process(uint256 gas) external override onlyToken { uint256 shareholderCount = shareholders.length; if(shareholderCount == 0) { return; } uint256 iterations = 0; uint256 gasUsed = 0; uint256 gasLeft = gasleft(); while(gasUsed < gas && iterations < shareholderCount) { if(currentIndex >= shareholderCount){ currentIndex = 0; } if(shouldDistribute(shareholders[currentIndex])){ distributeDividend(shareholders[currentIndex]); } gasUsed = gasUsed.add(gasLeft.sub(gasleft())); gasLeft = gasleft(); currentIndex++; iterations++; } } function shouldDistribute(address shareholder) internal view returns (bool) { return shareholderClaims[shareholder] + minPeriod < block.timestamp && getUnpaidEarnings(shareholder) > minDistribution; } function distributeDividend(address shareholder) internal { if(shares[shareholder].amount == 0){ return; } uint256 amount = getUnpaidEarnings(shareholder); if(amount > 0){ totalDistributed = totalDistributed.add(amount); RewardToken.transfer(shareholder, amount); shareholderClaims[shareholder] = block.timestamp; shares[shareholder].totalRealised = shares[shareholder].totalRealised.add(amount); shares[shareholder].totalExcluded = getCumulativeDividends(shares[shareholder].amount); } } function claimDividend() external { require(shouldDistribute(msg.sender), "Too soon. Need to wait!"); distributeDividend(msg.sender); } function getUnpaidEarnings(address shareholder) public view returns (uint256) { if(shares[shareholder].amount == 0){ return 0; } uint256 shareholderTotalDividends = getCumulativeDividends(shares[shareholder].amount); uint256 shareholderTotalExcluded = shares[shareholder].totalExcluded; if(shareholderTotalDividends <= shareholderTotalExcluded){ return 0; } return shareholderTotalDividends.sub(shareholderTotalExcluded); } function getCumulativeDividends(uint256 share) internal view returns (uint256) { return share.mul(dividendsPerShare).div(dividendsPerShareAccuracyFactor); } function addShareholder(address shareholder) internal { shareholderIndexes[shareholder] = shareholders.length; shareholders.push(shareholder); } function removeShareholder(address shareholder) internal { shareholders[shareholderIndexes[shareholder]] = shareholders[shareholders.length-1]; shareholderIndexes[shareholders[shareholders.length-1]] = shareholderIndexes[shareholder]; shareholders.pop(); } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[{"internalType":"address","name":"_router","type":"address"},{"internalType":"address","name":"_reflectionToken","type":"address"},{"internalType":"address","name":"token","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"name":"RewardToken","outputs":[{"internalType":"contract IERC20","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"claimDividend","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"deposit","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"dividendsPerShare","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"dividendsPerShareAccuracyFactor","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"shareholder","type":"address"}],"name":"getUnpaidEarnings","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"minDistribution","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"minPeriod","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"gas","type":"uint256"}],"name":"process","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newMinPeriod","type":"uint256"},{"internalType":"uint256","name":"newMinDistribution","type":"uint256"}],"name":"setDistributionCriteria","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"shareholder","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"setShare","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"shares","outputs":[{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint256","name":"totalExcluded","type":"uint256"},{"internalType":"uint256","name":"totalRealised","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalDistributed","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalDividends","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalShares","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"}]
Contract Creation Code
60806040526ec097ce7bc90715b34b9f1000000000600b55610708600c55670de0b6b3a7640000600d553480156200003657600080fd5b5060405162001e5638038062001e5683398181016040528101906200005c91906200013e565b82600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555081600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550505050620001ed565b6000815190506200013881620001d3565b92915050565b6000806000606084860312156200015a5762000159620001ce565b5b60006200016a8682870162000127565b93505060206200017d8682870162000127565b9250506040620001908682870162000127565b9150509250925092565b6000620001a782620001ae565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600080fd5b620001de816200019a565b8114620001ea57600080fd5b50565b611c5980620001fd6000396000f3fe6080604052600436106100e85760003560e01c8063ce7c2ac21161008a578063f0fc6bca11610059578063f0fc6bca146102c7578063f1e9f1e5146102de578063ffb2c47914610309578063ffd49c8414610332576100e8565b8063ce7c2ac214610228578063d0e30db014610267578063e2d2e21914610271578063efca2eed1461029c576100e8565b80632d48e896116100c65780632d48e8961461017e5780633a98ef39146101a75780634fab0ae8146101d2578063997664d7146101fd576100e8565b806311ce023d146100ed57806314b6ca961461011857806328fd319814610141575b600080fd5b3480156100f957600080fd5b5061010261035d565b60405161010f919061183b565b60405180910390f35b34801561012457600080fd5b5061013f600480360381019061013a9190611585565b610363565b005b34801561014d57600080fd5b506101686004803603810190610163919061152b565b610622565b604051610175919061183b565b60405180910390f35b34801561018a57600080fd5b506101a560048036038101906101a0919061164c565b61073c565b005b3480156101b357600080fd5b506101bc6107a6565b6040516101c9919061183b565b60405180910390f35b3480156101de57600080fd5b506101e76107ac565b6040516101f4919061183b565b60405180910390f35b34801561020957600080fd5b506102126107b2565b60405161021f919061183b565b60405180910390f35b34801561023457600080fd5b5061024f600480360381019061024a919061152b565b6107b8565b60405161025e93929190611856565b60405180910390f35b61026f6107e2565b005b34801561027d57600080fd5b50610286610c4f565b604051610293919061183b565b60405180910390f35b3480156102a857600080fd5b506102b1610c55565b6040516102be919061183b565b60405180910390f35b3480156102d357600080fd5b506102dc610c5b565b005b3480156102ea57600080fd5b506102f3610cae565b60405161030091906117b4565b60405180910390f35b34801561031557600080fd5b50610330600480360381019061032b91906115f2565b610cd4565b005b34801561033e57600080fd5b50610347610e68565b604051610354919061183b565b60405180910390f35b600b5481565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146103bb57600080fd5b6000600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000015411156104105761040f82610e6e565b5b60008111801561046257506000600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000154145b156104755761047082611115565b6104d7565b6000811480156104c757506000600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000154115b156104d6576104d5826111c4565b5b5b61054081610532600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001546007546113cb90919063ffffffff16565b6113e190919063ffffffff16565b60078190555080600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001819055506105d8600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001546113f7565b600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600101819055505050565b600080600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000015414156106775760009050610737565b60006106c4600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001546113f7565b90506000600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010154905080821161071f57600092505050610737565b61073281836113cb90919063ffffffff16565b925050505b919050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461079457600080fd5b81600c8190555080600d819055505050565b60075481565b600d5481565b60085481565b60066020528060005260406000206000915090508060000154908060010154908060020154905083565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461083a57600080fd5b6000600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016108979190611770565b60206040518083038186803b1580156108af57600080fd5b505afa1580156108c3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108e7919061161f565b90506000600267ffffffffffffffff81111561090657610905611b81565b5b6040519080825280602002602001820160405280156109345781602001602082028036833780820191505090505b509050600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561099f57600080fd5b505afa1580156109b3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109d79190611558565b816000815181106109eb576109ea611b52565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681600181518110610a5c57610a5b611b52565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663b6f9de953460008430426040518663ffffffff1660e01b8152600401610af994939291906117cf565b6000604051808303818588803b158015610b1257600080fd5b505af1158015610b26573d6000803e3d6000fd5b50505050506000610bea83600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401610b8c9190611770565b60206040518083038186803b158015610ba457600080fd5b505afa158015610bb8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bdc919061161f565b6113cb90919063ffffffff16565b9050610c01816008546113e190919063ffffffff16565b600881905550610c44610c33600754610c2584600b5461142990919063ffffffff16565b61143f90919063ffffffff16565b600a546113e190919063ffffffff16565b600a81905550505050565b600a5481565b60095481565b610c6433611455565b610ca3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c9a9061181b565b60405180910390fd5b610cac33610e6e565b565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610d2c57600080fd5b600060038054905090506000811415610d455750610e65565b60008060005a90505b8482108015610d5c57508383105b15610e605783600e5410610d73576000600e819055505b610dbc6003600e5481548110610d8c57610d8b611b52565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16611455565b15610e0b57610e0a6003600e5481548110610dda57610dd9611b52565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16610e6e565b5b610e30610e215a836113cb90919063ffffffff16565b836113e190919063ffffffff16565b91505a9050600e6000815480929190610e4890611a7c565b91905055508280610e5890611a7c565b935050610d4e565b505050505b50565b600c5481565b6000600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001541415610ebe57611112565b6000610ec982610622565b9050600081111561111057610ee9816009546113e190919063ffffffff16565b600981905550600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb83836040518363ffffffff1660e01b8152600401610f4c92919061178b565b602060405180830381600087803b158015610f6657600080fd5b505af1158015610f7a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f9e91906115c5565b5042600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061103881600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600201546113e190919063ffffffff16565b600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600201819055506110c9600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001546113f7565b600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600101819055505b505b50565b600380549050600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506003819080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600360016003805490506111d891906119b8565b815481106111e9576111e8611b52565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166003600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548154811061126757611266611b52565b5b9060005260206000200160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600460008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054600460006003600160038054905061130791906119b8565b8154811061131857611317611b52565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600380548061139357611392611b23565b5b6001900381819060005260206000200160006101000a81549073ffffffffffffffffffffffffffffffffffffffff0219169055905550565b600081836113d991906119b8565b905092915050565b600081836113ef91906118d7565b905092915050565b6000611422600b54611414600a548561142990919063ffffffff16565b61143f90919063ffffffff16565b9050919050565b60008183611437919061195e565b905092915050565b6000818361144d919061192d565b905092915050565b600042600c54600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546114a591906118d7565b1080156114bb5750600d546114b983610622565b115b9050919050565b6000813590506114d181611bde565b92915050565b6000815190506114e681611bde565b92915050565b6000815190506114fb81611bf5565b92915050565b60008135905061151081611c0c565b92915050565b60008151905061152581611c0c565b92915050565b60006020828403121561154157611540611bb0565b5b600061154f848285016114c2565b91505092915050565b60006020828403121561156e5761156d611bb0565b5b600061157c848285016114d7565b91505092915050565b6000806040838503121561159c5761159b611bb0565b5b60006115aa858286016114c2565b92505060206115bb85828601611501565b9150509250929050565b6000602082840312156115db576115da611bb0565b5b60006115e9848285016114ec565b91505092915050565b60006020828403121561160857611607611bb0565b5b600061161684828501611501565b91505092915050565b60006020828403121561163557611634611bb0565b5b600061164384828501611516565b91505092915050565b6000806040838503121561166357611662611bb0565b5b600061167185828601611501565b925050602061168285828601611501565b9150509250929050565b600061169883836116a4565b60208301905092915050565b6116ad816119ec565b82525050565b6116bc816119ec565b82525050565b60006116cd8261189d565b6116d781856118b5565b93506116e28361188d565b8060005b838110156117135781516116fa888261168c565b9750611705836118a8565b9250506001810190506116e6565b5085935050505092915050565b61172981611a34565b82525050565b61173881611a46565b82525050565b600061174b6017836118c6565b915061175682611bb5565b602082019050919050565b61176a81611a2a565b82525050565b600060208201905061178560008301846116b3565b92915050565b60006040820190506117a060008301856116b3565b6117ad6020830184611761565b9392505050565b60006020820190506117c96000830184611720565b92915050565b60006080820190506117e4600083018761172f565b81810360208301526117f681866116c2565b905061180560408301856116b3565b6118126060830184611761565b95945050505050565b600060208201905081810360008301526118348161173e565b9050919050565b60006020820190506118506000830184611761565b92915050565b600060608201905061186b6000830186611761565b6118786020830185611761565b6118856040830184611761565b949350505050565b6000819050602082019050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600082825260208201905092915050565b60006118e282611a2a565b91506118ed83611a2a565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111561192257611921611ac5565b5b828201905092915050565b600061193882611a2a565b915061194383611a2a565b92508261195357611952611af4565b5b828204905092915050565b600061196982611a2a565b915061197483611a2a565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156119ad576119ac611ac5565b5b828202905092915050565b60006119c382611a2a565b91506119ce83611a2a565b9250828210156119e1576119e0611ac5565b5b828203905092915050565b60006119f782611a0a565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b6000611a3f82611a58565b9050919050565b6000611a5182611a2a565b9050919050565b6000611a6382611a6a565b9050919050565b6000611a7582611a0a565b9050919050565b6000611a8782611a2a565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415611aba57611ab9611ac5565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b7f546f6f20736f6f6e2e204e65656420746f207761697421000000000000000000600082015250565b611be7816119ec565b8114611bf257600080fd5b50565b611bfe816119fe565b8114611c0957600080fd5b50565b611c1581611a2a565b8114611c2057600080fd5b5056fea2646970667358221220e4db651e254537d446ad412eaa6b1266c91e306fe21417ef98a2381c1ba0268264736f6c634300080700330000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d0000000000000000000000004d224452801aced8b2f0aebe155379bb5d594381000000000000000000000000300af88747b3f913012753071f209b48b30ea1ac
Deployed Bytecode
0x6080604052600436106100e85760003560e01c8063ce7c2ac21161008a578063f0fc6bca11610059578063f0fc6bca146102c7578063f1e9f1e5146102de578063ffb2c47914610309578063ffd49c8414610332576100e8565b8063ce7c2ac214610228578063d0e30db014610267578063e2d2e21914610271578063efca2eed1461029c576100e8565b80632d48e896116100c65780632d48e8961461017e5780633a98ef39146101a75780634fab0ae8146101d2578063997664d7146101fd576100e8565b806311ce023d146100ed57806314b6ca961461011857806328fd319814610141575b600080fd5b3480156100f957600080fd5b5061010261035d565b60405161010f919061183b565b60405180910390f35b34801561012457600080fd5b5061013f600480360381019061013a9190611585565b610363565b005b34801561014d57600080fd5b506101686004803603810190610163919061152b565b610622565b604051610175919061183b565b60405180910390f35b34801561018a57600080fd5b506101a560048036038101906101a0919061164c565b61073c565b005b3480156101b357600080fd5b506101bc6107a6565b6040516101c9919061183b565b60405180910390f35b3480156101de57600080fd5b506101e76107ac565b6040516101f4919061183b565b60405180910390f35b34801561020957600080fd5b506102126107b2565b60405161021f919061183b565b60405180910390f35b34801561023457600080fd5b5061024f600480360381019061024a919061152b565b6107b8565b60405161025e93929190611856565b60405180910390f35b61026f6107e2565b005b34801561027d57600080fd5b50610286610c4f565b604051610293919061183b565b60405180910390f35b3480156102a857600080fd5b506102b1610c55565b6040516102be919061183b565b60405180910390f35b3480156102d357600080fd5b506102dc610c5b565b005b3480156102ea57600080fd5b506102f3610cae565b60405161030091906117b4565b60405180910390f35b34801561031557600080fd5b50610330600480360381019061032b91906115f2565b610cd4565b005b34801561033e57600080fd5b50610347610e68565b604051610354919061183b565b60405180910390f35b600b5481565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146103bb57600080fd5b6000600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000015411156104105761040f82610e6e565b5b60008111801561046257506000600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000154145b156104755761047082611115565b6104d7565b6000811480156104c757506000600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000154115b156104d6576104d5826111c4565b5b5b61054081610532600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001546007546113cb90919063ffffffff16565b6113e190919063ffffffff16565b60078190555080600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001819055506105d8600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001546113f7565b600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600101819055505050565b600080600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000015414156106775760009050610737565b60006106c4600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001546113f7565b90506000600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010154905080821161071f57600092505050610737565b61073281836113cb90919063ffffffff16565b925050505b919050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461079457600080fd5b81600c8190555080600d819055505050565b60075481565b600d5481565b60085481565b60066020528060005260406000206000915090508060000154908060010154908060020154905083565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461083a57600080fd5b6000600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016108979190611770565b60206040518083038186803b1580156108af57600080fd5b505afa1580156108c3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108e7919061161f565b90506000600267ffffffffffffffff81111561090657610905611b81565b5b6040519080825280602002602001820160405280156109345781602001602082028036833780820191505090505b509050600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561099f57600080fd5b505afa1580156109b3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109d79190611558565b816000815181106109eb576109ea611b52565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681600181518110610a5c57610a5b611b52565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663b6f9de953460008430426040518663ffffffff1660e01b8152600401610af994939291906117cf565b6000604051808303818588803b158015610b1257600080fd5b505af1158015610b26573d6000803e3d6000fd5b50505050506000610bea83600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401610b8c9190611770565b60206040518083038186803b158015610ba457600080fd5b505afa158015610bb8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bdc919061161f565b6113cb90919063ffffffff16565b9050610c01816008546113e190919063ffffffff16565b600881905550610c44610c33600754610c2584600b5461142990919063ffffffff16565b61143f90919063ffffffff16565b600a546113e190919063ffffffff16565b600a81905550505050565b600a5481565b60095481565b610c6433611455565b610ca3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c9a9061181b565b60405180910390fd5b610cac33610e6e565b565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610d2c57600080fd5b600060038054905090506000811415610d455750610e65565b60008060005a90505b8482108015610d5c57508383105b15610e605783600e5410610d73576000600e819055505b610dbc6003600e5481548110610d8c57610d8b611b52565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16611455565b15610e0b57610e0a6003600e5481548110610dda57610dd9611b52565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16610e6e565b5b610e30610e215a836113cb90919063ffffffff16565b836113e190919063ffffffff16565b91505a9050600e6000815480929190610e4890611a7c565b91905055508280610e5890611a7c565b935050610d4e565b505050505b50565b600c5481565b6000600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001541415610ebe57611112565b6000610ec982610622565b9050600081111561111057610ee9816009546113e190919063ffffffff16565b600981905550600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb83836040518363ffffffff1660e01b8152600401610f4c92919061178b565b602060405180830381600087803b158015610f6657600080fd5b505af1158015610f7a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f9e91906115c5565b5042600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061103881600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600201546113e190919063ffffffff16565b600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600201819055506110c9600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001546113f7565b600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600101819055505b505b50565b600380549050600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506003819080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600360016003805490506111d891906119b8565b815481106111e9576111e8611b52565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166003600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548154811061126757611266611b52565b5b9060005260206000200160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600460008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054600460006003600160038054905061130791906119b8565b8154811061131857611317611b52565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600380548061139357611392611b23565b5b6001900381819060005260206000200160006101000a81549073ffffffffffffffffffffffffffffffffffffffff0219169055905550565b600081836113d991906119b8565b905092915050565b600081836113ef91906118d7565b905092915050565b6000611422600b54611414600a548561142990919063ffffffff16565b61143f90919063ffffffff16565b9050919050565b60008183611437919061195e565b905092915050565b6000818361144d919061192d565b905092915050565b600042600c54600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546114a591906118d7565b1080156114bb5750600d546114b983610622565b115b9050919050565b6000813590506114d181611bde565b92915050565b6000815190506114e681611bde565b92915050565b6000815190506114fb81611bf5565b92915050565b60008135905061151081611c0c565b92915050565b60008151905061152581611c0c565b92915050565b60006020828403121561154157611540611bb0565b5b600061154f848285016114c2565b91505092915050565b60006020828403121561156e5761156d611bb0565b5b600061157c848285016114d7565b91505092915050565b6000806040838503121561159c5761159b611bb0565b5b60006115aa858286016114c2565b92505060206115bb85828601611501565b9150509250929050565b6000602082840312156115db576115da611bb0565b5b60006115e9848285016114ec565b91505092915050565b60006020828403121561160857611607611bb0565b5b600061161684828501611501565b91505092915050565b60006020828403121561163557611634611bb0565b5b600061164384828501611516565b91505092915050565b6000806040838503121561166357611662611bb0565b5b600061167185828601611501565b925050602061168285828601611501565b9150509250929050565b600061169883836116a4565b60208301905092915050565b6116ad816119ec565b82525050565b6116bc816119ec565b82525050565b60006116cd8261189d565b6116d781856118b5565b93506116e28361188d565b8060005b838110156117135781516116fa888261168c565b9750611705836118a8565b9250506001810190506116e6565b5085935050505092915050565b61172981611a34565b82525050565b61173881611a46565b82525050565b600061174b6017836118c6565b915061175682611bb5565b602082019050919050565b61176a81611a2a565b82525050565b600060208201905061178560008301846116b3565b92915050565b60006040820190506117a060008301856116b3565b6117ad6020830184611761565b9392505050565b60006020820190506117c96000830184611720565b92915050565b60006080820190506117e4600083018761172f565b81810360208301526117f681866116c2565b905061180560408301856116b3565b6118126060830184611761565b95945050505050565b600060208201905081810360008301526118348161173e565b9050919050565b60006020820190506118506000830184611761565b92915050565b600060608201905061186b6000830186611761565b6118786020830185611761565b6118856040830184611761565b949350505050565b6000819050602082019050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600082825260208201905092915050565b60006118e282611a2a565b91506118ed83611a2a565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111561192257611921611ac5565b5b828201905092915050565b600061193882611a2a565b915061194383611a2a565b92508261195357611952611af4565b5b828204905092915050565b600061196982611a2a565b915061197483611a2a565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156119ad576119ac611ac5565b5b828202905092915050565b60006119c382611a2a565b91506119ce83611a2a565b9250828210156119e1576119e0611ac5565b5b828203905092915050565b60006119f782611a0a565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b6000611a3f82611a58565b9050919050565b6000611a5182611a2a565b9050919050565b6000611a6382611a6a565b9050919050565b6000611a7582611a0a565b9050919050565b6000611a8782611a2a565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415611aba57611ab9611ac5565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b7f546f6f20736f6f6e2e204e65656420746f207761697421000000000000000000600082015250565b611be7816119ec565b8114611bf257600080fd5b50565b611bfe816119fe565b8114611c0957600080fd5b50565b611c1581611a2a565b8114611c2057600080fd5b5056fea2646970667358221220e4db651e254537d446ad412eaa6b1266c91e306fe21417ef98a2381c1ba0268264736f6c63430008070033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d0000000000000000000000004d224452801aced8b2f0aebe155379bb5d594381000000000000000000000000300af88747b3f913012753071f209b48b30ea1ac
-----Decoded View---------------
Arg [0] : _router (address): 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D
Arg [1] : _reflectionToken (address): 0x4d224452801ACEd8B2F0aebE155379bb5D594381
Arg [2] : token (address): 0x300Af88747b3F913012753071F209b48b30EA1AC
-----Encoded View---------------
3 Constructor Arguments found :
Arg [0] : 0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d
Arg [1] : 0000000000000000000000004d224452801aced8b2f0aebe155379bb5d594381
Arg [2] : 000000000000000000000000300af88747b3f913012753071f209b48b30ea1ac
Deployed Bytecode Sourcemap
15670:5718:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16304:57;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17134:646;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;20257:479;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16925:201;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16158:26;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16414:47;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16191:29;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16109:40;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;;17788:709;;;:::i;:::-;;16265:32;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16227:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20091:158;;;;;;;;;;;;;:::i;:::-;;15938:25;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18509:723;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16370:37;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16304:57;;;;:::o;17134:646::-;16691:6;;;;;;;;;;16677:20;;:10;:20;;;16669:29;;;;;;17262:1:::1;17233:6;:19;17240:11;17233:19;;;;;;;;;;;;;;;:26;;;:30;17230:92;;;17279:31;17298:11;17279:18;:31::i;:::-;17230:92;17346:1;17337:6;:10;:45;;;;;17381:1;17351:6;:19;17358:11;17351:19;;;;;;;;;;;;;;;:26;;;:31;17337:45;17334:214;;;17398:27;17413:11;17398:14;:27::i;:::-;17334:214;;;17455:1;17445:6;:11;:45;;;;;17489:1;17460:6;:19;17467:11;17460:19;;;;;;;;;;;;;;;:26;;;:30;17445:45;17442:106;;;17506:30;17524:11;17506:17;:30::i;:::-;17442:106;17334:214;17574:55;17622:6;17574:43;17590:6;:19;17597:11;17590:19;;;;;;;;;;;;;;;:26;;;17574:11;;:15;;:43;;;;:::i;:::-;:47;;:55;;;;:::i;:::-;17560:11;:69;;;;17669:6;17640;:19;17647:11;17640:19;;;;;;;;;;;;;;;:26;;:35;;;;17722:50;17745:6;:19;17752:11;17745:19;;;;;;;;;;;;;;;:26;;;17722:22;:50::i;:::-;17686:6;:19;17693:11;17686:19;;;;;;;;;;;;;;;:33;;:86;;;;17134:646:::0;;:::o;20257:479::-;20326:7;20379:1;20349:6;:19;20356:11;20349:19;;;;;;;;;;;;;;;:26;;;:31;20346:48;;;20390:1;20383:8;;;;20346:48;20406:33;20442:50;20465:6;:19;20472:11;20465:19;;;;;;;;;;;;;;;:26;;;20442:22;:50::i;:::-;20406:86;;20503:32;20538:6;:19;20545:11;20538:19;;;;;;;;;;;;;;;:33;;;20503:68;;20616:24;20587:25;:53;20584:70;;20650:1;20643:8;;;;;;20584:70;20673:55;20703:24;20673:25;:29;;:55;;;;:::i;:::-;20666:62;;;;20257:479;;;;:::o;16925:201::-;16691:6;;;;;;;;;;16677:20;;:10;:20;;;16669:29;;;;;;17059:12:::1;17047:9;:24;;;;17100:18;17082:15;:36;;;;16925:201:::0;;:::o;16158:26::-;;;;:::o;16414:47::-;;;;:::o;16191:29::-;;;;:::o;16109:40::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;17788:709::-;16691:6;;;;;;;;;;16677:20;;:10;:20;;;16669:29;;;;;;17856:21:::1;17880:11;;;;;;;;;;;:21;;;17910:4;17880:36;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;17856:60;;17929:21;17967:1;17953:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17929:40;;17990:6;;;;;;;;;;;:11;;;:13;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;17980:4;17985:1;17980:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;::::0;::::1;18032:11;;;;;;;;;;;18014:4;18019:1;18014:7;;;;;;;;:::i;:::-;;;;;;;:30;;;;;;;;;::::0;::::1;18057:6;;;;;;;;;;;:57;;;18122:9;18147:1;18163:4;18190;18210:15;18057:179;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;18249:14;18266:55;18307:13;18266:11;;;;;;;;;;;:21;;;18296:4;18266:36;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:40;;:55;;;;:::i;:::-;18249:72;;18349:26;18368:6;18349:14;;:18;;:26;;;;:::i;:::-;18332:14;:43;;;;18406:83;18428:60;18476:11;;18428:43;18464:6;18428:31;;:35;;:43;;;;:::i;:::-;:47;;:60;;;;:::i;:::-;18406:17;;:21;;:83;;;;:::i;:::-;18386:17;:103;;;;17843:654;;;17788:709::o:0;16265:32::-;;;;:::o;16227:31::-;;;;:::o;20091:158::-;20144:28;20161:10;20144:16;:28::i;:::-;20136:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;20211:30;20230:10;20211:18;:30::i;:::-;20091:158::o;15938:25::-;;;;;;;;;;;;;:::o;18509:723::-;16691:6;;;;;;;;;;16677:20;;:10;:20;;;16669:29;;;;;;18578:24:::1;18605:12;:19;;;;18578:46;;18660:1;18640:16;:21;18637:37;;;18665:7;;;18637:37;18686:18;18719:15:::0;18749::::1;18767:9;18749:27;;18789:436;18805:3;18795:7;:13;:46;;;;;18825:16;18812:10;:29;18795:46;18789:436;;;18879:16;18863:12;;:32;18860:57;;18913:1;18898:12;:16;;;;18860:57;18936:44;18953:12;18966;;18953:26;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;18936:16;:44::i;:::-;18933:129;;;19000:46;19019:12;19032;;19019:26;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;19000:18;:46::i;:::-;18933:129;19088:35;19100:22;19112:9;19100:7;:11;;:22;;;;:::i;:::-;19088:7;:11;;:35;;;;:::i;:::-;19078:45;;19148:9;19138:19;;19172:12;;:14;;;;;;;;;:::i;:::-;;;;;;19201:12;;;;;:::i;:::-;;;;18789:436;;;18567:665;;;;16700:1;18509:723:::0;:::o;16370:37::-;;;;:::o;19483:596::-;19585:1;19555:6;:19;19562:11;19555:19;;;;;;;;;;;;;;;:26;;;:31;19552:46;;;19589:7;;19552:46;19610:14;19627:30;19645:11;19627:17;:30::i;:::-;19610:47;;19680:1;19671:6;:10;19668:404;;;19716:28;19737:6;19716:16;;:20;;:28;;;;:::i;:::-;19697:16;:47;;;;19759:11;;;;;;;;;;;:20;;;19780:11;19793:6;19759:41;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;19848:15;19815:17;:30;19833:11;19815:30;;;;;;;;;;;;;;;:48;;;;19914:45;19952:6;19914;:19;19921:11;19914:19;;;;;;;;;;;;;;;:33;;;:37;;:45;;;;:::i;:::-;19878:6;:19;19885:11;19878:19;;;;;;;;;;;;;;;:33;;:81;;;;20010:50;20033:6;:19;20040:11;20033:19;;;;;;;;;;;;;;;:26;;;20010:22;:50::i;:::-;19974:6;:19;19981:11;19974:19;;;;;;;;;;;;;;;:33;;:86;;;;19668:404;19541:538;19483:596;;:::o;20922:167::-;21021:12;:19;;;;20987:18;:31;21006:11;20987:31;;;;;;;;;;;;;;;:53;;;;21051:12;21069:11;21051:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20922:167;:::o;21097:288::-;21213:12;21246:1;21226:12;:19;;;;:21;;;;:::i;:::-;21213:35;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;21165:12;21178:18;:31;21197:11;21178:31;;;;;;;;;;;;;;;;21165:45;;;;;;;;:::i;:::-;;;;;;;;;;:83;;;;;;;;;;;;;;;;;;21317:18;:31;21336:11;21317:31;;;;;;;;;;;;;;;;21259:18;:55;21278:12;21311:1;21291:12;:19;;;;:21;;;;:::i;:::-;21278:35;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;21259:55;;;;;;;;;;;;;;;:89;;;;21359:12;:18;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;21097:288;:::o;7784:98::-;7842:7;7873:1;7869;:5;;;;:::i;:::-;7862:12;;7784:98;;;;:::o;7403:::-;7461:7;7492:1;7488;:5;;;;:::i;:::-;7481:12;;7403:98;;;;:::o;20744:170::-;20814:7;20841:65;20874:31;;20841:28;20851:17;;20841:5;:9;;:28;;;;:::i;:::-;:32;;:65;;;;:::i;:::-;20834:72;;20744:170;;;:::o;8141:98::-;8199:7;8230:1;8226;:5;;;;:::i;:::-;8219:12;;8141:98;;;;:::o;8540:::-;8598:7;8629:1;8625;:5;;;;:::i;:::-;8618:12;;8540:98;;;;:::o;19244:231::-;19314:4;19383:15;19371:9;;19338:17;:30;19356:11;19338:30;;;;;;;;;;;;;;;;:42;;;;:::i;:::-;:60;:129;;;;;19452:15;;19419:30;19437:11;19419:17;:30::i;:::-;:48;19338:129;19331:136;;19244:231;;;:::o;7:139:1:-;53:5;91:6;78:20;69:29;;107:33;134:5;107:33;:::i;:::-;7:139;;;;:::o;152:143::-;209:5;240:6;234:13;225:22;;256:33;283:5;256:33;:::i;:::-;152:143;;;;:::o;301:137::-;355:5;386:6;380:13;371:22;;402:30;426:5;402:30;:::i;:::-;301:137;;;;:::o;444:139::-;490:5;528:6;515:20;506:29;;544:33;571:5;544:33;:::i;:::-;444:139;;;;:::o;589:143::-;646:5;677:6;671:13;662:22;;693:33;720:5;693:33;:::i;:::-;589:143;;;;:::o;738:329::-;797:6;846:2;834:9;825:7;821:23;817:32;814:119;;;852:79;;:::i;:::-;814:119;972:1;997:53;1042:7;1033:6;1022:9;1018:22;997:53;:::i;:::-;987:63;;943:117;738:329;;;;:::o;1073:351::-;1143:6;1192:2;1180:9;1171:7;1167:23;1163:32;1160:119;;;1198:79;;:::i;:::-;1160:119;1318:1;1343:64;1399:7;1390:6;1379:9;1375:22;1343:64;:::i;:::-;1333:74;;1289:128;1073:351;;;;:::o;1430:474::-;1498:6;1506;1555:2;1543:9;1534:7;1530:23;1526:32;1523:119;;;1561:79;;:::i;:::-;1523:119;1681:1;1706:53;1751:7;1742:6;1731:9;1727:22;1706:53;:::i;:::-;1696:63;;1652:117;1808:2;1834:53;1879:7;1870:6;1859:9;1855:22;1834:53;:::i;:::-;1824:63;;1779:118;1430:474;;;;;:::o;1910:345::-;1977:6;2026:2;2014:9;2005:7;2001:23;1997:32;1994:119;;;2032:79;;:::i;:::-;1994:119;2152:1;2177:61;2230:7;2221:6;2210:9;2206:22;2177:61;:::i;:::-;2167:71;;2123:125;1910:345;;;;:::o;2261:329::-;2320:6;2369:2;2357:9;2348:7;2344:23;2340:32;2337:119;;;2375:79;;:::i;:::-;2337:119;2495:1;2520:53;2565:7;2556:6;2545:9;2541:22;2520:53;:::i;:::-;2510:63;;2466:117;2261:329;;;;:::o;2596:351::-;2666:6;2715:2;2703:9;2694:7;2690:23;2686:32;2683:119;;;2721:79;;:::i;:::-;2683:119;2841:1;2866:64;2922:7;2913:6;2902:9;2898:22;2866:64;:::i;:::-;2856:74;;2812:128;2596:351;;;;:::o;2953:474::-;3021:6;3029;3078:2;3066:9;3057:7;3053:23;3049:32;3046:119;;;3084:79;;:::i;:::-;3046:119;3204:1;3229:53;3274:7;3265:6;3254:9;3250:22;3229:53;:::i;:::-;3219:63;;3175:117;3331:2;3357:53;3402:7;3393:6;3382:9;3378:22;3357:53;:::i;:::-;3347:63;;3302:118;2953:474;;;;;:::o;3433:179::-;3502:10;3523:46;3565:3;3557:6;3523:46;:::i;:::-;3601:4;3596:3;3592:14;3578:28;;3433:179;;;;:::o;3618:108::-;3695:24;3713:5;3695:24;:::i;:::-;3690:3;3683:37;3618:108;;:::o;3732:118::-;3819:24;3837:5;3819:24;:::i;:::-;3814:3;3807:37;3732:118;;:::o;3886:732::-;4005:3;4034:54;4082:5;4034:54;:::i;:::-;4104:86;4183:6;4178:3;4104:86;:::i;:::-;4097:93;;4214:56;4264:5;4214:56;:::i;:::-;4293:7;4324:1;4309:284;4334:6;4331:1;4328:13;4309:284;;;4410:6;4404:13;4437:63;4496:3;4481:13;4437:63;:::i;:::-;4430:70;;4523:60;4576:6;4523:60;:::i;:::-;4513:70;;4369:224;4356:1;4353;4349:9;4344:14;;4309:284;;;4313:14;4609:3;4602:10;;4010:608;;;3886:732;;;;:::o;4624:157::-;4724:50;4768:5;4724:50;:::i;:::-;4719:3;4712:63;4624:157;;:::o;4787:147::-;4882:45;4921:5;4882:45;:::i;:::-;4877:3;4870:58;4787:147;;:::o;4940:366::-;5082:3;5103:67;5167:2;5162:3;5103:67;:::i;:::-;5096:74;;5179:93;5268:3;5179:93;:::i;:::-;5297:2;5292:3;5288:12;5281:19;;4940:366;;;:::o;5312:118::-;5399:24;5417:5;5399:24;:::i;:::-;5394:3;5387:37;5312:118;;:::o;5436:222::-;5529:4;5567:2;5556:9;5552:18;5544:26;;5580:71;5648:1;5637:9;5633:17;5624:6;5580:71;:::i;:::-;5436:222;;;;:::o;5664:332::-;5785:4;5823:2;5812:9;5808:18;5800:26;;5836:71;5904:1;5893:9;5889:17;5880:6;5836:71;:::i;:::-;5917:72;5985:2;5974:9;5970:18;5961:6;5917:72;:::i;:::-;5664:332;;;;;:::o;6002:248::-;6108:4;6146:2;6135:9;6131:18;6123:26;;6159:84;6240:1;6229:9;6225:17;6216:6;6159:84;:::i;:::-;6002:248;;;;:::o;6256:720::-;6491:4;6529:3;6518:9;6514:19;6506:27;;6543:79;6619:1;6608:9;6604:17;6595:6;6543:79;:::i;:::-;6669:9;6663:4;6659:20;6654:2;6643:9;6639:18;6632:48;6697:108;6800:4;6791:6;6697:108;:::i;:::-;6689:116;;6815:72;6883:2;6872:9;6868:18;6859:6;6815:72;:::i;:::-;6897;6965:2;6954:9;6950:18;6941:6;6897:72;:::i;:::-;6256:720;;;;;;;:::o;6982:419::-;7148:4;7186:2;7175:9;7171:18;7163:26;;7235:9;7229:4;7225:20;7221:1;7210:9;7206:17;7199:47;7263:131;7389:4;7263:131;:::i;:::-;7255:139;;6982:419;;;:::o;7407:222::-;7500:4;7538:2;7527:9;7523:18;7515:26;;7551:71;7619:1;7608:9;7604:17;7595:6;7551:71;:::i;:::-;7407:222;;;;:::o;7635:442::-;7784:4;7822:2;7811:9;7807:18;7799:26;;7835:71;7903:1;7892:9;7888:17;7879:6;7835:71;:::i;:::-;7916:72;7984:2;7973:9;7969:18;7960:6;7916:72;:::i;:::-;7998;8066:2;8055:9;8051:18;8042:6;7998:72;:::i;:::-;7635:442;;;;;;:::o;8164:132::-;8231:4;8254:3;8246:11;;8284:4;8279:3;8275:14;8267:22;;8164:132;;;:::o;8302:114::-;8369:6;8403:5;8397:12;8387:22;;8302:114;;;:::o;8422:113::-;8492:4;8524;8519:3;8515:14;8507:22;;8422:113;;;:::o;8541:184::-;8640:11;8674:6;8669:3;8662:19;8714:4;8709:3;8705:14;8690:29;;8541:184;;;;:::o;8731:169::-;8815:11;8849:6;8844:3;8837:19;8889:4;8884:3;8880:14;8865:29;;8731:169;;;;:::o;8906:305::-;8946:3;8965:20;8983:1;8965:20;:::i;:::-;8960:25;;8999:20;9017:1;8999:20;:::i;:::-;8994:25;;9153:1;9085:66;9081:74;9078:1;9075:81;9072:107;;;9159:18;;:::i;:::-;9072:107;9203:1;9200;9196:9;9189:16;;8906:305;;;;:::o;9217:185::-;9257:1;9274:20;9292:1;9274:20;:::i;:::-;9269:25;;9308:20;9326:1;9308:20;:::i;:::-;9303:25;;9347:1;9337:35;;9352:18;;:::i;:::-;9337:35;9394:1;9391;9387:9;9382:14;;9217:185;;;;:::o;9408:348::-;9448:7;9471:20;9489:1;9471:20;:::i;:::-;9466:25;;9505:20;9523:1;9505:20;:::i;:::-;9500:25;;9693:1;9625:66;9621:74;9618:1;9615:81;9610:1;9603:9;9596:17;9592:105;9589:131;;;9700:18;;:::i;:::-;9589:131;9748:1;9745;9741:9;9730:20;;9408:348;;;;:::o;9762:191::-;9802:4;9822:20;9840:1;9822:20;:::i;:::-;9817:25;;9856:20;9874:1;9856:20;:::i;:::-;9851:25;;9895:1;9892;9889:8;9886:34;;;9900:18;;:::i;:::-;9886:34;9945:1;9942;9938:9;9930:17;;9762:191;;;;:::o;9959:96::-;9996:7;10025:24;10043:5;10025:24;:::i;:::-;10014:35;;9959:96;;;:::o;10061:90::-;10095:7;10138:5;10131:13;10124:21;10113:32;;10061:90;;;:::o;10157:126::-;10194:7;10234:42;10227:5;10223:54;10212:65;;10157:126;;;:::o;10289:77::-;10326:7;10355:5;10344:16;;10289:77;;;:::o;10372:139::-;10435:9;10468:37;10499:5;10468:37;:::i;:::-;10455:50;;10372:139;;;:::o;10517:121::-;10575:9;10608:24;10626:5;10608:24;:::i;:::-;10595:37;;10517:121;;;:::o;10644:126::-;10694:9;10727:37;10758:5;10727:37;:::i;:::-;10714:50;;10644:126;;;:::o;10776:113::-;10826:9;10859:24;10877:5;10859:24;:::i;:::-;10846:37;;10776:113;;;:::o;10895:233::-;10934:3;10957:24;10975:5;10957:24;:::i;:::-;10948:33;;11003:66;10996:5;10993:77;10990:103;;;11073:18;;:::i;:::-;10990:103;11120:1;11113:5;11109:13;11102:20;;10895:233;;;:::o;11134:180::-;11182:77;11179:1;11172:88;11279:4;11276:1;11269:15;11303:4;11300:1;11293:15;11320:180;11368:77;11365:1;11358:88;11465:4;11462:1;11455:15;11489:4;11486:1;11479:15;11506:180;11554:77;11551:1;11544:88;11651:4;11648:1;11641:15;11675:4;11672:1;11665:15;11692:180;11740:77;11737:1;11730:88;11837:4;11834:1;11827:15;11861:4;11858:1;11851:15;11878:180;11926:77;11923:1;11916:88;12023:4;12020:1;12013:15;12047:4;12044:1;12037:15;12187:117;12296:1;12293;12286:12;12310:173;12450:25;12446:1;12438:6;12434:14;12427:49;12310:173;:::o;12489:122::-;12562:24;12580:5;12562:24;:::i;:::-;12555:5;12552:35;12542:63;;12601:1;12598;12591:12;12542:63;12489:122;:::o;12617:116::-;12687:21;12702:5;12687:21;:::i;:::-;12680:5;12677:32;12667:60;;12723:1;12720;12713:12;12667:60;12617:116;:::o;12739:122::-;12812:24;12830:5;12812:24;:::i;:::-;12805:5;12802:35;12792:63;;12851:1;12848;12841:12;12792:63;12739:122;:::o
Swarm Source
ipfs://e4db651e254537d446ad412eaa6b1266c91e306fe21417ef98a2381c1ba02682
Loading...
Loading
Loading...
Loading
Loading...
Loading
[ Download: CSV Export ]
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.