Feature Tip: Add private address tag to any address under My Name Tag !
More Info
Private Name Tags
ContractCreator
Latest 25 from a total of 520 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Claim | 11775565 | 1433 days ago | IN | 0 ETH | 0.01181836 | ||||
Withdraw | 11454225 | 1483 days ago | IN | 0 ETH | 0.00307234 | ||||
Claim | 11454222 | 1483 days ago | IN | 0 ETH | 0.00432901 | ||||
Claim | 11429395 | 1486 days ago | IN | 0 ETH | 0.00304692 | ||||
Claim | 11395764 | 1492 days ago | IN | 0 ETH | 0.00305274 | ||||
Withdraw | 11395754 | 1492 days ago | IN | 0 ETH | 0.00341884 | ||||
Withdraw | 11385243 | 1493 days ago | IN | 0 ETH | 0.00418977 | ||||
Claim | 11385234 | 1493 days ago | IN | 0 ETH | 0.00504916 | ||||
Withdraw | 11380819 | 1494 days ago | IN | 0 ETH | 0.00605189 | ||||
Claim | 11380794 | 1494 days ago | IN | 0 ETH | 0.00865802 | ||||
Claim | 11366069 | 1496 days ago | IN | 0 ETH | 0.00461655 | ||||
Capture | 11339836 | 1500 days ago | IN | 0 ETH | 0.0010858 | ||||
Withdraw | 11329819 | 1502 days ago | IN | 0 ETH | 0.00430939 | ||||
Withdraw | 11310480 | 1505 days ago | IN | 0 ETH | 0.0052331 | ||||
Claim | 11299273 | 1506 days ago | IN | 0 ETH | 0.0053379 | ||||
Withdraw | 11296393 | 1507 days ago | IN | 0 ETH | 0.00384946 | ||||
Deposit | 11296276 | 1507 days ago | IN | 0 ETH | 0.00627682 | ||||
Withdraw | 11295883 | 1507 days ago | IN | 0 ETH | 0.00837954 | ||||
Claim | 11295853 | 1507 days ago | IN | 0 ETH | 0.0107429 | ||||
Withdraw | 11295208 | 1507 days ago | IN | 0 ETH | 0.00372424 | ||||
Withdraw | 11294042 | 1507 days ago | IN | 0 ETH | 0.00445204 | ||||
Claim | 11293949 | 1507 days ago | IN | 0 ETH | 0.00728373 | ||||
Claim | 11291194 | 1508 days ago | IN | 0 ETH | 0.0026296 | ||||
Withdraw | 11291192 | 1508 days ago | IN | 0 ETH | 0.0032216 | ||||
Withdraw | 11290513 | 1508 days ago | IN | 0 ETH | 0.00372376 |
View more zero value Internal Transactions in Advanced View mode
Advanced mode:
Loading...
Loading
Contract Name:
StakingDextoken
Compiler Version
v0.5.17+commit.d19bba13
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2020-11-13 */ pragma solidity 0.5.17; library Math { /** * @dev Returns the largest of two numbers. */ function max(uint256 a, uint256 b) internal pure returns (uint256) { return a >= b ? a : b; } /** * @dev Returns the smallest of two numbers. */ function min(uint256 a, uint256 b) internal pure returns (uint256) { return a < b ? a : b; } /** * @dev Returns the average of two numbers. The result is rounded towards * zero. */ function average(uint256 a, uint256 b) internal pure returns (uint256) { // (a + b) / 2 can overflow, so we distribute return (a / 2) + (b / 2) + ((a % 2 + b % 2) / 2); } } 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); } /** * @dev Optional functions from the ERC20 standard. */ contract ERC20Detailed is IERC20 { string private _name; string private _symbol; uint8 private _decimals; /** * @dev Sets the values for `name`, `symbol`, and `decimals`. All three of * these values are immutable: they can only be set once during * construction. */ constructor (string memory name, string memory symbol, uint8 decimals) public { _name = name; _symbol = symbol; _decimals = decimals; } /** * @dev Returns the name of the token. */ function name() public view returns (string memory) { return _name; } /** * @dev Returns the symbol of the token, usually a shorter version of the * name. */ function symbol() public view returns (string memory) { return _symbol; } /** * @dev Returns the number of decimals used to get its user representation. * For example, if `decimals` equals `2`, a balance of `505` tokens should * be displayed to a user as `5,05` (`505 / 10 ** 2`). * * Tokens usually opt for a value of 18, imitating the relationship between * Ether and Wei. * * NOTE: This information is only used for _display_ purposes: it in * no way affects any of the arithmetic of the contract, including * {IERC20-balanceOf} and {IERC20-transfer}. */ function decimals() public view returns (uint8) { return _decimals; } } library Address { /** * @dev Returns true if `account` is a contract. * * [IMPORTANT] * ==== * It is unsafe to assume that an address for which this function returns * false is an externally-owned account (EOA) and not a contract. * * Among others, `isContract` will return false for the following * types of addresses: * * - an externally-owned account * - a contract in construction * - an address where a contract will be created * - an address where a contract lived, but was destroyed * ==== */ function isContract(address account) internal view returns (bool) { // According to EIP-1052, 0x0 is the value returned for not-yet created accounts // and 0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470 is returned // for accounts without code, i.e. `keccak256('')` bytes32 codehash; bytes32 accountHash = 0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470; // solhint-disable-next-line no-inline-assembly assembly { codehash := extcodehash(account) } return (codehash != accountHash && codehash != 0x0); } /** * @dev Converts an `address` into `address payable`. Note that this is * simply a type cast: the actual underlying value is not changed. * * _Available since v2.4.0._ */ function toPayable(address account) internal pure returns (address payable) { return address(uint160(account)); } /** * @dev Replacement for Solidity's `transfer`: sends `amount` wei to * `recipient`, forwarding all available gas and reverting on errors. * * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost * of certain opcodes, possibly making contracts go over the 2300 gas limit * imposed by `transfer`, making them unable to receive funds via * `transfer`. {sendValue} removes this limitation. * * https://diligence.consensys.net/posts/2019/09/stop-using-soliditys-transfer-now/[Learn more]. * * IMPORTANT: because control is transferred to `recipient`, care must be * taken to not create reentrancy vulnerabilities. Consider using * {ReentrancyGuard} or the * https://solidity.readthedocs.io/en/v0.5.11/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern]. * * _Available since v2.4.0._ */ function sendValue(address payable recipient, uint256 amount) internal { require(address(this).balance >= amount, "Address: insufficient balance"); // solhint-disable-next-line avoid-call-value (bool success, ) = recipient.call.value(amount)(""); require(success, "Address: unable to send value, recipient may have reverted"); } } 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. * * _Available since v2.4.0._ */ 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. * * _Available since v2.4.0._ */ function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { // Solidity only automatically asserts when dividing by 0 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. * * _Available since v2.4.0._ */ function mod(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { require(b != 0, errorMessage); return a % b; } } library SafeERC20 { using SafeMath for uint256; using Address for address; function safeTransfer(IERC20 token, address to, uint256 value) internal { callOptionalReturn(token, abi.encodeWithSelector(token.transfer.selector, to, value)); } function safeTransferFrom(IERC20 token, address from, address to, uint256 value) internal { callOptionalReturn(token, abi.encodeWithSelector(token.transferFrom.selector, from, to, value)); } function safeApprove(IERC20 token, address spender, uint256 value) internal { // safeApprove should only be called when setting an initial allowance, // or when resetting it to zero. To increase and decrease it, use // 'safeIncreaseAllowance' and 'safeDecreaseAllowance' // solhint-disable-next-line max-line-length require((value == 0) || (token.allowance(address(this), spender) == 0), "SafeERC20: approve from non-zero to non-zero allowance" ); callOptionalReturn(token, abi.encodeWithSelector(token.approve.selector, spender, value)); } function safeIncreaseAllowance(IERC20 token, address spender, uint256 value) internal { uint256 newAllowance = token.allowance(address(this), spender).add(value); callOptionalReturn(token, abi.encodeWithSelector(token.approve.selector, spender, newAllowance)); } function safeDecreaseAllowance(IERC20 token, address spender, uint256 value) internal { uint256 newAllowance = token.allowance(address(this), spender).sub(value, "SafeERC20: decreased allowance below zero"); callOptionalReturn(token, abi.encodeWithSelector(token.approve.selector, spender, newAllowance)); } /** * @dev Imitates a Solidity high-level call (i.e. a regular function call to a contract), relaxing the requirement * on the return value: the return value is optional (but if data is returned, it must not be false). * @param token The token targeted by the call. * @param data The call data (encoded using abi.encode or one of its variants). */ function callOptionalReturn(IERC20 token, bytes memory data) private { // We need to perform a low level call here, to bypass Solidity's return data size checking mechanism, since // we're implementing it ourselves. // A Solidity high level call has three parts: // 1. The target address is checked to verify it contains contract code // 2. The call itself is made, and success asserted // 3. The return value is decoded, which in turn checks the size of the returned data. // solhint-disable-next-line max-line-length require(address(token).isContract(), "SafeERC20: call to non-contract"); // solhint-disable-next-line avoid-low-level-calls (bool success, bytes memory returndata) = address(token).call(data); require(success, "SafeERC20: low-level call failed"); if (returndata.length > 0) { // Return data is optional // solhint-disable-next-line max-line-length require(abi.decode(returndata, (bool)), "SafeERC20: ERC20 operation did not succeed"); } } } contract ReentrancyGuard { bool private _notEntered; constructor () internal { // Storing an initial non-zero value makes deployment a bit more // expensive, but in exchange the refund on every call to nonReentrant // will be lower in amount. Since refunds are capped to a percetange of // the total transaction's gas, it is best to keep them low in cases // like this one, to increase the likelihood of the full refund coming // into effect. _notEntered = true; } /** * @dev Prevents a contract from calling itself, directly or indirectly. * Calling a `nonReentrant` function from another `nonReentrant` * function is not supported. It is possible to prevent this from happening * by making the `nonReentrant` function external, and make it call a * `private` function that does the actual work. */ modifier nonReentrant() { // On the first call to nonReentrant, _notEntered will be true require(_notEntered, "ReentrancyGuard: reentrant call"); // Any calls to nonReentrant after this point will fail _notEntered = false; _; // By storing the original value once again, a refund is triggered (see // https://eips.ethereum.org/EIPS/eip-2200) _notEntered = true; } } contract Ownable { address public owner; address public newOwner; event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); constructor() public { owner = msg.sender; newOwner = address(0); } modifier onlyOwner() { require(msg.sender == owner); _; } modifier onlyNewOwner() { require(msg.sender != address(0)); require(msg.sender == newOwner); _; } function isOwner(address account) public view returns (bool) { if(account == owner) { return true; } else { return false; } } function transferOwnership(address _newOwner) public onlyOwner { require(_newOwner != address(0)); newOwner = _newOwner; } function acceptOwnership() public onlyNewOwner { emit OwnershipTransferred(owner, newOwner); owner = newOwner; newOwner = address(0); } } contract Pausable is Ownable { event Paused(address account); event Unpaused(address account); bool private _paused; constructor () public { _paused = false; } modifier whenNotPaused() { require(!_paused); _; } modifier whenPaused() { require(_paused); _; } function paused() public view returns (bool) { return _paused; } function pause() public onlyOwner whenNotPaused { _paused = true; emit Paused(msg.sender); } function unpause() public onlyOwner whenPaused { _paused = false; emit Unpaused(msg.sender); } } contract StakingDextoken is ReentrancyGuard, Pausable { using SafeERC20 for IERC20; using SafeMath for uint; event Freeze(address indexed account); event Unfreeze(address indexed account); event TokenDeposit(address account, uint amount); event TokenWithdraw(address account, uint amount); event TokenClaim(address account, uint amount); event RewardAdded(uint reward); uint public periodFinish = 0; uint public rewardRate = 0; uint public lastUpdateTime; uint public rewardPerTokenStored = 0; uint public rewardRounds = 0; uint public rewardsDuration = 0; bool public inStaking = true; // BAL beneficial address address public beneficial = address(this); // User award balance mapping(address => uint) public rewards; mapping(address => uint) public userRewardPerTokenPaid; uint private _start; uint private _end; /// Staking token IERC20 private _token0; /// Reward token IERC20 private _token1; /// Total rewards uint private _rewards; uint private _remainingRewards; /// Total amount of user staking tokens uint private _totalSupply; mapping(address => bool) public frozenAccount; /// The staking users mapping(address => bool) public stakeHolders; /// The amount of tokens staked mapping(address => uint) private _balances; /// The remaining withdrawals of staked tokens mapping(address => uint) internal withdrawalOf; /// The remaining withdrawals of reward tokens mapping(address => uint) internal claimOf; constructor (address token0, address token1) public { require(token0 != address(0), "DEXToken: zero address"); require(token1 != address(0), "DEXToken: zero address"); _token0 = IERC20(token0); _token1 = IERC20(token1); } modifier notFrozen(address _account) { require(!frozenAccount[_account]); _; } modifier updateReward(address account) { rewardPerTokenStored = rewardPerToken(); lastUpdateTime = lastTimeRewardApplicable(); if (account != address(0)) { rewards[account] = earned(account); userRewardPerTokenPaid[account] = rewardPerTokenStored; } _; } function setBeneficial(address _beneficial) onlyOwner external { require(_beneficial != address(this), "setBeneficial: can not send to self"); require(_beneficial != address(0), "setBeneficial: can not burn tokens"); beneficial = _beneficial; } /// Capture BAL tokens or any other tokens function capture(address _token, uint amount) onlyOwner external { require(_token != address(_token0), "capture: can not capture staking tokens"); require(_token != address(_token1), "capture: can not capture reward tokens"); require(beneficial != address(this), "capture: can not send to self"); require(beneficial != address(0), "capture: can not burn tokens"); IERC20(_token).safeTransfer(beneficial, amount); } function lastTimeRewardApplicable() public view returns (uint) { return Math.min(block.timestamp, periodFinish); } function rewardPerToken() public view returns (uint) { if (getTotalStakes() == 0) { return rewardPerTokenStored; } return rewardPerTokenStored.add( lastTimeRewardApplicable() .sub(lastUpdateTime) .mul(rewardRate) .mul(1e18) .div(getTotalStakes()) ); } function earned(address account) public view returns (uint) { return balanceOf(account) .mul(rewardPerToken().sub(userRewardPerTokenPaid[account])) .div(1e18) .add(rewards[account]); } /// setup the staking round function setRewardRound(uint round, uint reward, uint start, uint end) external onlyOwner { require(block.timestamp > periodFinish, "setRewardRound: previous rewards period not complete"); require(rewardRounds < round, "setRewardRound: this round completed"); rewardRounds = round; _rewards = reward; _start = start; _end = end; rewardsDuration = _end.sub(_start); inStaking = false; } /// launch the staking round function notifyRewards() external onlyOwner updateReward(address(0)) { // staking started if (inStaking == true) { return; } if (block.timestamp >= periodFinish) { rewardRate = _rewards.div(rewardsDuration); } else { uint remaining = periodFinish.sub(block.timestamp); uint leftover = remaining.mul(rewardRate); rewardRate = _rewards.add(leftover).div(rewardsDuration); _remainingRewards = leftover; } // Ensure the provided reward amount is not more than the balance in the contract. // This keeps the reward rate in the right range, preventing overflows due to // very high values of rewardRate in the earned and rewardsPerToken functions; // Reward + leftover must be less than 2^256 / 10^18 to avoid overflow. uint balance = _token1.balanceOf(address(this)); require(rewardRate <= balance.div(rewardsDuration), "notifyRewards: provided reward too high"); inStaking = true; lastUpdateTime = block.timestamp; periodFinish = block.timestamp.add(rewardsDuration); emit RewardAdded(_rewards); } function addStakeholder(address _stakeholder) internal { stakeHolders[_stakeholder] = true; } function removeStakeholder(address _stakeholder) internal { stakeHolders[_stakeholder] = false; } /// Deposit staking tokens function deposit(uint amount) external nonReentrant whenNotPaused notFrozen(msg.sender) updateReward(msg.sender) { require(amount > 0, "deposit: cannot stake 0"); require(msg.sender != address(0), "withdraw: zero address"); require(_token0.balanceOf(msg.sender) >= amount, "deposit: insufficient balance"); _totalSupply = _totalSupply.add(amount); _balances[msg.sender] = _balances[msg.sender].add(amount); addStakeholder(msg.sender); _token0.safeTransferFrom(msg.sender, address(this), amount); emit TokenDeposit(msg.sender, amount); } /// Withdraw staked tokens function withdraw(uint amount) external nonReentrant whenNotPaused notFrozen(msg.sender) updateReward(msg.sender) { require(amount > 0, "withdraw: amount invalid"); require(msg.sender != address(0), "withdraw: zero address"); /// Not overflow require(_balances[msg.sender] >= amount); _totalSupply = _totalSupply.sub(amount); _balances[msg.sender] = _balances[msg.sender].sub(amount); /// Keep track user withdraws withdrawalOf[msg.sender] = withdrawalOf[msg.sender].add(amount); if (_balances[msg.sender] == 0) { removeStakeholder(msg.sender); } _token0.safeTransfer(msg.sender, amount); emit TokenWithdraw(msg.sender, amount); } /// Claim reward tokens function claim() external nonReentrant whenNotPaused notFrozen(msg.sender) updateReward(msg.sender) { require(msg.sender != address(0), "claim: zero address"); require(block.timestamp > getEndTimestamp(), "claim: claim not open"); require(block.timestamp > periodFinish, "claim: current staking period not complete"); uint reward = earned(msg.sender); /// Not overflow require(_token1.balanceOf(address(this)) >= reward, "claim: insufficient balance"); require(reward > 0, "claim: zero rewards"); rewards[msg.sender] = 0; claimOf[msg.sender] = reward; _token1.safeTransfer(msg.sender, reward); emit TokenClaim(msg.sender, reward); } function freezeAccount(address account) external onlyOwner returns (bool) { require(!frozenAccount[account], "ERC20: account frozen"); frozenAccount[account] = true; emit Freeze(account); return true; } function unfreezeAccount(address account) external onlyOwner returns (bool) { require(frozenAccount[account], "ERC20: account not frozen"); frozenAccount[account] = false; emit Unfreeze(account); return true; } function getWithdrawalOf(address _stakeholder) external view returns (uint) { return withdrawalOf[_stakeholder]; } function getClaimOf(address _stakeholder) external view returns (uint) { return claimOf[_stakeholder]; } /// Get remaining rewards of the time period function remainingRewards() external view returns(uint) { return _remainingRewards; } /// Retrieve the stake for a stakeholder function stakeOf(address _stakeholder) external view returns (uint) { return _balances[_stakeholder]; } /// Retrieve the stake for a stakeholder function rewardOf(address _stakeholder) external view returns (uint) { return earned(_stakeholder); } /// Get total original rewards function totalRewards() external view returns (uint) { return _rewards; } function getStartTimestamp() public view returns (uint) { return _start; } function getEndTimestamp() public view returns (uint) { return _end; } /// The total supply of all staked tokens function getTotalStakes() public view returns (uint) { return _totalSupply; } function balanceOf(address account) public view returns (uint) { return _balances[account]; } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[{"internalType":"address","name":"token0","type":"address"},{"internalType":"address","name":"token1","type":"address"}],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"}],"name":"Freeze","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"account","type":"address"}],"name":"Paused","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"reward","type":"uint256"}],"name":"RewardAdded","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"account","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"TokenClaim","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"account","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"TokenDeposit","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"account","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"TokenWithdraw","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"}],"name":"Unfreeze","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"account","type":"address"}],"name":"Unpaused","type":"event"},{"constant":false,"inputs":[],"name":"acceptOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"beneficial","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"_token","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"capture","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"claim","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"deposit","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"earned","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"freezeAccount","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"frozenAccount","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"_stakeholder","type":"address"}],"name":"getClaimOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"getEndTimestamp","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"getStartTimestamp","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"getTotalStakes","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"_stakeholder","type":"address"}],"name":"getWithdrawalOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"inStaking","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isOwner","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"lastTimeRewardApplicable","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"lastUpdateTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"newOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"notifyRewards","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"pause","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"paused","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"periodFinish","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"remainingRewards","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"_stakeholder","type":"address"}],"name":"rewardOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"rewardPerToken","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"rewardPerTokenStored","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"rewardRate","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"rewardRounds","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"rewards","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"rewardsDuration","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"_beneficial","type":"address"}],"name":"setBeneficial","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"uint256","name":"round","type":"uint256"},{"internalType":"uint256","name":"reward","type":"uint256"},{"internalType":"uint256","name":"start","type":"uint256"},{"internalType":"uint256","name":"end","type":"uint256"}],"name":"setRewardRound","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"stakeHolders","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"_stakeholder","type":"address"}],"name":"stakeOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"totalRewards","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"_newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"unfreezeAccount","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"unpause","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"userRewardPerTokenPaid","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"withdraw","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"}]
Contract Creation Code
60806040526000600281905560038190556005819055600681905560075560088054600160ff1990911617610100600160a81b031916610100300217905534801561004957600080fd5b506040516123223803806123228339818101604052604081101561006c57600080fd5b50805160209091015160008054600160ff199091168117610100600160a81b03191661010033021790915580546001600160a81b03191690556001600160a01b038216610100576040805162461bcd60e51b815260206004820152601660248201527f444558546f6b656e3a207a65726f206164647265737300000000000000000000604482015290519081900360640190fd5b6001600160a01b03811661015b576040805162461bcd60e51b815260206004820152601660248201527f444558546f6b656e3a207a65726f206164647265737300000000000000000000604482015290519081900360640190fd5b600d80546001600160a01b039384166001600160a01b031991821617909155600e805492909316911617905561218c806101966000396000f3fe608060405234801561001057600080fd5b506004361061025d5760003560e01c806379ba509711610146578063b6b55f25116100c3578063d55dae6e11610087578063d55dae6e1461055f578063df136d6514610585578063e26ff10a1461058d578063ebe2b12b146105b3578063f26c159f146105bb578063f2fde38b146105e15761025d565b8063b6b55f25146104fb578063c702b5df14610518578063c8f33c9114610547578063cd3daf9d1461054f578063d4ee1d90146105575761025d565b80638da5cb5b1161010a5780638da5cb5b1461049157806390a967571461049957806399656164146104a1578063afb62e56146104cd578063b414d4b6146104d55761025d565b806379ba50971461044b5780637b0a47ee1461045357806380faa57d1461045b5780638456cb59146104635780638b8763471461046b5761025d565b80633f4ba83a116101df5780635ff9c077116101a35780635ff9c077146103e757806368c33627146103ef57806369cf4c22146103f757806370a082311461038b57806374e94deb1461041d578063788649ea146104255761025d565b80633f4ba83a14610383578063426233601461038b5780634e71d92d146103b1578063504f3a83146103b95780635c975abb146103df5761025d565b80631f89f25e116102265780631f89f25e146103125780632e1a7d4d1461031a5780632f54bf6e14610339578063386a9525146103735780633be52fc41461037b5761025d565b80628cc262146102625780630700037d1461029a5780630e15561a146102c057806311ccf822146102c85780631d62ebd9146102ec575b600080fd5b6102886004803603602081101561027857600080fd5b50356001600160a01b0316610607565b60408051918252519081900360200190f35b610288600480360360208110156102b057600080fd5b50356001600160a01b031661068f565b6102886106a1565b6102d06106a8565b604080516001600160a01b039092168252519081900360200190f35b6102886004803603602081101561030257600080fd5b50356001600160a01b03166106bc565b6102886106c7565b6103376004803603602081101561033057600080fd5b50356106cd565b005b61035f6004803603602081101561034f57600080fd5b50356001600160a01b031661096e565b604080519115158252519081900360200190f35b61028861099a565b6103376109a0565b610337610bd8565b610288600480360360208110156103a157600080fd5b50356001600160a01b0316610c4c565b610337610c67565b610288600480360360208110156103cf57600080fd5b50356001600160a01b0316610fdc565b61035f610ff7565b61035f611007565b610288611010565b6102886004803603602081101561040d57600080fd5b50356001600160a01b0316611016565b610288611031565b61035f6004803603602081101561043b57600080fd5b50356001600160a01b0316611037565b61033761110f565b6102886111a5565b6102886111ab565b6103376111be565b6102886004803603602081101561048157600080fd5b50356001600160a01b0316611239565b6102d061124b565b61028861125f565b610337600480360360408110156104b757600080fd5b506001600160a01b038135169060200135611265565b61028861140b565b61035f600480360360208110156104eb57600080fd5b50356001600160a01b0316611411565b6103376004803603602081101561051157600080fd5b5035611426565b6103376004803603608081101561052e57600080fd5b508035906020810135906040810135906060013561173c565b61028861180f565b610288611815565b6102d0611869565b6103376004803603602081101561057557600080fd5b50356001600160a01b0316611878565b610288611949565b61035f600480360360208110156105a357600080fd5b50356001600160a01b031661194f565b610288611964565b61035f600480360360208110156105d157600080fd5b50356001600160a01b031661196a565b610337600480360360208110156105f757600080fd5b50356001600160a01b0316611a3e565b6001600160a01b038116600090815260096020908152604080832054600a909252822054610687919061067b90670de0b6b3a76400009061066f9061065a9061064e611815565b9063ffffffff611a8f16565b61066388610c4c565b9063ffffffff611ada16565b9063ffffffff611b3316565b9063ffffffff611b7516565b90505b919050565b60096020526000908152604090205481565b600f545b90565b60085461010090046001600160a01b031681565b600061068782610607565b600b5490565b60005460ff16610724576040805162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604482015290519081900360640190fd5b6000805460ff19169055600154600160a01b900460ff161561074557600080fd5b3360008181526012602052604090205460ff161561076257600080fd5b3361076b611815565b6005556107766111ab565b6004556001600160a01b038116156107bd5761079181610607565b6001600160a01b038216600090815260096020908152604080832093909355600554600a909152919020555b60008311610812576040805162461bcd60e51b815260206004820152601860248201527f77697468647261773a20616d6f756e7420696e76616c69640000000000000000604482015290519081900360640190fd5b3361085d576040805162461bcd60e51b815260206004820152601660248201527577697468647261773a207a65726f206164647265737360501b604482015290519081900360640190fd5b3360009081526014602052604090205483111561087957600080fd5b60115461088c908463ffffffff611a8f16565b601155336000908152601460205260409020546108af908463ffffffff611a8f16565b336000908152601460209081526040808320939093556015905220546108db908463ffffffff611b7516565b336000908152601560209081526040808320939093556014905220546109045761090433611bcf565b600d54610921906001600160a01b0316338563ffffffff611bf016565b604080513381526020810185905281517f68577e4d693c1b056a60bc4e39438810239a0bfe64869c4eb7e3baebb5f65634929181900390910190a150506000805460ff1916600117905550565b600080546001600160a01b038381166101009092041614156109925750600161068a565b50600061068a565b60075481565b60005461010090046001600160a01b031633146109bc57600080fd5b60006109c6611815565b6005556109d16111ab565b6004556001600160a01b03811615610a18576109ec81610607565b6001600160a01b038216600090815260096020908152604080832093909355600554600a909152919020555b60085460ff16151560011415610a2d57610bd5565b6002544210610a5357600754600f54610a4b9163ffffffff611b3316565b600355610aa7565b600254600090610a69904263ffffffff611a8f16565b90506000610a8260035483611ada90919063ffffffff16565b9050610a9f60075461066f83600f54611b7590919063ffffffff16565b600355601055505b600e54604080516370a0823160e01b815230600482015290516000926001600160a01b0316916370a08231916024808301926020929190829003018186803b158015610af257600080fd5b505afa158015610b06573d6000803e3d6000fd5b505050506040513d6020811015610b1c57600080fd5b5051600754909150610b3590829063ffffffff611b3316565b6003541115610b755760405162461bcd60e51b81526004018080602001828103825260278152602001806121076027913960400191505060405180910390fd5b6008805460ff19166001179055426004819055600754610b9b919063ffffffff611b7516565b600255600f5460408051918252517fde88a922e0d3b88b24e9623efeb464919c6bf9f66857a65e2bfcf2ce87a9433d9181900360200190a1505b50565b60005461010090046001600160a01b03163314610bf457600080fd5b600154600160a01b900460ff16610c0a57600080fd5b6001805460ff60a01b191690556040805133815290517f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa9181900360200190a1565b6001600160a01b031660009081526014602052604090205490565b60005460ff16610cbe576040805162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604482015290519081900360640190fd5b6000805460ff19169055600154600160a01b900460ff1615610cdf57600080fd5b3360008181526012602052604090205460ff1615610cfc57600080fd5b33610d05611815565b600555610d106111ab565b6004556001600160a01b03811615610d5757610d2b81610607565b6001600160a01b038216600090815260096020908152604080832093909355600554600a909152919020555b33610d9f576040805162461bcd60e51b8152602060048201526013602482015272636c61696d3a207a65726f206164647265737360681b604482015290519081900360640190fd5b610da7611031565b4211610df2576040805162461bcd60e51b815260206004820152601560248201527431b630b4b69d1031b630b4b6903737ba1037b832b760591b604482015290519081900360640190fd5b6002544211610e325760405162461bcd60e51b815260040180806020018281038252602a815260200180611ff4602a913960400191505060405180910390fd5b6000610e3d33610607565b600e54604080516370a0823160e01b8152306004820152905192935083926001600160a01b03909216916370a0823191602480820192602092909190829003018186803b158015610e8d57600080fd5b505afa158015610ea1573d6000803e3d6000fd5b505050506040513d6020811015610eb757600080fd5b50511015610f0c576040805162461bcd60e51b815260206004820152601b60248201527f636c61696d3a20696e73756666696369656e742062616c616e63650000000000604482015290519081900360640190fd5b60008111610f57576040805162461bcd60e51b8152602060048201526013602482015272636c61696d3a207a65726f207265776172647360681b604482015290519081900360640190fd5b33600081815260096020908152604080832083905560169091529020829055600e54610f8f916001600160a01b039091169083611bf0565b604080513381526020810183905281517ffcd6a0cf5a625280133c034863698c011fa0aefbee7f3be397f86fabd9891852929181900390910190a150506000805460ff1916600117905550565b6001600160a01b031660009081526015602052604090205490565b600154600160a01b900460ff1690565b60085460ff1681565b60115490565b6001600160a01b031660009081526016602052604090205490565b600c5490565b6000805461010090046001600160a01b0316331461105457600080fd5b6001600160a01b03821660009081526012602052604090205460ff166110c1576040805162461bcd60e51b815260206004820152601960248201527f45524332303a206163636f756e74206e6f742066726f7a656e00000000000000604482015290519081900360640190fd5b6001600160a01b038216600081815260126020526040808220805460ff19169055517fca5069937e68fd197927055037f59d7c90bf75ac104e6e375539ef480c3ad6ee9190a2506001919050565b3361111957600080fd5b6001546001600160a01b0316331461113057600080fd5b600154600080546040516001600160a01b0393841693610100909204909116917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a36001805460008054610100600160a81b0319166101006001600160a01b038416021790556001600160a01b0319169055565b60035481565b60006111b942600254611c47565b905090565b60005461010090046001600160a01b031633146111da57600080fd5b600154600160a01b900460ff16156111f157600080fd5b6001805460ff60a01b1916600160a01b1790556040805133815290517f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a2589181900360200190a1565b600a6020526000908152604090205481565b60005461010090046001600160a01b031681565b60065481565b60005461010090046001600160a01b0316331461128157600080fd5b600d546001600160a01b03838116911614156112ce5760405162461bcd60e51b81526004018080602001828103825260278152602001806120766027913960400191505060405180910390fd5b600e546001600160a01b038381169116141561131b5760405162461bcd60e51b81526004018080602001828103825260268152602001806120e16026913960400191505060405180910390fd5b60085461010090046001600160a01b0316301415611380576040805162461bcd60e51b815260206004820152601d60248201527f636170747572653a2063616e206e6f742073656e6420746f2073656c66000000604482015290519081900360640190fd5b60085461010090046001600160a01b03166113e2576040805162461bcd60e51b815260206004820152601c60248201527f636170747572653a2063616e206e6f74206275726e20746f6b656e7300000000604482015290519081900360640190fd5b600854611407906001600160a01b03848116916101009004168363ffffffff611bf016565b5050565b60105490565b60126020526000908152604090205460ff1681565b60005460ff1661147d576040805162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604482015290519081900360640190fd5b6000805460ff19169055600154600160a01b900460ff161561149e57600080fd5b3360008181526012602052604090205460ff16156114bb57600080fd5b336114c4611815565b6005556114cf6111ab565b6004556001600160a01b03811615611516576114ea81610607565b6001600160a01b038216600090815260096020908152604080832093909355600554600a909152919020555b6000831161156b576040805162461bcd60e51b815260206004820152601760248201527f6465706f7369743a2063616e6e6f74207374616b652030000000000000000000604482015290519081900360640190fd5b336115b6576040805162461bcd60e51b815260206004820152601660248201527577697468647261773a207a65726f206164647265737360501b604482015290519081900360640190fd5b600d54604080516370a0823160e01b8152336004820152905185926001600160a01b0316916370a08231916024808301926020929190829003018186803b15801561160057600080fd5b505afa158015611614573d6000803e3d6000fd5b505050506040513d602081101561162a57600080fd5b5051101561167f576040805162461bcd60e51b815260206004820152601d60248201527f6465706f7369743a20696e73756666696369656e742062616c616e6365000000604482015290519081900360640190fd5b601154611692908463ffffffff611b7516565b601155336000908152601460205260409020546116b5908463ffffffff611b7516565b336000818152601460205260409020919091556116d190611c5d565b600d546116ef906001600160a01b031633308663ffffffff611c8116565b604080513381526020810185905281517f20b3fc91390f6ceba342f697a9490734680fd3556633f40efa146f1dbe79d05f929181900390910190a150506000805460ff1916600117905550565b60005461010090046001600160a01b0316331461175857600080fd5b60025442116117985760405162461bcd60e51b81526004018080602001828103825260348152602001806120426034913960400191505060405180910390fd5b83600654106117d85760405162461bcd60e51b815260040180806020018281038252602481526020018061201e6024913960400191505060405180910390fd5b6006849055600f839055600b829055600c8190556117fc818363ffffffff611a8f16565b60075550506008805460ff191690555050565b60045481565b600061181f611010565b61182c57506005546106a5565b6111b961185a61183a611010565b61066f670de0b6b3a764000061066360035461066360045461064e6111ab565b6005549063ffffffff611b7516565b6001546001600160a01b031681565b60005461010090046001600160a01b0316331461189457600080fd5b6001600160a01b0381163014156118dc5760405162461bcd60e51b81526004018080602001828103825260238152602001806120be6023913960400191505060405180910390fd5b6001600160a01b0381166119215760405162461bcd60e51b8152600401808060200182810382526022815260200180611fd26022913960400191505060405180910390fd5b600880546001600160a01b0390921661010002610100600160a81b0319909216919091179055565b60055481565b60136020526000908152604090205460ff1681565b60025481565b6000805461010090046001600160a01b0316331461198757600080fd5b6001600160a01b03821660009081526012602052604090205460ff16156119ed576040805162461bcd60e51b815260206004820152601560248201527422a92199181d1030b1b1b7bab73a10333937bd32b760591b604482015290519081900360640190fd5b6001600160a01b038216600081815260126020526040808220805460ff19166001179055517faf85b60d26151edd11443b704d424da6c43d0468f2235ebae3d1904dbc3230499190a2506001919050565b60005461010090046001600160a01b03163314611a5a57600080fd5b6001600160a01b038116611a6d57600080fd5b600180546001600160a01b0319166001600160a01b0392909216919091179055565b6000611ad183836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611ce1565b90505b92915050565b600082611ae957506000611ad4565b82820282848281611af657fe5b0414611ad15760405162461bcd60e51b815260040180806020018281038252602181526020018061209d6021913960400191505060405180910390fd5b6000611ad183836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611d78565b600082820183811015611ad1576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b6001600160a01b03166000908152601360205260409020805460ff19169055565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b179052611c42908490611ddd565b505050565b6000818310611c565781611ad1565b5090919050565b6001600160a01b03166000908152601360205260409020805460ff19166001179055565b604080516001600160a01b0385811660248301528416604482015260648082018490528251808303909101815260849091019091526020810180516001600160e01b03166323b872dd60e01b179052611cdb908590611ddd565b50505050565b60008184841115611d705760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b83811015611d35578181015183820152602001611d1d565b50505050905090810190601f168015611d625780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b60008183611dc75760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315611d35578181015183820152602001611d1d565b506000838581611dd357fe5b0495945050505050565b611def826001600160a01b0316611f95565b611e40576040805162461bcd60e51b815260206004820152601f60248201527f5361666545524332303a2063616c6c20746f206e6f6e2d636f6e747261637400604482015290519081900360640190fd5b60006060836001600160a01b0316836040518082805190602001908083835b60208310611e7e5780518252601f199092019160209182019101611e5f565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114611ee0576040519150601f19603f3d011682016040523d82523d6000602084013e611ee5565b606091505b509150915081611f3c576040805162461bcd60e51b815260206004820181905260248201527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564604482015290519081900360640190fd5b805115611cdb57808060200190516020811015611f5857600080fd5b5051611cdb5760405162461bcd60e51b815260040180806020018281038252602a81526020018061212e602a913960400191505060405180910390fd5b6000813f7fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470818114801590611fc957508115155b94935050505056fe73657442656e6566696369616c3a2063616e206e6f74206275726e20746f6b656e73636c61696d3a2063757272656e74207374616b696e6720706572696f64206e6f7420636f6d706c657465736574526577617264526f756e643a207468697320726f756e6420636f6d706c65746564736574526577617264526f756e643a2070726576696f7573207265776172647320706572696f64206e6f7420636f6d706c657465636170747572653a2063616e206e6f742063617074757265207374616b696e6720746f6b656e73536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f7773657442656e6566696369616c3a2063616e206e6f742073656e6420746f2073656c66636170747572653a2063616e206e6f7420636170747572652072657761726420746f6b656e736e6f74696679526577617264733a2070726f76696465642072657761726420746f6f20686967685361666545524332303a204552433230206f7065726174696f6e20646964206e6f742073756363656564a265627a7a7231582087c1dea4254af69321d82e8f9c9abd68ed3d114c38333c3c025a75c5a127cbae64736f6c634300051100320000000000000000000000005b18df96d3c8b9f1d1b9e38752498f92d1e2d490000000000000000000000000b81d70802a816b5dacba06d708b5acf19dcd436d
Deployed Bytecode
0x608060405234801561001057600080fd5b506004361061025d5760003560e01c806379ba509711610146578063b6b55f25116100c3578063d55dae6e11610087578063d55dae6e1461055f578063df136d6514610585578063e26ff10a1461058d578063ebe2b12b146105b3578063f26c159f146105bb578063f2fde38b146105e15761025d565b8063b6b55f25146104fb578063c702b5df14610518578063c8f33c9114610547578063cd3daf9d1461054f578063d4ee1d90146105575761025d565b80638da5cb5b1161010a5780638da5cb5b1461049157806390a967571461049957806399656164146104a1578063afb62e56146104cd578063b414d4b6146104d55761025d565b806379ba50971461044b5780637b0a47ee1461045357806380faa57d1461045b5780638456cb59146104635780638b8763471461046b5761025d565b80633f4ba83a116101df5780635ff9c077116101a35780635ff9c077146103e757806368c33627146103ef57806369cf4c22146103f757806370a082311461038b57806374e94deb1461041d578063788649ea146104255761025d565b80633f4ba83a14610383578063426233601461038b5780634e71d92d146103b1578063504f3a83146103b95780635c975abb146103df5761025d565b80631f89f25e116102265780631f89f25e146103125780632e1a7d4d1461031a5780632f54bf6e14610339578063386a9525146103735780633be52fc41461037b5761025d565b80628cc262146102625780630700037d1461029a5780630e15561a146102c057806311ccf822146102c85780631d62ebd9146102ec575b600080fd5b6102886004803603602081101561027857600080fd5b50356001600160a01b0316610607565b60408051918252519081900360200190f35b610288600480360360208110156102b057600080fd5b50356001600160a01b031661068f565b6102886106a1565b6102d06106a8565b604080516001600160a01b039092168252519081900360200190f35b6102886004803603602081101561030257600080fd5b50356001600160a01b03166106bc565b6102886106c7565b6103376004803603602081101561033057600080fd5b50356106cd565b005b61035f6004803603602081101561034f57600080fd5b50356001600160a01b031661096e565b604080519115158252519081900360200190f35b61028861099a565b6103376109a0565b610337610bd8565b610288600480360360208110156103a157600080fd5b50356001600160a01b0316610c4c565b610337610c67565b610288600480360360208110156103cf57600080fd5b50356001600160a01b0316610fdc565b61035f610ff7565b61035f611007565b610288611010565b6102886004803603602081101561040d57600080fd5b50356001600160a01b0316611016565b610288611031565b61035f6004803603602081101561043b57600080fd5b50356001600160a01b0316611037565b61033761110f565b6102886111a5565b6102886111ab565b6103376111be565b6102886004803603602081101561048157600080fd5b50356001600160a01b0316611239565b6102d061124b565b61028861125f565b610337600480360360408110156104b757600080fd5b506001600160a01b038135169060200135611265565b61028861140b565b61035f600480360360208110156104eb57600080fd5b50356001600160a01b0316611411565b6103376004803603602081101561051157600080fd5b5035611426565b6103376004803603608081101561052e57600080fd5b508035906020810135906040810135906060013561173c565b61028861180f565b610288611815565b6102d0611869565b6103376004803603602081101561057557600080fd5b50356001600160a01b0316611878565b610288611949565b61035f600480360360208110156105a357600080fd5b50356001600160a01b031661194f565b610288611964565b61035f600480360360208110156105d157600080fd5b50356001600160a01b031661196a565b610337600480360360208110156105f757600080fd5b50356001600160a01b0316611a3e565b6001600160a01b038116600090815260096020908152604080832054600a909252822054610687919061067b90670de0b6b3a76400009061066f9061065a9061064e611815565b9063ffffffff611a8f16565b61066388610c4c565b9063ffffffff611ada16565b9063ffffffff611b3316565b9063ffffffff611b7516565b90505b919050565b60096020526000908152604090205481565b600f545b90565b60085461010090046001600160a01b031681565b600061068782610607565b600b5490565b60005460ff16610724576040805162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604482015290519081900360640190fd5b6000805460ff19169055600154600160a01b900460ff161561074557600080fd5b3360008181526012602052604090205460ff161561076257600080fd5b3361076b611815565b6005556107766111ab565b6004556001600160a01b038116156107bd5761079181610607565b6001600160a01b038216600090815260096020908152604080832093909355600554600a909152919020555b60008311610812576040805162461bcd60e51b815260206004820152601860248201527f77697468647261773a20616d6f756e7420696e76616c69640000000000000000604482015290519081900360640190fd5b3361085d576040805162461bcd60e51b815260206004820152601660248201527577697468647261773a207a65726f206164647265737360501b604482015290519081900360640190fd5b3360009081526014602052604090205483111561087957600080fd5b60115461088c908463ffffffff611a8f16565b601155336000908152601460205260409020546108af908463ffffffff611a8f16565b336000908152601460209081526040808320939093556015905220546108db908463ffffffff611b7516565b336000908152601560209081526040808320939093556014905220546109045761090433611bcf565b600d54610921906001600160a01b0316338563ffffffff611bf016565b604080513381526020810185905281517f68577e4d693c1b056a60bc4e39438810239a0bfe64869c4eb7e3baebb5f65634929181900390910190a150506000805460ff1916600117905550565b600080546001600160a01b038381166101009092041614156109925750600161068a565b50600061068a565b60075481565b60005461010090046001600160a01b031633146109bc57600080fd5b60006109c6611815565b6005556109d16111ab565b6004556001600160a01b03811615610a18576109ec81610607565b6001600160a01b038216600090815260096020908152604080832093909355600554600a909152919020555b60085460ff16151560011415610a2d57610bd5565b6002544210610a5357600754600f54610a4b9163ffffffff611b3316565b600355610aa7565b600254600090610a69904263ffffffff611a8f16565b90506000610a8260035483611ada90919063ffffffff16565b9050610a9f60075461066f83600f54611b7590919063ffffffff16565b600355601055505b600e54604080516370a0823160e01b815230600482015290516000926001600160a01b0316916370a08231916024808301926020929190829003018186803b158015610af257600080fd5b505afa158015610b06573d6000803e3d6000fd5b505050506040513d6020811015610b1c57600080fd5b5051600754909150610b3590829063ffffffff611b3316565b6003541115610b755760405162461bcd60e51b81526004018080602001828103825260278152602001806121076027913960400191505060405180910390fd5b6008805460ff19166001179055426004819055600754610b9b919063ffffffff611b7516565b600255600f5460408051918252517fde88a922e0d3b88b24e9623efeb464919c6bf9f66857a65e2bfcf2ce87a9433d9181900360200190a1505b50565b60005461010090046001600160a01b03163314610bf457600080fd5b600154600160a01b900460ff16610c0a57600080fd5b6001805460ff60a01b191690556040805133815290517f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa9181900360200190a1565b6001600160a01b031660009081526014602052604090205490565b60005460ff16610cbe576040805162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604482015290519081900360640190fd5b6000805460ff19169055600154600160a01b900460ff1615610cdf57600080fd5b3360008181526012602052604090205460ff1615610cfc57600080fd5b33610d05611815565b600555610d106111ab565b6004556001600160a01b03811615610d5757610d2b81610607565b6001600160a01b038216600090815260096020908152604080832093909355600554600a909152919020555b33610d9f576040805162461bcd60e51b8152602060048201526013602482015272636c61696d3a207a65726f206164647265737360681b604482015290519081900360640190fd5b610da7611031565b4211610df2576040805162461bcd60e51b815260206004820152601560248201527431b630b4b69d1031b630b4b6903737ba1037b832b760591b604482015290519081900360640190fd5b6002544211610e325760405162461bcd60e51b815260040180806020018281038252602a815260200180611ff4602a913960400191505060405180910390fd5b6000610e3d33610607565b600e54604080516370a0823160e01b8152306004820152905192935083926001600160a01b03909216916370a0823191602480820192602092909190829003018186803b158015610e8d57600080fd5b505afa158015610ea1573d6000803e3d6000fd5b505050506040513d6020811015610eb757600080fd5b50511015610f0c576040805162461bcd60e51b815260206004820152601b60248201527f636c61696d3a20696e73756666696369656e742062616c616e63650000000000604482015290519081900360640190fd5b60008111610f57576040805162461bcd60e51b8152602060048201526013602482015272636c61696d3a207a65726f207265776172647360681b604482015290519081900360640190fd5b33600081815260096020908152604080832083905560169091529020829055600e54610f8f916001600160a01b039091169083611bf0565b604080513381526020810183905281517ffcd6a0cf5a625280133c034863698c011fa0aefbee7f3be397f86fabd9891852929181900390910190a150506000805460ff1916600117905550565b6001600160a01b031660009081526015602052604090205490565b600154600160a01b900460ff1690565b60085460ff1681565b60115490565b6001600160a01b031660009081526016602052604090205490565b600c5490565b6000805461010090046001600160a01b0316331461105457600080fd5b6001600160a01b03821660009081526012602052604090205460ff166110c1576040805162461bcd60e51b815260206004820152601960248201527f45524332303a206163636f756e74206e6f742066726f7a656e00000000000000604482015290519081900360640190fd5b6001600160a01b038216600081815260126020526040808220805460ff19169055517fca5069937e68fd197927055037f59d7c90bf75ac104e6e375539ef480c3ad6ee9190a2506001919050565b3361111957600080fd5b6001546001600160a01b0316331461113057600080fd5b600154600080546040516001600160a01b0393841693610100909204909116917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a36001805460008054610100600160a81b0319166101006001600160a01b038416021790556001600160a01b0319169055565b60035481565b60006111b942600254611c47565b905090565b60005461010090046001600160a01b031633146111da57600080fd5b600154600160a01b900460ff16156111f157600080fd5b6001805460ff60a01b1916600160a01b1790556040805133815290517f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a2589181900360200190a1565b600a6020526000908152604090205481565b60005461010090046001600160a01b031681565b60065481565b60005461010090046001600160a01b0316331461128157600080fd5b600d546001600160a01b03838116911614156112ce5760405162461bcd60e51b81526004018080602001828103825260278152602001806120766027913960400191505060405180910390fd5b600e546001600160a01b038381169116141561131b5760405162461bcd60e51b81526004018080602001828103825260268152602001806120e16026913960400191505060405180910390fd5b60085461010090046001600160a01b0316301415611380576040805162461bcd60e51b815260206004820152601d60248201527f636170747572653a2063616e206e6f742073656e6420746f2073656c66000000604482015290519081900360640190fd5b60085461010090046001600160a01b03166113e2576040805162461bcd60e51b815260206004820152601c60248201527f636170747572653a2063616e206e6f74206275726e20746f6b656e7300000000604482015290519081900360640190fd5b600854611407906001600160a01b03848116916101009004168363ffffffff611bf016565b5050565b60105490565b60126020526000908152604090205460ff1681565b60005460ff1661147d576040805162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604482015290519081900360640190fd5b6000805460ff19169055600154600160a01b900460ff161561149e57600080fd5b3360008181526012602052604090205460ff16156114bb57600080fd5b336114c4611815565b6005556114cf6111ab565b6004556001600160a01b03811615611516576114ea81610607565b6001600160a01b038216600090815260096020908152604080832093909355600554600a909152919020555b6000831161156b576040805162461bcd60e51b815260206004820152601760248201527f6465706f7369743a2063616e6e6f74207374616b652030000000000000000000604482015290519081900360640190fd5b336115b6576040805162461bcd60e51b815260206004820152601660248201527577697468647261773a207a65726f206164647265737360501b604482015290519081900360640190fd5b600d54604080516370a0823160e01b8152336004820152905185926001600160a01b0316916370a08231916024808301926020929190829003018186803b15801561160057600080fd5b505afa158015611614573d6000803e3d6000fd5b505050506040513d602081101561162a57600080fd5b5051101561167f576040805162461bcd60e51b815260206004820152601d60248201527f6465706f7369743a20696e73756666696369656e742062616c616e6365000000604482015290519081900360640190fd5b601154611692908463ffffffff611b7516565b601155336000908152601460205260409020546116b5908463ffffffff611b7516565b336000818152601460205260409020919091556116d190611c5d565b600d546116ef906001600160a01b031633308663ffffffff611c8116565b604080513381526020810185905281517f20b3fc91390f6ceba342f697a9490734680fd3556633f40efa146f1dbe79d05f929181900390910190a150506000805460ff1916600117905550565b60005461010090046001600160a01b0316331461175857600080fd5b60025442116117985760405162461bcd60e51b81526004018080602001828103825260348152602001806120426034913960400191505060405180910390fd5b83600654106117d85760405162461bcd60e51b815260040180806020018281038252602481526020018061201e6024913960400191505060405180910390fd5b6006849055600f839055600b829055600c8190556117fc818363ffffffff611a8f16565b60075550506008805460ff191690555050565b60045481565b600061181f611010565b61182c57506005546106a5565b6111b961185a61183a611010565b61066f670de0b6b3a764000061066360035461066360045461064e6111ab565b6005549063ffffffff611b7516565b6001546001600160a01b031681565b60005461010090046001600160a01b0316331461189457600080fd5b6001600160a01b0381163014156118dc5760405162461bcd60e51b81526004018080602001828103825260238152602001806120be6023913960400191505060405180910390fd5b6001600160a01b0381166119215760405162461bcd60e51b8152600401808060200182810382526022815260200180611fd26022913960400191505060405180910390fd5b600880546001600160a01b0390921661010002610100600160a81b0319909216919091179055565b60055481565b60136020526000908152604090205460ff1681565b60025481565b6000805461010090046001600160a01b0316331461198757600080fd5b6001600160a01b03821660009081526012602052604090205460ff16156119ed576040805162461bcd60e51b815260206004820152601560248201527422a92199181d1030b1b1b7bab73a10333937bd32b760591b604482015290519081900360640190fd5b6001600160a01b038216600081815260126020526040808220805460ff19166001179055517faf85b60d26151edd11443b704d424da6c43d0468f2235ebae3d1904dbc3230499190a2506001919050565b60005461010090046001600160a01b03163314611a5a57600080fd5b6001600160a01b038116611a6d57600080fd5b600180546001600160a01b0319166001600160a01b0392909216919091179055565b6000611ad183836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611ce1565b90505b92915050565b600082611ae957506000611ad4565b82820282848281611af657fe5b0414611ad15760405162461bcd60e51b815260040180806020018281038252602181526020018061209d6021913960400191505060405180910390fd5b6000611ad183836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611d78565b600082820183811015611ad1576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b6001600160a01b03166000908152601360205260409020805460ff19169055565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b179052611c42908490611ddd565b505050565b6000818310611c565781611ad1565b5090919050565b6001600160a01b03166000908152601360205260409020805460ff19166001179055565b604080516001600160a01b0385811660248301528416604482015260648082018490528251808303909101815260849091019091526020810180516001600160e01b03166323b872dd60e01b179052611cdb908590611ddd565b50505050565b60008184841115611d705760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b83811015611d35578181015183820152602001611d1d565b50505050905090810190601f168015611d625780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b60008183611dc75760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315611d35578181015183820152602001611d1d565b506000838581611dd357fe5b0495945050505050565b611def826001600160a01b0316611f95565b611e40576040805162461bcd60e51b815260206004820152601f60248201527f5361666545524332303a2063616c6c20746f206e6f6e2d636f6e747261637400604482015290519081900360640190fd5b60006060836001600160a01b0316836040518082805190602001908083835b60208310611e7e5780518252601f199092019160209182019101611e5f565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114611ee0576040519150601f19603f3d011682016040523d82523d6000602084013e611ee5565b606091505b509150915081611f3c576040805162461bcd60e51b815260206004820181905260248201527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564604482015290519081900360640190fd5b805115611cdb57808060200190516020811015611f5857600080fd5b5051611cdb5760405162461bcd60e51b815260040180806020018281038252602a81526020018061212e602a913960400191505060405180910390fd5b6000813f7fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470818114801590611fc957508115155b94935050505056fe73657442656e6566696369616c3a2063616e206e6f74206275726e20746f6b656e73636c61696d3a2063757272656e74207374616b696e6720706572696f64206e6f7420636f6d706c657465736574526577617264526f756e643a207468697320726f756e6420636f6d706c65746564736574526577617264526f756e643a2070726576696f7573207265776172647320706572696f64206e6f7420636f6d706c657465636170747572653a2063616e206e6f742063617074757265207374616b696e6720746f6b656e73536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f7773657442656e6566696369616c3a2063616e206e6f742073656e6420746f2073656c66636170747572653a2063616e206e6f7420636170747572652072657761726420746f6b656e736e6f74696679526577617264733a2070726f76696465642072657761726420746f6f20686967685361666545524332303a204552433230206f7065726174696f6e20646964206e6f742073756363656564a265627a7a7231582087c1dea4254af69321d82e8f9c9abd68ed3d114c38333c3c025a75c5a127cbae64736f6c63430005110032
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
0000000000000000000000005b18df96d3c8b9f1d1b9e38752498f92d1e2d490000000000000000000000000b81d70802a816b5dacba06d708b5acf19dcd436d
-----Decoded View---------------
Arg [0] : token0 (address): 0x5b18DF96D3C8b9f1D1b9e38752498f92D1e2d490
Arg [1] : token1 (address): 0xB81D70802a816B5DacBA06D708B5acF19DcD436D
-----Encoded View---------------
2 Constructor Arguments found :
Arg [0] : 0000000000000000000000005b18df96d3c8b9f1d1b9e38752498f92d1e2d490
Arg [1] : 000000000000000000000000b81d70802a816b5dacba06d708b5acf19dcd436d
Deployed Bytecode Sourcemap
19080:10394:0:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;19080:10394:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22823:262;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;22823:262:0;-1:-1:-1;;;;;22823:262:0;;:::i;:::-;;;;;;;;;;;;;;;;19861:39;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;19861:39:0;-1:-1:-1;;;;;19861:39:0;;:::i;28929:87::-;;;:::i;19784:41::-;;;:::i;:::-;;;;-1:-1:-1;;;;;19784:41:0;;;;;;;;;;;;;;28770:115;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;28770:115:0;-1:-1:-1;;;;;28770:115:0;;:::i;29026:88::-;;;:::i;25911:831::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;25911:831:0;;:::i;:::-;;17843:192;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;17843:192:0;-1:-1:-1;;;;;17843:192:0;;:::i;:::-;;;;;;;;;;;;;;;;;;19678:31;;;:::i;23662:1258::-;;;:::i;18954:117::-;;;:::i;28599:::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;28599:117:0;-1:-1:-1;;;;;28599:117:0;;:::i;26779:837::-;;;:::i;28134:128::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;28134:128:0;-1:-1:-1;;;;;28134:128:0;;:::i;18745:78::-;;;:::i;19716:28::-;;;:::i;29261:91::-;;;:::i;28270:118::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;28270:118:0;-1:-1:-1;;;;;28270:118:0;;:::i;29122:84::-;;;:::i;27875:251::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;27875:251:0;-1:-1:-1;;;;;27875:251:0;;:::i;18196:175::-;;;:::i;19534:26::-;;;:::i;22256:128::-;;;:::i;18831:115::-;;;:::i;19907:54::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;19907:54:0;-1:-1:-1;;;;;19907:54:0;;:::i;17364:20::-;;;:::i;19643:28::-;;;:::i;21782:464::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;21782:464:0;;;;;;;;:::i;28446:99::-;;;:::i;20298:45::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;20298:45:0;-1:-1:-1;;;;;20298:45:0;;:::i;25194:677::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;25194:677:0;;:::i;23126:494::-;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;-1:-1;23126:494:0;;;;;;;;;;;;;;;;;:::i;19567:26::-;;;:::i;22392:423::-;;;:::i;17391:23::-;;;:::i;21450:276::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;21450:276:0;-1:-1:-1;;;;;21450:276:0;;:::i;19600:36::-;;;:::i;20379:44::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;20379:44:0;-1:-1:-1;;;;;20379:44:0;;:::i;19499:28::-;;;:::i;27624:243::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;27624:243:0;-1:-1:-1;;;;;27624:243:0;;:::i;18043:145::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;18043:145:0;-1:-1:-1;;;;;18043:145:0;;:::i;22823:262::-;-1:-1:-1;;;;;23060:16:0;;22877:4;23060:16;;;:7;:16;;;;;;;;;22976:22;:31;;;;;;22914:163;;23060:16;22914:123;;23032:4;;22914:95;;22955:53;;:16;:14;:16::i;:::-;:20;:53;:20;:53;:::i;:::-;22914:18;22924:7;22914:9;:18::i;:::-;:40;:95;:40;:95;:::i;:::-;:117;:123;:117;:123;:::i;:::-;:145;:163;:145;:163;:::i;:::-;22894:183;;22823:262;;;;:::o;19861:39::-;;;;;;;;;;;;;:::o;28929:87::-;29000:8;;28929:87;;:::o;19784:41::-;;;;;;-1:-1:-1;;;;;19784:41:0;;:::o;28770:115::-;28833:4;28857:20;28864:12;28857:6;:20::i;29026:88::-;29100:6;;29026:88;:::o;25911:831::-;17002:11;;;;16994:55;;;;;-1:-1:-1;;;16994:55:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;17141:5;17127:19;;-1:-1:-1;;17127:19:0;;;;18632:7;-1:-1:-1;;;18632:7:0;;17127:19;18632:7;18631:8;18623:17;;;;;;26027:10;21060:23;;;;:13;:23;;;;;;;;21059:24;21051:33;;;;;;26062:10;21185:16;:14;:16::i;:::-;21162:20;:39;21229:26;:24;:26::i;:::-;21212:14;:43;-1:-1:-1;;;;;21270:21:0;;;21266:157;;21327:15;21334:7;21327:6;:15::i;:::-;-1:-1:-1;;;;;21308:16:0;;;;;;:7;:16;;;;;;;;:34;;;;21391:20;;21357:22;:31;;;;;;:54;21266:157;26107:1;26098:6;:10;26090:47;;;;;-1:-1:-1;;;26090:47:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;26156:10;26148:59;;;;;-1:-1:-1;;;26148:59:0;;;;;;;;;;;;-1:-1:-1;;;26148:59:0;;;;;;;;;;;;;;;26262:10;26252:21;;;;:9;:21;;;;;;:31;-1:-1:-1;26252:31:0;26244:40;;;;;;26310:12;;:24;;26327:6;26310:24;:16;:24;:::i;:::-;26295:12;:39;26395:10;26385:21;;;;:9;:21;;;;;;:33;;26411:6;26385:33;:25;:33;:::i;:::-;26371:10;26361:21;;;;:9;:21;;;;;;;;:57;;;;26495:12;:24;;;;:36;;26524:6;26495:36;:28;:36;:::i;:::-;26481:10;26468:24;;;;:12;:24;;;;;;;;:63;;;;26548:9;:21;;;;26544:91;;26591:29;26609:10;26591:17;:29::i;:::-;26645:7;;:40;;-1:-1:-1;;;;;26645:7:0;26666:10;26678:6;26645:40;:20;:40;:::i;:::-;26701:33;;;26715:10;26701:33;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;17307:11:0;:18;;-1:-1:-1;;17307:18:0;17321:4;17307:18;;;-1:-1:-1;25911:831:0:o;17843:192::-;17898:4;17929:5;;-1:-1:-1;;;;;17918:16:0;;;17929:5;;;;;17918:16;17915:113;;;-1:-1:-1;17958:4:0;17951:11;;17915:113;-1:-1:-1;18011:5:0;18004:12;;19678:31;;;;:::o;23662:1258::-;17667:5;;;;;-1:-1:-1;;;;;17667:5:0;17653:10;:19;17645:28;;;;;;23754:1;21185:16;:14;:16::i;:::-;21162:20;:39;21229:26;:24;:26::i;:::-;21212:14;:43;-1:-1:-1;;;;;21270:21:0;;;21266:157;;21327:15;21334:7;21327:6;:15::i;:::-;-1:-1:-1;;;;;21308:16:0;;;;;;:7;:16;;;;;;;;:34;;;;21391:20;;21357:22;:31;;;;;;:54;21266:157;23806:9;;;;:17;;:9;:17;23802:56;;;23840:7;;23802:56;23893:12;;23874:15;:31;23870:359;;23948:15;;23935:8;;:29;;;:12;:29;:::i;:::-;23922:10;:42;23870:359;;;24014:12;;23997:14;;24014:33;;24031:15;24014:33;:16;:33;:::i;:::-;23997:50;;24062:13;24078:25;24092:10;;24078:9;:13;;:25;;;;:::i;:::-;24062:41;;24131:43;24158:15;;24131:22;24144:8;24131;;:12;;:22;;;;:::i;:43::-;24118:10;:56;24189:17;:28;-1:-1:-1;23870:359:0;24604:7;;:32;;;-1:-1:-1;;;24604:32:0;;24630:4;24604:32;;;;;;24589:12;;-1:-1:-1;;;;;24604:7:0;;:17;;:32;;;;;;;;;;;;;;:7;:32;;;5:2:-1;;;;30:1;27;20:12;5:2;24604:32:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;24604:32:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;24604:32:0;24681:15;;24604:32;;-1:-1:-1;24669:28:0;;24604:32;;24669:28;:11;:28;:::i;:::-;24655:10;;:42;;24647:94;;;;-1:-1:-1;;;24647:94:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24754:9;:16;;-1:-1:-1;;24754:16:0;24766:4;24754:16;;;24798:15;24781:14;:32;;;24859:15;;24839:36;;24798:15;24839:36;:19;:36;:::i;:::-;24824:12;:51;24903:8;;24891:21;;;;;;;;;;;;;;;;21433:1;;17684;23662:1258::o;18954:117::-;17667:5;;;;;-1:-1:-1;;;;;17667:5:0;17653:10;:19;17645:28;;;;;;18709:7;;-1:-1:-1;;;18709:7:0;;;;18701:16;;;;;;19012:7;:15;;-1:-1:-1;;;;19012:15:0;;;19043:20;;;19052:10;19043:20;;;;;;;;;;;;;18954:117::o;28599:::-;-1:-1:-1;;;;;28685:23:0;28661:4;28685:23;;;:9;:23;;;;;;;28599:117::o;26779:837::-;17002:11;;;;16994:55;;;;;-1:-1:-1;;;16994:55:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;17141:5;17127:19;;-1:-1:-1;;17127:19:0;;;;18632:7;-1:-1:-1;;;18632:7:0;;17127:19;18632:7;18631:8;18623:17;;;;;;26881:10;21060:23;;;;:13;:23;;;;;;;;21059:24;21051:33;;;;;;26916:10;21185:16;:14;:16::i;:::-;21162:20;:39;21229:26;:24;:26::i;:::-;21212:14;:43;-1:-1:-1;;;;;21270:21:0;;;21266:157;;21327:15;21334:7;21327:6;:15::i;:::-;-1:-1:-1;;;;;21308:16:0;;;;;;:7;:16;;;;;;;;:34;;;;21391:20;;21357:22;:31;;;;;;:54;21266:157;26952:10;26944:56;;;;;-1:-1:-1;;;26944:56:0;;;;;;;;;;;;-1:-1:-1;;;26944:56:0;;;;;;;;;;;;;;;27045:17;:15;:17::i;:::-;27027:15;:35;27019:69;;;;;-1:-1:-1;;;27019:69:0;;;;;;;;;;;;-1:-1:-1;;;27019:69:0;;;;;;;;;;;;;;;27128:12;;27110:15;:30;27102:85;;;;-1:-1:-1;;;27102:85:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27200:11;27214:18;27221:10;27214:6;:18::i;:::-;27285:7;;:32;;;-1:-1:-1;;;27285:32:0;;27311:4;27285:32;;;;;;27200;;-1:-1:-1;27200:32:0;;-1:-1:-1;;;;;27285:7:0;;;;:17;;:32;;;;;;;;;;;;;;;:7;:32;;;5:2:-1;;;;30:1;27;20:12;5:2;27285:32:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;27285:32:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;27285:32:0;:42;;27277:82;;;;;-1:-1:-1;;;27277:82:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;27395:1;27386:6;:10;27378:42;;;;;-1:-1:-1;;;27378:42:0;;;;;;;;;;;;-1:-1:-1;;;27378:42:0;;;;;;;;;;;;;;;27457:10;27471:1;27449:19;;;:7;:19;;;;;;;;:23;;;27483:7;:19;;;;;:28;;;27522:7;;:40;;-1:-1:-1;;;;;27522:7:0;;;;27483:28;27522:20;:40::i;:::-;27578:30;;;27589:10;27578:30;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;17307:11:0;:18;;-1:-1:-1;;17307:18:0;17321:4;17307:18;;;-1:-1:-1;26779:837:0:o;28134:128::-;-1:-1:-1;;;;;28228:26:0;28204:4;28228:26;;;:12;:26;;;;;;;28134:128::o;18745:78::-;18808:7;;-1:-1:-1;;;18808:7:0;;;;;18745:78::o;19716:28::-;;;;;;:::o;29261:91::-;29332:12;;29261:91;:::o;28270:118::-;-1:-1:-1;;;;;28359:21:0;28335:4;28359:21;;;:7;:21;;;;;;;28270:118::o;29122:84::-;29194:4;;29122:84;:::o;27875:251::-;27945:4;17667:5;;;;;-1:-1:-1;;;;;17667:5:0;17653:10;:19;17645:28;;;;;;-1:-1:-1;;;;;27970:22:0;;;;;;:13;:22;;;;;;;;27962:60;;;;;-1:-1:-1;;;27962:60:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;28033:22:0;;28058:5;28033:22;;;:13;:22;;;;;;:30;;-1:-1:-1;;28033:30:0;;;28079:17;;;28058:5;28079:17;-1:-1:-1;28114:4:0;27875:251;;;:::o;18196:175::-;17744:10;17736:33;;;;;;17802:8;;-1:-1:-1;;;;;17802:8:0;17788:10;:22;17780:31;;;;;;18287:8;;;18280:5;;18259:37;;-1:-1:-1;;;;;18287:8:0;;;;;18280:5;;;;;;;18259:37;;;18323:8;;;;18315:16;;-1:-1:-1;;;;;;18315:16:0;18323:8;-1:-1:-1;;;;;18323:8:0;;18315:16;;;;-1:-1:-1;;;;;;18342:21:0;;;18196:175::o;19534:26::-;;;;:::o;22256:128::-;22313:4;22337:39;22346:15;22363:12;;22337:8;:39::i;:::-;22330:46;;22256:128;:::o;18831:115::-;17667:5;;;;;-1:-1:-1;;;;;17667:5:0;17653:10;:19;17645:28;;;;;;18632:7;;-1:-1:-1;;;18632:7:0;;;;18631:8;18623:17;;;;;;18900:4;18890:14;;-1:-1:-1;;;;18890:14:0;-1:-1:-1;;;18890:14:0;;;18920:18;;;18927:10;18920:18;;;;;;;;;;;;;18831:115::o;19907:54::-;;;;;;;;;;;;;:::o;17364:20::-;;;;;;-1:-1:-1;;;;;17364:20:0;;:::o;19643:28::-;;;;:::o;21782:464::-;17667:5;;;;;-1:-1:-1;;;;;17667:5:0;17653:10;:19;17645:28;;;;;;21884:7;;-1:-1:-1;;;;;21866:26:0;;;21884:7;;21866:26;;21858:78;;;;-1:-1:-1;;;21858:78:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21973:7;;-1:-1:-1;;;;;21955:26:0;;;21973:7;;21955:26;;21947:77;;;;-1:-1:-1;;;21947:77:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22043:10;;;;;-1:-1:-1;;;;;22043:10:0;22065:4;22043:27;;22035:69;;;;;-1:-1:-1;;;22035:69:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;22123:10;;;;;-1:-1:-1;;;;;22123:10:0;22115:65;;;;;-1:-1:-1;;;22115:65:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;22219:10;;22191:47;;-1:-1:-1;;;;;22191:27:0;;;;22219:10;;;;22231:6;22191:47;:27;:47;:::i;:::-;21782:464;;:::o;28446:99::-;28520:17;;28446:99;:::o;20298:45::-;;;;;;;;;;;;;;;:::o;25194:677::-;17002:11;;;;16994:55;;;;;-1:-1:-1;;;16994:55:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;17141:5;17127:19;;-1:-1:-1;;17127:19:0;;;;18632:7;-1:-1:-1;;;18632:7:0;;17127:19;18632:7;18631:8;18623:17;;;;;;25309:10;21060:23;;;;:13;:23;;;;;;;;21059:24;21051:33;;;;;;25344:10;21185:16;:14;:16::i;:::-;21162:20;:39;21229:26;:24;:26::i;:::-;21212:14;:43;-1:-1:-1;;;;;21270:21:0;;;21266:157;;21327:15;21334:7;21327:6;:15::i;:::-;-1:-1:-1;;;;;21308:16:0;;;;;;:7;:16;;;;;;;;:34;;;;21391:20;;21357:22;:31;;;;;;:54;21266:157;25389:1;25380:6;:10;25372:46;;;;;-1:-1:-1;;;25372:46:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;25437:10;25429:59;;;;;-1:-1:-1;;;25429:59:0;;;;;;;;;;;;-1:-1:-1;;;25429:59:0;;;;;;;;;;;;;;;25507:7;;:29;;;-1:-1:-1;;;25507:29:0;;25525:10;25507:29;;;;;;25540:6;;-1:-1:-1;;;;;25507:7:0;;:17;;:29;;;;;;;;;;;;;;:7;:29;;;5:2:-1;;;;30:1;27;20:12;5:2;25507:29:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;25507:29:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;25507:29:0;:39;;25499:81;;;;;-1:-1:-1;;;25499:81:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;25606:12;;:24;;25623:6;25606:24;:16;:24;:::i;:::-;25591:12;:39;25685:10;25675:21;;;;:9;:21;;;;;;:33;;25701:6;25675:33;:25;:33;:::i;:::-;25661:10;25651:21;;;;:9;:21;;;;;:57;;;;25719:26;;:14;:26::i;:::-;25756:7;;:59;;-1:-1:-1;;;;;25756:7:0;25781:10;25801:4;25808:6;25756:59;:24;:59;:::i;:::-;25831:32;;;25844:10;25831:32;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;17307:11:0;:18;;-1:-1:-1;;17307:18:0;17321:4;17307:18;;;-1:-1:-1;25194:677:0:o;23126:494::-;17667:5;;;;;-1:-1:-1;;;;;17667:5:0;17653:10;:19;17645:28;;;;;;23281:12;;23263:15;:30;23255:95;;;;-1:-1:-1;;;23255:95:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23384:5;23369:12;;:20;23361:69;;;;-1:-1:-1;;;23361:69:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23443:12;:20;;;23474:8;:17;;;23502:6;:14;;;23527:4;:10;;;23566:16;23534:3;23511:5;23566:16;:8;:16;:::i;:::-;23548:15;:34;-1:-1:-1;;23595:9:0;:17;;-1:-1:-1;;23595:17:0;;;-1:-1:-1;;23126:494:0:o;19567:26::-;;;;:::o;22392:423::-;22439:4;22460:16;:14;:16::i;:::-;22456:81;;-1:-1:-1;22505:20:0;;22498:27;;22456:81;22567:240;22610:182;22775:16;:14;:16::i;:::-;22610:138;22743:4;22610:106;22705:10;;22610:68;22663:14;;22610:26;:24;:26::i;:182::-;22567:20;;;:240;:24;:240;:::i;17391:23::-;;;-1:-1:-1;;;;;17391:23:0;;:::o;21450:276::-;17667:5;;;;;-1:-1:-1;;;;;17667:5:0;17653:10;:19;17645:28;;;;;;-1:-1:-1;;;;;21532:28:0;;21555:4;21532:28;;21524:76;;;;-1:-1:-1;;;21524:76:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;21619:25:0;;21611:72;;;;-1:-1:-1;;;21611:72:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21694:10;:24;;-1:-1:-1;;;;;21694:24:0;;;;;-1:-1:-1;;;;;;21694:24:0;;;;;;;;;21450:276::o;19600:36::-;;;;:::o;20379:44::-;;;;;;;;;;;;;;;:::o;19499:28::-;;;;:::o;27624:243::-;27692:4;17667:5;;;;;-1:-1:-1;;;;;17667:5:0;17653:10;:19;17645:28;;;;;;-1:-1:-1;;;;;27718:22:0;;;;;;:13;:22;;;;;;;;27717:23;27709:57;;;;;-1:-1:-1;;;27709:57:0;;;;;;;;;;;;-1:-1:-1;;;27709:57:0;;;;;;;;;;;;;;;-1:-1:-1;;;;;27777:22:0;;;;;;:13;:22;;;;;;:29;;-1:-1:-1;;27777:29:0;27802:4;27777:29;;;27822:15;;;27777:22;27822:15;-1:-1:-1;27855:4:0;27624:243;;;:::o;18043:145::-;17667:5;;;;;-1:-1:-1;;;;;17667:5:0;17653:10;:19;17645:28;;;;;;-1:-1:-1;;;;;18125:23:0;;18117:32;;;;;;18160:8;:20;;-1:-1:-1;;;;;;18160:20:0;-1:-1:-1;;;;;18160:20:0;;;;;;;;;;18043:145::o;8564:136::-;8622:7;8649:43;8653:1;8656;8649:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;8642:50;;8564:136;;;;;:::o;9480:471::-;9538:7;9783:6;9779:47;;-1:-1:-1;9813:1:0;9806:8;;9779:47;9850:5;;;9854:1;9850;:5;:1;9874:5;;;;;:10;9866:56;;;;-1:-1:-1;;;9866:56:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10419:132;10477:7;10504:39;10508:1;10511;10504:39;;;;;;;;;;;;;;;;;:3;:39::i;8108:181::-;8166:7;8198:5;;;8222:6;;;;8214:46;;;;;-1:-1:-1;;;8214:46:0;;;;;;;;;;;;;;;;;;;;;;;;;;;25043:111;-1:-1:-1;;;;;25112:26:0;25141:5;25112:26;;;:12;:26;;;;;:34;;-1:-1:-1;;25112:34:0;;;25043:111::o;12797:176::-;12906:58;;;-1:-1:-1;;;;;12906:58:0;;;;;;;;;;;;;;;26:21:-1;;;22:32;;;6:49;;12906:58:0;;;;;;;;25:18:-1;;61:17;;-1:-1;;;;;182:15;-1:-1;;;179:29;160:49;;12880:85:0;;12899:5;;12880:18;:85::i;:::-;12797:176;;;:::o;299:106::-;357:7;388:1;384;:5;:13;;396:1;384:13;;;-1:-1:-1;392:1:0;;299:106;-1:-1:-1;299:106:0:o;24928:107::-;-1:-1:-1;;;;;24994:26:0;;;;;:12;:26;;;;;:33;;-1:-1:-1;;24994:33:0;25023:4;24994:33;;;24928:107::o;12981:204::-;13108:68;;;-1:-1:-1;;;;;13108:68:0;;;;;;;;;;;;;;;;;;;;;;26:21:-1;;;22:32;;;6:49;;13108:68:0;;;;;;;;25:18:-1;;61:17;;-1:-1;;;;;182:15;-1:-1;;;179:29;160:49;;13082:95:0;;13101:5;;13082:18;:95::i;:::-;12981:204;;;;:::o;9037:192::-;9123:7;9159:12;9151:6;;;;9143:29;;;;-1:-1:-1;;;9143:29:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;9143:29:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;9195:5:0;;;9037:192::o;11081:345::-;11167:7;11269:12;11262:5;11254:28;;;;-1:-1:-1;;;11254:28:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27:10:-1;;8:100;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;11254:28:0;;11293:9;11309:1;11305;:5;;;;;;;11081:345;-1:-1:-1;;;;;11081:345:0:o;14836:1114::-;15440:27;15448:5;-1:-1:-1;;;;;15440:25:0;;:27::i;:::-;15432:71;;;;;-1:-1:-1;;;15432:71:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;15577:12;15591:23;15626:5;-1:-1:-1;;;;;15618:19:0;15638:4;15618:25;;;;;;;;;;;;;36:153:-1;66:2;61:3;58:11;36:153;;176:10;;164:23;;-1:-1;;139:12;;;;98:2;89:12;;;;114;36:153;;;274:1;267:3;263:2;259:12;254:3;250:22;246:30;315:4;311:9;305:3;299:10;295:26;356:4;350:3;344:10;340:21;389:7;380;377:20;372:3;365:33;3:399;;;15618:25:0;;;;;;;;;;;;;;;;;;;;;;;;14:1:-1;21;16:31;;;;75:4;69:11;64:16;;144:4;140:9;133:4;115:16;111:27;107:43;104:1;100:51;94:4;87:65;169:16;166:1;159:27;225:16;222:1;215:4;212:1;208:12;193:49;7:242;;16:31;36:4;31:9;;7:242;;15576:67:0;;;;15662:7;15654:52;;;;;-1:-1:-1;;;15654:52:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15723:17;;:21;15719:224;;15865:10;15854:30;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;15854:30:0;15846:85;;;;-1:-1:-1;;;15846:85:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5535:619;5595:4;6063:20;;5906:66;6103:23;;;;;;:42;;-1:-1:-1;6130:15:0;;;6103:42;6095:51;5535:619;-1:-1:-1;;;;5535:619:0:o
Swarm Source
bzzr://87c1dea4254af69321d82e8f9c9abd68ed3d114c38333c3c025a75c5a127cbae
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 30 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|---|---|---|---|---|
ETH | 100.00% | $21.85 | 1.6581 | $36.22 |
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.