ERC-20
Overview
Max Total Supply
1,000,000 ALPHA
Holders
118
Market
Onchain Market Cap
$0.00
Circulating Supply Market Cap
-
Other Info
Token Contract (WITH 9 Decimals)
Balance
0.000000001 ALPHAValue
$0.00Loading...
Loading
Loading...
Loading
Loading...
Loading
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
Contract Name:
ALPHA
Compiler Version
v0.8.22+commit.4fc1097e
Optimization Enabled:
No with 200 runs
Other Settings:
default evmVersion
Contract Source Code (Solidity Standard Json-Input format)
/** Website: https://alphaswap.co/ TG Portal: https://t.me/AlphaSwapPortal Twitter: https://twitter.com/alpha_swap_erc **/ // SPDX-License-Identifier: Unlicensed pragma solidity ^0.8.9; abstract contract Context { function _msgSender() internal view virtual returns (address) { return msg.sender; } } 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 ); } contract Ownable is Context { address private _owner; address private _previousOwner; event OwnershipTransferred( address indexed previousOwner, address indexed newOwner ); constructor() { address msgSender = _msgSender(); _owner = msgSender; emit OwnershipTransferred(address(0), msgSender); } function owner() public view returns (address) { return _owner; } modifier onlyOwner() { require(_owner == _msgSender(), "Ownable: caller is not the owner"); _; } function renounceOwnership() public virtual onlyOwner { emit OwnershipTransferred(_owner, address(0)); _owner = address(0); } } 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; return c; } } interface IUniswapV2Factory { function createPair(address tokenA, address tokenB) external returns (address pair); } interface IUniswapV2Router02 { function swapExactTokensForETHSupportingFeeOnTransferTokens( uint256 amountIn, uint256 amountOutMin, address[] calldata path, address to, uint256 deadline ) external; 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 ); } contract ALPHA is Context, IERC20, Ownable { string private constant _name = "Alpha Swap"; string private constant _symbol = "ALPHA"; using SafeMath for uint256; mapping(address => bool) public bots; mapping(address => uint256) private _rOwned; mapping(address => uint256) private _tOwned; mapping(address => mapping(address => uint256)) private _allowances; mapping(address => bool) private _isExcludedFromFee; uint256 private constant MAX = ~uint256(0); uint256 private constant _tTotal = 1000000 * 10**9; uint256 private _rTotal = (MAX - (MAX % _tTotal)); uint256 private _tFeeTotal; uint256 private _redisFeeOnBuy = 0; uint256 private _taxFeeOnBuy = 5; uint256 private _redisFeeOnSell = 0; uint256 private _taxFeeOnSell = 5; uint256 private _redisFee = _redisFeeOnSell; uint256 private _taxFee = _taxFeeOnSell; uint256 private _previousredisFee = _redisFee; uint256 private _previoustaxFee = _taxFee; mapping (address => uint256) public _buyMap; address payable private _developmentAddress = payable(0x8dD4f9Fd981E1F25ca4c56CEF55D3d750bd613A5); address payable private _marketingAddress = payable(0x0f2253a93e9354b3A9a86c3eD7C895Fc59447560); IUniswapV2Router02 public uniswapV2Router; address public uniswapV2Pair; bool private tradingOpen = false; bool private inSwap = false; bool private swapEnabled = true; uint256 public _maxTxAmount = 7500 * 10**9; uint256 public _maxWalletSize = 7500 * 10**9; uint256 public _swapTokensAtAmount = 100 * 10**9; uint8 private constant _decimals = 9; event MaxTxAmountUpdated(uint256 _maxTxAmount); modifier checkMaxWalletSize(address to, uint256 amount) { if (to != uniswapV2Pair && !_isExcludedFromFee[to]) { require(balanceOf(to) + amount <= _maxWalletSize, "TOKEN: Balance exceeds wallet size!"); } _; } modifier checkMaxTxAmount(uint256 amount) { require(amount <= _maxTxAmount, "TOKEN: Max Transaction Limit"); _; } modifier lockTheSwap { inSwap = true; _; inSwap = false; } constructor() { _rOwned[_msgSender()] = _rTotal; IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);// uniswapV2Router = _uniswapV2Router; uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory()) .createPair(address(this), _uniswapV2Router.WETH()); _isExcludedFromFee[owner()] = true; _isExcludedFromFee[address(this)] = true; _isExcludedFromFee[_developmentAddress] = true; _isExcludedFromFee[_marketingAddress] = true; emit Transfer(address(0), _msgSender(), _tTotal); } function name() public pure returns (string memory) { return _name; } function symbol() public pure returns (string memory) { return _symbol; } function decimals() public pure returns (uint8) { return _decimals; } function totalSupply() public pure override returns (uint256) { return _tTotal; } function balanceOf(address account) public view override returns (uint256) { return tokenFromReflection(_rOwned[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()].sub( amount, "ERC20: transfer amount exceeds allowance" ) ); return true; } function tokenFromReflection(uint256 rAmount) private view returns (uint256) { require( rAmount <= _rTotal, "Amount must be less than total reflections" ); uint256 currentRate = _getRate(); return rAmount.div(currentRate); } function removeAllFee() private { if (_redisFee == 0 && _taxFee == 0) return; _previousredisFee = _redisFee; _previoustaxFee = _taxFee; _redisFee = 0; _taxFee = 0; } function restoreAllFee() private { _redisFee = _previousredisFee; _taxFee = _previoustaxFee; } 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); } function getTaxFeeOnBuy() external view returns (uint256) { return _taxFeeOnBuy; } function getTaxFeeOnSell() external view returns (uint256) { return _taxFeeOnSell; } function _transfer( address from, address to, uint256 amount ) private { require(from != address(0), "ERC20: transfer from the zero address"); require(to != address(0), "ERC20: transfer to the zero address"); require(amount > 0, "Transfer amount must be greater than zero"); require(amount <= _maxTxAmount, "TOKEN: Max Transaction Limit"); if (from != owner() && to != owner()) { if (to != uniswapV2Pair && !_isExcludedFromFee[to]) { require(balanceOf(to) + amount <= _maxWalletSize, "TOKEN: Balance exceeds wallet size!"); } //Trade start check if (!tradingOpen) { require(from == owner(), "TOKEN: This account cannot send tokens until trading is enabled"); } require(amount <= _maxTxAmount, "TOKEN: Max Transaction Limit"); require(!bots[from] && !bots[to], "TOKEN: Your account is blacklisted!"); if(to != uniswapV2Pair) { require(balanceOf(to) + amount < _maxWalletSize, "TOKEN: Balance exceeds wallet size!"); } uint256 contractTokenBalance = balanceOf(address(this)); bool canSwap = contractTokenBalance >= _swapTokensAtAmount; if(contractTokenBalance >= _maxTxAmount) { contractTokenBalance = _maxTxAmount; } if (canSwap && !inSwap && from != uniswapV2Pair && swapEnabled && !_isExcludedFromFee[from] && !_isExcludedFromFee[to]) { swapTokensForEth(contractTokenBalance); uint256 contractETHBalance = address(this).balance; if (contractETHBalance > 0) { sendETHToFee(address(this).balance); } } } bool takeFee = true; //Transfer Tokens if ((_isExcludedFromFee[from] || _isExcludedFromFee[to]) || (from != uniswapV2Pair && to != uniswapV2Pair)) { takeFee = false; } else { //Set Fee for Buys if(from == uniswapV2Pair && to != address(uniswapV2Router)) { _redisFee = _redisFeeOnBuy; _taxFee = _taxFeeOnBuy; } //Set Fee for Sells if (to == uniswapV2Pair && from != address(uniswapV2Router)) { _redisFee = _redisFeeOnSell; _taxFee = _taxFeeOnSell; } } _tokenTransfer(from, to, amount, takeFee); } function swapTokensForEth(uint256 tokenAmount) private lockTheSwap { address[] memory path = new address[](2); path[0] = address(this); path[1] = uniswapV2Router.WETH(); _approve(address(this), address(uniswapV2Router), tokenAmount); uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens( tokenAmount, 0, path, address(this), block.timestamp ); } function sendETHToFee(uint256 amount) private { _marketingAddress.transfer(amount); } function setTrading() public onlyOwner { tradingOpen = true; } function manualswap() external { require(_msgSender() == _developmentAddress || _msgSender() == _marketingAddress); uint256 contractBalance = balanceOf(address(this)); swapTokensForEth(contractBalance); } function manualsend() external { require(_msgSender() == _developmentAddress || _msgSender() == _marketingAddress); uint256 contractETHBalance = address(this).balance; sendETHToFee(contractETHBalance); } function blockBots(address[] memory bots_) public onlyOwner { for (uint256 i = 0; i < bots_.length; i++) { bots[bots_[i]] = true; } } function unblockBot(address notbot) public onlyOwner { bots[notbot] = false; } function _tokenTransfer( address sender, address recipient, uint256 amount, bool takeFee ) private { if (!takeFee) removeAllFee(); _transferStandard(sender, recipient, amount); if (!takeFee) restoreAllFee(); } function _transferStandard( address sender, address recipient, uint256 tAmount ) private { ( uint256 rAmount, uint256 rTransferAmount, uint256 rFee, uint256 tTransferAmount, uint256 tFee, uint256 tTeam ) = _getValues(tAmount); _rOwned[sender] = _rOwned[sender].sub(rAmount); _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount); _takeTeam(tTeam); _reflectFee(rFee, tFee); emit Transfer(sender, recipient, tTransferAmount); } function _takeTeam(uint256 tTeam) private { uint256 currentRate = _getRate(); uint256 rTeam = tTeam.mul(currentRate); _rOwned[address(this)] = _rOwned[address(this)].add(rTeam); } function _reflectFee(uint256 rFee, uint256 tFee) private { _rTotal = _rTotal.sub(rFee); _tFeeTotal = _tFeeTotal.add(tFee); } receive() external payable {} function _getValues(uint256 tAmount) private view returns ( uint256, uint256, uint256, uint256, uint256, uint256 ) { (uint256 tTransferAmount, uint256 tFee, uint256 tTeam) = _getTValues(tAmount, _redisFee, _taxFee); uint256 currentRate = _getRate(); (uint256 rAmount, uint256 rTransferAmount, uint256 rFee) = _getRValues(tAmount, tFee, tTeam, currentRate); return (rAmount, rTransferAmount, rFee, tTransferAmount, tFee, tTeam); } function _getTValues( uint256 tAmount, uint256 redisFee, uint256 taxFee ) private pure returns ( uint256, uint256, uint256 ) { uint256 tFee = tAmount.mul(redisFee).div(100); uint256 tTeam = tAmount.mul(taxFee).div(100); uint256 tTransferAmount = tAmount.sub(tFee).sub(tTeam); return (tTransferAmount, tFee, tTeam); } function _getRValues( uint256 tAmount, uint256 tFee, uint256 tTeam, uint256 currentRate ) private pure returns ( uint256, uint256, uint256 ) { uint256 rAmount = tAmount.mul(currentRate); uint256 rFee = tFee.mul(currentRate); uint256 rTeam = tTeam.mul(currentRate); uint256 rTransferAmount = rAmount.sub(rFee).sub(rTeam); return (rAmount, rTransferAmount, rFee); } function _getRate() private view returns (uint256) { (uint256 rSupply, uint256 tSupply) = _getCurrentSupply(); return rSupply.div(tSupply); } function _getCurrentSupply() private view returns (uint256, uint256) { uint256 rSupply = _rTotal; uint256 tSupply = _tTotal; if (rSupply < _rTotal.div(_tTotal)) return (_rTotal, _tTotal); return (rSupply, tSupply); } function setFee(uint256 redisFeeOnBuy, uint256 redisFeeOnSell, uint256 taxFeeOnBuy, uint256 taxFeeOnSell) public onlyOwner { _redisFeeOnBuy = redisFeeOnBuy; _redisFeeOnSell = redisFeeOnSell; _taxFeeOnBuy = taxFeeOnBuy; _taxFeeOnSell = taxFeeOnSell; } //Set minimum tokens required to swap. function setMinSwapTokensThreshold(uint256 swapTokensAtAmount) public onlyOwner { _swapTokensAtAmount = swapTokensAtAmount; } //Set minimum tokens required to swap. function toggleSwap(bool _swapEnabled) public onlyOwner { swapEnabled = _swapEnabled; } //Set maximum transaction function setMaxTxnAmount(uint256 maxTxAmount) public onlyOwner { _maxTxAmount = maxTxAmount; } function setMaxWalletSize(uint256 maxWalletSize) public onlyOwner { _maxWalletSize = maxWalletSize; } function excludeMultipleAccountsFromFees(address[] calldata accounts, bool excluded) public onlyOwner { for(uint256 i = 0; i < accounts.length; i++) { _isExcludedFromFee[accounts[i]] = excluded; } } }
{ "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":false,"internalType":"uint256","name":"_maxTxAmount","type":"uint256"}],"name":"MaxTxAmountUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"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":"","type":"address"}],"name":"_buyMap","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxWalletSize","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_swapTokensAtAmount","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":[{"internalType":"address[]","name":"bots_","type":"address[]"}],"name":"blockBots","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"bots","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"excludeMultipleAccountsFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"getTaxFeeOnBuy","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getTaxFeeOnSell","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"manualsend","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"manualswap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"redisFeeOnBuy","type":"uint256"},{"internalType":"uint256","name":"redisFeeOnSell","type":"uint256"},{"internalType":"uint256","name":"taxFeeOnBuy","type":"uint256"},{"internalType":"uint256","name":"taxFeeOnSell","type":"uint256"}],"name":"setFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxTxAmount","type":"uint256"}],"name":"setMaxTxnAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxWalletSize","type":"uint256"}],"name":"setMaxWalletSize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"swapTokensAtAmount","type":"uint256"}],"name":"setMinSwapTokensThreshold","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"setTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"bool","name":"_swapEnabled","type":"bool"}],"name":"toggleSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","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":"notbot","type":"address"}],"name":"unblockBot","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
608060405266038d7ea4c680005f196200001a9190620006f7565b5f196200002891906200075b565b6007555f6009556005600a555f600b556005600c55600b54600d55600c54600e55600d54600f55600e54601055738dd4f9fd981e1f25ca4c56cef55d3d750bd613a560125f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550730f2253a93e9354b3a9a86c3ed7c895fc5944756060135f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505f601560146101000a81548160ff0219169083151502179055505f6015806101000a81548160ff0219169083151502179055506001601560166101000a81548160ff0219169083151502179055506506d23ad5f8006016556506d23ad5f80060175564174876e80060185534801562000174575f80fd5b505f620001866200069360201b60201c565b9050805f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35060075460035f620002386200069360201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055505f737a250d5630b4cf539739df2c5dacb4c659f2488d90508060145f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000317573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906200033d9190620007fa565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015620003a3573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620003c99190620007fa565b6040518363ffffffff1660e01b8152600401620003e89291906200083b565b6020604051808303815f875af115801562000405573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906200042b9190620007fa565b60155f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160065f6200047f6200069a60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160065f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160065f60125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160065f60135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055506200061f6200069360201b60201c565b73ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef66038d7ea4c6800060405162000684919062000877565b60405180910390a35062000892565b5f33905090565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b5f819050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f6200070382620006c1565b91506200071083620006c1565b925082620007235762000722620006ca565b5b828206905092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f6200076782620006c1565b91506200077483620006c1565b92508282039050818111156200078f576200078e6200072e565b5b92915050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f620007c48262000799565b9050919050565b620007d681620007b8565b8114620007e1575f80fd5b50565b5f81519050620007f481620007cb565b92915050565b5f6020828403121562000812576200081162000795565b5b5f6200082184828501620007e4565b91505092915050565b6200083581620007b8565b82525050565b5f604082019050620008505f8301856200082a565b6200085f60208301846200082a565b9392505050565b6200087181620006c1565b82525050565b5f6020820190506200088c5f83018462000866565b92915050565b613af580620008a05f395ff3fe6080604052600436106101da575f3560e01c806374010ece11610101578063a2a957bb11610094578063c3c8cd8011610063578063c3c8cd8014610677578063c492f0461461068d578063dd62ed3e146106b5578063ea1644d5146106f1576101e1565b8063a2a957bb146105ad578063a9059cbb146105d5578063bfd7928414610611578063bff28cf71461064d576101e1565b80638da5cb5b116100d05780638da5cb5b146105075780638f9a55c01461053157806395d89b411461055b57806398a5c31514610585576101e1565b806374010ece146104635780637c519ffb1461048b5780637d1db4a5146104a15780637f2feddc146104cb576101e1565b80632fd689e3116101795780636d8aa8f8116101485780636d8aa8f8146103d35780636fc3eaec146103fb57806370a0823114610411578063715018a61461044d576101e1565b80632fd689e31461032d578063313ce5671461035757806349bd5a5e146103815780636b999053146103ab576101e1565b80631694505e116101b55780631694505e1461027357806318160ddd1461029d5780631bc7522b146102c757806323b872dd146102f1576101e1565b8062b8cf2a146101e557806306fdde031461020d578063095ea7b314610237576101e1565b366101e157005b5f80fd5b3480156101f0575f80fd5b5061020b60048036038101906102069190612c1e565b610719565b005b348015610218575f80fd5b50610221610838565b60405161022e9190612cdf565b60405180910390f35b348015610242575f80fd5b5061025d60048036038101906102589190612d32565b610875565b60405161026a9190612d8a565b60405180910390f35b34801561027e575f80fd5b50610287610892565b6040516102949190612dfe565b60405180910390f35b3480156102a8575f80fd5b506102b16108b7565b6040516102be9190612e26565b60405180910390f35b3480156102d2575f80fd5b506102db6108c5565b6040516102e89190612e26565b60405180910390f35b3480156102fc575f80fd5b5061031760048036038101906103129190612e3f565b6108ce565b6040516103249190612d8a565b60405180910390f35b348015610338575f80fd5b506103416109a2565b60405161034e9190612e26565b60405180910390f35b348015610362575f80fd5b5061036b6109a8565b6040516103789190612eaa565b60405180910390f35b34801561038c575f80fd5b506103956109b0565b6040516103a29190612ed2565b60405180910390f35b3480156103b6575f80fd5b506103d160048036038101906103cc9190612eeb565b6109d5565b005b3480156103de575f80fd5b506103f960048036038101906103f49190612f40565b610ac0565b005b348015610406575f80fd5b5061040f610b71565b005b34801561041c575f80fd5b5061043760048036038101906104329190612eeb565b610c3e565b6040516104449190612e26565b60405180910390f35b348015610458575f80fd5b50610461610c8c565b005b34801561046e575f80fd5b5061048960048036038101906104849190612f6b565b610dda565b005b348015610496575f80fd5b5061049f610e78565b005b3480156104ac575f80fd5b506104b5610f29565b6040516104c29190612e26565b60405180910390f35b3480156104d6575f80fd5b506104f160048036038101906104ec9190612eeb565b610f2f565b6040516104fe9190612e26565b60405180910390f35b348015610512575f80fd5b5061051b610f44565b6040516105289190612ed2565b60405180910390f35b34801561053c575f80fd5b50610545610f6b565b6040516105529190612e26565b60405180910390f35b348015610566575f80fd5b5061056f610f71565b60405161057c9190612cdf565b60405180910390f35b348015610590575f80fd5b506105ab60048036038101906105a69190612f6b565b610fae565b005b3480156105b8575f80fd5b506105d360048036038101906105ce9190612f96565b61104c565b005b3480156105e0575f80fd5b506105fb60048036038101906105f69190612d32565b611102565b6040516106089190612d8a565b60405180910390f35b34801561061c575f80fd5b5061063760048036038101906106329190612eeb565b61111f565b6040516106449190612d8a565b60405180910390f35b348015610658575f80fd5b5061066161113c565b60405161066e9190612e26565b60405180910390f35b348015610682575f80fd5b5061068b611145565b005b348015610698575f80fd5b506106b360048036038101906106ae9190613053565b61121a565b005b3480156106c0575f80fd5b506106db60048036038101906106d691906130b0565b611349565b6040516106e89190612e26565b60405180910390f35b3480156106fc575f80fd5b5061071760048036038101906107129190612f6b565b6113cb565b005b610721611469565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146107ad576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107a490613138565b60405180910390fd5b5f5b815181101561083457600160025f8484815181106107d0576107cf613156565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555080806001019150506107af565b5050565b60606040518060400160405280600a81526020017f416c706861205377617000000000000000000000000000000000000000000000815250905090565b5f610888610881611469565b8484611470565b6001905092915050565b60145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f66038d7ea4c68000905090565b5f600c54905090565b5f6108da848484611633565b610997846108e6611469565b61099285604051806060016040528060288152602001613a986028913960055f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f610949611469565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054611fda9092919063ffffffff16565b611470565b600190509392505050565b60185481565b5f6009905090565b60155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6109dd611469565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610a69576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a6090613138565b60405180910390fd5b5f60025f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555050565b610ac8611469565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610b54576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b4b90613138565b60405180910390fd5b80601560166101000a81548160ff02191690831515021790555050565b60125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610bb1611469565b73ffffffffffffffffffffffffffffffffffffffff161480610c26575060135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610c0e611469565b73ffffffffffffffffffffffffffffffffffffffff16145b610c2e575f80fd5b5f479050610c3b8161203c565b50565b5f610c8560035f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546120a4565b9050919050565b610c94611469565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610d20576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d1790613138565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35f805f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b610de2611469565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610e6e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e6590613138565b60405180910390fd5b8060168190555050565b610e80611469565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610f0c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f0390613138565b60405180910390fd5b6001601560146101000a81548160ff021916908315150217905550565b60165481565b6011602052805f5260405f205f915090505481565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60175481565b60606040518060400160405280600581526020017f414c504841000000000000000000000000000000000000000000000000000000815250905090565b610fb6611469565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611042576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161103990613138565b60405180910390fd5b8060188190555050565b611054611469565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146110e0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110d790613138565b60405180910390fd5b8360098190555082600b8190555081600a8190555080600c8190555050505050565b5f61111561110e611469565b8484611633565b6001905092915050565b6002602052805f5260405f205f915054906101000a900460ff1681565b5f600a54905090565b60125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16611185611469565b73ffffffffffffffffffffffffffffffffffffffff1614806111fa575060135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166111e2611469565b73ffffffffffffffffffffffffffffffffffffffff16145b611202575f80fd5b5f61120c30610c3e565b905061121781612110565b50565b611222611469565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146112ae576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112a590613138565b60405180910390fd5b5f5b83839050811015611343578160065f8686858181106112d2576112d1613156565b5b90506020020160208101906112e79190612eeb565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555080806001019150506112b0565b50505050565b5f60055f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b6113d3611469565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461145f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161145690613138565b60405180910390fd5b8060178190555050565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036114de576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114d5906131f3565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361154c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161154390613281565b60405180910390fd5b8060055f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516116269190612e26565b60405180910390a3505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036116a1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116989061330f565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361170f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117069061339d565b60405180910390fd5b5f8111611751576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117489061342b565b60405180910390fd5b601654811115611796576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161178d90613493565b60405180910390fd5b61179e610f44565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415801561180c57506117dc610f44565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b15611ce75760155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141580156118b5575060065f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b1561191357601754816118c784610c3e565b6118d191906134de565b1115611912576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161190990613581565b60405180910390fd5b5b601560149054906101000a900460ff1661199d5761192f610f44565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161461199c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119939061360f565b60405180910390fd5b5b6016548111156119e2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119d990613493565b60405180910390fd5b60025f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16158015611a80575060025f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b611abf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ab69061369d565b60405180910390fd5b60155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614611b6b5760175481611b2084610c3e565b611b2a91906134de565b10611b6a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b6190613581565b60405180910390fd5b5b5f611b7530610c3e565b90505f60185482101590506016548210611b8f5760165491505b808015611ba7575060158054906101000a900460ff16155b8015611c00575060155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b8015611c185750601560169054906101000a900460ff165b8015611c6b575060065f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b8015611cbe575060065f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15611ce457611ccc82612110565b5f4790505f811115611ce257611ce14761203c565b5b505b50505b5f6001905060065f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1680611d87575060065f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b80611e38575060155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614158015611e37575060155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b5b15611e45575f9050611fc8565b60155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16148015611eee575060145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b15611f0657600954600d81905550600a54600e819055505b60155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16148015611faf575060145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b15611fc757600b54600d81905550600c54600e819055505b5b611fd484848484612379565b50505050565b5f838311158290612021576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120189190612cdf565b60405180910390fd5b505f838561202f91906136bb565b9050809150509392505050565b60135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc8290811502906040515f60405180830381858888f193505050501580156120a0573d5f803e3d5ffd5b5050565b5f6007548211156120ea576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120e19061375e565b60405180910390fd5b5f6120f36123a6565b905061210881846123cf90919063ffffffff16565b915050919050565b60016015806101000a81548160ff0219169083151502179055505f600267ffffffffffffffff81111561214657612145612a88565b5b6040519080825280602002602001820160405280156121745781602001602082028036833780820191505090505b50905030815f8151811061218b5761218a613156565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561222f573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906122539190613790565b8160018151811061226757612266613156565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506122cd3060145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611470565b60145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac947835f8430426040518663ffffffff1660e01b815260040161232f9594939291906138ab565b5f604051808303815f87803b158015612346575f80fd5b505af1158015612358573d5f803e3d5ffd5b50505050505f6015806101000a81548160ff02191690831515021790555050565b8061238757612386612418565b5b612392848484612451565b806123a05761239f612611565b5b50505050565b5f805f6123b1612625565b915091506123c881836123cf90919063ffffffff16565b9250505090565b5f61241083836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525061267e565b905092915050565b5f600d5414801561242a57505f600e54145b61244f57600d54600f81905550600e546010819055505f600d819055505f600e819055505b565b5f805f805f80612460876126df565b9550955095509550955095506124bc8660035f8c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461273f90919063ffffffff16565b60035f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f208190555061254d8560035f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461278890919063ffffffff16565b60035f8a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550612597816127e5565b6125a1848361289c565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040516125fe9190612e26565b60405180910390a3505050505050505050565b600f54600d81905550601054600e81905550565b5f805f60075490505f66038d7ea4c68000905061265466038d7ea4c680006007546123cf90919063ffffffff16565b8210156126715760075466038d7ea4c6800093509350505061267a565b81819350935050505b9091565b5f80831182906126c4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126bb9190612cdf565b60405180910390fd5b505f83856126d29190613930565b9050809150509392505050565b5f805f805f805f805f6126f78a600d54600e546128d6565b9250925092505f6127066123a6565b90505f805f6127178e878787612968565b9250925092508282828989899c509c509c509c509c509c505050505050505091939550919395565b5f61278083836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611fda565b905092915050565b5f80828461279691906134de565b9050838110156127db576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127d2906139aa565b60405180910390fd5b8091505092915050565b5f6127ee6123a6565b90505f61280482846129ec90919063ffffffff16565b90506128568160035f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461278890919063ffffffff16565b60035f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550505050565b6128b18260075461273f90919063ffffffff16565b6007819055506128cc8160085461278890919063ffffffff16565b6008819055505050565b5f805f8061290060646128f2888a6129ec90919063ffffffff16565b6123cf90919063ffffffff16565b90505f612929606461291b888b6129ec90919063ffffffff16565b6123cf90919063ffffffff16565b90505f61295182612943858c61273f90919063ffffffff16565b61273f90919063ffffffff16565b905080838395509550955050505093509350939050565b5f805f8061297f85896129ec90919063ffffffff16565b90505f61299586896129ec90919063ffffffff16565b90505f6129ab87896129ec90919063ffffffff16565b90505f6129d3826129c5858761273f90919063ffffffff16565b61273f90919063ffffffff16565b9050838184965096509650505050509450945094915050565b5f8083036129fc575f9050612a5d565b5f8284612a0991906139c8565b9050828482612a189190613930565b14612a58576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a4f90613a79565b60405180910390fd5b809150505b92915050565b5f604051905090565b5f80fd5b5f80fd5b5f80fd5b5f601f19601f8301169050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b612abe82612a78565b810181811067ffffffffffffffff82111715612add57612adc612a88565b5b80604052505050565b5f612aef612a63565b9050612afb8282612ab5565b919050565b5f67ffffffffffffffff821115612b1a57612b19612a88565b5b602082029050602081019050919050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f612b5882612b2f565b9050919050565b612b6881612b4e565b8114612b72575f80fd5b50565b5f81359050612b8381612b5f565b92915050565b5f612b9b612b9684612b00565b612ae6565b90508083825260208201905060208402830185811115612bbe57612bbd612b2b565b5b835b81811015612be75780612bd38882612b75565b845260208401935050602081019050612bc0565b5050509392505050565b5f82601f830112612c0557612c04612a74565b5b8135612c15848260208601612b89565b91505092915050565b5f60208284031215612c3357612c32612a6c565b5b5f82013567ffffffffffffffff811115612c5057612c4f612a70565b5b612c5c84828501612bf1565b91505092915050565b5f81519050919050565b5f82825260208201905092915050565b5f5b83811015612c9c578082015181840152602081019050612c81565b5f8484015250505050565b5f612cb182612c65565b612cbb8185612c6f565b9350612ccb818560208601612c7f565b612cd481612a78565b840191505092915050565b5f6020820190508181035f830152612cf78184612ca7565b905092915050565b5f819050919050565b612d1181612cff565b8114612d1b575f80fd5b50565b5f81359050612d2c81612d08565b92915050565b5f8060408385031215612d4857612d47612a6c565b5b5f612d5585828601612b75565b9250506020612d6685828601612d1e565b9150509250929050565b5f8115159050919050565b612d8481612d70565b82525050565b5f602082019050612d9d5f830184612d7b565b92915050565b5f819050919050565b5f612dc6612dc1612dbc84612b2f565b612da3565b612b2f565b9050919050565b5f612dd782612dac565b9050919050565b5f612de882612dcd565b9050919050565b612df881612dde565b82525050565b5f602082019050612e115f830184612def565b92915050565b612e2081612cff565b82525050565b5f602082019050612e395f830184612e17565b92915050565b5f805f60608486031215612e5657612e55612a6c565b5b5f612e6386828701612b75565b9350506020612e7486828701612b75565b9250506040612e8586828701612d1e565b9150509250925092565b5f60ff82169050919050565b612ea481612e8f565b82525050565b5f602082019050612ebd5f830184612e9b565b92915050565b612ecc81612b4e565b82525050565b5f602082019050612ee55f830184612ec3565b92915050565b5f60208284031215612f0057612eff612a6c565b5b5f612f0d84828501612b75565b91505092915050565b612f1f81612d70565b8114612f29575f80fd5b50565b5f81359050612f3a81612f16565b92915050565b5f60208284031215612f5557612f54612a6c565b5b5f612f6284828501612f2c565b91505092915050565b5f60208284031215612f8057612f7f612a6c565b5b5f612f8d84828501612d1e565b91505092915050565b5f805f8060808587031215612fae57612fad612a6c565b5b5f612fbb87828801612d1e565b9450506020612fcc87828801612d1e565b9350506040612fdd87828801612d1e565b9250506060612fee87828801612d1e565b91505092959194509250565b5f80fd5b5f8083601f84011261301357613012612a74565b5b8235905067ffffffffffffffff8111156130305761302f612ffa565b5b60208301915083602082028301111561304c5761304b612b2b565b5b9250929050565b5f805f6040848603121561306a57613069612a6c565b5b5f84013567ffffffffffffffff81111561308757613086612a70565b5b61309386828701612ffe565b935093505060206130a686828701612f2c565b9150509250925092565b5f80604083850312156130c6576130c5612a6c565b5b5f6130d385828601612b75565b92505060206130e485828601612b75565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f613122602083612c6f565b915061312d826130ee565b602082019050919050565b5f6020820190508181035f83015261314f81613116565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f6131dd602483612c6f565b91506131e882613183565b604082019050919050565b5f6020820190508181035f83015261320a816131d1565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f61326b602283612c6f565b915061327682613211565b604082019050919050565b5f6020820190508181035f8301526132988161325f565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f6132f9602583612c6f565b91506133048261329f565b604082019050919050565b5f6020820190508181035f830152613326816132ed565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f613387602383612c6f565b91506133928261332d565b604082019050919050565b5f6020820190508181035f8301526133b48161337b565b9050919050565b7f5472616e7366657220616d6f756e74206d7573742062652067726561746572205f8201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b5f613415602983612c6f565b9150613420826133bb565b604082019050919050565b5f6020820190508181035f83015261344281613409565b9050919050565b7f544f4b454e3a204d6178205472616e73616374696f6e204c696d6974000000005f82015250565b5f61347d601c83612c6f565b915061348882613449565b602082019050919050565b5f6020820190508181035f8301526134aa81613471565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f6134e882612cff565b91506134f383612cff565b925082820190508082111561350b5761350a6134b1565b5b92915050565b7f544f4b454e3a2042616c616e636520657863656564732077616c6c65742073695f8201527f7a65210000000000000000000000000000000000000000000000000000000000602082015250565b5f61356b602383612c6f565b915061357682613511565b604082019050919050565b5f6020820190508181035f8301526135988161355f565b9050919050565b7f544f4b454e3a2054686973206163636f756e742063616e6e6f742073656e64205f8201527f746f6b656e7320756e74696c2074726164696e6720697320656e61626c656400602082015250565b5f6135f9603f83612c6f565b91506136048261359f565b604082019050919050565b5f6020820190508181035f830152613626816135ed565b9050919050565b7f544f4b454e3a20596f7572206163636f756e7420697320626c61636b6c6973745f8201527f6564210000000000000000000000000000000000000000000000000000000000602082015250565b5f613687602383612c6f565b91506136928261362d565b604082019050919050565b5f6020820190508181035f8301526136b48161367b565b9050919050565b5f6136c582612cff565b91506136d083612cff565b92508282039050818111156136e8576136e76134b1565b5b92915050565b7f416d6f756e74206d757374206265206c657373207468616e20746f74616c20725f8201527f65666c656374696f6e7300000000000000000000000000000000000000000000602082015250565b5f613748602a83612c6f565b9150613753826136ee565b604082019050919050565b5f6020820190508181035f8301526137758161373c565b9050919050565b5f8151905061378a81612b5f565b92915050565b5f602082840312156137a5576137a4612a6c565b5b5f6137b28482850161377c565b91505092915050565b5f819050919050565b5f6137de6137d96137d4846137bb565b612da3565b612cff565b9050919050565b6137ee816137c4565b82525050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b61382681612b4e565b82525050565b5f613837838361381d565b60208301905092915050565b5f602082019050919050565b5f613859826137f4565b61386381856137fe565b935061386e8361380e565b805f5b8381101561389e578151613885888261382c565b975061389083613843565b925050600181019050613871565b5085935050505092915050565b5f60a0820190506138be5f830188612e17565b6138cb60208301876137e5565b81810360408301526138dd818661384f565b90506138ec6060830185612ec3565b6138f96080830184612e17565b9695505050505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f61393a82612cff565b915061394583612cff565b92508261395557613954613903565b5b828204905092915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f7700000000005f82015250565b5f613994601b83612c6f565b915061399f82613960565b602082019050919050565b5f6020820190508181035f8301526139c181613988565b9050919050565b5f6139d282612cff565b91506139dd83612cff565b92508282026139eb81612cff565b91508282048414831517613a0257613a016134b1565b5b5092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f5f8201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b5f613a63602183612c6f565b9150613a6e82613a09565b604082019050919050565b5f6020820190508181035f830152613a9081613a57565b905091905056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220d8f34aaa2f78b7e087eefbf3199b80eddc64de2cacc02ce475cbb5936b46372164736f6c63430008160033
Deployed Bytecode
0x6080604052600436106101da575f3560e01c806374010ece11610101578063a2a957bb11610094578063c3c8cd8011610063578063c3c8cd8014610677578063c492f0461461068d578063dd62ed3e146106b5578063ea1644d5146106f1576101e1565b8063a2a957bb146105ad578063a9059cbb146105d5578063bfd7928414610611578063bff28cf71461064d576101e1565b80638da5cb5b116100d05780638da5cb5b146105075780638f9a55c01461053157806395d89b411461055b57806398a5c31514610585576101e1565b806374010ece146104635780637c519ffb1461048b5780637d1db4a5146104a15780637f2feddc146104cb576101e1565b80632fd689e3116101795780636d8aa8f8116101485780636d8aa8f8146103d35780636fc3eaec146103fb57806370a0823114610411578063715018a61461044d576101e1565b80632fd689e31461032d578063313ce5671461035757806349bd5a5e146103815780636b999053146103ab576101e1565b80631694505e116101b55780631694505e1461027357806318160ddd1461029d5780631bc7522b146102c757806323b872dd146102f1576101e1565b8062b8cf2a146101e557806306fdde031461020d578063095ea7b314610237576101e1565b366101e157005b5f80fd5b3480156101f0575f80fd5b5061020b60048036038101906102069190612c1e565b610719565b005b348015610218575f80fd5b50610221610838565b60405161022e9190612cdf565b60405180910390f35b348015610242575f80fd5b5061025d60048036038101906102589190612d32565b610875565b60405161026a9190612d8a565b60405180910390f35b34801561027e575f80fd5b50610287610892565b6040516102949190612dfe565b60405180910390f35b3480156102a8575f80fd5b506102b16108b7565b6040516102be9190612e26565b60405180910390f35b3480156102d2575f80fd5b506102db6108c5565b6040516102e89190612e26565b60405180910390f35b3480156102fc575f80fd5b5061031760048036038101906103129190612e3f565b6108ce565b6040516103249190612d8a565b60405180910390f35b348015610338575f80fd5b506103416109a2565b60405161034e9190612e26565b60405180910390f35b348015610362575f80fd5b5061036b6109a8565b6040516103789190612eaa565b60405180910390f35b34801561038c575f80fd5b506103956109b0565b6040516103a29190612ed2565b60405180910390f35b3480156103b6575f80fd5b506103d160048036038101906103cc9190612eeb565b6109d5565b005b3480156103de575f80fd5b506103f960048036038101906103f49190612f40565b610ac0565b005b348015610406575f80fd5b5061040f610b71565b005b34801561041c575f80fd5b5061043760048036038101906104329190612eeb565b610c3e565b6040516104449190612e26565b60405180910390f35b348015610458575f80fd5b50610461610c8c565b005b34801561046e575f80fd5b5061048960048036038101906104849190612f6b565b610dda565b005b348015610496575f80fd5b5061049f610e78565b005b3480156104ac575f80fd5b506104b5610f29565b6040516104c29190612e26565b60405180910390f35b3480156104d6575f80fd5b506104f160048036038101906104ec9190612eeb565b610f2f565b6040516104fe9190612e26565b60405180910390f35b348015610512575f80fd5b5061051b610f44565b6040516105289190612ed2565b60405180910390f35b34801561053c575f80fd5b50610545610f6b565b6040516105529190612e26565b60405180910390f35b348015610566575f80fd5b5061056f610f71565b60405161057c9190612cdf565b60405180910390f35b348015610590575f80fd5b506105ab60048036038101906105a69190612f6b565b610fae565b005b3480156105b8575f80fd5b506105d360048036038101906105ce9190612f96565b61104c565b005b3480156105e0575f80fd5b506105fb60048036038101906105f69190612d32565b611102565b6040516106089190612d8a565b60405180910390f35b34801561061c575f80fd5b5061063760048036038101906106329190612eeb565b61111f565b6040516106449190612d8a565b60405180910390f35b348015610658575f80fd5b5061066161113c565b60405161066e9190612e26565b60405180910390f35b348015610682575f80fd5b5061068b611145565b005b348015610698575f80fd5b506106b360048036038101906106ae9190613053565b61121a565b005b3480156106c0575f80fd5b506106db60048036038101906106d691906130b0565b611349565b6040516106e89190612e26565b60405180910390f35b3480156106fc575f80fd5b5061071760048036038101906107129190612f6b565b6113cb565b005b610721611469565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146107ad576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107a490613138565b60405180910390fd5b5f5b815181101561083457600160025f8484815181106107d0576107cf613156565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555080806001019150506107af565b5050565b60606040518060400160405280600a81526020017f416c706861205377617000000000000000000000000000000000000000000000815250905090565b5f610888610881611469565b8484611470565b6001905092915050565b60145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f66038d7ea4c68000905090565b5f600c54905090565b5f6108da848484611633565b610997846108e6611469565b61099285604051806060016040528060288152602001613a986028913960055f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f610949611469565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054611fda9092919063ffffffff16565b611470565b600190509392505050565b60185481565b5f6009905090565b60155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6109dd611469565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610a69576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a6090613138565b60405180910390fd5b5f60025f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555050565b610ac8611469565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610b54576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b4b90613138565b60405180910390fd5b80601560166101000a81548160ff02191690831515021790555050565b60125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610bb1611469565b73ffffffffffffffffffffffffffffffffffffffff161480610c26575060135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610c0e611469565b73ffffffffffffffffffffffffffffffffffffffff16145b610c2e575f80fd5b5f479050610c3b8161203c565b50565b5f610c8560035f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546120a4565b9050919050565b610c94611469565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610d20576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d1790613138565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35f805f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b610de2611469565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610e6e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e6590613138565b60405180910390fd5b8060168190555050565b610e80611469565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610f0c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f0390613138565b60405180910390fd5b6001601560146101000a81548160ff021916908315150217905550565b60165481565b6011602052805f5260405f205f915090505481565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60175481565b60606040518060400160405280600581526020017f414c504841000000000000000000000000000000000000000000000000000000815250905090565b610fb6611469565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611042576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161103990613138565b60405180910390fd5b8060188190555050565b611054611469565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146110e0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110d790613138565b60405180910390fd5b8360098190555082600b8190555081600a8190555080600c8190555050505050565b5f61111561110e611469565b8484611633565b6001905092915050565b6002602052805f5260405f205f915054906101000a900460ff1681565b5f600a54905090565b60125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16611185611469565b73ffffffffffffffffffffffffffffffffffffffff1614806111fa575060135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166111e2611469565b73ffffffffffffffffffffffffffffffffffffffff16145b611202575f80fd5b5f61120c30610c3e565b905061121781612110565b50565b611222611469565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146112ae576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112a590613138565b60405180910390fd5b5f5b83839050811015611343578160065f8686858181106112d2576112d1613156565b5b90506020020160208101906112e79190612eeb565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555080806001019150506112b0565b50505050565b5f60055f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b6113d3611469565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461145f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161145690613138565b60405180910390fd5b8060178190555050565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036114de576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114d5906131f3565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361154c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161154390613281565b60405180910390fd5b8060055f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516116269190612e26565b60405180910390a3505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036116a1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116989061330f565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361170f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117069061339d565b60405180910390fd5b5f8111611751576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117489061342b565b60405180910390fd5b601654811115611796576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161178d90613493565b60405180910390fd5b61179e610f44565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415801561180c57506117dc610f44565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b15611ce75760155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141580156118b5575060065f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b1561191357601754816118c784610c3e565b6118d191906134de565b1115611912576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161190990613581565b60405180910390fd5b5b601560149054906101000a900460ff1661199d5761192f610f44565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161461199c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119939061360f565b60405180910390fd5b5b6016548111156119e2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119d990613493565b60405180910390fd5b60025f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16158015611a80575060025f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b611abf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ab69061369d565b60405180910390fd5b60155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614611b6b5760175481611b2084610c3e565b611b2a91906134de565b10611b6a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b6190613581565b60405180910390fd5b5b5f611b7530610c3e565b90505f60185482101590506016548210611b8f5760165491505b808015611ba7575060158054906101000a900460ff16155b8015611c00575060155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b8015611c185750601560169054906101000a900460ff165b8015611c6b575060065f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b8015611cbe575060065f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15611ce457611ccc82612110565b5f4790505f811115611ce257611ce14761203c565b5b505b50505b5f6001905060065f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1680611d87575060065f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b80611e38575060155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614158015611e37575060155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b5b15611e45575f9050611fc8565b60155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16148015611eee575060145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b15611f0657600954600d81905550600a54600e819055505b60155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16148015611faf575060145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b15611fc757600b54600d81905550600c54600e819055505b5b611fd484848484612379565b50505050565b5f838311158290612021576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120189190612cdf565b60405180910390fd5b505f838561202f91906136bb565b9050809150509392505050565b60135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc8290811502906040515f60405180830381858888f193505050501580156120a0573d5f803e3d5ffd5b5050565b5f6007548211156120ea576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120e19061375e565b60405180910390fd5b5f6120f36123a6565b905061210881846123cf90919063ffffffff16565b915050919050565b60016015806101000a81548160ff0219169083151502179055505f600267ffffffffffffffff81111561214657612145612a88565b5b6040519080825280602002602001820160405280156121745781602001602082028036833780820191505090505b50905030815f8151811061218b5761218a613156565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561222f573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906122539190613790565b8160018151811061226757612266613156565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506122cd3060145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611470565b60145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac947835f8430426040518663ffffffff1660e01b815260040161232f9594939291906138ab565b5f604051808303815f87803b158015612346575f80fd5b505af1158015612358573d5f803e3d5ffd5b50505050505f6015806101000a81548160ff02191690831515021790555050565b8061238757612386612418565b5b612392848484612451565b806123a05761239f612611565b5b50505050565b5f805f6123b1612625565b915091506123c881836123cf90919063ffffffff16565b9250505090565b5f61241083836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525061267e565b905092915050565b5f600d5414801561242a57505f600e54145b61244f57600d54600f81905550600e546010819055505f600d819055505f600e819055505b565b5f805f805f80612460876126df565b9550955095509550955095506124bc8660035f8c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461273f90919063ffffffff16565b60035f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f208190555061254d8560035f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461278890919063ffffffff16565b60035f8a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550612597816127e5565b6125a1848361289c565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040516125fe9190612e26565b60405180910390a3505050505050505050565b600f54600d81905550601054600e81905550565b5f805f60075490505f66038d7ea4c68000905061265466038d7ea4c680006007546123cf90919063ffffffff16565b8210156126715760075466038d7ea4c6800093509350505061267a565b81819350935050505b9091565b5f80831182906126c4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126bb9190612cdf565b60405180910390fd5b505f83856126d29190613930565b9050809150509392505050565b5f805f805f805f805f6126f78a600d54600e546128d6565b9250925092505f6127066123a6565b90505f805f6127178e878787612968565b9250925092508282828989899c509c509c509c509c509c505050505050505091939550919395565b5f61278083836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611fda565b905092915050565b5f80828461279691906134de565b9050838110156127db576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127d2906139aa565b60405180910390fd5b8091505092915050565b5f6127ee6123a6565b90505f61280482846129ec90919063ffffffff16565b90506128568160035f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461278890919063ffffffff16565b60035f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550505050565b6128b18260075461273f90919063ffffffff16565b6007819055506128cc8160085461278890919063ffffffff16565b6008819055505050565b5f805f8061290060646128f2888a6129ec90919063ffffffff16565b6123cf90919063ffffffff16565b90505f612929606461291b888b6129ec90919063ffffffff16565b6123cf90919063ffffffff16565b90505f61295182612943858c61273f90919063ffffffff16565b61273f90919063ffffffff16565b905080838395509550955050505093509350939050565b5f805f8061297f85896129ec90919063ffffffff16565b90505f61299586896129ec90919063ffffffff16565b90505f6129ab87896129ec90919063ffffffff16565b90505f6129d3826129c5858761273f90919063ffffffff16565b61273f90919063ffffffff16565b9050838184965096509650505050509450945094915050565b5f8083036129fc575f9050612a5d565b5f8284612a0991906139c8565b9050828482612a189190613930565b14612a58576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a4f90613a79565b60405180910390fd5b809150505b92915050565b5f604051905090565b5f80fd5b5f80fd5b5f80fd5b5f601f19601f8301169050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b612abe82612a78565b810181811067ffffffffffffffff82111715612add57612adc612a88565b5b80604052505050565b5f612aef612a63565b9050612afb8282612ab5565b919050565b5f67ffffffffffffffff821115612b1a57612b19612a88565b5b602082029050602081019050919050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f612b5882612b2f565b9050919050565b612b6881612b4e565b8114612b72575f80fd5b50565b5f81359050612b8381612b5f565b92915050565b5f612b9b612b9684612b00565b612ae6565b90508083825260208201905060208402830185811115612bbe57612bbd612b2b565b5b835b81811015612be75780612bd38882612b75565b845260208401935050602081019050612bc0565b5050509392505050565b5f82601f830112612c0557612c04612a74565b5b8135612c15848260208601612b89565b91505092915050565b5f60208284031215612c3357612c32612a6c565b5b5f82013567ffffffffffffffff811115612c5057612c4f612a70565b5b612c5c84828501612bf1565b91505092915050565b5f81519050919050565b5f82825260208201905092915050565b5f5b83811015612c9c578082015181840152602081019050612c81565b5f8484015250505050565b5f612cb182612c65565b612cbb8185612c6f565b9350612ccb818560208601612c7f565b612cd481612a78565b840191505092915050565b5f6020820190508181035f830152612cf78184612ca7565b905092915050565b5f819050919050565b612d1181612cff565b8114612d1b575f80fd5b50565b5f81359050612d2c81612d08565b92915050565b5f8060408385031215612d4857612d47612a6c565b5b5f612d5585828601612b75565b9250506020612d6685828601612d1e565b9150509250929050565b5f8115159050919050565b612d8481612d70565b82525050565b5f602082019050612d9d5f830184612d7b565b92915050565b5f819050919050565b5f612dc6612dc1612dbc84612b2f565b612da3565b612b2f565b9050919050565b5f612dd782612dac565b9050919050565b5f612de882612dcd565b9050919050565b612df881612dde565b82525050565b5f602082019050612e115f830184612def565b92915050565b612e2081612cff565b82525050565b5f602082019050612e395f830184612e17565b92915050565b5f805f60608486031215612e5657612e55612a6c565b5b5f612e6386828701612b75565b9350506020612e7486828701612b75565b9250506040612e8586828701612d1e565b9150509250925092565b5f60ff82169050919050565b612ea481612e8f565b82525050565b5f602082019050612ebd5f830184612e9b565b92915050565b612ecc81612b4e565b82525050565b5f602082019050612ee55f830184612ec3565b92915050565b5f60208284031215612f0057612eff612a6c565b5b5f612f0d84828501612b75565b91505092915050565b612f1f81612d70565b8114612f29575f80fd5b50565b5f81359050612f3a81612f16565b92915050565b5f60208284031215612f5557612f54612a6c565b5b5f612f6284828501612f2c565b91505092915050565b5f60208284031215612f8057612f7f612a6c565b5b5f612f8d84828501612d1e565b91505092915050565b5f805f8060808587031215612fae57612fad612a6c565b5b5f612fbb87828801612d1e565b9450506020612fcc87828801612d1e565b9350506040612fdd87828801612d1e565b9250506060612fee87828801612d1e565b91505092959194509250565b5f80fd5b5f8083601f84011261301357613012612a74565b5b8235905067ffffffffffffffff8111156130305761302f612ffa565b5b60208301915083602082028301111561304c5761304b612b2b565b5b9250929050565b5f805f6040848603121561306a57613069612a6c565b5b5f84013567ffffffffffffffff81111561308757613086612a70565b5b61309386828701612ffe565b935093505060206130a686828701612f2c565b9150509250925092565b5f80604083850312156130c6576130c5612a6c565b5b5f6130d385828601612b75565b92505060206130e485828601612b75565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f613122602083612c6f565b915061312d826130ee565b602082019050919050565b5f6020820190508181035f83015261314f81613116565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f6131dd602483612c6f565b91506131e882613183565b604082019050919050565b5f6020820190508181035f83015261320a816131d1565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f61326b602283612c6f565b915061327682613211565b604082019050919050565b5f6020820190508181035f8301526132988161325f565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f6132f9602583612c6f565b91506133048261329f565b604082019050919050565b5f6020820190508181035f830152613326816132ed565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f613387602383612c6f565b91506133928261332d565b604082019050919050565b5f6020820190508181035f8301526133b48161337b565b9050919050565b7f5472616e7366657220616d6f756e74206d7573742062652067726561746572205f8201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b5f613415602983612c6f565b9150613420826133bb565b604082019050919050565b5f6020820190508181035f83015261344281613409565b9050919050565b7f544f4b454e3a204d6178205472616e73616374696f6e204c696d6974000000005f82015250565b5f61347d601c83612c6f565b915061348882613449565b602082019050919050565b5f6020820190508181035f8301526134aa81613471565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f6134e882612cff565b91506134f383612cff565b925082820190508082111561350b5761350a6134b1565b5b92915050565b7f544f4b454e3a2042616c616e636520657863656564732077616c6c65742073695f8201527f7a65210000000000000000000000000000000000000000000000000000000000602082015250565b5f61356b602383612c6f565b915061357682613511565b604082019050919050565b5f6020820190508181035f8301526135988161355f565b9050919050565b7f544f4b454e3a2054686973206163636f756e742063616e6e6f742073656e64205f8201527f746f6b656e7320756e74696c2074726164696e6720697320656e61626c656400602082015250565b5f6135f9603f83612c6f565b91506136048261359f565b604082019050919050565b5f6020820190508181035f830152613626816135ed565b9050919050565b7f544f4b454e3a20596f7572206163636f756e7420697320626c61636b6c6973745f8201527f6564210000000000000000000000000000000000000000000000000000000000602082015250565b5f613687602383612c6f565b91506136928261362d565b604082019050919050565b5f6020820190508181035f8301526136b48161367b565b9050919050565b5f6136c582612cff565b91506136d083612cff565b92508282039050818111156136e8576136e76134b1565b5b92915050565b7f416d6f756e74206d757374206265206c657373207468616e20746f74616c20725f8201527f65666c656374696f6e7300000000000000000000000000000000000000000000602082015250565b5f613748602a83612c6f565b9150613753826136ee565b604082019050919050565b5f6020820190508181035f8301526137758161373c565b9050919050565b5f8151905061378a81612b5f565b92915050565b5f602082840312156137a5576137a4612a6c565b5b5f6137b28482850161377c565b91505092915050565b5f819050919050565b5f6137de6137d96137d4846137bb565b612da3565b612cff565b9050919050565b6137ee816137c4565b82525050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b61382681612b4e565b82525050565b5f613837838361381d565b60208301905092915050565b5f602082019050919050565b5f613859826137f4565b61386381856137fe565b935061386e8361380e565b805f5b8381101561389e578151613885888261382c565b975061389083613843565b925050600181019050613871565b5085935050505092915050565b5f60a0820190506138be5f830188612e17565b6138cb60208301876137e5565b81810360408301526138dd818661384f565b90506138ec6060830185612ec3565b6138f96080830184612e17565b9695505050505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f61393a82612cff565b915061394583612cff565b92508261395557613954613903565b5b828204905092915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f7700000000005f82015250565b5f613994601b83612c6f565b915061399f82613960565b602082019050919050565b5f6020820190508181035f8301526139c181613988565b9050919050565b5f6139d282612cff565b91506139dd83612cff565b92508282026139eb81612cff565b91508282048414831517613a0257613a016134b1565b5b5092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f5f8201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b5f613a63602183612c6f565b9150613a6e82613a09565b604082019050919050565b5f6020820190508181035f830152613a9081613a57565b905091905056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220d8f34aaa2f78b7e087eefbf3199b80eddc64de2cacc02ce475cbb5936b46372164736f6c63430008160033
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.