ETH Price: $2,452.63 (-2.33%)

Token

FTD (FTD)

Overview

Max Total Supply

9,999,189.726081455409534203 FTD

Holders

88,509

Market

Price

$0.00 @ 0.000000 ETH

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
0.001 FTD

Value
$0.00
0x73f5d6d4e2454d8f9ebc9f7d4c2b243716567dcc
Loading...
Loading
Loading...
Loading
Loading...
Loading

Click here to update the token information / general information

Contract Source Code Verified (Exact Match)

Contract Name:
FTD

Compiler Version
v0.8.0+commit.c7dfd78e

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Arbiscan.io on 2023-05-20
*/

// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;

library Address {

    function isContract(address account) internal view returns (bool) {
        uint256 size;
        // solhint-disable-next-line no-inline-assembly
        assembly { size := extcodesize(account) }
        return size > 0;
    }

    function sendValue(address payable recipient, uint256 amount) internal {
        require(address(this).balance >= amount, "Address: insufficient balance");

        // solhint-disable-next-line avoid-low-level-calls, avoid-call-value
        (bool success, ) = recipient.call{ value: amount }("");
        require(success, "Address: unable to send value, recipient may have reverted");
    }

    function functionCall(address target, bytes memory data) internal returns (bytes memory) {
      return functionCall(target, data, "Address: low-level call failed");
    }

   
    function functionCall(address target, bytes memory data, string memory errorMessage) internal returns (bytes memory) {
        return _functionCallWithValue(target, data, 0, errorMessage);
    }

    
    function functionCallWithValue(address target, bytes memory data, uint256 value) internal returns (bytes memory) {
        return functionCallWithValue(target, data, value, "Address: low-level call with value failed");
    }


    function functionCallWithValue(address target, bytes memory data, uint256 value, string memory errorMessage) internal returns (bytes memory) {
        require(address(this).balance >= value, "Address: insufficient balance for call");
        return _functionCallWithValue(target, data, value, errorMessage);
    }

    function _functionCallWithValue(address target, bytes memory data, uint256 weiValue, string memory errorMessage) private returns (bytes memory) {
        require(isContract(target), "Address: call to non-contract");

        // solhint-disable-next-line avoid-low-level-calls
        (bool success, bytes memory returndata) = target.call{ value: weiValue }(data);
        if (success) {
            return returndata;
        } else {
            // Look for revert reason and bubble it up if present
            if (returndata.length > 0) {
                // The easiest way to bubble the revert reason is using memory via assembly

                // solhint-disable-next-line no-inline-assembly
                assembly {
                    let returndata_size := mload(returndata)
                    revert(add(32, returndata), returndata_size)
                }
            } else {
                revert(errorMessage);
            }
        }
    }
}

library SafeMath {
    function add(uint256 a, uint256 b) internal pure returns (uint256) {
        uint256 c = a + b;
        require(c >= a, "SafeMath: addition overflow");
        return c;
    }

    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        return sub(a, b, "SafeMath: subtraction overflow");
    }

    function sub(
        uint256 a,
        uint256 b,
        string memory errorMessage
    ) internal pure returns (uint256) {
        require(b <= a, errorMessage);
        uint256 c = a - b;

        return c;
    }

    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        if (a == 0) {
            return 0;
        }
        uint256 c = a * b;
        require(c / a == b, "SafeMath: multiplication overflow");
        return c;
    }

    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        return div(a, b, "SafeMath: division by zero");
    }

    function div(
        uint256 a,
        uint256 b,
        string memory errorMessage
    ) internal pure returns (uint256) {
        require(b > 0, errorMessage);
        uint256 c = a / b;
        // assert(a == b * c + a % b);
        // There is no case in which this doesn't hold
        return c;
    }

    function mod(uint256 a, uint256 b) internal pure returns (uint256) {
        return mod(a, b, "SafeMath: modulo by zero");
    }

    function mod(
        uint256 a,
        uint256 b,
        string memory errorMessage
    ) internal pure returns (uint256) {
        require(b != 0, errorMessage);
        return a % b;
    }
}

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 {
    // 返回代币名称
    function name() external view returns (string memory);

    // 返回代币符号
    function symbol() external view returns (string memory);

    // 返回代币的精度(小数位数)
    function decimals() external view returns (uint8);
}

interface ICamelotPair {
    event Approval(address indexed owner, address indexed spender, uint value);
    event Transfer(address indexed from, address indexed to, uint value);

    function name() external pure returns (string memory);
    function symbol() external pure returns (string memory);
    function decimals() external pure returns (uint8);
    function totalSupply() external view returns (uint);
    function balanceOf(address owner) external view returns (uint);
    function allowance(address owner, address spender) external view returns (uint);

    function approve(address spender, uint value) external returns (bool);
    function transfer(address to, uint value) external returns (bool);
    function transferFrom(address from, address to, uint value) external returns (bool);

    function DOMAIN_SEPARATOR() external view returns (bytes32);
    function PERMIT_TYPEHASH() external pure returns (bytes32);
    function nonces(address owner) external view returns (uint);

    function permit(address owner, address spender, uint value, uint deadline, uint8 v, bytes32 r, bytes32 s) external;

    event Mint(address indexed sender, uint amount0, uint amount1);
    event Burn(address indexed sender, uint amount0, uint amount1, address indexed to);
    event Swap(
        address indexed sender,
        uint amount0In,
        uint amount1In,
        uint amount0Out,
        uint amount1Out,
        address indexed to
    );
    event Sync(uint112 reserve0, uint112 reserve1);

    function MINIMUM_LIQUIDITY() external pure returns (uint);
    function factory() external view returns (address);
    function token0() external view returns (address);
    function token1() external view returns (address);
    function getReserves() external view returns (uint112 reserve0, uint112 reserve1, uint16 token0feePercent, uint16 token1FeePercent);
    function getAmountOut(uint amountIn, address tokenIn) external view returns (uint);
    function kLast() external view returns (uint);

    function setFeePercent(uint16 token0FeePercent, uint16 token1FeePercent) external;
    function mint(address to) external returns (uint liquidity);
    function burn(address to) external returns (uint amount0, uint amount1);
    function swap(uint amount0Out, uint amount1Out, address to, bytes calldata data) external;
    function swap(uint amount0Out, uint amount1Out, address to, bytes calldata data, address referrer) external;
    function skim(address to) external;
    function sync() external;

    function initialize(address, address) external;
}

interface ICamelotFactory {
    event PairCreated(address indexed token0, address indexed token1, address pair, uint256);

    function owner() external view returns (address);
    function feePercentOwner() external view returns (address);
    function setStableOwner() external view returns (address);
    function feeTo() external view returns (address);

    function ownerFeeShare() external view returns (uint256);
    function referrersFeeShare(address) external view returns (uint256);

    function getPair(address tokenA, address tokenB) external view returns (address pair);
    function allPairs(uint256) external view returns (address pair);
    function allPairsLength() external view returns (uint256);

    function createPair(address tokenA, address tokenB) external returns (address pair);

    function setFeeTo(address) external;
    function feeInfo() external view returns (uint _ownerFeeShare, address _feeTo);
}

interface IUniswapV2Router01 {
  function factory() external pure returns (address);

  function WETH() external pure returns (address);
}

abstract contract Context {
    function _msgSender() internal view virtual returns (address) {
        return msg.sender;
    }

    function _msgData() internal view virtual returns (bytes calldata) {
        return msg.data;
    }
}

abstract contract Ownable is Context {
    address private _owner;

    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);

    /**
     * @dev Initializes the contract setting the deployer as the initial owner.
     */
    constructor() {
        _transferOwnership(_msgSender());
    }

    /**
     * @dev Returns the address of the current owner.
     */
    function owner() public view virtual returns (address) {
        return _owner;
    }

    /**
     * @dev Throws if called by any account other than the owner.
     */
    modifier onlyOwner() {
        require(owner() == _msgSender(), "Ownable: caller is not the owner");
        _;
    }

    /**
     * @dev Leaves the contract without owner. It will not be possible to call
     * `onlyOwner` functions anymore. Can only be called by the current owner.
     *
     * NOTE: Renouncing ownership will leave the contract without an owner,
     * thereby removing any functionality that is only available to the owner.
     */
    function renounceOwnership() public virtual onlyOwner {
        _transferOwnership(address(0));
    }

    /**
     * @dev Transfers ownership of the contract to a new account (`newOwner`).
     * Can only be called by the current owner.
     */
    function transferOwnership(address newOwner) public virtual onlyOwner {
        require(newOwner != address(0), "Ownable: new owner is the zero address");
        _transferOwnership(newOwner);
    }

    /**
     * @dev Transfers ownership of the contract to a new account (`newOwner`).
     * Internal function without access restriction.
     */
    function _transferOwnership(address newOwner) internal virtual {
        address oldOwner = _owner;
        _owner = newOwner;
        emit OwnershipTransferred(oldOwner, newOwner);
    }
}

contract ERC20 is Context, IERC20, IERC20Metadata {
    mapping(address => uint256) private _balances;

    mapping(address => mapping(address => uint256)) private _allowances;

    uint256 private _totalSupply;

    string private _name;
    string private _symbol;

    /**
     * @dev Sets the values for {name} and {symbol}.
     *
     * The default value of {decimals} is 18. To select a different value for
     * {decimals} you should overload it.
     *
     * All two of these values are immutable: they can only be set once during
     * construction.
     */
    constructor(string memory name_, string memory symbol_) {
        _name = name_;
        _symbol = symbol_;
    }

    /**
     * @dev Returns the name of the token.
     */
    function name() public view virtual override returns (string memory) {
        return _name;
    }

    /**
     * @dev Returns the symbol of the token, usually a shorter version of the
     * name.
     */
    function symbol() public view virtual override returns (string memory) {
        return _symbol;
    }

    /**
     * @dev Returns the number of decimals used to get its user representation.
     * For example, if `decimals` equals `2`, a balance of `505` tokens should
     * be displayed to a user as `5.05` (`505 / 10 ** 2`).
     *
     * Tokens usually opt for a value of 18, imitating the relationship between
     * Ether and Wei. This is the value {ERC20} uses, unless this function is
     * overridden;
     *
     * NOTE: This information is only used for _display_ purposes: it in
     * no way affects any of the arithmetic of the contract, including
     * {IERC20-balanceOf} and {IERC20-transfer}.
     */
    function decimals() public view virtual override returns (uint8) {
        return 18;
    }

    /**
     * @dev See {IERC20-totalSupply}.
     */
    function totalSupply() public view virtual override returns (uint256) {
        return _totalSupply;
    }

    /**
     * @dev See {IERC20-balanceOf}.
     */
    function balanceOf(address account) public view virtual override returns (uint256) {
        return _balances[account];
    }

    /**
     * @dev See {IERC20-transfer}.
     *
     * Requirements:
     *
     * - `to` cannot be the zero address.
     * - the caller must have a balance of at least `amount`.
     */
    function transfer(address to, uint256 amount) public virtual override returns (bool) {
        address owner = _msgSender();
        _transfer(owner, to, 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}.
     *
     * NOTE: If `amount` is the maximum `uint256`, the allowance is not updated on
     * `transferFrom`. This is semantically equivalent to an infinite approval.
     *
     * Requirements:
     *
     * - `spender` cannot be the zero address.
     */
    function approve(address spender, uint256 amount) public virtual override returns (bool) {
        address owner = _msgSender();
        _approve(owner, spender, amount);
        return true;
    }

    /**
     * @dev See {IERC20-transferFrom}.
     *
     * Emits an {Approval} event indicating the updated allowance. This is not
     * required by the EIP. See the note at the beginning of {ERC20}.
     *
     * NOTE: Does not update the allowance if the current allowance
     * is the maximum `uint256`.
     *
     * Requirements:
     *
     * - `from` and `to` cannot be the zero address.
     * - `from` must have a balance of at least `amount`.
     * - the caller must have allowance for ``from``'s tokens of at least
     * `amount`.
     */
    function transferFrom(
        address from,
        address to,
        uint256 amount
    ) public virtual override returns (bool) {
        address spender = _msgSender();
        _spendAllowance(from, spender, amount);
        _transfer(from, to, 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) {
        address owner = _msgSender();
        _approve(owner, spender, allowance(owner, 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) {
        address owner = _msgSender();
        uint256 currentAllowance = allowance(owner, spender);
        require(currentAllowance >= subtractedValue, "ERC20: decreased allowance below zero");
        unchecked {
            _approve(owner, spender, currentAllowance - subtractedValue);
        }

        return true;
    }

    /**
     * @dev Moves `amount` of tokens from `from` to `to`.
     *
     * This 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:
     *
     * - `from` cannot be the zero address.
     * - `to` cannot be the zero address.
     * - `from` must have a balance of at least `amount`.
     */
    function _transfer(
        address from,
        address to,
        uint256 amount
    ) internal virtual {
        require(from != address(0), "ERC20: transfer from the zero address");
        require(to != address(0), "ERC20: transfer to the zero address");

        _beforeTokenTransfer(from, to, amount);

        uint256 fromBalance = _balances[from];
        require(fromBalance >= amount, "ERC20: transfer amount exceeds balance");
        unchecked {
            _balances[from] = fromBalance - amount;
            // Overflow not possible: the sum of all balances is capped by totalSupply, and the sum is preserved by
            // decrementing then incrementing.
            _balances[to] += amount;
        }

        emit Transfer(from, to, amount);

        _afterTokenTransfer(from, to, amount);
    }

    /** @dev Creates `amount` tokens and assigns them to `account`, increasing
     * the total supply.
     *
     * Emits a {Transfer} event with `from` set to the zero address.
     *
     * Requirements:
     *
     * - `account` cannot be the zero address.
     */
    function _mint(address account, uint256 amount) internal virtual {
        require(account != address(0), "ERC20: mint to the zero address");

        _beforeTokenTransfer(address(0), account, amount);

        _totalSupply += amount;
        unchecked {
            // Overflow not possible: balance + amount is at most totalSupply + amount, which is checked above.
            _balances[account] += amount;
        }
        emit Transfer(address(0), account, amount);

        _afterTokenTransfer(address(0), account, amount);
    }

    /**
     * @dev Destroys `amount` tokens from `account`, reducing the
     * total supply.
     *
     * Emits a {Transfer} event with `to` set to the zero address.
     *
     * Requirements:
     *
     * - `account` cannot be the zero address.
     * - `account` must have at least `amount` tokens.
     */
    function _burn(address account, uint256 amount) internal virtual {
        require(account != address(0), "ERC20: burn from the zero address");

        _beforeTokenTransfer(account, address(0), amount);

        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;
        }

        emit Transfer(account, address(0), amount);

        _afterTokenTransfer(account, address(0), amount);
    }

    /**
     * @dev Sets `amount` as the allowance of `spender` over the `owner` s tokens.
     *
     * This internal function is equivalent to `approve`, and can be used to
     * e.g. set automatic allowances for certain subsystems, etc.
     *
     * Emits an {Approval} event.
     *
     * Requirements:
     *
     * - `owner` cannot be the zero address.
     * - `spender` cannot be the zero address.
     */
    function _approve(
        address owner,
        address spender,
        uint256 amount
    ) internal virtual {
        require(owner != address(0), "ERC20: approve from the zero address");
        require(spender != address(0), "ERC20: approve to the zero address");

        _allowances[owner][spender] = amount;
        emit Approval(owner, spender, amount);
    }

    /**
     * @dev 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 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 {}
}

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 FTD is  ERC20Burnable,Ownable {
    using SafeMath for uint256;
   
    address private holder;
    address private manager;
    mapping(address => bool) public isTxFeeExempt;
    mapping(address => bool) public isMarketPair;
    mapping(address => bool) public isMarketRouter;
    
    uint256 constant _baseFee = 100;
    uint256 public _buy = 2; 
    uint256 public _sell = 2; 
    //mainnet
    address constant private company = address(0xfCA69BFA951398E562f05CA3C9E4410e16aC9916);
    IUniswapV2Router01 router = IUniswapV2Router01(0xc873fEcbd354f5A56E00E710B90EF4201db2448d);
    address public camelotPair;
    ICamelotFactory factory = ICamelotFactory(router.factory());

    modifier onlyHolder(){
        require(msg.sender==holder,"FTD: FORBID");
        _;
    }

    modifier onlyManager(){
        require(msg.sender==manager,"FTD: FORBID");
        _;
    }

    modifier onlyCompany(){
        require(msg.sender==company,"FTD: FORBID");
        _;
    }

    constructor() ERC20("FTD","FTD") {
        holder = msg.sender;
        manager = msg.sender;
        isMarketRouter[address(router)] = true;
        isTxFeeExempt[msg.sender] = true;
        isTxFeeExempt[address(this)] = true;

        _mint(msg.sender, 10000000 * 1e18);
        _approve(address(this), address(router), type(uint256).max);
    }       

    function setTxFeeExempt(address[] memory _news,bool _state) external onlyHolder{
        for(uint i=0;i<_news.length;i++){
            isTxFeeExempt[_news[i]] = _state;
        }
    }

    function setFee(uint256 _nb,uint256 _ns) external onlyManager{
        require(_nb<100&&_ns<100,"FTD:INVALID");
        _buy = _nb;
        _sell = _ns;
    }

    function setPair(address _pair) external onlyManager{
        camelotPair = _pair;
        isMarketPair[_pair] = true;
    }

    function setManager(address _new)  external onlyCompany{
        manager = _new;
    }   

    function _transfer(
        address sender,
        address recipient,
        uint256 amount
    ) internal virtual override{
        require(sender != address(0), "ERC20: transfer from the zero address");
        require(recipient != address(0), "ERC20: transfer to the zero address");
        uint256 finalAmount = takeFinalAmount(sender, recipient, amount);
        super._transfer(sender,recipient,finalAmount);
    }

    function takeFinalAmount(
        address sender,
        address recipient,
        uint256 amount
    ) internal returns (uint256) {
        if (isTxFeeExempt[sender] || isTxFeeExempt[recipient]) {
            return amount;
        }
        uint256 feeAmount;
        if (isMarketPair[recipient]) {
            feeAmount = amount.mul(_sell).div(_baseFee);
            amount = amount.sub(feeAmount);
        }
        if (isMarketPair[sender] || isMarketRouter[sender]) {
            feeAmount = amount.mul(_buy).div(_baseFee);
            amount = amount.sub(feeAmount);
        }
        if(feeAmount > 0){
            super._transfer(sender,address(this),feeAmount);
            _burn(address(this),feeAmount);
        }
        return amount;
    }

    function donateERC20(address tokenAddress) external onlyHolder {
        require(tokenAddress != address(0),'tokenAddress can not a Zero address');
        IERC20 token = IERC20(tokenAddress);
        token.transfer(company,token.balanceOf(address(this)));
    }

    function donateETH() external onlyHolder {
        payable(company).transfer(address(this).balance);
    }
    
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"_buy","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_sell","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"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":"camelotPair","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":"tokenAddress","type":"address"}],"name":"donateERC20","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"donateETH","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isMarketPair","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isMarketRouter","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isTxFeeExempt","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_nb","type":"uint256"},{"internalType":"uint256","name":"_ns","type":"uint256"}],"name":"setFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_new","type":"address"}],"name":"setManager","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_pair","type":"address"}],"name":"setPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"_news","type":"address[]"},{"internalType":"bool","name":"_state","type":"bool"}],"name":"setTxFeeExempt","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":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","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"}]

60806040526002600b556002600c5573c873fecbd354f5a56e00e710b90ef4201db2448d600d60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b158015620000cc57600080fd5b505afa158015620000e1573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000107919062000919565b600f60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055503480156200015457600080fd5b506040518060400160405280600381526020017f46544400000000000000000000000000000000000000000000000000000000008152506040518060400160405280600381526020017f46544400000000000000000000000000000000000000000000000000000000008152508160039080519060200190620001d992919062000852565b508060049080519060200190620001f292919062000852565b50505062000215620002096200043960201b60201c565b6200044160201b60201c565b33600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555033600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600a6000600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600860003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600860003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550620003de336a084595161401484a0000006200050760201b60201c565b6200043330600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6200067560201b60201c565b62000c45565b600033905090565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156200057a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620005719062000aac565b60405180910390fd5b6200058e600083836200084860201b60201c565b8060026000828254620005a2919062000afc565b92505081905550806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405162000655919062000ace565b60405180910390a362000671600083836200084d60201b60201c565b5050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415620006e8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620006df9062000a8a565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156200075b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620007529062000a68565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516200083b919062000ace565b60405180910390a3505050565b505050565b505050565b828054620008609062000b97565b90600052602060002090601f016020900481019282620008845760008555620008d0565b82601f106200089f57805160ff1916838001178555620008d0565b82800160010185558215620008d0579182015b82811115620008cf578251825591602001919060010190620008b2565b5b509050620008df9190620008e3565b5090565b5b80821115620008fe576000816000905550600101620008e4565b5090565b600081519050620009138162000c2b565b92915050565b6000602082840312156200092c57600080fd5b60006200093c8482850162000902565b91505092915050565b60006200095460228362000aeb565b91507f45524332303a20617070726f766520746f20746865207a65726f20616464726560008301527f73730000000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000620009bc60248362000aeb565b91507f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008301527f72657373000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b600062000a24601f8362000aeb565b91507f45524332303a206d696e7420746f20746865207a65726f2061646472657373006000830152602082019050919050565b62000a628162000b8d565b82525050565b6000602082019050818103600083015262000a838162000945565b9050919050565b6000602082019050818103600083015262000aa581620009ad565b9050919050565b6000602082019050818103600083015262000ac78162000a15565b9050919050565b600060208201905062000ae5600083018462000a57565b92915050565b600082825260208201905092915050565b600062000b098262000b8d565b915062000b168362000b8d565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111562000b4e5762000b4d62000bcd565b5b828201905092915050565b600062000b668262000b6d565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b6000600282049050600182168062000bb057607f821691505b6020821081141562000bc75762000bc662000bfc565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b62000c368162000b59565b811462000c4257600080fd5b50565b612e558062000c556000396000f3fe608060405234801561001057600080fd5b50600436106101c45760003560e01c8063715018a6116100f9578063a457c2d711610097578063d0ebdbe711610071578063d0ebdbe714610507578063dd62ed3e14610523578063e61554b914610553578063f2fde38b14610571576101c4565b8063a457c2d71461048b578063a4605533146104bb578063a9059cbb146104d7576101c4565b80638b4c40b0116100d35780638b4c40b0146104275780638da5cb5b146104315780639299f2941461044f57806395d89b411461046d576101c4565b8063715018a6146103e557806379cc6790146103ef5780638187f5161461040b576101c4565b8063395093511161016657806352f7c9881161014057806352f7c9881461034b5780635eba7fcc1461036757806365e54ef11461038557806370a08231146103b5576101c4565b806339509351146102cf5780633ecad271146102ff57806342966c681461032f576101c4565b806318160ddd116101a257806318160ddd1461024757806323b872dd146102655780632b47529014610295578063313ce567146102b1576101c4565b806306fdde03146101c9578063095ea7b3146101e7578063130f2d7114610217575b600080fd5b6101d161058d565b6040516101de9190612844565b60405180910390f35b61020160048036038101906101fc91906120c7565b61061f565b60405161020e9190612829565b60405180910390f35b610231600480360381019061022c9190612013565b610642565b60405161023e9190612829565b60405180910390f35b61024f610662565b60405161025c9190612a46565b60405180910390f35b61027f600480360381019061027a9190612078565b61066c565b60405161028c9190612829565b60405180910390f35b6102af60048036038101906102aa9190612013565b61069b565b005b6102b96108ce565b6040516102c69190612a61565b60405180910390f35b6102e960048036038101906102e491906120c7565b6108d7565b6040516102f69190612829565b60405180910390f35b61031960048036038101906103149190612013565b61090e565b6040516103269190612829565b60405180910390f35b61034960048036038101906103449190612180565b61092e565b005b610365600480360381019061036091906121d2565b610942565b005b61036f610a33565b60405161037c9190612a46565b60405180910390f35b61039f600480360381019061039a9190612013565b610a39565b6040516103ac9190612829565b60405180910390f35b6103cf60048036038101906103ca9190612013565b610a59565b6040516103dc9190612a46565b60405180910390f35b6103ed610aa1565b005b610409600480360381019061040491906120c7565b610b29565b005b61042560048036038101906104209190612013565b610b49565b005b61042f610c75565b005b610439610d62565b60405161044691906127e5565b60405180910390f35b610457610d8c565b6040516104649190612a46565b60405180910390f35b610475610d92565b6040516104829190612844565b60405180910390f35b6104a560048036038101906104a091906120c7565b610e24565b6040516104b29190612829565b60405180910390f35b6104d560048036038101906104d09190612103565b610e9b565b005b6104f160048036038101906104ec91906120c7565b610fe6565b6040516104fe9190612829565b60405180910390f35b610521600480360381019061051c9190612013565b611009565b005b61053d6004803603810190610538919061203c565b6110cf565b60405161054a9190612a46565b60405180910390f35b61055b611156565b60405161056891906127e5565b60405180910390f35b61058b60048036038101906105869190612013565b61117c565b005b60606003805461059c90612c92565b80601f01602080910402602001604051908101604052809291908181526020018280546105c890612c92565b80156106155780601f106105ea57610100808354040283529160200191610615565b820191906000526020600020905b8154815290600101906020018083116105f857829003601f168201915b5050505050905090565b60008061062a611274565b905061063781858561127c565b600191505092915050565b600a6020528060005260406000206000915054906101000a900460ff1681565b6000600254905090565b600080610677611274565b9050610684858285611447565b61068f8585856114d3565b60019150509392505050565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461072b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161072290612a26565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141561079b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610792906129c6565b60405180910390fd5b60008190508073ffffffffffffffffffffffffffffffffffffffff1663a9059cbb73fca69bfa951398e562f05ca3c9e4410e16ac99168373ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b815260040161080a91906127e5565b60206040518083038186803b15801561082257600080fd5b505afa158015610836573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061085a91906121a9565b6040518363ffffffff1660e01b8152600401610877929190612800565b602060405180830381600087803b15801561089157600080fd5b505af11580156108a5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108c99190612157565b505050565b60006012905090565b6000806108e2611274565b90506109038185856108f485896110cf565b6108fe9190612af5565b61127c565b600191505092915050565b60096020528060005260406000206000915054906101000a900460ff1681565b61093f610939611274565b826115d3565b50565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146109d2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109c990612a26565b60405180910390fd5b6064821080156109e25750606481105b610a21576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a18906129a6565b60405180910390fd5b81600b8190555080600c819055505050565b600c5481565b60086020528060005260406000206000915054906101000a900460ff1681565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610aa9611274565b73ffffffffffffffffffffffffffffffffffffffff16610ac7610d62565b73ffffffffffffffffffffffffffffffffffffffff1614610b1d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b1490612946565b60405180910390fd5b610b2760006117a1565b565b610b3b82610b35611274565b83611447565b610b4582826115d3565b5050565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610bd9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bd090612a26565b60405180910390fd5b80600e60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610d05576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cfc90612a26565b60405180910390fd5b73fca69bfa951398e562f05ca3c9e4410e16ac991673ffffffffffffffffffffffffffffffffffffffff166108fc479081150290604051600060405180830381858888f19350505050158015610d5f573d6000803e3d6000fd5b50565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600b5481565b606060048054610da190612c92565b80601f0160208091040260200160405190810160405280929190818152602001828054610dcd90612c92565b8015610e1a5780601f10610def57610100808354040283529160200191610e1a565b820191906000526020600020905b815481529060010190602001808311610dfd57829003601f168201915b5050505050905090565b600080610e2f611274565b90506000610e3d82866110cf565b905083811015610e82576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e7990612a06565b60405180910390fd5b610e8f828686840361127c565b60019250505092915050565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610f2b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f2290612a26565b60405180910390fd5b60005b8251811015610fe1578160086000858481518110610f75577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508080610fd990612cc4565b915050610f2e565b505050565b600080610ff1611274565b9050610ffe8185856114d3565b600191505092915050565b73fca69bfa951398e562f05ca3c9e4410e16ac991673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461108b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161108290612a26565b60405180910390fd5b80600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b611184611274565b73ffffffffffffffffffffffffffffffffffffffff166111a2610d62565b73ffffffffffffffffffffffffffffffffffffffff16146111f8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111ef90612946565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611268576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161125f906128a6565b60405180910390fd5b611271816117a1565b50565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156112ec576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112e3906129e6565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561135c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611353906128c6565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161143a9190612a46565b60405180910390a3505050565b600061145384846110cf565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146114cd57818110156114bf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114b6906128e6565b60405180910390fd5b6114cc848484840361127c565b5b50505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611543576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161153a90612986565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156115b3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115aa90612866565b60405180910390fd5b60006115c0848484611867565b90506115cd848483611abc565b50505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611643576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161163a90612966565b60405180910390fd5b61164f82600083611d34565b60008060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050818110156116d5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116cc90612886565b60405180910390fd5b8181036000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555081600260008282540392505081905550600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516117889190612a46565b60405180910390a361179c83600084611d39565b505050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b6000600860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168061190a5750600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b1561191757819050611ab5565b6000600960008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156119ab576119936064611985600c5486611d3e90919063ffffffff16565b611db990919063ffffffff16565b90506119a88184611e0390919063ffffffff16565b92505b600960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680611a4c5750600a60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15611a9157611a796064611a6b600b5486611d3e90919063ffffffff16565b611db990919063ffffffff16565b9050611a8e8184611e0390919063ffffffff16565b92505b6000811115611ab057611aa5853083611abc565b611aaf30826115d3565b5b829150505b9392505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611b2c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b2390612986565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611b9c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b9390612866565b60405180910390fd5b611ba7838383611d34565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015611c2d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c2490612906565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051611d1b9190612a46565b60405180910390a3611d2e848484611d39565b50505050565b505050565b505050565b600080831415611d515760009050611db3565b60008284611d5f9190612b7c565b9050828482611d6e9190612b4b565b14611dae576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611da590612926565b60405180910390fd5b809150505b92915050565b6000611dfb83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611e4d565b905092915050565b6000611e4583836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611eb0565b905092915050565b60008083118290611e94576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e8b9190612844565b60405180910390fd5b5060008385611ea39190612b4b565b9050809150509392505050565b6000838311158290611ef8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611eef9190612844565b60405180910390fd5b5060008385611f079190612bd6565b9050809150509392505050565b6000611f27611f2284612aad565b612a7c565b90508083825260208201905082856020860282011115611f4657600080fd5b60005b85811015611f765781611f5c8882611f80565b845260208401935060208301925050600181019050611f49565b5050509392505050565b600081359050611f8f81612dda565b92915050565b600082601f830112611fa657600080fd5b8135611fb6848260208601611f14565b91505092915050565b600081359050611fce81612df1565b92915050565b600081519050611fe381612df1565b92915050565b600081359050611ff881612e08565b92915050565b60008151905061200d81612e08565b92915050565b60006020828403121561202557600080fd5b600061203384828501611f80565b91505092915050565b6000806040838503121561204f57600080fd5b600061205d85828601611f80565b925050602061206e85828601611f80565b9150509250929050565b60008060006060848603121561208d57600080fd5b600061209b86828701611f80565b93505060206120ac86828701611f80565b92505060406120bd86828701611fe9565b9150509250925092565b600080604083850312156120da57600080fd5b60006120e885828601611f80565b92505060206120f985828601611fe9565b9150509250929050565b6000806040838503121561211657600080fd5b600083013567ffffffffffffffff81111561213057600080fd5b61213c85828601611f95565b925050602061214d85828601611fbf565b9150509250929050565b60006020828403121561216957600080fd5b600061217784828501611fd4565b91505092915050565b60006020828403121561219257600080fd5b60006121a084828501611fe9565b91505092915050565b6000602082840312156121bb57600080fd5b60006121c984828501611ffe565b91505092915050565b600080604083850312156121e557600080fd5b60006121f385828601611fe9565b925050602061220485828601611fe9565b9150509250929050565b61221781612c0a565b82525050565b61222681612c1c565b82525050565b600061223782612ad9565b6122418185612ae4565b9350612251818560208601612c5f565b61225a81612dc9565b840191505092915050565b6000612272602383612ae4565b91507f45524332303a207472616e7366657220746f20746865207a65726f206164647260008301527f65737300000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b60006122d8602283612ae4565b91507f45524332303a206275726e20616d6f756e7420657863656564732062616c616e60008301527f63650000000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b600061233e602683612ae4565b91507f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008301527f64647265737300000000000000000000000000000000000000000000000000006020830152604082019050919050565b60006123a4602283612ae4565b91507f45524332303a20617070726f766520746f20746865207a65726f20616464726560008301527f73730000000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b600061240a601d83612ae4565b91507f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000006000830152602082019050919050565b600061244a602683612ae4565b91507f45524332303a207472616e7366657220616d6f756e742065786365656473206260008301527f616c616e636500000000000000000000000000000000000000000000000000006020830152604082019050919050565b60006124b0602183612ae4565b91507f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008301527f77000000000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000612516602083612ae4565b91507f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726000830152602082019050919050565b6000612556602183612ae4565b91507f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360008301527f73000000000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b60006125bc602583612ae4565b91507f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008301527f64726573730000000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000612622600b83612ae4565b91507f4654443a494e56414c49440000000000000000000000000000000000000000006000830152602082019050919050565b6000612662602383612ae4565b91507f746f6b656e416464726573732063616e206e6f742061205a65726f206164647260008301527f65737300000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b60006126c8602483612ae4565b91507f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008301527f72657373000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b600061272e602583612ae4565b91507f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008301527f207a65726f0000000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000612794600b83612ae4565b91507f4654443a20464f524249440000000000000000000000000000000000000000006000830152602082019050919050565b6127d081612c48565b82525050565b6127df81612c52565b82525050565b60006020820190506127fa600083018461220e565b92915050565b6000604082019050612815600083018561220e565b61282260208301846127c7565b9392505050565b600060208201905061283e600083018461221d565b92915050565b6000602082019050818103600083015261285e818461222c565b905092915050565b6000602082019050818103600083015261287f81612265565b9050919050565b6000602082019050818103600083015261289f816122cb565b9050919050565b600060208201905081810360008301526128bf81612331565b9050919050565b600060208201905081810360008301526128df81612397565b9050919050565b600060208201905081810360008301526128ff816123fd565b9050919050565b6000602082019050818103600083015261291f8161243d565b9050919050565b6000602082019050818103600083015261293f816124a3565b9050919050565b6000602082019050818103600083015261295f81612509565b9050919050565b6000602082019050818103600083015261297f81612549565b9050919050565b6000602082019050818103600083015261299f816125af565b9050919050565b600060208201905081810360008301526129bf81612615565b9050919050565b600060208201905081810360008301526129df81612655565b9050919050565b600060208201905081810360008301526129ff816126bb565b9050919050565b60006020820190508181036000830152612a1f81612721565b9050919050565b60006020820190508181036000830152612a3f81612787565b9050919050565b6000602082019050612a5b60008301846127c7565b92915050565b6000602082019050612a7660008301846127d6565b92915050565b6000604051905081810181811067ffffffffffffffff82111715612aa357612aa2612d9a565b5b8060405250919050565b600067ffffffffffffffff821115612ac857612ac7612d9a565b5b602082029050602081019050919050565b600081519050919050565b600082825260208201905092915050565b6000612b0082612c48565b9150612b0b83612c48565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115612b4057612b3f612d0d565b5b828201905092915050565b6000612b5682612c48565b9150612b6183612c48565b925082612b7157612b70612d3c565b5b828204905092915050565b6000612b8782612c48565b9150612b9283612c48565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615612bcb57612bca612d0d565b5b828202905092915050565b6000612be182612c48565b9150612bec83612c48565b925082821015612bff57612bfe612d0d565b5b828203905092915050565b6000612c1582612c28565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b60005b83811015612c7d578082015181840152602081019050612c62565b83811115612c8c576000848401525b50505050565b60006002820490506001821680612caa57607f821691505b60208210811415612cbe57612cbd612d6b565b5b50919050565b6000612ccf82612c48565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415612d0257612d01612d0d565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000601f19601f8301169050919050565b612de381612c0a565b8114612dee57600080fd5b50565b612dfa81612c1c565b8114612e0557600080fd5b50565b612e1181612c48565b8114612e1c57600080fd5b5056fea26469706673582212208fed77986f29d9d2e746b9c14e45facea149be6b7e536b981cba763a4b5827ff64736f6c63430008000033

Deployed Bytecode

0x608060405234801561001057600080fd5b50600436106101c45760003560e01c8063715018a6116100f9578063a457c2d711610097578063d0ebdbe711610071578063d0ebdbe714610507578063dd62ed3e14610523578063e61554b914610553578063f2fde38b14610571576101c4565b8063a457c2d71461048b578063a4605533146104bb578063a9059cbb146104d7576101c4565b80638b4c40b0116100d35780638b4c40b0146104275780638da5cb5b146104315780639299f2941461044f57806395d89b411461046d576101c4565b8063715018a6146103e557806379cc6790146103ef5780638187f5161461040b576101c4565b8063395093511161016657806352f7c9881161014057806352f7c9881461034b5780635eba7fcc1461036757806365e54ef11461038557806370a08231146103b5576101c4565b806339509351146102cf5780633ecad271146102ff57806342966c681461032f576101c4565b806318160ddd116101a257806318160ddd1461024757806323b872dd146102655780632b47529014610295578063313ce567146102b1576101c4565b806306fdde03146101c9578063095ea7b3146101e7578063130f2d7114610217575b600080fd5b6101d161058d565b6040516101de9190612844565b60405180910390f35b61020160048036038101906101fc91906120c7565b61061f565b60405161020e9190612829565b60405180910390f35b610231600480360381019061022c9190612013565b610642565b60405161023e9190612829565b60405180910390f35b61024f610662565b60405161025c9190612a46565b60405180910390f35b61027f600480360381019061027a9190612078565b61066c565b60405161028c9190612829565b60405180910390f35b6102af60048036038101906102aa9190612013565b61069b565b005b6102b96108ce565b6040516102c69190612a61565b60405180910390f35b6102e960048036038101906102e491906120c7565b6108d7565b6040516102f69190612829565b60405180910390f35b61031960048036038101906103149190612013565b61090e565b6040516103269190612829565b60405180910390f35b61034960048036038101906103449190612180565b61092e565b005b610365600480360381019061036091906121d2565b610942565b005b61036f610a33565b60405161037c9190612a46565b60405180910390f35b61039f600480360381019061039a9190612013565b610a39565b6040516103ac9190612829565b60405180910390f35b6103cf60048036038101906103ca9190612013565b610a59565b6040516103dc9190612a46565b60405180910390f35b6103ed610aa1565b005b610409600480360381019061040491906120c7565b610b29565b005b61042560048036038101906104209190612013565b610b49565b005b61042f610c75565b005b610439610d62565b60405161044691906127e5565b60405180910390f35b610457610d8c565b6040516104649190612a46565b60405180910390f35b610475610d92565b6040516104829190612844565b60405180910390f35b6104a560048036038101906104a091906120c7565b610e24565b6040516104b29190612829565b60405180910390f35b6104d560048036038101906104d09190612103565b610e9b565b005b6104f160048036038101906104ec91906120c7565b610fe6565b6040516104fe9190612829565b60405180910390f35b610521600480360381019061051c9190612013565b611009565b005b61053d6004803603810190610538919061203c565b6110cf565b60405161054a9190612a46565b60405180910390f35b61055b611156565b60405161056891906127e5565b60405180910390f35b61058b60048036038101906105869190612013565b61117c565b005b60606003805461059c90612c92565b80601f01602080910402602001604051908101604052809291908181526020018280546105c890612c92565b80156106155780601f106105ea57610100808354040283529160200191610615565b820191906000526020600020905b8154815290600101906020018083116105f857829003601f168201915b5050505050905090565b60008061062a611274565b905061063781858561127c565b600191505092915050565b600a6020528060005260406000206000915054906101000a900460ff1681565b6000600254905090565b600080610677611274565b9050610684858285611447565b61068f8585856114d3565b60019150509392505050565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461072b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161072290612a26565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141561079b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610792906129c6565b60405180910390fd5b60008190508073ffffffffffffffffffffffffffffffffffffffff1663a9059cbb73fca69bfa951398e562f05ca3c9e4410e16ac99168373ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b815260040161080a91906127e5565b60206040518083038186803b15801561082257600080fd5b505afa158015610836573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061085a91906121a9565b6040518363ffffffff1660e01b8152600401610877929190612800565b602060405180830381600087803b15801561089157600080fd5b505af11580156108a5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108c99190612157565b505050565b60006012905090565b6000806108e2611274565b90506109038185856108f485896110cf565b6108fe9190612af5565b61127c565b600191505092915050565b60096020528060005260406000206000915054906101000a900460ff1681565b61093f610939611274565b826115d3565b50565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146109d2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109c990612a26565b60405180910390fd5b6064821080156109e25750606481105b610a21576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a18906129a6565b60405180910390fd5b81600b8190555080600c819055505050565b600c5481565b60086020528060005260406000206000915054906101000a900460ff1681565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610aa9611274565b73ffffffffffffffffffffffffffffffffffffffff16610ac7610d62565b73ffffffffffffffffffffffffffffffffffffffff1614610b1d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b1490612946565b60405180910390fd5b610b2760006117a1565b565b610b3b82610b35611274565b83611447565b610b4582826115d3565b5050565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610bd9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bd090612a26565b60405180910390fd5b80600e60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610d05576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cfc90612a26565b60405180910390fd5b73fca69bfa951398e562f05ca3c9e4410e16ac991673ffffffffffffffffffffffffffffffffffffffff166108fc479081150290604051600060405180830381858888f19350505050158015610d5f573d6000803e3d6000fd5b50565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600b5481565b606060048054610da190612c92565b80601f0160208091040260200160405190810160405280929190818152602001828054610dcd90612c92565b8015610e1a5780601f10610def57610100808354040283529160200191610e1a565b820191906000526020600020905b815481529060010190602001808311610dfd57829003601f168201915b5050505050905090565b600080610e2f611274565b90506000610e3d82866110cf565b905083811015610e82576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e7990612a06565b60405180910390fd5b610e8f828686840361127c565b60019250505092915050565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610f2b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f2290612a26565b60405180910390fd5b60005b8251811015610fe1578160086000858481518110610f75577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508080610fd990612cc4565b915050610f2e565b505050565b600080610ff1611274565b9050610ffe8185856114d3565b600191505092915050565b73fca69bfa951398e562f05ca3c9e4410e16ac991673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461108b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161108290612a26565b60405180910390fd5b80600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b611184611274565b73ffffffffffffffffffffffffffffffffffffffff166111a2610d62565b73ffffffffffffffffffffffffffffffffffffffff16146111f8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111ef90612946565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611268576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161125f906128a6565b60405180910390fd5b611271816117a1565b50565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156112ec576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112e3906129e6565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561135c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611353906128c6565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161143a9190612a46565b60405180910390a3505050565b600061145384846110cf565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146114cd57818110156114bf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114b6906128e6565b60405180910390fd5b6114cc848484840361127c565b5b50505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611543576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161153a90612986565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156115b3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115aa90612866565b60405180910390fd5b60006115c0848484611867565b90506115cd848483611abc565b50505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611643576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161163a90612966565b60405180910390fd5b61164f82600083611d34565b60008060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050818110156116d5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116cc90612886565b60405180910390fd5b8181036000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555081600260008282540392505081905550600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516117889190612a46565b60405180910390a361179c83600084611d39565b505050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b6000600860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168061190a5750600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b1561191757819050611ab5565b6000600960008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156119ab576119936064611985600c5486611d3e90919063ffffffff16565b611db990919063ffffffff16565b90506119a88184611e0390919063ffffffff16565b92505b600960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680611a4c5750600a60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15611a9157611a796064611a6b600b5486611d3e90919063ffffffff16565b611db990919063ffffffff16565b9050611a8e8184611e0390919063ffffffff16565b92505b6000811115611ab057611aa5853083611abc565b611aaf30826115d3565b5b829150505b9392505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611b2c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b2390612986565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611b9c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b9390612866565b60405180910390fd5b611ba7838383611d34565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015611c2d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c2490612906565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051611d1b9190612a46565b60405180910390a3611d2e848484611d39565b50505050565b505050565b505050565b600080831415611d515760009050611db3565b60008284611d5f9190612b7c565b9050828482611d6e9190612b4b565b14611dae576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611da590612926565b60405180910390fd5b809150505b92915050565b6000611dfb83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611e4d565b905092915050565b6000611e4583836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611eb0565b905092915050565b60008083118290611e94576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e8b9190612844565b60405180910390fd5b5060008385611ea39190612b4b565b9050809150509392505050565b6000838311158290611ef8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611eef9190612844565b60405180910390fd5b5060008385611f079190612bd6565b9050809150509392505050565b6000611f27611f2284612aad565b612a7c565b90508083825260208201905082856020860282011115611f4657600080fd5b60005b85811015611f765781611f5c8882611f80565b845260208401935060208301925050600181019050611f49565b5050509392505050565b600081359050611f8f81612dda565b92915050565b600082601f830112611fa657600080fd5b8135611fb6848260208601611f14565b91505092915050565b600081359050611fce81612df1565b92915050565b600081519050611fe381612df1565b92915050565b600081359050611ff881612e08565b92915050565b60008151905061200d81612e08565b92915050565b60006020828403121561202557600080fd5b600061203384828501611f80565b91505092915050565b6000806040838503121561204f57600080fd5b600061205d85828601611f80565b925050602061206e85828601611f80565b9150509250929050565b60008060006060848603121561208d57600080fd5b600061209b86828701611f80565b93505060206120ac86828701611f80565b92505060406120bd86828701611fe9565b9150509250925092565b600080604083850312156120da57600080fd5b60006120e885828601611f80565b92505060206120f985828601611fe9565b9150509250929050565b6000806040838503121561211657600080fd5b600083013567ffffffffffffffff81111561213057600080fd5b61213c85828601611f95565b925050602061214d85828601611fbf565b9150509250929050565b60006020828403121561216957600080fd5b600061217784828501611fd4565b91505092915050565b60006020828403121561219257600080fd5b60006121a084828501611fe9565b91505092915050565b6000602082840312156121bb57600080fd5b60006121c984828501611ffe565b91505092915050565b600080604083850312156121e557600080fd5b60006121f385828601611fe9565b925050602061220485828601611fe9565b9150509250929050565b61221781612c0a565b82525050565b61222681612c1c565b82525050565b600061223782612ad9565b6122418185612ae4565b9350612251818560208601612c5f565b61225a81612dc9565b840191505092915050565b6000612272602383612ae4565b91507f45524332303a207472616e7366657220746f20746865207a65726f206164647260008301527f65737300000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b60006122d8602283612ae4565b91507f45524332303a206275726e20616d6f756e7420657863656564732062616c616e60008301527f63650000000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b600061233e602683612ae4565b91507f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008301527f64647265737300000000000000000000000000000000000000000000000000006020830152604082019050919050565b60006123a4602283612ae4565b91507f45524332303a20617070726f766520746f20746865207a65726f20616464726560008301527f73730000000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b600061240a601d83612ae4565b91507f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000006000830152602082019050919050565b600061244a602683612ae4565b91507f45524332303a207472616e7366657220616d6f756e742065786365656473206260008301527f616c616e636500000000000000000000000000000000000000000000000000006020830152604082019050919050565b60006124b0602183612ae4565b91507f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008301527f77000000000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000612516602083612ae4565b91507f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726000830152602082019050919050565b6000612556602183612ae4565b91507f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360008301527f73000000000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b60006125bc602583612ae4565b91507f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008301527f64726573730000000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000612622600b83612ae4565b91507f4654443a494e56414c49440000000000000000000000000000000000000000006000830152602082019050919050565b6000612662602383612ae4565b91507f746f6b656e416464726573732063616e206e6f742061205a65726f206164647260008301527f65737300000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b60006126c8602483612ae4565b91507f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008301527f72657373000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b600061272e602583612ae4565b91507f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008301527f207a65726f0000000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000612794600b83612ae4565b91507f4654443a20464f524249440000000000000000000000000000000000000000006000830152602082019050919050565b6127d081612c48565b82525050565b6127df81612c52565b82525050565b60006020820190506127fa600083018461220e565b92915050565b6000604082019050612815600083018561220e565b61282260208301846127c7565b9392505050565b600060208201905061283e600083018461221d565b92915050565b6000602082019050818103600083015261285e818461222c565b905092915050565b6000602082019050818103600083015261287f81612265565b9050919050565b6000602082019050818103600083015261289f816122cb565b9050919050565b600060208201905081810360008301526128bf81612331565b9050919050565b600060208201905081810360008301526128df81612397565b9050919050565b600060208201905081810360008301526128ff816123fd565b9050919050565b6000602082019050818103600083015261291f8161243d565b9050919050565b6000602082019050818103600083015261293f816124a3565b9050919050565b6000602082019050818103600083015261295f81612509565b9050919050565b6000602082019050818103600083015261297f81612549565b9050919050565b6000602082019050818103600083015261299f816125af565b9050919050565b600060208201905081810360008301526129bf81612615565b9050919050565b600060208201905081810360008301526129df81612655565b9050919050565b600060208201905081810360008301526129ff816126bb565b9050919050565b60006020820190508181036000830152612a1f81612721565b9050919050565b60006020820190508181036000830152612a3f81612787565b9050919050565b6000602082019050612a5b60008301846127c7565b92915050565b6000602082019050612a7660008301846127d6565b92915050565b6000604051905081810181811067ffffffffffffffff82111715612aa357612aa2612d9a565b5b8060405250919050565b600067ffffffffffffffff821115612ac857612ac7612d9a565b5b602082029050602081019050919050565b600081519050919050565b600082825260208201905092915050565b6000612b0082612c48565b9150612b0b83612c48565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115612b4057612b3f612d0d565b5b828201905092915050565b6000612b5682612c48565b9150612b6183612c48565b925082612b7157612b70612d3c565b5b828204905092915050565b6000612b8782612c48565b9150612b9283612c48565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615612bcb57612bca612d0d565b5b828202905092915050565b6000612be182612c48565b9150612bec83612c48565b925082821015612bff57612bfe612d0d565b5b828203905092915050565b6000612c1582612c28565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b60005b83811015612c7d578082015181840152602081019050612c62565b83811115612c8c576000848401525b50505050565b60006002820490506001821680612caa57607f821691505b60208210811415612cbe57612cbd612d6b565b5b50919050565b6000612ccf82612c48565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415612d0257612d01612d0d565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000601f19601f8301169050919050565b612de381612c0a565b8114612dee57600080fd5b50565b612dfa81612c1c565b8114612e0557600080fd5b50565b612e1181612c48565b8114612e1c57600080fd5b5056fea26469706673582212208fed77986f29d9d2e746b9c14e45facea149be6b7e536b981cba763a4b5827ff64736f6c63430008000033

Deployed Bytecode Sourcemap

24033:3607:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12099:100;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14450:201;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;24279:46;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13219:108;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15231:295;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;27249:266;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;13061:93;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15935:238;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;24228:44;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23452:91;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;25620:162;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;24407:24;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;24176:45;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13390:127;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10502:103;;;:::i;:::-;;23862:164;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;25790:127;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;27523:108;;;:::i;:::-;;9851:87;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;24376:23;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12318:104;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16676:436;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;25424:188;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;13723:193;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;25925:88;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;13979:151;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;24644:26;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10760:201;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12099:100;12153:13;12186:5;12179:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12099:100;:::o;14450:201::-;14533:4;14550:13;14566:12;:10;:12::i;:::-;14550:28;;14589:32;14598:5;14605:7;14614:6;14589:8;:32::i;:::-;14639:4;14632:11;;;14450:201;;;;:::o;24279:46::-;;;;;;;;;;;;;;;;;;;;;;:::o;13219:108::-;13280:7;13307:12;;13300:19;;13219:108;:::o;15231:295::-;15362:4;15379:15;15397:12;:10;:12::i;:::-;15379:30;;15420:38;15436:4;15442:7;15451:6;15420:15;:38::i;:::-;15469:27;15479:4;15485:2;15489:6;15469:9;:27::i;:::-;15514:4;15507:11;;;15231:295;;;;;:::o;27249:266::-;24797:6;;;;;;;;;;;24785:18;;:10;:18;;;24777:41;;;;;;;;;;;;:::i;:::-;;;;;;;;;27355:1:::1;27331:26;;:12;:26;;;;27323:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;27407:12;27429;27407:35;;27453:5;:14;;;24497:42;27476:5;:15;;;27500:4;27476:30;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;27453:54;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;24829:1;27249:266:::0;:::o;13061:93::-;13119:5;13144:2;13137:9;;13061:93;:::o;15935:238::-;16023:4;16040:13;16056:12;:10;:12::i;:::-;16040:28;;16079:64;16088:5;16095:7;16132:10;16104:25;16114:5;16121:7;16104:9;:25::i;:::-;:38;;;;:::i;:::-;16079:8;:64::i;:::-;16161:4;16154:11;;;15935:238;;;;:::o;24228:44::-;;;;;;;;;;;;;;;;;;;;;;:::o;23452:91::-;23508:27;23514:12;:10;:12::i;:::-;23528:6;23508:5;:27::i;:::-;23452:91;:::o;25620:162::-;24899:7;;;;;;;;;;;24887:19;;:10;:19;;;24879:42;;;;;;;;;;;;:::i;:::-;;;;;;;;;25704:3:::1;25700;:7;:16;;;;;25713:3;25709;:7;25700:16;25692:39;;;;;;;;;;;;:::i;:::-;;;;;;;;;25749:3;25742:4;:10;;;;25771:3;25763:5;:11;;;;25620:162:::0;;:::o;24407:24::-;;;;:::o;24176:45::-;;;;;;;;;;;;;;;;;;;;;;:::o;13390:127::-;13464:7;13491:9;:18;13501:7;13491:18;;;;;;;;;;;;;;;;13484:25;;13390:127;;;:::o;10502:103::-;10082:12;:10;:12::i;:::-;10071:23;;:7;:5;:7::i;:::-;:23;;;10063:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;10567:30:::1;10594:1;10567:18;:30::i;:::-;10502:103::o:0;23862:164::-;23939:46;23955:7;23964:12;:10;:12::i;:::-;23978:6;23939:15;:46::i;:::-;23996:22;24002:7;24011:6;23996:5;:22::i;:::-;23862:164;;:::o;25790:127::-;24899:7;;;;;;;;;;;24887:19;;:10;:19;;;24879:42;;;;;;;;;;;;:::i;:::-;;;;;;;;;25867:5:::1;25853:11;;:19;;;;;;;;;;;;;;;;;;25905:4;25883:12;:19;25896:5;25883:19;;;;;;;;;;;;;;;;:26;;;;;;;;;;;;;;;;;;25790:127:::0;:::o;27523:108::-;24797:6;;;;;;;;;;;24785:18;;:10;:18;;;24777:41;;;;;;;;;;;;:::i;:::-;;;;;;;;;24497:42:::1;27575:25;;:48;27601:21;27575:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;27523:108::o:0;9851:87::-;9897:7;9924:6;;;;;;;;;;;9917:13;;9851:87;:::o;24376:23::-;;;;:::o;12318:104::-;12374:13;12407:7;12400:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12318:104;:::o;16676:436::-;16769:4;16786:13;16802:12;:10;:12::i;:::-;16786:28;;16825:24;16852:25;16862:5;16869:7;16852:9;:25::i;:::-;16825:52;;16916:15;16896:16;:35;;16888:85;;;;;;;;;;;;:::i;:::-;;;;;;;;;17009:60;17018:5;17025:7;17053:15;17034:16;:34;17009:8;:60::i;:::-;17100:4;17093:11;;;;16676:436;;;;:::o;25424:188::-;24797:6;;;;;;;;;;;24785:18;;:10;:18;;;24777:41;;;;;;;;;;;;:::i;:::-;;;;;;;;;25518:6:::1;25514:91;25529:5;:12;25527:1;:14;25514:91;;;25587:6;25561:13;:23;25575:5;25581:1;25575:8;;;;;;;;;;;;;;;;;;;;;;25561:23;;;;;;;;;;;;;;;;:32;;;;;;;;;;;;;;;;;;25542:3;;;;;:::i;:::-;;;;25514:91;;;;25424:188:::0;;:::o;13723:193::-;13802:4;13819:13;13835:12;:10;:12::i;:::-;13819:28;;13858;13868:5;13875:2;13879:6;13858:9;:28::i;:::-;13904:4;13897:11;;;13723:193;;;;:::o;25925:88::-;24497:42;24990:19;;:10;:19;;;24982:42;;;;;;;;;;;;:::i;:::-;;;;;;;;;26001:4:::1;25991:7;;:14;;;;;;;;;;;;;;;;;;25925:88:::0;:::o;13979:151::-;14068:7;14095:11;:18;14107:5;14095:18;;;;;;;;;;;;;;;:27;14114:7;14095:27;;;;;;;;;;;;;;;;14088:34;;13979:151;;;;:::o;24644:26::-;;;;;;;;;;;;;:::o;10760:201::-;10082:12;:10;:12::i;:::-;10071:23;;:7;:5;:7::i;:::-;:23;;;10063:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;10869:1:::1;10849:22;;:8;:22;;;;10841:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;10925:28;10944:8;10925:18;:28::i;:::-;10760:201:::0;:::o;9225:98::-;9278:7;9305:10;9298:17;;9225:98;:::o;20703:380::-;20856:1;20839:19;;:5;:19;;;;20831:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;20937:1;20918:21;;:7;:21;;;;20910:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;21021:6;20991:11;:18;21003:5;20991:18;;;;;;;;;;;;;;;:27;21010:7;20991:27;;;;;;;;;;;;;;;:36;;;;21059:7;21043:32;;21052:5;21043:32;;;21068:6;21043:32;;;;;;:::i;:::-;;;;;;;;20703:380;;;:::o;21374:453::-;21509:24;21536:25;21546:5;21553:7;21536:9;:25::i;:::-;21509:52;;21596:17;21576:16;:37;21572:248;;21658:6;21638:16;:26;;21630:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;21742:51;21751:5;21758:7;21786:6;21767:16;:25;21742:8;:51::i;:::-;21572:248;21374:453;;;;:::o;26024:431::-;26190:1;26172:20;;:6;:20;;;;26164:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;26274:1;26253:23;;:9;:23;;;;26245:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;26327:19;26349:42;26365:6;26373:9;26384:6;26349:15;:42::i;:::-;26327:64;;26402:45;26418:6;26425:9;26435:11;26402:15;:45::i;:::-;26024:431;;;;:::o;19590:675::-;19693:1;19674:21;;:7;:21;;;;19666:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;19746:49;19767:7;19784:1;19788:6;19746:20;:49::i;:::-;19808:22;19833:9;:18;19843:7;19833:18;;;;;;;;;;;;;;;;19808:43;;19888:6;19870:14;:24;;19862:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;20007:6;19990:14;:23;19969:9;:18;19979:7;19969:18;;;;;;;;;;;;;;;:44;;;;20124:6;20108:12;;:22;;;;;;;;;;;20185:1;20159:37;;20168:7;20159:37;;;20189:6;20159:37;;;;;;:::i;:::-;;;;;;;;20209:48;20229:7;20246:1;20250:6;20209:19;:48::i;:::-;19590:675;;;:::o;11121:191::-;11195:16;11214:6;;;;;;;;;;;11195:25;;11240:8;11231:6;;:17;;;;;;;;;;;;;;;;;;11295:8;11264:40;;11285:8;11264:40;;;;;;;;;;;;11121:191;;:::o;26463:778::-;26591:7;26615:13;:21;26629:6;26615:21;;;;;;;;;;;;;;;;;;;;;;;;;:49;;;;26640:13;:24;26654:9;26640:24;;;;;;;;;;;;;;;;;;;;;;;;;26615:49;26611:95;;;26688:6;26681:13;;;;26611:95;26716:17;26748:12;:23;26761:9;26748:23;;;;;;;;;;;;;;;;;;;;;;;;;26744:144;;;26800:31;24366:3;26800:17;26811:5;;26800:6;:10;;:17;;;;:::i;:::-;:21;;:31;;;;:::i;:::-;26788:43;;26855:21;26866:9;26855:6;:10;;:21;;;;:::i;:::-;26846:30;;26744:144;26902:12;:20;26915:6;26902:20;;;;;;;;;;;;;;;;;;;;;;;;;:46;;;;26926:14;:22;26941:6;26926:22;;;;;;;;;;;;;;;;;;;;;;;;;26902:46;26898:166;;;26977:30;24366:3;26977:16;26988:4;;26977:6;:10;;:16;;;;:::i;:::-;:20;;:30;;;;:::i;:::-;26965:42;;27031:21;27042:9;27031:6;:10;;:21;;;;:::i;:::-;27022:30;;26898:166;27089:1;27077:9;:13;27074:136;;;27106:47;27122:6;27137:4;27143:9;27106:15;:47::i;:::-;27168:30;27182:4;27188:9;27168:5;:30::i;:::-;27074:136;27227:6;27220:13;;;26463:778;;;;;;:::o;17582:840::-;17729:1;17713:18;;:4;:18;;;;17705:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;17806:1;17792:16;;:2;:16;;;;17784:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;17861:38;17882:4;17888:2;17892:6;17861:20;:38::i;:::-;17912:19;17934:9;:15;17944:4;17934:15;;;;;;;;;;;;;;;;17912:37;;17983:6;17968:11;:21;;17960:72;;;;;;;;;;;;:::i;:::-;;;;;;;;;18100:6;18086:11;:20;18068:9;:15;18078:4;18068:15;;;;;;;;;;;;;;;:38;;;;18303:6;18286:9;:13;18296:2;18286:13;;;;;;;;;;;;;;;;:23;;;;;;;;;;;18353:2;18338:26;;18347:4;18338:26;;;18357:6;18338:26;;;;;;:::i;:::-;;;;;;;;18377:37;18397:4;18403:2;18407:6;18377:19;:37::i;:::-;17582:840;;;;:::o;22427:125::-;;;;:::o;23156:124::-;;;;:::o;3260:246::-;3318:7;3347:1;3342;:6;3338:47;;;3372:1;3365:8;;;;3338:47;3395:9;3411:1;3407;:5;;;;:::i;:::-;3395:17;;3440:1;3435;3431;:5;;;;:::i;:::-;:10;3423:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;3497:1;3490:8;;;3260:246;;;;;:::o;3514:132::-;3572:7;3599:39;3603:1;3606;3599:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;3592:46;;3514:132;;;;:::o;2882:136::-;2940:7;2967:43;2971:1;2974;2967:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;2960:50;;2882:136;;;;:::o;3654:319::-;3774:7;3806:1;3802;:5;3809:12;3794:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;3833:9;3849:1;3845;:5;;;;:::i;:::-;3833:17;;3964:1;3957:8;;;3654:319;;;;;:::o;3026:226::-;3146:7;3179:1;3174;:6;;3182:12;3166:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;3206:9;3222:1;3218;:5;;;;:::i;:::-;3206:17;;3243:1;3236:8;;;3026:226;;;;;:::o;24:622:1:-;;145:80;160:64;217:6;160:64;:::i;:::-;145:80;:::i;:::-;136:89;;245:5;273:6;266:5;259:21;299:4;292:5;288:16;281:23;;324:6;374:3;366:4;358:6;354:17;349:3;345:27;342:36;339:2;;;391:1;388;381:12;339:2;419:1;404:236;429:6;426:1;423:13;404:236;;;496:3;524:37;557:3;545:10;524:37;:::i;:::-;519:3;512:50;591:4;586:3;582:14;575:21;;625:4;620:3;616:14;609:21;;464:176;451:1;448;444:9;439:14;;404:236;;;408:14;126:520;;;;;;;:::o;652:139::-;;736:6;723:20;714:29;;752:33;779:5;752:33;:::i;:::-;704:87;;;;:::o;814:303::-;;934:3;927:4;919:6;915:17;911:27;901:2;;952:1;949;942:12;901:2;992:6;979:20;1017:94;1107:3;1099:6;1092:4;1084:6;1080:17;1017:94;:::i;:::-;1008:103;;891:226;;;;;:::o;1123:133::-;;1204:6;1191:20;1182:29;;1220:30;1244:5;1220:30;:::i;:::-;1172:84;;;;:::o;1262:137::-;;1347:6;1341:13;1332:22;;1363:30;1387:5;1363:30;:::i;:::-;1322:77;;;;:::o;1405:139::-;;1489:6;1476:20;1467:29;;1505:33;1532:5;1505:33;:::i;:::-;1457:87;;;;:::o;1550:143::-;;1638:6;1632:13;1623:22;;1654:33;1681:5;1654:33;:::i;:::-;1613:80;;;;:::o;1699:262::-;;1807:2;1795:9;1786:7;1782:23;1778:32;1775:2;;;1823:1;1820;1813:12;1775:2;1866:1;1891:53;1936:7;1927:6;1916:9;1912:22;1891:53;:::i;:::-;1881:63;;1837:117;1765:196;;;;:::o;1967:407::-;;;2092:2;2080:9;2071:7;2067:23;2063:32;2060:2;;;2108:1;2105;2098:12;2060:2;2151:1;2176:53;2221:7;2212:6;2201:9;2197:22;2176:53;:::i;:::-;2166:63;;2122:117;2278:2;2304:53;2349:7;2340:6;2329:9;2325:22;2304:53;:::i;:::-;2294:63;;2249:118;2050:324;;;;;:::o;2380:552::-;;;;2522:2;2510:9;2501:7;2497:23;2493:32;2490:2;;;2538:1;2535;2528:12;2490:2;2581:1;2606:53;2651:7;2642:6;2631:9;2627:22;2606:53;:::i;:::-;2596:63;;2552:117;2708:2;2734:53;2779:7;2770:6;2759:9;2755:22;2734:53;:::i;:::-;2724:63;;2679:118;2836:2;2862:53;2907:7;2898:6;2887:9;2883:22;2862:53;:::i;:::-;2852:63;;2807:118;2480:452;;;;;:::o;2938:407::-;;;3063:2;3051:9;3042:7;3038:23;3034:32;3031:2;;;3079:1;3076;3069:12;3031:2;3122:1;3147:53;3192:7;3183:6;3172:9;3168:22;3147:53;:::i;:::-;3137:63;;3093:117;3249:2;3275:53;3320:7;3311:6;3300:9;3296:22;3275:53;:::i;:::-;3265:63;;3220:118;3021:324;;;;;:::o;3351:544::-;;;3498:2;3486:9;3477:7;3473:23;3469:32;3466:2;;;3514:1;3511;3504:12;3466:2;3585:1;3574:9;3570:17;3557:31;3615:18;3607:6;3604:30;3601:2;;;3647:1;3644;3637:12;3601:2;3675:78;3745:7;3736:6;3725:9;3721:22;3675:78;:::i;:::-;3665:88;;3528:235;3802:2;3828:50;3870:7;3861:6;3850:9;3846:22;3828:50;:::i;:::-;3818:60;;3773:115;3456:439;;;;;:::o;3901:278::-;;4017:2;4005:9;3996:7;3992:23;3988:32;3985:2;;;4033:1;4030;4023:12;3985:2;4076:1;4101:61;4154:7;4145:6;4134:9;4130:22;4101:61;:::i;:::-;4091:71;;4047:125;3975:204;;;;:::o;4185:262::-;;4293:2;4281:9;4272:7;4268:23;4264:32;4261:2;;;4309:1;4306;4299:12;4261:2;4352:1;4377:53;4422:7;4413:6;4402:9;4398:22;4377:53;:::i;:::-;4367:63;;4323:117;4251:196;;;;:::o;4453:284::-;;4572:2;4560:9;4551:7;4547:23;4543:32;4540:2;;;4588:1;4585;4578:12;4540:2;4631:1;4656:64;4712:7;4703:6;4692:9;4688:22;4656:64;:::i;:::-;4646:74;;4602:128;4530:207;;;;:::o;4743:407::-;;;4868:2;4856:9;4847:7;4843:23;4839:32;4836:2;;;4884:1;4881;4874:12;4836:2;4927:1;4952:53;4997:7;4988:6;4977:9;4973:22;4952:53;:::i;:::-;4942:63;;4898:117;5054:2;5080:53;5125:7;5116:6;5105:9;5101:22;5080:53;:::i;:::-;5070:63;;5025:118;4826:324;;;;;:::o;5156:118::-;5243:24;5261:5;5243:24;:::i;:::-;5238:3;5231:37;5221:53;;:::o;5280:109::-;5361:21;5376:5;5361:21;:::i;:::-;5356:3;5349:34;5339:50;;:::o;5395:364::-;;5511:39;5544:5;5511:39;:::i;:::-;5566:71;5630:6;5625:3;5566:71;:::i;:::-;5559:78;;5646:52;5691:6;5686:3;5679:4;5672:5;5668:16;5646:52;:::i;:::-;5723:29;5745:6;5723:29;:::i;:::-;5718:3;5714:39;5707:46;;5487:272;;;;;:::o;5765:367::-;;5928:67;5992:2;5987:3;5928:67;:::i;:::-;5921:74;;6025:34;6021:1;6016:3;6012:11;6005:55;6091:5;6086:2;6081:3;6077:12;6070:27;6123:2;6118:3;6114:12;6107:19;;5911:221;;;:::o;6138:366::-;;6301:67;6365:2;6360:3;6301:67;:::i;:::-;6294:74;;6398:34;6394:1;6389:3;6385:11;6378:55;6464:4;6459:2;6454:3;6450:12;6443:26;6495:2;6490:3;6486:12;6479:19;;6284:220;;;:::o;6510:370::-;;6673:67;6737:2;6732:3;6673:67;:::i;:::-;6666:74;;6770:34;6766:1;6761:3;6757:11;6750:55;6836:8;6831:2;6826:3;6822:12;6815:30;6871:2;6866:3;6862:12;6855:19;;6656:224;;;:::o;6886:366::-;;7049:67;7113:2;7108:3;7049:67;:::i;:::-;7042:74;;7146:34;7142:1;7137:3;7133:11;7126:55;7212:4;7207:2;7202:3;7198:12;7191:26;7243:2;7238:3;7234:12;7227:19;;7032:220;;;:::o;7258:327::-;;7421:67;7485:2;7480:3;7421:67;:::i;:::-;7414:74;;7518:31;7514:1;7509:3;7505:11;7498:52;7576:2;7571:3;7567:12;7560:19;;7404:181;;;:::o;7591:370::-;;7754:67;7818:2;7813:3;7754:67;:::i;:::-;7747:74;;7851:34;7847:1;7842:3;7838:11;7831:55;7917:8;7912:2;7907:3;7903:12;7896:30;7952:2;7947:3;7943:12;7936:19;;7737:224;;;:::o;7967:365::-;;8130:67;8194:2;8189:3;8130:67;:::i;:::-;8123:74;;8227:34;8223:1;8218:3;8214:11;8207:55;8293:3;8288:2;8283:3;8279:12;8272:25;8323:2;8318:3;8314:12;8307:19;;8113:219;;;:::o;8338:330::-;;8501:67;8565:2;8560:3;8501:67;:::i;:::-;8494:74;;8598:34;8594:1;8589:3;8585:11;8578:55;8659:2;8654:3;8650:12;8643:19;;8484:184;;;:::o;8674:365::-;;8837:67;8901:2;8896:3;8837:67;:::i;:::-;8830:74;;8934:34;8930:1;8925:3;8921:11;8914:55;9000:3;8995:2;8990:3;8986:12;8979:25;9030:2;9025:3;9021:12;9014:19;;8820:219;;;:::o;9045:369::-;;9208:67;9272:2;9267:3;9208:67;:::i;:::-;9201:74;;9305:34;9301:1;9296:3;9292:11;9285:55;9371:7;9366:2;9361:3;9357:12;9350:29;9405:2;9400:3;9396:12;9389:19;;9191:223;;;:::o;9420:309::-;;9583:67;9647:2;9642:3;9583:67;:::i;:::-;9576:74;;9680:13;9676:1;9671:3;9667:11;9660:34;9720:2;9715:3;9711:12;9704:19;;9566:163;;;:::o;9735:367::-;;9898:67;9962:2;9957:3;9898:67;:::i;:::-;9891:74;;9995:34;9991:1;9986:3;9982:11;9975:55;10061:5;10056:2;10051:3;10047:12;10040:27;10093:2;10088:3;10084:12;10077:19;;9881:221;;;:::o;10108:368::-;;10271:67;10335:2;10330:3;10271:67;:::i;:::-;10264:74;;10368:34;10364:1;10359:3;10355:11;10348:55;10434:6;10429:2;10424:3;10420:12;10413:28;10467:2;10462:3;10458:12;10451:19;;10254:222;;;:::o;10482:369::-;;10645:67;10709:2;10704:3;10645:67;:::i;:::-;10638:74;;10742:34;10738:1;10733:3;10729:11;10722:55;10808:7;10803:2;10798:3;10794:12;10787:29;10842:2;10837:3;10833:12;10826:19;;10628:223;;;:::o;10857:309::-;;11020:67;11084:2;11079:3;11020:67;:::i;:::-;11013:74;;11117:13;11113:1;11108:3;11104:11;11097:34;11157:2;11152:3;11148:12;11141:19;;11003:163;;;:::o;11172:118::-;11259:24;11277:5;11259:24;:::i;:::-;11254:3;11247:37;11237:53;;:::o;11296:112::-;11379:22;11395:5;11379:22;:::i;:::-;11374:3;11367:35;11357:51;;:::o;11414:222::-;;11545:2;11534:9;11530:18;11522:26;;11558:71;11626:1;11615:9;11611:17;11602:6;11558:71;:::i;:::-;11512:124;;;;:::o;11642:332::-;;11801:2;11790:9;11786:18;11778:26;;11814:71;11882:1;11871:9;11867:17;11858:6;11814:71;:::i;:::-;11895:72;11963:2;11952:9;11948:18;11939:6;11895:72;:::i;:::-;11768:206;;;;;:::o;11980:210::-;;12105:2;12094:9;12090:18;12082:26;;12118:65;12180:1;12169:9;12165:17;12156:6;12118:65;:::i;:::-;12072:118;;;;:::o;12196:313::-;;12347:2;12336:9;12332:18;12324:26;;12396:9;12390:4;12386:20;12382:1;12371:9;12367:17;12360:47;12424:78;12497:4;12488:6;12424:78;:::i;:::-;12416:86;;12314:195;;;;:::o;12515:419::-;;12719:2;12708:9;12704:18;12696:26;;12768:9;12762:4;12758:20;12754:1;12743:9;12739:17;12732:47;12796:131;12922:4;12796:131;:::i;:::-;12788:139;;12686:248;;;:::o;12940:419::-;;13144:2;13133:9;13129:18;13121:26;;13193:9;13187:4;13183:20;13179:1;13168:9;13164:17;13157:47;13221:131;13347:4;13221:131;:::i;:::-;13213:139;;13111:248;;;:::o;13365:419::-;;13569:2;13558:9;13554:18;13546:26;;13618:9;13612:4;13608:20;13604:1;13593:9;13589:17;13582:47;13646:131;13772:4;13646:131;:::i;:::-;13638:139;;13536:248;;;:::o;13790:419::-;;13994:2;13983:9;13979:18;13971:26;;14043:9;14037:4;14033:20;14029:1;14018:9;14014:17;14007:47;14071:131;14197:4;14071:131;:::i;:::-;14063:139;;13961:248;;;:::o;14215:419::-;;14419:2;14408:9;14404:18;14396:26;;14468:9;14462:4;14458:20;14454:1;14443:9;14439:17;14432:47;14496:131;14622:4;14496:131;:::i;:::-;14488:139;;14386:248;;;:::o;14640:419::-;;14844:2;14833:9;14829:18;14821:26;;14893:9;14887:4;14883:20;14879:1;14868:9;14864:17;14857:47;14921:131;15047:4;14921:131;:::i;:::-;14913:139;;14811:248;;;:::o;15065:419::-;;15269:2;15258:9;15254:18;15246:26;;15318:9;15312:4;15308:20;15304:1;15293:9;15289:17;15282:47;15346:131;15472:4;15346:131;:::i;:::-;15338:139;;15236:248;;;:::o;15490:419::-;;15694:2;15683:9;15679:18;15671:26;;15743:9;15737:4;15733:20;15729:1;15718:9;15714:17;15707:47;15771:131;15897:4;15771:131;:::i;:::-;15763:139;;15661:248;;;:::o;15915:419::-;;16119:2;16108:9;16104:18;16096:26;;16168:9;16162:4;16158:20;16154:1;16143:9;16139:17;16132:47;16196:131;16322:4;16196:131;:::i;:::-;16188:139;;16086:248;;;:::o;16340:419::-;;16544:2;16533:9;16529:18;16521:26;;16593:9;16587:4;16583:20;16579:1;16568:9;16564:17;16557:47;16621:131;16747:4;16621:131;:::i;:::-;16613:139;;16511:248;;;:::o;16765:419::-;;16969:2;16958:9;16954:18;16946:26;;17018:9;17012:4;17008:20;17004:1;16993:9;16989:17;16982:47;17046:131;17172:4;17046:131;:::i;:::-;17038:139;;16936:248;;;:::o;17190:419::-;;17394:2;17383:9;17379:18;17371:26;;17443:9;17437:4;17433:20;17429:1;17418:9;17414:17;17407:47;17471:131;17597:4;17471:131;:::i;:::-;17463:139;;17361:248;;;:::o;17615:419::-;;17819:2;17808:9;17804:18;17796:26;;17868:9;17862:4;17858:20;17854:1;17843:9;17839:17;17832:47;17896:131;18022:4;17896:131;:::i;:::-;17888:139;;17786:248;;;:::o;18040:419::-;;18244:2;18233:9;18229:18;18221:26;;18293:9;18287:4;18283:20;18279:1;18268:9;18264:17;18257:47;18321:131;18447:4;18321:131;:::i;:::-;18313:139;;18211:248;;;:::o;18465:419::-;;18669:2;18658:9;18654:18;18646:26;;18718:9;18712:4;18708:20;18704:1;18693:9;18689:17;18682:47;18746:131;18872:4;18746:131;:::i;:::-;18738:139;;18636:248;;;:::o;18890:222::-;;19021:2;19010:9;19006:18;18998:26;;19034:71;19102:1;19091:9;19087:17;19078:6;19034:71;:::i;:::-;18988:124;;;;:::o;19118:214::-;;19245:2;19234:9;19230:18;19222:26;;19258:67;19322:1;19311:9;19307:17;19298:6;19258:67;:::i;:::-;19212:120;;;;:::o;19338:283::-;;19404:2;19398:9;19388:19;;19446:4;19438:6;19434:17;19553:6;19541:10;19538:22;19517:18;19505:10;19502:34;19499:62;19496:2;;;19564:18;;:::i;:::-;19496:2;19604:10;19600:2;19593:22;19378:243;;;;:::o;19627:311::-;;19794:18;19786:6;19783:30;19780:2;;;19816:18;;:::i;:::-;19780:2;19866:4;19858:6;19854:17;19846:25;;19926:4;19920;19916:15;19908:23;;19709:229;;;:::o;19944:99::-;;20030:5;20024:12;20014:22;;20003:40;;;:::o;20049:169::-;;20167:6;20162:3;20155:19;20207:4;20202:3;20198:14;20183:29;;20145:73;;;;:::o;20224:305::-;;20283:20;20301:1;20283:20;:::i;:::-;20278:25;;20317:20;20335:1;20317:20;:::i;:::-;20312:25;;20471:1;20403:66;20399:74;20396:1;20393:81;20390:2;;;20477:18;;:::i;:::-;20390:2;20521:1;20518;20514:9;20507:16;;20268:261;;;;:::o;20535:185::-;;20592:20;20610:1;20592:20;:::i;:::-;20587:25;;20626:20;20644:1;20626:20;:::i;:::-;20621:25;;20665:1;20655:2;;20670:18;;:::i;:::-;20655:2;20712:1;20709;20705:9;20700:14;;20577:143;;;;:::o;20726:348::-;;20789:20;20807:1;20789:20;:::i;:::-;20784:25;;20823:20;20841:1;20823:20;:::i;:::-;20818:25;;21011:1;20943:66;20939:74;20936:1;20933:81;20928:1;20921:9;20914:17;20910:105;20907:2;;;21018:18;;:::i;:::-;20907:2;21066:1;21063;21059:9;21048:20;;20774:300;;;;:::o;21080:191::-;;21140:20;21158:1;21140:20;:::i;:::-;21135:25;;21174:20;21192:1;21174:20;:::i;:::-;21169:25;;21213:1;21210;21207:8;21204:2;;;21218:18;;:::i;:::-;21204:2;21263:1;21260;21256:9;21248:17;;21125:146;;;;:::o;21277:96::-;;21343:24;21361:5;21343:24;:::i;:::-;21332:35;;21322:51;;;:::o;21379:90::-;;21456:5;21449:13;21442:21;21431:32;;21421:48;;;:::o;21475:126::-;;21552:42;21545:5;21541:54;21530:65;;21520:81;;;:::o;21607:77::-;;21673:5;21662:16;;21652:32;;;:::o;21690:86::-;;21765:4;21758:5;21754:16;21743:27;;21733:43;;;:::o;21782:307::-;21850:1;21860:113;21874:6;21871:1;21868:13;21860:113;;;21959:1;21954:3;21950:11;21944:18;21940:1;21935:3;21931:11;21924:39;21896:2;21893:1;21889:10;21884:15;;21860:113;;;21991:6;21988:1;21985:13;21982:2;;;22071:1;22062:6;22057:3;22053:16;22046:27;21982:2;21831:258;;;;:::o;22095:320::-;;22176:1;22170:4;22166:12;22156:22;;22223:1;22217:4;22213:12;22244:18;22234:2;;22300:4;22292:6;22288:17;22278:27;;22234:2;22362;22354:6;22351:14;22331:18;22328:38;22325:2;;;22381:18;;:::i;:::-;22325:2;22146:269;;;;:::o;22421:233::-;;22483:24;22501:5;22483:24;:::i;:::-;22474:33;;22529:66;22522:5;22519:77;22516:2;;;22599:18;;:::i;:::-;22516:2;22646:1;22639:5;22635:13;22628:20;;22464:190;;;:::o;22660:180::-;22708:77;22705:1;22698:88;22805:4;22802:1;22795:15;22829:4;22826:1;22819:15;22846:180;22894:77;22891:1;22884:88;22991:4;22988:1;22981:15;23015:4;23012:1;23005:15;23032:180;23080:77;23077:1;23070:88;23177:4;23174:1;23167:15;23201:4;23198:1;23191:15;23218:180;23266:77;23263:1;23256:88;23363:4;23360:1;23353:15;23387:4;23384:1;23377:15;23404:102;;23496:2;23492:7;23487:2;23480:5;23476:14;23472:28;23462:38;;23452:54;;;:::o;23512:122::-;23585:24;23603:5;23585:24;:::i;:::-;23578:5;23575:35;23565:2;;23624:1;23621;23614:12;23565:2;23555:79;:::o;23640:116::-;23710:21;23725:5;23710:21;:::i;:::-;23703:5;23700:32;23690:2;;23746:1;23743;23736:12;23690:2;23680:76;:::o;23762:122::-;23835:24;23853:5;23835:24;:::i;:::-;23828:5;23825:35;23815:2;;23874:1;23871;23864:12;23815:2;23805:79;:::o

Swarm Source

ipfs://8fed77986f29d9d2e746b9c14e45facea149be6b7e536b981cba763a4b5827ff
[ 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.