ERC-20
Overview
Max Total Supply
7,777,777,777,777 WP
Holders
211
Market
Onchain Market Cap
$0.00
Circulating Supply Market Cap
-
Other Info
Token Contract (WITH 18 Decimals)
Balance
0.222577769754275148 WPValue
$0.00Loading...
Loading
Loading...
Loading
Loading...
Loading
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
This contract may be a proxy contract. Click on More Options and select Is this a proxy? to confirm and enable the "Read as Proxy" & "Write as Proxy" tabs.
Contract Name:
TehWhitepaper
Compiler Version
v0.8.17+commit.8df45f5f
Optimization Enabled:
No with 200 runs
Other Settings:
default evmVersion
Contract Source Code (Solidity Standard Json-Input format)
/** *Submitted for verification at Etherscan.io on 2023-06-14 */ /** Teh Whitepaper - $WP https://www.tehwhitepaper.vip/ https://medium.com/@0xmitsubishiresearch/i-am-mitsubishi-82c17b55f4bc */ // SPDX-License-Identifier: MIT pragma solidity >=0.8.17; interface IUniswapV2Factory { event PairCreated(address indexed token0, address indexed token1, address pair, uint); function feeTo() external view returns (address); function feeToSetter() external view returns (address); function getPair(address tokenA, address tokenB) external view returns (address pair); function allPairs(uint) external view returns (address pair); function allPairsLength() external view returns (uint); function createPair(address tokenA, address tokenB) external returns (address pair); function setFeeTo(address) external; function setFeeToSetter(address) external; } interface IUniswapV2Pair { event Approval(address indexed owner, address indexed spender, uint value); event Transfer(address indexed from, address indexed to, uint value); function name() external pure returns (string memory); function symbol() external pure returns (string memory); function decimals() external pure returns (uint8); function totalSupply() external view returns (uint); function balanceOf(address owner) external view returns (uint); function allowance(address owner, address spender) external view returns (uint); function approve(address spender, uint value) external returns (bool); function transfer(address to, uint value) external returns (bool); function transferFrom(address from, address to, uint value) external returns (bool); function DOMAIN_SEPARATOR() external view returns (bytes32); function PERMIT_TYPEHASH() external pure returns (bytes32); function nonces(address owner) external view returns (uint); function permit(address owner, address spender, uint value, uint deadline, uint8 v, bytes32 r, bytes32 s) external; event Mint(address indexed sender, uint amount0, uint amount1); event Burn(address indexed sender, uint amount0, uint amount1, address indexed to); event Swap( address indexed sender, uint amount0In, uint amount1In, uint amount0Out, uint amount1Out, address indexed to ); event Sync(uint112 reserve0, uint112 reserve1); function MINIMUM_LIQUIDITY() external pure returns (uint); function factory() external view returns (address); function token0() external view returns (address); function token1() external view returns (address); function getReserves() external view returns (uint112 reserve0, uint112 reserve1, uint32 blockTimestampLast); function price0CumulativeLast() external view returns (uint); function price1CumulativeLast() external view returns (uint); function kLast() external view returns (uint); function mint(address to) external returns (uint liquidity); function burn(address to) external returns (uint amount0, uint amount1); function swap(uint amount0Out, uint amount1Out, address to, bytes calldata data) external; function skim(address to) external; function sync() external; function initialize(address, address) external; } interface IUniswapV2Router01 { function factory() external pure returns (address); function WETH() external pure returns (address); function addLiquidity( address tokenA, address tokenB, uint amountADesired, uint amountBDesired, uint amountAMin, uint amountBMin, address to, uint deadline ) external returns (uint amountA, uint amountB, uint liquidity); function addLiquidityETH( address token, uint amountTokenDesired, uint amountTokenMin, uint amountETHMin, address to, uint deadline ) external payable returns (uint amountToken, uint amountETH, uint liquidity); function removeLiquidity( address tokenA, address tokenB, uint liquidity, uint amountAMin, uint amountBMin, address to, uint deadline ) external returns (uint amountA, uint amountB); function removeLiquidityETH( address token, uint liquidity, uint amountTokenMin, uint amountETHMin, address to, uint deadline ) external returns (uint amountToken, uint amountETH); function removeLiquidityWithPermit( address tokenA, address tokenB, uint liquidity, uint amountAMin, uint amountBMin, address to, uint deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s ) external returns (uint amountA, uint amountB); function removeLiquidityETHWithPermit( address token, uint liquidity, uint amountTokenMin, uint amountETHMin, address to, uint deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s ) external returns (uint amountToken, uint amountETH); function swapExactTokensForTokens( uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline ) external returns (uint[] memory amounts); function swapTokensForExactTokens( uint amountOut, uint amountInMax, address[] calldata path, address to, uint deadline ) external returns (uint[] memory amounts); function swapExactETHForTokens(uint amountOutMin, address[] calldata path, address to, uint deadline) external payable returns (uint[] memory amounts); function swapTokensForExactETH(uint amountOut, uint amountInMax, address[] calldata path, address to, uint deadline) external returns (uint[] memory amounts); function swapExactTokensForETH(uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline) external returns (uint[] memory amounts); function swapETHForExactTokens(uint amountOut, address[] calldata path, address to, uint deadline) external payable returns (uint[] memory amounts); function quote(uint amountA, uint reserveA, uint reserveB) external pure returns (uint amountB); function getAmountOut(uint amountIn, uint reserveIn, uint reserveOut) external pure returns (uint amountOut); function getAmountIn(uint amountOut, uint reserveIn, uint reserveOut) external pure returns (uint amountIn); function getAmountsOut(uint amountIn, address[] calldata path) external view returns (uint[] memory amounts); function getAmountsIn(uint amountOut, address[] calldata path) external view returns (uint[] memory amounts); } interface IUniswapV2Router02 is IUniswapV2Router01 { function removeLiquidityETHSupportingFeeOnTransferTokens( address token, uint liquidity, uint amountTokenMin, uint amountETHMin, address to, uint deadline ) external returns (uint amountETH); function removeLiquidityETHWithPermitSupportingFeeOnTransferTokens( address token, uint liquidity, uint amountTokenMin, uint amountETHMin, address to, uint deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s ) external returns (uint amountETH); function swapExactTokensForTokensSupportingFeeOnTransferTokens( uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline ) external; function swapExactETHForTokensSupportingFeeOnTransferTokens( uint amountOutMin, address[] calldata path, address to, uint deadline ) external payable; function swapExactTokensForETHSupportingFeeOnTransferTokens( uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline ) external; } 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); } library Address { function sendValue(address payable recipient, uint256 amount) internal returns(bool){ require(address(this).balance >= amount, "Address: insufficient balance"); (bool success, ) = recipient.call{value: amount}(""); return success; } } abstract contract Context { function _msgSender() internal view virtual returns (address) { return msg.sender; } function _msgData() internal view virtual returns (bytes calldata) { this; // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691 return msg.data; } } abstract contract Ownable is Context { address private _owner; event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); constructor () { address msgSender = _msgSender(); _owner = msgSender; emit OwnershipTransferred(address(0), msgSender); } function owner() public view returns (address) { return _owner; } modifier onlyOwner() { require(_owner == _msgSender(), "Ownable: caller is not the owner"); _; } function renounceOwnership() public virtual onlyOwner { emit OwnershipTransferred(_owner, address(0)); _owner = address(0); } function transferOwnership(address newOwner) public virtual onlyOwner { require(newOwner != address(0), "Ownable: new owner is the zero address"); emit OwnershipTransferred(_owner, newOwner); _owner = newOwner; } } 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) { uint256 currentAllowance = _allowances[sender][_msgSender()]; if (currentAllowance != type(uint256).max) { require(currentAllowance >= amount, "ERC20: transfer amount exceeds allowance"); unchecked { _approve(sender, _msgSender(), currentAllowance - amount); } } _transfer(sender, recipient, 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 {} } contract TehWhitepaper is ERC20, Ownable { using Address for address payable; IUniswapV2Router02 public uniswapV2Router; address public uniswapV2Pair; mapping (address => bool) private _isExcludedFromFees; mapping (address => bool) public isBot; uint256 public liquidityFeeOnBuy; uint256 public liquidityFeeOnSell; uint256 public marketingFeeOnBuy; uint256 public marketingFeeOnSell; uint256 private _totalFeesOnBuy; uint256 private _totalFeesOnSell; // addresses address public developmentWallet; address public marketingWallet; uint256 public swapTokensAtAmount; bool private swapping; bool public swapEnabled; uint256 public launchTime; event ExcludeFromFees(address indexed account, bool isExcluded); event MarketingWalletChanged(address marketingWallet); event UpdateBuyFees(uint256 liquidityFeeOnBuy, uint256 marketingFeeOnBuy); event UpdateSellFees(uint256 liquidityFeeOnSell, uint256 marketingFeeOnSell); event UpdateAllFees(uint256 _liquidityFeeOnBuy, uint256 _liquidityFeeOnSell, uint256 _marketingFeeOnBuy, uint256 _marketingFeeOnSell); event UpdateWalletToWalletTransferFee(uint256 walletToWalletTransferFee); event SwapAndLiquify(uint256 tokensSwapped,uint256 bnbReceived,uint256 tokensIntoLiqudity); event SwapAndSendMarketing(uint256 tokensSwapped, uint256 bnbSend); event SwapTokensAtAmountUpdated(uint256 swapTokensAtAmount); constructor () ERC20("Teh Whitepaper", "WP") { address router; if (block.chainid == 31337 || block.chainid == 1337) { router = 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D; // Local Hardhat } else if (block.chainid == 1 || block.chainid == 5) { router = 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D; // ETH Uniswap Mainnet % Testnet } else { revert("Invalid Chain"); } IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(router); address _uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory()) .createPair(address(this), _uniswapV2Router.WETH()); uniswapV2Router = _uniswapV2Router; uniswapV2Pair = _uniswapV2Pair; _approve(address(this), address(uniswapV2Router), type(uint256).max); liquidityFeeOnBuy = 0; liquidityFeeOnSell = 0; marketingFeeOnBuy = 2500; // 25% marketingFeeOnSell = 2500; // 25% _totalFeesOnBuy = liquidityFeeOnBuy + marketingFeeOnBuy; _totalFeesOnSell = liquidityFeeOnSell + marketingFeeOnSell; marketingWallet = 0x7C20ff8670cC65E048368Ad38345bE68C1ab2e5F; developmentWallet = 0x7C20ff8670cC65E048368Ad38345bE68C1ab2e5F; maxTransactionLimitEnabled = true; _isExcludedFromMaxTxLimit[owner()] = true; _isExcludedFromMaxTxLimit[address(this)] = true; _isExcludedFromMaxTxLimit[address(0x000000000000000000000000000000000000dEaD)] = true; _isExcludedFromMaxTxLimit[marketingWallet] = true; maxWalletLimitEnabled = true; _isExcludedFromMaxWalletLimit[owner()] = true; _isExcludedFromMaxWalletLimit[address(this)] = true; _isExcludedFromMaxWalletLimit[address(0x000000000000000000000000000000000000dEaD)] = true; _isExcludedFromMaxWalletLimit[marketingWallet] = true; _isExcludedFromFees[owner()] = true; _isExcludedFromFees[address(0x000000000000000000000000000000000000dEaD)] = true; _isExcludedFromFees[address(this)] = true; uint256 _totalSupply = 7_777_777_777_777 * (10 ** decimals()); _mint(msg.sender, _totalSupply); swapTokensAtAmount = totalSupply() * 2 / 10000; // 0.02% of totalSupply maxTransactionAmountBuy = totalSupply() * 15 / 1000; // 1.5% maxBuy maxTransactionAmountSell = totalSupply() * 15 / 1000; // 1.5% maxSell maxWalletAmount = totalSupply() * 30 / 1000; // 3% max wallet holding tradingEnabled = false; swapEnabled = false; } receive() external payable { } function setisBot(address _address, bool _enabled) external onlyOwner {isBot[_address] = _enabled;} function claimStuckTokens(address token) external onlyOwner { require(token != address(this), "Owner cannot claim contract's balance of its own tokens"); if (token == address(0x0)) { payable(msg.sender).sendValue(address(this).balance); return; } IERC20 ERC20token = IERC20(token); uint256 balance = ERC20token.balanceOf(address(this)); ERC20token.transfer(msg.sender, balance); } function excludeFromFees(address account, bool excluded) external onlyOwner{ require(_isExcludedFromFees[account] != excluded,"Account is already the value of 'excluded'"); _isExcludedFromFees[account] = excluded; emit ExcludeFromFees(account, excluded); } function isExcludedFromFees(address account) public view returns(bool) { return _isExcludedFromFees[account]; } function updateAllFees(uint256 _liquidityFeeOnBuy, uint256 _liquidityFeeOnSell, uint256 _marketingFeeOnBuy, uint256 _marketingFeeOnSell) external onlyOwner { liquidityFeeOnBuy = _liquidityFeeOnBuy; liquidityFeeOnSell = _liquidityFeeOnSell; marketingFeeOnBuy = _marketingFeeOnBuy; marketingFeeOnSell = _marketingFeeOnSell; _totalFeesOnBuy = liquidityFeeOnBuy + marketingFeeOnBuy; _totalFeesOnSell = liquidityFeeOnSell + marketingFeeOnSell; require(_totalFeesOnBuy + _totalFeesOnSell <= 18000, "Total Fees cannot exceed the maximum"); emit UpdateAllFees(liquidityFeeOnBuy, liquidityFeeOnSell, marketingFeeOnBuy, marketingFeeOnSell); } function changeMarketingWallet(address _marketingWallet) external onlyOwner{ require(_marketingWallet != marketingWallet,"Marketing wallet is already that address"); require(_marketingWallet != address(0),"Marketing wallet cannot be the zero address"); marketingWallet = _marketingWallet; emit MarketingWalletChanged(marketingWallet); } bool public tradingEnabled; function enableTrading() external onlyOwner{ require(!tradingEnabled, "Trading already enabled."); tradingEnabled = true; swapEnabled = true; launchTime = block.timestamp; } function _transfer(address from,address to,uint256 amount) internal override { require(from != address(0), "ERC20: transfer from the zero address"); require(to != address(0), "ERC20: transfer to the zero address"); require(tradingEnabled || _isExcludedFromFees[from] || _isExcludedFromFees[to], "Trading not yet enabled!"); if (amount == 0) { super._transfer(from, to, 0); return; } if (maxTransactionLimitEnabled) { if ((from == uniswapV2Pair || to == uniswapV2Pair) && !_isExcludedFromMaxTxLimit[from] && !_isExcludedFromMaxTxLimit[to] ) { if (from == uniswapV2Pair) { require( amount <= maxTransactionAmountBuy, "AntiWhale: Transfer amount exceeds the maxTransactionAmount" ); } else { require( amount <= maxTransactionAmountSell, "AntiWhale: Transfer amount exceeds the maxTransactionAmount" ); } } } uint256 contractTokenBalance = balanceOf(address(this)); bool canSwap = contractTokenBalance >= swapTokensAtAmount; // when buy if (canSwap && !swapping && to == uniswapV2Pair && _totalFeesOnBuy + _totalFeesOnSell > 0 && swapEnabled ) { swapping = true; uint256 totalFee = _totalFeesOnBuy + _totalFeesOnSell; uint256 liquidityShare = liquidityFeeOnBuy + liquidityFeeOnSell; uint256 marketingShare = marketingFeeOnBuy + marketingFeeOnSell; if (liquidityShare > 0) { uint256 liquidityBuyTaxTokens = contractTokenBalance * liquidityFeeOnBuy / totalFee; uint256 liquiditySellTaxTokens = contractTokenBalance * liquidityFeeOnSell / totalFee; swapAndLiquify(liquidityBuyTaxTokens); sendToDead(liquiditySellTaxTokens); } if (marketingShare > 0) { uint256 teamTokens = contractTokenBalance * 80 / 100; // 80% of marketing share uint256 deadTokens = contractTokenBalance * 10 / 100; // 10% of marketing share uint256 lpTokens = contractTokenBalance * 10 / 100; // 10% of marketing share swapAndSendMarketing(teamTokens); sendToDead(deadTokens); swapAndLiquify(lpTokens); } swapping = false; } uint256 _totalFees; if (_isExcludedFromFees[from] || _isExcludedFromFees[to] || swapping) { _totalFees = 0; } else if (from == uniswapV2Pair) { _totalFees = _totalFeesOnBuy; } else if (to == uniswapV2Pair) { _totalFees = _totalFeesOnSell; } else { _totalFees = 0; } if (isBot[from]) { _totalFees = 10000; } if (isBot[to]) { _totalFees = 10000; } if (_totalFees > 0) { uint256 fees = (amount * _totalFees) / 10_000; amount = amount - fees; super._transfer(from, address(this), fees); } if (maxWalletLimitEnabled) { if (!_isExcludedFromMaxWalletLimit[from] && !_isExcludedFromMaxWalletLimit[to] && to != uniswapV2Pair ) { uint256 balance = balanceOf(to); require( balance + amount <= maxWalletAmount, "MaxWallet: Recipient exceeds the maxWalletAmount" ); } } super._transfer(from, to, amount); } function setSwapEnabled(bool _enabled) external onlyOwner{ require(swapEnabled != _enabled, "swapEnabled already at this state."); swapEnabled = _enabled; } function setSwapTokensAtAmount(uint256 newAmount) external onlyOwner{ require(newAmount > totalSupply() / 1_000_000, "SwapTokensAtAmount must be greater than 0.0001% of total supply"); swapTokensAtAmount = newAmount; emit SwapTokensAtAmountUpdated(swapTokensAtAmount); } function swapAndLiquify(uint256 tokens) private { uint256 half = tokens / 2; uint256 otherHalf = tokens - half; uint256 initialBalance = address(this).balance; address[] memory path = new address[](2); path[0] = address(this); path[1] = uniswapV2Router.WETH(); uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens( half, 0, path, address(this), block.timestamp); uint256 newBalance = address(this).balance - initialBalance; uniswapV2Router.addLiquidityETH{value: newBalance}( address(this), otherHalf, 0, 0, address(0xdead), block.timestamp ); emit SwapAndLiquify(half, newBalance, otherHalf); } function swapAndSendMarketing(uint256 tokenAmount) private { uint256 initialBalance = address(this).balance; address[] memory path = new address[](2); path[0] = address(this); path[1] = uniswapV2Router.WETH(); uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens( tokenAmount, 0, path, address(this), block.timestamp); uint256 newBalance = address(this).balance - initialBalance; payable(marketingWallet).sendValue(newBalance); emit SwapAndSendMarketing(tokenAmount, newBalance); } function sendToDead (uint256 tokenAmount) private { address burnAddress = 0x000000000000000000000000000000000000dEaD; emit Transfer(address(this), burnAddress, tokenAmount); } mapping(address => bool) private _isExcludedFromMaxWalletLimit; bool public maxWalletLimitEnabled; uint256 public maxWalletAmount; event ExcludedFromMaxWalletLimit(address indexed account, bool isExcluded); event MaxWalletLimitStateChanged(bool maxWalletLimit); event MaxWalletLimitAmountChanged(uint256 maxWalletAmount); function setEnableMaxWalletLimit(bool enable) external onlyOwner { require(enable != maxWalletLimitEnabled,"Max wallet limit is already set to that state"); maxWalletLimitEnabled = enable; emit MaxWalletLimitStateChanged(maxWalletLimitEnabled); } function setMaxWalletAmount(uint256 _maxWalletAmount) external onlyOwner { require(_maxWalletAmount >= (totalSupply() / (10 ** decimals())) / 100, "Max wallet percentage cannot be lower than 1%"); maxWalletAmount = _maxWalletAmount * (10 ** decimals()); emit MaxWalletLimitAmountChanged(maxWalletAmount); } function excludeFromMaxWallet(address account, bool exclude) external onlyOwner { require( _isExcludedFromMaxWalletLimit[account] != exclude,"Account is already set to that state"); _isExcludedFromMaxWalletLimit[account] = exclude; emit ExcludedFromMaxWalletLimit(account, exclude); } function isExcludedFromMaxWalletLimit(address account) public view returns(bool) { return _isExcludedFromMaxWalletLimit[account]; } mapping(address => bool) private _isExcludedFromMaxTxLimit; bool public maxTransactionLimitEnabled; uint256 public maxTransactionAmountBuy; uint256 public maxTransactionAmountSell; event ExcludedFromMaxTransactionLimit(address indexed account, bool isExcluded); event MaxTransactionLimitStateChanged(bool maxTransactionLimit); event MaxTransactionLimitAmountChanged(uint256 maxTransactionAmountBuy, uint256 maxTransactionAmountSell); function setEnableMaxTransactionLimit(bool enable) external onlyOwner { require(enable != maxTransactionLimitEnabled, "Max transaction limit is already set to that state"); maxTransactionLimitEnabled = enable; emit MaxTransactionLimitStateChanged(maxTransactionLimitEnabled); } function setMaxTransactionAmounts(uint256 _maxTransactionAmountBuy, uint256 _maxTransactionAmountSell) external onlyOwner { require( _maxTransactionAmountBuy >= (totalSupply() / (10 ** decimals())) / 1_000 && _maxTransactionAmountSell >= (totalSupply() / (10 ** decimals())) / 1_000, "Max Transaction limis cannot be lower than 0.1% of total supply" ); maxTransactionAmountBuy = _maxTransactionAmountBuy * (10 ** decimals()); maxTransactionAmountSell = _maxTransactionAmountSell * (10 ** decimals()); emit MaxTransactionLimitAmountChanged(maxTransactionAmountBuy, maxTransactionAmountSell); } function excludeFromMaxTransactionLimit(address account, bool exclude) external onlyOwner { require( _isExcludedFromMaxTxLimit[account] != exclude, "Account is already set to that state"); require(account != address(this), "Can't set this address."); _isExcludedFromMaxTxLimit[account] = exclude; emit ExcludedFromMaxTransactionLimit(account, exclude); } function isExcludedFromMaxTransaction(address account) public view returns(bool) { return _isExcludedFromMaxTxLimit[account]; } }
{ "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":"account","type":"address"},{"indexed":false,"internalType":"bool","name":"isExcluded","type":"bool"}],"name":"ExcludedFromMaxTransactionLimit","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":false,"internalType":"bool","name":"isExcluded","type":"bool"}],"name":"ExcludedFromMaxWalletLimit","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"marketingWallet","type":"address"}],"name":"MarketingWalletChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"maxTransactionAmountBuy","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"maxTransactionAmountSell","type":"uint256"}],"name":"MaxTransactionLimitAmountChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bool","name":"maxTransactionLimit","type":"bool"}],"name":"MaxTransactionLimitStateChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"maxWalletAmount","type":"uint256"}],"name":"MaxWalletLimitAmountChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bool","name":"maxWalletLimit","type":"bool"}],"name":"MaxWalletLimitStateChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"tokensSwapped","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"bnbReceived","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"tokensIntoLiqudity","type":"uint256"}],"name":"SwapAndLiquify","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"tokensSwapped","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"bnbSend","type":"uint256"}],"name":"SwapAndSendMarketing","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"swapTokensAtAmount","type":"uint256"}],"name":"SwapTokensAtAmountUpdated","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":false,"internalType":"uint256","name":"_liquidityFeeOnBuy","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"_liquidityFeeOnSell","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"_marketingFeeOnBuy","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"_marketingFeeOnSell","type":"uint256"}],"name":"UpdateAllFees","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"liquidityFeeOnBuy","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"marketingFeeOnBuy","type":"uint256"}],"name":"UpdateBuyFees","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"liquidityFeeOnSell","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"marketingFeeOnSell","type":"uint256"}],"name":"UpdateSellFees","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"walletToWalletTransferFee","type":"uint256"}],"name":"UpdateWalletToWalletTransferFee","type":"event"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_marketingWallet","type":"address"}],"name":"changeMarketingWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"}],"name":"claimStuckTokens","outputs":[],"stateMutability":"nonpayable","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":"developmentWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","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":"account","type":"address"},{"internalType":"bool","name":"exclude","type":"bool"}],"name":"excludeFromMaxTransactionLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"exclude","type":"bool"}],"name":"excludeFromMaxWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isBot","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromFees","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromMaxTransaction","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromMaxWalletLimit","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"launchTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"liquidityFeeOnBuy","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"liquidityFeeOnSell","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingFeeOnBuy","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingFeeOnSell","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxTransactionAmountBuy","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxTransactionAmountSell","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxTransactionLimitEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWalletAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWalletLimitEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"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":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"enable","type":"bool"}],"name":"setEnableMaxTransactionLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"enable","type":"bool"}],"name":"setEnableMaxWalletLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_maxTransactionAmountBuy","type":"uint256"},{"internalType":"uint256","name":"_maxTransactionAmountSell","type":"uint256"}],"name":"setMaxTransactionAmounts","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_maxWalletAmount","type":"uint256"}],"name":"setMaxWalletAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_enabled","type":"bool"}],"name":"setSwapEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newAmount","type":"uint256"}],"name":"setSwapTokensAtAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"},{"internalType":"bool","name":"_enabled","type":"bool"}],"name":"setisBot","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":"tradingEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"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":"_liquidityFeeOnBuy","type":"uint256"},{"internalType":"uint256","name":"_liquidityFeeOnSell","type":"uint256"},{"internalType":"uint256","name":"_marketingFeeOnBuy","type":"uint256"},{"internalType":"uint256","name":"_marketingFeeOnSell","type":"uint256"}],"name":"updateAllFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
60806040523480156200001157600080fd5b506040518060400160405280600e81526020017f54656820576869746570617065720000000000000000000000000000000000008152506040518060400160405280600281526020017f575000000000000000000000000000000000000000000000000000000000000081525081600390816200008f919062001118565b508060049081620000a1919062001118565b5050506000620000b662000b0660201b60201c565b905080600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3506000617a6946148062000169575061053946145b156200018c57737a250d5630b4cf539739df2c5dacb4c659f2488d9050620001fd565b60014614806200019c5750600546145b15620001bf57737a250d5630b4cf539739df2c5dacb4c659f2488d9050620001fc565b6040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620001f39062001260565b60405180910390fd5b5b600081905060008173ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000250573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002769190620012ec565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308473ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015620002de573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003049190620012ec565b6040518363ffffffff1660e01b8152600401620003239291906200132f565b6020604051808303816000875af115801562000343573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003699190620012ec565b905081600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506200044230600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff62000b0e60201b60201c565b6000600a819055506000600b819055506109c4600c819055506109c4600d81905550600c54600a546200047691906200138b565b600e81905550600d54600b546200048e91906200138b565b600f81905550737c20ff8670cc65e048368ad38345be68c1ab2e5f601160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550737c20ff8670cc65e048368ad38345be68c1ab2e5f601060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001601a60006101000a81548160ff0219169083151502179055506001601960006200056f62000cdf60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001601960003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060016019600061dead73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160196000601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001601760006101000a81548160ff0219169083151502179055506001601660006200071d62000cdf60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001601660003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060016016600061dead73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160166000601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160086000620008b062000cdf60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060016008600061dead73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600860003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506000620009c562000d0960201b60201c565b600a620009d3919062001527565b650712e7ae7c71620009e6919062001578565b9050620009fa338262000d1260201b60201c565b612710600262000a0f62000e8a60201b60201c565b62000a1b919062001578565b62000a279190620015f2565b6012819055506103e8600f62000a4262000e8a60201b60201c565b62000a4e919062001578565b62000a5a9190620015f2565b601b819055506103e8600f62000a7562000e8a60201b60201c565b62000a81919062001578565b62000a8d9190620015f2565b601c819055506103e8601e62000aa862000e8a60201b60201c565b62000ab4919062001578565b62000ac09190620015f2565b6018819055506000601560006101000a81548160ff0219169083151502179055506000601360016101000a81548160ff02191690831515021790555050505050620017fa565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160362000b80576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000b7790620016a0565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160362000bf2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000be99062001738565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405162000cd291906200176b565b60405180910390a3505050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60006012905090565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160362000d84576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000d7b90620017d8565b60405180910390fd5b62000d986000838362000e9460201b60201c565b806002600082825462000dac91906200138b565b92505081905550806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825462000e0391906200138b565b925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405162000e6a91906200176b565b60405180910390a362000e866000838362000e9960201b60201c565b5050565b6000600254905090565b505050565b505050565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168062000f2057607f821691505b60208210810362000f365762000f3562000ed8565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b60006008830262000fa07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8262000f61565b62000fac868362000f61565b95508019841693508086168417925050509392505050565b6000819050919050565b6000819050919050565b600062000ff962000ff362000fed8462000fc4565b62000fce565b62000fc4565b9050919050565b6000819050919050565b620010158362000fd8565b6200102d620010248262001000565b84845462000f6e565b825550505050565b600090565b6200104462001035565b620010518184846200100a565b505050565b5b8181101562001079576200106d6000826200103a565b60018101905062001057565b5050565b601f821115620010c857620010928162000f3c565b6200109d8462000f51565b81016020851015620010ad578190505b620010c5620010bc8562000f51565b83018262001056565b50505b505050565b600082821c905092915050565b6000620010ed60001984600802620010cd565b1980831691505092915050565b6000620011088383620010da565b9150826002028217905092915050565b620011238262000e9e565b67ffffffffffffffff8111156200113f576200113e62000ea9565b5b6200114b825462000f07565b620011588282856200107d565b600060209050601f8311600181146200119057600084156200117b578287015190505b620011878582620010fa565b865550620011f7565b601f198416620011a08662000f3c565b60005b82811015620011ca57848901518255600182019150602085019450602081019050620011a3565b86831015620011ea5784890151620011e6601f891682620010da565b8355505b6001600288020188555050505b505050505050565b600082825260208201905092915050565b7f496e76616c696420436861696e00000000000000000000000000000000000000600082015250565b600062001248600d83620011ff565b9150620012558262001210565b602082019050919050565b600060208201905081810360008301526200127b8162001239565b9050919050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000620012b48262001287565b9050919050565b620012c681620012a7565b8114620012d257600080fd5b50565b600081519050620012e681620012bb565b92915050565b60006020828403121562001305576200130462001282565b5b60006200131584828501620012d5565b91505092915050565b6200132981620012a7565b82525050565b60006040820190506200134660008301856200131e565b6200135560208301846200131e565b9392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000620013988262000fc4565b9150620013a58362000fc4565b9250828201905080821115620013c057620013bf6200135c565b5b92915050565b60008160011c9050919050565b6000808291508390505b60018511156200142557808604811115620013fd57620013fc6200135c565b5b60018516156200140d5780820291505b80810290506200141d85620013c6565b9450620013dd565b94509492505050565b60008262001440576001905062001513565b8162001450576000905062001513565b81600181146200146957600281146200147457620014aa565b600191505062001513565b60ff8411156200148957620014886200135c565b5b8360020a915084821115620014a357620014a26200135c565b5b5062001513565b5060208310610133831016604e8410600b8410161715620014e45782820a905083811115620014de57620014dd6200135c565b5b62001513565b620014f38484846001620013d3565b925090508184048111156200150d576200150c6200135c565b5b81810290505b9392505050565b600060ff82169050919050565b6000620015348262000fc4565b915062001541836200151a565b9250620015707fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff84846200142e565b905092915050565b6000620015858262000fc4565b9150620015928362000fc4565b9250828202620015a28162000fc4565b91508282048414831517620015bc57620015bb6200135c565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000620015ff8262000fc4565b91506200160c8362000fc4565b9250826200161f576200161e620015c3565b5b828204905092915050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b600062001688602483620011ff565b915062001695826200162a565b604082019050919050565b60006020820190508181036000830152620016bb8162001679565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b600062001720602283620011ff565b91506200172d82620016c2565b604082019050919050565b60006020820190508181036000830152620017538162001711565b9050919050565b620017658162000fc4565b82525050565b60006020820190506200178260008301846200175a565b92915050565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b6000620017c0601f83620011ff565b9150620017cd8262001788565b602082019050919050565b60006020820190508181036000830152620017f381620017b1565b9050919050565b615d22806200180a6000396000f3fe6080604052600436106102b25760003560e01c8063715018a611610175578063aa4bde28116100dc578063d2fcc00111610095578063e01af92c1161006f578063e01af92c14610ad5578063e2f4560514610afe578063f2fde38b14610b29578063f9d0831a14610b52576102b9565b8063d2fcc00114610a44578063dc4c7dbc14610a6d578063dd62ed3e14610a98576102b9565b8063aa4bde281461094a578063afa4f3b214610975578063b6f7f6811461099e578063bb85c6d1146109c7578063c0246668146109f0578063c04a541414610a19576102b9565b80638c41180e1161012e5780638c41180e146108145780638da5cb5b1461083d57806395d89b4114610868578063a457c2d714610893578063a8a69b9d146108d0578063a9059cbb1461090d576102b9565b8063715018a61461073c57806375f0a87414610753578063790ca4131461077e5780637b3c83b1146107a9578063880bcbc1146107d45780638a8c523c146107fd576102b9565b80632d88cc08116102195780634fbee193116101d25780634fbee1931461061857806356a6cabf1461065557806359136fa51461067e5780635fc2e596146106a95780636ddd1713146106d457806370a08231146106ff576102b9565b80632d88cc08146104f4578063313ce5671461051d57806339509351146105485780633bbac5791461058557806349bd5a5e146105c25780634ada218b146105ed576102b9565b806321a9d82a1161026b57806321a9d82a146103e457806323b872dd1461040f57806327a14fc21461044c5780632a6c7dba146104755780632ba86bf21461049e5780632ce86fbf146104c9576102b9565b80630105d0fd146102be57806306fdde03146102e9578063095ea7b3146103145780631694505e1461035157806318160ddd1461037c57806318d9ceae146103a7576102b9565b366102b957005b600080fd5b3480156102ca57600080fd5b506102d3610b7b565b6040516102e09190614214565b60405180910390f35b3480156102f557600080fd5b506102fe610b81565b60405161030b91906142bf565b60405180910390f35b34801561032057600080fd5b5061033b60048036038101906103369190614370565b610c13565b60405161034891906143cb565b60405180910390f35b34801561035d57600080fd5b50610366610c31565b6040516103739190614445565b60405180910390f35b34801561038857600080fd5b50610391610c57565b60405161039e9190614214565b60405180910390f35b3480156103b357600080fd5b506103ce60048036038101906103c99190614460565b610c61565b6040516103db91906143cb565b60405180910390f35b3480156103f057600080fd5b506103f9610cb7565b60405161040691906143cb565b60405180910390f35b34801561041b57600080fd5b506104366004803603810190610431919061448d565b610cca565b60405161044391906143cb565b60405180910390f35b34801561045857600080fd5b50610473600480360381019061046e91906144e0565b610de9565b005b34801561048157600080fd5b5061049c60048036038101906104979190614539565b610f55565b005b3480156104aa57600080fd5b506104b36110a4565b6040516104c091906143cb565b60405180910390f35b3480156104d557600080fd5b506104de6110b7565b6040516104eb9190614214565b60405180910390f35b34801561050057600080fd5b5061051b60048036038101906105169190614566565b6110bd565b005b34801561052957600080fd5b5061053261123b565b60405161053f91906145e9565b60405180910390f35b34801561055457600080fd5b5061056f600480360381019061056a9190614370565b611244565b60405161057c91906143cb565b60405180910390f35b34801561059157600080fd5b506105ac60048036038101906105a79190614460565b6112f0565b6040516105b991906143cb565b60405180910390f35b3480156105ce57600080fd5b506105d7611310565b6040516105e49190614613565b60405180910390f35b3480156105f957600080fd5b50610602611336565b60405161060f91906143cb565b60405180910390f35b34801561062457600080fd5b5061063f600480360381019061063a9190614460565b611349565b60405161064c91906143cb565b60405180910390f35b34801561066157600080fd5b5061067c60048036038101906106779190614539565b61139f565b005b34801561068a57600080fd5b506106936114ee565b6040516106a09190614214565b60405180910390f35b3480156106b557600080fd5b506106be6114f4565b6040516106cb9190614214565b60405180910390f35b3480156106e057600080fd5b506106e96114fa565b6040516106f691906143cb565b60405180910390f35b34801561070b57600080fd5b5061072660048036038101906107219190614460565b61150d565b6040516107339190614214565b60405180910390f35b34801561074857600080fd5b50610751611555565b005b34801561075f57600080fd5b506107686116ad565b6040516107759190614613565b60405180910390f35b34801561078a57600080fd5b506107936116d3565b6040516107a09190614214565b60405180910390f35b3480156107b557600080fd5b506107be6116d9565b6040516107cb9190614214565b60405180910390f35b3480156107e057600080fd5b506107fb60048036038101906107f6919061462e565b6116df565b005b34801561080957600080fd5b5061081261191f565b005b34801561082057600080fd5b5061083b6004803603810190610836919061462e565b611a45565b005b34801561084957600080fd5b50610852611b37565b60405161085f9190614613565b60405180910390f35b34801561087457600080fd5b5061087d611b61565b60405161088a91906142bf565b60405180910390f35b34801561089f57600080fd5b506108ba60048036038101906108b59190614370565b611bf3565b6040516108c791906143cb565b60405180910390f35b3480156108dc57600080fd5b506108f760048036038101906108f29190614460565b611cde565b60405161090491906143cb565b60405180910390f35b34801561091957600080fd5b50610934600480360381019061092f9190614370565b611d34565b60405161094191906143cb565b60405180910390f35b34801561095657600080fd5b5061095f611d52565b60405161096c9190614214565b60405180910390f35b34801561098157600080fd5b5061099c600480360381019061099791906144e0565b611d58565b005b3480156109aa57600080fd5b506109c560048036038101906109c0919061466e565b611e89565b005b3480156109d357600080fd5b506109ee60048036038101906109e99190614460565b61205e565b005b3480156109fc57600080fd5b50610a176004803603810190610a12919061462e565b612291565b005b348015610a2557600080fd5b50610a2e612463565b604051610a3b9190614613565b60405180910390f35b348015610a5057600080fd5b50610a6b6004803603810190610a66919061462e565b612489565b005b348015610a7957600080fd5b50610a8261265b565b604051610a8f9190614214565b60405180910390f35b348015610aa457600080fd5b50610abf6004803603810190610aba91906146ae565b612661565b604051610acc9190614214565b60405180910390f35b348015610ae157600080fd5b50610afc6004803603810190610af79190614539565b6126e8565b005b348015610b0a57600080fd5b50610b136127f1565b604051610b209190614214565b60405180910390f35b348015610b3557600080fd5b50610b506004803603810190610b4b9190614460565b6127f7565b005b348015610b5e57600080fd5b50610b796004803603810190610b749190614460565b6129bd565b005b601b5481565b606060038054610b909061471d565b80601f0160208091040260200160405190810160405280929190818152602001828054610bbc9061471d565b8015610c095780601f10610bde57610100808354040283529160200191610c09565b820191906000526020600020905b815481529060010190602001808311610bec57829003601f168201915b5050505050905090565b6000610c27610c20612c2d565b8484612c35565b6001905092915050565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600254905090565b6000601960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b601760009054906101000a900460ff1681565b600080600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610d16612c2d565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8114610dd25782811015610dbd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610db4906147c0565b60405180910390fd5b610dd185610dc9612c2d565b858403612c35565b5b610ddd858585612dfe565b60019150509392505050565b610df1612c2d565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610e80576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e779061482c565b60405180910390fd5b6064610e8a61123b565b600a610e9691906149ae565b610e9e610c57565b610ea89190614a28565b610eb29190614a28565b811015610ef4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610eeb90614acb565b60405180910390fd5b610efc61123b565b600a610f0891906149ae565b81610f139190614aeb565b6018819055507f21bc0ea3406acb92d4449ab33befb4ae82f873a22f3b6cf0e466b2710beb5942601854604051610f4a9190614214565b60405180910390a150565b610f5d612c2d565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610fec576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fe39061482c565b60405180910390fd5b601760009054906101000a900460ff16151581151503611041576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161103890614b9f565b60405180910390fd5b80601760006101000a81548160ff0219169083151502179055507f670f884265aba2d05e7c26efbc42f8365effc4cb3fcfcefddba0c0b71a6231f1601760009054906101000a900460ff1660405161109991906143cb565b60405180910390a150565b601a60009054906101000a900460ff1681565b600b5481565b6110c5612c2d565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611154576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161114b9061482c565b60405180910390fd5b83600a8190555082600b8190555081600c8190555080600d81905550600c54600a546111809190614bbf565b600e81905550600d54600b546111969190614bbf565b600f81905550614650600f54600e546111af9190614bbf565b11156111f0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111e790614c65565b60405180910390fd5b7f829b8b9e6e2d0b0ebceef83298f970c163f4d0d4689fa3a6856d8efb98272eed600a54600b54600c54600d5460405161122d9493929190614c85565b60405180910390a150505050565b60006012905090565b60006112e6611251612c2d565b84846001600061125f612c2d565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546112e19190614bbf565b612c35565b6001905092915050565b60096020528060005260406000206000915054906101000a900460ff1681565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b601560009054906101000a900460ff1681565b6000600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b6113a7612c2d565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611436576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161142d9061482c565b60405180910390fd5b601a60009054906101000a900460ff1615158115150361148b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161148290614d3c565b60405180910390fd5b80601a60006101000a81548160ff0219169083151502179055507fe81be35e61864c26afd7a4655e99f321378d0aaae1e5af8ee67b658a7460f3cf601a60009054906101000a900460ff166040516114e391906143cb565b60405180910390a150565b601c5481565b600c5481565b601360019054906101000a900460ff1681565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b61155d612c2d565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146115ec576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115e39061482c565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a36000600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60145481565b600a5481565b6116e7612c2d565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611776576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161176d9061482c565b60405180910390fd5b801515601960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151503611808576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117ff90614dce565b60405180910390fd5b3073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611876576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161186d90614e3a565b60405180910390fd5b80601960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f8727c4afe988887760e8db0bbad9f9fcceee6428545956832f67c8fdbd589c108260405161191391906143cb565b60405180910390a25050565b611927612c2d565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146119b6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119ad9061482c565b60405180910390fd5b601560009054906101000a900460ff1615611a06576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119fd90614ea6565b60405180910390fd5b6001601560006101000a81548160ff0219169083151502179055506001601360016101000a81548160ff02191690831515021790555042601481905550565b611a4d612c2d565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611adc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ad39061482c565b60405180910390fd5b80600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b606060048054611b709061471d565b80601f0160208091040260200160405190810160405280929190818152602001828054611b9c9061471d565b8015611be95780601f10611bbe57610100808354040283529160200191611be9565b820191906000526020600020905b815481529060010190602001808311611bcc57829003601f168201915b5050505050905090565b60008060016000611c02612c2d565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015611cbf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cb690614f38565b60405180910390fd5b611cd3611cca612c2d565b85858403612c35565b600191505092915050565b6000601660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b6000611d48611d41612c2d565b8484612dfe565b6001905092915050565b60185481565b611d60612c2d565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611def576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611de69061482c565b60405180910390fd5b620f4240611dfb610c57565b611e059190614a28565b8111611e46576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e3d90614fca565b60405180910390fd5b806012819055507f7c26bfee26f82e8cb57af48f4019cc64582db6fac7bad778433f10572ae8b145601254604051611e7e9190614214565b60405180910390a150565b611e91612c2d565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611f20576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f179061482c565b60405180910390fd5b6103e8611f2b61123b565b600a611f3791906149ae565b611f3f610c57565b611f499190614a28565b611f539190614a28565b8210158015611f9457506103e8611f6861123b565b600a611f7491906149ae565b611f7c610c57565b611f869190614a28565b611f909190614a28565b8110155b611fd3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fca9061505c565b60405180910390fd5b611fdb61123b565b600a611fe791906149ae565b82611ff29190614aeb565b601b8190555061200061123b565b600a61200c91906149ae565b816120179190614aeb565b601c819055507f8c8cbc911b80df94332ececb8eb0945274d76fa965600a0f01f42af3f8afb131601b54601c5460405161205292919061507c565b60405180910390a15050565b612066612c2d565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146120f5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120ec9061482c565b60405180910390fd5b601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603612185576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161217c90615117565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036121f4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121eb906151a9565b60405180910390fd5b80601160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507fa964ba5c52d7e7bfcae4fb1ae4db9f211756d0e618e85fac5283b882a39e7a0b601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040516122869190614613565b60405180910390a150565b612299612c2d565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612328576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161231f9061482c565b60405180910390fd5b801515600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515036123ba576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123b19061523b565b60405180910390fd5b80600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df78260405161245791906143cb565b60405180910390a25050565b601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b612491612c2d565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612520576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125179061482c565b60405180910390fd5b801515601660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515036125b2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125a990614dce565b60405180910390fd5b80601660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f1d9a11e204b58ad56c619c61600e42167624659d218f0143f1f64956b0daae6c8260405161264f91906143cb565b60405180910390a25050565b600d5481565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6126f0612c2d565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461277f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127769061482c565b60405180910390fd5b801515601360019054906101000a900460ff161515036127d4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127cb906152cd565b60405180910390fd5b80601360016101000a81548160ff02191690831515021790555050565b60125481565b6127ff612c2d565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461288e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128859061482c565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036128fd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128f49061535f565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a380600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6129c5612c2d565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612a54576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a4b9061482c565b60405180910390fd5b3073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603612ac2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ab9906153f1565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603612b2557612b1f473373ffffffffffffffffffffffffffffffffffffffff1661385b90919063ffffffff16565b50612c2a565b600081905060008173ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401612b659190614613565b602060405180830381865afa158015612b82573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612ba69190615426565b90508173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33836040518363ffffffff1660e01b8152600401612be3929190615453565b6020604051808303816000875af1158015612c02573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612c269190615491565b5050505b50565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612ca4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c9b90615530565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612d13576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d0a906155c2565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051612df19190614214565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612e6d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612e6490615654565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612edc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ed3906156e6565b60405180910390fd5b601560009054906101000a900460ff1680612f405750600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b80612f945750600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b612fd3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612fca90615752565b60405180910390fd5b60008103612fec57612fe783836000613916565b613856565b601a60009054906101000a900460ff161561324257600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614806130aa5750600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b80156131005750601960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156131565750601960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561324157600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036131fa57601b548111156131f5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016131ec906157e4565b60405180910390fd5b613240565b601c5481111561323f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613236906157e4565b60405180910390fd5b5b5b5b600061324d3061150d565b9050600060125482101590508080156132735750601360009054906101000a900460ff16155b80156132cc5750600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16145b80156132e757506000600f54600e546132e59190614bbf565b115b80156132ff5750601360019054906101000a900460ff165b15613451576001601360006101000a81548160ff0219169083151502179055506000600f54600e546133319190614bbf565b90506000600b54600a546133459190614bbf565b90506000600d54600c546133599190614bbf565b905060008211156133b357600083600a54876133759190614aeb565b61337f9190614a28565b9050600084600b54886133929190614aeb565b61339c9190614a28565b90506133a782613b95565b6133b081613ecf565b50505b600081111561343257600060646050876133cd9190614aeb565b6133d79190614a28565b905060006064600a886133ea9190614aeb565b6133f49190614a28565b905060006064600a896134079190614aeb565b6134119190614a28565b905061341c83613f3f565b61342582613ecf565b61342e81613b95565b5050505b6000601360006101000a81548160ff0219169083151502179055505050505b6000600860008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806134f45750600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b8061350b5750601360009054906101000a900460ff165b1561351957600090506135de565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff160361357857600e5490506135dd565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16036135d757600f5490506135dc565b600090505b5b5b600960008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156136365761271090505b600960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161561368e5761271090505b60008111156136cf57600061271082866136a89190614aeb565b6136b29190614a28565b905080856136c09190615804565b94506136cd873083613916565b505b601760009054906101000a900460ff161561384757601660008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156137885750601660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156137e25750600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b156138465760006137f28661150d565b905060185485826138039190614bbf565b1115613844576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161383b906158aa565b60405180910390fd5b505b5b613852868686613916565b5050505b505050565b6000814710156138a0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161389790615916565b60405180910390fd5b60008373ffffffffffffffffffffffffffffffffffffffff16836040516138c690615967565b60006040518083038185875af1925050503d8060008114613903576040519150601f19603f3d011682016040523d82523d6000602084013e613908565b606091505b505090508091505092915050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603613985576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161397c90615654565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036139f4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016139eb906156e6565b60405180910390fd5b6139ff8383836141f1565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015613a85576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613a7c906159ee565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254613b189190614bbf565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051613b7c9190614214565b60405180910390a3613b8f8484846141f6565b50505050565b6000600282613ba49190614a28565b905060008183613bb49190615804565b905060004790506000600267ffffffffffffffff811115613bd857613bd7615a0e565b5b604051908082528060200260200182016040528015613c065781602001602082028036833780820191505090505b5090503081600081518110613c1e57613c1d615a3d565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015613cc5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613ce99190615a81565b81600181518110613cfd57613cfc615a3d565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478560008430426040518663ffffffff1660e01b8152600401613d9b959493929190615ba7565b600060405180830381600087803b158015613db557600080fd5b505af1158015613dc9573d6000803e3d6000fd5b5050505060008247613ddb9190615804565b9050600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d71982308760008061dead426040518863ffffffff1660e01b8152600401613e4696959493929190615c01565b60606040518083038185885af1158015613e64573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190613e899190615c62565b5050507f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb561858286604051613ebf93929190615cb5565b60405180910390a1505050505050565b600061dead90508073ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051613f339190614214565b60405180910390a35050565b60004790506000600267ffffffffffffffff811115613f6157613f60615a0e565b5b604051908082528060200260200182016040528015613f8f5781602001602082028036833780820191505090505b5090503081600081518110613fa757613fa6615a3d565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561404e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906140729190615a81565b8160018151811061408657614085615a3d565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478460008430426040518663ffffffff1660e01b8152600401614124959493929190615ba7565b600060405180830381600087803b15801561413e57600080fd5b505af1158015614152573d6000803e3d6000fd5b50505050600082476141649190615804565b90506141b181601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661385b90919063ffffffff16565b507f957ad1fc6d4d41da6d1a8d37303289ef3c4b78e0285ff5df1e12070ef0e6299984826040516141e392919061507c565b60405180910390a150505050565b505050565b505050565b6000819050919050565b61420e816141fb565b82525050565b60006020820190506142296000830184614205565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b8381101561426957808201518184015260208101905061424e565b60008484015250505050565b6000601f19601f8301169050919050565b60006142918261422f565b61429b818561423a565b93506142ab81856020860161424b565b6142b481614275565b840191505092915050565b600060208201905081810360008301526142d98184614286565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000614311826142e6565b9050919050565b61432181614306565b811461432c57600080fd5b50565b60008135905061433e81614318565b92915050565b61434d816141fb565b811461435857600080fd5b50565b60008135905061436a81614344565b92915050565b60008060408385031215614387576143866142e1565b5b60006143958582860161432f565b92505060206143a68582860161435b565b9150509250929050565b60008115159050919050565b6143c5816143b0565b82525050565b60006020820190506143e060008301846143bc565b92915050565b6000819050919050565b600061440b614406614401846142e6565b6143e6565b6142e6565b9050919050565b600061441d826143f0565b9050919050565b600061442f82614412565b9050919050565b61443f81614424565b82525050565b600060208201905061445a6000830184614436565b92915050565b600060208284031215614476576144756142e1565b5b60006144848482850161432f565b91505092915050565b6000806000606084860312156144a6576144a56142e1565b5b60006144b48682870161432f565b93505060206144c58682870161432f565b92505060406144d68682870161435b565b9150509250925092565b6000602082840312156144f6576144f56142e1565b5b60006145048482850161435b565b91505092915050565b614516816143b0565b811461452157600080fd5b50565b6000813590506145338161450d565b92915050565b60006020828403121561454f5761454e6142e1565b5b600061455d84828501614524565b91505092915050565b600080600080608085870312156145805761457f6142e1565b5b600061458e8782880161435b565b945050602061459f8782880161435b565b93505060406145b08782880161435b565b92505060606145c18782880161435b565b91505092959194509250565b600060ff82169050919050565b6145e3816145cd565b82525050565b60006020820190506145fe60008301846145da565b92915050565b61460d81614306565b82525050565b60006020820190506146286000830184614604565b92915050565b60008060408385031215614645576146446142e1565b5b60006146538582860161432f565b925050602061466485828601614524565b9150509250929050565b60008060408385031215614685576146846142e1565b5b60006146938582860161435b565b92505060206146a48582860161435b565b9150509250929050565b600080604083850312156146c5576146c46142e1565b5b60006146d38582860161432f565b92505060206146e48582860161432f565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061473557607f821691505b602082108103614748576147476146ee565b5b50919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206160008201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b60006147aa60288361423a565b91506147b58261474e565b604082019050919050565b600060208201905081810360008301526147d98161479d565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b600061481660208361423a565b9150614821826147e0565b602082019050919050565b6000602082019050818103600083015261484581614809565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b60018511156148d2578086048111156148ae576148ad61484c565b5b60018516156148bd5780820291505b80810290506148cb8561487b565b9450614892565b94509492505050565b6000826148eb57600190506149a7565b816148f957600090506149a7565b816001811461490f576002811461491957614948565b60019150506149a7565b60ff84111561492b5761492a61484c565b5b8360020a9150848211156149425761494161484c565b5b506149a7565b5060208310610133831016604e8410600b841016171561497d5782820a9050838111156149785761497761484c565b5b6149a7565b61498a8484846001614888565b925090508184048111156149a1576149a061484c565b5b81810290505b9392505050565b60006149b9826141fb565b91506149c4836145cd565b92506149f17fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff84846148db565b905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000614a33826141fb565b9150614a3e836141fb565b925082614a4e57614a4d6149f9565b5b828204905092915050565b7f4d61782077616c6c65742070657263656e746167652063616e6e6f742062652060008201527f6c6f776572207468616e20312500000000000000000000000000000000000000602082015250565b6000614ab5602d8361423a565b9150614ac082614a59565b604082019050919050565b60006020820190508181036000830152614ae481614aa8565b9050919050565b6000614af6826141fb565b9150614b01836141fb565b9250828202614b0f816141fb565b91508282048414831517614b2657614b2561484c565b5b5092915050565b7f4d61782077616c6c6574206c696d697420697320616c7265616479207365742060008201527f746f207468617420737461746500000000000000000000000000000000000000602082015250565b6000614b89602d8361423a565b9150614b9482614b2d565b604082019050919050565b60006020820190508181036000830152614bb881614b7c565b9050919050565b6000614bca826141fb565b9150614bd5836141fb565b9250828201905080821115614bed57614bec61484c565b5b92915050565b7f546f74616c20466565732063616e6e6f742065786365656420746865206d617860008201527f696d756d00000000000000000000000000000000000000000000000000000000602082015250565b6000614c4f60248361423a565b9150614c5a82614bf3565b604082019050919050565b60006020820190508181036000830152614c7e81614c42565b9050919050565b6000608082019050614c9a6000830187614205565b614ca76020830186614205565b614cb46040830185614205565b614cc16060830184614205565b95945050505050565b7f4d6178207472616e73616374696f6e206c696d697420697320616c726561647960008201527f2073657420746f20746861742073746174650000000000000000000000000000602082015250565b6000614d2660328361423a565b9150614d3182614cca565b604082019050919050565b60006020820190508181036000830152614d5581614d19565b9050919050565b7f4163636f756e7420697320616c72656164792073657420746f2074686174207360008201527f7461746500000000000000000000000000000000000000000000000000000000602082015250565b6000614db860248361423a565b9150614dc382614d5c565b604082019050919050565b60006020820190508181036000830152614de781614dab565b9050919050565b7f43616e277420736574207468697320616464726573732e000000000000000000600082015250565b6000614e2460178361423a565b9150614e2f82614dee565b602082019050919050565b60006020820190508181036000830152614e5381614e17565b9050919050565b7f54726164696e6720616c726561647920656e61626c65642e0000000000000000600082015250565b6000614e9060188361423a565b9150614e9b82614e5a565b602082019050919050565b60006020820190508181036000830152614ebf81614e83565b9050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b6000614f2260258361423a565b9150614f2d82614ec6565b604082019050919050565b60006020820190508181036000830152614f5181614f15565b9050919050565b7f53776170546f6b656e734174416d6f756e74206d75737420626520677265617460008201527f6572207468616e20302e3030303125206f6620746f74616c20737570706c7900602082015250565b6000614fb4603f8361423a565b9150614fbf82614f58565b604082019050919050565b60006020820190508181036000830152614fe381614fa7565b9050919050565b7f4d6178205472616e73616374696f6e206c696d69732063616e6e6f742062652060008201527f6c6f776572207468616e20302e3125206f6620746f74616c20737570706c7900602082015250565b6000615046603f8361423a565b915061505182614fea565b604082019050919050565b6000602082019050818103600083015261507581615039565b9050919050565b60006040820190506150916000830185614205565b61509e6020830184614205565b9392505050565b7f4d61726b6574696e672077616c6c657420697320616c7265616479207468617460008201527f2061646472657373000000000000000000000000000000000000000000000000602082015250565b600061510160288361423a565b915061510c826150a5565b604082019050919050565b60006020820190508181036000830152615130816150f4565b9050919050565b7f4d61726b6574696e672077616c6c65742063616e6e6f7420626520746865207a60008201527f65726f2061646472657373000000000000000000000000000000000000000000602082015250565b6000615193602b8361423a565b915061519e82615137565b604082019050919050565b600060208201905081810360008301526151c281615186565b9050919050565b7f4163636f756e7420697320616c7265616479207468652076616c7565206f662060008201527f276578636c756465642700000000000000000000000000000000000000000000602082015250565b6000615225602a8361423a565b9150615230826151c9565b604082019050919050565b6000602082019050818103600083015261525481615218565b9050919050565b7f73776170456e61626c656420616c72656164792061742074686973207374617460008201527f652e000000000000000000000000000000000000000000000000000000000000602082015250565b60006152b760228361423a565b91506152c28261525b565b604082019050919050565b600060208201905081810360008301526152e6816152aa565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b600061534960268361423a565b9150615354826152ed565b604082019050919050565b600060208201905081810360008301526153788161533c565b9050919050565b7f4f776e65722063616e6e6f7420636c61696d20636f6e7472616374277320626160008201527f6c616e6365206f6620697473206f776e20746f6b656e73000000000000000000602082015250565b60006153db60378361423a565b91506153e68261537f565b604082019050919050565b6000602082019050818103600083015261540a816153ce565b9050919050565b60008151905061542081614344565b92915050565b60006020828403121561543c5761543b6142e1565b5b600061544a84828501615411565b91505092915050565b60006040820190506154686000830185614604565b6154756020830184614205565b9392505050565b60008151905061548b8161450d565b92915050565b6000602082840312156154a7576154a66142e1565b5b60006154b58482850161547c565b91505092915050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b600061551a60248361423a565b9150615525826154be565b604082019050919050565b600060208201905081810360008301526155498161550d565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b60006155ac60228361423a565b91506155b782615550565b604082019050919050565b600060208201905081810360008301526155db8161559f565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b600061563e60258361423a565b9150615649826155e2565b604082019050919050565b6000602082019050818103600083015261566d81615631565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b60006156d060238361423a565b91506156db82615674565b604082019050919050565b600060208201905081810360008301526156ff816156c3565b9050919050565b7f54726164696e67206e6f742079657420656e61626c6564210000000000000000600082015250565b600061573c60188361423a565b915061574782615706565b602082019050919050565b6000602082019050818103600083015261576b8161572f565b9050919050565b7f416e74695768616c653a205472616e7366657220616d6f756e7420657863656560008201527f647320746865206d61785472616e73616374696f6e416d6f756e740000000000602082015250565b60006157ce603b8361423a565b91506157d982615772565b604082019050919050565b600060208201905081810360008301526157fd816157c1565b9050919050565b600061580f826141fb565b915061581a836141fb565b92508282039050818111156158325761583161484c565b5b92915050565b7f4d617857616c6c65743a20526563697069656e7420657863656564732074686560008201527f206d617857616c6c6574416d6f756e7400000000000000000000000000000000602082015250565b600061589460308361423a565b915061589f82615838565b604082019050919050565b600060208201905081810360008301526158c381615887565b9050919050565b7f416464726573733a20696e73756666696369656e742062616c616e6365000000600082015250565b6000615900601d8361423a565b915061590b826158ca565b602082019050919050565b6000602082019050818103600083015261592f816158f3565b9050919050565b600081905092915050565b50565b6000615951600083615936565b915061595c82615941565b600082019050919050565b600061597282615944565b9150819050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b60006159d860268361423a565b91506159e38261597c565b604082019050919050565b60006020820190508181036000830152615a07816159cb565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600081519050615a7b81614318565b92915050565b600060208284031215615a9757615a966142e1565b5b6000615aa584828501615a6c565b91505092915050565b6000819050919050565b6000615ad3615ace615ac984615aae565b6143e6565b6141fb565b9050919050565b615ae381615ab8565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b615b1e81614306565b82525050565b6000615b308383615b15565b60208301905092915050565b6000602082019050919050565b6000615b5482615ae9565b615b5e8185615af4565b9350615b6983615b05565b8060005b83811015615b9a578151615b818882615b24565b9750615b8c83615b3c565b925050600181019050615b6d565b5085935050505092915050565b600060a082019050615bbc6000830188614205565b615bc96020830187615ada565b8181036040830152615bdb8186615b49565b9050615bea6060830185614604565b615bf76080830184614205565b9695505050505050565b600060c082019050615c166000830189614604565b615c236020830188614205565b615c306040830187615ada565b615c3d6060830186615ada565b615c4a6080830185614604565b615c5760a0830184614205565b979650505050505050565b600080600060608486031215615c7b57615c7a6142e1565b5b6000615c8986828701615411565b9350506020615c9a86828701615411565b9250506040615cab86828701615411565b9150509250925092565b6000606082019050615cca6000830186614205565b615cd76020830185614205565b615ce46040830184614205565b94935050505056fea2646970667358221220921239b1adb2a111f99ed59a55ffa9083f756b6df5cbae9688397a3c813077a664736f6c63430008110033
Deployed Bytecode
0x6080604052600436106102b25760003560e01c8063715018a611610175578063aa4bde28116100dc578063d2fcc00111610095578063e01af92c1161006f578063e01af92c14610ad5578063e2f4560514610afe578063f2fde38b14610b29578063f9d0831a14610b52576102b9565b8063d2fcc00114610a44578063dc4c7dbc14610a6d578063dd62ed3e14610a98576102b9565b8063aa4bde281461094a578063afa4f3b214610975578063b6f7f6811461099e578063bb85c6d1146109c7578063c0246668146109f0578063c04a541414610a19576102b9565b80638c41180e1161012e5780638c41180e146108145780638da5cb5b1461083d57806395d89b4114610868578063a457c2d714610893578063a8a69b9d146108d0578063a9059cbb1461090d576102b9565b8063715018a61461073c57806375f0a87414610753578063790ca4131461077e5780637b3c83b1146107a9578063880bcbc1146107d45780638a8c523c146107fd576102b9565b80632d88cc08116102195780634fbee193116101d25780634fbee1931461061857806356a6cabf1461065557806359136fa51461067e5780635fc2e596146106a95780636ddd1713146106d457806370a08231146106ff576102b9565b80632d88cc08146104f4578063313ce5671461051d57806339509351146105485780633bbac5791461058557806349bd5a5e146105c25780634ada218b146105ed576102b9565b806321a9d82a1161026b57806321a9d82a146103e457806323b872dd1461040f57806327a14fc21461044c5780632a6c7dba146104755780632ba86bf21461049e5780632ce86fbf146104c9576102b9565b80630105d0fd146102be57806306fdde03146102e9578063095ea7b3146103145780631694505e1461035157806318160ddd1461037c57806318d9ceae146103a7576102b9565b366102b957005b600080fd5b3480156102ca57600080fd5b506102d3610b7b565b6040516102e09190614214565b60405180910390f35b3480156102f557600080fd5b506102fe610b81565b60405161030b91906142bf565b60405180910390f35b34801561032057600080fd5b5061033b60048036038101906103369190614370565b610c13565b60405161034891906143cb565b60405180910390f35b34801561035d57600080fd5b50610366610c31565b6040516103739190614445565b60405180910390f35b34801561038857600080fd5b50610391610c57565b60405161039e9190614214565b60405180910390f35b3480156103b357600080fd5b506103ce60048036038101906103c99190614460565b610c61565b6040516103db91906143cb565b60405180910390f35b3480156103f057600080fd5b506103f9610cb7565b60405161040691906143cb565b60405180910390f35b34801561041b57600080fd5b506104366004803603810190610431919061448d565b610cca565b60405161044391906143cb565b60405180910390f35b34801561045857600080fd5b50610473600480360381019061046e91906144e0565b610de9565b005b34801561048157600080fd5b5061049c60048036038101906104979190614539565b610f55565b005b3480156104aa57600080fd5b506104b36110a4565b6040516104c091906143cb565b60405180910390f35b3480156104d557600080fd5b506104de6110b7565b6040516104eb9190614214565b60405180910390f35b34801561050057600080fd5b5061051b60048036038101906105169190614566565b6110bd565b005b34801561052957600080fd5b5061053261123b565b60405161053f91906145e9565b60405180910390f35b34801561055457600080fd5b5061056f600480360381019061056a9190614370565b611244565b60405161057c91906143cb565b60405180910390f35b34801561059157600080fd5b506105ac60048036038101906105a79190614460565b6112f0565b6040516105b991906143cb565b60405180910390f35b3480156105ce57600080fd5b506105d7611310565b6040516105e49190614613565b60405180910390f35b3480156105f957600080fd5b50610602611336565b60405161060f91906143cb565b60405180910390f35b34801561062457600080fd5b5061063f600480360381019061063a9190614460565b611349565b60405161064c91906143cb565b60405180910390f35b34801561066157600080fd5b5061067c60048036038101906106779190614539565b61139f565b005b34801561068a57600080fd5b506106936114ee565b6040516106a09190614214565b60405180910390f35b3480156106b557600080fd5b506106be6114f4565b6040516106cb9190614214565b60405180910390f35b3480156106e057600080fd5b506106e96114fa565b6040516106f691906143cb565b60405180910390f35b34801561070b57600080fd5b5061072660048036038101906107219190614460565b61150d565b6040516107339190614214565b60405180910390f35b34801561074857600080fd5b50610751611555565b005b34801561075f57600080fd5b506107686116ad565b6040516107759190614613565b60405180910390f35b34801561078a57600080fd5b506107936116d3565b6040516107a09190614214565b60405180910390f35b3480156107b557600080fd5b506107be6116d9565b6040516107cb9190614214565b60405180910390f35b3480156107e057600080fd5b506107fb60048036038101906107f6919061462e565b6116df565b005b34801561080957600080fd5b5061081261191f565b005b34801561082057600080fd5b5061083b6004803603810190610836919061462e565b611a45565b005b34801561084957600080fd5b50610852611b37565b60405161085f9190614613565b60405180910390f35b34801561087457600080fd5b5061087d611b61565b60405161088a91906142bf565b60405180910390f35b34801561089f57600080fd5b506108ba60048036038101906108b59190614370565b611bf3565b6040516108c791906143cb565b60405180910390f35b3480156108dc57600080fd5b506108f760048036038101906108f29190614460565b611cde565b60405161090491906143cb565b60405180910390f35b34801561091957600080fd5b50610934600480360381019061092f9190614370565b611d34565b60405161094191906143cb565b60405180910390f35b34801561095657600080fd5b5061095f611d52565b60405161096c9190614214565b60405180910390f35b34801561098157600080fd5b5061099c600480360381019061099791906144e0565b611d58565b005b3480156109aa57600080fd5b506109c560048036038101906109c0919061466e565b611e89565b005b3480156109d357600080fd5b506109ee60048036038101906109e99190614460565b61205e565b005b3480156109fc57600080fd5b50610a176004803603810190610a12919061462e565b612291565b005b348015610a2557600080fd5b50610a2e612463565b604051610a3b9190614613565b60405180910390f35b348015610a5057600080fd5b50610a6b6004803603810190610a66919061462e565b612489565b005b348015610a7957600080fd5b50610a8261265b565b604051610a8f9190614214565b60405180910390f35b348015610aa457600080fd5b50610abf6004803603810190610aba91906146ae565b612661565b604051610acc9190614214565b60405180910390f35b348015610ae157600080fd5b50610afc6004803603810190610af79190614539565b6126e8565b005b348015610b0a57600080fd5b50610b136127f1565b604051610b209190614214565b60405180910390f35b348015610b3557600080fd5b50610b506004803603810190610b4b9190614460565b6127f7565b005b348015610b5e57600080fd5b50610b796004803603810190610b749190614460565b6129bd565b005b601b5481565b606060038054610b909061471d565b80601f0160208091040260200160405190810160405280929190818152602001828054610bbc9061471d565b8015610c095780601f10610bde57610100808354040283529160200191610c09565b820191906000526020600020905b815481529060010190602001808311610bec57829003601f168201915b5050505050905090565b6000610c27610c20612c2d565b8484612c35565b6001905092915050565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600254905090565b6000601960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b601760009054906101000a900460ff1681565b600080600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610d16612c2d565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8114610dd25782811015610dbd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610db4906147c0565b60405180910390fd5b610dd185610dc9612c2d565b858403612c35565b5b610ddd858585612dfe565b60019150509392505050565b610df1612c2d565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610e80576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e779061482c565b60405180910390fd5b6064610e8a61123b565b600a610e9691906149ae565b610e9e610c57565b610ea89190614a28565b610eb29190614a28565b811015610ef4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610eeb90614acb565b60405180910390fd5b610efc61123b565b600a610f0891906149ae565b81610f139190614aeb565b6018819055507f21bc0ea3406acb92d4449ab33befb4ae82f873a22f3b6cf0e466b2710beb5942601854604051610f4a9190614214565b60405180910390a150565b610f5d612c2d565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610fec576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fe39061482c565b60405180910390fd5b601760009054906101000a900460ff16151581151503611041576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161103890614b9f565b60405180910390fd5b80601760006101000a81548160ff0219169083151502179055507f670f884265aba2d05e7c26efbc42f8365effc4cb3fcfcefddba0c0b71a6231f1601760009054906101000a900460ff1660405161109991906143cb565b60405180910390a150565b601a60009054906101000a900460ff1681565b600b5481565b6110c5612c2d565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611154576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161114b9061482c565b60405180910390fd5b83600a8190555082600b8190555081600c8190555080600d81905550600c54600a546111809190614bbf565b600e81905550600d54600b546111969190614bbf565b600f81905550614650600f54600e546111af9190614bbf565b11156111f0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111e790614c65565b60405180910390fd5b7f829b8b9e6e2d0b0ebceef83298f970c163f4d0d4689fa3a6856d8efb98272eed600a54600b54600c54600d5460405161122d9493929190614c85565b60405180910390a150505050565b60006012905090565b60006112e6611251612c2d565b84846001600061125f612c2d565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546112e19190614bbf565b612c35565b6001905092915050565b60096020528060005260406000206000915054906101000a900460ff1681565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b601560009054906101000a900460ff1681565b6000600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b6113a7612c2d565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611436576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161142d9061482c565b60405180910390fd5b601a60009054906101000a900460ff1615158115150361148b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161148290614d3c565b60405180910390fd5b80601a60006101000a81548160ff0219169083151502179055507fe81be35e61864c26afd7a4655e99f321378d0aaae1e5af8ee67b658a7460f3cf601a60009054906101000a900460ff166040516114e391906143cb565b60405180910390a150565b601c5481565b600c5481565b601360019054906101000a900460ff1681565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b61155d612c2d565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146115ec576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115e39061482c565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a36000600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60145481565b600a5481565b6116e7612c2d565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611776576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161176d9061482c565b60405180910390fd5b801515601960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151503611808576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117ff90614dce565b60405180910390fd5b3073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611876576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161186d90614e3a565b60405180910390fd5b80601960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f8727c4afe988887760e8db0bbad9f9fcceee6428545956832f67c8fdbd589c108260405161191391906143cb565b60405180910390a25050565b611927612c2d565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146119b6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119ad9061482c565b60405180910390fd5b601560009054906101000a900460ff1615611a06576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119fd90614ea6565b60405180910390fd5b6001601560006101000a81548160ff0219169083151502179055506001601360016101000a81548160ff02191690831515021790555042601481905550565b611a4d612c2d565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611adc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ad39061482c565b60405180910390fd5b80600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b606060048054611b709061471d565b80601f0160208091040260200160405190810160405280929190818152602001828054611b9c9061471d565b8015611be95780601f10611bbe57610100808354040283529160200191611be9565b820191906000526020600020905b815481529060010190602001808311611bcc57829003601f168201915b5050505050905090565b60008060016000611c02612c2d565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015611cbf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cb690614f38565b60405180910390fd5b611cd3611cca612c2d565b85858403612c35565b600191505092915050565b6000601660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b6000611d48611d41612c2d565b8484612dfe565b6001905092915050565b60185481565b611d60612c2d565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611def576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611de69061482c565b60405180910390fd5b620f4240611dfb610c57565b611e059190614a28565b8111611e46576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e3d90614fca565b60405180910390fd5b806012819055507f7c26bfee26f82e8cb57af48f4019cc64582db6fac7bad778433f10572ae8b145601254604051611e7e9190614214565b60405180910390a150565b611e91612c2d565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611f20576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f179061482c565b60405180910390fd5b6103e8611f2b61123b565b600a611f3791906149ae565b611f3f610c57565b611f499190614a28565b611f539190614a28565b8210158015611f9457506103e8611f6861123b565b600a611f7491906149ae565b611f7c610c57565b611f869190614a28565b611f909190614a28565b8110155b611fd3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fca9061505c565b60405180910390fd5b611fdb61123b565b600a611fe791906149ae565b82611ff29190614aeb565b601b8190555061200061123b565b600a61200c91906149ae565b816120179190614aeb565b601c819055507f8c8cbc911b80df94332ececb8eb0945274d76fa965600a0f01f42af3f8afb131601b54601c5460405161205292919061507c565b60405180910390a15050565b612066612c2d565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146120f5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120ec9061482c565b60405180910390fd5b601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603612185576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161217c90615117565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036121f4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121eb906151a9565b60405180910390fd5b80601160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507fa964ba5c52d7e7bfcae4fb1ae4db9f211756d0e618e85fac5283b882a39e7a0b601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040516122869190614613565b60405180910390a150565b612299612c2d565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612328576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161231f9061482c565b60405180910390fd5b801515600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515036123ba576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123b19061523b565b60405180910390fd5b80600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df78260405161245791906143cb565b60405180910390a25050565b601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b612491612c2d565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612520576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125179061482c565b60405180910390fd5b801515601660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515036125b2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125a990614dce565b60405180910390fd5b80601660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f1d9a11e204b58ad56c619c61600e42167624659d218f0143f1f64956b0daae6c8260405161264f91906143cb565b60405180910390a25050565b600d5481565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6126f0612c2d565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461277f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127769061482c565b60405180910390fd5b801515601360019054906101000a900460ff161515036127d4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127cb906152cd565b60405180910390fd5b80601360016101000a81548160ff02191690831515021790555050565b60125481565b6127ff612c2d565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461288e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128859061482c565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036128fd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128f49061535f565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a380600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6129c5612c2d565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612a54576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a4b9061482c565b60405180910390fd5b3073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603612ac2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ab9906153f1565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603612b2557612b1f473373ffffffffffffffffffffffffffffffffffffffff1661385b90919063ffffffff16565b50612c2a565b600081905060008173ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401612b659190614613565b602060405180830381865afa158015612b82573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612ba69190615426565b90508173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33836040518363ffffffff1660e01b8152600401612be3929190615453565b6020604051808303816000875af1158015612c02573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612c269190615491565b5050505b50565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612ca4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c9b90615530565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612d13576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d0a906155c2565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051612df19190614214565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612e6d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612e6490615654565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612edc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ed3906156e6565b60405180910390fd5b601560009054906101000a900460ff1680612f405750600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b80612f945750600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b612fd3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612fca90615752565b60405180910390fd5b60008103612fec57612fe783836000613916565b613856565b601a60009054906101000a900460ff161561324257600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614806130aa5750600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b80156131005750601960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156131565750601960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561324157600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036131fa57601b548111156131f5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016131ec906157e4565b60405180910390fd5b613240565b601c5481111561323f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613236906157e4565b60405180910390fd5b5b5b5b600061324d3061150d565b9050600060125482101590508080156132735750601360009054906101000a900460ff16155b80156132cc5750600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16145b80156132e757506000600f54600e546132e59190614bbf565b115b80156132ff5750601360019054906101000a900460ff165b15613451576001601360006101000a81548160ff0219169083151502179055506000600f54600e546133319190614bbf565b90506000600b54600a546133459190614bbf565b90506000600d54600c546133599190614bbf565b905060008211156133b357600083600a54876133759190614aeb565b61337f9190614a28565b9050600084600b54886133929190614aeb565b61339c9190614a28565b90506133a782613b95565b6133b081613ecf565b50505b600081111561343257600060646050876133cd9190614aeb565b6133d79190614a28565b905060006064600a886133ea9190614aeb565b6133f49190614a28565b905060006064600a896134079190614aeb565b6134119190614a28565b905061341c83613f3f565b61342582613ecf565b61342e81613b95565b5050505b6000601360006101000a81548160ff0219169083151502179055505050505b6000600860008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806134f45750600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b8061350b5750601360009054906101000a900460ff165b1561351957600090506135de565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff160361357857600e5490506135dd565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16036135d757600f5490506135dc565b600090505b5b5b600960008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156136365761271090505b600960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161561368e5761271090505b60008111156136cf57600061271082866136a89190614aeb565b6136b29190614a28565b905080856136c09190615804565b94506136cd873083613916565b505b601760009054906101000a900460ff161561384757601660008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156137885750601660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156137e25750600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b156138465760006137f28661150d565b905060185485826138039190614bbf565b1115613844576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161383b906158aa565b60405180910390fd5b505b5b613852868686613916565b5050505b505050565b6000814710156138a0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161389790615916565b60405180910390fd5b60008373ffffffffffffffffffffffffffffffffffffffff16836040516138c690615967565b60006040518083038185875af1925050503d8060008114613903576040519150601f19603f3d011682016040523d82523d6000602084013e613908565b606091505b505090508091505092915050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603613985576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161397c90615654565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036139f4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016139eb906156e6565b60405180910390fd5b6139ff8383836141f1565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015613a85576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613a7c906159ee565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254613b189190614bbf565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051613b7c9190614214565b60405180910390a3613b8f8484846141f6565b50505050565b6000600282613ba49190614a28565b905060008183613bb49190615804565b905060004790506000600267ffffffffffffffff811115613bd857613bd7615a0e565b5b604051908082528060200260200182016040528015613c065781602001602082028036833780820191505090505b5090503081600081518110613c1e57613c1d615a3d565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015613cc5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613ce99190615a81565b81600181518110613cfd57613cfc615a3d565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478560008430426040518663ffffffff1660e01b8152600401613d9b959493929190615ba7565b600060405180830381600087803b158015613db557600080fd5b505af1158015613dc9573d6000803e3d6000fd5b5050505060008247613ddb9190615804565b9050600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d71982308760008061dead426040518863ffffffff1660e01b8152600401613e4696959493929190615c01565b60606040518083038185885af1158015613e64573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190613e899190615c62565b5050507f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb561858286604051613ebf93929190615cb5565b60405180910390a1505050505050565b600061dead90508073ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051613f339190614214565b60405180910390a35050565b60004790506000600267ffffffffffffffff811115613f6157613f60615a0e565b5b604051908082528060200260200182016040528015613f8f5781602001602082028036833780820191505090505b5090503081600081518110613fa757613fa6615a3d565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561404e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906140729190615a81565b8160018151811061408657614085615a3d565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478460008430426040518663ffffffff1660e01b8152600401614124959493929190615ba7565b600060405180830381600087803b15801561413e57600080fd5b505af1158015614152573d6000803e3d6000fd5b50505050600082476141649190615804565b90506141b181601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661385b90919063ffffffff16565b507f957ad1fc6d4d41da6d1a8d37303289ef3c4b78e0285ff5df1e12070ef0e6299984826040516141e392919061507c565b60405180910390a150505050565b505050565b505050565b6000819050919050565b61420e816141fb565b82525050565b60006020820190506142296000830184614205565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b8381101561426957808201518184015260208101905061424e565b60008484015250505050565b6000601f19601f8301169050919050565b60006142918261422f565b61429b818561423a565b93506142ab81856020860161424b565b6142b481614275565b840191505092915050565b600060208201905081810360008301526142d98184614286565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000614311826142e6565b9050919050565b61432181614306565b811461432c57600080fd5b50565b60008135905061433e81614318565b92915050565b61434d816141fb565b811461435857600080fd5b50565b60008135905061436a81614344565b92915050565b60008060408385031215614387576143866142e1565b5b60006143958582860161432f565b92505060206143a68582860161435b565b9150509250929050565b60008115159050919050565b6143c5816143b0565b82525050565b60006020820190506143e060008301846143bc565b92915050565b6000819050919050565b600061440b614406614401846142e6565b6143e6565b6142e6565b9050919050565b600061441d826143f0565b9050919050565b600061442f82614412565b9050919050565b61443f81614424565b82525050565b600060208201905061445a6000830184614436565b92915050565b600060208284031215614476576144756142e1565b5b60006144848482850161432f565b91505092915050565b6000806000606084860312156144a6576144a56142e1565b5b60006144b48682870161432f565b93505060206144c58682870161432f565b92505060406144d68682870161435b565b9150509250925092565b6000602082840312156144f6576144f56142e1565b5b60006145048482850161435b565b91505092915050565b614516816143b0565b811461452157600080fd5b50565b6000813590506145338161450d565b92915050565b60006020828403121561454f5761454e6142e1565b5b600061455d84828501614524565b91505092915050565b600080600080608085870312156145805761457f6142e1565b5b600061458e8782880161435b565b945050602061459f8782880161435b565b93505060406145b08782880161435b565b92505060606145c18782880161435b565b91505092959194509250565b600060ff82169050919050565b6145e3816145cd565b82525050565b60006020820190506145fe60008301846145da565b92915050565b61460d81614306565b82525050565b60006020820190506146286000830184614604565b92915050565b60008060408385031215614645576146446142e1565b5b60006146538582860161432f565b925050602061466485828601614524565b9150509250929050565b60008060408385031215614685576146846142e1565b5b60006146938582860161435b565b92505060206146a48582860161435b565b9150509250929050565b600080604083850312156146c5576146c46142e1565b5b60006146d38582860161432f565b92505060206146e48582860161432f565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061473557607f821691505b602082108103614748576147476146ee565b5b50919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206160008201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b60006147aa60288361423a565b91506147b58261474e565b604082019050919050565b600060208201905081810360008301526147d98161479d565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b600061481660208361423a565b9150614821826147e0565b602082019050919050565b6000602082019050818103600083015261484581614809565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b60018511156148d2578086048111156148ae576148ad61484c565b5b60018516156148bd5780820291505b80810290506148cb8561487b565b9450614892565b94509492505050565b6000826148eb57600190506149a7565b816148f957600090506149a7565b816001811461490f576002811461491957614948565b60019150506149a7565b60ff84111561492b5761492a61484c565b5b8360020a9150848211156149425761494161484c565b5b506149a7565b5060208310610133831016604e8410600b841016171561497d5782820a9050838111156149785761497761484c565b5b6149a7565b61498a8484846001614888565b925090508184048111156149a1576149a061484c565b5b81810290505b9392505050565b60006149b9826141fb565b91506149c4836145cd565b92506149f17fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff84846148db565b905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000614a33826141fb565b9150614a3e836141fb565b925082614a4e57614a4d6149f9565b5b828204905092915050565b7f4d61782077616c6c65742070657263656e746167652063616e6e6f742062652060008201527f6c6f776572207468616e20312500000000000000000000000000000000000000602082015250565b6000614ab5602d8361423a565b9150614ac082614a59565b604082019050919050565b60006020820190508181036000830152614ae481614aa8565b9050919050565b6000614af6826141fb565b9150614b01836141fb565b9250828202614b0f816141fb565b91508282048414831517614b2657614b2561484c565b5b5092915050565b7f4d61782077616c6c6574206c696d697420697320616c7265616479207365742060008201527f746f207468617420737461746500000000000000000000000000000000000000602082015250565b6000614b89602d8361423a565b9150614b9482614b2d565b604082019050919050565b60006020820190508181036000830152614bb881614b7c565b9050919050565b6000614bca826141fb565b9150614bd5836141fb565b9250828201905080821115614bed57614bec61484c565b5b92915050565b7f546f74616c20466565732063616e6e6f742065786365656420746865206d617860008201527f696d756d00000000000000000000000000000000000000000000000000000000602082015250565b6000614c4f60248361423a565b9150614c5a82614bf3565b604082019050919050565b60006020820190508181036000830152614c7e81614c42565b9050919050565b6000608082019050614c9a6000830187614205565b614ca76020830186614205565b614cb46040830185614205565b614cc16060830184614205565b95945050505050565b7f4d6178207472616e73616374696f6e206c696d697420697320616c726561647960008201527f2073657420746f20746861742073746174650000000000000000000000000000602082015250565b6000614d2660328361423a565b9150614d3182614cca565b604082019050919050565b60006020820190508181036000830152614d5581614d19565b9050919050565b7f4163636f756e7420697320616c72656164792073657420746f2074686174207360008201527f7461746500000000000000000000000000000000000000000000000000000000602082015250565b6000614db860248361423a565b9150614dc382614d5c565b604082019050919050565b60006020820190508181036000830152614de781614dab565b9050919050565b7f43616e277420736574207468697320616464726573732e000000000000000000600082015250565b6000614e2460178361423a565b9150614e2f82614dee565b602082019050919050565b60006020820190508181036000830152614e5381614e17565b9050919050565b7f54726164696e6720616c726561647920656e61626c65642e0000000000000000600082015250565b6000614e9060188361423a565b9150614e9b82614e5a565b602082019050919050565b60006020820190508181036000830152614ebf81614e83565b9050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b6000614f2260258361423a565b9150614f2d82614ec6565b604082019050919050565b60006020820190508181036000830152614f5181614f15565b9050919050565b7f53776170546f6b656e734174416d6f756e74206d75737420626520677265617460008201527f6572207468616e20302e3030303125206f6620746f74616c20737570706c7900602082015250565b6000614fb4603f8361423a565b9150614fbf82614f58565b604082019050919050565b60006020820190508181036000830152614fe381614fa7565b9050919050565b7f4d6178205472616e73616374696f6e206c696d69732063616e6e6f742062652060008201527f6c6f776572207468616e20302e3125206f6620746f74616c20737570706c7900602082015250565b6000615046603f8361423a565b915061505182614fea565b604082019050919050565b6000602082019050818103600083015261507581615039565b9050919050565b60006040820190506150916000830185614205565b61509e6020830184614205565b9392505050565b7f4d61726b6574696e672077616c6c657420697320616c7265616479207468617460008201527f2061646472657373000000000000000000000000000000000000000000000000602082015250565b600061510160288361423a565b915061510c826150a5565b604082019050919050565b60006020820190508181036000830152615130816150f4565b9050919050565b7f4d61726b6574696e672077616c6c65742063616e6e6f7420626520746865207a60008201527f65726f2061646472657373000000000000000000000000000000000000000000602082015250565b6000615193602b8361423a565b915061519e82615137565b604082019050919050565b600060208201905081810360008301526151c281615186565b9050919050565b7f4163636f756e7420697320616c7265616479207468652076616c7565206f662060008201527f276578636c756465642700000000000000000000000000000000000000000000602082015250565b6000615225602a8361423a565b9150615230826151c9565b604082019050919050565b6000602082019050818103600083015261525481615218565b9050919050565b7f73776170456e61626c656420616c72656164792061742074686973207374617460008201527f652e000000000000000000000000000000000000000000000000000000000000602082015250565b60006152b760228361423a565b91506152c28261525b565b604082019050919050565b600060208201905081810360008301526152e6816152aa565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b600061534960268361423a565b9150615354826152ed565b604082019050919050565b600060208201905081810360008301526153788161533c565b9050919050565b7f4f776e65722063616e6e6f7420636c61696d20636f6e7472616374277320626160008201527f6c616e6365206f6620697473206f776e20746f6b656e73000000000000000000602082015250565b60006153db60378361423a565b91506153e68261537f565b604082019050919050565b6000602082019050818103600083015261540a816153ce565b9050919050565b60008151905061542081614344565b92915050565b60006020828403121561543c5761543b6142e1565b5b600061544a84828501615411565b91505092915050565b60006040820190506154686000830185614604565b6154756020830184614205565b9392505050565b60008151905061548b8161450d565b92915050565b6000602082840312156154a7576154a66142e1565b5b60006154b58482850161547c565b91505092915050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b600061551a60248361423a565b9150615525826154be565b604082019050919050565b600060208201905081810360008301526155498161550d565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b60006155ac60228361423a565b91506155b782615550565b604082019050919050565b600060208201905081810360008301526155db8161559f565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b600061563e60258361423a565b9150615649826155e2565b604082019050919050565b6000602082019050818103600083015261566d81615631565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b60006156d060238361423a565b91506156db82615674565b604082019050919050565b600060208201905081810360008301526156ff816156c3565b9050919050565b7f54726164696e67206e6f742079657420656e61626c6564210000000000000000600082015250565b600061573c60188361423a565b915061574782615706565b602082019050919050565b6000602082019050818103600083015261576b8161572f565b9050919050565b7f416e74695768616c653a205472616e7366657220616d6f756e7420657863656560008201527f647320746865206d61785472616e73616374696f6e416d6f756e740000000000602082015250565b60006157ce603b8361423a565b91506157d982615772565b604082019050919050565b600060208201905081810360008301526157fd816157c1565b9050919050565b600061580f826141fb565b915061581a836141fb565b92508282039050818111156158325761583161484c565b5b92915050565b7f4d617857616c6c65743a20526563697069656e7420657863656564732074686560008201527f206d617857616c6c6574416d6f756e7400000000000000000000000000000000602082015250565b600061589460308361423a565b915061589f82615838565b604082019050919050565b600060208201905081810360008301526158c381615887565b9050919050565b7f416464726573733a20696e73756666696369656e742062616c616e6365000000600082015250565b6000615900601d8361423a565b915061590b826158ca565b602082019050919050565b6000602082019050818103600083015261592f816158f3565b9050919050565b600081905092915050565b50565b6000615951600083615936565b915061595c82615941565b600082019050919050565b600061597282615944565b9150819050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b60006159d860268361423a565b91506159e38261597c565b604082019050919050565b60006020820190508181036000830152615a07816159cb565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600081519050615a7b81614318565b92915050565b600060208284031215615a9757615a966142e1565b5b6000615aa584828501615a6c565b91505092915050565b6000819050919050565b6000615ad3615ace615ac984615aae565b6143e6565b6141fb565b9050919050565b615ae381615ab8565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b615b1e81614306565b82525050565b6000615b308383615b15565b60208301905092915050565b6000602082019050919050565b6000615b5482615ae9565b615b5e8185615af4565b9350615b6983615b05565b8060005b83811015615b9a578151615b818882615b24565b9750615b8c83615b3c565b925050600181019050615b6d565b5085935050505092915050565b600060a082019050615bbc6000830188614205565b615bc96020830187615ada565b8181036040830152615bdb8186615b49565b9050615bea6060830185614604565b615bf76080830184614205565b9695505050505050565b600060c082019050615c166000830189614604565b615c236020830188614205565b615c306040830187615ada565b615c3d6060830186615ada565b615c4a6080830185614604565b615c5760a0830184614205565b979650505050505050565b600080600060608486031215615c7b57615c7a6142e1565b5b6000615c8986828701615411565b9350506020615c9a86828701615411565b9250506040615cab86828701615411565b9150509250925092565b6000606082019050615cca6000830186614205565b615cd76020830185614205565b615ce46040830184614205565b94935050505056fea2646970667358221220921239b1adb2a111f99ed59a55ffa9083f756b6df5cbae9688397a3c813077a664736f6c63430008110033
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.