ERC-20
Gaming
Overview
Max Total Supply
2,000,000,000 NFP
Holders
469 (0.00%)
Market
Onchain Market Cap
$0.00
Circulating Supply Market Cap
-
Other Info
Token Contract (WITH 9 Decimals)
Loading...
Loading
Loading...
Loading
Loading...
Loading
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
Contract Name:
ODC
Compiler Version
v0.8.11+commit.d7f03943
Optimization Enabled:
Yes with 200 runs
Other Settings:
default evmVersion
Contract Source Code (Solidity Standard Json-Input format)
// SPDX-License-Identifier: MIT pragma solidity ^0.8.4; abstract contract Context { function _msgSender() internal view virtual returns (address payable) { return payable(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 { function totalSupply() external view returns (uint256); function balanceOf(address account) external view returns (uint256); function transfer(address recipient, uint256 amount) external returns (bool); function allowance(address owner, address spender) external view returns (uint256); function approve(address spender, uint256 amount) external returns (bool); function transferFrom(address sender, address recipient, uint256 amount) external returns (bool); event Transfer(address indexed from, address indexed to, uint256 value); event Approval(address indexed owner, address indexed spender, uint256 value); } library SafeMath { function add(uint256 a, uint256 b) internal pure returns (uint256) { uint256 c = a + b; require(c >= a, "SafeMath: addition overflow"); return c; } function sub(uint256 a, uint256 b) internal pure returns (uint256) { return sub(a, b, "SafeMath: subtraction overflow"); } function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { require(b <= a, errorMessage); uint256 c = a - b; return c; } function mul(uint256 a, uint256 b) internal pure returns (uint256) { if (a == 0) { return 0; } uint256 c = a * b; require(c / a == b, "SafeMath: multiplication overflow"); return c; } function div(uint256 a, uint256 b) internal pure returns (uint256) { return div(a, b, "SafeMath: division by 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; } function mod(uint256 a, uint256 b) internal pure returns (uint256) { return mod(a, b, "SafeMath: modulo by zero"); } function mod(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { require(b != 0, errorMessage); return a % b; } } library Address { 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); } 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"); } function functionCall(address target, bytes memory data) internal returns (bytes memory) { return functionCall(target, data, "Address: low-level call failed"); } function functionCall(address target, bytes memory data, string memory errorMessage) internal returns (bytes memory) { return _functionCallWithValue(target, data, 0, errorMessage); } 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"); } 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"); (bool success, bytes memory returndata) = target.call{ value: weiValue }(data); if (success) { return returndata; } else { if (returndata.length > 0) { assembly { let returndata_size := mload(returndata) revert(add(32, returndata), returndata_size) } } else { revert(errorMessage); } } } } contract Ownable is Context { address private _owner; address private _previousOwner; uint256 private _lockTime; event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); constructor () { address msgSender = _msgSender(); _owner = msgSender; emit OwnershipTransferred(address(0), msgSender); } function owner() public view returns (address) { return _owner; } modifier onlyOwner() { require(_owner == _msgSender(), "Ownable: caller is not the owner"); _; } function renounceOwnership() public virtual onlyOwner { emit OwnershipTransferred(_owner, address(0)); _owner = address(0); } function transferOwnership(address newOwner) public virtual onlyOwner { require(newOwner != address(0), "Ownable: new owner is the zero address"); emit OwnershipTransferred(_owner, newOwner); _owner = newOwner; } } // pragma solidity >=0.5.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; } // pragma solidity >=0.5.0; 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 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 burn(address to) external returns (uint amount0, uint amount1); function swap(uint amount0Out, uint amount1Out, address to, bytes calldata data) external; function skim(address to) external; function sync() external; function initialize(address, address) external; } // pragma solidity >=0.6.2; interface 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); } // pragma solidity >=0.6.2; 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 ODC is Context, IERC20, Ownable { using SafeMath for uint256; using Address for address; address payable private treasuryWallet = payable(0xBbD5358D15eEcd098e49Fed583ad5C368bc43E24); // team Wallet mapping (address => mapping (address => uint256)) private _allowances; mapping (address => bool) private _isSniper; mapping (address => uint256) _balances; uint256 public deadBlocks = 2; uint256 public launchedAt; uint256 public thresholdPercent = 20; uint256 public thresholdDivisor = 1000; mapping (address => bool) private _isExcludedFromFee; mapping (address => bool) private _isMaxWalletExempt; mapping (address => bool) private _isTrusted; mapping (address => uint256) public nonces; address[] private _excluded; address DEAD = 0x000000000000000000000000000000000000dEaD; uint8 private _decimals = 9; uint256 private constant MAX = ~uint256(0); uint256 private _totalSupply = 2 * 10 ** 9 * 10 ** _decimals; string private _name = "New Frontier Presents"; string private _symbol = "NFP"; string private _version = "1"; uint256 public _maxWalletToken = _totalSupply.div(1000).mul(6); //0.6% for first hour uint256 public maxTx = _totalSupply.div(1000).mul(3); //0.3 for first hour uint256 public _buyLiquidityFee = 40; uint256 public _buytreasuryFee = 40; uint256 public _sellLiquidityFee = 100; uint256 public _selltreasuryFee = 100; uint256 private sellTotalFee = _sellLiquidityFee.add(_selltreasuryFee); //uint256 private currenttotalFee = sellTotalFee; IUniswapV2Router02 public uniswapV2Router; address public uniswapV2Pair; bool inSwap; bool public tradingOpen = false; bool public zeroBuyTaxmode = false; bool private antiBotmode = true; bool public maxTXEnabled = true; //eip 712 uint256 public immutable deploymentChainId; bytes32 private immutable _DOMAIN_SEPARATOR; bytes32 public constant PERMIT_TYPEHASH = keccak256("Permit(address owner,address spender,uint256 value,uint256 nonce,uint256 deadline)"); event SwapETHForTokens( uint256 amountIn, address[] path ); event SwapTokensForETH( uint256 amountIn, address[] path ); event AddLiquidity( uint256 tokenAmount, uint256 amountEth ); modifier lockTheSwap { inSwap = true; _; inSwap = false; } constructor () { _balances[msg.sender] = _totalSupply; IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D); uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory()) .createPair(address(this), _uniswapV2Router.WETH()); uniswapV2Router = _uniswapV2Router; _isExcludedFromFee[owner()] = true; _isExcludedFromFee[address(this)] = true; _isMaxWalletExempt[owner()] = true; _isMaxWalletExempt[address(this)] = true; _isMaxWalletExempt[uniswapV2Pair] = true; _isMaxWalletExempt[DEAD] = true; _isTrusted[owner()] = true; _isTrusted[uniswapV2Pair] = true; uint256 chainId; assembly {chainId := chainid()} deploymentChainId = chainId; _DOMAIN_SEPARATOR = _calculateDomainSeparator(chainId); emit Transfer(address(0), _msgSender(), _totalSupply); } // 712 function _calculateDomainSeparator(uint256 chainId) private view returns (bytes32) { return keccak256( abi.encode( keccak256( "EIP712Domain(string name,string version,uint256 chainId,address verifyingContract)" ), keccak256(bytes(_name)), keccak256(bytes(_version)), chainId, address(this) ) ); } function DOMAIN_SEPARATOR() external view returns (bytes32) { uint256 chainId; assembly { chainId := chainid() } return chainId == deploymentChainId ? _DOMAIN_SEPARATOR : _calculateDomainSeparator(chainId); } function balanceOf(address account) public view override returns (uint256) { return _balances[account]; } 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 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 totalSupply() public view override returns (uint256) { return _totalSupply; } 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 permit(address owner, address spender, uint256 value, uint256 deadline, uint8 v, bytes32 r, bytes32 s) external { require(block.timestamp <= deadline, "Permit-expired"); uint256 chainId; assembly {chainId := chainid()} bytes32 digest = keccak256(abi.encodePacked( "\x19\x01", chainId == deploymentChainId ? _DOMAIN_SEPARATOR : _calculateDomainSeparator(chainId), keccak256(abi.encode( PERMIT_TYPEHASH, owner, spender, value, nonces[owner]++, deadline )) )); require(owner != address(0) && owner == ecrecover(digest, v, r, s), "Invalid-permit"); _allowances[owner][spender] = value; emit Approval(owner, spender, value); } function _transfer( address from, address to, uint256 amount ) private { require(from != address(0), "ERC20: transfer from the zero address"); require(to != address(0), "ERC20: transfer to the zero address"); require(amount > 0, "Transfer amount must be greater than zero"); require(!_isSniper[to], "Sorry no Snippers"); require(!_isSniper[from], "Sorry no Snippers"); if (from!= owner() && to!= owner()){ require(tradingOpen, "Trading not enabled."); //transfers disabled before openTrading if(maxTXEnabled){ require(amount <= maxTx,"over max transaction"); } } uint256 currenttotalFee; //take fee on swaps if(launchedAt>0 && (!_isMaxWalletExempt[to] && from!= owner()) && ((launchedAt + 240) >= block.number) && antiBotmode){ require(amount+ balanceOf(to) <= _maxWalletToken, "Total Holding is currently limited"); } if(tradingOpen && to == uniswapV2Pair){//sell currenttotalFee = sellTotalFee; } if(tradingOpen && from == uniswapV2Pair) { //buy currenttotalFee= _buyLiquidityFee.add(_buytreasuryFee); } //antibot - first X blocks if(launchedAt>0 && (launchedAt + deadBlocks) > block.number){ _isSniper[to]=true; } //high slippage bot txns go through here if(launchedAt>0 && from!= owner() && block.number <= (launchedAt + deadBlocks) && antiBotmode){ currenttotalFee=900; //90% } if (_isExcludedFromFee[from] || _isExcludedFromFee[to] || from == owner()){//privileged currenttotalFee = 0; } if(zeroBuyTaxmode){ if(tradingOpen && from == uniswapV2Pair) { //buys currenttotalFee=0; } } //sell if (!inSwap && tradingOpen && to == uniswapV2Pair) { uint256 contractTokenBalance = balanceOf(address(this)); if(contractTokenBalance >= curentSwapThreshold()){ swapAndsendEth(); } } _transferStandard(from, to, amount, currenttotalFee); } function swapAndsendEth() private lockTheSwap{ uint256 amountToLiquify; if ( _sellLiquidityFee > 0 ){ amountToLiquify = curentSwapThreshold() .mul(_sellLiquidityFee) .div(sellTotalFee) .div(2); } swapTokensForEth(amountToLiquify); uint256 amountETH = address(this).balance; uint256 totalETHFee = sellTotalFee.sub(_sellLiquidityFee.div(2)); if (sellTotalFee > 0){ uint256 amountETHLiquidity = amountETH .mul(_sellLiquidityFee) .div(sellTotalFee) .div(2); //Send to treasury wallet and liquidity if(amountETH > 0) { uint256 marketingDevETHAllocation = amountETH .mul(_selltreasuryFee) .div(totalETHFee); (bool mSuccess,) = address(treasuryWallet).call{value: marketingDevETHAllocation}(""); require(mSuccess); emit Transfer(address(this),treasuryWallet, marketingDevETHAllocation); } if (amountToLiquify > 0) { addLiquidity(amountToLiquify,amountETHLiquidity); } } else{ if(amountETH > 0){ (bool mSuccess,) = address(treasuryWallet).call{value: amountETH}(""); require(mSuccess); emit Transfer(address(this),treasuryWallet, amountETH); } } } 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), // The contract block.timestamp ); emit SwapTokensForETH(tokenAmount, path); } 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 ); emit AddLiquidity(tokenAmount, ethAmount); } function _sendTransfer( address sender, address recipient, uint256 amount ) internal virtual { require(sender != address(0), "ERC20: transfer from the zero address"); require(recipient != address(0), "ERC20: transfer to the zero address"); uint256 senderBalance = _balances[sender]; require(senderBalance >= amount, "ERC20: transfer amount exceeds balance"); unchecked { _balances[sender] = senderBalance - amount; } _balances[recipient] += amount; emit Transfer(sender, recipient, amount); } function _transferStandard( address sender, address recipient, uint256 tAmount, uint256 curentTotalFee ) private { if (curentTotalFee == 0) { _sendTransfer(sender, recipient, tAmount); } else { uint256 calcualatedFee = tAmount.mul(curentTotalFee).div(10**3); uint256 amountForRecipient = tAmount.sub(calcualatedFee); _sendTransfer(sender, recipient, amountForRecipient); _sendTransfer(sender, address(this), calcualatedFee); } } function curentSwapThreshold() public view returns(uint256){ return (balanceOf(uniswapV2Pair).mul(thresholdPercent).div(thresholdDivisor)); } function transferToAddressETH(address payable recipient, uint256 amount) private { recipient.transfer(amount); } function isSniper(address account) public view returns (bool) { return _isSniper[account]; } function setMaxTx(uint256 amount) external onlyOwner{ maxTx = amount; } function toggleMaxTx(bool _state) external onlyOwner{ maxTXEnabled = _state; } function openTrading(bool _status,uint256 _deadBlocks) external onlyOwner() { tradingOpen = _status; if(tradingOpen && launchedAt == 0){ launchedAt = block.number; deadBlocks = _deadBlocks; } } function setZeroBuyTaxmode(bool _status) external onlyOwner() { zeroBuyTaxmode=_status; } function setAntiBotmode(bool _status) external onlyOwner() { antiBotmode=_status; } function setNewRouter(address newRouter) external onlyOwner() { IUniswapV2Router02 _newRouter = IUniswapV2Router02(newRouter); address get_pair = IUniswapV2Factory(_newRouter.factory()).getPair(address(this), _newRouter.WETH()); if (get_pair == address(0)) { uniswapV2Pair = IUniswapV2Factory(_newRouter.factory()).createPair(address(this), _newRouter.WETH()); } else { uniswapV2Pair = get_pair; } uniswapV2Router = _newRouter; } function manage_Snipers(address[] calldata addresses, bool status, bool _override) public onlyOwner { for (uint256 i; i < addresses.length; ++i) { if(!_isTrusted[addresses[i]] || _override){ _isSniper[addresses[i]] = status; } } } function excludeFromFee(address account) public onlyOwner { _isExcludedFromFee[account] = true; } function excludeMultiple(address[] calldata addresses) public onlyOwner { for (uint256 i; i < addresses.length; ++i) { _isExcludedFromFee[addresses[i]] = true; } } function includeInFee(address account) public onlyOwner { _isExcludedFromFee[account] = false; } function setTeamWallet(address _wallet) external onlyOwner() { treasuryWallet = payable(_wallet); } function manage_trusted(address[] calldata addresses) public onlyOwner { for (uint256 i; i < addresses.length; ++i) { _isTrusted[addresses[i]]=true; } } function withDrawLeftoverETH(address payable receipient) public onlyOwner { receipient.transfer(address(this).balance); } function withdrawStuckTokens(IERC20 token, address to) public onlyOwner { uint256 balance = token.balanceOf(address(this)); token.transfer(to, balance); } function setMaxWalletPercent_base1000(uint256 maxWallPercent_base1000) external onlyOwner() { _maxWalletToken = _totalSupply.div(1000).mul(maxWallPercent_base1000); } function setMaxWalletExempt(address _addr) external onlyOwner { _isMaxWalletExempt[_addr] = true; } function setSwapSettings(uint256 _thresholdPercent, uint256 _thresholdDivisor) external onlyOwner { thresholdPercent = _thresholdPercent; thresholdDivisor = _thresholdDivisor; } function manualSwapAndSend() public onlyOwner { swapTokensForEth(balanceOf(address(this))); (bool mSuccess,) = address(treasuryWallet).call{value: address(this).balance}(""); require(mSuccess); } function setTaxesBuy( uint256 _liquidityFee, uint256 _teamFee) external onlyOwner { _buyLiquidityFee = _liquidityFee; _buytreasuryFee = _teamFee; } function setTaxesSell(uint256 _liquidityFee, uint256 _devFee) external onlyOwner { _sellLiquidityFee = _liquidityFee; _selltreasuryFee = _devFee; sellTotalFee = _sellLiquidityFee.add(_selltreasuryFee); } //to recieve ETH from uniswapV2Router when swaping receive() external payable {} }
{ "optimizer": { "enabled": true, "runs": 200 }, "outputSelection": { "*": { "*": [ "evm.bytecode", "evm.deployedBytecode", "devdoc", "userdoc", "metadata", "abi" ] } }, "libraries": {} }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"tokenAmount","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amountEth","type":"uint256"}],"name":"AddLiquidity","type":"event"},{"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":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":"amountIn","type":"uint256"},{"indexed":false,"internalType":"address[]","name":"path","type":"address[]"}],"name":"SwapETHForTokens","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"amountIn","type":"uint256"},{"indexed":false,"internalType":"address[]","name":"path","type":"address[]"}],"name":"SwapTokensForETH","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":[],"name":"DOMAIN_SEPARATOR","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"PERMIT_TYPEHASH","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_buyLiquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_buytreasuryFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxWalletToken","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_sellLiquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_selltreasuryFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","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":"curentSwapThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"deadBlocks","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","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":[],"name":"deploymentChainId","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"excludeFromFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"addresses","type":"address[]"}],"name":"excludeMultiple","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"includeInFee","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":"isSniper","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"launchedAt","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"addresses","type":"address[]"},{"internalType":"bool","name":"status","type":"bool"},{"internalType":"bool","name":"_override","type":"bool"}],"name":"manage_Snipers","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"addresses","type":"address[]"}],"name":"manage_trusted","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"manualSwapAndSend","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"maxTXEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxTx","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"nonces","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bool","name":"_status","type":"bool"},{"internalType":"uint256","name":"_deadBlocks","type":"uint256"}],"name":"openTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"uint256","name":"deadline","type":"uint256"},{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"name":"permit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_status","type":"bool"}],"name":"setAntiBotmode","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"setMaxTx","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_addr","type":"address"}],"name":"setMaxWalletExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxWallPercent_base1000","type":"uint256"}],"name":"setMaxWalletPercent_base1000","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newRouter","type":"address"}],"name":"setNewRouter","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_thresholdPercent","type":"uint256"},{"internalType":"uint256","name":"_thresholdDivisor","type":"uint256"}],"name":"setSwapSettings","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_liquidityFee","type":"uint256"},{"internalType":"uint256","name":"_teamFee","type":"uint256"}],"name":"setTaxesBuy","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_liquidityFee","type":"uint256"},{"internalType":"uint256","name":"_devFee","type":"uint256"}],"name":"setTaxesSell","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_wallet","type":"address"}],"name":"setTeamWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_status","type":"bool"}],"name":"setZeroBuyTaxmode","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"thresholdDivisor","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"thresholdPercent","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bool","name":"_state","type":"bool"}],"name":"toggleMaxTx","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradingOpen","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","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":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address payable","name":"receipient","type":"address"}],"name":"withDrawLeftoverETH","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract IERC20","name":"token","type":"address"},{"internalType":"address","name":"to","type":"address"}],"name":"withdrawStuckTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"zeroBuyTaxmode","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
60c0604052600380546001600160a01b03191673bbd5358d15eecd098e49fed583ad5c368bc43e24179055600260075560146009556103e8600a908155601080547409000000000000000000000000000000000000dead6001600160a81b031990911617908190556200007e91600160a01b90910460ff169062000933565b6200008e90637735940062000944565b6011556040805180820190915260158082527f4e65772046726f6e746965722050726573656e747300000000000000000000006020909201918252620000d7916012916200077a565b506040805180820190915260038082526204e46560ec1b602090920191825262000104916013916200077a565b50604080518082019091526001808252603160f81b60209092019182526200012f916014916200077a565b50620001686006620001546103e86011546200056360201b62001c201790919060201c565b620005b660201b62001c691790919060201c565b6015556200018f6003620001546103e86011546200056360201b62001c201790919060201c565b6016556028601755602860185560646019556064601a55620001c4601a546019546200064160201b62001ce81790919060201c565b601b55601d805463ffffffff60a81b191661010160b81b179055348015620001eb57600080fd5b50600080546001600160a01b031916339081178255604051909182917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a3506011543360009081526006602090815260409182902092909255805163c45a015560e01b81529051737a250d5630b4cf539739df2c5dacb4c659f2488d92839263c45a015592600480830193928290030181865afa15801562000294573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002ba919062000966565b6001600160a01b031663c9c6539630836001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000308573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200032e919062000966565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af11580156200037c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003a2919062000966565b601d80546001600160a01b03199081166001600160a01b0393841617909155601c80549091169183169190911790556001600b6000620003ea6000546001600160a01b031690565b6001600160a01b0316815260208082019290925260409081016000908120805494151560ff19958616179055308152600b909252812080549092166001908117909255600c90620004436000546001600160a01b031690565b6001600160a01b03908116825260208083019390935260409182016000908120805495151560ff19968716179055308152600c909352818320805485166001908117909155601d54821684528284208054861682179055601054909116835290822080549093168117909255600d90620004c56000546001600160a01b031690565b6001600160a01b03908116825260208083019390935260409182016000908120805495151560ff19968716179055601d549091168152600d9092529020805490911660011790554660808190526200051d81620006a4565b60a05260115460405190815233906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a3505062000b08565b6000620005ad83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506200073e60201b60201c565b90505b92915050565b600082620005c757506000620005b0565b6000620005d5838562000944565b905082620005e4858362000991565b14620005ad5760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b60648201526084015b60405180910390fd5b600080620006508385620009b4565b905083811015620005ad5760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015260640162000638565b60007f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f6012604051620006d8919062000a0c565b60405180910390206014604051620006f1919062000a0c565b6040805191829003822060208301949094528101919091526060810191909152608081018390523060a082015260c001604051602081830303815290604052805190602001209050919050565b60008183620007625760405162461bcd60e51b815260040162000638919062000ab0565b50600062000771848662000991565b95945050505050565b8280546200078890620009cf565b90600052602060002090601f016020900481019282620007ac5760008555620007f7565b82601f10620007c757805160ff1916838001178555620007f7565b82800160010185558215620007f7579182015b82811115620007f7578251825591602001919060010190620007da565b506200080592915062000809565b5090565b5b808211156200080557600081556001016200080a565b634e487b7160e01b600052601160045260246000fd5b600181815b80851115620008775781600019048211156200085b576200085b62000820565b808516156200086957918102915b93841c93908002906200083b565b509250929050565b6000826200089057506001620005b0565b816200089f57506000620005b0565b8160018114620008b85760028114620008c357620008e3565b6001915050620005b0565b60ff841115620008d757620008d762000820565b50506001821b620005b0565b5060208310610133831016604e8410600b841016171562000908575081810a620005b0565b62000914838362000836565b80600019048211156200092b576200092b62000820565b029392505050565b6000620005ad60ff8416836200087f565b600081600019048311821515161562000961576200096162000820565b500290565b6000602082840312156200097957600080fd5b81516001600160a01b0381168114620005ad57600080fd5b600082620009af57634e487b7160e01b600052601260045260246000fd5b500490565b60008219821115620009ca57620009ca62000820565b500190565b600181811c90821680620009e457607f821691505b6020821081141562000a0657634e487b7160e01b600052602260045260246000fd5b50919050565b600080835481600182811c91508083168062000a2957607f831692505b602080841082141562000a4a57634e487b7160e01b86526022600452602486fd5b81801562000a61576001811462000a735762000aa2565b60ff1986168952848901965062000aa2565b60008a81526020902060005b8681101562000a9a5781548b82015290850190830162000a7f565b505084890196505b509498975050505050505050565b600060208083528351808285015260005b8181101562000adf5785810183015185820160400152820162000ac1565b8181111562000af2576000604083870101525b50601f01601f1916929092016040019392505050565b60805160a05161329262000b4360003960008181610e68015261159501526000818161094001528181610e33015261156001526132926000f3fe60806040526004361061036f5760003560e01c8063743942b6116101c6578063bc337182116100f7578063dc44b6a011610095578063eafb5a3c1161006f578063eafb5a3c14610a34578063f2fde38b14610a54578063fabb0b4f14610a74578063ffb54a9914610a8a57600080fd5b8063dc44b6a0146109b8578063dd62ed3e146109ce578063ea2f0b3714610a1457600080fd5b8063cd0d0096116100d1578063cd0d00961461092e578063cfc16cea14610962578063d222b31114610978578063d505accf1461099857600080fd5b8063bc337182146108d8578063bc7c0dd1146108f8578063bf56b3711461091857600080fd5b806394d79ce311610164578063a457c2d71161013e578063a457c2d714610863578063a525687b14610883578063a9059cbb14610898578063b8623f56146108b857600080fd5b806394d79ce31461081857806395d89b41146108385780639a76efb41461084d57600080fd5b806384530c46116101a057806384530c46146107a457806388790a68146107c45780638da5cb5b146107da5780638f4590d2146107f857600080fd5b8063743942b61461074157806378109e54146107615780637ecebe001461077757600080fd5b8063313ce567116102a057806349bd5a5e1161023e578063598769141161021857806359876914146106c057806370a08231146106e0578063715018a6146107165780637437681e1461072b57600080fd5b806349bd5a5e1461065f5780634b01547f1461067f5780634e45e92a1461069f57600080fd5b80633ddf65ab1161027a5780633ddf65ab146105f45780633ee0ce0214610614578063437823ec1461062957806344cbf0541461064957600080fd5b8063313ce567146105935780633644e515146105bf57806339509351146105d457600080fd5b806323b872dd1161030d5780632d4103d6116102e75780632d4103d6146105095780632dd5efe7146105295780632e2c01451461054957806330adf81f1461055f57600080fd5b806323b872dd146104a857806325b86edf146104c85780632691bc80146104e857600080fd5b80630f3a325f116103495780630f3a325f146103f85780631525ff7d146104315780631694505e1461045157806318160ddd1461048957600080fd5b806306fdde031461037b57806309302dc6146103a6578063095ea7b3146103c857600080fd5b3661037657005b600080fd5b34801561038757600080fd5b50610390610aab565b60405161039d9190612b84565b60405180910390f35b3480156103b257600080fd5b506103c66103c1366004612bd9565b610b3d565b005b3480156103d457600080fd5b506103e86103e3366004612c07565b610b97565b604051901515815260200161039d565b34801561040457600080fd5b506103e8610413366004612c33565b6001600160a01b031660009081526005602052604090205460ff1690565b34801561043d57600080fd5b506103c661044c366004612c33565b610bae565b34801561045d57600080fd5b50601c54610471906001600160a01b031681565b6040516001600160a01b03909116815260200161039d565b34801561049557600080fd5b506011545b60405190815260200161039d565b3480156104b457600080fd5b506103e86104c3366004612c50565b610bfa565b3480156104d457600080fd5b506103c66104e3366004612c91565b610c63565b3480156104f457600080fd5b50601d546103e890600160b01b900460ff1681565b34801561051557600080fd5b506103c6610524366004612cd8565b610d75565b34801561053557600080fd5b506103c6610544366004612c33565b610de0565b34801561055557600080fd5b5061049a601a5481565b34801561056b57600080fd5b5061049a7f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c981565b34801561059f57600080fd5b50601054600160a01b900460ff1660405160ff909116815260200161039d565b3480156105cb57600080fd5b5061049a610e2e565b3480156105e057600080fd5b506103e86105ef366004612c07565b610e8e565b34801561060057600080fd5b506103c661060f366004612cf6565b610ec4565b34801561062057600080fd5b506103c6610f0c565b34801561063557600080fd5b506103c6610644366004612c33565b610fb2565b34801561065557600080fd5b5061049a600a5481565b34801561066b57600080fd5b50601d54610471906001600160a01b031681565b34801561068b57600080fd5b506103c661069a366004612cf6565b611000565b3480156106ab57600080fd5b50601d546103e890600160c01b900460ff1681565b3480156106cc57600080fd5b506103c66106db366004612d13565b611048565b3480156106ec57600080fd5b5061049a6106fb366004612c33565b6001600160a01b031660009081526006602052604090205490565b34801561072257600080fd5b506103c661107d565b34801561073757600080fd5b5061049a60165481565b34801561074d57600080fd5b506103c661075c366004612c33565b6110f1565b34801561076d57600080fd5b5061049a60155481565b34801561078357600080fd5b5061049a610792366004612c33565b600e6020526000908152604090205481565b3480156107b057600080fd5b506103c66107bf366004612d81565b611150565b3480156107d057600080fd5b5061049a60195481565b3480156107e657600080fd5b506000546001600160a01b0316610471565b34801561080457600080fd5b506103c6610813366004612d13565b6111ef565b34801561082457600080fd5b506103c6610833366004612d81565b611224565b34801561084457600080fd5b506103906112be565b34801561085957600080fd5b5061049a60185481565b34801561086f57600080fd5b506103e861087e366004612c07565b6112cd565b34801561088f57600080fd5b5061049a61131c565b3480156108a457600080fd5b506103e86108b3366004612c07565b61135a565b3480156108c457600080fd5b506103c66108d3366004612dc3565b611367565b3480156108e457600080fd5b506103c66108f3366004612bd9565b61145e565b34801561090457600080fd5b506103c6610913366004612d13565b61148d565b34801561092457600080fd5b5061049a60085481565b34801561093a57600080fd5b5061049a7f000000000000000000000000000000000000000000000000000000000000000081565b34801561096e57600080fd5b5061049a60095481565b34801561098457600080fd5b506103c6610993366004612cf6565b6114d2565b3480156109a457600080fd5b506103c66109b3366004612e2b565b61151a565b3480156109c457600080fd5b5061049a60175481565b3480156109da57600080fd5b5061049a6109e9366004612c91565b6001600160a01b03918216600090815260046020908152604080832093909416825291909152205490565b348015610a2057600080fd5b506103c6610a2f366004612c33565b6117bf565b348015610a4057600080fd5b506103c6610a4f366004612c33565b61180a565b348015610a6057600080fd5b506103c6610a6f366004612c33565b611b36565b348015610a8057600080fd5b5061049a60075481565b348015610a9657600080fd5b50601d546103e890600160a81b900460ff1681565b606060128054610aba90612ea2565b80601f0160208091040260200160405190810160405280929190818152602001828054610ae690612ea2565b8015610b335780601f10610b0857610100808354040283529160200191610b33565b820191906000526020600020905b815481529060010190602001808311610b1657829003601f168201915b5050505050905090565b6000546001600160a01b03163314610b705760405162461bcd60e51b8152600401610b6790612edd565b60405180910390fd5b610b9181610b8b6103e8601154611c2090919063ffffffff16565b90611c69565b60155550565b6000610ba4338484611d47565b5060015b92915050565b6000546001600160a01b03163314610bd85760405162461bcd60e51b8152600401610b6790612edd565b600380546001600160a01b0319166001600160a01b0392909216919091179055565b6000610c07848484611e6b565b610c598433610c5485604051806060016040528060288152602001613210602891396001600160a01b038a16600090815260046020908152604080832033845290915290205491906123cd565b611d47565b5060019392505050565b6000546001600160a01b03163314610c8d5760405162461bcd60e51b8152600401610b6790612edd565b6040516370a0823160e01b81523060048201526000906001600160a01b038416906370a0823190602401602060405180830381865afa158015610cd4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cf89190612f12565b60405163a9059cbb60e01b81526001600160a01b038481166004830152602482018390529192509084169063a9059cbb906044016020604051808303816000875af1158015610d4b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d6f9190612f2b565b50505050565b6000546001600160a01b03163314610d9f5760405162461bcd60e51b8152600401610b6790612edd565b601d805460ff60a81b1916600160a81b8415158102919091179182905560ff9104168015610dcd5750600854155b15610ddc574360085560078190555b5050565b6000546001600160a01b03163314610e0a5760405162461bcd60e51b8152600401610b6790612edd565b6001600160a01b03166000908152600c60205260409020805460ff19166001179055565b6000467f00000000000000000000000000000000000000000000000000000000000000008114610e6657610e6181612407565b610e88565b7f00000000000000000000000000000000000000000000000000000000000000005b91505090565b3360008181526004602090815260408083206001600160a01b03871684529091528120549091610ba4918590610c549086611ce8565b6000546001600160a01b03163314610eee5760405162461bcd60e51b8152600401610b6790612edd565b601d8054911515600160b81b0260ff60b81b19909216919091179055565b6000546001600160a01b03163314610f365760405162461bcd60e51b8152600401610b6790612edd565b30600090815260066020526040902054610f4f9061249d565b6003546040516000916001600160a01b03169047908381818185875af1925050503d8060008114610f9c576040519150601f19603f3d011682016040523d82523d6000602084013e610fa1565b606091505b5050905080610faf57600080fd5b50565b6000546001600160a01b03163314610fdc5760405162461bcd60e51b8152600401610b6790612edd565b6001600160a01b03166000908152600b60205260409020805460ff19166001179055565b6000546001600160a01b0316331461102a5760405162461bcd60e51b8152600401610b6790612edd565b601d8054911515600160b01b0260ff60b01b19909216919091179055565b6000546001600160a01b031633146110725760405162461bcd60e51b8152600401610b6790612edd565b601791909155601855565b6000546001600160a01b031633146110a75760405162461bcd60e51b8152600401610b6790612edd565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6000546001600160a01b0316331461111b5760405162461bcd60e51b8152600401610b6790612edd565b6040516001600160a01b038216904780156108fc02916000818181858888f19350505050158015610ddc573d6000803e3d6000fd5b6000546001600160a01b0316331461117a5760405162461bcd60e51b8152600401610b6790612edd565b60005b818110156111ea576001600d600085858581811061119d5761119d612f48565b90506020020160208101906111b29190612c33565b6001600160a01b031681526020810191909152604001600020805460ff19169115159190911790556111e381612f74565b905061117d565b505050565b6000546001600160a01b031633146112195760405162461bcd60e51b8152600401610b6790612edd565b600991909155600a55565b6000546001600160a01b0316331461124e5760405162461bcd60e51b8152600401610b6790612edd565b60005b818110156111ea576001600b600085858581811061127157611271612f48565b90506020020160208101906112869190612c33565b6001600160a01b031681526020810191909152604001600020805460ff19169115159190911790556112b781612f74565b9050611251565b606060138054610aba90612ea2565b6000610ba43384610c5485604051806060016040528060258152602001613238602591393360009081526004602090815260408083206001600160a01b038d16845290915290205491906123cd565b600a54600954601d546001600160a01b0316600090815260066020526040812054909261135592909161134f9190610b8b565b90611c20565b905090565b6000610ba4338484611e6b565b6000546001600160a01b031633146113915760405162461bcd60e51b8152600401610b6790612edd565b60005b8381101561145757600d60008686848181106113b2576113b2612f48565b90506020020160208101906113c79190612c33565b6001600160a01b0316815260208101919091526040016000205460ff1615806113ed5750815b1561144757826005600087878581811061140957611409612f48565b905060200201602081019061141e9190612c33565b6001600160a01b031681526020810191909152604001600020805460ff19169115159190911790555b61145081612f74565b9050611394565b5050505050565b6000546001600160a01b031633146114885760405162461bcd60e51b8152600401610b6790612edd565b601655565b6000546001600160a01b031633146114b75760405162461bcd60e51b8152600401610b6790612edd565b6019829055601a8190556114cb8282611ce8565b601b555050565b6000546001600160a01b031633146114fc5760405162461bcd60e51b8152600401610b6790612edd565b601d8054911515600160c01b0260ff60c01b19909216919091179055565b8342111561155b5760405162461bcd60e51b815260206004820152600e60248201526d14195c9b5a5d0b595e1c1a5c995960921b6044820152606401610b67565b4660007f000000000000000000000000000000000000000000000000000000000000000082146115935761158e82612407565b6115b5565b7f00000000000000000000000000000000000000000000000000000000000000005b6001600160a01b038a166000908152600e6020526040812080547f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c9928d928d928d9290919061160383612f74565b909155506040805160208101969096526001600160a01b0394851690860152929091166060840152608083015260a082015260c0810188905260e0016040516020818303038152906040528051906020012060405160200161167c92919061190160f01b81526002810192909252602282015260420190565b60408051601f19818403018152919052805160209091012090506001600160a01b0389161580159061171b575060408051600081526020810180835283905260ff871691810191909152606081018590526080810184905260019060a0016020604051602081039080840390855afa1580156116fc573d6000803e3d6000fd5b505050602060405103516001600160a01b0316896001600160a01b0316145b6117585760405162461bcd60e51b815260206004820152600e60248201526d125b9d985b1a590b5c195c9b5a5d60921b6044820152606401610b67565b6001600160a01b038981166000818152600460209081526040808320948d16808452948252918290208b905590518a81527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050505050505050565b6000546001600160a01b031633146117e95760405162461bcd60e51b8152600401610b6790612edd565b6001600160a01b03166000908152600b60205260409020805460ff19169055565b6000546001600160a01b031633146118345760405162461bcd60e51b8152600401610b6790612edd565b60008190506000816001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015611879573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061189d9190612f8f565b6001600160a01b031663e6a4390530846001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156118ea573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061190e9190612f8f565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381865afa158015611959573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061197d9190612f8f565b90506001600160a01b038116611af657816001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156119cb573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119ef9190612f8f565b6001600160a01b031663c9c6539630846001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611a3c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a609190612f8f565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af1158015611aad573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ad19190612f8f565b601d80546001600160a01b0319166001600160a01b0392909216919091179055611b12565b601d80546001600160a01b0319166001600160a01b0383161790555b50601c80546001600160a01b0319166001600160a01b039290921691909117905550565b6000546001600160a01b03163314611b605760405162461bcd60e51b8152600401610b6790612edd565b6001600160a01b038116611bc55760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610b67565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6000611c6283836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612630565b9392505050565b600082611c7857506000610ba8565b6000611c848385612fac565b905082611c918583612fcb565b14611c625760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b6064820152608401610b67565b600080611cf58385612fed565b905083811015611c625760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006044820152606401610b67565b6001600160a01b038316611da95760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610b67565b6001600160a01b038216611e0a5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610b67565b6001600160a01b0383811660008181526004602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b038316611e915760405162461bcd60e51b8152600401610b6790613005565b6001600160a01b038216611eb75760405162461bcd60e51b8152600401610b679061304a565b60008111611f195760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b6064820152608401610b67565b6001600160a01b03821660009081526005602052604090205460ff1615611f765760405162461bcd60e51b8152602060048201526011602482015270536f727279206e6f20536e69707065727360781b6044820152606401610b67565b6001600160a01b03831660009081526005602052604090205460ff1615611fd35760405162461bcd60e51b8152602060048201526011602482015270536f727279206e6f20536e69707065727360781b6044820152606401610b67565b6000546001600160a01b03848116911614801590611fff57506000546001600160a01b03838116911614155b156120af57601d54600160a81b900460ff166120545760405162461bcd60e51b81526020600482015260146024820152732a3930b234b733903737ba1032b730b13632b21760611b6044820152606401610b67565b601d54600160c01b900460ff16156120af576016548111156120af5760405162461bcd60e51b815260206004820152601460248201527337bb32b91036b0bc103a3930b739b0b1ba34b7b760611b6044820152606401610b67565b6000806008541180156120f457506001600160a01b0383166000908152600c602052604090205460ff161580156120f457506000546001600160a01b03858116911614155b801561210e57504360085460f061210b9190612fed565b10155b80156121235750601d54600160b81b900460ff165b156121a7576015546001600160a01b03841660009081526006602052604090205461214e9084612fed565b11156121a75760405162461bcd60e51b815260206004820152602260248201527f546f74616c20486f6c64696e672069732063757272656e746c79206c696d6974604482015261195960f21b6064820152608401610b67565b601d54600160a81b900460ff1680156121cd5750601d546001600160a01b038481169116145b156121d75750601b545b601d54600160a81b900460ff1680156121fd5750601d546001600160a01b038581169116145b156122145760185460175461221191611ce8565b90505b60006008541180156122345750436007546008546122329190612fed565b115b1561225d576001600160a01b0383166000908152600560205260409020805460ff191660011790555b600060085411801561227d57506000546001600160a01b03858116911614155b801561229857506007546008546122949190612fed565b4311155b80156122ad5750601d54600160b81b900460ff165b156122b757506103845b6001600160a01b0384166000908152600b602052604090205460ff16806122f657506001600160a01b0383166000908152600b602052604090205460ff165b8061230e57506000546001600160a01b038581169116145b15612317575060005b601d54600160b01b900460ff161561235857601d54600160a81b900460ff16801561234f5750601d546001600160a01b038581169116145b15612358575060005b601d54600160a01b900460ff1615801561237b5750601d54600160a81b900460ff165b80156123945750601d546001600160a01b038481169116145b156123c157306000908152600660205260409020546123b161131c565b81106123bf576123bf61265e565b505b610d6f84848484612891565b600081848411156123f15760405162461bcd60e51b8152600401610b679190612b84565b5060006123fe848661308d565b95945050505050565b60007f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f601260405161243991906130a4565b6040518091039020601460405161245091906130a4565b6040805191829003822060208301949094528101919091526060810191909152608081018390523060a082015260c001604051602081830303815290604052805190602001209050919050565b60408051600280825260608201835260009260208301908036833701905050905030816000815181106124d2576124d2612f48565b6001600160a01b03928316602091820292909201810191909152601c54604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa15801561252b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061254f9190612f8f565b8160018151811061256257612562612f48565b6001600160a01b039283166020918202929092010152601c546125889130911684611d47565b601c5460405163791ac94760e01b81526001600160a01b039091169063791ac947906125c1908590600090869030904290600401613184565b600060405180830381600087803b1580156125db57600080fd5b505af11580156125ef573d6000803e3d6000fd5b505050507f32cde87eb454f3a0b875ab23547023107cfad454363ec88ba5695e2c24aa52a782826040516126249291906131c0565b60405180910390a15050565b600081836126515760405162461bcd60e51b8152600401610b679190612b84565b5060006123fe8486612fcb565b601d805460ff60a01b1916600160a01b1790556019546000901561269857612695600261134f601b5461134f601954610b8b61131c565b90505b6126a18161249d565b60195447906000906126c1906126b8906002611c20565b601b54906128e6565b601b54909150156127d35760006126ee600261134f601b5461134f60195488611c6990919063ffffffff16565b905082156127bd5760006127118361134f601a5487611c6990919063ffffffff16565b6003546040519192506000916001600160a01b039091169083908381818185875af1925050503d8060008114612763576040519150601f19603f3d011682016040523d82523d6000602084013e612768565b606091505b505090508061277657600080fd5b6003546040518381526001600160a01b039091169030907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a350505b83156127cd576127cd8482612928565b5061287f565b811561287f576003546040516000916001600160a01b03169084908381818185875af1925050503d8060008114612826576040519150601f19603f3d011682016040523d82523d6000602084013e61282b565b606091505b505090508061283957600080fd5b6003546040518481526001600160a01b039091169030907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a3505b5050601d805460ff60a01b1916905550565b806128a6576128a1848484612a2f565b610d6f565b60006128b86103e861134f8585611c69565b905060006128c684836128e6565b90506128d3868683612a2f565b6128de863084612a2f565b505050505050565b6000611c6283836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506123cd565b601c546129409030906001600160a01b031684611d47565b601c546001600160a01b031663f305d7198230856000806129696000546001600160a01b031690565b60405160e088901b6001600160e01b03191681526001600160a01b03958616600482015260248101949094526044840192909252606483015290911660848201524260a482015260c40160606040518083038185885af11580156129d1573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906129f691906131e1565b505060408051848152602081018490527fcb1652de9aeec38545fc281847b3dbfc89aab56dfa907b1ab68466f602c36fb4925001612624565b6001600160a01b038316612a555760405162461bcd60e51b8152600401610b6790613005565b6001600160a01b038216612a7b5760405162461bcd60e51b8152600401610b679061304a565b6001600160a01b03831660009081526006602052604090205481811015612af35760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608401610b67565b6001600160a01b03808516600090815260066020526040808220858503905591851681529081208054849290612b2a908490612fed565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051612b7691815260200190565b60405180910390a350505050565b600060208083528351808285015260005b81811015612bb157858101830151858201604001528201612b95565b81811115612bc3576000604083870101525b50601f01601f1916929092016040019392505050565b600060208284031215612beb57600080fd5b5035919050565b6001600160a01b0381168114610faf57600080fd5b60008060408385031215612c1a57600080fd5b8235612c2581612bf2565b946020939093013593505050565b600060208284031215612c4557600080fd5b8135611c6281612bf2565b600080600060608486031215612c6557600080fd5b8335612c7081612bf2565b92506020840135612c8081612bf2565b929592945050506040919091013590565b60008060408385031215612ca457600080fd5b8235612caf81612bf2565b91506020830135612cbf81612bf2565b809150509250929050565b8015158114610faf57600080fd5b60008060408385031215612ceb57600080fd5b8235612c2581612cca565b600060208284031215612d0857600080fd5b8135611c6281612cca565b60008060408385031215612d2657600080fd5b50508035926020909101359150565b60008083601f840112612d4757600080fd5b50813567ffffffffffffffff811115612d5f57600080fd5b6020830191508360208260051b8501011115612d7a57600080fd5b9250929050565b60008060208385031215612d9457600080fd5b823567ffffffffffffffff811115612dab57600080fd5b612db785828601612d35565b90969095509350505050565b60008060008060608587031215612dd957600080fd5b843567ffffffffffffffff811115612df057600080fd5b612dfc87828801612d35565b9095509350506020850135612e1081612cca565b91506040850135612e2081612cca565b939692955090935050565b600080600080600080600060e0888a031215612e4657600080fd5b8735612e5181612bf2565b96506020880135612e6181612bf2565b95506040880135945060608801359350608088013560ff81168114612e8557600080fd5b9699959850939692959460a0840135945060c09093013592915050565b600181811c90821680612eb657607f821691505b60208210811415612ed757634e487b7160e01b600052602260045260246000fd5b50919050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b600060208284031215612f2457600080fd5b5051919050565b600060208284031215612f3d57600080fd5b8151611c6281612cca565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b6000600019821415612f8857612f88612f5e565b5060010190565b600060208284031215612fa157600080fd5b8151611c6281612bf2565b6000816000190483118215151615612fc657612fc6612f5e565b500290565b600082612fe857634e487b7160e01b600052601260045260246000fd5b500490565b6000821982111561300057613000612f5e565b500190565b60208082526025908201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604082015264647265737360d81b606082015260800190565b60208082526023908201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260408201526265737360e81b606082015260800190565b60008282101561309f5761309f612f5e565b500390565b600080835481600182811c9150808316806130c057607f831692505b60208084108214156130e057634e487b7160e01b86526022600452602486fd5b8180156130f4576001811461310557613132565b60ff19861689528489019650613132565b60008a81526020902060005b8681101561312a5781548b820152908501908301613111565b505084890196505b509498975050505050505050565b600081518084526020808501945080840160005b838110156131795781516001600160a01b031687529582019590820190600101613154565b509495945050505050565b85815284602082015260a0604082015260006131a360a0830186613140565b6001600160a01b0394909416606083015250608001529392505050565b8281526040602082015260006131d96040830184613140565b949350505050565b6000806000606084860312156131f657600080fd5b835192506020840151915060408401519050925092509256fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220648df48b9ea6511e30078b3b5f2b88300edce668d9e92831581cf576a35e99c564736f6c634300080b0033
Deployed Bytecode
0x60806040526004361061036f5760003560e01c8063743942b6116101c6578063bc337182116100f7578063dc44b6a011610095578063eafb5a3c1161006f578063eafb5a3c14610a34578063f2fde38b14610a54578063fabb0b4f14610a74578063ffb54a9914610a8a57600080fd5b8063dc44b6a0146109b8578063dd62ed3e146109ce578063ea2f0b3714610a1457600080fd5b8063cd0d0096116100d1578063cd0d00961461092e578063cfc16cea14610962578063d222b31114610978578063d505accf1461099857600080fd5b8063bc337182146108d8578063bc7c0dd1146108f8578063bf56b3711461091857600080fd5b806394d79ce311610164578063a457c2d71161013e578063a457c2d714610863578063a525687b14610883578063a9059cbb14610898578063b8623f56146108b857600080fd5b806394d79ce31461081857806395d89b41146108385780639a76efb41461084d57600080fd5b806384530c46116101a057806384530c46146107a457806388790a68146107c45780638da5cb5b146107da5780638f4590d2146107f857600080fd5b8063743942b61461074157806378109e54146107615780637ecebe001461077757600080fd5b8063313ce567116102a057806349bd5a5e1161023e578063598769141161021857806359876914146106c057806370a08231146106e0578063715018a6146107165780637437681e1461072b57600080fd5b806349bd5a5e1461065f5780634b01547f1461067f5780634e45e92a1461069f57600080fd5b80633ddf65ab1161027a5780633ddf65ab146105f45780633ee0ce0214610614578063437823ec1461062957806344cbf0541461064957600080fd5b8063313ce567146105935780633644e515146105bf57806339509351146105d457600080fd5b806323b872dd1161030d5780632d4103d6116102e75780632d4103d6146105095780632dd5efe7146105295780632e2c01451461054957806330adf81f1461055f57600080fd5b806323b872dd146104a857806325b86edf146104c85780632691bc80146104e857600080fd5b80630f3a325f116103495780630f3a325f146103f85780631525ff7d146104315780631694505e1461045157806318160ddd1461048957600080fd5b806306fdde031461037b57806309302dc6146103a6578063095ea7b3146103c857600080fd5b3661037657005b600080fd5b34801561038757600080fd5b50610390610aab565b60405161039d9190612b84565b60405180910390f35b3480156103b257600080fd5b506103c66103c1366004612bd9565b610b3d565b005b3480156103d457600080fd5b506103e86103e3366004612c07565b610b97565b604051901515815260200161039d565b34801561040457600080fd5b506103e8610413366004612c33565b6001600160a01b031660009081526005602052604090205460ff1690565b34801561043d57600080fd5b506103c661044c366004612c33565b610bae565b34801561045d57600080fd5b50601c54610471906001600160a01b031681565b6040516001600160a01b03909116815260200161039d565b34801561049557600080fd5b506011545b60405190815260200161039d565b3480156104b457600080fd5b506103e86104c3366004612c50565b610bfa565b3480156104d457600080fd5b506103c66104e3366004612c91565b610c63565b3480156104f457600080fd5b50601d546103e890600160b01b900460ff1681565b34801561051557600080fd5b506103c6610524366004612cd8565b610d75565b34801561053557600080fd5b506103c6610544366004612c33565b610de0565b34801561055557600080fd5b5061049a601a5481565b34801561056b57600080fd5b5061049a7f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c981565b34801561059f57600080fd5b50601054600160a01b900460ff1660405160ff909116815260200161039d565b3480156105cb57600080fd5b5061049a610e2e565b3480156105e057600080fd5b506103e86105ef366004612c07565b610e8e565b34801561060057600080fd5b506103c661060f366004612cf6565b610ec4565b34801561062057600080fd5b506103c6610f0c565b34801561063557600080fd5b506103c6610644366004612c33565b610fb2565b34801561065557600080fd5b5061049a600a5481565b34801561066b57600080fd5b50601d54610471906001600160a01b031681565b34801561068b57600080fd5b506103c661069a366004612cf6565b611000565b3480156106ab57600080fd5b50601d546103e890600160c01b900460ff1681565b3480156106cc57600080fd5b506103c66106db366004612d13565b611048565b3480156106ec57600080fd5b5061049a6106fb366004612c33565b6001600160a01b031660009081526006602052604090205490565b34801561072257600080fd5b506103c661107d565b34801561073757600080fd5b5061049a60165481565b34801561074d57600080fd5b506103c661075c366004612c33565b6110f1565b34801561076d57600080fd5b5061049a60155481565b34801561078357600080fd5b5061049a610792366004612c33565b600e6020526000908152604090205481565b3480156107b057600080fd5b506103c66107bf366004612d81565b611150565b3480156107d057600080fd5b5061049a60195481565b3480156107e657600080fd5b506000546001600160a01b0316610471565b34801561080457600080fd5b506103c6610813366004612d13565b6111ef565b34801561082457600080fd5b506103c6610833366004612d81565b611224565b34801561084457600080fd5b506103906112be565b34801561085957600080fd5b5061049a60185481565b34801561086f57600080fd5b506103e861087e366004612c07565b6112cd565b34801561088f57600080fd5b5061049a61131c565b3480156108a457600080fd5b506103e86108b3366004612c07565b61135a565b3480156108c457600080fd5b506103c66108d3366004612dc3565b611367565b3480156108e457600080fd5b506103c66108f3366004612bd9565b61145e565b34801561090457600080fd5b506103c6610913366004612d13565b61148d565b34801561092457600080fd5b5061049a60085481565b34801561093a57600080fd5b5061049a7f000000000000000000000000000000000000000000000000000000000000000181565b34801561096e57600080fd5b5061049a60095481565b34801561098457600080fd5b506103c6610993366004612cf6565b6114d2565b3480156109a457600080fd5b506103c66109b3366004612e2b565b61151a565b3480156109c457600080fd5b5061049a60175481565b3480156109da57600080fd5b5061049a6109e9366004612c91565b6001600160a01b03918216600090815260046020908152604080832093909416825291909152205490565b348015610a2057600080fd5b506103c6610a2f366004612c33565b6117bf565b348015610a4057600080fd5b506103c6610a4f366004612c33565b61180a565b348015610a6057600080fd5b506103c6610a6f366004612c33565b611b36565b348015610a8057600080fd5b5061049a60075481565b348015610a9657600080fd5b50601d546103e890600160a81b900460ff1681565b606060128054610aba90612ea2565b80601f0160208091040260200160405190810160405280929190818152602001828054610ae690612ea2565b8015610b335780601f10610b0857610100808354040283529160200191610b33565b820191906000526020600020905b815481529060010190602001808311610b1657829003601f168201915b5050505050905090565b6000546001600160a01b03163314610b705760405162461bcd60e51b8152600401610b6790612edd565b60405180910390fd5b610b9181610b8b6103e8601154611c2090919063ffffffff16565b90611c69565b60155550565b6000610ba4338484611d47565b5060015b92915050565b6000546001600160a01b03163314610bd85760405162461bcd60e51b8152600401610b6790612edd565b600380546001600160a01b0319166001600160a01b0392909216919091179055565b6000610c07848484611e6b565b610c598433610c5485604051806060016040528060288152602001613210602891396001600160a01b038a16600090815260046020908152604080832033845290915290205491906123cd565b611d47565b5060019392505050565b6000546001600160a01b03163314610c8d5760405162461bcd60e51b8152600401610b6790612edd565b6040516370a0823160e01b81523060048201526000906001600160a01b038416906370a0823190602401602060405180830381865afa158015610cd4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cf89190612f12565b60405163a9059cbb60e01b81526001600160a01b038481166004830152602482018390529192509084169063a9059cbb906044016020604051808303816000875af1158015610d4b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d6f9190612f2b565b50505050565b6000546001600160a01b03163314610d9f5760405162461bcd60e51b8152600401610b6790612edd565b601d805460ff60a81b1916600160a81b8415158102919091179182905560ff9104168015610dcd5750600854155b15610ddc574360085560078190555b5050565b6000546001600160a01b03163314610e0a5760405162461bcd60e51b8152600401610b6790612edd565b6001600160a01b03166000908152600c60205260409020805460ff19166001179055565b6000467f00000000000000000000000000000000000000000000000000000000000000018114610e6657610e6181612407565b610e88565b7f2fdb4605075b2569d42a1fdb61f7c112bb459894b35a305db6ce04fcaf6ff29a5b91505090565b3360008181526004602090815260408083206001600160a01b03871684529091528120549091610ba4918590610c549086611ce8565b6000546001600160a01b03163314610eee5760405162461bcd60e51b8152600401610b6790612edd565b601d8054911515600160b81b0260ff60b81b19909216919091179055565b6000546001600160a01b03163314610f365760405162461bcd60e51b8152600401610b6790612edd565b30600090815260066020526040902054610f4f9061249d565b6003546040516000916001600160a01b03169047908381818185875af1925050503d8060008114610f9c576040519150601f19603f3d011682016040523d82523d6000602084013e610fa1565b606091505b5050905080610faf57600080fd5b50565b6000546001600160a01b03163314610fdc5760405162461bcd60e51b8152600401610b6790612edd565b6001600160a01b03166000908152600b60205260409020805460ff19166001179055565b6000546001600160a01b0316331461102a5760405162461bcd60e51b8152600401610b6790612edd565b601d8054911515600160b01b0260ff60b01b19909216919091179055565b6000546001600160a01b031633146110725760405162461bcd60e51b8152600401610b6790612edd565b601791909155601855565b6000546001600160a01b031633146110a75760405162461bcd60e51b8152600401610b6790612edd565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6000546001600160a01b0316331461111b5760405162461bcd60e51b8152600401610b6790612edd565b6040516001600160a01b038216904780156108fc02916000818181858888f19350505050158015610ddc573d6000803e3d6000fd5b6000546001600160a01b0316331461117a5760405162461bcd60e51b8152600401610b6790612edd565b60005b818110156111ea576001600d600085858581811061119d5761119d612f48565b90506020020160208101906111b29190612c33565b6001600160a01b031681526020810191909152604001600020805460ff19169115159190911790556111e381612f74565b905061117d565b505050565b6000546001600160a01b031633146112195760405162461bcd60e51b8152600401610b6790612edd565b600991909155600a55565b6000546001600160a01b0316331461124e5760405162461bcd60e51b8152600401610b6790612edd565b60005b818110156111ea576001600b600085858581811061127157611271612f48565b90506020020160208101906112869190612c33565b6001600160a01b031681526020810191909152604001600020805460ff19169115159190911790556112b781612f74565b9050611251565b606060138054610aba90612ea2565b6000610ba43384610c5485604051806060016040528060258152602001613238602591393360009081526004602090815260408083206001600160a01b038d16845290915290205491906123cd565b600a54600954601d546001600160a01b0316600090815260066020526040812054909261135592909161134f9190610b8b565b90611c20565b905090565b6000610ba4338484611e6b565b6000546001600160a01b031633146113915760405162461bcd60e51b8152600401610b6790612edd565b60005b8381101561145757600d60008686848181106113b2576113b2612f48565b90506020020160208101906113c79190612c33565b6001600160a01b0316815260208101919091526040016000205460ff1615806113ed5750815b1561144757826005600087878581811061140957611409612f48565b905060200201602081019061141e9190612c33565b6001600160a01b031681526020810191909152604001600020805460ff19169115159190911790555b61145081612f74565b9050611394565b5050505050565b6000546001600160a01b031633146114885760405162461bcd60e51b8152600401610b6790612edd565b601655565b6000546001600160a01b031633146114b75760405162461bcd60e51b8152600401610b6790612edd565b6019829055601a8190556114cb8282611ce8565b601b555050565b6000546001600160a01b031633146114fc5760405162461bcd60e51b8152600401610b6790612edd565b601d8054911515600160c01b0260ff60c01b19909216919091179055565b8342111561155b5760405162461bcd60e51b815260206004820152600e60248201526d14195c9b5a5d0b595e1c1a5c995960921b6044820152606401610b67565b4660007f000000000000000000000000000000000000000000000000000000000000000182146115935761158e82612407565b6115b5565b7f2fdb4605075b2569d42a1fdb61f7c112bb459894b35a305db6ce04fcaf6ff29a5b6001600160a01b038a166000908152600e6020526040812080547f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c9928d928d928d9290919061160383612f74565b909155506040805160208101969096526001600160a01b0394851690860152929091166060840152608083015260a082015260c0810188905260e0016040516020818303038152906040528051906020012060405160200161167c92919061190160f01b81526002810192909252602282015260420190565b60408051601f19818403018152919052805160209091012090506001600160a01b0389161580159061171b575060408051600081526020810180835283905260ff871691810191909152606081018590526080810184905260019060a0016020604051602081039080840390855afa1580156116fc573d6000803e3d6000fd5b505050602060405103516001600160a01b0316896001600160a01b0316145b6117585760405162461bcd60e51b815260206004820152600e60248201526d125b9d985b1a590b5c195c9b5a5d60921b6044820152606401610b67565b6001600160a01b038981166000818152600460209081526040808320948d16808452948252918290208b905590518a81527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050505050505050565b6000546001600160a01b031633146117e95760405162461bcd60e51b8152600401610b6790612edd565b6001600160a01b03166000908152600b60205260409020805460ff19169055565b6000546001600160a01b031633146118345760405162461bcd60e51b8152600401610b6790612edd565b60008190506000816001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015611879573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061189d9190612f8f565b6001600160a01b031663e6a4390530846001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156118ea573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061190e9190612f8f565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381865afa158015611959573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061197d9190612f8f565b90506001600160a01b038116611af657816001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156119cb573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119ef9190612f8f565b6001600160a01b031663c9c6539630846001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611a3c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a609190612f8f565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af1158015611aad573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ad19190612f8f565b601d80546001600160a01b0319166001600160a01b0392909216919091179055611b12565b601d80546001600160a01b0319166001600160a01b0383161790555b50601c80546001600160a01b0319166001600160a01b039290921691909117905550565b6000546001600160a01b03163314611b605760405162461bcd60e51b8152600401610b6790612edd565b6001600160a01b038116611bc55760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610b67565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6000611c6283836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612630565b9392505050565b600082611c7857506000610ba8565b6000611c848385612fac565b905082611c918583612fcb565b14611c625760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b6064820152608401610b67565b600080611cf58385612fed565b905083811015611c625760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006044820152606401610b67565b6001600160a01b038316611da95760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610b67565b6001600160a01b038216611e0a5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610b67565b6001600160a01b0383811660008181526004602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b038316611e915760405162461bcd60e51b8152600401610b6790613005565b6001600160a01b038216611eb75760405162461bcd60e51b8152600401610b679061304a565b60008111611f195760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b6064820152608401610b67565b6001600160a01b03821660009081526005602052604090205460ff1615611f765760405162461bcd60e51b8152602060048201526011602482015270536f727279206e6f20536e69707065727360781b6044820152606401610b67565b6001600160a01b03831660009081526005602052604090205460ff1615611fd35760405162461bcd60e51b8152602060048201526011602482015270536f727279206e6f20536e69707065727360781b6044820152606401610b67565b6000546001600160a01b03848116911614801590611fff57506000546001600160a01b03838116911614155b156120af57601d54600160a81b900460ff166120545760405162461bcd60e51b81526020600482015260146024820152732a3930b234b733903737ba1032b730b13632b21760611b6044820152606401610b67565b601d54600160c01b900460ff16156120af576016548111156120af5760405162461bcd60e51b815260206004820152601460248201527337bb32b91036b0bc103a3930b739b0b1ba34b7b760611b6044820152606401610b67565b6000806008541180156120f457506001600160a01b0383166000908152600c602052604090205460ff161580156120f457506000546001600160a01b03858116911614155b801561210e57504360085460f061210b9190612fed565b10155b80156121235750601d54600160b81b900460ff165b156121a7576015546001600160a01b03841660009081526006602052604090205461214e9084612fed565b11156121a75760405162461bcd60e51b815260206004820152602260248201527f546f74616c20486f6c64696e672069732063757272656e746c79206c696d6974604482015261195960f21b6064820152608401610b67565b601d54600160a81b900460ff1680156121cd5750601d546001600160a01b038481169116145b156121d75750601b545b601d54600160a81b900460ff1680156121fd5750601d546001600160a01b038581169116145b156122145760185460175461221191611ce8565b90505b60006008541180156122345750436007546008546122329190612fed565b115b1561225d576001600160a01b0383166000908152600560205260409020805460ff191660011790555b600060085411801561227d57506000546001600160a01b03858116911614155b801561229857506007546008546122949190612fed565b4311155b80156122ad5750601d54600160b81b900460ff165b156122b757506103845b6001600160a01b0384166000908152600b602052604090205460ff16806122f657506001600160a01b0383166000908152600b602052604090205460ff165b8061230e57506000546001600160a01b038581169116145b15612317575060005b601d54600160b01b900460ff161561235857601d54600160a81b900460ff16801561234f5750601d546001600160a01b038581169116145b15612358575060005b601d54600160a01b900460ff1615801561237b5750601d54600160a81b900460ff165b80156123945750601d546001600160a01b038481169116145b156123c157306000908152600660205260409020546123b161131c565b81106123bf576123bf61265e565b505b610d6f84848484612891565b600081848411156123f15760405162461bcd60e51b8152600401610b679190612b84565b5060006123fe848661308d565b95945050505050565b60007f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f601260405161243991906130a4565b6040518091039020601460405161245091906130a4565b6040805191829003822060208301949094528101919091526060810191909152608081018390523060a082015260c001604051602081830303815290604052805190602001209050919050565b60408051600280825260608201835260009260208301908036833701905050905030816000815181106124d2576124d2612f48565b6001600160a01b03928316602091820292909201810191909152601c54604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa15801561252b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061254f9190612f8f565b8160018151811061256257612562612f48565b6001600160a01b039283166020918202929092010152601c546125889130911684611d47565b601c5460405163791ac94760e01b81526001600160a01b039091169063791ac947906125c1908590600090869030904290600401613184565b600060405180830381600087803b1580156125db57600080fd5b505af11580156125ef573d6000803e3d6000fd5b505050507f32cde87eb454f3a0b875ab23547023107cfad454363ec88ba5695e2c24aa52a782826040516126249291906131c0565b60405180910390a15050565b600081836126515760405162461bcd60e51b8152600401610b679190612b84565b5060006123fe8486612fcb565b601d805460ff60a01b1916600160a01b1790556019546000901561269857612695600261134f601b5461134f601954610b8b61131c565b90505b6126a18161249d565b60195447906000906126c1906126b8906002611c20565b601b54906128e6565b601b54909150156127d35760006126ee600261134f601b5461134f60195488611c6990919063ffffffff16565b905082156127bd5760006127118361134f601a5487611c6990919063ffffffff16565b6003546040519192506000916001600160a01b039091169083908381818185875af1925050503d8060008114612763576040519150601f19603f3d011682016040523d82523d6000602084013e612768565b606091505b505090508061277657600080fd5b6003546040518381526001600160a01b039091169030907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a350505b83156127cd576127cd8482612928565b5061287f565b811561287f576003546040516000916001600160a01b03169084908381818185875af1925050503d8060008114612826576040519150601f19603f3d011682016040523d82523d6000602084013e61282b565b606091505b505090508061283957600080fd5b6003546040518481526001600160a01b039091169030907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a3505b5050601d805460ff60a01b1916905550565b806128a6576128a1848484612a2f565b610d6f565b60006128b86103e861134f8585611c69565b905060006128c684836128e6565b90506128d3868683612a2f565b6128de863084612a2f565b505050505050565b6000611c6283836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506123cd565b601c546129409030906001600160a01b031684611d47565b601c546001600160a01b031663f305d7198230856000806129696000546001600160a01b031690565b60405160e088901b6001600160e01b03191681526001600160a01b03958616600482015260248101949094526044840192909252606483015290911660848201524260a482015260c40160606040518083038185885af11580156129d1573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906129f691906131e1565b505060408051848152602081018490527fcb1652de9aeec38545fc281847b3dbfc89aab56dfa907b1ab68466f602c36fb4925001612624565b6001600160a01b038316612a555760405162461bcd60e51b8152600401610b6790613005565b6001600160a01b038216612a7b5760405162461bcd60e51b8152600401610b679061304a565b6001600160a01b03831660009081526006602052604090205481811015612af35760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608401610b67565b6001600160a01b03808516600090815260066020526040808220858503905591851681529081208054849290612b2a908490612fed565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051612b7691815260200190565b60405180910390a350505050565b600060208083528351808285015260005b81811015612bb157858101830151858201604001528201612b95565b81811115612bc3576000604083870101525b50601f01601f1916929092016040019392505050565b600060208284031215612beb57600080fd5b5035919050565b6001600160a01b0381168114610faf57600080fd5b60008060408385031215612c1a57600080fd5b8235612c2581612bf2565b946020939093013593505050565b600060208284031215612c4557600080fd5b8135611c6281612bf2565b600080600060608486031215612c6557600080fd5b8335612c7081612bf2565b92506020840135612c8081612bf2565b929592945050506040919091013590565b60008060408385031215612ca457600080fd5b8235612caf81612bf2565b91506020830135612cbf81612bf2565b809150509250929050565b8015158114610faf57600080fd5b60008060408385031215612ceb57600080fd5b8235612c2581612cca565b600060208284031215612d0857600080fd5b8135611c6281612cca565b60008060408385031215612d2657600080fd5b50508035926020909101359150565b60008083601f840112612d4757600080fd5b50813567ffffffffffffffff811115612d5f57600080fd5b6020830191508360208260051b8501011115612d7a57600080fd5b9250929050565b60008060208385031215612d9457600080fd5b823567ffffffffffffffff811115612dab57600080fd5b612db785828601612d35565b90969095509350505050565b60008060008060608587031215612dd957600080fd5b843567ffffffffffffffff811115612df057600080fd5b612dfc87828801612d35565b9095509350506020850135612e1081612cca565b91506040850135612e2081612cca565b939692955090935050565b600080600080600080600060e0888a031215612e4657600080fd5b8735612e5181612bf2565b96506020880135612e6181612bf2565b95506040880135945060608801359350608088013560ff81168114612e8557600080fd5b9699959850939692959460a0840135945060c09093013592915050565b600181811c90821680612eb657607f821691505b60208210811415612ed757634e487b7160e01b600052602260045260246000fd5b50919050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b600060208284031215612f2457600080fd5b5051919050565b600060208284031215612f3d57600080fd5b8151611c6281612cca565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b6000600019821415612f8857612f88612f5e565b5060010190565b600060208284031215612fa157600080fd5b8151611c6281612bf2565b6000816000190483118215151615612fc657612fc6612f5e565b500290565b600082612fe857634e487b7160e01b600052601260045260246000fd5b500490565b6000821982111561300057613000612f5e565b500190565b60208082526025908201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604082015264647265737360d81b606082015260800190565b60208082526023908201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260408201526265737360e81b606082015260800190565b60008282101561309f5761309f612f5e565b500390565b600080835481600182811c9150808316806130c057607f831692505b60208084108214156130e057634e487b7160e01b86526022600452602486fd5b8180156130f4576001811461310557613132565b60ff19861689528489019650613132565b60008a81526020902060005b8681101561312a5781548b820152908501908301613111565b505084890196505b509498975050505050505050565b600081518084526020808501945080840160005b838110156131795781516001600160a01b031687529582019590820190600101613154565b509495945050505050565b85815284602082015260a0604082015260006131a360a0830186613140565b6001600160a01b0394909416606083015250608001529392505050565b8281526040602082015260006131d96040830184613140565b949350505050565b6000806000606084860312156131f657600080fd5b835192506020840151915060408401519050925092509256fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220648df48b9ea6511e30078b3b5f2b88300edce668d9e92831581cf576a35e99c564736f6c634300080b0033
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.