ERC-20
Overview
Max Total Supply
1,000,000,000 GEM
Holders
306
Market
Onchain Market Cap
$0.00
Circulating Supply Market Cap
-
Other Info
Token Contract (WITH 18 Decimals)
Balance
596,129.228525549894504585 GEMValue
$0.00Loading...
Loading
Loading...
Loading
Loading...
Loading
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
Contract Name:
GEMToken
Compiler Version
v0.8.18+commit.87f61d96
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.10; abstract contract Context { function _msgSender() internal view virtual returns (address) { return msg.sender; } function _msgData() internal view virtual returns (bytes calldata) { return msg.data; } } 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 ); } abstract contract Ownable is Context { address private _owner; event OwnershipTransferred( address indexed previousOwner, address indexed newOwner ); /** * @dev Initializes the contract setting the deployer as the initial owner. */ constructor() { _setOwner(_msgSender()); } /** * @dev Returns the address of the current owner. */ function owner() public view virtual returns (address) { return _owner; } /** * @dev Throws if called by any _account other than the owner. */ modifier onlyOwner() { require(owner() == _msgSender(), "Ownable: caller is not the owner"); _; } function renounceOwnership() public virtual onlyOwner { _setOwner(address(0)); } function transferOwnership(address newOwner) public virtual onlyOwner { require( newOwner != address(0), "Ownable: new owner is the zero address" ); _setOwner(newOwner); } function _setOwner(address newOwner) private { address oldOwner = _owner; _owner = newOwner; emit OwnershipTransferred(oldOwner, newOwner); } } library SafeMath { function add(uint256 a, uint256 b) internal pure returns (uint256) { uint256 c = a + b; require(c >= a, "SafeMath: addition overflow"); return c; } function sub(uint256 a, uint256 b) internal pure returns (uint256) { return sub(a, b, "SafeMath: subtraction overflow"); } function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { require(b <= a, errorMessage); uint256 c = a - b; return c; } function mul(uint256 a, uint256 b) internal pure returns (uint256) { if (a == 0) { return 0; } uint256 c = a * b; require(c / a == b, "SafeMath: multiplication overflow"); return c; } function div(uint256 a, uint256 b) internal pure returns (uint256) { return div(a, b, "SafeMath: division by zero"); } function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { require(b > 0, errorMessage); uint256 c = a / b; // assert(a == b * c + a % b); // There is no case in which this doesn't hold return c; } function mod(uint256 a, uint256 b) internal pure returns (uint256) { return mod(a, b, "SafeMath: modulo by zero"); } function mod(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { require(b != 0, errorMessage); return a % b; } } interface IDexSwapFactory { event PairCreated(address indexed token0, address indexed token1, address pair, uint); function createPair(address tokenA, address tokenB) external returns (address pair); } interface IDexSwapPair { event Approval(address indexed owner, address indexed spender, uint value); event Transfer(address indexed from, address indexed to, uint value); function name() external pure returns (string memory); function symbol() external pure returns (string memory); function decimals() external pure returns (uint8); function totalSupply() external view returns (uint); function balanceOf(address owner) external view returns (uint); function allowance(address owner, address spender) external view returns (uint); function approve(address spender, uint value) external returns (bool); function transfer(address to, uint value) external returns (bool); function transferFrom(address from, address to, uint value) external returns (bool); function DOMAIN_SEPARATOR() external view returns (bytes32); function PERMIT_TYPEHASH() external pure returns (bytes32); function nonces(address owner) external view returns (uint); function permit(address owner, address spender, uint value, uint deadline, uint8 v, bytes32 r, bytes32 s) external; event Burn(address indexed sender, uint amount0, uint amount1, address indexed to); event Swap( address indexed sender, uint amount0In, uint amount1In, uint amount0Out, uint amount1Out, address indexed to ); event Sync(uint112 reserve0, uint112 reserve1); function MINIMUM_LIQUIDITY() external pure returns (uint); function factory() external view returns (address); function token0() external view returns (address); function token1() external view returns (address); function getReserves() external view returns (uint112 reserve0, uint112 reserve1, uint32 blockTimestampLast); function price0CumulativeLast() external view returns (uint); function price1CumulativeLast() external view returns (uint); function kLast() external view returns (uint); function burn(address to) external returns (uint amount0, uint amount1); function swap(uint amount0Out, uint amount1Out, address to, bytes calldata data) external; function skim(address to) external; function sync() external; function initialize(address, address) external; } interface IDexSwapRouter { function factory() external pure returns (address); function WETH() external pure returns (address); function addLiquidityETH( address token, uint amountTokenDesired, uint amountTokenMin, uint amountETHMin, address to, uint deadline ) external payable returns (uint amountToken, uint amountETH, uint liquidity); function swapExactTokensForETHSupportingFeeOnTransferTokens( uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline ) external; } contract GEMToken is Context, IERC20, Ownable { using SafeMath for uint256; string private _name = "GEM"; string private _symbol = "GEM"; uint8 private _decimals = 18; address public immutable deadAddress = 0x000000000000000000000000000000000000dEaD; address public immutable zeroAddress = 0x0000000000000000000000000000000000000000; uint256 public _buyTreasuryFee = 0; uint256 public _sellTreasuryFee = 250; address public Treasury; uint256 feedenominator = 1000; mapping (address => uint256) _balances; mapping (address => mapping (address => uint256)) private _allowances; mapping (address => bool) public isExcludedFromFee; mapping (address => bool) public isMarketPair; uint256 private _totalSupply = 1_000_000_000 * 10**_decimals; uint256 public swapThreshold = 500000 * 10**_decimals; bool public swapEnabled = true; bool public swapbylimit = true; IDexSwapRouter public dexRouter; address public dexPair; bool inSwap; modifier onlyGuard() { require(msg.sender == Treasury,"Error: Invalid Caller!"); _; } modifier swapping() { inSwap = true; _; inSwap = false; } event SwapTokensForETH( uint256 amountIn, address[] path ); constructor() { IDexSwapRouter _dexRouter = IDexSwapRouter( 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D ); dexPair = IDexSwapFactory(_dexRouter.factory()).createPair( address(this), _dexRouter.WETH() ); dexRouter = _dexRouter; Treasury = msg.sender; isExcludedFromFee[address(this)] = true; isExcludedFromFee[msg.sender] = true; isExcludedFromFee[address(dexRouter)] = true; isMarketPair[address(dexPair)] = true; _allowances[address(this)][address(dexRouter)] = ~uint256(0); _allowances[address(this)][address(dexPair)] = ~uint256(0); _balances[msg.sender] = _totalSupply; emit Transfer(address(0), msg.sender, _totalSupply); } 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 allowance(address owner, address spender) public view override returns (uint256) { return _allowances[owner][spender]; } function getCirculatingSupply() public view returns (uint256) { return _totalSupply.sub(balanceOf(deadAddress)).sub(balanceOf(zeroAddress)); } function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) { _approve(_msgSender(), spender, _allowances[_msgSender()][spender].add(addedValue)); return true; } function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) { _approve(_msgSender(), spender, _allowances[_msgSender()][spender].sub(subtractedValue, "ERC20: decreased allowance below zero")); return true; } function approve(address spender, uint256 amount) public override returns (bool) { _approve(_msgSender(), spender, amount); return true; } function _approve(address owner, address spender, uint256 amount) private { require(owner != address(0), "ERC20: approve from the zero address"); require(spender != address(0), "ERC20: approve to the zero address"); _allowances[owner][spender] = amount; emit Approval(owner, spender, amount); } //to recieve ETH from Router when swaping receive() external payable {} function transfer(address recipient, uint256 amount) public override returns (bool) { _transfer(_msgSender(), recipient, 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()].sub(amount, "ERC20: transfer amount exceeds allowance")); return true; } function _transfer(address sender, address recipient, uint256 amount) private returns (bool) { require(sender != address(0), "ERC20: transfer from the zero address"); require(recipient != address(0), "ERC20: transfer to the zero address"); require(amount > 0, "Transfer amount must be greater than zero"); if (inSwap) { return _basicTransfer(sender, recipient, amount); } else { uint256 contractTokenBalance = balanceOf(address(this)); bool overMinimumTokenBalance = contractTokenBalance >= swapThreshold; if (overMinimumTokenBalance && !inSwap && !isMarketPair[sender] && swapEnabled) { swapBack(contractTokenBalance); } _balances[sender] = _balances[sender].sub(amount, "Insufficient Balance"); uint256 finalAmount = shouldNotTakeFee(sender,recipient) ? amount : takeFee(sender, recipient, amount); _balances[recipient] = _balances[recipient].add(finalAmount); emit Transfer(sender, recipient, finalAmount); return true; } } function _basicTransfer(address sender, address recipient, uint256 amount) internal returns (bool) { _balances[sender] = _balances[sender].sub(amount, "Insufficient Balance"); _balances[recipient] = _balances[recipient].add(amount); emit Transfer(sender, recipient, amount); return true; } function shouldNotTakeFee(address sender, address recipient) internal view returns (bool) { if(isExcludedFromFee[sender] || isExcludedFromFee[recipient]) { return true; } else if (isMarketPair[sender] || isMarketPair[recipient]) { return false; } else { return false; } } function takeFee(address sender, address recipient, uint256 amount) internal returns (uint256) { uint feeAmount; unchecked { if(isMarketPair[sender]) { feeAmount = amount.mul(_buyTreasuryFee).div(feedenominator); } else if(isMarketPair[recipient]) { feeAmount = amount.mul(_sellTreasuryFee).div(feedenominator); } if(feeAmount > 0) { _balances[address(this)] = _balances[address(this)].add(feeAmount); emit Transfer(sender, address(this), feeAmount); } return amount.sub(feeAmount); } } function swapBack(uint contractBalance) internal swapping { if(swapbylimit) contractBalance = swapThreshold; uint256 initialBalance = address(this).balance; swapTokensForEth(contractBalance); uint256 amountReceived = address(this).balance.sub(initialBalance); if(amountReceived > 0) payable(Treasury).transfer(amountReceived); } function swapTokensForEth(uint256 tokenAmount) private { // generate the uniswap pair path of token -> weth address[] memory path = new address[](2); path[0] = address(this); path[1] = dexRouter.WETH(); _approve(address(this), address(dexRouter), tokenAmount); // make the swap dexRouter.swapExactTokensForETHSupportingFeeOnTransferTokens( tokenAmount, 0, // accept any amount of ETH path, address(this), // The contract block.timestamp ); emit SwapTokensForETH(tokenAmount, path); } function rescueFunds() external onlyGuard { (bool os,) = payable(msg.sender).call{value: address(this).balance}(""); require(os,"Transaction Failed!!"); } function rescueTokens(address _token,address recipient,uint _amount) external onlyGuard { (bool success, ) = address(_token).call(abi.encodeWithSignature('transfer(address,uint256)', recipient, _amount)); require(success, 'Token payment failed'); } function setFee(uint _buyFee, uint _sellFee) external onlyOwner { _buyTreasuryFee = _buyFee; _sellTreasuryFee = _sellFee; } function setDeno(uint _deno) external onlyOwner { feedenominator = _deno; } function excludeFromFee(address _adr,bool _status) external onlyOwner { isExcludedFromFee[_adr] = _status; } function setTreasuryWallet(address _newWallet) external onlyOwner { Treasury = _newWallet; } function setMarketPair(address _pair, bool _status) external onlyOwner { isMarketPair[_pair] = _status; } function setSwapBackSettings(bool _enabled, bool _limited) external onlyOwner { swapEnabled = _enabled; swapbylimit = _limited; } function setSwapthreshold(uint _threshold) external onlyOwner { swapThreshold = _threshold; } function setManualRouter(address _router) external onlyOwner { dexRouter = IDexSwapRouter(_router); } function setManualPair(address _pair) external onlyOwner { dexPair = _pair; } }
{ "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":"amountIn","type":"uint256"},{"indexed":false,"internalType":"address[]","name":"path","type":"address[]"}],"name":"SwapTokensForETH","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"Treasury","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_buyTreasuryFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_sellTreasuryFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"deadAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"dexPair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"dexRouter","outputs":[{"internalType":"contract IDexSwapRouter","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_adr","type":"address"},{"internalType":"bool","name":"_status","type":"bool"}],"name":"excludeFromFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"getCirculatingSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isExcludedFromFee","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isMarketPair","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"rescueFunds","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_token","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"rescueTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_deno","type":"uint256"}],"name":"setDeno","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_buyFee","type":"uint256"},{"internalType":"uint256","name":"_sellFee","type":"uint256"}],"name":"setFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_pair","type":"address"}],"name":"setManualPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_router","type":"address"}],"name":"setManualRouter","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_pair","type":"address"},{"internalType":"bool","name":"_status","type":"bool"}],"name":"setMarketPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_enabled","type":"bool"},{"internalType":"bool","name":"_limited","type":"bool"}],"name":"setSwapBackSettings","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_threshold","type":"uint256"}],"name":"setSwapthreshold","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_newWallet","type":"address"}],"name":"setTreasuryWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapbylimit","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"zeroAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
60c06040526040518060400160405280600381526020017f47454d0000000000000000000000000000000000000000000000000000000000815250600190816200004a919062000b19565b506040518060400160405280600381526020017f47454d00000000000000000000000000000000000000000000000000000000008152506002908162000091919062000b19565b506012600360006101000a81548160ff021916908360ff16021790555061dead73ffffffffffffffffffffffffffffffffffffffff1660809073ffffffffffffffffffffffffffffffffffffffff16815250600073ffffffffffffffffffffffffffffffffffffffff1660a09073ffffffffffffffffffffffffffffffffffffffff16815250600060045560fa6005556103e8600755600360009054906101000a900460ff16600a62000145919062000d90565b633b9aca0062000156919062000de1565b600c55600360009054906101000a900460ff16600a62000177919062000d90565b6207a12062000187919062000de1565b600d556001600e60006101000a81548160ff0219169083151502179055506001600e60016101000a81548160ff021916908315150217905550348015620001cd57600080fd5b50620001ee620001e2620007d360201b60201c565b620007db60201b60201c565b6000737a250d5630b4cf539739df2c5dacb4c659f2488d90508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000253573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000279919062000e96565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015620002e1573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000307919062000e96565b6040518363ffffffff1660e01b81526004016200032692919062000ed9565b6020604051808303816000875af115801562000346573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200036c919062000e96565b600f60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600e60026101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555033600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600a60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600a60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600a6000600e60029054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600b6000600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600019600960003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000600e60029054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600019600960003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600c54600860003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503373ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600c54604051620007c4919062000f17565b60405180910390a35062000f34565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806200092157607f821691505b602082108103620009375762000936620008d9565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b600060088302620009a17fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8262000962565b620009ad868362000962565b95508019841693508086168417925050509392505050565b6000819050919050565b6000819050919050565b6000620009fa620009f4620009ee84620009c5565b620009cf565b620009c5565b9050919050565b6000819050919050565b62000a1683620009d9565b62000a2e62000a258262000a01565b8484546200096f565b825550505050565b600090565b62000a4562000a36565b62000a5281848462000a0b565b505050565b5b8181101562000a7a5762000a6e60008262000a3b565b60018101905062000a58565b5050565b601f82111562000ac95762000a93816200093d565b62000a9e8462000952565b8101602085101562000aae578190505b62000ac662000abd8562000952565b83018262000a57565b50505b505050565b600082821c905092915050565b600062000aee6000198460080262000ace565b1980831691505092915050565b600062000b09838362000adb565b9150826002028217905092915050565b62000b24826200089f565b67ffffffffffffffff81111562000b405762000b3f620008aa565b5b62000b4c825462000908565b62000b5982828562000a7e565b600060209050601f83116001811462000b91576000841562000b7c578287015190505b62000b88858262000afb565b86555062000bf8565b601f19841662000ba1866200093d565b60005b8281101562000bcb5784890151825560018201915060208501945060208101905062000ba4565b8683101562000beb578489015162000be7601f89168262000adb565b8355505b6001600288020188555050505b505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b600185111562000c8e5780860481111562000c665762000c6562000c00565b5b600185161562000c765780820291505b808102905062000c868562000c2f565b945062000c46565b94509492505050565b60008262000ca9576001905062000d7c565b8162000cb9576000905062000d7c565b816001811462000cd2576002811462000cdd5762000d13565b600191505062000d7c565b60ff84111562000cf25762000cf162000c00565b5b8360020a91508482111562000d0c5762000d0b62000c00565b5b5062000d7c565b5060208310610133831016604e8410600b841016171562000d4d5782820a90508381111562000d475762000d4662000c00565b5b62000d7c565b62000d5c848484600162000c3c565b9250905081840481111562000d765762000d7562000c00565b5b81810290505b9392505050565b600060ff82169050919050565b600062000d9d82620009c5565b915062000daa8362000d83565b925062000dd97fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848462000c97565b905092915050565b600062000dee82620009c5565b915062000dfb83620009c5565b925082820262000e0b81620009c5565b9150828204841483151762000e255762000e2462000c00565b5b5092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600062000e5e8262000e31565b9050919050565b62000e708162000e51565b811462000e7c57600080fd5b50565b60008151905062000e908162000e65565b92915050565b60006020828403121562000eaf5762000eae62000e2c565b5b600062000ebf8482850162000e7f565b91505092915050565b62000ed38162000e51565b82525050565b600060408201905062000ef0600083018562000ec8565b62000eff602083018462000ec8565b9392505050565b62000f1181620009c5565b82525050565b600060208201905062000f2e600083018462000f06565b92915050565b60805160a051613b8b62000f68600039600081816109bb0152610b13015260008181610ae70152610b3f0152613b8b6000f3fe6080604052600436106102295760003560e01c806370a0823111610123578063cea9d26f116100ab578063e6b2603b1161006f578063e6b2603b1461083c578063e9fd339414610853578063f242ab411461087e578063f2fde38b146108a9578063f71b9bbf146108d257610230565b8063cea9d26f14610759578063d4e43fb314610782578063d628df9c146107ab578063dd62ed3e146107d6578063df8408fe1461081357610230565b8063a457c2d7116100f2578063a457c2d714610664578063a8602fea146106a1578063a9059cbb146106ca578063adc0d09214610707578063c16dd4a41461073057610230565b806370a08231146105ba578063715018a6146105f75780638da5cb5b1461060e57806395d89b411461063957610230565b80632b112e49116101b15780635342acb4116101755780635342acb4146104d5578063563df32f1461051257806359fac5171461053d578063618cd5e6146105665780636ddd17131461058f57610230565b80632b112e49146103dc578063313ce5671461040757806339509351146104325780633ecad2711461046f57806352f7c988146104ac57610230565b8063095ea7b3116101f8578063095ea7b3146102e157806318160ddd1461031e57806323b872dd1461034957806324fcf8cf1461038657806327c8f835146103b157610230565b80630445b6671461023557806306fdde03146102605780630758d9241461028b5780630930907b146102b657610230565b3661023057005b600080fd5b34801561024157600080fd5b5061024a6108fb565b6040516102579190612bea565b60405180910390f35b34801561026c57600080fd5b50610275610901565b6040516102829190612c95565b60405180910390f35b34801561029757600080fd5b506102a0610993565b6040516102ad9190612d36565b60405180910390f35b3480156102c257600080fd5b506102cb6109b9565b6040516102d89190612d72565b60405180910390f35b3480156102ed57600080fd5b5061030860048036038101906103039190612dea565b6109dd565b6040516103159190612e45565b60405180910390f35b34801561032a57600080fd5b506103336109fb565b6040516103409190612bea565b60405180910390f35b34801561035557600080fd5b50610370600480360381019061036b9190612e60565b610a05565b60405161037d9190612e45565b60405180910390f35b34801561039257600080fd5b5061039b610adf565b6040516103a89190612bea565b60405180910390f35b3480156103bd57600080fd5b506103c6610ae5565b6040516103d39190612d72565b60405180910390f35b3480156103e857600080fd5b506103f1610b09565b6040516103fe9190612bea565b60405180910390f35b34801561041357600080fd5b5061041c610b87565b6040516104299190612ecf565b60405180910390f35b34801561043e57600080fd5b5061045960048036038101906104549190612dea565b610b9e565b6040516104669190612e45565b60405180910390f35b34801561047b57600080fd5b5061049660048036038101906104919190612eea565b610c51565b6040516104a39190612e45565b60405180910390f35b3480156104b857600080fd5b506104d360048036038101906104ce9190612f17565b610c71565b005b3480156104e157600080fd5b506104fc60048036038101906104f79190612eea565b610cff565b6040516105099190612e45565b60405180910390f35b34801561051e57600080fd5b50610527610d1f565b6040516105349190612d72565b60405180910390f35b34801561054957600080fd5b50610564600480360381019061055f9190612eea565b610d45565b005b34801561057257600080fd5b5061058d60048036038101906105889190612f57565b610e05565b005b34801561059b57600080fd5b506105a4610e8b565b6040516105b19190612e45565b60405180910390f35b3480156105c657600080fd5b506105e160048036038101906105dc9190612eea565b610e9e565b6040516105ee9190612bea565b60405180910390f35b34801561060357600080fd5b5061060c610ee7565b005b34801561061a57600080fd5b50610623610f6f565b6040516106309190612d72565b60405180910390f35b34801561064557600080fd5b5061064e610f98565b60405161065b9190612c95565b60405180910390f35b34801561067057600080fd5b5061068b60048036038101906106869190612dea565b61102a565b6040516106989190612e45565b60405180910390f35b3480156106ad57600080fd5b506106c860048036038101906106c39190612eea565b6110f7565b005b3480156106d657600080fd5b506106f160048036038101906106ec9190612dea565b6111b7565b6040516106fe9190612e45565b60405180910390f35b34801561071357600080fd5b5061072e60048036038101906107299190612f57565b6111d6565b005b34801561073c57600080fd5b5061075760048036038101906107529190612fb0565b61125c565b005b34801561076557600080fd5b50610780600480360381019061077b9190612e60565b611333565b005b34801561078e57600080fd5b506107a960048036038101906107a49190612ff0565b611505565b005b3480156107b757600080fd5b506107c06115b9565b6040516107cd9190612bea565b60405180910390f35b3480156107e257600080fd5b506107fd60048036038101906107f89190613030565b6115bf565b60405161080a9190612bea565b60405180910390f35b34801561081f57600080fd5b5061083a60048036038101906108359190612fb0565b611646565b005b34801561084857600080fd5b5061085161171d565b005b34801561085f57600080fd5b5061086861185c565b6040516108759190612e45565b60405180910390f35b34801561088a57600080fd5b5061089361186f565b6040516108a09190612d72565b60405180910390f35b3480156108b557600080fd5b506108d060048036038101906108cb9190612eea565b611895565b005b3480156108de57600080fd5b506108f960048036038101906108f49190612eea565b61198c565b005b600d5481565b6060600180546109109061309f565b80601f016020809104026020016040519081016040528092919081815260200182805461093c9061309f565b80156109895780601f1061095e57610100808354040283529160200191610989565b820191906000526020600020905b81548152906001019060200180831161096c57829003601f168201915b5050505050905090565b600e60029054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b7f000000000000000000000000000000000000000000000000000000000000000081565b60006109f16109ea611a4c565b8484611a54565b6001905092915050565b6000600c54905090565b6000610a12848484611c1d565b50610ad484610a1f611a4c565b610acf85604051806060016040528060288152602001613b0960289139600960008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610a85611a4c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461200d9092919063ffffffff16565b611a54565b600190509392505050565b60055481565b7f000000000000000000000000000000000000000000000000000000000000000081565b6000610b82610b377f0000000000000000000000000000000000000000000000000000000000000000610e9e565b610b74610b637f0000000000000000000000000000000000000000000000000000000000000000610e9e565b600c5461207190919063ffffffff16565b61207190919063ffffffff16565b905090565b6000600360009054906101000a900460ff16905090565b6000610c47610bab611a4c565b84610c428560096000610bbc611a4c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546120bb90919063ffffffff16565b611a54565b6001905092915050565b600b6020528060005260406000206000915054906101000a900460ff1681565b610c79611a4c565b73ffffffffffffffffffffffffffffffffffffffff16610c97610f6f565b73ffffffffffffffffffffffffffffffffffffffff1614610ced576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ce49061311c565b60405180910390fd5b81600481905550806005819055505050565b600a6020528060005260406000206000915054906101000a900460ff1681565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b610d4d611a4c565b73ffffffffffffffffffffffffffffffffffffffff16610d6b610f6f565b73ffffffffffffffffffffffffffffffffffffffff1614610dc1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610db89061311c565b60405180910390fd5b80600e60026101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b610e0d611a4c565b73ffffffffffffffffffffffffffffffffffffffff16610e2b610f6f565b73ffffffffffffffffffffffffffffffffffffffff1614610e81576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e789061311c565b60405180910390fd5b8060078190555050565b600e60009054906101000a900460ff1681565b6000600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610eef611a4c565b73ffffffffffffffffffffffffffffffffffffffff16610f0d610f6f565b73ffffffffffffffffffffffffffffffffffffffff1614610f63576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f5a9061311c565b60405180910390fd5b610f6d6000612119565b565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b606060028054610fa79061309f565b80601f0160208091040260200160405190810160405280929190818152602001828054610fd39061309f565b80156110205780601f10610ff557610100808354040283529160200191611020565b820191906000526020600020905b81548152906001019060200180831161100357829003601f168201915b5050505050905090565b60006110ed611037611a4c565b846110e885604051806060016040528060258152602001613b316025913960096000611061611a4c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461200d9092919063ffffffff16565b611a54565b6001905092915050565b6110ff611a4c565b73ffffffffffffffffffffffffffffffffffffffff1661111d610f6f565b73ffffffffffffffffffffffffffffffffffffffff1614611173576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161116a9061311c565b60405180910390fd5b80600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60006111cb6111c4611a4c565b8484611c1d565b506001905092915050565b6111de611a4c565b73ffffffffffffffffffffffffffffffffffffffff166111fc610f6f565b73ffffffffffffffffffffffffffffffffffffffff1614611252576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112499061311c565b60405180910390fd5b80600d8190555050565b611264611a4c565b73ffffffffffffffffffffffffffffffffffffffff16611282610f6f565b73ffffffffffffffffffffffffffffffffffffffff16146112d8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112cf9061311c565b60405180910390fd5b80600b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146113c3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113ba90613188565b60405180910390fd5b60008373ffffffffffffffffffffffffffffffffffffffff1683836040516024016113ef9291906131a8565b6040516020818303038152906040527fa9059cbb000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506040516114799190613218565b6000604051808303816000865af19150503d80600081146114b6576040519150601f19603f3d011682016040523d82523d6000602084013e6114bb565b606091505b50509050806114ff576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114f69061327b565b60405180910390fd5b50505050565b61150d611a4c565b73ffffffffffffffffffffffffffffffffffffffff1661152b610f6f565b73ffffffffffffffffffffffffffffffffffffffff1614611581576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115789061311c565b60405180910390fd5b81600e60006101000a81548160ff02191690831515021790555080600e60016101000a81548160ff0219169083151502179055505050565b60045481565b6000600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b61164e611a4c565b73ffffffffffffffffffffffffffffffffffffffff1661166c610f6f565b73ffffffffffffffffffffffffffffffffffffffff16146116c2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116b99061311c565b60405180910390fd5b80600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146117ad576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117a490613188565b60405180910390fd5b60003373ffffffffffffffffffffffffffffffffffffffff16476040516117d3906132c1565b60006040518083038185875af1925050503d8060008114611810576040519150601f19603f3d011682016040523d82523d6000602084013e611815565b606091505b5050905080611859576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161185090613322565b60405180910390fd5b50565b600e60019054906101000a900460ff1681565b600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b61189d611a4c565b73ffffffffffffffffffffffffffffffffffffffff166118bb610f6f565b73ffffffffffffffffffffffffffffffffffffffff1614611911576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119089061311c565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611980576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611977906133b4565b60405180910390fd5b61198981612119565b50565b611994611a4c565b73ffffffffffffffffffffffffffffffffffffffff166119b2610f6f565b73ffffffffffffffffffffffffffffffffffffffff1614611a08576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119ff9061311c565b60405180910390fd5b80600f60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611ac3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611aba90613446565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611b32576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b29906134d8565b60405180910390fd5b80600960008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051611c109190612bea565b60405180910390a3505050565b60008073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603611c8d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c849061356a565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611cfc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cf3906135fc565b60405180910390fd5b60008211611d3f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d369061368e565b60405180910390fd5b600f60149054906101000a900460ff1615611d6657611d5f8484846121dd565b9050612006565b6000611d7130610e9e565b90506000600d548210159050808015611d975750600f60149054906101000a900460ff16155b8015611ded5750600b60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015611e055750600e60009054906101000a900460ff165b15611e1457611e13826123b0565b5b611e9d846040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600860008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461200d9092919063ffffffff16565b600860008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000611eec878761249e565b611f0057611efb878787612609565b611f02565b845b9050611f5681600860008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546120bb90919063ffffffff16565b600860008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611ff69190612bea565b60405180910390a3600193505050505b9392505050565b6000838311158290612055576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161204c9190612c95565b60405180910390fd5b506000838561206491906136dd565b9050809150509392505050565b60006120b383836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525061200d565b905092915050565b60008082846120ca9190613711565b90508381101561210f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161210690613791565b60405180910390fd5b8091505092915050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b6000612268826040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600860008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461200d9092919063ffffffff16565b600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506122fd82600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546120bb90919063ffffffff16565b600860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161239d9190612bea565b60405180910390a3600190509392505050565b6001600f60146101000a81548160ff021916908315150217905550600e60019054906101000a900460ff16156123e657600d5490505b60004790506123f48261282e565b6000612409824761207190919063ffffffff16565b9050600081111561247e57600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f1935050505015801561247c573d6000803e3d6000fd5b505b50506000600f60146101000a81548160ff02191690831515021790555050565b6000600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806125415750600a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b1561254f5760019050612603565b600b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806125f05750600b60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b156125fe5760009050612603565b600090505b92915050565b600080600b60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161561268e5761268760075461267960045486612aaa90919063ffffffff16565b612b2490919063ffffffff16565b905061270d565b600b60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161561270c576127096007546126fb60055486612aaa90919063ffffffff16565b612b2490919063ffffffff16565b90505b5b60008111156128115761276881600860003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546120bb90919063ffffffff16565b600860003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516128089190612bea565b60405180910390a35b612824818461207190919063ffffffff16565b9150509392505050565b6000600267ffffffffffffffff81111561284b5761284a6137b1565b5b6040519080825280602002602001820160405280156128795781602001602082028036833780820191505090505b5090503081600081518110612891576128906137e0565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600e60029054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612938573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061295c9190613824565b816001815181106129705761296f6137e0565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506129d730600e60029054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611a54565b600e60029054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401612a3b95949392919061394a565b600060405180830381600087803b158015612a5557600080fd5b505af1158015612a69573d6000803e3d6000fd5b505050507f32cde87eb454f3a0b875ab23547023107cfad454363ec88ba5695e2c24aa52a78282604051612a9e9291906139a4565b60405180910390a15050565b6000808303612abc5760009050612b1e565b60008284612aca91906139d4565b9050828482612ad99190613a45565b14612b19576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b1090613ae8565b60405180910390fd5b809150505b92915050565b6000612b6683836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612b6e565b905092915050565b60008083118290612bb5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612bac9190612c95565b60405180910390fd5b5060008385612bc49190613a45565b9050809150509392505050565b6000819050919050565b612be481612bd1565b82525050565b6000602082019050612bff6000830184612bdb565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015612c3f578082015181840152602081019050612c24565b60008484015250505050565b6000601f19601f8301169050919050565b6000612c6782612c05565b612c718185612c10565b9350612c81818560208601612c21565b612c8a81612c4b565b840191505092915050565b60006020820190508181036000830152612caf8184612c5c565b905092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b6000612cfc612cf7612cf284612cb7565b612cd7565b612cb7565b9050919050565b6000612d0e82612ce1565b9050919050565b6000612d2082612d03565b9050919050565b612d3081612d15565b82525050565b6000602082019050612d4b6000830184612d27565b92915050565b6000612d5c82612cb7565b9050919050565b612d6c81612d51565b82525050565b6000602082019050612d876000830184612d63565b92915050565b600080fd5b612d9b81612d51565b8114612da657600080fd5b50565b600081359050612db881612d92565b92915050565b612dc781612bd1565b8114612dd257600080fd5b50565b600081359050612de481612dbe565b92915050565b60008060408385031215612e0157612e00612d8d565b5b6000612e0f85828601612da9565b9250506020612e2085828601612dd5565b9150509250929050565b60008115159050919050565b612e3f81612e2a565b82525050565b6000602082019050612e5a6000830184612e36565b92915050565b600080600060608486031215612e7957612e78612d8d565b5b6000612e8786828701612da9565b9350506020612e9886828701612da9565b9250506040612ea986828701612dd5565b9150509250925092565b600060ff82169050919050565b612ec981612eb3565b82525050565b6000602082019050612ee46000830184612ec0565b92915050565b600060208284031215612f0057612eff612d8d565b5b6000612f0e84828501612da9565b91505092915050565b60008060408385031215612f2e57612f2d612d8d565b5b6000612f3c85828601612dd5565b9250506020612f4d85828601612dd5565b9150509250929050565b600060208284031215612f6d57612f6c612d8d565b5b6000612f7b84828501612dd5565b91505092915050565b612f8d81612e2a565b8114612f9857600080fd5b50565b600081359050612faa81612f84565b92915050565b60008060408385031215612fc757612fc6612d8d565b5b6000612fd585828601612da9565b9250506020612fe685828601612f9b565b9150509250929050565b6000806040838503121561300757613006612d8d565b5b600061301585828601612f9b565b925050602061302685828601612f9b565b9150509250929050565b6000806040838503121561304757613046612d8d565b5b600061305585828601612da9565b925050602061306685828601612da9565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806130b757607f821691505b6020821081036130ca576130c9613070565b5b50919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000613106602083612c10565b9150613111826130d0565b602082019050919050565b60006020820190508181036000830152613135816130f9565b9050919050565b7f4572726f723a20496e76616c69642043616c6c65722100000000000000000000600082015250565b6000613172601683612c10565b915061317d8261313c565b602082019050919050565b600060208201905081810360008301526131a181613165565b9050919050565b60006040820190506131bd6000830185612d63565b6131ca6020830184612bdb565b9392505050565b600081519050919050565b600081905092915050565b60006131f2826131d1565b6131fc81856131dc565b935061320c818560208601612c21565b80840191505092915050565b600061322482846131e7565b915081905092915050565b7f546f6b656e207061796d656e74206661696c6564000000000000000000000000600082015250565b6000613265601483612c10565b91506132708261322f565b602082019050919050565b6000602082019050818103600083015261329481613258565b9050919050565b50565b60006132ab6000836131dc565b91506132b68261329b565b600082019050919050565b60006132cc8261329e565b9150819050919050565b7f5472616e73616374696f6e204661696c65642121000000000000000000000000600082015250565b600061330c601483612c10565b9150613317826132d6565b602082019050919050565b6000602082019050818103600083015261333b816132ff565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b600061339e602683612c10565b91506133a982613342565b604082019050919050565b600060208201905081810360008301526133cd81613391565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000613430602483612c10565b915061343b826133d4565b604082019050919050565b6000602082019050818103600083015261345f81613423565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b60006134c2602283612c10565b91506134cd82613466565b604082019050919050565b600060208201905081810360008301526134f1816134b5565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000613554602583612c10565b915061355f826134f8565b604082019050919050565b6000602082019050818103600083015261358381613547565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b60006135e6602383612c10565b91506135f18261358a565b604082019050919050565b60006020820190508181036000830152613615816135d9565b9050919050565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b6000613678602983612c10565b91506136838261361c565b604082019050919050565b600060208201905081810360008301526136a78161366b565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006136e882612bd1565b91506136f383612bd1565b925082820390508181111561370b5761370a6136ae565b5b92915050565b600061371c82612bd1565b915061372783612bd1565b925082820190508082111561373f5761373e6136ae565b5b92915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b600061377b601b83612c10565b915061378682613745565b602082019050919050565b600060208201905081810360008301526137aa8161376e565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60008151905061381e81612d92565b92915050565b60006020828403121561383a57613839612d8d565b5b60006138488482850161380f565b91505092915050565b6000819050919050565b600061387661387161386c84613851565b612cd7565b612bd1565b9050919050565b6138868161385b565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6138c181612d51565b82525050565b60006138d383836138b8565b60208301905092915050565b6000602082019050919050565b60006138f78261388c565b6139018185613897565b935061390c836138a8565b8060005b8381101561393d57815161392488826138c7565b975061392f836138df565b925050600181019050613910565b5085935050505092915050565b600060a08201905061395f6000830188612bdb565b61396c602083018761387d565b818103604083015261397e81866138ec565b905061398d6060830185612d63565b61399a6080830184612bdb565b9695505050505050565b60006040820190506139b96000830185612bdb565b81810360208301526139cb81846138ec565b90509392505050565b60006139df82612bd1565b91506139ea83612bd1565b92508282026139f881612bd1565b91508282048414831517613a0f57613a0e6136ae565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000613a5082612bd1565b9150613a5b83612bd1565b925082613a6b57613a6a613a16565b5b828204905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b6000613ad2602183612c10565b9150613add82613a76565b604082019050919050565b60006020820190508181036000830152613b0181613ac5565b905091905056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220335fcd3ca407597c18a0ed978a5853d479da0201d79478422b309f8ce8d419c364736f6c63430008120033
Deployed Bytecode
0x6080604052600436106102295760003560e01c806370a0823111610123578063cea9d26f116100ab578063e6b2603b1161006f578063e6b2603b1461083c578063e9fd339414610853578063f242ab411461087e578063f2fde38b146108a9578063f71b9bbf146108d257610230565b8063cea9d26f14610759578063d4e43fb314610782578063d628df9c146107ab578063dd62ed3e146107d6578063df8408fe1461081357610230565b8063a457c2d7116100f2578063a457c2d714610664578063a8602fea146106a1578063a9059cbb146106ca578063adc0d09214610707578063c16dd4a41461073057610230565b806370a08231146105ba578063715018a6146105f75780638da5cb5b1461060e57806395d89b411461063957610230565b80632b112e49116101b15780635342acb4116101755780635342acb4146104d5578063563df32f1461051257806359fac5171461053d578063618cd5e6146105665780636ddd17131461058f57610230565b80632b112e49146103dc578063313ce5671461040757806339509351146104325780633ecad2711461046f57806352f7c988146104ac57610230565b8063095ea7b3116101f8578063095ea7b3146102e157806318160ddd1461031e57806323b872dd1461034957806324fcf8cf1461038657806327c8f835146103b157610230565b80630445b6671461023557806306fdde03146102605780630758d9241461028b5780630930907b146102b657610230565b3661023057005b600080fd5b34801561024157600080fd5b5061024a6108fb565b6040516102579190612bea565b60405180910390f35b34801561026c57600080fd5b50610275610901565b6040516102829190612c95565b60405180910390f35b34801561029757600080fd5b506102a0610993565b6040516102ad9190612d36565b60405180910390f35b3480156102c257600080fd5b506102cb6109b9565b6040516102d89190612d72565b60405180910390f35b3480156102ed57600080fd5b5061030860048036038101906103039190612dea565b6109dd565b6040516103159190612e45565b60405180910390f35b34801561032a57600080fd5b506103336109fb565b6040516103409190612bea565b60405180910390f35b34801561035557600080fd5b50610370600480360381019061036b9190612e60565b610a05565b60405161037d9190612e45565b60405180910390f35b34801561039257600080fd5b5061039b610adf565b6040516103a89190612bea565b60405180910390f35b3480156103bd57600080fd5b506103c6610ae5565b6040516103d39190612d72565b60405180910390f35b3480156103e857600080fd5b506103f1610b09565b6040516103fe9190612bea565b60405180910390f35b34801561041357600080fd5b5061041c610b87565b6040516104299190612ecf565b60405180910390f35b34801561043e57600080fd5b5061045960048036038101906104549190612dea565b610b9e565b6040516104669190612e45565b60405180910390f35b34801561047b57600080fd5b5061049660048036038101906104919190612eea565b610c51565b6040516104a39190612e45565b60405180910390f35b3480156104b857600080fd5b506104d360048036038101906104ce9190612f17565b610c71565b005b3480156104e157600080fd5b506104fc60048036038101906104f79190612eea565b610cff565b6040516105099190612e45565b60405180910390f35b34801561051e57600080fd5b50610527610d1f565b6040516105349190612d72565b60405180910390f35b34801561054957600080fd5b50610564600480360381019061055f9190612eea565b610d45565b005b34801561057257600080fd5b5061058d60048036038101906105889190612f57565b610e05565b005b34801561059b57600080fd5b506105a4610e8b565b6040516105b19190612e45565b60405180910390f35b3480156105c657600080fd5b506105e160048036038101906105dc9190612eea565b610e9e565b6040516105ee9190612bea565b60405180910390f35b34801561060357600080fd5b5061060c610ee7565b005b34801561061a57600080fd5b50610623610f6f565b6040516106309190612d72565b60405180910390f35b34801561064557600080fd5b5061064e610f98565b60405161065b9190612c95565b60405180910390f35b34801561067057600080fd5b5061068b60048036038101906106869190612dea565b61102a565b6040516106989190612e45565b60405180910390f35b3480156106ad57600080fd5b506106c860048036038101906106c39190612eea565b6110f7565b005b3480156106d657600080fd5b506106f160048036038101906106ec9190612dea565b6111b7565b6040516106fe9190612e45565b60405180910390f35b34801561071357600080fd5b5061072e60048036038101906107299190612f57565b6111d6565b005b34801561073c57600080fd5b5061075760048036038101906107529190612fb0565b61125c565b005b34801561076557600080fd5b50610780600480360381019061077b9190612e60565b611333565b005b34801561078e57600080fd5b506107a960048036038101906107a49190612ff0565b611505565b005b3480156107b757600080fd5b506107c06115b9565b6040516107cd9190612bea565b60405180910390f35b3480156107e257600080fd5b506107fd60048036038101906107f89190613030565b6115bf565b60405161080a9190612bea565b60405180910390f35b34801561081f57600080fd5b5061083a60048036038101906108359190612fb0565b611646565b005b34801561084857600080fd5b5061085161171d565b005b34801561085f57600080fd5b5061086861185c565b6040516108759190612e45565b60405180910390f35b34801561088a57600080fd5b5061089361186f565b6040516108a09190612d72565b60405180910390f35b3480156108b557600080fd5b506108d060048036038101906108cb9190612eea565b611895565b005b3480156108de57600080fd5b506108f960048036038101906108f49190612eea565b61198c565b005b600d5481565b6060600180546109109061309f565b80601f016020809104026020016040519081016040528092919081815260200182805461093c9061309f565b80156109895780601f1061095e57610100808354040283529160200191610989565b820191906000526020600020905b81548152906001019060200180831161096c57829003601f168201915b5050505050905090565b600e60029054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b7f000000000000000000000000000000000000000000000000000000000000000081565b60006109f16109ea611a4c565b8484611a54565b6001905092915050565b6000600c54905090565b6000610a12848484611c1d565b50610ad484610a1f611a4c565b610acf85604051806060016040528060288152602001613b0960289139600960008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610a85611a4c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461200d9092919063ffffffff16565b611a54565b600190509392505050565b60055481565b7f000000000000000000000000000000000000000000000000000000000000dead81565b6000610b82610b377f0000000000000000000000000000000000000000000000000000000000000000610e9e565b610b74610b637f000000000000000000000000000000000000000000000000000000000000dead610e9e565b600c5461207190919063ffffffff16565b61207190919063ffffffff16565b905090565b6000600360009054906101000a900460ff16905090565b6000610c47610bab611a4c565b84610c428560096000610bbc611a4c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546120bb90919063ffffffff16565b611a54565b6001905092915050565b600b6020528060005260406000206000915054906101000a900460ff1681565b610c79611a4c565b73ffffffffffffffffffffffffffffffffffffffff16610c97610f6f565b73ffffffffffffffffffffffffffffffffffffffff1614610ced576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ce49061311c565b60405180910390fd5b81600481905550806005819055505050565b600a6020528060005260406000206000915054906101000a900460ff1681565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b610d4d611a4c565b73ffffffffffffffffffffffffffffffffffffffff16610d6b610f6f565b73ffffffffffffffffffffffffffffffffffffffff1614610dc1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610db89061311c565b60405180910390fd5b80600e60026101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b610e0d611a4c565b73ffffffffffffffffffffffffffffffffffffffff16610e2b610f6f565b73ffffffffffffffffffffffffffffffffffffffff1614610e81576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e789061311c565b60405180910390fd5b8060078190555050565b600e60009054906101000a900460ff1681565b6000600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610eef611a4c565b73ffffffffffffffffffffffffffffffffffffffff16610f0d610f6f565b73ffffffffffffffffffffffffffffffffffffffff1614610f63576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f5a9061311c565b60405180910390fd5b610f6d6000612119565b565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b606060028054610fa79061309f565b80601f0160208091040260200160405190810160405280929190818152602001828054610fd39061309f565b80156110205780601f10610ff557610100808354040283529160200191611020565b820191906000526020600020905b81548152906001019060200180831161100357829003601f168201915b5050505050905090565b60006110ed611037611a4c565b846110e885604051806060016040528060258152602001613b316025913960096000611061611a4c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461200d9092919063ffffffff16565b611a54565b6001905092915050565b6110ff611a4c565b73ffffffffffffffffffffffffffffffffffffffff1661111d610f6f565b73ffffffffffffffffffffffffffffffffffffffff1614611173576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161116a9061311c565b60405180910390fd5b80600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60006111cb6111c4611a4c565b8484611c1d565b506001905092915050565b6111de611a4c565b73ffffffffffffffffffffffffffffffffffffffff166111fc610f6f565b73ffffffffffffffffffffffffffffffffffffffff1614611252576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112499061311c565b60405180910390fd5b80600d8190555050565b611264611a4c565b73ffffffffffffffffffffffffffffffffffffffff16611282610f6f565b73ffffffffffffffffffffffffffffffffffffffff16146112d8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112cf9061311c565b60405180910390fd5b80600b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146113c3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113ba90613188565b60405180910390fd5b60008373ffffffffffffffffffffffffffffffffffffffff1683836040516024016113ef9291906131a8565b6040516020818303038152906040527fa9059cbb000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506040516114799190613218565b6000604051808303816000865af19150503d80600081146114b6576040519150601f19603f3d011682016040523d82523d6000602084013e6114bb565b606091505b50509050806114ff576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114f69061327b565b60405180910390fd5b50505050565b61150d611a4c565b73ffffffffffffffffffffffffffffffffffffffff1661152b610f6f565b73ffffffffffffffffffffffffffffffffffffffff1614611581576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115789061311c565b60405180910390fd5b81600e60006101000a81548160ff02191690831515021790555080600e60016101000a81548160ff0219169083151502179055505050565b60045481565b6000600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b61164e611a4c565b73ffffffffffffffffffffffffffffffffffffffff1661166c610f6f565b73ffffffffffffffffffffffffffffffffffffffff16146116c2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116b99061311c565b60405180910390fd5b80600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146117ad576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117a490613188565b60405180910390fd5b60003373ffffffffffffffffffffffffffffffffffffffff16476040516117d3906132c1565b60006040518083038185875af1925050503d8060008114611810576040519150601f19603f3d011682016040523d82523d6000602084013e611815565b606091505b5050905080611859576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161185090613322565b60405180910390fd5b50565b600e60019054906101000a900460ff1681565b600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b61189d611a4c565b73ffffffffffffffffffffffffffffffffffffffff166118bb610f6f565b73ffffffffffffffffffffffffffffffffffffffff1614611911576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119089061311c565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611980576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611977906133b4565b60405180910390fd5b61198981612119565b50565b611994611a4c565b73ffffffffffffffffffffffffffffffffffffffff166119b2610f6f565b73ffffffffffffffffffffffffffffffffffffffff1614611a08576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119ff9061311c565b60405180910390fd5b80600f60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611ac3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611aba90613446565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611b32576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b29906134d8565b60405180910390fd5b80600960008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051611c109190612bea565b60405180910390a3505050565b60008073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603611c8d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c849061356a565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611cfc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cf3906135fc565b60405180910390fd5b60008211611d3f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d369061368e565b60405180910390fd5b600f60149054906101000a900460ff1615611d6657611d5f8484846121dd565b9050612006565b6000611d7130610e9e565b90506000600d548210159050808015611d975750600f60149054906101000a900460ff16155b8015611ded5750600b60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015611e055750600e60009054906101000a900460ff165b15611e1457611e13826123b0565b5b611e9d846040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600860008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461200d9092919063ffffffff16565b600860008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000611eec878761249e565b611f0057611efb878787612609565b611f02565b845b9050611f5681600860008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546120bb90919063ffffffff16565b600860008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611ff69190612bea565b60405180910390a3600193505050505b9392505050565b6000838311158290612055576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161204c9190612c95565b60405180910390fd5b506000838561206491906136dd565b9050809150509392505050565b60006120b383836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525061200d565b905092915050565b60008082846120ca9190613711565b90508381101561210f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161210690613791565b60405180910390fd5b8091505092915050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b6000612268826040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600860008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461200d9092919063ffffffff16565b600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506122fd82600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546120bb90919063ffffffff16565b600860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161239d9190612bea565b60405180910390a3600190509392505050565b6001600f60146101000a81548160ff021916908315150217905550600e60019054906101000a900460ff16156123e657600d5490505b60004790506123f48261282e565b6000612409824761207190919063ffffffff16565b9050600081111561247e57600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f1935050505015801561247c573d6000803e3d6000fd5b505b50506000600f60146101000a81548160ff02191690831515021790555050565b6000600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806125415750600a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b1561254f5760019050612603565b600b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806125f05750600b60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b156125fe5760009050612603565b600090505b92915050565b600080600b60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161561268e5761268760075461267960045486612aaa90919063ffffffff16565b612b2490919063ffffffff16565b905061270d565b600b60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161561270c576127096007546126fb60055486612aaa90919063ffffffff16565b612b2490919063ffffffff16565b90505b5b60008111156128115761276881600860003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546120bb90919063ffffffff16565b600860003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516128089190612bea565b60405180910390a35b612824818461207190919063ffffffff16565b9150509392505050565b6000600267ffffffffffffffff81111561284b5761284a6137b1565b5b6040519080825280602002602001820160405280156128795781602001602082028036833780820191505090505b5090503081600081518110612891576128906137e0565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600e60029054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612938573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061295c9190613824565b816001815181106129705761296f6137e0565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506129d730600e60029054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611a54565b600e60029054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401612a3b95949392919061394a565b600060405180830381600087803b158015612a5557600080fd5b505af1158015612a69573d6000803e3d6000fd5b505050507f32cde87eb454f3a0b875ab23547023107cfad454363ec88ba5695e2c24aa52a78282604051612a9e9291906139a4565b60405180910390a15050565b6000808303612abc5760009050612b1e565b60008284612aca91906139d4565b9050828482612ad99190613a45565b14612b19576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b1090613ae8565b60405180910390fd5b809150505b92915050565b6000612b6683836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612b6e565b905092915050565b60008083118290612bb5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612bac9190612c95565b60405180910390fd5b5060008385612bc49190613a45565b9050809150509392505050565b6000819050919050565b612be481612bd1565b82525050565b6000602082019050612bff6000830184612bdb565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015612c3f578082015181840152602081019050612c24565b60008484015250505050565b6000601f19601f8301169050919050565b6000612c6782612c05565b612c718185612c10565b9350612c81818560208601612c21565b612c8a81612c4b565b840191505092915050565b60006020820190508181036000830152612caf8184612c5c565b905092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b6000612cfc612cf7612cf284612cb7565b612cd7565b612cb7565b9050919050565b6000612d0e82612ce1565b9050919050565b6000612d2082612d03565b9050919050565b612d3081612d15565b82525050565b6000602082019050612d4b6000830184612d27565b92915050565b6000612d5c82612cb7565b9050919050565b612d6c81612d51565b82525050565b6000602082019050612d876000830184612d63565b92915050565b600080fd5b612d9b81612d51565b8114612da657600080fd5b50565b600081359050612db881612d92565b92915050565b612dc781612bd1565b8114612dd257600080fd5b50565b600081359050612de481612dbe565b92915050565b60008060408385031215612e0157612e00612d8d565b5b6000612e0f85828601612da9565b9250506020612e2085828601612dd5565b9150509250929050565b60008115159050919050565b612e3f81612e2a565b82525050565b6000602082019050612e5a6000830184612e36565b92915050565b600080600060608486031215612e7957612e78612d8d565b5b6000612e8786828701612da9565b9350506020612e9886828701612da9565b9250506040612ea986828701612dd5565b9150509250925092565b600060ff82169050919050565b612ec981612eb3565b82525050565b6000602082019050612ee46000830184612ec0565b92915050565b600060208284031215612f0057612eff612d8d565b5b6000612f0e84828501612da9565b91505092915050565b60008060408385031215612f2e57612f2d612d8d565b5b6000612f3c85828601612dd5565b9250506020612f4d85828601612dd5565b9150509250929050565b600060208284031215612f6d57612f6c612d8d565b5b6000612f7b84828501612dd5565b91505092915050565b612f8d81612e2a565b8114612f9857600080fd5b50565b600081359050612faa81612f84565b92915050565b60008060408385031215612fc757612fc6612d8d565b5b6000612fd585828601612da9565b9250506020612fe685828601612f9b565b9150509250929050565b6000806040838503121561300757613006612d8d565b5b600061301585828601612f9b565b925050602061302685828601612f9b565b9150509250929050565b6000806040838503121561304757613046612d8d565b5b600061305585828601612da9565b925050602061306685828601612da9565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806130b757607f821691505b6020821081036130ca576130c9613070565b5b50919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000613106602083612c10565b9150613111826130d0565b602082019050919050565b60006020820190508181036000830152613135816130f9565b9050919050565b7f4572726f723a20496e76616c69642043616c6c65722100000000000000000000600082015250565b6000613172601683612c10565b915061317d8261313c565b602082019050919050565b600060208201905081810360008301526131a181613165565b9050919050565b60006040820190506131bd6000830185612d63565b6131ca6020830184612bdb565b9392505050565b600081519050919050565b600081905092915050565b60006131f2826131d1565b6131fc81856131dc565b935061320c818560208601612c21565b80840191505092915050565b600061322482846131e7565b915081905092915050565b7f546f6b656e207061796d656e74206661696c6564000000000000000000000000600082015250565b6000613265601483612c10565b91506132708261322f565b602082019050919050565b6000602082019050818103600083015261329481613258565b9050919050565b50565b60006132ab6000836131dc565b91506132b68261329b565b600082019050919050565b60006132cc8261329e565b9150819050919050565b7f5472616e73616374696f6e204661696c65642121000000000000000000000000600082015250565b600061330c601483612c10565b9150613317826132d6565b602082019050919050565b6000602082019050818103600083015261333b816132ff565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b600061339e602683612c10565b91506133a982613342565b604082019050919050565b600060208201905081810360008301526133cd81613391565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000613430602483612c10565b915061343b826133d4565b604082019050919050565b6000602082019050818103600083015261345f81613423565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b60006134c2602283612c10565b91506134cd82613466565b604082019050919050565b600060208201905081810360008301526134f1816134b5565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000613554602583612c10565b915061355f826134f8565b604082019050919050565b6000602082019050818103600083015261358381613547565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b60006135e6602383612c10565b91506135f18261358a565b604082019050919050565b60006020820190508181036000830152613615816135d9565b9050919050565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b6000613678602983612c10565b91506136838261361c565b604082019050919050565b600060208201905081810360008301526136a78161366b565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006136e882612bd1565b91506136f383612bd1565b925082820390508181111561370b5761370a6136ae565b5b92915050565b600061371c82612bd1565b915061372783612bd1565b925082820190508082111561373f5761373e6136ae565b5b92915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b600061377b601b83612c10565b915061378682613745565b602082019050919050565b600060208201905081810360008301526137aa8161376e565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60008151905061381e81612d92565b92915050565b60006020828403121561383a57613839612d8d565b5b60006138488482850161380f565b91505092915050565b6000819050919050565b600061387661387161386c84613851565b612cd7565b612bd1565b9050919050565b6138868161385b565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6138c181612d51565b82525050565b60006138d383836138b8565b60208301905092915050565b6000602082019050919050565b60006138f78261388c565b6139018185613897565b935061390c836138a8565b8060005b8381101561393d57815161392488826138c7565b975061392f836138df565b925050600181019050613910565b5085935050505092915050565b600060a08201905061395f6000830188612bdb565b61396c602083018761387d565b818103604083015261397e81866138ec565b905061398d6060830185612d63565b61399a6080830184612bdb565b9695505050505050565b60006040820190506139b96000830185612bdb565b81810360208301526139cb81846138ec565b90509392505050565b60006139df82612bd1565b91506139ea83612bd1565b92508282026139f881612bd1565b91508282048414831517613a0f57613a0e6136ae565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000613a5082612bd1565b9150613a5b83612bd1565b925082613a6b57613a6a613a16565b5b828204905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b6000613ad2602183612c10565b9150613add82613a76565b604082019050919050565b60006020820190508181036000830152613b0181613ac5565b905091905056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220335fcd3ca407597c18a0ed978a5853d479da0201d79478422b309f8ce8d419c364736f6c63430008120033
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.