Feature Tip: Add private address tag to any address under My Name Tag !
Note: This token's displayed symbol does not match its contract's Symbol function.
ERC-20
DeFi
Overview
Max Total Supply
20,835,937.5 DeBTC
Holders
991 (0.00%)
Market
Price
$0.00 @ 0.000000 ETH
Onchain Market Cap
$3.92
Circulating Supply Market Cap
-
Other Info
Token Contract (WITH 9 Decimals)
Balance
1.054058718 DeBTCValue
$0.00 ( ~0 Eth) [0.0000%]Loading...
Loading
Loading...
Loading
Loading...
Loading
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
Contract Name:
DeFiBitcoin
Compiler Version
v0.8.17+commit.8df45f5f
Optimization Enabled:
Yes with 1000000 runs
Other Settings:
london EvmVersion
Contract Source Code (Solidity Standard Json-Input format)
// SPDX-License-Identifier: MIT // DEV_CA: https://t.me/SkorpionDeveloper86 // Name Token: DeFi Bitcoin // TG: https://t.me/BitcoinErc_20 // TWITTER: https://twitter.com/BitcoinErc_20 // WEBSITE: https://defibitcointoken.com/ pragma solidity ^0.8.17; import "./lib.sol"; contract DeFiBitcoin is Context, IERC20, Ownable { using Address for address; enum MarketType{NONE,BULL,BEAR} string private _name = "DeFi Bitcoin"; string private _symbol = "BTC"; uint8 private _decimals = 9; uint256 private _totalSupply = 15750000 * 10**_decimals; uint256 public _maxTotalSupply = 21000000 * 10**_decimals; uint256 private _minimumTokensBeforeSwap = 160000 * 10**_decimals; //1.5% initial - 2% uint8 public _walletMaxPercetualOfTS = 15; address payable public marketingWalletAddress = payable(0xAbf71cC6B67E1a3d3Eda73275c6f45C5E43320F9); address payable public devWalletAddress = payable(0x138C70e3eb9701ACB0B6dB877bB9575248FF1786); uint256 public marketingWalletShare=80; address public immutable _deadAddress = 0x000000000000000000000000000000000000dEaD; mapping (address => uint256) _balances; mapping (address => mapping (address => uint256)) private _allowances; mapping (address => bool) public _holders; address [] public _holdersWallet; mapping (address => uint256) public _rewards; mapping (address => bool) public isExcludedFromFee; mapping (address => bool) public isMarketPair; mapping (address => bool) public isWalletLimitExempt; uint8 public _buyFee = 15; uint8 public _sellFee = 30; uint8 public _buyBearFee = 3; uint8 public _sellBearFee = 3; uint8 public _buyBullFee = 0; uint8 public _sellBullFee = 8; IDEXRouter public _idexV2Router; address public _idexPair; bool _inSwapAndLiquify; bool public _swapAndLiquifyEnabled = false; bool public _swapAndLiquifyByLimitOnly = true; bool public _walletLimitCheck=true; uint256 public _halvingAmount=0; MarketType public _market=MarketType.NONE; uint8 public swapAndLiquidityCount=0; uint8 public swapAndLiquidityFrequency=2; bool public liquidityCountCycle=true; event SwapAndLiquify( uint256 tokensSwapped, uint256 ethReceived, uint256 tokensIntoLiqudity ); event SwapTokensForETH( uint256 amountIn, address[] path ); event Halving(uint256 amount, uint256 timestamp); event Burn(uint256 amount); struct HolderStatus{ uint256 amount; address wallet; } modifier lockTheSwap { _inSwapAndLiquify = true; _; _inSwapAndLiquify = false; } constructor (){ //SEPOLIA: 0x86dcd3293C53Cf8EFd7303B57beb2a3F671dDE98 //ETH_UNISWAP: 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D _idexV2Router = IDEXRouter(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D); _idexPair = IDEXFactory(_idexV2Router.factory()).createPair(address(this), _idexV2Router.WETH()); _allowances[address(this)][address(_idexV2Router)] = _totalSupply; isExcludedFromFee[owner()] = true; isExcludedFromFee[address(this)] = true; isExcludedFromFee[marketingWalletAddress] = true; isExcludedFromFee[devWalletAddress] = true; isExcludedFromFee[_deadAddress] = true; isWalletLimitExempt[owner()] = true; isWalletLimitExempt[address(this)] = true; isWalletLimitExempt[address(_idexPair)] = true; isWalletLimitExempt[marketingWalletAddress] = true; isWalletLimitExempt[devWalletAddress] = true; isWalletLimitExempt[_deadAddress] = true; isMarketPair[address(_idexPair)] = true; _balances[_msgSender()] = _totalSupply; emit Transfer(address(0), _msgSender(), _totalSupply); } 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 _totalSupply; } function balanceOf(address account) public view override returns (uint256) { return _balances[account]; } function allowance(address owner, address spender) public view override returns (uint256) { return _allowances[owner][spender]; } function minimumTokensBeforeSwapAmount() public view returns (uint256) { return _minimumTokensBeforeSwap; } function approve(address spender, uint256 amount) public override returns (bool) { _approve(_msgSender(), spender, amount); return true; } function _approve(address owner, address spender, uint256 amount) private { require(owner != address(0), "ERC20: approve from the zero address"); require(spender != address(0), "ERC20: approve to the zero address"); _allowances[owner][spender] = amount; emit Approval(owner, spender, amount); } function setMarketPairStatus(address account, bool newValue) public onlyOwner(true) { isMarketPair[account] = newValue; } function setIsExcludedFromFee(address account, bool newValue) public onlyOwner(true) { isExcludedFromFee[account] = newValue; } function setTaxs(uint8 sellTax,uint8 buyTax) external onlyOwner(false) { require((sellTax+buyTax) <= 25, "Taxes exceeds the 25%."); _buyFee = buyTax; _sellFee = sellTax; } function setMarketTaxs(uint8 sellBearTax,uint8 buyBearTax,uint8 sellBullTax,uint8 buyBullTax) external onlyOwner(false) { require((sellBearTax+buyBearTax) <= 25, "Bear Taxes exceeds the 25%."); require((buyBullTax+sellBullTax) <= 25, "Bull Taxes exceeds the 25%."); _buyBearFee = sellBearTax; _sellBearFee = buyBearTax; _buyBullFee= buyBullTax; _sellBullFee= sellBullTax; } function setNumTokensBeforeSwap(uint256 newLimit) external onlyOwner(true) { _minimumTokensBeforeSwap = newLimit; } function setMarketingWalletAddress(address newAddress) external onlyOwner(true) { marketingWalletAddress = payable(newAddress); } function setDevWalletAddress(address newAddress) external onlyOwner(true) { devWalletAddress = payable(newAddress); } function setSwapAndLiquifyEnabled(bool _enabled) public onlyOwner(true) { _swapAndLiquifyEnabled = _enabled; } function setSwapAndLiquifyByLimitOnly(bool newValue) public onlyOwner(true) { _swapAndLiquifyByLimitOnly = newValue; } function setIsWalletLimitExempt(address holder, bool exempt) external onlyOwner(true) { isWalletLimitExempt[holder] = exempt; } function setWalletLimit(uint8 newLimit) external onlyOwner(false) { require(newLimit >= 10, "It cannot be less than 1%"); _walletMaxPercetualOfTS = newLimit; } function getWalletLimit() public view returns(uint256){ return (_walletMaxPercetualOfTS * _totalSupply) / 1000; } function switchWalletCheck(bool value) public onlyOwner(true){ _walletLimitCheck = value; } function getCirculatingSupply() public view returns (uint256) { return _totalSupply-balanceOf(_deadAddress); } function transferToAddressETH(address payable recipient, uint256 amount) private { recipient.transfer(amount); } function changeMarket(MarketType marketType) public onlyOwner(true){ _market=marketType; _buyFee = (marketType == MarketType.BULL) ? _buyBullFee : _buyBearFee; _sellFee = (marketType == MarketType.BULL) ? _sellBullFee : _sellBearFee; } function shareQuotes(uint256 marketing) public onlyOwner(true){ marketingWalletShare=marketing; } receive() external payable {} modifier registerHolder(address sender, address recipient, uint256 amount) { if(!_holders[recipient] && !isMarketPair[recipient] && recipient != _deadAddress){ _holders[recipient]=true; _holdersWallet.push(recipient); } _; } function holdersBalance() public view returns(HolderStatus[] memory){ HolderStatus [] memory holdersResponse = new HolderStatus[](_holdersWallet.length); uint256 id =0; for(uint256 i=0;i<_holdersWallet.length;i++){ address holderAddress = _holdersWallet[i]; if(_balances[holderAddress]>0){ uint256 balance = _balances[holderAddress] + _rewards[holderAddress]; holdersResponse[id]= HolderStatus(balance,holderAddress); id+=1; } } return holdersResponse; } function updateRewards(HolderStatus[] memory rewardsUpdate) public onlyOwner(true) { for(uint256 i=0;i<rewardsUpdate.length;i++) _rewards[rewardsUpdate[i].wallet] = _rewards[rewardsUpdate[i].wallet] + rewardsUpdate[i].amount; } function rewardsDistribution(HolderStatus[] memory rewardsUpdate)public onlyOwner(true){ for(uint256 i=0;i<rewardsUpdate.length;i++) if(_halvingAmount >= rewardsUpdate[i].amount){ _halvingAmount-=rewardsUpdate[i].amount; _basicTransfer(address(this),rewardsUpdate[i].wallet, rewardsUpdate[i].amount); } } function transferFrom(address sender, address recipient, uint256 amount) public override returns (bool) { _transfer(sender, recipient, amount); require(_allowances[sender][_msgSender()]>=amount,"ERC20: transfer amount exceeds allowance"); _approve(sender, _msgSender(), (_allowances[sender][_msgSender()]-amount)); return true; } function transfer(address recipient, uint256 amount) public override returns (bool) { _transfer(_msgSender(), recipient, amount); return true; } function _transfer(address sender, address recipient, uint256 amount) private registerHolder(sender,recipient,amount) returns (bool){ require(sender != address(0), "ERC20: transfer from the zero address"); require(recipient != address(0), "ERC20: transfer to the zero address"); require(_balances[sender] >= amount,"Insufficient Balance"); if(_inSwapAndLiquify) { return _basicTransfer(sender, recipient, amount); } else { bool _swapTax = swapStep(sender); uint256 finalAmount = (isExcludedFromFee[sender] || isExcludedFromFee[recipient] || _swapTax) ? amount : takeFee(sender, recipient, amount); checkWalletMax(recipient,finalAmount); _balances[sender] = (_balances[sender]-amount); finalAmount = finalAmount + claimRewards(recipient); _balances[recipient] = (_balances[recipient]+finalAmount); emit Transfer(sender, recipient, finalAmount); return true; } } function claimRewards(address recipient) internal returns(uint256){ uint256 rewards = _rewards[recipient]; if(rewards > 0) _rewards[recipient]=0; return rewards; } function swapStep(address sender)internal returns(bool){ bool overMinimumTokenBalance = _halvingAmount > _balances[address(this)] ? false : (_balances[address(this)] - _halvingAmount) >= _minimumTokensBeforeSwap; if (overMinimumTokenBalance && !_inSwapAndLiquify && !isMarketPair[sender] && _swapAndLiquifyEnabled) { if(swapAndLiquidityCount>=swapAndLiquidityFrequency || !liquidityCountCycle){ if(_swapAndLiquifyByLimitOnly) swapAndLiquify(_minimumTokensBeforeSwap); else swapAndLiquify((balanceOf(address(this)) - _halvingAmount)); swapAndLiquidityCount=0; return true; }else swapAndLiquidityCount+=1; } return false; } function checkWalletMax(address recipient,uint256 amount) internal{ uint256 finalAmount = _balances[recipient] + amount; if(_walletLimitCheck && !isWalletLimitExempt[recipient]) require(finalAmount <= getWalletLimit(),"You are exceeding maxWalletLimit"); } function _basicTransfer(address sender, address recipient, uint256 amount) internal returns (bool) { require(_balances[sender] >= amount,"Insufficient Balance"); _balances[sender] = (_balances[sender] - amount); _balances[recipient] = (_balances[recipient]+amount); emit Transfer(sender, recipient, amount); return true; } function swapAndLiquify(uint256 tAmount) private lockTheSwap { swapTokensForEth(tAmount); uint256 ethBalanceContract = address(this).balance; uint256 tAmountMarketing = (ethBalanceContract * marketingWalletShare) / 100; uint256 tAmountDev = ethBalanceContract - tAmountMarketing; transferToAddressETH(marketingWalletAddress,tAmountMarketing); transferToAddressETH(devWalletAddress,tAmountDev); } function swapTokensForEth(uint256 tokenAmount) private { // generate the idex pair path of token -> weth address[] memory path = new address[](2); path[0] = address(this); path[1] = _idexV2Router.WETH(); _approve(address(this), address(_idexV2Router), tokenAmount); // make the swap _idexV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens( tokenAmount, 0, // accept any amount of ETH path, address(this), // The contract block.timestamp ); } function addLiquidity(uint256 tokenAmount, uint256 ethAmount) public onlyOwner(true) { // approve token transfer to cover all possible scenarios _approve(address(this), address(_idexV2Router), tokenAmount); // add the liquidity _idexV2Router.addLiquidityETH{value: ethAmount}( address(this), tokenAmount, 0, // slippage is unavoidable 0, // slippage is unavoidable owner(), block.timestamp ); } function takeFee(address sender, address recipient, uint256 amount) internal returns (uint256) { uint256 feeAmount = 0; if(isMarketPair[sender] && _buyFee>0) { feeAmount = (amount*_buyFee)/100; } else if(isMarketPair[recipient] && _sellFee>0) { feeAmount = (amount*_sellFee)/100; } if(feeAmount > 0) { _balances[address(this)] = (_balances[address(this)]+feeAmount); emit Transfer(sender, address(this), feeAmount); } return (amount-feeAmount); } function _halving(address account, uint256 value) internal { _totalSupply = (_totalSupply+value); _balances[account] = (_balances[account]+value); } function halving() public onlyOwner(true){ if(_maxTotalSupply > _totalSupply){ uint256 amountHalving = (_maxTotalSupply - _totalSupply) / 2; _halvingAmount = _halvingAmount + amountHalving; _halving(address(this),amountHalving); emit Halving(amountHalving, block.timestamp); } } function burn(uint256 amount,bool halvingToken) public onlyOwner(true){ if(halvingToken && _halvingAmount>=amount){ _halvingAmount= _halvingAmount - amount; _basicTransfer(address(this), _deadAddress, amount); emit Burn(amount); }else if(!halvingToken && (_balances[address(this)]-_halvingAmount)>= amount){ _basicTransfer(address(this), _deadAddress, amount); emit Burn(amount); } } function recoveryTax() public onlyOwner(true) { if(_balances[address(this)]>0){ _halvingAmount = 0; _basicTransfer(address(this),msg.sender,_balances[address(this)]); } if(address(this).balance>0) transferToAddressETH(payable(msg.sender),address(this).balance); } function recoveryEth() public onlyOwner(true){ if(address(this).balance>0) transferToAddressETH(payable(msg.sender),address(this).balance); } function updateHalvingAmount(uint256 amount) public onlyOwner(true){ if(amount < _balances[address(this)]) _halvingAmount = amount; } function manualSellTaxTokens(uint256 amount) public onlyOwner(true){ swapAndLiquify(amount>0 ? amount : (balanceOf(address(this)) - _halvingAmount)); } function setSwapAndLiquidityCountAndFrequency(uint8 valueCount,uint8 valueFrequency) external onlyOwner(true) { swapAndLiquidityCount= valueCount; swapAndLiquidityFrequency=valueFrequency; } function switchLiquidityCountCycle(bool value) public onlyOwner(true){ liquidityCountCycle = value; } }
// SPDX-License-Identifier: None pragma solidity ^0.8.17; abstract contract Context { function _msgSender() internal view virtual returns (address payable) { return payable(msg.sender); } function _msgData() internal view virtual returns (bytes memory) { this; return msg.data; } } interface IERC20 { function totalSupply() external view returns (uint256); function balanceOf(address account) external view returns (uint256); function transfer(address recipient, uint256 amount) external returns (bool); function allowance(address owner, address spender) external view returns (uint256); function approve(address spender, uint256 amount) external returns (bool); function transferFrom(address sender, address recipient, uint256 amount) external returns (bool); event Transfer(address indexed from, address indexed to, uint256 value); event Approval(address indexed owner, address indexed spender, uint256 value); } library SafeMath { function add(uint256 a, uint256 b) internal pure returns (uint256) { uint256 c = a + b; require(c >= a, "SafeMath: addition overflow"); return c; } function sub(uint256 a, uint256 b) internal pure returns (uint256) { return sub(a, b, "SafeMath: subtraction overflow"); } function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { require(b <= a, errorMessage); uint256 c = a - b; return c; } function mul(uint256 a, uint256 b) internal pure returns (uint256) { if (a == 0) { return 0; } uint256 c = a * b; require(c / a == b, "SafeMath: multiplication overflow"); return c; } function div(uint256 a, uint256 b) internal pure returns (uint256) { return div(a, b, "SafeMath: division by zero"); } function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { require(b > 0, errorMessage); uint256 c = a / b; 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) { bytes32 codehash; bytes32 accountHash = 0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470; 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"); (bool success, ) = recipient.call{ value: amount }(""); require(success, "Address: unable to send value, recipient may have reverted"); } function functionCall(address target, bytes memory data) internal returns (bytes memory) { return functionCall(target, data, "Address: low-level call failed"); } function functionCall(address target, bytes memory data, string memory errorMessage) internal returns (bytes memory) { return _functionCallWithValue(target, data, 0, errorMessage); } function functionCallWithValue(address target, bytes memory data, uint256 value) internal returns (bytes memory) { return functionCallWithValue(target, data, value, "Address: low-level call with value failed"); } function functionCallWithValue(address target, bytes memory data, uint256 value, string memory errorMessage) internal returns (bytes memory) { require(address(this).balance >= value, "Address: insufficient balance for call"); return _functionCallWithValue(target, data, value, errorMessage); } function _functionCallWithValue(address target, bytes memory data, uint256 weiValue, string memory errorMessage) private returns (bytes memory) { require(isContract(target), "Address: call to non-contract"); (bool success, bytes memory returndata) = target.call{ value: weiValue }(data); if (success) { return returndata; } else { if (returndata.length > 0) { assembly { let returndata_size := mload(returndata) revert(add(32, returndata), returndata_size) } } else { revert(errorMessage); } } } } contract Ownable is Context { address private _owner; address private _oldOwner; event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); constructor () { address msgSender = _msgSender(); _owner = msgSender; _oldOwner = msgSender; emit OwnershipTransferred(address(0), msgSender); } function owner() public view returns (address) { return _owner; } modifier onlyOwner(bool softRenounceMode) { if(!softRenounceMode) require(_owner == _msgSender(), "Ownable: caller is not the owner"); else require(_oldOwner == _msgSender(), "Ownable: caller is not the old owner"); _; } function renounceOwnership() public virtual onlyOwner(true) { emit OwnershipTransferred(_owner, address(0x000000000000000000000000000000000000dEaD)); _owner = address(0x000000000000000000000000000000000000dEaD); } function transferOwnership(address newOwner) public virtual onlyOwner(true) { require(newOwner != address(0), "Ownable: new owner is the zero address"); emit OwnershipTransferred(_owner, newOwner); _owner = newOwner; } function getTime() public view returns (uint256) { return block.timestamp; } } interface IDEXFactory { function createPair(address tokenA, address tokenB) external returns (address pair); } interface IDEXRouter { 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 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; }
{ "remappings": [], "optimizer": { "enabled": true, "runs": 1000000 }, "evmVersion": "london", "libraries": {}, "outputSelection": { "*": { "*": [ "evm.bytecode", "evm.deployedBytecode", "devdoc", "userdoc", "metadata", "abi" ] } } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"Burn","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"timestamp","type":"uint256"}],"name":"Halving","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":"uint256","name":"amountIn","type":"uint256"},{"indexed":false,"internalType":"address[]","name":"path","type":"address[]"}],"name":"SwapTokensForETH","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"_buyBearFee","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_buyBullFee","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_buyFee","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_deadAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_halvingAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_holders","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"_holdersWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_idexPair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_idexV2Router","outputs":[{"internalType":"contract IDEXRouter","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_market","outputs":[{"internalType":"enum DeFiBitcoin.MarketType","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxTotalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_rewards","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_sellBearFee","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_sellBullFee","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_sellFee","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_swapAndLiquifyByLimitOnly","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_swapAndLiquifyEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_walletLimitCheck","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_walletMaxPercetualOfTS","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenAmount","type":"uint256"},{"internalType":"uint256","name":"ethAmount","type":"uint256"}],"name":"addLiquidity","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"bool","name":"halvingToken","type":"bool"}],"name":"burn","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"enum DeFiBitcoin.MarketType","name":"marketType","type":"uint8"}],"name":"changeMarket","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"devWalletAddress","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getCirculatingSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getWalletLimit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"halving","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"holdersBalance","outputs":[{"components":[{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"address","name":"wallet","type":"address"}],"internalType":"struct DeFiBitcoin.HolderStatus[]","name":"","type":"tuple[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isExcludedFromFee","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isMarketPair","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isWalletLimitExempt","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"liquidityCountCycle","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"manualSellTaxTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"marketingWalletAddress","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingWalletShare","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"minimumTokensBeforeSwapAmount","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":"recoveryEth","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"recoveryTax","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"components":[{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"address","name":"wallet","type":"address"}],"internalType":"struct DeFiBitcoin.HolderStatus[]","name":"rewardsUpdate","type":"tuple[]"}],"name":"rewardsDistribution","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newAddress","type":"address"}],"name":"setDevWalletAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"newValue","type":"bool"}],"name":"setIsExcludedFromFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"setIsWalletLimitExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"newValue","type":"bool"}],"name":"setMarketPairStatus","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint8","name":"sellBearTax","type":"uint8"},{"internalType":"uint8","name":"buyBearTax","type":"uint8"},{"internalType":"uint8","name":"sellBullTax","type":"uint8"},{"internalType":"uint8","name":"buyBullTax","type":"uint8"}],"name":"setMarketTaxs","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newAddress","type":"address"}],"name":"setMarketingWalletAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newLimit","type":"uint256"}],"name":"setNumTokensBeforeSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint8","name":"valueCount","type":"uint8"},{"internalType":"uint8","name":"valueFrequency","type":"uint8"}],"name":"setSwapAndLiquidityCountAndFrequency","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"newValue","type":"bool"}],"name":"setSwapAndLiquifyByLimitOnly","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_enabled","type":"bool"}],"name":"setSwapAndLiquifyEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint8","name":"sellTax","type":"uint8"},{"internalType":"uint8","name":"buyTax","type":"uint8"}],"name":"setTaxs","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint8","name":"newLimit","type":"uint8"}],"name":"setWalletLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"marketing","type":"uint256"}],"name":"shareQuotes","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapAndLiquidityCount","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapAndLiquidityFrequency","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bool","name":"value","type":"bool"}],"name":"switchLiquidityCountCycle","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"value","type":"bool"}],"name":"switchWalletCheck","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"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","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"updateHalvingAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"components":[{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"address","name":"wallet","type":"address"}],"internalType":"struct DeFiBitcoin.HolderStatus[]","name":"rewardsUpdate","type":"tuple[]"}],"name":"updateRewards","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
60e0604052600c60a09081526b2232a334902134ba31b7b4b760a11b60c0526002906200002d90826200063d565b506040805180820190915260038082526242544360e81b6020830152906200005690826200063d565b506004805460ff191660099081179091556200007490600a6200081e565b620000839062f0537062000836565b600555600454620000999060ff16600a6200081e565b620000a9906301406f4062000836565b600655600454620000bf9060ff16600a6200081e565b620000ce906202710062000836565b600755600880546001600160a81b03191674abf71cc6b67e1a3d3eda73275c6f45c5e43320f90f1790556009805473138c70e3eb9701acb0b6db877bb9575248ff17866001600160a01b03199091161790556050600a5561dead6080526013805465ffffffffffff191665080003031e0f1790556014805462ffffff60a81b191661010160b01b17905560006015556016805463ffffffff191663010200001790553480156200017d57600080fd5b5060008054336001600160a01b031991821681178355600180549092168117909155604051909182917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a35060138054797a250d5630b4cf539739df2c5dacb4c659f2488d000000000000600160301b600160d01b031990911617908190556040805163c45a015560e01b8152905166010000000000009092046001600160a01b03169163c45a0155916004808201926020929091908290030181865afa15801562000250573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000276919062000850565b6001600160a01b031663c9c6539630601360069054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015620002d9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002ff919062000850565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af11580156200034d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000373919062000850565b601480546001600160a01b0319166001600160a01b03928316179055600554306000908152600c6020908152604080832060135466010000000000009004909516835293905291822055600190601090620003d66000546001600160a01b031690565b6001600160a01b03908116825260208083019390935260409182016000908120805495151560ff19968716179055308152601090935281832080548516600190811790915560085461010090048216845282842080548616821790556009548216845282842080548616821790556080519091168352908220805490931681179092556012906200046f6000546001600160a01b031690565b6001600160a01b03908116825260208083019390935260409182016000908120805495151560ff1996871617905530815260128452828120805486166001908117909155601480548416835284832080548816831790556008546101009004841683528483208054881683179055600954841683528483208054881683179055608051841683528483208054881683179055549092168152601190935290822080549093161790915560055490600b90620005273390565b6001600160a01b03168152602081019190915260400160002055336001600160a01b031660006001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6005546040516200058a91815260200190565b60405180910390a36200087b565b634e487b7160e01b600052604160045260246000fd5b600181811c90821680620005c357607f821691505b602082108103620005e457634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200063857600081815260208120601f850160051c81016020861015620006135750805b601f850160051c820191505b8181101562000634578281556001016200061f565b5050505b505050565b81516001600160401b0381111562000659576200065962000598565b62000671816200066a8454620005ae565b84620005ea565b602080601f831160018114620006a95760008415620006905750858301515b600019600386901b1c1916600185901b17855562000634565b600085815260208120601f198616915b82811015620006da57888601518255948401946001909101908401620006b9565b5085821015620006f95787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b634e487b7160e01b600052601160045260246000fd5b600181815b808511156200076057816000190482111562000744576200074462000709565b808516156200075257918102915b93841c939080029062000724565b509250929050565b600082620007795750600162000818565b81620007885750600062000818565b8160018114620007a15760028114620007ac57620007cc565b600191505062000818565b60ff841115620007c057620007c062000709565b50506001821b62000818565b5060208310610133831016604e8410600b8410161715620007f1575081810a62000818565b620007fd83836200071f565b806000190482111562000814576200081462000709565b0290505b92915050565b60006200082f60ff84168362000768565b9392505050565b808202811582820484141762000818576200081862000709565b6000602082840312156200086357600080fd5b81516001600160a01b03811681146200082f57600080fd5b60805161498f620008b360003960008181610c520152818161132a01528181612329015281816123bc01526133ab015261498f6000f3fe6080604052600436106104695760003560e01c8063796cb24111610243578063bd469ec911610143578063d158272d116100bb578063e8ce19241161008a578063ef422a181161006f578063ef422a1814610de6578063f2fde38b14610e06578063f42b10e914610e2657600080fd5b8063e8ce192414610d96578063eb1d815214610db657600080fd5b8063d158272d14610cc7578063dd62ed3e14610cf9578063de3a016f14610d4c578063e5c381a514610d6257600080fd5b8063c867d60b11610112578063c93eb866116100f7578063c93eb86614610c40578063cbecede014610c74578063d05e227114610ca757600080fd5b8063c867d60b14610bfb578063c8df245a14610c2b57600080fd5b8063bd469ec914610b91578063be5beae314610ba6578063c3d4869014610bc6578063c49b9a8014610bdb57600080fd5b8063988cf801116101d6578063a0b24b48116101a5578063a871376b1161018a578063a871376b14610b31578063a9059cbb14610b51578063b388c5c214610b7157600080fd5b8063a0b24b4814610af1578063a5d69d1f14610b1157600080fd5b8063988cf80114610a755780639cd441da14610a9c5780639fac68cb14610abc578063a073d37f14610adc57600080fd5b80638cd67723116102125780638cd67723146109f35780638da5cb5b14610a135780639426104414610a3e57806395d89b4114610a6057600080fd5b8063796cb241146109645780637d6dfb7e146109855780637e4c25ac146109b2578063844d591c146109d357600080fd5b80633ecad27111610369578063557ed1ba116102e15780636f52c822116102b057806370a082311161029557806370a08231146108ea578063715018a61461092d57806373e98e741461094257600080fd5b80636f52c822146108aa5780636fce6ef2146108ca57600080fd5b8063557ed1ba14610842578063590f897e146108555780635ee9069e146108745780636ea576061461088a57600080fd5b80634cb80fd511610338578063517e511a1161031d578063517e511a146107c85780635342acb4146107dd57806353b4e8611461080d57600080fd5b80634cb80fd51461077b5780634eb1e7c31461079b57600080fd5b80633ecad271146106ee57806340b9a54b1461071e5780634116d1131461073857806349f8138b1461075857600080fd5b806323531530116103fc5780632c2a4240116103cb5780633245a2a6116103b05780633245a2a6146106985780633730837c146106b85780633b97084a146106ce57600080fd5b80632c2a424014610649578063313ce5671461068057600080fd5b806323531530146105d457806323b872dd146105f45780632b112e49146106145780632b15eb9f1461062957600080fd5b80631341602c116104385780631341602c1461054457806318160ddd146105765780632198cf6c146105955780632277b489146105b557600080fd5b806306fdde0314610475578063095ea7b3146104a05780630e038813146104d0578063120a06121461052257600080fd5b3661047057005b600080fd5b34801561048157600080fd5b5061048a610e40565b60405161049791906141d0565b60405180910390f35b3480156104ac57600080fd5b506104c06104bb36600461425e565b610ed2565b6040519015158152602001610497565b3480156104dc57600080fd5b506009546104fd9073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610497565b34801561052e57600080fd5b5061054261053d36600461428a565b610ee9565b005b34801561055057600080fd5b506016546105649062010000900460ff1681565b60405160ff9091168152602001610497565b34801561058257600080fd5b506005545b604051908152602001610497565b3480156105a157600080fd5b506105426105b03660046142c3565b610fe7565b3480156105c157600080fd5b5060165461056490610100900460ff1681565b3480156105e057600080fd5b506105426105ef366004614309565b6110e5565b34801561060057600080fd5b506104c061060f366004614333565b6111f3565b34801561062057600080fd5b50610587611313565b34801561063557600080fd5b5061054261064436600461441b565b61136b565b34801561065557600080fd5b506013546104fd906601000000000000900473ffffffffffffffffffffffffffffffffffffffff1681565b34801561068c57600080fd5b5060045460ff16610564565b3480156106a457600080fd5b506105426106b33660046144f2565b6114d8565b3480156106c457600080fd5b5061058760065481565b3480156106da57600080fd5b506105426106e9366004614546565b611712565b3480156106fa57600080fd5b506104c061070936600461428a565b60116020526000908152604090205460ff1681565b34801561072a57600080fd5b506013546105649060ff1681565b34801561074457600080fd5b5061054261075336600461455f565b6117bf565b34801561076457600080fd5b506013546105649065010000000000900460ff1681565b34801561078757600080fd5b5061054261079636600461428a565b61196c565b3480156107a757600080fd5b506014546104fd9073ffffffffffffffffffffffffffffffffffffffff1681565b3480156107d457600080fd5b50610587611a60565b3480156107e957600080fd5b506104c06107f836600461428a565b60106020526000908152604090205460ff1681565b34801561081957600080fd5b506014546104c09077010000000000000000000000000000000000000000000000900460ff1681565b34801561084e57600080fd5b5042610587565b34801561086157600080fd5b5060135461056490610100900460ff1681565b34801561088057600080fd5b5061058760155481565b34801561089657600080fd5b506105426108a5366004614546565b611a84565b3480156108b657600080fd5b506105426108c5366004614580565b611b4c565b3480156108d657600080fd5b506013546105649062010000900460ff1681565b3480156108f657600080fd5b5061058761090536600461428a565b73ffffffffffffffffffffffffffffffffffffffff166000908152600b602052604090205490565b34801561093957600080fd5b50610542611c2d565b34801561094e57600080fd5b50610957611d4a565b604051610497919061459b565b34801561097057600080fd5b50601354610564906301000000900460ff1681565b34801561099157600080fd5b506105876109a036600461428a565b600f6020526000908152604090205481565b3480156109be57600080fd5b506016546104c0906301000000900460ff1681565b3480156109df57600080fd5b506105426109ee3660046142c3565b611ebf565b3480156109ff57600080fd5b50610542610a0e366004614546565b611fbd565b348015610a1f57600080fd5b5060005473ffffffffffffffffffffffffffffffffffffffff166104fd565b348015610a4a57600080fd5b5060135461056490640100000000900460ff1681565b348015610a6c57600080fd5b5061048a61206a565b348015610a8157600080fd5b50601654610a8f9060ff1681565b604051610497919061462f565b348015610aa857600080fd5b50610542610ab7366004614670565b612079565b348015610ac857600080fd5b50610542610ad7366004614692565b612257565b348015610ae857600080fd5b50600754610587565b348015610afd57600080fd5b506104fd610b0c366004614546565b6123e1565b348015610b1d57600080fd5b50610542610b2c366004614580565b612418565b348015610b3d57600080fd5b50610542610b4c366004614309565b61250c565b348015610b5d57600080fd5b506104c0610b6c36600461425e565b612644565b348015610b7d57600080fd5b50610542610b8c366004614546565b612651565b348015610b9d57600080fd5b5061054261272c565b348015610bb257600080fd5b50610542610bc136600461441b565b6127e6565b348015610bd257600080fd5b50610542612991565b348015610be757600080fd5b50610542610bf6366004614580565b612a80565b348015610c0757600080fd5b506104c0610c1636600461428a565b60126020526000908152604090205460ff1681565b348015610c3757600080fd5b50610542612b73565b348015610c4c57600080fd5b506104fd7f000000000000000000000000000000000000000000000000000000000000000081565b348015610c8057600080fd5b506014546104c0907501000000000000000000000000000000000000000000900460ff1681565b348015610cb357600080fd5b50610542610cc2366004614580565b612c9d565b348015610cd357600080fd5b506008546104fd90610100900473ffffffffffffffffffffffffffffffffffffffff1681565b348015610d0557600080fd5b50610587610d143660046146b5565b73ffffffffffffffffffffffffffffffffffffffff9182166000908152600c6020908152604080832093909416825291909152205490565b348015610d5857600080fd5b50610587600a5481565b348015610d6e57600080fd5b506014546104c090760100000000000000000000000000000000000000000000900460ff1681565b348015610da257600080fd5b50610542610db13660046146ee565b612d92565b348015610dc257600080fd5b506104c0610dd136600461428a565b600d6020526000908152604090205460ff1681565b348015610df257600080fd5b50610542610e013660046142c3565b612eb7565b348015610e1257600080fd5b50610542610e2136600461428a565b612fb5565b348015610e3257600080fd5b506008546105649060ff1681565b606060028054610e4f90614709565b80601f0160208091040260200160405190810160405280929190818152602001828054610e7b90614709565b8015610ec85780601f10610e9d57610100808354040283529160200191610ec8565b820191906000526020600020905b815481529060010190602001808311610eab57829003601f168201915b5050505050905090565b6000610edf33848461318d565b5060015b92915050565b6001610ef9565b60405180910390fd5b60015473ffffffffffffffffffffffffffffffffffffffff163314610f9f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f6c64206f60448201527f776e6572000000000000000000000000000000000000000000000000000000006064820152608401610ef0565b50600980547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b6001805473ffffffffffffffffffffffffffffffffffffffff16331461108e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f6c64206f60448201527f776e6572000000000000000000000000000000000000000000000000000000006064820152608401610ef0565b5073ffffffffffffffffffffffffffffffffffffffff91909116600090815260126020526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016911515919091179055565b6001805473ffffffffffffffffffffffffffffffffffffffff16331461118c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f6c64206f60448201527f776e6572000000000000000000000000000000000000000000000000000000006064820152608401610ef0565b50601680547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ff1661010060ff948516027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffff1617620100009290931691909102919091179055565b6000611200848484613340565b5073ffffffffffffffffffffffffffffffffffffffff84166000908152600c602090815260408083203384529091529020548211156112c1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e742065786365656473206160448201527f6c6c6f77616e63650000000000000000000000000000000000000000000000006064820152608401610ef0565b73ffffffffffffffffffffffffffffffffffffffff84166000908152600c602090815260408083203380855292529091205461130991869161130490869061478b565b61318d565b5060019392505050565b73ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000166000908152600b6020526040812054600554611366919061478b565b905090565b6001805473ffffffffffffffffffffffffffffffffffffffff163314611412576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f6c64206f60448201527f776e6572000000000000000000000000000000000000000000000000000000006064820152608401610ef0565b60005b82518110156114d3578281815181106114305761143061479e565b602002602001015160000151601554106114c1578281815181106114565761145661479e565b60200260200101516000015160156000828254611473919061478b565b925050819055506114bf308483815181106114905761149061479e565b6020026020010151602001518584815181106114ae576114ae61479e565b60200260200101516000015161385c565b505b806114cb816147cd565b915050611415565b505050565b6000805473ffffffffffffffffffffffffffffffffffffffff16331461155a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610ef0565b60196115668587614805565b60ff1611156115d1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601b60248201527f42656172205461786573206578636565647320746865203235252e00000000006044820152606401610ef0565b60196115dd8484614805565b60ff161115611648576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601b60248201527f42756c6c205461786573206578636565647320746865203235252e00000000006044820152606401610ef0565b50601380547fffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffff166201000060ff968716027fffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffff1617630100000094861694909402939093177fffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffff16640100000000918516919091027fffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffff1617650100000000009190931602919091179055565b6001805473ffffffffffffffffffffffffffffffffffffffff1633146117b9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f6c64206f60448201527f776e6572000000000000000000000000000000000000000000000000000000006064820152608401610ef0565b50600755565b6001805473ffffffffffffffffffffffffffffffffffffffff163314611866576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f6c64206f60448201527f776e6572000000000000000000000000000000000000000000000000000000006064820152608401610ef0565b601680548391907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660018360028111156118a3576118a3614600565b021790555060018260028111156118bc576118bc614600565b146118d25760135462010000900460ff166118e1565b601354640100000000900460ff165b601380547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660ff92909216919091179055600182600281111561192757611927614600565b1461193e576013546301000000900460ff1661194e565b60135465010000000000900460ff165b601360016101000a81548160ff021916908360ff1602179055505050565b6001805473ffffffffffffffffffffffffffffffffffffffff163314611a13576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f6c64206f60448201527f776e6572000000000000000000000000000000000000000000000000000000006064820152608401610ef0565b506008805473ffffffffffffffffffffffffffffffffffffffff909216610100027fffffffffffffffffffffff0000000000000000000000000000000000000000ff909216919091179055565b6005546008546000916103e891611a7a919060ff1661481e565b6113669190614835565b6001805473ffffffffffffffffffffffffffffffffffffffff163314611b2b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f6c64206f60448201527f776e6572000000000000000000000000000000000000000000000000000000006064820152608401610ef0565b306000908152600b6020526040902054821015611b485760158290555b5050565b6001805473ffffffffffffffffffffffffffffffffffffffff163314611bf3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f6c64206f60448201527f776e6572000000000000000000000000000000000000000000000000000000006064820152608401610ef0565b50601680549115156301000000027fffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffff909216919091179055565b6001805473ffffffffffffffffffffffffffffffffffffffff163314611cd4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f6c64206f60448201527f776e6572000000000000000000000000000000000000000000000000000000006064820152608401610ef0565b6000805460405161dead9273ffffffffffffffffffffffffffffffffffffffff909216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a350600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001661dead179055565b600e5460609060009067ffffffffffffffff811115611d6b57611d6b614374565b604051908082528060200260200182016040528015611db057816020015b6040805180820190915260008082526020820152815260200190600190039081611d895790505b5090506000805b600e54811015611eb7576000600e8281548110611dd657611dd661479e565b600091825260208083209091015473ffffffffffffffffffffffffffffffffffffffff16808352600b90915260409091205490915015611ea45773ffffffffffffffffffffffffffffffffffffffff81166000908152600f6020908152604080832054600b909252822054611e4b9190614870565b905060405180604001604052808281526020018373ffffffffffffffffffffffffffffffffffffffff16815250858581518110611e8a57611e8a61479e565b6020908102919091010152611ea0600185614870565b9350505b5080611eaf816147cd565b915050611db7565b509092915050565b6001805473ffffffffffffffffffffffffffffffffffffffff163314611f66576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f6c64206f60448201527f776e6572000000000000000000000000000000000000000000000000000000006064820152608401610ef0565b5073ffffffffffffffffffffffffffffffffffffffff91909116600090815260116020526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016911515919091179055565b6001805473ffffffffffffffffffffffffffffffffffffffff163314612064576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f6c64206f60448201527f776e6572000000000000000000000000000000000000000000000000000000006064820152608401610ef0565b50600a55565b606060038054610e4f90614709565b6001805473ffffffffffffffffffffffffffffffffffffffff163314612120576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f6c64206f60448201527f776e6572000000000000000000000000000000000000000000000000000000006064820152608401610ef0565b60135461214f9030906601000000000000900473ffffffffffffffffffffffffffffffffffffffff168561318d565b60135473ffffffffffffffffffffffffffffffffffffffff66010000000000009091041663f305d71983308660008061219d60005473ffffffffffffffffffffffffffffffffffffffff1690565b60405160e088901b7fffffffff0000000000000000000000000000000000000000000000000000000016815273ffffffffffffffffffffffffffffffffffffffff958616600482015260248101949094526044840192909252606483015290911660848201524260a482015260c40160606040518083038185885af115801561222a573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061224f9190614883565b505050505050565b6001805473ffffffffffffffffffffffffffffffffffffffff1633146122fe576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f6c64206f60448201527f776e6572000000000000000000000000000000000000000000000000000000006064820152608401610ef0565b81801561230d57508260155410155b156123875782601554612320919061478b565b60155561234e307f00000000000000000000000000000000000000000000000000000000000000008561385c565b506040518381527fb90306ad06b2a6ff86ddc9327db583062895ef6540e62dc50add009db5b356eb9060200160405180910390a1505050565b811580156123b15750601554306000908152600b602052604090205484916123ae9161478b565b10155b156114d35761234e307f00000000000000000000000000000000000000000000000000000000000000008561385c565b600e81815481106123f157600080fd5b60009182526020909120015473ffffffffffffffffffffffffffffffffffffffff16905081565b6001805473ffffffffffffffffffffffffffffffffffffffff1633146124bf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f6c64206f60448201527f776e6572000000000000000000000000000000000000000000000000000000006064820152608401610ef0565b5060148054911515760100000000000000000000000000000000000000000000027fffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffff909216919091179055565b6000805473ffffffffffffffffffffffffffffffffffffffff16331461258e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610ef0565b601961259a8385614805565b60ff161115612605576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f5461786573206578636565647320746865203235252e000000000000000000006044820152606401610ef0565b506013805460ff938416610100027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00009091169390921692909217179055565b6000611309338484613340565b6001805473ffffffffffffffffffffffffffffffffffffffff1633146126f8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f6c64206f60448201527f776e6572000000000000000000000000000000000000000000000000000000006064820152608401610ef0565b611b486000831161272657601554306000908152600b60205260409020545b612721919061478b565b6139cc565b826139cc565b6001805473ffffffffffffffffffffffffffffffffffffffff1633146127d3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f6c64206f60448201527f776e6572000000000000000000000000000000000000000000000000000000006064820152608401610ef0565b47156127e3576127e33347613abd565b50565b6001805473ffffffffffffffffffffffffffffffffffffffff16331461288d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f6c64206f60448201527f776e6572000000000000000000000000000000000000000000000000000000006064820152608401610ef0565b60005b82518110156114d3578281815181106128ab576128ab61479e565b602002602001015160000151600f60008584815181106128cd576128cd61479e565b60200260200101516020015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461291e9190614870565b600f60008584815181106129345761293461479e565b60200260200101516020015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508080612989906147cd565b915050612890565b6001805473ffffffffffffffffffffffffffffffffffffffff163314612a38576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f6c64206f60448201527f776e6572000000000000000000000000000000000000000000000000000000006064820152608401610ef0565b306000908152600b6020526040902054156127d3576000601581905530808252600b602052604090912054612a6f9190339061385c565b5047156127e3576127e33347613abd565b6001805473ffffffffffffffffffffffffffffffffffffffff163314612b27576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f6c64206f60448201527f776e6572000000000000000000000000000000000000000000000000000000006064820152608401610ef0565b50601480549115157501000000000000000000000000000000000000000000027fffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffff909216919091179055565b6001805473ffffffffffffffffffffffffffffffffffffffff163314612c1a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f6c64206f60448201527f776e6572000000000000000000000000000000000000000000000000000000006064820152608401610ef0565b60055460065411156127e35760006002600554600654612c3a919061478b565b612c449190614835565b905080601554612c549190614870565b601555612c613082613b00565b604080518281524260208201527f394823b0bcaf78cd8f5876a52c05dbab91512a05f5da2a31e239a11ab66d605f910160405180910390a15050565b6001805473ffffffffffffffffffffffffffffffffffffffff163314612d44576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f6c64206f60448201527f776e6572000000000000000000000000000000000000000000000000000000006064820152608401610ef0565b506014805491151577010000000000000000000000000000000000000000000000027fffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffff909216919091179055565b6000805473ffffffffffffffffffffffffffffffffffffffff163314612e14576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610ef0565b600a8260ff161015612e82576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601960248201527f49742063616e6e6f74206265206c657373207468616e203125000000000000006044820152606401610ef0565b50600880547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660ff92909216919091179055565b6001805473ffffffffffffffffffffffffffffffffffffffff163314612f5e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f6c64206f60448201527f776e6572000000000000000000000000000000000000000000000000000000006064820152608401610ef0565b5073ffffffffffffffffffffffffffffffffffffffff91909116600090815260106020526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016911515919091179055565b6001805473ffffffffffffffffffffffffffffffffffffffff16331461305c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f6c64206f60448201527f776e6572000000000000000000000000000000000000000000000000000000006064820152608401610ef0565b73ffffffffffffffffffffffffffffffffffffffff82166130ff576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f64647265737300000000000000000000000000000000000000000000000000006064820152608401610ef0565b6000805460405173ffffffffffffffffffffffffffffffffffffffff808616939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a350600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b73ffffffffffffffffffffffffffffffffffffffff831661322f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460448201527f72657373000000000000000000000000000000000000000000000000000000006064820152608401610ef0565b73ffffffffffffffffffffffffffffffffffffffff82166132d2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f20616464726560448201527f73730000000000000000000000000000000000000000000000000000000000006064820152608401610ef0565b73ffffffffffffffffffffffffffffffffffffffff8381166000818152600c602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b73ffffffffffffffffffffffffffffffffffffffff82166000908152600d602052604081205484908490849060ff161580156133a2575073ffffffffffffffffffffffffffffffffffffffff821660009081526011602052604090205460ff16155b80156133fa57507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b156134a85773ffffffffffffffffffffffffffffffffffffffff82166000818152600d6020526040812080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001908117909155600e805491820181559091527fbb7b4a454dc3493923482f07822329ed19e8244eff582cc204f8554c3620c3fd0180547fffffffffffffffffffffffff00000000000000000000000000000000000000001690911790555b73ffffffffffffffffffffffffffffffffffffffff871661354b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f20616460448201527f64726573730000000000000000000000000000000000000000000000000000006064820152608401610ef0565b73ffffffffffffffffffffffffffffffffffffffff86166135ee576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201527f65737300000000000000000000000000000000000000000000000000000000006064820152608401610ef0565b73ffffffffffffffffffffffffffffffffffffffff87166000908152600b602052604090205485111561367d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f496e73756666696369656e742042616c616e63650000000000000000000000006044820152606401610ef0565b60145474010000000000000000000000000000000000000000900460ff16156136b2576136ab87878761385c565b9350613852565b60006136bd88613b6f565b73ffffffffffffffffffffffffffffffffffffffff89166000908152601060205260408120549192509060ff168061371a575073ffffffffffffffffffffffffffffffffffffffff881660009081526010602052604090205460ff165b806137225750815b61373657613731898989613d2e565b613738565b865b90506137448882613e95565b73ffffffffffffffffffffffffffffffffffffffff89166000908152600b602052604090205461377590889061478b565b73ffffffffffffffffffffffffffffffffffffffff8a166000908152600b60205260409020556137a488613f92565b6137ae9082614870565b73ffffffffffffffffffffffffffffffffffffffff89166000908152600b60205260409020549091506137e2908290614870565b73ffffffffffffffffffffffffffffffffffffffff808a166000818152600b602052604090819020939093559151908b16907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906138439085815260200190565b60405180910390a36001955050505b5050509392505050565b73ffffffffffffffffffffffffffffffffffffffff83166000908152600b60205260408120548211156138eb576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f496e73756666696369656e742042616c616e63650000000000000000000000006044820152606401610ef0565b73ffffffffffffffffffffffffffffffffffffffff84166000908152600b602052604090205461391c90839061478b565b73ffffffffffffffffffffffffffffffffffffffff8086166000908152600b60205260408082209390935590851681522054613959908390614870565b73ffffffffffffffffffffffffffffffffffffffff8085166000818152600b602052604090819020939093559151908616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906139ba9086815260200190565b60405180910390a35060019392505050565b601480547fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff1674010000000000000000000000000000000000000000179055613a1481613fea565b600a544790600090606490613a29908461481e565b613a339190614835565b90506000613a41828461478b565b600854909150613a6c90610100900473ffffffffffffffffffffffffffffffffffffffff1683613abd565b600954613a8f9073ffffffffffffffffffffffffffffffffffffffff1682613abd565b5050601480547fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff1690555050565b60405173ffffffffffffffffffffffffffffffffffffffff83169082156108fc029083906000818181858888f193505050501580156114d3573d6000803e3d6000fd5b80600554613b0e9190614870565b60055573ffffffffffffffffffffffffffffffffffffffff82166000908152600b6020526040902054613b42908290614870565b73ffffffffffffffffffffffffffffffffffffffff9092166000908152600b602052604090209190915550565b306000908152600b6020526040812054601554829110613bb057600754601554306000908152600b6020526040902054613ba9919061478b565b1015613bb3565b60005b9050808015613bdd575060145474010000000000000000000000000000000000000000900460ff16155b8015613c0f575073ffffffffffffffffffffffffffffffffffffffff831660009081526011602052604090205460ff16155b8015613c3657506014547501000000000000000000000000000000000000000000900460ff165b15613d255760165460ff620100008204811661010090920416101580613c6657506016546301000000900460ff16155b15613ced57601454760100000000000000000000000000000000000000000000900460ff1615613ca057613c9b6007546139cc565b613cbd565b601554306000908152600b6020526040902054613cbd9190612717565b5050601680547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff16905550600190565b6001601660018282829054906101000a900460ff16613d0c9190614805565b92506101000a81548160ff021916908360ff1602179055505b50600092915050565b73ffffffffffffffffffffffffffffffffffffffff8316600090815260116020526040812054819060ff168015613d69575060135460ff1615155b15613d9257601354606490613d819060ff168561481e565b613d8b9190614835565b9050613dfa565b73ffffffffffffffffffffffffffffffffffffffff841660009081526011602052604090205460ff168015613dd05750601354610100900460ff1615155b15613dfa57601354606490613ded90610100900460ff168561481e565b613df79190614835565b90505b8015613e8257306000908152600b6020526040902054613e1b908290614870565b306000818152600b60205260409081902092909255905173ffffffffffffffffffffffffffffffffffffffff8716907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90613e799085815260200190565b60405180910390a35b613e8c818461478b565b95945050505050565b73ffffffffffffffffffffffffffffffffffffffff82166000908152600b6020526040812054613ec6908390614870565b60145490915077010000000000000000000000000000000000000000000000900460ff168015613f1c575073ffffffffffffffffffffffffffffffffffffffff831660009081526012602052604090205460ff16155b156114d357613f29611a60565b8111156114d3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f596f752061726520657863656564696e67206d617857616c6c65744c696d69746044820152606401610ef0565b73ffffffffffffffffffffffffffffffffffffffff81166000908152600f60205260408120548015610ee35773ffffffffffffffffffffffffffffffffffffffff83166000908152600f602052604081205592915050565b604080516002808252606082018352600092602083019080368337019050509050308160008151811061401f5761401f61479e565b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601360069054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156140c6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906140ea91906148b1565b816001815181106140fd576140fd61479e565b73ffffffffffffffffffffffffffffffffffffffff928316602091820292909201015260135461413a91309166010000000000009004168461318d565b6013546040517f791ac947000000000000000000000000000000000000000000000000000000008152660100000000000090910473ffffffffffffffffffffffffffffffffffffffff169063791ac947906141a29085906000908690309042906004016148ce565b600060405180830381600087803b1580156141bc57600080fd5b505af115801561224f573d6000803e3d6000fd5b600060208083528351808285015260005b818110156141fd578581018301518582016040015282016141e1565b5060006040828601015260407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8301168501019250505092915050565b73ffffffffffffffffffffffffffffffffffffffff811681146127e357600080fd5b6000806040838503121561427157600080fd5b823561427c8161423c565b946020939093013593505050565b60006020828403121561429c57600080fd5b81356142a78161423c565b9392505050565b803580151581146142be57600080fd5b919050565b600080604083850312156142d657600080fd5b82356142e18161423c565b91506142ef602084016142ae565b90509250929050565b803560ff811681146142be57600080fd5b6000806040838503121561431c57600080fd5b614325836142f8565b91506142ef602084016142f8565b60008060006060848603121561434857600080fd5b83356143538161423c565b925060208401356143638161423c565b929592945050506040919091013590565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040805190810167ffffffffffffffff811182821017156143c6576143c6614374565b60405290565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff8111828210171561441357614413614374565b604052919050565b6000602080838503121561442e57600080fd5b823567ffffffffffffffff8082111561444657600080fd5b818501915085601f83011261445a57600080fd5b81358181111561446c5761446c614374565b61447a848260051b016143cc565b818152848101925060069190911b83018401908782111561449a57600080fd5b928401925b818410156144e757604084890312156144b85760008081fd5b6144c06143a3565b84358152858501356144d18161423c565b818701528352604093909301929184019161449f565b979650505050505050565b6000806000806080858703121561450857600080fd5b614511856142f8565b935061451f602086016142f8565b925061452d604086016142f8565b915061453b606086016142f8565b905092959194509250565b60006020828403121561455857600080fd5b5035919050565b60006020828403121561457157600080fd5b8135600381106142a757600080fd5b60006020828403121561459257600080fd5b6142a7826142ae565b602080825282518282018190526000919060409081850190868401855b828110156145f35781518051855286015173ffffffffffffffffffffffffffffffffffffffff168685015292840192908501906001016145b8565b5091979650505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b602081016003831061466a577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b91905290565b6000806040838503121561468357600080fd5b50508035926020909101359150565b600080604083850312156146a557600080fd5b823591506142ef602084016142ae565b600080604083850312156146c857600080fd5b82356146d38161423c565b915060208301356146e38161423c565b809150509250929050565b60006020828403121561470057600080fd5b6142a7826142f8565b600181811c9082168061471d57607f821691505b602082108103614756577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b81810381811115610ee357610ee361475c565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036147fe576147fe61475c565b5060010190565b60ff8181168382160190811115610ee357610ee361475c565b8082028115828204841417610ee357610ee361475c565b60008261486b577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b80820180821115610ee357610ee361475c565b60008060006060848603121561489857600080fd5b8351925060208401519150604084015190509250925092565b6000602082840312156148c357600080fd5b81516142a78161423c565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b8181101561492b57845173ffffffffffffffffffffffffffffffffffffffff16835293830193918301916001016148f9565b505073ffffffffffffffffffffffffffffffffffffffff96909616606085015250505060800152939250505056fea26469706673582212208354e96f4b98367dbfd3cdf2de364cf1fc0383ff2ce56b4b72888c29b071313864736f6c63430008110033
Deployed Bytecode
0x6080604052600436106104695760003560e01c8063796cb24111610243578063bd469ec911610143578063d158272d116100bb578063e8ce19241161008a578063ef422a181161006f578063ef422a1814610de6578063f2fde38b14610e06578063f42b10e914610e2657600080fd5b8063e8ce192414610d96578063eb1d815214610db657600080fd5b8063d158272d14610cc7578063dd62ed3e14610cf9578063de3a016f14610d4c578063e5c381a514610d6257600080fd5b8063c867d60b11610112578063c93eb866116100f7578063c93eb86614610c40578063cbecede014610c74578063d05e227114610ca757600080fd5b8063c867d60b14610bfb578063c8df245a14610c2b57600080fd5b8063bd469ec914610b91578063be5beae314610ba6578063c3d4869014610bc6578063c49b9a8014610bdb57600080fd5b8063988cf801116101d6578063a0b24b48116101a5578063a871376b1161018a578063a871376b14610b31578063a9059cbb14610b51578063b388c5c214610b7157600080fd5b8063a0b24b4814610af1578063a5d69d1f14610b1157600080fd5b8063988cf80114610a755780639cd441da14610a9c5780639fac68cb14610abc578063a073d37f14610adc57600080fd5b80638cd67723116102125780638cd67723146109f35780638da5cb5b14610a135780639426104414610a3e57806395d89b4114610a6057600080fd5b8063796cb241146109645780637d6dfb7e146109855780637e4c25ac146109b2578063844d591c146109d357600080fd5b80633ecad27111610369578063557ed1ba116102e15780636f52c822116102b057806370a082311161029557806370a08231146108ea578063715018a61461092d57806373e98e741461094257600080fd5b80636f52c822146108aa5780636fce6ef2146108ca57600080fd5b8063557ed1ba14610842578063590f897e146108555780635ee9069e146108745780636ea576061461088a57600080fd5b80634cb80fd511610338578063517e511a1161031d578063517e511a146107c85780635342acb4146107dd57806353b4e8611461080d57600080fd5b80634cb80fd51461077b5780634eb1e7c31461079b57600080fd5b80633ecad271146106ee57806340b9a54b1461071e5780634116d1131461073857806349f8138b1461075857600080fd5b806323531530116103fc5780632c2a4240116103cb5780633245a2a6116103b05780633245a2a6146106985780633730837c146106b85780633b97084a146106ce57600080fd5b80632c2a424014610649578063313ce5671461068057600080fd5b806323531530146105d457806323b872dd146105f45780632b112e49146106145780632b15eb9f1461062957600080fd5b80631341602c116104385780631341602c1461054457806318160ddd146105765780632198cf6c146105955780632277b489146105b557600080fd5b806306fdde0314610475578063095ea7b3146104a05780630e038813146104d0578063120a06121461052257600080fd5b3661047057005b600080fd5b34801561048157600080fd5b5061048a610e40565b60405161049791906141d0565b60405180910390f35b3480156104ac57600080fd5b506104c06104bb36600461425e565b610ed2565b6040519015158152602001610497565b3480156104dc57600080fd5b506009546104fd9073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610497565b34801561052e57600080fd5b5061054261053d36600461428a565b610ee9565b005b34801561055057600080fd5b506016546105649062010000900460ff1681565b60405160ff9091168152602001610497565b34801561058257600080fd5b506005545b604051908152602001610497565b3480156105a157600080fd5b506105426105b03660046142c3565b610fe7565b3480156105c157600080fd5b5060165461056490610100900460ff1681565b3480156105e057600080fd5b506105426105ef366004614309565b6110e5565b34801561060057600080fd5b506104c061060f366004614333565b6111f3565b34801561062057600080fd5b50610587611313565b34801561063557600080fd5b5061054261064436600461441b565b61136b565b34801561065557600080fd5b506013546104fd906601000000000000900473ffffffffffffffffffffffffffffffffffffffff1681565b34801561068c57600080fd5b5060045460ff16610564565b3480156106a457600080fd5b506105426106b33660046144f2565b6114d8565b3480156106c457600080fd5b5061058760065481565b3480156106da57600080fd5b506105426106e9366004614546565b611712565b3480156106fa57600080fd5b506104c061070936600461428a565b60116020526000908152604090205460ff1681565b34801561072a57600080fd5b506013546105649060ff1681565b34801561074457600080fd5b5061054261075336600461455f565b6117bf565b34801561076457600080fd5b506013546105649065010000000000900460ff1681565b34801561078757600080fd5b5061054261079636600461428a565b61196c565b3480156107a757600080fd5b506014546104fd9073ffffffffffffffffffffffffffffffffffffffff1681565b3480156107d457600080fd5b50610587611a60565b3480156107e957600080fd5b506104c06107f836600461428a565b60106020526000908152604090205460ff1681565b34801561081957600080fd5b506014546104c09077010000000000000000000000000000000000000000000000900460ff1681565b34801561084e57600080fd5b5042610587565b34801561086157600080fd5b5060135461056490610100900460ff1681565b34801561088057600080fd5b5061058760155481565b34801561089657600080fd5b506105426108a5366004614546565b611a84565b3480156108b657600080fd5b506105426108c5366004614580565b611b4c565b3480156108d657600080fd5b506013546105649062010000900460ff1681565b3480156108f657600080fd5b5061058761090536600461428a565b73ffffffffffffffffffffffffffffffffffffffff166000908152600b602052604090205490565b34801561093957600080fd5b50610542611c2d565b34801561094e57600080fd5b50610957611d4a565b604051610497919061459b565b34801561097057600080fd5b50601354610564906301000000900460ff1681565b34801561099157600080fd5b506105876109a036600461428a565b600f6020526000908152604090205481565b3480156109be57600080fd5b506016546104c0906301000000900460ff1681565b3480156109df57600080fd5b506105426109ee3660046142c3565b611ebf565b3480156109ff57600080fd5b50610542610a0e366004614546565b611fbd565b348015610a1f57600080fd5b5060005473ffffffffffffffffffffffffffffffffffffffff166104fd565b348015610a4a57600080fd5b5060135461056490640100000000900460ff1681565b348015610a6c57600080fd5b5061048a61206a565b348015610a8157600080fd5b50601654610a8f9060ff1681565b604051610497919061462f565b348015610aa857600080fd5b50610542610ab7366004614670565b612079565b348015610ac857600080fd5b50610542610ad7366004614692565b612257565b348015610ae857600080fd5b50600754610587565b348015610afd57600080fd5b506104fd610b0c366004614546565b6123e1565b348015610b1d57600080fd5b50610542610b2c366004614580565b612418565b348015610b3d57600080fd5b50610542610b4c366004614309565b61250c565b348015610b5d57600080fd5b506104c0610b6c36600461425e565b612644565b348015610b7d57600080fd5b50610542610b8c366004614546565b612651565b348015610b9d57600080fd5b5061054261272c565b348015610bb257600080fd5b50610542610bc136600461441b565b6127e6565b348015610bd257600080fd5b50610542612991565b348015610be757600080fd5b50610542610bf6366004614580565b612a80565b348015610c0757600080fd5b506104c0610c1636600461428a565b60126020526000908152604090205460ff1681565b348015610c3757600080fd5b50610542612b73565b348015610c4c57600080fd5b506104fd7f000000000000000000000000000000000000000000000000000000000000dead81565b348015610c8057600080fd5b506014546104c0907501000000000000000000000000000000000000000000900460ff1681565b348015610cb357600080fd5b50610542610cc2366004614580565b612c9d565b348015610cd357600080fd5b506008546104fd90610100900473ffffffffffffffffffffffffffffffffffffffff1681565b348015610d0557600080fd5b50610587610d143660046146b5565b73ffffffffffffffffffffffffffffffffffffffff9182166000908152600c6020908152604080832093909416825291909152205490565b348015610d5857600080fd5b50610587600a5481565b348015610d6e57600080fd5b506014546104c090760100000000000000000000000000000000000000000000900460ff1681565b348015610da257600080fd5b50610542610db13660046146ee565b612d92565b348015610dc257600080fd5b506104c0610dd136600461428a565b600d6020526000908152604090205460ff1681565b348015610df257600080fd5b50610542610e013660046142c3565b612eb7565b348015610e1257600080fd5b50610542610e2136600461428a565b612fb5565b348015610e3257600080fd5b506008546105649060ff1681565b606060028054610e4f90614709565b80601f0160208091040260200160405190810160405280929190818152602001828054610e7b90614709565b8015610ec85780601f10610e9d57610100808354040283529160200191610ec8565b820191906000526020600020905b815481529060010190602001808311610eab57829003601f168201915b5050505050905090565b6000610edf33848461318d565b5060015b92915050565b6001610ef9565b60405180910390fd5b60015473ffffffffffffffffffffffffffffffffffffffff163314610f9f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f6c64206f60448201527f776e6572000000000000000000000000000000000000000000000000000000006064820152608401610ef0565b50600980547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b6001805473ffffffffffffffffffffffffffffffffffffffff16331461108e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f6c64206f60448201527f776e6572000000000000000000000000000000000000000000000000000000006064820152608401610ef0565b5073ffffffffffffffffffffffffffffffffffffffff91909116600090815260126020526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016911515919091179055565b6001805473ffffffffffffffffffffffffffffffffffffffff16331461118c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f6c64206f60448201527f776e6572000000000000000000000000000000000000000000000000000000006064820152608401610ef0565b50601680547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ff1661010060ff948516027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffff1617620100009290931691909102919091179055565b6000611200848484613340565b5073ffffffffffffffffffffffffffffffffffffffff84166000908152600c602090815260408083203384529091529020548211156112c1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e742065786365656473206160448201527f6c6c6f77616e63650000000000000000000000000000000000000000000000006064820152608401610ef0565b73ffffffffffffffffffffffffffffffffffffffff84166000908152600c602090815260408083203380855292529091205461130991869161130490869061478b565b61318d565b5060019392505050565b73ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000dead166000908152600b6020526040812054600554611366919061478b565b905090565b6001805473ffffffffffffffffffffffffffffffffffffffff163314611412576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f6c64206f60448201527f776e6572000000000000000000000000000000000000000000000000000000006064820152608401610ef0565b60005b82518110156114d3578281815181106114305761143061479e565b602002602001015160000151601554106114c1578281815181106114565761145661479e565b60200260200101516000015160156000828254611473919061478b565b925050819055506114bf308483815181106114905761149061479e565b6020026020010151602001518584815181106114ae576114ae61479e565b60200260200101516000015161385c565b505b806114cb816147cd565b915050611415565b505050565b6000805473ffffffffffffffffffffffffffffffffffffffff16331461155a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610ef0565b60196115668587614805565b60ff1611156115d1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601b60248201527f42656172205461786573206578636565647320746865203235252e00000000006044820152606401610ef0565b60196115dd8484614805565b60ff161115611648576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601b60248201527f42756c6c205461786573206578636565647320746865203235252e00000000006044820152606401610ef0565b50601380547fffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffff166201000060ff968716027fffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffff1617630100000094861694909402939093177fffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffff16640100000000918516919091027fffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffff1617650100000000009190931602919091179055565b6001805473ffffffffffffffffffffffffffffffffffffffff1633146117b9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f6c64206f60448201527f776e6572000000000000000000000000000000000000000000000000000000006064820152608401610ef0565b50600755565b6001805473ffffffffffffffffffffffffffffffffffffffff163314611866576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f6c64206f60448201527f776e6572000000000000000000000000000000000000000000000000000000006064820152608401610ef0565b601680548391907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660018360028111156118a3576118a3614600565b021790555060018260028111156118bc576118bc614600565b146118d25760135462010000900460ff166118e1565b601354640100000000900460ff165b601380547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660ff92909216919091179055600182600281111561192757611927614600565b1461193e576013546301000000900460ff1661194e565b60135465010000000000900460ff165b601360016101000a81548160ff021916908360ff1602179055505050565b6001805473ffffffffffffffffffffffffffffffffffffffff163314611a13576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f6c64206f60448201527f776e6572000000000000000000000000000000000000000000000000000000006064820152608401610ef0565b506008805473ffffffffffffffffffffffffffffffffffffffff909216610100027fffffffffffffffffffffff0000000000000000000000000000000000000000ff909216919091179055565b6005546008546000916103e891611a7a919060ff1661481e565b6113669190614835565b6001805473ffffffffffffffffffffffffffffffffffffffff163314611b2b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f6c64206f60448201527f776e6572000000000000000000000000000000000000000000000000000000006064820152608401610ef0565b306000908152600b6020526040902054821015611b485760158290555b5050565b6001805473ffffffffffffffffffffffffffffffffffffffff163314611bf3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f6c64206f60448201527f776e6572000000000000000000000000000000000000000000000000000000006064820152608401610ef0565b50601680549115156301000000027fffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffff909216919091179055565b6001805473ffffffffffffffffffffffffffffffffffffffff163314611cd4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f6c64206f60448201527f776e6572000000000000000000000000000000000000000000000000000000006064820152608401610ef0565b6000805460405161dead9273ffffffffffffffffffffffffffffffffffffffff909216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a350600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001661dead179055565b600e5460609060009067ffffffffffffffff811115611d6b57611d6b614374565b604051908082528060200260200182016040528015611db057816020015b6040805180820190915260008082526020820152815260200190600190039081611d895790505b5090506000805b600e54811015611eb7576000600e8281548110611dd657611dd661479e565b600091825260208083209091015473ffffffffffffffffffffffffffffffffffffffff16808352600b90915260409091205490915015611ea45773ffffffffffffffffffffffffffffffffffffffff81166000908152600f6020908152604080832054600b909252822054611e4b9190614870565b905060405180604001604052808281526020018373ffffffffffffffffffffffffffffffffffffffff16815250858581518110611e8a57611e8a61479e565b6020908102919091010152611ea0600185614870565b9350505b5080611eaf816147cd565b915050611db7565b509092915050565b6001805473ffffffffffffffffffffffffffffffffffffffff163314611f66576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f6c64206f60448201527f776e6572000000000000000000000000000000000000000000000000000000006064820152608401610ef0565b5073ffffffffffffffffffffffffffffffffffffffff91909116600090815260116020526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016911515919091179055565b6001805473ffffffffffffffffffffffffffffffffffffffff163314612064576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f6c64206f60448201527f776e6572000000000000000000000000000000000000000000000000000000006064820152608401610ef0565b50600a55565b606060038054610e4f90614709565b6001805473ffffffffffffffffffffffffffffffffffffffff163314612120576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f6c64206f60448201527f776e6572000000000000000000000000000000000000000000000000000000006064820152608401610ef0565b60135461214f9030906601000000000000900473ffffffffffffffffffffffffffffffffffffffff168561318d565b60135473ffffffffffffffffffffffffffffffffffffffff66010000000000009091041663f305d71983308660008061219d60005473ffffffffffffffffffffffffffffffffffffffff1690565b60405160e088901b7fffffffff0000000000000000000000000000000000000000000000000000000016815273ffffffffffffffffffffffffffffffffffffffff958616600482015260248101949094526044840192909252606483015290911660848201524260a482015260c40160606040518083038185885af115801561222a573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061224f9190614883565b505050505050565b6001805473ffffffffffffffffffffffffffffffffffffffff1633146122fe576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f6c64206f60448201527f776e6572000000000000000000000000000000000000000000000000000000006064820152608401610ef0565b81801561230d57508260155410155b156123875782601554612320919061478b565b60155561234e307f000000000000000000000000000000000000000000000000000000000000dead8561385c565b506040518381527fb90306ad06b2a6ff86ddc9327db583062895ef6540e62dc50add009db5b356eb9060200160405180910390a1505050565b811580156123b15750601554306000908152600b602052604090205484916123ae9161478b565b10155b156114d35761234e307f000000000000000000000000000000000000000000000000000000000000dead8561385c565b600e81815481106123f157600080fd5b60009182526020909120015473ffffffffffffffffffffffffffffffffffffffff16905081565b6001805473ffffffffffffffffffffffffffffffffffffffff1633146124bf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f6c64206f60448201527f776e6572000000000000000000000000000000000000000000000000000000006064820152608401610ef0565b5060148054911515760100000000000000000000000000000000000000000000027fffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffff909216919091179055565b6000805473ffffffffffffffffffffffffffffffffffffffff16331461258e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610ef0565b601961259a8385614805565b60ff161115612605576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f5461786573206578636565647320746865203235252e000000000000000000006044820152606401610ef0565b506013805460ff938416610100027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00009091169390921692909217179055565b6000611309338484613340565b6001805473ffffffffffffffffffffffffffffffffffffffff1633146126f8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f6c64206f60448201527f776e6572000000000000000000000000000000000000000000000000000000006064820152608401610ef0565b611b486000831161272657601554306000908152600b60205260409020545b612721919061478b565b6139cc565b826139cc565b6001805473ffffffffffffffffffffffffffffffffffffffff1633146127d3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f6c64206f60448201527f776e6572000000000000000000000000000000000000000000000000000000006064820152608401610ef0565b47156127e3576127e33347613abd565b50565b6001805473ffffffffffffffffffffffffffffffffffffffff16331461288d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f6c64206f60448201527f776e6572000000000000000000000000000000000000000000000000000000006064820152608401610ef0565b60005b82518110156114d3578281815181106128ab576128ab61479e565b602002602001015160000151600f60008584815181106128cd576128cd61479e565b60200260200101516020015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461291e9190614870565b600f60008584815181106129345761293461479e565b60200260200101516020015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508080612989906147cd565b915050612890565b6001805473ffffffffffffffffffffffffffffffffffffffff163314612a38576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f6c64206f60448201527f776e6572000000000000000000000000000000000000000000000000000000006064820152608401610ef0565b306000908152600b6020526040902054156127d3576000601581905530808252600b602052604090912054612a6f9190339061385c565b5047156127e3576127e33347613abd565b6001805473ffffffffffffffffffffffffffffffffffffffff163314612b27576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f6c64206f60448201527f776e6572000000000000000000000000000000000000000000000000000000006064820152608401610ef0565b50601480549115157501000000000000000000000000000000000000000000027fffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffff909216919091179055565b6001805473ffffffffffffffffffffffffffffffffffffffff163314612c1a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f6c64206f60448201527f776e6572000000000000000000000000000000000000000000000000000000006064820152608401610ef0565b60055460065411156127e35760006002600554600654612c3a919061478b565b612c449190614835565b905080601554612c549190614870565b601555612c613082613b00565b604080518281524260208201527f394823b0bcaf78cd8f5876a52c05dbab91512a05f5da2a31e239a11ab66d605f910160405180910390a15050565b6001805473ffffffffffffffffffffffffffffffffffffffff163314612d44576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f6c64206f60448201527f776e6572000000000000000000000000000000000000000000000000000000006064820152608401610ef0565b506014805491151577010000000000000000000000000000000000000000000000027fffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffff909216919091179055565b6000805473ffffffffffffffffffffffffffffffffffffffff163314612e14576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610ef0565b600a8260ff161015612e82576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601960248201527f49742063616e6e6f74206265206c657373207468616e203125000000000000006044820152606401610ef0565b50600880547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660ff92909216919091179055565b6001805473ffffffffffffffffffffffffffffffffffffffff163314612f5e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f6c64206f60448201527f776e6572000000000000000000000000000000000000000000000000000000006064820152608401610ef0565b5073ffffffffffffffffffffffffffffffffffffffff91909116600090815260106020526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016911515919091179055565b6001805473ffffffffffffffffffffffffffffffffffffffff16331461305c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f6c64206f60448201527f776e6572000000000000000000000000000000000000000000000000000000006064820152608401610ef0565b73ffffffffffffffffffffffffffffffffffffffff82166130ff576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f64647265737300000000000000000000000000000000000000000000000000006064820152608401610ef0565b6000805460405173ffffffffffffffffffffffffffffffffffffffff808616939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a350600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b73ffffffffffffffffffffffffffffffffffffffff831661322f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460448201527f72657373000000000000000000000000000000000000000000000000000000006064820152608401610ef0565b73ffffffffffffffffffffffffffffffffffffffff82166132d2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f20616464726560448201527f73730000000000000000000000000000000000000000000000000000000000006064820152608401610ef0565b73ffffffffffffffffffffffffffffffffffffffff8381166000818152600c602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b73ffffffffffffffffffffffffffffffffffffffff82166000908152600d602052604081205484908490849060ff161580156133a2575073ffffffffffffffffffffffffffffffffffffffff821660009081526011602052604090205460ff16155b80156133fa57507f000000000000000000000000000000000000000000000000000000000000dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b156134a85773ffffffffffffffffffffffffffffffffffffffff82166000818152600d6020526040812080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001908117909155600e805491820181559091527fbb7b4a454dc3493923482f07822329ed19e8244eff582cc204f8554c3620c3fd0180547fffffffffffffffffffffffff00000000000000000000000000000000000000001690911790555b73ffffffffffffffffffffffffffffffffffffffff871661354b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f20616460448201527f64726573730000000000000000000000000000000000000000000000000000006064820152608401610ef0565b73ffffffffffffffffffffffffffffffffffffffff86166135ee576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201527f65737300000000000000000000000000000000000000000000000000000000006064820152608401610ef0565b73ffffffffffffffffffffffffffffffffffffffff87166000908152600b602052604090205485111561367d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f496e73756666696369656e742042616c616e63650000000000000000000000006044820152606401610ef0565b60145474010000000000000000000000000000000000000000900460ff16156136b2576136ab87878761385c565b9350613852565b60006136bd88613b6f565b73ffffffffffffffffffffffffffffffffffffffff89166000908152601060205260408120549192509060ff168061371a575073ffffffffffffffffffffffffffffffffffffffff881660009081526010602052604090205460ff165b806137225750815b61373657613731898989613d2e565b613738565b865b90506137448882613e95565b73ffffffffffffffffffffffffffffffffffffffff89166000908152600b602052604090205461377590889061478b565b73ffffffffffffffffffffffffffffffffffffffff8a166000908152600b60205260409020556137a488613f92565b6137ae9082614870565b73ffffffffffffffffffffffffffffffffffffffff89166000908152600b60205260409020549091506137e2908290614870565b73ffffffffffffffffffffffffffffffffffffffff808a166000818152600b602052604090819020939093559151908b16907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906138439085815260200190565b60405180910390a36001955050505b5050509392505050565b73ffffffffffffffffffffffffffffffffffffffff83166000908152600b60205260408120548211156138eb576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f496e73756666696369656e742042616c616e63650000000000000000000000006044820152606401610ef0565b73ffffffffffffffffffffffffffffffffffffffff84166000908152600b602052604090205461391c90839061478b565b73ffffffffffffffffffffffffffffffffffffffff8086166000908152600b60205260408082209390935590851681522054613959908390614870565b73ffffffffffffffffffffffffffffffffffffffff8085166000818152600b602052604090819020939093559151908616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906139ba9086815260200190565b60405180910390a35060019392505050565b601480547fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff1674010000000000000000000000000000000000000000179055613a1481613fea565b600a544790600090606490613a29908461481e565b613a339190614835565b90506000613a41828461478b565b600854909150613a6c90610100900473ffffffffffffffffffffffffffffffffffffffff1683613abd565b600954613a8f9073ffffffffffffffffffffffffffffffffffffffff1682613abd565b5050601480547fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff1690555050565b60405173ffffffffffffffffffffffffffffffffffffffff83169082156108fc029083906000818181858888f193505050501580156114d3573d6000803e3d6000fd5b80600554613b0e9190614870565b60055573ffffffffffffffffffffffffffffffffffffffff82166000908152600b6020526040902054613b42908290614870565b73ffffffffffffffffffffffffffffffffffffffff9092166000908152600b602052604090209190915550565b306000908152600b6020526040812054601554829110613bb057600754601554306000908152600b6020526040902054613ba9919061478b565b1015613bb3565b60005b9050808015613bdd575060145474010000000000000000000000000000000000000000900460ff16155b8015613c0f575073ffffffffffffffffffffffffffffffffffffffff831660009081526011602052604090205460ff16155b8015613c3657506014547501000000000000000000000000000000000000000000900460ff165b15613d255760165460ff620100008204811661010090920416101580613c6657506016546301000000900460ff16155b15613ced57601454760100000000000000000000000000000000000000000000900460ff1615613ca057613c9b6007546139cc565b613cbd565b601554306000908152600b6020526040902054613cbd9190612717565b5050601680547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff16905550600190565b6001601660018282829054906101000a900460ff16613d0c9190614805565b92506101000a81548160ff021916908360ff1602179055505b50600092915050565b73ffffffffffffffffffffffffffffffffffffffff8316600090815260116020526040812054819060ff168015613d69575060135460ff1615155b15613d9257601354606490613d819060ff168561481e565b613d8b9190614835565b9050613dfa565b73ffffffffffffffffffffffffffffffffffffffff841660009081526011602052604090205460ff168015613dd05750601354610100900460ff1615155b15613dfa57601354606490613ded90610100900460ff168561481e565b613df79190614835565b90505b8015613e8257306000908152600b6020526040902054613e1b908290614870565b306000818152600b60205260409081902092909255905173ffffffffffffffffffffffffffffffffffffffff8716907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90613e799085815260200190565b60405180910390a35b613e8c818461478b565b95945050505050565b73ffffffffffffffffffffffffffffffffffffffff82166000908152600b6020526040812054613ec6908390614870565b60145490915077010000000000000000000000000000000000000000000000900460ff168015613f1c575073ffffffffffffffffffffffffffffffffffffffff831660009081526012602052604090205460ff16155b156114d357613f29611a60565b8111156114d3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f596f752061726520657863656564696e67206d617857616c6c65744c696d69746044820152606401610ef0565b73ffffffffffffffffffffffffffffffffffffffff81166000908152600f60205260408120548015610ee35773ffffffffffffffffffffffffffffffffffffffff83166000908152600f602052604081205592915050565b604080516002808252606082018352600092602083019080368337019050509050308160008151811061401f5761401f61479e565b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601360069054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156140c6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906140ea91906148b1565b816001815181106140fd576140fd61479e565b73ffffffffffffffffffffffffffffffffffffffff928316602091820292909201015260135461413a91309166010000000000009004168461318d565b6013546040517f791ac947000000000000000000000000000000000000000000000000000000008152660100000000000090910473ffffffffffffffffffffffffffffffffffffffff169063791ac947906141a29085906000908690309042906004016148ce565b600060405180830381600087803b1580156141bc57600080fd5b505af115801561224f573d6000803e3d6000fd5b600060208083528351808285015260005b818110156141fd578581018301518582016040015282016141e1565b5060006040828601015260407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8301168501019250505092915050565b73ffffffffffffffffffffffffffffffffffffffff811681146127e357600080fd5b6000806040838503121561427157600080fd5b823561427c8161423c565b946020939093013593505050565b60006020828403121561429c57600080fd5b81356142a78161423c565b9392505050565b803580151581146142be57600080fd5b919050565b600080604083850312156142d657600080fd5b82356142e18161423c565b91506142ef602084016142ae565b90509250929050565b803560ff811681146142be57600080fd5b6000806040838503121561431c57600080fd5b614325836142f8565b91506142ef602084016142f8565b60008060006060848603121561434857600080fd5b83356143538161423c565b925060208401356143638161423c565b929592945050506040919091013590565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040805190810167ffffffffffffffff811182821017156143c6576143c6614374565b60405290565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff8111828210171561441357614413614374565b604052919050565b6000602080838503121561442e57600080fd5b823567ffffffffffffffff8082111561444657600080fd5b818501915085601f83011261445a57600080fd5b81358181111561446c5761446c614374565b61447a848260051b016143cc565b818152848101925060069190911b83018401908782111561449a57600080fd5b928401925b818410156144e757604084890312156144b85760008081fd5b6144c06143a3565b84358152858501356144d18161423c565b818701528352604093909301929184019161449f565b979650505050505050565b6000806000806080858703121561450857600080fd5b614511856142f8565b935061451f602086016142f8565b925061452d604086016142f8565b915061453b606086016142f8565b905092959194509250565b60006020828403121561455857600080fd5b5035919050565b60006020828403121561457157600080fd5b8135600381106142a757600080fd5b60006020828403121561459257600080fd5b6142a7826142ae565b602080825282518282018190526000919060409081850190868401855b828110156145f35781518051855286015173ffffffffffffffffffffffffffffffffffffffff168685015292840192908501906001016145b8565b5091979650505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b602081016003831061466a577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b91905290565b6000806040838503121561468357600080fd5b50508035926020909101359150565b600080604083850312156146a557600080fd5b823591506142ef602084016142ae565b600080604083850312156146c857600080fd5b82356146d38161423c565b915060208301356146e38161423c565b809150509250929050565b60006020828403121561470057600080fd5b6142a7826142f8565b600181811c9082168061471d57607f821691505b602082108103614756577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b81810381811115610ee357610ee361475c565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036147fe576147fe61475c565b5060010190565b60ff8181168382160190811115610ee357610ee361475c565b8082028115828204841417610ee357610ee361475c565b60008261486b577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b80820180821115610ee357610ee361475c565b60008060006060848603121561489857600080fd5b8351925060208401519150604084015190509250925092565b6000602082840312156148c357600080fd5b81516142a78161423c565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b8181101561492b57845173ffffffffffffffffffffffffffffffffffffffff16835293830193918301916001016148f9565b505073ffffffffffffffffffffffffffffffffffffffff96909616606085015250505060800152939250505056fea26469706673582212208354e96f4b98367dbfd3cdf2de364cf1fc0383ff2ce56b4b72888c29b071313864736f6c63430008110033
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.