Contract
0x65c6fc773729c30ac4d570c8b8040c454ffa5960
3
Contract Overview
My Name Tag:
Not Available, login to update
[ Download CSV Export ]
Contract Name:
BeefyLaunchpool
Compiler Version
v0.5.5+commit.47a71e8f
Contract Source Code (Solidity)
/** *Submitted for verification at moonbeam.moonscan.io on 2022-08-29 */ // File: @openzeppelin-2/contracts/math/Math.sol pragma solidity ^0.5.0; /** * @dev Standard math utilities missing in the Solidity language. */ 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); } } // File: @openzeppelin-2/contracts/token/ERC20/IERC20.sol pragma solidity ^0.5.0; /** * @dev Interface of the ERC20 standard as defined in the EIP. Does not include * the optional functions; to access them see {ERC20Detailed}. */ 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-2/contracts/GSN/Context.sol pragma solidity ^0.5.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 GSN 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. */ contract Context { // Empty internal constructor, to prevent people from mistakenly deploying // an instance of this contract, which should be used via inheritance. constructor () internal { } // solhint-disable-previous-line no-empty-blocks function _msgSender() internal view returns (address payable) { return msg.sender; } function _msgData() internal view returns (bytes memory) { this; // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691 return msg.data; } } // File: @openzeppelin-2/contracts/ownership/Ownable.sol pragma solidity ^0.5.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. * * 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. */ 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 () internal { address msgSender = _msgSender(); _owner = msgSender; emit OwnershipTransferred(address(0), msgSender); } /** * @dev Returns the address of the current owner. */ function owner() public view returns (address) { return _owner; } /** * @dev Throws if called by any account other than the owner. */ modifier onlyOwner() { require(isOwner(), "Ownable: caller is not the owner"); _; } /** * @dev Returns true if the caller is the current owner. */ function isOwner() public view returns (bool) { return _msgSender() == _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 onlyOwner { emit OwnershipTransferred(_owner, address(0)); _owner = 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 onlyOwner { _transferOwnership(newOwner); } /** * @dev Transfers ownership of the contract to a new account (`newOwner`). */ function _transferOwnership(address newOwner) internal { require(newOwner != address(0), "Ownable: new owner is the zero address"); emit OwnershipTransferred(_owner, newOwner); _owner = newOwner; } } // File: @openzeppelin-2/contracts/math/SafeMath.sol pragma solidity ^0.5.0; /** * @dev Wrappers over Solidity's arithmetic operations with added overflow * checks. * * Arithmetic operations in Solidity wrap on overflow. This can easily result * in bugs, because programmers usually assume that an overflow raises an * error, which is the standard behavior in high level programming languages. * `SafeMath` restores this intuition by reverting the transaction when an * operation overflows. * * Using this library instead of the unchecked operations eliminates an entire * class of bugs, so it's recommended to use it always. */ library SafeMath { /** * @dev Returns the addition of two unsigned integers, reverting on * overflow. * * Counterpart to Solidity's `+` operator. * * Requirements: * - Addition cannot overflow. */ function add(uint256 a, uint256 b) internal pure returns (uint256) { uint256 c = a + b; require(c >= a, "SafeMath: addition overflow"); return c; } /** * @dev Returns the subtraction of two unsigned integers, reverting on * overflow (when the result is negative). * * Counterpart to Solidity's `-` operator. * * Requirements: * - Subtraction cannot overflow. */ function sub(uint256 a, uint256 b) internal pure returns (uint256) { return sub(a, b, "SafeMath: subtraction overflow"); } /** * @dev Returns the subtraction of two unsigned integers, reverting with custom message on * overflow (when the result is negative). * * Counterpart to Solidity's `-` operator. * * Requirements: * - Subtraction cannot overflow. * * _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; } } // File: @openzeppelin-2/contracts/utils/Address.sol pragma solidity ^0.5.5; /** * @dev Collection of functions related to the address type */ 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"); } } // File: @openzeppelin-2/contracts/token/ERC20/SafeERC20.sol pragma solidity ^0.5.0; /** * @title SafeERC20 * @dev Wrappers around ERC20 operations that throw on failure (when the token * contract returns false). Tokens that return no value (and instead revert or * throw on failure) are also supported, non-reverting calls are assumed to be * successful. * To use this library you can add a `using SafeERC20 for ERC20;` statement to your contract, * which allows you to call the safe operations as `token.safeTransfer(...)`, etc. */ 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"); } } } // File: contracts/BIFI/utils/LPTokenWrapper.sol pragma solidity ^0.5.0; contract LPTokenWrapper { using SafeMath for uint256; using SafeERC20 for IERC20; IERC20 public stakedToken; uint256 private _totalSupply; mapping(address => uint256) private _balances; constructor(address _stakedToken) public { stakedToken = IERC20(_stakedToken); } function totalSupply() public view returns (uint256) { return _totalSupply; } function balanceOf(address account) public view returns (uint256) { return _balances[account]; } function stake(uint256 amount) public { _totalSupply = _totalSupply.add(amount); _balances[msg.sender] = _balances[msg.sender].add(amount); stakedToken.safeTransferFrom(msg.sender, address(this), amount); } function withdraw(uint256 amount) public { _totalSupply = _totalSupply.sub(amount); _balances[msg.sender] = _balances[msg.sender].sub(amount); stakedToken.safeTransfer(msg.sender, amount); } } // File: contracts/BIFI/infra/BeefyLaunchpool.sol pragma solidity ^0.5.0; contract BeefyLaunchpool is LPTokenWrapper, Ownable { IERC20 public rewardToken; uint256 public duration; uint256 public periodFinish = 0; uint256 public rewardRate = 0; uint256 public lastUpdateTime; uint256 public rewardPerTokenStored; mapping(address => uint256) public userRewardPerTokenPaid; mapping(address => uint256) public rewards; uint256 public rewardBalance; address public manager; address public treasury; uint256 public treasuryFee = 500; bool public isPreStake = true; mapping(address => bool) public notifiers; event RewardAdded(uint256 reward); event Staked(address indexed user, uint256 amount); event Withdrawn(address indexed user, uint256 amount); event RewardPaid(address indexed user, uint256 reward); constructor(address _stakedToken, address _rewardToken, uint256 _duration, address _manager, address _treasury) public LPTokenWrapper(_stakedToken) { rewardToken = IERC20(_rewardToken); duration = _duration; manager = _manager; treasury = _treasury; } modifier onlyManager() { require(msg.sender == manager || msg.sender == owner(), "!manager"); _; } modifier onlyNotifier() { require(msg.sender == manager || msg.sender == owner() || notifiers[msg.sender], "!notifier"); _; } modifier updateReward(address account) { rewardPerTokenStored = rewardPerToken(); lastUpdateTime = lastTimeRewardApplicable(); if (account != address(0)) { rewards[account] = earned(account); userRewardPerTokenPaid[account] = rewardPerTokenStored; } _; } function lastTimeRewardApplicable() public view returns (uint256) { return Math.min(block.timestamp, periodFinish); } function rewardPerToken() public view returns (uint256) { if (totalSupply() == 0) { return rewardPerTokenStored; } return rewardPerTokenStored.add( lastTimeRewardApplicable() .sub(lastUpdateTime) .mul(rewardRate) .mul(1e18) .div(totalSupply()) ); } function earned(address account) public view returns (uint256) { return balanceOf(account) .mul(rewardPerToken().sub(userRewardPerTokenPaid[account])) .div(1e18) .add(rewards[account]); } // stake visibility is public as overriding LPTokenWrapper's stake() function function stake(uint256 amount) public updateReward(msg.sender) { require(amount > 0, "Cannot stake 0"); super.stake(amount); emit Staked(msg.sender, amount); } function withdraw(uint256 amount) public updateReward(msg.sender) { require(amount > 0, "Cannot withdraw 0"); super.withdraw(amount); emit Withdrawn(msg.sender, amount); } function exit() external { withdraw(balanceOf(msg.sender)); getReward(); } function getReward() public updateReward(msg.sender) { uint256 reward = earned(msg.sender); if (reward > 0) { rewards[msg.sender] = 0; rewardBalance = rewardBalance.sub(reward); rewardToken.safeTransfer(msg.sender, reward); emit RewardPaid(msg.sender, reward); } } function setRewardDuration(uint256 _duration) external onlyManager { require(block.timestamp >= periodFinish); duration = _duration; } function setTreasuryFee(uint256 _fee) external onlyManager { require(_fee <= 500); treasuryFee = _fee; } function setTreasury(address _treasury) external onlyManager { treasury = _treasury; } function openPreStake() external onlyManager { isPreStake = true; } function setNotifier(address _notifier, bool _enable) external onlyManager { notifiers[_notifier] = _enable; } function _notify(uint256 reward) internal updateReward(address(0)) { uint256 fee = reward.mul(treasuryFee).div(10000); if (fee > 0) { rewardToken.safeTransfer(treasury, fee); reward = reward.sub(fee); } require(reward != 0, "no rewards"); if (block.timestamp >= periodFinish) { rewardRate = reward.div(duration); } else { uint256 remaining = periodFinish.sub(block.timestamp); uint256 leftover = remaining.mul(rewardRate); rewardRate = reward.add(leftover).div(duration); } lastUpdateTime = block.timestamp; periodFinish = block.timestamp.add(duration); rewardBalance = rewardBalance.add(reward); isPreStake = false; emit RewardAdded(reward); } function notifyAmount(uint256 _amount) external onlyNotifier { rewardToken.safeTransferFrom(msg.sender, address(this), _amount); _notify(_amount); } function notifyAlreadySent() external onlyNotifier { uint256 balance = rewardToken.balanceOf(address(this)); uint256 userRewards = rewardBalance; if (rewardToken == stakedToken) { userRewards = userRewards.add(totalSupply()); } uint256 newRewards = balance.sub(userRewards); _notify(newRewards); } function inCaseTokensGetStuck(address _token) external onlyManager { uint256 amount = IERC20(_token).balanceOf(address(this)); inCaseTokensGetStuck(_token, msg.sender, amount); } function inCaseTokensGetStuck(address _token, address _to, uint _amount) public onlyManager { if (totalSupply() != 0) { require(_token != address(stakedToken), "!staked"); } IERC20(_token).safeTransfer(_to, _amount); } }
[{"constant":true,"inputs":[{"name":"account","type":"address"}],"name":"earned","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"notifyAlreadySent","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"}],"name":"rewards","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"duration","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"totalSupply","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"amount","type":"uint256"}],"name":"withdraw","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_notifier","type":"address"},{"name":"_enable","type":"bool"}],"name":"setNotifier","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"getReward","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"manager","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"}],"name":"notifiers","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_amount","type":"uint256"}],"name":"notifyAmount","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"treasury","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"account","type":"address"}],"name":"balanceOf","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"renounceOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_fee","type":"uint256"}],"name":"setTreasuryFee","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"rewardRate","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"lastTimeRewardApplicable","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"}],"name":"userRewardPerTokenPaid","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"owner","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"isOwner","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"openPreStake","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"amount","type":"uint256"}],"name":"stake","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"rewardBalance","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"isPreStake","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_duration","type":"uint256"}],"name":"setRewardDuration","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"lastUpdateTime","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"treasuryFee","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"stakedToken","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"rewardPerToken","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_token","type":"address"}],"name":"inCaseTokensGetStuck","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"rewardPerTokenStored","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"exit","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"periodFinish","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_treasury","type":"address"}],"name":"setTreasury","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_token","type":"address"},{"name":"_to","type":"address"},{"name":"_amount","type":"uint256"}],"name":"inCaseTokensGetStuck","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"rewardToken","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"inputs":[{"name":"_stakedToken","type":"address"},{"name":"_rewardToken","type":"address"},{"name":"_duration","type":"uint256"},{"name":"_manager","type":"address"},{"name":"_treasury","type":"address"}],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":false,"name":"reward","type":"uint256"}],"name":"RewardAdded","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"user","type":"address"},{"indexed":false,"name":"amount","type":"uint256"}],"name":"Staked","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"user","type":"address"},{"indexed":false,"name":"amount","type":"uint256"}],"name":"Withdrawn","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"user","type":"address"},{"indexed":false,"name":"reward","type":"uint256"}],"name":"RewardPaid","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"previousOwner","type":"address"},{"indexed":true,"name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"}]
Contract Creation Code
6080604052600060068190556007556101f4600f556010805460ff1916600117905534801561002d57600080fd5b5060405160a080611c5c833981018060405260a081101561004d57600080fd5b50805160208083015160408401516060850151608090950151600080546001600160a01b0319166001600160a01b0387161781559495929491939091906100979061012e811b901c565b600380546001600160a01b0319166001600160a01b038316908117909155604051919250906000907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350600480546001600160a01b039586166001600160a01b031991821617909155600593909355600d805492851692841692909217909155600e805491909316911617905550610132565b3390565b611b1b806101416000396000f3fe608060405234801561001057600080fd5b50600436106102265760003560e01c80638da5cb5b11610130578063cc7a262e116100b8578063ebe2b12b1161007c578063ebe2b12b146104b2578063f0f44260146104ba578063f2fde38b146104e0578063f587268a14610506578063f7c618c11461053c57610226565b8063cc7a262e1461046c578063cd3daf9d14610474578063def68a9c1461047c578063df136d65146104a2578063e9fad8ee146104aa57610226565b8063aa5c3ab4116100ff578063aa5c3ab41461042f578063b99c4c9714610437578063c0ed00c91461043f578063c8f33c911461045c578063cc32d1761461046457610226565b80638da5cb5b146103fa5780638f32d59b1461040257806396c0ce2f1461040a578063a694fc3a1461041257610226565b8063567eb884116101b3578063715018a611610182578063715018a61461039f57806377e741c7146103a75780637b0a47ee146103c457806380faa57d146103cc5780638b876347146103d457610226565b8063567eb8841461031a5780635a56f6d51461035457806361d027b31461037157806370a082311461037957610226565b806318160ddd116101fa57806318160ddd1461029b5780632e1a7d4d146102a35780632e47fe83146102c05780633d18b912146102ee578063481c6a75146102f657610226565b80628cc2621461022b57806302061b15146102635780630700037d1461026d5780630fb5a6b414610293575b600080fd5b6102516004803603602081101561024157600080fd5b50356001600160a01b0316610544565b60408051918252519081900360200190f35b61026b6105ca565b005b6102516004803603602081101561028357600080fd5b50356001600160a01b0316610736565b610251610748565b61025161074e565b61026b600480360360208110156102b957600080fd5b5035610755565b61026b600480360360408110156102d657600080fd5b506001600160a01b038135169060200135151561084a565b61026b6108ea565b6102fe6109d6565b604080516001600160a01b039092168252519081900360200190f35b6103406004803603602081101561033057600080fd5b50356001600160a01b03166109e5565b604080519115158252519081900360200190f35b61026b6004803603602081101561036a57600080fd5b50356109fa565b6102fe610ab4565b6102516004803603602081101561038f57600080fd5b50356001600160a01b0316610ac3565b61026b610ade565b61026b600480360360208110156103bd57600080fd5b5035610b86565b610251610c0f565b610251610c15565b610251600480360360208110156103ea57600080fd5b50356001600160a01b0316610c28565b6102fe610c3a565b610340610c49565b61026b610c6f565b61026b6004803603602081101561042857600080fd5b5035610cf3565b610251610de8565b610340610dee565b61026b6004803603602081101561045557600080fd5b5035610df7565b610251610e80565b610251610e86565b6102fe610e8c565b610251610e9b565b61026b6004803603602081101561049257600080fd5b50356001600160a01b0316610ef1565b610251610fec565b61026b610ff2565b61025161100d565b61026b600480360360208110156104d057600080fd5b50356001600160a01b0316611013565b61026b600480360360208110156104f657600080fd5b50356001600160a01b03166110aa565b61026b6004803603606081101561051c57600080fd5b506001600160a01b03813581169160208101359091169060400135611111565b6102fe611200565b6001600160a01b0381166000908152600b6020908152604080832054600a9092528220546105c491906105b890670de0b6b3a7640000906105ac906105979061058b610e9b565b9063ffffffff61120f16565b6105a088610ac3565b9063ffffffff61125816565b9063ffffffff6112b816565b9063ffffffff6112fa16565b92915050565b600d546001600160a01b03163314806105fb57506105e6610c3a565b6001600160a01b0316336001600160a01b0316145b8061061557503360009081526011602052604090205460ff165b151561065a5760408051600160e51b62461bcd0281526020600482015260096024820152600160b91b6810b737ba34b334b2b902604482015290519081900360640190fd5b6004805460408051600160e01b6370a082310281523093810193909352516000926001600160a01b03909216916370a08231916024808301926020929190829003018186803b1580156106ac57600080fd5b505afa1580156106c0573d6000803e3d6000fd5b505050506040513d60208110156106d657600080fd5b5051600c5460005460045492935090916001600160a01b03908116911614156107145761071161070461074e565b829063ffffffff6112fa16565b90505b6000610726838363ffffffff61120f16565b905061073181611357565b505050565b600b6020526000908152604090205481565b60055481565b6001545b90565b3361075e610e9b565b600955610769610c15565b6008556001600160a01b038116156107b05761078481610544565b6001600160a01b0382166000908152600b6020908152604080832093909355600954600a909152919020555b8115156108075760408051600160e51b62461bcd02815260206004820152601160248201527f43616e6e6f742077697468647261772030000000000000000000000000000000604482015290519081900360640190fd5b6108108261153d565b60408051838152905133917f7084f5476618d8e60b11ef0d7d3f06914655adb8793e28ff7f018d4c76d505d5919081900360200190a25050565b600d546001600160a01b031633148061087b5750610866610c3a565b6001600160a01b0316336001600160a01b0316145b15156108bf5760408051600160e51b62461bcd0281526020600482015260086024820152600160c11b6710b6b0b730b3b2b902604482015290519081900360640190fd5b6001600160a01b03919091166000908152601160205260409020805460ff1916911515919091179055565b336108f3610e9b565b6009556108fe610c15565b6008556001600160a01b038116156109455761091981610544565b6001600160a01b0382166000908152600b6020908152604080832093909355600954600a909152919020555b600061095033610544565b905080156109d257336000908152600b6020526040812055600c5461097b908263ffffffff61120f16565b600c5560045461099b906001600160a01b0316338363ffffffff61159a16565b60408051828152905133917fe2403640ba68fed3a2f88b7557551d1993f84b99bb10ff833f0cf8db0c5e0486919081900360200190a25b5050565b600d546001600160a01b031681565b60116020526000908152604090205460ff1681565b600d546001600160a01b0316331480610a2b5750610a16610c3a565b6001600160a01b0316336001600160a01b0316145b80610a4557503360009081526011602052604090205460ff165b1515610a8a5760408051600160e51b62461bcd0281526020600482015260096024820152600160b91b6810b737ba34b334b2b902604482015290519081900360640190fd5b600454610aa8906001600160a01b031633308463ffffffff6115ef16565b610ab181611357565b50565b600e546001600160a01b031681565b6001600160a01b031660009081526002602052604090205490565b610ae6610c49565b1515610b3c5760408051600160e51b62461bcd02815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b6003546040516000916001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600380546001600160a01b0319169055565b600d546001600160a01b0316331480610bb75750610ba2610c3a565b6001600160a01b0316336001600160a01b0316145b1515610bfb5760408051600160e51b62461bcd0281526020600482015260086024820152600160c11b6710b6b0b730b3b2b902604482015290519081900360640190fd5b6101f4811115610c0a57600080fd5b600f55565b60075481565b6000610c2342600654611652565b905090565b600a6020526000908152604090205481565b6003546001600160a01b031690565b6003546000906001600160a01b0316610c60611668565b6001600160a01b031614905090565b600d546001600160a01b0316331480610ca05750610c8b610c3a565b6001600160a01b0316336001600160a01b0316145b1515610ce45760408051600160e51b62461bcd0281526020600482015260086024820152600160c11b6710b6b0b730b3b2b902604482015290519081900360640190fd5b6010805460ff19166001179055565b33610cfc610e9b565b600955610d07610c15565b6008556001600160a01b03811615610d4e57610d2281610544565b6001600160a01b0382166000908152600b6020908152604080832093909355600954600a909152919020555b811515610da55760408051600160e51b62461bcd02815260206004820152600e60248201527f43616e6e6f74207374616b652030000000000000000000000000000000000000604482015290519081900360640190fd5b610dae8261166c565b60408051838152905133917f9e71bc8eea02a63969f509818f2dafb9254532904319f9dbda79b67bd34a5f3d919081900360200190a25050565b600c5481565b60105460ff1681565b600d546001600160a01b0316331480610e285750610e13610c3a565b6001600160a01b0316336001600160a01b0316145b1515610e6c5760408051600160e51b62461bcd0281526020600482015260086024820152600160c11b6710b6b0b730b3b2b902604482015290519081900360640190fd5b600654421015610e7b57600080fd5b600555565b60085481565b600f5481565b6000546001600160a01b031681565b6000610ea561074e565b1515610eb45750600954610752565b610c23610ee2610ec261074e565b6105ac670de0b6b3a76400006105a06007546105a060085461058b610c15565b6009549063ffffffff6112fa16565b600d546001600160a01b0316331480610f225750610f0d610c3a565b6001600160a01b0316336001600160a01b0316145b1515610f665760408051600160e51b62461bcd0281526020600482015260086024820152600160c11b6710b6b0b730b3b2b902604482015290519081900360640190fd5b60408051600160e01b6370a0823102815230600482015290516000916001600160a01b038416916370a0823191602480820192602092909190829003018186803b158015610fb357600080fd5b505afa158015610fc7573d6000803e3d6000fd5b505050506040513d6020811015610fdd57600080fd5b505190506109d2823383611111565b60095481565b611003610ffe33610ac3565b610755565b61100b6108ea565b565b60065481565b600d546001600160a01b0316331480611044575061102f610c3a565b6001600160a01b0316336001600160a01b0316145b15156110885760408051600160e51b62461bcd0281526020600482015260086024820152600160c11b6710b6b0b730b3b2b902604482015290519081900360640190fd5b600e80546001600160a01b0319166001600160a01b0392909216919091179055565b6110b2610c49565b15156111085760408051600160e51b62461bcd02815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b610ab1816116ce565b600d546001600160a01b0316331480611142575061112d610c3a565b6001600160a01b0316336001600160a01b0316145b15156111865760408051600160e51b62461bcd0281526020600482015260086024820152600160c11b6710b6b0b730b3b2b902604482015290519081900360640190fd5b61118e61074e565b156111e6576000546001600160a01b03848116911614156111e65760408051600160e51b62461bcd0281526020600482015260076024820152600160ca1b66085cdd185ad95902604482015290519081900360640190fd5b6107316001600160a01b038416838363ffffffff61159a16565b6004546001600160a01b031681565b600061125183836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611774565b9392505050565b6000821515611269575060006105c4565b82820282848281151561127857fe5b041461125157604051600160e51b62461bcd028152600401808060200182810382526021815260200180611aa56021913960400191505060405180910390fd5b600061125183836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525061180e565b6000828201838110156112515760408051600160e51b62461bcd02815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b6000611361610e9b565b60095561136c610c15565b6008556001600160a01b038116156113b35761138781610544565b6001600160a01b0382166000908152600b6020908152604080832093909355600954600a909152919020555b60006113d06127106105ac600f548661125890919063ffffffff16565b9050801561140e57600e546004546113fb916001600160a01b0391821691168363ffffffff61159a16565b61140b838263ffffffff61120f16565b92505b8215156114555760408051600160e51b62461bcd02815260206004820152600a6024820152600160b01b696e6f207265776172647302604482015290519081900360640190fd5b600654421061147a5760055461147290849063ffffffff6112b816565b6007556114c9565b600654600090611490904263ffffffff61120f16565b905060006114a96007548361125890919063ffffffff16565b6005549091506114c3906105ac878463ffffffff6112fa16565b60075550505b4260088190556005546114e2919063ffffffff6112fa16565b600655600c546114f8908463ffffffff6112fa16565b600c556010805460ff191690556040805184815290517fde88a922e0d3b88b24e9623efeb464919c6bf9f66857a65e2bfcf2ce87a9433d9181900360200190a1505050565b600154611550908263ffffffff61120f16565b60015533600090815260026020526040902054611573908263ffffffff61120f16565b336000818152600260205260408120929092559054610ab1916001600160a01b0390911690835b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b0316600160e01b63a9059cbb0217905261073190849061187b565b604080516001600160a01b0385811660248301528416604482015260648082018490528251808303909101815260849091019091526020810180516001600160e01b0316600160e01b6323b872dd0217905261164c90859061187b565b50505050565b60008183106116615781611251565b5090919050565b3390565b60015461167f908263ffffffff6112fa16565b600155336000908152600260205260409020546116a2908263ffffffff6112fa16565b336000818152600260205260408120929092559054610ab1916001600160a01b039091169030846115ef565b6001600160a01b038116151561171857604051600160e51b62461bcd028152600401808060200182810382526026815260200180611a7f6026913960400191505060405180910390fd5b6003546040516001600160a01b038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3600380546001600160a01b0319166001600160a01b0392909216919091179055565b6000818484111561180657604051600160e51b62461bcd0281526004018080602001828103825283818151815260200191508051906020019080838360005b838110156117cb5781810151838201526020016117b3565b50505050905090810190601f1680156117f85780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b60008183151561186357604051600160e51b62461bcd028152600401808060200182810382528381815181526020019150805190602001908083836000838110156117cb5781810151838201526020016117b3565b506000838581151561187157fe5b0495945050505050565b61188d826001600160a01b0316611a42565b15156118e35760408051600160e51b62461bcd02815260206004820152601f60248201527f5361666545524332303a2063616c6c20746f206e6f6e2d636f6e747261637400604482015290519081900360640190fd5b60006060836001600160a01b0316836040518082805190602001908083835b602083106119215780518252601f199092019160209182019101611902565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114611983576040519150601f19603f3d011682016040523d82523d6000602084013e611988565b606091505b50915091508115156119e45760408051600160e51b62461bcd02815260206004820181905260248201527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564604482015290519081900360640190fd5b80511561164c57808060200190516020811015611a0057600080fd5b5051151561164c57604051600160e51b62461bcd02815260040180806020018281038252602a815260200180611ac6602a913960400191505060405180910390fd5b6000813f7fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470818114801590611a7657508115155b94935050505056fe4f776e61626c653a206e6577206f776e657220697320746865207a65726f2061646472657373536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f775361666545524332303a204552433230206f7065726174696f6e20646964206e6f742073756363656564a165627a7a72305820af08d94c46b5fd85169c46633dfbf3a2a0b63cea8d0aa8f223db0cb67dc991ff00290000000000000000000000004d5bbce91d9bf7434bf358c1199c8a9c333037870000000000000000000000009fda7ceec4c18008096c2fe2b85f05dc300f94d0000000000000000000000000000000000000000000000000000000000024ea000000000000000000000000000c7694d5cb77e75c93c8fede6145a0bd39b2f8f4000000000000000000000000b91e183c906a86a26212af93ab58c00aebd9e776
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
0000000000000000000000004d5bbce91d9bf7434bf358c1199c8a9c333037870000000000000000000000009fda7ceec4c18008096c2fe2b85f05dc300f94d0000000000000000000000000000000000000000000000000000000000024ea000000000000000000000000000c7694d5cb77e75c93c8fede6145a0bd39b2f8f4000000000000000000000000b91e183c906a86a26212af93ab58c00aebd9e776
-----Decoded View---------------
Arg [0] : _stakedToken (address): 0x4d5bbce91d9bf7434bf358c1199c8a9c33303787
Arg [1] : _rewardToken (address): 0x9fda7ceec4c18008096c2fe2b85f05dc300f94d0
Arg [2] : _duration (uint256): 2419200
Arg [3] : _manager (address): 0x0c7694d5cb77e75c93c8fede6145a0bd39b2f8f4
Arg [4] : _treasury (address): 0xb91e183c906a86a26212af93ab58c00aebd9e776
-----Encoded View---------------
5 Constructor Arguments found :
Arg [0] : 0000000000000000000000004d5bbce91d9bf7434bf358c1199c8a9c33303787
Arg [1] : 0000000000000000000000009fda7ceec4c18008096c2fe2b85f05dc300f94d0
Arg [2] : 000000000000000000000000000000000000000000000000000000000024ea00
Arg [3] : 0000000000000000000000000c7694d5cb77e75c93c8fede6145a0bd39b2f8f4
Arg [4] : 000000000000000000000000b91e183c906a86a26212af93ab58c00aebd9e776
Deployed ByteCode Sourcemap
21037:6077:0:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;21037:6077:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23384:265;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;23384:265:0;-1:-1:-1;;;;;23384:265:0;;:::i;:::-;;;;;;;;;;;;;;;;26262:369;;;:::i;:::-;;21376:42;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;21376:42:0;-1:-1:-1;;;;;21376:42:0;;:::i;21128:23::-;;;:::i;20261:91::-;;;:::i;23939:203::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;23939:203:0;;:::i;25108:124::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;25108:124:0;;;;;;;;;;:::i;24255:348::-;;;:::i;21462:22::-;;;:::i;:::-;;;;-1:-1:-1;;;;;21462:22:0;;;;;;;;;;;;;;21600:41;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;21600:41:0;-1:-1:-1;;;;;21600:41:0;;:::i;:::-;;;;;;;;;;;;;;;;;;26083:171;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;26083:171:0;;:::i;21491:23::-;;;:::i;20360:110::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;20360:110:0;-1:-1:-1;;;;;20360:110:0;;:::i;6700:140::-;;;:::i;24776:127::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;24776:127:0;;:::i;21198:29::-;;;:::i;22817:131::-;;;:::i;21312:57::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;21312:57:0;-1:-1:-1;;;;;21312:57:0;;:::i;5889:79::-;;;:::i;6255:94::-;;;:::i;25019:81::-;;;:::i;23740:191::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;23740:191:0;;:::i;21425:28::-;;;:::i;21562:29::-;;;:::i;24611:157::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;24611:157:0;;:::i;21234:29::-;;;:::i;21521:32::-;;;:::i;20036:25::-;;;:::i;22956:420::-;;;:::i;26639:201::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;26639:201:0;-1:-1:-1;;;;;26639:201:0;;:::i;21270:35::-;;;:::i;24150:97::-;;;:::i;21160:31::-;;;:::i;24911:100::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;24911:100:0;-1:-1:-1;;;;;24911:100:0;;:::i;6995:109::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;6995:109:0;-1:-1:-1;;;;;6995:109:0;;:::i;26848:263::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;26848:263:0;;;;;;;;;;;;;;;;;:::i;21096:25::-;;;:::i;23384:265::-;-1:-1:-1;;;;;23624:16:0;;23438:7;23624:16;;;:7;:16;;;;;;;;;23540:22;:31;;;;;;23478:163;;23624:16;23478:123;;23596:4;;23478:95;;23519:53;;:16;:14;:16::i;:::-;:20;:53;:20;:53;:::i;:::-;23478:18;23488:7;23478:9;:18::i;:::-;:40;:95;:40;:95;:::i;:::-;:117;:123;:117;:123;:::i;:::-;:145;:163;:145;:163;:::i;:::-;23458:183;23384:265;-1:-1:-1;;23384:265:0:o;26262:369::-;22380:7;;-1:-1:-1;;;;;22380:7:0;22366:10;:21;;:46;;;22405:7;:5;:7::i;:::-;-1:-1:-1;;;;;22391:21:0;:10;-1:-1:-1;;;;;22391:21:0;;22366:46;:71;;;-1:-1:-1;22426:10:0;22416:21;;;;:9;:21;;;;;;;;22366:71;22358:93;;;;;;;-1:-1:-1;;;;;22358:93:0;;;;;;;;;;;;-1:-1:-1;;;;;22358:93:0;;;;;;;;;;;;;;;26342:11;;;:36;;;-1:-1:-1;;;;;26342:36:0;;26372:4;26342:36;;;;;;;;26324:15;;-1:-1:-1;;;;;26342:11:0;;;;:21;;:36;;;;;;;;;;;;;;:11;:36;;;5:2:-1;;;;30:1;27;20:12;5:2;26342:36:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;26342:36:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;26342:36:0;26411:13;;26389:19;26454:11;26439;;26342:36;;-1:-1:-1;26411:13:0;;-1:-1:-1;;;;;26439:11:0;;;26454;;26439:26;26435:103;;;26496:30;26512:13;:11;:13::i;:::-;26496:11;;:30;:15;:30;:::i;:::-;26482:44;;26435:103;26548:18;26569:24;:7;26581:11;26569:24;:11;:24;:::i;:::-;26548:45;;26604:19;26612:10;26604:7;:19::i;:::-;22462:1;;;26262:369::o;21376:42::-;;;;;;;;;;;;;:::o;21128:23::-;;;;:::o;20261:91::-;20332:12;;20261:91;;:::o;23939:203::-;23993:10;22552:16;:14;:16::i;:::-;22529:20;:39;22596:26;:24;:26::i;:::-;22579:14;:43;-1:-1:-1;;;;;22637:21:0;;;22633:157;;22694:15;22701:7;22694:6;:15::i;:::-;-1:-1:-1;;;;;22675:16:0;;;;;;:7;:16;;;;;;;;:34;;;;22758:20;;22724:22;:31;;;;;;:54;22633:157;24024:10;;;24016:40;;;;;-1:-1:-1;;;;;24016:40:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;24067:22;24082:6;24067:14;:22::i;:::-;24105:29;;;;;;;;24115:10;;24105:29;;;;;;;;;;23939:203;;:::o;25108:124::-;22250:7;;-1:-1:-1;;;;;22250:7:0;22236:10;:21;;:46;;;22275:7;:5;:7::i;:::-;-1:-1:-1;;;;;22261:21:0;:10;-1:-1:-1;;;;;22261:21:0;;22236:46;22228:67;;;;;;;-1:-1:-1;;;;;22228:67:0;;;;;;;;;;;;-1:-1:-1;;;;;22228:67:0;;;;;;;;;;;;;;;-1:-1:-1;;;;;25194:20:0;;;;;;;;:9;:20;;;;;:30;;-1:-1:-1;;25194:30:0;;;;;;;;;;25108:124::o;24255:348::-;24296:10;22552:16;:14;:16::i;:::-;22529:20;:39;22596:26;:24;:26::i;:::-;22579:14;:43;-1:-1:-1;;;;;22637:21:0;;;22633:157;;22694:15;22701:7;22694:6;:15::i;:::-;-1:-1:-1;;;;;22675:16:0;;;;;;:7;:16;;;;;;;;:34;;;;22758:20;;22724:22;:31;;;;;;:54;22633:157;24319:14;24336:18;24343:10;24336:6;:18::i;:::-;24319:35;-1:-1:-1;24369:10:0;;24365:231;;24404:10;24418:1;24396:19;;;:7;:19;;;;;:23;24450:13;;:25;;24468:6;24450:25;:17;:25;:::i;:::-;24434:13;:41;24490:11;;:44;;-1:-1:-1;;;;;24490:11:0;24515:10;24527:6;24490:44;:24;:44;:::i;:::-;24554:30;;;;;;;;24565:10;;24554:30;;;;;;;;;;24365:231;22800:1;24255:348;:::o;21462:22::-;;;-1:-1:-1;;;;;21462:22:0;;:::o;21600:41::-;;;;;;;;;;;;;;;:::o;26083:171::-;22380:7;;-1:-1:-1;;;;;22380:7:0;22366:10;:21;;:46;;;22405:7;:5;:7::i;:::-;-1:-1:-1;;;;;22391:21:0;:10;-1:-1:-1;;;;;22391:21:0;;22366:46;:71;;;-1:-1:-1;22426:10:0;22416:21;;;;:9;:21;;;;;;;;22366:71;22358:93;;;;;;;-1:-1:-1;;;;;22358:93:0;;;;;;;;;;;;-1:-1:-1;;;;;22358:93:0;;;;;;;;;;;;;;;26155:11;;:64;;-1:-1:-1;;;;;26155:11:0;26184:10;26204:4;26211:7;26155:64;:28;:64;:::i;:::-;26230:16;26238:7;26230;:16::i;:::-;26083:171;:::o;21491:23::-;;;-1:-1:-1;;;;;21491:23:0;;:::o;20360:110::-;-1:-1:-1;;;;;20444:18:0;20417:7;20444:18;;;:9;:18;;;;;;;20360:110::o;6700:140::-;6101:9;:7;:9::i;:::-;6093:54;;;;;;;-1:-1:-1;;;;;6093:54:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6783:6;;6762:40;;6799:1;;-1:-1:-1;;;;;6783:6:0;;6762:40;;6799:1;;6762:40;6813:6;:19;;-1:-1:-1;;;;;;6813:19:0;;;6700:140::o;24776:127::-;22250:7;;-1:-1:-1;;;;;22250:7:0;22236:10;:21;;:46;;;22275:7;:5;:7::i;:::-;-1:-1:-1;;;;;22261:21:0;:10;-1:-1:-1;;;;;22261:21:0;;22236:46;22228:67;;;;;;;-1:-1:-1;;;;;22228:67:0;;;;;;;;;;;;-1:-1:-1;;;;;22228:67:0;;;;;;;;;;;;;;;24862:3;24854:11;;;24846:20;;;;;;24877:11;:18;24776:127::o;21198:29::-;;;;:::o;22817:131::-;22874:7;22901:39;22910:15;22927:12;;22901:8;:39::i;:::-;22894:46;;22817:131;:::o;21312:57::-;;;;;;;;;;;;;:::o;5889:79::-;5954:6;;-1:-1:-1;;;;;5954:6:0;5889:79;:::o;6255:94::-;6335:6;;6295:4;;-1:-1:-1;;;;;6335:6:0;6319:12;:10;:12::i;:::-;-1:-1:-1;;;;;6319:22:0;;6312:29;;6255:94;:::o;25019:81::-;22250:7;;-1:-1:-1;;;;;22250:7:0;22236:10;:21;;:46;;;22275:7;:5;:7::i;:::-;-1:-1:-1;;;;;22261:21:0;:10;-1:-1:-1;;;;;22261:21:0;;22236:46;22228:67;;;;;;;-1:-1:-1;;;;;22228:67:0;;;;;;;;;;;;-1:-1:-1;;;;;22228:67:0;;;;;;;;;;;;;;;25075:10;:17;;-1:-1:-1;;25075:17:0;25088:4;25075:17;;;25019:81::o;23740:191::-;23791:10;22552:16;:14;:16::i;:::-;22529:20;:39;22596:26;:24;:26::i;:::-;22579:14;:43;-1:-1:-1;;;;;22637:21:0;;;22633:157;;22694:15;22701:7;22694:6;:15::i;:::-;-1:-1:-1;;;;;22675:16:0;;;;;;:7;:16;;;;;;;;:34;;;;22758:20;;22724:22;:31;;;;;;:54;22633:157;23822:10;;;23814:37;;;;;-1:-1:-1;;;;;23814:37:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;23862:19;23874:6;23862:11;:19::i;:::-;23897:26;;;;;;;;23904:10;;23897:26;;;;;;;;;;23740:191;;:::o;21425:28::-;;;;:::o;21562:29::-;;;;;;:::o;24611:157::-;22250:7;;-1:-1:-1;;;;;22250:7:0;22236:10;:21;;:46;;;22275:7;:5;:7::i;:::-;-1:-1:-1;;;;;22261:21:0;:10;-1:-1:-1;;;;;22261:21:0;;22236:46;22228:67;;;;;;;-1:-1:-1;;;;;22228:67:0;;;;;;;;;;;;-1:-1:-1;;;;;22228:67:0;;;;;;;;;;;;;;;24716:12;;24697:15;:31;;24689:40;;;;;;24740:8;:20;24611:157::o;21234:29::-;;;;:::o;21521:32::-;;;;:::o;20036:25::-;;;-1:-1:-1;;;;;20036:25:0;;:::o;22956:420::-;23003:7;23027:13;:11;:13::i;:::-;:18;23023:78;;;-1:-1:-1;23069:20:0;;23062:27;;23023:78;23131:237;23174:179;23339:13;:11;:13::i;:::-;23174:138;23307:4;23174:106;23269:10;;23174:68;23227:14;;23174:26;:24;:26::i;:179::-;23131:20;;;:237;:24;:237;:::i;26639:201::-;22250:7;;-1:-1:-1;;;;;22250:7:0;22236:10;:21;;:46;;;22275:7;:5;:7::i;:::-;-1:-1:-1;;;;;22261:21:0;:10;-1:-1:-1;;;;;22261:21:0;;22236:46;22228:67;;;;;;;-1:-1:-1;;;;;22228:67:0;;;;;;;;;;;;-1:-1:-1;;;;;22228:67:0;;;;;;;;;;;;;;;26734:39;;;-1:-1:-1;;;;;26734:39:0;;26767:4;26734:39;;;;;;26717:14;;-1:-1:-1;;;;;26734:24:0;;;;;:39;;;;;;;;;;;;;;;:24;:39;;;5:2:-1;;;;30:1;27;20:12;5:2;26734:39:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;26734:39:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;26734:39:0;;-1:-1:-1;26784:48:0;26805:6;26813:10;26734:39;26784:20;:48::i;21270:35::-;;;;:::o;24150:97::-;24186:31;24195:21;24205:10;24195:9;:21::i;:::-;24186:8;:31::i;:::-;24228:11;:9;:11::i;:::-;24150:97::o;21160:31::-;;;;:::o;24911:100::-;22250:7;;-1:-1:-1;;;;;22250:7:0;22236:10;:21;;:46;;;22275:7;:5;:7::i;:::-;-1:-1:-1;;;;;22261:21:0;:10;-1:-1:-1;;;;;22261:21:0;;22236:46;22228:67;;;;;;;-1:-1:-1;;;;;22228:67:0;;;;;;;;;;;;-1:-1:-1;;;;;22228:67:0;;;;;;;;;;;;;;;24983:8;:20;;-1:-1:-1;;;;;;24983:20:0;-1:-1:-1;;;;;24983:20:0;;;;;;;;;;24911:100::o;6995:109::-;6101:9;:7;:9::i;:::-;6093:54;;;;;;;-1:-1:-1;;;;;6093:54:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7068:28;7087:8;7068:18;:28::i;26848:263::-;22250:7;;-1:-1:-1;;;;;22250:7:0;22236:10;:21;;:46;;;22275:7;:5;:7::i;:::-;-1:-1:-1;;;;;22261:21:0;:10;-1:-1:-1;;;;;22261:21:0;;22236:46;22228:67;;;;;;;-1:-1:-1;;;;;22228:67:0;;;;;;;;;;;;-1:-1:-1;;;;;22228:67:0;;;;;;;;;;;;;;;26955:13;:11;:13::i;:::-;:18;26951:101;;27016:11;;-1:-1:-1;;;;;26998:30:0;;;27016:11;;26998:30;;26990:50;;;;;-1:-1:-1;;;;;26990:50:0;;;;;;;;;;;;-1:-1:-1;;;;;26990:50:0;;;;;;;;;;;;;;;27062:41;-1:-1:-1;;;;;27062:27:0;;27090:3;27095:7;27062:41;:27;:41;:::i;21096:25::-;;;-1:-1:-1;;;;;21096:25:0;;:::o;8817:136::-;8875:7;8902:43;8906:1;8909;8902:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;8895:50;8817:136;-1:-1:-1;;;8817:136:0:o;9733:471::-;9791:7;10036:6;;10032:47;;;-1:-1:-1;10066:1:0;10059:8;;10032:47;10103:5;;;10107:1;10103;:5;10127;;;;;;;;:10;10119:56;;;;-1:-1:-1;;;;;10119:56:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10672:132;10730:7;10757:39;10761:1;10764;10757:39;;;;;;;;;;;;;;;;;:3;:39::i;8361:181::-;8419:7;8451:5;;;8475:6;;;;8467:46;;;;;-1:-1:-1;;;;;8467:46:0;;;;;;;;;;;;;;;;;;;;;;;;;;;25240:835;25303:1;22552:16;:14;:16::i;:::-;22529:20;:39;22596:26;:24;:26::i;:::-;22579:14;:43;-1:-1:-1;;;;;22637:21:0;;;22633:157;;22694:15;22701:7;22694:6;:15::i;:::-;-1:-1:-1;;;;;22675:16:0;;;;;;:7;:16;;;;;;;;:34;;;;22758:20;;22724:22;:31;;;;;;:54;22633:157;25318:11;25332:34;25360:5;25332:23;25343:11;;25332:6;:10;;:23;;;;:::i;:34::-;25318:48;-1:-1:-1;25381:7:0;;25377:118;;25430:8;;25405:11;;:39;;-1:-1:-1;;;;;25405:11:0;;;;25430:8;25440:3;25405:39;:24;:39;:::i;:::-;25468:15;:6;25479:3;25468:15;:10;:15;:::i;:::-;25459:24;;25377:118;25513:11;;;25505:34;;;;;-1:-1:-1;;;;;25505:34:0;;;;;;;;;;;;-1:-1:-1;;;;;25505:34:0;;;;;;;;;;;;;;;25573:12;;25554:15;:31;25550:304;;25626:8;;25615:20;;:6;;:20;:10;:20;:::i;:::-;25602:10;:33;25550:304;;;25688:12;;25668:17;;25688:33;;25705:15;25688:33;:16;:33;:::i;:::-;25668:53;;25736:16;25755:25;25769:10;;25755:9;:13;;:25;;;;:::i;:::-;25833:8;;25736:44;;-1:-1:-1;25808:34:0;;:20;:6;25736:44;25808:20;:10;:20;:::i;:34::-;25795:10;:47;-1:-1:-1;;25550:304:0;25881:15;25864:14;:32;;;25942:8;;25922:29;;25881:15;25922:29;:19;:29;:::i;:::-;25907:12;:44;25978:13;;:25;;25996:6;25978:25;:17;:25;:::i;:::-;25962:13;:41;26014:10;:18;;-1:-1:-1;;26014:18:0;;;26048:19;;;;;;;;;;;;;;;;;22800:1;25240:835;;:::o;20724:222::-;20791:12;;:24;;20808:6;20791:24;:16;:24;:::i;:::-;20776:12;:39;20860:10;20850:21;;;;:9;:21;;;;;;:33;;20876:6;20850:33;:25;:33;:::i;:::-;20836:10;20826:21;;;;:9;:21;;;;;:57;;;;20894:11;;:44;;-1:-1:-1;;;;;20894:11:0;;;;20931:6;16694:176;16803:58;;;-1:-1:-1;;;;;16803:58:0;;;;;;;;;;;;;;;26:21:-1;;;22:32;;;6:49;;16803:58:0;;;;;;;;25:18:-1;;61:17;;-1:-1;;;;;182:15;-1:-1;;;;;179:29;160:49;;16777:85:0;;16796:5;;16777:18;:85::i;16878:204::-;17005:68;;;-1:-1:-1;;;;;17005:68:0;;;;;;;;;;;;;;;;;;;;;;26:21:-1;;;22:32;;;6:49;;17005:68:0;;;;;;;;25:18:-1;;61:17;;-1:-1;;;;;182:15;-1:-1;;;;;179:29;160:49;;16979:95:0;;16998:5;;16979:18;:95::i;:::-;16878:204;;;;:::o;426:106::-;484:7;515:1;511;:5;:13;;523:1;511:13;;;-1:-1:-1;519:1:0;;426:106;-1:-1:-1;426:106:0:o;4593:98::-;4673:10;4593:98;:::o;20478:238::-;20542:12;;:24;;20559:6;20542:24;:16;:24;:::i;:::-;20527:12;:39;20611:10;20601:21;;;;:9;:21;;;;;;:33;;20627:6;20601:33;:25;:33;:::i;:::-;20587:10;20577:21;;;;:9;:21;;;;;:57;;;;20645:11;;:63;;-1:-1:-1;;;;;20645:11:0;;;;20694:4;20701:6;20645:28;:63::i;7210:229::-;-1:-1:-1;;;;;7284:22:0;;;;7276:73;;;;-1:-1:-1;;;;;7276:73:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7386:6;;7365:38;;-1:-1:-1;;;;;7365:38:0;;;;7386:6;;7365:38;;7386:6;;7365:38;7414:6;:17;;-1:-1:-1;;;;;;7414:17:0;-1:-1:-1;;;;;7414:17:0;;;;;;;;;;7210:229::o;9290:192::-;9376:7;9412:12;9404:6;;;;9396:29;;;;-1:-1:-1;;;;;9396: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;9396:29:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;9448:5:0;;;9290:192::o;11334:345::-;11420:7;11522:12;11515:5;;;11507:28;;;;-1:-1:-1;;;;;11507:28:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;11507:28:0;;11546:9;11562:1;11558;:5;;;;;;;;;11334:345;-1:-1:-1;;;;;11334:345:0:o;18733:1114::-;19337:27;19345:5;-1:-1:-1;;;;;19337:25:0;;:27::i;:::-;19329:71;;;;;;;-1:-1:-1;;;;;19329:71:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;19474:12;19488:23;19523:5;-1:-1:-1;;;;;19515:19:0;19535:4;19515:25;;;;;;;;;;;;;36:153:-1;66:2;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;;;19515: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;;19473:67:0;;;;19559:7;19551:52;;;;;;;-1:-1:-1;;;;;19551:52:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19620:17;;:21;19616:224;;19762:10;19751:30;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;19751:30:0;19743:85;;;;;;-1:-1:-1;;;;;19743:85:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13723:619;13783:4;14251:20;;14094:66;14291:23;;;;;;:42;;-1:-1:-1;14318:15:0;;;14291:42;14283:51;13723:619;-1:-1:-1;;;;13723:619:0:o
Swarm Source
bzzr://af08d94c46b5fd85169c46633dfbf3a2a0b63cea8d0aa8f223db0cb67dc991ff
Age | Block | Fee Address | BC Fee Address | Voting Power | Jailed | Incoming |
---|
Make sure to use the "Vote Down" button for any spammy posts, and the "Vote Up" for interesting conversations.