Token DumpBuster

 

Overview [ERC-20]

Max Total Supply:
100,000,000,000 GTFO

Holders:
370

Transfers:
-

 
Loading
[ Download CSV Export  ] 
Loading
[ Download CSV Export  ] 
Loading

Click here to update the token information / general information
# Exchange Pair Price  24H Volume % Volume
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
DumpBuster_v1

Compiler Version
v0.8.10+commit.fc410830

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, GNU GPLv3 license

Contract Source Code (Solidity Multiple files format)

File 2 of 3: DumpBusterv1.sol
// SPDX-License-Identifier: GPL-3.0
pragma solidity >=0.7.0 <0.9.0;

import "./Context.sol";
import "./IERC20.sol";

contract DumpBuster_v1 is Context, IERC20 {

    mapping (address => uint256) private _balances; // How much money everyone has
    mapping (address => bool) private _exchanges; // A map of exchanges for swapping coins. These addresses are whitelisted from time based transactions.
    mapping (address => mapping (address => uint256)) private _allowances; // For Uniswap. Used to let uniswap make exchanges for you.

    address private _owner; // Who owns the token
    address private _banner; // Who can ban people
    address private _proxy; // Address of the proxy
    address private _tax; // The address of the wallet that project tax funds goes to
    uint256 private _taxAmount; // Amount we tax that goes to _tax wallet, treated as a percentage (10000 = 100%)
    address private _treasury; // Address of our treasury wallet
    uint256 private _sellTaxFactor; // Multiplicative factor by which sell tax differs from buy tax (10000 = 100%, 18000 = 1.8x)


    //mapping (address => uint256) private _lastTransactBlocks; // Keeps track of the last block a user transacted in
    //mapping (address => uint256) private _lastTransactTimes; // Keeps track of the last time a user transacted
    bool private _tradeIsOpen; // Is trading available
    bool private _buyIsOpen; // Is exchange buying available
    bool private _sellIsOpen; // Is exchange selling available
    //uint256 private _launchedBlock; // What block number did we launch on
    uint256 private _blockRestriction; // The number of blocks people need to wait til the second transaction
    uint256 private _timeRestriction; // How long folks need to wait between transactions
    uint256 private _transactRestriction; // Maximum number of tokens a user is allowed to trade in one transaction
    uint256 private _transactRestrictionTime; // How long is the transaction size restriction in effect
    uint256 private _transactRestrictionTimeStart; // What time does the transaction time restriction start
    bool private _transactRestrictionEnabled; // Is the transaction size restriction enabled

    bool private _initialized; // Have we initialzed
    uint256 private _DECIMALS;
    uint256 private _DECIMALFACTOR;
    uint256 private _SUPPLY;
    uint256 private _TotalSupply;
    uint256 private _TENTHOUSANDUNITS;
    string private _NAME;
    string private _SYMBOL; // Our Ticker

    mapping (address => mapping (address => uint256)) private botChecker; // For each coin the last time each wallet transacted.
    mapping (address => mapping (address => bool)) private blacklist; // For each coin which wallets are blacklisted?
    mapping (address => bool) private _partners; // Map of which coins should be allowed to utilize DumpBuster methods

    // event for EVM logging
    event OwnerSet(address indexed oldOwner, address indexed newOwner);
    event Transfer(address recipient, uint256 amount);
    event Approval(address spender, uint256 amount);

    /**
     * Description: Check if a user is the owner. Used by methods that should only be run by the owner wallet.
     **/
    modifier isOwner() {
        // If the first argument of 'require' evaluates to 'false', execution terminates and all
        // changes to the state and to Ether balances are reverted.
        // This used to consume all gas in old EVM versions, but not anymore.
        // It is often a good idea to use 'require' to check if functions are called correctly.
        // As a second argument, you can also provide an explanation about what went wrong.
        require(_msgSender() == _owner, "Caller is not owner");
        _;
    }

    /**
     * Description: Check if a user is the owner or banner. Used by methods that should only be run by the owner or banner wallets.
     **/
    modifier isOwnerOrBanner() {
        require(_msgSender() == _owner || _msgSender() == _banner, "Caller is not owner or banner");
        _;
    }

    /**
     * Description: Used to initialize all variables when contract is launched. Only ever run at launch.
     **/
    function initialize() public {
        require(!_initialized);
        _owner = _msgSender();
    	_tax = 0xefe5bb8529b6bF478EF8c18cd115746F162C9C2d;
    	_banner = _msgSender();
    	_treasury = _msgSender();
        _tradeIsOpen = false;
        _buyIsOpen = true;
        _sellIsOpen = false;
    	_blockRestriction = 2;
        _timeRestriction = 60;
    	_taxAmount = 320;
    	_sellTaxFactor = 18000;
    	_transactRestriction = 250000000;
    	_transactRestrictionTime = 60;
    	_transactRestrictionTimeStart = block.timestamp;

    	_DECIMALS = 9;
    	_DECIMALFACTOR = 10 ** _DECIMALS;
    	_SUPPLY = 100000000000;
    	_TotalSupply = _SUPPLY * _DECIMALFACTOR;
    	_TENTHOUSANDUNITS = 10000;
    	_NAME = "DumpBuster";
    	_SYMBOL = "GTFO";

    	_balances[_msgSender()] = _TotalSupply;

    	_initialized = true;

        emit OwnerSet(address(0), _owner);
    }

    /**
     * Description: Change owner
     * @param newOwner address of new owner
     */
    function changeOwner(address newOwner) public isOwner {
        emit OwnerSet(_owner, newOwner);
        _owner = newOwner;
    }

    /**
     * Description: Change banner
     * @param newBanner address of new banner
     */
    function changeBanner(address newBanner) public isOwner {
        _banner = newBanner;
    }

    /**
     * Description: Open trading after launch
     */
    function openTrade() public isOwner {
        _tradeIsOpen = true;
    }

    /**
     * Description: Close trading in emergency, even transacts other than buys/sells
     */
    function closeTrade() public isOwner {
        _tradeIsOpen = false;
    }

    /**
     * Description: Open buying on exchanges
     */
    function openBuys() public isOwner {
        _buyIsOpen = true;
    }

    /**
     * Description: Open selling on exchanges
     */
    function openSells() public isOwner {
        _sellIsOpen = true;
    }

    /**
     * Description: Close buying on exchanges
     */
    function closeBuys() public isOwner {
        _buyIsOpen = false;
    }

    /**
     * Description: Close selling on exchanges
     */
    function closeSells() public isOwner {
        _sellIsOpen = false;
    }

    /**
     * Description: Add an exchange LP to the exchange list
     */
    function addExchange(address exchangeToAdd) public isOwner {
        _exchanges[exchangeToAdd] = true;
    }

    /**
     * Description: Remove an exchange LP to the exchange list
     */
    function removeExchange(address exchangeToRemove) public isOwner {
        _exchanges[exchangeToRemove] = false;
    }


    /**
     * Description: Set the address of our own coin up so we can utilize our own DumpBuster Methods. This can only be called once.
     * @param proxyAddress - The address of the proxy.
     */
    function setProxy(address proxyAddress) public isOwner {
        require(_proxy==address(0));
        _proxy = proxyAddress;
    }


    /**
     * Description: Used to white list contract addresses that utilize our methods.
     * @param partnerAddress - The address to add to our whitelist.
     */
    function addPartner(address partnerAddress) public isOwner {
        _partners[partnerAddress] = true;
    }

    /**
     * Description: Used to remove people from the whitelist. Will not delete their data in case they decide to come back.
     * @param partnerAddress - The address of the contract to remove from the whitelist.
     */
    function removePartner(address partnerAddress) public isOwner {
        _partners[partnerAddress] = false;
    }

    /**
     * Description: Allows admin to change the time restriction between transactions during time restriction windows.
     * @param newTime - The time in seconds to block after a transaction
     */
    function updateTimeRestriction(uint256 newTime) public isOwner {
        _timeRestriction = newTime;
    }

    /**
     * Description: Update how many blocks we make people wait to transact more than once during launch window.
     * @param newBlock - Number of blocks we will make people wait.
     */
    function updateBlockRestriction(uint256 newBlock) public isOwner {
        _blockRestriction = newBlock;
    }

    /**
     * Description: Update the wallet address general tax is sent to and change the general tax percentage (10000 = 100%).
     * @param taxAddress - The wallet address.
     * @param taxAmount - The percentage to send in tax to the general tax wallet (10000 = 100%).
     */
    function updateTax(address taxAddress, uint256 taxAmount) public isOwner {
        _tax = taxAddress;
        _taxAmount = taxAmount;
    }

    /**
     * Description: Change the amount of tokens people are able to trade during the time restricted periods.
     * @param transactRestriction - The amount of tokens people can transact during restricted periods.
     */
    function updateTransactRestriction(uint256 transactRestriction) public isOwner {
        _transactRestriction = transactRestriction;
    }

    /**
     * Description: Changes the amount of time the transaction restrictions are in effect and turns on or off transaction restrictions.
     * @param transactRestrictionTime - Amount of time to restrict transactions (number of seconds)
     * @param transactRestrictionEnabled - Should we start restrictions again.
     */
    function updateTransactRestrictionTime(uint256 transactRestrictionTime, bool transactRestrictionEnabled) public isOwner {
        _transactRestrictionTime = transactRestrictionTime;
        _transactRestrictionEnabled = transactRestrictionEnabled;
        _transactRestrictionTimeStart = block.timestamp;
    }

    /**
     * Description: Changes the treasury wallet address.
     * @param treasury - Wallet address of treasury wallet.
     */
    function updateTreasury(address treasury) public isOwner {
        _treasury = treasury;
    }

    /**
     * Description: Return owner address.
     * @return address of owner.
     */
    function getOwner() external view returns (address) {
        return _owner;
    }

    /**
     * Description: Return coin name.
     * @return name of coin.
     */
    function name() public view returns (string memory) {
        return _NAME;
    }

    /**
     * Description: Return ticker symbol.
     * @return Ticker Symbol
     */
    function symbol() public view returns (string memory) {
        return _SYMBOL;
    }

    /**
     * Description: Return how many digits there are to the right of the decimal.
     * @return Number of digits to the right of the decimal.
     */
    function decimals() public view returns (uint256) {
        return _DECIMALS;
    }

    /**
     * Description: Return total number of tokens in circulation.
     * @return Number of tokens in circulation.
     */
    function totalSupply() public override view returns (uint256) {
        return _TotalSupply;
    }

    /**
     * Description: Get the number of tokens in a given wallet.
     * @param account - Address of wallet to check.
     * @return Number of tokens in wallet.
     */
    function balanceOf(address account) public override view returns (uint256) {
        return _balances[account];
    }

    /**
     * Description: Lets a wallet transfer funds to another wallet.
     * @param recipient - Address of wallet to send funds to.
     * @param amount - Number of tokens to send to recipient.
     * @return Was transaction successful
     */
    function transfer(address recipient, uint256 amount) public override returns (bool) {
        return _transfer(_msgSender(), recipient, amount);
    }

    /**
     * Description: Lets a third wallet transfer funds from one wallet to another wallet.
     * @param sender - Address of wallet to take funds from.
     * @param recipient - Address of wallet to send funds to.
     * @param amount - Number of tokens to send to recipient.
     * @return Was transaction successful
     */
    function transferFrom(address sender, address recipient, uint256 amount) public override returns (bool) {
        require(amount <= _allowances[sender][_msgSender()], "Insufficient allowance");
        bool tranactionWentThrough = _transfer(sender, recipient, amount);

        if (tranactionWentThrough) {
            _allowances[sender][_msgSender()] = _allowances[sender][_msgSender()] - amount;
        }

        return tranactionWentThrough;
    }

    /**
     * Description: Allows a wallet to see how much another wallet has approved a third wallet to spend.
     * @param owner - The wallet address with the funds.
     * @param spender - The wallet approved to spend funds.
     * @return The amount approved for the owner / spender pair.
     */
    function allowance(address owner, address spender) public override view returns (uint256) {
        return _allowances[owner][spender];
    }

    /**
     * Description: Allows a wallet to approve a certain number of funds another wallet can transact with.
     * @param spender - The wallet approved to spend funds.
     * @param amount - The amount being approved to spend.
     * @return Whether the transaction was successful.
     */
    function approve(address spender, uint256 amount) public override returns (bool) {
        _allowances[_msgSender()][spender] = amount;
        emit Approval(_msgSender(), spender, amount);
        return true;
    }

    function fullScan(address coinId, address accountId, uint256 timeThreshold, uint256 tokenAmount, uint256 totalTokens, uint256 percentageThreshold) public returns (bool isIssue){
        collectTax();

        if (validateTimeBasedTransaction(coinId, accountId, timeThreshold, false)) {
            return true;
        }

        if (validateVolumeBasedTransaction(tokenAmount, totalTokens, percentageThreshold, false)) {
            return true;
        }

        if (validateManipulation(false)) {
            return true;
        }

        return false;
    }

    /**
     * Takes coin id, account id, and time threshold. If the account has traded the coin id since the time threshold we return true.
     **/
    function validateTimeBasedTransaction(address coinId, address accountId, uint256 timeThreshold) public returns (bool isIssue) {
        return validateTimeBasedTransaction(coinId, accountId, timeThreshold, true);
    }

    function validateTimeBasedTransaction(address coinId, address accountId, uint256 timeThreshold, bool collectThreshold) private returns (bool isIssue) {
        if (collectThreshold) {
            collectTax();
        }

        if ((block.timestamp - botChecker[coinId][accountId]) < timeThreshold) {
            return true;
        }
        return false;
    }

    function validateVolumeBasedTransaction(uint256 tokenAmount, uint256 totalTokens, uint256 percentageThreshold, address accountId) public returns (bool isIssue) {
        return validateVolumeBasedTransaction(tokenAmount, totalTokens, percentageThreshold, true);
    }

    function validateVolumeBasedTransaction(uint256 tokenAmount, uint256 totalTokens, uint256 percentageThreshold, bool collectThreshold) private returns (bool isIssue) {
        if (collectThreshold) {
            collectTax();
        }

        if (((tokenAmount * _TENTHOUSANDUNITS) / _TotalSupply) > (percentageThreshold)) {
            return true;
        }
        return false;
    }

    function validateManipulation() public returns (bool isIssue) {
        return validateManipulation(true);
    }

    function validateManipulation(bool collectThreshold) private returns (bool isIssue) {
        if (collectThreshold) {
            collectTax();
        }
    }

    function isOnBlackList(address coinId, address accountId) public view returns (bool isIssue) {
        return blacklist[coinId][accountId] == true;
    }

    function addToBlacklist(address coinId, address accountId) public isOwnerOrBanner {
        blacklist[coinId][accountId] = true;
    }

    function removeFromBlacklist(address coinId, address accountId) public isOwnerOrBanner {
        blacklist[coinId][accountId] = false;
    }

    /**
    * Call this method to log a transacttion which will update our tables.
     **/
    function transact(address coinId, address accountId) public returns (bool isIssue) {
        botChecker[coinId][accountId] = block.timestamp;
    }

    function collectTax() private view returns (bool hadCoin) {
        require (_partners[_msgSender()]);
    }

    /**
     * Description Method to handle transfer of funds from one account to another. Also handles taxes.
     * @param sender - wallet of sender
     * @param recipient - wallet of recipient
     * @param amount - number of tokens to transfer
     * @return Was transaction successful
     */
    function _transfer(address sender, address recipient, uint256 amount) private returns (bool) {
        require(_owner == sender || _tradeIsOpen, "Trading not currently open");

    	// Initializes to 0 - will only happen once - require always succeeds the first time
        //if (_lastTransactBlocks[sender] == 0) {
    	    //_lastTransactBlocks[sender] = _launchedBlock + _blockRestriction + 1;
    	//}
    	//require(_owner == sender || _lastTransactBlocks[sender] - _launchedBlock > _blockRestriction, "Cannot transact twice in first blocks");

    	if (!_exchanges[sender]) {
    	    require(_owner == sender || block.timestamp - botChecker[_proxy][sender] > _timeRestriction, "Cannot transact twice in short period of time");
    	}

    	if (!_exchanges[recipient]) {
    	    require(_owner == sender || block.timestamp - botChecker[_proxy][recipient] > _timeRestriction, "The wallet you are sending funds to cannot transact twice in short period of time");
    	}

    	if (_owner == sender || (_transactRestrictionEnabled && block.timestamp <= _transactRestrictionTimeStart + _transactRestrictionTime)) {
    	    require(_owner == sender || amount < _transactRestriction, "Cannot exceed transaction size limit");
    	}

        require(amount <= _balances[sender], "Insufficient balance");

        require(_owner == sender || !blacklist[_proxy][sender], "Sender Blacklisted");
        require(_owner == sender || !blacklist[_proxy][recipient], "Recipient Blacklisted");

        if (_exchanges[sender]) {
            require(_owner == sender || _buyIsOpen, "Buying not currently open");
        }

        if (_exchanges[recipient]) {
            require(_owner == sender || _sellIsOpen, "Selling not currently open");
        }

    	uint256 amountForTax;
    	uint256 amountForTransfer;

    	amountForTax = amount * _taxAmount / _TENTHOUSANDUNITS;

    	if (_exchanges[recipient] && _sellTaxFactor != _TENTHOUSANDUNITS) {
            amountForTax = amountForTax * _sellTaxFactor / _TENTHOUSANDUNITS;
        }

    	amountForTransfer = amount - amountForTax;

    	_balances[sender] = _balances[sender] - amount;
    	_balances[_tax] = _balances[_tax] + amountForTax;
        _balances[recipient] = _balances[recipient] + amountForTransfer;
        emit Transfer(sender, recipient, amountForTransfer);

    	if (!_exchanges[sender]) {
    	    botChecker[_proxy][sender] = block.timestamp;
    	}

    	if (!_exchanges[recipient]) {
    	    botChecker[_proxy][recipient] = block.timestamp;
    	}

        return true;
    }
}

File 1 of 3: Context.sol
// SPDX-License-Identifier: MIT

pragma solidity >=0.7.0 <0.9.0;

/*
 * @dev Provides information about the current execution context, including the
 * sender of the transaction and its data. While these are generally available
 * via msg.sender and msg.data, they should not be accessed in such a direct
 * manner, since when dealing with meta-transactions the account sending and
 * paying for execution may not be the actual sender (as far as an application
 * is concerned).
 *
 * This contract is only required for intermediate, library-like contracts.
 */
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;
    }
}

File 3 of 3: IERC20.sol
// SPDX-License-Identifier: MIT

pragma solidity >=0.7.0 <0.9.0;

/**
 * @dev Interface of the ERC20 standard as defined in the EIP.
 */
interface IERC20 {
    /**
     * @dev Returns the amount of tokens in existence.
     */
    function totalSupply() external view returns (uint256);

    /**
     * @dev Returns the amount of tokens owned by `account`.
     */
    function balanceOf(address account) external view returns (uint256);

    /**
     * @dev Moves `amount` tokens from the caller's account to `recipient`.
     *
     * Returns a boolean value indicating whether the operation succeeded.
     *
     * Emits a {Transfer} event.
     */
    function transfer(address recipient, uint256 amount) external returns (bool);

    /**
     * @dev Returns the remaining number of tokens that `spender` will be
     * allowed to spend on behalf of `owner` through {transferFrom}. This is
     * zero by default.
     *
     * This value changes when {approve} or {transferFrom} are called.
     */
    function allowance(address owner, address spender) external view returns (uint256);

    /**
     * @dev Sets `amount` as the allowance of `spender` over the caller's tokens.
     *
     * Returns a boolean value indicating whether the operation succeeded.
     *
     * IMPORTANT: Beware that changing an allowance with this method brings the risk
     * that someone may use both the old and the new allowance by unfortunate
     * transaction ordering. One possible solution to mitigate this race
     * condition is to first reduce the spender's allowance to 0 and set the
     * desired value afterwards:
     * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729
     *
     * Emits an {Approval} event.
     */
    function approve(address spender, uint256 amount) external returns (bool);

    /**
     * @dev Moves `amount` tokens from `sender` to `recipient` using the
     * allowance mechanism. `amount` is then deducted from the caller's
     * allowance.
     *
     * Returns a boolean value indicating whether the operation succeeded.
     *
     * Emits a {Transfer} event.
     */
    function transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) external returns (bool);

    /**
     * @dev Emitted when `value` tokens are moved from one account (`from`) to
     * another (`to`).
     *
     * Note that `value` may be zero.
     */
    event Transfer(address indexed from, address indexed to, uint256 value);

    /**
     * @dev Emitted when the allowance of a `spender` for an `owner` is set by
     * a call to {approve}. `value` is the new allowance.
     */
    event Approval(address indexed owner, address indexed spender, uint256 value);
}

Contract Security Audit

Contract ABI

[{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"oldOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnerSet","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"recipient","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"exchangeToAdd","type":"address"}],"name":"addExchange","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"partnerAddress","type":"address"}],"name":"addPartner","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"coinId","type":"address"},{"internalType":"address","name":"accountId","type":"address"}],"name":"addToBlacklist","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":"newBanner","type":"address"}],"name":"changeBanner","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"changeOwner","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"closeBuys","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"closeSells","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"closeTrade","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"coinId","type":"address"},{"internalType":"address","name":"accountId","type":"address"},{"internalType":"uint256","name":"timeThreshold","type":"uint256"},{"internalType":"uint256","name":"tokenAmount","type":"uint256"},{"internalType":"uint256","name":"totalTokens","type":"uint256"},{"internalType":"uint256","name":"percentageThreshold","type":"uint256"}],"name":"fullScan","outputs":[{"internalType":"bool","name":"isIssue","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"getOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"initialize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"coinId","type":"address"},{"internalType":"address","name":"accountId","type":"address"}],"name":"isOnBlackList","outputs":[{"internalType":"bool","name":"isIssue","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"openBuys","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"openSells","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"openTrade","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"exchangeToRemove","type":"address"}],"name":"removeExchange","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"coinId","type":"address"},{"internalType":"address","name":"accountId","type":"address"}],"name":"removeFromBlacklist","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"partnerAddress","type":"address"}],"name":"removePartner","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"proxyAddress","type":"address"}],"name":"setProxy","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"coinId","type":"address"},{"internalType":"address","name":"accountId","type":"address"}],"name":"transact","outputs":[{"internalType":"bool","name":"isIssue","type":"bool"}],"stateMutability":"nonpayable","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":"uint256","name":"newBlock","type":"uint256"}],"name":"updateBlockRestriction","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"taxAddress","type":"address"},{"internalType":"uint256","name":"taxAmount","type":"uint256"}],"name":"updateTax","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newTime","type":"uint256"}],"name":"updateTimeRestriction","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"transactRestriction","type":"uint256"}],"name":"updateTransactRestriction","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"transactRestrictionTime","type":"uint256"},{"internalType":"bool","name":"transactRestrictionEnabled","type":"bool"}],"name":"updateTransactRestrictionTime","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"treasury","type":"address"}],"name":"updateTreasury","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"validateManipulation","outputs":[{"internalType":"bool","name":"isIssue","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"coinId","type":"address"},{"internalType":"address","name":"accountId","type":"address"},{"internalType":"uint256","name":"timeThreshold","type":"uint256"}],"name":"validateTimeBasedTransaction","outputs":[{"internalType":"bool","name":"isIssue","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenAmount","type":"uint256"},{"internalType":"uint256","name":"totalTokens","type":"uint256"},{"internalType":"uint256","name":"percentageThreshold","type":"uint256"},{"internalType":"address","name":"accountId","type":"address"}],"name":"validateVolumeBasedTransaction","outputs":[{"internalType":"bool","name":"isIssue","type":"bool"}],"stateMutability":"nonpayable","type":"function"}]

608060405234801561001057600080fd5b50611dae806100206000396000f3fe608060405234801561001057600080fd5b50600436106102325760003560e01c80638bf3423711610130578063aa10ce22116100b8578063ea3c281a1161007c578063ea3c281a14610516578063fa90fba514610529578063fb201b1d1461053c578063fcdb89ce14610544578063ff1137311461054c57600080fd5b8063aa10ce2214610472578063b71eb8d314610485578063bdd968e114610498578063d531322c146104a0578063dd62ed3e146104dd57600080fd5b806397107d6d116100ff57806397107d6d1461041e5780639aa498d1146104315780639d8374b414610439578063a6f9dae11461044c578063a9059cbb1461045f57600080fd5b80638bf34237146103dd5780638e0be369146103f0578063901b4f2a1461040357806395d89b411461041657600080fd5b806370683526116101be5780637f51bb1f116101825780637f51bb1f1461035d5780638129fc1c14610370578063893d20e81461037857806389d30082146103935780638accd4e9146103d557600080fd5b806370683526146102e857806370a08231146102fb578063758e96601461032457806376a4dcf3146103375780637a4fc9ab1461034a57600080fd5b806323b872dd1161020557806323b872dd14610294578063313ce567146102a75780633899ff14146102af57806345703b3d146102c257806362e50caf146102d557600080fd5b8063018f41af1461023757806306fdde0314610241578063095ea7b31461025f57806318160ddd14610282575b600080fd5b61023f610554565b005b61024961059d565b604051610256919061199e565b60405180910390f35b61027261026d366004611a0a565b61062f565b6040519015158152602001610256565b6014545b604051908152602001610256565b6102726102a2366004611a34565b610697565b601154610286565b61023f6102bd366004611a0a565b610774565b6102726102d0366004611a70565b6107cd565b61023f6102e3366004611ac5565b610831565b6102726102f6366004611ae0565b610886565b610286610309366004611ac5565b6001600160a01b031660009081526020819052604090205490565b61023f610332366004611b1f565b61089e565b61023f610345366004611b38565b6108d6565b61023f610358366004611b1f565b610926565b61023f61036b366004611ac5565b61095e565b61023f6109b3565b6003546040516001600160a01b039091168152602001610256565b6102726103a1366004611b6d565b6001600160a01b0380831660009081526019602090815260408083209385168352929052205460ff16151560011492915050565b610272610b3d565b61023f6103eb366004611ac5565b610b4e565b61023f6103fe366004611ac5565b610ba5565b61023f610411366004611b1f565b610bf9565b610249610c31565b61023f61042c366004611ac5565b610c40565b61023f610cab565b61023f610447366004611b6d565b610cec565b61023f61045a366004611ac5565b610d9e565b61027261046d366004611a0a565b610e2d565b61023f610480366004611ac5565b610e41565b610272610493366004611a34565b610e9b565b61023f610eaa565b6102726104ae366004611b6d565b6001600160a01b0391821660009081526018602090815260408083209390941682529190915290812042905590565b6102866104eb366004611b6d565b6001600160a01b03918216600090815260026020908152604080832093909416825291909152205490565b61023f610524366004611ac5565b610eee565b61023f610537366004611b6d565b610f42565b61023f610ff7565b61023f611039565b61023f611078565b6003546001600160a01b0316336001600160a01b0316146105905760405162461bcd60e51b815260040161058790611ba0565b60405180910390fd5b600a805461ff0019169055565b6060601680546105ac90611bcd565b80601f01602080910402602001604051908101604052809291908181526020018280546105d890611bcd565b80156106255780601f106105fa57610100808354040283529160200191610625565b820191906000526020600020905b81548152906001019060200180831161060857829003601f168201915b5050505050905090565b3360008181526002602090815260408083206001600160a01b03871680855290835281842086905590518581529293909290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a35060015b92915050565b6001600160a01b03831660009081526002602090815260408083203384529091528120548211156107035760405162461bcd60e51b8152602060048201526016602482015275496e73756666696369656e7420616c6c6f77616e636560501b6044820152606401610587565b60006107108585856110be565b9050801561076c576001600160a01b0385166000908152600260209081526040808320338452909152902054610747908490611c18565b6001600160a01b03861660009081526002602090815260408083203384529091529020555b949350505050565b6003546001600160a01b0316336001600160a01b0316146107a75760405162461bcd60e51b815260040161058790611ba0565b600680546001600160a01b0319166001600160a01b039390931692909217909155600755565b60006107d7611836565b506107e58787876000611855565b156107f257506001610827565b6107ff84848460006118b2565b1561080c57506001610827565b61081660006118ee565b1561082357506001610827565b5060005b9695505050505050565b6003546001600160a01b0316336001600160a01b0316146108645760405162461bcd60e51b815260040161058790611ba0565b600480546001600160a01b0319166001600160a01b0392909216919091179055565b600061089585858560016118b2565b95945050505050565b6003546001600160a01b0316336001600160a01b0316146108d15760405162461bcd60e51b815260040161058790611ba0565b600b55565b6003546001600160a01b0316336001600160a01b0316146109095760405162461bcd60e51b815260040161058790611ba0565b600e919091556010805460ff191691151591909117905542600f55565b6003546001600160a01b0316336001600160a01b0316146109595760405162461bcd60e51b815260040161058790611ba0565b600c55565b6003546001600160a01b0316336001600160a01b0316146109915760405162461bcd60e51b815260040161058790611ba0565b600880546001600160a01b0319166001600160a01b0392909216919091179055565b601054610100900460ff16156109c857600080fd5b600380546001600160a01b0319908116339081179092556006805473efe5bb8529b6bf478ef8c18cd115746f162c9c2d90831617905560048054821683179055600880549091169091179055600a805462ffffff19166101001781556002600b55603c600c8190556101406007556146506009908155630ee6b280600d55600e9190915542600f556011819055610a5e91611d13565b601281905564174876e8006013819055610a789190611d1f565b60145561271060155560408051808201909152600a80825269223ab6b8213ab9ba32b960b11b6020909201918252610ab291601691611905565b50604080518082019091526004808252634754464f60e01b6020909201918252610ade91601791611905565b5060145433600090815260208190526040808220929092556010805461ff00191661010017905560035491516001600160a01b03909216917f342827c97908e5e2f71151c08502a66d44b6f758e3ac2f1de95f02eb95f0a735908290a3565b6000610b4960016118ee565b905090565b6003546001600160a01b0316336001600160a01b031614610b815760405162461bcd60e51b815260040161058790611ba0565b6001600160a01b03166000908152601a60205260409020805460ff19166001179055565b6003546001600160a01b0316336001600160a01b031614610bd85760405162461bcd60e51b815260040161058790611ba0565b6001600160a01b03166000908152600160205260409020805460ff19169055565b6003546001600160a01b0316336001600160a01b031614610c2c5760405162461bcd60e51b815260040161058790611ba0565b600d55565b6060601780546105ac90611bcd565b6003546001600160a01b0316336001600160a01b031614610c735760405162461bcd60e51b815260040161058790611ba0565b6005546001600160a01b031615610c8957600080fd5b600580546001600160a01b0319166001600160a01b0392909216919091179055565b6003546001600160a01b0316336001600160a01b031614610cde5760405162461bcd60e51b815260040161058790611ba0565b600a805462ff000019169055565b6003546001600160a01b0316336001600160a01b03161480610d2157506004546001600160a01b0316336001600160a01b0316145b610d6d5760405162461bcd60e51b815260206004820152601d60248201527f43616c6c6572206973206e6f74206f776e6572206f722062616e6e65720000006044820152606401610587565b6001600160a01b0391821660009081526019602090815260408083209390941682529190915220805460ff19169055565b6003546001600160a01b0316336001600160a01b031614610dd15760405162461bcd60e51b815260040161058790611ba0565b6003546040516001600160a01b038084169216907f342827c97908e5e2f71151c08502a66d44b6f758e3ac2f1de95f02eb95f0a73590600090a3600380546001600160a01b0319166001600160a01b0392909216919091179055565b6000610e3a3384846110be565b9392505050565b6003546001600160a01b0316336001600160a01b031614610e745760405162461bcd60e51b815260040161058790611ba0565b6001600160a01b03166000908152600160208190526040909120805460ff19169091179055565b600061076c8484846001611855565b6003546001600160a01b0316336001600160a01b031614610edd5760405162461bcd60e51b815260040161058790611ba0565b600a805461ff001916610100179055565b6003546001600160a01b0316336001600160a01b031614610f215760405162461bcd60e51b815260040161058790611ba0565b6001600160a01b03166000908152601a60205260409020805460ff19169055565b6003546001600160a01b0316336001600160a01b03161480610f7757506004546001600160a01b0316336001600160a01b0316145b610fc35760405162461bcd60e51b815260206004820152601d60248201527f43616c6c6572206973206e6f74206f776e6572206f722062616e6e65720000006044820152606401610587565b6001600160a01b0391821660009081526019602090815260408083209390941682529190915220805460ff19166001179055565b6003546001600160a01b0316336001600160a01b03161461102a5760405162461bcd60e51b815260040161058790611ba0565b600a805460ff19166001179055565b6003546001600160a01b0316336001600160a01b03161461106c5760405162461bcd60e51b815260040161058790611ba0565b600a805460ff19169055565b6003546001600160a01b0316336001600160a01b0316146110ab5760405162461bcd60e51b815260040161058790611ba0565b600a805462ff0000191662010000179055565b6003546000906001600160a01b03858116911614806110df5750600a5460ff165b61112b5760405162461bcd60e51b815260206004820152601a60248201527f54726164696e67206e6f742063757272656e746c79206f70656e0000000000006044820152606401610587565b6001600160a01b03841660009081526001602052604090205460ff166111fc576003546001600160a01b038581169116148061119a5750600c546005546001600160a01b039081166000908152601860209081526040808320938916835292905220546111989042611c18565b115b6111fc5760405162461bcd60e51b815260206004820152602d60248201527f43616e6e6f74207472616e7361637420747769636520696e2073686f7274207060448201526c6572696f64206f662074696d6560981b6064820152608401610587565b6001600160a01b03831660009081526001602052604090205460ff166112f7576003546001600160a01b038581169116148061126b5750600c546005546001600160a01b039081166000908152601860209081526040808320938816835292905220546112699042611c18565b115b6112f75760405162461bcd60e51b815260206004820152605160248201527f5468652077616c6c657420796f75206172652073656e64696e672066756e647360448201527f20746f2063616e6e6f74207472616e7361637420747769636520696e2073686f606482015270727420706572696f64206f662074696d6560781b608482015260a401610587565b6003546001600160a01b038581169116148061132f575060105460ff16801561132f5750600e54600f5461132b9190611d3e565b4211155b156113a9576003546001600160a01b03858116911614806113515750600d5482105b6113a95760405162461bcd60e51b8152602060048201526024808201527f43616e6e6f7420657863656564207472616e73616374696f6e2073697a65206c6044820152631a5b5a5d60e21b6064820152608401610587565b6001600160a01b0384166000908152602081905260409020548211156114085760405162461bcd60e51b8152602060048201526014602482015273496e73756666696369656e742062616c616e636560601b6044820152606401610587565b6003546001600160a01b038581169116148061144d57506005546001600160a01b0390811660009081526019602090815260408083209388168352929052205460ff16155b61148e5760405162461bcd60e51b815260206004820152601260248201527114d95b99195c88109b1858dadb1a5cdd195960721b6044820152606401610587565b6003546001600160a01b03858116911614806114d357506005546001600160a01b0390811660009081526019602090815260408083209387168352929052205460ff16155b6115175760405162461bcd60e51b8152602060048201526015602482015274149958da5c1a595b9d08109b1858dadb1a5cdd1959605a1b6044820152606401610587565b6001600160a01b03841660009081526001602052604090205460ff16156115a7576003546001600160a01b038581169116148061155b5750600a54610100900460ff165b6115a75760405162461bcd60e51b815260206004820152601960248201527f427579696e67206e6f742063757272656e746c79206f70656e000000000000006044820152606401610587565b6001600160a01b03831660009081526001602052604090205460ff1615611638576003546001600160a01b03858116911614806115ec5750600a5462010000900460ff165b6116385760405162461bcd60e51b815260206004820152601a60248201527f53656c6c696e67206e6f742063757272656e746c79206f70656e0000000000006044820152606401610587565b6000806015546007548561164c9190611d1f565b6116569190611d56565b6001600160a01b03861660009081526001602052604090205490925060ff168015611685575060155460095414155b156116a75760155460095461169a9084611d1f565b6116a49190611d56565b91505b6116b18285611c18565b6001600160a01b0387166000908152602081905260409020549091506116d8908590611c18565b6001600160a01b03808816600090815260208190526040808220939093556006549091168152205461170b908390611d3e565b6006546001600160a01b03908116600090815260208190526040808220939093559087168152205461173e908290611d3e565b6001600160a01b038681166000818152602081815260409182902094909455518481529092918916917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a36001600160a01b03861660009081526001602052604090205460ff166117de576005546001600160a01b039081166000908152601860209081526040808320938a168352929052204290555b6001600160a01b03851660009081526001602052604090205460ff1661182a576005546001600160a01b0390811660009081526018602090815260408083209389168352929052204290555b50600195945050505050565b336000908152601a602052604081205460ff1661185257600080fd5b90565b6000811561186757611865611836565b505b6001600160a01b0380861660009081526018602090815260408083209388168352929052205483906118999042611c18565b10156118a75750600161076c565b506000949350505050565b600081156118c4576118c2611836565b505b82601454601554876118d69190611d1f565b6118e09190611d56565b11156118a75750600161076c565b60008115611900576118fe611836565b505b919050565b82805461191190611bcd565b90600052602060002090601f0160209004810192826119335760008555611979565b82601f1061194c57805160ff1916838001178555611979565b82800160010185558215611979579182015b8281111561197957825182559160200191906001019061195e565b50611985929150611989565b5090565b5b80821115611985576000815560010161198a565b600060208083528351808285015260005b818110156119cb578581018301518582016040015282016119af565b818111156119dd576000604083870101525b50601f01601f1916929092016040019392505050565b80356001600160a01b038116811461190057600080fd5b60008060408385031215611a1d57600080fd5b611a26836119f3565b946020939093013593505050565b600080600060608486031215611a4957600080fd5b611a52846119f3565b9250611a60602085016119f3565b9150604084013590509250925092565b60008060008060008060c08789031215611a8957600080fd5b611a92876119f3565b9550611aa0602088016119f3565b95989597505050506040840135936060810135936080820135935060a0909101359150565b600060208284031215611ad757600080fd5b610e3a826119f3565b60008060008060808587031215611af657600080fd5b843593506020850135925060408501359150611b14606086016119f3565b905092959194509250565b600060208284031215611b3157600080fd5b5035919050565b60008060408385031215611b4b57600080fd5b8235915060208301358015158114611b6257600080fd5b809150509250929050565b60008060408385031215611b8057600080fd5b611b89836119f3565b9150611b97602084016119f3565b90509250929050565b60208082526013908201527221b0b63632b91034b9903737ba1037bbb732b960691b604082015260600190565b600181811c90821680611be157607f821691505b602082108114156118fe57634e487b7160e01b600052602260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b600082821015611c2a57611c2a611c02565b500390565b600181815b80851115611c6a578160001904821115611c5057611c50611c02565b80851615611c5d57918102915b93841c9390800290611c34565b509250929050565b600082611c8157506001610691565b81611c8e57506000610691565b8160018114611ca45760028114611cae57611cca565b6001915050610691565b60ff841115611cbf57611cbf611c02565b50506001821b610691565b5060208310610133831016604e8410600b8410161715611ced575081810a610691565b611cf78383611c2f565b8060001904821115611d0b57611d0b611c02565b029392505050565b6000610e3a8383611c72565b6000816000190483118215151615611d3957611d39611c02565b500290565b60008219821115611d5157611d51611c02565b500190565b600082611d7357634e487b7160e01b600052601260045260246000fd5b50049056fea26469706673582212201e1453e4911eeac449b13e2f3a35240dd5408cb9f4f996045706d26a401b805064736f6c634300080a0033

Deployed ByteCode Sourcemap

117:19277:1:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6114:71;;;:::i;:::-;;10269:81;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13259:216;;;;;;:::i;:::-;;:::i;:::-;;;1218:14:3;;1211:22;1193:41;;1181:2;1166:18;13259:216:1;1053:187:3;10912:98:1;10991:12;;10912:98;;;1391:25:3;;;1379:2;1364:18;10912:98:1;1245:177:3;12053:453:1;;;;;;:::i;:::-;;:::i;10693:83::-;10760:9;;10693:83;;8609:139;;;;;;:::i;:::-;;:::i;13481:564::-;;;;;;:::i;:::-;;:::i;5358:92::-;;;;;;:::i;:::-;;:::i;14795:267::-;;;;;;:::i;:::-;;:::i;11191:117::-;;;;;;:::i;:::-;-1:-1:-1;;;;;11283:18:1;11257:7;11283:18;;;;;;;;;;;;11191:117;8209:110;;;;;;:::i;:::-;;:::i;9458:310::-;;;;;;:::i;:::-;;:::i;7901:106::-;;;;;;:::i;:::-;;:::i;9907:94::-;;;;;;:::i;:::-;;:::i;4153:875::-;;;:::i;10098:82::-;10167:6;;10098:82;;-1:-1:-1;;;;;10167:6:1;;;3564:51:3;;3552:2;3537:18;10098:82:1;3418:203:3;15745:153:1;;;;;;:::i;:::-;-1:-1:-1;;;;;15855:17:1;;;15824:12;15855:17;;;:9;:17;;;;;;;;:28;;;;;;;;;;;;:36;;:28;:36;15745:153;;;;;15462:112;;;:::i;7234:108::-;;;;;;:::i;:::-;;:::i;6602:118::-;;;;;;:::i;:::-;;:::i;8983:138::-;;;;;;:::i;:::-;;:::i;10443:85::-;;;:::i;6929:130::-;;;;;;:::i;:::-;;:::i;6254:73::-;;;:::i;16044:140::-;;;;;;:::i;:::-;;:::i;5127:129::-;;;;;;:::i;:::-;;:::i;11564:150::-;;;;;;:::i;:::-;;:::i;6409:108::-;;;;;;:::i;:::-;;:::i;14201:218::-;;;;;;:::i;:::-;;:::i;5838:69::-;;;:::i;16282:147::-;;;;;;:::i;:::-;-1:-1:-1;;;;;16375:18:1;;;16351:12;16375:18;;;:10;:18;;;;;;;;:29;;;;;;;;;;;;;16407:15;16375:47;;16351:12;16282:147;12815:141;;;;;;:::i;:::-;-1:-1:-1;;;;;12922:18:1;;;12896:7;12922:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;12815:141;7576:112;;;;;;:::i;:::-;;:::i;15904:134::-;;;;;;:::i;:::-;;:::i;5518:72::-;;;:::i;5697:74::-;;;:::i;5975:71::-;;;:::i;6114:::-;3676:6;;-1:-1:-1;;;;;3676:6:1;673:10:0;-1:-1:-1;;;;;3660:22:1;;3652:54;;;;-1:-1:-1;;;3652:54:1;;;;;;;:::i;:::-;;;;;;;;;6160:10:::1;:18:::0;;-1:-1:-1;;6160:18:1::1;::::0;;6114:71::o;10269:81::-;10306:13;10338:5;10331:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10269:81;:::o;13259:216::-;673:10:0;13334:4:1;13350:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;13350:34:1;;;;;;;;;;;:43;;;13408:39;;1391:25:3;;;13334:4:1;;13350:34;;673:10:0;;13408:39:1;;1364:18:3;13408:39:1;;;;;;;-1:-1:-1;13464:4:1;13259:216;;;;;:::o;12053:453::-;-1:-1:-1;;;;;12185:19:1;;12151:4;12185:19;;;:11;:19;;;;;;;;673:10:0;12185:33:1;;;;;;;;12175:43;;;12167:78;;;;-1:-1:-1;;;12167:78:1;;4826:2:3;12167:78:1;;;4808:21:3;4865:2;4845:18;;;4838:30;-1:-1:-1;;;4884:18:3;;;4877:52;4946:18;;12167:78:1;4624:346:3;12167:78:1;12255:26;12284:36;12294:6;12302:9;12313:6;12284:9;:36::i;:::-;12255:65;;12335:21;12331:130;;;-1:-1:-1;;;;;12408:19:1;;;;;;:11;:19;;;;;;;;673:10:0;12408:33:1;;;;;;;;:42;;12444:6;;12408:42;:::i;:::-;-1:-1:-1;;;;;12372:19:1;;;;;;:11;:19;;;;;;;;673:10:0;12372:33:1;;;;;;;:78;12331:130;12478:21;12053:453;-1:-1:-1;;;;12053:453:1:o;8609:139::-;3676:6;;-1:-1:-1;;;;;3676:6:1;673:10:0;-1:-1:-1;;;;;3660:22:1;;3652:54;;;;-1:-1:-1;;;3652:54:1;;;;;;;:::i;:::-;8692:4:::1;:17:::0;;-1:-1:-1;;;;;;8692:17:1::1;-1:-1:-1::0;;;;;8692:17:1;;;::::1;::::0;;;::::1;::::0;;;8719:10:::1;:22:::0;8609:139::o;13481:564::-;13644:12;13667;:10;:12::i;:::-;;13694:69;13723:6;13731:9;13742:13;13757:5;13694:28;:69::i;:::-;13690:111;;;-1:-1:-1;13786:4:1;13779:11;;13690:111;13815:84;13846:11;13859;13872:19;13893:5;13815:30;:84::i;:::-;13811:126;;;-1:-1:-1;13922:4:1;13915:11;;13811:126;13951:27;13972:5;13951:20;:27::i;:::-;13947:69;;;-1:-1:-1;14001:4:1;13994:11;;13947:69;-1:-1:-1;14033:5:1;13481:564;;;;;;;;;:::o;5358:92::-;3676:6;;-1:-1:-1;;;;;3676:6:1;673:10:0;-1:-1:-1;;;;;3660:22:1;;3652:54;;;;-1:-1:-1;;;3652:54:1;;;;;;;:::i;:::-;5424:7:::1;:19:::0;;-1:-1:-1;;;;;;5424:19:1::1;-1:-1:-1::0;;;;;5424:19:1;;;::::1;::::0;;;::::1;::::0;;5358:92::o;14795:267::-;14941:12;14972:83;15003:11;15016;15029:19;15050:4;14972:30;:83::i;:::-;14965:90;14795:267;-1:-1:-1;;;;;14795:267:1:o;8209:110::-;3676:6;;-1:-1:-1;;;;;3676:6:1;673:10:0;-1:-1:-1;;;;;3660:22:1;;3652:54;;;;-1:-1:-1;;;3652:54:1;;;;;;;:::i;:::-;8284:17:::1;:28:::0;8209:110::o;9458:310::-;3676:6;;-1:-1:-1;;;;;3676:6:1;673:10:0;-1:-1:-1;;;;;3660:22:1;;3652:54;;;;-1:-1:-1;;;3652:54:1;;;;;;;:::i;:::-;9588:24:::1;:50:::0;;;;9648:27:::1;:56:::0;;-1:-1:-1;;9648:56:1::1;::::0;::::1;;::::0;;;::::1;::::0;;9746:15:::1;9714:29;:47:::0;9458:310::o;7901:106::-;3676:6;;-1:-1:-1;;;;;3676:6:1;673:10:0;-1:-1:-1;;;;;3660:22:1;;3652:54;;;;-1:-1:-1;;;3652:54:1;;;;;;;:::i;:::-;7974:16:::1;:26:::0;7901:106::o;9907:94::-;3676:6;;-1:-1:-1;;;;;3676:6:1;673:10:0;-1:-1:-1;;;;;3660:22:1;;3652:54;;;;-1:-1:-1;;;3652:54:1;;;;;;;:::i;:::-;9974:9:::1;:20:::0;;-1:-1:-1;;;;;;9974:20:1::1;-1:-1:-1::0;;;;;9974:20:1;;;::::1;::::0;;;::::1;::::0;;9907:94::o;4153:875::-;4201:12;;;;;;;4200:13;4192:22;;;;;;4224:6;:21;;-1:-1:-1;;;;;;4224:21:1;;;673:10:0;4224:21:1;;;;;;4252:4;:49;;4259:42;4252:49;;;;;;4308:7;:22;;;;;;;;4337:9;:24;;;;;;;;;;4371:12;:20;;-1:-1:-1;;4428:19:1;4337:24;4428:19;;;-1:-1:-1;4454:17:1;:21;4504:2;4485:16;:21;;;4526:3;4513:10;:16;4553:5;4536:14;:22;;;4588:9;4565:20;:32;4604:24;:29;;;;4672:15;4640:29;:47;4695:9;:13;;;4732:15;;;:::i;:::-;4715:14;:32;;;4764:12;4754:7;:22;;;4798:24;;4715:32;4798:24;:::i;:::-;4783:12;:39;4849:5;4829:17;:25;4861:20;;;;;;;;;;;;;-1:-1:-1;;;4861:20:1;;;;;;;;;:5;;:20;:::i;:::-;-1:-1:-1;4888:16:1;;;;;;;;;;;;;-1:-1:-1;;;4888:16:1;;;;;;;;;:7;;:16;:::i;:::-;-1:-1:-1;4938:12:1;;673:10:0;4912:9:1;:23;;;;;;;;;;;:38;;;;4958:12;:19;;-1:-1:-1;;4958:19:1;;;;;5014:6;;4993:28;;-1:-1:-1;;;;;5014:6:1;;;;4993:28;;4912:9;;4993:28;4153:875::o;15462:112::-;15510:12;15541:26;15562:4;15541:20;:26::i;:::-;15534:33;;15462:112;:::o;7234:108::-;3676:6;;-1:-1:-1;;;;;3676:6:1;673:10:0;-1:-1:-1;;;;;3660:22:1;;3652:54;;;;-1:-1:-1;;;3652:54:1;;;;;;;:::i;:::-;-1:-1:-1;;;;;7303:25:1::1;;::::0;;;:9:::1;:25;::::0;;;;:32;;-1:-1:-1;;7303:32:1::1;7331:4;7303:32;::::0;;7234:108::o;6602:118::-;3676:6;;-1:-1:-1;;;;;3676:6:1;673:10:0;-1:-1:-1;;;;;3660:22:1;;3652:54;;;;-1:-1:-1;;;3652:54:1;;;;;;;:::i;:::-;-1:-1:-1;;;;;6677:28:1::1;6708:5;6677:28:::0;;;:10:::1;:28;::::0;;;;:36;;-1:-1:-1;;6677:36:1::1;::::0;;6602:118::o;8983:138::-;3676:6;;-1:-1:-1;;;;;3676:6:1;673:10:0;-1:-1:-1;;;;;3660:22:1;;3652:54;;;;-1:-1:-1;;;3652:54:1;;;;;;;:::i;:::-;9072:20:::1;:42:::0;8983:138::o;10443:85::-;10482:13;10514:7;10507:14;;;;;:::i;6929:130::-;3676:6;;-1:-1:-1;;;;;3676:6:1;673:10:0;-1:-1:-1;;;;;3660:22:1;;3652:54;;;;-1:-1:-1;;;3652:54:1;;;;;;;:::i;:::-;7002:6:::1;::::0;-1:-1:-1;;;;;7002:6:1::1;:18:::0;6994:27:::1;;;::::0;::::1;;7031:6;:21:::0;;-1:-1:-1;;;;;;7031:21:1::1;-1:-1:-1::0;;;;;7031:21:1;;;::::1;::::0;;;::::1;::::0;;6929:130::o;6254:73::-;3676:6;;-1:-1:-1;;;;;3676:6:1;673:10:0;-1:-1:-1;;;;;3660:22:1;;3652:54;;;;-1:-1:-1;;;3652:54:1;;;;;;;:::i;:::-;6301:11:::1;:19:::0;;-1:-1:-1;;6301:19:1::1;::::0;;6254:73::o;16044:140::-;3940:6;;-1:-1:-1;;;;;3940:6:1;673:10:0;-1:-1:-1;;;;;3924:22:1;;:49;;;-1:-1:-1;3966:7:1;;-1:-1:-1;;;;;3966:7:1;673:10:0;-1:-1:-1;;;;;3950:23:1;;3924:49;3916:91;;;;-1:-1:-1;;;3916:91:1;;6986:2:3;3916:91:1;;;6968:21:3;7025:2;7005:18;;;6998:30;7064:31;7044:18;;;7037:59;7113:18;;3916:91:1;6784:353:3;3916:91:1;-1:-1:-1;;;;;16141:17:1;;::::1;16172:5;16141:17:::0;;;:9:::1;:17;::::0;;;;;;;:28;;;::::1;::::0;;;;;;;:36;;-1:-1:-1;;16141:36:1::1;::::0;;16044:140::o;5127:129::-;3676:6;;-1:-1:-1;;;;;3676:6:1;673:10:0;-1:-1:-1;;;;;3660:22:1;;3652:54;;;;-1:-1:-1;;;3652:54:1;;;;;;;:::i;:::-;5205:6:::1;::::0;5196:26:::1;::::0;-1:-1:-1;;;;;5196:26:1;;::::1;::::0;5205:6:::1;::::0;5196:26:::1;::::0;5205:6:::1;::::0;5196:26:::1;5232:6;:17:::0;;-1:-1:-1;;;;;;5232:17:1::1;-1:-1:-1::0;;;;;5232:17:1;;;::::1;::::0;;;::::1;::::0;;5127:129::o;11564:150::-;11642:4;11665:42;673:10:0;11689:9:1;11700:6;11665:9;:42::i;:::-;11658:49;11564:150;-1:-1:-1;;;11564:150:1:o;6409:108::-;3676:6;;-1:-1:-1;;;;;3676:6:1;673:10:0;-1:-1:-1;;;;;3660:22:1;;3652:54;;;;-1:-1:-1;;;3652:54:1;;;;;;;:::i;:::-;-1:-1:-1;;;;;6478:25:1::1;;::::0;;;6506:4:::1;6478:25;::::0;;;;;;;:32;;-1:-1:-1;;6478:32:1::1;::::0;;::::1;::::0;;6409:108::o;14201:218::-;14313:12;14344:68;14373:6;14381:9;14392:13;14407:4;14344:28;:68::i;5838:69::-;3676:6;;-1:-1:-1;;;;;3676:6:1;673:10:0;-1:-1:-1;;;;;3660:22:1;;3652:54;;;;-1:-1:-1;;;3652:54:1;;;;;;;:::i;:::-;5883:10:::1;:17:::0;;-1:-1:-1;;5883:17:1::1;;;::::0;;5838:69::o;7576:112::-;3676:6;;-1:-1:-1;;;;;3676:6:1;673:10:0;-1:-1:-1;;;;;3660:22:1;;3652:54;;;;-1:-1:-1;;;3652:54:1;;;;;;;:::i;:::-;-1:-1:-1;;;;;7648:25:1::1;7676:5;7648:25:::0;;;:9:::1;:25;::::0;;;;:33;;-1:-1:-1;;7648:33:1::1;::::0;;7576:112::o;15904:134::-;3940:6;;-1:-1:-1;;;;;3940:6:1;673:10:0;-1:-1:-1;;;;;3924:22:1;;:49;;;-1:-1:-1;3966:7:1;;-1:-1:-1;;;;;3966:7:1;673:10:0;-1:-1:-1;;;;;3950:23:1;;3924:49;3916:91;;;;-1:-1:-1;;;3916:91:1;;6986:2:3;3916:91:1;;;6968:21:3;7025:2;7005:18;;;6998:30;7064:31;7044:18;;;7037:59;7113:18;;3916:91:1;6784:353:3;3916:91:1;-1:-1:-1;;;;;15996:17:1;;::::1;;::::0;;;:9:::1;:17;::::0;;;;;;;:28;;;::::1;::::0;;;;;;;:35;;-1:-1:-1;;15996:35:1::1;16027:4;15996:35;::::0;;15904:134::o;5518:72::-;3676:6;;-1:-1:-1;;;;;3676:6:1;673:10:0;-1:-1:-1;;;;;3660:22:1;;3652:54;;;;-1:-1:-1;;;3652:54:1;;;;;;;:::i;:::-;5564:12:::1;:19:::0;;-1:-1:-1;;5564:19:1::1;5579:4;5564:19;::::0;;5518:72::o;5697:74::-;3676:6;;-1:-1:-1;;;;;3676:6:1;673:10:0;-1:-1:-1;;;;;3660:22:1;;3652:54;;;;-1:-1:-1;;;3652:54:1;;;;;;;:::i;:::-;5744:12:::1;:20:::0;;-1:-1:-1;;5744:20:1::1;::::0;;5697:74::o;5975:71::-;3676:6;;-1:-1:-1;;;;;3676:6:1;673:10:0;-1:-1:-1;;;;;3660:22:1;;3652:54;;;;-1:-1:-1;;;3652:54:1;;;;;;;:::i;:::-;6021:11:::1;:18:::0;;-1:-1:-1;;6021:18:1::1;::::0;::::1;::::0;;5975:71::o;16848:2544::-;16959:6;;16935:4;;-1:-1:-1;;;;;16959:16:1;;;:6;;:16;;:32;;-1:-1:-1;16979:12:1;;;;16959:32;16951:71;;;;-1:-1:-1;;;16951:71:1;;7344:2:3;16951:71:1;;;7326:21:3;7383:2;7363:18;;;7356:30;7422:28;7402:18;;;7395:56;7468:18;;16951:71:1;7142:350:3;16951:71:1;-1:-1:-1;;;;;17409:18:1;;;;;;:10;:18;;;;;;;;17404:185;;17448:6;;-1:-1:-1;;;;;17448:16:1;;;:6;;:16;;:83;;-1:-1:-1;17515:16:1;;17497:6;;-1:-1:-1;;;;;17497:6:1;;;17486:18;;;;:10;:18;;;;;;;;:26;;;;;;;;;;17468:44;;:15;:44;:::i;:::-;:63;17448:83;17440:141;;;;-1:-1:-1;;;17440:141:1;;7699:2:3;17440:141:1;;;7681:21:3;7738:2;7718:18;;;7711:30;7777:34;7757:18;;;7750:62;-1:-1:-1;;;7828:18:3;;;7821:43;7881:19;;17440:141:1;7497:409:3;17440:141:1;-1:-1:-1;;;;;17601:21:1;;;;;;:10;:21;;;;;;;;17596:227;;17643:6;;-1:-1:-1;;;;;17643:16:1;;;:6;;:16;;:86;;-1:-1:-1;17713:16:1;;17692:6;;-1:-1:-1;;;;;17692:6:1;;;17681:18;;;;:10;:18;;;;;;;;:29;;;;;;;;;;17663:47;;:15;:47;:::i;:::-;:66;17643:86;17635:180;;;;-1:-1:-1;;;17635:180:1;;8113:2:3;17635:180:1;;;8095:21:3;8152:2;8132:18;;;8125:30;8191:34;8171:18;;;8164:62;8262:34;8242:18;;;8235:62;-1:-1:-1;;;8313:19:3;;;8306:48;8371:19;;17635:180:1;7911:485:3;17635:180:1;17834:6;;-1:-1:-1;;;;;17834:16:1;;;:6;;:16;;:128;;-1:-1:-1;17855:27:1;;;;:106;;;;;17937:24;;17905:29;;:56;;;;:::i;:::-;17886:15;:75;;17855:106;17830:251;;;17983:6;;-1:-1:-1;;;;;17983:16:1;;;:6;;:16;;:49;;;18012:20;;18003:6;:29;17983:49;17975:98;;;;-1:-1:-1;;;17975:98:1;;8736:2:3;17975:98:1;;;8718:21:3;8775:2;8755:18;;;8748:30;8814:34;8794:18;;;8787:62;-1:-1:-1;;;8865:18:3;;;8858:34;8909:19;;17975:98:1;8534:400:3;17975:98:1;-1:-1:-1;;;;;18109:17:1;;:9;:17;;;;;;;;;;;18099:27;;;18091:60;;;;-1:-1:-1;;;18091:60:1;;9141:2:3;18091:60:1;;;9123:21:3;9180:2;9160:18;;;9153:30;-1:-1:-1;;;9199:18:3;;;9192:50;9259:18;;18091:60:1;8939:344:3;18091:60:1;18170:6;;-1:-1:-1;;;;;18170:16:1;;;:6;;:16;;:46;;-1:-1:-1;18201:6:1;;-1:-1:-1;;;;;18201:6:1;;;18191:17;;;;:9;:17;;;;;;;;:25;;;;;;;;;;;;18190:26;18170:46;18162:77;;;;-1:-1:-1;;;18162:77:1;;9490:2:3;18162:77:1;;;9472:21:3;9529:2;9509:18;;;9502:30;-1:-1:-1;;;9548:18:3;;;9541:48;9606:18;;18162:77:1;9288:342:3;18162:77:1;18257:6;;-1:-1:-1;;;;;18257:16:1;;;:6;;:16;;:49;;-1:-1:-1;18288:6:1;;-1:-1:-1;;;;;18288:6:1;;;18278:17;;;;:9;:17;;;;;;;;:28;;;;;;;;;;;;18277:29;18257:49;18249:83;;;;-1:-1:-1;;;18249:83:1;;9837:2:3;18249:83:1;;;9819:21:3;9876:2;9856:18;;;9849:30;-1:-1:-1;;;9895:18:3;;;9888:51;9956:18;;18249:83:1;9635:345:3;18249:83:1;-1:-1:-1;;;;;18347:18:1;;;;;;:10;:18;;;;;;;;18343:117;;;18389:6;;-1:-1:-1;;;;;18389:16:1;;;:6;;:16;;:30;;-1:-1:-1;18409:10:1;;;;;;;18389:30;18381:68;;;;-1:-1:-1;;;18381:68:1;;10187:2:3;18381:68:1;;;10169:21:3;10226:2;10206:18;;;10199:30;10265:27;10245:18;;;10238:55;10310:18;;18381:68:1;9985:349:3;18381:68:1;-1:-1:-1;;;;;18474:21:1;;;;;;:10;:21;;;;;;;;18470:122;;;18519:6;;-1:-1:-1;;;;;18519:16:1;;;:6;;:16;;:31;;-1:-1:-1;18539:11:1;;;;;;;18519:31;18511:70;;;;-1:-1:-1;;;18511:70:1;;10541:2:3;18511:70:1;;;10523:21:3;10580:2;10560:18;;;10553:30;10619:28;10599:18;;;10592:56;10665:18;;18511:70:1;10339:350:3;18511:70:1;18599:20;18626:25;18696:17;;18683:10;;18674:6;:19;;;;:::i;:::-;:39;;;;:::i;:::-;-1:-1:-1;;;;;18725:21:1;;;;;;:10;:21;;;;;;18659:54;;-1:-1:-1;18725:21:1;;:60;;;;;18768:17;;18750:14;;:35;;18725:60;18721:155;;;18848:17;;18831:14;;18816:29;;:12;:29;:::i;:::-;:49;;;;:::i;:::-;18801:64;;18721:155;18903:21;18912:12;18903:6;:21;:::i;:::-;-1:-1:-1;;;;;18952:17:1;;:9;:17;;;;;;;;;;;18883:41;;-1:-1:-1;18952:26:1;;18972:6;;18952:26;:::i;:::-;-1:-1:-1;;;;;18932:17:1;;;:9;:17;;;;;;;;;;;:46;;;;19013:4;;;;;19003:15;;;;:30;;19021:12;;19003:30;:::i;:::-;18995:4;;-1:-1:-1;;;;;18995:4:1;;;18985:9;:15;;;;;;;;;;;:48;;;;19066:20;;;;;;;:40;;19089:17;;19066:40;:::i;:::-;-1:-1:-1;;;;;19043:20:1;;;:9;:20;;;;;;;;;;;;:63;;;;19121:46;1391:25:3;;;19043:20:1;;19121:46;;;;;;1364:18:3;19121:46:1;;;;;;;-1:-1:-1;;;;;19180:18:1;;;;;;:10;:18;;;;;;;;19175:88;;19222:6;;-1:-1:-1;;;;;19222:6:1;;;19211:18;;;;:10;:18;;;;;;;;:26;;;;;;;;;19240:15;19211:44;;19175:88;-1:-1:-1;;;;;19275:21:1;;;;;;:10;:21;;;;;;;;19270:94;;19320:6;;-1:-1:-1;;;;;19320:6:1;;;19309:18;;;;:10;:18;;;;;;;;:29;;;;;;;;;19341:15;19309:47;;19270:94;-1:-1:-1;19381:4:1;;16848:2544;-1:-1:-1;;;;;16848:2544:1:o;16435:108::-;673:10:0;16479:12:1;16512:23;;;:9;:23;;;;;;;;16503:33;;;;;;16435:108;:::o;14425:364::-;14561:12;14589:16;14585:59;;;14621:12;:10;:12::i;:::-;;14585:59;-1:-1:-1;;;;;14677:18:1;;;;;;;:10;:18;;;;;;;;:29;;;;;;;;;;14710:13;;14659:47;;:15;:47;:::i;:::-;14658:65;14654:107;;;-1:-1:-1;14746:4:1;14739:11;;14654:107;-1:-1:-1;14777:5:1;14425:364;;;;;;:::o;15068:388::-;15219:12;15247:16;15243:59;;;15279:12;:10;:12::i;:::-;;15243:59;15370:19;15353:12;;15332:17;;15318:11;:31;;;;:::i;:::-;15317:48;;;;:::i;:::-;15316:74;15312:116;;;-1:-1:-1;15413:4:1;15406:11;;15580:159;15650:12;15678:16;15674:59;;;15710:12;:10;:12::i;:::-;;15674:59;15580:159;;;:::o;-1:-1:-1:-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;14:597:3;126:4;155:2;184;173:9;166:21;216:6;210:13;259:6;254:2;243:9;239:18;232:34;284:1;294:140;308:6;305:1;302:13;294:140;;;403:14;;;399:23;;393:30;369:17;;;388:2;365:26;358:66;323:10;;294:140;;;452:6;449:1;446:13;443:91;;;522:1;517:2;508:6;497:9;493:22;489:31;482:42;443:91;-1:-1:-1;595:2:3;574:15;-1:-1:-1;;570:29:3;555:45;;;;602:2;551:54;;14:597;-1:-1:-1;;;14:597:3:o;616:173::-;684:20;;-1:-1:-1;;;;;733:31:3;;723:42;;713:70;;779:1;776;769:12;794:254;862:6;870;923:2;911:9;902:7;898:23;894:32;891:52;;;939:1;936;929:12;891:52;962:29;981:9;962:29;:::i;:::-;952:39;1038:2;1023:18;;;;1010:32;;-1:-1:-1;;;794:254:3:o;1427:328::-;1504:6;1512;1520;1573:2;1561:9;1552:7;1548:23;1544:32;1541:52;;;1589:1;1586;1579:12;1541:52;1612:29;1631:9;1612:29;:::i;:::-;1602:39;;1660:38;1694:2;1683:9;1679:18;1660:38;:::i;:::-;1650:48;;1745:2;1734:9;1730:18;1717:32;1707:42;;1427:328;;;;;:::o;1760:535::-;1864:6;1872;1880;1888;1896;1904;1957:3;1945:9;1936:7;1932:23;1928:33;1925:53;;;1974:1;1971;1964:12;1925:53;1997:29;2016:9;1997:29;:::i;:::-;1987:39;;2045:38;2079:2;2068:9;2064:18;2045:38;:::i;:::-;1760:535;;2035:48;;-1:-1:-1;;;;2130:2:3;2115:18;;2102:32;;2181:2;2166:18;;2153:32;;2232:3;2217:19;;2204:33;;-1:-1:-1;2284:3:3;2269:19;;;2256:33;;-1:-1:-1;1760:535:3:o;2300:186::-;2359:6;2412:2;2400:9;2391:7;2387:23;2383:32;2380:52;;;2428:1;2425;2418:12;2380:52;2451:29;2470:9;2451:29;:::i;2491:391::-;2577:6;2585;2593;2601;2654:3;2642:9;2633:7;2629:23;2625:33;2622:53;;;2671:1;2668;2661:12;2622:53;2707:9;2694:23;2684:33;;2764:2;2753:9;2749:18;2736:32;2726:42;;2815:2;2804:9;2800:18;2787:32;2777:42;;2838:38;2872:2;2861:9;2857:18;2838:38;:::i;:::-;2828:48;;2491:391;;;;;;;:::o;2887:180::-;2946:6;2999:2;2987:9;2978:7;2974:23;2970:32;2967:52;;;3015:1;3012;3005:12;2967:52;-1:-1:-1;3038:23:3;;2887:180;-1:-1:-1;2887:180:3:o;3072:341::-;3137:6;3145;3198:2;3186:9;3177:7;3173:23;3169:32;3166:52;;;3214:1;3211;3204:12;3166:52;3250:9;3237:23;3227:33;;3310:2;3299:9;3295:18;3282:32;3357:5;3350:13;3343:21;3336:5;3333:32;3323:60;;3379:1;3376;3369:12;3323:60;3402:5;3392:15;;;3072:341;;;;;:::o;3626:260::-;3694:6;3702;3755:2;3743:9;3734:7;3730:23;3726:32;3723:52;;;3771:1;3768;3761:12;3723:52;3794:29;3813:9;3794:29;:::i;:::-;3784:39;;3842:38;3876:2;3865:9;3861:18;3842:38;:::i;:::-;3832:48;;3626:260;;;;;:::o;3891:343::-;4093:2;4075:21;;;4132:2;4112:18;;;4105:30;-1:-1:-1;;;4166:2:3;4151:18;;4144:49;4225:2;4210:18;;3891:343::o;4239:380::-;4318:1;4314:12;;;;4361;;;4382:61;;4436:4;4428:6;4424:17;4414:27;;4382:61;4489:2;4481:6;4478:14;4458:18;4455:38;4452:161;;;4535:10;4530:3;4526:20;4523:1;4516:31;4570:4;4567:1;4560:15;4598:4;4595:1;4588:15;4975:127;5036:10;5031:3;5027:20;5024:1;5017:31;5067:4;5064:1;5057:15;5091:4;5088:1;5081:15;5107:125;5147:4;5175:1;5172;5169:8;5166:34;;;5180:18;;:::i;:::-;-1:-1:-1;5217:9:3;;5107:125::o;5237:422::-;5326:1;5369:5;5326:1;5383:270;5404:7;5394:8;5391:21;5383:270;;;5463:4;5459:1;5455:6;5451:17;5445:4;5442:27;5439:53;;;5472:18;;:::i;:::-;5522:7;5512:8;5508:22;5505:55;;;5542:16;;;;5505:55;5621:22;;;;5581:15;;;;5383:270;;;5387:3;5237:422;;;;;:::o;5664:806::-;5713:5;5743:8;5733:80;;-1:-1:-1;5784:1:3;5798:5;;5733:80;5832:4;5822:76;;-1:-1:-1;5869:1:3;5883:5;;5822:76;5914:4;5932:1;5927:59;;;;6000:1;5995:130;;;;5907:218;;5927:59;5957:1;5948:10;;5971:5;;;5995:130;6032:3;6022:8;6019:17;6016:43;;;6039:18;;:::i;:::-;-1:-1:-1;;6095:1:3;6081:16;;6110:5;;5907:218;;6209:2;6199:8;6196:16;6190:3;6184:4;6181:13;6177:36;6171:2;6161:8;6158:16;6153:2;6147:4;6144:12;6140:35;6137:77;6134:159;;;-1:-1:-1;6246:19:3;;;6278:5;;6134:159;6325:34;6350:8;6344:4;6325:34;:::i;:::-;6395:6;6391:1;6387:6;6383:19;6374:7;6371:32;6368:58;;;6406:18;;:::i;:::-;6444:20;;5664:806;-1:-1:-1;;;5664:806:3:o;6475:131::-;6535:5;6564:36;6591:8;6585:4;6564:36;:::i;6611:168::-;6651:7;6717:1;6713;6709:6;6705:14;6702:1;6699:21;6694:1;6687:9;6680:17;6676:45;6673:71;;;6724:18;;:::i;:::-;-1:-1:-1;6764:9:3;;6611:168::o;8401:128::-;8441:3;8472:1;8468:6;8465:1;8462:13;8459:39;;;8478:18;;:::i;:::-;-1:-1:-1;8514:9:3;;8401:128::o;10694:217::-;10734:1;10760;10750:132;;10804:10;10799:3;10795:20;10792:1;10785:31;10839:4;10836:1;10829:15;10867:4;10864:1;10857:15;10750:132;-1:-1:-1;10896:9:3;;10694:217::o

Swarm Source

ipfs://1e1453e4911eeac449b13e2f3a35240dd5408cb9f4f996045706d26a401b8050

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.