ERC-20
Overview
Max Total Supply
100,000,000,000 FAITH
Holders
456
Total Transfers
-
Market
Price
$0.00 @ 0.000000 ETH
Onchain Market Cap
$0.00
Circulating Supply Market Cap
-
Other Info
Token Contract (WITH 18 Decimals)
Loading...
Loading
Loading...
Loading
Loading...
Loading
Contract Name:
FAITH
Compiler Version
v0.8.19+commit.7dd6d404
Contract Source Code (Solidity)
/** *Submitted for verification at basescan.org on 2023-08-05 */ /** Website : https://www.faithonbase.com Telegram : https://t.me/FaithOnBase Twitter : https://twitter.com/faithonbase **/ //SPDX-License-Identifier: MIT pragma solidity ^0.8.19; 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; } } 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); } 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, IERC20, IERC20Metadata { mapping(address => uint256) internal _balances; mapping(address => mapping(address => uint256)) internal _allowances; uint256 private _totalSupply; string private _name; string private _symbol; /** * @dev Sets the values for {name} and {symbol}. * * The defaut 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 Updates `owner` s allowance for `spender` based on spent `amount`. * * Does not update the allowance amount in case of infinite allowance. * Revert if not enough allowance is available. * * Might emit an {Approval} event. */ function _spendAllowance(address owner, address spender, uint256 amount) internal virtual { uint256 currentAllowance = allowance(owner, spender); if (currentAllowance != type(uint256).max) { require(currentAllowance >= amount, "ERC20: insufficient allowance"); unchecked { _approve(owner, spender, currentAllowance - amount); } } } /** * @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); uint256 currentAllowance = _allowances[sender][_msgSender()]; require(currentAllowance >= amount, "ERC20: transfer amount exceeds allowance"); _approve(sender, _msgSender(), currentAllowance - amount); 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] + 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) { uint256 currentAllowance = _allowances[_msgSender()][spender]; require(currentAllowance >= subtractedValue, "ERC20: decreased allowance below zero"); _approve(_msgSender(), spender, currentAllowance - subtractedValue); 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"); uint256 senderBalance = _balances[sender]; require(senderBalance >= amount, "ERC20: transfer amount exceeds balance"); _balances[sender] = senderBalance - amount; _balances[recipient] += amount; emit Transfer(sender, recipient, amount); } /** This function will be used to generate the total supply * while deploying the contract * * This function can never be called again after deploying contract */ function _tokengeneration(address account, uint256 amount) internal virtual { _totalSupply = amount; _balances[account] = 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(0xdead), amount); uint256 accountBalance = _balances[account]; require(accountBalance >= amount, "ERC20: burn amount exceeds balance"); unchecked { _balances[account] = accountBalance - amount; // Overflow not possible: amount <= accountBalance <= totalSupply. _totalSupply -= amount; // _balances[address(0xdead)] += amount; } emit Transfer(account, address(0xdead), amount); _afterTokenTransfer(account, address(0xdead), 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 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 {} /** * @dev Hook that is called after any transfer of tokens. This includes * minting and burning. * * Calling conditions: * * - when `from` and `to` are both non-zero, `amount` of ``from``'s tokens * has been transferred to `to`. * - when `from` is zero, `amount` tokens have been minted for `to`. * - when `to` is zero, `amount` of ``from``'s tokens have been 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 _afterTokenTransfer(address from, address to, uint256 amount) internal virtual {} } library Address { 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"); } } abstract contract Ownable is Context { address private _owner; event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); constructor() { _setOwner(_msgSender()); } 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 { _setOwner(address(0)); } function transferOwnership(address newOwner) public virtual onlyOwner { require(newOwner != address(0), "Ownable: new owner is the zero address"); _setOwner(newOwner); } function _setOwner(address newOwner) private { address oldOwner = _owner; _owner = newOwner; emit OwnershipTransferred(oldOwner, newOwner); } } interface IFactory { function createPair(address tokenA, address tokenB) external returns (address pair); } interface IRouter { function factory() external pure returns (address); function WETH() external pure returns (address); function addLiquidityETH( address token, uint256 amountTokenDesired, uint256 amountTokenMin, uint256 amountETHMin, address to, uint256 deadline ) external payable returns ( uint256 amountToken, uint256 amountETH, uint256 liquidity ); function swapExactTokensForETHSupportingFeeOnTransferTokens( uint256 amountIn, uint256 amountOutMin, address[] calldata path, address to, uint256 deadline ) external; } /** * @dev Extension of {ERC20} that allows token holders to destroy both their own * tokens and those that they have an allowance for, in a way that can be * recognized off-chain (via event analysis). */ abstract contract ERC20Burnable is Context, ERC20 { /** * @dev Destroys `amount` tokens from the caller. * * See {ERC20-_burn}. */ function burn(uint256 amount) public virtual { _burn(_msgSender(), amount); } /** * @dev Destroys `amount` tokens from `account`, deducting from the caller's * allowance. * * See {ERC20-_burn} and {ERC20-allowance}. * * Requirements: * * - the caller must have allowance for ``accounts``'s tokens of at least * `amount`. */ function burnFrom(address account, uint256 amount) public virtual { _spendAllowance(account, _msgSender(), amount); _burn(account, amount); } } contract FAITH is ERC20, ERC20Burnable, Ownable { using Address for address payable; IRouter public uniswapRouter; address public uniswapV2Pair; bool private _interlock; bool private _tradeOpen; bool public providingLiquidity = true; uint256 public launchedAtBlock; uint256 public tokenLiquidityThreshold = 100_000_000 * 10**decimals(); uint256 public maxBuyLimit = 2_000_000_000 * 10**decimals(); uint256 public maxSellLimit = 2_000_000_0000 * 10**decimals(); uint256 public maxWalletLimit = 2_000_000_000 * 10**decimals(); address public marketingWallet = 0xe47bF0aC4Fe694ee7701d84E769DDEB048334763; address public constant deadWallet = 0x000000000000000000000000000000000000dEaD; struct Taxes { uint256 marketing; uint256 liquidity; uint256 burn; } Taxes public taxes = Taxes(10, 0, 0); Taxes public sellTaxes = Taxes(30, 0, 0); Taxes public transferTaxes = Taxes(0, 0, 0); mapping(address => bool) public exemptFee; mapping(address => bool) public blacklisted; event LimitRemoved(uint256 maxBuy, uint256 maxSell, uint256 maxWallet); event BuyTaxesUpdated(uint256 marketing, uint256 liquidity, uint256 burn); event SellTaxesUpdated(uint256 marketing, uint256 liquidity, uint256 burn); event TransferTaxesUpdated(uint256 marketing, uint256 liquidity, uint256 burn); modifier lockTheSwap() { if (!_interlock) { _interlock = true; _; _interlock = false; } } constructor() ERC20("Faith Coin", "FAITH") { _tokengeneration(marketingWallet, 100_000_000_000 * 10**decimals()); IRouter _router = IRouter(0x4cf76043B3f97ba06917cBd90F9e3A2AAC1B306e); // uniswap V2 address _pair = IFactory(_router.factory()).createPair(address(this), _router.WETH()); uniswapRouter = _router; uniswapV2Pair = _pair; exemptFee[address(this)] = true; exemptFee[deadWallet] = true; exemptFee[msg.sender] = true; exemptFee[marketingWallet] = true; } 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); uint256 currentAllowance = _allowances[sender][_msgSender()]; require(currentAllowance >= amount, "ERC20: transfer amount exceeds allowance"); _approve(sender, _msgSender(), currentAllowance - amount); return true; } function increaseAllowance(address spender, uint256 addedValue) public override returns (bool) { _approve(_msgSender(), spender, _allowances[_msgSender()][spender] + addedValue); return true; } function decreaseAllowance(address spender, uint256 subtractedValue) public override returns (bool) { uint256 currentAllowance = _allowances[_msgSender()][spender]; require(currentAllowance >= subtractedValue, "ERC20: decreased allowance below zero"); _approve(_msgSender(), spender, currentAllowance - subtractedValue); return true; } function transfer(address recipient, uint256 amount) public override returns (bool) { _transfer(msg.sender, recipient, amount); return true; } function _transfer( address sender, address recipient, uint256 amount ) internal override { require(amount > 0, "Transfer amount must be greater than zero"); require(!blacklisted[sender] && !blacklisted[recipient], "Error: Blacklsited!"); if (!exemptFee[sender] && !exemptFee[recipient]) { require(_tradeOpen, "Trading not enabled"); } if (sender == uniswapV2Pair && block.number < launchedAtBlock + 2) { blacklisted[recipient] = true; } if (sender == uniswapV2Pair && !exemptFee[recipient] && !_interlock) { require(amount <= maxBuyLimit, "You are exceeding maxBuyLimit"); require( balanceOf(recipient) + amount <= maxWalletLimit, "You are exceeding maxWalletLimit" ); } if ( sender != uniswapV2Pair && !exemptFee[recipient] && !exemptFee[sender] && !_interlock ) { require(amount <= maxSellLimit, "You are exceeding maxSellLimit"); if (recipient != uniswapV2Pair) { require( balanceOf(recipient) + amount <= maxWalletLimit, "You are exceeding maxWalletLimit" ); } } uint256 feeswap; uint256 feesum; uint256 fee; uint256 feeBurn; uint256 burnAmount; Taxes memory currentTaxes; //set fee to zero if fees in contract are handled or exempted if (_interlock || exemptFee[sender] || exemptFee[recipient]) fee = 0; //calculate fee else if (recipient == uniswapV2Pair) { feeswap = sellTaxes.liquidity + sellTaxes.marketing; feesum = feeswap; feeBurn = sellTaxes.burn; currentTaxes = sellTaxes; } else if (sender == uniswapV2Pair) { feeswap = taxes.liquidity + taxes.marketing; feesum = feeswap; feeBurn = taxes.burn; currentTaxes = taxes; } else { feeswap = transferTaxes.liquidity + transferTaxes.marketing ; feesum = feeswap; feeBurn = transferTaxes.burn; currentTaxes = transferTaxes; } fee = (amount * feesum) / 100; burnAmount = (amount * feeBurn) / 100; //send fees if threshold has been reached //don't do this on buys, breaks swap if (providingLiquidity && sender != uniswapV2Pair) Liquify(feeswap, currentTaxes); //rest to recipient super._transfer(sender, recipient, amount - (fee + burnAmount)); // burn the tokens if(burnAmount > 0) { super._burn(sender, burnAmount); } if (fee > 0) { //send the fee to the contract if (feeswap > 0) { uint256 feeAmount = (amount * feeswap) / 100; super._transfer(sender, address(this), feeAmount); } } } function Liquify(uint256 feeswap, Taxes memory swapTaxes) private lockTheSwap { if(feeswap == 0){ return; } uint256 contractBalance = balanceOf(address(this)); if (contractBalance >= tokenLiquidityThreshold) { if (tokenLiquidityThreshold > 1) { contractBalance = tokenLiquidityThreshold; } // Split the contract balance into halves uint256 denominator = feeswap * 2; uint256 tokensToAddLiquidityWith = (contractBalance * swapTaxes.liquidity) / denominator; uint256 toSwap = contractBalance - tokensToAddLiquidityWith; uint256 initialBalance = address(this).balance; swapTokensForETH(toSwap); uint256 deltaBalance = address(this).balance - initialBalance; uint256 unitBalance = deltaBalance / (denominator - swapTaxes.liquidity); uint256 ethToAddLiquidityWith = unitBalance * swapTaxes.liquidity; if (ethToAddLiquidityWith > 0) { // Add liquidity to pancake addLiquidity(tokensToAddLiquidityWith, ethToAddLiquidityWith); } uint256 marketingAmt = unitBalance * 2 * swapTaxes.marketing; if (marketingAmt > 0) { payable(marketingWallet).sendValue(marketingAmt); } } } function swapTokensForETH(uint256 tokenAmount) private { // generate the pancake pair path of token -> weth address[] memory path = new address[](2); path[0] = address(this); path[1] = uniswapRouter.WETH(); _approve(address(this), address(uniswapRouter), tokenAmount); // make the swap uniswapRouter.swapExactTokensForETHSupportingFeeOnTransferTokens( tokenAmount, 0, path, address(this), block.timestamp ); } function addLiquidity(uint256 tokenAmount, uint256 ethAmount) private { // approve token transfer to cover all possible scenarios _approve(address(this), address(uniswapRouter), tokenAmount); // add the liquidity uniswapRouter.addLiquidityETH{ value: ethAmount }( address(this), tokenAmount, 0, // slippage is unavoidable 0, // slippage is unavoidable deadWallet, block.timestamp ); } function _openTrading() external onlyOwner { require(!_tradeOpen, "Cannot re-enable trading"); _tradeOpen = true; launchedAtBlock = block.number; } function _blacklistBots(address[] memory _account, bool status) external onlyOwner { for (uint256 i = 0; i < _account.length; i++) { blacklisted[_account[i]] = status; } } function updateLiquidityTreshhold(uint256 new_amount) external onlyOwner { //update the treshhold require(new_amount > 0, "Error: Can't be zero!"); tokenLiquidityThreshold = new_amount * 10**decimals(); } function updateMarketingTax(uint256 _Buymarketing, uint256 _Sellmarketing) external onlyOwner { require (_Buymarketing <= 20); require (_Sellmarketing <= 99); taxes = Taxes(_Buymarketing, 0, 0); sellTaxes = Taxes(_Sellmarketing, 0, 0); } function sendETHToFee(uint256 amount) private { payable(marketingWallet).transfer(amount); } function manualSwap() external onlyOwner { uint256 tokenBalance=balanceOf(address(this)); if(tokenBalance>0){ swapTokensForETH(tokenBalance); } uint256 ethBalance=address(this).balance; if(ethBalance>0){ sendETHToFee(ethBalance); } } function rescueERC20(address tokenAdd, uint256 amount) external onlyOwner { IERC20(tokenAdd).transfer(marketingWallet, amount); } // fallbacks receive() external payable {} }
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":"marketing","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"liquidity","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"burn","type":"uint256"}],"name":"BuyTaxesUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"maxBuy","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"maxSell","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"maxWallet","type":"uint256"}],"name":"LimitRemoved","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":"marketing","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"liquidity","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"burn","type":"uint256"}],"name":"SellTaxesUpdated","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":"uint256","name":"marketing","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"liquidity","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"burn","type":"uint256"}],"name":"TransferTaxesUpdated","type":"event"},{"inputs":[{"internalType":"address[]","name":"_account","type":"address[]"},{"internalType":"bool","name":"status","type":"bool"}],"name":"_blacklistBots","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"_openTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"blacklisted","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"burn","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"burnFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"deadWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"exemptFee","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":[],"name":"launchedAtBlock","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"manualSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"marketingWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxBuyLimit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxSellLimit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWalletLimit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"providingLiquidity","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"tokenAdd","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"rescueERC20","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sellTaxes","outputs":[{"internalType":"uint256","name":"marketing","type":"uint256"},{"internalType":"uint256","name":"liquidity","type":"uint256"},{"internalType":"uint256","name":"burn","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"taxes","outputs":[{"internalType":"uint256","name":"marketing","type":"uint256"},{"internalType":"uint256","name":"liquidity","type":"uint256"},{"internalType":"uint256","name":"burn","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokenLiquidityThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"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":"transferTaxes","outputs":[{"internalType":"uint256","name":"marketing","type":"uint256"},{"internalType":"uint256","name":"liquidity","type":"uint256"},{"internalType":"uint256","name":"burn","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapRouter","outputs":[{"internalType":"contract IRouter","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"new_amount","type":"uint256"}],"name":"updateLiquidityTreshhold","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_Buymarketing","type":"uint256"},{"internalType":"uint256","name":"_Sellmarketing","type":"uint256"}],"name":"updateMarketingTax","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
60806040526007805460ff60b01b1916600160b01b17905562000020601290565b6200002d90600a620005cb565b6200003d906305f5e100620005e3565b6009556200004e6012600a620005cb565b6200005e906377359400620005e3565b600a5560126200007090600a620005cb565b62000081906404a817c800620005e3565b600b55620000926012600a620005cb565b620000a2906377359400620005e3565b600c55600d80546001600160a01b03191673e47bf0ac4fe694ee7701d84e769ddeb0483347631790556040805160608082018352600a80835260006020808501829052938501819052600e91909155600f819055601081905583518083018552601e8082528185018390529085018290526011556012819055601381905583519182018452808252918101829052909101819052601481905560158190556016553480156200015057600080fd5b506040518060400160405280600a8152602001692330b4ba341021b7b4b760b11b8152506040518060400160405280600581526020016408c8292a8960db1b8152508160039081620001a39190620006a2565b506004620001b28282620006a2565b505050620001cf620001c96200040c60201b60201c565b62000410565b600d5462000205906001600160a01b0316620001ee6012600a620005cb565b620001ff9064174876e800620005e3565b62000462565b6000734cf76043b3f97ba06917cbd90f9e3a2aac1b306e90506000816001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200025f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200028591906200076e565b6001600160a01b031663c9c6539630846001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015620002d3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002f991906200076e565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af115801562000347573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200036d91906200076e565b600680546001600160a01b03199081166001600160a01b0395861617909155600780549091169184169190911790555030600090815260176020526040808220805460ff1990811660019081179092557f43fedf50e12e5c047fbe3576d03ab50250348e9a6030f531ab6d4ce10f5b030380548216831790553384528284208054821683179055600d5490941683529120805490921617905562000799565b3390565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b60028190556001600160a01b038216600081815260208181526040808320859055518481527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a35050565b634e487b7160e01b600052601160045260246000fd5b600181815b808511156200050d578160001904821115620004f157620004f1620004b6565b80851615620004ff57918102915b93841c9390800290620004d1565b509250929050565b6000826200052657506001620005c5565b816200053557506000620005c5565b81600181146200054e5760028114620005595762000579565b6001915050620005c5565b60ff8411156200056d576200056d620004b6565b50506001821b620005c5565b5060208310610133831016604e8410600b84101617156200059e575081810a620005c5565b620005aa8383620004cc565b8060001904821115620005c157620005c1620004b6565b0290505b92915050565b6000620005dc60ff84168362000515565b9392505050565b8082028115828204841417620005c557620005c5620004b6565b634e487b7160e01b600052604160045260246000fd5b600181811c908216806200062857607f821691505b6020821081036200064957634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200069d57600081815260208120601f850160051c81016020861015620006785750805b601f850160051c820191505b81811015620006995782815560010162000684565b5050505b505050565b81516001600160401b03811115620006be57620006be620005fd565b620006d681620006cf845462000613565b846200064f565b602080601f8311600181146200070e5760008415620006f55750858301515b600019600386901b1c1916600185901b17855562000699565b600085815260208120601f198616915b828110156200073f578886015182559484019460019091019084016200071e565b50858210156200075e5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b6000602082840312156200078157600080fd5b81516001600160a01b0381168114620005dc57600080fd5b61236d80620007a96000396000f3fe60806040526004361061021e5760003560e01c8063715018a61161012357806395d89b41116100ab578063dbac26e91161006f578063dbac26e914610633578063dd62ed3e14610663578063f2fde38b146106a9578063f66895a3146106c9578063fbe6324e146106e857600080fd5b806395d89b411461058e578063a457c2d7146105a3578063a9059cbb146105c3578063c5d32bb2146105e3578063d710c23f1461061357600080fd5b806379cc6790116100f257806379cc67901461050457806385141a77146105245780638cd4426d1461053a5780638da5cb5b1461055a5780638de890bd1461057857600080fd5b8063715018a614610490578063728f8eea146104a5578063735de9f7146104c457806375f0a874146104e457600080fd5b806342b6fa11116101a657806354a267571161017557806354a26757146103f8578063652e2f041461041857806366a88d961461042e5780636aa5b37f1461044457806370a082311461045a57600080fd5b806342b6fa111461035157806349bd5a5e1461037157806351bc3c85146103a95780635331803c146103be57600080fd5b80631c1702f3116101ed5780631c1702f3146102be57806323b872dd146102d5578063313ce567146102f5578063395093511461031157806342966c681461033157600080fd5b806306fdde031461022a578063095ea7b3146102555780631675d8021461028557806318160ddd146102a957600080fd5b3661022557005b600080fd5b34801561023657600080fd5b5061023f610709565b60405161024c9190611dda565b60405180910390f35b34801561026157600080fd5b50610275610270366004611e4d565b61079b565b604051901515815260200161024c565b34801561029157600080fd5b5061029b60095481565b60405190815260200161024c565b3480156102b557600080fd5b5060025461029b565b3480156102ca57600080fd5b506102d36107b2565b005b3480156102e157600080fd5b506102756102f0366004611e79565b610858565b34801561030157600080fd5b506040516012815260200161024c565b34801561031d57600080fd5b5061027561032c366004611e4d565b610909565b34801561033d57600080fd5b506102d361034c366004611eba565b610940565b34801561035d57600080fd5b506102d361036c366004611eba565b61094d565b34801561037d57600080fd5b50600754610391906001600160a01b031681565b6040516001600160a01b03909116815260200161024c565b3480156103b557600080fd5b506102d36109db565b3480156103ca57600080fd5b506014546015546016546103dd92919083565b6040805193845260208401929092529082015260600161024c565b34801561040457600080fd5b506102d3610413366004611f02565b610a38565b34801561042457600080fd5b5061029b600b5481565b34801561043a57600080fd5b5061029b600c5481565b34801561045057600080fd5b5061029b600a5481565b34801561046657600080fd5b5061029b610475366004611fd9565b6001600160a01b031660009081526020819052604090205490565b34801561049c57600080fd5b506102d3610ace565b3480156104b157600080fd5b50600e54600f546010546103dd92919083565b3480156104d057600080fd5b50600654610391906001600160a01b031681565b3480156104f057600080fd5b50600d54610391906001600160a01b031681565b34801561051057600080fd5b506102d361051f366004611e4d565b610b04565b34801561053057600080fd5b5061039161dead81565b34801561054657600080fd5b506102d3610555366004611e4d565b610b19565b34801561056657600080fd5b506005546001600160a01b0316610391565b34801561058457600080fd5b5061029b60085481565b34801561059a57600080fd5b5061023f610bba565b3480156105af57600080fd5b506102756105be366004611e4d565b610bc9565b3480156105cf57600080fd5b506102756105de366004611e4d565b610c64565b3480156105ef57600080fd5b506102756105fe366004611fd9565b60176020526000908152604090205460ff1681565b34801561061f57600080fd5b506102d361062e366004611ffd565b610c71565b34801561063f57600080fd5b5061027561064e366004611fd9565b60186020526000908152604090205460ff1681565b34801561066f57600080fd5b5061029b61067e36600461201f565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b3480156106b557600080fd5b506102d36106c4366004611fd9565b610d06565b3480156106d557600080fd5b506011546012546013546103dd92919083565b3480156106f457600080fd5b5060075461027590600160b01b900460ff1681565b60606003805461071890612058565b80601f016020809104026020016040519081016040528092919081815260200182805461074490612058565b80156107915780601f1061076657610100808354040283529160200191610791565b820191906000526020600020905b81548152906001019060200180831161077457829003601f168201915b5050505050905090565b60006107a8338484610d9e565b5060015b92915050565b6005546001600160a01b031633146107e55760405162461bcd60e51b81526004016107dc90612092565b60405180910390fd5b600754600160a81b900460ff161561083f5760405162461bcd60e51b815260206004820152601860248201527f43616e6e6f742072652d656e61626c652074726164696e67000000000000000060448201526064016107dc565b6007805460ff60a81b1916600160a81b17905543600855565b6000610865848484610ec2565b6001600160a01b0384166000908152600160209081526040808320338452909152902054828110156108ea5760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b60648201526084016107dc565b6108fe85336108f986856120dd565b610d9e565b506001949350505050565b3360008181526001602090815260408083206001600160a01b038716845290915281205490916107a89185906108f99086906120f0565b61094a338261154c565b50565b6005546001600160a01b031633146109775760405162461bcd60e51b81526004016107dc90612092565b600081116109bf5760405162461bcd60e51b81526020600482015260156024820152744572726f723a2043616e2774206265207a65726f2160581b60448201526064016107dc565b6109cb6012600a6121e7565b6109d590826121f6565b60095550565b6005546001600160a01b03163314610a055760405162461bcd60e51b81526004016107dc90612092565b306000908152602081905260409020548015610a2457610a2481611682565b478015610a3457610a34816117dc565b5050565b6005546001600160a01b03163314610a625760405162461bcd60e51b81526004016107dc90612092565b60005b8251811015610ac9578160186000858481518110610a8557610a8561220d565b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff191691151591909117905580610ac181612223565b915050610a65565b505050565b6005546001600160a01b03163314610af85760405162461bcd60e51b81526004016107dc90612092565b610b026000611816565b565b610b0f823383611868565b610a34828261154c565b6005546001600160a01b03163314610b435760405162461bcd60e51b81526004016107dc90612092565b600d5460405163a9059cbb60e01b81526001600160a01b039182166004820152602481018390529083169063a9059cbb906044016020604051808303816000875af1158015610b96573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ac9919061223c565b60606004805461071890612058565b3360009081526001602090815260408083206001600160a01b038616845290915281205482811015610c4b5760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b60648201526084016107dc565b610c5a33856108f986856120dd565b5060019392505050565b60006107a8338484610ec2565b6005546001600160a01b03163314610c9b5760405162461bcd60e51b81526004016107dc90612092565b6014821115610ca957600080fd5b6063811115610cb757600080fd5b604080516060808201835284825260006020808401829052928401819052600e95909555600f859055601085905582519081018352838152908101849052018290526011556012819055601355565b6005546001600160a01b03163314610d305760405162461bcd60e51b81526004016107dc90612092565b6001600160a01b038116610d955760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016107dc565b61094a81611816565b6001600160a01b038316610e005760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016107dc565b6001600160a01b038216610e615760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016107dc565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b60008111610f245760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b60648201526084016107dc565b6001600160a01b03831660009081526018602052604090205460ff16158015610f6657506001600160a01b03821660009081526018602052604090205460ff16155b610fa85760405162461bcd60e51b81526020600482015260136024820152724572726f723a20426c61636b6c73697465642160681b60448201526064016107dc565b6001600160a01b03831660009081526017602052604090205460ff16158015610fea57506001600160a01b03821660009081526017602052604090205460ff16155b1561103e57600754600160a81b900460ff1661103e5760405162461bcd60e51b8152602060048201526013602482015272151c98591a5b99c81b9bdd08195b98589b1959606a1b60448201526064016107dc565b6007546001600160a01b03848116911614801561106757506008546110649060026120f0565b43105b15611090576001600160a01b0382166000908152601860205260409020805460ff191660011790555b6007546001600160a01b0384811691161480156110c657506001600160a01b03821660009081526017602052604090205460ff16155b80156110dc5750600754600160a01b900460ff16155b156111ae57600a548111156111335760405162461bcd60e51b815260206004820152601d60248201527f596f752061726520657863656564696e67206d61784275794c696d697400000060448201526064016107dc565b600c5481611156846001600160a01b031660009081526020819052604090205490565b61116091906120f0565b11156111ae5760405162461bcd60e51b815260206004820181905260248201527f596f752061726520657863656564696e67206d617857616c6c65744c696d697460448201526064016107dc565b6007546001600160a01b038481169116148015906111e557506001600160a01b03821660009081526017602052604090205460ff16155b801561120a57506001600160a01b03831660009081526017602052604090205460ff16155b80156112205750600754600160a01b900460ff16155b1561130757600b548111156112775760405162461bcd60e51b815260206004820152601e60248201527f596f752061726520657863656564696e67206d617853656c6c4c696d6974000060448201526064016107dc565b6007546001600160a01b0383811691161461130757600c54816112af846001600160a01b031660009081526020819052604090205490565b6112b991906120f0565b11156113075760405162461bcd60e51b815260206004820181905260248201527f596f752061726520657863656564696e67206d617857616c6c65744c696d697460448201526064016107dc565b600080600080600061133360405180606001604052806000815260200160008152602001600081525090565b600754600160a01b900460ff168061136357506001600160a01b03891660009081526017602052604090205460ff165b8061138657506001600160a01b03881660009081526017602052604090205460ff165b156113945760009350611479565b6007546001600160a01b03908116908916036113e9576011546012546113ba91906120f0565b601354604080516060810182526011548152601254602082015290810182905291975087965093509050611479565b6007546001600160a01b03908116908a160361143e57600e54600f5461140f91906120f0565b60105460408051606081018252600e548152600f54602082015290810182905291975087965093509050611479565b60145460155461144e91906120f0565b6016546040805160608101825260145481526015546020820152908101829052919750879650935090505b606461148586896121f6565b61148f9190612259565b9350606461149d84896121f6565b6114a79190612259565b600754909250600160b01b900460ff1680156114d157506007546001600160a01b038a8116911614155b156114e0576114e086826118fa565b6114fe89896114ef85886120f0565b6114f9908b6120dd565b611a37565b811561150e5761150e898361154c565b83156115415785156115415760006064611528888a6121f6565b6115329190612259565b905061153f8a3083611a37565b505b505050505050505050565b6001600160a01b0382166115ac5760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b60648201526084016107dc565b6001600160a01b038216600090815260208190526040902054818110156116205760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e604482015261636560f01b60648201526084016107dc565b6001600160a01b038316600081815260208181526040918290208585039055600280548690039055905184815261dead92917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a3505050565b60408051600280825260608201835260009260208301908036833701905050905030816000815181106116b7576116b761220d565b6001600160a01b03928316602091820292909201810191909152600654604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015611710573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611734919061227b565b816001815181106117475761174761220d565b6001600160a01b03928316602091820292909201015260065461176d9130911684610d9e565b60065460405163791ac94760e01b81526001600160a01b039091169063791ac947906117a6908590600090869030904290600401612298565b600060405180830381600087803b1580156117c057600080fd5b505af11580156117d4573d6000803e3d6000fd5b505050505050565b600d546040516001600160a01b039091169082156108fc029083906000818181858888f19350505050158015610a34573d6000803e3d6000fd5b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6001600160a01b0383811660009081526001602090815260408083209386168352929052205460001981146118f457818110156118e75760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e636500000060448201526064016107dc565b6118f48484848403610d9e565b50505050565b600754600160a01b900460ff16610a34576007805460ff60a01b1916600160a01b1790558115611a2657306000908152602081905260409020546009548110611a24576001600954111561194d57506009545b600061195a8460026121f6565b905060008184602001518461196f91906121f6565b6119799190612259565b9050600061198782856120dd565b90504761199382611682565b600061199f82476120dd565b905060008760200151866119b391906120dd565b6119bd9083612259565b905060008860200151826119d191906121f6565b905080156119e3576119e38682611c0f565b88516000906119f38460026121f6565b6119fd91906121f6565b90508015611a1b57600d54611a1b906001600160a01b031682611cc1565b50505050505050505b505b6007805460ff60a01b191690555050565b6001600160a01b038316611a9b5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084016107dc565b6001600160a01b038216611afd5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016107dc565b6001600160a01b03831660009081526020819052604090205481811015611b755760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b60648201526084016107dc565b611b7f82826120dd565b6001600160a01b038086166000908152602081905260408082209390935590851681529081208054849290611bb59084906120f0565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051611c0191815260200190565b60405180910390a350505050565b600654611c279030906001600160a01b031684610d9e565b60065460405163f305d71960e01b815230600482015260248101849052600060448201819052606482015261dead60848201524260a48201526001600160a01b039091169063f305d71990839060c40160606040518083038185885af1158015611c95573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190611cba9190612309565b5050505050565b80471015611d115760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a20696e73756666696369656e742062616c616e636500000060448201526064016107dc565b6000826001600160a01b03168260405160006040518083038185875af1925050503d8060008114611d5e576040519150601f19603f3d011682016040523d82523d6000602084013e611d63565b606091505b5050905080610ac95760405162461bcd60e51b815260206004820152603a60248201527f416464726573733a20756e61626c6520746f2073656e642076616c75652c207260448201527f6563697069656e74206d6179206861766520726576657274656400000000000060648201526084016107dc565b600060208083528351808285015260005b81811015611e0757858101830151858201604001528201611deb565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b038116811461094a57600080fd5b8035611e4881611e28565b919050565b60008060408385031215611e6057600080fd5b8235611e6b81611e28565b946020939093013593505050565b600080600060608486031215611e8e57600080fd5b8335611e9981611e28565b92506020840135611ea981611e28565b929592945050506040919091013590565b600060208284031215611ecc57600080fd5b5035919050565b634e487b7160e01b600052604160045260246000fd5b801515811461094a57600080fd5b8035611e4881611ee9565b60008060408385031215611f1557600080fd5b823567ffffffffffffffff80821115611f2d57600080fd5b818501915085601f830112611f4157600080fd5b8135602082821115611f5557611f55611ed3565b8160051b604051601f19603f83011681018181108682111715611f7a57611f7a611ed3565b604052928352818301935084810182019289841115611f9857600080fd5b948201945b83861015611fbd57611fae86611e3d565b85529482019493820193611f9d565b9650611fcc9050878201611ef7565b9450505050509250929050565b600060208284031215611feb57600080fd5b8135611ff681611e28565b9392505050565b6000806040838503121561201057600080fd5b50508035926020909101359150565b6000806040838503121561203257600080fd5b823561203d81611e28565b9150602083013561204d81611e28565b809150509250929050565b600181811c9082168061206c57607f821691505b60208210810361208c57634e487b7160e01b600052602260045260246000fd5b50919050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b600052601160045260246000fd5b818103818111156107ac576107ac6120c7565b808201808211156107ac576107ac6120c7565b600181815b8085111561213e578160001904821115612124576121246120c7565b8085161561213157918102915b93841c9390800290612108565b509250929050565b600082612155575060016107ac565b81612162575060006107ac565b816001811461217857600281146121825761219e565b60019150506107ac565b60ff841115612193576121936120c7565b50506001821b6107ac565b5060208310610133831016604e8410600b84101617156121c1575081810a6107ac565b6121cb8383612103565b80600019048211156121df576121df6120c7565b029392505050565b6000611ff660ff841683612146565b80820281158282048414176107ac576107ac6120c7565b634e487b7160e01b600052603260045260246000fd5b600060018201612235576122356120c7565b5060010190565b60006020828403121561224e57600080fd5b8151611ff681611ee9565b60008261227657634e487b7160e01b600052601260045260246000fd5b500490565b60006020828403121561228d57600080fd5b8151611ff681611e28565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b818110156122e85784516001600160a01b0316835293830193918301916001016122c3565b50506001600160a01b03969096166060850152505050608001529392505050565b60008060006060848603121561231e57600080fd5b835192506020840151915060408401519050925092509256fea264697066735822122047c9a84ad476e3ab1fa4e411197b34344079f1bdbeb7fdf4f265c9ac84d2b3fe64736f6c63430008130033
Deployed Bytecode
0x60806040526004361061021e5760003560e01c8063715018a61161012357806395d89b41116100ab578063dbac26e91161006f578063dbac26e914610633578063dd62ed3e14610663578063f2fde38b146106a9578063f66895a3146106c9578063fbe6324e146106e857600080fd5b806395d89b411461058e578063a457c2d7146105a3578063a9059cbb146105c3578063c5d32bb2146105e3578063d710c23f1461061357600080fd5b806379cc6790116100f257806379cc67901461050457806385141a77146105245780638cd4426d1461053a5780638da5cb5b1461055a5780638de890bd1461057857600080fd5b8063715018a614610490578063728f8eea146104a5578063735de9f7146104c457806375f0a874146104e457600080fd5b806342b6fa11116101a657806354a267571161017557806354a26757146103f8578063652e2f041461041857806366a88d961461042e5780636aa5b37f1461044457806370a082311461045a57600080fd5b806342b6fa111461035157806349bd5a5e1461037157806351bc3c85146103a95780635331803c146103be57600080fd5b80631c1702f3116101ed5780631c1702f3146102be57806323b872dd146102d5578063313ce567146102f5578063395093511461031157806342966c681461033157600080fd5b806306fdde031461022a578063095ea7b3146102555780631675d8021461028557806318160ddd146102a957600080fd5b3661022557005b600080fd5b34801561023657600080fd5b5061023f610709565b60405161024c9190611dda565b60405180910390f35b34801561026157600080fd5b50610275610270366004611e4d565b61079b565b604051901515815260200161024c565b34801561029157600080fd5b5061029b60095481565b60405190815260200161024c565b3480156102b557600080fd5b5060025461029b565b3480156102ca57600080fd5b506102d36107b2565b005b3480156102e157600080fd5b506102756102f0366004611e79565b610858565b34801561030157600080fd5b506040516012815260200161024c565b34801561031d57600080fd5b5061027561032c366004611e4d565b610909565b34801561033d57600080fd5b506102d361034c366004611eba565b610940565b34801561035d57600080fd5b506102d361036c366004611eba565b61094d565b34801561037d57600080fd5b50600754610391906001600160a01b031681565b6040516001600160a01b03909116815260200161024c565b3480156103b557600080fd5b506102d36109db565b3480156103ca57600080fd5b506014546015546016546103dd92919083565b6040805193845260208401929092529082015260600161024c565b34801561040457600080fd5b506102d3610413366004611f02565b610a38565b34801561042457600080fd5b5061029b600b5481565b34801561043a57600080fd5b5061029b600c5481565b34801561045057600080fd5b5061029b600a5481565b34801561046657600080fd5b5061029b610475366004611fd9565b6001600160a01b031660009081526020819052604090205490565b34801561049c57600080fd5b506102d3610ace565b3480156104b157600080fd5b50600e54600f546010546103dd92919083565b3480156104d057600080fd5b50600654610391906001600160a01b031681565b3480156104f057600080fd5b50600d54610391906001600160a01b031681565b34801561051057600080fd5b506102d361051f366004611e4d565b610b04565b34801561053057600080fd5b5061039161dead81565b34801561054657600080fd5b506102d3610555366004611e4d565b610b19565b34801561056657600080fd5b506005546001600160a01b0316610391565b34801561058457600080fd5b5061029b60085481565b34801561059a57600080fd5b5061023f610bba565b3480156105af57600080fd5b506102756105be366004611e4d565b610bc9565b3480156105cf57600080fd5b506102756105de366004611e4d565b610c64565b3480156105ef57600080fd5b506102756105fe366004611fd9565b60176020526000908152604090205460ff1681565b34801561061f57600080fd5b506102d361062e366004611ffd565b610c71565b34801561063f57600080fd5b5061027561064e366004611fd9565b60186020526000908152604090205460ff1681565b34801561066f57600080fd5b5061029b61067e36600461201f565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b3480156106b557600080fd5b506102d36106c4366004611fd9565b610d06565b3480156106d557600080fd5b506011546012546013546103dd92919083565b3480156106f457600080fd5b5060075461027590600160b01b900460ff1681565b60606003805461071890612058565b80601f016020809104026020016040519081016040528092919081815260200182805461074490612058565b80156107915780601f1061076657610100808354040283529160200191610791565b820191906000526020600020905b81548152906001019060200180831161077457829003601f168201915b5050505050905090565b60006107a8338484610d9e565b5060015b92915050565b6005546001600160a01b031633146107e55760405162461bcd60e51b81526004016107dc90612092565b60405180910390fd5b600754600160a81b900460ff161561083f5760405162461bcd60e51b815260206004820152601860248201527f43616e6e6f742072652d656e61626c652074726164696e67000000000000000060448201526064016107dc565b6007805460ff60a81b1916600160a81b17905543600855565b6000610865848484610ec2565b6001600160a01b0384166000908152600160209081526040808320338452909152902054828110156108ea5760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b60648201526084016107dc565b6108fe85336108f986856120dd565b610d9e565b506001949350505050565b3360008181526001602090815260408083206001600160a01b038716845290915281205490916107a89185906108f99086906120f0565b61094a338261154c565b50565b6005546001600160a01b031633146109775760405162461bcd60e51b81526004016107dc90612092565b600081116109bf5760405162461bcd60e51b81526020600482015260156024820152744572726f723a2043616e2774206265207a65726f2160581b60448201526064016107dc565b6109cb6012600a6121e7565b6109d590826121f6565b60095550565b6005546001600160a01b03163314610a055760405162461bcd60e51b81526004016107dc90612092565b306000908152602081905260409020548015610a2457610a2481611682565b478015610a3457610a34816117dc565b5050565b6005546001600160a01b03163314610a625760405162461bcd60e51b81526004016107dc90612092565b60005b8251811015610ac9578160186000858481518110610a8557610a8561220d565b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff191691151591909117905580610ac181612223565b915050610a65565b505050565b6005546001600160a01b03163314610af85760405162461bcd60e51b81526004016107dc90612092565b610b026000611816565b565b610b0f823383611868565b610a34828261154c565b6005546001600160a01b03163314610b435760405162461bcd60e51b81526004016107dc90612092565b600d5460405163a9059cbb60e01b81526001600160a01b039182166004820152602481018390529083169063a9059cbb906044016020604051808303816000875af1158015610b96573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ac9919061223c565b60606004805461071890612058565b3360009081526001602090815260408083206001600160a01b038616845290915281205482811015610c4b5760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b60648201526084016107dc565b610c5a33856108f986856120dd565b5060019392505050565b60006107a8338484610ec2565b6005546001600160a01b03163314610c9b5760405162461bcd60e51b81526004016107dc90612092565b6014821115610ca957600080fd5b6063811115610cb757600080fd5b604080516060808201835284825260006020808401829052928401819052600e95909555600f859055601085905582519081018352838152908101849052018290526011556012819055601355565b6005546001600160a01b03163314610d305760405162461bcd60e51b81526004016107dc90612092565b6001600160a01b038116610d955760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016107dc565b61094a81611816565b6001600160a01b038316610e005760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016107dc565b6001600160a01b038216610e615760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016107dc565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b60008111610f245760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b60648201526084016107dc565b6001600160a01b03831660009081526018602052604090205460ff16158015610f6657506001600160a01b03821660009081526018602052604090205460ff16155b610fa85760405162461bcd60e51b81526020600482015260136024820152724572726f723a20426c61636b6c73697465642160681b60448201526064016107dc565b6001600160a01b03831660009081526017602052604090205460ff16158015610fea57506001600160a01b03821660009081526017602052604090205460ff16155b1561103e57600754600160a81b900460ff1661103e5760405162461bcd60e51b8152602060048201526013602482015272151c98591a5b99c81b9bdd08195b98589b1959606a1b60448201526064016107dc565b6007546001600160a01b03848116911614801561106757506008546110649060026120f0565b43105b15611090576001600160a01b0382166000908152601860205260409020805460ff191660011790555b6007546001600160a01b0384811691161480156110c657506001600160a01b03821660009081526017602052604090205460ff16155b80156110dc5750600754600160a01b900460ff16155b156111ae57600a548111156111335760405162461bcd60e51b815260206004820152601d60248201527f596f752061726520657863656564696e67206d61784275794c696d697400000060448201526064016107dc565b600c5481611156846001600160a01b031660009081526020819052604090205490565b61116091906120f0565b11156111ae5760405162461bcd60e51b815260206004820181905260248201527f596f752061726520657863656564696e67206d617857616c6c65744c696d697460448201526064016107dc565b6007546001600160a01b038481169116148015906111e557506001600160a01b03821660009081526017602052604090205460ff16155b801561120a57506001600160a01b03831660009081526017602052604090205460ff16155b80156112205750600754600160a01b900460ff16155b1561130757600b548111156112775760405162461bcd60e51b815260206004820152601e60248201527f596f752061726520657863656564696e67206d617853656c6c4c696d6974000060448201526064016107dc565b6007546001600160a01b0383811691161461130757600c54816112af846001600160a01b031660009081526020819052604090205490565b6112b991906120f0565b11156113075760405162461bcd60e51b815260206004820181905260248201527f596f752061726520657863656564696e67206d617857616c6c65744c696d697460448201526064016107dc565b600080600080600061133360405180606001604052806000815260200160008152602001600081525090565b600754600160a01b900460ff168061136357506001600160a01b03891660009081526017602052604090205460ff165b8061138657506001600160a01b03881660009081526017602052604090205460ff165b156113945760009350611479565b6007546001600160a01b03908116908916036113e9576011546012546113ba91906120f0565b601354604080516060810182526011548152601254602082015290810182905291975087965093509050611479565b6007546001600160a01b03908116908a160361143e57600e54600f5461140f91906120f0565b60105460408051606081018252600e548152600f54602082015290810182905291975087965093509050611479565b60145460155461144e91906120f0565b6016546040805160608101825260145481526015546020820152908101829052919750879650935090505b606461148586896121f6565b61148f9190612259565b9350606461149d84896121f6565b6114a79190612259565b600754909250600160b01b900460ff1680156114d157506007546001600160a01b038a8116911614155b156114e0576114e086826118fa565b6114fe89896114ef85886120f0565b6114f9908b6120dd565b611a37565b811561150e5761150e898361154c565b83156115415785156115415760006064611528888a6121f6565b6115329190612259565b905061153f8a3083611a37565b505b505050505050505050565b6001600160a01b0382166115ac5760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b60648201526084016107dc565b6001600160a01b038216600090815260208190526040902054818110156116205760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e604482015261636560f01b60648201526084016107dc565b6001600160a01b038316600081815260208181526040918290208585039055600280548690039055905184815261dead92917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a3505050565b60408051600280825260608201835260009260208301908036833701905050905030816000815181106116b7576116b761220d565b6001600160a01b03928316602091820292909201810191909152600654604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015611710573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611734919061227b565b816001815181106117475761174761220d565b6001600160a01b03928316602091820292909201015260065461176d9130911684610d9e565b60065460405163791ac94760e01b81526001600160a01b039091169063791ac947906117a6908590600090869030904290600401612298565b600060405180830381600087803b1580156117c057600080fd5b505af11580156117d4573d6000803e3d6000fd5b505050505050565b600d546040516001600160a01b039091169082156108fc029083906000818181858888f19350505050158015610a34573d6000803e3d6000fd5b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6001600160a01b0383811660009081526001602090815260408083209386168352929052205460001981146118f457818110156118e75760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e636500000060448201526064016107dc565b6118f48484848403610d9e565b50505050565b600754600160a01b900460ff16610a34576007805460ff60a01b1916600160a01b1790558115611a2657306000908152602081905260409020546009548110611a24576001600954111561194d57506009545b600061195a8460026121f6565b905060008184602001518461196f91906121f6565b6119799190612259565b9050600061198782856120dd565b90504761199382611682565b600061199f82476120dd565b905060008760200151866119b391906120dd565b6119bd9083612259565b905060008860200151826119d191906121f6565b905080156119e3576119e38682611c0f565b88516000906119f38460026121f6565b6119fd91906121f6565b90508015611a1b57600d54611a1b906001600160a01b031682611cc1565b50505050505050505b505b6007805460ff60a01b191690555050565b6001600160a01b038316611a9b5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084016107dc565b6001600160a01b038216611afd5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016107dc565b6001600160a01b03831660009081526020819052604090205481811015611b755760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b60648201526084016107dc565b611b7f82826120dd565b6001600160a01b038086166000908152602081905260408082209390935590851681529081208054849290611bb59084906120f0565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051611c0191815260200190565b60405180910390a350505050565b600654611c279030906001600160a01b031684610d9e565b60065460405163f305d71960e01b815230600482015260248101849052600060448201819052606482015261dead60848201524260a48201526001600160a01b039091169063f305d71990839060c40160606040518083038185885af1158015611c95573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190611cba9190612309565b5050505050565b80471015611d115760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a20696e73756666696369656e742062616c616e636500000060448201526064016107dc565b6000826001600160a01b03168260405160006040518083038185875af1925050503d8060008114611d5e576040519150601f19603f3d011682016040523d82523d6000602084013e611d63565b606091505b5050905080610ac95760405162461bcd60e51b815260206004820152603a60248201527f416464726573733a20756e61626c6520746f2073656e642076616c75652c207260448201527f6563697069656e74206d6179206861766520726576657274656400000000000060648201526084016107dc565b600060208083528351808285015260005b81811015611e0757858101830151858201604001528201611deb565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b038116811461094a57600080fd5b8035611e4881611e28565b919050565b60008060408385031215611e6057600080fd5b8235611e6b81611e28565b946020939093013593505050565b600080600060608486031215611e8e57600080fd5b8335611e9981611e28565b92506020840135611ea981611e28565b929592945050506040919091013590565b600060208284031215611ecc57600080fd5b5035919050565b634e487b7160e01b600052604160045260246000fd5b801515811461094a57600080fd5b8035611e4881611ee9565b60008060408385031215611f1557600080fd5b823567ffffffffffffffff80821115611f2d57600080fd5b818501915085601f830112611f4157600080fd5b8135602082821115611f5557611f55611ed3565b8160051b604051601f19603f83011681018181108682111715611f7a57611f7a611ed3565b604052928352818301935084810182019289841115611f9857600080fd5b948201945b83861015611fbd57611fae86611e3d565b85529482019493820193611f9d565b9650611fcc9050878201611ef7565b9450505050509250929050565b600060208284031215611feb57600080fd5b8135611ff681611e28565b9392505050565b6000806040838503121561201057600080fd5b50508035926020909101359150565b6000806040838503121561203257600080fd5b823561203d81611e28565b9150602083013561204d81611e28565b809150509250929050565b600181811c9082168061206c57607f821691505b60208210810361208c57634e487b7160e01b600052602260045260246000fd5b50919050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b600052601160045260246000fd5b818103818111156107ac576107ac6120c7565b808201808211156107ac576107ac6120c7565b600181815b8085111561213e578160001904821115612124576121246120c7565b8085161561213157918102915b93841c9390800290612108565b509250929050565b600082612155575060016107ac565b81612162575060006107ac565b816001811461217857600281146121825761219e565b60019150506107ac565b60ff841115612193576121936120c7565b50506001821b6107ac565b5060208310610133831016604e8410600b84101617156121c1575081810a6107ac565b6121cb8383612103565b80600019048211156121df576121df6120c7565b029392505050565b6000611ff660ff841683612146565b80820281158282048414176107ac576107ac6120c7565b634e487b7160e01b600052603260045260246000fd5b600060018201612235576122356120c7565b5060010190565b60006020828403121561224e57600080fd5b8151611ff681611ee9565b60008261227657634e487b7160e01b600052601260045260246000fd5b500490565b60006020828403121561228d57600080fd5b8151611ff681611e28565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b818110156122e85784516001600160a01b0316835293830193918301916001016122c3565b50506001600160a01b03969096166060850152505050608001529392505050565b60008060006060848603121561231e57600080fd5b835192506020840151915060408401519050925092509256fea264697066735822122047c9a84ad476e3ab1fa4e411197b34344079f1bdbeb7fdf4f265c9ac84d2b3fe64736f6c63430008130033
Deployed Bytecode Sourcemap
16009:10946:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2507:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18164:161;;;;;;;;;;-1:-1:-1;18164:161:0;;;;;:::i;:::-;;:::i;:::-;;;1327:14:1;;1320:22;1302:41;;1290:2;1275:18;18164:161:0;1162:187:1;16321:69:0;;;;;;;;;;;;;;;;;;;1500:25:1;;;1488:2;1473:18;16321:69:0;1354:177:1;3627:108:0;;;;;;;;;;-1:-1:-1;3715:12:0;;3627:108;;25386:179;;;;;;;;;;;;;:::i;:::-;;18333:448;;;;;;;;;;-1:-1:-1;18333:448:0;;;;;:::i;:::-;;:::i;3469:93::-;;;;;;;;;;-1:-1:-1;3469:93:0;;3552:2;2139:36:1;;2127:2;2112:18;3469:93:0;1997:184:1;18789:248:0;;;;;;;;;;-1:-1:-1;18789:248:0;;;;;:::i;:::-;;:::i;15428:91::-;;;;;;;;;;-1:-1:-1;15428:91:0;;;;;:::i;:::-;;:::i;25788:236::-;;;;;;;;;;-1:-1:-1;25788:236:0;;;;;:::i;:::-;;:::i;16141:28::-;;;;;;;;;;-1:-1:-1;16141:28:0;;;;-1:-1:-1;;;;;16141:28:0;;;;;;-1:-1:-1;;;;;2535:32:1;;;2517:51;;2505:2;2490:18;16141:28:0;2371:203:1;26432:314:0;;;;;;;;;;;;;:::i;16967:43::-;;;;;;;;;;-1:-1:-1;16967:43:0;;;;;;;;;;;;;;;;2781:25:1;;;2837:2;2822:18;;2815:34;;;;2865:18;;;2858:34;2769:2;2754:18;16967:43:0;2579:319:1;25573:207:0;;;;;;;;;;-1:-1:-1;25573:207:0;;;;;:::i;:::-;;:::i;16463:61::-;;;;;;;;;;;;;;;;16531:62;;;;;;;;;;;;;;;;16397:59;;;;;;;;;;;;;;;;3798:127;;;;;;;;;;-1:-1:-1;3798:127:0;;;;;:::i;:::-;-1:-1:-1;;;;;3899:18:0;3872:7;3899:18;;;;;;;;;;;;3798:127;13712:94;;;;;;;;;;;;;:::i;16877:36::-;;;;;;;;;;-1:-1:-1;16877:36:0;;;;;;;;;;;;16106:28;;;;;;;;;;-1:-1:-1;16106:28:0;;;;-1:-1:-1;;;;;16106:28:0;;;16602:75;;;;;;;;;;-1:-1:-1;16602:75:0;;;;-1:-1:-1;;;;;16602:75:0;;;15838:164;;;;;;;;;;-1:-1:-1;15838:164:0;;;;;:::i;:::-;;:::i;16681:79::-;;;;;;;;;;;;16718:42;16681:79;;26754:143;;;;;;;;;;-1:-1:-1;26754:143:0;;;;;:::i;:::-;;:::i;13489:87::-;;;;;;;;;;-1:-1:-1;13562:6:0;;-1:-1:-1;;;;;13562:6:0;13489:87;;16282:30;;;;;;;;;;;;;;;;2726:104;;;;;;;;;;;;;:::i;19045:410::-;;;;;;;;;;-1:-1:-1;19045:410:0;;;;;:::i;:::-;;:::i;19463:165::-;;;;;;;;;;-1:-1:-1;19463:165:0;;;;;:::i;:::-;;:::i;17019:41::-;;;;;;;;;;-1:-1:-1;17019:41:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;26032:278;;;;;;;;;;-1:-1:-1;26032:278:0;;;;;:::i;:::-;;:::i;17067:43::-;;;;;;;;;;-1:-1:-1;17067:43:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;4417:201;;;;;;;;;;-1:-1:-1;4417:201:0;;;;;:::i;:::-;-1:-1:-1;;;;;4583:18:0;;;4551:7;4583:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;4417:201;13814:192;;;;;;;;;;-1:-1:-1;13814:192:0;;;;;:::i;:::-;;:::i;16920:40::-;;;;;;;;;;-1:-1:-1;16920:40:0;;;;;;;;;;;;16238:37;;;;;;;;;;-1:-1:-1;16238:37:0;;;;-1:-1:-1;;;16238:37:0;;;;;;2507:100;2561:13;2594:5;2587:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2507:100;:::o;18164:161::-;18239:4;18256:39;309:10;18279:7;18288:6;18256:8;:39::i;:::-;-1:-1:-1;18313:4:0;18164:161;;;;;:::o;25386:179::-;13562:6;;-1:-1:-1;;;;;13562:6:0;309:10;13624:23;13616:68;;;;-1:-1:-1;;;13616:68:0;;;;;;;:::i;:::-;;;;;;;;;25449:10:::1;::::0;-1:-1:-1;;;25449:10:0;::::1;;;25448:11;25440:48;;;::::0;-1:-1:-1;;;25440:48:0;;6556:2:1;25440:48:0::1;::::0;::::1;6538:21:1::0;6595:2;6575:18;;;6568:30;6634:26;6614:18;;;6607:54;6678:18;;25440:48:0::1;6354:348:1::0;25440:48:0::1;25499:10;:17:::0;;-1:-1:-1;;;;25499:17:0::1;-1:-1:-1::0;;;25499:17:0::1;::::0;;25545:12:::1;25527:15;:30:::0;25386:179::o;18333:448::-;18465:4;18482:36;18492:6;18500:9;18511:6;18482:9;:36::i;:::-;-1:-1:-1;;;;;18558:19:0;;18531:24;18558:19;;;:11;:19;;;;;;;;309:10;18558:33;;;;;;;;18610:26;;;;18602:79;;;;-1:-1:-1;;;18602:79:0;;6909:2:1;18602:79:0;;;6891:21:1;6948:2;6928:18;;;6921:30;6987:34;6967:18;;;6960:62;-1:-1:-1;;;7038:18:1;;;7031:38;7086:19;;18602:79:0;6707:404:1;18602:79:0;18692:57;18701:6;309:10;18723:25;18742:6;18723:16;:25;:::i;:::-;18692:8;:57::i;:::-;-1:-1:-1;18769:4:0;;18333:448;-1:-1:-1;;;;18333:448:0:o;18789:248::-;309:10;18905:4;18959:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;18959:34:0;;;;;;;;;;18905:4;;18927:80;;18950:7;;18959:47;;18996:10;;18959:47;:::i;15428:91::-;15484:27;309:10;15504:6;15484:5;:27::i;:::-;15428:91;:::o;25788:236::-;13562:6;;-1:-1:-1;;;;;13562:6:0;309:10;13624:23;13616:68;;;;-1:-1:-1;;;13616:68:0;;;;;;;:::i;:::-;25925:1:::1;25912:10;:14;25904:48;;;::::0;-1:-1:-1;;;25904:48:0;;7713:2:1;25904:48:0::1;::::0;::::1;7695:21:1::0;7752:2;7732:18;;;7725:30;-1:-1:-1;;;7771:18:1;;;7764:51;7832:18;;25904:48:0::1;7511:345:1::0;25904:48:0::1;26002:14;3552:2:::0;26002::::1;:14;:::i;:::-;25989:27;::::0;:10;:27:::1;:::i;:::-;25963:23;:53:::0;-1:-1:-1;25788:236:0:o;26432:314::-;13562:6;;-1:-1:-1;;;;;13562:6:0;309:10;13624:23;13616:68;;;;-1:-1:-1;;;13616:68:0;;;;;;;:::i;:::-;26523:4:::1;26484:20;3899:18:::0;;;;;;;;;;;26543:14;;26540:73:::1;;26571:30;26588:12;26571:16;:30::i;:::-;26642:21;26677:12:::0;;26674:65:::1;;26703:24;26716:10;26703:12;:24::i;:::-;26473:273;;26432:314::o:0;25573:207::-;13562:6;;-1:-1:-1;;;;;13562:6:0;309:10;13624:23;13616:68;;;;-1:-1:-1;;;13616:68:0;;;;;;;:::i;:::-;25672:9:::1;25667:106;25691:8;:15;25687:1;:19;25667:106;;;25755:6;25728:11;:24;25740:8;25749:1;25740:11;;;;;;;;:::i;:::-;;::::0;;::::1;::::0;;;;;;;-1:-1:-1;;;;;25728:24:0::1;::::0;;;::::1;::::0;;;;;;-1:-1:-1;25728:24:0;:33;;-1:-1:-1;;25728:33:0::1;::::0;::::1;;::::0;;;::::1;::::0;;25708:3;::::1;::::0;::::1;:::i;:::-;;;;25667:106;;;;25573:207:::0;;:::o;13712:94::-;13562:6;;-1:-1:-1;;;;;13562:6:0;309:10;13624:23;13616:68;;;;-1:-1:-1;;;13616:68:0;;;;;;;:::i;:::-;13777:21:::1;13795:1;13777:9;:21::i;:::-;13712:94::o:0;15838:164::-;15915:46;15931:7;309:10;15954:6;15915:15;:46::i;:::-;15972:22;15978:7;15987:6;15972:5;:22::i;26754:143::-;13562:6;;-1:-1:-1;;;;;13562:6:0;309:10;13624:23;13616:68;;;;-1:-1:-1;;;13616:68:0;;;;;;;:::i;:::-;26865:15:::1;::::0;26839:50:::1;::::0;-1:-1:-1;;;26839:50:0;;-1:-1:-1;;;;;26865:15:0;;::::1;26839:50;::::0;::::1;9863:51:1::0;9930:18;;;9923:34;;;26839:25:0;;::::1;::::0;::::1;::::0;9836:18:1;;26839:50:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;2726:104::-:0;2782:13;2815:7;2808:14;;;;;:::i;19045:410::-;309:10;19166:4;19215:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;19215:34:0;;;;;;;;;;19268:35;;;;19260:85;;;;-1:-1:-1;;;19260:85:0;;10420:2:1;19260:85:0;;;10402:21:1;10459:2;10439:18;;;10432:30;10498:34;10478:18;;;10471:62;-1:-1:-1;;;10549:18:1;;;10542:35;10594:19;;19260:85:0;10218:401:1;19260:85:0;19356:67;309:10;19379:7;19388:34;19407:15;19388:16;:34;:::i;19356:67::-;-1:-1:-1;19443:4:0;;19045:410;-1:-1:-1;;;19045:410:0:o;19463:165::-;19541:4;19558:40;19568:10;19580:9;19591:6;19558:9;:40::i;26032:278::-;13562:6;;-1:-1:-1;;;;;13562:6:0;309:10;13624:23;13616:68;;;;-1:-1:-1;;;13616:68:0;;;;;;;:::i;:::-;26163:2:::1;26146:13;:19;;26137:29;;;::::0;::::1;;26204:2;26186:14;:20;;26177:30;;;::::0;::::1;;26226:26;::::0;;::::1;::::0;;::::1;::::0;;;;;-1:-1:-1;26226:26:0::1;::::0;;::::1;::::0;;;;;;;;;26218:5:::1;:34:::0;;;;;;;;;;;;26275:27;;;;::::1;::::0;;;;;;;::::1;::::0;;;;;;;26263:9:::1;:39:::0;;;;;;;26032:278::o;13814:192::-;13562:6;;-1:-1:-1;;;;;13562:6:0;309:10;13624:23;13616:68;;;;-1:-1:-1;;;13616:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;13903:22:0;::::1;13895:73;;;::::0;-1:-1:-1;;;13895:73:0;;10826:2:1;13895:73:0::1;::::0;::::1;10808:21:1::0;10865:2;10845:18;;;10838:30;10904:34;10884:18;;;10877:62;-1:-1:-1;;;10955:18:1;;;10948:36;11001:19;;13895:73:0::1;10624:402:1::0;13895:73:0::1;13979:19;13989:8;13979:9;:19::i;11137:380::-:0;-1:-1:-1;;;;;11273:19:0;;11265:68;;;;-1:-1:-1;;;11265:68:0;;11233:2:1;11265:68:0;;;11215:21:1;11272:2;11252:18;;;11245:30;11311:34;11291:18;;;11284:62;-1:-1:-1;;;11362:18:1;;;11355:34;11406:19;;11265:68:0;11031:400:1;11265:68:0;-1:-1:-1;;;;;11352:21:0;;11344:68;;;;-1:-1:-1;;;11344:68:0;;11638:2:1;11344:68:0;;;11620:21:1;11677:2;11657:18;;;11650:30;11716:34;11696:18;;;11689:62;-1:-1:-1;;;11767:18:1;;;11760:32;11809:19;;11344:68:0;11436:398:1;11344:68:0;-1:-1:-1;;;;;11425:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;11477:32;;1500:25:1;;;11477:32:0;;1473:18:1;11477:32:0;;;;;;;11137:380;;;:::o;19636:3214::-;19786:1;19777:6;:10;19769:64;;;;-1:-1:-1;;;19769:64:0;;12041:2:1;19769:64:0;;;12023:21:1;12080:2;12060:18;;;12053:30;12119:34;12099:18;;;12092:62;-1:-1:-1;;;12170:18:1;;;12163:39;12219:19;;19769:64:0;11839:405:1;19769:64:0;-1:-1:-1;;;;;19853:19:0;;;;;;:11;:19;;;;;;;;19852:20;:47;;;;-1:-1:-1;;;;;;19877:22:0;;;;;;:11;:22;;;;;;;;19876:23;19852:47;19844:79;;;;-1:-1:-1;;;19844:79:0;;12451:2:1;19844:79:0;;;12433:21:1;12490:2;12470:18;;;12463:30;-1:-1:-1;;;12509:18:1;;;12502:49;12568:18;;19844:79:0;12249:343:1;19844:79:0;-1:-1:-1;;;;;19941:17:0;;;;;;:9;:17;;;;;;;;19940:18;:43;;;;-1:-1:-1;;;;;;19963:20:0;;;;;;:9;:20;;;;;;;;19962:21;19940:43;19936:118;;;20008:10;;-1:-1:-1;;;20008:10:0;;;;20000:42;;;;-1:-1:-1;;;20000:42:0;;12799:2:1;20000:42:0;;;12781:21:1;12838:2;12818:18;;;12811:30;-1:-1:-1;;;12857:18:1;;;12850:49;12916:18;;20000:42:0;12597:343:1;20000:42:0;20080:13;;-1:-1:-1;;;;;20070:23:0;;;20080:13;;20070:23;:61;;;;-1:-1:-1;20112:15:0;;:19;;20130:1;20112:19;:::i;:::-;20097:12;:34;20070:61;20066:123;;;-1:-1:-1;;;;;20148:22:0;;;;;;:11;:22;;;;;:29;;-1:-1:-1;;20148:29:0;20173:4;20148:29;;;20066:123;20215:13;;-1:-1:-1;;;;;20205:23:0;;;20215:13;;20205:23;:48;;;;-1:-1:-1;;;;;;20233:20:0;;;;;;:9;:20;;;;;;;;20232:21;20205:48;:63;;;;-1:-1:-1;20258:10:0;;-1:-1:-1;;;20258:10:0;;;;20257:11;20205:63;20201:315;;;20303:11;;20293:6;:21;;20285:63;;;;-1:-1:-1;;;20285:63:0;;13147:2:1;20285:63:0;;;13129:21:1;13186:2;13166:18;;;13159:30;13225:31;13205:18;;;13198:59;13274:18;;20285:63:0;12945:353:1;20285:63:0;20422:14;;20412:6;20389:20;20399:9;-1:-1:-1;;;;;3899:18:0;3872:7;3899:18;;;;;;;;;;;;3798:127;20389:20;:29;;;;:::i;:::-;:47;;20363:141;;;;-1:-1:-1;;;20363:141:0;;13505:2:1;20363:141:0;;;13487:21:1;;;13524:18;;;13517:30;13583:34;13563:18;;;13556:62;13635:18;;20363:141:0;13303:356:1;20363:141:0;20556:13;;-1:-1:-1;;;;;20546:23:0;;;20556:13;;20546:23;;;;:48;;-1:-1:-1;;;;;;20574:20:0;;;;;;:9;:20;;;;;;;;20573:21;20546:48;:70;;;;-1:-1:-1;;;;;;20599:17:0;;;;;;:9;:17;;;;;;;;20598:18;20546:70;:85;;;;-1:-1:-1;20621:10:0;;-1:-1:-1;;;20621:10:0;;;;20620:11;20546:85;20528:441;;;20676:12;;20666:6;:22;;20658:65;;;;-1:-1:-1;;;20658:65:0;;13866:2:1;20658:65:0;;;13848:21:1;13905:2;13885:18;;;13878:30;13944:32;13924:18;;;13917:60;13994:18;;20658:65:0;13664:354:1;20658:65:0;20755:13;;-1:-1:-1;;;;;20742:26:0;;;20755:13;;20742:26;20738:220;;20852:14;;20842:6;20819:20;20829:9;-1:-1:-1;;;;;3899:18:0;3872:7;3899:18;;;;;;;;;;;;3798:127;20819:20;:29;;;;:::i;:::-;:47;;20789:153;;;;-1:-1:-1;;;20789:153:0;;13505:2:1;20789:153:0;;;13487:21:1;;;13524:18;;;13517:30;13583:34;13563:18;;;13556:62;13635:18;;20789:153:0;13303:356:1;20789:153:0;20981:15;21007:14;21032:11;21054:15;21080:18;21109:25;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;21109:25:0;21222:10;;-1:-1:-1;;;21222:10:0;;;;;:31;;-1:-1:-1;;;;;;21236:17:0;;;;;;:9;:17;;;;;;;;21222:31;:55;;;-1:-1:-1;;;;;;21257:20:0;;;;;;:9;:20;;;;;;;;21222:55;21218:865;;;21298:1;21292:7;;21218:865;;;21363:13;;-1:-1:-1;;;;;21363:13:0;;;21350:26;;;;21346:737;;21459:9;:19;21420;;:58;;21459:19;21420:58;:::i;:::-;21534:14;;21563:24;;;;;;;;21534:9;21563:24;;;;;;;;;;;;;;;21393:85;;-1:-1:-1;21393:85:0;;-1:-1:-1;21534:14:0;-1:-1:-1;21563:24:0;-1:-1:-1;21346:737:0;;;21619:13;;-1:-1:-1;;;;;21619:13:0;;;21609:23;;;;21605:478;;21711:5;:15;21676;;:50;;21711:15;21676:50;:::i;:::-;21782:10;;21807:20;;;;;;;;21782:5;21807:20;;;;;;;;;;;;;;;21649:77;;-1:-1:-1;21649:77:0;;-1:-1:-1;21782:10:0;-1:-1:-1;21807:20:0;-1:-1:-1;21605:478:0;;;21930:13;:23;21887;;:66;;21930:23;21887:66;:::i;:::-;22010:18;;22043:28;;;;;;;;22010:13;22043:28;;;;;;;;;;;;;;;21860:93;;-1:-1:-1;21860:93:0;;-1:-1:-1;22010:18:0;-1:-1:-1;22043:28:0;-1:-1:-1;21605:478:0;22121:3;22102:15;22111:6;22102;:15;:::i;:::-;22101:23;;;;:::i;:::-;22095:29;-1:-1:-1;22169:3:0;22149:16;22158:7;22149:6;:16;:::i;:::-;22148:24;;;;:::i;:::-;22286:18;;22135:37;;-1:-1:-1;;;;22286:18:0;;;;:45;;;;-1:-1:-1;22318:13:0;;-1:-1:-1;;;;;22308:23:0;;;22318:13;;22308:23;;22286:45;22282:81;;;22333:30;22341:7;22350:12;22333:7;:30::i;:::-;22405:63;22421:6;22429:9;22450:16;22456:10;22450:3;:16;:::i;:::-;22440:27;;:6;:27;:::i;:::-;22405:15;:63::i;:::-;22510:14;;22507:77;;22541:31;22553:6;22561:10;22541:11;:31::i;:::-;22598:7;;22594:249;;22670:11;;22666:164;;22702:17;22743:3;22723:16;22732:7;22723:6;:16;:::i;:::-;22722:24;;;;:::i;:::-;22702:44;;22765:49;22781:6;22797:4;22804:9;22765:15;:49::i;:::-;22683:147;22666:164;19758:3092;;;;;;19636:3214;;;:::o;9955:744::-;-1:-1:-1;;;;;10039:21:0;;10031:67;;;;-1:-1:-1;;;10031:67:0;;14447:2:1;10031:67:0;;;14429:21:1;14486:2;14466:18;;;14459:30;14525:34;14505:18;;;14498:62;-1:-1:-1;;;14576:18:1;;;14569:31;14617:19;;10031:67:0;14245:397:1;10031:67:0;-1:-1:-1;;;;;10203:18:0;;10178:22;10203:18;;;;;;;;;;;10240:24;;;;10232:71;;;;-1:-1:-1;;;10232:71:0;;14849:2:1;10232:71:0;;;14831:21:1;14888:2;14868:18;;;14861:30;14927:34;14907:18;;;14900:62;-1:-1:-1;;;14978:18:1;;;14971:32;15020:19;;10232:71:0;14647:398:1;10232:71:0;-1:-1:-1;;;;;10339:18:0;;:9;:18;;;;;;;;;;;;10360:23;;;10339:44;;10478:12;:22;;;;;;;10583:42;;1500:25:1;;;10609:6:0;;10339:18;10583:42;;1473:18:1;10583:42:0;;;;;;;25667:106:::1;25573:207:::0;;:::o;24301:555::-;24451:16;;;24465:1;24451:16;;;;;;;;24427:21;;24451:16;;;;;;;;;;-1:-1:-1;24451:16:0;24427:40;;24496:4;24478;24483:1;24478:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;24478:23:0;;;:7;;;;;;;;;;:23;;;;24522:13;;:20;;;-1:-1:-1;;;24522:20:0;;;;:13;;;;;:18;;:20;;;;;24478:7;;24522:20;;;;;:13;:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;24512:4;24517:1;24512:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;24512:30:0;;;:7;;;;;;;;;:30;24587:13;;24555:60;;24572:4;;24587:13;24603:11;24555:8;:60::i;:::-;24654:13;;:194;;-1:-1:-1;;;24654:194:0;;-1:-1:-1;;;;;24654:13:0;;;;:64;;:194;;24733:11;;24654:13;;24775:4;;24802;;24822:15;;24654:194;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24356:500;24301:555;:::o;26318:106::-;26383:15;;26375:41;;-1:-1:-1;;;;;26383:15:0;;;;26375:41;;;;;26409:6;;26383:15;26375:41;26383:15;26375:41;26409:6;26383:15;26375:41;;;;;;;;;;;;;;;;;;;14014:173;14089:6;;;-1:-1:-1;;;;;14106:17:0;;;-1:-1:-1;;;;;;14106:17:0;;;;;;;14139:40;;14089:6;;;14106:17;14089:6;;14139:40;;14070:16;;14139:40;14059:128;14014:173;:::o;5226:419::-;-1:-1:-1;;;;;4583:18:0;;;5327:24;4583:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;-1:-1:-1;;5394:37:0;;5390:248;;5476:6;5456:16;:26;;5448:68;;;;-1:-1:-1;;;5448:68:0;;16493:2:1;5448:68:0;;;16475:21:1;16532:2;16512:18;;;16505:30;16571:31;16551:18;;;16544:59;16620:18;;5448:68:0;16291:353:1;5448:68:0;5560:51;5569:5;5576:7;5604:6;5585:16;:25;5560:8;:51::i;:::-;5316:329;5226:419;;;:::o;22858:1435::-;17483:10;;-1:-1:-1;;;17483:10:0;;;;17478:110;;17510:10;:17;;-1:-1:-1;;;;17510:17:0;-1:-1:-1;;;17510:17:0;;;22949:49;;22980:7:::1;22949:49;23054:4;23010:23;3899:18:::0;;;;;;;;;;;23094:23:::1;::::0;23075:42;::::1;23071:1215;;23164:1;23138:23;;:27;23134:109;;;-1:-1:-1::0;23204:23:0::1;::::0;23134:109:::1;23314:19;23336:11;:7:::0;23346:1:::1;23336:11;:::i;:::-;23314:33;;23362:32;23456:11;23416:9;:19;;;23398:15;:37;;;;:::i;:::-;23397:70;;;;:::i;:::-;23362:105:::0;-1:-1:-1;23482:14:0::1;23499:42;23362:105:::0;23499:15;:42:::1;:::i;:::-;23482:59:::0;-1:-1:-1;23583:21:0::1;23621:24;23482:59:::0;23621:16:::1;:24::i;:::-;23662:20;23685:38;23709:14:::0;23685:21:::1;:38;:::i;:::-;23662:61;;23738:19;23790:9;:19;;;23776:11;:33;;;;:::i;:::-;23760:50;::::0;:12;:50:::1;:::i;:::-;23738:72;;23825:29;23871:9;:19;;;23857:11;:33;;;;:::i;:::-;23825:65:::0;-1:-1:-1;23911:25:0;;23907:172:::1;;24002:61;24015:24;24041:21;24002:12;:61::i;:::-;24136:19:::0;;24095:20:::1;::::0;24118:15:::1;:11:::0;24132:1:::1;24118:15;:::i;:::-;:37;;;;:::i;:::-;24095:60:::0;-1:-1:-1;24174:16:0;;24170:105:::1;;24219:15;::::0;24211:48:::1;::::0;-1:-1:-1;;;;;24219:15:0::1;24246:12:::0;24211:34:::1;:48::i;:::-;23119:1167;;;;;;;;23071:1215;22936:1357;17542:1;17558:10:::0;:18;;-1:-1:-1;;;;17558:18:0;;;22858:1435;;:::o;8641:578::-;-1:-1:-1;;;;;8781:20:0;;8773:70;;;;-1:-1:-1;;;8773:70:0;;16851:2:1;8773:70:0;;;16833:21:1;16890:2;16870:18;;;16863:30;16929:34;16909:18;;;16902:62;-1:-1:-1;;;16980:18:1;;;16973:35;17025:19;;8773:70:0;16649:401:1;8773:70:0;-1:-1:-1;;;;;8862:23:0;;8854:71;;;;-1:-1:-1;;;8854:71:0;;17257:2:1;8854:71:0;;;17239:21:1;17296:2;17276:18;;;17269:30;17335:34;17315:18;;;17308:62;-1:-1:-1;;;17386:18:1;;;17379:33;17429:19;;8854:71:0;17055:399:1;8854:71:0;-1:-1:-1;;;;;8962:17:0;;8938:21;8962:17;;;;;;;;;;;8998:23;;;;8990:74;;;;-1:-1:-1;;;8990:74:0;;17661:2:1;8990:74:0;;;17643:21:1;17700:2;17680:18;;;17673:30;17739:34;17719:18;;;17712:62;-1:-1:-1;;;17790:18:1;;;17783:36;17836:19;;8990:74:0;17459:402:1;8990:74:0;9095:22;9111:6;9095:13;:22;:::i;:::-;-1:-1:-1;;;;;9075:17:0;;;:9;:17;;;;;;;;;;;:42;;;;9128:20;;;;;;;;:30;;9152:6;;9075:9;9128:30;;9152:6;;9128:30;:::i;:::-;;;;;;;;9193:9;-1:-1:-1;;;;;9176:35:0;9185:6;-1:-1:-1;;;;;9176:35:0;;9204:6;9176:35;;;;1500:25:1;;1488:2;1473:18;;1354:177;9176:35:0;;;;;;;;8762:457;8641:578;;;:::o;24864:514::-;25044:13;;25012:60;;25029:4;;-1:-1:-1;;;;;25044:13:0;25060:11;25012:8;:60::i;:::-;25115:13;;:255;;-1:-1:-1;;;25115:255:0;;25187:4;25115:255;;;18207:34:1;18257:18;;;18250:34;;;25115:13:0;18300:18:1;;;18293:34;;;18343:18;;;18336:34;16718:42:0;18386:19:1;;;18379:44;25344:15:0;18439:19:1;;;18432:35;-1:-1:-1;;;;;25115:13:0;;;;:29;;25153:9;;18141:19:1;;25115:255:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;24864:514;;:::o;12932:319::-;13047:6;13022:21;:31;;13014:73;;;;-1:-1:-1;;;13014:73:0;;18991:2:1;13014:73:0;;;18973:21:1;19030:2;19010:18;;;19003:30;19069:31;19049:18;;;19042:59;19118:18;;13014:73:0;18789:353:1;13014:73:0;13101:12;13119:9;-1:-1:-1;;;;;13119:14:0;13142:6;13119:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13100:54;;;13173:7;13165:78;;;;-1:-1:-1;;;13165:78:0;;19559:2:1;13165:78:0;;;19541:21:1;19598:2;19578:18;;;19571:30;19637:34;19617:18;;;19610:62;19708:28;19688:18;;;19681:56;19754:19;;13165:78:0;19357:422:1;14:548;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;;;298:3;483:1;478:2;469:6;458:9;454:22;450:31;443:42;553:2;546;542:7;537:2;529:6;525:15;521:29;510:9;506:45;502:54;494:62;;;;14:548;;;;:::o;567:131::-;-1:-1:-1;;;;;642:31:1;;632:42;;622:70;;688:1;685;678:12;703:134;771:20;;800:31;771:20;800:31;:::i;:::-;703:134;;;:::o;842:315::-;910:6;918;971:2;959:9;950:7;946:23;942:32;939:52;;;987:1;984;977:12;939:52;1026:9;1013:23;1045:31;1070:5;1045:31;:::i;:::-;1095:5;1147:2;1132:18;;;;1119:32;;-1:-1:-1;;;842:315:1:o;1536:456::-;1613:6;1621;1629;1682:2;1670:9;1661:7;1657:23;1653:32;1650:52;;;1698:1;1695;1688:12;1650:52;1737:9;1724:23;1756:31;1781:5;1756:31;:::i;:::-;1806:5;-1:-1:-1;1863:2:1;1848:18;;1835:32;1876:33;1835:32;1876:33;:::i;:::-;1536:456;;1928:7;;-1:-1:-1;;;1982:2:1;1967:18;;;;1954:32;;1536:456::o;2186:180::-;2245:6;2298:2;2286:9;2277:7;2273:23;2269:32;2266:52;;;2314:1;2311;2304:12;2266:52;-1:-1:-1;2337:23:1;;2186:180;-1:-1:-1;2186:180:1:o;2903:127::-;2964:10;2959:3;2955:20;2952:1;2945:31;2995:4;2992:1;2985:15;3019:4;3016:1;3009:15;3035:118;3121:5;3114:13;3107:21;3100:5;3097:32;3087:60;;3143:1;3140;3133:12;3158:128;3223:20;;3252:28;3223:20;3252:28;:::i;3291:1191::-;3381:6;3389;3442:2;3430:9;3421:7;3417:23;3413:32;3410:52;;;3458:1;3455;3448:12;3410:52;3498:9;3485:23;3527:18;3568:2;3560:6;3557:14;3554:34;;;3584:1;3581;3574:12;3554:34;3622:6;3611:9;3607:22;3597:32;;3667:7;3660:4;3656:2;3652:13;3648:27;3638:55;;3689:1;3686;3679:12;3638:55;3725:2;3712:16;3747:4;3770:2;3766;3763:10;3760:36;;;3776:18;;:::i;:::-;3822:2;3819:1;3815:10;3854:2;3848:9;3917:2;3913:7;3908:2;3904;3900:11;3896:25;3888:6;3884:38;3972:6;3960:10;3957:22;3952:2;3940:10;3937:18;3934:46;3931:72;;;3983:18;;:::i;:::-;4019:2;4012:22;4069:18;;;4103:15;;;;-1:-1:-1;4145:11:1;;;4141:20;;;4173:19;;;4170:39;;;4205:1;4202;4195:12;4170:39;4229:11;;;;4249:148;4265:6;4260:3;4257:15;4249:148;;;4331:23;4350:3;4331:23;:::i;:::-;4319:36;;4282:12;;;;4375;;;;4249:148;;;4416:6;-1:-1:-1;4441:35:1;;-1:-1:-1;4457:18:1;;;4441:35;:::i;:::-;4431:45;;;;;;3291:1191;;;;;:::o;4487:247::-;4546:6;4599:2;4587:9;4578:7;4574:23;4570:32;4567:52;;;4615:1;4612;4605:12;4567:52;4654:9;4641:23;4673:31;4698:5;4673:31;:::i;:::-;4723:5;4487:247;-1:-1:-1;;;4487:247:1:o;4962:248::-;5030:6;5038;5091:2;5079:9;5070:7;5066:23;5062:32;5059:52;;;5107:1;5104;5097:12;5059:52;-1:-1:-1;;5130:23:1;;;5200:2;5185:18;;;5172:32;;-1:-1:-1;4962:248:1:o;5215:388::-;5283:6;5291;5344:2;5332:9;5323:7;5319:23;5315:32;5312:52;;;5360:1;5357;5350:12;5312:52;5399:9;5386:23;5418:31;5443:5;5418:31;:::i;:::-;5468:5;-1:-1:-1;5525:2:1;5510:18;;5497:32;5538:33;5497:32;5538:33;:::i;:::-;5590:7;5580:17;;;5215:388;;;;;:::o;5608:380::-;5687:1;5683:12;;;;5730;;;5751:61;;5805:4;5797:6;5793:17;5783:27;;5751:61;5858:2;5850:6;5847:14;5827:18;5824:38;5821:161;;5904:10;5899:3;5895:20;5892:1;5885:31;5939:4;5936:1;5929:15;5967:4;5964:1;5957:15;5821:161;;5608:380;;;:::o;5993:356::-;6195:2;6177:21;;;6214:18;;;6207:30;6273:34;6268:2;6253:18;;6246:62;6340:2;6325:18;;5993:356::o;7116:127::-;7177:10;7172:3;7168:20;7165:1;7158:31;7208:4;7205:1;7198:15;7232:4;7229:1;7222:15;7248:128;7315:9;;;7336:11;;;7333:37;;;7350:18;;:::i;7381:125::-;7446:9;;;7467:10;;;7464:36;;;7480:18;;:::i;7861:422::-;7950:1;7993:5;7950:1;8007:270;8028:7;8018:8;8015:21;8007:270;;;8087:4;8083:1;8079:6;8075:17;8069:4;8066:27;8063:53;;;8096:18;;:::i;:::-;8146:7;8136:8;8132:22;8129:55;;;8166:16;;;;8129:55;8245:22;;;;8205:15;;;;8007:270;;;8011:3;7861:422;;;;;:::o;8288:806::-;8337:5;8367:8;8357:80;;-1:-1:-1;8408:1:1;8422:5;;8357:80;8456:4;8446:76;;-1:-1:-1;8493:1:1;8507:5;;8446:76;8538:4;8556:1;8551:59;;;;8624:1;8619:130;;;;8531:218;;8551:59;8581:1;8572:10;;8595:5;;;8619:130;8656:3;8646:8;8643:17;8640:43;;;8663:18;;:::i;:::-;-1:-1:-1;;8719:1:1;8705:16;;8734:5;;8531:218;;8833:2;8823:8;8820:16;8814:3;8808:4;8805:13;8801:36;8795:2;8785:8;8782:16;8777:2;8771:4;8768:12;8764:35;8761:77;8758:159;;;-1:-1:-1;8870:19:1;;;8902:5;;8758:159;8949:34;8974:8;8968:4;8949:34;:::i;:::-;9019:6;9015:1;9011:6;9007:19;8998:7;8995:32;8992:58;;;9030:18;;:::i;:::-;9068:20;;8288:806;-1:-1:-1;;;8288:806:1:o;9099:140::-;9157:5;9186:47;9227:4;9217:8;9213:19;9207:4;9186:47;:::i;9244:168::-;9317:9;;;9348;;9365:15;;;9359:22;;9345:37;9335:71;;9386:18;;:::i;9417:127::-;9478:10;9473:3;9469:20;9466:1;9459:31;9509:4;9506:1;9499:15;9533:4;9530:1;9523:15;9549:135;9588:3;9609:17;;;9606:43;;9629:18;;:::i;:::-;-1:-1:-1;9676:1:1;9665:13;;9549:135::o;9968:245::-;10035:6;10088:2;10076:9;10067:7;10063:23;10059:32;10056:52;;;10104:1;10101;10094:12;10056:52;10136:9;10130:16;10155:28;10177:5;10155:28;:::i;14023:217::-;14063:1;14089;14079:132;;14133:10;14128:3;14124:20;14121:1;14114:31;14168:4;14165:1;14158:15;14196:4;14193:1;14186:15;14079:132;-1:-1:-1;14225:9:1;;14023:217::o;15050:251::-;15120:6;15173:2;15161:9;15152:7;15148:23;15144:32;15141:52;;;15189:1;15186;15179:12;15141:52;15221:9;15215:16;15240:31;15265:5;15240:31;:::i;15306:980::-;15568:4;15616:3;15605:9;15601:19;15647:6;15636:9;15629:25;15673:2;15711:6;15706:2;15695:9;15691:18;15684:34;15754:3;15749:2;15738:9;15734:18;15727:31;15778:6;15813;15807:13;15844:6;15836;15829:22;15882:3;15871:9;15867:19;15860:26;;15921:2;15913:6;15909:15;15895:29;;15942:1;15952:195;15966:6;15963:1;15960:13;15952:195;;;16031:13;;-1:-1:-1;;;;;16027:39:1;16015:52;;16122:15;;;;16087:12;;;;16063:1;15981:9;15952:195;;;-1:-1:-1;;;;;;;16203:32:1;;;;16198:2;16183:18;;16176:60;-1:-1:-1;;;16267:3:1;16252:19;16245:35;16164:3;15306:980;-1:-1:-1;;;15306:980:1:o;18478:306::-;18566:6;18574;18582;18635:2;18623:9;18614:7;18610:23;18606:32;18603:52;;;18651:1;18648;18641:12;18603:52;18680:9;18674:16;18664:26;;18730:2;18719:9;18715:18;18709:25;18699:35;;18774:2;18763:9;18759:18;18753:25;18743:35;;18478:306;;;;;:::o
Swarm Source
ipfs://47c9a84ad476e3ab1fa4e411197b34344079f1bdbeb7fdf4f265c9ac84d2b3fe
[ 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.