ETH Price: $3,330.85 (-3.95%)

Token

OnChain Goose 404 (OCG404)
 

Overview

Max Total Supply

88 OCG404

Holders

30

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
3.34844025236021637 OCG404

Value
$0.00
0x41e53813D8Fe38C1be40c2196D74a150af26e5d5
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:
OnChainGoose

Compiler Version
v0.8.24+commit.e11b9ed9

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity Multiple files format)

File 4 of 6: OCG404.sol
// SPDX-License-Identifier: MIT

/**
 * The first collection of 88 Pixel Gooses generated entirely on-chain and minted as ERC404 tokens
 * Telegram: https://t.me/onchaingoose404
 */
pragma solidity ^0.8.10;
import "./ERC404.sol";
import "./Base64.sol";

contract OnChainGoose is ERC404 {
    constructor(address _owner, uint256 _totalSupply)
        ERC404("OnChain Goose 404", "OCG404", 18, _totalSupply, _owner)
    {
        balanceOf[_owner] = _totalSupply * 10**18;
        setWhitelist(_owner, true);
    }

    string[] private skinColors = [
        "#e6904e",
        "#fbb954",
        "#68934A",
        "#00ff33",
        "#a2a947",
        "#d5e04b",
        "#fbff86",
        "#165a4c",
        "#239063",
        "#1ebc73",
        "#91db69",
        "#cddf6c",
        "#007722",
        "#22eeff",
        "#547e64",
        "#92a984",
        "#b2ba90",
        "#0b5e65",
        "#0b8a8f",
        "#0eaf9b",
        "#30e1b9",
        "#8ff8e2"
    ];

    string[] private lipColors = [
        "#b33831",
        "#ea4f36",
        "#f57d4a",
        "#ae2334",
        "#e83b3b",
        "#a24b6f",
        "#cf657f",
        "#ed8099",
        "#831c5d",
        "#c32454",
        "#f04f78",
        "#f68181"
    ];

    function random(string memory input) internal pure returns (uint256) {
        return uint256(keccak256(abi.encodePacked(input)));
    }

    function getSkinColor(uint256 tokenId) public view returns (string memory) {
        uint256 rand = random(
            string(abi.encodePacked("SKINCOLOR", toString(tokenId)))
        );
        return skinColors[rand % skinColors.length];
    }

    function getLipColor(uint256 tokenId) public view returns (string memory) {
        uint256 rand = random(
            string(abi.encodePacked("LIPCOLOR", toString(tokenId)))
        );
        return lipColors[rand % lipColors.length];
    }

    function pluck(
        uint256 tokenId,
        string memory keyPrefix,
        string[] memory sourceArray
    ) internal pure returns (string memory) {
        uint256 rand = random(
            string(abi.encodePacked(keyPrefix, toString(tokenId)))
        );
        return sourceArray[rand % sourceArray.length];
    }

    function tokenURI(uint256 tokenId)
        public
        view
        override
        returns (string memory)
    {
        string memory skinColor = getSkinColor(tokenId);
        string memory lipColor = getLipColor(tokenId);

        string memory svg = string(
            abi.encodePacked(
                '<svg xmlns="http://www.w3.org/2000/svg" width="592" height="592" viewBox="0 0 592 592" fill="none">',
                '<rect width="236" height="414" x="177" y="118" fill="',
                skinColor,
                '"/>',
                '<rect width="355" height="296" x="118" y="177" fill="',
                skinColor,
                '"/>',
                '<rect width="118" height="118" x="236" y="473" fill="',
                skinColor,
                '"/>',
                '<rect width="473" height="59" x="59" y="414" fill="',
                lipColor,
                '"/>',
		        '<rect width="236" height="118" x="177" y="355" fill="',
                lipColor,
                '"/>',
		        '<rect width="59" height="59" x="177" y="236" fill="#000000"/>',
		        '<rect width="59" height="59" x="355" y="236" fill="#000000"/>',
                "</svg>"
            )
        );

        string memory json = Base64.encode(
            bytes(
                string(
                    abi.encodePacked(
                        '{"name": "On Chain Goose #',
                        toString(tokenId),
                        '", "description": "88 randomly generated Pixel Gooses stored entirely on chain.", "image": "data:image/svg+xml;base64,',
                        Base64.encode(bytes(svg)),
                        '"}'
                    )
                )
            )
        );

        return string(abi.encodePacked("data:application/json;base64,", json));
    }

    function toString(uint256 value) internal pure returns (string memory) {
        if (value == 0) {
            return "0";
        }
        uint256 temp = value;
        uint256 digits;
        while (temp != 0) {
            digits++;
            temp /= 10;
        }
        bytes memory buffer = new bytes(digits);
        while (value != 0) {
            digits -= 1;
            buffer[digits] = bytes1(uint8(48 + uint256(value % 10)));
            value /= 10;
        }
        return string(buffer);
    }
}

File 1 of 6: Base64.sol
// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts (last updated v5.0.0) (utils/Base64.sol)

pragma solidity ^0.8.20;

/**
 * @dev Provides a set of functions to operate with Base64 strings.
 */
library Base64 {
    /**
     * @dev Base64 Encoding/Decoding Table
     */
    string internal constant _TABLE = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";

    /**
     * @dev Converts a `bytes` to its Bytes64 `string` representation.
     */
    function encode(bytes memory data) internal pure returns (string memory) {
        /**
         * Inspired by Brecht Devos (Brechtpd) implementation - MIT licence
         * https://github.com/Brechtpd/base64/blob/e78d9fd951e7b0977ddca77d92dc85183770daf4/base64.sol
         */
        if (data.length == 0) return "";

        // Loads the table into memory
        string memory table = _TABLE;

        // Encoding takes 3 bytes chunks of binary data from `bytes` data parameter
        // and split into 4 numbers of 6 bits.
        // The final Base64 length should be `bytes` data length multiplied by 4/3 rounded up
        // - `data.length + 2`  -> Round up
        // - `/ 3`              -> Number of 3-bytes chunks
        // - `4 *`              -> 4 characters for each chunk
        string memory result = new string(4 * ((data.length + 2) / 3));

        /// @solidity memory-safe-assembly
        assembly {
            // Prepare the lookup table (skip the first "length" byte)
            let tablePtr := add(table, 1)

            // Prepare result pointer, jump over length
            let resultPtr := add(result, 32)

            // Run over the input, 3 bytes at a time
            for {
                let dataPtr := data
                let endPtr := add(data, mload(data))
            } lt(dataPtr, endPtr) {

            } {
                // Advance 3 bytes
                dataPtr := add(dataPtr, 3)
                let input := mload(dataPtr)

                // To write each character, shift the 3 bytes (18 bits) chunk
                // 4 times in blocks of 6 bits for each character (18, 12, 6, 0)
                // and apply logical AND with 0x3F which is the number of
                // the previous character in the ASCII table prior to the Base64 Table
                // The result is then added to the table to get the character to write,
                // and finally write it in the result pointer but with a left shift
                // of 256 (1 byte) - 8 (1 ASCII char) = 248 bits

                mstore8(resultPtr, mload(add(tablePtr, and(shr(18, input), 0x3F))))
                resultPtr := add(resultPtr, 1) // Advance

                mstore8(resultPtr, mload(add(tablePtr, and(shr(12, input), 0x3F))))
                resultPtr := add(resultPtr, 1) // Advance

                mstore8(resultPtr, mload(add(tablePtr, and(shr(6, input), 0x3F))))
                resultPtr := add(resultPtr, 1) // Advance

                mstore8(resultPtr, mload(add(tablePtr, and(input, 0x3F))))
                resultPtr := add(resultPtr, 1) // Advance
            }

            // When data `bytes` is not exactly 3 bytes long
            // it is padded with `=` characters at the end
            switch mod(mload(data), 3)
            case 1 {
                mstore8(sub(resultPtr, 1), 0x3d)
                mstore8(sub(resultPtr, 2), 0x3d)
            }
            case 2 {
                mstore8(sub(resultPtr, 1), 0x3d)
            }
        }

        return result;
    }
}

File 2 of 6: Context.sol
// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts (last updated v5.0.1) (utils/Context.sol)

pragma solidity ^0.8.20;

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

    function _contextSuffixLength() internal view virtual returns (uint256) {
        return 0;
    }
}

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

import "./Ownable2Step.sol";
import "./Ownable.sol";
pragma solidity ^0.8.0;

abstract contract ERC721Receiver {
    function onERC721Received(
        address,
        address,
        uint256,
        bytes calldata
    ) external virtual returns (bytes4) {
        return ERC721Receiver.onERC721Received.selector;
    }
}

abstract contract ERC404 is Ownable2Step {


    event ERC20Transfer(bytes32 indexed topic0, address indexed from, address indexed to, uint256 tokens) anonymous;
    event Approval(address indexed owner, address indexed spender, uint256 amount);
    event Transfer( address indexed from, address indexed to, uint256 indexed id);
    event ERC721Approval(address indexed owner, address indexed spender, uint256 indexed id );
    event ApprovalForAll(address indexed owner, address indexed operator, bool approved );
    bytes32 constant private TRANSFER_TOPIC = keccak256(bytes("Transfer(address,address,uint256)"));

    error NotFound();
    error AlreadyExists();
    error InvalidRecipient();
    error InvalidSender();
    error UnsafeRecipient();
    error Unauthorized();
    error InvalidOwner();

    // Metadata
    /// @dev Token name
    string public name;

    /// @dev Token symbol
    string public symbol;

    /// @dev Decimals for fractional representation
    uint8 public immutable decimals;

    /// @dev Total supply in fractionalized representation
    uint256 public immutable totalSupply;

    /// @dev Current mint counter, monotonically increasing to ensure accurate ownership
    uint256 public minted;

    // Mappings
    /// @dev Balance of user in fractional representation
    mapping(address => uint256) public balanceOf;

    /// @dev Allowance of user in fractional representation
    mapping(address => mapping(address => uint256)) public allowance;

    /// @dev Approval in native representaion
    mapping(uint256 => address) public getApproved;

    /// @dev Approval for all in native representation
    mapping(address => mapping(address => bool)) public isApprovedForAll;

    /// @dev Owner of id in native representation
    mapping(uint256 => address) internal _ownerOf;

    /// @dev Array of owned ids in native representation
    mapping(address => uint256[]) internal _owned;

    /// @dev Tracks indices for the _owned mapping
    mapping(uint256 => uint256) internal _ownedIndex;

    /// @dev Addresses whitelisted from minting / burning for gas savings (pairs, routers, etc)
    mapping(address => bool) public whitelist;

    // Constructor
    constructor(
        string memory _name,
        string memory _symbol,
        uint8 _decimals,
        uint256 _totalNativeSupply,
        address _owner
    ) Ownable(_owner) {
        name = _name;
        symbol = _symbol;
        decimals = _decimals;
        totalSupply = _totalNativeSupply * (10 ** decimals);
    }

    /// @notice Initialization function to set pairs / etc
    ///         saving gas by avoiding mint / burn on unnecessary targets
    function setWhitelist(address target, bool state) public onlyOwner {
        whitelist[target] = state;
    }

    /// @notice Function to find owner of a given native token
    function ownerOf(uint256 id) public view virtual returns (address owner) {
        owner = _ownerOf[id];

        if (owner == address(0)) {
            revert NotFound();
        }
    }

    /// @notice tokenURI must be implemented by child contract
    function tokenURI(uint256 id) public view virtual returns (string memory);

    /// @notice Function for token approvals
    /// @dev This function assumes id / native if amount less than or equal to current max id
    function approve(
        address spender,
        uint256 amountOrId
    ) public virtual returns (bool) {
        if (amountOrId <= minted && amountOrId > 0) {
            address owner = _ownerOf[amountOrId];

            if (msg.sender != owner && !isApprovedForAll[owner][msg.sender]) {
                revert Unauthorized();
            }

            getApproved[amountOrId] = spender;

            emit Approval(owner, spender, amountOrId);
        } else {
            allowance[msg.sender][spender] = amountOrId;

            emit Approval(msg.sender, spender, amountOrId);
        }

        return true;
    }

    /// @notice Function native approvals
    function setApprovalForAll(address operator, bool approved) public virtual {
        isApprovedForAll[msg.sender][operator] = approved;

        emit ApprovalForAll(msg.sender, operator, approved);
    }

    /// @notice Function for mixed transfers
    /// @dev This function assumes id / native if amount less than or equal to current max id
    function transferFrom(
        address from,
        address to,
        uint256 amountOrId
    ) public virtual {
        if (amountOrId <= minted) {
            if (from != _ownerOf[amountOrId]) {
                revert InvalidSender();
            }

            if (to == address(0)) {
                revert InvalidRecipient();
            }

            if (
                msg.sender != from &&
                !isApprovedForAll[from][msg.sender] &&
                msg.sender != getApproved[amountOrId]
            ) {
                revert Unauthorized();
            }

            balanceOf[from] -= _getUnit();

            unchecked {
                balanceOf[to] += _getUnit();
            }

            _ownerOf[amountOrId] = to;
            delete getApproved[amountOrId];

            // update _owned for sender
            uint256 updatedId = _owned[from][_owned[from].length - 1];
            _owned[from][_ownedIndex[amountOrId]] = updatedId;
            // pop
            _owned[from].pop();
            // update index for the moved id
            _ownedIndex[updatedId] = _ownedIndex[amountOrId];
            // push token to to owned
            _owned[to].push(amountOrId);
            // update index for to owned
            _ownedIndex[amountOrId] = _owned[to].length - 1;

            emit Transfer(from, to, amountOrId);
            emit ERC20Transfer(TRANSFER_TOPIC, from, to, _getUnit());
        } else {
            uint256 allowed = allowance[from][msg.sender];

            if (allowed != type(uint256).max)
                allowance[from][msg.sender] = allowed - amountOrId;

            _transfer(from, to, amountOrId);
        }
    }

    /// @notice Function for fractional transfers
    function transfer(
        address to,
        uint256 amount
    ) public virtual returns (bool) {
        return _transfer(msg.sender, to, amount);
    }

    /// @notice Function for native transfers with contract support
    function safeTransferFrom(
        address from,
        address to,
        uint256 id
    ) public virtual {
        transferFrom(from, to, id);

        if (
            to.code.length != 0 &&
            ERC721Receiver(to).onERC721Received(msg.sender, from, id, "") !=
            ERC721Receiver.onERC721Received.selector
        ) {
            revert UnsafeRecipient();
        }
    }

    /// @notice Function for native transfers with contract support and callback data
    function safeTransferFrom(
        address from,
        address to,
        uint256 id,
        bytes calldata data
    ) public virtual {
        transferFrom(from, to, id);

        if (
            to.code.length != 0 &&
            ERC721Receiver(to).onERC721Received(msg.sender, from, id, data) !=
            ERC721Receiver.onERC721Received.selector
        ) {
            revert UnsafeRecipient();
        }
    }

    /// @notice Internal function for fractional transfers
    function _transfer(
        address from,
        address to,
        uint256 amount
    ) internal virtual returns (bool) {
        uint256 unit = _getUnit();
        uint256 balanceBeforeSender = balanceOf[from];
        uint256 balanceBeforeReceiver = balanceOf[to];

        balanceOf[from] -= amount;

        unchecked {
            balanceOf[to] += amount;
        }

        // Skip burn for certain addresses to save gas
        if (!whitelist[from]) {
            uint256 tokens_to_burn = (balanceBeforeSender / unit) -
                (balanceOf[from] / unit);
            for (uint256 i = 0; i < tokens_to_burn; i++) {
                _burn(from);
            }
        }

        // Skip minting for certain addresses to save gas
        if (!whitelist[to]) {
            uint256 tokens_to_mint = (balanceOf[to] / unit) -
                (balanceBeforeReceiver / unit);
            for (uint256 i = 0; i < tokens_to_mint; i++) {
                _mint(to);
            }
        }

        emit ERC20Transfer(TRANSFER_TOPIC, from, to, amount);
        return true;
    }

    // Internal utility logic
    function _getUnit() internal view returns (uint256) {
        return 10 ** decimals;
    }

    function _mint(address to) internal virtual {
        if (to == address(0)) {
            revert InvalidRecipient();
        }

        unchecked {
            minted++;
        }

        uint256 id = minted;

        if (_ownerOf[id] != address(0)) {
            revert AlreadyExists();
        }

        _ownerOf[id] = to;
        _owned[to].push(id);
        _ownedIndex[id] = _owned[to].length - 1;

        emit Transfer(address(0), to, id);
    }

    function _burn(address from) internal virtual {
        if (from == address(0)) {
            revert InvalidSender();
        }

        uint256 id = _owned[from][_owned[from].length - 1];
        _owned[from].pop();
        delete _ownedIndex[id];
        delete _ownerOf[id];
        delete getApproved[id];

        emit Transfer(from, address(0), id);
    }

    function _setNameSymbol(
        string memory _name,
        string memory _symbol
    ) internal {
        name = _name;
        symbol = _symbol;
    }
}

File 5 of 6: Ownable.sol
// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts (last updated v5.0.0) (access/Ownable.sol)

pragma solidity ^0.8.20;

import {Context} from "./Context.sol";

/**
 * @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.
 *
 * The initial owner is set to the address provided by the deployer. 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;

    /**
     * @dev The caller account is not authorized to perform an operation.
     */
    error OwnableUnauthorizedAccount(address account);

    /**
     * @dev The owner is not a valid owner account. (eg. `address(0)`)
     */
    error OwnableInvalidOwner(address owner);

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

    /**
     * @dev Initializes the contract setting the address provided by the deployer as the initial owner.
     */
    constructor(address initialOwner) {
        if (initialOwner == address(0)) {
            revert OwnableInvalidOwner(address(0));
        }
        _transferOwnership(initialOwner);
    }

    /**
     * @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 {
        if (owner() != _msgSender()) {
            revert OwnableUnauthorizedAccount(_msgSender());
        }
    }

    /**
     * @dev Leaves the contract without owner. It will not be possible to call
     * `onlyOwner` functions. Can only be called by the current owner.
     *
     * NOTE: Renouncing ownership will leave the contract without an owner,
     * thereby disabling 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 {
        if (newOwner == address(0)) {
            revert OwnableInvalidOwner(address(0));
        }
        _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);
    }
}

File 6 of 6: Ownable2Step.sol
// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts (last updated v5.0.0) (access/Ownable2Step.sol)

pragma solidity ^0.8.20;

import {Ownable} from "./Ownable.sol";

/**
 * @dev Contract module which provides access control mechanism, where
 * there is an account (an owner) that can be granted exclusive access to
 * specific functions.
 *
 * The initial owner is specified at deployment time in the constructor for `Ownable`. This
 * can later be changed with {transferOwnership} and {acceptOwnership}.
 *
 * This module is used through inheritance. It will make available all functions
 * from parent (Ownable).
 */
abstract contract Ownable2Step is Ownable {
    address private _pendingOwner;

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

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

    /**
     * @dev Starts the ownership transfer of the contract to a new account. Replaces the pending transfer if there is one.
     * Can only be called by the current owner.
     */
    function transferOwnership(address newOwner) public virtual override onlyOwner {
        _pendingOwner = newOwner;
        emit OwnershipTransferStarted(owner(), newOwner);
    }

    /**
     * @dev Transfers ownership of the contract to a new account (`newOwner`) and deletes any pending owner.
     * Internal function without access restriction.
     */
    function _transferOwnership(address newOwner) internal virtual override {
        delete _pendingOwner;
        super._transferOwnership(newOwner);
    }

    /**
     * @dev The new owner accepts the ownership transfer.
     */
    function acceptOwnership() public virtual {
        address sender = _msgSender();
        if (pendingOwner() != sender) {
            revert OwnableUnauthorizedAccount(sender);
        }
        _transferOwnership(sender);
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"address","name":"_owner","type":"address"},{"internalType":"uint256","name":"_totalSupply","type":"uint256"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"name":"AlreadyExists","type":"error"},{"inputs":[],"name":"InvalidOwner","type":"error"},{"inputs":[],"name":"InvalidRecipient","type":"error"},{"inputs":[],"name":"InvalidSender","type":"error"},{"inputs":[],"name":"NotFound","type":"error"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"OwnableInvalidOwner","type":"error"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"OwnableUnauthorizedAccount","type":"error"},{"inputs":[],"name":"Unauthorized","type":"error"},{"inputs":[],"name":"UnsafeRecipient","type":"error"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"operator","type":"address"},{"indexed":false,"internalType":"bool","name":"approved","type":"bool"}],"name":"ApprovalForAll","type":"event"},{"anonymous":true,"inputs":[{"indexed":true,"internalType":"bytes32","name":"topic0","type":"bytes32"},{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"tokens","type":"uint256"}],"name":"ERC20Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":true,"internalType":"uint256","name":"id","type":"uint256"}],"name":"ERC721Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferStarted","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":true,"internalType":"uint256","name":"id","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"acceptOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amountOrId","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"getApproved","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"getLipColor","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"getSkinColor","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"}],"name":"isApprovedForAll","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"minted","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"id","type":"uint256"}],"name":"ownerOf","outputs":[{"internalType":"address","name":"owner","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pendingOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"id","type":"uint256"}],"name":"safeTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"id","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"safeTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"bool","name":"approved","type":"bool"}],"name":"setApprovalForAll","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"target","type":"address"},{"internalType":"bool","name":"state","type":"bool"}],"name":"setWhitelist","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"tokenURI","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":"amountOrId","type":"uint256"}],"name":"transferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"whitelist","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"}]

60c0604052604051806102c001604052806040518060400160405280600781526020017f236536393034650000000000000000000000000000000000000000000000000081525081526020016040518060400160405280600781526020017f236662623935340000000000000000000000000000000000000000000000000081525081526020016040518060400160405280600781526020017f233638393334410000000000000000000000000000000000000000000000000081525081526020016040518060400160405280600781526020017f233030666633330000000000000000000000000000000000000000000000000081525081526020016040518060400160405280600781526020017f236132613934370000000000000000000000000000000000000000000000000081525081526020016040518060400160405280600781526020017f236435653034620000000000000000000000000000000000000000000000000081525081526020016040518060400160405280600781526020017f236662666638360000000000000000000000000000000000000000000000000081525081526020016040518060400160405280600781526020017f233136356134630000000000000000000000000000000000000000000000000081525081526020016040518060400160405280600781526020017f233233393036330000000000000000000000000000000000000000000000000081525081526020016040518060400160405280600781526020017f233165626337330000000000000000000000000000000000000000000000000081525081526020016040518060400160405280600781526020017f233931646236390000000000000000000000000000000000000000000000000081525081526020016040518060400160405280600781526020017f236364646636630000000000000000000000000000000000000000000000000081525081526020016040518060400160405280600781526020017f233030373732320000000000000000000000000000000000000000000000000081525081526020016040518060400160405280600781526020017f233232656566660000000000000000000000000000000000000000000000000081525081526020016040518060400160405280600781526020017f233534376536340000000000000000000000000000000000000000000000000081525081526020016040518060400160405280600781526020017f233932613938340000000000000000000000000000000000000000000000000081525081526020016040518060400160405280600781526020017f236232626139300000000000000000000000000000000000000000000000000081525081526020016040518060400160405280600781526020017f233062356536350000000000000000000000000000000000000000000000000081525081526020016040518060400160405280600781526020017f233062386138660000000000000000000000000000000000000000000000000081525081526020016040518060400160405280600781526020017f233065616639620000000000000000000000000000000000000000000000000081525081526020016040518060400160405280600781526020017f233330653162390000000000000000000000000000000000000000000000000081525081526020016040518060400160405280600781526020017f2338666638653200000000000000000000000000000000000000000000000000815250815250600d9060166200053292919062000c3b565b506040518061018001604052806040518060400160405280600781526020017f236233333833310000000000000000000000000000000000000000000000000081525081526020016040518060400160405280600781526020017f236561346633360000000000000000000000000000000000000000000000000081525081526020016040518060400160405280600781526020017f236635376434610000000000000000000000000000000000000000000000000081525081526020016040518060400160405280600781526020017f236165323333340000000000000000000000000000000000000000000000000081525081526020016040518060400160405280600781526020017f236538336233620000000000000000000000000000000000000000000000000081525081526020016040518060400160405280600781526020017f236132346236660000000000000000000000000000000000000000000000000081525081526020016040518060400160405280600781526020017f236366363537660000000000000000000000000000000000000000000000000081525081526020016040518060400160405280600781526020017f236564383039390000000000000000000000000000000000000000000000000081525081526020016040518060400160405280600781526020017f233833316335640000000000000000000000000000000000000000000000000081525081526020016040518060400160405280600781526020017f236333323435340000000000000000000000000000000000000000000000000081525081526020016040518060400160405280600781526020017f236630346637380000000000000000000000000000000000000000000000000081525081526020016040518060400160405280600781526020017f2366363831383100000000000000000000000000000000000000000000000000815250815250600e90600c6200081392919062000c99565b5034801562000820575f80fd5b5060405162004e5938038062004e59833981810160405281019062000846919062000e1b565b6040518060400160405280601181526020017f4f6e436861696e20476f6f7365203430340000000000000000000000000000008152506040518060400160405280600681526020017f4f4347343034000000000000000000000000000000000000000000000000000081525060128385805f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036200092a575f6040517f1e4fbdf700000000000000000000000000000000000000000000000000000000815260040162000921919062000e71565b60405180910390fd5b6200093b8162000a0a60201b60201c565b5084600290816200094d9190620010e7565b5083600390816200095f9190620010e7565b508260ff1660808160ff1681525050608051600a6200097f919062001354565b826200098c9190620013a4565b60a081815250505050505050670de0b6b3a764000081620009ae9190620013a4565b60055f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f208190555062000a0282600162000a4260201b60201c565b5050620013ee565b60015f6101000a81549073ffffffffffffffffffffffffffffffffffffffff021916905562000a3f8162000aaa60201b60201c565b50565b62000a5262000b6b60201b60201c565b80600c5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505050565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050815f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b62000b7b62000c0d60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1662000ba162000c1460201b60201c565b73ffffffffffffffffffffffffffffffffffffffff161462000c0b5762000bcd62000c0d60201b60201c565b6040517f118cdaa700000000000000000000000000000000000000000000000000000000815260040162000c02919062000e71565b60405180910390fd5b565b5f33905090565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b828054828255905f5260205f2090810192821562000c86579160200282015b8281111562000c8557825182908162000c749190620010e7565b509160200191906001019062000c5a565b5b50905062000c95919062000cf7565b5090565b828054828255905f5260205f2090810192821562000ce4579160200282015b8281111562000ce357825182908162000cd29190620010e7565b509160200191906001019062000cb8565b5b50905062000cf3919062000cf7565b5090565b5b8082111562000d1a575f818162000d10919062000d1e565b5060010162000cf8565b5090565b50805462000d2c9062000ef0565b5f825580601f1062000d3f575062000d5e565b601f0160209004905f5260205f209081019062000d5d919062000d61565b5b50565b5b8082111562000d7a575f815f90555060010162000d62565b5090565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f62000dad8262000d82565b9050919050565b62000dbf8162000da1565b811462000dca575f80fd5b50565b5f8151905062000ddd8162000db4565b92915050565b5f819050919050565b62000df78162000de3565b811462000e02575f80fd5b50565b5f8151905062000e158162000dec565b92915050565b5f806040838503121562000e345762000e3362000d7e565b5b5f62000e438582860162000dcd565b925050602062000e568582860162000e05565b9150509250929050565b62000e6b8162000da1565b82525050565b5f60208201905062000e865f83018462000e60565b92915050565b5f81519050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f600282049050600182168062000f0857607f821691505b60208210810362000f1e5762000f1d62000ec3565b5b50919050565b5f819050815f5260205f209050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f6008830262000f827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8262000f45565b62000f8e868362000f45565b95508019841693508086168417925050509392505050565b5f819050919050565b5f62000fcf62000fc962000fc38462000de3565b62000fa6565b62000de3565b9050919050565b5f819050919050565b62000fea8362000faf565b6200100262000ff98262000fd6565b84845462000f51565b825550505050565b5f90565b620010186200100a565b6200102581848462000fdf565b505050565b5b818110156200104c57620010405f826200100e565b6001810190506200102b565b5050565b601f8211156200109b57620010658162000f24565b620010708462000f36565b8101602085101562001080578190505b620010986200108f8562000f36565b8301826200102a565b50505b505050565b5f82821c905092915050565b5f620010bd5f1984600802620010a0565b1980831691505092915050565b5f620010d78383620010ac565b9150826002028217905092915050565b620010f28262000e8c565b67ffffffffffffffff8111156200110e576200110d62000e96565b5b6200111a825462000ef0565b6200112782828562001050565b5f60209050601f8311600181146200115d575f841562001148578287015190505b620011548582620010ca565b865550620011c3565b601f1984166200116d8662000f24565b5f5b8281101562001196578489015182556001820191506020850194506020810190506200116f565b86831015620011b65784890151620011b2601f891682620010ac565b8355505b6001600288020188555050505b505050505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f8160011c9050919050565b5f808291508390505b600185111562001255578086048111156200122d576200122c620011cb565b5b60018516156200123d5780820291505b80810290506200124d85620011f8565b94506200120d565b94509492505050565b5f826200126f576001905062001341565b816200127e575f905062001341565b8160018114620012975760028114620012a257620012d8565b600191505062001341565b60ff841115620012b757620012b6620011cb565b5b8360020a915084821115620012d157620012d0620011cb565b5b5062001341565b5060208310610133831016604e8410600b8410161715620013125782820a9050838111156200130c576200130b620011cb565b5b62001341565b62001321848484600162001204565b925090508184048111156200133b576200133a620011cb565b5b81810290505b9392505050565b5f60ff82169050919050565b5f620013608262000de3565b91506200136d8362001348565b92506200139c7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff84846200125e565b905092915050565b5f620013b08262000de3565b9150620013bd8362000de3565b9250828202620013cd8162000de3565b91508282048414831517620013e757620013e6620011cb565b5b5092915050565b60805160a051613a42620014175f395f6108d301525f81816110ed0152611ab50152613a425ff3fe608060405234801561000f575f80fd5b506004361061018c575f3560e01c806379ba5097116100dc578063b88d4fde11610095578063dd62ed3e1161006f578063dd62ed3e14610494578063e30c3978146104c4578063e985e9c5146104e2578063f2fde38b146105125761018c565b8063b88d4fde14610418578063c87b56dd14610434578063d2c5f761146104645761018c565b806379ba5097146103565780638da5cb5b1461036057806395d89b411461037e5780639b19251a1461039c578063a22cb465146103cc578063a9059cbb146103e85761018c565b806342842e0e116101495780636352211e116101235780636352211e146102bc57806370a08231146102ec578063715018a61461031c57806373075aff146103265761018c565b806342842e0e146102665780634f02c4201461028257806353d6fd59146102a05761018c565b806306fdde0314610190578063081812fc146101ae578063095ea7b3146101de57806318160ddd1461020e57806323b872dd1461022c578063313ce56714610248575b5f80fd5b61019861052e565b6040516101a591906127e1565b60405180910390f35b6101c860048036038101906101c3919061283c565b6105ba565b6040516101d591906128a6565b60405180910390f35b6101f860048036038101906101f391906128e9565b6105ea565b6040516102059190612941565b60405180910390f35b6102166108d1565b6040516102239190612969565b60405180910390f35b61024660048036038101906102419190612982565b6108f5565b005b6102506110eb565b60405161025d91906129ed565b60405180910390f35b610280600480360381019061027b9190612982565b61110f565b005b61028a61123e565b6040516102979190612969565b60405180910390f35b6102ba60048036038101906102b59190612a30565b611244565b005b6102d660048036038101906102d1919061283c565b6112a4565b6040516102e391906128a6565b60405180910390f35b61030660048036038101906103019190612a6e565b611342565b6040516103139190612969565b60405180910390f35b610324611357565b005b610340600480360381019061033b919061283c565b61136a565b60405161034d91906127e1565b60405180910390f35b61035e611459565b005b6103686114e7565b60405161037591906128a6565b60405180910390f35b61038661150e565b60405161039391906127e1565b60405180910390f35b6103b660048036038101906103b19190612a6e565b61159a565b6040516103c39190612941565b60405180910390f35b6103e660048036038101906103e19190612a30565b6115b7565b005b61040260048036038101906103fd91906128e9565b6116af565b60405161040f9190612941565b60405180910390f35b610432600480360381019061042d9190612afa565b6116c3565b005b61044e6004803603810190610449919061283c565b6117f8565b60405161045b91906127e1565b60405180910390f35b61047e6004803603810190610479919061283c565b6118a5565b60405161048b91906127e1565b60405180910390f35b6104ae60048036038101906104a99190612b7e565b611994565b6040516104bb9190612969565b60405180910390f35b6104cc6119b4565b6040516104d991906128a6565b60405180910390f35b6104fc60048036038101906104f79190612b7e565b6119dc565b6040516105099190612941565b60405180910390f35b61052c60048036038101906105279190612a6e565b611a06565b005b6002805461053b90612be9565b80601f016020809104026020016040519081016040528092919081815260200182805461056790612be9565b80156105b25780601f10610589576101008083540402835291602001916105b2565b820191905f5260205f20905b81548152906001019060200180831161059557829003601f168201915b505050505081565b6007602052805f5260405f205f915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f60045482111580156105fc57505f82115b156107e4575f60095f8481526020019081526020015f205f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141580156106f3575060085f8273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b1561072a576040517f82b4290000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8360075f8581526020019081526020015f205f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508373ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925856040516107d69190612969565b60405180910390a3506108c7565b8160065f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040516108be9190612969565b60405180910390a35b6001905092915050565b7f000000000000000000000000000000000000000000000000000000000000000081565b6004548111610fac5760095f8281526020019081526020015f205f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614610993576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036109f8576040517f9c8d2cd200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614158015610ab6575060085f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b8015610b1e575060075f8281526020019081526020015f205f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614155b15610b55576040517f82b4290000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610b5d611ab2565b60055f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f828254610ba89190612c46565b92505081905550610bb7611ab2565b60055f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825401925050819055508160095f8381526020019081526020015f205f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060075f8281526020019081526020015f205f6101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690555f600a5f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f206001600a5f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2080549050610d0d9190612c46565b81548110610d1e57610d1d612c79565b5b905f5260205f200154905080600a5f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20600b5f8581526020019081526020015f205481548110610d8a57610d89612c79565b5b905f5260205f200181905550600a5f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20805480610de357610de2612ca6565b5b600190038181905f5260205f20015f90559055600b5f8381526020019081526020015f2054600b5f8381526020019081526020015f2081905550600a5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2082908060018154018082558091505060019003905f5260205f20015f90919091909150556001600a5f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2080549050610ecb9190612c46565b600b5f8481526020019081526020015f2081905550818373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a48273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff166040518060600160405280602181526020016139ec6021913980519060200120610f91611ab2565b604051610f9e9190612969565b60405180910390a3506110e6565b5f60065f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205490507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146110d857818161105b9190612c46565b60065f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055505b6110e3848484611ae5565b50505b505050565b7f000000000000000000000000000000000000000000000000000000000000000081565b61111a8383836108f5565b5f8273ffffffffffffffffffffffffffffffffffffffff163b14158015611202575063150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168273ffffffffffffffffffffffffffffffffffffffff1663150b7a023386856040518463ffffffff1660e01b81526004016111a093929190612d06565b6020604051808303815f875af11580156111bc573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906111e09190612da3565b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614155b15611239576040517f3da6393100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b505050565b60045481565b61124c611e28565b80600c5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505050565b5f60095f8381526020019081526020015f205f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690505f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361133d576040517fc5723b5100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b919050565b6005602052805f5260405f205f915090505481565b61135f611e28565b6113685f611eaf565b565b60605f61139d61137984611edf565b6040516020016113899190612e52565b604051602081830303815290604052612038565b9050600d8080549050826113b19190612ea0565b815481106113c2576113c1612c79565b5b905f5260205f200180546113d590612be9565b80601f016020809104026020016040519081016040528092919081815260200182805461140190612be9565b801561144c5780601f106114235761010080835404028352916020019161144c565b820191905f5260205f20905b81548152906001019060200180831161142f57829003601f168201915b5050505050915050919050565b5f611462612069565b90508073ffffffffffffffffffffffffffffffffffffffff166114836119b4565b73ffffffffffffffffffffffffffffffffffffffff16146114db57806040517f118cdaa70000000000000000000000000000000000000000000000000000000081526004016114d291906128a6565b60405180910390fd5b6114e481611eaf565b50565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6003805461151b90612be9565b80601f016020809104026020016040519081016040528092919081815260200182805461154790612be9565b80156115925780601f1061156957610100808354040283529160200191611592565b820191905f5260205f20905b81548152906001019060200180831161157557829003601f168201915b505050505081565b600c602052805f5260405f205f915054906101000a900460ff1681565b8060085f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31836040516116a39190612941565b60405180910390a35050565b5f6116bb338484611ae5565b905092915050565b6116ce8585856108f5565b5f8473ffffffffffffffffffffffffffffffffffffffff163b141580156117ba575063150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168473ffffffffffffffffffffffffffffffffffffffff1663150b7a0233888787876040518663ffffffff1660e01b8152600401611758959493929190612f0a565b6020604051808303815f875af1158015611774573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906117989190612da3565b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614155b156117f1576040517f3da6393100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5050505050565b60605f6118048361136a565b90505f611810846118a5565b90505f828384848560405160200161182c9594939291906133b6565b60405160208183030381529060405290505f61187861184a87611edf565b61185384612070565b6040516020016118649291906135ea565b604051602081830303815290604052612070565b90508060405160200161188b9190613678565b604051602081830303815290604052945050505050919050565b60605f6118d86118b484611edf565b6040516020016118c491906136e3565b604051602081830303815290604052612038565b9050600e8080549050826118ec9190612ea0565b815481106118fd576118fc612c79565b5b905f5260205f2001805461191090612be9565b80601f016020809104026020016040519081016040528092919081815260200182805461193c90612be9565b80156119875780601f1061195e57610100808354040283529160200191611987565b820191905f5260205f20905b81548152906001019060200180831161196a57829003601f168201915b5050505050915050919050565b6006602052815f5260405f20602052805f5260405f205f91509150505481565b5f60015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6008602052815f5260405f20602052805f5260405f205f915091509054906101000a900460ff1681565b611a0e611e28565b8060015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16611a6d6114e7565b73ffffffffffffffffffffffffffffffffffffffff167f38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e2270060405160405180910390a350565b5f7f0000000000000000000000000000000000000000000000000000000000000000600a611ae09190613833565b905090565b5f80611aef611ab2565b90505f60055f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205490505f60055f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205490508460055f8973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f828254611bbf9190612c46565b925050819055508460055f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8282540192505081905550600c5f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16611ce3575f8360055f8a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054611ca8919061387d565b8484611cb4919061387d565b611cbe9190612c46565b90505f5b81811015611ce057611cd3896121cf565b8080600101915050611cc2565b50505b600c5f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16611db6575f8382611d3e919061387d565b8460055f8a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054611d87919061387d565b611d919190612c46565b90505f5b81811015611db357611da688612414565b8080600101915050611d95565b50505b8573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff166040518060600160405280602181526020016139ec602191398051906020012087604051611e129190612969565b60405180910390a3600193505050509392505050565b611e30612069565b73ffffffffffffffffffffffffffffffffffffffff16611e4e6114e7565b73ffffffffffffffffffffffffffffffffffffffff1614611ead57611e71612069565b6040517f118cdaa7000000000000000000000000000000000000000000000000000000008152600401611ea491906128a6565b60405180910390fd5b565b60015f6101000a81549073ffffffffffffffffffffffffffffffffffffffff0219169055611edc81612696565b50565b60605f8203611f25576040518060400160405280600181526020017f30000000000000000000000000000000000000000000000000000000000000008152509050612033565b5f8290505f5b5f8214611f54578080611f3d906138ad565b915050600a82611f4d919061387d565b9150611f2b565b5f8167ffffffffffffffff811115611f6f57611f6e6138f4565b5b6040519080825280601f01601f191660200182016040528015611fa15781602001600182028036833780820191505090505b5090505b5f851461202c57600182611fb99190612c46565b9150600a85611fc89190612ea0565b6030611fd49190613921565b60f81b818381518110611fea57611fe9612c79565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191690815f1a905350600a85612025919061387d565b9450611fa5565b8093505050505b919050565b5f8160405160200161204a9190613954565b604051602081830303815290604052805190602001205f1c9050919050565b5f33905090565b60605f8251036120905760405180602001604052805f81525090506121ca565b5f6040518060600160405280604081526020016139ac6040913990505f6003600285516120bd9190613921565b6120c7919061387d565b60046120d3919061396a565b67ffffffffffffffff8111156120ec576120eb6138f4565b5b6040519080825280601f01601f19166020018201604052801561211e5781602001600182028036833780820191505090505b509050600182016020820185865187015b8082101561218a576003820191508151603f8160121c168501518453600184019350603f81600c1c168501518453600184019350603f8160061c168501518453600184019350603f811685015184536001840193505061212f565b50506003865106600181146121a657600281146121b9576121c1565b603d6001830353603d60028303536121c1565b603d60018303535b50505080925050505b919050565b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603612234576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f600a5f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f206001600a5f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20805490506122bf9190612c46565b815481106122d0576122cf612c79565b5b905f5260205f2001549050600a5f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2080548061232857612327612ca6565b5b600190038181905f5260205f20015f90559055600b5f8281526020019081526020015f205f905560095f8281526020019081526020015f205f6101000a81549073ffffffffffffffffffffffffffffffffffffffff021916905560075f8281526020019081526020015f205f6101000a81549073ffffffffffffffffffffffffffffffffffffffff0219169055805f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a45050565b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603612479576040517f9c8d2cd200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60045f81548092919060010191905055505f60045490505f73ffffffffffffffffffffffffffffffffffffffff1660095f8381526020019081526020015f205f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612525576040517f23369fa600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8160095f8381526020019081526020015f205f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600a5f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081908060018154018082558091505060019003905f5260205f20015f90919091909150556001600a5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20805490506126229190612c46565b600b5f8381526020019081526020015f2081905550808273ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a45050565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050815f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b5f81519050919050565b5f82825260208201905092915050565b5f5b8381101561278e578082015181840152602081019050612773565b5f8484015250505050565b5f601f19601f8301169050919050565b5f6127b382612757565b6127bd8185612761565b93506127cd818560208601612771565b6127d681612799565b840191505092915050565b5f6020820190508181035f8301526127f981846127a9565b905092915050565b5f80fd5b5f80fd5b5f819050919050565b61281b81612809565b8114612825575f80fd5b50565b5f8135905061283681612812565b92915050565b5f6020828403121561285157612850612801565b5b5f61285e84828501612828565b91505092915050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f61289082612867565b9050919050565b6128a081612886565b82525050565b5f6020820190506128b95f830184612897565b92915050565b6128c881612886565b81146128d2575f80fd5b50565b5f813590506128e3816128bf565b92915050565b5f80604083850312156128ff576128fe612801565b5b5f61290c858286016128d5565b925050602061291d85828601612828565b9150509250929050565b5f8115159050919050565b61293b81612927565b82525050565b5f6020820190506129545f830184612932565b92915050565b61296381612809565b82525050565b5f60208201905061297c5f83018461295a565b92915050565b5f805f6060848603121561299957612998612801565b5b5f6129a6868287016128d5565b93505060206129b7868287016128d5565b92505060406129c886828701612828565b9150509250925092565b5f60ff82169050919050565b6129e7816129d2565b82525050565b5f602082019050612a005f8301846129de565b92915050565b612a0f81612927565b8114612a19575f80fd5b50565b5f81359050612a2a81612a06565b92915050565b5f8060408385031215612a4657612a45612801565b5b5f612a53858286016128d5565b9250506020612a6485828601612a1c565b9150509250929050565b5f60208284031215612a8357612a82612801565b5b5f612a90848285016128d5565b91505092915050565b5f80fd5b5f80fd5b5f80fd5b5f8083601f840112612aba57612ab9612a99565b5b8235905067ffffffffffffffff811115612ad757612ad6612a9d565b5b602083019150836001820283011115612af357612af2612aa1565b5b9250929050565b5f805f805f60808688031215612b1357612b12612801565b5b5f612b20888289016128d5565b9550506020612b31888289016128d5565b9450506040612b4288828901612828565b935050606086013567ffffffffffffffff811115612b6357612b62612805565b5b612b6f88828901612aa5565b92509250509295509295909350565b5f8060408385031215612b9457612b93612801565b5b5f612ba1858286016128d5565b9250506020612bb2858286016128d5565b9150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f6002820490506001821680612c0057607f821691505b602082108103612c1357612c12612bbc565b5b50919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f612c5082612809565b9150612c5b83612809565b9250828203905081811115612c7357612c72612c19565b5b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603160045260245ffd5b5f82825260208201905092915050565b50565b5f612cf15f83612cd3565b9150612cfc82612ce3565b5f82019050919050565b5f608082019050612d195f830186612897565b612d266020830185612897565b612d33604083018461295a565b8181036060830152612d4481612ce6565b9050949350505050565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b612d8281612d4e565b8114612d8c575f80fd5b50565b5f81519050612d9d81612d79565b92915050565b5f60208284031215612db857612db7612801565b5b5f612dc584828501612d8f565b91505092915050565b5f81905092915050565b7f534b494e434f4c4f5200000000000000000000000000000000000000000000005f82015250565b5f612e0c600983612dce565b9150612e1782612dd8565b600982019050919050565b5f612e2c82612757565b612e368185612dce565b9350612e46818560208601612771565b80840191505092915050565b5f612e5c82612e00565b9150612e688284612e22565b915081905092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f612eaa82612809565b9150612eb583612809565b925082612ec557612ec4612e73565b5b828206905092915050565b828183375f83830152505050565b5f612ee98385612cd3565b9350612ef6838584612ed0565b612eff83612799565b840190509392505050565b5f608082019050612f1d5f830188612897565b612f2a6020830187612897565b612f37604083018661295a565b8181036060830152612f4a818486612ede565b90509695505050505050565b7f3c73766720786d6c6e733d22687474703a2f2f7777772e77332e6f72672f32305f8201527f30302f737667222077696474683d2235393222206865696768743d223539322260208201527f2076696577426f783d223020302035393220353932222066696c6c3d226e6f6e60408201527f65223e0000000000000000000000000000000000000000000000000000000000606082015250565b5f612ffc606383612dce565b915061300782612f56565b606382019050919050565b7f3c726563742077696474683d2232333622206865696768743d223431342220785f8201527f3d223137372220793d22313138222066696c6c3d220000000000000000000000602082015250565b5f61306c603583612dce565b915061307782613012565b603582019050919050565b7f222f3e00000000000000000000000000000000000000000000000000000000005f82015250565b5f6130b6600383612dce565b91506130c182613082565b600382019050919050565b7f3c726563742077696474683d2233353522206865696768743d223239362220785f8201527f3d223131382220793d22313737222066696c6c3d220000000000000000000000602082015250565b5f613126603583612dce565b9150613131826130cc565b603582019050919050565b7f3c726563742077696474683d2231313822206865696768743d223131382220785f8201527f3d223233362220793d22343733222066696c6c3d220000000000000000000000602082015250565b5f613196603583612dce565b91506131a18261313c565b603582019050919050565b7f3c726563742077696474683d2234373322206865696768743d2235392220783d5f8201527f2235392220793d22343134222066696c6c3d2200000000000000000000000000602082015250565b5f613206603383612dce565b9150613211826131ac565b603382019050919050565b7f3c726563742077696474683d2232333622206865696768743d223131382220785f8201527f3d223137372220793d22333535222066696c6c3d220000000000000000000000602082015250565b5f613276603583612dce565b91506132818261321c565b603582019050919050565b7f3c726563742077696474683d22353922206865696768743d2235392220783d225f8201527f3137372220793d22323336222066696c6c3d2223303030303030222f3e000000602082015250565b5f6132e6603d83612dce565b91506132f18261328c565b603d82019050919050565b7f3c726563742077696474683d22353922206865696768743d2235392220783d225f8201527f3335352220793d22323336222066696c6c3d2223303030303030222f3e000000602082015250565b5f613356603d83612dce565b9150613361826132fc565b603d82019050919050565b7f3c2f7376673e00000000000000000000000000000000000000000000000000005f82015250565b5f6133a0600683612dce565b91506133ab8261336c565b600682019050919050565b5f6133c082612ff0565b91506133cb82613060565b91506133d78288612e22565b91506133e2826130aa565b91506133ed8261311a565b91506133f98287612e22565b9150613404826130aa565b915061340f8261318a565b915061341b8286612e22565b9150613426826130aa565b9150613431826131fa565b915061343d8285612e22565b9150613448826130aa565b91506134538261326a565b915061345f8284612e22565b915061346a826130aa565b9150613475826132da565b91506134808261334a565b915061348b82613394565b91508190509695505050505050565b7f7b226e616d65223a20224f6e20436861696e20476f6f736520230000000000005f82015250565b5f6134ce601a83612dce565b91506134d98261349a565b601a82019050919050565b7f222c20226465736372697074696f6e223a202238382072616e646f6d6c7920675f8201527f656e65726174656420506978656c20476f6f7365732073746f72656420656e7460208201527f6972656c79206f6e20636861696e2e222c2022696d616765223a20226461746160408201527f3a696d6167652f7376672b786d6c3b6261736536342c00000000000000000000606082015250565b5f61358a607683612dce565b9150613595826134e4565b607682019050919050565b7f227d0000000000000000000000000000000000000000000000000000000000005f82015250565b5f6135d4600283612dce565b91506135df826135a0565b600282019050919050565b5f6135f4826134c2565b91506136008285612e22565b915061360b8261357e565b91506136178284612e22565b9150613622826135c8565b91508190509392505050565b7f646174613a6170706c69636174696f6e2f6a736f6e3b6261736536342c0000005f82015250565b5f613662601d83612dce565b915061366d8261362e565b601d82019050919050565b5f61368282613656565b915061368e8284612e22565b915081905092915050565b7f4c4950434f4c4f520000000000000000000000000000000000000000000000005f82015250565b5f6136cd600883612dce565b91506136d882613699565b600882019050919050565b5f6136ed826136c1565b91506136f98284612e22565b915081905092915050565b5f8160011c9050919050565b5f808291508390505b60018511156137595780860481111561373557613734612c19565b5b60018516156137445780820291505b808102905061375285613704565b9450613719565b94509492505050565b5f82613771576001905061382c565b8161377e575f905061382c565b8160018114613794576002811461379e576137cd565b600191505061382c565b60ff8411156137b0576137af612c19565b5b8360020a9150848211156137c7576137c6612c19565b5b5061382c565b5060208310610133831016604e8410600b84101617156138025782820a9050838111156137fd576137fc612c19565b5b61382c565b61380f8484846001613710565b9250905081840481111561382657613825612c19565b5b81810290505b9392505050565b5f61383d82612809565b9150613848836129d2565b92506138757fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484613762565b905092915050565b5f61388782612809565b915061389283612809565b9250826138a2576138a1612e73565b5b828204905092915050565b5f6138b782612809565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036138e9576138e8612c19565b5b600182019050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b5f61392b82612809565b915061393683612809565b925082820190508082111561394e5761394d612c19565b5b92915050565b5f61395f8284612e22565b915081905092915050565b5f61397482612809565b915061397f83612809565b925082820261398d81612809565b915082820484148315176139a4576139a3612c19565b5b509291505056fe4142434445464748494a4b4c4d4e4f505152535455565758595a6162636465666768696a6b6c6d6e6f707172737475767778797a303132333435363738392b2f5472616e7366657228616464726573732c616464726573732c75696e7432353629a2646970667358221220194b1d5f50ba8ae119902c71aa379d3c7912a52f5a464054dffa87e2dc8d268c64736f6c634300081800330000000000000000000000009588ae196e36c7e376a3786042cd0272549a77e50000000000000000000000000000000000000000000000000000000000000058

Deployed Bytecode

0x608060405234801561000f575f80fd5b506004361061018c575f3560e01c806379ba5097116100dc578063b88d4fde11610095578063dd62ed3e1161006f578063dd62ed3e14610494578063e30c3978146104c4578063e985e9c5146104e2578063f2fde38b146105125761018c565b8063b88d4fde14610418578063c87b56dd14610434578063d2c5f761146104645761018c565b806379ba5097146103565780638da5cb5b1461036057806395d89b411461037e5780639b19251a1461039c578063a22cb465146103cc578063a9059cbb146103e85761018c565b806342842e0e116101495780636352211e116101235780636352211e146102bc57806370a08231146102ec578063715018a61461031c57806373075aff146103265761018c565b806342842e0e146102665780634f02c4201461028257806353d6fd59146102a05761018c565b806306fdde0314610190578063081812fc146101ae578063095ea7b3146101de57806318160ddd1461020e57806323b872dd1461022c578063313ce56714610248575b5f80fd5b61019861052e565b6040516101a591906127e1565b60405180910390f35b6101c860048036038101906101c3919061283c565b6105ba565b6040516101d591906128a6565b60405180910390f35b6101f860048036038101906101f391906128e9565b6105ea565b6040516102059190612941565b60405180910390f35b6102166108d1565b6040516102239190612969565b60405180910390f35b61024660048036038101906102419190612982565b6108f5565b005b6102506110eb565b60405161025d91906129ed565b60405180910390f35b610280600480360381019061027b9190612982565b61110f565b005b61028a61123e565b6040516102979190612969565b60405180910390f35b6102ba60048036038101906102b59190612a30565b611244565b005b6102d660048036038101906102d1919061283c565b6112a4565b6040516102e391906128a6565b60405180910390f35b61030660048036038101906103019190612a6e565b611342565b6040516103139190612969565b60405180910390f35b610324611357565b005b610340600480360381019061033b919061283c565b61136a565b60405161034d91906127e1565b60405180910390f35b61035e611459565b005b6103686114e7565b60405161037591906128a6565b60405180910390f35b61038661150e565b60405161039391906127e1565b60405180910390f35b6103b660048036038101906103b19190612a6e565b61159a565b6040516103c39190612941565b60405180910390f35b6103e660048036038101906103e19190612a30565b6115b7565b005b61040260048036038101906103fd91906128e9565b6116af565b60405161040f9190612941565b60405180910390f35b610432600480360381019061042d9190612afa565b6116c3565b005b61044e6004803603810190610449919061283c565b6117f8565b60405161045b91906127e1565b60405180910390f35b61047e6004803603810190610479919061283c565b6118a5565b60405161048b91906127e1565b60405180910390f35b6104ae60048036038101906104a99190612b7e565b611994565b6040516104bb9190612969565b60405180910390f35b6104cc6119b4565b6040516104d991906128a6565b60405180910390f35b6104fc60048036038101906104f79190612b7e565b6119dc565b6040516105099190612941565b60405180910390f35b61052c60048036038101906105279190612a6e565b611a06565b005b6002805461053b90612be9565b80601f016020809104026020016040519081016040528092919081815260200182805461056790612be9565b80156105b25780601f10610589576101008083540402835291602001916105b2565b820191905f5260205f20905b81548152906001019060200180831161059557829003601f168201915b505050505081565b6007602052805f5260405f205f915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f60045482111580156105fc57505f82115b156107e4575f60095f8481526020019081526020015f205f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141580156106f3575060085f8273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b1561072a576040517f82b4290000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8360075f8581526020019081526020015f205f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508373ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925856040516107d69190612969565b60405180910390a3506108c7565b8160065f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040516108be9190612969565b60405180910390a35b6001905092915050565b7f000000000000000000000000000000000000000000000004c53ecdc18a60000081565b6004548111610fac5760095f8281526020019081526020015f205f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614610993576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036109f8576040517f9c8d2cd200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614158015610ab6575060085f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b8015610b1e575060075f8281526020019081526020015f205f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614155b15610b55576040517f82b4290000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610b5d611ab2565b60055f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f828254610ba89190612c46565b92505081905550610bb7611ab2565b60055f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825401925050819055508160095f8381526020019081526020015f205f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060075f8281526020019081526020015f205f6101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690555f600a5f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f206001600a5f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2080549050610d0d9190612c46565b81548110610d1e57610d1d612c79565b5b905f5260205f200154905080600a5f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20600b5f8581526020019081526020015f205481548110610d8a57610d89612c79565b5b905f5260205f200181905550600a5f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20805480610de357610de2612ca6565b5b600190038181905f5260205f20015f90559055600b5f8381526020019081526020015f2054600b5f8381526020019081526020015f2081905550600a5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2082908060018154018082558091505060019003905f5260205f20015f90919091909150556001600a5f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2080549050610ecb9190612c46565b600b5f8481526020019081526020015f2081905550818373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a48273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff166040518060600160405280602181526020016139ec6021913980519060200120610f91611ab2565b604051610f9e9190612969565b60405180910390a3506110e6565b5f60065f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205490507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146110d857818161105b9190612c46565b60065f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055505b6110e3848484611ae5565b50505b505050565b7f000000000000000000000000000000000000000000000000000000000000001281565b61111a8383836108f5565b5f8273ffffffffffffffffffffffffffffffffffffffff163b14158015611202575063150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168273ffffffffffffffffffffffffffffffffffffffff1663150b7a023386856040518463ffffffff1660e01b81526004016111a093929190612d06565b6020604051808303815f875af11580156111bc573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906111e09190612da3565b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614155b15611239576040517f3da6393100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b505050565b60045481565b61124c611e28565b80600c5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505050565b5f60095f8381526020019081526020015f205f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690505f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361133d576040517fc5723b5100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b919050565b6005602052805f5260405f205f915090505481565b61135f611e28565b6113685f611eaf565b565b60605f61139d61137984611edf565b6040516020016113899190612e52565b604051602081830303815290604052612038565b9050600d8080549050826113b19190612ea0565b815481106113c2576113c1612c79565b5b905f5260205f200180546113d590612be9565b80601f016020809104026020016040519081016040528092919081815260200182805461140190612be9565b801561144c5780601f106114235761010080835404028352916020019161144c565b820191905f5260205f20905b81548152906001019060200180831161142f57829003601f168201915b5050505050915050919050565b5f611462612069565b90508073ffffffffffffffffffffffffffffffffffffffff166114836119b4565b73ffffffffffffffffffffffffffffffffffffffff16146114db57806040517f118cdaa70000000000000000000000000000000000000000000000000000000081526004016114d291906128a6565b60405180910390fd5b6114e481611eaf565b50565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6003805461151b90612be9565b80601f016020809104026020016040519081016040528092919081815260200182805461154790612be9565b80156115925780601f1061156957610100808354040283529160200191611592565b820191905f5260205f20905b81548152906001019060200180831161157557829003601f168201915b505050505081565b600c602052805f5260405f205f915054906101000a900460ff1681565b8060085f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31836040516116a39190612941565b60405180910390a35050565b5f6116bb338484611ae5565b905092915050565b6116ce8585856108f5565b5f8473ffffffffffffffffffffffffffffffffffffffff163b141580156117ba575063150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168473ffffffffffffffffffffffffffffffffffffffff1663150b7a0233888787876040518663ffffffff1660e01b8152600401611758959493929190612f0a565b6020604051808303815f875af1158015611774573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906117989190612da3565b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614155b156117f1576040517f3da6393100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5050505050565b60605f6118048361136a565b90505f611810846118a5565b90505f828384848560405160200161182c9594939291906133b6565b60405160208183030381529060405290505f61187861184a87611edf565b61185384612070565b6040516020016118649291906135ea565b604051602081830303815290604052612070565b90508060405160200161188b9190613678565b604051602081830303815290604052945050505050919050565b60605f6118d86118b484611edf565b6040516020016118c491906136e3565b604051602081830303815290604052612038565b9050600e8080549050826118ec9190612ea0565b815481106118fd576118fc612c79565b5b905f5260205f2001805461191090612be9565b80601f016020809104026020016040519081016040528092919081815260200182805461193c90612be9565b80156119875780601f1061195e57610100808354040283529160200191611987565b820191905f5260205f20905b81548152906001019060200180831161196a57829003601f168201915b5050505050915050919050565b6006602052815f5260405f20602052805f5260405f205f91509150505481565b5f60015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6008602052815f5260405f20602052805f5260405f205f915091509054906101000a900460ff1681565b611a0e611e28565b8060015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16611a6d6114e7565b73ffffffffffffffffffffffffffffffffffffffff167f38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e2270060405160405180910390a350565b5f7f0000000000000000000000000000000000000000000000000000000000000012600a611ae09190613833565b905090565b5f80611aef611ab2565b90505f60055f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205490505f60055f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205490508460055f8973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f828254611bbf9190612c46565b925050819055508460055f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8282540192505081905550600c5f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16611ce3575f8360055f8a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054611ca8919061387d565b8484611cb4919061387d565b611cbe9190612c46565b90505f5b81811015611ce057611cd3896121cf565b8080600101915050611cc2565b50505b600c5f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16611db6575f8382611d3e919061387d565b8460055f8a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054611d87919061387d565b611d919190612c46565b90505f5b81811015611db357611da688612414565b8080600101915050611d95565b50505b8573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff166040518060600160405280602181526020016139ec602191398051906020012087604051611e129190612969565b60405180910390a3600193505050509392505050565b611e30612069565b73ffffffffffffffffffffffffffffffffffffffff16611e4e6114e7565b73ffffffffffffffffffffffffffffffffffffffff1614611ead57611e71612069565b6040517f118cdaa7000000000000000000000000000000000000000000000000000000008152600401611ea491906128a6565b60405180910390fd5b565b60015f6101000a81549073ffffffffffffffffffffffffffffffffffffffff0219169055611edc81612696565b50565b60605f8203611f25576040518060400160405280600181526020017f30000000000000000000000000000000000000000000000000000000000000008152509050612033565b5f8290505f5b5f8214611f54578080611f3d906138ad565b915050600a82611f4d919061387d565b9150611f2b565b5f8167ffffffffffffffff811115611f6f57611f6e6138f4565b5b6040519080825280601f01601f191660200182016040528015611fa15781602001600182028036833780820191505090505b5090505b5f851461202c57600182611fb99190612c46565b9150600a85611fc89190612ea0565b6030611fd49190613921565b60f81b818381518110611fea57611fe9612c79565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191690815f1a905350600a85612025919061387d565b9450611fa5565b8093505050505b919050565b5f8160405160200161204a9190613954565b604051602081830303815290604052805190602001205f1c9050919050565b5f33905090565b60605f8251036120905760405180602001604052805f81525090506121ca565b5f6040518060600160405280604081526020016139ac6040913990505f6003600285516120bd9190613921565b6120c7919061387d565b60046120d3919061396a565b67ffffffffffffffff8111156120ec576120eb6138f4565b5b6040519080825280601f01601f19166020018201604052801561211e5781602001600182028036833780820191505090505b509050600182016020820185865187015b8082101561218a576003820191508151603f8160121c168501518453600184019350603f81600c1c168501518453600184019350603f8160061c168501518453600184019350603f811685015184536001840193505061212f565b50506003865106600181146121a657600281146121b9576121c1565b603d6001830353603d60028303536121c1565b603d60018303535b50505080925050505b919050565b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603612234576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f600a5f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f206001600a5f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20805490506122bf9190612c46565b815481106122d0576122cf612c79565b5b905f5260205f2001549050600a5f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2080548061232857612327612ca6565b5b600190038181905f5260205f20015f90559055600b5f8281526020019081526020015f205f905560095f8281526020019081526020015f205f6101000a81549073ffffffffffffffffffffffffffffffffffffffff021916905560075f8281526020019081526020015f205f6101000a81549073ffffffffffffffffffffffffffffffffffffffff0219169055805f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a45050565b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603612479576040517f9c8d2cd200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60045f81548092919060010191905055505f60045490505f73ffffffffffffffffffffffffffffffffffffffff1660095f8381526020019081526020015f205f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612525576040517f23369fa600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8160095f8381526020019081526020015f205f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600a5f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081908060018154018082558091505060019003905f5260205f20015f90919091909150556001600a5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20805490506126229190612c46565b600b5f8381526020019081526020015f2081905550808273ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a45050565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050815f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b5f81519050919050565b5f82825260208201905092915050565b5f5b8381101561278e578082015181840152602081019050612773565b5f8484015250505050565b5f601f19601f8301169050919050565b5f6127b382612757565b6127bd8185612761565b93506127cd818560208601612771565b6127d681612799565b840191505092915050565b5f6020820190508181035f8301526127f981846127a9565b905092915050565b5f80fd5b5f80fd5b5f819050919050565b61281b81612809565b8114612825575f80fd5b50565b5f8135905061283681612812565b92915050565b5f6020828403121561285157612850612801565b5b5f61285e84828501612828565b91505092915050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f61289082612867565b9050919050565b6128a081612886565b82525050565b5f6020820190506128b95f830184612897565b92915050565b6128c881612886565b81146128d2575f80fd5b50565b5f813590506128e3816128bf565b92915050565b5f80604083850312156128ff576128fe612801565b5b5f61290c858286016128d5565b925050602061291d85828601612828565b9150509250929050565b5f8115159050919050565b61293b81612927565b82525050565b5f6020820190506129545f830184612932565b92915050565b61296381612809565b82525050565b5f60208201905061297c5f83018461295a565b92915050565b5f805f6060848603121561299957612998612801565b5b5f6129a6868287016128d5565b93505060206129b7868287016128d5565b92505060406129c886828701612828565b9150509250925092565b5f60ff82169050919050565b6129e7816129d2565b82525050565b5f602082019050612a005f8301846129de565b92915050565b612a0f81612927565b8114612a19575f80fd5b50565b5f81359050612a2a81612a06565b92915050565b5f8060408385031215612a4657612a45612801565b5b5f612a53858286016128d5565b9250506020612a6485828601612a1c565b9150509250929050565b5f60208284031215612a8357612a82612801565b5b5f612a90848285016128d5565b91505092915050565b5f80fd5b5f80fd5b5f80fd5b5f8083601f840112612aba57612ab9612a99565b5b8235905067ffffffffffffffff811115612ad757612ad6612a9d565b5b602083019150836001820283011115612af357612af2612aa1565b5b9250929050565b5f805f805f60808688031215612b1357612b12612801565b5b5f612b20888289016128d5565b9550506020612b31888289016128d5565b9450506040612b4288828901612828565b935050606086013567ffffffffffffffff811115612b6357612b62612805565b5b612b6f88828901612aa5565b92509250509295509295909350565b5f8060408385031215612b9457612b93612801565b5b5f612ba1858286016128d5565b9250506020612bb2858286016128d5565b9150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f6002820490506001821680612c0057607f821691505b602082108103612c1357612c12612bbc565b5b50919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f612c5082612809565b9150612c5b83612809565b9250828203905081811115612c7357612c72612c19565b5b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603160045260245ffd5b5f82825260208201905092915050565b50565b5f612cf15f83612cd3565b9150612cfc82612ce3565b5f82019050919050565b5f608082019050612d195f830186612897565b612d266020830185612897565b612d33604083018461295a565b8181036060830152612d4481612ce6565b9050949350505050565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b612d8281612d4e565b8114612d8c575f80fd5b50565b5f81519050612d9d81612d79565b92915050565b5f60208284031215612db857612db7612801565b5b5f612dc584828501612d8f565b91505092915050565b5f81905092915050565b7f534b494e434f4c4f5200000000000000000000000000000000000000000000005f82015250565b5f612e0c600983612dce565b9150612e1782612dd8565b600982019050919050565b5f612e2c82612757565b612e368185612dce565b9350612e46818560208601612771565b80840191505092915050565b5f612e5c82612e00565b9150612e688284612e22565b915081905092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f612eaa82612809565b9150612eb583612809565b925082612ec557612ec4612e73565b5b828206905092915050565b828183375f83830152505050565b5f612ee98385612cd3565b9350612ef6838584612ed0565b612eff83612799565b840190509392505050565b5f608082019050612f1d5f830188612897565b612f2a6020830187612897565b612f37604083018661295a565b8181036060830152612f4a818486612ede565b90509695505050505050565b7f3c73766720786d6c6e733d22687474703a2f2f7777772e77332e6f72672f32305f8201527f30302f737667222077696474683d2235393222206865696768743d223539322260208201527f2076696577426f783d223020302035393220353932222066696c6c3d226e6f6e60408201527f65223e0000000000000000000000000000000000000000000000000000000000606082015250565b5f612ffc606383612dce565b915061300782612f56565b606382019050919050565b7f3c726563742077696474683d2232333622206865696768743d223431342220785f8201527f3d223137372220793d22313138222066696c6c3d220000000000000000000000602082015250565b5f61306c603583612dce565b915061307782613012565b603582019050919050565b7f222f3e00000000000000000000000000000000000000000000000000000000005f82015250565b5f6130b6600383612dce565b91506130c182613082565b600382019050919050565b7f3c726563742077696474683d2233353522206865696768743d223239362220785f8201527f3d223131382220793d22313737222066696c6c3d220000000000000000000000602082015250565b5f613126603583612dce565b9150613131826130cc565b603582019050919050565b7f3c726563742077696474683d2231313822206865696768743d223131382220785f8201527f3d223233362220793d22343733222066696c6c3d220000000000000000000000602082015250565b5f613196603583612dce565b91506131a18261313c565b603582019050919050565b7f3c726563742077696474683d2234373322206865696768743d2235392220783d5f8201527f2235392220793d22343134222066696c6c3d2200000000000000000000000000602082015250565b5f613206603383612dce565b9150613211826131ac565b603382019050919050565b7f3c726563742077696474683d2232333622206865696768743d223131382220785f8201527f3d223137372220793d22333535222066696c6c3d220000000000000000000000602082015250565b5f613276603583612dce565b91506132818261321c565b603582019050919050565b7f3c726563742077696474683d22353922206865696768743d2235392220783d225f8201527f3137372220793d22323336222066696c6c3d2223303030303030222f3e000000602082015250565b5f6132e6603d83612dce565b91506132f18261328c565b603d82019050919050565b7f3c726563742077696474683d22353922206865696768743d2235392220783d225f8201527f3335352220793d22323336222066696c6c3d2223303030303030222f3e000000602082015250565b5f613356603d83612dce565b9150613361826132fc565b603d82019050919050565b7f3c2f7376673e00000000000000000000000000000000000000000000000000005f82015250565b5f6133a0600683612dce565b91506133ab8261336c565b600682019050919050565b5f6133c082612ff0565b91506133cb82613060565b91506133d78288612e22565b91506133e2826130aa565b91506133ed8261311a565b91506133f98287612e22565b9150613404826130aa565b915061340f8261318a565b915061341b8286612e22565b9150613426826130aa565b9150613431826131fa565b915061343d8285612e22565b9150613448826130aa565b91506134538261326a565b915061345f8284612e22565b915061346a826130aa565b9150613475826132da565b91506134808261334a565b915061348b82613394565b91508190509695505050505050565b7f7b226e616d65223a20224f6e20436861696e20476f6f736520230000000000005f82015250565b5f6134ce601a83612dce565b91506134d98261349a565b601a82019050919050565b7f222c20226465736372697074696f6e223a202238382072616e646f6d6c7920675f8201527f656e65726174656420506978656c20476f6f7365732073746f72656420656e7460208201527f6972656c79206f6e20636861696e2e222c2022696d616765223a20226461746160408201527f3a696d6167652f7376672b786d6c3b6261736536342c00000000000000000000606082015250565b5f61358a607683612dce565b9150613595826134e4565b607682019050919050565b7f227d0000000000000000000000000000000000000000000000000000000000005f82015250565b5f6135d4600283612dce565b91506135df826135a0565b600282019050919050565b5f6135f4826134c2565b91506136008285612e22565b915061360b8261357e565b91506136178284612e22565b9150613622826135c8565b91508190509392505050565b7f646174613a6170706c69636174696f6e2f6a736f6e3b6261736536342c0000005f82015250565b5f613662601d83612dce565b915061366d8261362e565b601d82019050919050565b5f61368282613656565b915061368e8284612e22565b915081905092915050565b7f4c4950434f4c4f520000000000000000000000000000000000000000000000005f82015250565b5f6136cd600883612dce565b91506136d882613699565b600882019050919050565b5f6136ed826136c1565b91506136f98284612e22565b915081905092915050565b5f8160011c9050919050565b5f808291508390505b60018511156137595780860481111561373557613734612c19565b5b60018516156137445780820291505b808102905061375285613704565b9450613719565b94509492505050565b5f82613771576001905061382c565b8161377e575f905061382c565b8160018114613794576002811461379e576137cd565b600191505061382c565b60ff8411156137b0576137af612c19565b5b8360020a9150848211156137c7576137c6612c19565b5b5061382c565b5060208310610133831016604e8410600b84101617156138025782820a9050838111156137fd576137fc612c19565b5b61382c565b61380f8484846001613710565b9250905081840481111561382657613825612c19565b5b81810290505b9392505050565b5f61383d82612809565b9150613848836129d2565b92506138757fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484613762565b905092915050565b5f61388782612809565b915061389283612809565b9250826138a2576138a1612e73565b5b828204905092915050565b5f6138b782612809565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036138e9576138e8612c19565b5b600182019050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b5f61392b82612809565b915061393683612809565b925082820190508082111561394e5761394d612c19565b5b92915050565b5f61395f8284612e22565b915081905092915050565b5f61397482612809565b915061397f83612809565b925082820261398d81612809565b915082820484148315176139a4576139a3612c19565b5b509291505056fe4142434445464748494a4b4c4d4e4f505152535455565758595a6162636465666768696a6b6c6d6e6f707172737475767778797a303132333435363738392b2f5472616e7366657228616464726573732c616464726573732c75696e7432353629a2646970667358221220194b1d5f50ba8ae119902c71aa379d3c7912a52f5a464054dffa87e2dc8d268c64736f6c63430008180033

Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)

0000000000000000000000009588ae196e36c7e376a3786042cd0272549a77e50000000000000000000000000000000000000000000000000000000000000058

-----Decoded View---------------
Arg [0] : _owner (address): 0x9588ae196e36C7e376A3786042cd0272549a77e5
Arg [1] : _totalSupply (uint256): 88

-----Encoded View---------------
2 Constructor Arguments found :
Arg [0] : 0000000000000000000000009588ae196e36c7e376a3786042cd0272549a77e5
Arg [1] : 0000000000000000000000000000000000000000000000000000000000000058


Deployed Bytecode Sourcemap

264:4457:3:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1245:18:2;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1956:46;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3787:642;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1481:36;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4836:1732;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;1381:31;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6864:405;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;1616:21;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3116:111;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;3299:193;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1722:44;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2361:103:4;;;:::i;:::-;;1453:251:3;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1812:235:5;;;:::i;:::-;;1686:87:4;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1299:20:2;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2567:41;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4480:207;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6627:160;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7364:437;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;2309:1869:3;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1712:247;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1836:64:2;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;900:101:5;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2067:68:2;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1200:181:5;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;1245:18:2;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;1956:46::-;;;;;;;;;;;;;;;;;;;;;;:::o;3787:642::-;3890:4;3925:6;;3911:10;:20;;:38;;;;;3948:1;3935:10;:14;3911:38;3907:491;;;3966:13;3982:8;:20;3991:10;3982:20;;;;;;;;;;;;;;;;;;;;;3966:36;;4037:5;4023:19;;:10;:19;;;;:59;;;;;4047:16;:23;4064:5;4047:23;;;;;;;;;;;;;;;:35;4071:10;4047:35;;;;;;;;;;;;;;;;;;;;;;;;;4046:36;4023:59;4019:121;;;4110:14;;;;;;;;;;;;;;4019:121;4182:7;4156:11;:23;4168:10;4156:23;;;;;;;;;;;;:33;;;;;;;;;;;;;;;;;;4227:7;4211:36;;4220:5;4211:36;;;4236:10;4211:36;;;;;;:::i;:::-;;;;;;;;3951:308;3907:491;;;4313:10;4280:9;:21;4290:10;4280:21;;;;;;;;;;;;;;;:30;4302:7;4280:30;;;;;;;;;;;;;;;:43;;;;4366:7;4345:41;;4354:10;4345:41;;;4375:10;4345:41;;;;;;:::i;:::-;;;;;;;;3907:491;4417:4;4410:11;;3787:642;;;;:::o;1481:36::-;;;:::o;4836:1732::-;4982:6;;4968:10;:20;4964:1597;;5017:8;:20;5026:10;5017:20;;;;;;;;;;;;;;;;;;;;;5009:28;;:4;:28;;;5005:91;;5065:15;;;;;;;;;;;;;;5005:91;5130:1;5116:16;;:2;:16;;;5112:82;;5160:18;;;;;;;;;;;;;;5112:82;5246:4;5232:18;;:10;:18;;;;:74;;;;;5272:16;:22;5289:4;5272:22;;;;;;;;;;;;;;;:34;5295:10;5272:34;;;;;;;;;;;;;;;;;;;;;;;;;5271:35;5232:74;:132;;;;;5341:11;:23;5353:10;5341:23;;;;;;;;;;;;;;;;;;;;;5327:37;;:10;:37;;;;5232:132;5210:226;;;5406:14;;;;;;;;;;;;;;5210:226;5471:10;:8;:10::i;:::-;5452:9;:15;5462:4;5452:15;;;;;;;;;;;;;;;;:29;;;;;;;:::i;:::-;;;;;;;;5544:10;:8;:10::i;:::-;5527:9;:13;5537:2;5527:13;;;;;;;;;;;;;;;;:27;;;;;;;;;;;5609:2;5586:8;:20;5595:10;5586:20;;;;;;;;;;;;:25;;;;;;;;;;;;;;;;;;5633:11;:23;5645:10;5633:23;;;;;;;;;;;;5626:30;;;;;;;;;;;5714:17;5734:6;:12;5741:4;5734:12;;;;;;;;;;;;;;;5769:1;5747:6;:12;5754:4;5747:12;;;;;;;;;;;;;;;:19;;;;:23;;;;:::i;:::-;5734:37;;;;;;;;:::i;:::-;;;;;;;;;;5714:57;;5826:9;5786:6;:12;5793:4;5786:12;;;;;;;;;;;;;;;5799:11;:23;5811:10;5799:23;;;;;;;;;;;;5786:37;;;;;;;;:::i;:::-;;;;;;;;;:49;;;;5870:6;:12;5877:4;5870:12;;;;;;;;;;;;;;;:18;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;5974:11;:23;5986:10;5974:23;;;;;;;;;;;;5949:11;:22;5961:9;5949:22;;;;;;;;;;;:48;;;;6051:6;:10;6058:2;6051:10;;;;;;;;;;;;;;;6067;6051:27;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6181:1;6161:6;:10;6168:2;6161:10;;;;;;;;;;;;;;;:17;;;;:21;;;;:::i;:::-;6135:11;:23;6147:10;6135:23;;;;;;;;;;;:47;;;;6223:10;6219:2;6204:30;;6213:4;6204:30;;;;;;;;;;;;6290:2;6254:51;;6284:4;6254:51;;955:42;;;;;;;;;;;;;;;;;945:53;;;;;;6294:10;:8;:10::i;:::-;6254:51;;;;;;:::i;:::-;;;;;;;;4990:1327;4964:1597;;;6338:15;6356:9;:15;6366:4;6356:15;;;;;;;;;;;;;;;:27;6372:10;6356:27;;;;;;;;;;;;;;;;6338:45;;6415:17;6404:7;:28;6400:101;;6491:10;6481:7;:20;;;;:::i;:::-;6451:9;:15;6461:4;6451:15;;;;;;;;;;;;;;;:27;6467:10;6451:27;;;;;;;;;;;;;;;:50;;;;6400:101;6518:31;6528:4;6534:2;6538:10;6518:9;:31::i;:::-;;6323:238;4964:1597;4836:1732;;;:::o;1381:31::-;;;:::o;6864:405::-;6988:26;7001:4;7007:2;7011;6988:12;:26::i;:::-;7063:1;7045:2;:14;;;:19;;:154;;;;;7159:40;;;7081:118;;;7096:2;7081:35;;;7117:10;7129:4;7135:2;7081:61;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:118;;;;;7045:154;7027:235;;;7233:17;;;;;;;;;;;;;;7027:235;6864:405;;;:::o;1616:21::-;;;;:::o;3116:111::-;1572:13:4;:11;:13::i;:::-;3214:5:2::1;3194:9;:17;3204:6;3194:17;;;;;;;;;;;;;;;;:25;;;;;;;;;;;;;;;;;;3116:111:::0;;:::o;3299:193::-;3357:13;3391:8;:12;3400:2;3391:12;;;;;;;;;;;;;;;;;;;;;3383:20;;3437:1;3420:19;;:5;:19;;;3416:69;;3463:10;;;;;;;;;;;;;;3416:69;3299:193;;;:::o;1722:44::-;;;;;;;;;;;;;;;;;:::o;2361:103:4:-;1572:13;:11;:13::i;:::-;2426:30:::1;2453:1;2426:18;:30::i;:::-;2361:103::o:0;1453:251:3:-;1513:13;1539:12;1554:88;1612:17;1621:7;1612:8;:17::i;:::-;1582:48;;;;;;;;:::i;:::-;;;;;;;;;;;;;1554:6;:88::i;:::-;1539:103;;1660:10;1678;:17;;;;1671:4;:24;;;;:::i;:::-;1660:36;;;;;;;;:::i;:::-;;;;;;;;;1653:43;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1453:251;;;:::o;1812:235:5:-;1865:14;1882:12;:10;:12::i;:::-;1865:29;;1927:6;1909:24;;:14;:12;:14::i;:::-;:24;;;1905:98;;1984:6;1957:34;;;;;;;;;;;:::i;:::-;;;;;;;;1905:98;2013:26;2032:6;2013:18;:26::i;:::-;1854:193;1812:235::o;1686:87:4:-;1732:7;1759:6;;;;;;;;;;;1752:13;;1686:87;:::o;1299:20:2:-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;2567:41::-;;;;;;;;;;;;;;;;;;;;;;:::o;4480:207::-;4607:8;4566:16;:28;4583:10;4566:28;;;;;;;;;;;;;;;:38;4595:8;4566:38;;;;;;;;;;;;;;;;:49;;;;;;;;;;;;;;;;;;4660:8;4633:46;;4648:10;4633:46;;;4670:8;4633:46;;;;;;:::i;:::-;;;;;;;;4480:207;;:::o;6627:160::-;6722:4;6746:33;6756:10;6768:2;6772:6;6746:9;:33::i;:::-;6739:40;;6627:160;;;;:::o;7364:437::-;7518:26;7531:4;7537:2;7541;7518:12;:26::i;:::-;7593:1;7575:2;:14;;;:19;;:156;;;;;7691:40;;;7611:120;;;7626:2;7611:35;;;7647:10;7659:4;7665:2;7669:4;;7611:63;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:120;;;;;7575:156;7557:237;;;7765:17;;;;;;;;;;;;;;7557:237;7364:437;;;;;:::o;2309:1869:3:-;2410:13;2441:23;2467:21;2480:7;2467:12;:21::i;:::-;2441:47;;2499:22;2524:20;2536:7;2524:11;:20::i;:::-;2499:45;;2557:17;2827:9;2953;3079;3203:8;3322;2598:950;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;2557:1002;;3572:18;3593:494;3772:17;3781:7;3772:8;:17::i;:::-;3963:25;3983:3;3963:13;:25::i;:::-;3674:368;;;;;;;;;:::i;:::-;;;;;;;;;;;;;3593:13;:494::i;:::-;3572:515;;4164:4;4114:55;;;;;;;;:::i;:::-;;;;;;;;;;;;;4100:70;;;;;;2309:1869;;;:::o;1712:247::-;1771:13;1797:12;1812:87;1869:17;1878:7;1869:8;:17::i;:::-;1840:47;;;;;;;;:::i;:::-;;;;;;;;;;;;;1812:6;:87::i;:::-;1797:102;;1917:9;1934;:16;;;;1927:4;:23;;;;:::i;:::-;1917:34;;;;;;;;:::i;:::-;;;;;;;;;1910:41;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1712:247;;;:::o;1836:64:2:-;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;900:101:5:-;953:7;980:13;;;;;;;;;;;973:20;;900:101;:::o;2067:68:2:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;1200:181:5:-;1572:13:4;:11;:13::i;:::-;1306:8:5::1;1290:13;;:24;;;;;;;;;;;;;;;;;;1364:8;1330:43;;1355:7;:5;:7::i;:::-;1330:43;;;;;;;;;;;;1200:181:::0;:::o;9025:92:2:-;9068:7;9101:8;9095:2;:14;;;;:::i;:::-;9088:21;;9025:92;:::o;7869:1117::-;7990:4;8007:12;8022:10;:8;:10::i;:::-;8007:25;;8043:27;8073:9;:15;8083:4;8073:15;;;;;;;;;;;;;;;;8043:45;;8099:29;8131:9;:13;8141:2;8131:13;;;;;;;;;;;;;;;;8099:45;;8176:6;8157:9;:15;8167:4;8157:15;;;;;;;;;;;;;;;;:25;;;;;;;:::i;:::-;;;;;;;;8237:6;8220:9;:13;8230:2;8220:13;;;;;;;;;;;;;;;;:23;;;;;;;;;;;8328:9;:15;8338:4;8328:15;;;;;;;;;;;;;;;;;;;;;;;;;8323:251;;8360:22;8452:4;8434:9;:15;8444:4;8434:15;;;;;;;;;;;;;;;;:22;;;;:::i;:::-;8408:4;8386:19;:26;;;;:::i;:::-;8385:72;;;;:::i;:::-;8360:97;;8477:9;8472:91;8496:14;8492:1;:18;8472:91;;;8536:11;8542:4;8536:5;:11::i;:::-;8512:3;;;;;;;8472:91;;;;8345:229;8323:251;8650:9;:13;8660:2;8650:13;;;;;;;;;;;;;;;;;;;;;;;;;8645:247;;8680:22;8772:4;8748:21;:28;;;;:::i;:::-;8722:4;8706:9;:13;8716:2;8706:13;;;;;;;;;;;;;;;;:20;;;;:::i;:::-;8705:72;;;;:::i;:::-;8680:97;;8797:9;8792:89;8816:14;8812:1;:18;8792:89;;;8856:9;8862:2;8856:5;:9::i;:::-;8832:3;;;;;;;8792:89;;;;8665:227;8645:247;8945:2;8909:47;;8939:4;8909:47;;955:42;;;;;;;;;;;;;;;;;945:53;;;;;;8949:6;8909:47;;;;;;:::i;:::-;;;;;;;;8974:4;8967:11;;;;;7869:1117;;;;;:::o;1851:166:4:-;1922:12;:10;:12::i;:::-;1911:23;;:7;:5;:7::i;:::-;:23;;;1907:103;;1985:12;:10;:12::i;:::-;1958:40;;;;;;;;;;;:::i;:::-;;;;;;;;1907:103;1851:166::o;1571:156:5:-;1661:13;;1654:20;;;;;;;;;;;1685:34;1710:8;1685:24;:34::i;:::-;1571:156;:::o;4186:532:3:-;4242:13;4281:1;4272:5;:10;4268:53;;4299:10;;;;;;;;;;;;;;;;;;;;;4268:53;4331:12;4346:5;4331:20;;4362:14;4387:78;4402:1;4394:4;:9;4387:78;;4420:8;;;;;:::i;:::-;;;;4451:2;4443:10;;;;;:::i;:::-;;;4387:78;;;4475:19;4507:6;4497:17;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4475:39;;4525:154;4541:1;4532:5;:10;4525:154;;4569:1;4559:11;;;;;:::i;:::-;;;4636:2;4628:5;:10;;;;:::i;:::-;4615:2;:24;;;;:::i;:::-;4602:39;;4585:6;4592;4585:14;;;;;;;;:::i;:::-;;;;;:56;;;;;;;;;;;4665:2;4656:11;;;;;:::i;:::-;;;4525:154;;;4703:6;4689:21;;;;;4186:532;;;;:::o;1307:138::-;1367:7;1429:5;1412:23;;;;;;;;:::i;:::-;;;;;;;;;;;;;1402:34;;;;;;1394:43;;1387:50;;1307:138;;;:::o;672:98:1:-;725:7;752:10;745:17;;672:98;:::o;493:3097:0:-;551:13;803:1;788:4;:11;:16;784:31;;806:9;;;;;;;;;;;;;;;;784:31;868:19;890:6;;;;;;;;;;;;;;;;;868:28;;1307:20;1366:1;1361;1347:4;:11;:15;;;;:::i;:::-;1346:21;;;;:::i;:::-;1341:1;:27;;;;:::i;:::-;1330:39;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1307:62;;1549:1;1542:5;1538:13;1653:2;1645:6;1641:15;1764:4;1816;1810:11;1804:4;1800:22;1726:1432;1850:6;1841:7;1838:19;1726:1432;;;1956:1;1947:7;1943:15;1932:26;;1995:7;1989:14;2648:4;2640:5;2636:2;2632:14;2628:25;2618:8;2614:40;2608:47;2597:9;2589:67;2702:1;2691:9;2687:17;2674:30;;2794:4;2786:5;2782:2;2778:14;2774:25;2764:8;2760:40;2754:47;2743:9;2735:67;2848:1;2837:9;2833:17;2820:30;;2939:4;2931:5;2928:1;2924:13;2920:24;2910:8;2906:39;2900:46;2889:9;2881:66;2993:1;2982:9;2978:17;2965:30;;3076:4;3069:5;3065:16;3055:8;3051:31;3045:38;3034:9;3026:58;3130:1;3119:9;3115:17;3102:30;;1877:1281;1726:1432;;;1730:107;;3320:1;3313:4;3307:11;3303:19;3341:1;3336:123;;;;3478:1;3473:73;;;;3296:250;;3336:123;3389:4;3385:1;3374:9;3370:17;3362:32;3439:4;3435:1;3424:9;3420:17;3412:32;3336:123;;3473:73;3526:4;3522:1;3511:9;3507:17;3499:32;3296:250;;1435:2122;;3576:6;3569:13;;;;493:3097;;;;:::o;9607:373:2:-;9684:1;9668:18;;:4;:18;;;9664:73;;9710:15;;;;;;;;;;;;;;9664:73;9749:10;9762:6;:12;9769:4;9762:12;;;;;;;;;;;;;;;9797:1;9775:6;:12;9782:4;9775:12;;;;;;;;;;;;;;;:19;;;;:23;;;;:::i;:::-;9762:37;;;;;;;;:::i;:::-;;;;;;;;;;9749:50;;9810:6;:12;9817:4;9810:12;;;;;;;;;;;;;;;:18;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;9846:11;:15;9858:2;9846:15;;;;;;;;;;;9839:22;;;9879:8;:12;9888:2;9879:12;;;;;;;;;;;;9872:19;;;;;;;;;;;9909:11;:15;9921:2;9909:15;;;;;;;;;;;;9902:22;;;;;;;;;;;9969:2;9965:1;9942:30;;9951:4;9942:30;;;;;;;;;;;;9653:327;9607:373;:::o;9125:474::-;9198:1;9184:16;;:2;:16;;;9180:74;;9224:18;;;;;;;;;;;;;;9180:74;9291:6;;:8;;;;;;;;;;;;;9323:10;9336:6;;9323:19;;9383:1;9359:26;;:8;:12;9368:2;9359:12;;;;;;;;;;;;;;;;;;;;;:26;;;9355:81;;9409:15;;;;;;;;;;;;;;9355:81;9463:2;9448:8;:12;9457:2;9448:12;;;;;;;;;;;;:17;;;;;;;;;;;;;;;;;;9476:6;:10;9483:2;9476:10;;;;;;;;;;;;;;;9492:2;9476:19;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9544:1;9524:6;:10;9531:2;9524:10;;;;;;;;;;;;;;;:17;;;;:21;;;;:::i;:::-;9506:11;:15;9518:2;9506:15;;;;;;;;;;;:39;;;;9588:2;9584;9563:28;;9580:1;9563:28;;;;;;;;;;;;9169:430;9125:474;:::o;2999:191:4:-;3073:16;3092:6;;;;;;;;;;;3073:25;;3118:8;3109:6;;:17;;;;;;;;;;;;;;;;;;3173:8;3142:40;;3163:8;3142:40;;;;;;;;;;;;3062:128;2999:191;:::o;7:99:6:-;59:6;93:5;87:12;77:22;;7:99;;;:::o;112:169::-;196:11;230:6;225:3;218:19;270:4;265:3;261:14;246:29;;112:169;;;;:::o;287:246::-;368:1;378:113;392:6;389:1;386:13;378:113;;;477:1;472:3;468:11;462:18;458:1;453:3;449:11;442:39;414:2;411:1;407:10;402:15;;378:113;;;525:1;516:6;511:3;507:16;500:27;349:184;287:246;;;:::o;539:102::-;580:6;631:2;627:7;622:2;615:5;611:14;607:28;597:38;;539:102;;;:::o;647:377::-;735:3;763:39;796:5;763:39;:::i;:::-;818:71;882:6;877:3;818:71;:::i;:::-;811:78;;898:65;956:6;951:3;944:4;937:5;933:16;898:65;:::i;:::-;988:29;1010:6;988:29;:::i;:::-;983:3;979:39;972:46;;739:285;647:377;;;;:::o;1030:313::-;1143:4;1181:2;1170:9;1166:18;1158:26;;1230:9;1224:4;1220:20;1216:1;1205:9;1201:17;1194:47;1258:78;1331:4;1322:6;1258:78;:::i;:::-;1250:86;;1030:313;;;;:::o;1430:117::-;1539:1;1536;1529:12;1553:117;1662:1;1659;1652:12;1676:77;1713:7;1742:5;1731:16;;1676:77;;;:::o;1759:122::-;1832:24;1850:5;1832:24;:::i;:::-;1825:5;1822:35;1812:63;;1871:1;1868;1861:12;1812:63;1759:122;:::o;1887:139::-;1933:5;1971:6;1958:20;1949:29;;1987:33;2014:5;1987:33;:::i;:::-;1887:139;;;;:::o;2032:329::-;2091:6;2140:2;2128:9;2119:7;2115:23;2111:32;2108:119;;;2146:79;;:::i;:::-;2108:119;2266:1;2291:53;2336:7;2327:6;2316:9;2312:22;2291:53;:::i;:::-;2281:63;;2237:117;2032:329;;;;:::o;2367:126::-;2404:7;2444:42;2437:5;2433:54;2422:65;;2367:126;;;:::o;2499:96::-;2536:7;2565:24;2583:5;2565:24;:::i;:::-;2554:35;;2499:96;;;:::o;2601:118::-;2688:24;2706:5;2688:24;:::i;:::-;2683:3;2676:37;2601:118;;:::o;2725:222::-;2818:4;2856:2;2845:9;2841:18;2833:26;;2869:71;2937:1;2926:9;2922:17;2913:6;2869:71;:::i;:::-;2725:222;;;;:::o;2953:122::-;3026:24;3044:5;3026:24;:::i;:::-;3019:5;3016:35;3006:63;;3065:1;3062;3055:12;3006:63;2953:122;:::o;3081:139::-;3127:5;3165:6;3152:20;3143:29;;3181:33;3208:5;3181:33;:::i;:::-;3081:139;;;;:::o;3226:474::-;3294:6;3302;3351:2;3339:9;3330:7;3326:23;3322:32;3319:119;;;3357:79;;:::i;:::-;3319:119;3477:1;3502:53;3547:7;3538:6;3527:9;3523:22;3502:53;:::i;:::-;3492:63;;3448:117;3604:2;3630:53;3675:7;3666:6;3655:9;3651:22;3630:53;:::i;:::-;3620:63;;3575:118;3226:474;;;;;:::o;3706:90::-;3740:7;3783:5;3776:13;3769:21;3758:32;;3706:90;;;:::o;3802:109::-;3883:21;3898:5;3883:21;:::i;:::-;3878:3;3871:34;3802:109;;:::o;3917:210::-;4004:4;4042:2;4031:9;4027:18;4019:26;;4055:65;4117:1;4106:9;4102:17;4093:6;4055:65;:::i;:::-;3917:210;;;;:::o;4133:118::-;4220:24;4238:5;4220:24;:::i;:::-;4215:3;4208:37;4133:118;;:::o;4257:222::-;4350:4;4388:2;4377:9;4373:18;4365:26;;4401:71;4469:1;4458:9;4454:17;4445:6;4401:71;:::i;:::-;4257:222;;;;:::o;4485:619::-;4562:6;4570;4578;4627:2;4615:9;4606:7;4602:23;4598:32;4595:119;;;4633:79;;:::i;:::-;4595:119;4753:1;4778:53;4823:7;4814:6;4803:9;4799:22;4778:53;:::i;:::-;4768:63;;4724:117;4880:2;4906:53;4951:7;4942:6;4931:9;4927:22;4906:53;:::i;:::-;4896:63;;4851:118;5008:2;5034:53;5079:7;5070:6;5059:9;5055:22;5034:53;:::i;:::-;5024:63;;4979:118;4485:619;;;;;:::o;5110:86::-;5145:7;5185:4;5178:5;5174:16;5163:27;;5110:86;;;:::o;5202:112::-;5285:22;5301:5;5285:22;:::i;:::-;5280:3;5273:35;5202:112;;:::o;5320:214::-;5409:4;5447:2;5436:9;5432:18;5424:26;;5460:67;5524:1;5513:9;5509:17;5500:6;5460:67;:::i;:::-;5320:214;;;;:::o;5540:116::-;5610:21;5625:5;5610:21;:::i;:::-;5603:5;5600:32;5590:60;;5646:1;5643;5636:12;5590:60;5540:116;:::o;5662:133::-;5705:5;5743:6;5730:20;5721:29;;5759:30;5783:5;5759:30;:::i;:::-;5662:133;;;;:::o;5801:468::-;5866:6;5874;5923:2;5911:9;5902:7;5898:23;5894:32;5891:119;;;5929:79;;:::i;:::-;5891:119;6049:1;6074:53;6119:7;6110:6;6099:9;6095:22;6074:53;:::i;:::-;6064:63;;6020:117;6176:2;6202:50;6244:7;6235:6;6224:9;6220:22;6202:50;:::i;:::-;6192:60;;6147:115;5801:468;;;;;:::o;6275:329::-;6334:6;6383:2;6371:9;6362:7;6358:23;6354:32;6351:119;;;6389:79;;:::i;:::-;6351:119;6509:1;6534:53;6579:7;6570:6;6559:9;6555:22;6534:53;:::i;:::-;6524:63;;6480:117;6275:329;;;;:::o;6610:117::-;6719:1;6716;6709:12;6733:117;6842:1;6839;6832:12;6856:117;6965:1;6962;6955:12;6992:552;7049:8;7059:6;7109:3;7102:4;7094:6;7090:17;7086:27;7076:122;;7117:79;;:::i;:::-;7076:122;7230:6;7217:20;7207:30;;7260:18;7252:6;7249:30;7246:117;;;7282:79;;:::i;:::-;7246:117;7396:4;7388:6;7384:17;7372:29;;7450:3;7442:4;7434:6;7430:17;7420:8;7416:32;7413:41;7410:128;;;7457:79;;:::i;:::-;7410:128;6992:552;;;;;:::o;7550:963::-;7647:6;7655;7663;7671;7679;7728:3;7716:9;7707:7;7703:23;7699:33;7696:120;;;7735:79;;:::i;:::-;7696:120;7855:1;7880:53;7925:7;7916:6;7905:9;7901:22;7880:53;:::i;:::-;7870:63;;7826:117;7982:2;8008:53;8053:7;8044:6;8033:9;8029:22;8008:53;:::i;:::-;7998:63;;7953:118;8110:2;8136:53;8181:7;8172:6;8161:9;8157:22;8136:53;:::i;:::-;8126:63;;8081:118;8266:2;8255:9;8251:18;8238:32;8297:18;8289:6;8286:30;8283:117;;;8319:79;;:::i;:::-;8283:117;8432:64;8488:7;8479:6;8468:9;8464:22;8432:64;:::i;:::-;8414:82;;;;8209:297;7550:963;;;;;;;;:::o;8519:474::-;8587:6;8595;8644:2;8632:9;8623:7;8619:23;8615:32;8612:119;;;8650:79;;:::i;:::-;8612:119;8770:1;8795:53;8840:7;8831:6;8820:9;8816:22;8795:53;:::i;:::-;8785:63;;8741:117;8897:2;8923:53;8968:7;8959:6;8948:9;8944:22;8923:53;:::i;:::-;8913:63;;8868:118;8519:474;;;;;:::o;8999:180::-;9047:77;9044:1;9037:88;9144:4;9141:1;9134:15;9168:4;9165:1;9158:15;9185:320;9229:6;9266:1;9260:4;9256:12;9246:22;;9313:1;9307:4;9303:12;9334:18;9324:81;;9390:4;9382:6;9378:17;9368:27;;9324:81;9452:2;9444:6;9441:14;9421:18;9418:38;9415:84;;9471:18;;:::i;:::-;9415:84;9236:269;9185:320;;;:::o;9511:180::-;9559:77;9556:1;9549:88;9656:4;9653:1;9646:15;9680:4;9677:1;9670:15;9697:194;9737:4;9757:20;9775:1;9757:20;:::i;:::-;9752:25;;9791:20;9809:1;9791:20;:::i;:::-;9786:25;;9835:1;9832;9828:9;9820:17;;9859:1;9853:4;9850:11;9847:37;;;9864:18;;:::i;:::-;9847:37;9697:194;;;;:::o;9897:180::-;9945:77;9942:1;9935:88;10042:4;10039:1;10032:15;10066:4;10063:1;10056:15;10083:180;10131:77;10128:1;10121:88;10228:4;10225:1;10218:15;10252:4;10249:1;10242:15;10269:168;10352:11;10386:6;10381:3;10374:19;10426:4;10421:3;10417:14;10402:29;;10269:168;;;;:::o;10443:114::-;;:::o;10563:362::-;10704:3;10725:65;10788:1;10783:3;10725:65;:::i;:::-;10718:72;;10799:93;10888:3;10799:93;:::i;:::-;10917:1;10912:3;10908:11;10901:18;;10563:362;;;:::o;10931:748::-;11180:4;11218:3;11207:9;11203:19;11195:27;;11232:71;11300:1;11289:9;11285:17;11276:6;11232:71;:::i;:::-;11313:72;11381:2;11370:9;11366:18;11357:6;11313:72;:::i;:::-;11395;11463:2;11452:9;11448:18;11439:6;11395:72;:::i;:::-;11514:9;11508:4;11504:20;11499:2;11488:9;11484:18;11477:48;11542:130;11667:4;11542:130;:::i;:::-;11534:138;;10931:748;;;;;;:::o;11685:149::-;11721:7;11761:66;11754:5;11750:78;11739:89;;11685:149;;;:::o;11840:120::-;11912:23;11929:5;11912:23;:::i;:::-;11905:5;11902:34;11892:62;;11950:1;11947;11940:12;11892:62;11840:120;:::o;11966:141::-;12022:5;12053:6;12047:13;12038:22;;12069:32;12095:5;12069:32;:::i;:::-;11966:141;;;;:::o;12113:349::-;12182:6;12231:2;12219:9;12210:7;12206:23;12202:32;12199:119;;;12237:79;;:::i;:::-;12199:119;12357:1;12382:63;12437:7;12428:6;12417:9;12413:22;12382:63;:::i;:::-;12372:73;;12328:127;12113:349;;;;:::o;12468:148::-;12570:11;12607:3;12592:18;;12468:148;;;;:::o;12622:159::-;12762:11;12758:1;12750:6;12746:14;12739:35;12622:159;:::o;12787:400::-;12947:3;12968:84;13050:1;13045:3;12968:84;:::i;:::-;12961:91;;13061:93;13150:3;13061:93;:::i;:::-;13179:1;13174:3;13170:11;13163:18;;12787:400;;;:::o;13193:390::-;13299:3;13327:39;13360:5;13327:39;:::i;:::-;13382:89;13464:6;13459:3;13382:89;:::i;:::-;13375:96;;13480:65;13538:6;13533:3;13526:4;13519:5;13515:16;13480:65;:::i;:::-;13570:6;13565:3;13561:16;13554:23;;13303:280;13193:390;;;;:::o;13589:541::-;13822:3;13844:148;13988:3;13844:148;:::i;:::-;13837:155;;14009:95;14100:3;14091:6;14009:95;:::i;:::-;14002:102;;14121:3;14114:10;;13589:541;;;;:::o;14136:180::-;14184:77;14181:1;14174:88;14281:4;14278:1;14271:15;14305:4;14302:1;14295:15;14322:176;14354:1;14371:20;14389:1;14371:20;:::i;:::-;14366:25;;14405:20;14423:1;14405:20;:::i;:::-;14400:25;;14444:1;14434:35;;14449:18;;:::i;:::-;14434:35;14490:1;14487;14483:9;14478:14;;14322:176;;;;:::o;14504:146::-;14601:6;14596:3;14591;14578:30;14642:1;14633:6;14628:3;14624:16;14617:27;14504:146;;;:::o;14678:314::-;14774:3;14795:70;14858:6;14853:3;14795:70;:::i;:::-;14788:77;;14875:56;14924:6;14919:3;14912:5;14875:56;:::i;:::-;14956:29;14978:6;14956:29;:::i;:::-;14951:3;14947:39;14940:46;;14678:314;;;;;:::o;14998:660::-;15203:4;15241:3;15230:9;15226:19;15218:27;;15255:71;15323:1;15312:9;15308:17;15299:6;15255:71;:::i;:::-;15336:72;15404:2;15393:9;15389:18;15380:6;15336:72;:::i;:::-;15418;15486:2;15475:9;15471:18;15462:6;15418:72;:::i;:::-;15537:9;15531:4;15527:20;15522:2;15511:9;15507:18;15500:48;15565:86;15646:4;15637:6;15629;15565:86;:::i;:::-;15557:94;;14998:660;;;;;;;;:::o;15664:517::-;15804:66;15800:1;15792:6;15788:14;15781:90;15905:66;15900:2;15892:6;15888:15;15881:91;16006:66;16001:2;15993:6;15989:15;15982:91;16107:66;16102:2;16094:6;16090:15;16083:91;15664:517;:::o;16187:402::-;16347:3;16368:85;16450:2;16445:3;16368:85;:::i;:::-;16361:92;;16462:93;16551:3;16462:93;:::i;:::-;16580:2;16575:3;16571:12;16564:19;;16187:402;;;:::o;16595:315::-;16735:66;16731:1;16723:6;16719:14;16712:90;16836:66;16831:2;16823:6;16819:15;16812:91;16595:315;:::o;16916:402::-;17076:3;17097:85;17179:2;17174:3;17097:85;:::i;:::-;17090:92;;17191:93;17280:3;17191:93;:::i;:::-;17309:2;17304:3;17300:12;17293:19;;16916:402;;;:::o;17324:214::-;17464:66;17460:1;17452:6;17448:14;17441:90;17324:214;:::o;17544:400::-;17704:3;17725:84;17807:1;17802:3;17725:84;:::i;:::-;17718:91;;17818:93;17907:3;17818:93;:::i;:::-;17936:1;17931:3;17927:11;17920:18;;17544:400;;;:::o;17950:315::-;18090:66;18086:1;18078:6;18074:14;18067:90;18191:66;18186:2;18178:6;18174:15;18167:91;17950:315;:::o;18271:402::-;18431:3;18452:85;18534:2;18529:3;18452:85;:::i;:::-;18445:92;;18546:93;18635:3;18546:93;:::i;:::-;18664:2;18659:3;18655:12;18648:19;;18271:402;;;:::o;18679:315::-;18819:66;18815:1;18807:6;18803:14;18796:90;18920:66;18915:2;18907:6;18903:15;18896:91;18679:315;:::o;19000:402::-;19160:3;19181:85;19263:2;19258:3;19181:85;:::i;:::-;19174:92;;19275:93;19364:3;19275:93;:::i;:::-;19393:2;19388:3;19384:12;19377:19;;19000:402;;;:::o;19408:315::-;19548:66;19544:1;19536:6;19532:14;19525:90;19649:66;19644:2;19636:6;19632:15;19625:91;19408:315;:::o;19729:402::-;19889:3;19910:85;19992:2;19987:3;19910:85;:::i;:::-;19903:92;;20004:93;20093:3;20004:93;:::i;:::-;20122:2;20117:3;20113:12;20106:19;;19729:402;;;:::o;20137:315::-;20277:66;20273:1;20265:6;20261:14;20254:90;20378:66;20373:2;20365:6;20361:15;20354:91;20137:315;:::o;20458:402::-;20618:3;20639:85;20721:2;20716:3;20639:85;:::i;:::-;20632:92;;20733:93;20822:3;20733:93;:::i;:::-;20851:2;20846:3;20842:12;20835:19;;20458:402;;;:::o;20866:315::-;21006:66;21002:1;20994:6;20990:14;20983:90;21107:66;21102:2;21094:6;21090:15;21083:91;20866:315;:::o;21187:402::-;21347:3;21368:85;21450:2;21445:3;21368:85;:::i;:::-;21361:92;;21462:93;21551:3;21462:93;:::i;:::-;21580:2;21575:3;21571:12;21564:19;;21187:402;;;:::o;21595:315::-;21735:66;21731:1;21723:6;21719:14;21712:90;21836:66;21831:2;21823:6;21819:15;21812:91;21595:315;:::o;21916:402::-;22076:3;22097:85;22179:2;22174:3;22097:85;:::i;:::-;22090:92;;22191:93;22280:3;22191:93;:::i;:::-;22309:2;22304:3;22300:12;22293:19;;21916:402;;;:::o;22324:156::-;22464:8;22460:1;22452:6;22448:14;22441:32;22324:156;:::o;22486:400::-;22646:3;22667:84;22749:1;22744:3;22667:84;:::i;:::-;22660:91;;22760:93;22849:3;22760:93;:::i;:::-;22878:1;22873:3;22869:11;22862:18;;22486:400;;;:::o;22892:4639::-;24630:3;24652:148;24796:3;24652:148;:::i;:::-;24645:155;;24817:148;24961:3;24817:148;:::i;:::-;24810:155;;24982:95;25073:3;25064:6;24982:95;:::i;:::-;24975:102;;25094:148;25238:3;25094:148;:::i;:::-;25087:155;;25259:148;25403:3;25259:148;:::i;:::-;25252:155;;25424:95;25515:3;25506:6;25424:95;:::i;:::-;25417:102;;25536:148;25680:3;25536:148;:::i;:::-;25529:155;;25701:148;25845:3;25701:148;:::i;:::-;25694:155;;25866:95;25957:3;25948:6;25866:95;:::i;:::-;25859:102;;25978:148;26122:3;25978:148;:::i;:::-;25971:155;;26143:148;26287:3;26143:148;:::i;:::-;26136:155;;26308:95;26399:3;26390:6;26308:95;:::i;:::-;26301:102;;26420:148;26564:3;26420:148;:::i;:::-;26413:155;;26585:148;26729:3;26585:148;:::i;:::-;26578:155;;26750:95;26841:3;26832:6;26750:95;:::i;:::-;26743:102;;26862:148;27006:3;26862:148;:::i;:::-;26855:155;;27027:148;27171:3;27027:148;:::i;:::-;27020:155;;27192:148;27336:3;27192:148;:::i;:::-;27185:155;;27357:148;27501:3;27357:148;:::i;:::-;27350:155;;27522:3;27515:10;;22892:4639;;;;;;;;:::o;27537:214::-;27677:66;27673:1;27665:6;27661:14;27654:90;27537:214;:::o;27757:402::-;27917:3;27938:85;28020:2;28015:3;27938:85;:::i;:::-;27931:92;;28032:93;28121:3;28032:93;:::i;:::-;28150:2;28145:3;28141:12;28134:19;;27757:402;;;:::o;28165:443::-;28305:66;28301:1;28293:6;28289:14;28282:90;28406:34;28401:2;28393:6;28389:15;28382:59;28475:66;28470:2;28462:6;28458:15;28451:91;28576:24;28571:2;28563:6;28559:15;28552:49;28165:443;:::o;28614:404::-;28774:3;28795:86;28877:3;28872;28795:86;:::i;:::-;28788:93;;28890;28979:3;28890:93;:::i;:::-;29008:3;29003;28999:13;28992:20;;28614:404;;;:::o;29024:214::-;29164:66;29160:1;29152:6;29148:14;29141:90;29024:214;:::o;29244:400::-;29404:3;29425:84;29507:1;29502:3;29425:84;:::i;:::-;29418:91;;29518:93;29607:3;29518:93;:::i;:::-;29636:1;29631:3;29627:11;29620:18;;29244:400;;;:::o;29650:1233::-;30133:3;30155:148;30299:3;30155:148;:::i;:::-;30148:155;;30320:95;30411:3;30402:6;30320:95;:::i;:::-;30313:102;;30432:148;30576:3;30432:148;:::i;:::-;30425:155;;30597:95;30688:3;30679:6;30597:95;:::i;:::-;30590:102;;30709:148;30853:3;30709:148;:::i;:::-;30702:155;;30874:3;30867:10;;29650:1233;;;;;:::o;30889:179::-;31029:31;31025:1;31017:6;31013:14;31006:55;30889:179;:::o;31074:402::-;31234:3;31255:85;31337:2;31332:3;31255:85;:::i;:::-;31248:92;;31349:93;31438:3;31349:93;:::i;:::-;31467:2;31462:3;31458:12;31451:19;;31074:402;;;:::o;31482:541::-;31715:3;31737:148;31881:3;31737:148;:::i;:::-;31730:155;;31902:95;31993:3;31984:6;31902:95;:::i;:::-;31895:102;;32014:3;32007:10;;31482:541;;;;:::o;32029:158::-;32169:10;32165:1;32157:6;32153:14;32146:34;32029:158;:::o;32193:400::-;32353:3;32374:84;32456:1;32451:3;32374:84;:::i;:::-;32367:91;;32467:93;32556:3;32467:93;:::i;:::-;32585:1;32580:3;32576:11;32569:18;;32193:400;;;:::o;32599:541::-;32832:3;32854:148;32998:3;32854:148;:::i;:::-;32847:155;;33019:95;33110:3;33101:6;33019:95;:::i;:::-;33012:102;;33131:3;33124:10;;32599:541;;;;:::o;33146:102::-;33188:8;33235:5;33232:1;33228:13;33207:34;;33146:102;;;:::o;33254:848::-;33315:5;33322:4;33346:6;33337:15;;33370:5;33361:14;;33384:712;33405:1;33395:8;33392:15;33384:712;;;33500:4;33495:3;33491:14;33485:4;33482:24;33479:50;;;33509:18;;:::i;:::-;33479:50;33559:1;33549:8;33545:16;33542:451;;;33974:4;33967:5;33963:16;33954:25;;33542:451;34024:4;34018;34014:15;34006:23;;34054:32;34077:8;34054:32;:::i;:::-;34042:44;;33384:712;;;33254:848;;;;;;;:::o;34108:1073::-;34162:5;34353:8;34343:40;;34374:1;34365:10;;34376:5;;34343:40;34402:4;34392:36;;34419:1;34410:10;;34421:5;;34392:36;34488:4;34536:1;34531:27;;;;34572:1;34567:191;;;;34481:277;;34531:27;34549:1;34540:10;;34551:5;;;34567:191;34612:3;34602:8;34599:17;34596:43;;;34619:18;;:::i;:::-;34596:43;34668:8;34665:1;34661:16;34652:25;;34703:3;34696:5;34693:14;34690:40;;;34710:18;;:::i;:::-;34690:40;34743:5;;;34481:277;;34867:2;34857:8;34854:16;34848:3;34842:4;34839:13;34835:36;34817:2;34807:8;34804:16;34799:2;34793:4;34790:12;34786:35;34770:111;34767:246;;;34923:8;34917:4;34913:19;34904:28;;34958:3;34951:5;34948:14;34945:40;;;34965:18;;:::i;:::-;34945:40;34998:5;;34767:246;35038:42;35076:3;35066:8;35060:4;35057:1;35038:42;:::i;:::-;35023:57;;;;35112:4;35107:3;35103:14;35096:5;35093:25;35090:51;;;35121:18;;:::i;:::-;35090:51;35170:4;35163:5;35159:16;35150:25;;34108:1073;;;;;;:::o;35187:281::-;35245:5;35269:23;35287:4;35269:23;:::i;:::-;35261:31;;35313:25;35329:8;35313:25;:::i;:::-;35301:37;;35357:104;35394:66;35384:8;35378:4;35357:104;:::i;:::-;35348:113;;35187:281;;;;:::o;35474:185::-;35514:1;35531:20;35549:1;35531:20;:::i;:::-;35526:25;;35565:20;35583:1;35565:20;:::i;:::-;35560:25;;35604:1;35594:35;;35609:18;;:::i;:::-;35594:35;35651:1;35648;35644:9;35639:14;;35474:185;;;;:::o;35665:233::-;35704:3;35727:24;35745:5;35727:24;:::i;:::-;35718:33;;35773:66;35766:5;35763:77;35760:103;;35843:18;;:::i;:::-;35760:103;35890:1;35883:5;35879:13;35872:20;;35665:233;;;:::o;35904:180::-;35952:77;35949:1;35942:88;36049:4;36046:1;36039:15;36073:4;36070:1;36063:15;36090:191;36130:3;36149:20;36167:1;36149:20;:::i;:::-;36144:25;;36183:20;36201:1;36183:20;:::i;:::-;36178:25;;36226:1;36223;36219:9;36212:16;;36247:3;36244:1;36241:10;36238:36;;;36254:18;;:::i;:::-;36238:36;36090:191;;;;:::o;36287:275::-;36419:3;36441:95;36532:3;36523:6;36441:95;:::i;:::-;36434:102;;36553:3;36546:10;;36287:275;;;;:::o;36568:410::-;36608:7;36631:20;36649:1;36631:20;:::i;:::-;36626:25;;36665:20;36683:1;36665:20;:::i;:::-;36660:25;;36720:1;36717;36713:9;36742:30;36760:11;36742:30;:::i;:::-;36731:41;;36921:1;36912:7;36908:15;36905:1;36902:22;36882:1;36875:9;36855:83;36832:139;;36951:18;;:::i;:::-;36832:139;36616:362;36568:410;;;;:::o

Swarm Source

ipfs://194b1d5f50ba8ae119902c71aa379d3c7912a52f5a464054dffa87e2dc8d268c
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.