ERC-20
Investment
Overview
Max Total Supply
100,000,000 $BBTK
Holders
61 (0.00%)
Market
Onchain Market Cap
$0.00
Circulating Supply Market Cap
-
Other Info
Token Contract (WITH 18 Decimals)
Balance
465,000 $BBTKValue
$0.00Loading...
Loading
Loading...
Loading
Loading...
Loading
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
Contract Source Code Verified (Exact Match)
Contract Name:
blackBandToken
Compiler Version
v0.8.10+commit.fc410830
Optimization Enabled:
No with 200 runs
Other Settings:
default evmVersion
Contract Source Code (Solidity Standard Json-Input format)
// SPDX-License-Identifier: MIT //****************************************************\\ // BLACK BAND TOKEN \\ // Our project has been made for the community, by \\ // the community. Feel free to join us on telegram, \\ // check out our X, and check out our website. We \\ // continue growing our project purpose through \\ // feedback and communnity input. Invest with \\ // confidence. \\ // \\ //****************************************************\\ pragma solidity =0.8.10 >=0.8.10 >=0.8.0 <0.9.0; pragma experimental ABIEncoderV2; abstract contract Context { function _msgSender() internal view virtual returns (address) { return msg.sender; } function _msgData() internal view virtual returns (bytes calldata) { return msg.data; } } abstract contract Ownable is Context { address private _owner; event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); constructor() { _transferOwnership(_msgSender()); } function owner() public view virtual returns (address) { return _owner; } modifier onlyOwner() { require(owner() == _msgSender(), "Ownable: caller is not the owner"); _; } function renounceOwnership() public virtual onlyOwner { _transferOwnership(address(0)); } function transferOwnership(address newOwner) public virtual onlyOwner { require(newOwner != address(0), "Ownable: new owner is the zero address"); _transferOwnership(newOwner); } function _transferOwnership(address newOwner) internal virtual { address oldOwner = _owner; _owner = newOwner; emit OwnershipTransferred(oldOwner, newOwner); } } 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); } interface IERC20Metadata is IERC20 { function name() external view returns (string memory); function symbol() external view returns (string memory); function decimals() external view returns (uint8); } contract ERC20 is Context, IERC20, IERC20Metadata { mapping(address => uint256) private _balances; mapping(address => mapping(address => uint256)) private _allowances; uint256 private _totalSupply; string private _name; string private _symbol; constructor(string memory name_, string memory symbol_) { _name = name_; _symbol = symbol_; } function name() public view virtual override returns (string memory) { return _name; } function symbol() public view virtual override returns (string memory) { return _symbol; } function decimals() public view virtual override returns (uint8) { return 18; } function totalSupply() public view virtual override returns (uint256) { return _totalSupply; } function balanceOf(address account) public view virtual override returns (uint256) { return _balances[account]; } function transfer(address recipient, uint256 amount) public virtual override returns (bool) { _transfer(_msgSender(), recipient, amount); return true; } function allowance(address owner, address spender) public view virtual override returns (uint256) { return _allowances[owner][spender]; } function approve(address spender, uint256 amount) public virtual override returns (bool) { _approve(_msgSender(), spender, amount); return true; } function transferFrom( address sender, address recipient, uint256 amount ) public virtual override returns (bool) { _transfer(sender, recipient, amount); uint256 currentAllowance = _allowances[sender][_msgSender()]; require(currentAllowance >= amount, "ERC20: transfer amount exceeds allowance"); unchecked { _approve(sender, _msgSender(), currentAllowance - amount); } return true; } function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) { _approve(_msgSender(), spender, _allowances[_msgSender()][spender] + addedValue); return true; } function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) { uint256 currentAllowance = _allowances[_msgSender()][spender]; require(currentAllowance >= subtractedValue, "ERC20: decreased allowance below zero"); unchecked { _approve(_msgSender(), spender, currentAllowance - subtractedValue); } return true; } function _transfer( address sender, address recipient, uint256 amount ) internal virtual { require(sender != address(0), "ERC20: transfer from the zero address"); require(recipient != address(0), "ERC20: transfer to the zero address"); _beforeTokenTransfer(sender, recipient, amount); uint256 senderBalance = _balances[sender]; require(senderBalance >= amount, "ERC20: transfer amount exceeds balance"); unchecked { _balances[sender] = senderBalance - amount; } _balances[recipient] += amount; emit Transfer(sender, recipient, amount); _afterTokenTransfer(sender, recipient, amount); } function _mint(address account, uint256 amount) internal virtual { require(account != address(0), "ERC20: mint to the zero address"); _beforeTokenTransfer(address(0), account, amount); _totalSupply += amount; _balances[account] += amount; emit Transfer(address(0), account, amount); _afterTokenTransfer(address(0), account, amount); } function _burn(address account, uint256 amount) internal virtual { require(account != address(0), "ERC20: burn from the zero address"); _beforeTokenTransfer(account, address(0), amount); uint256 accountBalance = _balances[account]; require(accountBalance >= amount, "ERC20: burn amount exceeds balance"); unchecked { _balances[account] = accountBalance - amount; } _totalSupply -= amount; emit Transfer(account, address(0), amount); _afterTokenTransfer(account, address(0), amount); } function _approve( address owner, address spender, uint256 amount ) internal virtual { 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 _beforeTokenTransfer( address from, address to, uint256 amount ) internal virtual {} function _afterTokenTransfer( address from, address to, uint256 amount ) internal virtual {} } library SafeMath { function tryAdd(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { uint256 c = a + b; if (c < a) return (false, 0); return (true, c); } } function trySub(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { if (b > a) return (false, 0); return (true, a - b); } } function tryMul(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { if (a == 0) return (true, 0); uint256 c = a * b; if (c / a != b) return (false, 0); return (true, c); } } function tryDiv(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { if (b == 0) return (false, 0); return (true, a / b); } } function tryMod(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { if (b == 0) return (false, 0); return (true, a % b); } } function add(uint256 a, uint256 b) internal pure returns (uint256) { return a + b; } function sub(uint256 a, uint256 b) internal pure returns (uint256) { return a - b; } function mul(uint256 a, uint256 b) internal pure returns (uint256) { return a * b; } function div(uint256 a, uint256 b) internal pure returns (uint256) { return a / b; } function mod(uint256 a, uint256 b) internal pure returns (uint256) { return a % b; } function sub( uint256 a, uint256 b, string memory errorMessage ) internal pure returns (uint256) { unchecked { require(b <= a, errorMessage); return a - b; } } function div( uint256 a, uint256 b, string memory errorMessage ) internal pure returns (uint256) { unchecked { require(b > 0, errorMessage); return a / b; } } function mod( uint256 a, uint256 b, string memory errorMessage ) internal pure returns (uint256) { unchecked { require(b > 0, errorMessage); return a % b; } } } interface IUniswapV2Factory { event PairCreated( address indexed token0, address indexed token1, address pair, uint256 ); function feeTo() external view returns (address); function feeToSetter() external view returns (address); function getPair(address tokenA, address tokenB) external view returns (address pair); function allPairs(uint256) external view returns (address pair); function allPairsLength() external view returns (uint256); function createPair(address tokenA, address tokenB) external returns (address pair); function setFeeTo(address) external; function setFeeToSetter(address) external; } interface IUniswapV2Pair { event Approval( address indexed owner, address indexed spender, uint256 value ); event Transfer(address indexed from, address indexed to, uint256 value); function name() external pure returns (string memory); function symbol() external pure returns (string memory); function decimals() external pure returns (uint8); function totalSupply() external view returns (uint256); function balanceOf(address owner) external view returns (uint256); function allowance(address owner, address spender) external view returns (uint256); function approve(address spender, uint256 value) external returns (bool); function transfer(address to, uint256 value) external returns (bool); function transferFrom( address from, address to, uint256 value ) external returns (bool); function DOMAIN_SEPARATOR() external view returns (bytes32); function PERMIT_TYPEHASH() external pure returns (bytes32); function nonces(address owner) external view returns (uint256); function permit( address owner, address spender, uint256 value, uint256 deadline, uint8 v, bytes32 r, bytes32 s ) external; event Mint(address indexed sender, uint256 amount0, uint256 amount1); event Burn( address indexed sender, uint256 amount0, uint256 amount1, address indexed to ); event Swap( address indexed sender, uint256 amount0In, uint256 amount1In, uint256 amount0Out, uint256 amount1Out, address indexed to ); event Sync(uint112 reserve0, uint112 reserve1); function MINIMUM_LIQUIDITY() external pure returns (uint256); function factory() external view returns (address); function token0() external view returns (address); function token1() external view returns (address); function getReserves() external view returns ( uint112 reserve0, uint112 reserve1, uint32 blockTimestampLast ); function price0CumulativeLast() external view returns (uint256); function price1CumulativeLast() external view returns (uint256); function kLast() external view returns (uint256); function mint(address to) external returns (uint256 liquidity); function burn(address to) external returns (uint256 amount0, uint256 amount1); function swap( uint256 amount0Out, uint256 amount1Out, address to, bytes calldata data ) external; function skim(address to) external; function sync() external; function initialize(address, address) external; } interface IUniswapV2Router02 { function factory() external pure returns (address); function WETH() external pure returns (address); function addLiquidity( address tokenA, address tokenB, uint256 amountADesired, uint256 amountBDesired, uint256 amountAMin, uint256 amountBMin, address to, uint256 deadline ) external returns ( uint256 amountA, uint256 amountB, uint256 liquidity ); function addLiquidityETH( address token, uint256 amountTokenDesired, uint256 amountTokenMin, uint256 amountETHMin, address to, uint256 deadline ) external payable returns ( uint256 amountToken, uint256 amountETH, uint256 liquidity ); function swapExactTokensForTokensSupportingFeeOnTransferTokens( uint256 amountIn, uint256 amountOutMin, address[] calldata path, address to, uint256 deadline ) external; function swapExactETHForTokensSupportingFeeOnTransferTokens( uint256 amountOutMin, address[] calldata path, address to, uint256 deadline ) external payable; function swapExactTokensForETHSupportingFeeOnTransferTokens( uint256 amountIn, uint256 amountOutMin, address[] calldata path, address to, uint256 deadline ) external; } contract blackBandToken is ERC20, Ownable { using SafeMath for uint256; IUniswapV2Router02 public immutable uniswapV2Router; address public immutable uniswapV2Pair; address public constant deadAddress = address(0xdead); // 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D uniswap Router Address address public uniswapRouter = 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D; bool private swapping; address public purposeWallet; address public devWallet; address public liqWallet; address public creatorWallet; uint256 public maxTransactionAmount; uint256 public swapTokensAtAmount; uint256 public maxWallet; bool public limitsInEffect = true; bool public tradingActive = true; bool public swapEnabled = true; uint256 public buyTotalFees; uint256 public buyPurposeFee; uint256 public buyLiquidityFee; uint256 public buyDevFee; uint256 public buyCreatorFee; uint256 public sellTotalFees; uint256 public sellPurposeFee; uint256 public sellLiquidityFee; uint256 public sellDevFee; uint256 public sellCreatorFee; uint256 public tokensForPurpose; uint256 public tokensForLiquidity; uint256 public tokensForDev; uint256 public tokensForCreator; mapping(address => bool) private _isExcludedFromFees; mapping(address => bool) public _isExcludedMaxTransactionAmount; mapping(address => bool) public automatedMarketMakerPairs; event UpdateUniswapV2Router( address indexed newAddress, address indexed oldAddress ); event ExcludeFromFees(address indexed account, bool isExcluded); event SetAutomatedMarketMakerPair(address indexed pair, bool indexed value); event mktWalletUpdated( address indexed newWallet, address indexed oldWallet ); event devWalletUpdated( address indexed newWallet, address indexed oldWallet ); event liqWalletUpdated( address indexed newWallet, address indexed oldWallet ); event creatorWalletUpdated( address indexed newWallet, address indexed oldWallet ); event SwapAndLiquify( uint256 tokensSwapped, uint256 ethReceived, uint256 tokensIntoLiquidity ); //This creates the contract based the Token Name, Symbol, and value below. constructor() ERC20("Black Band Token", "$BBTK") { IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(uniswapRouter); excludeFromMaxTransaction(address(_uniswapV2Router), true); uniswapV2Router = _uniswapV2Router; uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory()) .createPair(address(this), _uniswapV2Router.WETH()); excludeFromMaxTransaction(address(uniswapV2Pair), true); _setAutomatedMarketMakerPair(address(uniswapV2Pair), true); // buy fees uint256 _buyPurposeFee = 20; // 1% uint256 _buyLiquidityFee = 10; // 1% uint256 _buyDevFee = 20; // 1% uint256 _buyCreatorFee = 20; // 1% // sell fees uint256 _sellPurposeFee = 90; // 9% - First 7 hours uint256 _sellLiquidityFee = 10; // 1% uint256 _sellDevFee = 20; // 2.0% uint256 _sellCreatorFee = 20; // 2.0% uint256 totalSupply = 100_000_000 * 1e18; //Total Supply is statically set at 100 Million Tokens. No additional can be minted. maxTransactionAmount = 2_500_000 * 1e18; // 2.5% max txn at launch maxWallet = 2_500_000 * 1e18; // 2.5% max wallet at launch swapTokensAtAmount = (totalSupply * 10) / 10000; // 0.01% swap wallet buyPurposeFee = _buyPurposeFee; buyLiquidityFee = _buyLiquidityFee; buyDevFee = _buyDevFee; buyCreatorFee = _buyCreatorFee; buyTotalFees = buyPurposeFee + buyLiquidityFee + buyDevFee + buyCreatorFee; sellPurposeFee = _sellPurposeFee; sellLiquidityFee = _sellLiquidityFee; sellDevFee = _sellDevFee; sellCreatorFee = _sellCreatorFee; sellTotalFees = sellPurposeFee + sellLiquidityFee + sellDevFee + sellCreatorFee; //Purpose Wallet is sent the Purpose Fee. This is used for the main purpose of the project, which is to help families of fallen officers. purposeWallet = address(0xDD5845f757A6F325A2956eb09E9ddAbF35cA4E2A); //Development Wallet is sent the Dev Fee. This is used in support of the project, improvements, and engagement from the dev team. devWallet = address(0x7ee05EC239743cb975A7062A49bE52eE246DFc36); //Liquidity Wallet is sent the Liquidity Fee. This is used to continue adding additional liquidity to raise the project value. liqWallet = address(0x3adC2b842AAB048A6612c2612769546c82Be4084); //Creator Wallet is sent the Creator Fee. This is used for compensation of the contract creator. These funds can be used however the contract creator sees fit. creatorWallet = address(0xA579af55123cFe0B4305FF96d97dC839Da1991D9); // exclude from paying fees or having max transaction amount excludeFromFees(owner(), true); excludeFromFees(address(this), true); excludeFromFees(address(0xdead), true); excludeFromMaxTransaction(owner(), true); excludeFromMaxTransaction(address(this), true); excludeFromMaxTransaction(address(0xdead), true); _mint(msg.sender, totalSupply); } receive() external payable {} modifier onlyCreator() { require(_msgSender() == creatorWallet, "Creator: caller is not the creator"); _; } // remove wallet size and transaction limits after token is stable function removeLimits() external onlyOwner returns (bool) { limitsInEffect = false; return true; } // change the minimum amount of tokens to swap when collected by fees function updateSwapTokensAtAmount(uint256 newAmount) external onlyCreator returns (bool) { require( newAmount >= (totalSupply() * 1) / 100000, "Swap amount cannot be lower than 0.001% total supply." ); require( newAmount <= (totalSupply() * 5) / 1000, "Swap amount cannot be higher than 0.5% total supply." ); swapTokensAtAmount = newAmount; return true; } // Allows a wallet to be excluded from maximum transaction amounts function excludeFromMaxTransaction(address updAds, bool isEx) public onlyOwner { _isExcludedMaxTransactionAmount[updAds] = isEx; } // Allows a wallet to be excluded from fees function excludeFromFees(address account, bool excluded) public onlyOwner { _isExcludedFromFees[account] = excluded; emit ExcludeFromFees(account, excluded); } // Adjusts the project taxes to 7% for sells. This will be run after 7 hours. function reduceTaxesToRegular() public onlyOwner { sellPurposeFee = 20; sellLiquidityFee = 10; sellDevFee = 20; sellCreatorFee = 20; sellTotalFees = sellPurposeFee + sellLiquidityFee + sellDevFee + sellCreatorFee; } // Allows a wallet to be added as an Automated Market Pair function setAutomatedMarketMakerPair(address pair, bool value) public onlyOwner { require( pair != uniswapV2Pair, "The pair cannot be removed from automatedMarketMakerPairs" ); _setAutomatedMarketMakerPair(pair, value); } function _setAutomatedMarketMakerPair(address pair, bool value) private { automatedMarketMakerPairs[pair] = value; emit SetAutomatedMarketMakerPair(pair, value); } // Checks to see if a wallet is excluded from fees function isExcludedFromFees(address account) public view returns (bool) { return _isExcludedFromFees[account]; } function _transfer( address from, address to, uint256 amount ) internal override { require(from != address(0), "ERC20: transfer from the zero address"); require(to != address(0), "ERC20: transfer to the zero address"); if (amount == 0) { super._transfer(from, to, 0); return; } if (limitsInEffect) { if ( from != owner() && to != owner() && to != address(0) && to != address(0xdead) && !swapping ) { //when buy if ( automatedMarketMakerPairs[from] && !_isExcludedMaxTransactionAmount[to] ) { require( amount <= maxTransactionAmount, "Buy transfer amount exceeds the maxTransactionAmount." ); require( amount + balanceOf(to) <= maxWallet, "Max wallet exceeded" ); } //when sell else if ( automatedMarketMakerPairs[to] && !_isExcludedMaxTransactionAmount[from] ) { require( amount <= maxTransactionAmount, "Sell transfer amount exceeds the maxTransactionAmount." ); } else if (!_isExcludedMaxTransactionAmount[to]) { require( amount + balanceOf(to) <= maxWallet, "Max wallet exceeded" ); } } } uint256 contractTokenBalance = balanceOf(address(this)); bool canSwap = contractTokenBalance >= swapTokensAtAmount; if ( canSwap && swapEnabled && !swapping && !automatedMarketMakerPairs[from] && !_isExcludedFromFees[from] && !_isExcludedFromFees[to] ) { swapping = true; swapBack(); swapping = false; } bool takeFee = !swapping; // if any account belongs to _isExcludedFromFee account then remove the fee if (_isExcludedFromFees[from] || _isExcludedFromFees[to]) { takeFee = false; } uint256 fees = 0; // only take fees on buys/sells, do not take on wallet transfers if (takeFee) { // on sell if (automatedMarketMakerPairs[to] && sellTotalFees > 0) { fees = amount.mul(sellTotalFees).div(1000); tokensForLiquidity += (fees * sellLiquidityFee) / sellTotalFees; tokensForDev += (fees * sellDevFee) / sellTotalFees; tokensForPurpose += (fees * sellPurposeFee) / sellTotalFees; tokensForCreator += (fees * sellCreatorFee) / sellTotalFees; } // on buy else if (automatedMarketMakerPairs[from] && buyTotalFees > 0) { fees = amount.mul(buyTotalFees).div(1000); tokensForLiquidity += (fees * buyLiquidityFee) / buyTotalFees; tokensForDev += (fees * buyDevFee) / buyTotalFees; tokensForPurpose += (fees * buyPurposeFee) / buyTotalFees; tokensForCreator += (fees * buyCreatorFee) / buyTotalFees; } if (fees > 0) { super._transfer(from, address(this), fees); } amount -= fees; } super._transfer(from, to, amount); } function swapTokensForEth(uint256 tokenAmount) private { // generate the uniswap pair path of token -> weth address[] memory path = new address[](2); path[0] = address(this); path[1] = uniswapV2Router.WETH(); _approve(address(this), address(uniswapV2Router), tokenAmount); // make the swap uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens( tokenAmount, 0, // accept any amount of ETH path, address(this), block.timestamp ); } function addLiquidity(uint256 tokenAmount, uint256 ethAmount) private { // approve token transfer to cover all possible scenarios _approve(address(this), address(uniswapV2Router), tokenAmount); // add the liquidity uniswapV2Router.addLiquidityETH{value: ethAmount}( address(this), tokenAmount, 0, // slippage is unavoidable 0, // slippage is unavoidable liqWallet, block.timestamp ); } function swapBack() private { uint256 contractBalance = balanceOf(address(this)); uint256 totalTokensToSwap = tokensForLiquidity + tokensForPurpose + tokensForDev + tokensForCreator; bool success; if (contractBalance == 0 || totalTokensToSwap == 0) { return; } if (contractBalance > swapTokensAtAmount * 20) { contractBalance = swapTokensAtAmount * 20; } // Halve the amount of liquidity tokens uint256 liquidityTokens = (contractBalance * tokensForLiquidity) / totalTokensToSwap / 2; uint256 amountToSwapForETH = contractBalance.sub(liquidityTokens); uint256 initialETHBalance = address(this).balance; swapTokensForEth(amountToSwapForETH); uint256 ethBalance = address(this).balance.sub(initialETHBalance); uint256 ethForPurpose = ethBalance.mul(tokensForPurpose).div(totalTokensToSwap); uint256 ethForDev = ethBalance.mul(tokensForDev).div(totalTokensToSwap); uint256 ethForCreator = ethBalance.mul(tokensForCreator).div(totalTokensToSwap); uint256 ethForLiquidity = ethBalance - ethForPurpose - ethForDev - ethForCreator; tokensForLiquidity = 0; tokensForPurpose = 0; tokensForDev = 0; tokensForCreator = 0; (success, ) = address(devWallet).call{value: ethForDev}(""); if (liquidityTokens > 0 && ethForLiquidity > 0) { addLiquidity(liquidityTokens, ethForLiquidity); emit SwapAndLiquify( amountToSwapForETH, ethForLiquidity, tokensForLiquidity ); } (success, ) = address(creatorWallet).call{value: ethForCreator}(""); (success, ) = address(purposeWallet).call{value: address(this).balance}(""); } }
{ "optimizer": { "enabled": false, "runs": 200 }, "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":true,"internalType":"address","name":"account","type":"address"},{"indexed":false,"internalType":"bool","name":"isExcluded","type":"bool"}],"name":"ExcludeFromFees","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":true,"internalType":"address","name":"pair","type":"address"},{"indexed":true,"internalType":"bool","name":"value","type":"bool"}],"name":"SetAutomatedMarketMakerPair","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":"tokensIntoLiquidity","type":"uint256"}],"name":"SwapAndLiquify","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newAddress","type":"address"},{"indexed":true,"internalType":"address","name":"oldAddress","type":"address"}],"name":"UpdateUniswapV2Router","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newWallet","type":"address"},{"indexed":true,"internalType":"address","name":"oldWallet","type":"address"}],"name":"creatorWalletUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newWallet","type":"address"},{"indexed":true,"internalType":"address","name":"oldWallet","type":"address"}],"name":"devWalletUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newWallet","type":"address"},{"indexed":true,"internalType":"address","name":"oldWallet","type":"address"}],"name":"liqWalletUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newWallet","type":"address"},{"indexed":true,"internalType":"address","name":"oldWallet","type":"address"}],"name":"mktWalletUpdated","type":"event"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_isExcludedMaxTransactionAmount","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"automatedMarketMakerPairs","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyCreatorFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyDevFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyLiquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyPurposeFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyTotalFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"creatorWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"deadAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"devWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"excludeFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"updAds","type":"address"},{"internalType":"bool","name":"isEx","type":"bool"}],"name":"excludeFromMaxTransaction","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromFees","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"limitsInEffect","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"liqWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxTransactionAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWallet","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":"purposeWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"reduceTaxesToRegular","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"removeLimits","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sellCreatorFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellDevFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellLiquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellPurposeFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellTotalFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"pair","type":"address"},{"internalType":"bool","name":"value","type":"bool"}],"name":"setAutomatedMarketMakerPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapTokensAtAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokensForCreator","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokensForDev","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokensForLiquidity","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokensForPurpose","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradingActive","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapRouter","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"newAmount","type":"uint256"}],"name":"updateSwapTokensAtAmount","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
60c0604052737a250d5630b4cf539739df2c5dacb4c659f2488d600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600e60006101000a81548160ff0219169083151502179055506001600e60016101000a81548160ff0219169083151502179055506001600e60026101000a81548160ff021916908315150217905550348015620000b757600080fd5b506040518060400160405280601081526020017f426c61636b2042616e6420546f6b656e000000000000000000000000000000008152506040518060400160405280600581526020017f244242544b00000000000000000000000000000000000000000000000000000081525081600390805190602001906200013c92919062000c1e565b5080600490805190602001906200015592919062000c1e565b505050620001786200016c620006de60201b60201c565b620006e660201b60201c565b6000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050620001b2816001620007ac60201b60201c565b8073ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff16815250508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000232573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000258919062000d38565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015620002c0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002e6919062000d38565b6040518363ffffffff1660e01b81526004016200030592919062000d7b565b6020604051808303816000875af115801562000325573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200034b919062000d38565b73ffffffffffffffffffffffffffffffffffffffff1660a08173ffffffffffffffffffffffffffffffffffffffff16815250506200039360a0516001620007ac60201b60201c565b620003a860a05160016200089660201b60201c565b6000601490506000600a90506000601490506000601490506000605a90506000600a905060006014905060006014905060006a52b7d2dcc80cd2e400000090506a0211654585005212800000600b819055506a0211654585005212800000600d81905550612710600a826200041e919062000de1565b6200042a919062000e71565b600c819055508860108190555087601181905550866012819055508560138190555060135460125460115460105462000464919062000ea9565b62000470919062000ea9565b6200047c919062000ea9565b600f8190555084601581905550836016819055508260178190555081601881905550601854601754601654601554620004b6919062000ea9565b620004c2919062000ea9565b620004ce919062000ea9565b60148190555073dd5845f757a6f325a2956eb09e9ddabf35ca4e2a600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550737ee05ec239743cb975a7062a49be52ee246dfc36600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550733adc2b842aab048a6612c2612769546c82be4084600960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555073a579af55123cfe0b4305ff96d97dc839da1991d9600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506200064a6200063c6200093760201b60201c565b60016200096160201b60201c565b6200065d3060016200096160201b60201c565b6200067261dead60016200096160201b60201c565b62000694620006866200093760201b60201c565b6001620007ac60201b60201c565b620006a7306001620007ac60201b60201c565b620006bc61dead6001620007ac60201b60201c565b620006ce338262000a9b60201b60201c565b50505050505050505050620010c8565b600033905090565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b620007bc620006de60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16620007e26200093760201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16146200083b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620008329062000f67565b60405180910390fd5b80601e60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b80601f60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b62000971620006de60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16620009976200093760201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1614620009f0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620009e79062000f67565b60405180910390fd5b80601d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df78260405162000a8f919062000fa6565b60405180910390a25050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141562000b0e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000b059062001013565b60405180910390fd5b62000b226000838362000c1460201b60201c565b806002600082825462000b36919062000ea9565b92505081905550806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825462000b8d919062000ea9565b925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405162000bf4919062001046565b60405180910390a362000c106000838362000c1960201b60201c565b5050565b505050565b505050565b82805462000c2c9062001092565b90600052602060002090601f01602090048101928262000c50576000855562000c9c565b82601f1062000c6b57805160ff191683800117855562000c9c565b8280016001018555821562000c9c579182015b8281111562000c9b57825182559160200191906001019062000c7e565b5b50905062000cab919062000caf565b5090565b5b8082111562000cca57600081600090555060010162000cb0565b5090565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600062000d008262000cd3565b9050919050565b62000d128162000cf3565b811462000d1e57600080fd5b50565b60008151905062000d328162000d07565b92915050565b60006020828403121562000d515762000d5062000cce565b5b600062000d618482850162000d21565b91505092915050565b62000d758162000cf3565b82525050565b600060408201905062000d92600083018562000d6a565b62000da1602083018462000d6a565b9392505050565b6000819050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600062000dee8262000da8565b915062000dfb8362000da8565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161562000e375762000e3662000db2565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600062000e7e8262000da8565b915062000e8b8362000da8565b92508262000e9e5762000e9d62000e42565b5b828204905092915050565b600062000eb68262000da8565b915062000ec38362000da8565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111562000efb5762000efa62000db2565b5b828201905092915050565b600082825260208201905092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b600062000f4f60208362000f06565b915062000f5c8262000f17565b602082019050919050565b6000602082019050818103600083015262000f828162000f40565b9050919050565b60008115159050919050565b62000fa08162000f89565b82525050565b600060208201905062000fbd600083018462000f95565b92915050565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b600062000ffb601f8362000f06565b9150620010088262000fc3565b602082019050919050565b600060208201905081810360008301526200102e8162000fec565b9050919050565b620010408162000da8565b82525050565b60006020820190506200105d600083018462001035565b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680620010ab57607f821691505b60208210811415620010c257620010c162001063565b5b50919050565b60805160a05161444f6200111860003960008181610fb40152611477015260008181610cf901528181612f76015281816130570152818161307e0152818161311a0152613141015261444f6000f3fe6080604052600436106102e85760003560e01c80637571336a11610190578063bf4f3454116100dc578063e2f4560511610095578063f2fde38b1161006f578063f2fde38b14610b71578063f604368914610b9a578063f637434214610bc5578063f8b45b0514610bf0576102ef565b8063e2f4560514610af0578063e49ce0a814610b1b578063f11a24d314610b46576102ef565b8063bf4f3454146109cc578063c0246668146109f7578063c8c8ebe414610a20578063d257b34f14610a4b578063d85ba06314610a88578063dd62ed3e14610ab3576102ef565b80639c3b4fdc11610149578063a457c2d711610123578063a457c2d7146108ea578063a9059cbb14610927578063b62496f514610964578063bbc0c742146109a1576102ef565b80639c3b4fdc146108695780639fccce3214610894578063a0d82dc5146108bf576102ef565b80637571336a1461076b5780637cdc65f2146107945780638da5cb5b146107bf5780638ea5220f146107ea57806395d89b41146108155780639a7a23d614610840576102ef565b8063395093511161024f5780636a486a8e1161020857806370a08231116101e257806370a08231146106c1578063715018a6146106fe578063735de9f714610715578063751039fc14610740576102ef565b80636a486a8e146106405780636ddd17131461066b578063705fdaf214610696576102ef565b8063395093511461052e5780633d21acb91461056b57806349bd5a5e146105825780634a62bb65146105ad5780634ec39ba9146105d85780634fbee19314610603576102ef565b806318160ddd116102a157806318160ddd1461041a5780631a8145bb146104455780631c9b4bdb1461047057806323b872dd1461049b57806327c8f835146104d8578063313ce56714610503576102ef565b80630308ad4f146102f457806306fdde031461031f578063095ea7b31461034a57806310d5de53146103875780631651d512146103c45780631694505e146103ef576102ef565b366102ef57005b600080fd5b34801561030057600080fd5b50610309610c1b565b6040516103169190613229565b60405180910390f35b34801561032b57600080fd5b50610334610c21565b60405161034191906132dd565b60405180910390f35b34801561035657600080fd5b50610371600480360381019061036c919061338e565b610cb3565b60405161037e91906133e9565b60405180910390f35b34801561039357600080fd5b506103ae60048036038101906103a99190613404565b610cd1565b6040516103bb91906133e9565b60405180910390f35b3480156103d057600080fd5b506103d9610cf1565b6040516103e69190613229565b60405180910390f35b3480156103fb57600080fd5b50610404610cf7565b6040516104119190613490565b60405180910390f35b34801561042657600080fd5b5061042f610d1b565b60405161043c9190613229565b60405180910390f35b34801561045157600080fd5b5061045a610d25565b6040516104679190613229565b60405180910390f35b34801561047c57600080fd5b50610485610d2b565b6040516104929190613229565b60405180910390f35b3480156104a757600080fd5b506104c260048036038101906104bd91906134ab565b610d31565b6040516104cf91906133e9565b60405180910390f35b3480156104e457600080fd5b506104ed610e29565b6040516104fa919061350d565b60405180910390f35b34801561050f57600080fd5b50610518610e2f565b6040516105259190613544565b60405180910390f35b34801561053a57600080fd5b506105556004803603810190610550919061338e565b610e38565b60405161056291906133e9565b60405180910390f35b34801561057757600080fd5b50610580610ee4565b005b34801561058e57600080fd5b50610597610fb2565b6040516105a4919061350d565b60405180910390f35b3480156105b957600080fd5b506105c2610fd6565b6040516105cf91906133e9565b60405180910390f35b3480156105e457600080fd5b506105ed610fe9565b6040516105fa919061350d565b60405180910390f35b34801561060f57600080fd5b5061062a60048036038101906106259190613404565b61100f565b60405161063791906133e9565b60405180910390f35b34801561064c57600080fd5b50610655611065565b6040516106629190613229565b60405180910390f35b34801561067757600080fd5b5061068061106b565b60405161068d91906133e9565b60405180910390f35b3480156106a257600080fd5b506106ab61107e565b6040516106b89190613229565b60405180910390f35b3480156106cd57600080fd5b506106e860048036038101906106e39190613404565b611084565b6040516106f59190613229565b60405180910390f35b34801561070a57600080fd5b506107136110cc565b005b34801561072157600080fd5b5061072a611154565b604051610737919061350d565b60405180910390f35b34801561074c57600080fd5b5061075561117a565b60405161076291906133e9565b60405180910390f35b34801561077757600080fd5b50610792600480360381019061078d919061358b565b61121a565b005b3480156107a057600080fd5b506107a96112f1565b6040516107b6919061350d565b60405180910390f35b3480156107cb57600080fd5b506107d4611317565b6040516107e1919061350d565b60405180910390f35b3480156107f657600080fd5b506107ff611341565b60405161080c919061350d565b60405180910390f35b34801561082157600080fd5b5061082a611367565b60405161083791906132dd565b60405180910390f35b34801561084c57600080fd5b506108676004803603810190610862919061358b565b6113f9565b005b34801561087557600080fd5b5061087e611512565b60405161088b9190613229565b60405180910390f35b3480156108a057600080fd5b506108a9611518565b6040516108b69190613229565b60405180910390f35b3480156108cb57600080fd5b506108d461151e565b6040516108e19190613229565b60405180910390f35b3480156108f657600080fd5b50610911600480360381019061090c919061338e565b611524565b60405161091e91906133e9565b60405180910390f35b34801561093357600080fd5b5061094e6004803603810190610949919061338e565b61160f565b60405161095b91906133e9565b60405180910390f35b34801561097057600080fd5b5061098b60048036038101906109869190613404565b61162d565b60405161099891906133e9565b60405180910390f35b3480156109ad57600080fd5b506109b661164d565b6040516109c391906133e9565b60405180910390f35b3480156109d857600080fd5b506109e1611660565b6040516109ee9190613229565b60405180910390f35b348015610a0357600080fd5b50610a1e6004803603810190610a19919061358b565b611666565b005b348015610a2c57600080fd5b50610a3561178b565b604051610a429190613229565b60405180910390f35b348015610a5757600080fd5b50610a726004803603810190610a6d91906135cb565b611791565b604051610a7f91906133e9565b60405180910390f35b348015610a9457600080fd5b50610a9d611901565b604051610aaa9190613229565b60405180910390f35b348015610abf57600080fd5b50610ada6004803603810190610ad591906135f8565b611907565b604051610ae79190613229565b60405180910390f35b348015610afc57600080fd5b50610b0561198e565b604051610b129190613229565b60405180910390f35b348015610b2757600080fd5b50610b30611994565b604051610b3d9190613229565b60405180910390f35b348015610b5257600080fd5b50610b5b61199a565b604051610b689190613229565b60405180910390f35b348015610b7d57600080fd5b50610b986004803603810190610b939190613404565b6119a0565b005b348015610ba657600080fd5b50610baf611a98565b604051610bbc919061350d565b60405180910390f35b348015610bd157600080fd5b50610bda611abe565b604051610be79190613229565b60405180910390f35b348015610bfc57600080fd5b50610c05611ac4565b604051610c129190613229565b60405180910390f35b60195481565b606060038054610c3090613667565b80601f0160208091040260200160405190810160405280929190818152602001828054610c5c90613667565b8015610ca95780601f10610c7e57610100808354040283529160200191610ca9565b820191906000526020600020905b815481529060010190602001808311610c8c57829003601f168201915b5050505050905090565b6000610cc7610cc0611aca565b8484611ad2565b6001905092915050565b601e6020528060005260406000206000915054906101000a900460ff1681565b60105481565b7f000000000000000000000000000000000000000000000000000000000000000081565b6000600254905090565b601a5481565b601c5481565b6000610d3e848484611c9d565b6000600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610d89611aca565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015610e09576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e009061370b565b60405180910390fd5b610e1d85610e15611aca565b858403611ad2565b60019150509392505050565b61dead81565b60006012905090565b6000610eda610e45611aca565b848460016000610e53611aca565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610ed5919061375a565b611ad2565b6001905092915050565b610eec611aca565b73ffffffffffffffffffffffffffffffffffffffff16610f0a611317565b73ffffffffffffffffffffffffffffffffffffffff1614610f60576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f57906137fc565b60405180910390fd5b6014601581905550600a60168190555060146017819055506014601881905550601854601754601654601554610f96919061375a565b610fa0919061375a565b610faa919061375a565b601481905550565b7f000000000000000000000000000000000000000000000000000000000000000081565b600e60009054906101000a900460ff1681565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000601d60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b60145481565b600e60029054906101000a900460ff1681565b60155481565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6110d4611aca565b73ffffffffffffffffffffffffffffffffffffffff166110f2611317565b73ffffffffffffffffffffffffffffffffffffffff1614611148576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161113f906137fc565b60405180910390fd5b61115260006126e2565b565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000611184611aca565b73ffffffffffffffffffffffffffffffffffffffff166111a2611317565b73ffffffffffffffffffffffffffffffffffffffff16146111f8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111ef906137fc565b60405180910390fd5b6000600e60006101000a81548160ff0219169083151502179055506001905090565b611222611aca565b73ffffffffffffffffffffffffffffffffffffffff16611240611317565b73ffffffffffffffffffffffffffffffffffffffff1614611296576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161128d906137fc565b60405180910390fd5b80601e60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60606004805461137690613667565b80601f01602080910402602001604051908101604052809291908181526020018280546113a290613667565b80156113ef5780601f106113c4576101008083540402835291602001916113ef565b820191906000526020600020905b8154815290600101906020018083116113d257829003601f168201915b5050505050905090565b611401611aca565b73ffffffffffffffffffffffffffffffffffffffff1661141f611317565b73ffffffffffffffffffffffffffffffffffffffff1614611475576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161146c906137fc565b60405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611504576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114fb9061388e565b60405180910390fd5b61150e82826127a8565b5050565b60125481565b601b5481565b60175481565b60008060016000611533611aca565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050828110156115f0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115e790613920565b60405180910390fd5b6116046115fb611aca565b85858403611ad2565b600191505092915050565b600061162361161c611aca565b8484611c9d565b6001905092915050565b601f6020528060005260406000206000915054906101000a900460ff1681565b600e60019054906101000a900460ff1681565b60135481565b61166e611aca565b73ffffffffffffffffffffffffffffffffffffffff1661168c611317565b73ffffffffffffffffffffffffffffffffffffffff16146116e2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116d9906137fc565b60405180910390fd5b80601d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df78260405161177f91906133e9565b60405180910390a25050565b600b5481565b6000600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166117d4611aca565b73ffffffffffffffffffffffffffffffffffffffff161461182a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611821906139b2565b60405180910390fd5b620186a06001611838610d1b565b61184291906139d2565b61184c9190613a5b565b82101561188e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161188590613afe565b60405180910390fd5b6103e8600561189b610d1b565b6118a591906139d2565b6118af9190613a5b565b8211156118f1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118e890613b90565b60405180910390fd5b81600c8190555060019050919050565b600f5481565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600c5481565b60185481565b60115481565b6119a8611aca565b73ffffffffffffffffffffffffffffffffffffffff166119c6611317565b73ffffffffffffffffffffffffffffffffffffffff1614611a1c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a13906137fc565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611a8c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a8390613c22565b60405180910390fd5b611a95816126e2565b50565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60165481565b600d5481565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611b42576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b3990613cb4565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611bb2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ba990613d46565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051611c909190613229565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611d0d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d0490613dd8565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611d7d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d7490613e6a565b60405180910390fd5b6000811415611d9757611d9283836000612849565b6126dd565b600e60009054906101000a900460ff161561219d57611db4611317565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015611e225750611df2611317565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015611e5b5750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015611e95575061dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015611eae5750600660149054906101000a900460ff16155b1561219c57601f60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015611f565750601e60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15611ffd57600b54811115611fa0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f9790613efc565b60405180910390fd5b600d54611fac83611084565b82611fb7919061375a565b1115611ff8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fef90613f68565b60405180910390fd5b61219b565b601f60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156120a05750601e60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156120ef57600b548111156120ea576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120e190613ffa565b60405180910390fd5b61219a565b601e60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1661219957600d5461214c83611084565b82612157919061375a565b1115612198576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161218f90613f68565b60405180910390fd5b5b5b5b5b5b60006121a830611084565b90506000600c5482101590508080156121cd5750600e60029054906101000a900460ff165b80156121e65750600660149054906101000a900460ff16155b801561223c5750601f60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156122925750601d60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156122e85750601d60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561232c576001600660146101000a81548160ff021916908315150217905550612310612aca565b6000600660146101000a81548160ff0219169083151502179055505b6000600660149054906101000a900460ff16159050601d60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806123e25750601d60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b156123ec57600090505b600081156126cd57601f60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16801561244f57506000601454115b156125505761247d6103e861246f60145488612e8b90919063ffffffff16565b612ea190919063ffffffff16565b90506014546016548261249091906139d2565b61249a9190613a5b565b601a60008282546124ab919061375a565b92505081905550601454601754826124c391906139d2565b6124cd9190613a5b565b601b60008282546124de919061375a565b92505081905550601454601554826124f691906139d2565b6125009190613a5b565b60196000828254612511919061375a565b925050819055506014546018548261252991906139d2565b6125339190613a5b565b601c6000828254612544919061375a565b925050819055506126a9565b601f60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156125ab57506000600f54115b156126a8576125d96103e86125cb600f5488612e8b90919063ffffffff16565b612ea190919063ffffffff16565b9050600f54601154826125ec91906139d2565b6125f69190613a5b565b601a6000828254612607919061375a565b92505081905550600f546012548261261f91906139d2565b6126299190613a5b565b601b600082825461263a919061375a565b92505081905550600f546010548261265291906139d2565b61265c9190613a5b565b6019600082825461266d919061375a565b92505081905550600f546013548261268591906139d2565b61268f9190613a5b565b601c60008282546126a0919061375a565b925050819055505b5b60008111156126be576126bd873083612849565b5b80856126ca919061401a565b94505b6126d8878787612849565b505050505b505050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b80601f60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156128b9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128b090613dd8565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612929576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161292090613e6a565b60405180910390fd5b612934838383612eb7565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050818110156129ba576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129b1906140c0565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254612a4d919061375a565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051612ab19190613229565b60405180910390a3612ac4848484612ebc565b50505050565b6000612ad530611084565b90506000601c54601b54601954601a54612aef919061375a565b612af9919061375a565b612b03919061375a565b9050600080831480612b155750600082145b15612b2257505050612e89565b6014600c54612b3191906139d2565b831115612b4a576014600c54612b4791906139d2565b92505b6000600283601a5486612b5d91906139d2565b612b679190613a5b565b612b719190613a5b565b90506000612b888286612ec190919063ffffffff16565b90506000479050612b9882612ed7565b6000612bad8247612ec190919063ffffffff16565b90506000612bd887612bca60195485612e8b90919063ffffffff16565b612ea190919063ffffffff16565b90506000612c0388612bf5601b5486612e8b90919063ffffffff16565b612ea190919063ffffffff16565b90506000612c2e89612c20601c5487612e8b90919063ffffffff16565b612ea190919063ffffffff16565b9050600081838587612c40919061401a565b612c4a919061401a565b612c54919061401a565b90506000601a8190555060006019819055506000601b819055506000601c81905550600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1683604051612cbc90614111565b60006040518083038185875af1925050503d8060008114612cf9576040519150601f19603f3d011682016040523d82523d6000602084013e612cfe565b606091505b505080995050600088118015612d145750600081115b15612d6157612d238882613114565b7f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb5618782601a54604051612d5893929190614126565b60405180910390a15b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1682604051612da790614111565b60006040518083038185875af1925050503d8060008114612de4576040519150601f19603f3d011682016040523d82523d6000602084013e612de9565b606091505b505080995050600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1647604051612e3590614111565b60006040518083038185875af1925050503d8060008114612e72576040519150601f19603f3d011682016040523d82523d6000602084013e612e77565b606091505b50508099505050505050505050505050505b565b60008183612e9991906139d2565b905092915050565b60008183612eaf9190613a5b565b905092915050565b505050565b505050565b60008183612ecf919061401a565b905092915050565b6000600267ffffffffffffffff811115612ef457612ef361415d565b5b604051908082528060200260200182016040528015612f225781602001602082028036833780820191505090505b5090503081600081518110612f3a57612f3961418c565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612fdf573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061300391906141d0565b816001815181106130175761301661418c565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505061307c307f000000000000000000000000000000000000000000000000000000000000000084611ad2565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b81526004016130de9594939291906142f6565b600060405180830381600087803b1580156130f857600080fd5b505af115801561310c573d6000803e3d6000fd5b505050505050565b61313f307f000000000000000000000000000000000000000000000000000000000000000084611ad2565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663f305d719823085600080600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518863ffffffff1660e01b81526004016131c696959493929190614350565b60606040518083038185885af11580156131e4573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061320991906143c6565b5050505050565b6000819050919050565b61322381613210565b82525050565b600060208201905061323e600083018461321a565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b8381101561327e578082015181840152602081019050613263565b8381111561328d576000848401525b50505050565b6000601f19601f8301169050919050565b60006132af82613244565b6132b9818561324f565b93506132c9818560208601613260565b6132d281613293565b840191505092915050565b600060208201905081810360008301526132f781846132a4565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061332f82613304565b9050919050565b61333f81613324565b811461334a57600080fd5b50565b60008135905061335c81613336565b92915050565b61336b81613210565b811461337657600080fd5b50565b60008135905061338881613362565b92915050565b600080604083850312156133a5576133a46132ff565b5b60006133b38582860161334d565b92505060206133c485828601613379565b9150509250929050565b60008115159050919050565b6133e3816133ce565b82525050565b60006020820190506133fe60008301846133da565b92915050565b60006020828403121561341a576134196132ff565b5b60006134288482850161334d565b91505092915050565b6000819050919050565b600061345661345161344c84613304565b613431565b613304565b9050919050565b60006134688261343b565b9050919050565b600061347a8261345d565b9050919050565b61348a8161346f565b82525050565b60006020820190506134a56000830184613481565b92915050565b6000806000606084860312156134c4576134c36132ff565b5b60006134d28682870161334d565b93505060206134e38682870161334d565b92505060406134f486828701613379565b9150509250925092565b61350781613324565b82525050565b600060208201905061352260008301846134fe565b92915050565b600060ff82169050919050565b61353e81613528565b82525050565b60006020820190506135596000830184613535565b92915050565b613568816133ce565b811461357357600080fd5b50565b6000813590506135858161355f565b92915050565b600080604083850312156135a2576135a16132ff565b5b60006135b08582860161334d565b92505060206135c185828601613576565b9150509250929050565b6000602082840312156135e1576135e06132ff565b5b60006135ef84828501613379565b91505092915050565b6000806040838503121561360f5761360e6132ff565b5b600061361d8582860161334d565b925050602061362e8582860161334d565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061367f57607f821691505b6020821081141561369357613692613638565b5b50919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206160008201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b60006136f560288361324f565b915061370082613699565b604082019050919050565b60006020820190508181036000830152613724816136e8565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061376582613210565b915061377083613210565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156137a5576137a461372b565b5b828201905092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b60006137e660208361324f565b91506137f1826137b0565b602082019050919050565b60006020820190508181036000830152613815816137d9565b9050919050565b7f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d2060008201527f6175746f6d617465644d61726b65744d616b6572506169727300000000000000602082015250565b600061387860398361324f565b91506138838261381c565b604082019050919050565b600060208201905081810360008301526138a78161386b565b9050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b600061390a60258361324f565b9150613915826138ae565b604082019050919050565b60006020820190508181036000830152613939816138fd565b9050919050565b7f43726561746f723a2063616c6c6572206973206e6f742074686520637265617460008201527f6f72000000000000000000000000000000000000000000000000000000000000602082015250565b600061399c60228361324f565b91506139a782613940565b604082019050919050565b600060208201905081810360008301526139cb8161398f565b9050919050565b60006139dd82613210565b91506139e883613210565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615613a2157613a2061372b565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000613a6682613210565b9150613a7183613210565b925082613a8157613a80613a2c565b5b828204905092915050565b7f5377617020616d6f756e742063616e6e6f74206265206c6f776572207468616e60008201527f20302e3030312520746f74616c20737570706c792e0000000000000000000000602082015250565b6000613ae860358361324f565b9150613af382613a8c565b604082019050919050565b60006020820190508181036000830152613b1781613adb565b9050919050565b7f5377617020616d6f756e742063616e6e6f74206265206869676865722074686160008201527f6e20302e352520746f74616c20737570706c792e000000000000000000000000602082015250565b6000613b7a60348361324f565b9150613b8582613b1e565b604082019050919050565b60006020820190508181036000830152613ba981613b6d565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000613c0c60268361324f565b9150613c1782613bb0565b604082019050919050565b60006020820190508181036000830152613c3b81613bff565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000613c9e60248361324f565b9150613ca982613c42565b604082019050919050565b60006020820190508181036000830152613ccd81613c91565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000613d3060228361324f565b9150613d3b82613cd4565b604082019050919050565b60006020820190508181036000830152613d5f81613d23565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000613dc260258361324f565b9150613dcd82613d66565b604082019050919050565b60006020820190508181036000830152613df181613db5565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000613e5460238361324f565b9150613e5f82613df8565b604082019050919050565b60006020820190508181036000830152613e8381613e47565b9050919050565b7f427579207472616e7366657220616d6f756e742065786365656473207468652060008201527f6d61785472616e73616374696f6e416d6f756e742e0000000000000000000000602082015250565b6000613ee660358361324f565b9150613ef182613e8a565b604082019050919050565b60006020820190508181036000830152613f1581613ed9565b9050919050565b7f4d61782077616c6c657420657863656564656400000000000000000000000000600082015250565b6000613f5260138361324f565b9150613f5d82613f1c565b602082019050919050565b60006020820190508181036000830152613f8181613f45565b9050919050565b7f53656c6c207472616e7366657220616d6f756e7420657863656564732074686560008201527f206d61785472616e73616374696f6e416d6f756e742e00000000000000000000602082015250565b6000613fe460368361324f565b9150613fef82613f88565b604082019050919050565b6000602082019050818103600083015261401381613fd7565b9050919050565b600061402582613210565b915061403083613210565b9250828210156140435761404261372b565b5b828203905092915050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b60006140aa60268361324f565b91506140b58261404e565b604082019050919050565b600060208201905081810360008301526140d98161409d565b9050919050565b600081905092915050565b50565b60006140fb6000836140e0565b9150614106826140eb565b600082019050919050565b600061411c826140ee565b9150819050919050565b600060608201905061413b600083018661321a565b614148602083018561321a565b614155604083018461321a565b949350505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000815190506141ca81613336565b92915050565b6000602082840312156141e6576141e56132ff565b5b60006141f4848285016141bb565b91505092915050565b6000819050919050565b600061422261421d614218846141fd565b613431565b613210565b9050919050565b61423281614207565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b61426d81613324565b82525050565b600061427f8383614264565b60208301905092915050565b6000602082019050919050565b60006142a382614238565b6142ad8185614243565b93506142b883614254565b8060005b838110156142e95781516142d08882614273565b97506142db8361428b565b9250506001810190506142bc565b5085935050505092915050565b600060a08201905061430b600083018861321a565b6143186020830187614229565b818103604083015261432a8186614298565b905061433960608301856134fe565b614346608083018461321a565b9695505050505050565b600060c08201905061436560008301896134fe565b614372602083018861321a565b61437f6040830187614229565b61438c6060830186614229565b61439960808301856134fe565b6143a660a083018461321a565b979650505050505050565b6000815190506143c081613362565b92915050565b6000806000606084860312156143df576143de6132ff565b5b60006143ed868287016143b1565b93505060206143fe868287016143b1565b925050604061440f868287016143b1565b915050925092509256fea2646970667358221220db518688455dfabe6a671c40a4730917a6b703f81d77f80cfc182143671236d264736f6c634300080a0033
Deployed Bytecode
0x6080604052600436106102e85760003560e01c80637571336a11610190578063bf4f3454116100dc578063e2f4560511610095578063f2fde38b1161006f578063f2fde38b14610b71578063f604368914610b9a578063f637434214610bc5578063f8b45b0514610bf0576102ef565b8063e2f4560514610af0578063e49ce0a814610b1b578063f11a24d314610b46576102ef565b8063bf4f3454146109cc578063c0246668146109f7578063c8c8ebe414610a20578063d257b34f14610a4b578063d85ba06314610a88578063dd62ed3e14610ab3576102ef565b80639c3b4fdc11610149578063a457c2d711610123578063a457c2d7146108ea578063a9059cbb14610927578063b62496f514610964578063bbc0c742146109a1576102ef565b80639c3b4fdc146108695780639fccce3214610894578063a0d82dc5146108bf576102ef565b80637571336a1461076b5780637cdc65f2146107945780638da5cb5b146107bf5780638ea5220f146107ea57806395d89b41146108155780639a7a23d614610840576102ef565b8063395093511161024f5780636a486a8e1161020857806370a08231116101e257806370a08231146106c1578063715018a6146106fe578063735de9f714610715578063751039fc14610740576102ef565b80636a486a8e146106405780636ddd17131461066b578063705fdaf214610696576102ef565b8063395093511461052e5780633d21acb91461056b57806349bd5a5e146105825780634a62bb65146105ad5780634ec39ba9146105d85780634fbee19314610603576102ef565b806318160ddd116102a157806318160ddd1461041a5780631a8145bb146104455780631c9b4bdb1461047057806323b872dd1461049b57806327c8f835146104d8578063313ce56714610503576102ef565b80630308ad4f146102f457806306fdde031461031f578063095ea7b31461034a57806310d5de53146103875780631651d512146103c45780631694505e146103ef576102ef565b366102ef57005b600080fd5b34801561030057600080fd5b50610309610c1b565b6040516103169190613229565b60405180910390f35b34801561032b57600080fd5b50610334610c21565b60405161034191906132dd565b60405180910390f35b34801561035657600080fd5b50610371600480360381019061036c919061338e565b610cb3565b60405161037e91906133e9565b60405180910390f35b34801561039357600080fd5b506103ae60048036038101906103a99190613404565b610cd1565b6040516103bb91906133e9565b60405180910390f35b3480156103d057600080fd5b506103d9610cf1565b6040516103e69190613229565b60405180910390f35b3480156103fb57600080fd5b50610404610cf7565b6040516104119190613490565b60405180910390f35b34801561042657600080fd5b5061042f610d1b565b60405161043c9190613229565b60405180910390f35b34801561045157600080fd5b5061045a610d25565b6040516104679190613229565b60405180910390f35b34801561047c57600080fd5b50610485610d2b565b6040516104929190613229565b60405180910390f35b3480156104a757600080fd5b506104c260048036038101906104bd91906134ab565b610d31565b6040516104cf91906133e9565b60405180910390f35b3480156104e457600080fd5b506104ed610e29565b6040516104fa919061350d565b60405180910390f35b34801561050f57600080fd5b50610518610e2f565b6040516105259190613544565b60405180910390f35b34801561053a57600080fd5b506105556004803603810190610550919061338e565b610e38565b60405161056291906133e9565b60405180910390f35b34801561057757600080fd5b50610580610ee4565b005b34801561058e57600080fd5b50610597610fb2565b6040516105a4919061350d565b60405180910390f35b3480156105b957600080fd5b506105c2610fd6565b6040516105cf91906133e9565b60405180910390f35b3480156105e457600080fd5b506105ed610fe9565b6040516105fa919061350d565b60405180910390f35b34801561060f57600080fd5b5061062a60048036038101906106259190613404565b61100f565b60405161063791906133e9565b60405180910390f35b34801561064c57600080fd5b50610655611065565b6040516106629190613229565b60405180910390f35b34801561067757600080fd5b5061068061106b565b60405161068d91906133e9565b60405180910390f35b3480156106a257600080fd5b506106ab61107e565b6040516106b89190613229565b60405180910390f35b3480156106cd57600080fd5b506106e860048036038101906106e39190613404565b611084565b6040516106f59190613229565b60405180910390f35b34801561070a57600080fd5b506107136110cc565b005b34801561072157600080fd5b5061072a611154565b604051610737919061350d565b60405180910390f35b34801561074c57600080fd5b5061075561117a565b60405161076291906133e9565b60405180910390f35b34801561077757600080fd5b50610792600480360381019061078d919061358b565b61121a565b005b3480156107a057600080fd5b506107a96112f1565b6040516107b6919061350d565b60405180910390f35b3480156107cb57600080fd5b506107d4611317565b6040516107e1919061350d565b60405180910390f35b3480156107f657600080fd5b506107ff611341565b60405161080c919061350d565b60405180910390f35b34801561082157600080fd5b5061082a611367565b60405161083791906132dd565b60405180910390f35b34801561084c57600080fd5b506108676004803603810190610862919061358b565b6113f9565b005b34801561087557600080fd5b5061087e611512565b60405161088b9190613229565b60405180910390f35b3480156108a057600080fd5b506108a9611518565b6040516108b69190613229565b60405180910390f35b3480156108cb57600080fd5b506108d461151e565b6040516108e19190613229565b60405180910390f35b3480156108f657600080fd5b50610911600480360381019061090c919061338e565b611524565b60405161091e91906133e9565b60405180910390f35b34801561093357600080fd5b5061094e6004803603810190610949919061338e565b61160f565b60405161095b91906133e9565b60405180910390f35b34801561097057600080fd5b5061098b60048036038101906109869190613404565b61162d565b60405161099891906133e9565b60405180910390f35b3480156109ad57600080fd5b506109b661164d565b6040516109c391906133e9565b60405180910390f35b3480156109d857600080fd5b506109e1611660565b6040516109ee9190613229565b60405180910390f35b348015610a0357600080fd5b50610a1e6004803603810190610a19919061358b565b611666565b005b348015610a2c57600080fd5b50610a3561178b565b604051610a429190613229565b60405180910390f35b348015610a5757600080fd5b50610a726004803603810190610a6d91906135cb565b611791565b604051610a7f91906133e9565b60405180910390f35b348015610a9457600080fd5b50610a9d611901565b604051610aaa9190613229565b60405180910390f35b348015610abf57600080fd5b50610ada6004803603810190610ad591906135f8565b611907565b604051610ae79190613229565b60405180910390f35b348015610afc57600080fd5b50610b0561198e565b604051610b129190613229565b60405180910390f35b348015610b2757600080fd5b50610b30611994565b604051610b3d9190613229565b60405180910390f35b348015610b5257600080fd5b50610b5b61199a565b604051610b689190613229565b60405180910390f35b348015610b7d57600080fd5b50610b986004803603810190610b939190613404565b6119a0565b005b348015610ba657600080fd5b50610baf611a98565b604051610bbc919061350d565b60405180910390f35b348015610bd157600080fd5b50610bda611abe565b604051610be79190613229565b60405180910390f35b348015610bfc57600080fd5b50610c05611ac4565b604051610c129190613229565b60405180910390f35b60195481565b606060038054610c3090613667565b80601f0160208091040260200160405190810160405280929190818152602001828054610c5c90613667565b8015610ca95780601f10610c7e57610100808354040283529160200191610ca9565b820191906000526020600020905b815481529060010190602001808311610c8c57829003601f168201915b5050505050905090565b6000610cc7610cc0611aca565b8484611ad2565b6001905092915050565b601e6020528060005260406000206000915054906101000a900460ff1681565b60105481565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d81565b6000600254905090565b601a5481565b601c5481565b6000610d3e848484611c9d565b6000600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610d89611aca565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015610e09576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e009061370b565b60405180910390fd5b610e1d85610e15611aca565b858403611ad2565b60019150509392505050565b61dead81565b60006012905090565b6000610eda610e45611aca565b848460016000610e53611aca565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610ed5919061375a565b611ad2565b6001905092915050565b610eec611aca565b73ffffffffffffffffffffffffffffffffffffffff16610f0a611317565b73ffffffffffffffffffffffffffffffffffffffff1614610f60576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f57906137fc565b60405180910390fd5b6014601581905550600a60168190555060146017819055506014601881905550601854601754601654601554610f96919061375a565b610fa0919061375a565b610faa919061375a565b601481905550565b7f000000000000000000000000fa786981102b598b28473ec431d8815fd2f52f8881565b600e60009054906101000a900460ff1681565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000601d60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b60145481565b600e60029054906101000a900460ff1681565b60155481565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6110d4611aca565b73ffffffffffffffffffffffffffffffffffffffff166110f2611317565b73ffffffffffffffffffffffffffffffffffffffff1614611148576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161113f906137fc565b60405180910390fd5b61115260006126e2565b565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000611184611aca565b73ffffffffffffffffffffffffffffffffffffffff166111a2611317565b73ffffffffffffffffffffffffffffffffffffffff16146111f8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111ef906137fc565b60405180910390fd5b6000600e60006101000a81548160ff0219169083151502179055506001905090565b611222611aca565b73ffffffffffffffffffffffffffffffffffffffff16611240611317565b73ffffffffffffffffffffffffffffffffffffffff1614611296576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161128d906137fc565b60405180910390fd5b80601e60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60606004805461137690613667565b80601f01602080910402602001604051908101604052809291908181526020018280546113a290613667565b80156113ef5780601f106113c4576101008083540402835291602001916113ef565b820191906000526020600020905b8154815290600101906020018083116113d257829003601f168201915b5050505050905090565b611401611aca565b73ffffffffffffffffffffffffffffffffffffffff1661141f611317565b73ffffffffffffffffffffffffffffffffffffffff1614611475576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161146c906137fc565b60405180910390fd5b7f000000000000000000000000fa786981102b598b28473ec431d8815fd2f52f8873ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611504576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114fb9061388e565b60405180910390fd5b61150e82826127a8565b5050565b60125481565b601b5481565b60175481565b60008060016000611533611aca565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050828110156115f0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115e790613920565b60405180910390fd5b6116046115fb611aca565b85858403611ad2565b600191505092915050565b600061162361161c611aca565b8484611c9d565b6001905092915050565b601f6020528060005260406000206000915054906101000a900460ff1681565b600e60019054906101000a900460ff1681565b60135481565b61166e611aca565b73ffffffffffffffffffffffffffffffffffffffff1661168c611317565b73ffffffffffffffffffffffffffffffffffffffff16146116e2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116d9906137fc565b60405180910390fd5b80601d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df78260405161177f91906133e9565b60405180910390a25050565b600b5481565b6000600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166117d4611aca565b73ffffffffffffffffffffffffffffffffffffffff161461182a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611821906139b2565b60405180910390fd5b620186a06001611838610d1b565b61184291906139d2565b61184c9190613a5b565b82101561188e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161188590613afe565b60405180910390fd5b6103e8600561189b610d1b565b6118a591906139d2565b6118af9190613a5b565b8211156118f1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118e890613b90565b60405180910390fd5b81600c8190555060019050919050565b600f5481565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600c5481565b60185481565b60115481565b6119a8611aca565b73ffffffffffffffffffffffffffffffffffffffff166119c6611317565b73ffffffffffffffffffffffffffffffffffffffff1614611a1c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a13906137fc565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611a8c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a8390613c22565b60405180910390fd5b611a95816126e2565b50565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60165481565b600d5481565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611b42576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b3990613cb4565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611bb2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ba990613d46565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051611c909190613229565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611d0d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d0490613dd8565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611d7d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d7490613e6a565b60405180910390fd5b6000811415611d9757611d9283836000612849565b6126dd565b600e60009054906101000a900460ff161561219d57611db4611317565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015611e225750611df2611317565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015611e5b5750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015611e95575061dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015611eae5750600660149054906101000a900460ff16155b1561219c57601f60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015611f565750601e60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15611ffd57600b54811115611fa0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f9790613efc565b60405180910390fd5b600d54611fac83611084565b82611fb7919061375a565b1115611ff8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fef90613f68565b60405180910390fd5b61219b565b601f60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156120a05750601e60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156120ef57600b548111156120ea576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120e190613ffa565b60405180910390fd5b61219a565b601e60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1661219957600d5461214c83611084565b82612157919061375a565b1115612198576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161218f90613f68565b60405180910390fd5b5b5b5b5b5b60006121a830611084565b90506000600c5482101590508080156121cd5750600e60029054906101000a900460ff165b80156121e65750600660149054906101000a900460ff16155b801561223c5750601f60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156122925750601d60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156122e85750601d60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561232c576001600660146101000a81548160ff021916908315150217905550612310612aca565b6000600660146101000a81548160ff0219169083151502179055505b6000600660149054906101000a900460ff16159050601d60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806123e25750601d60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b156123ec57600090505b600081156126cd57601f60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16801561244f57506000601454115b156125505761247d6103e861246f60145488612e8b90919063ffffffff16565b612ea190919063ffffffff16565b90506014546016548261249091906139d2565b61249a9190613a5b565b601a60008282546124ab919061375a565b92505081905550601454601754826124c391906139d2565b6124cd9190613a5b565b601b60008282546124de919061375a565b92505081905550601454601554826124f691906139d2565b6125009190613a5b565b60196000828254612511919061375a565b925050819055506014546018548261252991906139d2565b6125339190613a5b565b601c6000828254612544919061375a565b925050819055506126a9565b601f60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156125ab57506000600f54115b156126a8576125d96103e86125cb600f5488612e8b90919063ffffffff16565b612ea190919063ffffffff16565b9050600f54601154826125ec91906139d2565b6125f69190613a5b565b601a6000828254612607919061375a565b92505081905550600f546012548261261f91906139d2565b6126299190613a5b565b601b600082825461263a919061375a565b92505081905550600f546010548261265291906139d2565b61265c9190613a5b565b6019600082825461266d919061375a565b92505081905550600f546013548261268591906139d2565b61268f9190613a5b565b601c60008282546126a0919061375a565b925050819055505b5b60008111156126be576126bd873083612849565b5b80856126ca919061401a565b94505b6126d8878787612849565b505050505b505050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b80601f60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156128b9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128b090613dd8565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612929576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161292090613e6a565b60405180910390fd5b612934838383612eb7565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050818110156129ba576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129b1906140c0565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254612a4d919061375a565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051612ab19190613229565b60405180910390a3612ac4848484612ebc565b50505050565b6000612ad530611084565b90506000601c54601b54601954601a54612aef919061375a565b612af9919061375a565b612b03919061375a565b9050600080831480612b155750600082145b15612b2257505050612e89565b6014600c54612b3191906139d2565b831115612b4a576014600c54612b4791906139d2565b92505b6000600283601a5486612b5d91906139d2565b612b679190613a5b565b612b719190613a5b565b90506000612b888286612ec190919063ffffffff16565b90506000479050612b9882612ed7565b6000612bad8247612ec190919063ffffffff16565b90506000612bd887612bca60195485612e8b90919063ffffffff16565b612ea190919063ffffffff16565b90506000612c0388612bf5601b5486612e8b90919063ffffffff16565b612ea190919063ffffffff16565b90506000612c2e89612c20601c5487612e8b90919063ffffffff16565b612ea190919063ffffffff16565b9050600081838587612c40919061401a565b612c4a919061401a565b612c54919061401a565b90506000601a8190555060006019819055506000601b819055506000601c81905550600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1683604051612cbc90614111565b60006040518083038185875af1925050503d8060008114612cf9576040519150601f19603f3d011682016040523d82523d6000602084013e612cfe565b606091505b505080995050600088118015612d145750600081115b15612d6157612d238882613114565b7f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb5618782601a54604051612d5893929190614126565b60405180910390a15b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1682604051612da790614111565b60006040518083038185875af1925050503d8060008114612de4576040519150601f19603f3d011682016040523d82523d6000602084013e612de9565b606091505b505080995050600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1647604051612e3590614111565b60006040518083038185875af1925050503d8060008114612e72576040519150601f19603f3d011682016040523d82523d6000602084013e612e77565b606091505b50508099505050505050505050505050505b565b60008183612e9991906139d2565b905092915050565b60008183612eaf9190613a5b565b905092915050565b505050565b505050565b60008183612ecf919061401a565b905092915050565b6000600267ffffffffffffffff811115612ef457612ef361415d565b5b604051908082528060200260200182016040528015612f225781602001602082028036833780820191505090505b5090503081600081518110612f3a57612f3961418c565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612fdf573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061300391906141d0565b816001815181106130175761301661418c565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505061307c307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d84611ad2565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b81526004016130de9594939291906142f6565b600060405180830381600087803b1580156130f857600080fd5b505af115801561310c573d6000803e3d6000fd5b505050505050565b61313f307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d84611ad2565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663f305d719823085600080600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518863ffffffff1660e01b81526004016131c696959493929190614350565b60606040518083038185885af11580156131e4573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061320991906143c6565b5050505050565b6000819050919050565b61322381613210565b82525050565b600060208201905061323e600083018461321a565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b8381101561327e578082015181840152602081019050613263565b8381111561328d576000848401525b50505050565b6000601f19601f8301169050919050565b60006132af82613244565b6132b9818561324f565b93506132c9818560208601613260565b6132d281613293565b840191505092915050565b600060208201905081810360008301526132f781846132a4565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061332f82613304565b9050919050565b61333f81613324565b811461334a57600080fd5b50565b60008135905061335c81613336565b92915050565b61336b81613210565b811461337657600080fd5b50565b60008135905061338881613362565b92915050565b600080604083850312156133a5576133a46132ff565b5b60006133b38582860161334d565b92505060206133c485828601613379565b9150509250929050565b60008115159050919050565b6133e3816133ce565b82525050565b60006020820190506133fe60008301846133da565b92915050565b60006020828403121561341a576134196132ff565b5b60006134288482850161334d565b91505092915050565b6000819050919050565b600061345661345161344c84613304565b613431565b613304565b9050919050565b60006134688261343b565b9050919050565b600061347a8261345d565b9050919050565b61348a8161346f565b82525050565b60006020820190506134a56000830184613481565b92915050565b6000806000606084860312156134c4576134c36132ff565b5b60006134d28682870161334d565b93505060206134e38682870161334d565b92505060406134f486828701613379565b9150509250925092565b61350781613324565b82525050565b600060208201905061352260008301846134fe565b92915050565b600060ff82169050919050565b61353e81613528565b82525050565b60006020820190506135596000830184613535565b92915050565b613568816133ce565b811461357357600080fd5b50565b6000813590506135858161355f565b92915050565b600080604083850312156135a2576135a16132ff565b5b60006135b08582860161334d565b92505060206135c185828601613576565b9150509250929050565b6000602082840312156135e1576135e06132ff565b5b60006135ef84828501613379565b91505092915050565b6000806040838503121561360f5761360e6132ff565b5b600061361d8582860161334d565b925050602061362e8582860161334d565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061367f57607f821691505b6020821081141561369357613692613638565b5b50919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206160008201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b60006136f560288361324f565b915061370082613699565b604082019050919050565b60006020820190508181036000830152613724816136e8565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061376582613210565b915061377083613210565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156137a5576137a461372b565b5b828201905092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b60006137e660208361324f565b91506137f1826137b0565b602082019050919050565b60006020820190508181036000830152613815816137d9565b9050919050565b7f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d2060008201527f6175746f6d617465644d61726b65744d616b6572506169727300000000000000602082015250565b600061387860398361324f565b91506138838261381c565b604082019050919050565b600060208201905081810360008301526138a78161386b565b9050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b600061390a60258361324f565b9150613915826138ae565b604082019050919050565b60006020820190508181036000830152613939816138fd565b9050919050565b7f43726561746f723a2063616c6c6572206973206e6f742074686520637265617460008201527f6f72000000000000000000000000000000000000000000000000000000000000602082015250565b600061399c60228361324f565b91506139a782613940565b604082019050919050565b600060208201905081810360008301526139cb8161398f565b9050919050565b60006139dd82613210565b91506139e883613210565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615613a2157613a2061372b565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000613a6682613210565b9150613a7183613210565b925082613a8157613a80613a2c565b5b828204905092915050565b7f5377617020616d6f756e742063616e6e6f74206265206c6f776572207468616e60008201527f20302e3030312520746f74616c20737570706c792e0000000000000000000000602082015250565b6000613ae860358361324f565b9150613af382613a8c565b604082019050919050565b60006020820190508181036000830152613b1781613adb565b9050919050565b7f5377617020616d6f756e742063616e6e6f74206265206869676865722074686160008201527f6e20302e352520746f74616c20737570706c792e000000000000000000000000602082015250565b6000613b7a60348361324f565b9150613b8582613b1e565b604082019050919050565b60006020820190508181036000830152613ba981613b6d565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000613c0c60268361324f565b9150613c1782613bb0565b604082019050919050565b60006020820190508181036000830152613c3b81613bff565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000613c9e60248361324f565b9150613ca982613c42565b604082019050919050565b60006020820190508181036000830152613ccd81613c91565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000613d3060228361324f565b9150613d3b82613cd4565b604082019050919050565b60006020820190508181036000830152613d5f81613d23565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000613dc260258361324f565b9150613dcd82613d66565b604082019050919050565b60006020820190508181036000830152613df181613db5565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000613e5460238361324f565b9150613e5f82613df8565b604082019050919050565b60006020820190508181036000830152613e8381613e47565b9050919050565b7f427579207472616e7366657220616d6f756e742065786365656473207468652060008201527f6d61785472616e73616374696f6e416d6f756e742e0000000000000000000000602082015250565b6000613ee660358361324f565b9150613ef182613e8a565b604082019050919050565b60006020820190508181036000830152613f1581613ed9565b9050919050565b7f4d61782077616c6c657420657863656564656400000000000000000000000000600082015250565b6000613f5260138361324f565b9150613f5d82613f1c565b602082019050919050565b60006020820190508181036000830152613f8181613f45565b9050919050565b7f53656c6c207472616e7366657220616d6f756e7420657863656564732074686560008201527f206d61785472616e73616374696f6e416d6f756e742e00000000000000000000602082015250565b6000613fe460368361324f565b9150613fef82613f88565b604082019050919050565b6000602082019050818103600083015261401381613fd7565b9050919050565b600061402582613210565b915061403083613210565b9250828210156140435761404261372b565b5b828203905092915050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b60006140aa60268361324f565b91506140b58261404e565b604082019050919050565b600060208201905081810360008301526140d98161409d565b9050919050565b600081905092915050565b50565b60006140fb6000836140e0565b9150614106826140eb565b600082019050919050565b600061411c826140ee565b9150819050919050565b600060608201905061413b600083018661321a565b614148602083018561321a565b614155604083018461321a565b949350505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000815190506141ca81613336565b92915050565b6000602082840312156141e6576141e56132ff565b5b60006141f4848285016141bb565b91505092915050565b6000819050919050565b600061422261421d614218846141fd565b613431565b613210565b9050919050565b61423281614207565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b61426d81613324565b82525050565b600061427f8383614264565b60208301905092915050565b6000602082019050919050565b60006142a382614238565b6142ad8185614243565b93506142b883614254565b8060005b838110156142e95781516142d08882614273565b97506142db8361428b565b9250506001810190506142bc565b5085935050505092915050565b600060a08201905061430b600083018861321a565b6143186020830187614229565b818103604083015261432a8186614298565b905061433960608301856134fe565b614346608083018461321a565b9695505050505050565b600060c08201905061436560008301896134fe565b614372602083018861321a565b61437f6040830187614229565b61438c6060830186614229565b61439960808301856134fe565b6143a660a083018461321a565b979650505050505050565b6000815190506143c081613362565b92915050565b6000806000606084860312156143df576143de6132ff565b5b60006143ed868287016143b1565b93505060206143fe868287016143b1565b925050604061440f868287016143b1565b915050925092509256fea2646970667358221220db518688455dfabe6a671c40a4730917a6b703f81d77f80cfc182143671236d264736f6c634300080a0033
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.