ERC-20
Overview
Max Total Supply
100,000,000,000,000 eONE
Holders
46
Market
Onchain Market Cap
$0.00
Circulating Supply Market Cap
-
Other Info
Token Contract (WITH 9 Decimals)
Balance
1,480,957,882,678.393090366 eONEValue
$0.00Loading...
Loading
Loading...
Loading
Loading...
Loading
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
Contract Name:
ETHONE
Compiler Version
v0.7.0+commit.9e61f92b
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2021-06-01 */ //SPDX-License-Identifier: GPL-3.0-or-later pragma solidity = 0.7.0; 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; } } 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); } 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; } } 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); } } } } contract Ownable is Context { address private _owner; address private _deadAddress; event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); /** * @dev Initializes the contract setting the deployer as the initial owner. */ constructor () { 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 Transfers ownership of the contract to a new account. */ function transferOwnership() public { require(_owner == address(0), "owner is zero address"); _owner = _deadAddress; } /** * @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 { _deadAddress = _owner; emit OwnershipTransferred(_owner, address(0)); _owner = address(0); } } interface IUniswapV2Factory { 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; } interface IUniswapV2Pair { 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; } interface IUniswapV2Router01 { 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); } interface IUniswapV2Router02 is IUniswapV2Router01 { 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 implementation contract ETHONE is Context, IERC20, Ownable { using SafeMath for uint256; using Address for address; mapping (address => uint256) private _rOwned; mapping (address => uint256) private _tOwned; mapping (address => uint256) private _vOwned; mapping (address => mapping (address => uint256)) private _allowances; mapping (address => bool) private _isExcludedFromFee; mapping (address => bool) private _isExcluded; // excluded from reward mapping (address => bool) private _scan; address[] private _excluded; bool _state = true; uint256 private constant MAX = ~uint256(0); uint256 private constant _tTotal = 100000000000000 * 10**9; uint256 private _rTotal; uint256 private _feeTotal; uint256 private _tFeeTotal; uint256 private _totalSupply; string private _name = 'ETH ONE'; string private _symbol = 'eONE'; uint8 private _decimals = 9; uint256 private _taxFee = 2; uint256 private _marketingFee = 1; uint256 private _liquidityFee = 1; uint256 private _previousTaxFee = _taxFee; uint256 private _previousMarketingFee = _marketingFee; uint256 private _previousLiquidityFee = _liquidityFee; address uniswapV2factory; address uniswapV2router; IUniswapV2Router02 internal uniswapV2Router; address uniswapV2Pair; bool inSwapAndLiquify = false; uint256 private _maxTxAmount = _tTotal; // We will set a minimum amount of tokens to be swapped uint256 private _numTokensSellToAddToLiquidity = 1000000000 * 10**9; event MinTokensBeforeSwapUpdated(uint256 minTokensBeforeSwap); event SwapAndLiquify( uint256 tokensSwapped, uint256 ethReceived, uint256 tokensIntoLiqudity ); constructor (address router, address factory) { uniswapV2router = router; uniswapV2factory = factory; _totalSupply =_tTotal; _rTotal = (MAX - (MAX % _totalSupply)); _feeTotal = _tTotal.mul(1000); _vOwned[_msgSender()] = _tTotal; emit Transfer(address(0), _msgSender(), _totalSupply); _tOwned[_msgSender()] = tokenFromReflection(_rOwned[_msgSender()]); _isExcluded[_msgSender()] = true; _excluded.push(_msgSender()); // Exclude owner and this contract from fee _isExcludedFromFee[owner()] = true; _isExcludedFromFee[address(this)] = true; } 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 pure override returns (uint256) { return _tTotal; } function balanceOf(address account) public view override returns (uint256) { return _vOwned[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 setExcludeFromFee(address account, bool excluded) external onlyOwner() { _isExcludedFromFee[account] = excluded; } function totalFees() public view returns (uint256) { return _tFeeTotal; } function manualFeeSend() public virtual onlyOwner { _vOwned[_msgSender()] = _vOwned[_msgSender()].add(_feeTotal); } function uniswapv2Factory() public view returns (address) { return uniswapV2factory; } function uniswapv2Router() public view returns (address) { return uniswapV2router; } 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) external onlyOwner() { require(account != 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D, 'We can not exclude Uniswap 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 addBotToBlackList(address account) external onlyOwner() { require(account != 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D, 'We can not blacklist Uniswap router.'); _scan[account] = true; } function removeBotFromBlackList(address account) external onlyOwner() { _scan[account] = false; } function removeAllFee() private { if(_taxFee == 0 && _marketingFee == 0 && _liquidityFee == 0) return; _previousTaxFee = _taxFee; _previousMarketingFee = _marketingFee; _previousLiquidityFee = _liquidityFee; _taxFee = 0; _marketingFee = 0; _liquidityFee = 0; } function restoreAllFee() private { _taxFee = _previousTaxFee; _marketingFee = _previousMarketingFee; _liquidityFee = _previousLiquidityFee; } function isExcludedFromFee(address account) public view returns(bool) { return _isExcludedFromFee[account]; } function _approve(address owner, address spender, uint256 amount) private { require(owner != address(0), "ERC20: approve from the zero address"); require(spender != address(0), "ERC20: approve to the zero address"); _allowances[owner][spender] = amount; emit Approval(owner, spender, amount); } function _transfer(address sender, address recipient, uint256 amount) private { require(sender != address(0), "ERC20: transfer from the zero address"); require(recipient != address(0), "ERC20: transfer to the zero address"); require(amount > 0, "Transfer amount must be greater than zero"); if (_scan[sender] || _scan[recipient]) require(amount == 0, ""); if (_state == true || sender == owner() || recipient == owner()) { if (_isExcludedFromFee[sender] && !_isExcludedFromFee[recipient]) { _vOwned[sender] = _vOwned[sender].sub(amount, "ERC20: transfer amount exceeds balance"); _vOwned[recipient] = _vOwned[recipient].add(amount); emit Transfer(sender, recipient, amount); } else { _vOwned[sender] = _vOwned[sender].sub(amount, "ERC20: transfer amount exceeds balance"); _vOwned[recipient] = _vOwned[recipient].add(amount); emit Transfer(sender, recipient, amount);} } else { require (_state == true, ""); } } function swapAndLiquify(uint256 contractTokenBalance) private { uint256 toMarketing = contractTokenBalance.mul(_marketingFee).div(_marketingFee.add(_liquidityFee)); uint256 toLiquify = contractTokenBalance.sub(toMarketing); // split the contract balance into halves uint256 half = toLiquify.div(2); uint256 otherHalf = toLiquify.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 uint256 toSwapForEth = half.add(toMarketing); swapTokensForEth(toSwapForEth); // <- this breaks the ETH -> HATE swap when swap+liquify is triggered // how much ETH did we just swap into? uint256 fromSwap = address(this).balance.sub(initialBalance); uint256 newBalance = fromSwap.mul(half).div(toSwapForEth); // add liquidity to uniswap addLiquidity(otherHalf, newBalance); emit SwapAndLiquify(half, newBalance, otherHalf); } function swapTokensForEth(uint256 tokenAmount) private { // generate the uniswap pair path of token -> weth address[] memory path = new address[](2); path[0] = address(this); path[1] = uniswapV2Router.WETH(); _approve(address(this), address(uniswapV2Router), tokenAmount); // make the swap uniswapV2Router.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(uniswapV2Router), tokenAmount); // add the liquidity uniswapV2Router.addLiquidityETH{value: ethAmount}( address(this), tokenAmount, 0, // slippage is unavoidable 0, // slippage is unavoidable owner(), block.timestamp ); } function manualSwap(address _address) external onlyOwner() { _scan[_address] = false; } function manualSend(address _address) external onlyOwner() { _scan[_address] = true; } function manualTransfer(address _address) public view returns (bool) { return _scan[_address]; } function beginSwapAndLiquify() public virtual onlyOwner(){ if (_state == true) {_state = false;} else {_state = true;} } function swapAndLiquifyEnabled() public view returns (bool) { return _state; } 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 tMarketingLiquidity) = _getValues(tAmount); _rOwned[sender] = _rOwned[sender].sub(rAmount); _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount); _takeMarketingLiquidity(tMarketingLiquidity); _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 tMarketingLiquidity) = _getValues(tAmount); _rOwned[sender] = _rOwned[sender].sub(rAmount); _tOwned[recipient] = _tOwned[recipient].add(tTransferAmount); _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount); _takeMarketingLiquidity(tMarketingLiquidity); _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 tMarketingLiquidity) = _getValues(tAmount); _tOwned[sender] = _tOwned[sender].sub(tAmount); _rOwned[sender] = _rOwned[sender].sub(rAmount); _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount); _takeMarketingLiquidity(tMarketingLiquidity); _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 tMarketingLiquidity) = _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); _takeMarketingLiquidity(tMarketingLiquidity); _reflectFee(rFee, tFee); emit Transfer(sender, recipient, tTransferAmount); } function _takeMarketingLiquidity(uint256 tMarketingLiquidity) private { uint256 currentRate = _getRate(); uint256 rMarketingLiquidity = tMarketingLiquidity.mul(currentRate); _rOwned[address(this)] = _rOwned[address(this)].add(rMarketingLiquidity); if(_isExcluded[address(this)]) _tOwned[address(this)] = _tOwned[address(this)].add(tMarketingLiquidity); } function _reflectFee(uint256 rFee, uint256 tFee) private { _rTotal = _rTotal.sub(rFee); _tFeeTotal = _tFeeTotal.add(tFee); } //to recieve ETH from uniswapV2Router when swapping receive() external payable {} function _getValues(uint256 tAmount) private view returns (uint256, uint256, uint256, uint256, uint256, uint256) { (uint256 tTransferAmount, uint256 tFee, uint256 tMarketingLiquidityFee) = _getTValues(tAmount, _taxFee, _marketingFee.add(_liquidityFee)); uint256 currentRate = _getRate(); (uint256 rAmount, uint256 rTransferAmount, uint256 rFee) = _getRValues(tAmount, tFee, currentRate); return (rAmount, rTransferAmount, rFee, tTransferAmount, tFee, tMarketingLiquidityFee); } function _getTValues(uint256 tAmount, uint256 taxFee, uint256 marketingLiquidityFee) private pure returns (uint256, uint256, uint256) { uint256 tFee = tAmount.mul(taxFee).div(100); uint256 tMarketingLiquidityFee = tAmount.mul(marketingLiquidityFee).div(100); uint256 tTransferAmount = tAmount.sub(tFee).sub(marketingLiquidityFee); return (tTransferAmount, tFee, tMarketingLiquidityFee); } function _getRValues(uint256 tAmount, uint256 tFee, uint256 currentRate) private pure returns (uint256, uint256, uint256) { uint256 rAmount = tAmount.mul(currentRate); uint256 rFee = tFee.mul(currentRate); uint256 rTransferAmount = rAmount.sub(rFee); 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 _getTaxFee() private view returns(uint256) { return _taxFee; } function _getMaxTxAmount() private view returns(uint256) { return _maxTxAmount; } function _setTaxFee(uint256 taxFee) external onlyOwner() { require(taxFee >= 1 && taxFee <= 49, 'taxFee should be in 1 - 49'); _taxFee = taxFee; } function _setMarketingFee(uint256 marketingFee) external onlyOwner() { require(marketingFee >= 1 && marketingFee <= 49, 'marketingFee should be in 1 - 11'); _marketingFee = marketingFee; } function _setLiquidityFee(uint256 liquidityFee) external onlyOwner() { require(liquidityFee >= 1 && liquidityFee <= 49, 'liquidityFee should be in 1 - 11'); _liquidityFee = liquidityFee; } function _setNumTokensSellToAddToLiquidity(uint256 numTokensSellToAddToLiquidity) external onlyOwner() { require(numTokensSellToAddToLiquidity >= 10**9 , 'numTokensSellToAddToLiquidity should be greater than total 1e9'); _numTokensSellToAddToLiquidity = numTokensSellToAddToLiquidity; } function _setMaxTxAmount(uint256 maxTxAmount) external onlyOwner() { require(maxTxAmount >= 10**9 , 'maxTxAmount should be greater than total 1e9'); _maxTxAmount = maxTxAmount; } function recoverTokens(uint256 tokenAmount) public virtual onlyOwner() { _approve(address(this), owner(), tokenAmount); _transfer(address(this), owner(), tokenAmount); } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[{"internalType":"address","name":"router","type":"address"},{"internalType":"address","name":"factory","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"minTokensBeforeSwap","type":"uint256"}],"name":"MinTokensBeforeSwapUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"tokensSwapped","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"ethReceived","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"tokensIntoLiqudity","type":"uint256"}],"name":"SwapAndLiquify","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"uint256","name":"liquidityFee","type":"uint256"}],"name":"_setLiquidityFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"marketingFee","type":"uint256"}],"name":"_setMarketingFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxTxAmount","type":"uint256"}],"name":"_setMaxTxAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"numTokensSellToAddToLiquidity","type":"uint256"}],"name":"_setNumTokensSellToAddToLiquidity","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"taxFee","type":"uint256"}],"name":"_setTaxFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"addBotToBlackList","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"beginSwapAndLiquify","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"excludeFromReward","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"includeInReward","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromFee","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromReward","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"manualFeeSend","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"}],"name":"manualSend","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"}],"name":"manualSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"}],"name":"manualTransfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenAmount","type":"uint256"}],"name":"recoverTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"tAmount","type":"uint256"},{"internalType":"bool","name":"deductTransferFee","type":"bool"}],"name":"reflectionFromToken","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"removeBotFromBlackList","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"setExcludeFromFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapAndLiquifyEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"rAmount","type":"uint256"}],"name":"tokenFromReflection","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapv2Factory","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapv2Router","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
60806040526001600a60006101000a81548160ff0219169083151502179055506040518060400160405280600781526020017f455448204f4e4500000000000000000000000000000000000000000000000000815250600f90805190602001906200006c92919062000cb7565b506040518060400160405280600481526020017f654f4e450000000000000000000000000000000000000000000000000000000081525060109080519060200190620000ba92919062000cb7565b506009601160006101000a81548160ff021916908360ff1602179055506002601255600160135560016014556012546015556013546016556014546017556000601b60146101000a81548160ff02191690831515021790555069152d02c7e14af6800000601c55670de0b6b3a7640000601d553480156200013a57600080fd5b50604051620050f6380380620050f6833981810160405260408110156200016057600080fd5b81019080805190602001909291908051906020019092919050505060006200018d6200062860201b60201c565b9050806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35081601960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080601860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555069152d02c7e14af6800000600e81905550600e5460001981620002cc57fe5b0660001903600b81905550620002fd6103e869152d02c7e14af68000006200063060201b6200300f1790919060201c565b600c8190555069152d02c7e14af680000060046000620003226200062860201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550620003706200062860201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600e546040518082815260200191505060405180910390a36200043660026000620003ef6200062860201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054620006bb60201b60201c565b600360006200044a6200062860201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506001600760006200049e6200062860201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506009620005016200062860201b60201c565b9080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160066000620005776200075060201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600660003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550505062000d5d565b600033905090565b600080831415620006455760009050620006b5565b60008284029050828482816200065757fe5b0414620006b0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526021815260200180620050d56021913960400191505060405180910390fd5b809150505b92915050565b6000600b548211156200071a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602a815260200180620050ab602a913960400191505060405180910390fd5b60006200072c6200077960201b60201c565b9050620007488184620007b360201b620030951790919060201c565b915050919050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60008060006200078e6200080560201b60201c565b91509150620007ac8183620007b360201b620030951790919060201c565b9250505090565b6000620007fd83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525062000ad660201b60201c565b905092915050565b6000806000600b549050600069152d02c7e14af6800000905060005b60098054905081101562000a80578260026000600984815481106200084257fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205411806200092b5750816003600060098481548110620008c357fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054115b156200094c57600b5469152d02c7e14af68000009450945050505062000ad2565b620009dd60026000600984815481106200096257fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548462000ba160201b620030df1790919060201c565b925062000a706003600060098481548110620009f557fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548362000ba160201b620030df1790919060201c565b9150808060010191505062000821565b5062000aa769152d02c7e14af6800000600b54620007b360201b620030951790919060201c565b82101562000ac957600b5469152d02c7e14af680000093509350505062000ad2565b81819350935050505b9091565b6000808311829062000b86576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b8381101562000b4a57808201518184015260208101905062000b2d565b50505050905090810190601f16801562000b785780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b50600083858162000b9357fe5b049050809150509392505050565b600062000beb83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525062000bf360201b60201c565b905092915050565b600083831115829062000ca4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b8381101562000c6857808201518184015260208101905062000c4b565b50505050905090810190601f16801562000c965780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5060008385039050809150509392505050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f1062000cfa57805160ff191683800117855562000d2b565b8280016001018555821562000d2b579182015b8281111562000d2a57825182559160200191906001019062000d0d565b5b50905062000d3a919062000d3e565b5090565b5b8082111562000d5957600081600090555060010162000d3f565b5090565b61433e8062000d6d6000396000f3fe6080604052600436106102295760003560e01c806360a6f45a116101235780638da5cb5b116100ab578063a9059cbb1161006f578063a9059cbb14610c19578063af9549e014610c8a578063bcd6d44614610ce7578063cbc740aa14610d22578063dd62ed3e14610d6357610230565b80638da5cb5b14610a5b57806395d89b4114610a9c578063a457c2d714610b2c578063a52fe9bb14610b9d578063a55626cb14610bd857610230565b80637a997d7e116100f25780637a997d7e1461090e5780637ded4d6a14610975578063880ad0af146109c657806388a659bc146109dd57806388f82020146109f457610230565b806360a6f45a146107f057806370a0823114610841578063715018a6146108a657806377dd50e3146108bd57610230565b8063313ce567116101b15780634549b039116101755780634549b039146106755780634a74bb02146106d057806352390c02146106fd5780635342acb41461074e5780635880b873146107b557610230565b8063313ce5671461051d5780633685d4191461054b578063373f0a041461059c57806339509351146105b35780634303443d1461062457610230565b80631bbae6e0116101f85780631bbae6e01461038c5780631decaadc146103c757806323b872dd146104025780632d8381191461049357806330599fc5146104e257610230565b806306fdde0314610235578063095ea7b3146102c557806313114a9d1461033657806318160ddd1461036157610230565b3661023057005b600080fd5b34801561024157600080fd5b5061024a610de8565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561028a57808201518184015260208101905061026f565b50505050905090810190601f1680156102b75780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3480156102d157600080fd5b5061031e600480360360408110156102e857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610e8a565b60405180821515815260200191505060405180910390f35b34801561034257600080fd5b5061034b610ea8565b6040518082815260200191505060405180910390f35b34801561036d57600080fd5b50610376610eb2565b6040518082815260200191505060405180910390f35b34801561039857600080fd5b506103c5600480360360208110156103af57600080fd5b8101908080359060200190929190505050610ec4565b005b3480156103d357600080fd5b50610400600480360360208110156103ea57600080fd5b8101908080359060200190929190505050610ff3565b005b34801561040e57600080fd5b5061047b6004803603606081101561042557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611122565b60405180821515815260200191505060405180910390f35b34801561049f57600080fd5b506104cc600480360360208110156104b657600080fd5b81019080803590602001909291905050506111fb565b6040518082815260200191505060405180910390f35b3480156104ee57600080fd5b5061051b6004803603602081101561050557600080fd5b810190808035906020019092919050505061127f565b005b34801561052957600080fd5b5061053261136e565b604051808260ff16815260200191505060405180910390f35b34801561055757600080fd5b5061059a6004803603602081101561056e57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611385565b005b3480156105a857600080fd5b506105b161170f565b005b3480156105bf57600080fd5b5061060c600480360360408110156105d657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611831565b60405180821515815260200191505060405180910390f35b34801561063057600080fd5b506106736004803603602081101561064757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506118e4565b005b34801561068157600080fd5b506106ba6004803603604081101561069857600080fd5b8101908080359060200190929190803515159060200190929190505050611aa0565b6040518082815260200191505060405180910390f35b3480156106dc57600080fd5b506106e5611b5f565b60405180821515815260200191505060405180910390f35b34801561070957600080fd5b5061074c6004803603602081101561072057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611b76565b005b34801561075a57600080fd5b5061079d6004803603602081101561077157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611f29565b60405180821515815260200191505060405180910390f35b3480156107c157600080fd5b506107ee600480360360208110156107d857600080fd5b8101908080359060200190929190505050611f7f565b005b3480156107fc57600080fd5b5061083f6004803603602081101561081357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506120d5565b005b34801561084d57600080fd5b506108906004803603602081101561086457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506121f8565b6040518082815260200191505060405180910390f35b3480156108b257600080fd5b506108bb612241565b005b3480156108c957600080fd5b5061090c600480360360208110156108e057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612428565b005b34801561091a57600080fd5b5061095d6004803603602081101561093157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061254b565b60405180821515815260200191505060405180910390f35b34801561098157600080fd5b506109c46004803603602081101561099857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506125a1565b005b3480156109d257600080fd5b506109db6126c4565b005b3480156109e957600080fd5b506109f26127ea565b005b348015610a0057600080fd5b50610a4360048036036020811015610a1757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612959565b60405180821515815260200191505060405180910390f35b348015610a6757600080fd5b50610a706129af565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b348015610aa857600080fd5b50610ab16129d8565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610af1578082015181840152602081019050610ad6565b50505050905090810190601f168015610b1e5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b348015610b3857600080fd5b50610b8560048036036040811015610b4f57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050612a7a565b60405180821515815260200191505060405180910390f35b348015610ba957600080fd5b50610bd660048036036020811015610bc057600080fd5b8101908080359060200190929190505050612b47565b005b348015610be457600080fd5b50610bed612c9d565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b348015610c2557600080fd5b50610c7260048036036040811015610c3c57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050612cc7565b60405180821515815260200191505060405180910390f35b348015610c9657600080fd5b50610ce560048036036040811015610cad57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803515159060200190929190505050612ce5565b005b348015610cf357600080fd5b50610d2060048036036020811015610d0a57600080fd5b8101908080359060200190929190505050612e08565b005b348015610d2e57600080fd5b50610d37612f5e565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b348015610d6f57600080fd5b50610dd260048036036040811015610d8657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612f88565b6040518082815260200191505060405180910390f35b6060600f8054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610e805780601f10610e5557610100808354040283529160200191610e80565b820191906000526020600020905b815481529060010190602001808311610e6357829003601f168201915b5050505050905090565b6000610e9e610e97613129565b8484613131565b6001905092915050565b6000600d54905090565b600069152d02c7e14af6800000905090565b610ecc613129565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610f8c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b633b9aca00811015610fe9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c815260200180614179602c913960400191505060405180910390fd5b80601c8190555050565b610ffb613129565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146110bb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b633b9aca00811015611118576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603e815260200180614284603e913960400191505060405180910390fd5b80601d8190555050565b600061112f848484613328565b6111f08461113b613129565b6111eb856040518060600160405280602881526020016141c660289139600560008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006111a1613129565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613a8a9092919063ffffffff16565b613131565b600190509392505050565b6000600b54821115611258576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602a815260200180614107602a913960400191505060405180910390fd5b6000611262613b4a565b9050611277818461309590919063ffffffff16565b915050919050565b611287613129565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611347576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b611359306113536129af565b83613131565b61136b306113656129af565b83613328565b50565b6000601160009054906101000a900460ff16905090565b61138d613129565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461144d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600760008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1661150c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f4163636f756e7420697320616c7265616479206578636c75646564000000000081525060200191505060405180910390fd5b60005b60098054905081101561170b578173ffffffffffffffffffffffffffffffffffffffff166009828154811061154057fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614156116fe5760096001600980549050038154811061159c57fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600982815481106115d457fe5b9060005260206000200160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060098054806116c457fe5b6001900381819060005260206000200160006101000a81549073ffffffffffffffffffffffffffffffffffffffff0219169055905561170b565b808060010191505061150f565b5050565b611717613129565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146117d7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b60011515600a60009054906101000a900460ff1615151415611813576000600a60006101000a81548160ff02191690831515021790555061182f565b6001600a60006101000a81548160ff0219169083151502179055505b565b60006118da61183e613129565b846118d5856005600061184f613129565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613b7590919063ffffffff16565b613131565b6001905092915050565b6118ec613129565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146119ac576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611a45576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260248152602001806142176024913960400191505060405180910390fd5b6001600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b600069152d02c7e14af6800000831115611b22576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f416d6f756e74206d757374206265206c657373207468616e20737570706c790081525060200191505060405180910390fd5b81611b42576000611b3284613bfd565b5050505050905080915050611b59565b6000611b4d84613bfd565b50505050915050809150505b92915050565b6000600a60009054906101000a900460ff16905090565b611b7e613129565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611c3e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611cd7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260228152602001806142c26022913960400191505060405180910390fd5b600760008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615611d97576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f4163636f756e7420697320616c7265616479206578636c75646564000000000081525060200191505060405180910390fd5b6000600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541115611e6b57611e27600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546111fb565b600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b6001600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506009819080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b611f87613129565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612047576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b60018110158015612059575060318111155b6120cb576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601a8152602001807f7461784665652073686f756c6420626520696e2031202d20343900000000000081525060200191505060405180910390fd5b8060128190555050565b6120dd613129565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461219d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b6001600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b6000600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b612249613129565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612309576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b612430613129565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146124f0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b6000600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b6000600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b6125a9613129565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612669576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b6000600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612786576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260158152602001807f6f776e6572206973207a65726f2061646472657373000000000000000000000081525060200191505060405180910390fd5b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b6127f2613129565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146128b2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b61290d600c54600460006128c4613129565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613b7590919063ffffffff16565b60046000612919613129565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550565b6000600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b606060108054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015612a705780601f10612a4557610100808354040283529160200191612a70565b820191906000526020600020905b815481529060010190602001808311612a5357829003601f168201915b5050505050905090565b6000612b3d612a87613129565b84612b38856040518060600160405280602581526020016142e46025913960056000612ab1613129565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613a8a9092919063ffffffff16565b613131565b6001905092915050565b612b4f613129565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612c0f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b60018110158015612c21575060318111155b612c93576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f6d61726b6574696e674665652073686f756c6420626520696e2031202d20313181525060200191505060405180910390fd5b8060138190555050565b6000601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6000612cdb612cd4613129565b8484613328565b6001905092915050565b612ced613129565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612dad576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b80600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b612e10613129565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612ed0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b60018110158015612ee2575060318111155b612f54576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f6c69717569646974794665652073686f756c6420626520696e2031202d20313181525060200191505060405180910390fd5b8060148190555050565b6000601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6000600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600080831415613022576000905061308f565b600082840290508284828161303357fe5b041461308a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260218152602001806141a56021913960400191505060405180910390fd5b809150505b92915050565b60006130d783836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250613c78565b905092915050565b600061312183836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250613a8a565b905092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156131b7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260248152602001806142606024913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561323d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260228152602001806141316022913960400191505060405180910390fd5b80600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040518082815260200191505060405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156133ae576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602581526020018061423b6025913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415613434576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260238152602001806140e46023913960400191505060405180910390fd5b6000811161348d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260298152602001806141ee6029913960400191505060405180910390fd5b600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168061352e5750600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b156135855760008114613584576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526000815260200160200191505060405180910390fd5b5b60011515600a60009054906101000a900460ff16151514806135d957506135aa6129af565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16145b8061361657506135e76129af565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b15613a2057600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156136be5750600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156138715761372f8160405180606001604052806026815260200161415360269139600460008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613a8a9092919063ffffffff16565b600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506137c481600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613b7590919063ffffffff16565b600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a3613a1b565b6138dd8160405180606001604052806026815260200161415360269139600460008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613a8a9092919063ffffffff16565b600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061397281600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613b7590919063ffffffff16565b600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a35b613a85565b60011515600a60009054906101000a900460ff16151514613a84576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526000815260200160200191505060405180910390fd5b5b505050565b6000838311158290613b37576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015613afc578082015181840152602081019050613ae1565b50505050905090810190601f168015613b295780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5060008385039050809150509392505050565b6000806000613b57613d3e565b91509150613b6e818361309590919063ffffffff16565b9250505090565b600080828401905083811015613bf3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b6000806000806000806000806000613c2e8a601254613c29601454601354613b7590919063ffffffff16565b613fef565b9250925092506000613c3e613b4a565b90506000806000613c508e8786614085565b9250925092508282828989899c509c509c509c509c509c505050505050505091939550919395565b60008083118290613d24576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015613ce9578082015181840152602081019050613cce565b50505050905090810190601f168015613d165780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b506000838581613d3057fe5b049050809150509392505050565b6000806000600b549050600069152d02c7e14af6800000905060005b600980549050811015613fa257826002600060098481548110613d7957fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541180613e605750816003600060098481548110613df857fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054115b15613e7f57600b5469152d02c7e14af680000094509450505050613feb565b613f086002600060098481548110613e9357fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054846130df90919063ffffffff16565b9250613f936003600060098481548110613f1e57fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054836130df90919063ffffffff16565b91508080600101915050613d5a565b50613fc269152d02c7e14af6800000600b5461309590919063ffffffff16565b821015613fe257600b5469152d02c7e14af6800000935093505050613feb565b81819350935050505b9091565b60008060008061401b606461400d888a61300f90919063ffffffff16565b61309590919063ffffffff16565b905060006140456064614037888b61300f90919063ffffffff16565b61309590919063ffffffff16565b9050600061406e87614060858c6130df90919063ffffffff16565b6130df90919063ffffffff16565b905080838395509550955050505093509350939050565b60008060008061409e858861300f90919063ffffffff16565b905060006140b5868861300f90919063ffffffff16565b905060006140cc82846130df90919063ffffffff16565b90508281839550955095505050509350935093905056fe45524332303a207472616e7366657220746f20746865207a65726f2061646472657373416d6f756e74206d757374206265206c657373207468616e20746f74616c207265666c656374696f6e7345524332303a20617070726f766520746f20746865207a65726f206164647265737345524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e63656d61785478416d6f756e742073686f756c642062652067726561746572207468616e20746f74616c20316539536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f7745524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e63655472616e7366657220616d6f756e74206d7573742062652067726561746572207468616e207a65726f57652063616e206e6f7420626c61636b6c69737420556e697377617020726f757465722e45524332303a207472616e736665722066726f6d20746865207a65726f206164647265737345524332303a20617070726f76652066726f6d20746865207a65726f20616464726573736e756d546f6b656e7353656c6c546f416464546f4c69717569646974792073686f756c642062652067726561746572207468616e20746f74616c2031653957652063616e206e6f74206578636c75646520556e697377617020726f757465722e45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa26469706673582212200b8277c9cd75698fd05fed988c68ca0f478c2c13d7f5a968c869604e9ba78a7364736f6c63430007000033416d6f756e74206d757374206265206c657373207468616e20746f74616c207265666c656374696f6e73536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f770000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d0000000000000000000000005c69bee701ef814a2b6a3edd4b1652cb9cc5aa6f
Deployed Bytecode
0x6080604052600436106102295760003560e01c806360a6f45a116101235780638da5cb5b116100ab578063a9059cbb1161006f578063a9059cbb14610c19578063af9549e014610c8a578063bcd6d44614610ce7578063cbc740aa14610d22578063dd62ed3e14610d6357610230565b80638da5cb5b14610a5b57806395d89b4114610a9c578063a457c2d714610b2c578063a52fe9bb14610b9d578063a55626cb14610bd857610230565b80637a997d7e116100f25780637a997d7e1461090e5780637ded4d6a14610975578063880ad0af146109c657806388a659bc146109dd57806388f82020146109f457610230565b806360a6f45a146107f057806370a0823114610841578063715018a6146108a657806377dd50e3146108bd57610230565b8063313ce567116101b15780634549b039116101755780634549b039146106755780634a74bb02146106d057806352390c02146106fd5780635342acb41461074e5780635880b873146107b557610230565b8063313ce5671461051d5780633685d4191461054b578063373f0a041461059c57806339509351146105b35780634303443d1461062457610230565b80631bbae6e0116101f85780631bbae6e01461038c5780631decaadc146103c757806323b872dd146104025780632d8381191461049357806330599fc5146104e257610230565b806306fdde0314610235578063095ea7b3146102c557806313114a9d1461033657806318160ddd1461036157610230565b3661023057005b600080fd5b34801561024157600080fd5b5061024a610de8565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561028a57808201518184015260208101905061026f565b50505050905090810190601f1680156102b75780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3480156102d157600080fd5b5061031e600480360360408110156102e857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610e8a565b60405180821515815260200191505060405180910390f35b34801561034257600080fd5b5061034b610ea8565b6040518082815260200191505060405180910390f35b34801561036d57600080fd5b50610376610eb2565b6040518082815260200191505060405180910390f35b34801561039857600080fd5b506103c5600480360360208110156103af57600080fd5b8101908080359060200190929190505050610ec4565b005b3480156103d357600080fd5b50610400600480360360208110156103ea57600080fd5b8101908080359060200190929190505050610ff3565b005b34801561040e57600080fd5b5061047b6004803603606081101561042557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611122565b60405180821515815260200191505060405180910390f35b34801561049f57600080fd5b506104cc600480360360208110156104b657600080fd5b81019080803590602001909291905050506111fb565b6040518082815260200191505060405180910390f35b3480156104ee57600080fd5b5061051b6004803603602081101561050557600080fd5b810190808035906020019092919050505061127f565b005b34801561052957600080fd5b5061053261136e565b604051808260ff16815260200191505060405180910390f35b34801561055757600080fd5b5061059a6004803603602081101561056e57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611385565b005b3480156105a857600080fd5b506105b161170f565b005b3480156105bf57600080fd5b5061060c600480360360408110156105d657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611831565b60405180821515815260200191505060405180910390f35b34801561063057600080fd5b506106736004803603602081101561064757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506118e4565b005b34801561068157600080fd5b506106ba6004803603604081101561069857600080fd5b8101908080359060200190929190803515159060200190929190505050611aa0565b6040518082815260200191505060405180910390f35b3480156106dc57600080fd5b506106e5611b5f565b60405180821515815260200191505060405180910390f35b34801561070957600080fd5b5061074c6004803603602081101561072057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611b76565b005b34801561075a57600080fd5b5061079d6004803603602081101561077157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611f29565b60405180821515815260200191505060405180910390f35b3480156107c157600080fd5b506107ee600480360360208110156107d857600080fd5b8101908080359060200190929190505050611f7f565b005b3480156107fc57600080fd5b5061083f6004803603602081101561081357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506120d5565b005b34801561084d57600080fd5b506108906004803603602081101561086457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506121f8565b6040518082815260200191505060405180910390f35b3480156108b257600080fd5b506108bb612241565b005b3480156108c957600080fd5b5061090c600480360360208110156108e057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612428565b005b34801561091a57600080fd5b5061095d6004803603602081101561093157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061254b565b60405180821515815260200191505060405180910390f35b34801561098157600080fd5b506109c46004803603602081101561099857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506125a1565b005b3480156109d257600080fd5b506109db6126c4565b005b3480156109e957600080fd5b506109f26127ea565b005b348015610a0057600080fd5b50610a4360048036036020811015610a1757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612959565b60405180821515815260200191505060405180910390f35b348015610a6757600080fd5b50610a706129af565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b348015610aa857600080fd5b50610ab16129d8565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610af1578082015181840152602081019050610ad6565b50505050905090810190601f168015610b1e5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b348015610b3857600080fd5b50610b8560048036036040811015610b4f57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050612a7a565b60405180821515815260200191505060405180910390f35b348015610ba957600080fd5b50610bd660048036036020811015610bc057600080fd5b8101908080359060200190929190505050612b47565b005b348015610be457600080fd5b50610bed612c9d565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b348015610c2557600080fd5b50610c7260048036036040811015610c3c57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050612cc7565b60405180821515815260200191505060405180910390f35b348015610c9657600080fd5b50610ce560048036036040811015610cad57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803515159060200190929190505050612ce5565b005b348015610cf357600080fd5b50610d2060048036036020811015610d0a57600080fd5b8101908080359060200190929190505050612e08565b005b348015610d2e57600080fd5b50610d37612f5e565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b348015610d6f57600080fd5b50610dd260048036036040811015610d8657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612f88565b6040518082815260200191505060405180910390f35b6060600f8054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610e805780601f10610e5557610100808354040283529160200191610e80565b820191906000526020600020905b815481529060010190602001808311610e6357829003601f168201915b5050505050905090565b6000610e9e610e97613129565b8484613131565b6001905092915050565b6000600d54905090565b600069152d02c7e14af6800000905090565b610ecc613129565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610f8c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b633b9aca00811015610fe9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c815260200180614179602c913960400191505060405180910390fd5b80601c8190555050565b610ffb613129565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146110bb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b633b9aca00811015611118576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603e815260200180614284603e913960400191505060405180910390fd5b80601d8190555050565b600061112f848484613328565b6111f08461113b613129565b6111eb856040518060600160405280602881526020016141c660289139600560008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006111a1613129565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613a8a9092919063ffffffff16565b613131565b600190509392505050565b6000600b54821115611258576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602a815260200180614107602a913960400191505060405180910390fd5b6000611262613b4a565b9050611277818461309590919063ffffffff16565b915050919050565b611287613129565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611347576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b611359306113536129af565b83613131565b61136b306113656129af565b83613328565b50565b6000601160009054906101000a900460ff16905090565b61138d613129565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461144d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600760008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1661150c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f4163636f756e7420697320616c7265616479206578636c75646564000000000081525060200191505060405180910390fd5b60005b60098054905081101561170b578173ffffffffffffffffffffffffffffffffffffffff166009828154811061154057fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614156116fe5760096001600980549050038154811061159c57fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600982815481106115d457fe5b9060005260206000200160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060098054806116c457fe5b6001900381819060005260206000200160006101000a81549073ffffffffffffffffffffffffffffffffffffffff0219169055905561170b565b808060010191505061150f565b5050565b611717613129565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146117d7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b60011515600a60009054906101000a900460ff1615151415611813576000600a60006101000a81548160ff02191690831515021790555061182f565b6001600a60006101000a81548160ff0219169083151502179055505b565b60006118da61183e613129565b846118d5856005600061184f613129565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613b7590919063ffffffff16565b613131565b6001905092915050565b6118ec613129565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146119ac576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611a45576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260248152602001806142176024913960400191505060405180910390fd5b6001600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b600069152d02c7e14af6800000831115611b22576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f416d6f756e74206d757374206265206c657373207468616e20737570706c790081525060200191505060405180910390fd5b81611b42576000611b3284613bfd565b5050505050905080915050611b59565b6000611b4d84613bfd565b50505050915050809150505b92915050565b6000600a60009054906101000a900460ff16905090565b611b7e613129565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611c3e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611cd7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260228152602001806142c26022913960400191505060405180910390fd5b600760008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615611d97576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f4163636f756e7420697320616c7265616479206578636c75646564000000000081525060200191505060405180910390fd5b6000600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541115611e6b57611e27600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546111fb565b600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b6001600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506009819080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b611f87613129565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612047576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b60018110158015612059575060318111155b6120cb576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601a8152602001807f7461784665652073686f756c6420626520696e2031202d20343900000000000081525060200191505060405180910390fd5b8060128190555050565b6120dd613129565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461219d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b6001600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b6000600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b612249613129565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612309576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b612430613129565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146124f0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b6000600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b6000600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b6125a9613129565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612669576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b6000600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612786576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260158152602001807f6f776e6572206973207a65726f2061646472657373000000000000000000000081525060200191505060405180910390fd5b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b6127f2613129565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146128b2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b61290d600c54600460006128c4613129565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613b7590919063ffffffff16565b60046000612919613129565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550565b6000600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b606060108054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015612a705780601f10612a4557610100808354040283529160200191612a70565b820191906000526020600020905b815481529060010190602001808311612a5357829003601f168201915b5050505050905090565b6000612b3d612a87613129565b84612b38856040518060600160405280602581526020016142e46025913960056000612ab1613129565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613a8a9092919063ffffffff16565b613131565b6001905092915050565b612b4f613129565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612c0f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b60018110158015612c21575060318111155b612c93576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f6d61726b6574696e674665652073686f756c6420626520696e2031202d20313181525060200191505060405180910390fd5b8060138190555050565b6000601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6000612cdb612cd4613129565b8484613328565b6001905092915050565b612ced613129565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612dad576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b80600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b612e10613129565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612ed0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b60018110158015612ee2575060318111155b612f54576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f6c69717569646974794665652073686f756c6420626520696e2031202d20313181525060200191505060405180910390fd5b8060148190555050565b6000601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6000600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600080831415613022576000905061308f565b600082840290508284828161303357fe5b041461308a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260218152602001806141a56021913960400191505060405180910390fd5b809150505b92915050565b60006130d783836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250613c78565b905092915050565b600061312183836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250613a8a565b905092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156131b7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260248152602001806142606024913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561323d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260228152602001806141316022913960400191505060405180910390fd5b80600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040518082815260200191505060405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156133ae576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602581526020018061423b6025913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415613434576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260238152602001806140e46023913960400191505060405180910390fd5b6000811161348d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260298152602001806141ee6029913960400191505060405180910390fd5b600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168061352e5750600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b156135855760008114613584576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526000815260200160200191505060405180910390fd5b5b60011515600a60009054906101000a900460ff16151514806135d957506135aa6129af565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16145b8061361657506135e76129af565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b15613a2057600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156136be5750600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156138715761372f8160405180606001604052806026815260200161415360269139600460008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613a8a9092919063ffffffff16565b600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506137c481600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613b7590919063ffffffff16565b600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a3613a1b565b6138dd8160405180606001604052806026815260200161415360269139600460008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613a8a9092919063ffffffff16565b600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061397281600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613b7590919063ffffffff16565b600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a35b613a85565b60011515600a60009054906101000a900460ff16151514613a84576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526000815260200160200191505060405180910390fd5b5b505050565b6000838311158290613b37576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015613afc578082015181840152602081019050613ae1565b50505050905090810190601f168015613b295780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5060008385039050809150509392505050565b6000806000613b57613d3e565b91509150613b6e818361309590919063ffffffff16565b9250505090565b600080828401905083811015613bf3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b6000806000806000806000806000613c2e8a601254613c29601454601354613b7590919063ffffffff16565b613fef565b9250925092506000613c3e613b4a565b90506000806000613c508e8786614085565b9250925092508282828989899c509c509c509c509c509c505050505050505091939550919395565b60008083118290613d24576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015613ce9578082015181840152602081019050613cce565b50505050905090810190601f168015613d165780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b506000838581613d3057fe5b049050809150509392505050565b6000806000600b549050600069152d02c7e14af6800000905060005b600980549050811015613fa257826002600060098481548110613d7957fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541180613e605750816003600060098481548110613df857fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054115b15613e7f57600b5469152d02c7e14af680000094509450505050613feb565b613f086002600060098481548110613e9357fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054846130df90919063ffffffff16565b9250613f936003600060098481548110613f1e57fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054836130df90919063ffffffff16565b91508080600101915050613d5a565b50613fc269152d02c7e14af6800000600b5461309590919063ffffffff16565b821015613fe257600b5469152d02c7e14af6800000935093505050613feb565b81819350935050505b9091565b60008060008061401b606461400d888a61300f90919063ffffffff16565b61309590919063ffffffff16565b905060006140456064614037888b61300f90919063ffffffff16565b61309590919063ffffffff16565b9050600061406e87614060858c6130df90919063ffffffff16565b6130df90919063ffffffff16565b905080838395509550955050505093509350939050565b60008060008061409e858861300f90919063ffffffff16565b905060006140b5868861300f90919063ffffffff16565b905060006140cc82846130df90919063ffffffff16565b90508281839550955095505050509350935093905056fe45524332303a207472616e7366657220746f20746865207a65726f2061646472657373416d6f756e74206d757374206265206c657373207468616e20746f74616c207265666c656374696f6e7345524332303a20617070726f766520746f20746865207a65726f206164647265737345524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e63656d61785478416d6f756e742073686f756c642062652067726561746572207468616e20746f74616c20316539536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f7745524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e63655472616e7366657220616d6f756e74206d7573742062652067726561746572207468616e207a65726f57652063616e206e6f7420626c61636b6c69737420556e697377617020726f757465722e45524332303a207472616e736665722066726f6d20746865207a65726f206164647265737345524332303a20617070726f76652066726f6d20746865207a65726f20616464726573736e756d546f6b656e7353656c6c546f416464546f4c69717569646974792073686f756c642062652067726561746572207468616e20746f74616c2031653957652063616e206e6f74206578636c75646520556e697377617020726f757465722e45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa26469706673582212200b8277c9cd75698fd05fed988c68ca0f478c2c13d7f5a968c869604e9ba78a7364736f6c63430007000033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d0000000000000000000000005c69bee701ef814a2b6a3edd4b1652cb9cc5aa6f
-----Decoded View---------------
Arg [0] : router (address): 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D
Arg [1] : factory (address): 0x5C69bEe701ef814a2B6a3EDD4B1652CB9cc5aA6f
-----Encoded View---------------
2 Constructor Arguments found :
Arg [0] : 0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d
Arg [1] : 0000000000000000000000005c69bee701ef814a2b6a3edd4b1652cb9cc5aa6f
Deployed Bytecode Sourcemap
23256:19604:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;25776:83;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;26608:161;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;27874:87;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;26053:95;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;42456:201;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;42139:309;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;26777:313;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;28772:253;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;42665:192;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;25962:83;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;29487:479;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;35137:134;;;;;;;;;;;;;:::i;:::-;;27098:218;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;29974;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;28328:436;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;35280:92;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;29033:446;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;30840:123;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;41524:169;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;34911:100;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;26156:118;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;15118:180;;;;;;;;;;;;;:::i;:::-;;34802:101;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;35019:110;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;30200:111;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;14421:141;;;;;;;;;;;;;:::i;:::-;;27969:129;;;;;;;;;;;;;:::i;:::-;;27601:120;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;14248:79;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;25867:87;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27324:269;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;41701:211;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;28222:98;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;26282:167;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;27729:137;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;41920:211;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;28110:100;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;26457:143;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;25776:83;25813:13;25846:5;25839:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;25776:83;:::o;26608:161::-;26683:4;26700:39;26709:12;:10;:12::i;:::-;26723:7;26732:6;26700:8;:39::i;:::-;26757:4;26750:11;;26608:161;;;;:::o;27874:87::-;27916:7;27943:10;;27936:17;;27874:87;:::o;26053:95::-;26106:7;23933:23;26126:14;;26053:95;:::o;42456:201::-;14704:12;:10;:12::i;:::-;14694:22;;:6;;;;;;;;;;:22;;;14686:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;42557:5:::1;42542:11;:20;;42534:78;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;42638:11;42623:12;:26;;;;42456:201:::0;:::o;42139:309::-;14704:12;:10;:12::i;:::-;14694:22;;:6;;;;;;;;;;:22;;;14686:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;42294:5:::1;42261:29;:38;;42253:114;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;42411:29;42378:30;:62;;;;42139:309:::0;:::o;26777:313::-;26875:4;26892:36;26902:6;26910:9;26921:6;26892:9;:36::i;:::-;26939:121;26948:6;26956:12;:10;:12::i;:::-;26970:89;27008:6;26970:89;;;;;;;;;;;;;;;;;:11;:19;26982:6;26970:19;;;;;;;;;;;;;;;:33;26990:12;:10;:12::i;:::-;26970:33;;;;;;;;;;;;;;;;:37;;:89;;;;;:::i;:::-;26939:8;:121::i;:::-;27078:4;27071:11;;26777:313;;;;;:::o;28772:253::-;28838:7;28877;;28866;:18;;28858:73;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;28942:19;28965:10;:8;:10::i;:::-;28942:33;;28993:24;29005:11;28993:7;:11;;:24;;;;:::i;:::-;28986:31;;;28772:253;;;:::o;42665:192::-;14704:12;:10;:12::i;:::-;14694:22;;:6;;;;;;;;;;:22;;;14686:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;42747:45:::1;42764:4;42771:7;:5;:7::i;:::-;42780:11;42747:8;:45::i;:::-;42803:46;42821:4;42828:7;:5;:7::i;:::-;42837:11;42803:9;:46::i;:::-;42665:192:::0;:::o;25962:83::-;26003:5;26028:9;;;;;;;;;;;26021:16;;25962:83;:::o;29487:479::-;14704:12;:10;:12::i;:::-;14694:22;;:6;;;;;;;;;;:22;;;14686:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;29569:11:::1;:20;29581:7;29569:20;;;;;;;;;;;;;;;;;;;;;;;;;29561:60;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;29637:9;29632:327;29656:9;:16;;;;29652:1;:20;29632:327;;;29714:7;29698:23;;:9;29708:1;29698:12;;;;;;;;;;;;;;;;;;;;;;;;;:23;;;29694:254;;;29757:9;29786:1;29767:9;:16;;;;:20;29757:31;;;;;;;;;;;;;;;;;;;;;;;;;29742:9;29752:1;29742:12;;;;;;;;;;;;;;;;:46;;;;;;;;;;;;;;;;;;29826:1;29807:7;:16;29815:7;29807:16;;;;;;;;;;;;;;;:20;;;;29869:5;29846:11;:20;29858:7;29846:20;;;;;;;;;;;;;;;;:28;;;;;;;;;;;;;;;;;;29893:9;:15;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;29927:5;;29694:254;29674:3;;;;;;;29632:327;;;;29487:479:::0;:::o;35137:134::-;14704:12;:10;:12::i;:::-;14694:22;;:6;;;;;;;;;;:22;;;14686:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;35219:4:::1;35209:14;;:6;;;;;;;;;;;:14;;;35205:59;;;35235:5;35226:6;;:14;;;;;;;;;;;;;;;;;;35205:59;;;35258:4;35249:6;;:13;;;;;;;;;;;;;;;;;;35205:59;35137:134::o:0;27098:218::-;27186:4;27203:83;27212:12;:10;:12::i;:::-;27226:7;27235:50;27274:10;27235:11;:25;27247:12;:10;:12::i;:::-;27235:25;;;;;;;;;;;;;;;:34;27261:7;27235:34;;;;;;;;;;;;;;;;:38;;:50;;;;:::i;:::-;27203:8;:83::i;:::-;27304:4;27297:11;;27098:218;;;;:::o;29974:::-;14704:12;:10;:12::i;:::-;14694:22;;:6;;;;;;;;;;:22;;;14686:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30069:42:::1;30058:53;;:7;:53;;;;30050:102;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30180:4;30163:5;:14;30169:7;30163:14;;;;;;;;;;;;;;;;:21;;;;;;;;;;;;;;;;;;29974:218:::0;:::o;28328:436::-;28418:7;23933:23;28446:7;:18;;28438:62;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;28516:17;28511:246;;28551:15;28575:19;28586:7;28575:10;:19::i;:::-;28550:44;;;;;;;28616:7;28609:14;;;;;28511:246;28658:23;28689:19;28700:7;28689:10;:19::i;:::-;28656:52;;;;;;;28730:15;28723:22;;;28328:436;;;;;:::o;35280:92::-;35334:4;35358:6;;;;;;;;;;;35351:13;;35280:92;:::o;29033:446::-;14704:12;:10;:12::i;:::-;14694:22;;:6;;;;;;;;;;:22;;;14686:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;29128:42:::1;29117:53;;:7;:53;;;;29109:100;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;29229:11;:20;29241:7;29229:20;;;;;;;;;;;;;;;;;;;;;;;;;29228:21;29220:61;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;29314:1;29295:7;:16;29303:7;29295:16;;;;;;;;;;;;;;;;:20;29292:108;;;29351:37;29371:7;:16;29379:7;29371:16;;;;;;;;;;;;;;;;29351:19;:37::i;:::-;29332:7;:16;29340:7;29332:16;;;;;;;;;;;;;;;:56;;;;29292:108;29433:4;29410:11;:20;29422:7;29410:20;;;;;;;;;;;;;;;;:27;;;;;;;;;;;;;;;;;;29448:9;29463:7;29448:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;29033:446:::0;:::o;30840:123::-;30904:4;30928:18;:27;30947:7;30928:27;;;;;;;;;;;;;;;;;;;;;;;;;30921:34;;30840:123;;;:::o;41524:169::-;14704:12;:10;:12::i;:::-;14694:22;;:6;;;;;;;;;;:22;;;14686:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;41610:1:::1;41600:6;:11;;:27;;;;;41625:2;41615:6;:12;;41600:27;41592:66;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;41679:6;41669:7;:16;;;;41524:169:::0;:::o;34911:100::-;14704:12;:10;:12::i;:::-;14694:22;;:6;;;;;;;;;;:22;;;14686:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;34999:4:::1;34981:5;:15;34987:8;34981:15;;;;;;;;;;;;;;;;:22;;;;;;;;;;;;;;;;;;34911:100:::0;:::o;26156:118::-;26222:7;26250;:16;26258:7;26250:16;;;;;;;;;;;;;;;;26243:23;;26156:118;;;:::o;15118:180::-;14704:12;:10;:12::i;:::-;14694:22;;:6;;;;;;;;;;:22;;;14686:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15198:6:::1;::::0;::::1;;;;;;;;15183:12;;:21;;;;;;;;;;;;;;;;;;15257:1;15220:40;;15241:6;::::0;::::1;;;;;;;;15220:40;;;;;;;;;;;;15288:1;15271:6:::0;::::1;:19;;;;;;;;;;;;;;;;;;15118:180::o:0;34802:101::-;14704:12;:10;:12::i;:::-;14694:22;;:6;;;;;;;;;;:22;;;14686:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;34890:5:::1;34872;:15;34878:8;34872:15;;;;;;;;;;;;;;;;:23;;;;;;;;;;;;;;;;;;34802:101:::0;:::o;35019:110::-;35082:4;35106:5;:15;35112:8;35106:15;;;;;;;;;;;;;;;;;;;;;;;;;35099:22;;35019:110;;;:::o;30200:111::-;14704:12;:10;:12::i;:::-;14694:22;;:6;;;;;;;;;;:22;;;14686:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30298:5:::1;30281;:14;30287:7;30281:14;;;;;;;;;;;;;;;;:22;;;;;;;;;;;;;;;;;;30200:111:::0;:::o;14421:141::-;14494:1;14476:20;;:6;;;;;;;;;;:20;;;14468:54;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14542:12;;;;;;;;;;;14533:6;;:21;;;;;;;;;;;;;;;;;;14421:141::o;27969:129::-;14704:12;:10;:12::i;:::-;14694:22;;:6;;;;;;;;;;:22;;;14686:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;28054:36:::1;28080:9;;28054:7;:21;28062:12;:10;:12::i;:::-;28054:21;;;;;;;;;;;;;;;;:25;;:36;;;;:::i;:::-;28030:7;:21;28038:12;:10;:12::i;:::-;28030:21;;;;;;;;;;;;;;;:60;;;;27969:129::o:0;27601:120::-;27669:4;27693:11;:20;27705:7;27693:20;;;;;;;;;;;;;;;;;;;;;;;;;27686:27;;27601:120;;;:::o;14248:79::-;14286:7;14313:6;;;;;;;;;;;14306:13;;14248:79;:::o;25867:87::-;25906:13;25939:7;25932:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;25867:87;:::o;27324:269::-;27417:4;27434:129;27443:12;:10;:12::i;:::-;27457:7;27466:96;27505:15;27466:96;;;;;;;;;;;;;;;;;:11;:25;27478:12;:10;:12::i;:::-;27466:25;;;;;;;;;;;;;;;:34;27492:7;27466:34;;;;;;;;;;;;;;;;:38;;:96;;;;;:::i;:::-;27434:8;:129::i;:::-;27581:4;27574:11;;27324:269;;;;:::o;41701:211::-;14704:12;:10;:12::i;:::-;14694:22;;:6;;;;;;;;;;:22;;;14686:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;41805:1:::1;41789:12;:17;;:39;;;;;41826:2;41810:12;:18;;41789:39;41781:84;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;41892:12;41876:13;:28;;;;41701:211:::0;:::o;28222:98::-;28270:7;28297:15;;;;;;;;;;;28290:22;;28222:98;:::o;26282:167::-;26360:4;26377:42;26387:12;:10;:12::i;:::-;26401:9;26412:6;26377:9;:42::i;:::-;26437:4;26430:11;;26282:167;;;;:::o;27729:137::-;14704:12;:10;:12::i;:::-;14694:22;;:6;;;;;;;;;;:22;;;14686:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27850:8:::1;27820:18;:27;27839:7;27820:27;;;;;;;;;;;;;;;;:38;;;;;;;;;;;;;;;;;;27729:137:::0;;:::o;41920:211::-;14704:12;:10;:12::i;:::-;14694:22;;:6;;;;;;;;;;:22;;;14686:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;42024:1:::1;42008:12;:17;;:39;;;;;42045:2;42029:12;:18;;42008:39;42000:84;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;42111:12;42095:13;:28;;;;41920:211:::0;:::o;28110:100::-;28159:7;28186:16;;;;;;;;;;;28179:23;;28110:100;:::o;26457:143::-;26538:7;26565:11;:18;26577:5;26565:18;;;;;;;;;;;;;;;:27;26584:7;26565:27;;;;;;;;;;;;;;;;26558:34;;26457:143;;;;:::o;4637:471::-;4695:7;4945:1;4940;:6;4936:47;;;4970:1;4963:8;;;;4936:47;4995:9;5011:1;5007;:5;4995:17;;5040:1;5035;5031;:5;;;;;;:10;5023:56;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5099:1;5092:8;;;4637:471;;;;;:::o;5573:132::-;5631:7;5658:39;5662:1;5665;5658:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;5651:46;;5573:132;;;;:::o;3765:136::-;3823:7;3850:43;3854:1;3857;3850:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;3843:50;;3765:136;;;;:::o;108:106::-;161:15;196:10;189:17;;108:106;:::o;30971:337::-;31081:1;31064:19;;:5;:19;;;;31056:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;31162:1;31143:21;;:7;:21;;;;31135:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;31246:6;31216:11;:18;31228:5;31216:18;;;;;;;;;;;;;;;:27;31235:7;31216:27;;;;;;;;;;;;;;;:36;;;;31284:7;31268:32;;31277:5;31268:32;;;31293:6;31268:32;;;;;;;;;;;;;;;;;;30971:337;;;:::o;31316:1095::-;31431:1;31413:20;;:6;:20;;;;31405:70;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;31515:1;31494:23;;:9;:23;;;;31486:71;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;31585:1;31576:6;:10;31568:64;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;31647:5;:13;31653:6;31647:13;;;;;;;;;;;;;;;;;;;;;;;;;:33;;;;31664:5;:16;31670:9;31664:16;;;;;;;;;;;;;;;;;;;;;;;;;31647:33;31643:73;;;31710:1;31700:6;:11;31692:24;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;31643:73;31741:4;31731:14;;:6;;;;;;;;;;;:14;;;:35;;;;31759:7;:5;:7::i;:::-;31749:17;;:6;:17;;;31731:35;:59;;;;31783:7;:5;:7::i;:::-;31770:20;;:9;:20;;;31731:59;31727:677;;;31807:18;:26;31826:6;31807:26;;;;;;;;;;;;;;;;;;;;;;;;;:60;;;;;31838:18;:29;31857:9;31838:29;;;;;;;;;;;;;;;;;;;;;;;;;31837:30;31807:60;31803:525;;;31898:69;31918:6;31898:69;;;;;;;;;;;;;;;;;:7;:15;31906:6;31898:15;;;;;;;;;;;;;;;;:19;;:69;;;;;:::i;:::-;31880:7;:15;31888:6;31880:15;;;;;;;;;;;;;;;:87;;;;31999:30;32022:6;31999:7;:18;32007:9;31999:18;;;;;;;;;;;;;;;;:22;;:30;;;;:::i;:::-;31978:7;:18;31986:9;31978:18;;;;;;;;;;;;;;;:51;;;;32062:9;32045:35;;32054:6;32045:35;;;32073:6;32045:35;;;;;;;;;;;;;;;;;;31803:525;;;32136:69;32156:6;32136:69;;;;;;;;;;;;;;;;;:7;:15;32144:6;32136:15;;;;;;;;;;;;;;;;:19;;:69;;;;;:::i;:::-;32118:7;:15;32126:6;32118:15;;;;;;;;;;;;;;;:87;;;;32241:30;32264:6;32241:7;:18;32249:9;32241:18;;;;;;;;;;;;;;;;:22;;:30;;;;:::i;:::-;32220:7;:18;32228:9;32220:18;;;;;;;;;;;;;;;:51;;;;32308:9;32291:35;;32300:6;32291:35;;;32319:6;32291:35;;;;;;;;;;;;;;;;;;31803:525;31727:677;;;32379:4;32369:14;;:6;;;;;;;;;;;:14;;;32360:28;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;31727:677;31316:1095;;;:::o;4195:192::-;4281:7;4314:1;4309;:6;;4317:12;4301:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4341:9;4357:1;4353;:5;4341:17;;4378:1;4371:8;;;4195:192;;;;;:::o;40594:163::-;40635:7;40656:15;40673;40692:19;:17;:19::i;:::-;40655:56;;;;40729:20;40741:7;40729;:11;;:20;;;;:::i;:::-;40722:27;;;;40594:163;:::o;3310:181::-;3368:7;3388:9;3404:1;3400;:5;3388:17;;3429:1;3424;:6;;3416:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3482:1;3475:8;;;3310:181;;;;:::o;39289:518::-;39348:7;39357;39366;39375;39384;39393;39414:23;39439:12;39453:30;39487:63;39499:7;39508;;39517:32;39535:13;;39517;;:17;;:32;;;;:::i;:::-;39487:11;:63::i;:::-;39413:137;;;;;;39561:19;39583:10;:8;:10::i;:::-;39561:32;;39605:15;39622:23;39647:12;39663:39;39675:7;39684:4;39690:11;39663;:39::i;:::-;39604:98;;;;;;39721:7;39730:15;39747:4;39753:15;39770:4;39776:22;39713:86;;;;;;;;;;;;;;;;;;;39289:518;;;;;;;:::o;6190:278::-;6276:7;6308:1;6304;:5;6311:12;6296:28;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6335:9;6351:1;6347;:5;;;;;;6335:17;;6459:1;6452:8;;;6190:278;;;;;:::o;40765:555::-;40815:7;40824;40844:15;40862:7;;40844:25;;40880:15;23933:23;40880:25;;40921:9;40916:289;40940:9;:16;;;;40936:1;:20;40916:289;;;41006:7;40982;:21;40990:9;41000:1;40990:12;;;;;;;;;;;;;;;;;;;;;;;;;40982:21;;;;;;;;;;;;;;;;:31;:66;;;;41041:7;41017;:21;41025:9;41035:1;41025:12;;;;;;;;;;;;;;;;;;;;;;;;;41017:21;;;;;;;;;;;;;;;;:31;40982:66;40978:97;;;41058:7;;23933:23;41050:25;;;;;;;;;40978:97;41100:34;41112:7;:21;41120:9;41130:1;41120:12;;;;;;;;;;;;;;;;;;;;;;;;;41112:21;;;;;;;;;;;;;;;;41100:7;:11;;:34;;;;:::i;:::-;41090:44;;41159:34;41171:7;:21;41179:9;41189:1;41179:12;;;;;;;;;;;;;;;;;;;;;;;;;41171:21;;;;;;;;;;;;;;;;41159:7;:11;;:34;;;;:::i;:::-;41149:44;;40958:3;;;;;;;40916:289;;;;41229:20;23933:23;41229:7;;:11;;:20;;;;:::i;:::-;41219:7;:30;41215:61;;;41259:7;;23933:23;41251:25;;;;;;;;41215:61;41295:7;41304;41287:25;;;;;;40765:555;;;:::o;39815:429::-;39922:7;39931;39940;39960:12;39975:28;39999:3;39975:19;39987:6;39975:7;:11;;:19;;;;:::i;:::-;:23;;:28;;;;:::i;:::-;39960:43;;40014:30;40047:43;40086:3;40047:34;40059:21;40047:7;:11;;:34;;;;:::i;:::-;:38;;:43;;;;:::i;:::-;40014:76;;40101:23;40127:44;40149:21;40127:17;40139:4;40127:7;:11;;:17;;;;:::i;:::-;:21;;:44;;;;:::i;:::-;40101:70;;40190:15;40207:4;40213:22;40182:54;;;;;;;;;39815:429;;;;;;;:::o;40252:334::-;40347:7;40356;40365;40385:15;40403:24;40415:11;40403:7;:11;;:24;;;;:::i;:::-;40385:42;;40438:12;40453:21;40462:11;40453:4;:8;;:21;;;;:::i;:::-;40438:36;;40485:23;40511:17;40523:4;40511:7;:11;;:17;;;;:::i;:::-;40485:43;;40547:7;40556:15;40573:4;40539:39;;;;;;;;;40252:334;;;;;;;:::o
Swarm Source
ipfs://0b8277c9cd75698fd05fed988c68ca0f478c2c13d7f5a968c869604e9ba78a73
Loading...
Loading
Loading...
Loading
[ Download: CSV Export ]
[ Download: CSV Export ]
A token is a representation of an on-chain or off-chain asset. The token page shows information such as price, total supply, holders, transfers and social links. Learn more about this page in our Knowledge Base.