ERC-20
Overview
Max Total Supply
420,690,000,000,000 PUMP
Holders
147
Market
Onchain Market Cap
$0.00
Circulating Supply Market Cap
-
Other Info
Token Contract (WITH 18 Decimals)
Balance
2,598,514,333,928.750635696562595574 PUMPValue
$0.00Loading...
Loading
Loading...
Loading
Loading...
Loading
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
Contract Source Code Verified (Exact Match)
Contract Name:
GMODE
Compiler Version
v0.8.23+commit.f704f362
Optimization Enabled:
No with 200 runs
Other Settings:
default evmVersion
Contract Source Code (Solidity Standard Json-Input format)
//SPDX-License-Identifier: MIT pragma solidity ^0.8.18; 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 ); } // Dex Factory contract interface interface IDexFactory { function createPair( address tokenA, address tokenB ) external returns (address pair); } // Dex Router contract interface interface IDexRouter { function factory() external pure returns (address); function WETH() external pure returns (address); function addLiquidityETH( address token, uint256 amountTokenDesired, uint256 amountTokenMin, uint256 amountETHMin, address to, uint256 deadline ) external payable returns (uint256 amountToken, uint256 amountETH, uint256 liquidity); function swapExactTokensForETHSupportingFeeOnTransferTokens( uint256 amountIn, uint256 amountOutMin, address[] calldata path, address to, uint256 deadline ) external; } abstract contract Context { function _msgSender() internal view virtual returns (address payable) { return payable(msg.sender); } function _msgData() internal view virtual returns (bytes memory) { this; // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691 return msg.data; } } contract Ownable is Context { address private _owner; event OwnershipTransferred( address indexed previousOwner, address indexed newOwner ); constructor() { _owner = _msgSender(); emit OwnershipTransferred(address(0), _owner); } 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 = payable(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 GMODE is Context, IERC20, Ownable { string private _name = "AI"; string private _symbol = "PUMP"; uint8 private _decimals = 18; uint256 private _totalSupply = 420_690_000_000_000 * 1e18; mapping(address => uint256) private _balances; mapping(address => mapping(address => uint256)) private _allowances; mapping(address => bool) public isExcludedFromFee; mapping(address => bool) public isExcludedFromMaxTxn; mapping(address => bool) public isExcludedFromMaxWallet; uint256 public minTokenToSwap = (_totalSupply * 5) / (10000); // swap + distribute uint256 public maxHoldLimit = (_totalSupply * 2) / (100); // max hold uint256 public maxTxnLimit = (_totalSupply * 2) / (100); // max tx uint256 public percentDivider = 100; uint256 public launchedAt; bool public distributeAndLiquifyStatus; // should be true to turn on to liquidate the pool bool public feesStatus; // enable by default bool public trading; // once enable can't be disable afterwards IDexRouter public dexRouter; // router declaration address public dexPair; // pair address declaration address public marketingWallet; // marketing address declaration address private constant DEAD = address(0xdead); address private constant ZERO = address(0); uint256 public marketingFeeOnBuying = 20; uint256 public marketingFeeOnSelling = 20; event SwapAndLiquify( uint256 tokensSwapped, uint256 ethReceived, uint256 tokensIntoLiqudity ); constructor() { _balances[owner()] = _totalSupply; marketingWallet = address(0xC1A698e000fBd0de4ac4cB98a43e8e0efA6C2B57); dexRouter = IDexRouter(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D); isExcludedFromFee[address(dexRouter)] = true; isExcludedFromMaxTxn[address(dexRouter)] = true; isExcludedFromMaxWallet[address(dexRouter)] = true; dexPair = IDexFactory(dexRouter.factory()).createPair( address(this), dexRouter.WETH() ); isExcludedFromMaxWallet[dexPair] = true; //exclude owner and this contract from fee isExcludedFromFee[owner()] = true; isExcludedFromFee[address(this)] = true; //exclude owner and this contract from max Txn isExcludedFromMaxTxn[owner()] = true; isExcludedFromMaxTxn[address(this)] = true; //exclude owner and this contract from max hold limit isExcludedFromMaxWallet[owner()] = true; isExcludedFromMaxWallet[address(this)] = true; isExcludedFromMaxWallet[marketingWallet] = true; emit Transfer(address(0), owner(), _totalSupply); } //to receive ETH from dexRouter when swapping receive() external payable {} function name() public view returns (string memory) { return _name; } function symbol() public view returns (string memory) { return _symbol; } function decimals() public view returns (uint8) { return _decimals; } function totalSupply() public view override returns (uint256) { return _totalSupply; } function balanceOf(address account) public view override returns (uint256) { return _balances[account]; } function transfer( address recipient, uint256 amount ) public override returns (bool) { _transfer(_msgSender(), recipient, amount); return true; } function allowance( address owner, address spender ) public view override returns (uint256) { return _allowances[owner][spender]; } function approve( address spender, uint256 amount ) public override returns (bool) { _approve(_msgSender(), spender, amount); return true; } function transferFrom( address sender, address recipient, uint256 amount ) public override returns (bool) { _transfer(sender, recipient, amount); _approve( sender, _msgSender(), _allowances[sender][_msgSender()] - 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) { _approve( _msgSender(), spender, _allowances[_msgSender()][spender] - subtractedValue ); return true; } function includeOrExcludeFromFee( address account, bool value ) external onlyOwner { isExcludedFromFee[account] = value; } function includeOrExcludeFromMaxTxn( address account, bool value ) external onlyOwner { isExcludedFromMaxTxn[account] = value; } function includeOrExcludeFromMaxWallet( address account, bool value ) external onlyOwner { isExcludedFromMaxWallet[account] = value; } function setMinTokenToSwap(uint256 _amount) external onlyOwner { minTokenToSwap = _amount * 1e18; } function setMaxHoldLimit(uint256 _amount) external onlyOwner { maxHoldLimit = _amount * 1e18; } function setMaxTxnLimit(uint256 _amount) external onlyOwner { maxTxnLimit = _amount * 1e18; } function setBuyFeePercent(uint256 _marketingFee) external onlyOwner { marketingFeeOnBuying = _marketingFee; } function setSellFeePercent(uint256 _marketingFee) external onlyOwner { marketingFeeOnSelling = _marketingFee; } function setDistributionStatus(bool _value) public onlyOwner { distributeAndLiquifyStatus = _value; } function enableOrDisableFees(bool _value) external onlyOwner { feesStatus = _value; } function updateAddresses(address _marketingWallet) external onlyOwner { marketingWallet = _marketingWallet; } function enableTrading() external onlyOwner { require(!trading, ": already enabled"); trading = true; feesStatus = true; distributeAndLiquifyStatus = true; launchedAt = block.timestamp; } function removeStuckEth(address _receiver) public onlyOwner { payable(_receiver).transfer(address(this).balance); } function totalBuyFeePerTx(uint256 amount) public view returns (uint256) { uint256 fee = (amount * marketingFeeOnBuying) / (percentDivider); return fee; } function totalSellFeePerTx(uint256 amount) public view returns (uint256) { uint256 fee = (amount * marketingFeeOnSelling) / (percentDivider); return fee; } function _approve(address owner, address spender, uint256 amount) private { require(owner != address(0), " approve from the zero address"); require(spender != address(0), "approve to the zero address"); _allowances[owner][spender] = amount; emit Approval(owner, spender, amount); } function _transfer(address from, address to, uint256 amount) private { require(from != address(0), "transfer from the zero address"); require(to != address(0), "transfer to the zero address"); require(amount > 0, "Amount must be greater than zero"); if (!isExcludedFromMaxTxn[from] && !isExcludedFromMaxTxn[to]) { require(amount <= maxTxnLimit, " max txn limit exceeds"); // trading disable till launch if (!trading) { require( dexPair != from && dexPair != to, ": trading is disable" ); } } if (!isExcludedFromMaxWallet[to]) { require( (balanceOf(to) + amount) <= maxHoldLimit, ": max hold limit exceeds" ); } // swap and liquify distributeAndLiquify(from, to); //indicates if fee should be deducted from transfer bool takeFee = true; //if any account belongs to isExcludedFromFee account then remove the fee if (isExcludedFromFee[from] || isExcludedFromFee[to] || !feesStatus) { takeFee = false; } //transfer amount, it will take tax, burn, liquidity fee _tokenTransfer(from, to, amount, takeFee); } //this method is responsible for taking all fees, if takeFee is true function _tokenTransfer( address sender, address recipient, uint256 amount, bool takeFee ) private { if (dexPair == sender && takeFee) { uint256 allFee; uint256 tTransferAmount; allFee = totalBuyFeePerTx(amount); tTransferAmount = amount - allFee; _balances[sender] = _balances[sender] - amount; _balances[recipient] = _balances[recipient] + tTransferAmount; emit Transfer(sender, recipient, tTransferAmount); takeTokenFee(sender, allFee); } else if (dexPair == recipient && takeFee) { uint256 allFee = totalSellFeePerTx(amount); uint256 tTransferAmount = amount - allFee; _balances[sender] = _balances[sender] - amount; _balances[recipient] = _balances[recipient] + tTransferAmount; emit Transfer(sender, recipient, tTransferAmount); takeTokenFee(sender, allFee); } else { _balances[sender] = _balances[sender] - amount; _balances[recipient] = _balances[recipient] + (amount); emit Transfer(sender, recipient, amount); } } function takeTokenFee(address sender, uint256 amount) private { _balances[address(this)] = _balances[address(this)] + (amount); emit Transfer(sender, address(this), amount); } // to withdarw ETH from contract function withdrawETH(uint256 _amount) external onlyOwner { require(address(this).balance >= _amount, "Invalid Amount"); payable(msg.sender).transfer(_amount); } // to withdraw ERC20 tokens from contract function withdrawToken(IERC20 _token, uint256 _amount) external onlyOwner { require(_token.balanceOf(address(this)) >= _amount, "Invalid Amount"); _token.transfer(msg.sender, _amount); } function distributeAndLiquify(address from, address to) private { uint256 contractTokenBalance = balanceOf(address(this)); bool shouldSell = contractTokenBalance >= minTokenToSwap; if ( shouldSell && from != dexPair && distributeAndLiquifyStatus && !(from == address(this) && to == dexPair) // swap 1 time ) { // approve contract _approve(address(this), address(dexRouter), minTokenToSwap); // now is to lock into liquidty pool Utils.swapTokensForEth(address(dexRouter), minTokenToSwap); uint256 ethForMarketing = address(this).balance; // sending Eth to Marketing wallet if (ethForMarketing > 0) payable(marketingWallet).transfer(ethForMarketing); } } } // Library for swapping on Dex library Utils { function swapTokensForEth( address routerAddress, uint256 tokenAmount ) internal { IDexRouter dexRouter = IDexRouter(routerAddress); // generate the Dex pair path of token -> weth address[] memory path = new address[](2); path[0] = address(this); path[1] = dexRouter.WETH(); // make the swap dexRouter.swapExactTokensForETHSupportingFeeOnTransferTokens( tokenAmount, 0, // accept any amount of ETH path, address(this), block.timestamp + 300 ); } function addLiquidity( address routerAddress, address owner, uint256 tokenAmount, uint256 ethAmount ) internal { IDexRouter dexRouter = IDexRouter(routerAddress); // add the liquidity dexRouter.addLiquidityETH{value: ethAmount}( address(this), tokenAmount, 0, // slippage is unavoidable 0, // slippage is unavoidable owner, block.timestamp + 300 ); } }
{ "optimizer": { "enabled": false, "runs": 200 }, "outputSelection": { "*": { "*": [ "evm.bytecode", "evm.deployedBytecode", "devdoc", "userdoc", "metadata", "abi" ] } } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"tokensSwapped","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"ethReceived","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"tokensIntoLiqudity","type":"uint256"}],"name":"SwapAndLiquify","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"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":[],"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":"dexPair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"dexRouter","outputs":[{"internalType":"contract IDexRouter","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"distributeAndLiquifyStatus","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bool","name":"_value","type":"bool"}],"name":"enableOrDisableFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"enableTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"feesStatus","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"value","type":"bool"}],"name":"includeOrExcludeFromFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"value","type":"bool"}],"name":"includeOrExcludeFromMaxTxn","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"value","type":"bool"}],"name":"includeOrExcludeFromMaxWallet","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":"isExcludedFromFee","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isExcludedFromMaxTxn","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isExcludedFromMaxWallet","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"launchedAt","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingFeeOnBuying","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingFeeOnSelling","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":"maxHoldLimit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxTxnLimit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"minTokenToSwap","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"percentDivider","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_receiver","type":"address"}],"name":"removeStuckEth","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_marketingFee","type":"uint256"}],"name":"setBuyFeePercent","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_value","type":"bool"}],"name":"setDistributionStatus","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"setMaxHoldLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"setMaxTxnLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"setMinTokenToSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_marketingFee","type":"uint256"}],"name":"setSellFeePercent","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"totalBuyFeePerTx","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"totalSellFeePerTx","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"trading","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":[{"internalType":"address","name":"_marketingWallet","type":"address"}],"name":"updateAddresses","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"withdrawETH","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract IERC20","name":"_token","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"withdrawToken","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
60806040526040518060400160405280600281526020017f4149000000000000000000000000000000000000000000000000000000000000815250600190816200004a919062000c72565b506040518060400160405280600481526020017f50554d50000000000000000000000000000000000000000000000000000000008152506002908162000091919062000c72565b50601260035f6101000a81548160ff021916908360ff1602179055506d14bddab3e51a57cff87a500000006004556127106005600454620000d3919062000d83565b620000df919062000dfa565b600a5560646002600454620000f5919062000d83565b62000101919062000dfa565b600b556064600260045462000117919062000d83565b62000123919062000dfa565b600c556064600d556014601255601460135534801562000141575f80fd5b5062000152620009e060201b60201c565b5f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360045460055f6200021f620009e760201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f208190555073c1a698e000fbd0de4ac4cb98a43e8e0efa6c2b5760115f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550737a250d5630b4cf539739df2c5dacb4c659f2488d600f60036101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160075f600f60039054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160085f600f60039054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160095f600f60039054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600f60039054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015620004d6573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620004fc919062000e96565b73ffffffffffffffffffffffffffffffffffffffff1663c9c6539630600f60039054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000584573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620005aa919062000e96565b6040518363ffffffff1660e01b8152600401620005c992919062000ed7565b6020604051808303815f875af1158015620005e6573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906200060c919062000e96565b60105f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160095f60105f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160075f620006d6620009e760201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160075f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160085f6200078f620009e760201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160085f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160095f62000848620009e760201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160095f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160095f60115f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555062000972620009e760201b60201c565b73ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600454604051620009d2919062000f13565b60405180910390a362000f2e565b5f33905090565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b5f81519050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f600282049050600182168062000a8a57607f821691505b60208210810362000aa05762000a9f62000a45565b5b50919050565b5f819050815f5260205f209050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f6008830262000b047fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8262000ac7565b62000b10868362000ac7565b95508019841693508086168417925050509392505050565b5f819050919050565b5f819050919050565b5f62000b5a62000b5462000b4e8462000b28565b62000b31565b62000b28565b9050919050565b5f819050919050565b62000b758362000b3a565b62000b8d62000b848262000b61565b84845462000ad3565b825550505050565b5f90565b62000ba362000b95565b62000bb081848462000b6a565b505050565b5b8181101562000bd75762000bcb5f8262000b99565b60018101905062000bb6565b5050565b601f82111562000c265762000bf08162000aa6565b62000bfb8462000ab8565b8101602085101562000c0b578190505b62000c2362000c1a8562000ab8565b83018262000bb5565b50505b505050565b5f82821c905092915050565b5f62000c485f198460080262000c2b565b1980831691505092915050565b5f62000c62838362000c37565b9150826002028217905092915050565b62000c7d8262000a0e565b67ffffffffffffffff81111562000c995762000c9862000a18565b5b62000ca5825462000a72565b62000cb282828562000bdb565b5f60209050601f83116001811462000ce8575f841562000cd3578287015190505b62000cdf858262000c55565b86555062000d4e565b601f19841662000cf88662000aa6565b5f5b8281101562000d215784890151825560018201915060208501945060208101905062000cfa565b8683101562000d41578489015162000d3d601f89168262000c37565b8355505b6001600288020188555050505b505050505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f62000d8f8262000b28565b915062000d9c8362000b28565b925082820262000dac8162000b28565b9150828204841483151762000dc65762000dc562000d56565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f62000e068262000b28565b915062000e138362000b28565b92508262000e265762000e2562000dcd565b5b828204905092915050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f62000e608262000e35565b9050919050565b62000e728162000e54565b811462000e7d575f80fd5b50565b5f8151905062000e908162000e67565b92915050565b5f6020828403121562000eae5762000ead62000e31565b5b5f62000ebd8482850162000e80565b91505092915050565b62000ed18162000e54565b82525050565b5f60408201905062000eec5f83018562000ec6565b62000efb602083018462000ec6565b9392505050565b62000f0d8162000b28565b82525050565b5f60208201905062000f285f83018462000f02565b92915050565b613f978062000f3c5f395ff3fe60806040526004361061028b575f3560e01c8063950eb5d511610159578063bf56b371116100c0578063f097ea1a11610079578063f097ea1a146109d6578063f14210a6146109fe578063f242ab4114610a26578063f2fde38b14610a50578063f4b3dbc314610a78578063fe6f1b0514610ab457610292565b8063bf56b371146108ba578063d1daac51146108e4578063dd62ed3e1461090c578063ea5b9e8514610948578063ec44acf214610970578063ed4214291461099a57610292565b8063a2b8a94711610112578063a2b8a947146107a2578063a457c2d7146107ca578063a643c1a014610806578063a7c29b401461082e578063a9059cbb14610856578063b0bc2a2d1461089257610292565b8063950eb5d51461069a57806395d89b41146106c257806399b102b5146106ec5780639a36dfa1146107285780639b6a2750146107525780639e281a981461077a57610292565b8063681aa362116101fd5780637c6a9a9c116101b65780637c6a9a9c146105b4578063844af78e146105de5780638756aabd14610608578063879dd3c5146106305780638a8c523c1461065a5780638da5cb5b1461067057610292565b8063681aa362146104a85780636dd3d39f146104d257806370a082311461050e578063715018a61461054a57806375f0a8741461056057806379777b4e1461058a57610292565b80631884f1e61161024f5780631884f1e61461037857806323b872dd146103a2578063313ce567146103de57806339509351146104085780635342acb414610444578063679a3c591461048057610292565b806306fdde03146102965780630758d924146102c0578063095ea7b3146102ea5780630a2d140c1461032657806318160ddd1461034e57610292565b3661029257005b5f80fd5b3480156102a1575f80fd5b506102aa610ade565b6040516102b7919061323d565b60405180910390f35b3480156102cb575f80fd5b506102d4610b6e565b6040516102e191906132d7565b60405180910390f35b3480156102f5575f80fd5b50610310600480360381019061030b9190613362565b610b94565b60405161031d91906133ba565b60405180910390f35b348015610331575f80fd5b5061034c600480360381019061034791906133fd565b610bb1565b005b348015610359575f80fd5b50610362610c61565b60405161036f9190613437565b60405180910390f35b348015610383575f80fd5b5061038c610c6a565b6040516103999190613437565b60405180910390f35b3480156103ad575f80fd5b506103c860048036038101906103c39190613450565b610c70565b6040516103d591906133ba565b60405180910390f35b3480156103e9575f80fd5b506103f2610d23565b6040516103ff91906134bb565b60405180910390f35b348015610413575f80fd5b5061042e60048036038101906104299190613362565b610d38565b60405161043b91906133ba565b60405180910390f35b34801561044f575f80fd5b5061046a600480360381019061046591906134d4565b610ddf565b60405161047791906133ba565b60405180910390f35b34801561048b575f80fd5b506104a660048036038101906104a191906134d4565b610dfc565b005b3480156104b3575f80fd5b506104bc610ed7565b6040516104c99190613437565b60405180910390f35b3480156104dd575f80fd5b506104f860048036038101906104f391906134d4565b610edd565b60405161050591906133ba565b60405180910390f35b348015610519575f80fd5b50610534600480360381019061052f91906134d4565b610efa565b6040516105419190613437565b60405180910390f35b348015610555575f80fd5b5061055e610f40565b005b34801561056b575f80fd5b5061057461108e565b604051610581919061350e565b60405180910390f35b348015610595575f80fd5b5061059e6110b3565b6040516105ab91906133ba565b60405180910390f35b3480156105bf575f80fd5b506105c86110c5565b6040516105d59190613437565b60405180910390f35b3480156105e9575f80fd5b506105f26110cb565b6040516105ff9190613437565b60405180910390f35b348015610613575f80fd5b5061062e60048036038101906106299190613527565b6110d1565b005b34801561063b575f80fd5b50610644611182565b60405161065191906133ba565b60405180910390f35b348015610665575f80fd5b5061066e611195565b005b34801561067b575f80fd5b506106846112d2565b604051610691919061350e565b60405180910390f35b3480156106a5575f80fd5b506106c060048036038101906106bb9190613527565b6112f9565b005b3480156106cd575f80fd5b506106d6611397565b6040516106e3919061323d565b60405180910390f35b3480156106f7575f80fd5b50610712600480360381019061070d91906134d4565b611427565b60405161071f91906133ba565b60405180910390f35b348015610733575f80fd5b5061073c611444565b6040516107499190613437565b60405180910390f35b34801561075d575f80fd5b5061077860048036038101906107739190613527565b61144a565b005b348015610785575f80fd5b506107a0600480360381019061079b919061358d565b6114fb565b005b3480156107ad575f80fd5b506107c860048036038101906107c39190613527565b6116c9565b005b3480156107d5575f80fd5b506107f060048036038101906107eb9190613362565b611767565b6040516107fd91906133ba565b60405180910390f35b348015610811575f80fd5b5061082c600480360381019061082791906134d4565b61180e565b005b348015610839575f80fd5b50610854600480360381019061084f91906135cb565b6118e5565b005b348015610861575f80fd5b5061087c60048036038101906108779190613362565b6119d1565b60405161088991906133ba565b60405180910390f35b34801561089d575f80fd5b506108b860048036038101906108b391906133fd565b6119ee565b005b3480156108c5575f80fd5b506108ce611a9f565b6040516108db9190613437565b60405180910390f35b3480156108ef575f80fd5b5061090a600480360381019061090591906135cb565b611aa5565b005b348015610917575f80fd5b50610932600480360381019061092d9190613609565b611b91565b60405161093f9190613437565b60405180910390f35b348015610953575f80fd5b5061096e600480360381019061096991906135cb565b611c13565b005b34801561097b575f80fd5b50610984611cff565b60405161099191906133ba565b60405180910390f35b3480156109a5575f80fd5b506109c060048036038101906109bb9190613527565b611d12565b6040516109cd9190613437565b60405180910390f35b3480156109e1575f80fd5b506109fc60048036038101906109f79190613527565b611d3a565b005b348015610a09575f80fd5b50610a246004803603810190610a1f9190613527565b611deb565b005b348015610a31575f80fd5b50610a3a611f09565b604051610a47919061350e565b60405180910390f35b348015610a5b575f80fd5b50610a766004803603810190610a7191906134d4565b611f2e565b005b348015610a83575f80fd5b50610a9e6004803603810190610a999190613527565b6120eb565b604051610aab9190613437565b60405180910390f35b348015610abf575f80fd5b50610ac8612113565b604051610ad59190613437565b60405180910390f35b606060018054610aed90613674565b80601f0160208091040260200160405190810160405280929190818152602001828054610b1990613674565b8015610b645780601f10610b3b57610100808354040283529160200191610b64565b820191905f5260205f20905b815481529060010190602001808311610b4757829003601f168201915b5050505050905090565b600f60039054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f610ba7610ba0612119565b8484612120565b6001905092915050565b610bb9612119565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610c45576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c3c906136ee565b60405180910390fd5b80600f5f6101000a81548160ff02191690831515021790555050565b5f600454905090565b600a5481565b5f610c7c8484846122e3565b610d1884610c88612119565b8460065f8973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f610ccf612119565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054610d139190613739565b612120565b600190509392505050565b5f60035f9054906101000a900460ff16905090565b5f610dd5610d44612119565b848460065f610d51612119565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054610dd0919061376c565b612120565b6001905092915050565b6007602052805f5260405f205f915054906101000a900460ff1681565b610e04612119565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610e90576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e87906136ee565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff166108fc4790811502906040515f60405180830381858888f19350505050158015610ed3573d5f803e3d5ffd5b5050565b600c5481565b6009602052805f5260405f205f915054906101000a900460ff1681565b5f60055f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b610f48612119565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610fd4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fcb906136ee565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35f805f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b60115f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600f5f9054906101000a900460ff1681565b60125481565b60135481565b6110d9612119565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611165576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161115c906136ee565b60405180910390fd5b670de0b6b3a764000081611179919061379f565b600b8190555050565b600f60019054906101000a900460ff1681565b61119d612119565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611229576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611220906136ee565b60405180910390fd5b600f60029054906101000a900460ff1615611279576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112709061382a565b60405180910390fd5b6001600f60026101000a81548160ff0219169083151502179055506001600f60016101000a81548160ff0219169083151502179055506001600f5f6101000a81548160ff02191690831515021790555042600e81905550565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b611301612119565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461138d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611384906136ee565b60405180910390fd5b8060128190555050565b6060600280546113a690613674565b80601f01602080910402602001604051908101604052809291908181526020018280546113d290613674565b801561141d5780601f106113f45761010080835404028352916020019161141d565b820191905f5260205f20905b81548152906001019060200180831161140057829003601f168201915b5050505050905090565b6008602052805f5260405f205f915054906101000a900460ff1681565b600b5481565b611452612119565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146114de576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114d5906136ee565b60405180910390fd5b670de0b6b3a7640000816114f2919061379f565b600c8190555050565b611503612119565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461158f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611586906136ee565b60405180910390fd5b808273ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016115c9919061350e565b602060405180830381865afa1580156115e4573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611608919061385c565b1015611649576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611640906138d1565b60405180910390fd5b8173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33836040518363ffffffff1660e01b81526004016116849291906138ef565b6020604051808303815f875af11580156116a0573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906116c4919061392a565b505050565b6116d1612119565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461175d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611754906136ee565b60405180910390fd5b8060138190555050565b5f611804611773612119565b848460065f611780612119565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546117ff9190613739565b612120565b6001905092915050565b611816612119565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146118a2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611899906136ee565b60405180910390fd5b8060115f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6118ed612119565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611979576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611970906136ee565b60405180910390fd5b8060085f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505050565b5f6119e46119dd612119565b84846122e3565b6001905092915050565b6119f6612119565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611a82576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a79906136ee565b60405180910390fd5b80600f60016101000a81548160ff02191690831515021790555050565b600e5481565b611aad612119565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611b39576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b30906136ee565b60405180910390fd5b8060095f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505050565b5f60065f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b611c1b612119565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611ca7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c9e906136ee565b60405180910390fd5b8060075f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505050565b600f60029054906101000a900460ff1681565b5f80600d5460125484611d25919061379f565b611d2f9190613982565b905080915050919050565b611d42612119565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611dce576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611dc5906136ee565b60405180910390fd5b670de0b6b3a764000081611de2919061379f565b600a8190555050565b611df3612119565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611e7f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e76906136ee565b60405180910390fd5b80471015611ec2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611eb9906138d1565b60405180910390fd5b3373ffffffffffffffffffffffffffffffffffffffff166108fc8290811502906040515f60405180830381858888f19350505050158015611f05573d5f803e3d5ffd5b5050565b60105f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b611f36612119565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611fc2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fb9906136ee565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603612030576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161202790613a22565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3805f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b5f80600d54601354846120fe919061379f565b6121089190613982565b905080915050919050565b600d5481565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361218e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161218590613a8a565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036121fc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121f390613af2565b60405180910390fd5b8060065f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516122d69190613437565b60405180910390a3505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612351576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161234890613b5a565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036123bf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123b690613bc2565b60405180910390fd5b5f8111612401576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123f890613c2a565b60405180910390fd5b60085f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1615801561249f575060085f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b156125e857600c548111156124e9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124e090613c92565b60405180910390fd5b600f60029054906101000a900460ff166125e7578273ffffffffffffffffffffffffffffffffffffffff1660105f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141580156125a757508173ffffffffffffffffffffffffffffffffffffffff1660105f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614155b6125e6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125dd90613cfa565b60405180910390fd5b5b5b60095f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1661268f57600b548161264384610efa565b61264d919061376c565b111561268e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161268590613d62565b60405180910390fd5b5b612699838361276c565b5f6001905060075f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1680612739575060075f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b806127515750600f60019054906101000a900460ff16155b1561275a575f90505b6127668484848461295e565b50505050565b5f61277630610efa565b90505f600a5482101590508080156127db575060105f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b80156127f25750600f5f9054906101000a900460ff165b801561288257503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16148015612880575060105f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16145b155b15612958576128b630600f60039054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600a54612120565b6128e4600f60039054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600a54612ee5565b5f4790505f8111156129565760115f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc8290811502906040515f60405180830381858888f19350505050158015612954573d5f803e3d5ffd5b505b505b50505050565b8373ffffffffffffffffffffffffffffffffffffffff1660105f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161480156129b75750805b15612b61575f806129c784611d12565b915081846129d59190613739565b90508360055f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054612a209190613739565b60055f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508060055f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054612aaa919061376c565b60055f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051612b489190613437565b60405180910390a3612b5a86836130c0565b5050612edf565b8273ffffffffffffffffffffffffffffffffffffffff1660105f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16148015612bba5750805b15612d64575f612bc9836120eb565b90505f8184612bd89190613739565b90508360055f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054612c239190613739565b60055f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508060055f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054612cad919061376c565b60055f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051612d4b9190613437565b60405180910390a3612d5d86836130c0565b5050612ede565b8160055f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054612dad9190613739565b60055f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508160055f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054612e37919061376c565b60055f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051612ed59190613437565b60405180910390a35b5b50505050565b5f8290505f600267ffffffffffffffff811115612f0557612f04613d80565b5b604051908082528060200260200182016040528015612f335781602001602082028036833780820191505090505b50905030815f81518110612f4a57612f49613dad565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250508173ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612fcd573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612ff19190613dee565b8160018151811061300557613004613dad565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250508173ffffffffffffffffffffffffffffffffffffffff1663791ac947845f843061012c4261306d919061376c565b6040518663ffffffff1660e01b815260040161308d959493929190613f09565b5f604051808303815f87803b1580156130a4575f80fd5b505af11580156130b6573d5f803e3d5ffd5b5050505050505050565b8060055f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054613109919061376c565b60055f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055503073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516131a79190613437565b60405180910390a35050565b5f81519050919050565b5f82825260208201905092915050565b5f5b838110156131ea5780820151818401526020810190506131cf565b5f8484015250505050565b5f601f19601f8301169050919050565b5f61320f826131b3565b61321981856131bd565b93506132298185602086016131cd565b613232816131f5565b840191505092915050565b5f6020820190508181035f8301526132558184613205565b905092915050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f819050919050565b5f61329f61329a6132958461325d565b61327c565b61325d565b9050919050565b5f6132b082613285565b9050919050565b5f6132c1826132a6565b9050919050565b6132d1816132b7565b82525050565b5f6020820190506132ea5f8301846132c8565b92915050565b5f80fd5b5f6132fe8261325d565b9050919050565b61330e816132f4565b8114613318575f80fd5b50565b5f8135905061332981613305565b92915050565b5f819050919050565b6133418161332f565b811461334b575f80fd5b50565b5f8135905061335c81613338565b92915050565b5f8060408385031215613378576133776132f0565b5b5f6133858582860161331b565b92505060206133968582860161334e565b9150509250929050565b5f8115159050919050565b6133b4816133a0565b82525050565b5f6020820190506133cd5f8301846133ab565b92915050565b6133dc816133a0565b81146133e6575f80fd5b50565b5f813590506133f7816133d3565b92915050565b5f60208284031215613412576134116132f0565b5b5f61341f848285016133e9565b91505092915050565b6134318161332f565b82525050565b5f60208201905061344a5f830184613428565b92915050565b5f805f60608486031215613467576134666132f0565b5b5f6134748682870161331b565b93505060206134858682870161331b565b92505060406134968682870161334e565b9150509250925092565b5f60ff82169050919050565b6134b5816134a0565b82525050565b5f6020820190506134ce5f8301846134ac565b92915050565b5f602082840312156134e9576134e86132f0565b5b5f6134f68482850161331b565b91505092915050565b613508816132f4565b82525050565b5f6020820190506135215f8301846134ff565b92915050565b5f6020828403121561353c5761353b6132f0565b5b5f6135498482850161334e565b91505092915050565b5f61355c826132f4565b9050919050565b61356c81613552565b8114613576575f80fd5b50565b5f8135905061358781613563565b92915050565b5f80604083850312156135a3576135a26132f0565b5b5f6135b085828601613579565b92505060206135c18582860161334e565b9150509250929050565b5f80604083850312156135e1576135e06132f0565b5b5f6135ee8582860161331b565b92505060206135ff858286016133e9565b9150509250929050565b5f806040838503121561361f5761361e6132f0565b5b5f61362c8582860161331b565b925050602061363d8582860161331b565b9150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f600282049050600182168061368b57607f821691505b60208210810361369e5761369d613647565b5b50919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f6136d86020836131bd565b91506136e3826136a4565b602082019050919050565b5f6020820190508181035f830152613705816136cc565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f6137438261332f565b915061374e8361332f565b92508282039050818111156137665761376561370c565b5b92915050565b5f6137768261332f565b91506137818361332f565b92508282019050808211156137995761379861370c565b5b92915050565b5f6137a98261332f565b91506137b48361332f565b92508282026137c28161332f565b915082820484148315176137d9576137d861370c565b5b5092915050565b7f3a20616c726561647920656e61626c65640000000000000000000000000000005f82015250565b5f6138146011836131bd565b915061381f826137e0565b602082019050919050565b5f6020820190508181035f83015261384181613808565b9050919050565b5f8151905061385681613338565b92915050565b5f60208284031215613871576138706132f0565b5b5f61387e84828501613848565b91505092915050565b7f496e76616c696420416d6f756e740000000000000000000000000000000000005f82015250565b5f6138bb600e836131bd565b91506138c682613887565b602082019050919050565b5f6020820190508181035f8301526138e8816138af565b9050919050565b5f6040820190506139025f8301856134ff565b61390f6020830184613428565b9392505050565b5f81519050613924816133d3565b92915050565b5f6020828403121561393f5761393e6132f0565b5b5f61394c84828501613916565b91505092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f61398c8261332f565b91506139978361332f565b9250826139a7576139a6613955565b5b828204905092915050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f20615f8201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b5f613a0c6026836131bd565b9150613a17826139b2565b604082019050919050565b5f6020820190508181035f830152613a3981613a00565b9050919050565b7f20617070726f76652066726f6d20746865207a65726f206164647265737300005f82015250565b5f613a74601e836131bd565b9150613a7f82613a40565b602082019050919050565b5f6020820190508181035f830152613aa181613a68565b9050919050565b7f617070726f766520746f20746865207a65726f206164647265737300000000005f82015250565b5f613adc601b836131bd565b9150613ae782613aa8565b602082019050919050565b5f6020820190508181035f830152613b0981613ad0565b9050919050565b7f7472616e736665722066726f6d20746865207a65726f206164647265737300005f82015250565b5f613b44601e836131bd565b9150613b4f82613b10565b602082019050919050565b5f6020820190508181035f830152613b7181613b38565b9050919050565b7f7472616e7366657220746f20746865207a65726f2061646472657373000000005f82015250565b5f613bac601c836131bd565b9150613bb782613b78565b602082019050919050565b5f6020820190508181035f830152613bd981613ba0565b9050919050565b7f416d6f756e74206d7573742062652067726561746572207468616e207a65726f5f82015250565b5f613c146020836131bd565b9150613c1f82613be0565b602082019050919050565b5f6020820190508181035f830152613c4181613c08565b9050919050565b7f206d61782074786e206c696d69742065786365656473000000000000000000005f82015250565b5f613c7c6016836131bd565b9150613c8782613c48565b602082019050919050565b5f6020820190508181035f830152613ca981613c70565b9050919050565b7f3a2074726164696e672069732064697361626c650000000000000000000000005f82015250565b5f613ce46014836131bd565b9150613cef82613cb0565b602082019050919050565b5f6020820190508181035f830152613d1181613cd8565b9050919050565b7f3a206d617820686f6c64206c696d6974206578636565647300000000000000005f82015250565b5f613d4c6018836131bd565b9150613d5782613d18565b602082019050919050565b5f6020820190508181035f830152613d7981613d40565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f81519050613de881613305565b92915050565b5f60208284031215613e0357613e026132f0565b5b5f613e1084828501613dda565b91505092915050565b5f819050919050565b5f613e3c613e37613e3284613e19565b61327c565b61332f565b9050919050565b613e4c81613e22565b82525050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b613e84816132f4565b82525050565b5f613e958383613e7b565b60208301905092915050565b5f602082019050919050565b5f613eb782613e52565b613ec18185613e5c565b9350613ecc83613e6c565b805f5b83811015613efc578151613ee38882613e8a565b9750613eee83613ea1565b925050600181019050613ecf565b5085935050505092915050565b5f60a082019050613f1c5f830188613428565b613f296020830187613e43565b8181036040830152613f3b8186613ead565b9050613f4a60608301856134ff565b613f576080830184613428565b969550505050505056fea26469706673582212209a3bfe0bd22832be1a4df7a075d7abbcc0374ca87188a533adf4f659ef363f9264736f6c63430008170033
Deployed Bytecode
0x60806040526004361061028b575f3560e01c8063950eb5d511610159578063bf56b371116100c0578063f097ea1a11610079578063f097ea1a146109d6578063f14210a6146109fe578063f242ab4114610a26578063f2fde38b14610a50578063f4b3dbc314610a78578063fe6f1b0514610ab457610292565b8063bf56b371146108ba578063d1daac51146108e4578063dd62ed3e1461090c578063ea5b9e8514610948578063ec44acf214610970578063ed4214291461099a57610292565b8063a2b8a94711610112578063a2b8a947146107a2578063a457c2d7146107ca578063a643c1a014610806578063a7c29b401461082e578063a9059cbb14610856578063b0bc2a2d1461089257610292565b8063950eb5d51461069a57806395d89b41146106c257806399b102b5146106ec5780639a36dfa1146107285780639b6a2750146107525780639e281a981461077a57610292565b8063681aa362116101fd5780637c6a9a9c116101b65780637c6a9a9c146105b4578063844af78e146105de5780638756aabd14610608578063879dd3c5146106305780638a8c523c1461065a5780638da5cb5b1461067057610292565b8063681aa362146104a85780636dd3d39f146104d257806370a082311461050e578063715018a61461054a57806375f0a8741461056057806379777b4e1461058a57610292565b80631884f1e61161024f5780631884f1e61461037857806323b872dd146103a2578063313ce567146103de57806339509351146104085780635342acb414610444578063679a3c591461048057610292565b806306fdde03146102965780630758d924146102c0578063095ea7b3146102ea5780630a2d140c1461032657806318160ddd1461034e57610292565b3661029257005b5f80fd5b3480156102a1575f80fd5b506102aa610ade565b6040516102b7919061323d565b60405180910390f35b3480156102cb575f80fd5b506102d4610b6e565b6040516102e191906132d7565b60405180910390f35b3480156102f5575f80fd5b50610310600480360381019061030b9190613362565b610b94565b60405161031d91906133ba565b60405180910390f35b348015610331575f80fd5b5061034c600480360381019061034791906133fd565b610bb1565b005b348015610359575f80fd5b50610362610c61565b60405161036f9190613437565b60405180910390f35b348015610383575f80fd5b5061038c610c6a565b6040516103999190613437565b60405180910390f35b3480156103ad575f80fd5b506103c860048036038101906103c39190613450565b610c70565b6040516103d591906133ba565b60405180910390f35b3480156103e9575f80fd5b506103f2610d23565b6040516103ff91906134bb565b60405180910390f35b348015610413575f80fd5b5061042e60048036038101906104299190613362565b610d38565b60405161043b91906133ba565b60405180910390f35b34801561044f575f80fd5b5061046a600480360381019061046591906134d4565b610ddf565b60405161047791906133ba565b60405180910390f35b34801561048b575f80fd5b506104a660048036038101906104a191906134d4565b610dfc565b005b3480156104b3575f80fd5b506104bc610ed7565b6040516104c99190613437565b60405180910390f35b3480156104dd575f80fd5b506104f860048036038101906104f391906134d4565b610edd565b60405161050591906133ba565b60405180910390f35b348015610519575f80fd5b50610534600480360381019061052f91906134d4565b610efa565b6040516105419190613437565b60405180910390f35b348015610555575f80fd5b5061055e610f40565b005b34801561056b575f80fd5b5061057461108e565b604051610581919061350e565b60405180910390f35b348015610595575f80fd5b5061059e6110b3565b6040516105ab91906133ba565b60405180910390f35b3480156105bf575f80fd5b506105c86110c5565b6040516105d59190613437565b60405180910390f35b3480156105e9575f80fd5b506105f26110cb565b6040516105ff9190613437565b60405180910390f35b348015610613575f80fd5b5061062e60048036038101906106299190613527565b6110d1565b005b34801561063b575f80fd5b50610644611182565b60405161065191906133ba565b60405180910390f35b348015610665575f80fd5b5061066e611195565b005b34801561067b575f80fd5b506106846112d2565b604051610691919061350e565b60405180910390f35b3480156106a5575f80fd5b506106c060048036038101906106bb9190613527565b6112f9565b005b3480156106cd575f80fd5b506106d6611397565b6040516106e3919061323d565b60405180910390f35b3480156106f7575f80fd5b50610712600480360381019061070d91906134d4565b611427565b60405161071f91906133ba565b60405180910390f35b348015610733575f80fd5b5061073c611444565b6040516107499190613437565b60405180910390f35b34801561075d575f80fd5b5061077860048036038101906107739190613527565b61144a565b005b348015610785575f80fd5b506107a0600480360381019061079b919061358d565b6114fb565b005b3480156107ad575f80fd5b506107c860048036038101906107c39190613527565b6116c9565b005b3480156107d5575f80fd5b506107f060048036038101906107eb9190613362565b611767565b6040516107fd91906133ba565b60405180910390f35b348015610811575f80fd5b5061082c600480360381019061082791906134d4565b61180e565b005b348015610839575f80fd5b50610854600480360381019061084f91906135cb565b6118e5565b005b348015610861575f80fd5b5061087c60048036038101906108779190613362565b6119d1565b60405161088991906133ba565b60405180910390f35b34801561089d575f80fd5b506108b860048036038101906108b391906133fd565b6119ee565b005b3480156108c5575f80fd5b506108ce611a9f565b6040516108db9190613437565b60405180910390f35b3480156108ef575f80fd5b5061090a600480360381019061090591906135cb565b611aa5565b005b348015610917575f80fd5b50610932600480360381019061092d9190613609565b611b91565b60405161093f9190613437565b60405180910390f35b348015610953575f80fd5b5061096e600480360381019061096991906135cb565b611c13565b005b34801561097b575f80fd5b50610984611cff565b60405161099191906133ba565b60405180910390f35b3480156109a5575f80fd5b506109c060048036038101906109bb9190613527565b611d12565b6040516109cd9190613437565b60405180910390f35b3480156109e1575f80fd5b506109fc60048036038101906109f79190613527565b611d3a565b005b348015610a09575f80fd5b50610a246004803603810190610a1f9190613527565b611deb565b005b348015610a31575f80fd5b50610a3a611f09565b604051610a47919061350e565b60405180910390f35b348015610a5b575f80fd5b50610a766004803603810190610a7191906134d4565b611f2e565b005b348015610a83575f80fd5b50610a9e6004803603810190610a999190613527565b6120eb565b604051610aab9190613437565b60405180910390f35b348015610abf575f80fd5b50610ac8612113565b604051610ad59190613437565b60405180910390f35b606060018054610aed90613674565b80601f0160208091040260200160405190810160405280929190818152602001828054610b1990613674565b8015610b645780601f10610b3b57610100808354040283529160200191610b64565b820191905f5260205f20905b815481529060010190602001808311610b4757829003601f168201915b5050505050905090565b600f60039054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f610ba7610ba0612119565b8484612120565b6001905092915050565b610bb9612119565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610c45576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c3c906136ee565b60405180910390fd5b80600f5f6101000a81548160ff02191690831515021790555050565b5f600454905090565b600a5481565b5f610c7c8484846122e3565b610d1884610c88612119565b8460065f8973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f610ccf612119565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054610d139190613739565b612120565b600190509392505050565b5f60035f9054906101000a900460ff16905090565b5f610dd5610d44612119565b848460065f610d51612119565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054610dd0919061376c565b612120565b6001905092915050565b6007602052805f5260405f205f915054906101000a900460ff1681565b610e04612119565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610e90576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e87906136ee565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff166108fc4790811502906040515f60405180830381858888f19350505050158015610ed3573d5f803e3d5ffd5b5050565b600c5481565b6009602052805f5260405f205f915054906101000a900460ff1681565b5f60055f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b610f48612119565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610fd4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fcb906136ee565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35f805f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b60115f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600f5f9054906101000a900460ff1681565b60125481565b60135481565b6110d9612119565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611165576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161115c906136ee565b60405180910390fd5b670de0b6b3a764000081611179919061379f565b600b8190555050565b600f60019054906101000a900460ff1681565b61119d612119565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611229576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611220906136ee565b60405180910390fd5b600f60029054906101000a900460ff1615611279576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112709061382a565b60405180910390fd5b6001600f60026101000a81548160ff0219169083151502179055506001600f60016101000a81548160ff0219169083151502179055506001600f5f6101000a81548160ff02191690831515021790555042600e81905550565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b611301612119565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461138d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611384906136ee565b60405180910390fd5b8060128190555050565b6060600280546113a690613674565b80601f01602080910402602001604051908101604052809291908181526020018280546113d290613674565b801561141d5780601f106113f45761010080835404028352916020019161141d565b820191905f5260205f20905b81548152906001019060200180831161140057829003601f168201915b5050505050905090565b6008602052805f5260405f205f915054906101000a900460ff1681565b600b5481565b611452612119565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146114de576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114d5906136ee565b60405180910390fd5b670de0b6b3a7640000816114f2919061379f565b600c8190555050565b611503612119565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461158f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611586906136ee565b60405180910390fd5b808273ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016115c9919061350e565b602060405180830381865afa1580156115e4573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611608919061385c565b1015611649576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611640906138d1565b60405180910390fd5b8173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33836040518363ffffffff1660e01b81526004016116849291906138ef565b6020604051808303815f875af11580156116a0573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906116c4919061392a565b505050565b6116d1612119565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461175d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611754906136ee565b60405180910390fd5b8060138190555050565b5f611804611773612119565b848460065f611780612119565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546117ff9190613739565b612120565b6001905092915050565b611816612119565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146118a2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611899906136ee565b60405180910390fd5b8060115f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6118ed612119565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611979576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611970906136ee565b60405180910390fd5b8060085f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505050565b5f6119e46119dd612119565b84846122e3565b6001905092915050565b6119f6612119565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611a82576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a79906136ee565b60405180910390fd5b80600f60016101000a81548160ff02191690831515021790555050565b600e5481565b611aad612119565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611b39576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b30906136ee565b60405180910390fd5b8060095f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505050565b5f60065f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b611c1b612119565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611ca7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c9e906136ee565b60405180910390fd5b8060075f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505050565b600f60029054906101000a900460ff1681565b5f80600d5460125484611d25919061379f565b611d2f9190613982565b905080915050919050565b611d42612119565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611dce576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611dc5906136ee565b60405180910390fd5b670de0b6b3a764000081611de2919061379f565b600a8190555050565b611df3612119565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611e7f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e76906136ee565b60405180910390fd5b80471015611ec2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611eb9906138d1565b60405180910390fd5b3373ffffffffffffffffffffffffffffffffffffffff166108fc8290811502906040515f60405180830381858888f19350505050158015611f05573d5f803e3d5ffd5b5050565b60105f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b611f36612119565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611fc2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fb9906136ee565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603612030576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161202790613a22565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3805f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b5f80600d54601354846120fe919061379f565b6121089190613982565b905080915050919050565b600d5481565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361218e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161218590613a8a565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036121fc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121f390613af2565b60405180910390fd5b8060065f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516122d69190613437565b60405180910390a3505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612351576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161234890613b5a565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036123bf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123b690613bc2565b60405180910390fd5b5f8111612401576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123f890613c2a565b60405180910390fd5b60085f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1615801561249f575060085f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b156125e857600c548111156124e9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124e090613c92565b60405180910390fd5b600f60029054906101000a900460ff166125e7578273ffffffffffffffffffffffffffffffffffffffff1660105f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141580156125a757508173ffffffffffffffffffffffffffffffffffffffff1660105f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614155b6125e6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125dd90613cfa565b60405180910390fd5b5b5b60095f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1661268f57600b548161264384610efa565b61264d919061376c565b111561268e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161268590613d62565b60405180910390fd5b5b612699838361276c565b5f6001905060075f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1680612739575060075f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b806127515750600f60019054906101000a900460ff16155b1561275a575f90505b6127668484848461295e565b50505050565b5f61277630610efa565b90505f600a5482101590508080156127db575060105f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b80156127f25750600f5f9054906101000a900460ff165b801561288257503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16148015612880575060105f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16145b155b15612958576128b630600f60039054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600a54612120565b6128e4600f60039054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600a54612ee5565b5f4790505f8111156129565760115f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc8290811502906040515f60405180830381858888f19350505050158015612954573d5f803e3d5ffd5b505b505b50505050565b8373ffffffffffffffffffffffffffffffffffffffff1660105f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161480156129b75750805b15612b61575f806129c784611d12565b915081846129d59190613739565b90508360055f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054612a209190613739565b60055f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508060055f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054612aaa919061376c565b60055f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051612b489190613437565b60405180910390a3612b5a86836130c0565b5050612edf565b8273ffffffffffffffffffffffffffffffffffffffff1660105f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16148015612bba5750805b15612d64575f612bc9836120eb565b90505f8184612bd89190613739565b90508360055f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054612c239190613739565b60055f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508060055f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054612cad919061376c565b60055f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051612d4b9190613437565b60405180910390a3612d5d86836130c0565b5050612ede565b8160055f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054612dad9190613739565b60055f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508160055f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054612e37919061376c565b60055f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051612ed59190613437565b60405180910390a35b5b50505050565b5f8290505f600267ffffffffffffffff811115612f0557612f04613d80565b5b604051908082528060200260200182016040528015612f335781602001602082028036833780820191505090505b50905030815f81518110612f4a57612f49613dad565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250508173ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612fcd573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612ff19190613dee565b8160018151811061300557613004613dad565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250508173ffffffffffffffffffffffffffffffffffffffff1663791ac947845f843061012c4261306d919061376c565b6040518663ffffffff1660e01b815260040161308d959493929190613f09565b5f604051808303815f87803b1580156130a4575f80fd5b505af11580156130b6573d5f803e3d5ffd5b5050505050505050565b8060055f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054613109919061376c565b60055f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055503073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516131a79190613437565b60405180910390a35050565b5f81519050919050565b5f82825260208201905092915050565b5f5b838110156131ea5780820151818401526020810190506131cf565b5f8484015250505050565b5f601f19601f8301169050919050565b5f61320f826131b3565b61321981856131bd565b93506132298185602086016131cd565b613232816131f5565b840191505092915050565b5f6020820190508181035f8301526132558184613205565b905092915050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f819050919050565b5f61329f61329a6132958461325d565b61327c565b61325d565b9050919050565b5f6132b082613285565b9050919050565b5f6132c1826132a6565b9050919050565b6132d1816132b7565b82525050565b5f6020820190506132ea5f8301846132c8565b92915050565b5f80fd5b5f6132fe8261325d565b9050919050565b61330e816132f4565b8114613318575f80fd5b50565b5f8135905061332981613305565b92915050565b5f819050919050565b6133418161332f565b811461334b575f80fd5b50565b5f8135905061335c81613338565b92915050565b5f8060408385031215613378576133776132f0565b5b5f6133858582860161331b565b92505060206133968582860161334e565b9150509250929050565b5f8115159050919050565b6133b4816133a0565b82525050565b5f6020820190506133cd5f8301846133ab565b92915050565b6133dc816133a0565b81146133e6575f80fd5b50565b5f813590506133f7816133d3565b92915050565b5f60208284031215613412576134116132f0565b5b5f61341f848285016133e9565b91505092915050565b6134318161332f565b82525050565b5f60208201905061344a5f830184613428565b92915050565b5f805f60608486031215613467576134666132f0565b5b5f6134748682870161331b565b93505060206134858682870161331b565b92505060406134968682870161334e565b9150509250925092565b5f60ff82169050919050565b6134b5816134a0565b82525050565b5f6020820190506134ce5f8301846134ac565b92915050565b5f602082840312156134e9576134e86132f0565b5b5f6134f68482850161331b565b91505092915050565b613508816132f4565b82525050565b5f6020820190506135215f8301846134ff565b92915050565b5f6020828403121561353c5761353b6132f0565b5b5f6135498482850161334e565b91505092915050565b5f61355c826132f4565b9050919050565b61356c81613552565b8114613576575f80fd5b50565b5f8135905061358781613563565b92915050565b5f80604083850312156135a3576135a26132f0565b5b5f6135b085828601613579565b92505060206135c18582860161334e565b9150509250929050565b5f80604083850312156135e1576135e06132f0565b5b5f6135ee8582860161331b565b92505060206135ff858286016133e9565b9150509250929050565b5f806040838503121561361f5761361e6132f0565b5b5f61362c8582860161331b565b925050602061363d8582860161331b565b9150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f600282049050600182168061368b57607f821691505b60208210810361369e5761369d613647565b5b50919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f6136d86020836131bd565b91506136e3826136a4565b602082019050919050565b5f6020820190508181035f830152613705816136cc565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f6137438261332f565b915061374e8361332f565b92508282039050818111156137665761376561370c565b5b92915050565b5f6137768261332f565b91506137818361332f565b92508282019050808211156137995761379861370c565b5b92915050565b5f6137a98261332f565b91506137b48361332f565b92508282026137c28161332f565b915082820484148315176137d9576137d861370c565b5b5092915050565b7f3a20616c726561647920656e61626c65640000000000000000000000000000005f82015250565b5f6138146011836131bd565b915061381f826137e0565b602082019050919050565b5f6020820190508181035f83015261384181613808565b9050919050565b5f8151905061385681613338565b92915050565b5f60208284031215613871576138706132f0565b5b5f61387e84828501613848565b91505092915050565b7f496e76616c696420416d6f756e740000000000000000000000000000000000005f82015250565b5f6138bb600e836131bd565b91506138c682613887565b602082019050919050565b5f6020820190508181035f8301526138e8816138af565b9050919050565b5f6040820190506139025f8301856134ff565b61390f6020830184613428565b9392505050565b5f81519050613924816133d3565b92915050565b5f6020828403121561393f5761393e6132f0565b5b5f61394c84828501613916565b91505092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f61398c8261332f565b91506139978361332f565b9250826139a7576139a6613955565b5b828204905092915050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f20615f8201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b5f613a0c6026836131bd565b9150613a17826139b2565b604082019050919050565b5f6020820190508181035f830152613a3981613a00565b9050919050565b7f20617070726f76652066726f6d20746865207a65726f206164647265737300005f82015250565b5f613a74601e836131bd565b9150613a7f82613a40565b602082019050919050565b5f6020820190508181035f830152613aa181613a68565b9050919050565b7f617070726f766520746f20746865207a65726f206164647265737300000000005f82015250565b5f613adc601b836131bd565b9150613ae782613aa8565b602082019050919050565b5f6020820190508181035f830152613b0981613ad0565b9050919050565b7f7472616e736665722066726f6d20746865207a65726f206164647265737300005f82015250565b5f613b44601e836131bd565b9150613b4f82613b10565b602082019050919050565b5f6020820190508181035f830152613b7181613b38565b9050919050565b7f7472616e7366657220746f20746865207a65726f2061646472657373000000005f82015250565b5f613bac601c836131bd565b9150613bb782613b78565b602082019050919050565b5f6020820190508181035f830152613bd981613ba0565b9050919050565b7f416d6f756e74206d7573742062652067726561746572207468616e207a65726f5f82015250565b5f613c146020836131bd565b9150613c1f82613be0565b602082019050919050565b5f6020820190508181035f830152613c4181613c08565b9050919050565b7f206d61782074786e206c696d69742065786365656473000000000000000000005f82015250565b5f613c7c6016836131bd565b9150613c8782613c48565b602082019050919050565b5f6020820190508181035f830152613ca981613c70565b9050919050565b7f3a2074726164696e672069732064697361626c650000000000000000000000005f82015250565b5f613ce46014836131bd565b9150613cef82613cb0565b602082019050919050565b5f6020820190508181035f830152613d1181613cd8565b9050919050565b7f3a206d617820686f6c64206c696d6974206578636565647300000000000000005f82015250565b5f613d4c6018836131bd565b9150613d5782613d18565b602082019050919050565b5f6020820190508181035f830152613d7981613d40565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f81519050613de881613305565b92915050565b5f60208284031215613e0357613e026132f0565b5b5f613e1084828501613dda565b91505092915050565b5f819050919050565b5f613e3c613e37613e3284613e19565b61327c565b61332f565b9050919050565b613e4c81613e22565b82525050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b613e84816132f4565b82525050565b5f613e958383613e7b565b60208301905092915050565b5f602082019050919050565b5f613eb782613e52565b613ec18185613e5c565b9350613ecc83613e6c565b805f5b83811015613efc578151613ee38882613e8a565b9750613eee83613ea1565b925050600181019050613ecf565b5085935050505092915050565b5f60a082019050613f1c5f830188613428565b613f296020830187613e43565b8181036040830152613f3b8186613ead565b9050613f4a60608301856134ff565b613f576080830184613428565b969550505050505056fea26469706673582212209a3bfe0bd22832be1a4df7a075d7abbcc0374ca87188a533adf4f659ef363f9264736f6c63430008170033
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.