Feature Tip: Add private address tag to any address under My Name Tag !
ERC-20
Overview
Max Total Supply
1,000,000,000 AMMO
Holders
56
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 Source Code Verified (Exact Match)
Contract Name:
AMMONITE
Compiler Version
v0.8.4+commit.c7e474f2
Optimization Enabled:
Yes with 200 runs
Other Settings:
default evmVersion
Contract Source Code (Solidity Standard Json-Input format)
pragma solidity ^0.8.0; // SPDX-License-Identifier: MIT 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); } 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; } } contract Ownable is Context { address payable private _owner; address payable private _previousOwner; event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); constructor (address payable ownerAddress) { _owner = ownerAddress; emit OwnershipTransferred(address(0), _owner); } 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 = payable(address(0)); } function transferOwnership(address payable newOwner) public virtual onlyOwner { require(newOwner != address(0), "Ownable: new owner is the zero address"); emit OwnershipTransferred(_owner, newOwner); _owner = newOwner; } } interface IUniswapFactory { event PairCreated(address indexed token0, address indexed token1, address pair, uint); function feeTo() external view returns (address); function feeToSetter() external view returns (address); function getPair(address tokenA, address tokenB) external view returns (address pair); function allPairs(uint) external view returns (address pair); function allPairsLength() external view returns (uint); function createPair(address tokenA, address tokenB) external returns (address pair); function setFeeTo(address) external; function setFeeToSetter(address) external; } interface IUniswapPair { event Approval(address indexed owner, address indexed spender, uint value); event Transfer(address indexed from, address indexed to, uint value); function name() external pure returns (string memory); function symbol() external pure returns (string memory); function decimals() external pure returns (uint8); function totalSupply() external view returns (uint); function balanceOf(address owner) external view returns (uint); function allowance(address owner, address spender) external view returns (uint); function approve(address spender, uint value) external returns (bool); function transfer(address to, uint value) external returns (bool); function transferFrom(address from, address to, uint value) external returns (bool); function DOMAIN_SEPARATOR() external view returns (bytes32); function PERMIT_TYPEHASH() external pure returns (bytes32); function nonces(address owner) external view returns (uint); function permit(address owner, address spender, uint value, uint deadline, uint8 v, bytes32 r, bytes32 s) external; event Mint(address indexed sender, uint amount0, uint amount1); event Burn(address indexed sender, uint amount0, uint amount1, address indexed to); event Swap( address indexed sender, uint amount0In, uint amount1In, uint amount0Out, uint amount1Out, address indexed to ); event Sync(uint112 reserve0, uint112 reserve1); function MINIMUM_LIQUIDITY() external pure returns (uint); function factory() external view returns (address); function token0() external view returns (address); function token1() external view returns (address); function getReserves() external view returns (uint112 reserve0, uint112 reserve1, uint32 blockTimestampLast); function price0CumulativeLast() external view returns (uint); function price1CumulativeLast() external view returns (uint); function kLast() external view returns (uint); function mint(address to) external returns (uint liquidity); function burn(address to) external returns (uint amount0, uint amount1); function swap(uint amount0Out, uint amount1Out, address to, bytes calldata data) external; function skim(address to) external; function sync() external; function initialize(address, address) external; } interface IUniswapRouter01 { function factory() external pure returns (address); function WETH() external pure returns (address); function addLiquidity( address tokenA, address tokenB, uint amountADesired, uint amountBDesired, uint amountAMin, uint amountBMin, address to, uint deadline ) external returns (uint amountA, uint amountB, uint liquidity); function addLiquidityETH( address token, uint amountTokenDesired, uint amountTokenMin, uint amountETHMin, address to, uint deadline ) external payable returns (uint amountToken, uint amountETH, uint liquidity); function removeLiquidity( address tokenA, address tokenB, uint liquidity, uint amountAMin, uint amountBMin, address to, uint deadline ) external returns (uint amountA, uint amountB); function removeLiquidityETH( address token, uint liquidity, uint amountTokenMin, uint amountETHMin, address to, uint deadline ) external returns (uint amountToken, uint amountETH); function removeLiquidityWithPermit( address tokenA, address tokenB, uint liquidity, uint amountAMin, uint amountBMin, address to, uint deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s ) external returns (uint amountA, uint amountB); function removeLiquidityETHWithPermit( address token, uint liquidity, uint amountTokenMin, uint amountETHMin, address to, uint deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s ) external returns (uint amountToken, uint amountETH); function swapExactTokensForTokens( uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline ) external returns (uint[] memory amounts); function swapTokensForExactTokens( uint amountOut, uint amountInMax, address[] calldata path, address to, uint deadline ) external returns (uint[] memory amounts); function swapExactETHForTokens(uint amountOutMin, address[] calldata path, address to, uint deadline) external payable returns (uint[] memory amounts); function swapTokensForExactETH(uint amountOut, uint amountInMax, address[] calldata path, address to, uint deadline) external returns (uint[] memory amounts); function swapExactTokensForETH(uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline) external returns (uint[] memory amounts); function swapETHForExactTokens(uint amountOut, address[] calldata path, address to, uint deadline) external payable returns (uint[] memory amounts); function quote(uint amountA, uint reserveA, uint reserveB) external pure returns (uint amountB); function getAmountOut(uint amountIn, uint reserveIn, uint reserveOut) external pure returns (uint amountOut); function getAmountIn(uint amountOut, uint reserveIn, uint reserveOut) external pure returns (uint amountIn); function getAmountsOut(uint amountIn, address[] calldata path) external view returns (uint[] memory amounts); function getAmountsIn(uint amountOut, address[] calldata path) external view returns (uint[] memory amounts); } interface IUniSwapRouter02 is IUniswapRouter01 { 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; } library Utils { using SafeMath for uint256; function swapTokensForEth( address routerAddress, uint256 tokenAmount ) internal { IUniSwapRouter02 uniSwapRouter = IUniSwapRouter02(routerAddress); // generate the pair path of token -> weth address[] memory path = new address[](2); path[0] = address(this); path[1] = uniSwapRouter.WETH(); // make the swap uniSwapRouter.swapExactTokensForETHSupportingFeeOnTransferTokens( tokenAmount, 0, // accept any amount of ETH path, address(this), block.timestamp ); } function swapETHForTokens( address routerAddress, address recipient, uint256 ethAmount ) internal { IUniSwapRouter02 uniSwapRouter = IUniSwapRouter02(routerAddress); // generate the pair path of token -> weth address[] memory path = new address[](2); path[0] = uniSwapRouter.WETH(); path[1] = address(this); // make the swap uniSwapRouter.swapExactETHForTokensSupportingFeeOnTransferTokens{value: ethAmount}( 0, // accept any amount of ETH path, address(recipient), block.timestamp + 360 ); } function addLiquidity( address routerAddress, address owner, uint256 tokenAmount, uint256 ethAmount ) internal { IUniSwapRouter02 uniSwapRouter = IUniSwapRouter02(routerAddress); // add the liquidity uniSwapRouter.addLiquidityETH{value : ethAmount}( address(this), tokenAmount, 0, // slippage is unavoidable 0, // slippage is unavoidable owner, block.timestamp + 360 ); } } contract AMMONITE is Context, IERC20, Ownable{ using SafeMath for uint256; using Address for address; mapping(address => uint256) private _rOwned; mapping(address => uint256) private _tOwned; mapping(address => mapping(address => uint256)) private _allowances; mapping(address => bool) private _isExcludedFromFee; mapping(address => bool) private _isExcluded; mapping(address => bool) private _isExcludedFromMaxTx; address[] private _excluded; uint256 private constant MAX = ~uint256(0); uint256 private _tTotal = 1000000000 * 1e9; uint256 private _rTotal = (MAX - (MAX % _tTotal)); uint256 private _tFeeTotal; string private _name = "AMMONITE"; string private _symbol = "AMMO"; uint8 private _decimals = 9; IUniSwapRouter02 public uniSwapRouter; address public immutable uniSwapPair; address payable public marketWallet; address payable public devWallet; uint256 _taxFee; uint256 public _taxFeeForBuying = 0; // 0% will be distributed among holder uint256 public _taxFeeForSelling = 0; // 0% will be distributed among holder uint256 _liquidityFee; uint256 public _liquidityFeeForBuying = 20; // 2% will be added to the liquidity pool on each buy uint256 public _liquidityFeeForSelling = 40; // 1% will be added to the liquidity pool on each sell uint256 _marketFee; uint256 public _marketFeeForBuying = 20; uint256 public _marketFeeForSelling = 20; uint256 _devFee; uint256 public _devFeeForBuying = 10; uint256 public _devFeeForSelling = 20; bool public swapAndLiquifyEnabled = false; // should be true to turn on to liquidate the pool bool public reflectionFeesdiabled = false; bool inSwapAndLiquify = false; uint256 public maxTxAmount = _tTotal.mul(1).div(100); // 1% of total suppy uint256 public minTokenNumberToSell = 1000000 * 1e9; uint256 public maxHoldingAmount = _tTotal.mul(2).div(100); // 2% of total supply by default uint256 public sellCoolDownTriggeredAt = block.timestamp; uint256 public sellCoolDownDuration = 1 seconds; uint256 public buyCoolDownTriggeredAt = block.timestamp; uint256 public buyCoolDownDuration = 45 seconds; event SwapAndLiquifyEnabledUpdated(bool enabled); event SwapAndLiquify( uint256 tokensSwapped, uint256 ethReceived, uint256 tokensIntoLiqudity ); event ClaimETHSuccessfully( address recipient, uint256 ethReceived, uint256 nextAvailableClaimDate ); modifier lockTheSwap { inSwapAndLiquify = true; _; inSwapAndLiquify = false; } constructor ( address payable _marketWallet, address payable _devWallet ) Ownable(payable(msg.sender)) { _rOwned[owner()] = _rTotal; marketWallet = _marketWallet; devWallet = _devWallet; IUniSwapRouter02 _uniSwapRouter = IUniSwapRouter02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D); // Create a pair for this new token uniSwapPair = IUniswapFactory(_uniSwapRouter.factory()) .createPair(address(this), _uniSwapRouter.WETH()); // set the rest of the contract variables uniSwapRouter = _uniSwapRouter; //exclude owner and this contract from fee _isExcludedFromFee[owner()] = true; _isExcludedFromFee[address(this)] = true; // exclude from max tx _isExcludedFromMaxTx[owner()] = true; _isExcludedFromMaxTx[address(this)] = true; emit Transfer(address(0), owner(), _tTotal); } //to receive ETH from uniSwapRouter when swapping receive() external payable {} function name() public view returns (string memory) { return _name; } function symbol() public view returns (string memory) { return _symbol; } function decimals() public view returns (uint8) { return _decimals; } function totalSupply() public view override returns (uint256) { return _tTotal; } function balanceOf(address account) public view override returns (uint256) { if (_isExcluded[account]) return _tOwned[account]; return tokenFromReflection(_rOwned[account]); } function transfer(address recipient, uint256 amount) public override returns (bool) { _transfer(_msgSender(), recipient, amount); return true; } function allowance(address owner, address spender) public view override returns (uint256) { return _allowances[owner][spender]; } function approve(address spender, uint256 amount) public override returns (bool) { _approve(_msgSender(), spender, amount); return true; } function transferFrom(address sender, address recipient, uint256 amount) public override returns (bool) { _transfer(sender, recipient, amount); _approve(sender, _msgSender(), _allowances[sender][_msgSender()].sub(amount, "BUT: 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, "BUT: decreased allowance below zero")); return true; } function getContractBalance() public view returns(uint256) { return address(this).balance; } function isExcludedFromFee(address account) public view returns (bool) { return _isExcludedFromFee[account]; } function totalFees() public view returns (uint256) { return _tFeeTotal; } function tokenFromReflection(uint256 rAmount) public view returns (uint256) { require(rAmount <= _rTotal, "Amount must be less than total reflections"); uint256 currentRate = _getRate(); return rAmount.div(currentRate); } // setter functions for Owner function excludeFromFee(address account) public onlyOwner { _isExcludedFromFee[account] = true; } function includeInFee(address account) public onlyOwner { _isExcludedFromFee[account] = false; } function setAmountLimits(uint256 _maxTxAmount, uint256 _maxHoldAmount) public onlyOwner { maxTxAmount = _maxTxAmount; maxHoldingAmount = _maxHoldAmount; } function setReflectionFees(uint256 _btaxFee, uint256 _staxFee) external onlyOwner { _taxFeeForBuying = _btaxFee; _taxFeeForSelling =_staxFee; } function setAllBuyFees(uint256 _bliquidityFee, uint256 _bmarketFee, uint256 _bdevFee) external onlyOwner { _liquidityFeeForBuying = _bliquidityFee; _marketFeeForBuying = _bmarketFee; _devFeeForBuying = _bdevFee; } function setSllSellFees(uint256 _sliquidityFee, uint256 _smarketFee, uint256 _sdevFee) external onlyOwner { _liquidityFeeForSelling = _sliquidityFee; _marketFeeForSelling = _smarketFee; _devFeeForSelling = _sdevFee; } function setMinTokenNumberToSell(uint256 _amount) public onlyOwner { minTokenNumberToSell = _amount; } function setExcludeFromMaxTx(address _address, bool _state) public onlyOwner { _isExcludedFromMaxTx[_address] = _state; } function setSwapAndLiquifyEnabled(bool _state) public onlyOwner { swapAndLiquifyEnabled = _state; emit SwapAndLiquifyEnabledUpdated(_state); } function setMarketAddress(address payable _marketAddress) external onlyOwner { marketWallet = _marketAddress; } function setDevAddress(address payable _devAddress) external onlyOwner { devWallet = _devAddress; } function enableCoolDown() external onlyOwner { buyCoolDownDuration = 45 seconds; } function diableCoolDown() external onlyOwner { buyCoolDownDuration = 0 seconds; } function removeMaxTxLimit() external onlyOwner { maxTxAmount = _tTotal; } function setMaxTxLimit(uint256 _percentageOfSuppy) external onlyOwner { maxTxAmount = _tTotal.mul(_percentageOfSuppy).div(100); } function setUniswapRouter(IUniSwapRouter02 _uniSwapRouter) external onlyOwner { uniSwapRouter = _uniSwapRouter; } // internal functions for contract function totalFeePerTx(uint256 tAmount) internal view returns(uint256) { uint256 percentage = tAmount.mul(_taxFee.add(_liquidityFee).add(_marketFee).add(_devFee)).div(1e3); return percentage; } function _reflectFee(uint256 tAmount) private { uint256 tFee = tAmount.mul(_taxFee).div(1e3); uint256 rFee = tFee.mul(_getRate()); _rTotal = _rTotal.sub(rFee); _tFeeTotal = _tFeeTotal.add(tFee); } function _getRate() private view returns (uint256) { (uint256 rSupply, uint256 tSupply) = _getCurrentSupply(); return rSupply.div(tSupply); } function _getCurrentSupply() private view returns (uint256, uint256) { uint256 rSupply = _rTotal; uint256 tSupply = _tTotal; for (uint256 i = 0; i < _excluded.length; i++) { if (_rOwned[_excluded[i]] > rSupply || _tOwned[_excluded[i]] > tSupply) return (_rTotal, _tTotal); rSupply = rSupply.sub(_rOwned[_excluded[i]]); tSupply = tSupply.sub(_tOwned[_excluded[i]]); } if (rSupply < _rTotal.div(_tTotal)) return (_rTotal, _tTotal); return (rSupply, tSupply); } function _takeAllFee(uint256 tAmount, uint256 currentRate) internal { uint256 tFee = tAmount.mul(_liquidityFee.add(_marketFee).add(_devFee)).div(1e3); uint256 rFee = tFee.mul(currentRate); _rOwned[address(this)] = _rOwned[address(this)].add(rFee); if (_isExcluded[address(this)]) _tOwned[address(this)] = _tOwned[address(this)].add(tFee); emit Transfer(_msgSender(), address(this), tFee); } function removeAllFee() private { _taxFee = 0; _liquidityFee = 0; _marketFee = 0; _devFee = 0; } function takeBuyFee() private { _taxFee = _taxFeeForBuying; _liquidityFee = _liquidityFeeForBuying; _marketFee = _marketFeeForBuying; _devFee = _devFeeForBuying; } function takeSellFee() private { _taxFee = _taxFeeForSelling; _liquidityFee = _liquidityFeeForSelling; _marketFee = _marketFeeForSelling; _devFee = _devFeeForSelling; } function _approve(address owner, address spender, uint256 amount) private { require(owner != address(0), "TOKEN: approve from the zero address"); require(spender != address(0), "TOKEN: approve to the zero address"); _allowances[owner][spender] = amount; emit Approval(owner, spender, amount); } function _transfer( address from, address to, uint256 amount ) private { require(from != address(0), "TOKEN: transfer from the zero address"); require(to != address(0), "TOKEN: transfer to the zero address"); require(amount > 0, "TOKEN: Transfer amount must be greater than zero"); if(!_isExcludedFromMaxTx[from] && !_isExcludedFromMaxTx[to] // by default false ){ require(amount <= maxTxAmount,"TOKEN: Amount exceed max limit"); if(to != uniSwapPair){ require(balanceOf(to).add(amount) <= maxHoldingAmount,"TOKEN: max holding limit exceeds"); } if(from == uniSwapPair){ require(buyCoolDownTriggeredAt.add(buyCoolDownDuration) < block.timestamp, "TOKEN: wait for buying cool down" ); buyCoolDownTriggeredAt = block.timestamp; } if(to == uniSwapPair){ require(sellCoolDownTriggeredAt.add(sellCoolDownDuration) < block.timestamp, "TOKEN: wait for selling cool down" ); sellCoolDownTriggeredAt = block.timestamp; } } // swap and liquify swapAndLiquify(from, to); //indicates if fee should be deducted from transfer bool takeFee = true; //if any account belongs to _isExcludedFromFee account then remove the fee if (_isExcludedFromFee[from] || _isExcludedFromFee[to] || reflectionFeesdiabled) { takeFee = false; } //transfer amount, it will take tax, burn, liquidity fee _tokenTransfer(from, to, amount, takeFee); } //this method is responsible for taking all fee, if takeFee is true function _tokenTransfer(address sender, address recipient, uint256 amount, bool takeFee) private { if (!takeFee) removeAllFee(); else if(sender == uniSwapPair) takeBuyFee(); else takeSellFee(); if (_isExcluded[sender] && !_isExcluded[recipient]) { _transferFromExcluded(sender, recipient, amount); } else if (!_isExcluded[sender] && _isExcluded[recipient]) { _transferToExcluded(sender, recipient, amount); } else if (_isExcluded[sender] && _isExcluded[recipient]) { _transferBothExcluded(sender, recipient, amount); } else { _transferStandard(sender, recipient, amount); } } function _transferStandard(address sender, address recipient, uint256 tAmount) private { uint256 currentRate = _getRate(); uint256 tTransferAmount = tAmount.sub(totalFeePerTx(tAmount)); uint256 rAmount = tAmount.mul(currentRate); uint256 rTransferAmount = rAmount.sub(totalFeePerTx(tAmount).mul(currentRate)); _rOwned[sender] = _rOwned[sender].sub(rAmount); _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount); _takeAllFee(tAmount, currentRate); _reflectFee(tAmount); emit Transfer(sender, recipient, tTransferAmount); } function _transferToExcluded(address sender, address recipient, uint256 tAmount) private { uint256 currentRate = _getRate(); uint256 tTransferAmount = tAmount.sub(totalFeePerTx(tAmount)); uint256 rAmount = tAmount.mul(currentRate); uint256 rTransferAmount = rAmount.sub(totalFeePerTx(tAmount).mul(currentRate)); _rOwned[sender] = _rOwned[sender].sub(rAmount); _tOwned[recipient] = _tOwned[recipient].add(tTransferAmount); _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount); _takeAllFee(tAmount, currentRate); _reflectFee(tAmount); emit Transfer(sender, recipient, tTransferAmount); } function _transferFromExcluded(address sender, address recipient, uint256 tAmount) private { uint256 currentRate = _getRate(); uint256 tTransferAmount = tAmount.sub(totalFeePerTx(tAmount)); uint256 rAmount = tAmount.mul(currentRate); uint256 rTransferAmount = rAmount.sub(totalFeePerTx(tAmount).mul(currentRate)); _tOwned[sender] = _tOwned[sender].sub(tAmount); _rOwned[sender] = _rOwned[sender].sub(rAmount); _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount); _takeAllFee(tAmount, currentRate); _reflectFee(tAmount); emit Transfer(sender, recipient, tTransferAmount); } function _transferBothExcluded(address sender, address recipient, uint256 tAmount) private { uint256 currentRate = _getRate(); uint256 tTransferAmount = tAmount.sub(totalFeePerTx(tAmount)); uint256 rAmount = tAmount.mul(currentRate); uint256 rTransferAmount = rAmount.sub(totalFeePerTx(tAmount).mul(currentRate)); _tOwned[sender] = _tOwned[sender].sub(tAmount); _rOwned[sender] = _rOwned[sender].sub(rAmount); _tOwned[recipient] = _tOwned[recipient].add(tTransferAmount); _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount); _takeAllFee(tAmount, currentRate); _reflectFee(tAmount); emit Transfer(sender, recipient, tTransferAmount); } function manualSwap() external onlyOwner { uint256 contractTokenBalance = balanceOf(address(this)); _approve(address(this), address(uniSwapRouter), contractTokenBalance); Utils.swapTokensForEth(address(uniSwapRouter), contractTokenBalance); } function manualSend() external onlyOwner { takeSellFee(); uint256 deltaBalance = getContractBalance(); uint256 totalPercent = _liquidityFee.add(_marketFee); uint256 dvPercent = _devFee.mul(1e4).div(totalPercent); // devfee transfer devWallet.transfer(deltaBalance.mul(dvPercent).div(totalPercent)); // market fee transfer marketWallet.transfer(getContractBalance()); } function swapAndLiquify(address from, address to) private { uint256 contractTokenBalance = balanceOf(address(this)); if (contractTokenBalance >= maxTxAmount) { contractTokenBalance = maxTxAmount; } bool shouldSell = contractTokenBalance >= minTokenNumberToSell; if ( !inSwapAndLiquify && shouldSell && from != uniSwapPair && swapAndLiquifyEnabled && !(from == address(this) && to == address(uniSwapPair)) ) { contractTokenBalance = minTokenNumberToSell; // approve contract _approve(address(this), address(uniSwapRouter), contractTokenBalance); takeSellFee(); uint256 totalPercent = _liquidityFee.add(_marketFee); uint256 lpPercent = _liquidityFee.mul(1e4).div(totalPercent).div(2); uint256 mwPercent = _marketFee.mul(1e4).div(totalPercent); uint256 dvPercent = _devFee.mul(1e4).div(totalPercent); uint256 otherPiece = contractTokenBalance.mul(lpPercent).div(1e4); uint256 tokenAmountToBeSwapped = contractTokenBalance.sub(otherPiece); Utils.swapTokensForEth(address(uniSwapRouter), tokenAmountToBeSwapped); uint256 deltaBalance = getContractBalance(); totalPercent = lpPercent.add(mwPercent).add(dvPercent); uint256 ETHToBeAddedToLiquidity = deltaBalance.mul(lpPercent).div(totalPercent); Utils.addLiquidity(address(uniSwapRouter), owner(), otherPiece, ETHToBeAddedToLiquidity); // devfee transfer devWallet.transfer(deltaBalance.mul(dvPercent).div(totalPercent)); // market fee transfer marketWallet.transfer(getContractBalance()); emit SwapAndLiquify(tokenAmountToBeSwapped, deltaBalance, otherPiece); } } } 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) { // Gas optimization: this is cheaper than requiring 'a' not being zero, TOKEN the // benefit is lost if 'b' is also tested. // See: https://github.com/OpenZeppelin/openzeppelin-contracts/pull/522 if (a == 0) { return 0; } uint256 c = a * b; require(c / a == b, "SafeMath: multiplication overflow"); return c; } 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"); // solhint-disable-next-line avoid-low-level-calls (bool success, bytes memory returndata) = target.call{ value: weiValue }(data); if (success) { return returndata; } else { // Look for revert reason and bubble it up if present if (returndata.length > 0) { // The easiest way to bubble the revert reason is using memory via assembly // solhint-disable-next-line no-inline-assembly assembly { let returndata_size := mload(returndata) revert(add(32, returndata), returndata_size) } } else { revert(errorMessage); } } } }
{ "optimizer": { "enabled": true, "runs": 200 }, "outputSelection": { "*": { "*": [ "evm.bytecode", "evm.deployedBytecode", "devdoc", "userdoc", "metadata", "abi" ] } } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[{"internalType":"address payable","name":"_marketWallet","type":"address"},{"internalType":"address payable","name":"_devWallet","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"recipient","type":"address"},{"indexed":false,"internalType":"uint256","name":"ethReceived","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"nextAvailableClaimDate","type":"uint256"}],"name":"ClaimETHSuccessfully","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"tokensSwapped","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"ethReceived","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"tokensIntoLiqudity","type":"uint256"}],"name":"SwapAndLiquify","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bool","name":"enabled","type":"bool"}],"name":"SwapAndLiquifyEnabledUpdated","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":"_devFeeForBuying","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_devFeeForSelling","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_liquidityFeeForBuying","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_liquidityFeeForSelling","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_marketFeeForBuying","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_marketFeeForSelling","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_taxFeeForBuying","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_taxFeeForSelling","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":"buyCoolDownDuration","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyCoolDownTriggeredAt","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":"devWallet","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"diableCoolDown","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"enableCoolDown","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"excludeFromFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"getContractBalance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","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":"isExcludedFromFee","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"manualSend","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"manualSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"marketWallet","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxHoldingAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"minTokenNumberToSell","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"reflectionFeesdiabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"removeMaxTxLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sellCoolDownDuration","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellCoolDownTriggeredAt","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_bliquidityFee","type":"uint256"},{"internalType":"uint256","name":"_bmarketFee","type":"uint256"},{"internalType":"uint256","name":"_bdevFee","type":"uint256"}],"name":"setAllBuyFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_maxTxAmount","type":"uint256"},{"internalType":"uint256","name":"_maxHoldAmount","type":"uint256"}],"name":"setAmountLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"_devAddress","type":"address"}],"name":"setDevAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"},{"internalType":"bool","name":"_state","type":"bool"}],"name":"setExcludeFromMaxTx","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"_marketAddress","type":"address"}],"name":"setMarketAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_percentageOfSuppy","type":"uint256"}],"name":"setMaxTxLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"setMinTokenNumberToSell","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_btaxFee","type":"uint256"},{"internalType":"uint256","name":"_staxFee","type":"uint256"}],"name":"setReflectionFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_sliquidityFee","type":"uint256"},{"internalType":"uint256","name":"_smarketFee","type":"uint256"},{"internalType":"uint256","name":"_sdevFee","type":"uint256"}],"name":"setSllSellFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_state","type":"bool"}],"name":"setSwapAndLiquifyEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract IUniSwapRouter02","name":"_uniSwapRouter","type":"address"}],"name":"setUniswapRouter","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapAndLiquifyEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"rAmount","type":"uint256"}],"name":"tokenFromReflection","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"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 payable","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniSwapPair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniSwapRouter","outputs":[{"internalType":"contract IUniSwapRouter02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
60a0604052670de0b6b3a76400006009819055620000209060001962000802565b6200002e90600019620007ab565b600a5560408051808201909152600880825267414d4d4f4e49544560c01b60209092019182526200006291600c9162000619565b5060408051808201909152600480825263414d4d4f60e01b60209092019182526200009091600d9162000619565b50600e8054600960ff1990911681179091556000601281905560135560146015819055602860165560188190556019819055600a601b55601c55601d805462ffffff19169055546200010c90606490620000f8906001620004ff602090811b620013d917901c565b6200059360201b620014581790919060201c565b601e5566038d7ea4c68000601f556200013d6064620000f86002600954620004ff60201b620013d91790919060201c565b60205542602155600160225542602355602d6024553480156200015f57600080fd5b50604051620034f6380380620034f68339810160408190526200018291620006de565b600080546001600160a01b031916339081178255604051909182917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350600a5460026000620001dd6000546001600160a01b031690565b6001600160a01b039081168252602080830193909352604091820160002093909355600f80546001600160a01b0319908116878616179091556010805490911693851693909317909255815163c45a015560e01b81529151737a250d5630b4cf539739df2c5dacb4c659f2488d92839263c45a015592600480840193829003018186803b1580156200026e57600080fd5b505afa15801562000283573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002a99190620006bf565b6001600160a01b031663c9c6539630836001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015620002f257600080fd5b505afa15801562000307573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200032d9190620006bf565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381600087803b1580156200037657600080fd5b505af11580156200038b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003b19190620006bf565b60601b6001600160601b031916608052600e8054610100600160a81b0319166101006001600160a01b03841602179055600160056000620003fa6000546001600160a01b031690565b6001600160a01b0316815260208082019290925260409081016000908120805494151560ff199586161790553081526005909252812080549092166001908117909255600790620004536000546001600160a01b031690565b6001600160a01b0316815260208082019290925260409081016000908120805494151560ff199586161790553081526007909252902080549091166001179055620004a66000546001600160a01b031690565b6001600160a01b031660006001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600954604051620004ee91815260200190565b60405180910390a35050506200085e565b60008262000510575060006200058d565b60006200051e838562000789565b9050826200052d858362000772565b146200058a5760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b60648201526084015b60405180910390fd5b90505b92915050565b60006200058a83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250620005dd60201b60201c565b60008183620006015760405162461bcd60e51b81526004016200058191906200071c565b50600062000610848662000772565b95945050505050565b8280546200062790620007c5565b90600052602060002090601f0160209004810192826200064b576000855562000696565b82601f106200066657805160ff191683800117855562000696565b8280016001018555821562000696579182015b828111156200069657825182559160200191906001019062000679565b50620006a4929150620006a8565b5090565b5b80821115620006a45760008155600101620006a9565b600060208284031215620006d1578081fd5b81516200058a8162000845565b60008060408385031215620006f1578081fd5b8251620006fe8162000845565b6020840151909250620007118162000845565b809150509250929050565b6000602080835283518082850152825b818110156200074a578581018301518582016040015282016200072c565b818111156200075c5783604083870101525b50601f01601f1916929092016040019392505050565b6000826200078457620007846200082f565b500490565b6000816000190483118215151615620007a657620007a662000819565b500290565b600082821015620007c057620007c062000819565b500390565b600181811c90821680620007da57607f821691505b60208210811415620007fc57634e487b7160e01b600052602260045260246000fd5b50919050565b6000826200081457620008146200082f565b500690565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052601260045260246000fd5b6001600160a01b03811681146200085b57600080fd5b50565b60805160601c612c4f620008a7600039600081816108a90152818161178801528181611825015281816118c901528181611c8901528181611ce80152611f660152612c4f6000f3fe60806040526004361061037a5760003560e01c806389f9a1d3116101d1578063c8b11dee11610102578063ea2f0b37116100a0578063f42938901161006f578063f4293890146109bc578063fae92612146109d1578063fb271bab146109f1578063fc6f4cbb14610a1157600080fd5b8063ea2f0b3714610947578063f1dabdde14610967578063f21097f414610987578063f2fde38b1461099c57600080fd5b8063d837df05116100dc578063d837df0514610897578063dd62ed3e146108cb578063de3be53514610911578063e4440a861461092757600080fd5b8063c8b11dee1461084b578063d0d41fe114610861578063d6ba9f501461088157600080fd5b8063a1e45b811161016f578063be23322911610149578063be233229146107df578063bea9849e146107f5578063c05ebfaa14610815578063c49b9a801461082b57600080fd5b8063a1e45b8114610789578063a457c2d71461079f578063a9059cbb146107bf57600080fd5b80638d780233116101ab5780638d780233146107205780638da5cb5b146107365780638ea5220f1461075457806395d89b411461077457600080fd5b806389f9a1d3146106de5780638b591a01146106f45780638c0b5e221461070a57600080fd5b80634a74bb02116102ab57806364f5a5bb1161024957806370a082311161022357806370a082311461067d578063715018a61461069d5780637a091849146106b2578063879d2bf9146106c857600080fd5b806364f5a5bb146106345780636f9fb98a146106545780637055835e1461066757600080fd5b806351bc3c851161028557806351bc3c85146105895780635342acb41461059e5780635b89029c146105d75780635d01ff3d146105f757600080fd5b80634a74bb021461053a5780634bcc26161461055457806350402f4e1461057457600080fd5b80632b123ba11161031857806339509351116102f257806339509351146104c5578063437823ec146104e55780634415fb611461050557806348914c991461051a57600080fd5b80632b123ba11461046d5780632d83811914610483578063313ce567146104a357600080fd5b806313114a9d1161035457806313114a9d1461040157806318160ddd1461041657806323b872dd1461042b57806324719e9e1461044b57600080fd5b80630558583b1461038657806306fdde03146103af578063095ea7b3146103d157600080fd5b3661038157005b600080fd5b34801561039257600080fd5b5061039c60215481565b6040519081526020015b60405180910390f35b3480156103bb57600080fd5b506103c4610a30565b6040516103a691906129e9565b3480156103dd57600080fd5b506103f16103ec366004612913565b610ac2565b60405190151581526020016103a6565b34801561040d57600080fd5b50600b5461039c565b34801561042257600080fd5b5060095461039c565b34801561043757600080fd5b506103f161044636600461289f565b610ad9565b34801561045757600080fd5b5061046b610466366004612970565b610b42565b005b34801561047957600080fd5b5061039c60225481565b34801561048f57600080fd5b5061039c61049e366004612958565b610b80565b3480156104af57600080fd5b50600e5460405160ff90911681526020016103a6565b3480156104d157600080fd5b506103f16104e0366004612913565b610c04565b3480156104f157600080fd5b5061046b61050036600461282f565b610c3a565b34801561051157600080fd5b5061046b610c88565b34801561052657600080fd5b5061046b610535366004612991565b610cba565b34801561054657600080fd5b50601d546103f19060ff1681565b34801561056057600080fd5b5061046b61056f366004612958565b610cf2565b34801561058057600080fd5b5061046b610d21565b34801561059557600080fd5b5061046b610d52565b3480156105aa57600080fd5b506103f16105b936600461282f565b6001600160a01b031660009081526005602052604090205460ff1690565b3480156105e357600080fd5b5061046b6105f23660046128df565b610dc7565b34801561060357600080fd5b50600e5461061c9061010090046001600160a01b031681565b6040516001600160a01b0390911681526020016103a6565b34801561064057600080fd5b5061046b61064f366004612958565b610e1c565b34801561066057600080fd5b504761039c565b34801561067357600080fd5b5061039c60155481565b34801561068957600080fd5b5061039c61069836600461282f565b610e6c565b3480156106a957600080fd5b5061046b610ecb565b3480156106be57600080fd5b5061039c601f5481565b3480156106d457600080fd5b5061039c601b5481565b3480156106ea57600080fd5b5061039c60205481565b34801561070057600080fd5b5061039c60235481565b34801561071657600080fd5b5061039c601e5481565b34801561072c57600080fd5b5061039c60165481565b34801561074257600080fd5b506000546001600160a01b031661061c565b34801561076057600080fd5b5060105461061c906001600160a01b031681565b34801561078057600080fd5b506103c4610f3f565b34801561079557600080fd5b5061039c60185481565b3480156107ab57600080fd5b506103f16107ba366004612913565b610f4e565b3480156107cb57600080fd5b506103f16107da366004612913565b610f9d565b3480156107eb57600080fd5b5061039c60125481565b34801561080157600080fd5b5061046b61081036600461282f565b610faa565b34801561082157600080fd5b5061039c601c5481565b34801561083757600080fd5b5061046b61084636600461293e565b610ffc565b34801561085757600080fd5b5061039c60135481565b34801561086d57600080fd5b5061046b61087c36600461282f565b61106d565b34801561088d57600080fd5b5061039c60195481565b3480156108a357600080fd5b5061061c7f000000000000000000000000000000000000000000000000000000000000000081565b3480156108d757600080fd5b5061039c6108e6366004612867565b6001600160a01b03918216600090815260046020908152604080832093909416825291909152205490565b34801561091d57600080fd5b5061039c60245481565b34801561093357600080fd5b50600f5461061c906001600160a01b031681565b34801561095357600080fd5b5061046b61096236600461282f565b6110b9565b34801561097357600080fd5b5061046b610982366004612991565b611104565b34801561099357600080fd5b5061046b61113c565b3480156109a857600080fd5b5061046b6109b736600461282f565b61116d565b3480156109c857600080fd5b5061046b611257565b3480156109dd57600080fd5b5061046b6109ec36600461282f565b611358565b3480156109fd57600080fd5b5061046b610a0c366004612970565b6113a4565b348015610a1d57600080fd5b50601d546103f190610100900460ff1681565b6060600c8054610a3f90612b4f565b80601f0160208091040260200160405190810160405280929190818152602001828054610a6b90612b4f565b8015610ab85780601f10610a8d57610100808354040283529160200191610ab8565b820191906000526020600020905b815481529060010190602001808311610a9b57829003601f168201915b5050505050905090565b6000610acf33848461149a565b5060015b92915050565b6000610ae68484846115be565b610b388433610b3385604051806060016040528060268152602001612bd1602691396001600160a01b038a16600090815260046020908152604080832033845290915290205491906119e8565b61149a565b5060019392505050565b6000546001600160a01b03163314610b755760405162461bcd60e51b8152600401610b6c90612a3c565b60405180910390fd5b601291909155601355565b6000600a54821115610be75760405162461bcd60e51b815260206004820152602a60248201527f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260448201526965666c656374696f6e7360b01b6064820152608401610b6c565b6000610bf1611a22565b9050610bfd8382611458565b9392505050565b3360008181526004602090815260408083206001600160a01b03871684529091528120549091610acf918590610b339086611a45565b6000546001600160a01b03163314610c645760405162461bcd60e51b8152600401610b6c90612a3c565b6001600160a01b03166000908152600560205260409020805460ff19166001179055565b6000546001600160a01b03163314610cb25760405162461bcd60e51b8152600401610b6c90612a3c565b600954601e55565b6000546001600160a01b03163314610ce45760405162461bcd60e51b8152600401610b6c90612a3c565b601592909255601855601b55565b6000546001600160a01b03163314610d1c5760405162461bcd60e51b8152600401610b6c90612a3c565b601f55565b6000546001600160a01b03163314610d4b5760405162461bcd60e51b8152600401610b6c90612a3c565b6000602455565b6000546001600160a01b03163314610d7c5760405162461bcd60e51b8152600401610b6c90612a3c565b6000610d8730610e6c565b9050610da930600e60019054906101000a90046001600160a01b03168361149a565b600e54610dc49061010090046001600160a01b031682611aa4565b50565b6000546001600160a01b03163314610df15760405162461bcd60e51b8152600401610b6c90612a3c565b6001600160a01b03919091166000908152600760205260409020805460ff1916911515919091179055565b6000546001600160a01b03163314610e465760405162461bcd60e51b8152600401610b6c90612a3c565b610e666064610e60836009546113d990919063ffffffff16565b90611458565b601e5550565b6001600160a01b03811660009081526006602052604081205460ff1615610ea957506001600160a01b031660009081526003602052604090205490565b6001600160a01b038216600090815260026020526040902054610ad390610b80565b6000546001600160a01b03163314610ef55760405162461bcd60e51b8152600401610b6c90612a3c565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6060600d8054610a3f90612b4f565b6000610acf3384610b3385604051806060016040528060238152602001612bf7602391393360009081526004602090815260408083206001600160a01b038d16845290915290205491906119e8565b6000610acf3384846115be565b6000546001600160a01b03163314610fd45760405162461bcd60e51b8152600401610b6c90612a3c565b600e80546001600160a01b0390921661010002610100600160a81b0319909216919091179055565b6000546001600160a01b031633146110265760405162461bcd60e51b8152600401610b6c90612a3c565b601d805460ff19168215159081179091556040519081527f53726dfcaf90650aa7eb35524f4d3220f07413c8d6cb404cc8c18bf5591bc1599060200160405180910390a150565b6000546001600160a01b031633146110975760405162461bcd60e51b8152600401610b6c90612a3c565b601080546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b031633146110e35760405162461bcd60e51b8152600401610b6c90612a3c565b6001600160a01b03166000908152600560205260409020805460ff19169055565b6000546001600160a01b0316331461112e5760405162461bcd60e51b8152600401610b6c90612a3c565b601692909255601955601c55565b6000546001600160a01b031633146111665760405162461bcd60e51b8152600401610b6c90612a3c565b602d602455565b6000546001600160a01b031633146111975760405162461bcd60e51b8152600401610b6c90612a3c565b6001600160a01b0381166111fc5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610b6c565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b031633146112815760405162461bcd60e51b8152600401610b6c90612a3c565b61129e601354601155601654601455601954601755601c54601a55565b60175460145447916000916112b291611a45565b905060006112d182610e60612710601a546113d990919063ffffffff16565b6010549091506001600160a01b03166108fc6112f184610e6087866113d9565b6040518115909202916000818181858888f19350505050158015611319573d6000803e3d6000fd5b50600f546001600160a01b03166108fc476040518115909202916000818181858888f19350505050158015611352573d6000803e3d6000fd5b50505050565b6000546001600160a01b031633146113825760405162461bcd60e51b8152600401610b6c90612a3c565b600f80546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b031633146113ce5760405162461bcd60e51b8152600401610b6c90612a3c565b601e91909155602055565b6000826113e857506000610ad3565b60006113f48385612b19565b9050826114018583612af9565b14610bfd5760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b6064820152608401610b6c565b6000610bfd83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611c19565b6001600160a01b0383166114fc5760405162461bcd60e51b8152602060048201526024808201527f544f4b454e3a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610b6c565b6001600160a01b03821661155d5760405162461bcd60e51b815260206004820152602260248201527f544f4b454e3a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610b6c565b6001600160a01b0383811660008181526004602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b0383166116225760405162461bcd60e51b815260206004820152602560248201527f544f4b454e3a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610b6c565b6001600160a01b0382166116845760405162461bcd60e51b815260206004820152602360248201527f544f4b454e3a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610b6c565b600081116116ed5760405162461bcd60e51b815260206004820152603060248201527f544f4b454e3a205472616e7366657220616d6f756e74206d757374206265206760448201526f726561746572207468616e207a65726f60801b6064820152608401610b6c565b6001600160a01b03831660009081526007602052604090205460ff1615801561172f57506001600160a01b03821660009081526007602052604090205460ff16155b1561197557601e548111156117865760405162461bcd60e51b815260206004820152601e60248201527f544f4b454e3a20416d6f756e7420657863656564206d6178206c696d697400006044820152606401610b6c565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316826001600160a01b031614611823576020546117d5826117cf85610e6c565b90611a45565b11156118235760405162461bcd60e51b815260206004820181905260248201527f544f4b454e3a206d617820686f6c64696e67206c696d697420657863656564736044820152606401610b6c565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316836001600160a01b031614156118c75742611875602454602354611a4590919063ffffffff16565b106118c25760405162461bcd60e51b815260206004820181905260248201527f544f4b454e3a207761697420666f7220627579696e6720636f6f6c20646f776e6044820152606401610b6c565b426023555b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316826001600160a01b031614156119755742611919602254602154611a4590919063ffffffff16565b106119705760405162461bcd60e51b815260206004820152602160248201527f544f4b454e3a207761697420666f722073656c6c696e6720636f6f6c20646f776044820152603760f91b6064820152608401610b6c565b426021555b61197f8383611c47565b6001600160a01b03831660009081526005602052604090205460019060ff16806119c157506001600160a01b03831660009081526005602052604090205460ff165b806119d35750601d54610100900460ff165b156119dc575060005b61135284848484611f41565b60008184841115611a0c5760405162461bcd60e51b8152600401610b6c91906129e9565b506000611a198486612b38565b95945050505050565b6000806000611a2f6120da565b9092509050611a3e8282611458565b9250505090565b600080611a528385612ae1565b905083811015610bfd5760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006044820152606401610b6c565b604080516002808252606082018352849260009291906020830190803683370190505090503081600081518110611aeb57634e487b7160e01b600052603260045260246000fd5b60200260200101906001600160a01b031690816001600160a01b031681525050816001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015611b4457600080fd5b505afa158015611b58573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b7c919061284b565b81600181518110611b9d57634e487b7160e01b600052603260045260246000fd5b6001600160a01b03928316602091820292909201015260405163791ac94760e01b81529083169063791ac94790611be1908690600090869030904290600401612a71565b600060405180830381600087803b158015611bfb57600080fd5b505af1158015611c0f573d6000803e3d6000fd5b5050505050505050565b60008183611c3a5760405162461bcd60e51b8152600401610b6c91906129e9565b506000611a198486612af9565b6000611c5230610e6c565b9050601e548110611c625750601e545b601f54601d54908210159062010000900460ff16158015611c805750805b8015611cbe57507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316846001600160a01b031614155b8015611ccc5750601d5460ff165b8015611d1e57506001600160a01b03841630148015611d1c57507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316836001600160a01b0316145b155b1561135257601f549150611d4830600e60019054906101000a90046001600160a01b03168461149a565b611d65601354601155601654601455601954601755601c54601a55565b6000611d7e601754601454611a4590919063ffffffff16565b90506000611da26002610e6084610e606127106014546113d990919063ffffffff16565b90506000611dc183610e606127106017546113d990919063ffffffff16565b90506000611de084610e60612710601a546113d990919063ffffffff16565b90506000611df4612710610e6089876113d9565b90506000611e028883612294565b600e54909150611e209061010090046001600160a01b031682611aa4565b47611e2f846117cf8888611a45565b96506000611e4188610e60848a6113d9565b600e54909150611e73906001600160a01b0361010090910416611e6c6000546001600160a01b031690565b86846122d6565b6010546001600160a01b03166108fc611e908a610e60868a6113d9565b6040518115909202916000818181858888f19350505050158015611eb8573d6000803e3d6000fd5b50600f546001600160a01b03166108fc476040518115909202916000818181858888f19350505050158015611ef1573d6000803e3d6000fd5b5060408051848152602081018490529081018590527f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb5619060600160405180910390a1505050505050505050505050565b80611f6457611f5f6000601181905560148190556017819055601a55565b611fd8565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316846001600160a01b03161415611fbb57611f5f601254601155601554601455601854601755601b54601a55565b611fd8601354601155601654601455601954601755601c54601a55565b6001600160a01b03841660009081526006602052604090205460ff16801561201957506001600160a01b03831660009081526006602052604090205460ff16155b1561202e5761202984848461239a565b611352565b6001600160a01b03841660009081526006602052604090205460ff1615801561206f57506001600160a01b03831660009081526006602052604090205460ff165b1561207f576120298484846124f0565b6001600160a01b03841660009081526006602052604090205460ff1680156120bf57506001600160a01b03831660009081526006602052604090205460ff165b156120cf576120298484846125b7565b611352848484612648565b600a546009546000918291825b6008548110156122645782600260006008848154811061211757634e487b7160e01b600052603260045260246000fd5b60009182526020808320909101546001600160a01b031683528201929092526040019020541180612190575081600360006008848154811061216957634e487b7160e01b600052603260045260246000fd5b60009182526020808320909101546001600160a01b03168352820192909252604001902054115b156121a657600a54600954945094505050509091565b6121fa60026000600884815481106121ce57634e487b7160e01b600052603260045260246000fd5b60009182526020808320909101546001600160a01b031683528201929092526040019020548490612294565b9250612250600360006008848154811061222457634e487b7160e01b600052603260045260246000fd5b60009182526020808320909101546001600160a01b031683528201929092526040019020548390612294565b91508061225c81612b8a565b9150506120e7565b50600954600a5461227491611458565b82101561228b57600a546009549350935050509091565b90939092509050565b6000610bfd83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506119e8565b836001600160a01b03811663f305d7198330866000808a6122f942610168612ae1565b60405160e089901b6001600160e01b03191681526001600160a01b039687166004820152602481019590955260448501939093526064840191909152909216608482015260a481019190915260c4016060604051808303818588803b15801561236157600080fd5b505af1158015612375573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190611c0f91906129bc565b60006123a4611a22565b905060006123bb6123b4846126aa565b8490612294565b905060006123c984846113d9565b905060006123ea6123e3856123dd886126aa565b906113d9565b8390612294565b6001600160a01b0388166000908152600360205260409020549091506124109086612294565b6001600160a01b03881660009081526003602090815260408083209390935560029052205461243f9083612294565b6001600160a01b03808916600090815260026020526040808220939093559088168152205461246e9082611a45565b6001600160a01b03871660009081526002602052604090205561249185856126e0565b61249a856127bf565b856001600160a01b0316876001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040516124df91815260200190565b60405180910390a350505050505050565b60006124fa611a22565b9050600061250a6123b4846126aa565b9050600061251884846113d9565b9050600061252c6123e3856123dd886126aa565b6001600160a01b0388166000908152600260205260409020549091506125529083612294565b6001600160a01b038089166000908152600260209081526040808320949094559189168152600390915220546125889084611a45565b6001600160a01b03871660009081526003602090815260408083209390935560029052205461246e9082611a45565b60006125c1611a22565b905060006125d16123b4846126aa565b905060006125df84846113d9565b905060006125f36123e3856123dd886126aa565b6001600160a01b0388166000908152600360205260409020549091506126199086612294565b6001600160a01b0388166000908152600360209081526040808320939093556002905220546125529083612294565b6000612652611a22565b905060006126626123b4846126aa565b9050600061267084846113d9565b905060006126846123e3856123dd886126aa565b6001600160a01b03881660009081526002602052604090205490915061243f9083612294565b600080610bfd6103e8610e606126d9601a546117cf6017546117cf601454601154611a4590919063ffffffff16565b86906113d9565b60006127086103e8610e606126d9601a546117cf601754601454611a4590919063ffffffff16565b9050600061271682846113d9565b306000908152600260205260409020549091506127339082611a45565b3060009081526002602090815260408083209390935560069052205460ff161561278257306000908152600360205260409020546127719083611a45565b306000908152600360205260409020555b604051828152309033907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a350505050565b60006127dc6103e8610e60601154856113d990919063ffffffff16565b905060006127f26127eb611a22565b83906113d9565b600a549091506128029082612294565b600a55600b546128129083611a45565b600b55505050565b8035801515811461282a57600080fd5b919050565b600060208284031215612840578081fd5b8135610bfd81612bbb565b60006020828403121561285c578081fd5b8151610bfd81612bbb565b60008060408385031215612879578081fd5b823561288481612bbb565b9150602083013561289481612bbb565b809150509250929050565b6000806000606084860312156128b3578081fd5b83356128be81612bbb565b925060208401356128ce81612bbb565b929592945050506040919091013590565b600080604083850312156128f1578182fd5b82356128fc81612bbb565b915061290a6020840161281a565b90509250929050565b60008060408385031215612925578182fd5b823561293081612bbb565b946020939093013593505050565b60006020828403121561294f578081fd5b610bfd8261281a565b600060208284031215612969578081fd5b5035919050565b60008060408385031215612982578182fd5b50508035926020909101359150565b6000806000606084860312156129a5578283fd5b505081359360208301359350604090920135919050565b6000806000606084860312156129d0578283fd5b8351925060208401519150604084015190509250925092565b6000602080835283518082850152825b81811015612a15578581018301518582016040015282016129f9565b81811115612a265783604083870101525b50601f01601f1916929092016040019392505050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b600060a082018783526020878185015260a0604085015281875180845260c0860191508289019350845b81811015612ac05784516001600160a01b031683529383019391830191600101612a9b565b50506001600160a01b03969096166060850152505050608001529392505050565b60008219821115612af457612af4612ba5565b500190565b600082612b1457634e487b7160e01b81526012600452602481fd5b500490565b6000816000190483118215151615612b3357612b33612ba5565b500290565b600082821015612b4a57612b4a612ba5565b500390565b600181811c90821680612b6357607f821691505b60208210811415612b8457634e487b7160e01b600052602260045260246000fd5b50919050565b6000600019821415612b9e57612b9e612ba5565b5060010190565b634e487b7160e01b600052601160045260246000fd5b6001600160a01b0381168114610dc457600080fdfe4255543a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e63654255543a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa264697066735822122074a284fc2fc2133cd9d90d192983f8d7119a4cbd82c56a2225a2a8b7e59a6ed064736f6c63430008040033000000000000000000000000403726f8391138ca808417797c2f12c497f1fda9000000000000000000000000791a7fb6ee7537e62801241d56d93beb9dab65bc
Deployed Bytecode
0x60806040526004361061037a5760003560e01c806389f9a1d3116101d1578063c8b11dee11610102578063ea2f0b37116100a0578063f42938901161006f578063f4293890146109bc578063fae92612146109d1578063fb271bab146109f1578063fc6f4cbb14610a1157600080fd5b8063ea2f0b3714610947578063f1dabdde14610967578063f21097f414610987578063f2fde38b1461099c57600080fd5b8063d837df05116100dc578063d837df0514610897578063dd62ed3e146108cb578063de3be53514610911578063e4440a861461092757600080fd5b8063c8b11dee1461084b578063d0d41fe114610861578063d6ba9f501461088157600080fd5b8063a1e45b811161016f578063be23322911610149578063be233229146107df578063bea9849e146107f5578063c05ebfaa14610815578063c49b9a801461082b57600080fd5b8063a1e45b8114610789578063a457c2d71461079f578063a9059cbb146107bf57600080fd5b80638d780233116101ab5780638d780233146107205780638da5cb5b146107365780638ea5220f1461075457806395d89b411461077457600080fd5b806389f9a1d3146106de5780638b591a01146106f45780638c0b5e221461070a57600080fd5b80634a74bb02116102ab57806364f5a5bb1161024957806370a082311161022357806370a082311461067d578063715018a61461069d5780637a091849146106b2578063879d2bf9146106c857600080fd5b806364f5a5bb146106345780636f9fb98a146106545780637055835e1461066757600080fd5b806351bc3c851161028557806351bc3c85146105895780635342acb41461059e5780635b89029c146105d75780635d01ff3d146105f757600080fd5b80634a74bb021461053a5780634bcc26161461055457806350402f4e1461057457600080fd5b80632b123ba11161031857806339509351116102f257806339509351146104c5578063437823ec146104e55780634415fb611461050557806348914c991461051a57600080fd5b80632b123ba11461046d5780632d83811914610483578063313ce567146104a357600080fd5b806313114a9d1161035457806313114a9d1461040157806318160ddd1461041657806323b872dd1461042b57806324719e9e1461044b57600080fd5b80630558583b1461038657806306fdde03146103af578063095ea7b3146103d157600080fd5b3661038157005b600080fd5b34801561039257600080fd5b5061039c60215481565b6040519081526020015b60405180910390f35b3480156103bb57600080fd5b506103c4610a30565b6040516103a691906129e9565b3480156103dd57600080fd5b506103f16103ec366004612913565b610ac2565b60405190151581526020016103a6565b34801561040d57600080fd5b50600b5461039c565b34801561042257600080fd5b5060095461039c565b34801561043757600080fd5b506103f161044636600461289f565b610ad9565b34801561045757600080fd5b5061046b610466366004612970565b610b42565b005b34801561047957600080fd5b5061039c60225481565b34801561048f57600080fd5b5061039c61049e366004612958565b610b80565b3480156104af57600080fd5b50600e5460405160ff90911681526020016103a6565b3480156104d157600080fd5b506103f16104e0366004612913565b610c04565b3480156104f157600080fd5b5061046b61050036600461282f565b610c3a565b34801561051157600080fd5b5061046b610c88565b34801561052657600080fd5b5061046b610535366004612991565b610cba565b34801561054657600080fd5b50601d546103f19060ff1681565b34801561056057600080fd5b5061046b61056f366004612958565b610cf2565b34801561058057600080fd5b5061046b610d21565b34801561059557600080fd5b5061046b610d52565b3480156105aa57600080fd5b506103f16105b936600461282f565b6001600160a01b031660009081526005602052604090205460ff1690565b3480156105e357600080fd5b5061046b6105f23660046128df565b610dc7565b34801561060357600080fd5b50600e5461061c9061010090046001600160a01b031681565b6040516001600160a01b0390911681526020016103a6565b34801561064057600080fd5b5061046b61064f366004612958565b610e1c565b34801561066057600080fd5b504761039c565b34801561067357600080fd5b5061039c60155481565b34801561068957600080fd5b5061039c61069836600461282f565b610e6c565b3480156106a957600080fd5b5061046b610ecb565b3480156106be57600080fd5b5061039c601f5481565b3480156106d457600080fd5b5061039c601b5481565b3480156106ea57600080fd5b5061039c60205481565b34801561070057600080fd5b5061039c60235481565b34801561071657600080fd5b5061039c601e5481565b34801561072c57600080fd5b5061039c60165481565b34801561074257600080fd5b506000546001600160a01b031661061c565b34801561076057600080fd5b5060105461061c906001600160a01b031681565b34801561078057600080fd5b506103c4610f3f565b34801561079557600080fd5b5061039c60185481565b3480156107ab57600080fd5b506103f16107ba366004612913565b610f4e565b3480156107cb57600080fd5b506103f16107da366004612913565b610f9d565b3480156107eb57600080fd5b5061039c60125481565b34801561080157600080fd5b5061046b61081036600461282f565b610faa565b34801561082157600080fd5b5061039c601c5481565b34801561083757600080fd5b5061046b61084636600461293e565b610ffc565b34801561085757600080fd5b5061039c60135481565b34801561086d57600080fd5b5061046b61087c36600461282f565b61106d565b34801561088d57600080fd5b5061039c60195481565b3480156108a357600080fd5b5061061c7f000000000000000000000000eebd8b748663b779df7b193f7d5797138ecc945081565b3480156108d757600080fd5b5061039c6108e6366004612867565b6001600160a01b03918216600090815260046020908152604080832093909416825291909152205490565b34801561091d57600080fd5b5061039c60245481565b34801561093357600080fd5b50600f5461061c906001600160a01b031681565b34801561095357600080fd5b5061046b61096236600461282f565b6110b9565b34801561097357600080fd5b5061046b610982366004612991565b611104565b34801561099357600080fd5b5061046b61113c565b3480156109a857600080fd5b5061046b6109b736600461282f565b61116d565b3480156109c857600080fd5b5061046b611257565b3480156109dd57600080fd5b5061046b6109ec36600461282f565b611358565b3480156109fd57600080fd5b5061046b610a0c366004612970565b6113a4565b348015610a1d57600080fd5b50601d546103f190610100900460ff1681565b6060600c8054610a3f90612b4f565b80601f0160208091040260200160405190810160405280929190818152602001828054610a6b90612b4f565b8015610ab85780601f10610a8d57610100808354040283529160200191610ab8565b820191906000526020600020905b815481529060010190602001808311610a9b57829003601f168201915b5050505050905090565b6000610acf33848461149a565b5060015b92915050565b6000610ae68484846115be565b610b388433610b3385604051806060016040528060268152602001612bd1602691396001600160a01b038a16600090815260046020908152604080832033845290915290205491906119e8565b61149a565b5060019392505050565b6000546001600160a01b03163314610b755760405162461bcd60e51b8152600401610b6c90612a3c565b60405180910390fd5b601291909155601355565b6000600a54821115610be75760405162461bcd60e51b815260206004820152602a60248201527f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260448201526965666c656374696f6e7360b01b6064820152608401610b6c565b6000610bf1611a22565b9050610bfd8382611458565b9392505050565b3360008181526004602090815260408083206001600160a01b03871684529091528120549091610acf918590610b339086611a45565b6000546001600160a01b03163314610c645760405162461bcd60e51b8152600401610b6c90612a3c565b6001600160a01b03166000908152600560205260409020805460ff19166001179055565b6000546001600160a01b03163314610cb25760405162461bcd60e51b8152600401610b6c90612a3c565b600954601e55565b6000546001600160a01b03163314610ce45760405162461bcd60e51b8152600401610b6c90612a3c565b601592909255601855601b55565b6000546001600160a01b03163314610d1c5760405162461bcd60e51b8152600401610b6c90612a3c565b601f55565b6000546001600160a01b03163314610d4b5760405162461bcd60e51b8152600401610b6c90612a3c565b6000602455565b6000546001600160a01b03163314610d7c5760405162461bcd60e51b8152600401610b6c90612a3c565b6000610d8730610e6c565b9050610da930600e60019054906101000a90046001600160a01b03168361149a565b600e54610dc49061010090046001600160a01b031682611aa4565b50565b6000546001600160a01b03163314610df15760405162461bcd60e51b8152600401610b6c90612a3c565b6001600160a01b03919091166000908152600760205260409020805460ff1916911515919091179055565b6000546001600160a01b03163314610e465760405162461bcd60e51b8152600401610b6c90612a3c565b610e666064610e60836009546113d990919063ffffffff16565b90611458565b601e5550565b6001600160a01b03811660009081526006602052604081205460ff1615610ea957506001600160a01b031660009081526003602052604090205490565b6001600160a01b038216600090815260026020526040902054610ad390610b80565b6000546001600160a01b03163314610ef55760405162461bcd60e51b8152600401610b6c90612a3c565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6060600d8054610a3f90612b4f565b6000610acf3384610b3385604051806060016040528060238152602001612bf7602391393360009081526004602090815260408083206001600160a01b038d16845290915290205491906119e8565b6000610acf3384846115be565b6000546001600160a01b03163314610fd45760405162461bcd60e51b8152600401610b6c90612a3c565b600e80546001600160a01b0390921661010002610100600160a81b0319909216919091179055565b6000546001600160a01b031633146110265760405162461bcd60e51b8152600401610b6c90612a3c565b601d805460ff19168215159081179091556040519081527f53726dfcaf90650aa7eb35524f4d3220f07413c8d6cb404cc8c18bf5591bc1599060200160405180910390a150565b6000546001600160a01b031633146110975760405162461bcd60e51b8152600401610b6c90612a3c565b601080546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b031633146110e35760405162461bcd60e51b8152600401610b6c90612a3c565b6001600160a01b03166000908152600560205260409020805460ff19169055565b6000546001600160a01b0316331461112e5760405162461bcd60e51b8152600401610b6c90612a3c565b601692909255601955601c55565b6000546001600160a01b031633146111665760405162461bcd60e51b8152600401610b6c90612a3c565b602d602455565b6000546001600160a01b031633146111975760405162461bcd60e51b8152600401610b6c90612a3c565b6001600160a01b0381166111fc5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610b6c565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b031633146112815760405162461bcd60e51b8152600401610b6c90612a3c565b61129e601354601155601654601455601954601755601c54601a55565b60175460145447916000916112b291611a45565b905060006112d182610e60612710601a546113d990919063ffffffff16565b6010549091506001600160a01b03166108fc6112f184610e6087866113d9565b6040518115909202916000818181858888f19350505050158015611319573d6000803e3d6000fd5b50600f546001600160a01b03166108fc476040518115909202916000818181858888f19350505050158015611352573d6000803e3d6000fd5b50505050565b6000546001600160a01b031633146113825760405162461bcd60e51b8152600401610b6c90612a3c565b600f80546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b031633146113ce5760405162461bcd60e51b8152600401610b6c90612a3c565b601e91909155602055565b6000826113e857506000610ad3565b60006113f48385612b19565b9050826114018583612af9565b14610bfd5760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b6064820152608401610b6c565b6000610bfd83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611c19565b6001600160a01b0383166114fc5760405162461bcd60e51b8152602060048201526024808201527f544f4b454e3a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610b6c565b6001600160a01b03821661155d5760405162461bcd60e51b815260206004820152602260248201527f544f4b454e3a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610b6c565b6001600160a01b0383811660008181526004602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b0383166116225760405162461bcd60e51b815260206004820152602560248201527f544f4b454e3a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610b6c565b6001600160a01b0382166116845760405162461bcd60e51b815260206004820152602360248201527f544f4b454e3a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610b6c565b600081116116ed5760405162461bcd60e51b815260206004820152603060248201527f544f4b454e3a205472616e7366657220616d6f756e74206d757374206265206760448201526f726561746572207468616e207a65726f60801b6064820152608401610b6c565b6001600160a01b03831660009081526007602052604090205460ff1615801561172f57506001600160a01b03821660009081526007602052604090205460ff16155b1561197557601e548111156117865760405162461bcd60e51b815260206004820152601e60248201527f544f4b454e3a20416d6f756e7420657863656564206d6178206c696d697400006044820152606401610b6c565b7f000000000000000000000000eebd8b748663b779df7b193f7d5797138ecc94506001600160a01b0316826001600160a01b031614611823576020546117d5826117cf85610e6c565b90611a45565b11156118235760405162461bcd60e51b815260206004820181905260248201527f544f4b454e3a206d617820686f6c64696e67206c696d697420657863656564736044820152606401610b6c565b7f000000000000000000000000eebd8b748663b779df7b193f7d5797138ecc94506001600160a01b0316836001600160a01b031614156118c75742611875602454602354611a4590919063ffffffff16565b106118c25760405162461bcd60e51b815260206004820181905260248201527f544f4b454e3a207761697420666f7220627579696e6720636f6f6c20646f776e6044820152606401610b6c565b426023555b7f000000000000000000000000eebd8b748663b779df7b193f7d5797138ecc94506001600160a01b0316826001600160a01b031614156119755742611919602254602154611a4590919063ffffffff16565b106119705760405162461bcd60e51b815260206004820152602160248201527f544f4b454e3a207761697420666f722073656c6c696e6720636f6f6c20646f776044820152603760f91b6064820152608401610b6c565b426021555b61197f8383611c47565b6001600160a01b03831660009081526005602052604090205460019060ff16806119c157506001600160a01b03831660009081526005602052604090205460ff165b806119d35750601d54610100900460ff165b156119dc575060005b61135284848484611f41565b60008184841115611a0c5760405162461bcd60e51b8152600401610b6c91906129e9565b506000611a198486612b38565b95945050505050565b6000806000611a2f6120da565b9092509050611a3e8282611458565b9250505090565b600080611a528385612ae1565b905083811015610bfd5760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006044820152606401610b6c565b604080516002808252606082018352849260009291906020830190803683370190505090503081600081518110611aeb57634e487b7160e01b600052603260045260246000fd5b60200260200101906001600160a01b031690816001600160a01b031681525050816001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015611b4457600080fd5b505afa158015611b58573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b7c919061284b565b81600181518110611b9d57634e487b7160e01b600052603260045260246000fd5b6001600160a01b03928316602091820292909201015260405163791ac94760e01b81529083169063791ac94790611be1908690600090869030904290600401612a71565b600060405180830381600087803b158015611bfb57600080fd5b505af1158015611c0f573d6000803e3d6000fd5b5050505050505050565b60008183611c3a5760405162461bcd60e51b8152600401610b6c91906129e9565b506000611a198486612af9565b6000611c5230610e6c565b9050601e548110611c625750601e545b601f54601d54908210159062010000900460ff16158015611c805750805b8015611cbe57507f000000000000000000000000eebd8b748663b779df7b193f7d5797138ecc94506001600160a01b0316846001600160a01b031614155b8015611ccc5750601d5460ff165b8015611d1e57506001600160a01b03841630148015611d1c57507f000000000000000000000000eebd8b748663b779df7b193f7d5797138ecc94506001600160a01b0316836001600160a01b0316145b155b1561135257601f549150611d4830600e60019054906101000a90046001600160a01b03168461149a565b611d65601354601155601654601455601954601755601c54601a55565b6000611d7e601754601454611a4590919063ffffffff16565b90506000611da26002610e6084610e606127106014546113d990919063ffffffff16565b90506000611dc183610e606127106017546113d990919063ffffffff16565b90506000611de084610e60612710601a546113d990919063ffffffff16565b90506000611df4612710610e6089876113d9565b90506000611e028883612294565b600e54909150611e209061010090046001600160a01b031682611aa4565b47611e2f846117cf8888611a45565b96506000611e4188610e60848a6113d9565b600e54909150611e73906001600160a01b0361010090910416611e6c6000546001600160a01b031690565b86846122d6565b6010546001600160a01b03166108fc611e908a610e60868a6113d9565b6040518115909202916000818181858888f19350505050158015611eb8573d6000803e3d6000fd5b50600f546001600160a01b03166108fc476040518115909202916000818181858888f19350505050158015611ef1573d6000803e3d6000fd5b5060408051848152602081018490529081018590527f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb5619060600160405180910390a1505050505050505050505050565b80611f6457611f5f6000601181905560148190556017819055601a55565b611fd8565b7f000000000000000000000000eebd8b748663b779df7b193f7d5797138ecc94506001600160a01b0316846001600160a01b03161415611fbb57611f5f601254601155601554601455601854601755601b54601a55565b611fd8601354601155601654601455601954601755601c54601a55565b6001600160a01b03841660009081526006602052604090205460ff16801561201957506001600160a01b03831660009081526006602052604090205460ff16155b1561202e5761202984848461239a565b611352565b6001600160a01b03841660009081526006602052604090205460ff1615801561206f57506001600160a01b03831660009081526006602052604090205460ff165b1561207f576120298484846124f0565b6001600160a01b03841660009081526006602052604090205460ff1680156120bf57506001600160a01b03831660009081526006602052604090205460ff165b156120cf576120298484846125b7565b611352848484612648565b600a546009546000918291825b6008548110156122645782600260006008848154811061211757634e487b7160e01b600052603260045260246000fd5b60009182526020808320909101546001600160a01b031683528201929092526040019020541180612190575081600360006008848154811061216957634e487b7160e01b600052603260045260246000fd5b60009182526020808320909101546001600160a01b03168352820192909252604001902054115b156121a657600a54600954945094505050509091565b6121fa60026000600884815481106121ce57634e487b7160e01b600052603260045260246000fd5b60009182526020808320909101546001600160a01b031683528201929092526040019020548490612294565b9250612250600360006008848154811061222457634e487b7160e01b600052603260045260246000fd5b60009182526020808320909101546001600160a01b031683528201929092526040019020548390612294565b91508061225c81612b8a565b9150506120e7565b50600954600a5461227491611458565b82101561228b57600a546009549350935050509091565b90939092509050565b6000610bfd83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506119e8565b836001600160a01b03811663f305d7198330866000808a6122f942610168612ae1565b60405160e089901b6001600160e01b03191681526001600160a01b039687166004820152602481019590955260448501939093526064840191909152909216608482015260a481019190915260c4016060604051808303818588803b15801561236157600080fd5b505af1158015612375573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190611c0f91906129bc565b60006123a4611a22565b905060006123bb6123b4846126aa565b8490612294565b905060006123c984846113d9565b905060006123ea6123e3856123dd886126aa565b906113d9565b8390612294565b6001600160a01b0388166000908152600360205260409020549091506124109086612294565b6001600160a01b03881660009081526003602090815260408083209390935560029052205461243f9083612294565b6001600160a01b03808916600090815260026020526040808220939093559088168152205461246e9082611a45565b6001600160a01b03871660009081526002602052604090205561249185856126e0565b61249a856127bf565b856001600160a01b0316876001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040516124df91815260200190565b60405180910390a350505050505050565b60006124fa611a22565b9050600061250a6123b4846126aa565b9050600061251884846113d9565b9050600061252c6123e3856123dd886126aa565b6001600160a01b0388166000908152600260205260409020549091506125529083612294565b6001600160a01b038089166000908152600260209081526040808320949094559189168152600390915220546125889084611a45565b6001600160a01b03871660009081526003602090815260408083209390935560029052205461246e9082611a45565b60006125c1611a22565b905060006125d16123b4846126aa565b905060006125df84846113d9565b905060006125f36123e3856123dd886126aa565b6001600160a01b0388166000908152600360205260409020549091506126199086612294565b6001600160a01b0388166000908152600360209081526040808320939093556002905220546125529083612294565b6000612652611a22565b905060006126626123b4846126aa565b9050600061267084846113d9565b905060006126846123e3856123dd886126aa565b6001600160a01b03881660009081526002602052604090205490915061243f9083612294565b600080610bfd6103e8610e606126d9601a546117cf6017546117cf601454601154611a4590919063ffffffff16565b86906113d9565b60006127086103e8610e606126d9601a546117cf601754601454611a4590919063ffffffff16565b9050600061271682846113d9565b306000908152600260205260409020549091506127339082611a45565b3060009081526002602090815260408083209390935560069052205460ff161561278257306000908152600360205260409020546127719083611a45565b306000908152600360205260409020555b604051828152309033907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a350505050565b60006127dc6103e8610e60601154856113d990919063ffffffff16565b905060006127f26127eb611a22565b83906113d9565b600a549091506128029082612294565b600a55600b546128129083611a45565b600b55505050565b8035801515811461282a57600080fd5b919050565b600060208284031215612840578081fd5b8135610bfd81612bbb565b60006020828403121561285c578081fd5b8151610bfd81612bbb565b60008060408385031215612879578081fd5b823561288481612bbb565b9150602083013561289481612bbb565b809150509250929050565b6000806000606084860312156128b3578081fd5b83356128be81612bbb565b925060208401356128ce81612bbb565b929592945050506040919091013590565b600080604083850312156128f1578182fd5b82356128fc81612bbb565b915061290a6020840161281a565b90509250929050565b60008060408385031215612925578182fd5b823561293081612bbb565b946020939093013593505050565b60006020828403121561294f578081fd5b610bfd8261281a565b600060208284031215612969578081fd5b5035919050565b60008060408385031215612982578182fd5b50508035926020909101359150565b6000806000606084860312156129a5578283fd5b505081359360208301359350604090920135919050565b6000806000606084860312156129d0578283fd5b8351925060208401519150604084015190509250925092565b6000602080835283518082850152825b81811015612a15578581018301518582016040015282016129f9565b81811115612a265783604083870101525b50601f01601f1916929092016040019392505050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b600060a082018783526020878185015260a0604085015281875180845260c0860191508289019350845b81811015612ac05784516001600160a01b031683529383019391830191600101612a9b565b50506001600160a01b03969096166060850152505050608001529392505050565b60008219821115612af457612af4612ba5565b500190565b600082612b1457634e487b7160e01b81526012600452602481fd5b500490565b6000816000190483118215151615612b3357612b33612ba5565b500290565b600082821015612b4a57612b4a612ba5565b500390565b600181811c90821680612b6357607f821691505b60208210811415612b8457634e487b7160e01b600052602260045260246000fd5b50919050565b6000600019821415612b9e57612b9e612ba5565b5060010190565b634e487b7160e01b600052601160045260246000fd5b6001600160a01b0381168114610dc457600080fdfe4255543a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e63654255543a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa264697066735822122074a284fc2fc2133cd9d90d192983f8d7119a4cbd82c56a2225a2a8b7e59a6ed064736f6c63430008040033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
000000000000000000000000403726f8391138ca808417797c2f12c497f1fda9000000000000000000000000791a7fb6ee7537e62801241d56d93beb9dab65bc
-----Decoded View---------------
Arg [0] : _marketWallet (address): 0x403726f8391138CA808417797C2F12C497F1FdA9
Arg [1] : _devWallet (address): 0x791a7FB6eE7537E62801241d56d93beB9dab65Bc
-----Encoded View---------------
2 Constructor Arguments found :
Arg [0] : 000000000000000000000000403726f8391138ca808417797c2f12c497f1fda9
Arg [1] : 000000000000000000000000791a7fb6ee7537e62801241d56d93beb9dab65bc
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.