Feature Tip: Add private address tag to any address under My Name Tag !
ERC-20
Overview
Max Total Supply
1,000,000,000,000 ALPHA
Holders
137
Market
Onchain Market Cap
$0.00
Circulating Supply Market Cap
-
Other Info
Token Contract (WITH 18 Decimals)
Balance
1,024,410,345.238304130245659306 ALPHAValue
$0.00Loading...
Loading
Loading...
Loading
Loading...
Loading
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
Contract Name:
ALPHA
Compiler Version
v0.8.16+commit.07a7930e
Optimization Enabled:
No with 200 runs
Other Settings:
default evmVersion
Contract Source Code (Solidity Standard Json-Input format)
/** *Submitted for verification at Etherscan.io on 2022-12-26 */ /** Telegram: https://t.me/build_alpha Website: https://www.buildalpha.io */ //SPDX-License-Identifier: UNLICENSED pragma solidity ^0.8.16; interface IERC20 { function totalSupply() external view returns (uint256); function balanceOf(address account) external view returns (uint256); function transfer(address to, 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 from, address to, 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); } abstract contract Context { function _msgSender() internal view virtual returns (address) { return msg.sender; } function _msgData() internal view virtual returns (bytes calldata) { return msg.data; } } 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 to, uint256 amount) public virtual override returns (bool) { address owner = _msgSender(); _transfer(owner, to, 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) { address owner = _msgSender(); _approve(owner, spender, amount); return true; } function transferFrom( address from, address to, uint256 amount ) public virtual override returns (bool) { address spender = _msgSender(); _spendAllowance(from, spender, amount); _transfer(from, to, amount); return true; } function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) { address owner = _msgSender(); _approve(owner, spender, _allowances[owner][spender] + addedValue); return true; } function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) { address owner = _msgSender(); uint256 currentAllowance = _allowances[owner][spender]; require( currentAllowance >= subtractedValue, "ERC20: decreased allowance below zero" ); unchecked { _approve(owner, spender, currentAllowance - subtractedValue); } return true; } function _transfer( address from, address to, uint256 amount ) internal virtual { require(from != address(0), "ERC20: transfer from the zero address"); require(to != address(0), "ERC20: transfer to the zero address"); _beforeTokenTransfer(from, to, amount); uint256 fromBalance = _balances[from]; require( fromBalance >= amount, "ERC20: transfer amount exceeds balance" ); unchecked { _balances[from] = fromBalance - amount; } _balances[to] += amount; emit Transfer(from, to, amount); _afterTokenTransfer(from, to, 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 _spendAllowance( address owner, address spender, uint256 amount ) internal virtual { uint256 currentAllowance = allowance(owner, spender); if (currentAllowance != type(uint256).max) { require( currentAllowance >= amount, "ERC20: insufficient allowance" ); unchecked { _approve(owner, spender, currentAllowance - 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; } } } library Counters { struct Counter { uint256 _value; } function current(Counter storage counter) internal view returns (uint256) { return counter._value; } function increment(Counter storage counter) internal { unchecked { counter._value += 1; } } function decrement(Counter storage counter) internal { uint256 value = counter._value; require(value > 0, "Counter: decrement overflow"); unchecked { counter._value = value - 1; } } function reset(Counter storage counter) internal { counter._value = 0; } } contract Ownable { address private _owner; address private _previousOwner; event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); constructor() { _owner = msg.sender; emit OwnershipTransferred(address(0), _owner); } function owner() public view returns (address) { return _owner; } modifier onlyOwner() { require(_owner == msg.sender, "Ownable: caller is not the owner"); _; } function renounceOwnership() public virtual onlyOwner { emit OwnershipTransferred(_owner, address(0)); _owner = address(0); } function transferOwnership(address newOwner) public virtual onlyOwner { require(newOwner != address(0), "Ownable: new owner is the zero address"); emit OwnershipTransferred(_owner, newOwner); _owner = newOwner; } } interface IUniswapV2Factory { function getPair(address tokenA, address tokenB) external view returns (address pair); function allPairs(uint) external view returns (address pair); function allPairsLength() external view returns (uint); function createPair(address tokenA, address tokenB) external returns (address pair); } interface IUniswapV2Pair { event Approval(address indexed owner, address indexed spender, uint value); event Transfer(address indexed from, address indexed to, uint value); function name() external pure returns (string memory); function symbol() external pure returns (string memory); function decimals() external pure returns (uint8); function totalSupply() external view returns (uint); function balanceOf(address owner) external view returns (uint); function allowance(address owner, address spender) external view returns (uint); function approve(address spender, uint value) external returns (bool); function transfer(address to, uint value) external returns (bool); function transferFrom(address from, address to, uint value) external returns (bool); function DOMAIN_SEPARATOR() external view returns (bytes32); function PERMIT_TYPEHASH() external pure returns (bytes32); function nonces(address owner) external view returns (uint); function permit(address owner, address spender, uint value, uint deadline, uint8 v, bytes32 r, bytes32 s) external; event Mint(address indexed sender, uint amount0, uint amount1); event Burn(address indexed sender, uint amount0, uint amount1, address indexed to); event Swap( address indexed sender, uint amount0In, uint amount1In, uint amount0Out, uint amount1Out, address indexed to ); event Sync(uint112 reserve0, uint112 reserve1); function MINIMUM_LIQUIDITY() external pure returns (uint); function factory() external view returns (address); function token0() external view returns (address); function token1() external view returns (address); function getReserves() external view returns (uint112 reserve0, uint112 reserve1, uint32 blockTimestampLast); function price0CumulativeLast() external view returns (uint); function price1CumulativeLast() external view returns (uint); function kLast() external view returns (uint); function mint(address to) external returns (uint liquidity); function burn(address to) external returns (uint amount0, uint amount1); function swap(uint amount0Out, uint amount1Out, address to, bytes calldata data) external; function skim(address to) external; function sync() external; function initialize(address, address) external; } interface IUniswapV2Router02 { function swapExactTokensForETHSupportingFeeOnTransferTokens( 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 factory() external pure returns (address); function WETH() external pure returns (address); function addLiquidityETH( address token, uint256 amountTokenDesired, uint256 amountTokenMin, uint256 amountETHMin, address to, uint256 deadline ) external payable returns (uint256 amountToken, uint256 amountETH, uint256 liquidity); function removeLiquidityETH( address token, uint liquidity, uint amountTokenMin, uint amountETHMin, address to, uint deadline ) external returns (uint amountToken, uint amountETH); } library SignedSafeMath { function mul(int256 a, int256 b) internal pure returns (int256) { return a * b; } function div(int256 a, int256 b) internal pure returns (int256) { return a / b; } function sub(int256 a, int256 b) internal pure returns (int256) { return a - b; } function add(int256 a, int256 b) internal pure returns (int256) { return a + b; } } library SafeCast { function toUint224(uint256 value) internal pure returns (uint224) { require( value <= type(uint224).max, "SafeCast: value doesn't fit in 224 bits" ); return uint224(value); } function toUint128(uint256 value) internal pure returns (uint128) { require( value <= type(uint128).max, "SafeCast: value doesn't fit in 128 bits" ); return uint128(value); } function toUint96(uint256 value) internal pure returns (uint96) { require( value <= type(uint96).max, "SafeCast: value doesn't fit in 96 bits" ); return uint96(value); } function toUint64(uint256 value) internal pure returns (uint64) { require( value <= type(uint64).max, "SafeCast: value doesn't fit in 64 bits" ); return uint64(value); } function toUint32(uint256 value) internal pure returns (uint32) { require( value <= type(uint32).max, "SafeCast: value doesn't fit in 32 bits" ); return uint32(value); } function toUint16(uint256 value) internal pure returns (uint16) { require( value <= type(uint16).max, "SafeCast: value doesn't fit in 16 bits" ); return uint16(value); } function toUint8(uint256 value) internal pure returns (uint8) { require( value <= type(uint8).max, "SafeCast: value doesn't fit in 8 bits" ); return uint8(value); } function toUint256(int256 value) internal pure returns (uint256) { require(value >= 0, "SafeCast: value must be positive"); return uint256(value); } function toInt128(int256 value) internal pure returns (int128) { require( value >= type(int128).min && value <= type(int128).max, "SafeCast: value doesn't fit in 128 bits" ); return int128(value); } function toInt64(int256 value) internal pure returns (int64) { require( value >= type(int64).min && value <= type(int64).max, "SafeCast: value doesn't fit in 64 bits" ); return int64(value); } function toInt32(int256 value) internal pure returns (int32) { require( value >= type(int32).min && value <= type(int32).max, "SafeCast: value doesn't fit in 32 bits" ); return int32(value); } function toInt16(int256 value) internal pure returns (int16) { require( value >= type(int16).min && value <= type(int16).max, "SafeCast: value doesn't fit in 16 bits" ); return int16(value); } function toInt8(int256 value) internal pure returns (int8) { require( value >= type(int8).min && value <= type(int8).max, "SafeCast: value doesn't fit in 8 bits" ); return int8(value); } function toInt256(uint256 value) internal pure returns (int256) { require( value <= uint256(type(int256).max), "SafeCast: value doesn't fit in an int256" ); return int256(value); } } contract ALPHA is ERC20, Ownable { using SafeMath for uint256; using Counters for Counters.Counter; string private constant _name = "BUILD ALPHA"; string private constant _symbol = "ALPHA"; uint8 private constant _decimals = 18; uint256 private constant _tTotal = 1e12 * 10**18; IUniswapV2Router02 private uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D); bool private tradingOpen = false; uint256 private launchBlock = 0; address private uniswapV2Pair; mapping(address => bool) private automatedMarketMakerPairs; mapping(address => bool) public isExcludeFromFee; mapping(address => bool) public isBot; mapping(address => bool) public isExcludeFromMaxWalletAmount; uint256 public maxWalletAmount; uint256 public baseBuyTax = 5; uint256 public baseSellTax = 5; uint256 private autoLP = 20; uint256 private dev1Fee = 35; uint256 private dev2Fee = 20; uint256 private marketingFee = 25; uint256 public minContractTokensToSwap = 1e9 * 10**18; mapping(address => uint256) public initialBuyTimestamp; address private dev1WalletAddress; address private dev2WalletAddress; address private marketingWalletAddress; event BuyFees(address from, address to, uint256 amountTokens); event SellFees(address from, address to, uint256 amountTokens); event AddLiquidity(uint256 amountTokens, uint256 amountEth); event SwapTokensForEth(uint256 sentTokens, uint256 receivedEth); event SwapEthForTokens(uint256 sentEth, uint256 receivedTokens); event DistributeFees(uint256 dev1Eth, uint256 dev2Eth, uint256 remarketingEth); constructor( address _dev1WalletAddress, address _dev2WalletAddress, address _marketingWalletAddress ) ERC20(_name, _symbol) { dev1WalletAddress = _dev1WalletAddress; dev2WalletAddress = _dev2WalletAddress; marketingWalletAddress = _marketingWalletAddress; maxWalletAmount = (_tTotal * 5) / 10000; // 0.05% maxWalletAmount (initial limit) isExcludeFromFee[owner()] = true; isExcludeFromFee[address(this)] = true; isExcludeFromFee[dev1WalletAddress] = true; isExcludeFromFee[dev2WalletAddress] = true; isExcludeFromFee[marketingWalletAddress] = true; isExcludeFromMaxWalletAmount[owner()] = true; isExcludeFromMaxWalletAmount[address(this)] = true; isExcludeFromMaxWalletAmount[address(uniswapV2Router)] = true; isExcludeFromMaxWalletAmount[dev1WalletAddress] = true; isExcludeFromMaxWalletAmount[dev2WalletAddress] = true; isExcludeFromMaxWalletAmount[marketingWalletAddress] = true; _mint(owner(), _tTotal); } /** * @dev Function to recover any ETH sent to Contract by Mistake. */ function withdrawStuckETH() external onlyOwner { bool success; (success, ) = address(msg.sender).call{ value: address(this).balance }( "" ); } /** * @dev Function to recover any ERC20 Tokens sent to Contract by Mistake. */ function recoverAnyERC20TokensFromContract(address _tokenAddr, address _to, uint _amount) public onlyOwner { IERC20(_tokenAddr).transfer(_to, _amount); } function openTrading() external onlyOwner { require(!tradingOpen, "ALPHA: Trading is already open"); uint256 _launchTime; uniswapV2Pair = IUniswapV2Factory(uniswapV2Router.factory()).createPair( address(this), uniswapV2Router.WETH() ); isExcludeFromMaxWalletAmount[address(uniswapV2Pair)] = true; automatedMarketMakerPairs[uniswapV2Pair] = true; addLiquidity(balanceOf(address(this)), address(this).balance); IERC20(uniswapV2Pair).approve( address(uniswapV2Router), type(uint256).max ); tradingOpen = true; _launchTime = block.timestamp; launchBlock = block.number; } function manualSwap() external onlyOwner { uint256 totalTokens = balanceOf(address(this)); swapTokensForEth(totalTokens); } function manualSend() external onlyOwner { uint256 totalEth = address(this).balance; uint256 dev1FeesToSend = totalEth.mul(dev1Fee).div( uint256(100).sub(autoLP) ); uint256 dev2FeesToSend = totalEth.mul(dev2Fee).div( uint256(100).sub(autoLP) ); uint256 marketingFeesToSend = totalEth.mul(marketingFee).div( uint256(100).sub(autoLP) ); uint256 remainingEthForFees = totalEth.sub(dev1FeesToSend).sub(dev2FeesToSend).sub(marketingFeesToSend); dev1FeesToSend = dev1FeesToSend.add(remainingEthForFees); sendEthToWallets(dev1FeesToSend, dev2FeesToSend, marketingFeesToSend); } function decimals() public view virtual override returns (uint8) { return _decimals; } function _transfer( address _from, address _to, uint256 _amount ) internal virtual override { require(!isBot[_from] && !isBot[_to]); uint256 transferAmount = _amount; if ( tradingOpen && (automatedMarketMakerPairs[_from] || automatedMarketMakerPairs[_to]) && !isExcludeFromFee[_from] && !isExcludeFromFee[_to] ) { transferAmount = takeFees(_from, _to, _amount); } if (!automatedMarketMakerPairs[_to] && !isExcludeFromMaxWalletAmount[_to]) { require(balanceOf(_to) + transferAmount <= maxWalletAmount, "ALPHA: Wallet balance limit reached" ); } super._transfer(_from, _to, transferAmount); } function _setAutomatedMarketMakerPair(address _pair, bool _value) private { require( automatedMarketMakerPairs[_pair] != _value, "ALPHA: Automated market maker pair is already set to that value" ); automatedMarketMakerPairs[_pair] = _value; } function _setLiquidityPair(address _pair, bool _value) external onlyOwner { require( automatedMarketMakerPairs[_pair] != _value, "ALPHA: Automated market maker pair is already set to that value" ); automatedMarketMakerPairs[_pair] = _value; } function setExcludeFromFee(address _address, bool _isExludeFromFee) external onlyOwner { isExcludeFromFee[_address] = _isExludeFromFee; } function setExcludeFromMaxWalletAmount(address _address, bool _isExludeFromMaxWalletAmount) external onlyOwner { isExcludeFromMaxWalletAmount[_address] = _isExludeFromMaxWalletAmount; } function setMaxWallet(uint256 newMaxWallet) external onlyOwner { require(newMaxWallet >= (totalSupply() * 1 / 1000)/1e18, "Cannot set maxWallet lower than 0.1%"); maxWalletAmount = newMaxWallet * (10**_decimals); } function setTaxes( uint256 _baseBuyTax, uint256 _baseSellTax, uint256 _autoLP, uint256 _dev1Fee, uint256 _dev2Fee, uint256 _marketingFee ) external onlyOwner { require(_baseBuyTax <= 10 && _baseSellTax <= 10); baseBuyTax = _baseBuyTax; baseSellTax = _baseSellTax; autoLP = _autoLP; dev1Fee = _dev1Fee; dev2Fee = _dev2Fee; marketingFee = _marketingFee; } function setMinContractTokensToSwap(uint256 _numToken) public onlyOwner { minContractTokensToSwap = _numToken * (10**_decimals); } function setBots(address[] calldata _bots) public onlyOwner { for (uint256 i = 0; i < _bots.length; i++) { if ( _bots[i] != uniswapV2Pair && _bots[i] != address(uniswapV2Router) ) { isBot[_bots[i]] = true; } } } function setWalletAddress(address _dev1WalletAddress, address _dev2WalletAddress, address _marketingWalletAddress) external onlyOwner { dev1WalletAddress = _dev1WalletAddress; dev2WalletAddress = _dev2WalletAddress; marketingWalletAddress = _marketingWalletAddress; } function takeFees( address _from, address _to, uint256 _amount ) private returns (uint256) { uint256 fees; uint256 remainingAmount; require( automatedMarketMakerPairs[_from] || automatedMarketMakerPairs[_to], "ALPHA: No market makers found" ); if (automatedMarketMakerPairs[_from]) { uint256 totalBuyTax; totalBuyTax = baseBuyTax; fees = _amount.mul(totalBuyTax).div(100); remainingAmount = _amount.sub(fees); super._transfer(_from, address(this), fees); emit BuyFees(_from, address(this), fees); } else { uint256 totalSellTax; totalSellTax = baseSellTax; fees = _amount.mul(totalSellTax).div(100); remainingAmount = _amount.sub(fees); super._transfer(_from, address(this), fees); uint256 tokensToSwap = balanceOf(address(this)); if (tokensToSwap > minContractTokensToSwap) { distributeTokensEth(tokensToSwap); } emit SellFees(_from, address(this), fees); } return remainingAmount; } function distributeTokensEth(uint256 _tokenAmount) private { uint256 tokensForLiquidity = _tokenAmount.mul(autoLP).div(100); uint256 halfLiquidity = tokensForLiquidity.div(2); uint256 tokensForSwap = _tokenAmount.sub(halfLiquidity); uint256 totalEth = swapTokensForEth(tokensForSwap); uint256 ethForAddLP = totalEth.mul(autoLP).div(100); uint256 dev1FeesToSend = totalEth.mul(dev1Fee).div(100); uint256 dev2FeesToSend = totalEth.mul(dev2Fee).div(100); uint256 marketingFeesToSend = totalEth.mul(marketingFee).div(100); uint256 remainingEthForFees = totalEth .sub(ethForAddLP) .sub(dev1FeesToSend) .sub(dev2FeesToSend) .sub(marketingFeesToSend); dev1FeesToSend = dev1FeesToSend.add(remainingEthForFees); sendEthToWallets(dev1FeesToSend, dev2FeesToSend, marketingFeesToSend); if (halfLiquidity > 0 && ethForAddLP > 0) { addLiquidity(halfLiquidity, ethForAddLP); } } function sendEthToWallets(uint256 _dev1Fees, uint256 _dev2Fees, uint256 _marketingFees) private { if (_dev1Fees > 0) { payable(dev1WalletAddress).transfer(_dev1Fees); } if (_dev2Fees > 0) { payable(dev2WalletAddress).transfer(_dev2Fees); } if (_marketingFees > 0) { payable(marketingWalletAddress).transfer(_marketingFees); } emit DistributeFees(_dev1Fees, _dev2Fees, _marketingFees); } function swapTokensForEth(uint256 _tokenAmount) private returns (uint256) { uint256 initialEthBalance = address(this).balance; address[] memory path = new address[](2); path[0] = address(this); path[1] = uniswapV2Router.WETH(); _approve(address(this), address(uniswapV2Router), _tokenAmount); uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens( _tokenAmount, 0, path, address(this), block.timestamp ); uint256 receivedEth = address(this).balance.sub(initialEthBalance); emit SwapTokensForEth(_tokenAmount, receivedEth); return receivedEth; } function swapEthForTokens(uint256 _ethAmount, address _to) private returns (uint256) { uint256 initialTokenBalance = balanceOf(address(this)); address[] memory path = new address[](2); path[0] = uniswapV2Router.WETH(); path[1] = address(this); uniswapV2Router.swapExactETHForTokensSupportingFeeOnTransferTokens{ value: _ethAmount }(0, path, _to, block.timestamp); uint256 receivedTokens = balanceOf(address(this)).sub( initialTokenBalance ); emit SwapEthForTokens(_ethAmount, receivedTokens); return receivedTokens; } function addLiquidity(uint256 _tokenAmount, uint256 _ethAmount) private { _approve(address(this), address(uniswapV2Router), _tokenAmount); uniswapV2Router.addLiquidityETH{value: _ethAmount}( address(this), _tokenAmount, 0, 0, owner(), block.timestamp ); emit AddLiquidity(_tokenAmount, _ethAmount); } function availableContractTokenBalance() public view returns (uint256) { return balanceOf(address(this)); } receive() external payable {} }
{ "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":[{"internalType":"address","name":"_dev1WalletAddress","type":"address"},{"internalType":"address","name":"_dev2WalletAddress","type":"address"},{"internalType":"address","name":"_marketingWalletAddress","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"amountTokens","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amountEth","type":"uint256"}],"name":"AddLiquidity","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"from","type":"address"},{"indexed":false,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"amountTokens","type":"uint256"}],"name":"BuyFees","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"dev1Eth","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"dev2Eth","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"remarketingEth","type":"uint256"}],"name":"DistributeFees","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"from","type":"address"},{"indexed":false,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"amountTokens","type":"uint256"}],"name":"SellFees","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"sentEth","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"receivedTokens","type":"uint256"}],"name":"SwapEthForTokens","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"sentTokens","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"receivedEth","type":"uint256"}],"name":"SwapTokensForEth","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"_pair","type":"address"},{"internalType":"bool","name":"_value","type":"bool"}],"name":"_setLiquidityPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"availableContractTokenBalance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"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":"baseBuyTax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"baseSellTax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"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":"","type":"address"}],"name":"initialBuyTimestamp","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isBot","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isExcludeFromFee","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isExcludeFromMaxWalletAmount","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"manualSend","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"manualSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"maxWalletAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"minContractTokensToSwap","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":"openTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_tokenAddr","type":"address"},{"internalType":"address","name":"_to","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"recoverAnyERC20TokensFromContract","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"_bots","type":"address[]"}],"name":"setBots","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"},{"internalType":"bool","name":"_isExludeFromFee","type":"bool"}],"name":"setExcludeFromFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"},{"internalType":"bool","name":"_isExludeFromMaxWalletAmount","type":"bool"}],"name":"setExcludeFromMaxWalletAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newMaxWallet","type":"uint256"}],"name":"setMaxWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_numToken","type":"uint256"}],"name":"setMinContractTokensToSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_baseBuyTax","type":"uint256"},{"internalType":"uint256","name":"_baseSellTax","type":"uint256"},{"internalType":"uint256","name":"_autoLP","type":"uint256"},{"internalType":"uint256","name":"_dev1Fee","type":"uint256"},{"internalType":"uint256","name":"_dev2Fee","type":"uint256"},{"internalType":"uint256","name":"_marketingFee","type":"uint256"}],"name":"setTaxes","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_dev1WalletAddress","type":"address"},{"internalType":"address","name":"_dev2WalletAddress","type":"address"},{"internalType":"address","name":"_marketingWalletAddress","type":"address"}],"name":"setWalletAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","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":"withdrawStuckETH","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
6080604052737a250d5630b4cf539739df2c5dacb4c659f2488d600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600760146101000a81548160ff02191690831515021790555060006008556005600f55600560105560146011556023601255601460135560196014556b033b2e3c9fd0803ce8000000601555348015620000b457600080fd5b50604051620059b7380380620059b78339818101604052810190620000da919062000a3f565b6040518060400160405280600b81526020017f4255494c4420414c5048410000000000000000000000000000000000000000008152506040518060400160405280600581526020017f414c504841000000000000000000000000000000000000000000000000000000815250816003908162000157919062000d15565b50806004908162000169919062000d15565b50505033600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a382601760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555081601860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080601960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555061271060056c0c9f2c9cd04674edea400000006200030c919062000e2b565b62000318919062000ebb565b600e819055506001600b6000620003346200082960201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600b60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600b6000601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600b6000601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600b6000601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600d6000620005616200082960201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600d60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600d6000600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600d6000601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600d6000601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600d6000601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555062000820620008066200082960201b60201c565b6c0c9f2c9cd04674edea400000006200085360201b60201c565b50505062000fdf565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603620008c5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620008bc9062000f54565b60405180910390fd5b620008d960008383620009cb60201b60201c565b8060026000828254620008ed919062000f76565b92505081905550806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825462000944919062000f76565b925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051620009ab919062000fc2565b60405180910390a3620009c760008383620009d060201b60201c565b5050565b505050565b505050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600062000a0782620009da565b9050919050565b62000a1981620009fa565b811462000a2557600080fd5b50565b60008151905062000a398162000a0e565b92915050565b60008060006060848603121562000a5b5762000a5a620009d5565b5b600062000a6b8682870162000a28565b935050602062000a7e8682870162000a28565b925050604062000a918682870162000a28565b9150509250925092565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168062000b1d57607f821691505b60208210810362000b335762000b3262000ad5565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b60006008830262000b9d7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8262000b5e565b62000ba9868362000b5e565b95508019841693508086168417925050509392505050565b6000819050919050565b6000819050919050565b600062000bf662000bf062000bea8462000bc1565b62000bcb565b62000bc1565b9050919050565b6000819050919050565b62000c128362000bd5565b62000c2a62000c218262000bfd565b84845462000b6b565b825550505050565b600090565b62000c4162000c32565b62000c4e81848462000c07565b505050565b5b8181101562000c765762000c6a60008262000c37565b60018101905062000c54565b5050565b601f82111562000cc55762000c8f8162000b39565b62000c9a8462000b4e565b8101602085101562000caa578190505b62000cc262000cb98562000b4e565b83018262000c53565b50505b505050565b600082821c905092915050565b600062000cea6000198460080262000cca565b1980831691505092915050565b600062000d05838362000cd7565b9150826002028217905092915050565b62000d208262000a9b565b67ffffffffffffffff81111562000d3c5762000d3b62000aa6565b5b62000d48825462000b04565b62000d5582828562000c7a565b600060209050601f83116001811462000d8d576000841562000d78578287015190505b62000d84858262000cf7565b86555062000df4565b601f19841662000d9d8662000b39565b60005b8281101562000dc75784890151825560018201915060208501945060208101905062000da0565b8683101562000de7578489015162000de3601f89168262000cd7565b8355505b6001600288020188555050505b505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600062000e388262000bc1565b915062000e458362000bc1565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161562000e815762000e8062000dfc565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600062000ec88262000bc1565b915062000ed58362000bc1565b92508262000ee85762000ee762000e8c565b5b828204905092915050565b600082825260208201905092915050565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b600062000f3c601f8362000ef3565b915062000f498262000f04565b602082019050919050565b6000602082019050818103600083015262000f6f8162000f2d565b9050919050565b600062000f838262000bc1565b915062000f908362000bc1565b925082820190508082111562000fab5762000faa62000dfc565b5b92915050565b62000fbc8162000bc1565b82525050565b600060208201905062000fd9600083018462000fb1565b92915050565b6149c88062000fef6000396000f3fe6080604052600436106102135760003560e01c80638e5916b211610118578063ba762ddd116100a0578063dd62ed3e1161006f578063dd62ed3e146107bc578063ea084eef146107f9578063f2fde38b14610822578063f42938901461084b578063f5648a4f146108625761021a565b8063ba762ddd14610712578063c2b1b1991461073d578063c9567bf914610768578063c9e8714c1461077f5761021a565b8063a457c2d7116100e7578063a457c2d71461061b578063a9059cbb14610658578063aa4bde2814610695578063af9549e0146106c0578063b515566a146106e95761021a565b80638e5916b21461054d578063906778331461058a57806395d89b41146105c757806397c44ed9146105f25761021a565b80633bbac5791161019b57806370a082311161016a57806370a082311461047a578063715018a6146104b757806389a5c691146104ce5780638c8f8c04146104f95780638da5cb5b146105225761021a565b80633bbac579146103d257806351bc3c851461040f5780635b683e66146104265780635d0044ca146104515761021a565b806312dfbd33116101e257806312dfbd33146102d957806318160ddd1461030257806323b872dd1461032d578063313ce5671461036a57806339509351146103955761021a565b806304d4c9901461021f578063062e1c4a1461024857806306fdde0314610271578063095ea7b31461029c5761021a565b3661021a57005b600080fd5b34801561022b57600080fd5b5061024660048036038101906102419190613584565b610879565b005b34801561025457600080fd5b5061026f600480360381019061026a91906136a7565b610956565b005b34801561027d57600080fd5b50610286610ad3565b6040516102939190613777565b60405180910390f35b3480156102a857600080fd5b506102c360048036038101906102be9190613799565b610b65565b6040516102d091906137e8565b60405180910390f35b3480156102e557600080fd5b5061030060048036038101906102fb9190613803565b610b88565b005b34801561030e57600080fd5b50610317610c3a565b604051610324919061383f565b60405180910390f35b34801561033957600080fd5b50610354600480360381019061034f919061385a565b610c44565b60405161036191906137e8565b60405180910390f35b34801561037657600080fd5b5061037f610c73565b60405161038c91906138c9565b60405180910390f35b3480156103a157600080fd5b506103bc60048036038101906103b79190613799565b610c7c565b6040516103c991906137e8565b60405180910390f35b3480156103de57600080fd5b506103f960048036038101906103f491906138e4565b610d26565b60405161040691906137e8565b60405180910390f35b34801561041b57600080fd5b50610424610d46565b005b34801561043257600080fd5b5061043b610df0565b604051610448919061383f565b60405180910390f35b34801561045d57600080fd5b5061047860048036038101906104739190613803565b610df6565b005b34801561048657600080fd5b506104a1600480360381019061049c91906138e4565b610f1e565b6040516104ae919061383f565b60405180910390f35b3480156104c357600080fd5b506104cc610f66565b005b3480156104da57600080fd5b506104e36110b7565b6040516104f0919061383f565b60405180910390f35b34801561050557600080fd5b50610520600480360381019061051b919061385a565b6110bd565b005b34801561052e57600080fd5b506105376111d1565b6040516105449190613920565b60405180910390f35b34801561055957600080fd5b50610574600480360381019061056f91906138e4565b6111fb565b60405161058191906137e8565b60405180910390f35b34801561059657600080fd5b506105b160048036038101906105ac91906138e4565b61121b565b6040516105be919061383f565b60405180910390f35b3480156105d357600080fd5b506105dc611233565b6040516105e99190613777565b60405180910390f35b3480156105fe57600080fd5b506106196004803603810190610614919061393b565b6112c5565b005b34801561062757600080fd5b50610642600480360381019061063d9190613799565b61141d565b60405161064f91906137e8565b60405180910390f35b34801561066457600080fd5b5061067f600480360381019061067a9190613799565b611507565b60405161068c91906137e8565b60405180910390f35b3480156106a157600080fd5b506106aa61152a565b6040516106b7919061383f565b60405180910390f35b3480156106cc57600080fd5b506106e760048036038101906106e291906136a7565b611530565b005b3480156106f557600080fd5b50610710600480360381019061070b91906139f3565b61161b565b005b34801561071e57600080fd5b50610727611850565b604051610734919061383f565b60405180910390f35b34801561074957600080fd5b50610752611860565b60405161075f919061383f565b60405180910390f35b34801561077457600080fd5b5061077d611866565b005b34801561078b57600080fd5b506107a660048036038101906107a191906138e4565b611d37565b6040516107b391906137e8565b60405180910390f35b3480156107c857600080fd5b506107e360048036038101906107de9190613a40565b611d57565b6040516107f0919061383f565b60405180910390f35b34801561080557600080fd5b50610820600480360381019061081b91906136a7565b611dde565b005b34801561082e57600080fd5b50610849600480360381019061084491906138e4565b611ec9565b005b34801561085757600080fd5b50610860612088565b005b34801561086e57600080fd5b5061087761223f565b005b3373ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610909576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161090090613acc565b60405180910390fd5b600a861115801561091b5750600a8511155b61092457600080fd5b85600f819055508460108190555083601181905550826012819055508160138190555080601481905550505050505050565b3373ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146109e6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109dd90613acc565b60405180910390fd5b801515600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151503610a78576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a6f90613b5e565b60405180910390fd5b80600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b606060038054610ae290613bad565b80601f0160208091040260200160405190810160405280929190818152602001828054610b0e90613bad565b8015610b5b5780601f10610b3057610100808354040283529160200191610b5b565b820191906000526020600020905b815481529060010190602001808311610b3e57829003601f168201915b5050505050905090565b600080610b70612340565b9050610b7d818585612348565b600191505092915050565b3373ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610c18576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c0f90613acc565b60405180910390fd5b6012600a610c269190613d40565b81610c319190613d8b565b60158190555050565b6000600254905090565b600080610c4f612340565b9050610c5c858285612511565b610c6785858561259d565b60019150509392505050565b60006012905090565b600080610c87612340565b9050610d1b818585600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610d169190613de5565b612348565b600191505092915050565b600c6020528060005260406000206000915054906101000a900460ff1681565b3373ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610dd6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dcd90613acc565b60405180910390fd5b6000610de130610f1e565b9050610dec816128da565b5050565b60105481565b3373ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610e86576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e7d90613acc565b60405180910390fd5b670de0b6b3a76400006103e86001610e9c610c3a565b610ea69190613d8b565b610eb09190613e48565b610eba9190613e48565b811015610efc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ef390613eeb565b60405180910390fd5b6012600a610f0a9190613d40565b81610f159190613d8b565b600e8190555050565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b3373ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610ff6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fed90613acc565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a36000600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b60155481565b3373ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461114d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161114490613acc565b60405180910390fd5b8273ffffffffffffffffffffffffffffffffffffffff1663a9059cbb83836040518363ffffffff1660e01b8152600401611188929190613f0b565b6020604051808303816000875af11580156111a7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111cb9190613f49565b50505050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600b6020528060005260406000206000915054906101000a900460ff1681565b60166020528060005260406000206000915090505481565b60606004805461124290613bad565b80601f016020809104026020016040519081016040528092919081815260200182805461126e90613bad565b80156112bb5780601f10611290576101008083540402835291602001916112bb565b820191906000526020600020905b81548152906001019060200180831161129e57829003601f168201915b5050505050905090565b3373ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611355576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161134c90613acc565b60405180910390fd5b82601760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555081601860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080601960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550505050565b600080611428612340565b90506000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050838110156114ee576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114e590613fe8565b60405180910390fd5b6114fb8286868403612348565b60019250505092915050565b600080611512612340565b905061151f81858561259d565b600191505092915050565b600e5481565b3373ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146115c0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115b790613acc565b60405180910390fd5b80600b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b3373ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146116ab576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116a290613acc565b60405180910390fd5b60005b8282905081101561184b57600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1683838381811061170557611704614008565b5b905060200201602081019061171a91906138e4565b73ffffffffffffffffffffffffffffffffffffffff16141580156117b35750600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1683838381811061178557611784614008565b5b905060200201602081019061179a91906138e4565b73ffffffffffffffffffffffffffffffffffffffff1614155b15611838576001600c60008585858181106117d1576117d0614008565b5b90506020020160208101906117e691906138e4565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505b808061184390614037565b9150506116ae565b505050565b600061185b30610f1e565b905090565b600f5481565b3373ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146118f6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118ed90613acc565b60405180910390fd5b600760149054906101000a900460ff1615611946576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161193d906140cb565b60405180910390fd5b6000600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156119b5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119d99190614100565b73ffffffffffffffffffffffffffffffffffffffff1663c9c6539630600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611a62573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a869190614100565b6040518363ffffffff1660e01b8152600401611aa392919061412d565b6020604051808303816000875af1158015611ac2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ae69190614100565b600960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600d6000600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600a6000600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550611c2c611c2630610f1e565b47612b7a565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b3600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b8152600401611ccb929190613f0b565b6020604051808303816000875af1158015611cea573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d0e9190613f49565b506001600760146101000a81548160ff0219169083151502179055504290504360088190555050565b600d6020528060005260406000206000915054906101000a900460ff1681565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b3373ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611e6e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e6590613acc565b60405180910390fd5b80600d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b3373ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611f59576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f5090613acc565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611fc8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fbf906141c8565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a380600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b3373ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612118576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161210f90613acc565b60405180910390fd5b6000479050600061215b6121386011546064612c9890919063ffffffff16565b61214d60125485612cae90919063ffffffff16565b612cc490919063ffffffff16565b9050600061219b6121786011546064612c9890919063ffffffff16565b61218d60135486612cae90919063ffffffff16565b612cc490919063ffffffff16565b905060006121db6121b86011546064612c9890919063ffffffff16565b6121cd60145487612cae90919063ffffffff16565b612cc490919063ffffffff16565b9050600061221682612208856121fa888a612c9890919063ffffffff16565b612c9890919063ffffffff16565b612c9890919063ffffffff16565b905061222b8185612cda90919063ffffffff16565b9350612238848484612cf0565b5050505050565b3373ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146122cf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122c690613acc565b60405180910390fd5b60003373ffffffffffffffffffffffffffffffffffffffff16476040516122f590614219565b60006040518083038185875af1925050503d8060008114612332576040519150601f19603f3d011682016040523d82523d6000602084013e612337565b606091505b50508091505050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036123b7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123ae906142a0565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612426576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161241d90614332565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051612504919061383f565b60405180910390a3505050565b600061251d8484611d57565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146125975781811015612589576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125809061439e565b60405180910390fd5b6125968484848403612348565b5b50505050565b600c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156126415750600c60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b61264a57600080fd5b6000819050600760149054906101000a900460ff1680156127085750600a60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806127075750600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b5b801561275e5750600b60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156127b45750600b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156127c7576127c4848484612e89565b90505b600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615801561286b5750600d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156128c957600e548161287d85610f1e565b6128879190613de5565b11156128c8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128bf90614430565b60405180910390fd5b5b6128d484848361310a565b50505050565b6000804790506000600267ffffffffffffffff8111156128fd576128fc614450565b5b60405190808252806020026020018201604052801561292b5781602001602082028036833780820191505090505b509050308160008151811061294357612942614008565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156129ea573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612a0e9190614100565b81600181518110612a2257612a21614008565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050612a8930600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1686612348565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478560008430426040518663ffffffff1660e01b8152600401612aed959493929190614582565b600060405180830381600087803b158015612b0757600080fd5b505af1158015612b1b573d6000803e3d6000fd5b505050506000612b348347612c9890919063ffffffff16565b90507f4a6c12eb4e479a4ea28c8acad8efde466ef9bf69cf473501dd768652344962738582604051612b679291906145dc565b60405180910390a1809350505050919050565b612ba730600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684612348565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d719823085600080612bf36111d1565b426040518863ffffffff1660e01b8152600401612c1596959493929190614605565b60606040518083038185885af1158015612c33573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190612c58919061467b565b5050507fcb1652de9aeec38545fc281847b3dbfc89aab56dfa907b1ab68466f602c36fb48282604051612c8c9291906145dc565b60405180910390a15050565b60008183612ca691906146ce565b905092915050565b60008183612cbc9190613d8b565b905092915050565b60008183612cd29190613e48565b905092915050565b60008183612ce89190613de5565b905092915050565b6000831115612d6357601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc849081150290604051600060405180830381858888f19350505050158015612d61573d6000803e3d6000fd5b505b6000821115612dd657601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc839081150290604051600060405180830381858888f19350505050158015612dd4573d6000803e3d6000fd5b505b6000811115612e4957601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015612e47573d6000803e3d6000fd5b505b7f125472b1b527506b5b8381590760f796fd9c88ba5886399d71abc083c6dafa20838383604051612e7c93929190614702565b60405180910390a1505050565b6000806000600a60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680612f2f5750600a60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b612f6e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612f6590614785565b60405180910390fd5b600a60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615613050576000600f549050612fed6064612fdf8388612cae90919063ffffffff16565b612cc490919063ffffffff16565b92506130028386612c9890919063ffffffff16565b915061300f87308561310a565b7f6b0b46d0273ce53f1de696d2100b35dd3a405dcecbcbeede66215d858d5c401d873085604051613042939291906147a5565b60405180910390a1506130fe565b6000601054905061307d606461306f8388612cae90919063ffffffff16565b612cc490919063ffffffff16565b92506130928386612c9890919063ffffffff16565b915061309f87308561310a565b60006130aa30610f1e565b90506015548111156130c0576130bf81613389565b5b7f4ab5e0df8ff1605133dbdd1b8e3f52edb9539abe64595f6f70b30d2fea7f204a8830866040516130f3939291906147a5565b60405180910390a150505b80925050509392505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603613179576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016131709061484e565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036131e8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016131df906148e0565b60405180910390fd5b6131f383838361353a565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015613279576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161327090614972565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461330c9190613de5565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051613370919061383f565b60405180910390a361338384848461353f565b50505050565b60006133b360646133a560115485612cae90919063ffffffff16565b612cc490919063ffffffff16565b905060006133cb600283612cc490919063ffffffff16565b905060006133e28285612c9890919063ffffffff16565b905060006133ef826128da565b9050600061341b606461340d60115485612cae90919063ffffffff16565b612cc490919063ffffffff16565b90506000613447606461343960125486612cae90919063ffffffff16565b612cc490919063ffffffff16565b90506000613473606461346560135487612cae90919063ffffffff16565b612cc490919063ffffffff16565b9050600061349f606461349160145488612cae90919063ffffffff16565b612cc490919063ffffffff16565b905060006134ec826134de856134d0886134c28b8d612c9890919063ffffffff16565b612c9890919063ffffffff16565b612c9890919063ffffffff16565b612c9890919063ffffffff16565b90506135018185612cda90919063ffffffff16565b935061350e848484612cf0565b60008811801561351e5750600085115b1561352e5761352d8886612b7a565b5b50505050505050505050565b505050565b505050565b600080fd5b600080fd5b6000819050919050565b6135618161354e565b811461356c57600080fd5b50565b60008135905061357e81613558565b92915050565b60008060008060008060c087890312156135a1576135a0613544565b5b60006135af89828a0161356f565b96505060206135c089828a0161356f565b95505060406135d189828a0161356f565b94505060606135e289828a0161356f565b93505060806135f389828a0161356f565b92505060a061360489828a0161356f565b9150509295509295509295565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061363c82613611565b9050919050565b61364c81613631565b811461365757600080fd5b50565b60008135905061366981613643565b92915050565b60008115159050919050565b6136848161366f565b811461368f57600080fd5b50565b6000813590506136a18161367b565b92915050565b600080604083850312156136be576136bd613544565b5b60006136cc8582860161365a565b92505060206136dd85828601613692565b9150509250929050565b600081519050919050565b600082825260208201905092915050565b60005b83811015613721578082015181840152602081019050613706565b60008484015250505050565b6000601f19601f8301169050919050565b6000613749826136e7565b61375381856136f2565b9350613763818560208601613703565b61376c8161372d565b840191505092915050565b60006020820190508181036000830152613791818461373e565b905092915050565b600080604083850312156137b0576137af613544565b5b60006137be8582860161365a565b92505060206137cf8582860161356f565b9150509250929050565b6137e28161366f565b82525050565b60006020820190506137fd60008301846137d9565b92915050565b60006020828403121561381957613818613544565b5b60006138278482850161356f565b91505092915050565b6138398161354e565b82525050565b60006020820190506138546000830184613830565b92915050565b60008060006060848603121561387357613872613544565b5b60006138818682870161365a565b93505060206138928682870161365a565b92505060406138a38682870161356f565b9150509250925092565b600060ff82169050919050565b6138c3816138ad565b82525050565b60006020820190506138de60008301846138ba565b92915050565b6000602082840312156138fa576138f9613544565b5b60006139088482850161365a565b91505092915050565b61391a81613631565b82525050565b60006020820190506139356000830184613911565b92915050565b60008060006060848603121561395457613953613544565b5b60006139628682870161365a565b93505060206139738682870161365a565b92505060406139848682870161365a565b9150509250925092565b600080fd5b600080fd5b600080fd5b60008083601f8401126139b3576139b261398e565b5b8235905067ffffffffffffffff8111156139d0576139cf613993565b5b6020830191508360208202830111156139ec576139eb613998565b5b9250929050565b60008060208385031215613a0a57613a09613544565b5b600083013567ffffffffffffffff811115613a2857613a27613549565b5b613a348582860161399d565b92509250509250929050565b60008060408385031215613a5757613a56613544565b5b6000613a658582860161365a565b9250506020613a768582860161365a565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000613ab66020836136f2565b9150613ac182613a80565b602082019050919050565b60006020820190508181036000830152613ae581613aa9565b9050919050565b7f414c5048413a204175746f6d61746564206d61726b6574206d616b657220706160008201527f697220697320616c72656164792073657420746f20746861742076616c756500602082015250565b6000613b48603f836136f2565b9150613b5382613aec565b604082019050919050565b60006020820190508181036000830152613b7781613b3b565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680613bc557607f821691505b602082108103613bd857613bd7613b7e565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b6001851115613c6457808604811115613c4057613c3f613bde565b5b6001851615613c4f5780820291505b8081029050613c5d85613c0d565b9450613c24565b94509492505050565b600082613c7d5760019050613d39565b81613c8b5760009050613d39565b8160018114613ca15760028114613cab57613cda565b6001915050613d39565b60ff841115613cbd57613cbc613bde565b5b8360020a915084821115613cd457613cd3613bde565b5b50613d39565b5060208310610133831016604e8410600b8410161715613d0f5782820a905083811115613d0a57613d09613bde565b5b613d39565b613d1c8484846001613c1a565b92509050818404811115613d3357613d32613bde565b5b81810290505b9392505050565b6000613d4b8261354e565b9150613d56836138ad565b9250613d837fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484613c6d565b905092915050565b6000613d968261354e565b9150613da18361354e565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615613dda57613dd9613bde565b5b828202905092915050565b6000613df08261354e565b9150613dfb8361354e565b9250828201905080821115613e1357613e12613bde565b5b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000613e538261354e565b9150613e5e8361354e565b925082613e6e57613e6d613e19565b5b828204905092915050565b7f43616e6e6f7420736574206d617857616c6c6574206c6f776572207468616e2060008201527f302e312500000000000000000000000000000000000000000000000000000000602082015250565b6000613ed56024836136f2565b9150613ee082613e79565b604082019050919050565b60006020820190508181036000830152613f0481613ec8565b9050919050565b6000604082019050613f206000830185613911565b613f2d6020830184613830565b9392505050565b600081519050613f438161367b565b92915050565b600060208284031215613f5f57613f5e613544565b5b6000613f6d84828501613f34565b91505092915050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b6000613fd26025836136f2565b9150613fdd82613f76565b604082019050919050565b6000602082019050818103600083015261400181613fc5565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60006140428261354e565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361407457614073613bde565b5b600182019050919050565b7f414c5048413a2054726164696e6720697320616c7265616479206f70656e0000600082015250565b60006140b5601e836136f2565b91506140c08261407f565b602082019050919050565b600060208201905081810360008301526140e4816140a8565b9050919050565b6000815190506140fa81613643565b92915050565b60006020828403121561411657614115613544565b5b6000614124848285016140eb565b91505092915050565b60006040820190506141426000830185613911565b61414f6020830184613911565b9392505050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b60006141b26026836136f2565b91506141bd82614156565b604082019050919050565b600060208201905081810360008301526141e1816141a5565b9050919050565b600081905092915050565b50565b60006142036000836141e8565b915061420e826141f3565b600082019050919050565b6000614224826141f6565b9150819050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b600061428a6024836136f2565b91506142958261422e565b604082019050919050565b600060208201905081810360008301526142b98161427d565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b600061431c6022836136f2565b9150614327826142c0565b604082019050919050565b6000602082019050818103600083015261434b8161430f565b9050919050565b7f45524332303a20696e73756666696369656e7420616c6c6f77616e6365000000600082015250565b6000614388601d836136f2565b915061439382614352565b602082019050919050565b600060208201905081810360008301526143b78161437b565b9050919050565b7f414c5048413a2057616c6c65742062616c616e6365206c696d6974207265616360008201527f6865640000000000000000000000000000000000000000000000000000000000602082015250565b600061441a6023836136f2565b9150614425826143be565b604082019050919050565b600060208201905081810360008301526144498161440d565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000819050919050565b6000819050919050565b60006144ae6144a96144a48461447f565b614489565b61354e565b9050919050565b6144be81614493565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6144f981613631565b82525050565b600061450b83836144f0565b60208301905092915050565b6000602082019050919050565b600061452f826144c4565b61453981856144cf565b9350614544836144e0565b8060005b8381101561457557815161455c88826144ff565b975061456783614517565b925050600181019050614548565b5085935050505092915050565b600060a0820190506145976000830188613830565b6145a460208301876144b5565b81810360408301526145b68186614524565b90506145c56060830185613911565b6145d26080830184613830565b9695505050505050565b60006040820190506145f16000830185613830565b6145fe6020830184613830565b9392505050565b600060c08201905061461a6000830189613911565b6146276020830188613830565b61463460408301876144b5565b61464160608301866144b5565b61464e6080830185613911565b61465b60a0830184613830565b979650505050505050565b60008151905061467581613558565b92915050565b60008060006060848603121561469457614693613544565b5b60006146a286828701614666565b93505060206146b386828701614666565b92505060406146c486828701614666565b9150509250925092565b60006146d98261354e565b91506146e48361354e565b92508282039050818111156146fc576146fb613bde565b5b92915050565b60006060820190506147176000830186613830565b6147246020830185613830565b6147316040830184613830565b949350505050565b7f414c5048413a204e6f206d61726b6574206d616b65727320666f756e64000000600082015250565b600061476f601d836136f2565b915061477a82614739565b602082019050919050565b6000602082019050818103600083015261479e81614762565b9050919050565b60006060820190506147ba6000830186613911565b6147c76020830185613911565b6147d46040830184613830565b949350505050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b60006148386025836136f2565b9150614843826147dc565b604082019050919050565b600060208201905081810360008301526148678161482b565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b60006148ca6023836136f2565b91506148d58261486e565b604082019050919050565b600060208201905081810360008301526148f9816148bd565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b600061495c6026836136f2565b915061496782614900565b604082019050919050565b6000602082019050818103600083015261498b8161494f565b905091905056fea26469706673582212209fae7950e01a349e17d84cca7a2ec9df655948c4d44a3a6858442892a28d956464736f6c634300081000330000000000000000000000001d0991e7438e8c02e2b38f110af452fe72c66ed50000000000000000000000001b39365411f37912ba8c6a8a3d375c08572c0af50000000000000000000000006640984e492bbf8815be144e22a358336d51c82d
Deployed Bytecode
0x6080604052600436106102135760003560e01c80638e5916b211610118578063ba762ddd116100a0578063dd62ed3e1161006f578063dd62ed3e146107bc578063ea084eef146107f9578063f2fde38b14610822578063f42938901461084b578063f5648a4f146108625761021a565b8063ba762ddd14610712578063c2b1b1991461073d578063c9567bf914610768578063c9e8714c1461077f5761021a565b8063a457c2d7116100e7578063a457c2d71461061b578063a9059cbb14610658578063aa4bde2814610695578063af9549e0146106c0578063b515566a146106e95761021a565b80638e5916b21461054d578063906778331461058a57806395d89b41146105c757806397c44ed9146105f25761021a565b80633bbac5791161019b57806370a082311161016a57806370a082311461047a578063715018a6146104b757806389a5c691146104ce5780638c8f8c04146104f95780638da5cb5b146105225761021a565b80633bbac579146103d257806351bc3c851461040f5780635b683e66146104265780635d0044ca146104515761021a565b806312dfbd33116101e257806312dfbd33146102d957806318160ddd1461030257806323b872dd1461032d578063313ce5671461036a57806339509351146103955761021a565b806304d4c9901461021f578063062e1c4a1461024857806306fdde0314610271578063095ea7b31461029c5761021a565b3661021a57005b600080fd5b34801561022b57600080fd5b5061024660048036038101906102419190613584565b610879565b005b34801561025457600080fd5b5061026f600480360381019061026a91906136a7565b610956565b005b34801561027d57600080fd5b50610286610ad3565b6040516102939190613777565b60405180910390f35b3480156102a857600080fd5b506102c360048036038101906102be9190613799565b610b65565b6040516102d091906137e8565b60405180910390f35b3480156102e557600080fd5b5061030060048036038101906102fb9190613803565b610b88565b005b34801561030e57600080fd5b50610317610c3a565b604051610324919061383f565b60405180910390f35b34801561033957600080fd5b50610354600480360381019061034f919061385a565b610c44565b60405161036191906137e8565b60405180910390f35b34801561037657600080fd5b5061037f610c73565b60405161038c91906138c9565b60405180910390f35b3480156103a157600080fd5b506103bc60048036038101906103b79190613799565b610c7c565b6040516103c991906137e8565b60405180910390f35b3480156103de57600080fd5b506103f960048036038101906103f491906138e4565b610d26565b60405161040691906137e8565b60405180910390f35b34801561041b57600080fd5b50610424610d46565b005b34801561043257600080fd5b5061043b610df0565b604051610448919061383f565b60405180910390f35b34801561045d57600080fd5b5061047860048036038101906104739190613803565b610df6565b005b34801561048657600080fd5b506104a1600480360381019061049c91906138e4565b610f1e565b6040516104ae919061383f565b60405180910390f35b3480156104c357600080fd5b506104cc610f66565b005b3480156104da57600080fd5b506104e36110b7565b6040516104f0919061383f565b60405180910390f35b34801561050557600080fd5b50610520600480360381019061051b919061385a565b6110bd565b005b34801561052e57600080fd5b506105376111d1565b6040516105449190613920565b60405180910390f35b34801561055957600080fd5b50610574600480360381019061056f91906138e4565b6111fb565b60405161058191906137e8565b60405180910390f35b34801561059657600080fd5b506105b160048036038101906105ac91906138e4565b61121b565b6040516105be919061383f565b60405180910390f35b3480156105d357600080fd5b506105dc611233565b6040516105e99190613777565b60405180910390f35b3480156105fe57600080fd5b506106196004803603810190610614919061393b565b6112c5565b005b34801561062757600080fd5b50610642600480360381019061063d9190613799565b61141d565b60405161064f91906137e8565b60405180910390f35b34801561066457600080fd5b5061067f600480360381019061067a9190613799565b611507565b60405161068c91906137e8565b60405180910390f35b3480156106a157600080fd5b506106aa61152a565b6040516106b7919061383f565b60405180910390f35b3480156106cc57600080fd5b506106e760048036038101906106e291906136a7565b611530565b005b3480156106f557600080fd5b50610710600480360381019061070b91906139f3565b61161b565b005b34801561071e57600080fd5b50610727611850565b604051610734919061383f565b60405180910390f35b34801561074957600080fd5b50610752611860565b60405161075f919061383f565b60405180910390f35b34801561077457600080fd5b5061077d611866565b005b34801561078b57600080fd5b506107a660048036038101906107a191906138e4565b611d37565b6040516107b391906137e8565b60405180910390f35b3480156107c857600080fd5b506107e360048036038101906107de9190613a40565b611d57565b6040516107f0919061383f565b60405180910390f35b34801561080557600080fd5b50610820600480360381019061081b91906136a7565b611dde565b005b34801561082e57600080fd5b50610849600480360381019061084491906138e4565b611ec9565b005b34801561085757600080fd5b50610860612088565b005b34801561086e57600080fd5b5061087761223f565b005b3373ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610909576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161090090613acc565b60405180910390fd5b600a861115801561091b5750600a8511155b61092457600080fd5b85600f819055508460108190555083601181905550826012819055508160138190555080601481905550505050505050565b3373ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146109e6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109dd90613acc565b60405180910390fd5b801515600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151503610a78576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a6f90613b5e565b60405180910390fd5b80600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b606060038054610ae290613bad565b80601f0160208091040260200160405190810160405280929190818152602001828054610b0e90613bad565b8015610b5b5780601f10610b3057610100808354040283529160200191610b5b565b820191906000526020600020905b815481529060010190602001808311610b3e57829003601f168201915b5050505050905090565b600080610b70612340565b9050610b7d818585612348565b600191505092915050565b3373ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610c18576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c0f90613acc565b60405180910390fd5b6012600a610c269190613d40565b81610c319190613d8b565b60158190555050565b6000600254905090565b600080610c4f612340565b9050610c5c858285612511565b610c6785858561259d565b60019150509392505050565b60006012905090565b600080610c87612340565b9050610d1b818585600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610d169190613de5565b612348565b600191505092915050565b600c6020528060005260406000206000915054906101000a900460ff1681565b3373ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610dd6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dcd90613acc565b60405180910390fd5b6000610de130610f1e565b9050610dec816128da565b5050565b60105481565b3373ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610e86576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e7d90613acc565b60405180910390fd5b670de0b6b3a76400006103e86001610e9c610c3a565b610ea69190613d8b565b610eb09190613e48565b610eba9190613e48565b811015610efc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ef390613eeb565b60405180910390fd5b6012600a610f0a9190613d40565b81610f159190613d8b565b600e8190555050565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b3373ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610ff6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fed90613acc565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a36000600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b60155481565b3373ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461114d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161114490613acc565b60405180910390fd5b8273ffffffffffffffffffffffffffffffffffffffff1663a9059cbb83836040518363ffffffff1660e01b8152600401611188929190613f0b565b6020604051808303816000875af11580156111a7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111cb9190613f49565b50505050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600b6020528060005260406000206000915054906101000a900460ff1681565b60166020528060005260406000206000915090505481565b60606004805461124290613bad565b80601f016020809104026020016040519081016040528092919081815260200182805461126e90613bad565b80156112bb5780601f10611290576101008083540402835291602001916112bb565b820191906000526020600020905b81548152906001019060200180831161129e57829003601f168201915b5050505050905090565b3373ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611355576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161134c90613acc565b60405180910390fd5b82601760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555081601860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080601960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550505050565b600080611428612340565b90506000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050838110156114ee576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114e590613fe8565b60405180910390fd5b6114fb8286868403612348565b60019250505092915050565b600080611512612340565b905061151f81858561259d565b600191505092915050565b600e5481565b3373ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146115c0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115b790613acc565b60405180910390fd5b80600b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b3373ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146116ab576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116a290613acc565b60405180910390fd5b60005b8282905081101561184b57600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1683838381811061170557611704614008565b5b905060200201602081019061171a91906138e4565b73ffffffffffffffffffffffffffffffffffffffff16141580156117b35750600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1683838381811061178557611784614008565b5b905060200201602081019061179a91906138e4565b73ffffffffffffffffffffffffffffffffffffffff1614155b15611838576001600c60008585858181106117d1576117d0614008565b5b90506020020160208101906117e691906138e4565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505b808061184390614037565b9150506116ae565b505050565b600061185b30610f1e565b905090565b600f5481565b3373ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146118f6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118ed90613acc565b60405180910390fd5b600760149054906101000a900460ff1615611946576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161193d906140cb565b60405180910390fd5b6000600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156119b5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119d99190614100565b73ffffffffffffffffffffffffffffffffffffffff1663c9c6539630600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611a62573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a869190614100565b6040518363ffffffff1660e01b8152600401611aa392919061412d565b6020604051808303816000875af1158015611ac2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ae69190614100565b600960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600d6000600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600a6000600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550611c2c611c2630610f1e565b47612b7a565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b3600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b8152600401611ccb929190613f0b565b6020604051808303816000875af1158015611cea573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d0e9190613f49565b506001600760146101000a81548160ff0219169083151502179055504290504360088190555050565b600d6020528060005260406000206000915054906101000a900460ff1681565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b3373ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611e6e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e6590613acc565b60405180910390fd5b80600d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b3373ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611f59576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f5090613acc565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611fc8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fbf906141c8565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a380600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b3373ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612118576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161210f90613acc565b60405180910390fd5b6000479050600061215b6121386011546064612c9890919063ffffffff16565b61214d60125485612cae90919063ffffffff16565b612cc490919063ffffffff16565b9050600061219b6121786011546064612c9890919063ffffffff16565b61218d60135486612cae90919063ffffffff16565b612cc490919063ffffffff16565b905060006121db6121b86011546064612c9890919063ffffffff16565b6121cd60145487612cae90919063ffffffff16565b612cc490919063ffffffff16565b9050600061221682612208856121fa888a612c9890919063ffffffff16565b612c9890919063ffffffff16565b612c9890919063ffffffff16565b905061222b8185612cda90919063ffffffff16565b9350612238848484612cf0565b5050505050565b3373ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146122cf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122c690613acc565b60405180910390fd5b60003373ffffffffffffffffffffffffffffffffffffffff16476040516122f590614219565b60006040518083038185875af1925050503d8060008114612332576040519150601f19603f3d011682016040523d82523d6000602084013e612337565b606091505b50508091505050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036123b7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123ae906142a0565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612426576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161241d90614332565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051612504919061383f565b60405180910390a3505050565b600061251d8484611d57565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146125975781811015612589576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125809061439e565b60405180910390fd5b6125968484848403612348565b5b50505050565b600c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156126415750600c60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b61264a57600080fd5b6000819050600760149054906101000a900460ff1680156127085750600a60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806127075750600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b5b801561275e5750600b60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156127b45750600b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156127c7576127c4848484612e89565b90505b600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615801561286b5750600d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156128c957600e548161287d85610f1e565b6128879190613de5565b11156128c8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128bf90614430565b60405180910390fd5b5b6128d484848361310a565b50505050565b6000804790506000600267ffffffffffffffff8111156128fd576128fc614450565b5b60405190808252806020026020018201604052801561292b5781602001602082028036833780820191505090505b509050308160008151811061294357612942614008565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156129ea573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612a0e9190614100565b81600181518110612a2257612a21614008565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050612a8930600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1686612348565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478560008430426040518663ffffffff1660e01b8152600401612aed959493929190614582565b600060405180830381600087803b158015612b0757600080fd5b505af1158015612b1b573d6000803e3d6000fd5b505050506000612b348347612c9890919063ffffffff16565b90507f4a6c12eb4e479a4ea28c8acad8efde466ef9bf69cf473501dd768652344962738582604051612b679291906145dc565b60405180910390a1809350505050919050565b612ba730600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684612348565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d719823085600080612bf36111d1565b426040518863ffffffff1660e01b8152600401612c1596959493929190614605565b60606040518083038185885af1158015612c33573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190612c58919061467b565b5050507fcb1652de9aeec38545fc281847b3dbfc89aab56dfa907b1ab68466f602c36fb48282604051612c8c9291906145dc565b60405180910390a15050565b60008183612ca691906146ce565b905092915050565b60008183612cbc9190613d8b565b905092915050565b60008183612cd29190613e48565b905092915050565b60008183612ce89190613de5565b905092915050565b6000831115612d6357601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc849081150290604051600060405180830381858888f19350505050158015612d61573d6000803e3d6000fd5b505b6000821115612dd657601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc839081150290604051600060405180830381858888f19350505050158015612dd4573d6000803e3d6000fd5b505b6000811115612e4957601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015612e47573d6000803e3d6000fd5b505b7f125472b1b527506b5b8381590760f796fd9c88ba5886399d71abc083c6dafa20838383604051612e7c93929190614702565b60405180910390a1505050565b6000806000600a60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680612f2f5750600a60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b612f6e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612f6590614785565b60405180910390fd5b600a60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615613050576000600f549050612fed6064612fdf8388612cae90919063ffffffff16565b612cc490919063ffffffff16565b92506130028386612c9890919063ffffffff16565b915061300f87308561310a565b7f6b0b46d0273ce53f1de696d2100b35dd3a405dcecbcbeede66215d858d5c401d873085604051613042939291906147a5565b60405180910390a1506130fe565b6000601054905061307d606461306f8388612cae90919063ffffffff16565b612cc490919063ffffffff16565b92506130928386612c9890919063ffffffff16565b915061309f87308561310a565b60006130aa30610f1e565b90506015548111156130c0576130bf81613389565b5b7f4ab5e0df8ff1605133dbdd1b8e3f52edb9539abe64595f6f70b30d2fea7f204a8830866040516130f3939291906147a5565b60405180910390a150505b80925050509392505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603613179576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016131709061484e565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036131e8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016131df906148e0565b60405180910390fd5b6131f383838361353a565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015613279576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161327090614972565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461330c9190613de5565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051613370919061383f565b60405180910390a361338384848461353f565b50505050565b60006133b360646133a560115485612cae90919063ffffffff16565b612cc490919063ffffffff16565b905060006133cb600283612cc490919063ffffffff16565b905060006133e28285612c9890919063ffffffff16565b905060006133ef826128da565b9050600061341b606461340d60115485612cae90919063ffffffff16565b612cc490919063ffffffff16565b90506000613447606461343960125486612cae90919063ffffffff16565b612cc490919063ffffffff16565b90506000613473606461346560135487612cae90919063ffffffff16565b612cc490919063ffffffff16565b9050600061349f606461349160145488612cae90919063ffffffff16565b612cc490919063ffffffff16565b905060006134ec826134de856134d0886134c28b8d612c9890919063ffffffff16565b612c9890919063ffffffff16565b612c9890919063ffffffff16565b612c9890919063ffffffff16565b90506135018185612cda90919063ffffffff16565b935061350e848484612cf0565b60008811801561351e5750600085115b1561352e5761352d8886612b7a565b5b50505050505050505050565b505050565b505050565b600080fd5b600080fd5b6000819050919050565b6135618161354e565b811461356c57600080fd5b50565b60008135905061357e81613558565b92915050565b60008060008060008060c087890312156135a1576135a0613544565b5b60006135af89828a0161356f565b96505060206135c089828a0161356f565b95505060406135d189828a0161356f565b94505060606135e289828a0161356f565b93505060806135f389828a0161356f565b92505060a061360489828a0161356f565b9150509295509295509295565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061363c82613611565b9050919050565b61364c81613631565b811461365757600080fd5b50565b60008135905061366981613643565b92915050565b60008115159050919050565b6136848161366f565b811461368f57600080fd5b50565b6000813590506136a18161367b565b92915050565b600080604083850312156136be576136bd613544565b5b60006136cc8582860161365a565b92505060206136dd85828601613692565b9150509250929050565b600081519050919050565b600082825260208201905092915050565b60005b83811015613721578082015181840152602081019050613706565b60008484015250505050565b6000601f19601f8301169050919050565b6000613749826136e7565b61375381856136f2565b9350613763818560208601613703565b61376c8161372d565b840191505092915050565b60006020820190508181036000830152613791818461373e565b905092915050565b600080604083850312156137b0576137af613544565b5b60006137be8582860161365a565b92505060206137cf8582860161356f565b9150509250929050565b6137e28161366f565b82525050565b60006020820190506137fd60008301846137d9565b92915050565b60006020828403121561381957613818613544565b5b60006138278482850161356f565b91505092915050565b6138398161354e565b82525050565b60006020820190506138546000830184613830565b92915050565b60008060006060848603121561387357613872613544565b5b60006138818682870161365a565b93505060206138928682870161365a565b92505060406138a38682870161356f565b9150509250925092565b600060ff82169050919050565b6138c3816138ad565b82525050565b60006020820190506138de60008301846138ba565b92915050565b6000602082840312156138fa576138f9613544565b5b60006139088482850161365a565b91505092915050565b61391a81613631565b82525050565b60006020820190506139356000830184613911565b92915050565b60008060006060848603121561395457613953613544565b5b60006139628682870161365a565b93505060206139738682870161365a565b92505060406139848682870161365a565b9150509250925092565b600080fd5b600080fd5b600080fd5b60008083601f8401126139b3576139b261398e565b5b8235905067ffffffffffffffff8111156139d0576139cf613993565b5b6020830191508360208202830111156139ec576139eb613998565b5b9250929050565b60008060208385031215613a0a57613a09613544565b5b600083013567ffffffffffffffff811115613a2857613a27613549565b5b613a348582860161399d565b92509250509250929050565b60008060408385031215613a5757613a56613544565b5b6000613a658582860161365a565b9250506020613a768582860161365a565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000613ab66020836136f2565b9150613ac182613a80565b602082019050919050565b60006020820190508181036000830152613ae581613aa9565b9050919050565b7f414c5048413a204175746f6d61746564206d61726b6574206d616b657220706160008201527f697220697320616c72656164792073657420746f20746861742076616c756500602082015250565b6000613b48603f836136f2565b9150613b5382613aec565b604082019050919050565b60006020820190508181036000830152613b7781613b3b565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680613bc557607f821691505b602082108103613bd857613bd7613b7e565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b6001851115613c6457808604811115613c4057613c3f613bde565b5b6001851615613c4f5780820291505b8081029050613c5d85613c0d565b9450613c24565b94509492505050565b600082613c7d5760019050613d39565b81613c8b5760009050613d39565b8160018114613ca15760028114613cab57613cda565b6001915050613d39565b60ff841115613cbd57613cbc613bde565b5b8360020a915084821115613cd457613cd3613bde565b5b50613d39565b5060208310610133831016604e8410600b8410161715613d0f5782820a905083811115613d0a57613d09613bde565b5b613d39565b613d1c8484846001613c1a565b92509050818404811115613d3357613d32613bde565b5b81810290505b9392505050565b6000613d4b8261354e565b9150613d56836138ad565b9250613d837fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484613c6d565b905092915050565b6000613d968261354e565b9150613da18361354e565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615613dda57613dd9613bde565b5b828202905092915050565b6000613df08261354e565b9150613dfb8361354e565b9250828201905080821115613e1357613e12613bde565b5b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000613e538261354e565b9150613e5e8361354e565b925082613e6e57613e6d613e19565b5b828204905092915050565b7f43616e6e6f7420736574206d617857616c6c6574206c6f776572207468616e2060008201527f302e312500000000000000000000000000000000000000000000000000000000602082015250565b6000613ed56024836136f2565b9150613ee082613e79565b604082019050919050565b60006020820190508181036000830152613f0481613ec8565b9050919050565b6000604082019050613f206000830185613911565b613f2d6020830184613830565b9392505050565b600081519050613f438161367b565b92915050565b600060208284031215613f5f57613f5e613544565b5b6000613f6d84828501613f34565b91505092915050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b6000613fd26025836136f2565b9150613fdd82613f76565b604082019050919050565b6000602082019050818103600083015261400181613fc5565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60006140428261354e565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361407457614073613bde565b5b600182019050919050565b7f414c5048413a2054726164696e6720697320616c7265616479206f70656e0000600082015250565b60006140b5601e836136f2565b91506140c08261407f565b602082019050919050565b600060208201905081810360008301526140e4816140a8565b9050919050565b6000815190506140fa81613643565b92915050565b60006020828403121561411657614115613544565b5b6000614124848285016140eb565b91505092915050565b60006040820190506141426000830185613911565b61414f6020830184613911565b9392505050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b60006141b26026836136f2565b91506141bd82614156565b604082019050919050565b600060208201905081810360008301526141e1816141a5565b9050919050565b600081905092915050565b50565b60006142036000836141e8565b915061420e826141f3565b600082019050919050565b6000614224826141f6565b9150819050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b600061428a6024836136f2565b91506142958261422e565b604082019050919050565b600060208201905081810360008301526142b98161427d565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b600061431c6022836136f2565b9150614327826142c0565b604082019050919050565b6000602082019050818103600083015261434b8161430f565b9050919050565b7f45524332303a20696e73756666696369656e7420616c6c6f77616e6365000000600082015250565b6000614388601d836136f2565b915061439382614352565b602082019050919050565b600060208201905081810360008301526143b78161437b565b9050919050565b7f414c5048413a2057616c6c65742062616c616e6365206c696d6974207265616360008201527f6865640000000000000000000000000000000000000000000000000000000000602082015250565b600061441a6023836136f2565b9150614425826143be565b604082019050919050565b600060208201905081810360008301526144498161440d565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000819050919050565b6000819050919050565b60006144ae6144a96144a48461447f565b614489565b61354e565b9050919050565b6144be81614493565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6144f981613631565b82525050565b600061450b83836144f0565b60208301905092915050565b6000602082019050919050565b600061452f826144c4565b61453981856144cf565b9350614544836144e0565b8060005b8381101561457557815161455c88826144ff565b975061456783614517565b925050600181019050614548565b5085935050505092915050565b600060a0820190506145976000830188613830565b6145a460208301876144b5565b81810360408301526145b68186614524565b90506145c56060830185613911565b6145d26080830184613830565b9695505050505050565b60006040820190506145f16000830185613830565b6145fe6020830184613830565b9392505050565b600060c08201905061461a6000830189613911565b6146276020830188613830565b61463460408301876144b5565b61464160608301866144b5565b61464e6080830185613911565b61465b60a0830184613830565b979650505050505050565b60008151905061467581613558565b92915050565b60008060006060848603121561469457614693613544565b5b60006146a286828701614666565b93505060206146b386828701614666565b92505060406146c486828701614666565b9150509250925092565b60006146d98261354e565b91506146e48361354e565b92508282039050818111156146fc576146fb613bde565b5b92915050565b60006060820190506147176000830186613830565b6147246020830185613830565b6147316040830184613830565b949350505050565b7f414c5048413a204e6f206d61726b6574206d616b65727320666f756e64000000600082015250565b600061476f601d836136f2565b915061477a82614739565b602082019050919050565b6000602082019050818103600083015261479e81614762565b9050919050565b60006060820190506147ba6000830186613911565b6147c76020830185613911565b6147d46040830184613830565b949350505050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b60006148386025836136f2565b9150614843826147dc565b604082019050919050565b600060208201905081810360008301526148678161482b565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b60006148ca6023836136f2565b91506148d58261486e565b604082019050919050565b600060208201905081810360008301526148f9816148bd565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b600061495c6026836136f2565b915061496782614900565b604082019050919050565b6000602082019050818103600083015261498b8161494f565b905091905056fea26469706673582212209fae7950e01a349e17d84cca7a2ec9df655948c4d44a3a6858442892a28d956464736f6c63430008100033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
0000000000000000000000001d0991e7438e8c02e2b38f110af452fe72c66ed50000000000000000000000001b39365411f37912ba8c6a8a3d375c08572c0af50000000000000000000000006640984e492bbf8815be144e22a358336d51c82d
-----Decoded View---------------
Arg [0] : _dev1WalletAddress (address): 0x1d0991E7438e8C02E2b38f110Af452FE72c66eD5
Arg [1] : _dev2WalletAddress (address): 0x1B39365411f37912BA8c6A8A3D375C08572C0AF5
Arg [2] : _marketingWalletAddress (address): 0x6640984e492Bbf8815be144e22A358336D51c82D
-----Encoded View---------------
3 Constructor Arguments found :
Arg [0] : 0000000000000000000000001d0991e7438e8c02e2b38f110af452fe72c66ed5
Arg [1] : 0000000000000000000000001b39365411f37912ba8c6a8a3d375c08572c0af5
Arg [2] : 0000000000000000000000006640984e492bbf8815be144e22a358336d51c82d
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.