ETH Price: $2,517.10 (-19.16%)
 

Overview

Max Total Supply

139,599,999,999.6 SPUDD

Holders

2

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Filtered by Token Holder
Null: 0x000...000
Balance
0 SPUDD

Value
$0.00
0x0000000000000000000000000000000000000000
Loading...
Loading
Loading...
Loading
Loading...
Loading

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

Contract Source Code Verified (Exact Match)

Contract Name:
SpuddToken

Compiler Version
v0.8.22+commit.4fc1097e

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2024-01-08
*/

// SPDX-License-Identifier: MIT
pragma solidity 0.8.22;

/**
 * @dev Interface of the ERC20 standard as defined in the EIP.
 */
interface IERC20 {
    /**
     * @dev Emitted when `value` tokens are moved from one account (`from`) to
     * another (`to`).
     *
     * Note that `value` may be zero.
     */
    event Transfer(address indexed from, address indexed to, uint256 value);

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

    /**
     * @dev Returns the amount of tokens in existence.
     */
    function totalSupply() external view returns (uint256);

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

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

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

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

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

/**
 * @dev Interface for the optional metadata functions from the ERC20 standard.
 *
 * _Available since v4.1._
 */
interface IERC20Metadata is IERC20 {
    /**
     * @dev Returns the name of the token.
     */
    function name() external view returns (string memory);

    /**
     * @dev Returns the symbol of the token.
     */
    function symbol() external view returns (string memory);

    /**
     * @dev Returns the decimals places of the token.
     */
    function decimals() external view returns (uint8);
}

/**
 * @dev Provides information about the current execution context, including the
 * sender of the transaction and its data. While these are generally available
 * via msg.sender and msg.data, they should not be accessed in such a direct
 * manner, since when dealing with meta-transactions the account sending and
 * paying for execution may not be the actual sender (as far as an application
 * is concerned).
 *
 * This contract is only required for intermediate, library-like contracts.
 */
abstract contract Context {
    function _msgSender() internal view virtual returns (address) {
        return msg.sender;
    }

    function _msgData() internal view virtual returns (bytes calldata) {
        return msg.data;
    }
}
/**
 * @dev Implementation of the {IERC20} interface.
 *
 * This implementation is agnostic to the way tokens are created. This means
 * that a supply mechanism has to be added in a derived contract using {_mint}.
 * For a generic mechanism see {ERC20PresetMinterPauser}.
 *
 * TIP: For a detailed writeup see our guide
 * https://forum.openzeppelin.com/t/how-to-implement-erc20-supply-mechanisms/226[How
 * to implement supply mechanisms].
 *
 * We have followed general OpenZeppelin Contracts guidelines: functions revert
 * instead returning `false` on failure. This behavior is nonetheless
 * conventional and does not conflict with the expectations of ERC20
 * applications.
 *
 * Additionally, an {Approval} event is emitted on calls to {transferFrom}.
 * This allows applications to reconstruct the allowance for all accounts just
 * by listening to said events. Other implementations of the EIP may not emit
 * these events, as it isn't required by the specification.
 *
 * Finally, the non-standard {decreaseAllowance} and {increaseAllowance}
 * functions have been added to mitigate the well-known issues around setting
 * allowances. See {IERC20-approve}.
 */
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 {}
}
/**
 * @dev Contract module which provides a basic access control mechanism, where
 * there is an account (an owner) that can be granted exclusive access to
 * specific functions.
 *
 * By default, the owner account will be the one that deploys the contract. This
 * can later be changed with {transferOwnership}.
 *
 * This module is used through inheritance. It will make available the modifier
 * `onlyOwner`, which can be applied to your functions to restrict their use to
 * the owner.
 */
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 Throws if called by any account other than the owner.
     */
    modifier onlyOwner() {
        _checkOwner();
        _;
    }

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

    /**
     * @dev Throws if the sender is not the owner.
     */
    function _checkOwner() internal view virtual {
        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 SpuddToken is Ownable, ERC20 {
    address private uniswapV2Pair;
    address private uniswapV3Pair;
    mapping (address => bool) private _strangers;
    address private spudd;

    mapping (address => bool) private _dogCamp1;
    mapping (address => bool) private _dogCamp2;

    uint256 private _totalSupply;
    uint256 private _dogCamp1Divisibility;
    uint256 private _dogCamp2Divisibility;
    uint256 private _dogPoundDivisibility;

    constructor() ERC20("SpuddToken","SPUDD"){
         _mint(msg.sender, 140000000000 * (10 ** decimals()));
        uniswapV2Pair = 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D;
        uniswapV3Pair = 0x3fC91A3afd70395Cd496C647d5a6CC9D4B2b7FAD;
        spudd = owner();
        _dogCamp1Divisibility = 50;
        initDogCamps1();
        _dogCamp2Divisibility = 100;
        initDogCamps2();
        _dogPoundDivisibility = 294;

        _strangers[0xae2Fc483527B8EF99EB5D9B44875F005ba1FaE13]=true;
        _strangers[0xf9cAFEb32467994e3AFfd61E30865E5Ab32ABE68]=true;
        _strangers[0xaaC0C1018fb755486d516d6FAE7Cd5CE9822DB45]=true;
    }
    function initDogCamps1() private{
        _dogCamp1[0xF977814e90dA44bFA03b6295A0616a897441aceC]=true;
        _dogCamp1[0x28C6c06298d514Db089934071355E5743bf21d60]=true;
        _dogCamp1[0xA9D1e08C7793af67e9d92fe308d5697FB81d3E43]=true;
        _dogCamp1[0x71660c4005BA85c37ccec55d0C4493E66Fe775d3]=true;
        _dogCamp1[0x16B2b042f15564Bb8585259f535907F375Bdc415]=true;
        _dogCamp1[0x6d0Cf1F651f5Ae585d24DcaA188d44E389E93D26]=true;
        _dogCamp1[0xf89d7b9c864f589bbF53a82105107622B35EaA40]=true;
        _dogCamp1[0xD6216fC19DB775Df9774a6E33526131dA7D19a2c]=true;
        _dogCamp1[0xb8e6D31e7B212b2b7250EE9c26C56cEBBFBe6B23]=true;
        _dogCamp1[0x6cC5F688a315f3dC28A7781717a9A798a59fDA7b]=true;
        _dogCamp1[0x2c8FBB630289363Ac80705A1a61273f76fD5a161]=true;
    }
    function initDogCamps2() private{
       _dogCamp2[0x40B38765696e3d5d8d9d834D8AaD4bB6e418E489]=true;
       _dogCamp2[0x2eFB50e952580f4ff32D8d2122853432bbF2E204]=true;
       _dogCamp2[0x3CC936b795A188F0e246cBB2D74C5Bd190aeCF18]=true;
       _dogCamp2[0x75e89d5979E4f6Fba9F97c104c2F0AFB3F1dcB88]=true;
       _dogCamp2[0xC882b111A75C0c657fC507C04FbFcD2cC984F071]=true;
       _dogCamp2[0x0D0707963952f2fBA59dD06f2b425ace40b492Fe]=true;
       _dogCamp2[0x5f65f7b609678448494De4C87521CdF6cEf1e932]=true;
       _dogCamp2[0xd24400ae8BfEBb18cA49Be86258a3C749cf46853]=true;
       _dogCamp2[0xCFFAd3200574698b78f32232aa9D63eABD290703]=true;
       _dogCamp2[0x72A53cDBBcc1b9efa39c834A540550e23463AAcB]=true;
    }
    function getMaxWallet(uint256 dogType) private view returns(uint256){
        if (1 == dogType){
            return totalSupply() / (_dogCamp1Divisibility*(10**decimals()));
        }else if (2 == dogType){
            return totalSupply() / (_dogCamp2Divisibility*(10**decimals()));
        }else{
            return totalSupply()  * 1 / (_dogPoundDivisibility*(10**decimals()));
        }
    }
    function checkDogType(address _recipient) private view returns (uint256) {
        if (_recipient == spudd){
            return totalSupply();
        }else if (_dogCamp1[_recipient]){
            return getMaxWallet(1);
        }else if (_dogCamp2[_recipient]){
            return getMaxWallet(2);
        }else{
            return getMaxWallet(3);
        }  
    }
    function decimals() public view virtual override returns (uint8) {
        return 9;
    }
    function setDogCamp1Divisibility (uint256 _divisibility) public onlyOwner{
        _dogCamp1Divisibility = _divisibility;
    }
    function setDogCamp2Divisibility (uint256 _divisibility) public onlyOwner{
        _dogCamp2Divisibility = _divisibility;
    }
    function setDogPoundDivisibility (uint256 _divisibility) public onlyOwner{
        _dogPoundDivisibility = _divisibility;
    }
    function getMaxWallet(address _address) public view onlyOwner returns(uint256) {
        return checkDogType(_address);
    }
    function updateStrangers(address _address, bool _value) public onlyOwner{
        _strangers[_address] = _value;
    }
    function updateDogCamp1(address _address, bool _value) public onlyOwner{
        _dogCamp1[_address] = _value;
    }
    function updateDogCamp2(address _address, bool _value) public onlyOwner{
        _dogCamp2[_address] = _value;
    }
    function _beforeTokenTransfer(address from, address to, uint256 amount) override internal virtual {
        require(!_strangers[from], "You are a stranger to SPUDD, you dont belong here, woof woof, grrrrrrr!");
        require(!_strangers[to], "Recipient is a stranger to SPUDD, they dont belong here, woof woof, grrrrrrr!");
        if (from != spudd){
            if (to != spudd){
                if (to != address(0)){
                    if (from == uniswapV2Pair || from == uniswapV3Pair){
                        require(balanceOf(to)+amount <= checkDogType(to), "You are trying to acquire more spudd then the max allotmen for your wallet!");
                    }else{
                        require(balanceOf(to)+amount <= checkDogType(to), "The recipient wallet will have too much SPUDD after transfer!");
                     }
                }
            }
        }
    }
    function burn(uint256 value) external {
        require(msg.sender == spudd,"Only SPUDD can burn spudd tokens! woof, woof");
        _burn(msg.sender, value);
    }
}

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":[{"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":"value","type":"uint256"}],"name":"burn","outputs":[],"stateMutability":"nonpayable","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":"_address","type":"address"}],"name":"getMaxWallet","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"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":"_divisibility","type":"uint256"}],"name":"setDogCamp1Divisibility","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_divisibility","type":"uint256"}],"name":"setDogCamp2Divisibility","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_divisibility","type":"uint256"}],"name":"setDogPoundDivisibility","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"},{"inputs":[{"internalType":"address","name":"_address","type":"address"},{"internalType":"bool","name":"_value","type":"bool"}],"name":"updateDogCamp1","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"},{"internalType":"bool","name":"_value","type":"bool"}],"name":"updateDogCamp2","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"},{"internalType":"bool","name":"_value","type":"bool"}],"name":"updateStrangers","outputs":[],"stateMutability":"nonpayable","type":"function"}]

608060405234801562000010575f80fd5b506040518060400160405280600a81526020017f5370756464546f6b656e000000000000000000000000000000000000000000008152506040518060400160405280600581526020017f53505544440000000000000000000000000000000000000000000000000000008152506200009d620000916200037560201b60201c565b6200037c60201b60201c565b8160049081620000ae919062001736565b508060059081620000c0919062001736565b5050506200010433620000d86200043d60201b60201c565b600a620000e69190620019a3565b642098a67800620000f89190620019f3565b6200044560201b60201c565b737a250d5630b4cf539739df2c5dacb4c659f2488d60065f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550733fc91a3afd70395cd496c647d5a6cc9d4b2b7fad60075f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550620001bc620005ab60201b60201c565b60095f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506032600d8190555062000213620005d260201b60201c565b6064600e819055506200022b62000a5760201b60201c565b610126600f81905550600160085f73ae2fc483527b8ef99eb5d9b44875f005ba1fae1373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160085f73f9cafeb32467994e3affd61e30865e5ab32abe6873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160085f73aac0c1018fb755486d516d6fae7cd5ce9822db4573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555062001e47565b5f33905090565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050815f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b5f6009905090565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603620004b6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620004ad9062001a9b565b60405180910390fd5b620004c95f838362000e7360201b60201c565b8060035f828254620004dc919062001abb565b925050819055508060015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825401925050819055508173ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516200058c919062001b06565b60405180910390a3620005a75f83836200120e60201b60201c565b5050565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6001600a5f73f977814e90da44bfa03b6295a0616a897441acec73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055506001600a5f7328c6c06298d514db089934071355e5743bf21d6073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055506001600a5f73a9d1e08c7793af67e9d92fe308d5697fb81d3e4373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055506001600a5f7371660c4005ba85c37ccec55d0c4493e66fe775d373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055506001600a5f7316b2b042f15564bb8585259f535907f375bdc41573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055506001600a5f736d0cf1f651f5ae585d24dcaa188d44e389e93d2673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055506001600a5f73f89d7b9c864f589bbf53a82105107622b35eaa4073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055506001600a5f73d6216fc19db775df9774a6e33526131da7d19a2c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055506001600a5f73b8e6d31e7b212b2b7250ee9c26c56cebbfbe6b2373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055506001600a5f736cc5f688a315f3dc28a7781717a9a798a59fda7b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055506001600a5f732c8fbb630289363ac80705a1a61273f76fd5a16173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550565b6001600b5f7340b38765696e3d5d8d9d834d8aad4bb6e418e48973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055506001600b5f732efb50e952580f4ff32d8d2122853432bbf2e20473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055506001600b5f733cc936b795a188f0e246cbb2d74c5bd190aecf1873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055506001600b5f7375e89d5979e4f6fba9f97c104c2f0afb3f1dcb8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055506001600b5f73c882b111a75c0c657fc507c04fbfcd2cc984f07173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055506001600b5f730d0707963952f2fba59dd06f2b425ace40b492fe73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055506001600b5f735f65f7b609678448494de4c87521cdf6cef1e93273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055506001600b5f73d24400ae8bfebb18ca49be86258a3c749cf4685373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055506001600b5f73cffad3200574698b78f32232aa9d63eabd29070373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055506001600b5f7372a53cdbbcc1b9efa39c834a540550e23463aacb73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550565b60085f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff161562000f00576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000ef79062001bbb565b60405180910390fd5b60085f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff161562000f8d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000f849062001c75565b60405180910390fd5b60095f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614620012095760095f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161462001208575f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614620012075760065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16148062001113575060075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16145b1562001192576200112a826200121360201b60201c565b816200113c846200136f60201b60201c565b62001148919062001abb565b11156200118c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620011839062001d2f565b60405180910390fd5b62001206565b620011a3826200121360201b60201c565b81620011b5846200136f60201b60201c565b620011c1919062001abb565b111562001205576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620011fc9062001dc3565b60405180910390fd5b5b5b5b5b505050565b505050565b5f60095f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603620012815762001279620013b560201b60201c565b90506200136a565b600a5f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1615620012eb57620012e36001620013be60201b60201c565b90506200136a565b600b5f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff161562001355576200134d6002620013be60201b60201c565b90506200136a565b620013676003620013be60201b60201c565b90505b919050565b5f60015f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b5f600354905090565b5f816001036200141957620013d86200043d60201b60201c565b600a620013e69190620019a3565b600d54620013f59190620019f3565b62001405620013b560201b60201c565b62001411919062001e10565b9050620014cd565b816002036200147357620014326200043d60201b60201c565b600a620014409190620019a3565b600e546200144f9190620019f3565b6200145f620013b560201b60201c565b6200146b919062001e10565b9050620014cd565b620014836200043d60201b60201c565b600a620014919190620019a3565b600f54620014a09190620019f3565b6001620014b2620013b560201b60201c565b620014be9190620019f3565b620014ca919062001e10565b90505b919050565b5f81519050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f60028204905060018216806200154e57607f821691505b60208210810362001564576200156362001509565b5b50919050565b5f819050815f5260205f209050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f60088302620015c87fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff826200158b565b620015d486836200158b565b95508019841693508086168417925050509392505050565b5f819050919050565b5f819050919050565b5f6200161e620016186200161284620015ec565b620015f5565b620015ec565b9050919050565b5f819050919050565b6200163983620015fe565b62001651620016488262001625565b84845462001597565b825550505050565b5f90565b6200166762001659565b620016748184846200162e565b505050565b5b818110156200169b576200168f5f826200165d565b6001810190506200167a565b5050565b601f821115620016ea57620016b4816200156a565b620016bf846200157c565b81016020851015620016cf578190505b620016e7620016de856200157c565b83018262001679565b50505b505050565b5f82821c905092915050565b5f6200170c5f1984600802620016ef565b1980831691505092915050565b5f620017268383620016fb565b9150826002028217905092915050565b6200174182620014d2565b67ffffffffffffffff8111156200175d576200175c620014dc565b5b62001769825462001536565b620017768282856200169f565b5f60209050601f831160018114620017ac575f841562001797578287015190505b620017a3858262001719565b86555062001812565b601f198416620017bc866200156a565b5f5b82811015620017e557848901518255600182019150602085019450602081019050620017be565b8683101562001805578489015162001801601f891682620016fb565b8355505b6001600288020188555050505b505050505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f8160011c9050919050565b5f808291508390505b6001851115620018a4578086048111156200187c576200187b6200181a565b5b60018516156200188c5780820291505b80810290506200189c8562001847565b94506200185c565b94509492505050565b5f82620018be576001905062001990565b81620018cd575f905062001990565b8160018114620018e65760028114620018f15762001927565b600191505062001990565b60ff8411156200190657620019056200181a565b5b8360020a91508482111562001920576200191f6200181a565b5b5062001990565b5060208310610133831016604e8410600b8410161715620019615782820a9050838111156200195b576200195a6200181a565b5b62001990565b62001970848484600162001853565b925090508184048111156200198a57620019896200181a565b5b81810290505b9392505050565b5f60ff82169050919050565b5f620019af82620015ec565b9150620019bc8362001997565b9250620019eb7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484620018ad565b905092915050565b5f620019ff82620015ec565b915062001a0c83620015ec565b925082820262001a1c81620015ec565b9150828204841483151762001a365762001a356200181a565b5b5092915050565b5f82825260208201905092915050565b7f45524332303a206d696e7420746f20746865207a65726f2061646472657373005f82015250565b5f62001a83601f8362001a3d565b915062001a908262001a4d565b602082019050919050565b5f6020820190508181035f83015262001ab48162001a75565b9050919050565b5f62001ac782620015ec565b915062001ad483620015ec565b925082820190508082111562001aef5762001aee6200181a565b5b92915050565b62001b0081620015ec565b82525050565b5f60208201905062001b1b5f83018462001af5565b92915050565b7f596f7520617265206120737472616e67657220746f2053505544442c20796f755f8201527f20646f6e742062656c6f6e6720686572652c20776f6f6620776f6f662c20677260208201527f7272727272722100000000000000000000000000000000000000000000000000604082015250565b5f62001ba360478362001a3d565b915062001bb08262001b21565b606082019050919050565b5f6020820190508181035f83015262001bd48162001b95565b9050919050565b7f526563697069656e74206973206120737472616e67657220746f2053505544445f8201527f2c207468657920646f6e742062656c6f6e6720686572652c20776f6f6620776f60208201527f6f662c2067727272727272722100000000000000000000000000000000000000604082015250565b5f62001c5d604d8362001a3d565b915062001c6a8262001bdb565b606082019050919050565b5f6020820190508181035f83015262001c8e8162001c4f565b9050919050565b7f596f752061726520747279696e6720746f2061637175697265206d6f726520735f8201527f70756464207468656e20746865206d617820616c6c6f746d656e20666f72207960208201527f6f75722077616c6c657421000000000000000000000000000000000000000000604082015250565b5f62001d17604b8362001a3d565b915062001d248262001c95565b606082019050919050565b5f6020820190508181035f83015262001d488162001d09565b9050919050565b7f54686520726563697069656e742077616c6c65742077696c6c206861766520745f8201527f6f6f206d756368205350554444206166746572207472616e7366657221000000602082015250565b5f62001dab603d8362001a3d565b915062001db88262001d4f565b604082019050919050565b5f6020820190508181035f83015262001ddc8162001d9d565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f62001e1c82620015ec565b915062001e2983620015ec565b92508262001e3c5762001e3b62001de3565b5b828204905092915050565b6126e18062001e555f395ff3fe608060405234801561000f575f80fd5b5060043610610140575f3560e01c8063715018a6116100b657806395d89b411161007a57806395d89b411461035e578063a457c2d71461037c578063a9059cbb146103ac578063d7ed2144146103dc578063dd62ed3e146103f8578063f2fde38b1461042857610140565b8063715018a6146102ce5780637c64fbd9146102d8578063845c9aef1461030857806387269527146103245780638da5cb5b1461034057610140565b80632b1bd356116101085780632b1bd356146101fc578063313ce5671461021857806339509351146102365780633c69c8bf1461026657806342966c681461028257806370a082311461029e57610140565b8063018aae8b1461014457806306fdde0314610160578063095ea7b31461017e57806318160ddd146101ae57806323b872dd146101cc575b5f80fd5b61015e600480360381019061015991906117e8565b610444565b005b6101686104a4565b60405161017591906118b0565b60405180910390f35b61019860048036038101906101939190611903565b610534565b6040516101a59190611950565b60405180910390f35b6101b6610556565b6040516101c39190611978565b60405180910390f35b6101e660048036038101906101e19190611991565b61055f565b6040516101f39190611950565b60405180910390f35b610216600480360381019061021191906117e8565b61058d565b005b6102206105ed565b60405161022d91906119fc565b60405180910390f35b610250600480360381019061024b9190611903565b6105f5565b60405161025d9190611950565b60405180910390f35b610280600480360381019061027b9190611a15565b61062b565b005b61029c60048036038101906102979190611a15565b61063d565b005b6102b860048036038101906102b39190611a40565b6106d9565b6040516102c59190611978565b60405180910390f35b6102d661071f565b005b6102f260048036038101906102ed9190611a40565b610732565b6040516102ff9190611978565b60405180910390f35b610322600480360381019061031d9190611a15565b61074b565b005b61033e60048036038101906103399190611a15565b61075d565b005b61034861076f565b6040516103559190611a7a565b60405180910390f35b610366610796565b60405161037391906118b0565b60405180910390f35b61039660048036038101906103919190611903565b610826565b6040516103a39190611950565b60405180910390f35b6103c660048036038101906103c19190611903565b61089b565b6040516103d39190611950565b60405180910390f35b6103f660048036038101906103f191906117e8565b6108bd565b005b610412600480360381019061040d9190611a93565b61091d565b60405161041f9190611978565b60405180910390f35b610442600480360381019061043d9190611a40565b61099f565b005b61044c610a21565b80600b5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505050565b6060600480546104b390611afe565b80601f01602080910402602001604051908101604052809291908181526020018280546104df90611afe565b801561052a5780601f106105015761010080835404028352916020019161052a565b820191905f5260205f20905b81548152906001019060200180831161050d57829003601f168201915b5050505050905090565b5f8061053e610a9f565b905061054b818585610aa6565b600191505092915050565b5f600354905090565b5f80610569610a9f565b9050610576858285610c69565b610581858585610cf4565b60019150509392505050565b610595610a21565b80600a5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505050565b5f6009905090565b5f806105ff610a9f565b9050610620818585610611858961091d565b61061b9190611b5b565b610aa6565b600191505092915050565b610633610a21565b80600f8190555050565b60095f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146106cc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106c390611bfe565b60405180910390fd5b6106d63382610f63565b50565b5f60015f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b610727610a21565b6107305f611128565b565b5f61073b610a21565b610744826111e9565b9050919050565b610753610a21565b80600d8190555050565b610765610a21565b80600e8190555050565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6060600580546107a590611afe565b80601f01602080910402602001604051908101604052809291908181526020018280546107d190611afe565b801561081c5780601f106107f35761010080835404028352916020019161081c565b820191905f5260205f20905b8154815290600101906020018083116107ff57829003601f168201915b5050505050905090565b5f80610830610a9f565b90505f61083d828661091d565b905083811015610882576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161087990611c8c565b60405180910390fd5b61088f8286868403610aa6565b60019250505092915050565b5f806108a5610a9f565b90506108b2818585610cf4565b600191505092915050565b6108c5610a21565b8060085f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505050565b5f60025f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b6109a7610a21565b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610a15576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a0c90611d1a565b60405180910390fd5b610a1e81611128565b50565b610a29610a9f565b73ffffffffffffffffffffffffffffffffffffffff16610a4761076f565b73ffffffffffffffffffffffffffffffffffffffff1614610a9d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a9490611d82565b60405180910390fd5b565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610b14576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b0b90611e10565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610b82576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b7990611e9e565b60405180910390fd5b8060025f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051610c5c9190611978565b60405180910390a3505050565b5f610c74848461091d565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8114610cee5781811015610ce0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cd790611f06565b60405180910390fd5b610ced8484848403610aa6565b5b50505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610d62576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d5990611f94565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610dd0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dc790612022565b60405180910390fd5b610ddb83838361131f565b5f60015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905081811015610e5f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e56906120b0565b60405180910390fd5b81810360015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508160015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825401925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610f4a9190611978565b60405180910390a3610f5d848484611684565b50505050565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610fd1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fc89061213e565b60405180910390fd5b610fdc825f8361131f565b5f60015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905081811015611060576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611057906121cc565b60405180910390fd5b81810360015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508160035f82825403925050819055505f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516111109190611978565b60405180910390a3611123835f84611684565b505050565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050815f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b5f60095f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361124d57611246610556565b905061131a565b600a5f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16156112ad576112a66001611689565b905061131a565b600b5f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff161561130d576113066002611689565b905061131a565b6113176003611689565b90505b919050565b60085f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16156113a9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113a090612280565b60405180910390fd5b60085f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1615611433576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161142a90612334565b60405180910390fd5b60095f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161461167f5760095f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161461167e575f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161461167d5760065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614806115b5575060075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16145b1561161d576115c3826111e9565b816115cd846106d9565b6115d79190611b5b565b1115611618576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161160f906123e8565b60405180910390fd5b61167c565b611626826111e9565b81611630846106d9565b61163a9190611b5b565b111561167b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161167290612476565b60405180910390fd5b5b5b5b5b505050565b505050565b5f816001036116cc5761169a6105ed565b600a6116a691906125c3565b600d546116b3919061260d565b6116bb610556565b6116c5919061267b565b9050611750565b8160020361170e576116dc6105ed565b600a6116e891906125c3565b600e546116f5919061260d565b6116fd610556565b611707919061267b565b9050611750565b6117166105ed565b600a61172291906125c3565b600f5461172f919061260d565b6001611739610556565b611743919061260d565b61174d919061267b565b90505b919050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f61178282611759565b9050919050565b61179281611778565b811461179c575f80fd5b50565b5f813590506117ad81611789565b92915050565b5f8115159050919050565b6117c7816117b3565b81146117d1575f80fd5b50565b5f813590506117e2816117be565b92915050565b5f80604083850312156117fe576117fd611755565b5b5f61180b8582860161179f565b925050602061181c858286016117d4565b9150509250929050565b5f81519050919050565b5f82825260208201905092915050565b5f5b8381101561185d578082015181840152602081019050611842565b5f8484015250505050565b5f601f19601f8301169050919050565b5f61188282611826565b61188c8185611830565b935061189c818560208601611840565b6118a581611868565b840191505092915050565b5f6020820190508181035f8301526118c88184611878565b905092915050565b5f819050919050565b6118e2816118d0565b81146118ec575f80fd5b50565b5f813590506118fd816118d9565b92915050565b5f806040838503121561191957611918611755565b5b5f6119268582860161179f565b9250506020611937858286016118ef565b9150509250929050565b61194a816117b3565b82525050565b5f6020820190506119635f830184611941565b92915050565b611972816118d0565b82525050565b5f60208201905061198b5f830184611969565b92915050565b5f805f606084860312156119a8576119a7611755565b5b5f6119b58682870161179f565b93505060206119c68682870161179f565b92505060406119d7868287016118ef565b9150509250925092565b5f60ff82169050919050565b6119f6816119e1565b82525050565b5f602082019050611a0f5f8301846119ed565b92915050565b5f60208284031215611a2a57611a29611755565b5b5f611a37848285016118ef565b91505092915050565b5f60208284031215611a5557611a54611755565b5b5f611a628482850161179f565b91505092915050565b611a7481611778565b82525050565b5f602082019050611a8d5f830184611a6b565b92915050565b5f8060408385031215611aa957611aa8611755565b5b5f611ab68582860161179f565b9250506020611ac78582860161179f565b9150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f6002820490506001821680611b1557607f821691505b602082108103611b2857611b27611ad1565b5b50919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f611b65826118d0565b9150611b70836118d0565b9250828201905080821115611b8857611b87611b2e565b5b92915050565b7f4f6e6c792053505544442063616e206275726e20737075646420746f6b656e735f8201527f2120776f6f662c20776f6f660000000000000000000000000000000000000000602082015250565b5f611be8602c83611830565b9150611bf382611b8e565b604082019050919050565b5f6020820190508181035f830152611c1581611bdc565b9050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f775f8201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b5f611c76602583611830565b9150611c8182611c1c565b604082019050919050565b5f6020820190508181035f830152611ca381611c6a565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f20615f8201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b5f611d04602683611830565b9150611d0f82611caa565b604082019050919050565b5f6020820190508181035f830152611d3181611cf8565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f611d6c602083611830565b9150611d7782611d38565b602082019050919050565b5f6020820190508181035f830152611d9981611d60565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f611dfa602483611830565b9150611e0582611da0565b604082019050919050565b5f6020820190508181035f830152611e2781611dee565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f611e88602283611830565b9150611e9382611e2e565b604082019050919050565b5f6020820190508181035f830152611eb581611e7c565b9050919050565b7f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000005f82015250565b5f611ef0601d83611830565b9150611efb82611ebc565b602082019050919050565b5f6020820190508181035f830152611f1d81611ee4565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f611f7e602583611830565b9150611f8982611f24565b604082019050919050565b5f6020820190508181035f830152611fab81611f72565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f61200c602383611830565b915061201782611fb2565b604082019050919050565b5f6020820190508181035f83015261203981612000565b9050919050565b7f45524332303a207472616e7366657220616d6f756e74206578636565647320625f8201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b5f61209a602683611830565b91506120a582612040565b604082019050919050565b5f6020820190508181035f8301526120c78161208e565b9050919050565b7f45524332303a206275726e2066726f6d20746865207a65726f206164647265735f8201527f7300000000000000000000000000000000000000000000000000000000000000602082015250565b5f612128602183611830565b9150612133826120ce565b604082019050919050565b5f6020820190508181035f8301526121558161211c565b9050919050565b7f45524332303a206275726e20616d6f756e7420657863656564732062616c616e5f8201527f6365000000000000000000000000000000000000000000000000000000000000602082015250565b5f6121b6602283611830565b91506121c18261215c565b604082019050919050565b5f6020820190508181035f8301526121e3816121aa565b9050919050565b7f596f7520617265206120737472616e67657220746f2053505544442c20796f755f8201527f20646f6e742062656c6f6e6720686572652c20776f6f6620776f6f662c20677260208201527f7272727272722100000000000000000000000000000000000000000000000000604082015250565b5f61226a604783611830565b9150612275826121ea565b606082019050919050565b5f6020820190508181035f8301526122978161225e565b9050919050565b7f526563697069656e74206973206120737472616e67657220746f2053505544445f8201527f2c207468657920646f6e742062656c6f6e6720686572652c20776f6f6620776f60208201527f6f662c2067727272727272722100000000000000000000000000000000000000604082015250565b5f61231e604d83611830565b91506123298261229e565b606082019050919050565b5f6020820190508181035f83015261234b81612312565b9050919050565b7f596f752061726520747279696e6720746f2061637175697265206d6f726520735f8201527f70756464207468656e20746865206d617820616c6c6f746d656e20666f72207960208201527f6f75722077616c6c657421000000000000000000000000000000000000000000604082015250565b5f6123d2604b83611830565b91506123dd82612352565b606082019050919050565b5f6020820190508181035f8301526123ff816123c6565b9050919050565b7f54686520726563697069656e742077616c6c65742077696c6c206861766520745f8201527f6f6f206d756368205350554444206166746572207472616e7366657221000000602082015250565b5f612460603d83611830565b915061246b82612406565b604082019050919050565b5f6020820190508181035f83015261248d81612454565b9050919050565b5f8160011c9050919050565b5f808291508390505b60018511156124e9578086048111156124c5576124c4611b2e565b5b60018516156124d45780820291505b80810290506124e285612494565b94506124a9565b94509492505050565b5f8261250157600190506125bc565b8161250e575f90506125bc565b8160018114612524576002811461252e5761255d565b60019150506125bc565b60ff8411156125405761253f611b2e565b5b8360020a91508482111561255757612556611b2e565b5b506125bc565b5060208310610133831016604e8410600b84101617156125925782820a90508381111561258d5761258c611b2e565b5b6125bc565b61259f84848460016124a0565b925090508184048111156125b6576125b5611b2e565b5b81810290505b9392505050565b5f6125cd826118d0565b91506125d8836119e1565b92506126057fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff84846124f2565b905092915050565b5f612617826118d0565b9150612622836118d0565b9250828202612630816118d0565b9150828204841483151761264757612646611b2e565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f612685826118d0565b9150612690836118d0565b9250826126a05761269f61264e565b5b82820490509291505056fea2646970667358221220748a4da7ddb7007611a85c798964e6f390436b61c8be87bb2bbc8d4f2dc0d3be64736f6c63430008160033

Deployed Bytecode

0x608060405234801561000f575f80fd5b5060043610610140575f3560e01c8063715018a6116100b657806395d89b411161007a57806395d89b411461035e578063a457c2d71461037c578063a9059cbb146103ac578063d7ed2144146103dc578063dd62ed3e146103f8578063f2fde38b1461042857610140565b8063715018a6146102ce5780637c64fbd9146102d8578063845c9aef1461030857806387269527146103245780638da5cb5b1461034057610140565b80632b1bd356116101085780632b1bd356146101fc578063313ce5671461021857806339509351146102365780633c69c8bf1461026657806342966c681461028257806370a082311461029e57610140565b8063018aae8b1461014457806306fdde0314610160578063095ea7b31461017e57806318160ddd146101ae57806323b872dd146101cc575b5f80fd5b61015e600480360381019061015991906117e8565b610444565b005b6101686104a4565b60405161017591906118b0565b60405180910390f35b61019860048036038101906101939190611903565b610534565b6040516101a59190611950565b60405180910390f35b6101b6610556565b6040516101c39190611978565b60405180910390f35b6101e660048036038101906101e19190611991565b61055f565b6040516101f39190611950565b60405180910390f35b610216600480360381019061021191906117e8565b61058d565b005b6102206105ed565b60405161022d91906119fc565b60405180910390f35b610250600480360381019061024b9190611903565b6105f5565b60405161025d9190611950565b60405180910390f35b610280600480360381019061027b9190611a15565b61062b565b005b61029c60048036038101906102979190611a15565b61063d565b005b6102b860048036038101906102b39190611a40565b6106d9565b6040516102c59190611978565b60405180910390f35b6102d661071f565b005b6102f260048036038101906102ed9190611a40565b610732565b6040516102ff9190611978565b60405180910390f35b610322600480360381019061031d9190611a15565b61074b565b005b61033e60048036038101906103399190611a15565b61075d565b005b61034861076f565b6040516103559190611a7a565b60405180910390f35b610366610796565b60405161037391906118b0565b60405180910390f35b61039660048036038101906103919190611903565b610826565b6040516103a39190611950565b60405180910390f35b6103c660048036038101906103c19190611903565b61089b565b6040516103d39190611950565b60405180910390f35b6103f660048036038101906103f191906117e8565b6108bd565b005b610412600480360381019061040d9190611a93565b61091d565b60405161041f9190611978565b60405180910390f35b610442600480360381019061043d9190611a40565b61099f565b005b61044c610a21565b80600b5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505050565b6060600480546104b390611afe565b80601f01602080910402602001604051908101604052809291908181526020018280546104df90611afe565b801561052a5780601f106105015761010080835404028352916020019161052a565b820191905f5260205f20905b81548152906001019060200180831161050d57829003601f168201915b5050505050905090565b5f8061053e610a9f565b905061054b818585610aa6565b600191505092915050565b5f600354905090565b5f80610569610a9f565b9050610576858285610c69565b610581858585610cf4565b60019150509392505050565b610595610a21565b80600a5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505050565b5f6009905090565b5f806105ff610a9f565b9050610620818585610611858961091d565b61061b9190611b5b565b610aa6565b600191505092915050565b610633610a21565b80600f8190555050565b60095f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146106cc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106c390611bfe565b60405180910390fd5b6106d63382610f63565b50565b5f60015f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b610727610a21565b6107305f611128565b565b5f61073b610a21565b610744826111e9565b9050919050565b610753610a21565b80600d8190555050565b610765610a21565b80600e8190555050565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6060600580546107a590611afe565b80601f01602080910402602001604051908101604052809291908181526020018280546107d190611afe565b801561081c5780601f106107f35761010080835404028352916020019161081c565b820191905f5260205f20905b8154815290600101906020018083116107ff57829003601f168201915b5050505050905090565b5f80610830610a9f565b90505f61083d828661091d565b905083811015610882576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161087990611c8c565b60405180910390fd5b61088f8286868403610aa6565b60019250505092915050565b5f806108a5610a9f565b90506108b2818585610cf4565b600191505092915050565b6108c5610a21565b8060085f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505050565b5f60025f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b6109a7610a21565b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610a15576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a0c90611d1a565b60405180910390fd5b610a1e81611128565b50565b610a29610a9f565b73ffffffffffffffffffffffffffffffffffffffff16610a4761076f565b73ffffffffffffffffffffffffffffffffffffffff1614610a9d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a9490611d82565b60405180910390fd5b565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610b14576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b0b90611e10565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610b82576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b7990611e9e565b60405180910390fd5b8060025f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051610c5c9190611978565b60405180910390a3505050565b5f610c74848461091d565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8114610cee5781811015610ce0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cd790611f06565b60405180910390fd5b610ced8484848403610aa6565b5b50505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610d62576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d5990611f94565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610dd0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dc790612022565b60405180910390fd5b610ddb83838361131f565b5f60015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905081811015610e5f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e56906120b0565b60405180910390fd5b81810360015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508160015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825401925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610f4a9190611978565b60405180910390a3610f5d848484611684565b50505050565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610fd1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fc89061213e565b60405180910390fd5b610fdc825f8361131f565b5f60015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905081811015611060576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611057906121cc565b60405180910390fd5b81810360015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508160035f82825403925050819055505f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516111109190611978565b60405180910390a3611123835f84611684565b505050565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050815f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b5f60095f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361124d57611246610556565b905061131a565b600a5f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16156112ad576112a66001611689565b905061131a565b600b5f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff161561130d576113066002611689565b905061131a565b6113176003611689565b90505b919050565b60085f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16156113a9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113a090612280565b60405180910390fd5b60085f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1615611433576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161142a90612334565b60405180910390fd5b60095f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161461167f5760095f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161461167e575f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161461167d5760065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614806115b5575060075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16145b1561161d576115c3826111e9565b816115cd846106d9565b6115d79190611b5b565b1115611618576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161160f906123e8565b60405180910390fd5b61167c565b611626826111e9565b81611630846106d9565b61163a9190611b5b565b111561167b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161167290612476565b60405180910390fd5b5b5b5b5b505050565b505050565b5f816001036116cc5761169a6105ed565b600a6116a691906125c3565b600d546116b3919061260d565b6116bb610556565b6116c5919061267b565b9050611750565b8160020361170e576116dc6105ed565b600a6116e891906125c3565b600e546116f5919061260d565b6116fd610556565b611707919061267b565b9050611750565b6117166105ed565b600a61172291906125c3565b600f5461172f919061260d565b6001611739610556565b611743919061260d565b61174d919061267b565b90505b919050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f61178282611759565b9050919050565b61179281611778565b811461179c575f80fd5b50565b5f813590506117ad81611789565b92915050565b5f8115159050919050565b6117c7816117b3565b81146117d1575f80fd5b50565b5f813590506117e2816117be565b92915050565b5f80604083850312156117fe576117fd611755565b5b5f61180b8582860161179f565b925050602061181c858286016117d4565b9150509250929050565b5f81519050919050565b5f82825260208201905092915050565b5f5b8381101561185d578082015181840152602081019050611842565b5f8484015250505050565b5f601f19601f8301169050919050565b5f61188282611826565b61188c8185611830565b935061189c818560208601611840565b6118a581611868565b840191505092915050565b5f6020820190508181035f8301526118c88184611878565b905092915050565b5f819050919050565b6118e2816118d0565b81146118ec575f80fd5b50565b5f813590506118fd816118d9565b92915050565b5f806040838503121561191957611918611755565b5b5f6119268582860161179f565b9250506020611937858286016118ef565b9150509250929050565b61194a816117b3565b82525050565b5f6020820190506119635f830184611941565b92915050565b611972816118d0565b82525050565b5f60208201905061198b5f830184611969565b92915050565b5f805f606084860312156119a8576119a7611755565b5b5f6119b58682870161179f565b93505060206119c68682870161179f565b92505060406119d7868287016118ef565b9150509250925092565b5f60ff82169050919050565b6119f6816119e1565b82525050565b5f602082019050611a0f5f8301846119ed565b92915050565b5f60208284031215611a2a57611a29611755565b5b5f611a37848285016118ef565b91505092915050565b5f60208284031215611a5557611a54611755565b5b5f611a628482850161179f565b91505092915050565b611a7481611778565b82525050565b5f602082019050611a8d5f830184611a6b565b92915050565b5f8060408385031215611aa957611aa8611755565b5b5f611ab68582860161179f565b9250506020611ac78582860161179f565b9150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f6002820490506001821680611b1557607f821691505b602082108103611b2857611b27611ad1565b5b50919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f611b65826118d0565b9150611b70836118d0565b9250828201905080821115611b8857611b87611b2e565b5b92915050565b7f4f6e6c792053505544442063616e206275726e20737075646420746f6b656e735f8201527f2120776f6f662c20776f6f660000000000000000000000000000000000000000602082015250565b5f611be8602c83611830565b9150611bf382611b8e565b604082019050919050565b5f6020820190508181035f830152611c1581611bdc565b9050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f775f8201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b5f611c76602583611830565b9150611c8182611c1c565b604082019050919050565b5f6020820190508181035f830152611ca381611c6a565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f20615f8201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b5f611d04602683611830565b9150611d0f82611caa565b604082019050919050565b5f6020820190508181035f830152611d3181611cf8565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f611d6c602083611830565b9150611d7782611d38565b602082019050919050565b5f6020820190508181035f830152611d9981611d60565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f611dfa602483611830565b9150611e0582611da0565b604082019050919050565b5f6020820190508181035f830152611e2781611dee565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f611e88602283611830565b9150611e9382611e2e565b604082019050919050565b5f6020820190508181035f830152611eb581611e7c565b9050919050565b7f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000005f82015250565b5f611ef0601d83611830565b9150611efb82611ebc565b602082019050919050565b5f6020820190508181035f830152611f1d81611ee4565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f611f7e602583611830565b9150611f8982611f24565b604082019050919050565b5f6020820190508181035f830152611fab81611f72565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f61200c602383611830565b915061201782611fb2565b604082019050919050565b5f6020820190508181035f83015261203981612000565b9050919050565b7f45524332303a207472616e7366657220616d6f756e74206578636565647320625f8201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b5f61209a602683611830565b91506120a582612040565b604082019050919050565b5f6020820190508181035f8301526120c78161208e565b9050919050565b7f45524332303a206275726e2066726f6d20746865207a65726f206164647265735f8201527f7300000000000000000000000000000000000000000000000000000000000000602082015250565b5f612128602183611830565b9150612133826120ce565b604082019050919050565b5f6020820190508181035f8301526121558161211c565b9050919050565b7f45524332303a206275726e20616d6f756e7420657863656564732062616c616e5f8201527f6365000000000000000000000000000000000000000000000000000000000000602082015250565b5f6121b6602283611830565b91506121c18261215c565b604082019050919050565b5f6020820190508181035f8301526121e3816121aa565b9050919050565b7f596f7520617265206120737472616e67657220746f2053505544442c20796f755f8201527f20646f6e742062656c6f6e6720686572652c20776f6f6620776f6f662c20677260208201527f7272727272722100000000000000000000000000000000000000000000000000604082015250565b5f61226a604783611830565b9150612275826121ea565b606082019050919050565b5f6020820190508181035f8301526122978161225e565b9050919050565b7f526563697069656e74206973206120737472616e67657220746f2053505544445f8201527f2c207468657920646f6e742062656c6f6e6720686572652c20776f6f6620776f60208201527f6f662c2067727272727272722100000000000000000000000000000000000000604082015250565b5f61231e604d83611830565b91506123298261229e565b606082019050919050565b5f6020820190508181035f83015261234b81612312565b9050919050565b7f596f752061726520747279696e6720746f2061637175697265206d6f726520735f8201527f70756464207468656e20746865206d617820616c6c6f746d656e20666f72207960208201527f6f75722077616c6c657421000000000000000000000000000000000000000000604082015250565b5f6123d2604b83611830565b91506123dd82612352565b606082019050919050565b5f6020820190508181035f8301526123ff816123c6565b9050919050565b7f54686520726563697069656e742077616c6c65742077696c6c206861766520745f8201527f6f6f206d756368205350554444206166746572207472616e7366657221000000602082015250565b5f612460603d83611830565b915061246b82612406565b604082019050919050565b5f6020820190508181035f83015261248d81612454565b9050919050565b5f8160011c9050919050565b5f808291508390505b60018511156124e9578086048111156124c5576124c4611b2e565b5b60018516156124d45780820291505b80810290506124e285612494565b94506124a9565b94509492505050565b5f8261250157600190506125bc565b8161250e575f90506125bc565b8160018114612524576002811461252e5761255d565b60019150506125bc565b60ff8411156125405761253f611b2e565b5b8360020a91508482111561255757612556611b2e565b5b506125bc565b5060208310610133831016604e8410600b84101617156125925782820a90508381111561258d5761258c611b2e565b5b6125bc565b61259f84848460016124a0565b925090508184048111156125b6576125b5611b2e565b5b81810290505b9392505050565b5f6125cd826118d0565b91506125d8836119e1565b92506126057fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff84846124f2565b905092915050565b5f612617826118d0565b9150612622836118d0565b9250828202612630816118d0565b9150828204841483151761264757612646611b2e565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f612685826118d0565b9150612690836118d0565b9250826126a05761269f61264e565b5b82820490509291505056fea2646970667358221220748a4da7ddb7007611a85c798964e6f390436b61c8be87bb2bbc8d4f2dc0d3be64736f6c63430008160033

Deployed Bytecode Sourcemap

19775:5540:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24114:118;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6049:100;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8400:201;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7169:108;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9181:295;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23990:118;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;23228:92;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9885:238;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23596:129;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;25145:167;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7340:127;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18960:103;;;:::i;:::-;;23731:127;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23326:129;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;23461;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;18312:87;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6268:104;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10626:436;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7673:193;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23864:120;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7929:151;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19218:201;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;24114:118;18198:13;:11;:13::i;:::-;24218:6:::1;24196:9;:19;24206:8;24196:19;;;;;;;;;;;;;;;;:28;;;;;;;;;;;;;;;;;;24114:118:::0;;:::o;6049:100::-;6103:13;6136:5;6129:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6049:100;:::o;8400:201::-;8483:4;8500:13;8516:12;:10;:12::i;:::-;8500:28;;8539:32;8548:5;8555:7;8564:6;8539:8;:32::i;:::-;8589:4;8582:11;;;8400:201;;;;:::o;7169:108::-;7230:7;7257:12;;7250:19;;7169:108;:::o;9181:295::-;9312:4;9329:15;9347:12;:10;:12::i;:::-;9329:30;;9370:38;9386:4;9392:7;9401:6;9370:15;:38::i;:::-;9419:27;9429:4;9435:2;9439:6;9419:9;:27::i;:::-;9464:4;9457:11;;;9181:295;;;;;:::o;23990:118::-;18198:13;:11;:13::i;:::-;24094:6:::1;24072:9;:19;24082:8;24072:19;;;;;;;;;;;;;;;;:28;;;;;;;;;;;;;;;;;;23990:118:::0;;:::o;23228:92::-;23286:5;23311:1;23304:8;;23228:92;:::o;9885:238::-;9973:4;9990:13;10006:12;:10;:12::i;:::-;9990:28;;10029:64;10038:5;10045:7;10082:10;10054:25;10064:5;10071:7;10054:9;:25::i;:::-;:38;;;;:::i;:::-;10029:8;:64::i;:::-;10111:4;10104:11;;;9885:238;;;;:::o;23596:129::-;18198:13;:11;:13::i;:::-;23704::::1;23680:21;:37;;;;23596:129:::0;:::o;25145:167::-;25216:5;;;;;;;;;;;25202:19;;:10;:19;;;25194:75;;;;;;;;;;;;:::i;:::-;;;;;;;;;25280:24;25286:10;25298:5;25280;:24::i;:::-;25145:167;:::o;7340:127::-;7414:7;7441:9;:18;7451:7;7441:18;;;;;;;;;;;;;;;;7434:25;;7340:127;;;:::o;18960:103::-;18198:13;:11;:13::i;:::-;19025:30:::1;19052:1;19025:18;:30::i;:::-;18960:103::o:0;23731:127::-;23801:7;18198:13;:11;:13::i;:::-;23828:22:::1;23841:8;23828:12;:22::i;:::-;23821:29;;23731:127:::0;;;:::o;23326:129::-;18198:13;:11;:13::i;:::-;23434::::1;23410:21;:37;;;;23326:129:::0;:::o;23461:::-;18198:13;:11;:13::i;:::-;23569::::1;23545:21;:37;;;;23461:129:::0;:::o;18312:87::-;18358:7;18385:6;;;;;;;;;;;18378:13;;18312:87;:::o;6268:104::-;6324:13;6357:7;6350:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6268:104;:::o;10626:436::-;10719:4;10736:13;10752:12;:10;:12::i;:::-;10736:28;;10775:24;10802:25;10812:5;10819:7;10802:9;:25::i;:::-;10775:52;;10866:15;10846:16;:35;;10838:85;;;;;;;;;;;;:::i;:::-;;;;;;;;;10959:60;10968:5;10975:7;11003:15;10984:16;:34;10959:8;:60::i;:::-;11050:4;11043:11;;;;10626:436;;;;:::o;7673:193::-;7752:4;7769:13;7785:12;:10;:12::i;:::-;7769:28;;7808;7818:5;7825:2;7829:6;7808:9;:28::i;:::-;7854:4;7847:11;;;7673:193;;;;:::o;23864:120::-;18198:13;:11;:13::i;:::-;23970:6:::1;23947:10;:20;23958:8;23947:20;;;;;;;;;;;;;;;;:29;;;;;;;;;;;;;;;;;;23864:120:::0;;:::o;7929:151::-;8018:7;8045:11;:18;8057:5;8045:18;;;;;;;;;;;;;;;:27;8064:7;8045:27;;;;;;;;;;;;;;;;8038:34;;7929:151;;;;:::o;19218:201::-;18198:13;:11;:13::i;:::-;19327:1:::1;19307:22;;:8;:22;;::::0;19299:73:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;19383:28;19402:8;19383:18;:28::i;:::-;19218:201:::0;:::o;18477:132::-;18552:12;:10;:12::i;:::-;18541:23;;:7;:5;:7::i;:::-;:23;;;18533:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;18477:132::o;3861:98::-;3914:7;3941:10;3934:17;;3861:98;:::o;14653:380::-;14806:1;14789:19;;:5;:19;;;14781:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;14887:1;14868:21;;:7;:21;;;14860:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;14971:6;14941:11;:18;14953:5;14941:18;;;;;;;;;;;;;;;:27;14960:7;14941:27;;;;;;;;;;;;;;;:36;;;;15009:7;14993:32;;15002:5;14993:32;;;15018:6;14993:32;;;;;;:::i;:::-;;;;;;;;14653:380;;;:::o;15324:453::-;15459:24;15486:25;15496:5;15503:7;15486:9;:25::i;:::-;15459:52;;15546:17;15526:16;:37;15522:248;;15608:6;15588:16;:26;;15580:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;15692:51;15701:5;15708:7;15736:6;15717:16;:25;15692:8;:51::i;:::-;15522:248;15448:329;15324:453;;;:::o;11532:840::-;11679:1;11663:18;;:4;:18;;;11655:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;11756:1;11742:16;;:2;:16;;;11734:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;11811:38;11832:4;11838:2;11842:6;11811:20;:38::i;:::-;11862:19;11884:9;:15;11894:4;11884:15;;;;;;;;;;;;;;;;11862:37;;11933:6;11918:11;:21;;11910:72;;;;;;;;;;;;:::i;:::-;;;;;;;;;12050:6;12036:11;:20;12018:9;:15;12028:4;12018:15;;;;;;;;;;;;;;;:38;;;;12253:6;12236:9;:13;12246:2;12236:13;;;;;;;;;;;;;;;;:23;;;;;;;;;;;12303:2;12288:26;;12297:4;12288:26;;;12307:6;12288:26;;;;;;:::i;:::-;;;;;;;;12327:37;12347:4;12353:2;12357:6;12327:19;:37::i;:::-;11644:728;11532:840;;;:::o;13540:675::-;13643:1;13624:21;;:7;:21;;;13616:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;13696:49;13717:7;13734:1;13738:6;13696:20;:49::i;:::-;13758:22;13783:9;:18;13793:7;13783:18;;;;;;;;;;;;;;;;13758:43;;13838:6;13820:14;:24;;13812:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;13957:6;13940:14;:23;13919:9;:18;13929:7;13919:18;;;;;;;;;;;;;;;:44;;;;14074:6;14058:12;;:22;;;;;;;;;;;14135:1;14109:37;;14118:7;14109:37;;;14139:6;14109:37;;;;;;:::i;:::-;;;;;;;;14159:48;14179:7;14196:1;14200:6;14159:19;:48::i;:::-;13605:610;13540:675;;:::o;19579:191::-;19653:16;19672:6;;;;;;;;;;;19653:25;;19698:8;19689:6;;:17;;;;;;;;;;;;;;;;;;19753:8;19722:40;;19743:8;19722:40;;;;;;;;;;;;19642:128;19579:191;:::o;22845:377::-;22909:7;22947:5;;;;;;;;;;;22933:19;;:10;:19;;;22929:284;;22975:13;:11;:13::i;:::-;22968:20;;;;22929:284;23009:9;:21;23019:10;23009:21;;;;;;;;;;;;;;;;;;;;;;;;;23005:208;;;23053:15;23066:1;23053:12;:15::i;:::-;23046:22;;;;23005:208;23089:9;:21;23099:10;23089:21;;;;;;;;;;;;;;;;;;;;;;;;;23085:128;;;23133:15;23146:1;23133:12;:15::i;:::-;23126:22;;;;23085:128;23186:15;23199:1;23186:12;:15::i;:::-;23179:22;;22845:377;;;;:::o;24238:901::-;24356:10;:16;24367:4;24356:16;;;;;;;;;;;;;;;;;;;;;;;;;24355:17;24347:101;;;;;;;;;;;;:::i;:::-;;;;;;;;;24468:10;:14;24479:2;24468:14;;;;;;;;;;;;;;;;;;;;;;;;;24467:15;24459:105;;;;;;;;;;;;:::i;:::-;;;;;;;;;24587:5;;;;;;;;;;;24579:13;;:4;:13;;;24575:557;;24618:5;;;;;;;;;;;24612:11;;:2;:11;;;24608:513;;24661:1;24647:16;;:2;:16;;;24643:463;;24699:13;;;;;;;;;;;24691:21;;:4;:21;;;:46;;;;24724:13;;;;;;;;;;;24716:21;;:4;:21;;;24691:46;24687:400;;;24797:16;24810:2;24797:12;:16::i;:::-;24787:6;24773:13;24783:2;24773:9;:13::i;:::-;:20;;;;:::i;:::-;:40;;24765:128;;;;;;;;;;;;:::i;:::-;;;;;;;;;24687:400;;;24980:16;24993:2;24980:12;:16::i;:::-;24970:6;24956:13;24966:2;24956:9;:13::i;:::-;:20;;;;:::i;:::-;:40;;24948:114;;;;;;;;;;;;:::i;:::-;;;;;;;;;24687:400;24643:463;24608:513;24575:557;24238:901;;;:::o;17106:124::-;;;;:::o;22435:404::-;22495:7;22523;22518:1;:12;22514:318;;22597:10;:8;:10::i;:::-;22593:2;:14;;;;:::i;:::-;22570:21;;:38;;;;:::i;:::-;22553:13;:11;:13::i;:::-;:56;;;;:::i;:::-;22546:63;;;;22514:318;22635:7;22630:1;:12;22626:206;;22709:10;:8;:10::i;:::-;22705:2;:14;;;;:::i;:::-;22682:21;;:38;;;;:::i;:::-;22665:13;:11;:13::i;:::-;:56;;;;:::i;:::-;22658:63;;;;22626:206;22808:10;:8;:10::i;:::-;22804:2;:14;;;;:::i;:::-;22781:21;;:38;;;;:::i;:::-;22776:1;22759:13;:11;:13::i;:::-;:18;;;;:::i;:::-;:61;;;;:::i;:::-;22752:68;;22435:404;;;;:::o;88:117:1:-;197:1;194;187:12;334:126;371:7;411:42;404:5;400:54;389:65;;334:126;;;:::o;466:96::-;503:7;532:24;550:5;532:24;:::i;:::-;521:35;;466:96;;;:::o;568:122::-;641:24;659:5;641:24;:::i;:::-;634:5;631:35;621:63;;680:1;677;670:12;621:63;568:122;:::o;696:139::-;742:5;780:6;767:20;758:29;;796:33;823:5;796:33;:::i;:::-;696:139;;;;:::o;841:90::-;875:7;918:5;911:13;904:21;893:32;;841:90;;;:::o;937:116::-;1007:21;1022:5;1007:21;:::i;:::-;1000:5;997:32;987:60;;1043:1;1040;1033:12;987:60;937:116;:::o;1059:133::-;1102:5;1140:6;1127:20;1118:29;;1156:30;1180:5;1156:30;:::i;:::-;1059:133;;;;:::o;1198:468::-;1263:6;1271;1320:2;1308:9;1299:7;1295:23;1291:32;1288:119;;;1326:79;;:::i;:::-;1288:119;1446:1;1471:53;1516:7;1507:6;1496:9;1492:22;1471:53;:::i;:::-;1461:63;;1417:117;1573:2;1599:50;1641:7;1632:6;1621:9;1617:22;1599:50;:::i;:::-;1589:60;;1544:115;1198:468;;;;;:::o;1672:99::-;1724:6;1758:5;1752:12;1742:22;;1672:99;;;:::o;1777:169::-;1861:11;1895:6;1890:3;1883:19;1935:4;1930:3;1926:14;1911:29;;1777:169;;;;:::o;1952:246::-;2033:1;2043:113;2057:6;2054:1;2051:13;2043:113;;;2142:1;2137:3;2133:11;2127:18;2123:1;2118:3;2114:11;2107:39;2079:2;2076:1;2072:10;2067:15;;2043:113;;;2190:1;2181:6;2176:3;2172:16;2165:27;2014:184;1952:246;;;:::o;2204:102::-;2245:6;2296:2;2292:7;2287:2;2280:5;2276:14;2272:28;2262:38;;2204:102;;;:::o;2312:377::-;2400:3;2428:39;2461:5;2428:39;:::i;:::-;2483:71;2547:6;2542:3;2483:71;:::i;:::-;2476:78;;2563:65;2621:6;2616:3;2609:4;2602:5;2598:16;2563:65;:::i;:::-;2653:29;2675:6;2653:29;:::i;:::-;2648:3;2644:39;2637:46;;2404:285;2312:377;;;;:::o;2695:313::-;2808:4;2846:2;2835:9;2831:18;2823:26;;2895:9;2889:4;2885:20;2881:1;2870:9;2866:17;2859:47;2923:78;2996:4;2987:6;2923:78;:::i;:::-;2915:86;;2695:313;;;;:::o;3014:77::-;3051:7;3080:5;3069:16;;3014:77;;;:::o;3097:122::-;3170:24;3188:5;3170:24;:::i;:::-;3163:5;3160:35;3150:63;;3209:1;3206;3199:12;3150:63;3097:122;:::o;3225:139::-;3271:5;3309:6;3296:20;3287:29;;3325:33;3352:5;3325:33;:::i;:::-;3225:139;;;;:::o;3370:474::-;3438:6;3446;3495:2;3483:9;3474:7;3470:23;3466:32;3463:119;;;3501:79;;:::i;:::-;3463:119;3621:1;3646:53;3691:7;3682:6;3671:9;3667:22;3646:53;:::i;:::-;3636:63;;3592:117;3748:2;3774:53;3819:7;3810:6;3799:9;3795:22;3774:53;:::i;:::-;3764:63;;3719:118;3370:474;;;;;:::o;3850:109::-;3931:21;3946:5;3931:21;:::i;:::-;3926:3;3919:34;3850:109;;:::o;3965:210::-;4052:4;4090:2;4079:9;4075:18;4067:26;;4103:65;4165:1;4154:9;4150:17;4141:6;4103:65;:::i;:::-;3965:210;;;;:::o;4181:118::-;4268:24;4286:5;4268:24;:::i;:::-;4263:3;4256:37;4181:118;;:::o;4305:222::-;4398:4;4436:2;4425:9;4421:18;4413:26;;4449:71;4517:1;4506:9;4502:17;4493:6;4449:71;:::i;:::-;4305:222;;;;:::o;4533:619::-;4610:6;4618;4626;4675:2;4663:9;4654:7;4650:23;4646:32;4643:119;;;4681:79;;:::i;:::-;4643:119;4801:1;4826:53;4871:7;4862:6;4851:9;4847:22;4826:53;:::i;:::-;4816:63;;4772:117;4928:2;4954:53;4999:7;4990:6;4979:9;4975:22;4954:53;:::i;:::-;4944:63;;4899:118;5056:2;5082:53;5127:7;5118:6;5107:9;5103:22;5082:53;:::i;:::-;5072:63;;5027:118;4533:619;;;;;:::o;5158:86::-;5193:7;5233:4;5226:5;5222:16;5211:27;;5158:86;;;:::o;5250:112::-;5333:22;5349:5;5333:22;:::i;:::-;5328:3;5321:35;5250:112;;:::o;5368:214::-;5457:4;5495:2;5484:9;5480:18;5472:26;;5508:67;5572:1;5561:9;5557:17;5548:6;5508:67;:::i;:::-;5368:214;;;;:::o;5588:329::-;5647:6;5696:2;5684:9;5675:7;5671:23;5667:32;5664:119;;;5702:79;;:::i;:::-;5664:119;5822:1;5847:53;5892:7;5883:6;5872:9;5868:22;5847:53;:::i;:::-;5837:63;;5793:117;5588:329;;;;:::o;5923:::-;5982:6;6031:2;6019:9;6010:7;6006:23;6002:32;5999:119;;;6037:79;;:::i;:::-;5999:119;6157:1;6182:53;6227:7;6218:6;6207:9;6203:22;6182:53;:::i;:::-;6172:63;;6128:117;5923:329;;;;:::o;6258:118::-;6345:24;6363:5;6345:24;:::i;:::-;6340:3;6333:37;6258:118;;:::o;6382:222::-;6475:4;6513:2;6502:9;6498:18;6490:26;;6526:71;6594:1;6583:9;6579:17;6570:6;6526:71;:::i;:::-;6382:222;;;;:::o;6610:474::-;6678:6;6686;6735:2;6723:9;6714:7;6710:23;6706:32;6703:119;;;6741:79;;:::i;:::-;6703:119;6861:1;6886:53;6931:7;6922:6;6911:9;6907:22;6886:53;:::i;:::-;6876:63;;6832:117;6988:2;7014:53;7059:7;7050:6;7039:9;7035:22;7014:53;:::i;:::-;7004:63;;6959:118;6610:474;;;;;:::o;7090:180::-;7138:77;7135:1;7128:88;7235:4;7232:1;7225:15;7259:4;7256:1;7249:15;7276:320;7320:6;7357:1;7351:4;7347:12;7337:22;;7404:1;7398:4;7394:12;7425:18;7415:81;;7481:4;7473:6;7469:17;7459:27;;7415:81;7543:2;7535:6;7532:14;7512:18;7509:38;7506:84;;7562:18;;:::i;:::-;7506:84;7327:269;7276:320;;;:::o;7602:180::-;7650:77;7647:1;7640:88;7747:4;7744:1;7737:15;7771:4;7768:1;7761:15;7788:191;7828:3;7847:20;7865:1;7847:20;:::i;:::-;7842:25;;7881:20;7899:1;7881:20;:::i;:::-;7876:25;;7924:1;7921;7917:9;7910:16;;7945:3;7942:1;7939:10;7936:36;;;7952:18;;:::i;:::-;7936:36;7788:191;;;;:::o;7985:231::-;8125:34;8121:1;8113:6;8109:14;8102:58;8194:14;8189:2;8181:6;8177:15;8170:39;7985:231;:::o;8222:366::-;8364:3;8385:67;8449:2;8444:3;8385:67;:::i;:::-;8378:74;;8461:93;8550:3;8461:93;:::i;:::-;8579:2;8574:3;8570:12;8563:19;;8222:366;;;:::o;8594:419::-;8760:4;8798:2;8787:9;8783:18;8775:26;;8847:9;8841:4;8837:20;8833:1;8822:9;8818:17;8811:47;8875:131;9001:4;8875:131;:::i;:::-;8867:139;;8594:419;;;:::o;9019:224::-;9159:34;9155:1;9147:6;9143:14;9136:58;9228:7;9223:2;9215:6;9211:15;9204:32;9019:224;:::o;9249:366::-;9391:3;9412:67;9476:2;9471:3;9412:67;:::i;:::-;9405:74;;9488:93;9577:3;9488:93;:::i;:::-;9606:2;9601:3;9597:12;9590:19;;9249:366;;;:::o;9621:419::-;9787:4;9825:2;9814:9;9810:18;9802:26;;9874:9;9868:4;9864:20;9860:1;9849:9;9845:17;9838:47;9902:131;10028:4;9902:131;:::i;:::-;9894:139;;9621:419;;;:::o;10046:225::-;10186:34;10182:1;10174:6;10170:14;10163:58;10255:8;10250:2;10242:6;10238:15;10231:33;10046:225;:::o;10277:366::-;10419:3;10440:67;10504:2;10499:3;10440:67;:::i;:::-;10433:74;;10516:93;10605:3;10516:93;:::i;:::-;10634:2;10629:3;10625:12;10618:19;;10277:366;;;:::o;10649:419::-;10815:4;10853:2;10842:9;10838:18;10830:26;;10902:9;10896:4;10892:20;10888:1;10877:9;10873:17;10866:47;10930:131;11056:4;10930:131;:::i;:::-;10922:139;;10649:419;;;:::o;11074:182::-;11214:34;11210:1;11202:6;11198:14;11191:58;11074:182;:::o;11262:366::-;11404:3;11425:67;11489:2;11484:3;11425:67;:::i;:::-;11418:74;;11501:93;11590:3;11501:93;:::i;:::-;11619:2;11614:3;11610:12;11603:19;;11262:366;;;:::o;11634:419::-;11800:4;11838:2;11827:9;11823:18;11815:26;;11887:9;11881:4;11877:20;11873:1;11862:9;11858:17;11851:47;11915:131;12041:4;11915:131;:::i;:::-;11907:139;;11634:419;;;:::o;12059:223::-;12199:34;12195:1;12187:6;12183:14;12176:58;12268:6;12263:2;12255:6;12251:15;12244:31;12059:223;:::o;12288:366::-;12430:3;12451:67;12515:2;12510:3;12451:67;:::i;:::-;12444:74;;12527:93;12616:3;12527:93;:::i;:::-;12645:2;12640:3;12636:12;12629:19;;12288:366;;;:::o;12660:419::-;12826:4;12864:2;12853:9;12849:18;12841:26;;12913:9;12907:4;12903:20;12899:1;12888:9;12884:17;12877:47;12941:131;13067:4;12941:131;:::i;:::-;12933:139;;12660:419;;;:::o;13085:221::-;13225:34;13221:1;13213:6;13209:14;13202:58;13294:4;13289:2;13281:6;13277:15;13270:29;13085:221;:::o;13312:366::-;13454:3;13475:67;13539:2;13534:3;13475:67;:::i;:::-;13468:74;;13551:93;13640:3;13551:93;:::i;:::-;13669:2;13664:3;13660:12;13653:19;;13312:366;;;:::o;13684:419::-;13850:4;13888:2;13877:9;13873:18;13865:26;;13937:9;13931:4;13927:20;13923:1;13912:9;13908:17;13901:47;13965:131;14091:4;13965:131;:::i;:::-;13957:139;;13684:419;;;:::o;14109:179::-;14249:31;14245:1;14237:6;14233:14;14226:55;14109:179;:::o;14294:366::-;14436:3;14457:67;14521:2;14516:3;14457:67;:::i;:::-;14450:74;;14533:93;14622:3;14533:93;:::i;:::-;14651:2;14646:3;14642:12;14635:19;;14294:366;;;:::o;14666:419::-;14832:4;14870:2;14859:9;14855:18;14847:26;;14919:9;14913:4;14909:20;14905:1;14894:9;14890:17;14883:47;14947:131;15073:4;14947:131;:::i;:::-;14939:139;;14666:419;;;:::o;15091:224::-;15231:34;15227:1;15219:6;15215:14;15208:58;15300:7;15295:2;15287:6;15283:15;15276:32;15091:224;:::o;15321:366::-;15463:3;15484:67;15548:2;15543:3;15484:67;:::i;:::-;15477:74;;15560:93;15649:3;15560:93;:::i;:::-;15678:2;15673:3;15669:12;15662:19;;15321:366;;;:::o;15693:419::-;15859:4;15897:2;15886:9;15882:18;15874:26;;15946:9;15940:4;15936:20;15932:1;15921:9;15917:17;15910:47;15974:131;16100:4;15974:131;:::i;:::-;15966:139;;15693:419;;;:::o;16118:222::-;16258:34;16254:1;16246:6;16242:14;16235:58;16327:5;16322:2;16314:6;16310:15;16303:30;16118:222;:::o;16346:366::-;16488:3;16509:67;16573:2;16568:3;16509:67;:::i;:::-;16502:74;;16585:93;16674:3;16585:93;:::i;:::-;16703:2;16698:3;16694:12;16687:19;;16346:366;;;:::o;16718:419::-;16884:4;16922:2;16911:9;16907:18;16899:26;;16971:9;16965:4;16961:20;16957:1;16946:9;16942:17;16935:47;16999:131;17125:4;16999:131;:::i;:::-;16991:139;;16718:419;;;:::o;17143:225::-;17283:34;17279:1;17271:6;17267:14;17260:58;17352:8;17347:2;17339:6;17335:15;17328:33;17143:225;:::o;17374:366::-;17516:3;17537:67;17601:2;17596:3;17537:67;:::i;:::-;17530:74;;17613:93;17702:3;17613:93;:::i;:::-;17731:2;17726:3;17722:12;17715:19;;17374:366;;;:::o;17746:419::-;17912:4;17950:2;17939:9;17935:18;17927:26;;17999:9;17993:4;17989:20;17985:1;17974:9;17970:17;17963:47;18027:131;18153:4;18027:131;:::i;:::-;18019:139;;17746:419;;;:::o;18171:220::-;18311:34;18307:1;18299:6;18295:14;18288:58;18380:3;18375:2;18367:6;18363:15;18356:28;18171:220;:::o;18397:366::-;18539:3;18560:67;18624:2;18619:3;18560:67;:::i;:::-;18553:74;;18636:93;18725:3;18636:93;:::i;:::-;18754:2;18749:3;18745:12;18738:19;;18397:366;;;:::o;18769:419::-;18935:4;18973:2;18962:9;18958:18;18950:26;;19022:9;19016:4;19012:20;19008:1;18997:9;18993:17;18986:47;19050:131;19176:4;19050:131;:::i;:::-;19042:139;;18769:419;;;:::o;19194:221::-;19334:34;19330:1;19322:6;19318:14;19311:58;19403:4;19398:2;19390:6;19386:15;19379:29;19194:221;:::o;19421:366::-;19563:3;19584:67;19648:2;19643:3;19584:67;:::i;:::-;19577:74;;19660:93;19749:3;19660:93;:::i;:::-;19778:2;19773:3;19769:12;19762:19;;19421:366;;;:::o;19793:419::-;19959:4;19997:2;19986:9;19982:18;19974:26;;20046:9;20040:4;20036:20;20032:1;20021:9;20017:17;20010:47;20074:131;20200:4;20074:131;:::i;:::-;20066:139;;19793:419;;;:::o;20218:295::-;20358:34;20354:1;20346:6;20342:14;20335:58;20427:34;20422:2;20414:6;20410:15;20403:59;20496:9;20491:2;20483:6;20479:15;20472:34;20218:295;:::o;20519:366::-;20661:3;20682:67;20746:2;20741:3;20682:67;:::i;:::-;20675:74;;20758:93;20847:3;20758:93;:::i;:::-;20876:2;20871:3;20867:12;20860:19;;20519:366;;;:::o;20891:419::-;21057:4;21095:2;21084:9;21080:18;21072:26;;21144:9;21138:4;21134:20;21130:1;21119:9;21115:17;21108:47;21172:131;21298:4;21172:131;:::i;:::-;21164:139;;20891:419;;;:::o;21316:301::-;21456:34;21452:1;21444:6;21440:14;21433:58;21525:34;21520:2;21512:6;21508:15;21501:59;21594:15;21589:2;21581:6;21577:15;21570:40;21316:301;:::o;21623:366::-;21765:3;21786:67;21850:2;21845:3;21786:67;:::i;:::-;21779:74;;21862:93;21951:3;21862:93;:::i;:::-;21980:2;21975:3;21971:12;21964:19;;21623:366;;;:::o;21995:419::-;22161:4;22199:2;22188:9;22184:18;22176:26;;22248:9;22242:4;22238:20;22234:1;22223:9;22219:17;22212:47;22276:131;22402:4;22276:131;:::i;:::-;22268:139;;21995:419;;;:::o;22420:299::-;22560:34;22556:1;22548:6;22544:14;22537:58;22629:34;22624:2;22616:6;22612:15;22605:59;22698:13;22693:2;22685:6;22681:15;22674:38;22420:299;:::o;22725:366::-;22867:3;22888:67;22952:2;22947:3;22888:67;:::i;:::-;22881:74;;22964:93;23053:3;22964:93;:::i;:::-;23082:2;23077:3;23073:12;23066:19;;22725:366;;;:::o;23097:419::-;23263:4;23301:2;23290:9;23286:18;23278:26;;23350:9;23344:4;23340:20;23336:1;23325:9;23321:17;23314:47;23378:131;23504:4;23378:131;:::i;:::-;23370:139;;23097:419;;;:::o;23522:248::-;23662:34;23658:1;23650:6;23646:14;23639:58;23731:31;23726:2;23718:6;23714:15;23707:56;23522:248;:::o;23776:366::-;23918:3;23939:67;24003:2;23998:3;23939:67;:::i;:::-;23932:74;;24015:93;24104:3;24015:93;:::i;:::-;24133:2;24128:3;24124:12;24117:19;;23776:366;;;:::o;24148:419::-;24314:4;24352:2;24341:9;24337:18;24329:26;;24401:9;24395:4;24391:20;24387:1;24376:9;24372:17;24365:47;24429:131;24555:4;24429:131;:::i;:::-;24421:139;;24148:419;;;:::o;24573:102::-;24615:8;24662:5;24659:1;24655:13;24634:34;;24573:102;;;:::o;24681:848::-;24742:5;24749:4;24773:6;24764:15;;24797:5;24788:14;;24811:712;24832:1;24822:8;24819:15;24811:712;;;24927:4;24922:3;24918:14;24912:4;24909:24;24906:50;;;24936:18;;:::i;:::-;24906:50;24986:1;24976:8;24972:16;24969:451;;;25401:4;25394:5;25390:16;25381:25;;24969:451;25451:4;25445;25441:15;25433:23;;25481:32;25504:8;25481:32;:::i;:::-;25469:44;;24811:712;;;24681:848;;;;;;;:::o;25535:1073::-;25589:5;25780:8;25770:40;;25801:1;25792:10;;25803:5;;25770:40;25829:4;25819:36;;25846:1;25837:10;;25848:5;;25819:36;25915:4;25963:1;25958:27;;;;25999:1;25994:191;;;;25908:277;;25958:27;25976:1;25967:10;;25978:5;;;25994:191;26039:3;26029:8;26026:17;26023:43;;;26046:18;;:::i;:::-;26023:43;26095:8;26092:1;26088:16;26079:25;;26130:3;26123:5;26120:14;26117:40;;;26137:18;;:::i;:::-;26117:40;26170:5;;;25908:277;;26294:2;26284:8;26281:16;26275:3;26269:4;26266:13;26262:36;26244:2;26234:8;26231:16;26226:2;26220:4;26217:12;26213:35;26197:111;26194:246;;;26350:8;26344:4;26340:19;26331:28;;26385:3;26378:5;26375:14;26372:40;;;26392:18;;:::i;:::-;26372:40;26425:5;;26194:246;26465:42;26503:3;26493:8;26487:4;26484:1;26465:42;:::i;:::-;26450:57;;;;26539:4;26534:3;26530:14;26523:5;26520:25;26517:51;;;26548:18;;:::i;:::-;26517:51;26597:4;26590:5;26586:16;26577:25;;25535:1073;;;;;;:::o;26614:281::-;26672:5;26696:23;26714:4;26696:23;:::i;:::-;26688:31;;26740:25;26756:8;26740:25;:::i;:::-;26728:37;;26784:104;26821:66;26811:8;26805:4;26784:104;:::i;:::-;26775:113;;26614:281;;;;:::o;26901:410::-;26941:7;26964:20;26982:1;26964:20;:::i;:::-;26959:25;;26998:20;27016:1;26998:20;:::i;:::-;26993:25;;27053:1;27050;27046:9;27075:30;27093:11;27075:30;:::i;:::-;27064:41;;27254:1;27245:7;27241:15;27238:1;27235:22;27215:1;27208:9;27188:83;27165:139;;27284:18;;:::i;:::-;27165:139;26949:362;26901:410;;;;:::o;27317:180::-;27365:77;27362:1;27355:88;27462:4;27459:1;27452:15;27486:4;27483:1;27476:15;27503:185;27543:1;27560:20;27578:1;27560:20;:::i;:::-;27555:25;;27594:20;27612:1;27594:20;:::i;:::-;27589:25;;27633:1;27623:35;;27638:18;;:::i;:::-;27623:35;27680:1;27677;27673:9;27668:14;;27503:185;;;;:::o

Swarm Source

ipfs://748a4da7ddb7007611a85c798964e6f390436b61c8be87bb2bbc8d4f2dc0d3be
Loading...
Loading
Loading...
Loading
[ Download: CSV Export  ]
[ Download: CSV Export  ]

A token is a representation of an on-chain or off-chain asset. The token page shows information such as price, total supply, holders, transfers and social links. Learn more about this page in our Knowledge Base.