ERC-20
Overview
Max Total Supply
1,000,000,000 AALF
Holders
254
Market
Onchain Market Cap
$0.00
Circulating Supply Market Cap
-
Other Info
Token Contract (WITH 18 Decimals)
Balance
0.000000000000000001 AALFValue
$0.00Loading...
Loading
Loading...
Loading
Loading...
Loading
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
Contract Source Code Verified (Exact Match)
Contract Name:
Aalf
Compiler Version
v0.8.23+commit.f704f362
Optimization Enabled:
No with 200 runs
Other Settings:
paris EvmVersion
Contract Source Code (Solidity Standard Json-Input format)
// SPDX-License-Identifier: MIT // ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⣀⣲⣶⠒⠷⠶⠤⠴⠦⠤⠤⢤⣀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀ // ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢠⣴⣶⠚⠛⠃⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⠑⢦⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀ // ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⡠⠴⠋⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠤⢌⣛⠶⢤⣀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀ // ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠠⢚⠟⠃⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⠱⡄⠙⡆⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀ // ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⡤⠖⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠠⣀⠀⣀⣤⣧⠔⠛⠓⠲⠤⢄⣀⠀⠀⠀⠀⠀⠀⠀⠀ // ⠀⠀⠀⠀⠀⠀⠀⠀⠀⢐⠟⠋⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⣀⣀⣀⣀⣤⣄⣠⣤⣴⣾⣿⣿⣾⡗⠀⢀⣀⢤⠐⠠⠤⣉⠓⠦⣄⠀⠀⠀⠀ // ⠀⠀⠀⠀⠀⠀⠀⠀⢀⠊⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠒⠒⠶⠶⢾⣿⡿⠛⢻⣻⠛⢻⣿⣿⠟⣋⣺⣿⠏⠀⠴⠿⠹⠋⠀⠀⠀⠀⠈⠀⠨⠳⣄⠀⠀ // ⠀⠀⠀⠀⠀⠀⠀⢐⠟⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣤⣤⠤⠄⠐⢾⣿⣝⠤⣀⢀⡠⣱⣿⣿⣿⣿⠿⠃⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠘⡆⠀ // ⠀⠀⠀⠀⠀⠀⢠⡂⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⢉⣛⣺⣿⣾⣛⣽⣿⡟⠁⠀⠀⢀⣀⣀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢸⡀ // ⠀⠀⠀⠀⠀⠐⡟⠀⠀⠀⠀⡠⠖⠀⠀⠀⢀⡴⠃⠀⠀⠀⠀⠀⠀⡈⠉⢉⡽⠿⢛⡿⢛⠯⠭⣒⣚⣩⣭⣭⣤⡤⠭⠭⢭⣥⣀⣉⣑⣒⢵⡀⠀⠀⢸⡇ // ⠀⠀⠀⠀⠀⣰⠃⠀⢀⡔⠋⠀⠀⠀⣠⡴⠋⠀⠀⠀⠀⣠⣤⡴⠋⠀⠀⠀⠀⠀⠾⢶⣾⣿⣿⣿⣿⣿⣿⡿⠋⠀⠀⠀⠀⠀⠀⠀⠈⠉⠉⠳⡀⠀⣸⠃ // ⠀⠀⠀⠀⢰⠟⢀⣴⠏⠀⡀⢀⣴⡿⠋⠀⠀⠀⢀⡴⠟⠋⠁⠀⠀⠀⠀⢀⣠⣴⣾⣿⣿⣿⣿⣿⣿⡿⠋⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢰⣇⠔⠁⠀ // ⠀⠀⠀⠀⣞⣴⣿⠃⢠⣾⣴⣿⠋⠀⠀⠀⠀⠐⠋⠀⠀⠀⠀⠀⢐⣚⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⠏⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠋⠁⠀⠀⠀ // ⠀⠀⠀⣸⣿⣿⣧⣶⣿⣿⣿⠗⠁⠀⡠⠂⠀⢀⠀⠀⠀⠀⠂⢉⣭⣿⣿⣿⣿⣿⣿⣿⣿⣿⠛⡟⠆⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀ // ⠀⢀⠼⢻⣿⣿⣿⣿⣿⣿⠁⢀⣴⠏⢀⣠⠞⠁⢀⠀⠀⠀⣠⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡟⠀⠱⣄⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀ // ⠀⠀⣠⣿⣿⣿⣿⣿⣿⣧⣾⡿⣡⣾⣿⠃⣠⡾⠁⠀⣀⣾⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣷⠂⠀⢻⣍⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀ // ⠀⠈⣽⣿⣿⣿⣿⣿⣿⡟⠉⣰⣿⡿⣡⣾⣿⣴⣾⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡇⠀⠀⠀⢻⣶⡆⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀ // ⠀⣠⣿⣿⣿⣿⣿⣿⣿⣤⣾⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⠋⣱⣿⣿⣿⣿⣿⣿⣿⣿⠃⠀⠀⢸⣾⣿⣧⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀ // ⠐⠛⢹⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡿⢫⣿⠏⠀⣴⣿⣿⣿⣿⣿⣿⣿⣿⣿⣼⡄⠀⣿⣿⡏⠈⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀ // ⠀⠀⣾⡿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⢟⣴⡿⢋⣴⣾⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣤⣿⣿⠇⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀ // ⠀⠀⠁⠀⡿⢻⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀ // ⠀⠀⠀⠀⠀⠀⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡟⠿⣦⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀ // ⠀⠀⠀⠀⠀⠀⢸⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣄⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀ // ⠀⠀⠀⠀⠀⠀⠸⣿⣿⣿⣿⣿⣿⣿⣿⠿⢿⣿⣿⣿⣿⣿⣿⣿⢿⡿⠁⣿⠏⠘⢿⣿⣿⣿⠋⠉⠉⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀ // ⠀⠀⠀⠀⠀⠀⠀⠿⠋⣿⡿⠋⣸⠟⠁⠀⣾⣿⣿⣿⣿⣿⠟⠁⠈⠀⠀⠹⠀⠀⠀⠀⠀⠈⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀ // ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠁⠀⠀⠉⠀⠀⠰⠿⣿⣿⠿⣿⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀ // ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠙⡏⠀⠻⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀ // https://www.anamericanwholovesfreedom.com // https://t.me/aalfcoin pragma solidity ^0.8.23; abstract contract Context { function _msgSender() internal view virtual returns (address) { return msg.sender; } function _msgData() internal view virtual returns (bytes calldata) { return msg.data; } } abstract contract Ownable is Context { address private _owner; event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); constructor() { _transferOwnership(_msgSender()); } function owner() public view virtual returns (address) { return _owner; } modifier onlyOwner() { require(owner() == _msgSender(), "Ownable: caller is not the owner"); _; } function renounceOwnership() public virtual onlyOwner { _transferOwnership(address(0)); } function transferOwnership(address newOwner) public virtual onlyOwner { require(newOwner != address(0), "Ownable: new owner is the zero address"); _transferOwnership(newOwner); } function _transferOwnership(address newOwner) internal virtual { address oldOwner = _owner; _owner = newOwner; emit OwnershipTransferred(oldOwner, newOwner); } } interface IERC20 { function totalSupply() external view returns (uint256); function balanceOf(address account) external view returns (uint256); function transfer(address recipient, uint256 amount) external returns (bool); function allowance(address owner, address spender) external view returns (uint256); function approve(address spender, uint256 amount) external returns (bool); function transferFrom( address sender, address recipient, uint256 amount ) external returns (bool); event Transfer(address indexed from, address indexed to, uint256 value); event Approval(address indexed owner, address indexed spender, uint256 value); } interface IERC20Metadata is IERC20 { function name() external view returns (string memory); function symbol() external view returns (string memory); function decimals() external view returns (uint8); } contract ERC20 is Context, IERC20, IERC20Metadata { mapping(address => uint256) private _balances; mapping(address => mapping(address => uint256)) private _allowances; uint256 private _totalSupply; string private _name; string private _symbol; constructor(string memory name_, string memory symbol_) { _name = name_; _symbol = symbol_; } function name() public view virtual override returns (string memory) { return _name; } function symbol() public view virtual override returns (string memory) { return _symbol; } function decimals() public view virtual override returns (uint8) { return 18; } function totalSupply() public view virtual override returns (uint256) { return _totalSupply; } function balanceOf(address account) public view virtual override returns (uint256) { return _balances[account]; } function transfer(address recipient, uint256 amount) public virtual override returns (bool) { _transfer(_msgSender(), recipient, amount); return true; } function allowance(address owner, address spender) public view virtual override returns (uint256) { return _allowances[owner][spender]; } function approve(address spender, uint256 amount) public virtual override returns (bool) { _approve(_msgSender(), spender, amount); return true; } function transferFrom( address sender, address recipient, uint256 amount ) public virtual override returns (bool) { _transfer(sender, recipient, amount); uint256 currentAllowance = _allowances[sender][_msgSender()]; require(currentAllowance >= amount, "ERC20: transfer amount exceeds allowance"); unchecked { _approve(sender, _msgSender(), currentAllowance - amount); } return true; } function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) { _approve(_msgSender(), spender, _allowances[_msgSender()][spender] + addedValue); return true; } function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) { uint256 currentAllowance = _allowances[_msgSender()][spender]; require(currentAllowance >= subtractedValue, "ERC20: decreased allowance below zero"); unchecked { _approve(_msgSender(), spender, currentAllowance - subtractedValue); } return true; } function _transfer( address sender, address recipient, uint256 amount ) internal virtual { require(sender != address(0), "ERC20: transfer from the zero address"); require(recipient != address(0), "ERC20: transfer to the zero address"); _beforeTokenTransfer(sender, recipient, amount); uint256 senderBalance = _balances[sender]; require(senderBalance >= amount, "ERC20: transfer amount exceeds balance"); unchecked { _balances[sender] = senderBalance - amount; } _balances[recipient] += amount; emit Transfer(sender, recipient, amount); _afterTokenTransfer(sender, recipient, amount); } function _mint(address account, uint256 amount) internal virtual { require(account != address(0), "ERC20: mint to the zero address"); _beforeTokenTransfer(address(0), account, amount); _totalSupply += amount; _balances[account] += amount; emit Transfer(address(0), account, amount); _afterTokenTransfer(address(0), account, amount); } function _burn(address account, uint256 amount) internal virtual { require(account != address(0), "ERC20: burn from the zero address"); _beforeTokenTransfer(account, address(0), amount); uint256 accountBalance = _balances[account]; require(accountBalance >= amount, "ERC20: burn amount exceeds balance"); unchecked { _balances[account] = accountBalance - amount; } _totalSupply -= amount; emit Transfer(account, address(0), amount); _afterTokenTransfer(account, address(0), amount); } function _approve( address owner, address spender, uint256 amount ) internal virtual { require(owner != address(0), "ERC20: approve from the zero address"); require(spender != address(0), "ERC20: approve to the zero address"); _allowances[owner][spender] = amount; emit Approval(owner, spender, amount); } function _beforeTokenTransfer( address from, address to, uint256 amount ) internal virtual {} function _afterTokenTransfer( address from, address to, uint256 amount ) internal virtual {} } library SafeMath { function tryAdd(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { uint256 c = a + b; if (c < a) return (false, 0); return (true, c); } } function trySub(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { if (b > a) return (false, 0); return (true, a - b); } } function tryMul(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { if (a == 0) return (true, 0); uint256 c = a * b; if (c / a != b) return (false, 0); return (true, c); } } function tryDiv(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { if (b == 0) return (false, 0); return (true, a / b); } } function tryMod(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { if (b == 0) return (false, 0); return (true, a % b); } } function add(uint256 a, uint256 b) internal pure returns (uint256) { return a + b; } function sub(uint256 a, uint256 b) internal pure returns (uint256) { return a - b; } function mul(uint256 a, uint256 b) internal pure returns (uint256) { return a * b; } function div(uint256 a, uint256 b) internal pure returns (uint256) { return a / b; } function mod(uint256 a, uint256 b) internal pure returns (uint256) { return a % b; } function sub( uint256 a, uint256 b, string memory errorMessage ) internal pure returns (uint256) { unchecked { require(b <= a, errorMessage); return a - b; } } function div( uint256 a, uint256 b, string memory errorMessage ) internal pure returns (uint256) { unchecked { require(b > 0, errorMessage); return a / b; } } function mod( uint256 a, uint256 b, string memory errorMessage ) internal pure returns (uint256) { unchecked { require(b > 0, errorMessage); return a % b; } } } interface IUniswapV2Factory { event PairCreated( address indexed token0, address indexed token1, address pair, uint256 ); function feeTo() external view returns (address); function feeToSetter() external view returns (address); function getPair(address tokenA, address tokenB) external view returns (address pair); function allPairs(uint256) external view returns (address pair); function allPairsLength() external view returns (uint256); function createPair(address tokenA, address tokenB) external returns (address pair); function setFeeTo(address) external; function setFeeToSetter(address) external; } interface IUniswapV2Pair { event Approval( address indexed owner, address indexed spender, uint256 value ); event Transfer(address indexed from, address indexed to, uint256 value); function name() external pure returns (string memory); function symbol() external pure returns (string memory); function decimals() external pure returns (uint8); function totalSupply() external view returns (uint256); function balanceOf(address owner) external view returns (uint256); function allowance(address owner, address spender) external view returns (uint256); function approve(address spender, uint256 value) external returns (bool); function transfer(address to, uint256 value) external returns (bool); function transferFrom( address from, address to, uint256 value ) external returns (bool); function DOMAIN_SEPARATOR() external view returns (bytes32); function PERMIT_TYPEHASH() external pure returns (bytes32); function nonces(address owner) external view returns (uint256); function permit( address owner, address spender, uint256 value, uint256 deadline, uint8 v, bytes32 r, bytes32 s ) external; event Mint(address indexed sender, uint256 amount0, uint256 amount1); event Burn( address indexed sender, uint256 amount0, uint256 amount1, address indexed to ); event Swap( address indexed sender, uint256 amount0In, uint256 amount1In, uint256 amount0Out, uint256 amount1Out, address indexed to ); event Sync(uint112 reserve0, uint112 reserve1); function MINIMUM_LIQUIDITY() external pure returns (uint256); function factory() external view returns (address); function token0() external view returns (address); function token1() external view returns (address); function getReserves() external view returns ( uint112 reserve0, uint112 reserve1, uint32 blockTimestampLast ); function price0CumulativeLast() external view returns (uint256); function price1CumulativeLast() external view returns (uint256); function kLast() external view returns (uint256); function mint(address to) external returns (uint256 liquidity); function burn(address to) external returns (uint256 amount0, uint256 amount1); function swap( uint256 amount0Out, uint256 amount1Out, address to, bytes calldata data ) external; function skim(address to) external; function sync() external; function initialize(address, address) external; } interface IUniswapV2Router02 { function factory() external pure returns (address); function WETH() external pure returns (address); function addLiquidity( address tokenA, address tokenB, uint256 amountADesired, uint256 amountBDesired, uint256 amountAMin, uint256 amountBMin, address to, uint256 deadline ) external returns ( uint256 amountA, uint256 amountB, uint256 liquidity ); function addLiquidityETH( address token, uint256 amountTokenDesired, uint256 amountTokenMin, uint256 amountETHMin, address to, uint256 deadline ) external payable returns ( uint256 amountToken, uint256 amountETH, uint256 liquidity ); function swapExactTokensForTokensSupportingFeeOnTransferTokens( uint256 amountIn, uint256 amountOutMin, address[] calldata path, address to, uint256 deadline ) external; function swapExactETHForTokensSupportingFeeOnTransferTokens( uint256 amountOutMin, address[] calldata path, address to, uint256 deadline ) external payable; function swapExactTokensForETHSupportingFeeOnTransferTokens( uint256 amountIn, uint256 amountOutMin, address[] calldata path, address to, uint256 deadline ) external; } contract Aalf is ERC20, Ownable { using SafeMath for uint256; IUniswapV2Router02 public immutable uniswapV2Router; address public uniswapV2Pair; address public constant deadAddress = address(0xdead); bool private swapping; address public feeWallet; uint256 public maxTx; uint256 public swapTokensAtAmount; uint256 public maxWallet; bool public limitsInEffect = true; bool public tradingActive = false; bool public swapEnabled = false; // Anti-bot and anti-whale mappings and variables mapping(address => uint256) private _holderLastTransferTimestamp; bool public transferDelayEnabled = true; uint256 public buyFee; uint256 public sellFee; mapping(address => bool) private _isExcludedFromFees; mapping(address => bool) public _isExcludedmaxTx; mapping(address => bool) public automatedMarketMakerPairs; event UpdateUniswapV2Router( address indexed newAddress, address indexed oldAddress ); event ExcludeFromFees(address indexed account, bool isExcluded); event SetAutomatedMarketMakerPair(address indexed pair, bool indexed value); event feeWalletUpdated( address indexed newWallet, address indexed oldWallet ); constructor() ERC20("An American who Loves Freedom", unicode"AALF") { IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02( 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D // mainnet ); excludeFromMaxTx(address(_uniswapV2Router), true); uniswapV2Router = _uniswapV2Router; uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory()).createPair(address(this), _uniswapV2Router.WETH()); excludeFromMaxTx(address(uniswapV2Pair), true); _setAutomatedMarketMakerPair(address(uniswapV2Pair), true); uint256 totalSupply = 1_000_000_000 * 1e18; maxTx = totalSupply * 2 / 100; // 2% of total supply maxWallet = totalSupply * 2 / 100; // 2% of total supply swapTokensAtAmount = (totalSupply * 25) / 10000; // 0.25% swap wallet buyFee = 40; sellFee = 40; feeWallet = address(msg.sender); // exclude from paying fees or having max transaction amount excludeFromFees(owner(), true); excludeFromFees(address(this), true); excludeFromFees(address(0xdead), true); excludeFromMaxTx(owner(), true); excludeFromMaxTx(address(this), true); excludeFromMaxTx(address(0xdead), true); _mint(msg.sender, totalSupply); } receive() external payable {} function enableTrading() external onlyOwner { tradingActive = true; swapEnabled = true; } // remove limits after token is stable function removeLimits() external onlyOwner returns (bool) { limitsInEffect = false; return true; } // disable Transfer delay - cannot be reenabled function disableTransferDelay() external onlyOwner returns (bool) { transferDelayEnabled = false; return true; } // change the minimum amount of tokens to sell from fees function updateSwapTokensAtAmount(uint256 newAmount) external onlyOwner returns (bool) { require( newAmount >= (totalSupply() * 1) / 100000, "Swap amount cannot be lower than 0.001% total supply." ); require( newAmount <= (totalSupply() * 5) / 1000, "Swap amount cannot be higher than 0.5% total supply." ); swapTokensAtAmount = newAmount; return true; } function updateMaxTxnAmount(uint256 newNum) external onlyOwner { require( newNum >= ((totalSupply() * 1) / 1000) / 1e18, "Cannot set maxTx lower than 0.1%" ); maxTx = newNum * (10**18); } function updatemaxWalletAmount(uint256 newNum) external onlyOwner { require( newNum >= ((totalSupply() * 5) / 1000) / 1e18, "Cannot set maxWallet lower than 0.5%" ); maxWallet = newNum * (10**18); } function excludeFromMaxTx(address updAds, bool isEx) public onlyOwner { _isExcludedmaxTx[updAds] = isEx; } // only use to disable contract sales if absolutely necessary (emergency use only) function updateSwapEnabled(bool enabled) external onlyOwner { swapEnabled = enabled; } function updateBuyFees( uint256 _buyFee ) external onlyOwner { require(_buyFee <= 42, "Must keep fees at 42% or less"); buyFee = _buyFee; } function updateSellFees( uint256 _sellFee ) external onlyOwner { require(_sellFee <= 42, "Must keep fees at 42% or less"); sellFee = _sellFee; } function excludeFromFees(address account, bool excluded) public onlyOwner { _isExcludedFromFees[account] = excluded; emit ExcludeFromFees(account, excluded); } function setAutomatedMarketMakerPair(address pair, bool value) public onlyOwner { require( pair != uniswapV2Pair, "The pair cannot be removed from automatedMarketMakerPairs" ); _setAutomatedMarketMakerPair(pair, value); } function _setAutomatedMarketMakerPair(address pair, bool value) private { automatedMarketMakerPairs[pair] = value; emit SetAutomatedMarketMakerPair(pair, value); } function updateFeeWallet(address newWallet) external onlyOwner { emit feeWalletUpdated(newWallet, feeWallet); feeWallet = newWallet; } function isExcludedFromFees(address account) public view returns (bool) { return _isExcludedFromFees[account]; } function _transfer( address from, address to, uint256 amount ) internal override { if (amount == 0) { super._transfer(from, to, 0); return; } require(from != address(0), "ERC20: transfer from the zero address"); require(to != address(0), "ERC20: transfer to the zero address"); if (limitsInEffect) { if (from != owner() && to != owner() && to != address(0) && to != address(0xdead) && !swapping) { if (!tradingActive) { require(_isExcludedFromFees[from] || _isExcludedFromFees[to], "Trading is not active."); } // at launch if the transfer delay is enabled, ensure the block timestamps for purchasers is set -- during launch. if (transferDelayEnabled) { if (to != owner() && to != address(uniswapV2Router) && to != address(uniswapV2Pair)) { require(_holderLastTransferTimestamp[tx.origin] < block.number, "_transfer:: Transfer Delay enabled. Only one purchase per block allowed."); _holderLastTransferTimestamp[tx.origin] = block.number; } } //when buy if (automatedMarketMakerPairs[from] && !_isExcludedmaxTx[to]) { require(amount <= maxTx, "Buy transfer amount exceeds the maxTx."); require(amount + balanceOf(to) <= maxWallet, "Max wallet exceeded"); } //when sell else if (automatedMarketMakerPairs[to] && !_isExcludedmaxTx[from]) { require(amount <= maxTx, "Sell transfer amount exceeds the maxTx."); } else if (!_isExcludedmaxTx[to]) { require(amount + balanceOf(to) <= maxWallet, "Max wallet exceeded"); } } } uint256 contractTokenBalance = balanceOf(address(this)); bool canSwap = contractTokenBalance >= swapTokensAtAmount; if (canSwap && swapEnabled && !swapping && !automatedMarketMakerPairs[from] && !_isExcludedFromFees[from] && !_isExcludedFromFees[to]) { swapping = true; swapBack(); swapping = false; } bool takeFee = !swapping; // if any account belongs to _isExcludedFromFee account then remove the fee if (_isExcludedFromFees[from] || _isExcludedFromFees[to]) { takeFee = false; } uint256 fee = 0; // only take fees on buys/sells, do not take on wallet transfers if (takeFee) { // on sell if (automatedMarketMakerPairs[to] && sellFee > 0) { fee = amount.mul(sellFee).div(100); } // on buy else if (automatedMarketMakerPairs[from] && buyFee > 0) { fee = amount.mul(buyFee).div(100); } super._transfer(from, address(this), fee); amount -= fee; } super._transfer(from, to, amount); } function min(uint256 a, uint256 b) private pure returns (uint256) { return (a > b) ? b : a; } function manualSwap(uint256 amount) external { require(_msgSender() == feeWallet); require(amount <= balanceOf(address(this)) && amount > 0, "Wrong amount"); swapTokensForEth(amount); } function swapTokensForEth(uint256 tokenAmount) private { // generate the uniswap pair path of token -> weth address[] memory path = new address[](2); path[0] = address(this); path[1] = uniswapV2Router.WETH(); _approve(address(this), address(uniswapV2Router), tokenAmount); try uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens( tokenAmount, 0, // accept any amount of ETH path, address(this), block.timestamp ){}catch{} } function swapBack() private { uint256 contractBalance = balanceOf(address(this)); bool success; if (contractBalance > swapTokensAtAmount * 20) { contractBalance = swapTokensAtAmount * 20; } swapTokensForEth(contractBalance); uint256 ethBalance = address(this).balance; (success, ) = address(feeWallet).call{value: ethBalance}(""); } }
{ "evmVersion": "paris", "optimizer": { "enabled": false, "runs": 200 }, "outputSelection": { "*": { "*": [ "evm.bytecode", "evm.deployedBytecode", "devdoc", "userdoc", "metadata", "abi" ] } }, "libraries": {} }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":false,"internalType":"bool","name":"isExcluded","type":"bool"}],"name":"ExcludeFromFees","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"pair","type":"address"},{"indexed":true,"internalType":"bool","name":"value","type":"bool"}],"name":"SetAutomatedMarketMakerPair","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newAddress","type":"address"},{"indexed":true,"internalType":"address","name":"oldAddress","type":"address"}],"name":"UpdateUniswapV2Router","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newWallet","type":"address"},{"indexed":true,"internalType":"address","name":"oldWallet","type":"address"}],"name":"feeWalletUpdated","type":"event"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_isExcludedmaxTx","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"automatedMarketMakerPairs","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"deadAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"disableTransferDelay","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"enableTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"excludeFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"updAds","type":"address"},{"internalType":"bool","name":"isEx","type":"bool"}],"name":"excludeFromMaxTx","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"feeWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromFees","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"limitsInEffect","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"manualSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"maxTx","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWallet","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"removeLimits","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sellFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"pair","type":"address"},{"internalType":"bool","name":"value","type":"bool"}],"name":"setAutomatedMarketMakerPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapTokensAtAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradingActive","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"transferDelayEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_buyFee","type":"uint256"}],"name":"updateBuyFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newWallet","type":"address"}],"name":"updateFeeWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newNum","type":"uint256"}],"name":"updateMaxTxnAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_sellFee","type":"uint256"}],"name":"updateSellFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"enabled","type":"bool"}],"name":"updateSwapEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newAmount","type":"uint256"}],"name":"updateSwapTokensAtAmount","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newNum","type":"uint256"}],"name":"updatemaxWalletAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
60a06040526001600b60006101000a81548160ff0219169083151502179055506000600b60016101000a81548160ff0219169083151502179055506000600b60026101000a81548160ff0219169083151502179055506001600d60006101000a81548160ff0219169083151502179055503480156200007d57600080fd5b506040518060400160405280601d81526020017f416e20416d65726963616e2077686f204c6f7665732046726565646f6d0000008152506040518060400160405280600481526020017f41414c46000000000000000000000000000000000000000000000000000000008152508160039081620000fb919062000cd2565b5080600490816200010d919062000cd2565b50505062000130620001246200051960201b60201c565b6200052160201b60201c565b6000737a250d5630b4cf539739df2c5dacb4c659f2488d90506200015c816001620005e760201b60201c565b8073ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff16815250508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015620001dc573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000202919062000e23565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200026a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000290919062000e23565b6040518363ffffffff1660e01b8152600401620002af92919062000e66565b6020604051808303816000875af1158015620002cf573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002f5919062000e23565b600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506200036a600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166001620005e760201b60201c565b6200039f600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166001620006d160201b60201c565b60006b033b2e3c9fd0803ce800000090506064600282620003c1919062000ec2565b620003cd919062000f3c565b6008819055506064600282620003e4919062000ec2565b620003f0919062000f3c565b600a8190555061271060198262000408919062000ec2565b62000414919062000f3c565b6009819055506028600e819055506028600f8190555033600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506200048d6200047f6200077260201b60201c565b60016200079c60201b60201c565b620004a03060016200079c60201b60201c565b620004b561dead60016200079c60201b60201c565b620004d7620004c96200077260201b60201c565b6001620005e760201b60201c565b620004ea306001620005e760201b60201c565b620004ff61dead6001620005e760201b60201c565b620005113382620008d660201b60201c565b50506200110c565b600033905090565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b620005f76200051960201b60201c565b73ffffffffffffffffffffffffffffffffffffffff166200061d6200077260201b60201c565b73ffffffffffffffffffffffffffffffffffffffff161462000676576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200066d9062000fd5565b60405180910390fd5b80601160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b80601260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b620007ac6200051960201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16620007d26200077260201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16146200082b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620008229062000fd5565b60405180910390fd5b80601060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df782604051620008ca919062001014565b60405180910390a25050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160362000948576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200093f9062001081565b60405180910390fd5b6200095c6000838362000a4e60201b60201c565b8060026000828254620009709190620010a3565b92505081905550806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254620009c79190620010a3565b925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405162000a2e9190620010ef565b60405180910390a362000a4a6000838362000a5360201b60201c565b5050565b505050565b505050565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168062000ada57607f821691505b60208210810362000af05762000aef62000a92565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b60006008830262000b5a7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8262000b1b565b62000b66868362000b1b565b95508019841693508086168417925050509392505050565b6000819050919050565b6000819050919050565b600062000bb362000bad62000ba78462000b7e565b62000b88565b62000b7e565b9050919050565b6000819050919050565b62000bcf8362000b92565b62000be762000bde8262000bba565b84845462000b28565b825550505050565b600090565b62000bfe62000bef565b62000c0b81848462000bc4565b505050565b5b8181101562000c335762000c2760008262000bf4565b60018101905062000c11565b5050565b601f82111562000c825762000c4c8162000af6565b62000c578462000b0b565b8101602085101562000c67578190505b62000c7f62000c768562000b0b565b83018262000c10565b50505b505050565b600082821c905092915050565b600062000ca76000198460080262000c87565b1980831691505092915050565b600062000cc2838362000c94565b9150826002028217905092915050565b62000cdd8262000a58565b67ffffffffffffffff81111562000cf95762000cf862000a63565b5b62000d05825462000ac1565b62000d1282828562000c37565b600060209050601f83116001811462000d4a576000841562000d35578287015190505b62000d41858262000cb4565b86555062000db1565b601f19841662000d5a8662000af6565b60005b8281101562000d845784890151825560018201915060208501945060208101905062000d5d565b8683101562000da4578489015162000da0601f89168262000c94565b8355505b6001600288020188555050505b505050505050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600062000deb8262000dbe565b9050919050565b62000dfd8162000dde565b811462000e0957600080fd5b50565b60008151905062000e1d8162000df2565b92915050565b60006020828403121562000e3c5762000e3b62000db9565b5b600062000e4c8482850162000e0c565b91505092915050565b62000e608162000dde565b82525050565b600060408201905062000e7d600083018562000e55565b62000e8c602083018462000e55565b9392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600062000ecf8262000b7e565b915062000edc8362000b7e565b925082820262000eec8162000b7e565b9150828204841483151762000f065762000f0562000e93565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600062000f498262000b7e565b915062000f568362000b7e565b92508262000f695762000f6862000f0d565b5b828204905092915050565b600082825260208201905092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b600062000fbd60208362000f74565b915062000fca8262000f85565b602082019050919050565b6000602082019050818103600083015262000ff08162000fae565b9050919050565b60008115159050919050565b6200100e8162000ff7565b82525050565b60006020820190506200102b600083018462001003565b92915050565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b600062001069601f8362000f74565b9150620010768262001031565b602082019050919050565b600060208201905081810360008301526200109c816200105a565b9050919050565b6000620010b08262000b7e565b9150620010bd8362000b7e565b9250828201905080821115620010d857620010d762000e93565b5b92915050565b620010e98162000b7e565b82525050565b6000602082019050620011066000830184620010de565b92915050565b6080516146e66200114460003960008181610b150152818161242b01528181612e3101528181612f120152612f3901526146e66000f3fe60806040526004361061026b5760003560e01c80638da5cb5b11610144578063c876d0b9116100b6578063e6819ba71161007a578063e6819ba714610953578063e884f26014610990578063eba4c333146109bb578063f25f4b56146109e4578063f2fde38b14610a0f578063f8b45b0514610a3857610272565b8063c876d0b91461085a578063d257b34f14610885578063d4c989d3146108c2578063dd62ed3e146108eb578063e2f456051461092857610272565b8063a9059cbb11610108578063a9059cbb1461073a578063b5cc50b714610777578063b62496f5146107a0578063b70143c9146107dd578063bbc0c74214610806578063c02466681461083157610272565b80638da5cb5b14610655578063924de9b71461068057806395d89b41146106a95780639a7a23d6146106d4578063a457c2d7146106fd57610272565b806349bd5a5e116101dd57806370a08231116101a157806370a082311461056b578063715018a6146105a857806371fc4688146105bf5780637437681e146105e8578063751039fc146106135780638a8c523c1461063e57610272565b806349bd5a5e146104845780634a62bb65146104af5780634fbee193146104da57806366718524146105175780636ddd17131461054057610272565b806323b872dd1161022f57806323b872dd1461035e57806327c8f8351461039b5780632b14ca56146103c6578063313ce567146103f1578063395093511461041c578063470624021461045957610272565b806306fdde0314610277578063095ea7b3146102a25780631694505e146102df57806318160ddd1461030a578063203e727e1461033557610272565b3661027257005b600080fd5b34801561028357600080fd5b5061028c610a63565b60405161029991906133e6565b60405180910390f35b3480156102ae57600080fd5b506102c960048036038101906102c491906134a1565b610af5565b6040516102d691906134fc565b60405180910390f35b3480156102eb57600080fd5b506102f4610b13565b6040516103019190613576565b60405180910390f35b34801561031657600080fd5b5061031f610b37565b60405161032c91906135a0565b60405180910390f35b34801561034157600080fd5b5061035c600480360381019061035791906135bb565b610b41565b005b34801561036a57600080fd5b50610385600480360381019061038091906135e8565b610c50565b60405161039291906134fc565b60405180910390f35b3480156103a757600080fd5b506103b0610d48565b6040516103bd919061364a565b60405180910390f35b3480156103d257600080fd5b506103db610d4e565b6040516103e891906135a0565b60405180910390f35b3480156103fd57600080fd5b50610406610d54565b6040516104139190613681565b60405180910390f35b34801561042857600080fd5b50610443600480360381019061043e91906134a1565b610d5d565b60405161045091906134fc565b60405180910390f35b34801561046557600080fd5b5061046e610e09565b60405161047b91906135a0565b60405180910390f35b34801561049057600080fd5b50610499610e0f565b6040516104a6919061364a565b60405180910390f35b3480156104bb57600080fd5b506104c4610e35565b6040516104d191906134fc565b60405180910390f35b3480156104e657600080fd5b5061050160048036038101906104fc919061369c565b610e48565b60405161050e91906134fc565b60405180910390f35b34801561052357600080fd5b5061053e6004803603810190610539919061369c565b610e9e565b005b34801561054c57600080fd5b50610555610fda565b60405161056291906134fc565b60405180910390f35b34801561057757600080fd5b50610592600480360381019061058d919061369c565b610fed565b60405161059f91906135a0565b60405180910390f35b3480156105b457600080fd5b506105bd611035565b005b3480156105cb57600080fd5b506105e660048036038101906105e191906135bb565b6110bd565b005b3480156105f457600080fd5b506105fd611187565b60405161060a91906135a0565b60405180910390f35b34801561061f57600080fd5b5061062861118d565b60405161063591906134fc565b60405180910390f35b34801561064a57600080fd5b5061065361122d565b005b34801561066157600080fd5b5061066a6112e1565b604051610677919061364a565b60405180910390f35b34801561068c57600080fd5b506106a760048036038101906106a291906136f5565b61130b565b005b3480156106b557600080fd5b506106be6113a4565b6040516106cb91906133e6565b60405180910390f35b3480156106e057600080fd5b506106fb60048036038101906106f69190613722565b611436565b005b34801561070957600080fd5b50610724600480360381019061071f91906134a1565b611550565b60405161073191906134fc565b60405180910390f35b34801561074657600080fd5b50610761600480360381019061075c91906134a1565b61163b565b60405161076e91906134fc565b60405180910390f35b34801561078357600080fd5b5061079e600480360381019061079991906135bb565b611659565b005b3480156107ac57600080fd5b506107c760048036038101906107c2919061369c565b611768565b6040516107d491906134fc565b60405180910390f35b3480156107e957600080fd5b5061080460048036038101906107ff91906135bb565b611788565b005b34801561081257600080fd5b5061081b61184c565b60405161082891906134fc565b60405180910390f35b34801561083d57600080fd5b5061085860048036038101906108539190613722565b61185f565b005b34801561086657600080fd5b5061086f611984565b60405161087c91906134fc565b60405180910390f35b34801561089157600080fd5b506108ac60048036038101906108a791906135bb565b611997565b6040516108b991906134fc565b60405180910390f35b3480156108ce57600080fd5b506108e960048036038101906108e49190613722565b611aec565b005b3480156108f757600080fd5b50610912600480360381019061090d9190613762565b611bc3565b60405161091f91906135a0565b60405180910390f35b34801561093457600080fd5b5061093d611c4a565b60405161094a91906135a0565b60405180910390f35b34801561095f57600080fd5b5061097a6004803603810190610975919061369c565b611c50565b60405161098791906134fc565b60405180910390f35b34801561099c57600080fd5b506109a5611c70565b6040516109b291906134fc565b60405180910390f35b3480156109c757600080fd5b506109e260048036038101906109dd91906135bb565b611d10565b005b3480156109f057600080fd5b506109f9611dda565b604051610a06919061364a565b60405180910390f35b348015610a1b57600080fd5b50610a366004803603810190610a31919061369c565b611e00565b005b348015610a4457600080fd5b50610a4d611ef7565b604051610a5a91906135a0565b60405180910390f35b606060038054610a72906137d1565b80601f0160208091040260200160405190810160405280929190818152602001828054610a9e906137d1565b8015610aeb5780601f10610ac057610100808354040283529160200191610aeb565b820191906000526020600020905b815481529060010190602001808311610ace57829003601f168201915b5050505050905090565b6000610b09610b02611efd565b8484611f05565b6001905092915050565b7f000000000000000000000000000000000000000000000000000000000000000081565b6000600254905090565b610b49611efd565b73ffffffffffffffffffffffffffffffffffffffff16610b676112e1565b73ffffffffffffffffffffffffffffffffffffffff1614610bbd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bb49061384e565b60405180910390fd5b670de0b6b3a76400006103e86001610bd3610b37565b610bdd919061389d565b610be7919061390e565b610bf1919061390e565b811015610c33576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c2a9061398b565b60405180910390fd5b670de0b6b3a764000081610c47919061389d565b60088190555050565b6000610c5d8484846120ce565b6000600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610ca8611efd565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015610d28576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d1f90613a1d565b60405180910390fd5b610d3c85610d34611efd565b858403611f05565b60019150509392505050565b61dead81565b600f5481565b60006012905090565b6000610dff610d6a611efd565b848460016000610d78611efd565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610dfa9190613a3d565b611f05565b6001905092915050565b600e5481565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600b60009054906101000a900460ff1681565b6000601060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b610ea6611efd565b73ffffffffffffffffffffffffffffffffffffffff16610ec46112e1565b73ffffffffffffffffffffffffffffffffffffffff1614610f1a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f119061384e565b60405180910390fd5b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f5deb5ef622431f0df5a39b72dd556892f68ba42aa0f3aaf0800e166ce866492860405160405180910390a380600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600b60029054906101000a900460ff1681565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b61103d611efd565b73ffffffffffffffffffffffffffffffffffffffff1661105b6112e1565b73ffffffffffffffffffffffffffffffffffffffff16146110b1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110a89061384e565b60405180910390fd5b6110bb6000612c2b565b565b6110c5611efd565b73ffffffffffffffffffffffffffffffffffffffff166110e36112e1565b73ffffffffffffffffffffffffffffffffffffffff1614611139576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111309061384e565b60405180910390fd5b602a81111561117d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161117490613abd565b60405180910390fd5b80600e8190555050565b60085481565b6000611197611efd565b73ffffffffffffffffffffffffffffffffffffffff166111b56112e1565b73ffffffffffffffffffffffffffffffffffffffff161461120b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112029061384e565b60405180910390fd5b6000600b60006101000a81548160ff0219169083151502179055506001905090565b611235611efd565b73ffffffffffffffffffffffffffffffffffffffff166112536112e1565b73ffffffffffffffffffffffffffffffffffffffff16146112a9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112a09061384e565b60405180910390fd5b6001600b60016101000a81548160ff0219169083151502179055506001600b60026101000a81548160ff021916908315150217905550565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b611313611efd565b73ffffffffffffffffffffffffffffffffffffffff166113316112e1565b73ffffffffffffffffffffffffffffffffffffffff1614611387576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161137e9061384e565b60405180910390fd5b80600b60026101000a81548160ff02191690831515021790555050565b6060600480546113b3906137d1565b80601f01602080910402602001604051908101604052809291908181526020018280546113df906137d1565b801561142c5780601f106114015761010080835404028352916020019161142c565b820191906000526020600020905b81548152906001019060200180831161140f57829003601f168201915b5050505050905090565b61143e611efd565b73ffffffffffffffffffffffffffffffffffffffff1661145c6112e1565b73ffffffffffffffffffffffffffffffffffffffff16146114b2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114a99061384e565b60405180910390fd5b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611542576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161153990613b4f565b60405180910390fd5b61154c8282612cf1565b5050565b6000806001600061155f611efd565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490508281101561161c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161161390613be1565b60405180910390fd5b611630611627611efd565b85858403611f05565b600191505092915050565b600061164f611648611efd565b84846120ce565b6001905092915050565b611661611efd565b73ffffffffffffffffffffffffffffffffffffffff1661167f6112e1565b73ffffffffffffffffffffffffffffffffffffffff16146116d5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116cc9061384e565b60405180910390fd5b670de0b6b3a76400006103e860056116eb610b37565b6116f5919061389d565b6116ff919061390e565b611709919061390e565b81101561174b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161174290613c73565b60405180910390fd5b670de0b6b3a76400008161175f919061389d565b600a8190555050565b60126020528060005260406000206000915054906101000a900460ff1681565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166117c9611efd565b73ffffffffffffffffffffffffffffffffffffffff16146117e957600080fd5b6117f230610fed565b81111580156118015750600081115b611840576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161183790613cdf565b60405180910390fd5b61184981612d92565b50565b600b60019054906101000a900460ff1681565b611867611efd565b73ffffffffffffffffffffffffffffffffffffffff166118856112e1565b73ffffffffffffffffffffffffffffffffffffffff16146118db576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118d29061384e565b60405180910390fd5b80601060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df78260405161197891906134fc565b60405180910390a25050565b600d60009054906101000a900460ff1681565b60006119a1611efd565b73ffffffffffffffffffffffffffffffffffffffff166119bf6112e1565b73ffffffffffffffffffffffffffffffffffffffff1614611a15576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a0c9061384e565b60405180910390fd5b620186a06001611a23610b37565b611a2d919061389d565b611a37919061390e565b821015611a79576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a7090613d71565b60405180910390fd5b6103e86005611a86610b37565b611a90919061389d565b611a9a919061390e565b821115611adc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ad390613e03565b60405180910390fd5b8160098190555060019050919050565b611af4611efd565b73ffffffffffffffffffffffffffffffffffffffff16611b126112e1565b73ffffffffffffffffffffffffffffffffffffffff1614611b68576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b5f9061384e565b60405180910390fd5b80601160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60095481565b60116020528060005260406000206000915054906101000a900460ff1681565b6000611c7a611efd565b73ffffffffffffffffffffffffffffffffffffffff16611c986112e1565b73ffffffffffffffffffffffffffffffffffffffff1614611cee576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ce59061384e565b60405180910390fd5b6000600d60006101000a81548160ff0219169083151502179055506001905090565b611d18611efd565b73ffffffffffffffffffffffffffffffffffffffff16611d366112e1565b73ffffffffffffffffffffffffffffffffffffffff1614611d8c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d839061384e565b60405180910390fd5b602a811115611dd0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611dc790613abd565b60405180910390fd5b80600f8190555050565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b611e08611efd565b73ffffffffffffffffffffffffffffffffffffffff16611e266112e1565b73ffffffffffffffffffffffffffffffffffffffff1614611e7c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e739061384e565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611eeb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ee290613e95565b60405180910390fd5b611ef481612c2b565b50565b600a5481565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611f74576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f6b90613f27565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611fe3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fda90613fb9565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516120c191906135a0565b60405180910390a3505050565b600081036120e7576120e283836000612fc9565b612c26565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612156576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161214d9061404b565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036121c5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121bc906140dd565b60405180910390fd5b600b60009054906101000a900460ff161561288a576121e26112e1565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415801561225057506122206112e1565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156122895750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156122c3575061dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156122dc5750600660149054906101000a900460ff16155b1561288957600b60019054906101000a900460ff166123d657601060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806123965750601060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b6123d5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123cc90614149565b60405180910390fd5b5b600d60009054906101000a900460ff16156125a0576123f36112e1565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415801561247a57507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156124d45750600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b1561259f5743600c60003273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541061255a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161255190614201565b60405180910390fd5b43600c60003273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b5b601260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156126435750601160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156126ea5760085481111561268d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161268490614293565b60405180910390fd5b600a5461269983610fed565b826126a49190613a3d565b11156126e5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126dc906142ff565b60405180910390fd5b612888565b601260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16801561278d5750601160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156127dc576008548111156127d7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127ce90614391565b60405180910390fd5b612887565b601160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1661288657600a5461283983610fed565b826128449190613a3d565b1115612885576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161287c906142ff565b60405180910390fd5b5b5b5b5b5b600061289530610fed565b9050600060095482101590508080156128ba5750600b60029054906101000a900460ff165b80156128d35750600660149054906101000a900460ff16155b80156129295750601260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b801561297f5750601060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156129d55750601060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15612a19576001600660146101000a81548160ff0219169083151502179055506129fd613248565b6000600660146101000a81548160ff0219169083151502179055505b6000600660149054906101000a900460ff16159050601060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680612acf5750601060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15612ad957600090505b60008115612c1657601260008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015612b3c57506000600f54115b15612b7057612b696064612b5b600f548861332090919063ffffffff16565b61333690919063ffffffff16565b9050612bfc565b601260008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015612bcb57506000600e54115b15612bfb57612bf86064612bea600e548861332090919063ffffffff16565b61333690919063ffffffff16565b90505b5b612c07873083612fc9565b8085612c1391906143b1565b94505b612c21878787612fc9565b505050505b505050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b80601260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b6000600267ffffffffffffffff811115612daf57612dae6143e5565b5b604051908082528060200260200182016040528015612ddd5781602001602082028036833780820191505090505b5090503081600081518110612df557612df4614414565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612e9a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612ebe9190614458565b81600181518110612ed257612ed1614414565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050612f37307f000000000000000000000000000000000000000000000000000000000000000084611f05565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401612f9995949392919061457e565b600060405180830381600087803b158015612fb357600080fd5b505af1925050508015612fc4575060015b505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603613038576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161302f9061404b565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036130a7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161309e906140dd565b60405180910390fd5b6130b283838361334c565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015613138576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161312f9061464a565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546131cb9190613a3d565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161322f91906135a0565b60405180910390a3613242848484613351565b50505050565b600061325330610fed565b905060006014600954613266919061389d565b82111561327f57601460095461327c919061389d565b91505b61328882612d92565b6000479050600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16816040516132d39061469b565b60006040518083038185875af1925050503d8060008114613310576040519150601f19603f3d011682016040523d82523d6000602084013e613315565b606091505b505080925050505050565b6000818361332e919061389d565b905092915050565b60008183613344919061390e565b905092915050565b505050565b505050565b600081519050919050565b600082825260208201905092915050565b60005b83811015613390578082015181840152602081019050613375565b60008484015250505050565b6000601f19601f8301169050919050565b60006133b882613356565b6133c28185613361565b93506133d2818560208601613372565b6133db8161339c565b840191505092915050565b6000602082019050818103600083015261340081846133ad565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006134388261340d565b9050919050565b6134488161342d565b811461345357600080fd5b50565b6000813590506134658161343f565b92915050565b6000819050919050565b61347e8161346b565b811461348957600080fd5b50565b60008135905061349b81613475565b92915050565b600080604083850312156134b8576134b7613408565b5b60006134c685828601613456565b92505060206134d78582860161348c565b9150509250929050565b60008115159050919050565b6134f6816134e1565b82525050565b600060208201905061351160008301846134ed565b92915050565b6000819050919050565b600061353c6135376135328461340d565b613517565b61340d565b9050919050565b600061354e82613521565b9050919050565b600061356082613543565b9050919050565b61357081613555565b82525050565b600060208201905061358b6000830184613567565b92915050565b61359a8161346b565b82525050565b60006020820190506135b56000830184613591565b92915050565b6000602082840312156135d1576135d0613408565b5b60006135df8482850161348c565b91505092915050565b60008060006060848603121561360157613600613408565b5b600061360f86828701613456565b935050602061362086828701613456565b92505060406136318682870161348c565b9150509250925092565b6136448161342d565b82525050565b600060208201905061365f600083018461363b565b92915050565b600060ff82169050919050565b61367b81613665565b82525050565b60006020820190506136966000830184613672565b92915050565b6000602082840312156136b2576136b1613408565b5b60006136c084828501613456565b91505092915050565b6136d2816134e1565b81146136dd57600080fd5b50565b6000813590506136ef816136c9565b92915050565b60006020828403121561370b5761370a613408565b5b6000613719848285016136e0565b91505092915050565b6000806040838503121561373957613738613408565b5b600061374785828601613456565b9250506020613758858286016136e0565b9150509250929050565b6000806040838503121561377957613778613408565b5b600061378785828601613456565b925050602061379885828601613456565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806137e957607f821691505b6020821081036137fc576137fb6137a2565b5b50919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000613838602083613361565b915061384382613802565b602082019050919050565b600060208201905081810360008301526138678161382b565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006138a88261346b565b91506138b38361346b565b92508282026138c18161346b565b915082820484148315176138d8576138d761386e565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006139198261346b565b91506139248361346b565b925082613934576139336138df565b5b828204905092915050565b7f43616e6e6f7420736574206d61785478206c6f776572207468616e20302e3125600082015250565b6000613975602083613361565b91506139808261393f565b602082019050919050565b600060208201905081810360008301526139a481613968565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206160008201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b6000613a07602883613361565b9150613a12826139ab565b604082019050919050565b60006020820190508181036000830152613a36816139fa565b9050919050565b6000613a488261346b565b9150613a538361346b565b9250828201905080821115613a6b57613a6a61386e565b5b92915050565b7f4d757374206b656570206665657320617420343225206f72206c657373000000600082015250565b6000613aa7601d83613361565b9150613ab282613a71565b602082019050919050565b60006020820190508181036000830152613ad681613a9a565b9050919050565b7f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d2060008201527f6175746f6d617465644d61726b65744d616b6572506169727300000000000000602082015250565b6000613b39603983613361565b9150613b4482613add565b604082019050919050565b60006020820190508181036000830152613b6881613b2c565b9050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b6000613bcb602583613361565b9150613bd682613b6f565b604082019050919050565b60006020820190508181036000830152613bfa81613bbe565b9050919050565b7f43616e6e6f7420736574206d617857616c6c6574206c6f776572207468616e2060008201527f302e352500000000000000000000000000000000000000000000000000000000602082015250565b6000613c5d602483613361565b9150613c6882613c01565b604082019050919050565b60006020820190508181036000830152613c8c81613c50565b9050919050565b7f57726f6e6720616d6f756e740000000000000000000000000000000000000000600082015250565b6000613cc9600c83613361565b9150613cd482613c93565b602082019050919050565b60006020820190508181036000830152613cf881613cbc565b9050919050565b7f5377617020616d6f756e742063616e6e6f74206265206c6f776572207468616e60008201527f20302e3030312520746f74616c20737570706c792e0000000000000000000000602082015250565b6000613d5b603583613361565b9150613d6682613cff565b604082019050919050565b60006020820190508181036000830152613d8a81613d4e565b9050919050565b7f5377617020616d6f756e742063616e6e6f74206265206869676865722074686160008201527f6e20302e352520746f74616c20737570706c792e000000000000000000000000602082015250565b6000613ded603483613361565b9150613df882613d91565b604082019050919050565b60006020820190508181036000830152613e1c81613de0565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000613e7f602683613361565b9150613e8a82613e23565b604082019050919050565b60006020820190508181036000830152613eae81613e72565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000613f11602483613361565b9150613f1c82613eb5565b604082019050919050565b60006020820190508181036000830152613f4081613f04565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000613fa3602283613361565b9150613fae82613f47565b604082019050919050565b60006020820190508181036000830152613fd281613f96565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000614035602583613361565b915061404082613fd9565b604082019050919050565b6000602082019050818103600083015261406481614028565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b60006140c7602383613361565b91506140d28261406b565b604082019050919050565b600060208201905081810360008301526140f6816140ba565b9050919050565b7f54726164696e67206973206e6f74206163746976652e00000000000000000000600082015250565b6000614133601683613361565b915061413e826140fd565b602082019050919050565b6000602082019050818103600083015261416281614126565b9050919050565b7f5f7472616e736665723a3a205472616e736665722044656c617920656e61626c60008201527f65642e20204f6e6c79206f6e652070757263686173652070657220626c6f636b60208201527f20616c6c6f7765642e0000000000000000000000000000000000000000000000604082015250565b60006141eb604983613361565b91506141f682614169565b606082019050919050565b6000602082019050818103600083015261421a816141de565b9050919050565b7f427579207472616e7366657220616d6f756e742065786365656473207468652060008201527f6d617854782e0000000000000000000000000000000000000000000000000000602082015250565b600061427d602683613361565b915061428882614221565b604082019050919050565b600060208201905081810360008301526142ac81614270565b9050919050565b7f4d61782077616c6c657420657863656564656400000000000000000000000000600082015250565b60006142e9601383613361565b91506142f4826142b3565b602082019050919050565b60006020820190508181036000830152614318816142dc565b9050919050565b7f53656c6c207472616e7366657220616d6f756e7420657863656564732074686560008201527f206d617854782e00000000000000000000000000000000000000000000000000602082015250565b600061437b602783613361565b91506143868261431f565b604082019050919050565b600060208201905081810360008301526143aa8161436e565b9050919050565b60006143bc8261346b565b91506143c78361346b565b92508282039050818111156143df576143de61386e565b5b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000815190506144528161343f565b92915050565b60006020828403121561446e5761446d613408565b5b600061447c84828501614443565b91505092915050565b6000819050919050565b60006144aa6144a56144a084614485565b613517565b61346b565b9050919050565b6144ba8161448f565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6144f58161342d565b82525050565b600061450783836144ec565b60208301905092915050565b6000602082019050919050565b600061452b826144c0565b61453581856144cb565b9350614540836144dc565b8060005b8381101561457157815161455888826144fb565b975061456383614513565b925050600181019050614544565b5085935050505092915050565b600060a0820190506145936000830188613591565b6145a060208301876144b1565b81810360408301526145b28186614520565b90506145c1606083018561363b565b6145ce6080830184613591565b9695505050505050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b6000614634602683613361565b915061463f826145d8565b604082019050919050565b6000602082019050818103600083015261466381614627565b9050919050565b600081905092915050565b50565b600061468560008361466a565b915061469082614675565b600082019050919050565b60006146a682614678565b915081905091905056fea26469706673582212207d51b527c25ec260592f42405c7c4d53048b491dcd05d44f056e1f5d7e32f18e64736f6c63430008170033
Deployed Bytecode
0x60806040526004361061026b5760003560e01c80638da5cb5b11610144578063c876d0b9116100b6578063e6819ba71161007a578063e6819ba714610953578063e884f26014610990578063eba4c333146109bb578063f25f4b56146109e4578063f2fde38b14610a0f578063f8b45b0514610a3857610272565b8063c876d0b91461085a578063d257b34f14610885578063d4c989d3146108c2578063dd62ed3e146108eb578063e2f456051461092857610272565b8063a9059cbb11610108578063a9059cbb1461073a578063b5cc50b714610777578063b62496f5146107a0578063b70143c9146107dd578063bbc0c74214610806578063c02466681461083157610272565b80638da5cb5b14610655578063924de9b71461068057806395d89b41146106a95780639a7a23d6146106d4578063a457c2d7146106fd57610272565b806349bd5a5e116101dd57806370a08231116101a157806370a082311461056b578063715018a6146105a857806371fc4688146105bf5780637437681e146105e8578063751039fc146106135780638a8c523c1461063e57610272565b806349bd5a5e146104845780634a62bb65146104af5780634fbee193146104da57806366718524146105175780636ddd17131461054057610272565b806323b872dd1161022f57806323b872dd1461035e57806327c8f8351461039b5780632b14ca56146103c6578063313ce567146103f1578063395093511461041c578063470624021461045957610272565b806306fdde0314610277578063095ea7b3146102a25780631694505e146102df57806318160ddd1461030a578063203e727e1461033557610272565b3661027257005b600080fd5b34801561028357600080fd5b5061028c610a63565b60405161029991906133e6565b60405180910390f35b3480156102ae57600080fd5b506102c960048036038101906102c491906134a1565b610af5565b6040516102d691906134fc565b60405180910390f35b3480156102eb57600080fd5b506102f4610b13565b6040516103019190613576565b60405180910390f35b34801561031657600080fd5b5061031f610b37565b60405161032c91906135a0565b60405180910390f35b34801561034157600080fd5b5061035c600480360381019061035791906135bb565b610b41565b005b34801561036a57600080fd5b50610385600480360381019061038091906135e8565b610c50565b60405161039291906134fc565b60405180910390f35b3480156103a757600080fd5b506103b0610d48565b6040516103bd919061364a565b60405180910390f35b3480156103d257600080fd5b506103db610d4e565b6040516103e891906135a0565b60405180910390f35b3480156103fd57600080fd5b50610406610d54565b6040516104139190613681565b60405180910390f35b34801561042857600080fd5b50610443600480360381019061043e91906134a1565b610d5d565b60405161045091906134fc565b60405180910390f35b34801561046557600080fd5b5061046e610e09565b60405161047b91906135a0565b60405180910390f35b34801561049057600080fd5b50610499610e0f565b6040516104a6919061364a565b60405180910390f35b3480156104bb57600080fd5b506104c4610e35565b6040516104d191906134fc565b60405180910390f35b3480156104e657600080fd5b5061050160048036038101906104fc919061369c565b610e48565b60405161050e91906134fc565b60405180910390f35b34801561052357600080fd5b5061053e6004803603810190610539919061369c565b610e9e565b005b34801561054c57600080fd5b50610555610fda565b60405161056291906134fc565b60405180910390f35b34801561057757600080fd5b50610592600480360381019061058d919061369c565b610fed565b60405161059f91906135a0565b60405180910390f35b3480156105b457600080fd5b506105bd611035565b005b3480156105cb57600080fd5b506105e660048036038101906105e191906135bb565b6110bd565b005b3480156105f457600080fd5b506105fd611187565b60405161060a91906135a0565b60405180910390f35b34801561061f57600080fd5b5061062861118d565b60405161063591906134fc565b60405180910390f35b34801561064a57600080fd5b5061065361122d565b005b34801561066157600080fd5b5061066a6112e1565b604051610677919061364a565b60405180910390f35b34801561068c57600080fd5b506106a760048036038101906106a291906136f5565b61130b565b005b3480156106b557600080fd5b506106be6113a4565b6040516106cb91906133e6565b60405180910390f35b3480156106e057600080fd5b506106fb60048036038101906106f69190613722565b611436565b005b34801561070957600080fd5b50610724600480360381019061071f91906134a1565b611550565b60405161073191906134fc565b60405180910390f35b34801561074657600080fd5b50610761600480360381019061075c91906134a1565b61163b565b60405161076e91906134fc565b60405180910390f35b34801561078357600080fd5b5061079e600480360381019061079991906135bb565b611659565b005b3480156107ac57600080fd5b506107c760048036038101906107c2919061369c565b611768565b6040516107d491906134fc565b60405180910390f35b3480156107e957600080fd5b5061080460048036038101906107ff91906135bb565b611788565b005b34801561081257600080fd5b5061081b61184c565b60405161082891906134fc565b60405180910390f35b34801561083d57600080fd5b5061085860048036038101906108539190613722565b61185f565b005b34801561086657600080fd5b5061086f611984565b60405161087c91906134fc565b60405180910390f35b34801561089157600080fd5b506108ac60048036038101906108a791906135bb565b611997565b6040516108b991906134fc565b60405180910390f35b3480156108ce57600080fd5b506108e960048036038101906108e49190613722565b611aec565b005b3480156108f757600080fd5b50610912600480360381019061090d9190613762565b611bc3565b60405161091f91906135a0565b60405180910390f35b34801561093457600080fd5b5061093d611c4a565b60405161094a91906135a0565b60405180910390f35b34801561095f57600080fd5b5061097a6004803603810190610975919061369c565b611c50565b60405161098791906134fc565b60405180910390f35b34801561099c57600080fd5b506109a5611c70565b6040516109b291906134fc565b60405180910390f35b3480156109c757600080fd5b506109e260048036038101906109dd91906135bb565b611d10565b005b3480156109f057600080fd5b506109f9611dda565b604051610a06919061364a565b60405180910390f35b348015610a1b57600080fd5b50610a366004803603810190610a31919061369c565b611e00565b005b348015610a4457600080fd5b50610a4d611ef7565b604051610a5a91906135a0565b60405180910390f35b606060038054610a72906137d1565b80601f0160208091040260200160405190810160405280929190818152602001828054610a9e906137d1565b8015610aeb5780601f10610ac057610100808354040283529160200191610aeb565b820191906000526020600020905b815481529060010190602001808311610ace57829003601f168201915b5050505050905090565b6000610b09610b02611efd565b8484611f05565b6001905092915050565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d81565b6000600254905090565b610b49611efd565b73ffffffffffffffffffffffffffffffffffffffff16610b676112e1565b73ffffffffffffffffffffffffffffffffffffffff1614610bbd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bb49061384e565b60405180910390fd5b670de0b6b3a76400006103e86001610bd3610b37565b610bdd919061389d565b610be7919061390e565b610bf1919061390e565b811015610c33576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c2a9061398b565b60405180910390fd5b670de0b6b3a764000081610c47919061389d565b60088190555050565b6000610c5d8484846120ce565b6000600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610ca8611efd565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015610d28576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d1f90613a1d565b60405180910390fd5b610d3c85610d34611efd565b858403611f05565b60019150509392505050565b61dead81565b600f5481565b60006012905090565b6000610dff610d6a611efd565b848460016000610d78611efd565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610dfa9190613a3d565b611f05565b6001905092915050565b600e5481565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600b60009054906101000a900460ff1681565b6000601060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b610ea6611efd565b73ffffffffffffffffffffffffffffffffffffffff16610ec46112e1565b73ffffffffffffffffffffffffffffffffffffffff1614610f1a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f119061384e565b60405180910390fd5b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f5deb5ef622431f0df5a39b72dd556892f68ba42aa0f3aaf0800e166ce866492860405160405180910390a380600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600b60029054906101000a900460ff1681565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b61103d611efd565b73ffffffffffffffffffffffffffffffffffffffff1661105b6112e1565b73ffffffffffffffffffffffffffffffffffffffff16146110b1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110a89061384e565b60405180910390fd5b6110bb6000612c2b565b565b6110c5611efd565b73ffffffffffffffffffffffffffffffffffffffff166110e36112e1565b73ffffffffffffffffffffffffffffffffffffffff1614611139576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111309061384e565b60405180910390fd5b602a81111561117d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161117490613abd565b60405180910390fd5b80600e8190555050565b60085481565b6000611197611efd565b73ffffffffffffffffffffffffffffffffffffffff166111b56112e1565b73ffffffffffffffffffffffffffffffffffffffff161461120b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112029061384e565b60405180910390fd5b6000600b60006101000a81548160ff0219169083151502179055506001905090565b611235611efd565b73ffffffffffffffffffffffffffffffffffffffff166112536112e1565b73ffffffffffffffffffffffffffffffffffffffff16146112a9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112a09061384e565b60405180910390fd5b6001600b60016101000a81548160ff0219169083151502179055506001600b60026101000a81548160ff021916908315150217905550565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b611313611efd565b73ffffffffffffffffffffffffffffffffffffffff166113316112e1565b73ffffffffffffffffffffffffffffffffffffffff1614611387576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161137e9061384e565b60405180910390fd5b80600b60026101000a81548160ff02191690831515021790555050565b6060600480546113b3906137d1565b80601f01602080910402602001604051908101604052809291908181526020018280546113df906137d1565b801561142c5780601f106114015761010080835404028352916020019161142c565b820191906000526020600020905b81548152906001019060200180831161140f57829003601f168201915b5050505050905090565b61143e611efd565b73ffffffffffffffffffffffffffffffffffffffff1661145c6112e1565b73ffffffffffffffffffffffffffffffffffffffff16146114b2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114a99061384e565b60405180910390fd5b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611542576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161153990613b4f565b60405180910390fd5b61154c8282612cf1565b5050565b6000806001600061155f611efd565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490508281101561161c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161161390613be1565b60405180910390fd5b611630611627611efd565b85858403611f05565b600191505092915050565b600061164f611648611efd565b84846120ce565b6001905092915050565b611661611efd565b73ffffffffffffffffffffffffffffffffffffffff1661167f6112e1565b73ffffffffffffffffffffffffffffffffffffffff16146116d5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116cc9061384e565b60405180910390fd5b670de0b6b3a76400006103e860056116eb610b37565b6116f5919061389d565b6116ff919061390e565b611709919061390e565b81101561174b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161174290613c73565b60405180910390fd5b670de0b6b3a76400008161175f919061389d565b600a8190555050565b60126020528060005260406000206000915054906101000a900460ff1681565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166117c9611efd565b73ffffffffffffffffffffffffffffffffffffffff16146117e957600080fd5b6117f230610fed565b81111580156118015750600081115b611840576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161183790613cdf565b60405180910390fd5b61184981612d92565b50565b600b60019054906101000a900460ff1681565b611867611efd565b73ffffffffffffffffffffffffffffffffffffffff166118856112e1565b73ffffffffffffffffffffffffffffffffffffffff16146118db576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118d29061384e565b60405180910390fd5b80601060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df78260405161197891906134fc565b60405180910390a25050565b600d60009054906101000a900460ff1681565b60006119a1611efd565b73ffffffffffffffffffffffffffffffffffffffff166119bf6112e1565b73ffffffffffffffffffffffffffffffffffffffff1614611a15576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a0c9061384e565b60405180910390fd5b620186a06001611a23610b37565b611a2d919061389d565b611a37919061390e565b821015611a79576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a7090613d71565b60405180910390fd5b6103e86005611a86610b37565b611a90919061389d565b611a9a919061390e565b821115611adc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ad390613e03565b60405180910390fd5b8160098190555060019050919050565b611af4611efd565b73ffffffffffffffffffffffffffffffffffffffff16611b126112e1565b73ffffffffffffffffffffffffffffffffffffffff1614611b68576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b5f9061384e565b60405180910390fd5b80601160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60095481565b60116020528060005260406000206000915054906101000a900460ff1681565b6000611c7a611efd565b73ffffffffffffffffffffffffffffffffffffffff16611c986112e1565b73ffffffffffffffffffffffffffffffffffffffff1614611cee576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ce59061384e565b60405180910390fd5b6000600d60006101000a81548160ff0219169083151502179055506001905090565b611d18611efd565b73ffffffffffffffffffffffffffffffffffffffff16611d366112e1565b73ffffffffffffffffffffffffffffffffffffffff1614611d8c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d839061384e565b60405180910390fd5b602a811115611dd0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611dc790613abd565b60405180910390fd5b80600f8190555050565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b611e08611efd565b73ffffffffffffffffffffffffffffffffffffffff16611e266112e1565b73ffffffffffffffffffffffffffffffffffffffff1614611e7c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e739061384e565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611eeb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ee290613e95565b60405180910390fd5b611ef481612c2b565b50565b600a5481565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611f74576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f6b90613f27565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611fe3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fda90613fb9565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516120c191906135a0565b60405180910390a3505050565b600081036120e7576120e283836000612fc9565b612c26565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612156576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161214d9061404b565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036121c5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121bc906140dd565b60405180910390fd5b600b60009054906101000a900460ff161561288a576121e26112e1565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415801561225057506122206112e1565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156122895750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156122c3575061dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156122dc5750600660149054906101000a900460ff16155b1561288957600b60019054906101000a900460ff166123d657601060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806123965750601060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b6123d5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123cc90614149565b60405180910390fd5b5b600d60009054906101000a900460ff16156125a0576123f36112e1565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415801561247a57507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156124d45750600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b1561259f5743600c60003273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541061255a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161255190614201565b60405180910390fd5b43600c60003273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b5b601260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156126435750601160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156126ea5760085481111561268d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161268490614293565b60405180910390fd5b600a5461269983610fed565b826126a49190613a3d565b11156126e5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126dc906142ff565b60405180910390fd5b612888565b601260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16801561278d5750601160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156127dc576008548111156127d7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127ce90614391565b60405180910390fd5b612887565b601160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1661288657600a5461283983610fed565b826128449190613a3d565b1115612885576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161287c906142ff565b60405180910390fd5b5b5b5b5b5b600061289530610fed565b9050600060095482101590508080156128ba5750600b60029054906101000a900460ff165b80156128d35750600660149054906101000a900460ff16155b80156129295750601260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b801561297f5750601060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156129d55750601060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15612a19576001600660146101000a81548160ff0219169083151502179055506129fd613248565b6000600660146101000a81548160ff0219169083151502179055505b6000600660149054906101000a900460ff16159050601060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680612acf5750601060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15612ad957600090505b60008115612c1657601260008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015612b3c57506000600f54115b15612b7057612b696064612b5b600f548861332090919063ffffffff16565b61333690919063ffffffff16565b9050612bfc565b601260008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015612bcb57506000600e54115b15612bfb57612bf86064612bea600e548861332090919063ffffffff16565b61333690919063ffffffff16565b90505b5b612c07873083612fc9565b8085612c1391906143b1565b94505b612c21878787612fc9565b505050505b505050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b80601260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b6000600267ffffffffffffffff811115612daf57612dae6143e5565b5b604051908082528060200260200182016040528015612ddd5781602001602082028036833780820191505090505b5090503081600081518110612df557612df4614414565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612e9a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612ebe9190614458565b81600181518110612ed257612ed1614414565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050612f37307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d84611f05565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401612f9995949392919061457e565b600060405180830381600087803b158015612fb357600080fd5b505af1925050508015612fc4575060015b505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603613038576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161302f9061404b565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036130a7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161309e906140dd565b60405180910390fd5b6130b283838361334c565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015613138576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161312f9061464a565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546131cb9190613a3d565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161322f91906135a0565b60405180910390a3613242848484613351565b50505050565b600061325330610fed565b905060006014600954613266919061389d565b82111561327f57601460095461327c919061389d565b91505b61328882612d92565b6000479050600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16816040516132d39061469b565b60006040518083038185875af1925050503d8060008114613310576040519150601f19603f3d011682016040523d82523d6000602084013e613315565b606091505b505080925050505050565b6000818361332e919061389d565b905092915050565b60008183613344919061390e565b905092915050565b505050565b505050565b600081519050919050565b600082825260208201905092915050565b60005b83811015613390578082015181840152602081019050613375565b60008484015250505050565b6000601f19601f8301169050919050565b60006133b882613356565b6133c28185613361565b93506133d2818560208601613372565b6133db8161339c565b840191505092915050565b6000602082019050818103600083015261340081846133ad565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006134388261340d565b9050919050565b6134488161342d565b811461345357600080fd5b50565b6000813590506134658161343f565b92915050565b6000819050919050565b61347e8161346b565b811461348957600080fd5b50565b60008135905061349b81613475565b92915050565b600080604083850312156134b8576134b7613408565b5b60006134c685828601613456565b92505060206134d78582860161348c565b9150509250929050565b60008115159050919050565b6134f6816134e1565b82525050565b600060208201905061351160008301846134ed565b92915050565b6000819050919050565b600061353c6135376135328461340d565b613517565b61340d565b9050919050565b600061354e82613521565b9050919050565b600061356082613543565b9050919050565b61357081613555565b82525050565b600060208201905061358b6000830184613567565b92915050565b61359a8161346b565b82525050565b60006020820190506135b56000830184613591565b92915050565b6000602082840312156135d1576135d0613408565b5b60006135df8482850161348c565b91505092915050565b60008060006060848603121561360157613600613408565b5b600061360f86828701613456565b935050602061362086828701613456565b92505060406136318682870161348c565b9150509250925092565b6136448161342d565b82525050565b600060208201905061365f600083018461363b565b92915050565b600060ff82169050919050565b61367b81613665565b82525050565b60006020820190506136966000830184613672565b92915050565b6000602082840312156136b2576136b1613408565b5b60006136c084828501613456565b91505092915050565b6136d2816134e1565b81146136dd57600080fd5b50565b6000813590506136ef816136c9565b92915050565b60006020828403121561370b5761370a613408565b5b6000613719848285016136e0565b91505092915050565b6000806040838503121561373957613738613408565b5b600061374785828601613456565b9250506020613758858286016136e0565b9150509250929050565b6000806040838503121561377957613778613408565b5b600061378785828601613456565b925050602061379885828601613456565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806137e957607f821691505b6020821081036137fc576137fb6137a2565b5b50919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000613838602083613361565b915061384382613802565b602082019050919050565b600060208201905081810360008301526138678161382b565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006138a88261346b565b91506138b38361346b565b92508282026138c18161346b565b915082820484148315176138d8576138d761386e565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006139198261346b565b91506139248361346b565b925082613934576139336138df565b5b828204905092915050565b7f43616e6e6f7420736574206d61785478206c6f776572207468616e20302e3125600082015250565b6000613975602083613361565b91506139808261393f565b602082019050919050565b600060208201905081810360008301526139a481613968565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206160008201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b6000613a07602883613361565b9150613a12826139ab565b604082019050919050565b60006020820190508181036000830152613a36816139fa565b9050919050565b6000613a488261346b565b9150613a538361346b565b9250828201905080821115613a6b57613a6a61386e565b5b92915050565b7f4d757374206b656570206665657320617420343225206f72206c657373000000600082015250565b6000613aa7601d83613361565b9150613ab282613a71565b602082019050919050565b60006020820190508181036000830152613ad681613a9a565b9050919050565b7f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d2060008201527f6175746f6d617465644d61726b65744d616b6572506169727300000000000000602082015250565b6000613b39603983613361565b9150613b4482613add565b604082019050919050565b60006020820190508181036000830152613b6881613b2c565b9050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b6000613bcb602583613361565b9150613bd682613b6f565b604082019050919050565b60006020820190508181036000830152613bfa81613bbe565b9050919050565b7f43616e6e6f7420736574206d617857616c6c6574206c6f776572207468616e2060008201527f302e352500000000000000000000000000000000000000000000000000000000602082015250565b6000613c5d602483613361565b9150613c6882613c01565b604082019050919050565b60006020820190508181036000830152613c8c81613c50565b9050919050565b7f57726f6e6720616d6f756e740000000000000000000000000000000000000000600082015250565b6000613cc9600c83613361565b9150613cd482613c93565b602082019050919050565b60006020820190508181036000830152613cf881613cbc565b9050919050565b7f5377617020616d6f756e742063616e6e6f74206265206c6f776572207468616e60008201527f20302e3030312520746f74616c20737570706c792e0000000000000000000000602082015250565b6000613d5b603583613361565b9150613d6682613cff565b604082019050919050565b60006020820190508181036000830152613d8a81613d4e565b9050919050565b7f5377617020616d6f756e742063616e6e6f74206265206869676865722074686160008201527f6e20302e352520746f74616c20737570706c792e000000000000000000000000602082015250565b6000613ded603483613361565b9150613df882613d91565b604082019050919050565b60006020820190508181036000830152613e1c81613de0565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000613e7f602683613361565b9150613e8a82613e23565b604082019050919050565b60006020820190508181036000830152613eae81613e72565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000613f11602483613361565b9150613f1c82613eb5565b604082019050919050565b60006020820190508181036000830152613f4081613f04565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000613fa3602283613361565b9150613fae82613f47565b604082019050919050565b60006020820190508181036000830152613fd281613f96565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000614035602583613361565b915061404082613fd9565b604082019050919050565b6000602082019050818103600083015261406481614028565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b60006140c7602383613361565b91506140d28261406b565b604082019050919050565b600060208201905081810360008301526140f6816140ba565b9050919050565b7f54726164696e67206973206e6f74206163746976652e00000000000000000000600082015250565b6000614133601683613361565b915061413e826140fd565b602082019050919050565b6000602082019050818103600083015261416281614126565b9050919050565b7f5f7472616e736665723a3a205472616e736665722044656c617920656e61626c60008201527f65642e20204f6e6c79206f6e652070757263686173652070657220626c6f636b60208201527f20616c6c6f7765642e0000000000000000000000000000000000000000000000604082015250565b60006141eb604983613361565b91506141f682614169565b606082019050919050565b6000602082019050818103600083015261421a816141de565b9050919050565b7f427579207472616e7366657220616d6f756e742065786365656473207468652060008201527f6d617854782e0000000000000000000000000000000000000000000000000000602082015250565b600061427d602683613361565b915061428882614221565b604082019050919050565b600060208201905081810360008301526142ac81614270565b9050919050565b7f4d61782077616c6c657420657863656564656400000000000000000000000000600082015250565b60006142e9601383613361565b91506142f4826142b3565b602082019050919050565b60006020820190508181036000830152614318816142dc565b9050919050565b7f53656c6c207472616e7366657220616d6f756e7420657863656564732074686560008201527f206d617854782e00000000000000000000000000000000000000000000000000602082015250565b600061437b602783613361565b91506143868261431f565b604082019050919050565b600060208201905081810360008301526143aa8161436e565b9050919050565b60006143bc8261346b565b91506143c78361346b565b92508282039050818111156143df576143de61386e565b5b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000815190506144528161343f565b92915050565b60006020828403121561446e5761446d613408565b5b600061447c84828501614443565b91505092915050565b6000819050919050565b60006144aa6144a56144a084614485565b613517565b61346b565b9050919050565b6144ba8161448f565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6144f58161342d565b82525050565b600061450783836144ec565b60208301905092915050565b6000602082019050919050565b600061452b826144c0565b61453581856144cb565b9350614540836144dc565b8060005b8381101561457157815161455888826144fb565b975061456383614513565b925050600181019050614544565b5085935050505092915050565b600060a0820190506145936000830188613591565b6145a060208301876144b1565b81810360408301526145b28186614520565b90506145c1606083018561363b565b6145ce6080830184613591565b9695505050505050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b6000614634602683613361565b915061463f826145d8565b604082019050919050565b6000602082019050818103600083015261466381614627565b9050919050565b600081905092915050565b50565b600061468560008361466a565b915061469082614675565b600082019050919050565b60006146a682614678565b915081905091905056fea26469706673582212207d51b527c25ec260592f42405c7c4d53048b491dcd05d44f056e1f5d7e32f18e64736f6c63430008170033
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.