Feature Tip: Add private address tag to any address under My Name Tag !
ERC-20
Overview
Max Total Supply
1,000,000 THE 2023 INU
Holders
63
Market
Onchain Market Cap
$0.00
Circulating Supply Market Cap
-
Other Info
Token Contract (WITH 18 Decimals)
Balance
9,999 THE 2023 INUValue
$0.00Loading...
Loading
Loading...
Loading
Loading...
Loading
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
Contract Name:
TOKEN
Compiler Version
v0.8.7+commit.e28d00a7
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2022-10-17 */ // SPDX-License-Identifier: Unlicensed pragma solidity ^0.8.4; 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 tryAdd(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { uint256 c = a + b; if (c < a) return (false, 0); return (true, c); } } function trySub(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { if (b > a) return (false, 0); return (true, a - b); } } function tryMul(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { // Gas optimization: this is cheaper than requiring 'a' not being zero, but the // benefit is lost if 'b' is also tested. // See: https://github.com/OpenZeppelin/openzeppelin-contracts/pull/522 if (a == 0) return (true, 0); uint256 c = a * b; if (c / a != b) return (false, 0); return (true, c); } } function tryDiv(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { if (b == 0) return (false, 0); return (true, a / b); } } function tryMod(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { if (b == 0) return (false, 0); return (true, a % b); } } 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 mod(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; } } function mod(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; // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691 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 internal _owner; address private _previousOwner; 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 zero address"); emit OwnershipTransferred(_owner, newOwner); _owner = newOwner; } } interface IERC20Metadata is IERC20 { /** * @dev Returns the name of the token. */ function name() external view returns (string memory); /** * @dev Returns the symbol of the token. */ function symbol() external view returns (string memory); /** * @dev Returns the decimals places of the token. */ function decimals() external view returns (uint8); } contract ERC20 is Context,Ownable, IERC20, IERC20Metadata { using SafeMath for uint256; mapping(address => uint256) private _balances; mapping(address => mapping(address => uint256)) private _allowances; uint256 private _totalSupply; string private _name; string private _symbol; /** * @dev Sets the values for {name} and {symbol}. * * The default value of {decimals} is 18. To select a different value for * {decimals} you should overload it. * * All two of these values are immutable: they can only be set once during * construction. */ constructor(string memory name_, string memory symbol_) { _name = name_; _symbol = symbol_; } /** * @dev Returns the name of the token. */ function name() public view virtual override returns (string memory) { return _name; } /** * @dev Returns the symbol of the token, usually a shorter version of the * name. */ function symbol() public view virtual override returns (string memory) { return _symbol; } /** * @dev Returns the number of decimals used to get its user representation. * For example, if `decimals` equals `2`, a balance of `505` tokens should * be displayed to a user as `5,05` (`505 / 10 ** 2`). * * Tokens usually opt for a value of 18, imitating the relationship between * Ether and Wei. This is the value {ERC20} uses, unless this function is * overridden; * * NOTE: This information is only used for _display_ purposes: it in * no way affects any of the arithmetic of the contract, including * {IERC20-balanceOf} and {IERC20-transfer}. */ function decimals() public view virtual override returns (uint8) { return 18; } /** * @dev See {IERC20-totalSupply}. */ function totalSupply() public view virtual override returns (uint256) { return _totalSupply; } /** * @dev See {IERC20-balanceOf}. */ function balanceOf(address account) public view virtual override returns (uint256) { return _balances[account]; } /** * @dev See {IERC20-transfer}. * * Requirements: * * - `recipient` cannot be the zero address. * - the caller must have a balance of at least `amount`. */ function transfer(address recipient, uint256 amount) public virtual override returns (bool) { _transfer(_msgSender(), recipient, amount); return true; } /** * @dev See {IERC20-allowance}. */ function allowance(address owner, address spender) public view virtual override returns (uint256) { return _allowances[owner][spender]; } /** * @dev See {IERC20-approve}. * * Requirements: * * - `spender` cannot be the zero address. */ function approve(address spender, uint256 amount) public virtual override returns (bool) { _approve(_msgSender(), spender, amount); return true; } /** * @dev See {IERC20-transferFrom}. * * Emits an {Approval} event indicating the updated allowance. This is not * required by the EIP. See the note at the beginning of {ERC20}. * * Requirements: * * - `sender` and `recipient` cannot be the zero address. * - `sender` must have a balance of at least `amount`. * - the caller must have allowance for ``sender``'s tokens of at least * `amount`. */ function transferFrom( address sender, address recipient, uint256 amount ) public virtual override returns (bool) { _transfer(sender, recipient, amount); _approve(sender, _msgSender(), _allowances[sender][_msgSender()].sub(amount, "ERC20: transfer amount exceeds allowance")); return true; } /** * @dev Atomically increases the allowance granted to `spender` by the caller. * * This is an alternative to {approve} that can be used as a mitigation for * problems described in {IERC20-approve}. * * Emits an {Approval} event indicating the updated allowance. * * Requirements: * * - `spender` cannot be the zero address. */ function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) { _approve(_msgSender(), spender, _allowances[_msgSender()][spender].add(addedValue)); return true; } /** * @dev Atomically decreases the allowance granted to `spender` by the caller. * * This is an alternative to {approve} that can be used as a mitigation for * problems described in {IERC20-approve}. * * Emits an {Approval} event indicating the updated allowance. * * Requirements: * * - `spender` cannot be the zero address. * - `spender` must have allowance for the caller of at least * `subtractedValue`. */ function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) { _approve(_msgSender(), spender, _allowances[_msgSender()][spender].sub(subtractedValue, "ERC20: decreased allowance below zero")); return true; } /** * @dev Moves tokens `amount` from `sender` to `recipient`. * * This is internal function is equivalent to {transfer}, and can be used to * e.g. implement automatic token fees, slashing mechanisms, etc. * * Emits a {Transfer} event. * * Requirements: * * - `sender` cannot be the zero address. * - `recipient` cannot be the zero address. * - `sender` must have a balance of at least `amount`. */ function _transfer( address sender, address recipient, uint256 amount ) internal virtual { require(sender != address(0), "ERC20: transfer from the zero address"); require(recipient != address(0), "ERC20: transfer to the zero address"); _beforeTokenTransfer(sender, recipient, amount); _balances[sender] = _balances[sender].sub(amount, "ERC20: transfer amount exceeds balance"); _balances[recipient] = _balances[recipient].add(amount); emit Transfer(sender, recipient, amount); } /** @dev Creates `amount` tokens and assigns them to `account`, increasing * the total supply. * * Emits a {Transfer} event with `from` set to the zero address. * * Requirements: * * - `account` cannot be the zero address. */ function _mint(address account, uint256 amount) internal virtual { require(account != address(0), "ERC20: mint to the zero address"); _beforeTokenTransfer(address(0), account, amount); _totalSupply = _totalSupply.add(amount); _balances[account] = _balances[account].add(amount); emit Transfer(address(0), account, amount); } /** * @dev Destroys `amount` tokens from `account`, reducing the * total supply. * * Emits a {Transfer} event with `to` set to the zero address. * * Requirements: * * - `account` cannot be the zero address. * - `account` must have at least `amount` tokens. */ function _burn(address account, uint256 amount) internal virtual { require(account != address(0), "ERC20: burn from the zero address"); _beforeTokenTransfer(account, address(0), amount); _balances[account] = _balances[account].sub(amount, "ERC20: burn amount exceeds balance"); _totalSupply = _totalSupply.sub(amount); emit Transfer(account, address(0), amount); } /** * @dev Sets `amount` as the allowance of `spender` over the `owner` s tokens. * * This internal function is equivalent to `approve`, and can be used to * e.g. set automatic allowances for certain subsystems, etc. * * Emits an {Approval} event. * * Requirements: * * - `owner` cannot be the zero address. * - `spender` cannot be the zero address. */ function _approve( address owner, address spender, uint256 amount ) internal virtual { require(owner != address(0), "ERC20: approve from the zero address"); require(spender != address(0), "ERC20: approve to the zero address"); _allowances[owner][spender] = amount; emit Approval(owner, spender, amount); } /** * @dev Hook that is called before any transfer of tokens. This includes * minting and burning. * * Calling conditions: * * - when `from` and `to` are both non-zero, `amount` of ``from``'s tokens * will be to transferred to `to`. * - when `from` is zero, `amount` tokens will be minted for `to`. * - when `to` is zero, `amount` of ``from``'s tokens will be burned. * - `from` and `to` are never both zero. * * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks]. */ function _beforeTokenTransfer( address from, address to, uint256 amount ) internal virtual {} } interface IUniswapV2Factory { event PairCreated(address indexed token0, address indexed token1, address pair, uint); function feeTo() external view returns (address); function feeToSetter() external view returns (address); function getPair(address tokenA, address tokenB) external view returns (address pair); function allPairs(uint) external view returns (address pair); function allPairsLength() external view returns (uint); function createPair(address tokenA, address tokenB) external returns (address pair); function setFeeTo(address) external; function setFeeToSetter(address) external; } interface IUniswapV2Pair { event Approval(address indexed owner, address indexed spender, uint value); event Transfer(address indexed from, address indexed to, uint value); function name() external pure returns (string memory); function symbol() external pure returns (string memory); function decimals() external pure returns (uint8); function totalSupply() external view returns (uint); function balanceOf(address owner) external view returns (uint); function allowance(address owner, address spender) external view returns (uint); function approve(address spender, uint value) external returns (bool); function transfer(address to, uint value) external returns (bool); function transferFrom(address from, address to, uint value) external returns (bool); function DOMAIN_SEPARATOR() external view returns (bytes32); function PERMIT_TYPEHASH() external pure returns (bytes32); function nonces(address owner) external view returns (uint); function permit(address owner, address spender, uint value, uint deadline, uint8 v, bytes32 r, bytes32 s) external; event Mint(address indexed sender, uint amount0, uint amount1); event Burn(address indexed sender, uint amount0, uint amount1, address indexed to); event Swap( address indexed sender, uint amount0In, uint amount1In, uint amount0Out, uint amount1Out, address indexed to ); event Sync(uint112 reserve0, uint112 reserve1); function MINIMUM_LIQUIDITY() external pure returns (uint); function factory() external view returns (address); function token0() external view returns (address); function token1() external view returns (address); function getReserves() external view returns (uint112 reserve0, uint112 reserve1, uint32 blockTimestampLast); function price0CumulativeLast() external view returns (uint); function price1CumulativeLast() external view returns (uint); function kLast() external view returns (uint); function mint(address to) external returns (uint liquidity); function burn(address to) external returns (uint amount0, uint amount1); function swap(uint amount0Out, uint amount1Out, address to, bytes calldata data) external; function skim(address to) external; function sync() external; function initialize(address, address) external; } interface IUniswapV2Router01 { function factory() external pure returns (address); function WETH() external pure returns (address); function addLiquidity( address tokenA, address tokenB, uint amountADesired, uint amountBDesired, uint amountAMin, uint amountBMin, address to, uint deadline ) external returns (uint amountA, uint amountB, uint liquidity); function addLiquidityETH( address token, uint amountTokenDesired, uint amountTokenMin, uint amountETHMin, address to, uint deadline ) external payable returns (uint amountToken, uint amountETH, uint liquidity); function removeLiquidity( address tokenA, address tokenB, uint liquidity, uint amountAMin, uint amountBMin, address to, uint deadline ) external returns (uint amountA, uint amountB); function removeLiquidityETH( address token, uint liquidity, uint amountTokenMin, uint amountETHMin, address to, uint deadline ) external returns (uint amountToken, uint amountETH); function removeLiquidityWithPermit( address tokenA, address tokenB, uint liquidity, uint amountAMin, uint amountBMin, address to, uint deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s ) external returns (uint amountA, uint amountB); function removeLiquidityETHWithPermit( address token, uint liquidity, uint amountTokenMin, uint amountETHMin, address to, uint deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s ) external returns (uint amountToken, uint amountETH); function swapExactTokensForTokens( uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline ) external returns (uint[] memory amounts); function swapTokensForExactTokens( uint amountOut, uint amountInMax, address[] calldata path, address to, uint deadline ) external returns (uint[] memory amounts); function swapExactETHForTokens(uint amountOutMin, address[] calldata path, address to, uint deadline) external payable returns (uint[] memory amounts); function swapTokensForExactETH(uint amountOut, uint amountInMax, address[] calldata path, address to, uint deadline) external returns (uint[] memory amounts); function swapExactTokensForETH(uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline) external returns (uint[] memory amounts); function swapETHForExactTokens(uint amountOut, address[] calldata path, address to, uint deadline) external payable returns (uint[] memory amounts); function quote(uint amountA, uint reserveA, uint reserveB) external pure returns (uint amountB); function getAmountOut(uint amountIn, uint reserveIn, uint reserveOut) external pure returns (uint amountOut); function getAmountIn(uint amountOut, uint reserveIn, uint reserveOut) external pure returns (uint amountIn); function getAmountsOut(uint amountIn, address[] calldata path) external view returns (uint[] memory amounts); function getAmountsIn(uint amountOut, address[] calldata path) external view returns (uint[] memory amounts); } interface IUniswapV2Router02 is IUniswapV2Router01 { function removeLiquidityETHSupportingFeeOnTransferTokens( address token, uint liquidity, uint amountTokenMin, uint amountETHMin, address to, uint deadline ) external returns (uint amountETH); function removeLiquidityETHWithPermitSupportingFeeOnTransferTokens( address token, uint liquidity, uint amountTokenMin, uint amountETHMin, address to, uint deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s ) external returns (uint amountETH); function swapExactTokensForTokensSupportingFeeOnTransferTokens( uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline ) external; function swapExactETHForTokensSupportingFeeOnTransferTokens( uint amountOutMin, address[] calldata path, address to, uint deadline ) external payable; function swapExactTokensForETHSupportingFeeOnTransferTokens( uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline ) external; } contract TOKEN is ERC20 { using SafeMath for uint256; using Address for address; mapping (address => bool) private _isExcludedFromFee; mapping(address => bool) private _isExcludedFromMaxWallet; address public _devAddress; address private _burnAddress; // Buy tax uint256 public _buyDevFee = 0; // Sell tax uint256 public _sellDevFee = 50; IUniswapV2Router02 public uniswapV2Router; address public uniswapV2Pair; bool inSwapAndLiquify; bool public swapAndSendFeeEnabled = true; uint256 public numTokensSellToSendFees; uint256 public _maxWalletBalance; event MinTokensBeforeSwapUpdated(uint256 minTokensBeforeSwap); event swapAndSendFeeEnabledUpdated(bool enabled); constructor () ERC20("Happy New Year Degens", "THE 2023 INU"){ numTokensSellToSendFees = 10000 * 10 ** decimals(); _maxWalletBalance = 15000 * 10 ** decimals(); _devAddress = 0xfbcEF7C5aE9D3E0bf12606de4f66392C2ee4Ee2b; _burnAddress = 0x000000000000000000000000000000000000dEaD; IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D ); // Create a uniswap pair for this new token uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory()) .createPair(address(this), _uniswapV2Router.WETH()); // set the rest of the contract variables uniswapV2Router = _uniswapV2Router; //exclude owner and this contract from fee _isExcludedFromFee[_msgSender()] = true; _isExcludedFromFee[address(this)] = true; _isExcludedFromFee[_burnAddress]= true; _isExcludedFromFee[_devAddress]= true; // exclude from the Max wallet balance _isExcludedFromMaxWallet[owner()] = true; _isExcludedFromMaxWallet[address(this)] = true; _isExcludedFromMaxWallet[_burnAddress] = true; _isExcludedFromMaxWallet[_devAddress] = true; /* _mint is an internal function in ERC20.sol that is only called here, and CANNOT be called ever again */ _mint(owner(), 1000000 * 10 ** decimals()); } function excludeFromFee(address account) public onlyOwner { _isExcludedFromFee[account] = true; } function includeInFee(address account) public onlyOwner { _isExcludedFromFee[account] = false; } function includeAndExcludedFromMaxWallet(address account, bool value) public onlyOwner { _isExcludedFromMaxWallet[account] = value; } function isExcludedFromMaxWallet(address account) public view returns(bool){ return _isExcludedFromMaxWallet[account]; } function setBuyAndSellFeePercent(uint256 buyFee, uint256 sellFee) external onlyOwner { _buyDevFee = buyFee; _sellDevFee = sellFee; } function setDevWalletAddress(address _addr) external onlyOwner { _devAddress = _addr; } function setNumTokensSellToSendToFee(uint256 amount) external onlyOwner { numTokensSellToSendFees = amount * 10 ** decimals(); } function setMaxBalance(uint256 maxBalancePercent) external onlyOwner { _maxWalletBalance = maxBalancePercent * 10** decimals(); } function setRouterAddress(address newRouter) external onlyOwner { IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(newRouter); uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory()).createPair(address(this), _uniswapV2Router.WETH()); uniswapV2Router = _uniswapV2Router; } function setSwapAndSendFeeEnabled(bool _enabled) external onlyOwner { swapAndSendFeeEnabled = _enabled; emit swapAndSendFeeEnabledUpdated(_enabled); } //to recieve ETH from uniswapV2Router when swaping receive() external payable {} // to withdraw stucked ETH function withdrawStuckedFunds(uint amount) external onlyOwner{ // This is the current recommended method to use. (bool sent,) = _owner.call{value: amount}(""); require(sent, "Failed to send ETH"); } // Withdraw stuked tokens function withdrawStuckedTokens(address tokenAddress, uint256 tokens) external onlyOwner returns (bool success){ return IERC20(tokenAddress).transfer(msg.sender, tokens); } function isExcludedFromFee(address account) public view returns(bool) { return _isExcludedFromFee[account]; } function _transfer( address from, address to, uint256 amount ) internal override{ require(from != address(0), "ERC20: transfer from the zero address"); require(to != address(0), "ERC20: transfer to the zero address"); require(amount > 0, "Transfer amount must be greater than zero"); if ( from != owner() && to != address(this) && to != _burnAddress && to != uniswapV2Pair ) { uint256 currentBalance = balanceOf(to); require(_isExcludedFromMaxWallet[to] || (currentBalance + amount <= _maxWalletBalance), "ERC20: Reached max wallet holding"); } uint256 contractTokenBalance = balanceOf(address(this)); bool overMinTokenBalance = contractTokenBalance >= numTokensSellToSendFees; if ( overMinTokenBalance && !inSwapAndLiquify && from != uniswapV2Pair && swapAndSendFeeEnabled ) { contractTokenBalance = numTokensSellToSendFees; inSwapAndLiquify = true; swapBack(contractTokenBalance); inSwapAndLiquify = false; } if(_isExcludedFromFee[from] || _isExcludedFromFee[to]){ super._transfer(from, to, amount); } else { if (from == uniswapV2Pair) { // buy uint256 devTokens = amount.mul(_buyDevFee).div(1000); amount= amount.sub(devTokens); super._transfer(from, address(this), devTokens); super._transfer(from, to, amount); } else if (to == uniswapV2Pair) { // sell uint256 devTokens = amount.mul(_sellDevFee).div(1000); amount= amount.sub(devTokens); super._transfer(from, address(this),devTokens); super._transfer(from, to, amount); } else { // transfer super._transfer(from, to, amount); } } } function swapBack(uint256 contractBalance) private { swapTokensForEth(contractBalance); } 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, // accept any amount of ETH path, _devAddress, block.timestamp ); } }
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":"minTokensBeforeSwap","type":"uint256"}],"name":"MinTokensBeforeSwapUpdated","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"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bool","name":"enabled","type":"bool"}],"name":"swapAndSendFeeEnabledUpdated","type":"event"},{"inputs":[],"name":"_buyDevFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_devAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxWalletBalance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_sellDevFee","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":[{"internalType":"address","name":"account","type":"address"}],"name":"excludeFromFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"value","type":"bool"}],"name":"includeAndExcludedFromMaxWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"includeInFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromFee","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromMaxWallet","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":"numTokensSellToSendFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"buyFee","type":"uint256"},{"internalType":"uint256","name":"sellFee","type":"uint256"}],"name":"setBuyAndSellFeePercent","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_addr","type":"address"}],"name":"setDevWalletAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxBalancePercent","type":"uint256"}],"name":"setMaxBalance","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"setNumTokensSellToSendToFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newRouter","type":"address"}],"name":"setRouterAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_enabled","type":"bool"}],"name":"setSwapAndSendFeeEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapAndSendFeeEnabled","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"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"withdrawStuckedFunds","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"tokenAddress","type":"address"},{"internalType":"uint256","name":"tokens","type":"uint256"}],"name":"withdrawStuckedTokens","outputs":[{"internalType":"bool","name":"success","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
60806040526000600b556032600c55600e805460ff60a81b1916600160a81b1790553480156200002e57600080fd5b506040518060400160405280601581526020017f4861707079204e6577205965617220446567656e7300000000000000000000008152506040518060400160405280600c81526020016b544845203230323320494e5560a01b8152506200009a6200048760201b60201c565b600080546001600160a01b0319166001600160a01b039290921691821781556040517f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a38151620000f6906005906020850190620005ac565b5080516200010c906006906020840190620005ac565b5062000119915050601290565b6200012690600a620006e8565b6200013490612710620007a7565b600f55620001456012600a620006e8565b6200015390613a98620007a7565b601055600980546001600160a01b031990811673fbcef7c5ae9d3e0bf12606de4f66392c2ee4ee2b17909155600a805490911661dead1790556040805163c45a015560e01b81529051737a250d5630b4cf539739df2c5dacb4c659f2488d91829163c45a015591600480820192602092909190829003018186803b158015620001db57600080fd5b505afa158015620001f0573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000216919062000652565b6001600160a01b031663c9c6539630836001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156200025f57600080fd5b505afa15801562000274573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200029a919062000652565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381600087803b158015620002e357600080fd5b505af1158015620002f8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200031e919062000652565b600e80546001600160a01b03199081166001600160a01b0393841617909155600d80549091169183169190911790556001600760006200035b3390565b6001600160a01b03908116825260208083019390935260409182016000908120805495151560ff199687161790553081526007909352818320805485166001908117909155600a54821684528284208054861682179055600954909116835290822080549093168117909255600890620003dd6000546001600160a01b031690565b6001600160a01b03908116825260208083019390935260409182016000908120805495151560ff199687161790553081526008909352818320805485166001908117909155600a54821684528284208054861682179055600954909116835291208054909216179055620004806200045d6000546001600160a01b031690565b6200046b6012600a620006e8565b6200047a90620f4240620007a7565b6200048b565b506200081c565b3390565b6001600160a01b038216620004e65760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015260640160405180910390fd5b62000502816004546200059560201b62000fb41790919060201c565b6004556001600160a01b0382166000908152600260209081526040909120546200053791839062000fb462000595821b17901c565b6001600160a01b0383166000818152600260205260408082209390935591519091907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90620005899085815260200190565b60405180910390a35050565b6000620005a3828462000684565b90505b92915050565b828054620005ba90620007c9565b90600052602060002090601f016020900481019282620005de576000855562000629565b82601f10620005f957805160ff191683800117855562000629565b8280016001018555821562000629579182015b82811115620006295782518255916020019190600101906200060c565b50620006379291506200063b565b5090565b5b808211156200063757600081556001016200063c565b6000602082840312156200066557600080fd5b81516001600160a01b03811681146200067d57600080fd5b9392505050565b600082198211156200069a576200069a62000806565b500190565b600181815b80851115620006e0578160001904821115620006c457620006c462000806565b80851615620006d257918102915b93841c9390800290620006a4565b509250929050565b6000620005a360ff8416836000826200070457506001620005a6565b816200071357506000620005a6565b81600181146200072c5760028114620007375762000757565b6001915050620005a6565b60ff8411156200074b576200074b62000806565b50506001821b620005a6565b5060208310610133831016604e8410600b84101617156200077c575081810a620005a6565b6200078883836200069f565b80600019048211156200079f576200079f62000806565b029392505050565b6000816000190483118215151615620007c457620007c462000806565b500290565b600181811c90821680620007de57607f821691505b602082108114156200080057634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b611c82806200082c6000396000f3fe6080604052600436106102085760003560e01c80636af6592911610118578063a9059cbb116100a0578063d4a5af841161006f578063d4a5af8414610617578063dd62ed3e1461062d578063ea2f0b3714610673578063ea50cf4e14610693578063f2fde38b146106b357600080fd5b8063a9059cbb146105a1578063ad04455e146105c1578063c9cf7789146105e1578063caea37b7146105f757600080fd5b80637bc4c447116100e75780637bc4c4471461050e5780638da5cb5b1461052e57806395d89b411461054c5780639d51d9b714610561578063a457c2d71461058157600080fd5b80636af659291461046a5780636dd3d39f1461048a57806370a08231146104c3578063715018a6146104f957600080fd5b80633d0dbec01161019b57806349bd5a5e1161016a57806349bd5a5e146103c55780635342acb4146103e557806353cae9cf1461041e5780635d729d8c14610434578063620158521461045457600080fd5b80633d0dbec01461034457806341cb87fc14610365578063437823ec1461038557806348eb61b6146103a557600080fd5b806318160ddd116101d757806318160ddd146102c957806323b872dd146102e8578063313ce56714610308578063395093511461032457600080fd5b806306fdde0314610214578063095ea7b31461023f578063120a06121461026f5780631694505e1461029157600080fd5b3661020f57005b600080fd5b34801561022057600080fd5b506102296106d3565b604051610236919061186e565b60405180910390f35b34801561024b57600080fd5b5061025f61025a3660046117cd565b610765565b6040519015158152602001610236565b34801561027b57600080fd5b5061028f61028a3660046116eb565b61077c565b005b34801561029d57600080fd5b50600d546102b1906001600160a01b031681565b6040516001600160a01b039091168152602001610236565b3480156102d557600080fd5b506004545b604051908152602001610236565b3480156102f457600080fd5b5061025f61030336600461175e565b6107d1565b34801561031457600080fd5b5060405160128152602001610236565b34801561033057600080fd5b5061025f61033f3660046117cd565b61083a565b34801561035057600080fd5b50600e5461025f90600160a81b900460ff1681565b34801561037157600080fd5b5061028f6103803660046116eb565b610870565b34801561039157600080fd5b5061028f6103a03660046116eb565b610a42565b3480156103b157600080fd5b5061028f6103c036600461179f565b610a90565b3480156103d157600080fd5b50600e546102b1906001600160a01b031681565b3480156103f157600080fd5b5061025f6104003660046116eb565b6001600160a01b031660009081526007602052604090205460ff1690565b34801561042a57600080fd5b506102da600f5481565b34801561044057600080fd5b5061025f61044f3660046117cd565b610ae5565b34801561046057600080fd5b506102da600b5481565b34801561047657600080fd5b506009546102b1906001600160a01b031681565b34801561049657600080fd5b5061025f6104a53660046116eb565b6001600160a01b031660009081526008602052604090205460ff1690565b3480156104cf57600080fd5b506102da6104de3660046116eb565b6001600160a01b031660009081526002602052604090205490565b34801561050557600080fd5b5061028f610b97565b34801561051a57600080fd5b5061028f61052936600461184c565b610c0b565b34801561053a57600080fd5b506000546001600160a01b03166102b1565b34801561055857600080fd5b50610229610c40565b34801561056d57600080fd5b5061028f61057c366004611833565b610c4f565b34801561058d57600080fd5b5061025f61059c3660046117cd565b610c95565b3480156105ad57600080fd5b5061025f6105bc3660046117cd565b610ce4565b3480156105cd57600080fd5b5061028f6105dc366004611833565b610cf1565b3480156105ed57600080fd5b506102da600c5481565b34801561060357600080fd5b5061028f610612366004611833565b610d37565b34801561062357600080fd5b506102da60105481565b34801561063957600080fd5b506102da610648366004611725565b6001600160a01b03918216600090815260036020908152604080832093909416825291909152205490565b34801561067f57600080fd5b5061028f61068e3660046116eb565b610dfd565b34801561069f57600080fd5b5061028f6106ae3660046117f9565b610e48565b3480156106bf57600080fd5b5061028f6106ce3660046116eb565b610eca565b6060600580546106e290611b4f565b80601f016020809104026020016040519081016040528092919081815260200182805461070e90611b4f565b801561075b5780601f106107305761010080835404028352916020019161075b565b820191906000526020600020905b81548152906001019060200180831161073e57829003601f168201915b5050505050905090565b6000610772338484610fc0565b5060015b92915050565b6000546001600160a01b031633146107af5760405162461bcd60e51b81526004016107a690611906565b60405180910390fd5b600980546001600160a01b0319166001600160a01b0392909216919091179055565b60006107de8484846110e5565b610830843361082b85604051806060016040528060288152602001611c00602891396001600160a01b038a1660009081526003602090815260408083203384529091529020549190611416565b610fc0565b5060019392505050565b3360008181526003602090815260408083206001600160a01b0387168452909152812054909161077291859061082b9086610fb4565b6000546001600160a01b0316331461089a5760405162461bcd60e51b81526004016107a690611906565b6000819050806001600160a01b031663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b1580156108d857600080fd5b505afa1580156108ec573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109109190611708565b6001600160a01b031663c9c6539630836001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561095857600080fd5b505afa15801561096c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109909190611708565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381600087803b1580156109d857600080fd5b505af11580156109ec573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a109190611708565b600e80546001600160a01b039283166001600160a01b031991821617909155600d805493909216921691909117905550565b6000546001600160a01b03163314610a6c5760405162461bcd60e51b81526004016107a690611906565b6001600160a01b03166000908152600760205260409020805460ff19166001179055565b6000546001600160a01b03163314610aba5760405162461bcd60e51b81526004016107a690611906565b6001600160a01b03919091166000908152600860205260409020805460ff1916911515919091179055565b600080546001600160a01b03163314610b105760405162461bcd60e51b81526004016107a690611906565b60405163a9059cbb60e01b8152336004820152602481018390526001600160a01b0384169063a9059cbb90604401602060405180830381600087803b158015610b5857600080fd5b505af1158015610b6c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b909190611816565b9392505050565b6000546001600160a01b03163314610bc15760405162461bcd60e51b81526004016107a690611906565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6000546001600160a01b03163314610c355760405162461bcd60e51b81526004016107a690611906565b600b91909155600c55565b6060600680546106e290611b4f565b6000546001600160a01b03163314610c795760405162461bcd60e51b81526004016107a690611906565b610c856012600a611a6e565b610c8f9082611b19565b60105550565b6000610772338461082b85604051806060016040528060258152602001611c28602591393360009081526003602090815260408083206001600160a01b038d1684529091529020549190611416565b60006107723384846110e5565b6000546001600160a01b03163314610d1b5760405162461bcd60e51b81526004016107a690611906565b610d276012600a611a6e565b610d319082611b19565b600f5550565b6000546001600160a01b03163314610d615760405162461bcd60e51b81526004016107a690611906565b600080546040516001600160a01b039091169083908381818185875af1925050503d8060008114610dae576040519150601f19603f3d011682016040523d82523d6000602084013e610db3565b606091505b5050905080610df95760405162461bcd60e51b815260206004820152601260248201527108cc2d2d8cac840e8de40e6cadcc8408aa8960731b60448201526064016107a6565b5050565b6000546001600160a01b03163314610e275760405162461bcd60e51b81526004016107a690611906565b6001600160a01b03166000908152600760205260409020805460ff19169055565b6000546001600160a01b03163314610e725760405162461bcd60e51b81526004016107a690611906565b600e8054821515600160a81b0260ff60a81b199091161790556040517f4a4d2d81da99ab5c8fa132c1c87d7b3cd070a00ab9b3baef07d19c615b035aea90610ebf90831515815260200190565b60405180910390a150565b6000546001600160a01b03163314610ef45760405162461bcd60e51b81526004016107a690611906565b6001600160a01b038116610f595760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016107a6565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6000610b9082846119f1565b6001600160a01b0383166110225760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016107a6565b6001600160a01b0382166110835760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016107a6565b6001600160a01b0383811660008181526003602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b6001600160a01b03831661110b5760405162461bcd60e51b81526004016107a69061193b565b6001600160a01b0382166111315760405162461bcd60e51b81526004016107a6906118c3565b600081116111935760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b60648201526084016107a6565b6000546001600160a01b038481169116148015906111ba57506001600160a01b0382163014155b80156111d45750600a546001600160a01b03838116911614155b80156111ee5750600e546001600160a01b03838116911614155b15611289576001600160a01b03821660009081526002602090815260408083205460089092529091205460ff1680611231575060105461122e83836119f1565b11155b6112875760405162461bcd60e51b815260206004820152602160248201527f45524332303a2052656163686564206d61782077616c6c657420686f6c64696e6044820152606760f81b60648201526084016107a6565b505b30600090815260026020526040902054600f54811080159081906112b75750600e54600160a01b900460ff16155b80156112d15750600e546001600160a01b03868116911614155b80156112e65750600e54600160a81b900460ff165b1561131a57600f54600e805460ff60a01b1916600160a01b179055915061130c82611442565b600e805460ff60a01b191690555b6001600160a01b03851660009081526007602052604090205460ff168061135957506001600160a01b03841660009081526007602052604090205460ff165b1561136e5761136985858561144e565b61140f565b600e546001600160a01b03868116911614156113d15760006113a76103e86113a1600b548761155a90919063ffffffff16565b90611566565b90506113b38482611572565b93506113c086308361144e565b6113cb86868661144e565b5061140f565b600e546001600160a01b03858116911614156114045760006113a76103e86113a1600c548761155a90919063ffffffff16565b61140f85858561144e565b5050505050565b6000818484111561143a5760405162461bcd60e51b81526004016107a6919061186e565b505050900390565b61144b8161157e565b50565b6001600160a01b0383166114745760405162461bcd60e51b81526004016107a69061193b565b6001600160a01b03821661149a5760405162461bcd60e51b81526004016107a6906118c3565b6114d781604051806060016040528060268152602001611bda602691396001600160a01b0386166000908152600260205260409020549190611416565b6001600160a01b0380851660009081526002602052604080822093909355908416815220546115069082610fb4565b6001600160a01b0380841660008181526002602052604090819020939093559151908516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906110d89085815260200190565b6000610b908284611b19565b6000610b908284611a09565b6000610b908284611b38565b60408051600280825260608201835260009260208301908036833701905050905030816000815181106115b3576115b3611ba0565b6001600160a01b03928316602091820292909201810191909152600d54604080516315ab88c960e31b81529051919093169263ad5c4648926004808301939192829003018186803b15801561160757600080fd5b505afa15801561161b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061163f9190611708565b8160018151811061165257611652611ba0565b6001600160a01b039283166020918202929092010152600d546116789130911684610fc0565b600d5460095460405163791ac94760e01b81526001600160a01b039283169263791ac947926116b592879260009288929116904290600401611980565b600060405180830381600087803b1580156116cf57600080fd5b505af11580156116e3573d6000803e3d6000fd5b505050505050565b6000602082840312156116fd57600080fd5b8135610b9081611bb6565b60006020828403121561171a57600080fd5b8151610b9081611bb6565b6000806040838503121561173857600080fd5b823561174381611bb6565b9150602083013561175381611bb6565b809150509250929050565b60008060006060848603121561177357600080fd5b833561177e81611bb6565b9250602084013561178e81611bb6565b929592945050506040919091013590565b600080604083850312156117b257600080fd5b82356117bd81611bb6565b9150602083013561175381611bcb565b600080604083850312156117e057600080fd5b82356117eb81611bb6565b946020939093013593505050565b60006020828403121561180b57600080fd5b8135610b9081611bcb565b60006020828403121561182857600080fd5b8151610b9081611bcb565b60006020828403121561184557600080fd5b5035919050565b6000806040838503121561185f57600080fd5b50508035926020909101359150565b600060208083528351808285015260005b8181101561189b5785810183015185820160400152820161187f565b818111156118ad576000604083870101525b50601f01601f1916929092016040019392505050565b60208082526023908201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260408201526265737360e81b606082015260800190565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b60208082526025908201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604082015264647265737360d81b606082015260800190565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b818110156119d05784516001600160a01b0316835293830193918301916001016119ab565b50506001600160a01b03969096166060850152505050608001529392505050565b60008219821115611a0457611a04611b8a565b500190565b600082611a2657634e487b7160e01b600052601260045260246000fd5b500490565b600181815b80851115611a66578160001904821115611a4c57611a4c611b8a565b80851615611a5957918102915b93841c9390800290611a30565b509250929050565b6000610b9060ff841683600082611a8757506001610776565b81611a9457506000610776565b8160018114611aaa5760028114611ab457611ad0565b6001915050610776565b60ff841115611ac557611ac5611b8a565b50506001821b610776565b5060208310610133831016604e8410600b8410161715611af3575081810a610776565b611afd8383611a2b565b8060001904821115611b1157611b11611b8a565b029392505050565b6000816000190483118215151615611b3357611b33611b8a565b500290565b600082821015611b4a57611b4a611b8a565b500390565b600181811c90821680611b6357607f821691505b60208210811415611b8457634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b6001600160a01b038116811461144b57600080fd5b801515811461144b57600080fdfe45524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220eaf0286c04270a28a9c31252748e55c0a2b715978088deaf3d49d053c4920f6964736f6c63430008070033
Deployed Bytecode
0x6080604052600436106102085760003560e01c80636af6592911610118578063a9059cbb116100a0578063d4a5af841161006f578063d4a5af8414610617578063dd62ed3e1461062d578063ea2f0b3714610673578063ea50cf4e14610693578063f2fde38b146106b357600080fd5b8063a9059cbb146105a1578063ad04455e146105c1578063c9cf7789146105e1578063caea37b7146105f757600080fd5b80637bc4c447116100e75780637bc4c4471461050e5780638da5cb5b1461052e57806395d89b411461054c5780639d51d9b714610561578063a457c2d71461058157600080fd5b80636af659291461046a5780636dd3d39f1461048a57806370a08231146104c3578063715018a6146104f957600080fd5b80633d0dbec01161019b57806349bd5a5e1161016a57806349bd5a5e146103c55780635342acb4146103e557806353cae9cf1461041e5780635d729d8c14610434578063620158521461045457600080fd5b80633d0dbec01461034457806341cb87fc14610365578063437823ec1461038557806348eb61b6146103a557600080fd5b806318160ddd116101d757806318160ddd146102c957806323b872dd146102e8578063313ce56714610308578063395093511461032457600080fd5b806306fdde0314610214578063095ea7b31461023f578063120a06121461026f5780631694505e1461029157600080fd5b3661020f57005b600080fd5b34801561022057600080fd5b506102296106d3565b604051610236919061186e565b60405180910390f35b34801561024b57600080fd5b5061025f61025a3660046117cd565b610765565b6040519015158152602001610236565b34801561027b57600080fd5b5061028f61028a3660046116eb565b61077c565b005b34801561029d57600080fd5b50600d546102b1906001600160a01b031681565b6040516001600160a01b039091168152602001610236565b3480156102d557600080fd5b506004545b604051908152602001610236565b3480156102f457600080fd5b5061025f61030336600461175e565b6107d1565b34801561031457600080fd5b5060405160128152602001610236565b34801561033057600080fd5b5061025f61033f3660046117cd565b61083a565b34801561035057600080fd5b50600e5461025f90600160a81b900460ff1681565b34801561037157600080fd5b5061028f6103803660046116eb565b610870565b34801561039157600080fd5b5061028f6103a03660046116eb565b610a42565b3480156103b157600080fd5b5061028f6103c036600461179f565b610a90565b3480156103d157600080fd5b50600e546102b1906001600160a01b031681565b3480156103f157600080fd5b5061025f6104003660046116eb565b6001600160a01b031660009081526007602052604090205460ff1690565b34801561042a57600080fd5b506102da600f5481565b34801561044057600080fd5b5061025f61044f3660046117cd565b610ae5565b34801561046057600080fd5b506102da600b5481565b34801561047657600080fd5b506009546102b1906001600160a01b031681565b34801561049657600080fd5b5061025f6104a53660046116eb565b6001600160a01b031660009081526008602052604090205460ff1690565b3480156104cf57600080fd5b506102da6104de3660046116eb565b6001600160a01b031660009081526002602052604090205490565b34801561050557600080fd5b5061028f610b97565b34801561051a57600080fd5b5061028f61052936600461184c565b610c0b565b34801561053a57600080fd5b506000546001600160a01b03166102b1565b34801561055857600080fd5b50610229610c40565b34801561056d57600080fd5b5061028f61057c366004611833565b610c4f565b34801561058d57600080fd5b5061025f61059c3660046117cd565b610c95565b3480156105ad57600080fd5b5061025f6105bc3660046117cd565b610ce4565b3480156105cd57600080fd5b5061028f6105dc366004611833565b610cf1565b3480156105ed57600080fd5b506102da600c5481565b34801561060357600080fd5b5061028f610612366004611833565b610d37565b34801561062357600080fd5b506102da60105481565b34801561063957600080fd5b506102da610648366004611725565b6001600160a01b03918216600090815260036020908152604080832093909416825291909152205490565b34801561067f57600080fd5b5061028f61068e3660046116eb565b610dfd565b34801561069f57600080fd5b5061028f6106ae3660046117f9565b610e48565b3480156106bf57600080fd5b5061028f6106ce3660046116eb565b610eca565b6060600580546106e290611b4f565b80601f016020809104026020016040519081016040528092919081815260200182805461070e90611b4f565b801561075b5780601f106107305761010080835404028352916020019161075b565b820191906000526020600020905b81548152906001019060200180831161073e57829003601f168201915b5050505050905090565b6000610772338484610fc0565b5060015b92915050565b6000546001600160a01b031633146107af5760405162461bcd60e51b81526004016107a690611906565b60405180910390fd5b600980546001600160a01b0319166001600160a01b0392909216919091179055565b60006107de8484846110e5565b610830843361082b85604051806060016040528060288152602001611c00602891396001600160a01b038a1660009081526003602090815260408083203384529091529020549190611416565b610fc0565b5060019392505050565b3360008181526003602090815260408083206001600160a01b0387168452909152812054909161077291859061082b9086610fb4565b6000546001600160a01b0316331461089a5760405162461bcd60e51b81526004016107a690611906565b6000819050806001600160a01b031663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b1580156108d857600080fd5b505afa1580156108ec573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109109190611708565b6001600160a01b031663c9c6539630836001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561095857600080fd5b505afa15801561096c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109909190611708565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381600087803b1580156109d857600080fd5b505af11580156109ec573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a109190611708565b600e80546001600160a01b039283166001600160a01b031991821617909155600d805493909216921691909117905550565b6000546001600160a01b03163314610a6c5760405162461bcd60e51b81526004016107a690611906565b6001600160a01b03166000908152600760205260409020805460ff19166001179055565b6000546001600160a01b03163314610aba5760405162461bcd60e51b81526004016107a690611906565b6001600160a01b03919091166000908152600860205260409020805460ff1916911515919091179055565b600080546001600160a01b03163314610b105760405162461bcd60e51b81526004016107a690611906565b60405163a9059cbb60e01b8152336004820152602481018390526001600160a01b0384169063a9059cbb90604401602060405180830381600087803b158015610b5857600080fd5b505af1158015610b6c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b909190611816565b9392505050565b6000546001600160a01b03163314610bc15760405162461bcd60e51b81526004016107a690611906565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6000546001600160a01b03163314610c355760405162461bcd60e51b81526004016107a690611906565b600b91909155600c55565b6060600680546106e290611b4f565b6000546001600160a01b03163314610c795760405162461bcd60e51b81526004016107a690611906565b610c856012600a611a6e565b610c8f9082611b19565b60105550565b6000610772338461082b85604051806060016040528060258152602001611c28602591393360009081526003602090815260408083206001600160a01b038d1684529091529020549190611416565b60006107723384846110e5565b6000546001600160a01b03163314610d1b5760405162461bcd60e51b81526004016107a690611906565b610d276012600a611a6e565b610d319082611b19565b600f5550565b6000546001600160a01b03163314610d615760405162461bcd60e51b81526004016107a690611906565b600080546040516001600160a01b039091169083908381818185875af1925050503d8060008114610dae576040519150601f19603f3d011682016040523d82523d6000602084013e610db3565b606091505b5050905080610df95760405162461bcd60e51b815260206004820152601260248201527108cc2d2d8cac840e8de40e6cadcc8408aa8960731b60448201526064016107a6565b5050565b6000546001600160a01b03163314610e275760405162461bcd60e51b81526004016107a690611906565b6001600160a01b03166000908152600760205260409020805460ff19169055565b6000546001600160a01b03163314610e725760405162461bcd60e51b81526004016107a690611906565b600e8054821515600160a81b0260ff60a81b199091161790556040517f4a4d2d81da99ab5c8fa132c1c87d7b3cd070a00ab9b3baef07d19c615b035aea90610ebf90831515815260200190565b60405180910390a150565b6000546001600160a01b03163314610ef45760405162461bcd60e51b81526004016107a690611906565b6001600160a01b038116610f595760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016107a6565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6000610b9082846119f1565b6001600160a01b0383166110225760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016107a6565b6001600160a01b0382166110835760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016107a6565b6001600160a01b0383811660008181526003602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b6001600160a01b03831661110b5760405162461bcd60e51b81526004016107a69061193b565b6001600160a01b0382166111315760405162461bcd60e51b81526004016107a6906118c3565b600081116111935760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b60648201526084016107a6565b6000546001600160a01b038481169116148015906111ba57506001600160a01b0382163014155b80156111d45750600a546001600160a01b03838116911614155b80156111ee5750600e546001600160a01b03838116911614155b15611289576001600160a01b03821660009081526002602090815260408083205460089092529091205460ff1680611231575060105461122e83836119f1565b11155b6112875760405162461bcd60e51b815260206004820152602160248201527f45524332303a2052656163686564206d61782077616c6c657420686f6c64696e6044820152606760f81b60648201526084016107a6565b505b30600090815260026020526040902054600f54811080159081906112b75750600e54600160a01b900460ff16155b80156112d15750600e546001600160a01b03868116911614155b80156112e65750600e54600160a81b900460ff165b1561131a57600f54600e805460ff60a01b1916600160a01b179055915061130c82611442565b600e805460ff60a01b191690555b6001600160a01b03851660009081526007602052604090205460ff168061135957506001600160a01b03841660009081526007602052604090205460ff165b1561136e5761136985858561144e565b61140f565b600e546001600160a01b03868116911614156113d15760006113a76103e86113a1600b548761155a90919063ffffffff16565b90611566565b90506113b38482611572565b93506113c086308361144e565b6113cb86868661144e565b5061140f565b600e546001600160a01b03858116911614156114045760006113a76103e86113a1600c548761155a90919063ffffffff16565b61140f85858561144e565b5050505050565b6000818484111561143a5760405162461bcd60e51b81526004016107a6919061186e565b505050900390565b61144b8161157e565b50565b6001600160a01b0383166114745760405162461bcd60e51b81526004016107a69061193b565b6001600160a01b03821661149a5760405162461bcd60e51b81526004016107a6906118c3565b6114d781604051806060016040528060268152602001611bda602691396001600160a01b0386166000908152600260205260409020549190611416565b6001600160a01b0380851660009081526002602052604080822093909355908416815220546115069082610fb4565b6001600160a01b0380841660008181526002602052604090819020939093559151908516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906110d89085815260200190565b6000610b908284611b19565b6000610b908284611a09565b6000610b908284611b38565b60408051600280825260608201835260009260208301908036833701905050905030816000815181106115b3576115b3611ba0565b6001600160a01b03928316602091820292909201810191909152600d54604080516315ab88c960e31b81529051919093169263ad5c4648926004808301939192829003018186803b15801561160757600080fd5b505afa15801561161b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061163f9190611708565b8160018151811061165257611652611ba0565b6001600160a01b039283166020918202929092010152600d546116789130911684610fc0565b600d5460095460405163791ac94760e01b81526001600160a01b039283169263791ac947926116b592879260009288929116904290600401611980565b600060405180830381600087803b1580156116cf57600080fd5b505af11580156116e3573d6000803e3d6000fd5b505050505050565b6000602082840312156116fd57600080fd5b8135610b9081611bb6565b60006020828403121561171a57600080fd5b8151610b9081611bb6565b6000806040838503121561173857600080fd5b823561174381611bb6565b9150602083013561175381611bb6565b809150509250929050565b60008060006060848603121561177357600080fd5b833561177e81611bb6565b9250602084013561178e81611bb6565b929592945050506040919091013590565b600080604083850312156117b257600080fd5b82356117bd81611bb6565b9150602083013561175381611bcb565b600080604083850312156117e057600080fd5b82356117eb81611bb6565b946020939093013593505050565b60006020828403121561180b57600080fd5b8135610b9081611bcb565b60006020828403121561182857600080fd5b8151610b9081611bcb565b60006020828403121561184557600080fd5b5035919050565b6000806040838503121561185f57600080fd5b50508035926020909101359150565b600060208083528351808285015260005b8181101561189b5785810183015185820160400152820161187f565b818111156118ad576000604083870101525b50601f01601f1916929092016040019392505050565b60208082526023908201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260408201526265737360e81b606082015260800190565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b60208082526025908201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604082015264647265737360d81b606082015260800190565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b818110156119d05784516001600160a01b0316835293830193918301916001016119ab565b50506001600160a01b03969096166060850152505050608001529392505050565b60008219821115611a0457611a04611b8a565b500190565b600082611a2657634e487b7160e01b600052601260045260246000fd5b500490565b600181815b80851115611a66578160001904821115611a4c57611a4c611b8a565b80851615611a5957918102915b93841c9390800290611a30565b509250929050565b6000610b9060ff841683600082611a8757506001610776565b81611a9457506000610776565b8160018114611aaa5760028114611ab457611ad0565b6001915050610776565b60ff841115611ac557611ac5611b8a565b50506001821b610776565b5060208310610133831016604e8410600b8410161715611af3575081810a610776565b611afd8383611a2b565b8060001904821115611b1157611b11611b8a565b029392505050565b6000816000190483118215151615611b3357611b33611b8a565b500290565b600082821015611b4a57611b4a611b8a565b500390565b600181811c90821680611b6357607f821691505b60208210811415611b8457634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b6001600160a01b038116811461144b57600080fd5b801515811461144b57600080fdfe45524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220eaf0286c04270a28a9c31252748e55c0a2b715978088deaf3d49d053c4920f6964736f6c63430008070033
Deployed Bytecode Sourcemap
30806:8855:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11117:116;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13754:193;;;;;;;;;;-1:-1:-1;13754:193:0;;;;;:::i;:::-;;:::i;:::-;;;4188:14:1;;4181:22;4163:41;;4151:2;4136:18;13754:193:0;4023:187:1;34324:117:0;;;;;;;;;;-1:-1:-1;34324:117:0;;;;;:::i;:::-;;:::i;:::-;;31314:41;;;;;;;;;;-1:-1:-1;31314:41:0;;;;-1:-1:-1;;;;;31314:41:0;;;;;;-1:-1:-1;;;;;3391:32:1;;;3373:51;;3361:2;3346:18;31314:41:0;3227:203:1;12452:124:0;;;;;;;;;;-1:-1:-1;12548:12:0;;12452:124;;;8743:25:1;;;8731:2;8716:18;12452:124:0;8597:177:1;14529:419:0;;;;;;;;;;-1:-1:-1;14529:419:0;;;;;:::i;:::-;;:::i;12248:109::-;;;;;;;;;;-1:-1:-1;12248:109:0;;12339:2;9906:36:1;;9894:2;9879:18;12248:109:0;9764:184:1;15450:242:0;;;;;;;;;;-1:-1:-1;15450:242:0;;;;;:::i;:::-;;:::i;31449:40::-;;;;;;;;;;-1:-1:-1;31449:40:0;;;;-1:-1:-1;;;31449:40:0;;;;;;34818:350;;;;;;;;;;-1:-1:-1;34818:350:0;;;;;:::i;:::-;;:::i;33488:127::-;;;;;;;;;;-1:-1:-1;33488:127:0;;;;;:::i;:::-;;:::i;33786:159::-;;;;;;;;;;-1:-1:-1;33786:159:0;;;;;:::i;:::-;;:::i;31370:28::-;;;;;;;;;;-1:-1:-1;31370:28:0;;;;-1:-1:-1;;;;;31370:28:0;;;36104:139;;;;;;;;;;-1:-1:-1;36104:139:0;;;;;:::i;:::-;-1:-1:-1;;;;;36200:27:0;36168:4;36200:27;;;:18;:27;;;;;;;;;36104:139;31504:38;;;;;;;;;;;;;;;;35881:197;;;;;;;;;;-1:-1:-1;35881:197:0;;;;;:::i;:::-;;:::i;31193:29::-;;;;;;;;;;;;;;;;31082:27;;;;;;;;;;-1:-1:-1;31082:27:0;;;;-1:-1:-1;;;;;31082:27:0;;;33961:150;;;;;;;;;;-1:-1:-1;33961:150:0;;;;;:::i;:::-;-1:-1:-1;;;;;34062:33:0;34031:4;34062:33;;;:24;:33;;;;;;;;;33961:150;12669:143;;;;;;;;;;-1:-1:-1;12669:143:0;;;;;:::i;:::-;-1:-1:-1;;;;;12778:18:0;12743:7;12778:18;;;:9;:18;;;;;;;12669:143;9102:172;;;;;;;;;;;;;:::i;34127:181::-;;;;;;;;;;-1:-1:-1;34127:181:0;;;;;:::i;:::-;;:::i;8799:103::-;;;;;;;;;;-1:-1:-1;8845:7:0;8880:6;-1:-1:-1;;;;;8880:6:0;8799:103;;11389:120;;;;;;;;;;;;;:::i;34643:159::-;;;;;;;;;;-1:-1:-1;34643:159:0;;;;;:::i;:::-;;:::i;16302:293::-;;;;;;;;;;-1:-1:-1;16302:293:0;;;;;:::i;:::-;;:::i;13090:199::-;;;;;;;;;;-1:-1:-1;13090:199:0;;;;;:::i;:::-;;:::i;34469:158::-;;;;;;;;;;-1:-1:-1;34469:158:0;;;;;:::i;:::-;;:::i;31266:31::-;;;;;;;;;;;;;;;;35559:266;;;;;;;;;;-1:-1:-1;35559:266:0;;;;;:::i;:::-;;:::i;31557:32::-;;;;;;;;;;;;;;;;13382:167;;;;;;;;;;-1:-1:-1;13382:167:0;;;;;:::i;:::-;-1:-1:-1;;;;;13506:18:0;;;13471:7;13506:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;13382:167;33643:126;;;;;;;;;;-1:-1:-1;33643:126:0;;;;;:::i;:::-;;:::i;35184:197::-;;;;;;;;;;-1:-1:-1;35184:197:0;;;;;:::i;:::-;;:::i;9292:276::-;;;;;;;;;;-1:-1:-1;9292:276:0;;;;;:::i;:::-;;:::i;11117:116::-;11171:13;11212:5;11205:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11117:116;:::o;13754:193::-;13837:4;13862:39;4225:10;13885:7;13894:6;13862:8;:39::i;:::-;-1:-1:-1;13927:4:0;13754:193;;;;;:::o;34324:117::-;8845:7;8880:6;-1:-1:-1;;;;;8880:6:0;4225:10;8978:23;8970:68;;;;-1:-1:-1;;;8970:68:0;;;;;;;:::i;:::-;;;;;;;;;34406:11:::1;:19:::0;;-1:-1:-1;;;;;;34406:19:0::1;-1:-1:-1::0;;;;;34406:19:0;;;::::1;::::0;;;::::1;::::0;;34324:117::o;14529:419::-;14701:4;14726:36;14736:6;14744:9;14755:6;14726:9;:36::i;:::-;14781:121;14790:6;4225:10;14812:89;14850:6;14812:89;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;14812:19:0;;;;;;:11;:19;;;;;;;;4225:10;14812:33;;;;;;;;;;:37;:89::i;:::-;14781:8;:121::i;:::-;-1:-1:-1;14928:4:0;14529:419;;;;;:::o;15450:242::-;4225:10;15538:4;15595:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;15595:34:0;;;;;;;;;;15538:4;;15563:83;;15586:7;;15595:50;;15634:10;15595:38;:50::i;34818:350::-;8845:7;8880:6;-1:-1:-1;;;;;8880:6:0;4225:10;8978:23;8970:68;;;;-1:-1:-1;;;8970:68:0;;;;;;;:::i;:::-;34901:35:::1;34958:9;34901:67;;35021:16;-1:-1:-1::0;;;;;35021:24:0::1;;:26;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;35003:56:0::1;;35068:4;35075:16;-1:-1:-1::0;;;;;35075:21:0::1;;:23;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;35003:96;::::0;-1:-1:-1;;;;;;35003:96:0::1;::::0;;;;;;-1:-1:-1;;;;;3665:15:1;;;35003:96:0::1;::::0;::::1;3647:34:1::0;3717:15;;3697:18;;;3690:43;3582:18;;35003:96:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;34987:13;:112:::0;;-1:-1:-1;;;;;34987:112:0;;::::1;-1:-1:-1::0;;;;;;34987:112:0;;::::1;;::::0;;;35118:15:::1;:34:::0;;;;;::::1;::::0;::::1;::::0;;;::::1;::::0;;-1:-1:-1;34818:350:0:o;33488:127::-;8845:7;8880:6;-1:-1:-1;;;;;8880:6:0;4225:10;8978:23;8970:68;;;;-1:-1:-1;;;8970:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;33565:27:0::1;;::::0;;;:18:::1;:27;::::0;;;;:34;;-1:-1:-1;;33565:34:0::1;33595:4;33565:34;::::0;;33488:127::o;33786:159::-;8845:7;8880:6;-1:-1:-1;;;;;8880:6:0;4225:10;8978:23;8970:68;;;;-1:-1:-1;;;8970:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;33888:33:0;;;::::1;;::::0;;;:24:::1;:33;::::0;;;;:41;;-1:-1:-1;;33888:41:0::1;::::0;::::1;;::::0;;;::::1;::::0;;33786:159::o;35881:197::-;35978:12;8880:6;;-1:-1:-1;;;;;8880:6:0;4225:10;8978:23;8970:68;;;;-1:-1:-1;;;8970:68:0;;;;;;;:::i;:::-;36013:49:::1;::::0;-1:-1:-1;;;36013:49:0;;36043:10:::1;36013:49;::::0;::::1;3918:51:1::0;3985:18;;;3978:34;;;-1:-1:-1;;;;;36013:29:0;::::1;::::0;::::1;::::0;3891:18:1;;36013:49:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;36006:56:::0;35881:197;-1:-1:-1;;;35881:197:0:o;9102:172::-;8845:7;8880:6;-1:-1:-1;;;;;8880:6:0;4225:10;8978:23;8970:68;;;;-1:-1:-1;;;8970:68:0;;;;;;;:::i;:::-;9217:1:::1;9201:6:::0;;9180:40:::1;::::0;-1:-1:-1;;;;;9201:6:0;;::::1;::::0;9180:40:::1;::::0;9217:1;;9180:40:::1;9256:1;9239:19:::0;;-1:-1:-1;;;;;;9239:19:0::1;::::0;;9102:172::o;34127:181::-;8845:7;8880:6;-1:-1:-1;;;;;8880:6:0;4225:10;8978:23;8970:68;;;;-1:-1:-1;;;8970:68:0;;;;;;;:::i;:::-;34231:10:::1;:19:::0;;;;34269:11:::1;:21:::0;34127:181::o;11389:120::-;11445:13;11486:7;11479:14;;;;;:::i;34643:159::-;8845:7;8880:6;-1:-1:-1;;;;;8880:6:0;4225:10;8978:23;8970:68;;;;-1:-1:-1;;;8970:68:0;;;;;;;:::i;:::-;34771:15:::1;12339:2:::0;34771::::1;:15;:::i;:::-;34751:35;::::0;:17;:35:::1;:::i;:::-;34731:17;:55:::0;-1:-1:-1;34643:159:0:o;16302:293::-;16395:4;16420:129;4225:10;16443:7;16452:96;16491:15;16452:96;;;;;;;;;;;;;;;;;4225:10;16452:25;;;;:11;:25;;;;;;;;-1:-1:-1;;;;;16452:34:0;;;;;;;;;;;;:38;:96::i;13090:199::-;13176:4;13201:42;4225:10;13225:9;13236:6;13201:9;:42::i;34469:158::-;8845:7;8880:6;-1:-1:-1;;;;;8880:6:0;4225:10;8978:23;8970:68;;;;-1:-1:-1;;;8970:68:0;;;;;;;:::i;:::-;34595:16:::1;12339:2:::0;34595::::1;:16;:::i;:::-;34586:25;::::0;:6;:25:::1;:::i;:::-;34560:23;:51:::0;-1:-1:-1;34469:158:0:o;35559:266::-;8845:7;8880:6;-1:-1:-1;;;;;8880:6:0;4225:10;8978:23;8970:68;;;;-1:-1:-1;;;8970:68:0;;;;;;;:::i;:::-;35707:9:::1;35721:6:::0;;:30:::1;::::0;-1:-1:-1;;;;;35721:6:0;;::::1;::::0;35740;;35707:9;35721:30;35707:9;35721:30;35740:6;35721;:30:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;35706:45;;;35778:4;35770:35;;;::::0;-1:-1:-1;;;35770:35:0;;7239:2:1;35770:35:0::1;::::0;::::1;7221:21:1::0;7278:2;7258:18;;;7251:30;-1:-1:-1;;;7297:18:1;;;7290:48;7355:18;;35770:35:0::1;7037:342:1::0;35770:35:0::1;35620:205;35559:266:::0;:::o;33643:126::-;8845:7;8880:6;-1:-1:-1;;;;;8880:6:0;4225:10;8978:23;8970:68;;;;-1:-1:-1;;;8970:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;33718:27:0::1;33748:5;33718:27:::0;;;:18:::1;:27;::::0;;;;:35;;-1:-1:-1;;33718:35:0::1;::::0;;33643:126::o;35184:197::-;8845:7;8880:6;-1:-1:-1;;;;;8880:6:0;4225:10;8978:23;8970:68;;;;-1:-1:-1;;;8970:68:0;;;;;;;:::i;:::-;35271:21:::1;:32:::0;;;::::1;;-1:-1:-1::0;;;35271:32:0::1;-1:-1:-1::0;;;;35271:32:0;;::::1;;::::0;;35327:38:::1;::::0;::::1;::::0;::::1;::::0;35295:8;4188:14:1;4181:22;4163:41;;4151:2;4136:18;;4023:187;35327:38:0::1;;;;;;;;35184:197:::0;:::o;9292:276::-;8845:7;8880:6;-1:-1:-1;;;;;8880:6:0;4225:10;8978:23;8970:68;;;;-1:-1:-1;;;8970:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;9389:22:0;::::1;9381:73;;;::::0;-1:-1:-1;;;9381:73:0;;5658:2:1;9381:73:0::1;::::0;::::1;5640:21:1::0;5697:2;5677:18;;;5670:30;5736:34;5716:18;;;5709:62;-1:-1:-1;;;5787:18:1;;;5780:36;5833:19;;9381:73:0::1;5456:402:1::0;9381:73:0::1;9499:6;::::0;;9478:38:::1;::::0;-1:-1:-1;;;;;9478:38:0;;::::1;::::0;9499:6;::::1;::::0;9478:38:::1;::::0;::::1;9535:6;:17:::0;;-1:-1:-1;;;;;;9535:17:0::1;-1:-1:-1::0;;;;;9535:17:0;;;::::1;::::0;;;::::1;::::0;;9292:276::o;2601:114::-;2659:7;2694:5;2698:1;2694;:5;:::i;20061:452::-;-1:-1:-1;;;;;20237:19:0;;20229:68;;;;-1:-1:-1;;;20229:68:0;;8394:2:1;20229:68:0;;;8376:21:1;8433:2;8413:18;;;8406:30;8472:34;8452:18;;;8445:62;-1:-1:-1;;;8523:18:1;;;8516:34;8567:19;;20229:68:0;8192:400:1;20229:68:0;-1:-1:-1;;;;;20324:21:0;;20316:68;;;;-1:-1:-1;;;20316:68:0;;6065:2:1;20316:68:0;;;6047:21:1;6104:2;6084:18;;;6077:30;6143:34;6123:18;;;6116:62;-1:-1:-1;;;6194:18:1;;;6187:32;6236:19;;20316:68:0;5863:398:1;20316:68:0;-1:-1:-1;;;;;20405:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;20465:32;;8743:25:1;;;20465:32:0;;8716:18:1;20465:32:0;;;;;;;;20061:452;;;:::o;36259:2600::-;-1:-1:-1;;;;;36430:18:0;;36422:68;;;;-1:-1:-1;;;36422:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;36517:16:0;;36509:64;;;;-1:-1:-1;;;36509:64:0;;;;;;;:::i;:::-;36609:1;36600:6;:10;36592:64;;;;-1:-1:-1;;;36592:64:0;;6829:2:1;36592:64:0;;;6811:21:1;6868:2;6848:18;;;6841:30;6907:34;6887:18;;;6880:62;-1:-1:-1;;;6958:18:1;;;6951:39;7007:19;;36592:64:0;6627:405:1;36592:64:0;8845:7;8880:6;-1:-1:-1;;;;;36719:15:0;;;8880:6;;36719:15;;;;:59;;-1:-1:-1;;;;;;36759:19:0;;36773:4;36759:19;;36719:59;:102;;;;-1:-1:-1;36809:12:0;;-1:-1:-1;;;;;36803:18:0;;;36809:12;;36803:18;;36719:102;:146;;;;-1:-1:-1;36852:13:0;;-1:-1:-1;;;;;36846:19:0;;;36852:13;;36846:19;;36719:146;36693:450;;;-1:-1:-1;;;;;12778:18:0;;36909:22;12778:18;;;:9;:18;;;;;;;;;36978:24;:28;;;;;;;;;;:78;;-1:-1:-1;37038:17:0;;37011:23;37028:6;37011:14;:23;:::i;:::-;:44;;36978:78;36970:153;;;;-1:-1:-1;;;36970:153:0;;7992:2:1;36970:153:0;;;7974:21:1;8031:2;8011:18;;;8004:30;8070:34;8050:18;;;8043:62;-1:-1:-1;;;8121:18:1;;;8114:31;8162:19;;36970:153:0;7790:397:1;36970:153:0;36886:257;36693:450;37212:4;37163:28;12778:18;;;:9;:18;;;;;;37289:23;;37265:47;;;;;;;37357:61;;-1:-1:-1;37402:16:0;;-1:-1:-1;;;37402:16:0;;;;37401:17;37357:61;:107;;;;-1:-1:-1;37451:13:0;;-1:-1:-1;;;;;37443:21:0;;;37451:13;;37443:21;;37357:107;:153;;;;-1:-1:-1;37489:21:0;;-1:-1:-1;;;37489:21:0;;;;37357:153;37331:434;;;37576:23;;37622:16;:23;;-1:-1:-1;;;;37622:23:0;-1:-1:-1;;;37622:23:0;;;37576;-1:-1:-1;37668:30:0;37576:23;37668:8;:30::i;:::-;37721:16;:24;;-1:-1:-1;;;;37721:24:0;;;37331:434;-1:-1:-1;;;;;37804:24:0;;;;;;:18;:24;;;;;;;;;:50;;-1:-1:-1;;;;;;37832:22:0;;;;;;:18;:22;;;;;;;;37804:50;37801:1027;;;37874:33;37890:4;37896:2;37900:6;37874:15;:33::i;:::-;37801:1027;;;37983:13;;-1:-1:-1;;;;;37975:21:0;;;37983:13;;37975:21;37971:838;;;38049:17;38069:32;38096:4;38069:22;38080:10;;38069:6;:10;;:22;;;;:::i;:::-;:26;;:32::i;:::-;38049:52;-1:-1:-1;38132:21:0;:6;38049:52;38132:10;:21::i;:::-;38124:29;;38176:47;38192:4;38206;38213:9;38176:15;:47::i;:::-;38246:33;38262:4;38268:2;38272:6;38246:15;:33::i;:::-;38019:284;37971:838;;;38341:13;;-1:-1:-1;;;;;38335:19:0;;;38341:13;;38335:19;38331:478;;;38408:17;38428:33;38456:4;38428:23;38439:11;;38428:6;:10;;:23;;;;:::i;38331:478::-;38752:33;38768:4;38774:2;38778:6;38752:15;:33::i;:::-;36403:2456;;36259:2600;;;:::o;3281:246::-;3367:7;3444:12;3436:6;;;;3428:29;;;;-1:-1:-1;;;3428:29:0;;;;;;;;:::i;:::-;-1:-1:-1;;;3487:5:0;;;3281:246::o;38875:141::-;38948:33;38965:15;38948:16;:33::i;:::-;38875:141;:::o;17192:661::-;-1:-1:-1;;;;;17372:20:0;;17364:70;;;;-1:-1:-1;;;17364:70:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;17461:23:0;;17453:71;;;;-1:-1:-1;;;17453:71:0;;;;;;;:::i;:::-;17633;17655:6;17633:71;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;17633:17:0;;;;;;:9;:17;;;;;;;:71;:21;:71::i;:::-;-1:-1:-1;;;;;17613:17:0;;;;;;;:9;:17;;;;;;:91;;;;17746:20;;;;;;;:32;;17771:6;17746:24;:32::i;:::-;-1:-1:-1;;;;;17723:20:0;;;;;;;:9;:20;;;;;;;:55;;;;17802:35;;;;;;;;;;17830:6;8743:25:1;;8731:2;8716:18;;8597:177;2865:114:0;2923:7;2958:5;2962:1;2958;:5;:::i;3007:114::-;3065:7;3100:5;3104:1;3100;:5;:::i;2733:114::-;2791:7;2826:5;2830:1;2826;:5;:::i;39051:593::-;39149:16;;;39163:1;39149:16;;;;;;;;39125:21;;39149:16;;;;;;;;;;-1:-1:-1;39149:16:0;39125:40;;39202:4;39184;39189:1;39184:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;39184:23:0;;;:7;;;;;;;;;;:23;;;;39236:15;;:22;;;-1:-1:-1;;;39236:22:0;;;;:15;;;;;:20;;:22;;;;;39184:7;;39236:22;;;;;:15;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;39226:4;39231:1;39226:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;39226:32:0;;;:7;;;;;;;;;:32;39309:15;;39277:62;;39294:4;;39309:15;39327:11;39277:8;:62::i;:::-;39358:15;;39560:11;;39358:270;;-1:-1:-1;;;39358:270:0;;-1:-1:-1;;;;;39358:15:0;;;;:66;;:270;;39447:11;;39358:15;;39533:4;;39560:11;;;39594:15;;39358:270;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;39106:538;39051:593;:::o;14:247:1:-;73:6;126:2;114:9;105:7;101:23;97:32;94:52;;;142:1;139;132:12;94:52;181:9;168:23;200:31;225:5;200:31;:::i;266:251::-;336:6;389:2;377:9;368:7;364:23;360:32;357:52;;;405:1;402;395:12;357:52;437:9;431:16;456:31;481:5;456:31;:::i;522:388::-;590:6;598;651:2;639:9;630:7;626:23;622:32;619:52;;;667:1;664;657:12;619:52;706:9;693:23;725:31;750:5;725:31;:::i;:::-;775:5;-1:-1:-1;832:2:1;817:18;;804:32;845:33;804:32;845:33;:::i;:::-;897:7;887:17;;;522:388;;;;;:::o;915:456::-;992:6;1000;1008;1061:2;1049:9;1040:7;1036:23;1032:32;1029:52;;;1077:1;1074;1067:12;1029:52;1116:9;1103:23;1135:31;1160:5;1135:31;:::i;:::-;1185:5;-1:-1:-1;1242:2:1;1227:18;;1214:32;1255:33;1214:32;1255:33;:::i;:::-;915:456;;1307:7;;-1:-1:-1;;;1361:2:1;1346:18;;;;1333:32;;915:456::o;1376:382::-;1441:6;1449;1502:2;1490:9;1481:7;1477:23;1473:32;1470:52;;;1518:1;1515;1508:12;1470:52;1557:9;1544:23;1576:31;1601:5;1576:31;:::i;:::-;1626:5;-1:-1:-1;1683:2:1;1668:18;;1655:32;1696:30;1655:32;1696:30;:::i;1763:315::-;1831:6;1839;1892:2;1880:9;1871:7;1867:23;1863:32;1860:52;;;1908:1;1905;1898:12;1860:52;1947:9;1934:23;1966:31;1991:5;1966:31;:::i;:::-;2016:5;2068:2;2053:18;;;;2040:32;;-1:-1:-1;;;1763:315:1:o;2083:241::-;2139:6;2192:2;2180:9;2171:7;2167:23;2163:32;2160:52;;;2208:1;2205;2198:12;2160:52;2247:9;2234:23;2266:28;2288:5;2266:28;:::i;2329:245::-;2396:6;2449:2;2437:9;2428:7;2424:23;2420:32;2417:52;;;2465:1;2462;2455:12;2417:52;2497:9;2491:16;2516:28;2538:5;2516:28;:::i;2579:180::-;2638:6;2691:2;2679:9;2670:7;2666:23;2662:32;2659:52;;;2707:1;2704;2697:12;2659:52;-1:-1:-1;2730:23:1;;2579:180;-1:-1:-1;2579:180:1:o;2764:248::-;2832:6;2840;2893:2;2881:9;2872:7;2868:23;2864:32;2861:52;;;2909:1;2906;2899:12;2861:52;-1:-1:-1;;2932:23:1;;;3002:2;2987:18;;;2974:32;;-1:-1:-1;2764:248:1:o;4450:597::-;4562:4;4591:2;4620;4609:9;4602:21;4652:6;4646:13;4695:6;4690:2;4679:9;4675:18;4668:34;4720:1;4730:140;4744:6;4741:1;4738:13;4730:140;;;4839:14;;;4835:23;;4829:30;4805:17;;;4824:2;4801:26;4794:66;4759:10;;4730:140;;;4888:6;4885:1;4882:13;4879:91;;;4958:1;4953:2;4944:6;4933:9;4929:22;4925:31;4918:42;4879:91;-1:-1:-1;5031:2:1;5010:15;-1:-1:-1;;5006:29:1;4991:45;;;;5038:2;4987:54;;4450:597;-1:-1:-1;;;4450:597:1:o;5052:399::-;5254:2;5236:21;;;5293:2;5273:18;;;5266:30;5332:34;5327:2;5312:18;;5305:62;-1:-1:-1;;;5398:2:1;5383:18;;5376:33;5441:3;5426:19;;5052:399::o;6266:356::-;6468:2;6450:21;;;6487:18;;;6480:30;6546:34;6541:2;6526:18;;6519:62;6613:2;6598:18;;6266:356::o;7384:401::-;7586:2;7568:21;;;7625:2;7605:18;;;7598:30;7664:34;7659:2;7644:18;;7637:62;-1:-1:-1;;;7730:2:1;7715:18;;7708:35;7775:3;7760:19;;7384:401::o;8779:980::-;9041:4;9089:3;9078:9;9074:19;9120:6;9109:9;9102:25;9146:2;9184:6;9179:2;9168:9;9164:18;9157:34;9227:3;9222:2;9211:9;9207:18;9200:31;9251:6;9286;9280:13;9317:6;9309;9302:22;9355:3;9344:9;9340:19;9333:26;;9394:2;9386:6;9382:15;9368:29;;9415:1;9425:195;9439:6;9436:1;9433:13;9425:195;;;9504:13;;-1:-1:-1;;;;;9500:39:1;9488:52;;9595:15;;;;9560:12;;;;9536:1;9454:9;9425:195;;;-1:-1:-1;;;;;;;9676:32:1;;;;9671:2;9656:18;;9649:60;-1:-1:-1;;;9740:3:1;9725:19;9718:35;9637:3;8779:980;-1:-1:-1;;;8779:980:1:o;9953:128::-;9993:3;10024:1;10020:6;10017:1;10014:13;10011:39;;;10030:18;;:::i;:::-;-1:-1:-1;10066:9:1;;9953:128::o;10086:217::-;10126:1;10152;10142:132;;10196:10;10191:3;10187:20;10184:1;10177:31;10231:4;10228:1;10221:15;10259:4;10256:1;10249:15;10142:132;-1:-1:-1;10288:9:1;;10086:217::o;10308:422::-;10397:1;10440:5;10397:1;10454:270;10475:7;10465:8;10462:21;10454:270;;;10534:4;10530:1;10526:6;10522:17;10516:4;10513:27;10510:53;;;10543:18;;:::i;:::-;10593:7;10583:8;10579:22;10576:55;;;10613:16;;;;10576:55;10692:22;;;;10652:15;;;;10454:270;;;10458:3;10308:422;;;;;:::o;10735:140::-;10793:5;10822:47;10863:4;10853:8;10849:19;10843:4;10929:5;10959:8;10949:80;;-1:-1:-1;11000:1:1;11014:5;;10949:80;11048:4;11038:76;;-1:-1:-1;11085:1:1;11099:5;;11038:76;11130:4;11148:1;11143:59;;;;11216:1;11211:130;;;;11123:218;;11143:59;11173:1;11164:10;;11187:5;;;11211:130;11248:3;11238:8;11235:17;11232:43;;;11255:18;;:::i;:::-;-1:-1:-1;;11311:1:1;11297:16;;11326:5;;11123:218;;11425:2;11415:8;11412:16;11406:3;11400:4;11397:13;11393:36;11387:2;11377:8;11374:16;11369:2;11363:4;11360:12;11356:35;11353:77;11350:159;;;-1:-1:-1;11462:19:1;;;11494:5;;11350:159;11541:34;11566:8;11560:4;11541:34;:::i;:::-;11611:6;11607:1;11603:6;11599:19;11590:7;11587:32;11584:58;;;11622:18;;:::i;:::-;11660:20;;10880:806;-1:-1:-1;;;10880:806:1:o;11691:168::-;11731:7;11797:1;11793;11789:6;11785:14;11782:1;11779:21;11774:1;11767:9;11760:17;11756:45;11753:71;;;11804:18;;:::i;:::-;-1:-1:-1;11844:9:1;;11691:168::o;11864:125::-;11904:4;11932:1;11929;11926:8;11923:34;;;11937:18;;:::i;:::-;-1:-1:-1;11974:9:1;;11864:125::o;11994:380::-;12073:1;12069:12;;;;12116;;;12137:61;;12191:4;12183:6;12179:17;12169:27;;12137:61;12244:2;12236:6;12233:14;12213:18;12210:38;12207:161;;;12290:10;12285:3;12281:20;12278:1;12271:31;12325:4;12322:1;12315:15;12353:4;12350:1;12343:15;12207:161;;11994:380;;;:::o;12379:127::-;12440:10;12435:3;12431:20;12428:1;12421:31;12471:4;12468:1;12461:15;12495:4;12492:1;12485:15;12511:127;12572:10;12567:3;12563:20;12560:1;12553:31;12603:4;12600:1;12593:15;12627:4;12624:1;12617:15;12775:131;-1:-1:-1;;;;;12850:31:1;;12840:42;;12830:70;;12896:1;12893;12886:12;12911:118;12997:5;12990:13;12983:21;12976:5;12973:32;12963:60;;13019:1;13016;13009:12
Swarm Source
ipfs://eaf0286c04270a28a9c31252748e55c0a2b715978088deaf3d49d053c4920f69
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.