Contract Overview
My Name Tag:
Not Available, login to update
Txn Hash |
Method
|
Block
|
From
|
To
|
Value | [Txn Fee] | |||
---|---|---|---|---|---|---|---|---|---|
0x3716694833007a9c64aacf9ddd46f69104db48e86666eca5ba7b8ee23d93b7c7 | Earn | 19264152 | 626 days 8 hrs ago | 0x10eb45cffbbfe38d23baa1285b54a79ee841e02a | IN | 0x6dbf28f426be8ea13a191a45d3a1e70579dac1e2 | 0 MATIC | 0.000068672146 | |
0xa0e201a612b79450a7744a283d95982e09ec0ba6c5a5b65a101f963f091a7556 | 0x60806040 | 16884702 | 692 days 4 hrs ago | Swamp Finance: Deployer | IN | Create: StrategyV3_Native | 0 MATIC | 0.01094451 |
[ Download CSV Export ]
Contract Name:
StrategyV3_Native
Compiler Version
v0.6.12+commit.27d51765
Contract Source Code (Solidity)
/** *Submitted for verification at polygonscan.com on 2021-07-19 */ // Sources flattened with hardhat v2.4.3 https://hardhat.org // File contracts/interfaces/IERC20.sol pragma solidity ^0.6.12; // import "https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/token/ERC20/IERC20.sol"; 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 contracts/libraries/SafeMath.sol pragma solidity ^0.6.12; // https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/math/SafeMath.sol library SafeMath { /** * @dev Returns the addition of two unsigned integers, reverting on * overflow. * * Counterpart to Solidity's `+` operator. * * Requirements: * * - Addition cannot overflow. */ function add(uint256 a, uint256 b) internal pure returns (uint256) { uint256 c = a + b; require(c >= a, "SafeMath: addition overflow"); return c; } /** * @dev Returns the subtraction of two unsigned integers, reverting on * overflow (when the result is negative). * * Counterpart to Solidity's `-` operator. * * Requirements: * * - Subtraction cannot overflow. */ function sub(uint256 a, uint256 b) internal pure returns (uint256) { return sub(a, b, "SafeMath: subtraction overflow"); } /** * @dev Returns the subtraction of two unsigned integers, reverting with custom message on * overflow (when the result is negative). * * Counterpart to Solidity's `-` operator. * * Requirements: * * - Subtraction cannot overflow. */ function sub( uint256 a, uint256 b, string memory errorMessage ) internal pure returns (uint256) { require(b <= a, errorMessage); uint256 c = a - b; return c; } /** * @dev Returns the multiplication of two unsigned integers, reverting on * overflow. * * Counterpart to Solidity's `*` operator. * * Requirements: * * - Multiplication cannot overflow. */ function mul(uint256 a, uint256 b) internal pure returns (uint256) { // Gas optimization: this is cheaper than requiring 'a' not being zero, but the // benefit is lost if 'b' is also tested. // See: https://github.com/OpenZeppelin/openzeppelin-contracts/pull/522 if (a == 0) { return 0; } uint256 c = a * b; require(c / a == b, "SafeMath: multiplication overflow"); return c; } /** * @dev Returns the integer division of two unsigned integers. Reverts on * division by zero. The result is rounded towards zero. * * Counterpart to Solidity's `/` operator. Note: this function uses a * `revert` opcode (which leaves remaining gas untouched) while Solidity * uses an invalid opcode to revert (consuming all remaining gas). * * Requirements: * * - The divisor cannot be zero. */ function div(uint256 a, uint256 b) internal pure returns (uint256) { return div(a, b, "SafeMath: division by zero"); } /** * @dev Returns the integer division of two unsigned integers. Reverts with custom message on * division by zero. The result is rounded towards zero. * * Counterpart to Solidity's `/` operator. Note: this function uses a * `revert` opcode (which leaves remaining gas untouched) while Solidity * uses an invalid opcode to revert (consuming all remaining gas). * * Requirements: * * - The divisor cannot be zero. */ function div( uint256 a, uint256 b, string memory errorMessage ) internal pure returns (uint256) { require(b > 0, errorMessage); uint256 c = a / b; // assert(a == b * c + a % b); // There is no case in which this doesn't hold return c; } /** * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo), * Reverts when dividing by zero. * * Counterpart to Solidity's `%` operator. This function uses a `revert` * opcode (which leaves remaining gas untouched) while Solidity uses an * invalid opcode to revert (consuming all remaining gas). * * Requirements: * * - The divisor cannot be zero. */ function mod(uint256 a, uint256 b) internal pure returns (uint256) { return mod(a, b, "SafeMath: modulo by zero"); } /** * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo), * Reverts with custom message when dividing by zero. * * Counterpart to Solidity's `%` operator. This function uses a `revert` * opcode (which leaves remaining gas untouched) while Solidity uses an * invalid opcode to revert (consuming all remaining gas). * * Requirements: * * - The divisor cannot be zero. */ function mod( uint256 a, uint256 b, string memory errorMessage ) internal pure returns (uint256) { require(b != 0, errorMessage); return a % b; } } // File contracts/libraries/Address.sol pragma solidity 0.6.12; // import "https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/token/ERC20/SafeERC20.sol"; 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) { // This method relies on extcodesize, which returns 0 for contracts in // construction, since the code is only stored at the end of the // constructor execution. uint256 size; // solhint-disable-next-line no-inline-assembly assembly { size := extcodesize(account) } return size > 0; } /** * @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]. */ function sendValue(address payable recipient, uint256 amount) internal { require( address(this).balance >= amount, "Address: insufficient balance" ); // solhint-disable-next-line avoid-low-level-calls, avoid-call-value (bool success, ) = recipient.call{value: amount}(""); require( success, "Address: unable to send value, recipient may have reverted" ); } /** * @dev Performs a Solidity function call using a low level `call`. A * plain`call` is an unsafe replacement for a function call: use this * function instead. * * If `target` reverts with a revert reason, it is bubbled up by this * function (like regular Solidity function calls). * * Returns the raw returned data. To convert to the expected return value, * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`]. * * Requirements: * * - `target` must be a contract. * - calling `target` with `data` must not revert. * * _Available since v3.1._ */ function functionCall(address target, bytes memory data) internal returns (bytes memory) { return functionCall(target, data, "Address: low-level call failed"); } /** * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with * `errorMessage` as a fallback revert reason when `target` reverts. * * _Available since v3.1._ */ function functionCall( address target, bytes memory data, string memory errorMessage ) internal returns (bytes memory) { return functionCallWithValue(target, data, 0, errorMessage); } /** * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], * but also transferring `value` wei to `target`. * * Requirements: * * - the calling contract must have an ETH balance of at least `value`. * - the called Solidity function must be `payable`. * * _Available since v3.1._ */ function functionCallWithValue( address target, bytes memory data, uint256 value ) internal returns (bytes memory) { return functionCallWithValue( target, data, value, "Address: low-level call with value failed" ); } /** * @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but * with `errorMessage` as a fallback revert reason when `target` reverts. * * _Available since v3.1._ */ function functionCallWithValue( address target, bytes memory data, uint256 value, string memory errorMessage ) internal returns (bytes memory) { require( address(this).balance >= value, "Address: insufficient balance for call" ); require(isContract(target), "Address: call to non-contract"); // solhint-disable-next-line avoid-low-level-calls (bool success, bytes memory returndata) = target.call{value: value}(data); return _verifyCallResult(success, returndata, errorMessage); } /** * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], * but performing a static call. * * _Available since v3.3._ */ function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) { return functionStaticCall( target, data, "Address: low-level static call failed" ); } /** * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`], * but performing a static call. * * _Available since v3.3._ */ function functionStaticCall( address target, bytes memory data, string memory errorMessage ) internal view returns (bytes memory) { require(isContract(target), "Address: static call to non-contract"); // solhint-disable-next-line avoid-low-level-calls (bool success, bytes memory returndata) = target.staticcall(data); return _verifyCallResult(success, returndata, errorMessage); } /** * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], * but performing a delegate call. * * _Available since v3.3._ */ function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) { return functionDelegateCall( target, data, "Address: low-level delegate call failed" ); } /** * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`], * but performing a delegate call. * * _Available since v3.3._ */ function functionDelegateCall( address target, bytes memory data, string memory errorMessage ) internal returns (bytes memory) { require(isContract(target), "Address: delegate call to non-contract"); // solhint-disable-next-line avoid-low-level-calls (bool success, bytes memory returndata) = target.delegatecall(data); return _verifyCallResult(success, returndata, errorMessage); } function _verifyCallResult( bool success, bytes memory returndata, string memory errorMessage ) private pure returns (bytes memory) { if (success) { return returndata; } else { // Look for revert reason and bubble it up if present if (returndata.length > 0) { // The easiest way to bubble the revert reason is using memory via assembly // solhint-disable-next-line no-inline-assembly assembly { let returndata_size := mload(returndata) revert(add(32, returndata), returndata_size) } } else { revert(errorMessage); } } } } // File contracts/libraries/SafeERC20.sol pragma solidity 0.6.12; /** * @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 IERC20;` 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) ); } /** * @dev Deprecated. This function has issues similar to the ones found in * {IERC20-approve}, and its usage is discouraged. * * Whenever possible, use {safeIncreaseAllowance} and * {safeDecreaseAllowance} instead. */ 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. We use {Address.functionCall} to perform this call, which verifies that // the target address contains contract code and also asserts for success in the low-level call. bytes memory returndata = address(token).functionCall( data, "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/helpers/ReentrancyGuard.sol pragma solidity 0.6.12; // "https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/utils/ReentrancyGuard.sol"; abstract contract ReentrancyGuard { // Booleans are more expensive than uint256 or any type that takes up a full // word because each write operation emits an extra SLOAD to first read the // slot's contents, replace the bits taken up by the boolean, and then write // back. This is the compiler's defense against contract upgrades and // pointer aliasing, and it cannot be disabled. // The values being 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 percentage 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. uint256 private constant _NOT_ENTERED = 1; uint256 private constant _ENTERED = 2; uint256 private _status; constructor() internal { _status = _NOT_ENTERED; } /** * @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(_status != _ENTERED, "ReentrancyGuard: reentrant call"); // Any calls to nonReentrant after this point will fail _status = _ENTERED; _; // By storing the original value once again, a refund is triggered (see // https://eips.ethereum.org/EIPS/eip-2200) _status = _NOT_ENTERED; } } // File contracts/helpers/Context.sol pragma solidity 0.6.12; // https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/utils/Context.sol abstract contract Context { function _msgSender() internal view virtual returns (address payable) { return msg.sender; } function _msgData() internal view virtual returns (bytes memory) { this; // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691 return msg.data; } } // File contracts/helpers/Pausable.sol pragma solidity 0.6.12; // "https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/utils/Pausable.sol"; contract Pausable is Context { /** * @dev Emitted when the pause is triggered by `account`. */ event Paused(address account); /** * @dev Emitted when the pause is lifted by `account`. */ event Unpaused(address account); bool private _paused; /** * @dev Initializes the contract in unpaused state. */ constructor() internal { _paused = false; } /** * @dev Returns true if the contract is paused, and false otherwise. */ function paused() public view returns (bool) { return _paused; } /** * @dev Modifier to make a function callable only when the contract is not paused. * * Requirements: * * - The contract must not be paused. */ modifier whenNotPaused() { require(!_paused, "Pausable: paused"); _; } /** * @dev Modifier to make a function callable only when the contract is paused. * * Requirements: * * - The contract must be paused. */ modifier whenPaused() { require(_paused, "Pausable: not paused"); _; } /** * @dev Triggers stopped state. * * Requirements: * * - The contract must not be paused. */ function _pause() internal virtual whenNotPaused { _paused = true; emit Paused(_msgSender()); } /** * @dev Returns to normal state. * * Requirements: * * - The contract must be paused. */ function _unpause() internal virtual whenPaused { _paused = false; emit Unpaused(_msgSender()); } } // File contracts/helpers/Ownable.sol pragma solidity 0.6.12; // import "https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/access/Ownable.sol"; abstract contract Ownable is Context { address private _owner; event OwnershipTransferred( address indexed previousOwner, address indexed newOwner ); /** * @dev Initializes the contract setting the deployer as the initial owner. */ constructor() 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(_owner == _msgSender(), "Ownable: caller is not the owner"); _; } /** * @dev Leaves the contract without owner. It will not be possible to call * `onlyOwner` functions anymore. Can only be called by the current owner. * * NOTE: Renouncing ownership will leave the contract without an owner, * thereby removing any functionality that is only available to the owner. */ function renounceOwnership() public virtual onlyOwner { 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 virtual onlyOwner { require( newOwner != address(0), "Ownable: new owner is the zero address" ); emit OwnershipTransferred(_owner, newOwner); _owner = newOwner; } } // File contracts/interfaces/IXswapFarm.sol pragma solidity 0.6.12; interface IXswapFarm { function poolLength() external view returns (uint256); function userInfo() external view returns (uint256); // Return reward multiplier over the given _from to _to block. function getMultiplier(uint256 _from, uint256 _to) external view returns (uint256); // View function to see pending CAKEs on frontend. // function pendingCake(uint256 _pid, address _user) // external // view // returns (uint256); // Deposit LP tokens to the farm for farm's token allocation. function deposit(uint256 _pid, uint256 _amount) external; // Withdraw LP tokens from MasterChef. function withdraw(uint256 _pid, uint256 _amount) external; // Withdraw without caring about rewards. EMERGENCY ONLY. function emergencyWithdraw(uint256 _pid) external; } // File contracts/interfaces/IXRouter01.sol pragma solidity 0.6.12; interface IXRouter01 { function factory() external pure returns (address); function WETH() external pure returns (address); function addLiquidity( address tokenA, address tokenB, uint256 amountADesired, uint256 amountBDesired, uint256 amountAMin, uint256 amountBMin, address to, uint256 deadline ) external returns ( uint256 amountA, uint256 amountB, uint256 liquidity ); function addLiquidityETH( address token, uint256 amountTokenDesired, uint256 amountTokenMin, uint256 amountETHMin, address to, uint256 deadline ) external payable returns ( uint256 amountToken, uint256 amountETH, uint256 liquidity ); function removeLiquidity( address tokenA, address tokenB, uint256 liquidity, uint256 amountAMin, uint256 amountBMin, address to, uint256 deadline ) external returns (uint256 amountA, uint256 amountB); function removeLiquidityETH( address token, uint256 liquidity, uint256 amountTokenMin, uint256 amountETHMin, address to, uint256 deadline ) external returns (uint256 amountToken, uint256 amountETH); function removeLiquidityWithPermit( address tokenA, address tokenB, uint256 liquidity, uint256 amountAMin, uint256 amountBMin, address to, uint256 deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s ) external returns (uint256 amountA, uint256 amountB); function removeLiquidityETHWithPermit( address token, uint256 liquidity, uint256 amountTokenMin, uint256 amountETHMin, address to, uint256 deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s ) external returns (uint256 amountToken, uint256 amountETH); function swapExactTokensForTokens( uint256 amountIn, uint256 amountOutMin, address[] calldata path, address to, uint256 deadline ) external returns (uint256[] memory amounts); function swapTokensForExactTokens( uint256 amountOut, uint256 amountInMax, address[] calldata path, address to, uint256 deadline ) external returns (uint256[] memory amounts); function swapExactETHForTokens( uint256 amountOutMin, address[] calldata path, address to, uint256 deadline ) external payable returns (uint256[] memory amounts); function swapTokensForExactETH( uint256 amountOut, uint256 amountInMax, address[] calldata path, address to, uint256 deadline ) external returns (uint256[] memory amounts); function swapExactTokensForETH( uint256 amountIn, uint256 amountOutMin, address[] calldata path, address to, uint256 deadline ) external returns (uint256[] memory amounts); function swapETHForExactTokens( uint256 amountOut, address[] calldata path, address to, uint256 deadline ) external payable returns (uint256[] memory amounts); function quote( uint256 amountA, uint256 reserveA, uint256 reserveB ) external pure returns (uint256 amountB); function getAmountOut( uint256 amountIn, uint256 reserveIn, uint256 reserveOut ) external pure returns (uint256 amountOut); function getAmountIn( uint256 amountOut, uint256 reserveIn, uint256 reserveOut ) external pure returns (uint256 amountIn); function getAmountsOut(uint256 amountIn, address[] calldata path) external view returns (uint256[] memory amounts); function getAmountsIn(uint256 amountOut, address[] calldata path) external view returns (uint256[] memory amounts); } // File contracts/interfaces/IXRouter02.sol pragma solidity 0.6.12; interface IXRouter02 is IXRouter01 { function removeLiquidityETHSupportingFeeOnTransferTokens( address token, uint256 liquidity, uint256 amountTokenMin, uint256 amountETHMin, address to, uint256 deadline ) external returns (uint256 amountETH); function removeLiquidityETHWithPermitSupportingFeeOnTransferTokens( address token, uint256 liquidity, uint256 amountTokenMin, uint256 amountETHMin, address to, uint256 deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s ) external returns (uint256 amountETH); function swapExactTokensForTokensSupportingFeeOnTransferTokens( uint256 amountIn, uint256 amountOutMin, address[] calldata path, address to, uint256 deadline ) external; function swapExactETHForTokensSupportingFeeOnTransferTokens( uint256 amountOutMin, address[] calldata path, address to, uint256 deadline ) external payable; function swapExactTokensForETHSupportingFeeOnTransferTokens( uint256 amountIn, uint256 amountOutMin, address[] calldata path, address to, uint256 deadline ) external; } // File contracts/StrategyV3.sol // SPDX-License-Identifier: MIT pragma solidity 0.6.12; interface IWMATIC is IERC20 { function deposit() external payable; function withdraw(uint256 wad) external; } abstract contract StrategyV3 is Ownable, ReentrancyGuard, Pausable { // Maximises yields in e.g. pancakeswap using SafeMath for uint256; using SafeERC20 for IERC20; bool public isSingleVault; bool public isAutoComp; address public farmContractAddress; // address of farm, eg, PCS, Thugs etc. uint256 public pid; // pid of pool in farmContractAddress address public wantAddress; address public token0Address; address public token1Address; address public earnedAddress; address public uniRouterAddress; // uniswap, pancakeswap etc address public buybackRouterAddress; // uniswap, pancakeswap etc uint256 public routerDeadlineDuration = 300; // Set on global level, could be passed to functions via arguments address public wmaticAddress; address public nativeFarmAddress; address public NATIVEAddress; address public govAddress; // timelock contract uint256 public lastEarnBlock = 0; uint256 public wantLockedTotal = 0; uint256 public sharesTotal = 0; uint256 public controllerFee = 200; uint256 public constant controllerFeeMax = 10000; // 100 = 1% uint256 public constant controllerFeeUL = 300; uint256 public buyBackRate = 200; uint256 public constant buyBackRateMax = 10000; // 100 = 1% uint256 public constant buyBackRateUL = 800; address public constant buyBackAddress = 0x000000000000000000000000000000000000dEaD; uint256 public entranceFeeFactor; // < 0.1% entrance fee - goes to pool + prevents front-running uint256 public constant entranceFeeFactorMax = 10000; uint256 public constant entranceFeeFactorLL = 9950; // 0.5% is the max entrance fee settable. LL = lowerlimit uint256 public depositFeeFactor; // 9600 == 4% fee uint256 public constant depositFeeFactorMax = 10000; // 100 = 1% uint256 public constant depositFeeFactorLL = 9500; uint256 public withdrawFeeFactor; uint256 public constant withdrawFeeFactorMax = 10000; uint256 public constant withdrawFeeFactorLL = 9950; uint256 public slippageFactor = 950; // 5% default slippage tolerance uint256 public constant slippageFactorUL = 995; address[] public earnedToNATIVEPath; address[] public earnedToToken0Path; address[] public earnedToToken1Path; address[] public token0ToEarnedPath; address[] public token1ToEarnedPath; address[] public earnedToWMATICPath; address[] public WMATICToNATIVEPath; modifier onlyAllowGov() { require(msg.sender == govAddress, "Not authorised"); _; } // Receives new deposits from user function deposit(address _userAddress, uint256 _wantAmt) public virtual onlyOwner nonReentrant whenNotPaused returns (uint256) { IERC20(wantAddress).safeTransferFrom( address(msg.sender), address(this), _wantAmt ); // If depositFee in set, than _wantAmt - depositFee if (depositFeeFactor < depositFeeFactorMax) { _wantAmt = _wantAmt.mul(depositFeeFactor).div(depositFeeFactorMax); } uint256 sharesAdded = _wantAmt; if (wantLockedTotal > 0 && sharesTotal > 0) { sharesAdded = _wantAmt .mul(sharesTotal) .mul(entranceFeeFactor) .div(wantLockedTotal) .div(entranceFeeFactorMax); } sharesTotal = sharesTotal.add(sharesAdded); if (isAutoComp) { _farm(); } else { wantLockedTotal = wantLockedTotal.add(_wantAmt); } return sharesAdded; } function farm() public virtual nonReentrant { _farm(); } function _farm() internal virtual { require(isAutoComp, "!isAutoComp"); uint256 wantAmt = IERC20(wantAddress).balanceOf(address(this)); wantLockedTotal = wantLockedTotal.add(wantAmt); IERC20(wantAddress).safeIncreaseAllowance(farmContractAddress, wantAmt); IXswapFarm(farmContractAddress).deposit(pid, wantAmt); } function _unfarm(uint256 _wantAmt) internal virtual { IXswapFarm(farmContractAddress).withdraw(pid, _wantAmt); } function withdraw(address _userAddress, uint256 _wantAmt) public virtual onlyOwner nonReentrant returns (uint256) { require(_wantAmt > 0, "_wantAmt <= 0"); uint256 sharesRemoved = _wantAmt.mul(sharesTotal).div(wantLockedTotal); if (sharesRemoved > sharesTotal) { sharesRemoved = sharesTotal; } sharesTotal = sharesTotal.sub(sharesRemoved); if (withdrawFeeFactor < withdrawFeeFactorMax) { _wantAmt = _wantAmt.mul(withdrawFeeFactor).div(withdrawFeeFactorMax); } if (isAutoComp) { _unfarm(_wantAmt); } uint256 wantAmt = IERC20(wantAddress).balanceOf(address(this)); if (_wantAmt > wantAmt) { _wantAmt = wantAmt; } if (wantLockedTotal < _wantAmt) { _wantAmt = wantLockedTotal; } wantLockedTotal = wantLockedTotal.sub(_wantAmt); IERC20(wantAddress).safeTransfer(nativeFarmAddress, _wantAmt); return sharesRemoved; } function _harvest() internal virtual { _unfarm(0); } // 1. Harvest farm tokens // 2. Converts farm tokens into want tokens // 3. Deposits want tokens function earn() public virtual nonReentrant whenNotPaused { require(isAutoComp, "!isAutoComp"); // Harvest farm tokens _harvest(); // Converts farm tokens into want tokens uint256 earnedAmt = IERC20(earnedAddress).balanceOf(address(this)); earnedAmt = distributeFees(earnedAmt); earnedAmt = buyBack(earnedAmt); if (isSingleVault) { if (earnedAddress != wantAddress) { IERC20(earnedAddress).safeIncreaseAllowance( uniRouterAddress, earnedAmt ); // Swap earned to want _safeSwap( uniRouterAddress, earnedAmt, slippageFactor, earnedToToken0Path, address(this), now + routerDeadlineDuration ); } lastEarnBlock = block.number; _farm(); return; } IERC20(earnedAddress).safeIncreaseAllowance( uniRouterAddress, earnedAmt ); if (earnedAddress != token0Address) { // Swap half earned to token0 _safeSwap( uniRouterAddress, earnedAmt.div(2), slippageFactor, earnedToToken0Path, address(this), now + routerDeadlineDuration ); } if (earnedAddress != token1Address) { // Swap half earned to token1 _safeSwap( uniRouterAddress, earnedAmt.div(2), slippageFactor, earnedToToken1Path, address(this), now + routerDeadlineDuration ); } // Get want tokens, ie. add liquidity uint256 token0Amt = IERC20(token0Address).balanceOf(address(this)); uint256 token1Amt = IERC20(token1Address).balanceOf(address(this)); if (token0Amt > 0 && token1Amt > 0) { IERC20(token0Address).safeIncreaseAllowance( uniRouterAddress, token0Amt ); IERC20(token1Address).safeIncreaseAllowance( uniRouterAddress, token1Amt ); IXRouter02(uniRouterAddress).addLiquidity( token0Address, token1Address, token0Amt, token1Amt, 0, 0, address(this), now + routerDeadlineDuration ); } lastEarnBlock = block.number; _farm(); } function buyBack(uint256 _earnedAmt) internal virtual returns (uint256) { if (buyBackRate <= 0) { return _earnedAmt; } uint256 buyBackAmt = _earnedAmt.mul(buyBackRate).div(buyBackRateMax); if (uniRouterAddress != buybackRouterAddress) { // Example case: LP token on ApeSwap and NATIVE token on PancakeSwap if (earnedAddress != wmaticAddress) { // First convert earn to wmatic IERC20(earnedAddress).safeIncreaseAllowance( uniRouterAddress, buyBackAmt ); IXRouter02(uniRouterAddress) .swapExactTokensForTokensSupportingFeeOnTransferTokens( buyBackAmt, 0, earnedToWMATICPath, address(this), now + routerDeadlineDuration ); } // convert all wmatic to Native and burn them uint256 wmaticAmt = IERC20(wmaticAddress).balanceOf(address(this)); if (wmaticAmt > 0) { IERC20(wmaticAddress).safeIncreaseAllowance( buybackRouterAddress, wmaticAmt ); IXRouter02(buybackRouterAddress) .swapExactTokensForTokensSupportingFeeOnTransferTokens( wmaticAmt, 0, WMATICToNATIVEPath, buyBackAddress, now + routerDeadlineDuration ); } } else { IERC20(earnedAddress).safeIncreaseAllowance( uniRouterAddress, buyBackAmt ); _safeSwap( uniRouterAddress, buyBackAmt, slippageFactor, earnedToNATIVEPath, buyBackAddress, now + routerDeadlineDuration ); } return _earnedAmt.sub(buyBackAmt); } function distributeFees(uint256 _earnedAmt) internal virtual returns (uint256) { if (_earnedAmt > 0) { // Performance fee if (controllerFee > 0) { uint256 fee = _earnedAmt.mul(controllerFee).div(controllerFeeMax); IERC20(earnedAddress).safeTransfer(govAddress, fee); _earnedAmt = _earnedAmt.sub(fee); } } return _earnedAmt; } function convertDustToEarned() public virtual whenNotPaused { require(isAutoComp, "!isAutoComp"); require(!isSingleVault, "isSingleVault"); // Converts dust tokens into earned tokens, which will be reinvested on the next earn(). // Converts token0 dust (if any) to earned tokens uint256 token0Amt = IERC20(token0Address).balanceOf(address(this)); if (token0Address != earnedAddress && token0Amt > 0) { IERC20(token0Address).safeIncreaseAllowance( uniRouterAddress, token0Amt ); // Swap all dust tokens to earned tokens _safeSwap( uniRouterAddress, token0Amt, slippageFactor, token0ToEarnedPath, address(this), now + routerDeadlineDuration ); } // Converts token1 dust (if any) to earned tokens uint256 token1Amt = IERC20(token1Address).balanceOf(address(this)); if (token1Address != earnedAddress && token1Amt > 0) { IERC20(token1Address).safeIncreaseAllowance( uniRouterAddress, token1Amt ); // Swap all dust tokens to earned tokens _safeSwap( uniRouterAddress, token1Amt, slippageFactor, token1ToEarnedPath, address(this), now + routerDeadlineDuration ); } } function pause() public virtual onlyAllowGov { _pause(); } function unpause() external virtual onlyAllowGov { _unpause(); } function setEntranceFeeFactor(uint256 _entranceFeeFactor) public onlyAllowGov { require(_entranceFeeFactor > entranceFeeFactorLL, "!safe - too low"); require(_entranceFeeFactor <= entranceFeeFactorMax, "!safe - too high"); entranceFeeFactor = _entranceFeeFactor; } function setControllerFee(uint256 _controllerFee) public onlyAllowGov{ require(_controllerFee <= controllerFeeUL, "too high"); controllerFee = _controllerFee; } function setGov(address _govAddress) public virtual onlyAllowGov { govAddress = _govAddress; } function setDepositFeeFactor(uint256 _depositFeeFactor) public onlyAllowGov{ require(_depositFeeFactor > depositFeeFactorLL, "!safe - too low"); require(_depositFeeFactor <= depositFeeFactorMax, "!safe - too high"); depositFeeFactor = _depositFeeFactor; } function setWithdrawFeeFactor(uint256 _withdrawFeeFactor) public onlyAllowGov { require(_withdrawFeeFactor > withdrawFeeFactorLL, "!safe - too low"); require(_withdrawFeeFactor <= withdrawFeeFactorMax, "!safe - too high"); withdrawFeeFactor = _withdrawFeeFactor; } function setbuyBackRate(uint256 _buyBackRate) public onlyAllowGov { require(buyBackRate <= buyBackRateUL, "too high"); buyBackRate = _buyBackRate; } function setBuybackRouterAddress(address _buybackRouterAddress) public onlyAllowGov { buybackRouterAddress = _buybackRouterAddress; } function inCaseTokensGetStuck( address _token, uint256 _amount, address _to ) public virtual onlyAllowGov { require(_token != earnedAddress, "!safe"); require(_token != wantAddress, "!safe"); IERC20(_token).safeTransfer(_to, _amount); } function _wrapMATIC() internal virtual onlyAllowGov { // MATIC -> WMATIC uint256 maticBal = address(this).balance; if (maticBal > 0) { IWMATIC(wmaticAddress).deposit{value: maticBal}(); // MATIC -> WMATIC } } function _safeSwap( address _uniRouterAddress, uint256 _amountIn, uint256 _slippageFactor, address[] memory _path, address _to, uint256 _deadline ) internal virtual { uint256[] memory amounts = IXRouter02(_uniRouterAddress).getAmountsOut(_amountIn, _path); uint256 amountOut = amounts[amounts.length.sub(1)]; IXRouter02(_uniRouterAddress) .swapExactTokensForTokensSupportingFeeOnTransferTokens( _amountIn, amountOut.mul(_slippageFactor).div(1000), _path, _to, _deadline ); } } // File contracts/StrategyV3_Native.sol pragma solidity 0.6.12; contract StrategyV3_Native is StrategyV3 { address public earned0Address; address[] public earned0ToEarnedPath; constructor( address[] memory _addresses, address[] memory _tokenAddresses, bool _isSingleVault, uint256 _pid, address[] memory _earnedToNATIVEPath, address[] memory _earnedToToken0Path, address[] memory _earnedToToken1Path, address[] memory _token0ToEarnedPath, address[] memory _token1ToEarnedPath, address[] memory _earned0ToEarnedPath, uint256 _depositFeeFactor, uint256 _withdrawFeeFactor, uint256 _entranceFeeFactor ) public { nativeFarmAddress = _addresses[0]; farmContractAddress = _addresses[1]; govAddress = _addresses[2]; uniRouterAddress = _addresses[3]; buybackRouterAddress = _addresses[4]; NATIVEAddress = _tokenAddresses[0]; wmaticAddress = _tokenAddresses[1]; wantAddress = _tokenAddresses[2]; earnedAddress = _tokenAddresses[3]; earned0Address = _tokenAddresses[4]; token0Address = _tokenAddresses[5]; token1Address = _tokenAddresses[6]; pid = _pid; isSingleVault = _isSingleVault; isAutoComp = false; earnedToNATIVEPath = _earnedToNATIVEPath; earnedToToken0Path = _earnedToToken0Path; earnedToToken1Path = _earnedToToken1Path; token0ToEarnedPath = _token0ToEarnedPath; token1ToEarnedPath = _token1ToEarnedPath; earned0ToEarnedPath = _earned0ToEarnedPath; WMATICToNATIVEPath = [wmaticAddress, NATIVEAddress]; depositFeeFactor = _depositFeeFactor; withdrawFeeFactor = _withdrawFeeFactor; entranceFeeFactor = _entranceFeeFactor; transferOwnership(nativeFarmAddress); } // not used function _farm() internal override {} // not used function _unfarm(uint256 _wantAmt) internal override {} // not used function _harvest() internal override {} // not used function earn() public override {} // not used function buyBack(uint256 _earnedAmt) internal override returns (uint256) {} // not used function distributeFees(uint256 _earnedAmt) internal override returns (uint256) {} // not used function convertDustToEarned() public override {} }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[{"internalType":"address[]","name":"_addresses","type":"address[]"},{"internalType":"address[]","name":"_tokenAddresses","type":"address[]"},{"internalType":"bool","name":"_isSingleVault","type":"bool"},{"internalType":"uint256","name":"_pid","type":"uint256"},{"internalType":"address[]","name":"_earnedToNATIVEPath","type":"address[]"},{"internalType":"address[]","name":"_earnedToToken0Path","type":"address[]"},{"internalType":"address[]","name":"_earnedToToken1Path","type":"address[]"},{"internalType":"address[]","name":"_token0ToEarnedPath","type":"address[]"},{"internalType":"address[]","name":"_token1ToEarnedPath","type":"address[]"},{"internalType":"address[]","name":"_earned0ToEarnedPath","type":"address[]"},{"internalType":"uint256","name":"_depositFeeFactor","type":"uint256"},{"internalType":"uint256","name":"_withdrawFeeFactor","type":"uint256"},{"internalType":"uint256","name":"_entranceFeeFactor","type":"uint256"}],"stateMutability":"nonpayable","type":"constructor"},{"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":"address","name":"account","type":"address"}],"name":"Unpaused","type":"event"},{"inputs":[],"name":"NATIVEAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"WMATICToNATIVEPath","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyBackAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyBackRate","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyBackRateMax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyBackRateUL","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buybackRouterAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"controllerFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"controllerFeeMax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"controllerFeeUL","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"convertDustToEarned","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_userAddress","type":"address"},{"internalType":"uint256","name":"_wantAmt","type":"uint256"}],"name":"deposit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"depositFeeFactor","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"depositFeeFactorLL","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"depositFeeFactorMax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"earn","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"earned0Address","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"earned0ToEarnedPath","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"earnedAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"earnedToNATIVEPath","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"earnedToToken0Path","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"earnedToToken1Path","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"earnedToWMATICPath","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"entranceFeeFactor","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"entranceFeeFactorLL","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"entranceFeeFactorMax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"farm","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"farmContractAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"govAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_token","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"},{"internalType":"address","name":"_to","type":"address"}],"name":"inCaseTokensGetStuck","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"isAutoComp","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"isSingleVault","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lastEarnBlock","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"nativeFarmAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pause","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"paused","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pid","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"routerDeadlineDuration","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_buybackRouterAddress","type":"address"}],"name":"setBuybackRouterAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_controllerFee","type":"uint256"}],"name":"setControllerFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_depositFeeFactor","type":"uint256"}],"name":"setDepositFeeFactor","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_entranceFeeFactor","type":"uint256"}],"name":"setEntranceFeeFactor","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_govAddress","type":"address"}],"name":"setGov","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_withdrawFeeFactor","type":"uint256"}],"name":"setWithdrawFeeFactor","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_buyBackRate","type":"uint256"}],"name":"setbuyBackRate","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sharesTotal","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"slippageFactor","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"slippageFactorUL","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"token0Address","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"token0ToEarnedPath","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"token1Address","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"token1ToEarnedPath","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniRouterAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"unpause","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"wantAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"wantLockedTotal","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_userAddress","type":"address"},{"internalType":"uint256","name":"_wantAmt","type":"uint256"}],"name":"withdraw","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"withdrawFeeFactor","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"withdrawFeeFactorLL","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"withdrawFeeFactorMax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"wmaticAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"}]
Contract Creation Code
608060405261012c600a556000600f556000601055600060115560c860125560c86013556103b66017553480156200003657600080fd5b50604051620047e7380380620047e783398181016040526101a08110156200005d57600080fd5b81019080805160405193929190846401000000008211156200007e57600080fd5b838201915060208201858111156200009557600080fd5b8251866020820283011164010000000082111715620000b357600080fd5b8083526020830192505050908051906020019060200280838360005b83811015620000ec578082015181840152602081019050620000cf565b50505050905001604052602001805160405193929190846401000000008211156200011657600080fd5b838201915060208201858111156200012d57600080fd5b82518660208202830111640100000000821117156200014b57600080fd5b8083526020830192505050908051906020019060200280838360005b838110156200018457808201518184015260208101905062000167565b50505050905001604052602001805190602001909291908051906020019092919080516040519392919084640100000000821115620001c257600080fd5b83820191506020820185811115620001d957600080fd5b8251866020820283011164010000000082111715620001f757600080fd5b8083526020830192505050908051906020019060200280838360005b838110156200023057808201518184015260208101905062000213565b50505050905001604052602001805160405193929190846401000000008211156200025a57600080fd5b838201915060208201858111156200027157600080fd5b82518660208202830111640100000000821117156200028f57600080fd5b8083526020830192505050908051906020019060200280838360005b83811015620002c8578082015181840152602081019050620002ab565b5050505090500160405260200180516040519392919084640100000000821115620002f257600080fd5b838201915060208201858111156200030957600080fd5b82518660208202830111640100000000821117156200032757600080fd5b8083526020830192505050908051906020019060200280838360005b838110156200036057808201518184015260208101905062000343565b50505050905001604052602001805160405193929190846401000000008211156200038a57600080fd5b83820191506020820185811115620003a157600080fd5b8251866020820283011164010000000082111715620003bf57600080fd5b8083526020830192505050908051906020019060200280838360005b83811015620003f8578082015181840152602081019050620003db565b50505050905001604052602001805160405193929190846401000000008211156200042257600080fd5b838201915060208201858111156200043957600080fd5b82518660208202830111640100000000821117156200045757600080fd5b8083526020830192505050908051906020019060200280838360005b838110156200049057808201518184015260208101905062000473565b5050505090500160405260200180516040519392919084640100000000821115620004ba57600080fd5b83820191506020820185811115620004d157600080fd5b8251866020820283011164010000000082111715620004ef57600080fd5b8083526020830192505050908051906020019060200280838360005b83811015620005285780820151818401526020810190506200050b565b5050505090500160405260200180519060200190929190805190602001909291908051906020019092919050505060006200056862000c2060201b60201c565b9050806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a350600180819055506000600260006101000a81548160ff0219169083151502179055508c6000815181106200063657fe5b6020026020010151600c60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508c6001815181106200068c57fe5b6020026020010151600260036101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508c600281518110620006e257fe5b6020026020010151600e60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508c6003815181106200073857fe5b6020026020010151600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508c6004815181106200078e57fe5b6020026020010151600960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508b600081518110620007e457fe5b6020026020010151600d60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508b6001815181106200083a57fe5b6020026020010151600b60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508b6002815181106200089057fe5b6020026020010151600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508b600381518110620008e657fe5b6020026020010151600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508b6004815181106200093c57fe5b6020026020010151601f60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508b6005815181106200099257fe5b6020026020010151600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508b600681518110620009e857fe5b6020026020010151600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550896003819055508a600260016101000a81548160ff02191690831515021790555060006002806101000a81548160ff021916908315150217905550886018908051906020019062000a8392919062000e3e565b50876019908051906020019062000a9c92919062000e3e565b5086601a908051906020019062000ab592919062000e3e565b5085601b908051906020019062000ace92919062000e3e565b5084601c908051906020019062000ae792919062000e3e565b50836020908051906020019062000b0092919062000e3e565b506040518060400160405280600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815250601e90600262000bc492919062000ecd565b5082601581905550816016819055508060148190555062000c0d600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1662000c2860201b60201c565b5050505050505050505050505062000f99565b600033905090565b62000c3862000c2060201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161462000cf9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141562000d81576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526026815260200180620047c16026913960400191505060405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b82805482825590600052602060002090810192821562000eba579160200282015b8281111562000eb95782518260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055509160200191906001019062000e5f565b5b50905062000ec9919062000f5c565b5090565b82805482825590600052602060002090810192821562000f49579160200282015b8281111562000f485782518260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055509160200191906001019062000eee565b5b50905062000f58919062000f5c565b5090565b5b8082111562000f9557600081816101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690555060010162000f5d565b5090565b6138188062000fa96000396000f3fe608060405234801561001057600080fd5b50600436106103cf5760003560e01c8063866b2018116101ff578063cb9718471161011a578063e7198474116100ad578063f2fde38b1161007c578063f2fde38b14610e8e578063f3fef3a314610ed2578063f400d31114610f34578063ffbd3b1f14610f62576103cf565b8063e719847414610dea578063e7a0367914610e1e578063ee50dc3414610e52578063f106845414610e70576103cf565b8063db4b7eee116100e9578063db4b7eee14610d10578063dd85a8ad14610d44578063decfd2c314610d9c578063e5dd455a14610dca576103cf565b8063cb97184714610c5a578063cfad57a214610c8e578063d389800f14610cd2578063d7cb416f14610cdc576103cf565b8063b3ed459911610192578063c11c2e9211610161578063c11c2e9214610b82578063c302a4d014610b8c578063c8e3d18b14610baa578063cb46b7e314610c02576103cf565b8063b3ed459914610aaa578063b40fa1ce14610ade578063b74cd24214610b0c578063b77050e714610b2a576103cf565b806396e9aff8116101ce57806396e9aff8146109e25780639fc33a9f14610a3a578063a613a28a14610a6e578063b3545c0114610a8c576103cf565b8063866b20181461092e57806388f9e8001461094c5780638da5cb5b1461098057806396470b73146109b4576103cf565b806346008a07116102ef578063693a090b116102825780637c75e9e5116102515780637c75e9e51461088e5780637ff36fbe146108d25780638456cb591461090657806385f02dd614610910576103cf565b8063693a090b146107fe578063715018a614610832578063783478ad1461083c5780637c717c0914610870576103cf565b806367057b6c116102be57806367057b6c146106fc57806367206d401461071a57806367eed8e01461078857806368f54162146107e0576103cf565b806346008a071461062857806347e7ef241461065c5780634d9f7bb2146106be5780635c975abb146106dc576103cf565b806325c7ce6b116103675780633e1a8912116103365780633e1a8912146105b45780633f4ba83a146105e257806342da4eb3146105ec57806344a3955e1461060a576103cf565b806325c7ce6b1461053a5780632717eff3146105585780632db693301461057657806336e9332d146105aa576103cf565b80630fa4e01e116103a35780630fa4e01e146104c25780631334903f146104e0578063178a8d07146104fe5780631b61e0551461051c576103cf565b80627a2ae3146103d4578063061c7d481461042c57806307e2318d1461044a5780630ddea8c3146104a2575b600080fd5b610400600480360360208110156103ea57600080fd5b8101908080359060200190929190505050610f80565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b610434610fbc565b6040518082815260200191505060405180910390f35b6104766004803603602081101561046057600080fd5b8101908080359060200190929190505050610fc2565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6104aa610ffe565b60405180821515815260200191505060405180910390f35b6104ca611011565b6040518082815260200191505060405180910390f35b6104e8611017565b6040518082815260200191505060405180910390f35b61050661101d565b6040518082815260200191505060405180910390f35b610524611023565b6040518082815260200191505060405180910390f35b610542611029565b6040518082815260200191505060405180910390f35b61056061102f565b6040518082815260200191505060405180910390f35b61057e611035565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6105b261105b565b005b6105e0600480360360208110156105ca57600080fd5b81019080803590602001909291905050506110ed565b005b6105ea6112a9565b005b6105f4611376565b6040518082815260200191505060405180910390f35b61061261137c565b6040518082815260200191505060405180910390f35b610630611382565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6106a86004803603604081101561067257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506113a8565b6040518082815260200191505060405180910390f35b6106c66116d7565b6040518082815260200191505060405180910390f35b6106e46116dd565b60405180821515815260200191505060405180910390f35b6107046116f4565b6040518082815260200191505060405180910390f35b6107866004803603606081101561073057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506116fa565b005b6107b46004803603602081101561079e57600080fd5b8101908080359060200190929190505050611975565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6107e86119b1565b6040518082815260200191505060405180910390f35b6108066119b7565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b61083a6119dd565b005b610844611b63565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b610878611b69565b6040518082815260200191505060405180910390f35b6108d0600480360360208110156108a457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611b6f565b005b6108da611c76565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b61090e611c9c565b005b610918611d69565b6040518082815260200191505060405180910390f35b610936611d6f565b6040518082815260200191505060405180910390f35b610954611d75565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b610988611d9b565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6109e0600480360360208110156109ca57600080fd5b8101908080359060200190929190505050611dc4565b005b610a0e600480360360208110156109f857600080fd5b8101908080359060200190929190505050611f80565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b610a42611fbc565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b610a76611fe2565b6040518082815260200191505060405180910390f35b610a94611fe8565b6040518082815260200191505060405180910390f35b610ab2611fee565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b610b0a60048036036020811015610af457600080fd5b8101908080359060200190929190505050612014565b005b610b1461215b565b6040518082815260200191505060405180910390f35b610b5660048036036020811015610b4057600080fd5b8101908080359060200190929190505050612161565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b610b8a61219d565b005b610b9461219f565b6040518082815260200191505060405180910390f35b610bd660048036036020811015610bc057600080fd5b81019080803590602001909291905050506121a5565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b610c2e60048036036020811015610c1857600080fd5b81019080803590602001909291905050506121e1565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b610c6261221d565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b610cd060048036036020811015610ca457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612243565b005b610cda61234a565b005b610ce461234c565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b610d18612372565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b610d7060048036036020811015610d5a57600080fd5b8101908080359060200190929190505050612398565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b610dc860048036036020811015610db257600080fd5b81019080803590602001909291905050506123d4565b005b610dd2612590565b60405180821515815260200191505060405180910390f35b610df26125a1565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b610e266125c7565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b610e5a6125ed565b6040518082815260200191505060405180910390f35b610e786125f3565b6040518082815260200191505060405180910390f35b610ed060048036036020811015610ea457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506125f9565b005b610f1e60048036036040811015610ee857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050612804565b6040518082815260200191505060405180910390f35b610f6060048036036020811015610f4a57600080fd5b8101908080359060200190929190505050612bf2565b005b610f6a612d37565b6040518082815260200191505060405180910390f35b601c8181548110610f8d57fe5b906000526020600020016000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b61012c81565b60208181548110610fcf57fe5b906000526020600020016000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600260019054906101000a900460ff1681565b600f5481565b60145481565b60135481565b600a5481565b60155481565b61271081565b601f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600260015414156110d4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0081525060200191505060405180910390fd5b60026001819055506110e4612d3d565b60018081905550565b600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146111b0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600e8152602001807f4e6f7420617574686f726973656400000000000000000000000000000000000081525060200191505060405180910390fd5b6126de8111611227576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600f8152602001807f2173616665202d20746f6f206c6f77000000000000000000000000000000000081525060200191505060405180910390fd5b61271081111561129f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260108152602001807f2173616665202d20746f6f20686967680000000000000000000000000000000081525060200191505060405180910390fd5b8060148190555050565b600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461136c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600e8152602001807f4e6f7420617574686f726973656400000000000000000000000000000000000081525060200191505060405180910390fd5b611374612d3f565b565b60105481565b60115481565b600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60006113b2612e32565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611472576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600260015414156114eb576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0081525060200191505060405180910390fd5b6002600181905550600260009054906101000a900460ff1615611576576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260108152602001807f5061757361626c653a207061757365640000000000000000000000000000000081525060200191505060405180910390fd5b6115c5333084600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16612e3a909392919063ffffffff16565b61271060155410156115fd576115fa6127106115ec60155485612efb90919063ffffffff16565b612f8190919063ffffffff16565b91505b6000829050600060105411801561161657506000601154115b1561166f5761166c61271061165e6010546116506014546116426011548a612efb90919063ffffffff16565b612efb90919063ffffffff16565b612f8190919063ffffffff16565b612f8190919063ffffffff16565b90505b61168481601154612fcb90919063ffffffff16565b60118190555060028054906101000a900460ff16156116aa576116a5612d3d565b6116c6565b6116bf83601054612fcb90919063ffffffff16565b6010819055505b809150506001808190555092915050565b61271081565b6000600260009054906101000a900460ff16905090565b61271081565b600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146117bd576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600e8152602001807f4e6f7420617574686f726973656400000000000000000000000000000000000081525060200191505060405180910390fd5b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611881576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260058152602001807f217361666500000000000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611945576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260058152602001807f217361666500000000000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b61197081838573ffffffffffffffffffffffffffffffffffffffff166130539092919063ffffffff16565b505050565b6018818154811061198257fe5b906000526020600020016000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60165481565b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6119e5612e32565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611aa5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b61dead81565b61251c81565b600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611c32576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600e8152602001807f4e6f7420617574686f726973656400000000000000000000000000000000000081525060200191505060405180910390fd5b80600960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611d5f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600e8152602001807f4e6f7420617574686f726973656400000000000000000000000000000000000081525060200191505060405180910390fd5b611d676130f5565b565b60125481565b6126de81565b600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611e87576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600e8152602001807f4e6f7420617574686f726973656400000000000000000000000000000000000081525060200191505060405180910390fd5b6126de8111611efe576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600f8152602001807f2173616665202d20746f6f206c6f77000000000000000000000000000000000081525060200191505060405180910390fd5b612710811115611f76576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260108152602001807f2173616665202d20746f6f20686967680000000000000000000000000000000081525060200191505060405180910390fd5b8060168190555050565b601a8181548110611f8d57fe5b906000526020600020016000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600260039054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b61271081565b61032081565b600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146120d7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600e8152602001807f4e6f7420617574686f726973656400000000000000000000000000000000000081525060200191505060405180910390fd5b6103206013541115612151576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260088152602001807f746f6f206869676800000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b8060138190555050565b6103e381565b601b818154811061216e57fe5b906000526020600020016000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b565b6126de81565b601981815481106121b257fe5b906000526020600020016000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b601d81815481106121ee57fe5b906000526020600020016000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614612306576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600e8152602001807f4e6f7420617574686f726973656400000000000000000000000000000000000081525060200191505060405180910390fd5b80600e60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b601e81815481106123a557fe5b906000526020600020016000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614612497576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600e8152602001807f4e6f7420617574686f726973656400000000000000000000000000000000000081525060200191505060405180910390fd5b61251c811161250e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600f8152602001807f2173616665202d20746f6f206c6f77000000000000000000000000000000000081525060200191505060405180910390fd5b612710811115612586576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260108152602001807f2173616665202d20746f6f20686967680000000000000000000000000000000081525060200191505060405180910390fd5b8060158190555050565b60028054906101000a900460ff1681565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b61271081565b60035481565b612601612e32565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146126c1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415612747576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602681526020018061374c6026913960400191505060405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600061280e612e32565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146128ce576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b60026001541415612947576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0081525060200191505060405180910390fd5b6002600181905550600082116129c5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600d8152602001807f5f77616e74416d74203c3d20300000000000000000000000000000000000000081525060200191505060405180910390fd5b60006129f06010546129e260115486612efb90919063ffffffff16565b612f8190919063ffffffff16565b9050601154811115612a025760115490505b612a17816011546131e990919063ffffffff16565b6011819055506127106016541015612a5557612a52612710612a4460165486612efb90919063ffffffff16565b612f8190919063ffffffff16565b92505b60028054906101000a900460ff1615612a7257612a7183613233565b5b6000600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b158015612afd57600080fd5b505afa158015612b11573d6000803e3d6000fd5b505050506040513d6020811015612b2757600080fd5b8101908080519060200190929190505050905080841115612b46578093505b836010541015612b565760105493505b612b6b846010546131e990919063ffffffff16565b601081905550612be0600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1685600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166130539092919063ffffffff16565b81925050506001808190555092915050565b600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614612cb5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600e8152602001807f4e6f7420617574686f726973656400000000000000000000000000000000000081525060200191505060405180910390fd5b61012c811115612d2d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260088152602001807f746f6f206869676800000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b8060128190555050565b60175481565b565b600260009054906101000a900460ff16612dc1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f5061757361626c653a206e6f742070617573656400000000000000000000000081525060200191505060405180910390fd5b6000600260006101000a81548160ff0219169083151502179055507f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa612e05612e32565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a1565b600033905090565b612ef5846323b872dd60e01b858585604051602401808473ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019350505050604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050613236565b50505050565b600080831415612f0e5760009050612f7b565b6000828402905082848281612f1f57fe5b0414612f76576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260218152602001806137986021913960400191505060405180910390fd5b809150505b92915050565b6000612fc383836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250613325565b905092915050565b600080828401905083811015613049576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b6130f08363a9059cbb60e01b8484604051602401808373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050613236565b505050565b600260009054906101000a900460ff1615613178576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260108152602001807f5061757361626c653a207061757365640000000000000000000000000000000081525060200191505060405180910390fd5b6001600260006101000a81548160ff0219169083151502179055507f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a2586131bc612e32565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a1565b600061322b83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506133eb565b905092915050565b50565b6060613298826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff166134ab9092919063ffffffff16565b9050600081511115613320578080602001905160208110156132b957600080fd5b810190808051906020019092919050505061331f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602a8152602001806137b9602a913960400191505060405180910390fd5b5b505050565b600080831182906133d1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561339657808201518184015260208101905061337b565b50505050905090810190601f1680156133c35780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5060008385816133dd57fe5b049050809150509392505050565b6000838311158290613498576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561345d578082015181840152602081019050613442565b50505050905090810190601f16801561348a5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5060008385039050809150509392505050565b60606134ba84846000856134c3565b90509392505050565b60608247101561351e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260268152602001806137726026913960400191505060405180910390fd5b6135278561366c565b613599576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601d8152602001807f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000081525060200191505060405180910390fd5b600060608673ffffffffffffffffffffffffffffffffffffffff1685876040518082805190602001908083835b602083106135e957805182526020820191506020810190506020830392506135c6565b6001836020036101000a03801982511681845116808217855250505050505090500191505060006040518083038185875af1925050503d806000811461364b576040519150601f19603f3d011682016040523d82523d6000602084013e613650565b606091505b509150915061366082828661367f565b92505050949350505050565b600080823b905060008111915050919050565b6060831561368f57829050613744565b6000835111156136a25782518084602001fd5b816040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b838110156137095780820151818401526020810190506136ee565b50505050905090810190601f1680156137365780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b939250505056fe4f776e61626c653a206e6577206f776e657220697320746865207a65726f2061646472657373416464726573733a20696e73756666696369656e742062616c616e636520666f722063616c6c536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f775361666545524332303a204552433230206f7065726174696f6e20646964206e6f742073756363656564a264697066735822122019bedcdd475bdc63d8425f0312a33d1ee866d62a9d6ec209bb32d7e7742c126264736f6c634300060c00334f776e61626c653a206e6577206f776e657220697320746865207a65726f206164647265737300000000000000000000000000000000000000000000000000000000000001a00000000000000000000000000000000000000000000000000000000000000260000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000360000000000000000000000000000000000000000000000000000000000000038000000000000000000000000000000000000000000000000000000000000003a000000000000000000000000000000000000000000000000000000000000003c000000000000000000000000000000000000000000000000000000000000003e0000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000027100000000000000000000000000000000000000000000000000000000000002710000000000000000000000000000000000000000000000000000000000000271000000000000000000000000000000000000000000000000000000000000000050000000000000000000000004f04e540a51013afb6761ee73d71d2fb1f29af800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b842a05e5aa8f308f00a1be50464809f5bb1a8240000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000070000000000000000000000005f1657896b38c4761dbc5484473c7a7c845910b60000000000000000000000000d500b1d8e8ef31e21c99d1db9a6444d3adf12700000000000000000000000005f1657896b38c4761dbc5484473c7a7c845910b60000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
00000000000000000000000000000000000000000000000000000000000001a00000000000000000000000000000000000000000000000000000000000000260000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000360000000000000000000000000000000000000000000000000000000000000038000000000000000000000000000000000000000000000000000000000000003a000000000000000000000000000000000000000000000000000000000000003c000000000000000000000000000000000000000000000000000000000000003e0000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000027100000000000000000000000000000000000000000000000000000000000002710000000000000000000000000000000000000000000000000000000000000271000000000000000000000000000000000000000000000000000000000000000050000000000000000000000004f04e540a51013afb6761ee73d71d2fb1f29af800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b842a05e5aa8f308f00a1be50464809f5bb1a8240000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000070000000000000000000000005f1657896b38c4761dbc5484473c7a7c845910b60000000000000000000000000d500b1d8e8ef31e21c99d1db9a6444d3adf12700000000000000000000000005f1657896b38c4761dbc5484473c7a7c845910b60000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
-----Decoded View---------------
Arg [0] : _addresses (address[]): 0x4f04e540a51013afb6761ee73d71d2fb1f29af80,0x0000000000000000000000000000000000000000,0xb842a05e5aa8f308f00a1be50464809f5bb1a824,0x0000000000000000000000000000000000000000,0x0000000000000000000000000000000000000000
Arg [1] : _tokenAddresses (address[]): 0x5f1657896b38c4761dbc5484473c7a7c845910b6,0x0d500b1d8e8ef31e21c99d1db9a6444d3adf1270,0x5f1657896b38c4761dbc5484473c7a7c845910b6,0x0000000000000000000000000000000000000000,0x0000000000000000000000000000000000000000,0x0000000000000000000000000000000000000000,0x0000000000000000000000000000000000000000
Arg [2] : _isSingleVault (bool): True
Arg [3] : _pid (uint256): 0
-----Encoded View---------------
33 Constructor Arguments found :
Arg [0] : 00000000000000000000000000000000000000000000000000000000000001a0
Arg [1] : 0000000000000000000000000000000000000000000000000000000000000260
Arg [2] : 0000000000000000000000000000000000000000000000000000000000000001
Arg [3] : 0000000000000000000000000000000000000000000000000000000000000000
Arg [4] : 0000000000000000000000000000000000000000000000000000000000000360
Arg [5] : 0000000000000000000000000000000000000000000000000000000000000380
Arg [6] : 00000000000000000000000000000000000000000000000000000000000003a0
Arg [7] : 00000000000000000000000000000000000000000000000000000000000003c0
Arg [8] : 00000000000000000000000000000000000000000000000000000000000003e0
Arg [9] : 0000000000000000000000000000000000000000000000000000000000000400
Arg [10] : 0000000000000000000000000000000000000000000000000000000000002710
Arg [11] : 0000000000000000000000000000000000000000000000000000000000002710
Arg [12] : 0000000000000000000000000000000000000000000000000000000000002710
Arg [13] : 0000000000000000000000000000000000000000000000000000000000000005
Arg [14] : 0000000000000000000000004f04e540a51013afb6761ee73d71d2fb1f29af80
Arg [15] : 0000000000000000000000000000000000000000000000000000000000000000
Arg [16] : 000000000000000000000000b842a05e5aa8f308f00a1be50464809f5bb1a824
Arg [17] : 0000000000000000000000000000000000000000000000000000000000000000
Arg [18] : 0000000000000000000000000000000000000000000000000000000000000000
Arg [19] : 0000000000000000000000000000000000000000000000000000000000000007
Arg [20] : 0000000000000000000000005f1657896b38c4761dbc5484473c7a7c845910b6
Arg [21] : 0000000000000000000000000d500b1d8e8ef31e21c99d1db9a6444d3adf1270
Arg [22] : 0000000000000000000000005f1657896b38c4761dbc5484473c7a7c845910b6
Arg [23] : 0000000000000000000000000000000000000000000000000000000000000000
Arg [24] : 0000000000000000000000000000000000000000000000000000000000000000
Arg [25] : 0000000000000000000000000000000000000000000000000000000000000000
Arg [26] : 0000000000000000000000000000000000000000000000000000000000000000
Arg [27] : 0000000000000000000000000000000000000000000000000000000000000000
Arg [28] : 0000000000000000000000000000000000000000000000000000000000000000
Arg [29] : 0000000000000000000000000000000000000000000000000000000000000000
Arg [30] : 0000000000000000000000000000000000000000000000000000000000000000
Arg [31] : 0000000000000000000000000000000000000000000000000000000000000000
Arg [32] : 0000000000000000000000000000000000000000000000000000000000000000
Deployed ByteCode Sourcemap
50640:2422:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;37346:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;36125:45;;;:::i;:::-;;;;;;;;;;;;;;;;;;;50724:36;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;35133:25;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;35898:32;;;:::i;:::-;;;;;;;;;;;;;;;;;;;36429;;;:::i;:::-;;;;;;;;;;;;;;;;;;;36179;;;:::i;:::-;;;;;;;;;;;;;;;;;;;35614:43;;;:::i;:::-;;;;;;;;;;;;;;;;;;;36707:31;;;:::i;:::-;;;;;;;;;;;;;;;;;;;36058:48;;;:::i;:::-;;;;;;;;;;;;;;;;;;;50688:29;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;38714:70;;;:::i;:::-;;47768:296;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;47682:78;;;:::i;:::-;;35937:34;;;:::i;:::-;;;;;;;;;;;;;;;;;;;35978:30;;;:::i;:::-;;;;;;;;;;;;;;;;;;;35843:25;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;37628:1078;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;36218:46;;;:::i;:::-;;;;;;;;;;;;;;;;;;;24832:78;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;36930:52;;;:::i;:::-;;;;;;;;;;;;;;;;;;;49312:300;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;37178:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;36891:32;;;:::i;:::-;;;;;;;;;;;;;;;;;;;35478:31;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;27364:148;;;:::i;:::-;;36333:83;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;36833:49;;;:::i;:::-;;;;;;;;;;;;;;;;;;;49157:147;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;35373:28;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;47602:72;;;:::i;:::-;;36017:34;;;:::i;:::-;;;;;;;;;;;;;;;;;;;36989:50;;;:::i;:::-;;;;;;;;;;;;;;;;;;;35769:32;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;26722:79;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;48674:296;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;37262:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;35196:34;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;36763:51;;;:::i;:::-;;;;;;;;;;;;;;;;;;;36283:43;;;:::i;:::-;;;;;;;;;;;;;;;;;;;35808:28;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;48978:171;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;37123:46;;;:::i;:::-;;;;;;;;;;;;;;;;;;;37304:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;53010:49;;;:::i;:::-;;36590:50;;;:::i;:::-;;;;;;;;;;;;;;;;;;;37220:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;37388;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;35544;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;48263:108;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;52750:34;;;:::i;:::-;;35408:28;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;35734;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;37430:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;48379:287;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;35165:22;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;35443:28;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;35340:26;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;36531:52;;;:::i;:::-;;;;;;;;;;;;;;;;;;;35277:18;;;:::i;:::-;;;;;;;;;;;;;;;;;;;27667:281;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;39299:1103;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;48072:183;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;37048:35;;;:::i;:::-;;;;;;;;;;;;;;;;;;;37346;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;36125:45::-;36167:3;36125:45;:::o;50724:36::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;35133:25::-;;;;;;;;;;;;;:::o;35898:32::-;;;;:::o;36429:::-;;;;:::o;36179:::-;;;;:::o;35614:43::-;;;;:::o;36707:31::-;;;;:::o;36058:48::-;36101:5;36058:48;:::o;50688:29::-;;;;;;;;;;;;;:::o;38714:70::-;22614:1;23219:7;;:19;;23211:63;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22614:1;23352:7;:18;;;;38769:7:::1;:5;:7::i;:::-;22570:1:::0;23531:7;:22;;;;38714:70::o;47768:296::-;37531:10;;;;;;;;;;;37517:24;;:10;:24;;;37509:51;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;36636:4:::1;47865:18;:40;47857:68;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;36578:5;47944:18;:42;;47936:71;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;48038:18;48018:17;:38;;;;47768:296:::0;:::o;47682:78::-;37531:10;;;;;;;;;;;37517:24;;:10;:24;;;37509:51;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;47742:10:::1;:8;:10::i;:::-;47682:78::o:0;35937:34::-;;;;:::o;35978:30::-;;;;:::o;35843:25::-;;;;;;;;;;;;;:::o;37628:1078::-;37800:7;26944:12;:10;:12::i;:::-;26934:22;;:6;;;;;;;;;;:22;;;26926:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22614:1:::1;23219:7;;:19;;23211:63;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;22614:1;23352:7;:18;;;;25150:7:::2;;;;;;;;;;;25149:8;25141:37;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;37825:132:::3;37884:10;37918:4;37938:8;37832:11;;;;;;;;;;;37825:36;;;;:132;;;;;;:::i;:::-;36809:5;38035:16;;:38;38031:137;;;38101:55;36809:5;38101:30;38114:16;;38101:8;:12;;:30;;;;:::i;:::-;:34;;:55;;;;:::i;:::-;38090:66;;38031:137;38180:19;38202:8;38180:30;;38243:1;38225:15;;:19;:38;;;;;38262:1;38248:11;;:15;38225:38;38221:252;;;38294:167;36578:5;38294:123;38401:15;;38294:84;38360:17;;38294:43;38325:11;;38294:8;:30;;:43;;;;:::i;:::-;:65;;:84;;;;:::i;:::-;:106;;:123;;;;:::i;:::-;:145;;:167;;;;:::i;:::-;38280:181;;38221:252;38497:28;38513:11;38497;;:15;;:28;;;;:::i;:::-;38483:11;:42;;;;38542:10;::::0;::::3;;;;;;;;38538:130;;;38569:7;:5;:7::i;:::-;38538:130;;;38627:29;38647:8;38627:15;;:19;;:29;;;;:::i;:::-;38609:15;:47;;;;38538:130;38687:11;38680:18;;;22570:1:::1;23531:7:::0;:22:::1;;;;37628:1078:::0;;;;:::o;36218:46::-;36259:5;36218:46;:::o;24832:78::-;24871:4;24895:7;;;;;;;;;;;24888:14;;24832:78;:::o;36930:52::-;36977:5;36930:52;:::o;49312:300::-;37531:10;;;;;;;;;;;37517:24;;:10;:24;;;37509:51;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;49479:13:::1;;;;;;;;;;;49469:23;;:6;:23;;;;49461:41;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;49531:11;;;;;;;;;;;49521:21;;:6;:21;;;;49513:39;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;49563:41;49591:3;49596:7;49570:6;49563:27;;;;:41;;;;;:::i;:::-;49312:300:::0;;;:::o;37178:35::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;36891:32::-;;;;:::o;35478:31::-;;;;;;;;;;;;;:::o;27364:148::-;26944:12;:10;:12::i;:::-;26934:22;;:6;;;;;;;;;;:22;;;26926:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27471:1:::1;27434:40;;27455:6;::::0;::::1;;;;;;;;27434:40;;;;;;;;;;;;27502:1;27485:6:::0;::::1;:19;;;;;;;;;;;;;;;;;;27364:148::o:0;36333:83::-;36374:42;36333:83;:::o;36833:49::-;36878:4;36833:49;:::o;49157:147::-;37531:10;;;;;;;;;;;37517:24;;:10;:24;;;37509:51;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;49275:21:::1;49252:20;;:44;;;;;;;;;;;;;;;;;;49157:147:::0;:::o;35373:28::-;;;;;;;;;;;;;:::o;47602:72::-;37531:10;;;;;;;;;;;37517:24;;:10;:24;;;37509:51;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;47658:8:::1;:6;:8::i;:::-;47602:72::o:0;36017:34::-;;;;:::o;36989:50::-;37035:4;36989:50;:::o;35769:32::-;;;;;;;;;;;;;:::o;26722:79::-;26760:7;26787:6;;;;;;;;;;;26780:13;;26722:79;:::o;48674:296::-;37531:10;;;;;;;;;;;37517:24;;:10;:24;;;37509:51;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;37035:4:::1;48771:18;:40;48763:68;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;36977:5;48850:18;:42;;48842:71;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;48944:18;48924:17;:38;;;;48674:296:::0;:::o;37262:35::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;35196:34::-;;;;;;;;;;;;;:::o;36763:51::-;36809:5;36763:51;:::o;36283:43::-;36323:3;36283:43;:::o;35808:28::-;;;;;;;;;;;;;:::o;48978:171::-;37531:10;;;;;;;;;;;37517:24;;:10;:24;;;37509:51;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;36323:3:::1;49063:11;;:28;;49055:49;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;49129:12;49115:11;:26;;;;48978:171:::0;:::o;37123:46::-;37166:3;37123:46;:::o;37304:35::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;53010:49::-;:::o;36590:50::-;36636:4;36590:50;:::o;37220:35::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;37388:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;35544:::-;;;;;;;;;;;;;:::o;48263:108::-;37531:10;;;;;;;;;;;37517:24;;:10;:24;;;37509:51;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;48352:11:::1;48339:10;;:24;;;;;;;;;;;;;;;;;;48263:108:::0;:::o;52750:34::-;:::o;35408:28::-;;;;;;;;;;;;;:::o;35734:::-;;;;;;;;;;;;;:::o;37430:35::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;48379:287::-;37531:10;;;;;;;;;;;37517:24;;:10;:24;;;37509:51;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;36878:4:::1;48473:17;:38;48465:66;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;36809:5;48550:17;:40;;48542:69;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;48641:17;48622:16;:36;;;;48379:287:::0;:::o;35165:22::-;;;;;;;;;;;;:::o;35443:28::-;;;;;;;;;;;;;:::o;35340:26::-;;;;;;;;;;;;;:::o;36531:52::-;36578:5;36531:52;:::o;35277:18::-;;;;:::o;27667:281::-;26944:12;:10;:12::i;:::-;26934:22;;:6;;;;;;;;;;:22;;;26926:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27790:1:::1;27770:22;;:8;:22;;;;27748:110;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27903:8;27874:38;;27895:6;::::0;::::1;;;;;;;;27874:38;;;;;;;;;;;;27932:8;27923:6;::::0;:17:::1;;;;;;;;;;;;;;;;;;27667:281:::0;:::o;39299:1103::-;39449:7;26944:12;:10;:12::i;:::-;26934:22;;:6;;;;;;;;;;:22;;;26926:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22614:1:::1;23219:7;;:19;;23211:63;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;22614:1;23352:7;:18;;;;39493:1:::2;39482:8;:12;39474:38;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;39525:21;39549:46;39579:15;;39549:25;39562:11;;39549:8;:12;;:25;;;;:::i;:::-;:29;;:46;;;;:::i;:::-;39525:70;;39626:11;;39610:13;:27;39606:87;;;39670:11;;39654:27;;39606:87;39717:30;39733:13;39717:11;;:15;;:30;;;;:::i;:::-;39703:11;:44;;;;36977:5;39764:17;;:40;39760:141;;;39832:57;36977:5;39832:31;39845:17;;39832:8;:12;;:31;;;;:::i;:::-;:35;;:57;;;;:::i;:::-;39821:68;;39760:141;39917:10;::::0;::::2;;;;;;;;39913:60;;;39944:17;39952:8;39944:7;:17::i;:::-;39913:60;39985:15;40010:11;;;;;;;;;;;40003:29;;;40041:4;40003:44;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;39985:62;;40073:7;40062:8;:18;40058:69;;;40108:7;40097:18;;40058:69;40161:8;40143:15;;:26;40139:85;;;40197:15;;40186:26;;40139:85;40258:29;40278:8;40258:15;;:19;;:29;;;;:::i;:::-;40240:15;:47;;;;40300:61;40333:17;;;;;;;;;;;40352:8;40307:11;;;;;;;;;;;40300:32;;;;:61;;;;;:::i;:::-;40381:13;40374:20;;;;22570:1:::1;23531:7:::0;:22:::1;;;;39299:1103:::0;;;;:::o;48072:183::-;37531:10;;;;;;;;;;;37517:24;;:10;:24;;;37509:51;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;36167:3:::1;48160:14;:33;;48152:54;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;48233:14;48217:13;:30;;;;48072:183:::0;:::o;37048:35::-;;;;:::o;52549:37::-;:::o;25881:120::-;25426:7;;;;;;;;;;;25418:40;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;25950:5:::1;25940:7;;:15;;;;;;;;;;;;;;;;;;25971:22;25980:12;:10;:12::i;:::-;25971:22;;;;;;;;;;;;;;;;;;;;25881:120::o:0;23770:106::-;23823:15;23858:10;23851:17;;23770:106;:::o;18016:285::-;18160:133;18194:5;18237:27;;;18266:4;18272:2;18276:5;18214:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18160:19;:133::i;:::-;18016:285;;;;:::o;4825:471::-;4883:7;5133:1;5128;:6;5124:47;;;5158:1;5151:8;;;;5124:47;5183:9;5199:1;5195;:5;5183:17;;5228:1;5223;5219;:5;;;;;;:10;5211:56;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5287:1;5280:8;;;4825:471;;;;;:::o;5772:132::-;5830:7;5857:39;5861:1;5864;5857:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;5850:46;;5772:132;;;;:::o;3437:181::-;3495:7;3515:9;3531:1;3527;:5;3515:17;;3556:1;3551;:6;;3543:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3609:1;3602:8;;;3437:181;;;;:::o;17760:248::-;17877:123;17911:5;17954:23;;;17979:2;17983:5;17931:58;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17877:19;:123::i;:::-;17760:248;;;:::o;25622:118::-;25150:7;;;;;;;;;;;25149:8;25141:37;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;25692:4:::1;25682:7;;:14;;;;;;;;;;;;;;;;;;25712:20;25719:12;:10;:12::i;:::-;25712:20;;;;;;;;;;;;;;;;;;;;25622:118::o:0;3901:136::-;3959:7;3986:43;3990:1;3993;3986:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;3979:50;;3901:136;;;;:::o;52609:55::-;;:::o;20650:885::-;21074:23;21113:118;21159:4;21113:118;;;;;;;;;;;;;;;;;21121:5;21113:27;;;;:118;;;;;:::i;:::-;21074:157;;21266:1;21246:10;:17;:21;21242:286;;;21419:10;21408:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21382:134;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21242:286;20650:885;;;:::o;6400:312::-;6520:7;6552:1;6548;:5;6555:12;6540:28;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6579:9;6595:1;6591;:5;;;;;;6579:17;;6703:1;6696:8;;;6400:312;;;;;:::o;4340:226::-;4460:7;4493:1;4488;:6;;4496:12;4480:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4520:9;4536:1;4532;:5;4520:17;;4557:1;4550:8;;;4340:226;;;;;:::o;12211:229::-;12348:12;12380:52;12402:6;12410:4;12416:1;12419:12;12380:21;:52::i;:::-;12373:59;;12211:229;;;;;:::o;13427:621::-;13597:12;13669:5;13644:21;:30;;13622:118;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13759:18;13770:6;13759:10;:18::i;:::-;13751:60;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13885:12;13899:23;13939:6;:11;;13958:5;13965:4;13939:31;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13884:86;;;;13988:52;14006:7;14015:10;14027:12;13988:17;:52::i;:::-;13981:59;;;;13427:621;;;;;;:::o;8798:444::-;8858:4;9066:12;9190:7;9178:20;9170:28;;9233:1;9226:4;:8;9219:15;;;8798:444;;;:::o;16339:777::-;16489:12;16518:7;16514:595;;;16549:10;16542:17;;;;16514:595;16683:1;16663:10;:17;:21;16659:439;;;16926:10;16920:17;16987:15;16974:10;16970:2;16966:19;16959:44;16874:148;17069:12;17062:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16339:777;;;;;;:::o
Swarm Source
ipfs://19bedcdd475bdc63d8425f0312a33d1ee866d62a9d6ec209bb32d7e7742c1262
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.