More Info
Private Name Tags
ContractCreator
Latest 25 from a total of 165 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Write Transactio... | 13037440 | 1179 days ago | IN | 0 ETH | 0.00727639 | ||||
Write Transactio... | 13037405 | 1179 days ago | IN | 0 ETH | 0.00804986 | ||||
Send Tokens | 12913510 | 1198 days ago | IN | 0 ETH | 0.01173247 | ||||
Send Tokens | 12882650 | 1203 days ago | IN | 0 ETH | 0.00524555 | ||||
Send Tokens | 12881863 | 1203 days ago | IN | 0 ETH | 0.00672504 | ||||
Send Tokens | 12767351 | 1221 days ago | IN | 0 ETH | 0.00609331 | ||||
Send Tokens | 12755668 | 1223 days ago | IN | 0 ETH | 0.00529853 | ||||
Send Tokens | 12753764 | 1223 days ago | IN | 0 ETH | 0.0045416 | ||||
Send Tokens | 12753184 | 1223 days ago | IN | 0 ETH | 0.00197807 | ||||
Recieve Tokens | 12747506 | 1224 days ago | IN | 0.00241633 ETH | 0.00407721 | ||||
Write Transactio... | 12747500 | 1224 days ago | IN | 0 ETH | 0.00067662 | ||||
Write Transactio... | 12747499 | 1224 days ago | IN | 0 ETH | 0.00044173 | ||||
Write Transactio... | 12747494 | 1224 days ago | IN | 0 ETH | 0.00129798 | ||||
Recieve Tokens | 12746163 | 1224 days ago | IN | 0.00250273 ETH | 0.00445044 | ||||
Write Transactio... | 12746156 | 1224 days ago | IN | 0 ETH | 0.0007623 | ||||
Write Transactio... | 12746155 | 1224 days ago | IN | 0 ETH | 0.00044209 | ||||
Write Transactio... | 12746153 | 1224 days ago | IN | 0 ETH | 0.00129834 | ||||
Write Transactio... | 12743480 | 1225 days ago | IN | 0 ETH | 0.00088322 | ||||
Write Transactio... | 12743473 | 1225 days ago | IN | 0 ETH | 0.00259772 | ||||
Write Transactio... | 12743454 | 1225 days ago | IN | 0 ETH | 0.00088322 | ||||
Write Transactio... | 12743453 | 1225 days ago | IN | 0 ETH | 0.00259772 | ||||
Write Transactio... | 12743434 | 1225 days ago | IN | 0 ETH | 0.00101597 | ||||
Write Transactio... | 12743431 | 1225 days ago | IN | 0 ETH | 0.00298765 | ||||
Write Transactio... | 12743407 | 1225 days ago | IN | 0 ETH | 0.00298765 | ||||
Write Transactio... | 12743284 | 1225 days ago | IN | 0 ETH | 0.00092763 |
Latest 25 internal transactions (View All)
Advanced mode:
Parent Transaction Hash | Block | From | To | |||
---|---|---|---|---|---|---|
12747506 | 1224 days ago | 0.00067662 ETH | ||||
12747506 | 1224 days ago | 0.00044173 ETH | ||||
12747506 | 1224 days ago | 0.00129798 ETH | ||||
12746163 | 1224 days ago | 0.0007623 ETH | ||||
12746163 | 1224 days ago | 0.00044209 ETH | ||||
12746163 | 1224 days ago | 0.00129834 ETH | ||||
12735286 | 1226 days ago | 0.00083846 ETH | ||||
12735286 | 1226 days ago | 0.00048616 ETH | ||||
12735286 | 1226 days ago | 0.00142804 ETH | ||||
12723863 | 1228 days ago | 0.00141375 ETH | ||||
12723863 | 1228 days ago | 0.00097101 ETH | ||||
12723863 | 1228 days ago | 0.00285476 ETH | ||||
12722236 | 1228 days ago | 0.00091468 ETH | ||||
12722236 | 1228 days ago | 0.00053036 ETH | ||||
12722236 | 1228 days ago | 0.00171365 ETH | ||||
12722111 | 1228 days ago | 0.00121968 ETH | ||||
12722111 | 1228 days ago | 0.00070734 ETH | ||||
12722111 | 1228 days ago | 0.00207734 ETH | ||||
12722097 | 1228 days ago | 0.00152436 ETH | ||||
12722097 | 1228 days ago | 0.0008837 ETH | ||||
12722097 | 1228 days ago | 0.00259749 ETH | ||||
12721526 | 1228 days ago | 0.00155622 ETH | ||||
12721526 | 1228 days ago | 0.00101597 ETH | ||||
12721526 | 1228 days ago | 0.00298535 ETH | ||||
12721402 | 1228 days ago | 0.00152036 ETH |
Loading...
Loading
Contract Name:
ethBridge
Compiler Version
v0.6.12+commit.27d51765
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2021-06-22 */ // SPDX-License-Identifier: GPL-3.0 pragma solidity ^0.6.12; 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; } } /** * @dev Interface of the ERC20 standard as defined in the EIP. */ interface IERC20 { /** * @dev Returns the amount of tokens in existence. */ function totalSupply() external view returns (uint256); /** * @dev Returns the amount of tokens owned by `account`. */ function balanceOf(address account) external view returns (uint256); /** * @dev Moves `amount` tokens from the caller's account to `recipient`. * * Returns a boolean value indicating whether the operation succeeded. * * Emits a {Transfer} event. */ function transfer(address recipient, uint256 amount) external returns (bool); /** * @dev Returns the remaining number of tokens that `spender` will be * allowed to spend on behalf of `owner` through {transferFrom}. This is * zero by default. * * This value changes when {approve} or {transferFrom} are called. */ function allowance(address owner, address spender) external view returns (uint256); /** * @dev Sets `amount` as the allowance of `spender` over the caller's tokens. * * Returns a boolean value indicating whether the operation succeeded. * * IMPORTANT: Beware that changing an allowance with this method brings the risk * that someone may use both the old and the new allowance by unfortunate * transaction ordering. One possible solution to mitigate this race * condition is to first reduce the spender's allowance to 0 and set the * desired value afterwards: * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729 * * Emits an {Approval} event. */ function approve(address spender, uint256 amount) external returns (bool); /** * @dev Moves `amount` tokens from `sender` to `recipient` using the * allowance mechanism. `amount` is then deducted from the caller's * allowance. * * Returns a boolean value indicating whether the operation succeeded. * * Emits a {Transfer} event. */ function transferFrom(address sender, address recipient, uint256 amount) external returns (bool); /** * @dev Emitted when `value` tokens are moved from one account (`from`) to * another (`to`). * * Note that `value` may be zero. */ event Transfer(address indexed from, address indexed to, uint256 value); /** * @dev Emitted when the allowance of a `spender` for an `owner` is set by * a call to {approve}. `value` is the new allowance. */ event Approval(address indexed owner, address indexed spender, uint256 value); } /** * @dev Wrappers over Solidity's arithmetic operations with added overflow * checks. * * Arithmetic operations in Solidity wrap on overflow. This can easily result * in bugs, because programmers usually assume that an overflow raises an * error, which is the standard behavior in high level programming languages. * `SafeMath` restores this intuition by reverting the transaction when an * operation overflows. * * Using this library instead of the unchecked operations eliminates an entire * class of bugs, so it's recommended to use it always. */ library SafeMath { /** * @dev Returns the addition of two unsigned integers, reverting on * overflow. * * Counterpart to Solidity's `+` operator. * * Requirements: * * - Addition cannot overflow. */ function add(uint256 a, uint256 b) internal pure returns (uint256) { uint256 c = a + b; require(c >= a, "SafeMath: addition overflow"); return c; } /** * @dev Returns the subtraction of two unsigned integers, reverting on * overflow (when the result is negative). * * Counterpart to Solidity's `-` operator. * * Requirements: * * - Subtraction cannot overflow. */ function sub(uint256 a, uint256 b) internal pure returns (uint256) { return sub(a, b, "SafeMath: subtraction overflow"); } /** * @dev Returns the subtraction of two unsigned integers, reverting with custom message on * overflow (when the result is negative). * * Counterpart to Solidity's `-` operator. * * Requirements: * * - Subtraction cannot overflow. */ function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { require(b <= a, errorMessage); uint256 c = a - b; return c; } /** * @dev Returns the multiplication of two unsigned integers, reverting on * overflow. * * Counterpart to Solidity's `*` operator. * * Requirements: * * - Multiplication cannot overflow. */ function mul(uint256 a, uint256 b) internal pure returns (uint256) { // Gas optimization: this is cheaper than requiring 'a' not being zero, but the // benefit is lost if 'b' is also tested. // See: https://github.com/OpenZeppelin/openzeppelin-contracts/pull/522 if (a == 0) { return 0; } uint256 c = a * b; require(c / a == b, "SafeMath: multiplication overflow"); return c; } /** * @dev Returns the integer division of two unsigned integers. Reverts on * division by zero. The result is rounded towards zero. * * Counterpart to Solidity's `/` operator. Note: this function uses a * `revert` opcode (which leaves remaining gas untouched) while Solidity * uses an invalid opcode to revert (consuming all remaining gas). * * Requirements: * * - The divisor cannot be zero. */ function div(uint256 a, uint256 b) internal pure returns (uint256) { return div(a, b, "SafeMath: division by zero"); } /** * @dev Returns the integer division of two unsigned integers. Reverts with custom message on * division by zero. The result is rounded towards zero. * * Counterpart to Solidity's `/` operator. Note: this function uses a * `revert` opcode (which leaves remaining gas untouched) while Solidity * uses an invalid opcode to revert (consuming all remaining gas). * * Requirements: * * - The divisor cannot be zero. */ function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { require(b > 0, errorMessage); uint256 c = a / b; // assert(a == b * c + a % b); // There is no case in which this doesn't hold return c; } /** * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo), * Reverts when dividing by zero. * * Counterpart to Solidity's `%` operator. This function uses a `revert` * opcode (which leaves remaining gas untouched) while Solidity uses an * invalid opcode to revert (consuming all remaining gas). * * Requirements: * * - The divisor cannot be zero. */ function mod(uint256 a, uint256 b) internal pure returns (uint256) { return mod(a, b, "SafeMath: modulo by zero"); } /** * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo), * Reverts with custom message when dividing by zero. * * Counterpart to Solidity's `%` operator. This function uses a `revert` * opcode (which leaves remaining gas untouched) while Solidity uses an * invalid opcode to revert (consuming all remaining gas). * * Requirements: * * - The divisor cannot be zero. */ function mod(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { require(b != 0, errorMessage); return a % b; } } /** * @dev Collection of functions related to the address type */ library Address { /** * @dev Returns true if `account` is a contract. * * [IMPORTANT] * ==== * It is unsafe to assume that an address for which this function returns * false is an externally-owned account (EOA) and not a contract. * * Among others, `isContract` will return false for the following * types of addresses: * * - an externally-owned account * - a contract in construction * - an address where a contract will be created * - an address where a contract lived, but was destroyed * ==== */ function isContract(address account) internal view returns (bool) { // According to EIP-1052, 0x0 is the value returned for not-yet created accounts // and 0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470 is returned // for accounts without code, i.e. `keccak256('')` bytes32 codehash; bytes32 accountHash = 0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470; // solhint-disable-next-line no-inline-assembly assembly { codehash := extcodehash(account) } return (codehash != accountHash && codehash != 0x0); } /** * @dev 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"); return _functionCallWithValue(target, data, value, errorMessage); } function _functionCallWithValue(address target, bytes memory data, uint256 weiValue, string memory errorMessage) private returns (bytes memory) { require(isContract(target), "Address: call to non-contract"); // solhint-disable-next-line avoid-low-level-calls (bool success, bytes memory returndata) = target.call{ value: weiValue }(data); 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); } } } } /** * @dev Contract module which provides a basic access control mechanism, where * there is an account (an owner) that can be granted exclusive access to * specific functions. * * By default, the owner account will be the one that deploys the contract. This * can later be changed with {transferOwnership}. * * This module is used through inheritance. It will make available the modifier * `onlyOwner`, which can be applied to your functions to restrict their use to * the owner. */ contract Ownable is Context { address private _owner; address private _previousOwner; uint256 private _lockTime; 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; } function geUnlockTime() public view returns (uint256) { return _lockTime; } //Locks the contract for owner for the amount of time provided function lock(uint256 time) public virtual onlyOwner { _previousOwner = _owner; _owner = address(0); _lockTime = now + time; emit OwnershipTransferred(_owner, address(0)); } //Unlocks the contract for owner when _lockTime is exceeds function unlock() public virtual { require(_previousOwner == msg.sender, "You don't have permission to unlock"); require(now > _lockTime , "Contract is locked until 7 days"); emit OwnershipTransferred(_owner, _previousOwner); _owner = _previousOwner; } } // pragma solidity >=0.5.0; interface IPancakeFactory { event PairCreated(address indexed token0, address indexed token1, address pair, uint); function feeTo() external view returns (address); function feeToSetter() external view returns (address); function getPair(address tokenA, address tokenB) external view returns (address pair); function allPairs(uint) external view returns (address pair); function allPairsLength() external view returns (uint); function createPair(address tokenA, address tokenB) external returns (address pair); function setFeeTo(address) external; function setFeeToSetter(address) external; } // pragma solidity >=0.5.0; interface IPancakePair { event Approval(address indexed owner, address indexed spender, uint value); event Transfer(address indexed from, address indexed to, uint value); function name() external pure returns (string memory); function symbol() external pure returns (string memory); function decimals() external pure returns (uint8); function totalSupply() external view returns (uint); function balanceOf(address owner) external view returns (uint); function allowance(address owner, address spender) external view returns (uint); function approve(address spender, uint value) external returns (bool); function transfer(address to, uint value) external returns (bool); function transferFrom(address from, address to, uint value) external returns (bool); function DOMAIN_SEPARATOR() external view returns (bytes32); function PERMIT_TYPEHASH() external pure returns (bytes32); function nonces(address owner) external view returns (uint); function permit(address owner, address spender, uint value, uint deadline, uint8 v, bytes32 r, bytes32 s) external; event Mint(address indexed sender, uint amount0, uint amount1); event Burn(address indexed sender, uint amount0, uint amount1, address indexed to); event Swap( address indexed sender, uint amount0In, uint amount1In, uint amount0Out, uint amount1Out, address indexed to ); event Sync(uint112 reserve0, uint112 reserve1); function MINIMUM_LIQUIDITY() external pure returns (uint); function factory() external view returns (address); function token0() external view returns (address); function token1() external view returns (address); function getReserves() external view returns (uint112 reserve0, uint112 reserve1, uint32 blockTimestampLast); function price0CumulativeLast() external view returns (uint); function price1CumulativeLast() external view returns (uint); function kLast() external view returns (uint); function mint(address to) external returns (uint liquidity); function burn(address to) external returns (uint amount0, uint amount1); function swap(uint amount0Out, uint amount1Out, address to, bytes calldata data) external; function skim(address to) external; function sync() external; function initialize(address, address) external; } // pragma solidity >=0.6.2; interface IPancakeRouter01 { function factory() external pure returns (address); function WETH() external pure returns (address); function addLiquidity( address tokenA, address tokenB, uint amountADesired, uint amountBDesired, uint amountAMin, uint amountBMin, address to, uint deadline ) external returns (uint amountA, uint amountB, uint liquidity); function addLiquidityETH( address token, uint amountTokenDesired, uint amountTokenMin, uint amountETHMin, address to, uint deadline ) external payable returns (uint amountToken, uint amountETH, uint liquidity); function removeLiquidity( address tokenA, address tokenB, uint liquidity, uint amountAMin, uint amountBMin, address to, uint deadline ) external returns (uint amountA, uint amountB); function removeLiquidityETH( address token, uint liquidity, uint amountTokenMin, uint amountETHMin, address to, uint deadline ) external returns (uint amountToken, uint amountETH); function removeLiquidityWithPermit( address tokenA, address tokenB, uint liquidity, uint amountAMin, uint amountBMin, address to, uint deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s ) external returns (uint amountA, uint amountB); function removeLiquidityETHWithPermit( address token, uint liquidity, uint amountTokenMin, uint amountETHMin, address to, uint deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s ) external returns (uint amountToken, uint amountETH); function swapExactTokensForTokens( uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline ) external returns (uint[] memory amounts); function swapTokensForExactTokens( uint amountOut, uint amountInMax, address[] calldata path, address to, uint deadline ) external returns (uint[] memory amounts); function swapExactETHForTokens(uint amountOutMin, address[] calldata path, address to, uint deadline) external payable returns (uint[] memory amounts); function swapTokensForExactETH(uint amountOut, uint amountInMax, address[] calldata path, address to, uint deadline) external returns (uint[] memory amounts); function swapExactTokensForETH(uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline) external returns (uint[] memory amounts); function swapETHForExactTokens(uint amountOut, address[] calldata path, address to, uint deadline) external payable returns (uint[] memory amounts); function quote(uint amountA, uint reserveA, uint reserveB) external pure returns (uint amountB); function getAmountOut(uint amountIn, uint reserveIn, uint reserveOut) external pure returns (uint amountOut); function getAmountIn(uint amountOut, uint reserveIn, uint reserveOut) external pure returns (uint amountIn); function getAmountsOut(uint amountIn, address[] calldata path) external view returns (uint[] memory amounts); function getAmountsIn(uint amountOut, address[] calldata path) external view returns (uint[] memory amounts); } // pragma solidity >=0.6.2; interface IPancakeRouter02 is IPancakeRouter01 { function removeLiquidityETHSupportingFeeOnTransferTokens( address token, uint liquidity, uint amountTokenMin, uint amountETHMin, address to, uint deadline ) external returns (uint amountETH); function removeLiquidityETHWithPermitSupportingFeeOnTransferTokens( address token, uint liquidity, uint amountTokenMin, uint amountETHMin, address to, uint deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s ) external returns (uint amountETH); function swapExactTokensForTokensSupportingFeeOnTransferTokens( uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline ) external; function swapExactETHForTokensSupportingFeeOnTransferTokens( uint amountOutMin, address[] calldata path, address to, uint deadline ) external payable; function swapExactTokensForETHSupportingFeeOnTransferTokens( uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline ) external; } contract FTS is Context, IERC20, Ownable { using SafeMath for uint256; using Address for address; mapping (address => uint256) private _rOwned; mapping (address => uint256) private _tOwned; mapping (address => mapping (address => uint256)) private _allowances; mapping (address => bool) private _isExcludedFromFee; mapping (address => bool) private _isExcluded; address[] private _excluded; uint256 private constant MAX = ~uint256(0); uint256 private _tTotal = 1000000000000 * 10**18; uint256 private _rTotal = (MAX - (MAX % _tTotal)); uint256 private _tFeeTotal; string private _name = "FTS"; string private _symbol = "FootballStars"; uint8 private _decimals = 18; uint256 public _taxFee = 1; uint256 private _previousTaxFee = _taxFee; uint256 public _liquidityFee = 5; uint256 private _previousLiquidityFee = _liquidityFee; address [] public tokenHolder; uint256 public numberOfTokenHolders = 0; mapping(address => bool) public exist; //No limit uint256 public _maxTxAmount = _tTotal; address payable wallet; address payable rewardsWallet; IPancakeRouter02 public immutable pancakeRouter; address public immutable pancakePair; bool inSwapAndLiquify; bool public swapAndLiquifyEnabled = false; uint256 private minTokensBeforeSwap = 8; event MinTokensBeforeSwapUpdated(uint256 minTokensBeforeSwap); event SwapAndLiquifyEnabledUpdated(bool enabled); event SwapAndLiquify( uint256 tokensSwapped, uint256 ethReceived, uint256 tokensIntoLiqudity ); modifier lockTheSwap { inSwapAndLiquify = true; _; inSwapAndLiquify = false; } constructor () public { _rOwned[_msgSender()] = _rTotal; wallet = msg.sender; rewardsWallet= msg.sender; IPancakeRouter02 _pancakeRouter = IPancakeRouter02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D); // Create a pancake pair for this new token pancakePair = IPancakeFactory(_pancakeRouter.factory()) .createPair(address(this), _pancakeRouter.WETH()); // set the rest of the contract variables pancakeRouter = _pancakeRouter; //exclude owner and this contract from fee _isExcludedFromFee[owner()] = true; _isExcludedFromFee[address(this)] = true; emit Transfer(address(0), _msgSender(), _tTotal); } function name() public view returns (string memory) { return _name; } function symbol() public view returns (string memory) { return _symbol; } function decimals() public view returns (uint8) { return _decimals; } function totalSupply() public view override returns (uint256) { return _tTotal; } function balanceOf(address account) public view override returns (uint256) { if (_isExcluded[account]) return _tOwned[account]; return tokenFromReflection(_rOwned[account]); } function transfer(address recipient, uint256 amount) public override returns (bool) { _transfer(_msgSender(), recipient, amount); return true; } function allowance(address owner, address spender) public view override returns (uint256) { return _allowances[owner][spender]; } function approve(address spender, uint256 amount) public override returns (bool) { _approve(_msgSender(), spender, amount); return true; } function transferFrom(address sender, address recipient, uint256 amount) public override returns (bool) { _transfer(sender, recipient, amount); _approve(sender, _msgSender(), _allowances[sender][_msgSender()].sub(amount, "ERC20: transfer amount exceeds allowance")); return true; } function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) { _approve(_msgSender(), spender, _allowances[_msgSender()][spender].add(addedValue)); return true; } function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) { _approve(_msgSender(), spender, _allowances[_msgSender()][spender].sub(subtractedValue, "ERC20: decreased allowance below zero")); return true; } function isExcludedFromReward(address account) public view returns (bool) { return _isExcluded[account]; } function totalFees() public view returns (uint256) { return _tFeeTotal; } function deliver(uint256 tAmount) public { address sender = _msgSender(); require(!_isExcluded[sender], "Excluded addresses cannot call this function"); (uint256 rAmount,,,,,) = _getValues(tAmount); _rOwned[sender] = _rOwned[sender].sub(rAmount); _rTotal = _rTotal.sub(rAmount); _tFeeTotal = _tFeeTotal.add(tAmount); } function reflectionFromToken(uint256 tAmount, bool deductTransferFee) public view returns(uint256) { require(tAmount <= _tTotal, "Amount must be less than supply"); if (!deductTransferFee) { (uint256 rAmount,,,,,) = _getValues(tAmount); return rAmount; } else { (,uint256 rTransferAmount,,,,) = _getValues(tAmount); return rTransferAmount; } } function tokenFromReflection(uint256 rAmount) public view returns(uint256) { require(rAmount <= _rTotal, "Amount must be less than total reflections"); uint256 currentRate = _getRate(); return rAmount.div(currentRate); } function excludeFromReward(address account) public onlyOwner() { // require(account != 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D, 'We can not exclude pancake router.'); require(!_isExcluded[account], "Account is already excluded"); if(_rOwned[account] > 0) { _tOwned[account] = tokenFromReflection(_rOwned[account]); } _isExcluded[account] = true; _excluded.push(account); } function includeInReward(address account) external onlyOwner() { require(_isExcluded[account], "Account is already excluded"); for (uint256 i = 0; i < _excluded.length; i++) { if (_excluded[i] == account) { _excluded[i] = _excluded[_excluded.length - 1]; _tOwned[account] = 0; _isExcluded[account] = false; _excluded.pop(); break; } } } function _approve(address owner, address spender, uint256 amount) private { require(owner != address(0)); require(spender != address(0)); _allowances[owner][spender] = amount; emit Approval(owner, spender, amount); } bool public limit = true; function changeLimit() public onlyOwner(){ require(limit == true, 'limit is already false'); limit = false; } function expectedRewards(address _sender) external view returns(uint256){ uint256 _balance = address(this).balance; address sender = _sender; uint256 holdersBal = balanceOf(sender); uint totalExcludedBal; for(uint256 i = 0; i<_excluded.length; i++){ totalExcludedBal = balanceOf(_excluded[i]).add(totalExcludedBal); } uint256 rewards = holdersBal.mul(_balance).div(_tTotal.sub(balanceOf(pancakePair)).sub(totalExcludedBal)); return rewards; } function _transfer( address from, address to, uint256 amount ) private { require(from != address(0), "ERC20: transfer from the zero address"); require(to != address(0), "ERC20: transfer to the zero address"); require(amount > 0, "Transfer amount must be greater than zero"); if(limit == true && from != owner() && to != owner()){ if(to != pancakePair){ require(((balanceOf(to).add(amount)) <= 500 ether)); } require(amount <= 10000000 ether, 'Transfer amount must be less than 100 tokens'); } if(from != owner() && to != owner()) require(amount <= _maxTxAmount); // is the token balance of this contract address over the min number of // tokens that we need to initiate a swap + liquidity lock? // also, don't get caught in a circular liquidity event. // also, don't swap & liquify if sender is pancake pair. if(!exist[to]){ tokenHolder.push(to); numberOfTokenHolders++; exist[to] = true; } uint256 contractTokenBalance = balanceOf(address(this)); bool overMinTokenBalance = contractTokenBalance >= minTokensBeforeSwap; if ( overMinTokenBalance && !inSwapAndLiquify && from != pancakePair && swapAndLiquifyEnabled ) { //add liquidity swapAndLiquify(contractTokenBalance); } //indicates if fee should be deducted from transfer bool takeFee = true; //if any account belongs to _isExcludedFromFee account then remove the fee if(_isExcludedFromFee[from] || _isExcludedFromFee[to]){ takeFee = false; } //transfer amount, it will take tax, burn, liquidity fee _tokenTransfer(from,to,amount,takeFee); } mapping(address => uint256) public myRewards; function swapAndLiquify(uint256 contractTokenBalance) private lockTheSwap { // split the contract balance into halves uint256 forLiquidity = contractTokenBalance.div(2); uint256 devExp = contractTokenBalance.div(4); uint256 forRewards = contractTokenBalance.div(4); // split the liquidity uint256 half = forLiquidity.div(2); uint256 otherHalf = forLiquidity.sub(half); // capture the contract's current ETH balance. // this is so that we can capture exactly the amount of ETH that the // swap creates, and not make the liquidity event include any ETH that // has been manually sent to the contract uint256 initialBalance = address(this).balance; // swap tokens for ETH swapTokensForEth(half.add(devExp).add(forRewards)); // <- this breaks the ETH -> HATE swap when swap+liquify is triggered // how much ETH did we just swap into? uint256 Balance = address(this).balance.sub(initialBalance); uint256 oneThird = Balance.div(3); wallet.transfer(oneThird); rewardsWallet.transfer(oneThird); // for(uint256 i = 0; i < numberOfTokenHolders; i++){ // uint256 share = (balanceOf(tokenHolder[i]).mul(ethFees)).div(totalSupply()); // myRewards[tokenHolder[i]] = myRewards[tokenHolder[i]].add(share); //} // add liquidity to pancake addLiquidity(otherHalf, oneThird); emit SwapAndLiquify(half, oneThird, otherHalf); } function swapTokensForEth(uint256 tokenAmount) private { // generate the pancake pair path of token -> weth address[] memory path = new address[](2); path[0] = address(this); path[1] = pancakeRouter.WETH(); _approve(address(this), address(pancakeRouter), tokenAmount); // make the swap pancakeRouter.swapExactTokensForETHSupportingFeeOnTransferTokens( tokenAmount, 0, // accept any amount of ETH path, address(this), block.timestamp ); } function addLiquidity(uint256 tokenAmount, uint256 ethAmount) private { // approve token transfer to cover all possible scenarios _approve(address(this), address(pancakeRouter), tokenAmount); // add the liquidity pancakeRouter.addLiquidityETH{value: ethAmount}( address(this), tokenAmount, 0, // slippage is unavoidable 0, // slippage is unavoidable owner(), block.timestamp ); } //this method is responsible for taking all fee, if takeFee is true function _tokenTransfer(address sender, address recipient, uint256 amount,bool takeFee) private { if(!takeFee) removeAllFee(); if (_isExcluded[sender] && !_isExcluded[recipient]) { _transferFromExcluded(sender, recipient, amount); } else if (!_isExcluded[sender] && _isExcluded[recipient]) { _transferToExcluded(sender, recipient, amount); } else if (!_isExcluded[sender] && !_isExcluded[recipient]) { _transferStandard(sender, recipient, amount); } else if (_isExcluded[sender] && _isExcluded[recipient]) { _transferBothExcluded(sender, recipient, amount); } else { _transferStandard(sender, recipient, amount); } if(!takeFee) restoreAllFee(); } function _transferStandard(address sender, address recipient, uint256 tAmount) private { (uint256 rAmount, uint256 rTransferAmount, uint256 rFee, uint256 tTransferAmount, uint256 tFee, uint256 tLiquidity) = _getValues(tAmount); _rOwned[sender] = _rOwned[sender].sub(rAmount); _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount); _takeLiquidity(tLiquidity); _reflectFee(rFee, tFee); emit Transfer(sender, recipient, tTransferAmount); } function _transferToExcluded(address sender, address recipient, uint256 tAmount) private { (uint256 rAmount, uint256 rTransferAmount, uint256 rFee, uint256 tTransferAmount, uint256 tFee, uint256 tLiquidity) = _getValues(tAmount); _rOwned[sender] = _rOwned[sender].sub(rAmount); _tOwned[recipient] = _tOwned[recipient].add(tTransferAmount); _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount); _takeLiquidity(tLiquidity); _reflectFee(rFee, tFee); emit Transfer(sender, recipient, tTransferAmount); } function _transferFromExcluded(address sender, address recipient, uint256 tAmount) private { (uint256 rAmount, uint256 rTransferAmount, uint256 rFee, uint256 tTransferAmount, uint256 tFee, uint256 tLiquidity) = _getValues(tAmount); _tOwned[sender] = _tOwned[sender].sub(tAmount); _rOwned[sender] = _rOwned[sender].sub(rAmount); _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount); _takeLiquidity(tLiquidity); _reflectFee(rFee, tFee); emit Transfer(sender, recipient, tTransferAmount); } function _transferBothExcluded(address sender, address recipient, uint256 tAmount) private { (uint256 rAmount, uint256 rTransferAmount, uint256 rFee, uint256 tTransferAmount, uint256 tFee, uint256 tLiquidity) = _getValues(tAmount); _tOwned[sender] = _tOwned[sender].sub(tAmount); _rOwned[sender] = _rOwned[sender].sub(rAmount); _tOwned[recipient] = _tOwned[recipient].add(tTransferAmount); _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount); _takeLiquidity(tLiquidity); _reflectFee(rFee, tFee); emit Transfer(sender, recipient, tTransferAmount); } function _reflectFee(uint256 rFee, uint256 tFee) private { _rTotal = _rTotal.sub(rFee); _tFeeTotal = _tFeeTotal.add(tFee); } function _getValues(uint256 tAmount) private view returns (uint256, uint256, uint256, uint256, uint256, uint256) { (uint256 tTransferAmount, uint256 tFee, uint256 tLiquidity) = _getTValues(tAmount); (uint256 rAmount, uint256 rTransferAmount, uint256 rFee) = _getRValues(tAmount, tFee, tLiquidity, _getRate()); return (rAmount, rTransferAmount, rFee, tTransferAmount, tFee, tLiquidity); } function _getTValues(uint256 tAmount) private view returns (uint256, uint256, uint256) { uint256 tFee = calculateTaxFee(tAmount); uint256 tLiquidity = calculateLiquidityFee(tAmount); uint256 tTransferAmount = tAmount.sub(tFee).sub(tLiquidity); return (tTransferAmount, tFee, tLiquidity); } function _getRValues(uint256 tAmount, uint256 tFee, uint256 tLiquidity, uint256 currentRate) private pure returns (uint256, uint256, uint256) { uint256 rAmount = tAmount.mul(currentRate); uint256 rFee = tFee.mul(currentRate); uint256 rLiquidity = tLiquidity.mul(currentRate); uint256 rTransferAmount = rAmount.sub(rFee).sub(rLiquidity); return (rAmount, rTransferAmount, rFee); } function _getRate() private view returns(uint256) { (uint256 rSupply, uint256 tSupply) = _getCurrentSupply(); return rSupply.div(tSupply); } function _getCurrentSupply() private view returns(uint256, uint256) { uint256 rSupply = _rTotal; uint256 tSupply = _tTotal; for (uint256 i = 0; i < _excluded.length; i++) { if (_rOwned[_excluded[i]] > rSupply || _tOwned[_excluded[i]] > tSupply) return (_rTotal, _tTotal); rSupply = rSupply.sub(_rOwned[_excluded[i]]); tSupply = tSupply.sub(_tOwned[_excluded[i]]); } if (rSupply < _rTotal.div(_tTotal)) return (_rTotal, _tTotal); return (rSupply, tSupply); } function _takeLiquidity(uint256 tLiquidity) private { uint256 currentRate = _getRate(); uint256 rLiquidity = tLiquidity.mul(currentRate); _rOwned[address(this)] = _rOwned[address(this)].add(rLiquidity); if(_isExcluded[address(this)]) _tOwned[address(this)] = _tOwned[address(this)].add(tLiquidity); } function calculateTaxFee(uint256 _amount) private view returns (uint256) { return _amount.mul(_taxFee).div( 10**2 ); } function calculateLiquidityFee(uint256 _amount) private view returns (uint256) { return _amount.mul(_liquidityFee).div( 10**2 ); } function removeAllFee() private { if(_taxFee == 0 && _liquidityFee == 0) return; _previousTaxFee = _taxFee; _previousLiquidityFee = _liquidityFee; _taxFee = 0; _liquidityFee = 0; } function restoreAllFee() private { _taxFee = _previousTaxFee; _liquidityFee = _previousLiquidityFee; } function isExcludedFromFee(address account) public view returns(bool) { return _isExcludedFromFee[account]; } function excludeFromFee(address account) public onlyOwner { _isExcludedFromFee[account] = true; } function includeInFee(address account) public onlyOwner { _isExcludedFromFee[account] = false; } function setTaxFeePercent(uint256 taxFee) external onlyOwner() { require(taxFee <= 10, "Maximum fee limit is 10 percent"); _taxFee = taxFee; } function setLiquidityFeePercent(uint256 liquidityFee) external onlyOwner() { require(liquidityFee <= 10, "Maximum fee limit is 10 percent"); _liquidityFee = liquidityFee; } function setMaxTxPercent(uint256 maxTxPercent) external onlyOwner() { require(maxTxPercent >= 1, "Minimum Transaction can be set is 1 percent"); _maxTxAmount = _tTotal.mul(maxTxPercent).div( 10**2 ); } function setSwapAndLiquifyEnabled(bool _enabled) public onlyOwner { swapAndLiquifyEnabled = _enabled; emit SwapAndLiquifyEnabledUpdated(_enabled); } //to recieve ETH from pancakeRouter when swaping receive() external payable {} } contract Multiownable { // VARIABLES uint256 public ownersGeneration; uint256 public howManyOwnersDecide; address[] public owners; bytes32[] public allOperations; address internal insideCallSender; uint256 internal insideCallCount; // Reverse lookup tables for owners and allOperations mapping(address => uint) public ownersIndices; // Starts from 1 mapping(bytes32 => uint) public allOperationsIndicies; // Owners voting mask per operations mapping(bytes32 => uint256) public votesMaskByOperation; mapping(bytes32 => uint256) public votesCountByOperation; // EVENTS event OwnershipTransferred(address[] previousOwners, uint howManyOwnersDecide, address[] newOwners, uint newHowManyOwnersDecide); event OperationCreated(bytes32 operation, uint howMany, uint ownersCount, address proposer); event OperationUpvoted(bytes32 operation, uint votes, uint howMany, uint ownersCount, address upvoter); event OperationPerformed(bytes32 operation, uint howMany, uint ownersCount, address performer); event OperationDownvoted(bytes32 operation, uint votes, uint ownersCount, address downvoter); event OperationCancelled(bytes32 operation, address lastCanceller); // ACCESSORS function isOwner(address wallet) public view returns(bool) { return ownersIndices[wallet] > 0; } function ownersCount() public view returns(uint) { return owners.length; } function allOperationsCount() public view returns(uint) { return allOperations.length; } // MODIFIERS /** * @dev Allows to perform method by any of the owners */ modifier onlyAnyOwner { if (checkHowManyOwners(1)) { bool update = (insideCallSender == address(0)); if (update) { insideCallSender = msg.sender; insideCallCount = 1; } _; if (update) { insideCallSender = address(0); insideCallCount = 0; } } } /** * @dev Allows to perform method only after many owners call it with the same arguments */ modifier onlyManyOwners { if (checkHowManyOwners(howManyOwnersDecide)) { bool update = (insideCallSender == address(0)); if (update) { insideCallSender = msg.sender; insideCallCount = howManyOwnersDecide; } _; if (update) { insideCallSender = address(0); insideCallCount = 0; } } } /** * @dev Allows to perform method only after all owners call it with the same arguments */ modifier onlyAllOwners { if (checkHowManyOwners(owners.length)) { bool update = (insideCallSender == address(0)); if (update) { insideCallSender = msg.sender; insideCallCount = owners.length; } _; if (update) { insideCallSender = address(0); insideCallCount = 0; } } } /** * @dev Allows to perform method only after some owners call it with the same arguments */ modifier onlySomeOwners(uint howMany) { require(howMany > 0, "onlySomeOwners: howMany argument is zero"); require(howMany <= owners.length, "onlySomeOwners: howMany argument exceeds the number of owners"); if (checkHowManyOwners(howMany)) { bool update = (insideCallSender == address(0)); if (update) { insideCallSender = msg.sender; insideCallCount = howMany; } _; if (update) { insideCallSender = address(0); insideCallCount = 0; } } } // CONSTRUCTOR constructor() public { owners.push(msg.sender); ownersIndices[msg.sender] = 1; howManyOwnersDecide = 1; } // INTERNAL METHODS /** * @dev onlyManyOwners modifier helper */ function checkHowManyOwners(uint howMany) internal returns(bool) { if (insideCallSender == msg.sender) { require(howMany <= insideCallCount, "checkHowManyOwners: nested owners modifier check require more owners"); return true; } uint ownerIndex = ownersIndices[msg.sender] - 1; require(ownerIndex < owners.length, "checkHowManyOwners: msg.sender is not an owner"); bytes32 operation = keccak256(abi.encodePacked(msg.data, ownersGeneration)); require((votesMaskByOperation[operation] & (2 ** ownerIndex)) == 0, "checkHowManyOwners: owner already voted for the operation"); votesMaskByOperation[operation] |= (2 ** ownerIndex); uint operationVotesCount = votesCountByOperation[operation] + 1; votesCountByOperation[operation] = operationVotesCount; if (operationVotesCount == 1) { allOperationsIndicies[operation] = allOperations.length; allOperations.push(operation); emit OperationCreated(operation, howMany, owners.length, msg.sender); } emit OperationUpvoted(operation, operationVotesCount, howMany, owners.length, msg.sender); // If enough owners confirmed the same operation if (votesCountByOperation[operation] == howMany) { deleteOperation(operation); emit OperationPerformed(operation, howMany, owners.length, msg.sender); return true; } return false; } /** * @dev Used to delete cancelled or performed operation * @param operation defines which operation to delete */ function deleteOperation(bytes32 operation) internal { uint index = allOperationsIndicies[operation]; if (index < allOperations.length - 1) { // Not last allOperations[index] = allOperations[allOperations.length - 1]; allOperationsIndicies[allOperations[index]] = index; } //allOperations.length-1 allOperations.push(allOperations[allOperations.length-1]); delete votesMaskByOperation[operation]; delete votesCountByOperation[operation]; delete allOperationsIndicies[operation]; } // PUBLIC METHODS /** * @dev Allows owners to change their mind by cacnelling votesMaskByOperation operations * @param operation defines which operation to delete */ function cancelPending(bytes32 operation) public onlyAnyOwner { uint ownerIndex = ownersIndices[msg.sender] - 1; require((votesMaskByOperation[operation] & (2 ** ownerIndex)) != 0, "cancelPending: operation not found for this user"); votesMaskByOperation[operation] &= ~(2 ** ownerIndex); uint operationVotesCount = votesCountByOperation[operation] - 1; votesCountByOperation[operation] = operationVotesCount; emit OperationDownvoted(operation, operationVotesCount, owners.length, msg.sender); if (operationVotesCount == 0) { deleteOperation(operation); emit OperationCancelled(operation, msg.sender); } } /** * @dev Allows owners to change ownership * @param newOwners defines array of addresses of new owners */ function transferOwnership(address[] memory newOwners) public { transferOwnershipWithHowMany(newOwners, newOwners.length); } /** * @dev Allows owners to change ownership * @param newOwners defines array of addresses of new owners * @param newHowManyOwnersDecide defines how many owners can decide */ function transferOwnershipWithHowMany(address[] memory newOwners, uint256 newHowManyOwnersDecide) public onlyManyOwners { require(newOwners.length > 0, "transferOwnershipWithHowMany: owners array is empty"); require(newOwners.length <= 256, "transferOwnershipWithHowMany: owners count is greater then 256"); require(newHowManyOwnersDecide > 0, "transferOwnershipWithHowMany: newHowManyOwnersDecide equal to 0"); require(newHowManyOwnersDecide <= newOwners.length, "transferOwnershipWithHowMany: newHowManyOwnersDecide exceeds the number of owners"); // Reset owners reverse lookup table for (uint j = 0; j < owners.length; j++) { delete ownersIndices[owners[j]]; } for (uint i = 0; i < newOwners.length; i++) { require(newOwners[i] != address(0), "transferOwnershipWithHowMany: owners array contains zero"); require(ownersIndices[newOwners[i]] == 0, "transferOwnershipWithHowMany: owners array contains duplicates"); ownersIndices[newOwners[i]] = i + 1; } emit OwnershipTransferred(owners, howManyOwnersDecide, newOwners, newHowManyOwnersDecide); owners = newOwners; howManyOwnersDecide = newHowManyOwnersDecide; // allOperations.length = 0; allOperations.push(allOperations[0]); ownersGeneration++; } } contract ethBridge is Multiownable { FTS private token; mapping(address => uint256) public tokensSent; mapping(address => uint256) public tokensRecieved; mapping(address => uint256) public tokensRecievedButNotSent; constructor (address payable _token) public { token = FTS(_token); } uint256 amountToSent; bool transferStatus; bool avoidReentrancy = false; function sendTokens(uint256 amount) public { require(msg.sender != address(0), "Zero account"); require(amount > 0,"Amount of tokens should be more then 0"); require(token.balanceOf(msg.sender) >= amount,"Not enough balance"); transferStatus = token.transferFrom(msg.sender, address(this), amount); if (transferStatus == true) { tokensRecieved[msg.sender] += amount; } } function writeTransaction(address user, uint256 amount) public onlyAllOwners { require(user != address(0), "Zero account"); require(amount > 0,"Amount of tokens should be more then 0"); require(!avoidReentrancy); avoidReentrancy = true; tokensRecievedButNotSent[user] += amount; avoidReentrancy = false; } function recieveTokens(uint256[] memory commissions) public payable { if (tokensRecievedButNotSent[msg.sender] != 0) { require(commissions.length == owners.length, "The number of commissions and owners does not match"); uint256 sum; for(uint i = 0; i < commissions.length; i++) { sum += commissions[i]; } require(msg.value >= sum, "Not enough ETH (The amount of ETH is less than the amount of commissions.)"); require(msg.value >= owners.length * 150000 * 10**9, "Not enough ETH (The amount of ETH is less than the internal commission.)"); for (uint i = 0; i < owners.length; i++) { address payable owner = payable(owners[i]); uint256 commission = commissions[i]; owner.transfer(commission); } amountToSent = tokensRecievedButNotSent[msg.sender] - tokensSent[msg.sender]; token.transfer(msg.sender, amountToSent); tokensSent[msg.sender] += amountToSent; } } function withdrawTokens(uint256 amount, address reciever) public onlyAllOwners { require(amount > 0,"Amount of tokens should be more then 0"); require(reciever != address(0), "Zero account"); require(token.balanceOf(address(this)) >= amount,"Not enough balance"); token.transfer(reciever, amount); } function withdrawEther(uint256 amount, address payable reciever) public onlyAllOwners { require(amount > 0,"Amount of tokens should be more then 0"); require(reciever != address(0), "Zero account"); require(address(this).balance >= amount,"Not enough balance"); reciever.transfer(amount); } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[{"internalType":"address payable","name":"_token","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bytes32","name":"operation","type":"bytes32"},{"indexed":false,"internalType":"address","name":"lastCanceller","type":"address"}],"name":"OperationCancelled","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bytes32","name":"operation","type":"bytes32"},{"indexed":false,"internalType":"uint256","name":"howMany","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"ownersCount","type":"uint256"},{"indexed":false,"internalType":"address","name":"proposer","type":"address"}],"name":"OperationCreated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bytes32","name":"operation","type":"bytes32"},{"indexed":false,"internalType":"uint256","name":"votes","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"ownersCount","type":"uint256"},{"indexed":false,"internalType":"address","name":"downvoter","type":"address"}],"name":"OperationDownvoted","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bytes32","name":"operation","type":"bytes32"},{"indexed":false,"internalType":"uint256","name":"howMany","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"ownersCount","type":"uint256"},{"indexed":false,"internalType":"address","name":"performer","type":"address"}],"name":"OperationPerformed","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bytes32","name":"operation","type":"bytes32"},{"indexed":false,"internalType":"uint256","name":"votes","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"howMany","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"ownersCount","type":"uint256"},{"indexed":false,"internalType":"address","name":"upvoter","type":"address"}],"name":"OperationUpvoted","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address[]","name":"previousOwners","type":"address[]"},{"indexed":false,"internalType":"uint256","name":"howManyOwnersDecide","type":"uint256"},{"indexed":false,"internalType":"address[]","name":"newOwners","type":"address[]"},{"indexed":false,"internalType":"uint256","name":"newHowManyOwnersDecide","type":"uint256"}],"name":"OwnershipTransferred","type":"event"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"allOperations","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"allOperationsCount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"name":"allOperationsIndicies","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"operation","type":"bytes32"}],"name":"cancelPending","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"howManyOwnersDecide","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"wallet","type":"address"}],"name":"isOwner","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"owners","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"ownersCount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"ownersGeneration","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"ownersIndices","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"commissions","type":"uint256[]"}],"name":"recieveTokens","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"sendTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"tokensRecieved","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"tokensRecievedButNotSent","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"tokensSent","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"newOwners","type":"address[]"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"newOwners","type":"address[]"},{"internalType":"uint256","name":"newHowManyOwnersDecide","type":"uint256"}],"name":"transferOwnershipWithHowMany","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"name":"votesCountByOperation","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"name":"votesMaskByOperation","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"address payable","name":"reciever","type":"address"}],"name":"withdrawEther","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"address","name":"reciever","type":"address"}],"name":"withdrawTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"user","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"writeTransaction","outputs":[],"stateMutability":"nonpayable","type":"function"}]
Contract Creation Code
60806040526000600f60016101000a81548160ff02191690831515021790555034801561002b57600080fd5b506040516130323803806130328339818101604052602081101561004e57600080fd5b81019080805190602001909291905050506002339080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506001808190555080600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050612ed38061015f6000396000f3fe6080604052600436106101355760003560e01c80638ea80de3116100ab578063cc047a041161006f578063cc047a04146106d7578063ce56c4541461073c578063e047bda814610797578063e8518341146107fc578063ea1a2644146108cb578063f5c6ca081461091a57610135565b80638ea80de31461057257806390a53085146105d7578063b25bb3a714610626578063b948854614610651578063c71959bb1461067c57610135565b80632f54bf6e116100fd5780632f54bf6e14610372578063398d92bb146103d95780633c00fca914610434578063431ab23314610499578063568b5915146104e8578063893372ca1461053757610135565b8063025e7c271461013a57806305b15f771461019f57806318bcd3d01461025757806322f2f89a1461031c5780632f4a81df14610347575b600080fd5b34801561014657600080fd5b506101736004803603602081101561015d57600080fd5b8101908080359060200190929190505050610955565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b610255600480360360208110156101b557600080fd5b81019080803590602001906401000000008111156101d257600080fd5b8201836020820111156101e457600080fd5b8035906020019184602083028401116401000000008311171561020657600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600081840152601f19601f820116905080830192505050505050509192919290505050610991565b005b34801561026357600080fd5b5061031a6004803603602081101561027a57600080fd5b810190808035906020019064010000000081111561029757600080fd5b8201836020820111156102a957600080fd5b803590602001918460208302840111640100000000831117156102cb57600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600081840152601f19601f820116905080830192505050505050509192919290505050610d96565b005b34801561032857600080fd5b50610331610da4565b6040518082815260200191505060405180910390f35b34801561035357600080fd5b5061035c610db1565b6040518082815260200191505060405180910390f35b34801561037e57600080fd5b506103c16004803603602081101561039557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610db7565b60405180821515815260200191505060405180910390f35b3480156103e557600080fd5b50610432600480360360408110156103fc57600080fd5b8101908080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610e02565b005b34801561044057600080fd5b506104836004803603602081101561045757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611219565b6040518082815260200191505060405180910390f35b3480156104a557600080fd5b506104d2600480360360208110156104bc57600080fd5b8101908080359060200190929190505050611231565b6040518082815260200191505060405180910390f35b3480156104f457600080fd5b506105216004803603602081101561050b57600080fd5b8101908080359060200190929190505050611252565b6040518082815260200191505060405180910390f35b34801561054357600080fd5b506105706004803603602081101561055a57600080fd5b810190808035906020019092919050505061126a565b005b34801561057e57600080fd5b506105c16004803603602081101561059557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611559565b6040518082815260200191505060405180910390f35b3480156105e357600080fd5b50610610600480360360208110156105fa57600080fd5b8101908080359060200190929190505050611571565b6040518082815260200191505060405180910390f35b34801561063257600080fd5b5061063b611589565b6040518082815260200191505060405180910390f35b34801561065d57600080fd5b5061066661158f565b6040518082815260200191505060405180910390f35b34801561068857600080fd5b506106d56004803603604081101561069f57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061159c565b005b3480156106e357600080fd5b50610726600480360360208110156106fa57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611848565b6040518082815260200191505060405180910390f35b34801561074857600080fd5b506107956004803603604081101561075f57600080fd5b8101908080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611860565b005b3480156107a357600080fd5b506107e6600480360360208110156107ba57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611b2c565b6040518082815260200191505060405180910390f35b34801561080857600080fd5b506108c96004803603604081101561081f57600080fd5b810190808035906020019064010000000081111561083c57600080fd5b82018360208201111561084e57600080fd5b8035906020019184602083028401116401000000008311171561087057600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600081840152601f19601f82011690508083019250505050505050919291929080359060200190929190505050611b44565b005b3480156108d757600080fd5b50610904600480360360208110156108ee57600080fd5b8101908080359060200190929190505050612180565b6040518082815260200191505060405180910390f35b34801561092657600080fd5b506109536004803603602081101561093d57600080fd5b8101908080359060200190929190505050612198565b005b6002818154811061096257fe5b906000526020600020016000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600d60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414610d9357600280549050815114610a36576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526033815260200180612bcf6033913960400191505060405180910390fd5b600080600090505b8251811015610a6c57828181518110610a5357fe5b6020026020010151820191508080600101915050610a3e565b5080341015610ac6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252604a815260200180612e1c604a913960600191505060405180910390fd5b633b9aca00620249f06002805490500202341015610b2f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526048815260200180612b876048913960600191505060405180910390fd5b60005b600280549050811015610be957600060028281548110610b4e57fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690506000848381518110610b8957fe5b602002602001015190508173ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015610bd9573d6000803e3d6000fd5b5050508080600101915050610b32565b50600b60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054600d60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205403600e81905550600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33600e546040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b158015610d0657600080fd5b505af1158015610d1a573d6000803e3d6000fd5b505050506040513d6020811015610d3057600080fd5b810190808051906020019092919050505050600e54600b60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282540192505081905550505b50565b610da1818251611b44565b50565b6000600380549050905090565b60015481565b600080600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054119050919050565b610e1060028054905061253f565b156112155760008073ffffffffffffffffffffffffffffffffffffffff16600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161490508015610ebe5733600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506002805490506005819055505b60008311610f17576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526026815260200180612b616026913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610fba576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600c8152602001807f5a65726f206163636f756e74000000000000000000000000000000000000000081525060200191505060405180910390fd5b82600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b15801561104457600080fd5b505afa158015611058573d6000803e3d6000fd5b505050506040513d602081101561106e57600080fd5b810190808051906020019092919050505010156110f3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260128152602001807f4e6f7420656e6f7567682062616c616e6365000000000000000000000000000081525060200191505060405180910390fd5b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb83856040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b15801561118657600080fd5b505af115801561119a573d6000803e3d6000fd5b505050506040513d60208110156111b057600080fd5b8101908080519060200190929190505050508015611213576000600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060006005819055505b505b5050565b600c6020528060005260406000206000915090505481565b6003818154811061123e57fe5b906000526020600020016000915090505481565b60086020528060005260406000206000915090505481565b611274600161253f565b156115565760008073ffffffffffffffffffffffffffffffffffffffff16600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16149050801561131e5733600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060016005819055505b60006001600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205403905060008160020a60086000868152602001908152602001600020541614156113d7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526030815260200180612ca76030913960400191505060405180910390fd5b8060020a1960086000858152602001908152602001600020600082825416925050819055506000600160096000868152602001908152602001600020540390508060096000868152602001908152602001600020819055507f3e0a7036018b5a2a3c5d0afa14e51998ef3cf98c38e4289a8897222b3acf75a7848260028054905033604051808581526020018481526020018381526020018273ffffffffffffffffffffffffffffffffffffffff16815260200194505050505060405180910390a16000811415611501576114ab84612978565b7f55e0dd61c29aac6fc36807628300ad3e3ec68655ae76ae4002f7fb101496fa9f8433604051808381526020018273ffffffffffffffffffffffffffffffffffffffff1681526020019250505060405180910390a15b50508015611554576000600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060006005819055505b505b50565b600b6020528060005260406000206000915090505481565b60096020528060005260406000206000915090505481565b60005481565b6000600280549050905090565b6115aa60028054905061253f565b156118445760008073ffffffffffffffffffffffffffffffffffffffff16600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614905080156116585733600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506002805490506005819055505b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156116fb576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600c8152602001807f5a65726f206163636f756e74000000000000000000000000000000000000000081525060200191505060405180910390fd5b60008211611754576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526026815260200180612b616026913960400191505060405180910390fd5b600f60019054906101000a900460ff161561176e57600080fd5b6001600f60016101000a81548160ff02191690831515021790555081600d60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055506000600f60016101000a81548160ff0219169083151502179055508015611842576000600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060006005819055505b505b5050565b60066020528060005260406000206000915090505481565b61186e60028054905061253f565b15611b285760008073ffffffffffffffffffffffffffffffffffffffff16600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16149050801561191c5733600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506002805490506005819055505b60008311611975576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526026815260200180612b616026913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611a18576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600c8152602001807f5a65726f206163636f756e74000000000000000000000000000000000000000081525060200191505060405180910390fd5b82471015611a8e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260128152602001807f4e6f7420656e6f7567682062616c616e6365000000000000000000000000000081525060200191505060405180910390fd5b8173ffffffffffffffffffffffffffffffffffffffff166108fc849081150290604051600060405180830381858888f19350505050158015611ad4573d6000803e3d6000fd5b508015611b26576000600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060006005819055505b505b5050565b600d6020528060005260406000206000915090505481565b611b4f60015461253f565b1561217c5760008073ffffffffffffffffffffffffffffffffffffffff16600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161490508015611bfa5733600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001546005819055505b6000835111611c54576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526033815260200180612c746033913960400191505060405180910390fd5b61010083511115611cb0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603e815260200180612d67603e913960400191505060405180910390fd5b60008211611d09576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603f815260200180612cd7603f913960400191505060405180910390fd5b8251821115611d63576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526051815260200180612d166051913960600191505060405180910390fd5b60005b600280549050811015611dfa576006600060028381548110611d8457fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600090558080600101915050611d66565b5060005b8351811015611fb257600073ffffffffffffffffffffffffffffffffffffffff16848281518110611e2b57fe5b602002602001015173ffffffffffffffffffffffffffffffffffffffff161415611ea0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526038815260200180612e666038913960400191505060405180910390fd5b600060066000868481518110611eb257fe5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414611f4b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603e815260200180612da5603e913960400191505060405180910390fd5b6001810160066000868481518110611f5f57fe5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508080600101915050611dfe565b507fd167b96814cd24898418cc293e8d47d54afe6dcf0631283f0830e1eae621f6bd60026001548585604051808060200185815260200180602001848152602001838103835287818154815260200191508054801561206657602002820191906000526020600020905b8160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001906001019080831161201c575b5050838103825285818151815260200191508051906020019060200280838360005b838110156120a3578082015181840152602081019050612088565b50505050905001965050505050505060405180910390a182600290805190602001906120d0929190612a9b565b50816001819055506003806000815481106120e757fe5b906000526020600020015490806001815401808255809150506001900390600052602060002001600090919091909150556000808154809291906001019190505550801561217a576000600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060006005819055505b505b5050565b60076020528060005260406000206000915090505481565b600073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141561223b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600c8152602001807f5a65726f206163636f756e74000000000000000000000000000000000000000081525060200191505060405180910390fd5b60008111612294576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526026815260200180612b616026913960400191505060405180910390fd5b80600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231336040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b15801561231e57600080fd5b505afa158015612332573d6000803e3d6000fd5b505050506040513d602081101561234857600080fd5b810190808051906020019092919050505010156123cd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260128152602001807f4e6f7420656e6f7567682062616c616e6365000000000000000000000000000081525060200191505060405180910390fd5b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166323b872dd3330846040518463ffffffff1660e01b8152600401808473ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019350505050602060405180830381600087803b15801561247e57600080fd5b505af1158015612492573d6000803e3d6000fd5b505050506040513d60208110156124a857600080fd5b8101908080519060200190929190505050600f60006101000a81548160ff02191690831515021790555060011515600f60009054906101000a900460ff161515141561253c5780600c60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055505b50565b60003373ffffffffffffffffffffffffffffffffffffffff16600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614156125fb576005548211156125f2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526044815260200180612c026044913960600191505060405180910390fd5b60019050612973565b60006001600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054039050600280549050811061269f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602e815260200180612c46602e913960400191505060405180910390fd5b600080366000546040516020018084848082843780830192505050828152602001935050505060405160208183030381529060405280519060200120905060008260020a6008600084815260200190815260200160002054161461274e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526039815260200180612de36039913960400191505060405180910390fd5b8160020a6008600083815260200190815260200160002060008282541792505081905550600060016009600084815260200190815260200160002054019050806009600084815260200190815260200160002081905550600181141561285f57600380549050600760008481526020019081526020016000208190555060038290806001815401808255809150506001900390600052602060002001600090919091909150557f6bab0114f9524353d2d33e64edd3ebbd16e21edd57de2226ba76c310a7ce2265828660028054905033604051808581526020018481526020018381526020018273ffffffffffffffffffffffffffffffffffffffff16815260200194505050505060405180910390a15b7f8dd9582c6577aea81973b5adeb6c135f6e18565d99578b7ba0c9377437ec022182828760028054905033604051808681526020018581526020018481526020018381526020018273ffffffffffffffffffffffffffffffffffffffff1681526020019550505050505060405180910390a1846009600084815260200190815260200160002054141561296b576128f582612978565b7f8a11c8ca99994c292318ce367f65bf6ff61d390bc814b3588496f6fbcc32807a828660028054905033604051808581526020018481526020018381526020018273ffffffffffffffffffffffffffffffffffffffff16815260200194505050505060405180910390a160019350505050612973565b600093505050505b919050565b600060076000838152602001908152602001600020549050600160038054905003811015612a0b576003600160038054905003815481106129b557fe5b9060005260206000200154600382815481106129cd57fe5b90600052602060002001819055508060076000600384815481106129ed57fe5b90600052602060002001548152602001908152602001600020819055505b60038060016003805490500381548110612a2157fe5b906000526020600020015490806001815401808255809150506001900390600052602060002001600090919091909150556008600083815260200190815260200160002060009055600960008381526020019081526020016000206000905560076000838152602001908152602001600020600090555050565b828054828255906000526020600020908101928215612b14579160200282015b82811115612b135782518260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555091602001919060010190612abb565b5b509050612b219190612b25565b5090565b5b80821115612b5c57600081816101000a81549073ffffffffffffffffffffffffffffffffffffffff021916905550600101612b26565b509056fe416d6f756e74206f6620746f6b656e732073686f756c64206265206d6f7265207468656e20304e6f7420656e6f75676820455448202854686520616d6f756e74206f6620455448206973206c657373207468616e2074686520696e7465726e616c20636f6d6d697373696f6e2e29546865206e756d626572206f6620636f6d6d697373696f6e7320616e64206f776e65727320646f6573206e6f74206d61746368636865636b486f774d616e794f776e6572733a206e6573746564206f776e657273206d6f64696669657220636865636b2072657175697265206d6f7265206f776e657273636865636b486f774d616e794f776e6572733a206d73672e73656e646572206973206e6f7420616e206f776e65727472616e736665724f776e65727368697057697468486f774d616e793a206f776e65727320617272617920697320656d70747963616e63656c50656e64696e673a206f7065726174696f6e206e6f7420666f756e6420666f72207468697320757365727472616e736665724f776e65727368697057697468486f774d616e793a206e6577486f774d616e794f776e65727344656369646520657175616c20746f20307472616e736665724f776e65727368697057697468486f774d616e793a206e6577486f774d616e794f776e657273446563696465206578636565647320746865206e756d626572206f66206f776e6572737472616e736665724f776e65727368697057697468486f774d616e793a206f776e65727320636f756e742069732067726561746572207468656e203235367472616e736665724f776e65727368697057697468486f774d616e793a206f776e65727320617272617920636f6e7461696e73206475706c696361746573636865636b486f774d616e794f776e6572733a206f776e657220616c726561647920766f74656420666f7220746865206f7065726174696f6e4e6f7420656e6f75676820455448202854686520616d6f756e74206f6620455448206973206c657373207468616e2074686520616d6f756e74206f6620636f6d6d697373696f6e732e297472616e736665724f776e65727368697057697468486f774d616e793a206f776e65727320617272617920636f6e7461696e73207a65726fa2646970667358221220b6489a57ac229144186886137d52de4d80174d599ecb31366ce74b943adf399464736f6c634300060c0033000000000000000000000000dfaa58a839bd37b7e8df728f80a55acfb724cd85
Deployed Bytecode
0x6080604052600436106101355760003560e01c80638ea80de3116100ab578063cc047a041161006f578063cc047a04146106d7578063ce56c4541461073c578063e047bda814610797578063e8518341146107fc578063ea1a2644146108cb578063f5c6ca081461091a57610135565b80638ea80de31461057257806390a53085146105d7578063b25bb3a714610626578063b948854614610651578063c71959bb1461067c57610135565b80632f54bf6e116100fd5780632f54bf6e14610372578063398d92bb146103d95780633c00fca914610434578063431ab23314610499578063568b5915146104e8578063893372ca1461053757610135565b8063025e7c271461013a57806305b15f771461019f57806318bcd3d01461025757806322f2f89a1461031c5780632f4a81df14610347575b600080fd5b34801561014657600080fd5b506101736004803603602081101561015d57600080fd5b8101908080359060200190929190505050610955565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b610255600480360360208110156101b557600080fd5b81019080803590602001906401000000008111156101d257600080fd5b8201836020820111156101e457600080fd5b8035906020019184602083028401116401000000008311171561020657600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600081840152601f19601f820116905080830192505050505050509192919290505050610991565b005b34801561026357600080fd5b5061031a6004803603602081101561027a57600080fd5b810190808035906020019064010000000081111561029757600080fd5b8201836020820111156102a957600080fd5b803590602001918460208302840111640100000000831117156102cb57600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600081840152601f19601f820116905080830192505050505050509192919290505050610d96565b005b34801561032857600080fd5b50610331610da4565b6040518082815260200191505060405180910390f35b34801561035357600080fd5b5061035c610db1565b6040518082815260200191505060405180910390f35b34801561037e57600080fd5b506103c16004803603602081101561039557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610db7565b60405180821515815260200191505060405180910390f35b3480156103e557600080fd5b50610432600480360360408110156103fc57600080fd5b8101908080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610e02565b005b34801561044057600080fd5b506104836004803603602081101561045757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611219565b6040518082815260200191505060405180910390f35b3480156104a557600080fd5b506104d2600480360360208110156104bc57600080fd5b8101908080359060200190929190505050611231565b6040518082815260200191505060405180910390f35b3480156104f457600080fd5b506105216004803603602081101561050b57600080fd5b8101908080359060200190929190505050611252565b6040518082815260200191505060405180910390f35b34801561054357600080fd5b506105706004803603602081101561055a57600080fd5b810190808035906020019092919050505061126a565b005b34801561057e57600080fd5b506105c16004803603602081101561059557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611559565b6040518082815260200191505060405180910390f35b3480156105e357600080fd5b50610610600480360360208110156105fa57600080fd5b8101908080359060200190929190505050611571565b6040518082815260200191505060405180910390f35b34801561063257600080fd5b5061063b611589565b6040518082815260200191505060405180910390f35b34801561065d57600080fd5b5061066661158f565b6040518082815260200191505060405180910390f35b34801561068857600080fd5b506106d56004803603604081101561069f57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061159c565b005b3480156106e357600080fd5b50610726600480360360208110156106fa57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611848565b6040518082815260200191505060405180910390f35b34801561074857600080fd5b506107956004803603604081101561075f57600080fd5b8101908080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611860565b005b3480156107a357600080fd5b506107e6600480360360208110156107ba57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611b2c565b6040518082815260200191505060405180910390f35b34801561080857600080fd5b506108c96004803603604081101561081f57600080fd5b810190808035906020019064010000000081111561083c57600080fd5b82018360208201111561084e57600080fd5b8035906020019184602083028401116401000000008311171561087057600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600081840152601f19601f82011690508083019250505050505050919291929080359060200190929190505050611b44565b005b3480156108d757600080fd5b50610904600480360360208110156108ee57600080fd5b8101908080359060200190929190505050612180565b6040518082815260200191505060405180910390f35b34801561092657600080fd5b506109536004803603602081101561093d57600080fd5b8101908080359060200190929190505050612198565b005b6002818154811061096257fe5b906000526020600020016000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600d60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414610d9357600280549050815114610a36576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526033815260200180612bcf6033913960400191505060405180910390fd5b600080600090505b8251811015610a6c57828181518110610a5357fe5b6020026020010151820191508080600101915050610a3e565b5080341015610ac6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252604a815260200180612e1c604a913960600191505060405180910390fd5b633b9aca00620249f06002805490500202341015610b2f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526048815260200180612b876048913960600191505060405180910390fd5b60005b600280549050811015610be957600060028281548110610b4e57fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690506000848381518110610b8957fe5b602002602001015190508173ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015610bd9573d6000803e3d6000fd5b5050508080600101915050610b32565b50600b60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054600d60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205403600e81905550600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33600e546040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b158015610d0657600080fd5b505af1158015610d1a573d6000803e3d6000fd5b505050506040513d6020811015610d3057600080fd5b810190808051906020019092919050505050600e54600b60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282540192505081905550505b50565b610da1818251611b44565b50565b6000600380549050905090565b60015481565b600080600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054119050919050565b610e1060028054905061253f565b156112155760008073ffffffffffffffffffffffffffffffffffffffff16600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161490508015610ebe5733600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506002805490506005819055505b60008311610f17576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526026815260200180612b616026913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610fba576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600c8152602001807f5a65726f206163636f756e74000000000000000000000000000000000000000081525060200191505060405180910390fd5b82600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b15801561104457600080fd5b505afa158015611058573d6000803e3d6000fd5b505050506040513d602081101561106e57600080fd5b810190808051906020019092919050505010156110f3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260128152602001807f4e6f7420656e6f7567682062616c616e6365000000000000000000000000000081525060200191505060405180910390fd5b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb83856040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b15801561118657600080fd5b505af115801561119a573d6000803e3d6000fd5b505050506040513d60208110156111b057600080fd5b8101908080519060200190929190505050508015611213576000600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060006005819055505b505b5050565b600c6020528060005260406000206000915090505481565b6003818154811061123e57fe5b906000526020600020016000915090505481565b60086020528060005260406000206000915090505481565b611274600161253f565b156115565760008073ffffffffffffffffffffffffffffffffffffffff16600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16149050801561131e5733600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060016005819055505b60006001600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205403905060008160020a60086000868152602001908152602001600020541614156113d7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526030815260200180612ca76030913960400191505060405180910390fd5b8060020a1960086000858152602001908152602001600020600082825416925050819055506000600160096000868152602001908152602001600020540390508060096000868152602001908152602001600020819055507f3e0a7036018b5a2a3c5d0afa14e51998ef3cf98c38e4289a8897222b3acf75a7848260028054905033604051808581526020018481526020018381526020018273ffffffffffffffffffffffffffffffffffffffff16815260200194505050505060405180910390a16000811415611501576114ab84612978565b7f55e0dd61c29aac6fc36807628300ad3e3ec68655ae76ae4002f7fb101496fa9f8433604051808381526020018273ffffffffffffffffffffffffffffffffffffffff1681526020019250505060405180910390a15b50508015611554576000600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060006005819055505b505b50565b600b6020528060005260406000206000915090505481565b60096020528060005260406000206000915090505481565b60005481565b6000600280549050905090565b6115aa60028054905061253f565b156118445760008073ffffffffffffffffffffffffffffffffffffffff16600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614905080156116585733600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506002805490506005819055505b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156116fb576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600c8152602001807f5a65726f206163636f756e74000000000000000000000000000000000000000081525060200191505060405180910390fd5b60008211611754576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526026815260200180612b616026913960400191505060405180910390fd5b600f60019054906101000a900460ff161561176e57600080fd5b6001600f60016101000a81548160ff02191690831515021790555081600d60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055506000600f60016101000a81548160ff0219169083151502179055508015611842576000600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060006005819055505b505b5050565b60066020528060005260406000206000915090505481565b61186e60028054905061253f565b15611b285760008073ffffffffffffffffffffffffffffffffffffffff16600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16149050801561191c5733600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506002805490506005819055505b60008311611975576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526026815260200180612b616026913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611a18576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600c8152602001807f5a65726f206163636f756e74000000000000000000000000000000000000000081525060200191505060405180910390fd5b82471015611a8e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260128152602001807f4e6f7420656e6f7567682062616c616e6365000000000000000000000000000081525060200191505060405180910390fd5b8173ffffffffffffffffffffffffffffffffffffffff166108fc849081150290604051600060405180830381858888f19350505050158015611ad4573d6000803e3d6000fd5b508015611b26576000600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060006005819055505b505b5050565b600d6020528060005260406000206000915090505481565b611b4f60015461253f565b1561217c5760008073ffffffffffffffffffffffffffffffffffffffff16600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161490508015611bfa5733600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001546005819055505b6000835111611c54576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526033815260200180612c746033913960400191505060405180910390fd5b61010083511115611cb0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603e815260200180612d67603e913960400191505060405180910390fd5b60008211611d09576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603f815260200180612cd7603f913960400191505060405180910390fd5b8251821115611d63576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526051815260200180612d166051913960600191505060405180910390fd5b60005b600280549050811015611dfa576006600060028381548110611d8457fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600090558080600101915050611d66565b5060005b8351811015611fb257600073ffffffffffffffffffffffffffffffffffffffff16848281518110611e2b57fe5b602002602001015173ffffffffffffffffffffffffffffffffffffffff161415611ea0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526038815260200180612e666038913960400191505060405180910390fd5b600060066000868481518110611eb257fe5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414611f4b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603e815260200180612da5603e913960400191505060405180910390fd5b6001810160066000868481518110611f5f57fe5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508080600101915050611dfe565b507fd167b96814cd24898418cc293e8d47d54afe6dcf0631283f0830e1eae621f6bd60026001548585604051808060200185815260200180602001848152602001838103835287818154815260200191508054801561206657602002820191906000526020600020905b8160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001906001019080831161201c575b5050838103825285818151815260200191508051906020019060200280838360005b838110156120a3578082015181840152602081019050612088565b50505050905001965050505050505060405180910390a182600290805190602001906120d0929190612a9b565b50816001819055506003806000815481106120e757fe5b906000526020600020015490806001815401808255809150506001900390600052602060002001600090919091909150556000808154809291906001019190505550801561217a576000600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060006005819055505b505b5050565b60076020528060005260406000206000915090505481565b600073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141561223b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600c8152602001807f5a65726f206163636f756e74000000000000000000000000000000000000000081525060200191505060405180910390fd5b60008111612294576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526026815260200180612b616026913960400191505060405180910390fd5b80600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231336040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b15801561231e57600080fd5b505afa158015612332573d6000803e3d6000fd5b505050506040513d602081101561234857600080fd5b810190808051906020019092919050505010156123cd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260128152602001807f4e6f7420656e6f7567682062616c616e6365000000000000000000000000000081525060200191505060405180910390fd5b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166323b872dd3330846040518463ffffffff1660e01b8152600401808473ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019350505050602060405180830381600087803b15801561247e57600080fd5b505af1158015612492573d6000803e3d6000fd5b505050506040513d60208110156124a857600080fd5b8101908080519060200190929190505050600f60006101000a81548160ff02191690831515021790555060011515600f60009054906101000a900460ff161515141561253c5780600c60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055505b50565b60003373ffffffffffffffffffffffffffffffffffffffff16600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614156125fb576005548211156125f2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526044815260200180612c026044913960600191505060405180910390fd5b60019050612973565b60006001600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054039050600280549050811061269f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602e815260200180612c46602e913960400191505060405180910390fd5b600080366000546040516020018084848082843780830192505050828152602001935050505060405160208183030381529060405280519060200120905060008260020a6008600084815260200190815260200160002054161461274e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526039815260200180612de36039913960400191505060405180910390fd5b8160020a6008600083815260200190815260200160002060008282541792505081905550600060016009600084815260200190815260200160002054019050806009600084815260200190815260200160002081905550600181141561285f57600380549050600760008481526020019081526020016000208190555060038290806001815401808255809150506001900390600052602060002001600090919091909150557f6bab0114f9524353d2d33e64edd3ebbd16e21edd57de2226ba76c310a7ce2265828660028054905033604051808581526020018481526020018381526020018273ffffffffffffffffffffffffffffffffffffffff16815260200194505050505060405180910390a15b7f8dd9582c6577aea81973b5adeb6c135f6e18565d99578b7ba0c9377437ec022182828760028054905033604051808681526020018581526020018481526020018381526020018273ffffffffffffffffffffffffffffffffffffffff1681526020019550505050505060405180910390a1846009600084815260200190815260200160002054141561296b576128f582612978565b7f8a11c8ca99994c292318ce367f65bf6ff61d390bc814b3588496f6fbcc32807a828660028054905033604051808581526020018481526020018381526020018273ffffffffffffffffffffffffffffffffffffffff16815260200194505050505060405180910390a160019350505050612973565b600093505050505b919050565b600060076000838152602001908152602001600020549050600160038054905003811015612a0b576003600160038054905003815481106129b557fe5b9060005260206000200154600382815481106129cd57fe5b90600052602060002001819055508060076000600384815481106129ed57fe5b90600052602060002001548152602001908152602001600020819055505b60038060016003805490500381548110612a2157fe5b906000526020600020015490806001815401808255809150506001900390600052602060002001600090919091909150556008600083815260200190815260200160002060009055600960008381526020019081526020016000206000905560076000838152602001908152602001600020600090555050565b828054828255906000526020600020908101928215612b14579160200282015b82811115612b135782518260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555091602001919060010190612abb565b5b509050612b219190612b25565b5090565b5b80821115612b5c57600081816101000a81549073ffffffffffffffffffffffffffffffffffffffff021916905550600101612b26565b509056fe416d6f756e74206f6620746f6b656e732073686f756c64206265206d6f7265207468656e20304e6f7420656e6f75676820455448202854686520616d6f756e74206f6620455448206973206c657373207468616e2074686520696e7465726e616c20636f6d6d697373696f6e2e29546865206e756d626572206f6620636f6d6d697373696f6e7320616e64206f776e65727320646f6573206e6f74206d61746368636865636b486f774d616e794f776e6572733a206e6573746564206f776e657273206d6f64696669657220636865636b2072657175697265206d6f7265206f776e657273636865636b486f774d616e794f776e6572733a206d73672e73656e646572206973206e6f7420616e206f776e65727472616e736665724f776e65727368697057697468486f774d616e793a206f776e65727320617272617920697320656d70747963616e63656c50656e64696e673a206f7065726174696f6e206e6f7420666f756e6420666f72207468697320757365727472616e736665724f776e65727368697057697468486f774d616e793a206e6577486f774d616e794f776e65727344656369646520657175616c20746f20307472616e736665724f776e65727368697057697468486f774d616e793a206e6577486f774d616e794f776e657273446563696465206578636565647320746865206e756d626572206f66206f776e6572737472616e736665724f776e65727368697057697468486f774d616e793a206f776e65727320636f756e742069732067726561746572207468656e203235367472616e736665724f776e65727368697057697468486f774d616e793a206f776e65727320617272617920636f6e7461696e73206475706c696361746573636865636b486f774d616e794f776e6572733a206f776e657220616c726561647920766f74656420666f7220746865206f7065726174696f6e4e6f7420656e6f75676820455448202854686520616d6f756e74206f6620455448206973206c657373207468616e2074686520616d6f756e74206f6620636f6d6d697373696f6e732e297472616e736665724f776e65727368697057697468486f774d616e793a206f776e65727320617272617920636f6e7461696e73207a65726fa2646970667358221220b6489a57ac229144186886137d52de4d80174d599ecb31366ce74b943adf399464736f6c634300060c0033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
000000000000000000000000dfaa58a839bd37b7e8df728f80a55acfb724cd85
-----Decoded View---------------
Arg [0] : _token (address): 0xdfaA58A839BD37B7E8dF728f80A55AcFb724Cd85
-----Encoded View---------------
1 Constructor Arguments found :
Arg [0] : 000000000000000000000000dfaa58a839bd37b7e8df728f80a55acfb724cd85
Deployed Bytecode Sourcemap
55288:3098:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;46102:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;56564:1115;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;53528:138;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;47482:102;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;46061:34;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;47268:110;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;57688:350;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;55408:49;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;46132:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;46482:55;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;52684:708;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;55356:45;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;46544:56;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;46023:31;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;47386:88;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;56182:374;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;46309:45;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;58050:333;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;55464:59;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;53874:1405;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;46378:53;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;55721:452;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;46102:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;56564:1115::-;56687:1;56647:24;:36;56672:10;56647:36;;;;;;;;;;;;;;;;:41;56643:1029;;56735:6;:13;;;;56713:11;:18;:35;56705:99;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;56819:11;56849:6;56858:1;56849:10;;56845:101;56865:11;:18;56861:1;:22;56845:101;;;56916:11;56928:1;56916:14;;;;;;;;;;;;;;56909:21;;;;56885:3;;;;;;;56845:101;;;;56981:3;56968:9;:16;;56960:103;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;57124:5;57115:6;57099;:13;;;;:22;:30;57086:9;:43;;57078:128;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;57236:6;57231:217;57252:6;:13;;;;57248:1;:17;57231:217;;;57291:21;57323:6;57330:1;57323:9;;;;;;;;;;;;;;;;;;;;;;;;;57291:42;;57352:18;57373:11;57385:1;57373:14;;;;;;;;;;;;;;57352:35;;57406:5;:14;;:26;57421:10;57406:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;57231:217;;57267:3;;;;;;;57231:217;;;;57530:10;:22;57541:10;57530:22;;;;;;;;;;;;;;;;57491:24;:36;57516:10;57491:36;;;;;;;;;;;;;;;;:61;57476:12;:76;;;;57567:5;;;;;;;;;;;:14;;;57582:10;57594:12;;57567:40;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;57648:12;;57622:10;:22;57633:10;57622:22;;;;;;;;;;;;;;;;:38;;;;;;;;;;;56643:1029;;56564:1115;:::o;53528:138::-;53601:57;53630:9;53641;:16;53601:28;:57::i;:::-;53528:138;:::o;47482:102::-;47532:4;47556:13;:20;;;;47549:27;;47482:102;:::o;46061:34::-;;;;:::o;47268:110::-;47321:4;47369:1;47345:13;:21;47359:6;47345:21;;;;;;;;;;;;;;;;:25;47338:32;;47268:110;;;:::o;57688:350::-;48820:33;48839:6;:13;;;;48820:18;:33::i;:::-;48816:396;;;48870:11;48913:1;48885:30;;:16;;;;;;;;;;;:30;;;48870:46;;48935:6;48931:126;;;48981:10;48962:16;;:29;;;;;;;;;;;;;;;;;;49028:6;:13;;;;49010:15;:31;;;;48931:126;57795:1:::1;57786:6;:10;57778:60;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;57877:1;57857:22;;:8;:22;;;;57849:47;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;57949:6;57915:5;;;;;;;;;;;:15;;;57939:4;57915:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;:40;;57907:70;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;57998:5;;;;;;;;;;;:14;;;58013:8;58023:6;57998:32;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;49091:6:::0;49087:114;;;49145:1;49118:16;;:29;;;;;;;;;;;;;;;;;;49184:1;49166:15;:19;;;;49087:114;48816:396;;57688:350;;:::o;55408:49::-;;;;;;;;;;;;;;;;;:::o;46132:30::-;;;;;;;;;;;;;;;;;;;;;;;;;:::o;46482:55::-;;;;;;;;;;;;;;;;;:::o;52684:708::-;47724:21;47743:1;47724:18;:21::i;:::-;47720:372;;;47762:11;47805:1;47777:30;;:16;;;;;;;;;;;:30;;;47762:46;;47827:6;47823:114;;;47873:10;47854:16;;:29;;;;;;;;;;;;;;;;;;47920:1;47902:15;:19;;;;47823:114;52757:15:::1;52803:1;52775:13;:25;52789:10;52775:25;;;;;;;;;;;;;;;;:29;52757:47;;52880:1;52864:10;52859:1;:15;52824:20;:31;52845:9;52824:31;;;;;;;;;;;;:51;52823:58;;52815:119;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;52987:10;52982:1;:15;52980:18;52945:20;:31;52966:9;52945:31;;;;;;;;;;;;:53;;;;;;;;;;;53009:24;53071:1;53036:21;:32;53058:9;53036:32;;;;;;;;;;;;:36;53009:63;;53118:19;53083:21;:32;53105:9;53083:32;;;;;;;;;;;:54;;;;53153:77;53172:9;53183:19;53204:6;:13;;;;53219:10;53153:77;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;53268:1;53245:19;:24;53241:144;;;53286:26;53302:9;53286:15;:26::i;:::-;53332:41;53351:9;53362:10;53332:41;;;;;;;;;;;;;;;;;;;;;;;;;;53241:144;47951:1;;47971:6:::0;47967:114;;;48025:1;47998:16;;:29;;;;;;;;;;;;;;;;;;48064:1;48046:15;:19;;;;47967:114;47720:372;;52684:708;:::o;55356:45::-;;;;;;;;;;;;;;;;;:::o;46544:56::-;;;;;;;;;;;;;;;;;:::o;46023:31::-;;;;:::o;47386:88::-;47429:4;47453:6;:13;;;;47446:20;;47386:88;:::o;56182:374::-;48820:33;48839:6;:13;;;;48820:18;:33::i;:::-;48816:396;;;48870:11;48913:1;48885:30;;:16;;;;;;;;;;;:30;;;48870:46;;48935:6;48931:126;;;48981:10;48962:16;;:29;;;;;;;;;;;;;;;;;;49028:6;:13;;;;49010:15;:31;;;;48931:126;56294:1:::1;56278:18;;:4;:18;;;;56270:43;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;56341:1;56332:6;:10;56324:60;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;56404:15;;;;;;;;;;;56403:16;56395:25;;;::::0;::::1;;56459:4;56441:15;;:22;;;;;;;;;;;;;;;;;;56508:6;56474:24;:30;56499:4;56474:30;;;;;;;;;;;;;;;;:40;;;;;;;;;;;56543:5;56525:15;;:23;;;;;;;;;;;;;;;;;;49091:6:::0;49087:114;;;49145:1;49118:16;;:29;;;;;;;;;;;;;;;;;;49184:1;49166:15;:19;;;;49087:114;48816:396;;56182:374;;:::o;46309:45::-;;;;;;;;;;;;;;;;;:::o;58050:333::-;48820:33;48839:6;:13;;;;48820:18;:33::i;:::-;48816:396;;;48870:11;48913:1;48885:30;;:16;;;;;;;;;;;:30;;;48870:46;;48935:6;48931:126;;;48981:10;48962:16;;:29;;;;;;;;;;;;;;;;;;49028:6;:13;;;;49010:15;:31;;;;48931:126;58164:1:::1;58155:6;:10;58147:60;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;58246:1;58226:22;;:8;:22;;;;58218:47;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;58309:6;58284:21;:31;;58276:61;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;58350:8;:17;;:25;58368:6;58350:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;49091:6:::0;49087:114;;;49145:1;49118:16;;:29;;;;;;;;;;;;;;;;;;49184:1;49166:15;:19;;;;49087:114;48816:396;;58050:333;;:::o;55464:59::-;;;;;;;;;;;;;;;;;:::o;53874:1405::-;48255:39;48274:19;;48255:18;:39::i;:::-;48251:408;;;48311:11;48354:1;48326:30;;:16;;;;;;;;;;;:30;;;48311:46;;48376:6;48372:132;;;48422:10;48403:16;;:29;;;;;;;;;;;;;;;;;;48469:19;;48451:15;:37;;;;48372:132;54032:1:::1;54013:9;:16;:20;54005:84;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;54128:3;54108:9;:16;:23;;54100:98;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;54242:1;54217:22;:26;54209:102;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;54356:9;:16;54330:22;:42;;54322:136;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;54522:6;54517:99;54538:6;:13;;;;54534:1;:17;54517:99;;;54580:13;:24;54594:6;54601:1;54594:9;;;;;;;;;;;;;;;;;;;;;;;;;54580:24;;;;;;;;;;;;;;;54573:31;;;54553:3;;;;;;;54517:99;;;;54631:6;54626:338;54647:9;:16;54643:1;:20;54626:338;;;54717:1;54693:26;;:9;54703:1;54693:12;;;;;;;;;;;;;;:26;;;;54685:95;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;54834:1;54803:13;:27;54817:9;54827:1;54817:12;;;;;;;;;;;;;;54803:27;;;;;;;;;;;;;;;;:32;54795:107;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;54951:1;54947;:5;54917:13;:27;54931:9;54941:1;54931:12;;;;;;;;;;;;;;54917:27;;;;;;;;;;;;;;;:35;;;;54665:3;;;;;;;54626:338;;;;54989:84;55010:6;55018:19;;55039:9;55050:22;54989:84;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;55093:9;55084:6;:18;;;;;;;;;;;;:::i;:::-;;55135:22;55113:19;:44;;;;55206:13;55225::::0;55239:1:::1;55225:16;;;;;;;;;;;;;;;;55206:36;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;55253:16;::::0;:18:::1;;;;;;;;;;;;;48538:6:::0;48534:114;;;48592:1;48565:16;;:29;;;;;;;;;;;;;;;;;;48631:1;48613:15;:19;;;;48534:114;48251:408;;53874:1405;;:::o;46378:53::-;;;;;;;;;;;;;;;;;:::o;55721:452::-;55805:1;55783:24;;:10;:24;;;;55775:49;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;55852:1;55843:6;:10;55835:60;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;55945:6;55914:5;;;;;;;;;;;:15;;;55930:10;55914:27;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:37;;55906:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;56011:5;;;;;;;;;;;:18;;;56030:10;56050:4;56057:6;56011:53;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;55994:14;;:70;;;;;;;;;;;;;;;;;;56097:4;56079:22;;:14;;;;;;;;;;;:22;;;56075:91;;;56148:6;56118:14;:26;56133:10;56118:26;;;;;;;;;;;;;;;;:36;;;;;;;;;;;56075:91;55721:452;:::o;50234:1521::-;50293:4;50334:10;50314:30;;:16;;;;;;;;;;;:30;;;50310:196;;;50380:15;;50369:7;:26;;50361:107;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;50490:4;50483:11;;;;50310:196;50518:15;50564:1;50536:13;:25;50550:10;50536:25;;;;;;;;;;;;;;;;:29;50518:47;;50597:6;:13;;;;50584:10;:26;50576:85;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;50672:17;50719:8;;50729:16;;50702:44;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;50692:55;;;;;;50672:75;;50825:1;50809:10;50804:1;:15;50769:20;:31;50790:9;50769:31;;;;;;;;;;;;:51;50768:58;50760:128;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;50940:10;50935:1;:15;50899:20;:31;50920:9;50899:31;;;;;;;;;;;;:52;;;;;;;;;;;50962:24;51024:1;50989:21;:32;51011:9;50989:32;;;;;;;;;;;;:36;50962:63;;51071:19;51036:21;:32;51058:9;51036:32;;;;;;;;;;;:54;;;;51128:1;51105:19;:24;51101:239;;;51181:13;:20;;;;51146:21;:32;51168:9;51146:32;;;;;;;;;;;:55;;;;51216:13;51235:9;51216:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;51265:63;51282:9;51293:7;51302:6;:13;;;;51317:10;51265:63;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;51101:239;51355:84;51372:9;51383:19;51404:7;51413:6;:13;;;;51428:10;51355:84;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;51550:7;51514:21;:32;51536:9;51514:32;;;;;;;;;;;;:43;51510:213;;;51574:26;51590:9;51574:15;:26::i;:::-;51620:65;51639:9;51650:7;51659:6;:13;;;;51674:10;51620:65;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;51707:4;51700:11;;;;;;;51510:213;51742:5;51735:12;;;;;50234:1521;;;;:::o;51898:585::-;51962:10;51975:21;:32;51997:9;51975:32;;;;;;;;;;;;51962:45;;52053:1;52030:13;:20;;;;:24;52022:5;:32;52018:205;;;52106:13;52143:1;52120:13;:20;;;;:24;52106:39;;;;;;;;;;;;;;;;52083:13;52097:5;52083:20;;;;;;;;;;;;;;;:62;;;;52206:5;52160:21;:43;52182:13;52196:5;52182:20;;;;;;;;;;;;;;;;52160:43;;;;;;;;;;;:51;;;;52018:205;52267:13;52286;52321:1;52300:13;:20;;;;:22;52286:37;;;;;;;;;;;;;;;;52267:57;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;52344:20;:31;52365:9;52344:31;;;;;;;;;;;52337:38;;;52393:21;:32;52415:9;52393:32;;;;;;;;;;;52386:39;;;52443:21;:32;52465:9;52443:32;;;;;;;;;;;52436:39;;;51898:585;;:::o;-1:-1:-1:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o
Swarm Source
ipfs://b6489a57ac229144186886137d52de4d80174d599ecb31366ce74b943adf3994
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 30 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|
Loading...
Loading
[ Download: CSV Export ]
[ Download: CSV Export ]
A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.