ETH Price: $3,349.83 (-2.01%)

Token

Katakana (KTK)
 

Overview

Max Total Supply

650 KTK

Holders

218

Market

Volume (24H)

N/A

Min Price (24H)

N/A

Max Price (24H)

N/A
Filtered by Token Holder
fcny.eth
Balance
4 KTK
0xb7972c694cb76d4756346a9a7235d90064d8bd8b
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:
Katakana

Compiler Version
v0.8.7+commit.e28d00a7

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2022-03-19
*/

// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts v4.4.1 (utils/Context.sol)
pragma solidity ^0.8.0;
abstract contract Context {
    function _msgSender() internal view virtual returns (address) {
        return msg.sender;
    }
    function _msgData() internal view virtual returns (bytes calldata) {
        return msg.data;
    }
}
// File @openzeppelin/contracts/access/[email protected]
// OpenZeppelin Contracts v4.4.1 (access/Ownable.sol)
abstract contract Ownable is Context {
    address private _owner;
    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);
    constructor() {
        _transferOwnership(_msgSender());
    }
    function owner() public view virtual returns (address) {
        return _owner;
    }
    modifier onlyOwner() {
        require(owner() == _msgSender(), "Ownable: caller is not the owner");
        _;
    }
    function renounceOwnership() public virtual onlyOwner {
        _transferOwnership(address(0));
    }
    function transferOwnership(address newOwner) public virtual onlyOwner {
        require(newOwner != address(0), "Ownable: new owner is the zero address");
        _transferOwnership(newOwner);
    }
    function _transferOwnership(address newOwner) internal virtual {
        address oldOwner = _owner;
        _owner = newOwner;
        emit OwnershipTransferred(oldOwner, newOwner);
    }
}
// File @openzeppelin/contracts/utils/[email protected]
// OpenZeppelin Contracts v4.4.1 (utils/Strings.sol)
library Strings {
    bytes16 private constant _HEX_SYMBOLS = "0123456789abcdef";
    /**
     * @dev Converts a `uint256` to its ASCII `string` decimal representation.
     */
    function toString(uint256 value) internal pure returns (string memory) {
        // Inspired by OraclizeAPI's implementation - MIT licence
        // https://github.com/oraclize/ethereum-api/blob/b42146b063c7d6ee1358846c198246239e9360e8/oraclizeAPI_0.4.25.sol

        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);
    }
    /**
     * @dev Converts a `uint256` to its ASCII `string` hexadecimal representation.
     */
    function toHexString(uint256 value) internal pure returns (string memory) {
        if (value == 0) {
            return "0x00";
        }
        uint256 temp = value;
        uint256 length = 0;
        while (temp != 0) {
            length++;
            temp >>= 8;
        }
        return toHexString(value, length);
    }
    function toHexString(uint256 value, uint256 length) internal pure returns (string memory) {
        bytes memory buffer = new bytes(2 * length + 2);
        buffer[0] = "0";
        buffer[1] = "x";
        for (uint256 i = 2 * length + 1; i > 1; --i) {
            buffer[i] = _HEX_SYMBOLS[value & 0xf];
            value >>= 4;
        }
        require(value == 0, "Strings: hex length insufficient");
        return string(buffer);
    }
}
// OpenZeppelin Contracts v4.4.1 (utils/introspection/IERC165.sol)
interface IERC165 {
    function supportsInterface(bytes4 interfaceId) external view returns (bool);
}
// OpenZeppelin Contracts v4.4.1 (token/ERC721/IERC721.sol)
interface IERC721 is IERC165 {
    event Transfer(address indexed from, address indexed to, uint256 indexed tokenId);
    event Approval(address indexed owner, address indexed approved, uint256 indexed tokenId);
    event ApprovalForAll(address indexed owner, address indexed operator, bool approved);
    function balanceOf(address owner) external view returns (uint256 balance);
    function ownerOf(uint256 tokenId) external view returns (address owner);
    function safeTransferFrom(
        address from,
        address to,
        uint256 tokenId
    ) external;
    function transferFrom(
        address from,
        address to,
        uint256 tokenId
    ) external;
    function approve(address to, uint256 tokenId) external;
    function getApproved(uint256 tokenId) external view returns (address operator);
    function setApprovalForAll(address operator, bool _approved) external;
    function isApprovedForAll(address owner, address operator) external view returns (bool);
    function safeTransferFrom(
        address from,
        address to,
        uint256 tokenId,
        bytes calldata data
    ) external;
}
// OpenZeppelin Contracts v4.4.1 (token/ERC721/IERC721Receiver.sol)
interface IERC721Receiver {
    function onERC721Received(
        address operator,
        address from,
        uint256 tokenId,
        bytes calldata data
    ) external returns (bytes4);
}
// OpenZeppelin Contracts v4.4.1 (token/ERC721/extensions/IERC721Metadata.sol)
interface IERC721Metadata is IERC721 {
    function name() external view returns (string memory);
    function symbol() external view returns (string memory);
    function tokenURI(uint256 tokenId) external view returns (string memory);
}
// OpenZeppelin Contracts v4.4.1 (token/ERC721/extensions/IERC721Enumerable.sol)
interface IERC721Enumerable is IERC721 {
    function totalSupply() external view returns (uint256);
    function tokenOfOwnerByIndex(address owner, uint256 index) external view returns (uint256 tokenId);
    function tokenByIndex(uint256 index) external view returns (uint256);
}
// OpenZeppelin Contracts v4.4.1 (utils/Address.sol)
library Address {
    function isContract(address account) internal view returns (bool) {
        uint256 size;
        assembly {
            size := extcodesize(account)
        }
        return size > 0;
    }
    function sendValue(address payable recipient, uint256 amount) internal {
        require(address(this).balance >= amount, "Address: insufficient balance");
        (bool success, ) = recipient.call{value: amount}("");
        require(success, "Address: unable to send value, recipient may have reverted");
    }
    function functionCall(address target, bytes memory data) internal returns (bytes memory) {
        return functionCall(target, data, "Address: low-level call failed");
    }
    function functionCall(
        address target,
        bytes memory data,
        string memory errorMessage
    ) internal returns (bytes memory) {
        return functionCallWithValue(target, data, 0, errorMessage);
    }
    function functionCallWithValue(
        address target,
        bytes memory data,
        uint256 value
    ) internal returns (bytes memory) {
        return functionCallWithValue(target, data, value, "Address: low-level call with value failed");
    }
    function functionCallWithValue(
        address target,
        bytes memory data,
        uint256 value,
        string memory errorMessage
    ) internal returns (bytes memory) {
        require(address(this).balance >= value, "Address: insufficient balance for call");
        require(isContract(target), "Address: call to non-contract");
        (bool success, bytes memory returndata) = target.call{value: value}(data);
        return verifyCallResult(success, returndata, errorMessage);
    }
    function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) {
        return functionStaticCall(target, data, "Address: low-level static call failed");
    }
    function functionStaticCall(
        address target,
        bytes memory data,
        string memory errorMessage
    ) internal view returns (bytes memory) {
        require(isContract(target), "Address: static call to non-contract");
        (bool success, bytes memory returndata) = target.staticcall(data);
        return verifyCallResult(success, returndata, errorMessage);
    }
    function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) {
        return functionDelegateCall(target, data, "Address: low-level delegate call failed");
    }
    function functionDelegateCall(
        address target,
        bytes memory data,
        string memory errorMessage
    ) internal returns (bytes memory) {
        require(isContract(target), "Address: delegate call to non-contract");
        (bool success, bytes memory returndata) = target.delegatecall(data);
        return verifyCallResult(success, returndata, errorMessage);
    }
    function verifyCallResult(
        bool success,
        bytes memory returndata,
        string memory errorMessage
    ) internal pure returns (bytes memory) {
        if (success) {
            return returndata;
        } else {
            // Look for revert reason and bubble it up if present
            if (returndata.length > 0) {
                // The easiest way to bubble the revert reason is using memory via assembly

                assembly {
                    let returndata_size := mload(returndata)
                    revert(add(32, returndata), returndata_size)
                }
            } else {
                revert(errorMessage);
            }
        }
    }
}
// OpenZeppelin Contracts v4.4.1 (utils/introspection/ERC165.sol)
abstract contract ERC165 is IERC165 {
    /**
     * @dev See {IERC165-supportsInterface}.
     */
    function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {
        return interfaceId == type(IERC165).interfaceId;
    }
}
// File contracts/ERC721A.sol
// Creator: Chiru Labs
contract ERC721A is Context, ERC165, IERC721, IERC721Metadata, IERC721Enumerable {
    using Address for address;
    using Strings for uint256;
    struct TokenOwnership {
        address addr;
        uint64 startTimestamp;
    }
    struct AddressData {
        uint128 balance;
        uint128 numberMinted;
    }
    uint256 internal currentIndex = 0;
    // Token name
    string private _name;
    // Token symbol
    string private _symbol;
    // Mapping from token ID to ownership details
    // An empty struct value does not necessarily mean the token is unowned. See ownershipOf implementation for details.
    mapping(uint256 => TokenOwnership) internal _ownerships;
    // Mapping owner address to address data
    mapping(address => AddressData) private _addressData;
    // Mapping from token ID to approved address
    mapping(uint256 => address) private _tokenApprovals;
    // Mapping from owner to operator approvals
    mapping(address => mapping(address => bool)) private _operatorApprovals;
    constructor(string memory name_, string memory symbol_) {
        _name = name_;
        _symbol = symbol_;
    }
    function totalSupply() public view override returns (uint256) {
        return currentIndex;
    }
    function tokenByIndex(uint256 index) public view override returns (uint256) {
        require(index < totalSupply(), 'ERC721A: global index out of bounds');
        return index;
    }
    function tokenOfOwnerByIndex(address owner, uint256 index) public view override returns (uint256) {
        require(index < balanceOf(owner), 'ERC721A: owner index out of bounds');
        uint256 numMintedSoFar = totalSupply();
        uint256 tokenIdsIdx = 0;
        address currOwnershipAddr = address(0);
        for (uint256 i = 0; i < numMintedSoFar; i++) {
            TokenOwnership memory ownership = _ownerships[i];
            if (ownership.addr != address(0)) {
                currOwnershipAddr = ownership.addr;
            }
            if (currOwnershipAddr == owner) {
                if (tokenIdsIdx == index) {
                    return i;
                }
                tokenIdsIdx++;
            }
        }
        revert('ERC721A: unable to get token of owner by index');
    }
    function supportsInterface(bytes4 interfaceId) public view virtual override(ERC165, IERC165) returns (bool) {
        return
            interfaceId == type(IERC721).interfaceId ||
            interfaceId == type(IERC721Metadata).interfaceId ||
            interfaceId == type(IERC721Enumerable).interfaceId ||
            super.supportsInterface(interfaceId);
    }
    function balanceOf(address owner) public view override returns (uint256) {
        require(owner != address(0), 'ERC721A: balance query for the zero address');
        return uint256(_addressData[owner].balance);
    }
    function _numberMinted(address owner) internal view returns (uint256) {
        require(owner != address(0), 'ERC721A: number minted query for the zero address');
        return uint256(_addressData[owner].numberMinted);
    }
    function ownershipOf(uint256 tokenId) internal view returns (TokenOwnership memory) {
        require(_exists(tokenId), 'ERC721A: owner query for nonexistent token');
        for (uint256 curr = tokenId; ; curr--) {
            TokenOwnership memory ownership = _ownerships[curr];
            if (ownership.addr != address(0)) {
                return ownership;
            }
        }

        revert('ERC721A: unable to determine the owner of token');
    }
    function ownerOf(uint256 tokenId) public view override returns (address) {
        return ownershipOf(tokenId).addr;
    }
    function name() public view virtual override returns (string memory) {
        return _name;
    }
    function symbol() public view virtual override returns (string memory) {
        return _symbol;
    }
    function tokenURI(uint256 tokenId) public view virtual override returns (string memory) {
        require(_exists(tokenId), 'ERC721Metadata: URI query for nonexistent token');
        string memory baseURI = _baseURI();
        return bytes(baseURI).length > 0 ? string(abi.encodePacked(baseURI, tokenId.toString())) : '';
    }
    function _baseURI() internal view virtual returns (string memory) {
        return '';
    }
    function approve(address to, uint256 tokenId) public override {
        address owner = ERC721A.ownerOf(tokenId);
        require(to != owner, 'ERC721A: approval to current owner');
        require(
            _msgSender() == owner || isApprovedForAll(owner, _msgSender()),
            'ERC721A: approve caller is not owner nor approved for all'
        );
        _approve(to, tokenId, owner);
    }
    function getApproved(uint256 tokenId) public view override returns (address) {
        require(_exists(tokenId), 'ERC721A: approved query for nonexistent token');
        return _tokenApprovals[tokenId];
    }
    function setApprovalForAll(address operator, bool approved) public override {
        require(operator != _msgSender(), 'ERC721A: approve to caller');
        _operatorApprovals[_msgSender()][operator] = approved;
        emit ApprovalForAll(_msgSender(), operator, approved);
    }
    function isApprovedForAll(address owner, address operator) public view virtual override returns (bool) {
        return _operatorApprovals[owner][operator];
    }
    function transferFrom(
        address from,
        address to,
        uint256 tokenId
    ) public override {
        _transfer(from, to, tokenId);
    }
    function safeTransferFrom(
        address from,
        address to,
        uint256 tokenId
    ) public override {
        safeTransferFrom(from, to, tokenId, '');
    }
    function safeTransferFrom(
        address from,
        address to,
        uint256 tokenId,
        bytes memory _data
    ) public override {
        _transfer(from, to, tokenId);
        require(
            _checkOnERC721Received(from, to, tokenId, _data),
            'ERC721A: transfer to non ERC721Receiver implementer'
        );
    }
    function _exists(uint256 tokenId) internal view returns (bool) {
        return tokenId < currentIndex;
    }
    function _safeMint(address to, uint256 quantity) internal {
        _safeMint(to, quantity, '');
    }
    function _safeMint(
        address to,
        uint256 quantity,
        bytes memory _data
    ) internal {
        uint256 startTokenId = currentIndex;
        require(to != address(0), 'ERC721A: mint to the zero address');
        // We know if the first token in the batch doesn't exist, the other ones don't as well, because of serial ordering.
        require(!_exists(startTokenId), 'ERC721A: token already minted');
        require(quantity > 0, 'ERC721A: quantity must be greater 0');
        _beforeTokenTransfers(address(0), to, startTokenId, quantity);
        AddressData memory addressData = _addressData[to];
        _addressData[to] = AddressData(
            addressData.balance + uint128(quantity),
            addressData.numberMinted + uint128(quantity)
        );
        _ownerships[startTokenId] = TokenOwnership(to, uint64(block.timestamp));
        uint256 updatedIndex = startTokenId;
        for (uint256 i = 0; i < quantity; i++) {
            emit Transfer(address(0), to, updatedIndex);
            require(
                _checkOnERC721Received(address(0), to, updatedIndex, _data),
                'ERC721A: transfer to non ERC721Receiver implementer'
            );
            updatedIndex++;
        }
        currentIndex = updatedIndex;
        _afterTokenTransfers(address(0), to, startTokenId, quantity);
    }
    function _transfer(
        address from,
        address to,
        uint256 tokenId
    ) private {
        TokenOwnership memory prevOwnership = ownershipOf(tokenId);
        bool isApprovedOrOwner = (_msgSender() == prevOwnership.addr ||
            getApproved(tokenId) == _msgSender() ||
            isApprovedForAll(prevOwnership.addr, _msgSender()));
        require(isApprovedOrOwner, 'ERC721A: transfer caller is not owner nor approved');
        require(prevOwnership.addr == from, 'ERC721A: transfer from incorrect owner');
        require(to != address(0), 'ERC721A: transfer to the zero address');
        _beforeTokenTransfers(from, to, tokenId, 1);
        // Clear approvals from the previous owner
        _approve(address(0), tokenId, prevOwnership.addr);
        // Underflow of the sender's balance is impossible because we check for
        // ownership above and the recipient's balance can't realistically overflow.
        unchecked {
            _addressData[from].balance -= 1;
            _addressData[to].balance += 1;
        }
        _ownerships[tokenId] = TokenOwnership(to, uint64(block.timestamp));
        // If the ownership slot of tokenId+1 is not explicitly set, that means the transfer initiator owns it.
        // Set the slot of tokenId+1 explicitly in storage to maintain correctness for ownerOf(tokenId+1) calls.
        uint256 nextTokenId = tokenId + 1;
        if (_ownerships[nextTokenId].addr == address(0)) {
            if (_exists(nextTokenId)) {
                _ownerships[nextTokenId] = TokenOwnership(prevOwnership.addr, prevOwnership.startTimestamp);
            }
        }
        emit Transfer(from, to, tokenId);
        _afterTokenTransfers(from, to, tokenId, 1);
    }
    function _approve(
        address to,
        uint256 tokenId,
        address owner
    ) private {
        _tokenApprovals[tokenId] = to;
        emit Approval(owner, to, tokenId);
    }
    function _checkOnERC721Received(
        address from,
        address to,
        uint256 tokenId,
        bytes memory _data
    ) private returns (bool) {
        if (to.isContract()) {
            try IERC721Receiver(to).onERC721Received(_msgSender(), from, tokenId, _data) returns (bytes4 retval) {
                return retval == IERC721Receiver(to).onERC721Received.selector;
            } catch (bytes memory reason) {
                if (reason.length == 0) {
                    revert('ERC721A: transfer to non ERC721Receiver implementer');
                } else {
                    assembly {
                        revert(add(32, reason), mload(reason))
                    }
                }
            }
        } else {
            return true;
        }
    }
    function _beforeTokenTransfers(
        address from,
        address to,
        uint256 startTokenId,
        uint256 quantity
    ) internal virtual {}
    function _afterTokenTransfers(
        address from,
        address to,
        uint256 startTokenId,
        uint256 quantity
    ) internal virtual {}
}
contract Katakana is ERC721A, Ownable {
    string public baseURI = "ipfs://QmW9wU1GL1Czuv2uS6LyK6oEyvGYwATTnABzjsXB3reRvC/";
    string public constant baseExtension = ".json";
    address public constant proxyRegistryAddress = 0xa5409ec958C83C3f309868babACA7c86DCB077c1;
    uint256 public constant MAX_PER_TX_FREE = 2;
    uint256 public constant MAX_PER_WALLET = 6;
    uint256 public constant MAX_PER_TX = 2;
    uint256 public constant FREE_MAX_SUPPLY = 500;
    uint256 public constant MAX_SUPPLY = 650;
    uint256 public constant price = 0.005 ether;
    bool public paused = false;
 mapping(address => uint256) public addressMinted;
    constructor() ERC721A("Katakana", "KTK") {}
    function mint(uint256 _amount) external payable {
        address _caller = _msgSender();
        require(!paused, "Paused");
        require(MAX_SUPPLY >= totalSupply() + _amount, "Exceeds max supply");
        require(_amount > 0, "No 0 mints");
        require(tx.origin == _caller, "No contracts");
         require(addressMinted[msg.sender] + _amount <= MAX_PER_WALLET, "Exceeds max per wallet");
        if(FREE_MAX_SUPPLY >= totalSupply()){
            require(MAX_PER_TX_FREE >= _amount , "Excess max per free tx");
        }else{
            require(MAX_PER_TX >= _amount , "Excess max per paid tx");
            require(_amount * price == msg.value, "Invalid funds provided");
        }
       addressMinted[msg.sender] += _amount;
        _safeMint(_caller, _amount);
    }
    function isApprovedForAll(address owner, address operator)
        override
        public
        view
        returns (bool)
    {
       //  Whitelist OpenSea proxy contract for easy trading.
        ProxyRegistry proxyRegistry = ProxyRegistry(proxyRegistryAddress);
        if (address(proxyRegistry.proxies(owner)) == operator) {
            return true;
    }
        return super.isApprovedForAll(owner, operator);
    }
    function withdraw() external onlyOwner {
        uint256 balance = address(this).balance;
        (bool success, ) = _msgSender().call{value: balance}("");
        require(success, "Failed to send");
    }
    function pause(bool _state) external onlyOwner {
        paused = _state;
    }
    function setBaseURI(string memory baseURI_) external onlyOwner {
        baseURI = baseURI_;
    }
    function tokenURI(uint256 _tokenId) public view override returns (string memory) {
        require(_exists(_tokenId), "Token does not exist.");
        return bytes(baseURI).length > 0 ? string(
            abi.encodePacked(
              baseURI,
              Strings.toString(_tokenId),
              baseExtension
            )
        ) : "";
    }
}
contract OwnableDelegateProxy { }
contract ProxyRegistry {
    mapping(address => OwnableDelegateProxy) public proxies;
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"approved","type":"address"},{"indexed":true,"internalType":"uint256","name":"tokenId","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":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":"tokenId","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"FREE_MAX_SUPPLY","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"MAX_PER_TX","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"MAX_PER_TX_FREE","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"MAX_PER_WALLET","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"MAX_SUPPLY","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"addressMinted","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"approve","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"baseExtension","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"baseURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"getApproved","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"operator","type":"address"}],"name":"isApprovedForAll","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"mint","outputs":[],"stateMutability":"payable","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":"tokenId","type":"uint256"}],"name":"ownerOf","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bool","name":"_state","type":"bool"}],"name":"pause","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"paused","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"price","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"proxyRegistryAddress","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":"tokenId","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":"tokenId","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":"string","name":"baseURI_","type":"string"}],"name":"setBaseURI","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"index","type":"uint256"}],"name":"tokenByIndex","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"uint256","name":"index","type":"uint256"}],"name":"tokenOfOwnerByIndex","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"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":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"transferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"withdraw","outputs":[],"stateMutability":"nonpayable","type":"function"}]

60806040526000805560405180606001604052806036815260200162004c0f603691396008908051906020019062000039929190620001f7565b506000600960006101000a81548160ff0219169083151502179055503480156200006257600080fd5b506040518060400160405280600881526020017f4b6174616b616e610000000000000000000000000000000000000000000000008152506040518060400160405280600381526020017f4b544b00000000000000000000000000000000000000000000000000000000008152508160019080519060200190620000e7929190620001f7565b50806002908051906020019062000100929190620001f7565b50505062000123620001176200012960201b60201c565b6200013160201b60201c565b6200030c565b600033905090565b6000600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b8280546200020590620002a7565b90600052602060002090601f01602090048101928262000229576000855562000275565b82601f106200024457805160ff191683800117855562000275565b8280016001018555821562000275579182015b828111156200027457825182559160200191906001019062000257565b5b50905062000284919062000288565b5090565b5b80821115620002a357600081600090555060010162000289565b5090565b60006002820490506001821680620002c057607f821691505b60208210811415620002d757620002d6620002dd565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6148f3806200031c6000396000f3fe6080604052600436106101f95760003560e01c80636c0360eb1161010d578063a22cb465116100a0578063cd7c03261161006f578063cd7c032614610716578063e985e9c514610741578063f2fde38b1461077e578063f43a22dc146107a7578063fa30297e146107d2576101f9565b8063a22cb4651461065c578063b88d4fde14610685578063c6682862146106ae578063c87b56dd146106d9576101f9565b80638da5cb5b116100dc5780638da5cb5b146105bf57806395d89b41146105ea578063a035b1fe14610615578063a0712d6814610640576101f9565b80636c0360eb1461051557806370a0823114610540578063715018a61461057d5780638069876d14610594576101f9565b80632f745c5911610190578063463fff791161015f578063463fff791461041c5780634f6ccce71461044757806355f804b3146104845780635c975abb146104ad5780636352211e146104d8576101f9565b80632f745c591461037457806332cb6b0c146103b15780633ccfd60b146103dc57806342842e0e146103f3576101f9565b8063095ea7b3116101cc578063095ea7b3146102cc5780630f2cdd6c146102f557806318160ddd1461032057806323b872dd1461034b576101f9565b806301ffc9a7146101fe57806302329a291461023b57806306fdde0314610264578063081812fc1461028f575b600080fd5b34801561020a57600080fd5b5061022560048036038101906102209190613189565b61080f565b6040516102329190613879565b60405180910390f35b34801561024757600080fd5b50610262600480360381019061025d919061315c565b610959565b005b34801561027057600080fd5b506102796109f2565b6040516102869190613894565b60405180910390f35b34801561029b57600080fd5b506102b660048036038101906102b19190613259565b610a84565b6040516102c39190613812565b60405180910390f35b3480156102d857600080fd5b506102f360048036038101906102ee919061311c565b610b09565b005b34801561030157600080fd5b5061030a610c22565b6040516103179190613c36565b60405180910390f35b34801561032c57600080fd5b50610335610c27565b6040516103429190613c36565b60405180910390f35b34801561035757600080fd5b50610372600480360381019061036d9190613006565b610c30565b005b34801561038057600080fd5b5061039b6004803603810190610396919061311c565b610c40565b6040516103a89190613c36565b60405180910390f35b3480156103bd57600080fd5b506103c6610e3e565b6040516103d39190613c36565b60405180910390f35b3480156103e857600080fd5b506103f1610e44565b005b3480156103ff57600080fd5b5061041a60048036038101906104159190613006565b610f7c565b005b34801561042857600080fd5b50610431610f9c565b60405161043e9190613c36565b60405180910390f35b34801561045357600080fd5b5061046e60048036038101906104699190613259565b610fa1565b60405161047b9190613c36565b60405180910390f35b34801561049057600080fd5b506104ab60048036038101906104a69190613210565b610ff4565b005b3480156104b957600080fd5b506104c261108a565b6040516104cf9190613879565b60405180910390f35b3480156104e457600080fd5b506104ff60048036038101906104fa9190613259565b61109d565b60405161050c9190613812565b60405180910390f35b34801561052157600080fd5b5061052a6110b3565b6040516105379190613894565b60405180910390f35b34801561054c57600080fd5b5061056760048036038101906105629190612f99565b611141565b6040516105749190613c36565b60405180910390f35b34801561058957600080fd5b5061059261122a565b005b3480156105a057600080fd5b506105a96112b2565b6040516105b69190613c36565b60405180910390f35b3480156105cb57600080fd5b506105d46112b8565b6040516105e19190613812565b60405180910390f35b3480156105f657600080fd5b506105ff6112e2565b60405161060c9190613894565b60405180910390f35b34801561062157600080fd5b5061062a611374565b6040516106379190613c36565b60405180910390f35b61065a60048036038101906106559190613259565b61137f565b005b34801561066857600080fd5b50610683600480360381019061067e91906130dc565b6116c7565b005b34801561069157600080fd5b506106ac60048036038101906106a79190613059565b611848565b005b3480156106ba57600080fd5b506106c36118a4565b6040516106d09190613894565b60405180910390f35b3480156106e557600080fd5b5061070060048036038101906106fb9190613259565b6118dd565b60405161070d9190613894565b60405180910390f35b34801561072257600080fd5b5061072b6119bc565b6040516107389190613812565b60405180910390f35b34801561074d57600080fd5b5061076860048036038101906107639190612fc6565b6119d4565b6040516107759190613879565b60405180910390f35b34801561078a57600080fd5b506107a560048036038101906107a09190612f99565b611ac8565b005b3480156107b357600080fd5b506107bc611bc0565b6040516107c99190613c36565b60405180910390f35b3480156107de57600080fd5b506107f960048036038101906107f49190612f99565b611bc5565b6040516108069190613c36565b60405180910390f35b60007f80ac58cd000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806108da57507f5b5e139f000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b8061094257507f780e9d63000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b80610952575061095182611bdd565b5b9050919050565b610961611c47565b73ffffffffffffffffffffffffffffffffffffffff1661097f6112b8565b73ffffffffffffffffffffffffffffffffffffffff16146109d5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109cc90613a76565b60405180910390fd5b80600960006101000a81548160ff02191690831515021790555050565b606060018054610a0190613fa4565b80601f0160208091040260200160405190810160405280929190818152602001828054610a2d90613fa4565b8015610a7a5780601f10610a4f57610100808354040283529160200191610a7a565b820191906000526020600020905b815481529060010190602001808311610a5d57829003601f168201915b5050505050905090565b6000610a8f82611c4f565b610ace576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ac590613bf6565b60405180910390fd5b6005600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b6000610b148261109d565b90508073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610b85576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b7c90613af6565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16610ba4611c47565b73ffffffffffffffffffffffffffffffffffffffff161480610bd35750610bd281610bcd611c47565b6119d4565b5b610c12576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c09906139d6565b60405180910390fd5b610c1d838383611c5c565b505050565b600681565b60008054905090565b610c3b838383611d0e565b505050565b6000610c4b83611141565b8210610c8c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c83906138b6565b60405180910390fd5b6000610c96610c27565b905060008060005b83811015610dfc576000600360008381526020019081526020016000206040518060400160405290816000820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016000820160149054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815250509050600073ffffffffffffffffffffffffffffffffffffffff16816000015173ffffffffffffffffffffffffffffffffffffffff1614610d9057806000015192505b8773ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610de85786841415610dd9578195505050505050610e38565b8380610de490614007565b9450505b508080610df490614007565b915050610c9e565b506040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e2f90613bb6565b60405180910390fd5b92915050565b61028a81565b610e4c611c47565b73ffffffffffffffffffffffffffffffffffffffff16610e6a6112b8565b73ffffffffffffffffffffffffffffffffffffffff1614610ec0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610eb790613a76565b60405180910390fd5b60004790506000610ecf611c47565b73ffffffffffffffffffffffffffffffffffffffff1682604051610ef2906137fd565b60006040518083038185875af1925050503d8060008114610f2f576040519150601f19603f3d011682016040523d82523d6000602084013e610f34565b606091505b5050905080610f78576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f6f90613b96565b60405180910390fd5b5050565b610f9783838360405180602001604052806000815250611848565b505050565b600281565b6000610fab610c27565b8210610fec576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fe390613976565b60405180910390fd5b819050919050565b610ffc611c47565b73ffffffffffffffffffffffffffffffffffffffff1661101a6112b8565b73ffffffffffffffffffffffffffffffffffffffff1614611070576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161106790613a76565b60405180910390fd5b8060089080519060200190611086929190612d5e565b5050565b600960009054906101000a900460ff1681565b60006110a8826122b5565b600001519050919050565b600880546110c090613fa4565b80601f01602080910402602001604051908101604052809291908181526020018280546110ec90613fa4565b80156111395780601f1061110e57610100808354040283529160200191611139565b820191906000526020600020905b81548152906001019060200180831161111c57829003601f168201915b505050505081565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156111b2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111a990613a16565b60405180910390fd5b600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160009054906101000a90046fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff169050919050565b611232611c47565b73ffffffffffffffffffffffffffffffffffffffff166112506112b8565b73ffffffffffffffffffffffffffffffffffffffff16146112a6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161129d90613a76565b60405180910390fd5b6112b06000612410565b565b6101f481565b6000600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6060600280546112f190613fa4565b80601f016020809104026020016040519081016040528092919081815260200182805461131d90613fa4565b801561136a5780601f1061133f5761010080835404028352916020019161136a565b820191906000526020600020905b81548152906001019060200180831161134d57829003601f168201915b5050505050905090565b6611c37937e0800081565b6000611389611c47565b9050600960009054906101000a900460ff16156113db576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113d2906138d6565b60405180910390fd5b816113e4610c27565b6113ee9190613d81565b61028a1015611432576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611429906139f6565b60405180910390fd5b60008211611475576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161146c90613936565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff163273ffffffffffffffffffffffffffffffffffffffff16146114e3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114da90613c16565b60405180910390fd5b600682600a60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546115309190613d81565b1115611571576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161156890613bd6565b60405180910390fd5b611579610c27565b6101f4106115ca5781600210156115c5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115bc906139b6565b60405180910390fd5b611663565b816002101561160e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161160590613956565b60405180910390fd5b346611c37937e08000836116229190613e08565b14611662576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161165990613ad6565b60405180910390fd5b5b81600a60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546116b29190613d81565b925050819055506116c381836124d6565b5050565b6116cf611c47565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561173d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161173490613a96565b60405180910390fd5b806006600061174a611c47565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff166117f7611c47565b73ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c318360405161183c9190613879565b60405180910390a35050565b611853848484611d0e565b61185f848484846124f4565b61189e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161189590613b36565b60405180910390fd5b50505050565b6040518060400160405280600581526020017f2e6a736f6e00000000000000000000000000000000000000000000000000000081525081565b60606118e882611c4f565b611927576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161191e90613a36565b60405180910390fd5b60006008805461193690613fa4565b90501161195257604051806020016040528060008152506119b5565b600861195d8361268b565b6040518060400160405280600581526020017f2e6a736f6e0000000000000000000000000000000000000000000000000000008152506040516020016119a5939291906137cc565b6040516020818303038152906040525b9050919050565b73a5409ec958c83c3f309868babaca7c86dcb077c181565b60008073a5409ec958c83c3f309868babaca7c86dcb077c190508273ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1663c4552791866040518263ffffffff1660e01b8152600401611a3e9190613812565b60206040518083038186803b158015611a5657600080fd5b505afa158015611a6a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a8e91906131e3565b73ffffffffffffffffffffffffffffffffffffffff161415611ab4576001915050611ac2565b611abe84846127ec565b9150505b92915050565b611ad0611c47565b73ffffffffffffffffffffffffffffffffffffffff16611aee6112b8565b73ffffffffffffffffffffffffffffffffffffffff1614611b44576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b3b90613a76565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611bb4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bab906138f6565b60405180910390fd5b611bbd81612410565b50565b600281565b600a6020528060005260406000206000915090505481565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b600033905090565b6000805482109050919050565b826005600084815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550818373ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a4505050565b6000611d19826122b5565b90506000816000015173ffffffffffffffffffffffffffffffffffffffff16611d40611c47565b73ffffffffffffffffffffffffffffffffffffffff161480611d9c5750611d65611c47565b73ffffffffffffffffffffffffffffffffffffffff16611d8484610a84565b73ffffffffffffffffffffffffffffffffffffffff16145b80611db85750611db78260000151611db2611c47565b6119d4565b5b905080611dfa576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611df190613ab6565b60405180910390fd5b8473ffffffffffffffffffffffffffffffffffffffff16826000015173ffffffffffffffffffffffffffffffffffffffff1614611e6c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e6390613a56565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415611edc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ed390613996565b60405180910390fd5b611ee98585856001612880565b611ef96000848460000151611c5c565b6001600460008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160008282829054906101000a90046fffffffffffffffffffffffffffffffff160392506101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff1602179055506001600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160008282829054906101000a90046fffffffffffffffffffffffffffffffff160192506101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff16021790555060405180604001604052808573ffffffffffffffffffffffffffffffffffffffff1681526020014267ffffffffffffffff168152506003600085815260200190815260200160002060008201518160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060208201518160000160146101000a81548167ffffffffffffffff021916908367ffffffffffffffff16021790555090505060006001846120ff9190613d81565b9050600073ffffffffffffffffffffffffffffffffffffffff166003600083815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614156122455761217581611c4f565b15612244576040518060400160405280846000015173ffffffffffffffffffffffffffffffffffffffff168152602001846020015167ffffffffffffffff168152506003600083815260200190815260200160002060008201518160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060208201518160000160146101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055509050505b5b838573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a46122ad8686866001612886565b505050505050565b6122bd612de4565b6122c682611c4f565b612305576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122fc90613916565b60405180910390fd5b60008290505b6000600360008381526020019081526020016000206040518060400160405290816000820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016000820160149054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815250509050600073ffffffffffffffffffffffffffffffffffffffff16816000015173ffffffffffffffffffffffffffffffffffffffff16146123f757809250505061240b565b50808061240390613f7a565b91505061230b565b919050565b6000600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b6124f082826040518060200160405280600081525061288c565b5050565b60006125158473ffffffffffffffffffffffffffffffffffffffff16612d4b565b1561267e578373ffffffffffffffffffffffffffffffffffffffff1663150b7a0261253e611c47565b8786866040518563ffffffff1660e01b8152600401612560949392919061382d565b602060405180830381600087803b15801561257a57600080fd5b505af19250505080156125ab57506040513d601f19601f820116820180604052508101906125a891906131b6565b60015b61262e573d80600081146125db576040519150601f19603f3d011682016040523d82523d6000602084013e6125e0565b606091505b50600081511415612626576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161261d90613b36565b60405180910390fd5b805181602001fd5b63150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614915050612683565b600190505b949350505050565b606060008214156126d3576040518060400160405280600181526020017f300000000000000000000000000000000000000000000000000000000000000081525090506127e7565b600082905060005b600082146127055780806126ee90614007565b915050600a826126fe9190613dd7565b91506126db565b60008167ffffffffffffffff8111156127215761272061413d565b5b6040519080825280601f01601f1916602001820160405280156127535781602001600182028036833780820191505090505b5090505b600085146127e05760018261276c9190613e62565b9150600a8561277b9190614050565b60306127879190613d81565b60f81b81838151811061279d5761279c61410e565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600a856127d99190613dd7565b9450612757565b8093505050505b919050565b6000600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b50505050565b50505050565b600080549050600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415612902576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128f990613b76565b60405180910390fd5b61290b81611c4f565b1561294b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161294290613b56565b60405180910390fd5b6000831161298e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161298590613b16565b60405180910390fd5b61299b6000858386612880565b6000600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206040518060400160405290816000820160009054906101000a90046fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff1681526020016000820160109054906101000a90046fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff168152505090506040518060400160405280858360000151612a989190613d3b565b6fffffffffffffffffffffffffffffffff168152602001858360200151612abf9190613d3b565b6fffffffffffffffffffffffffffffffff16815250600460008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008201518160000160006101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff16021790555060208201518160000160106101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff16021790555090505060405180604001604052808673ffffffffffffffffffffffffffffffffffffffff1681526020014267ffffffffffffffff168152506003600084815260200190815260200160002060008201518160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060208201518160000160146101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550905050600082905060005b85811015612d2e57818773ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4612cce60008884886124f4565b612d0d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d0490613b36565b60405180910390fd5b8180612d1890614007565b9250508080612d2690614007565b915050612c5d565b5080600081905550612d436000878588612886565b505050505050565b600080823b905060008111915050919050565b828054612d6a90613fa4565b90600052602060002090601f016020900481019282612d8c5760008555612dd3565b82601f10612da557805160ff1916838001178555612dd3565b82800160010185558215612dd3579182015b82811115612dd2578251825591602001919060010190612db7565b5b509050612de09190612e1e565b5090565b6040518060400160405280600073ffffffffffffffffffffffffffffffffffffffff168152602001600067ffffffffffffffff1681525090565b5b80821115612e37576000816000905550600101612e1f565b5090565b6000612e4e612e4984613c76565b613c51565b905082815260208101848484011115612e6a57612e69614171565b5b612e75848285613f38565b509392505050565b6000612e90612e8b84613ca7565b613c51565b905082815260208101848484011115612eac57612eab614171565b5b612eb7848285613f38565b509392505050565b600081359050612ece8161484a565b92915050565b600081359050612ee381614861565b92915050565b600081359050612ef881614878565b92915050565b600081519050612f0d81614878565b92915050565b600082601f830112612f2857612f2761416c565b5b8135612f38848260208601612e3b565b91505092915050565b600081519050612f508161488f565b92915050565b600082601f830112612f6b57612f6a61416c565b5b8135612f7b848260208601612e7d565b91505092915050565b600081359050612f93816148a6565b92915050565b600060208284031215612faf57612fae61417b565b5b6000612fbd84828501612ebf565b91505092915050565b60008060408385031215612fdd57612fdc61417b565b5b6000612feb85828601612ebf565b9250506020612ffc85828601612ebf565b9150509250929050565b60008060006060848603121561301f5761301e61417b565b5b600061302d86828701612ebf565b935050602061303e86828701612ebf565b925050604061304f86828701612f84565b9150509250925092565b600080600080608085870312156130735761307261417b565b5b600061308187828801612ebf565b945050602061309287828801612ebf565b93505060406130a387828801612f84565b925050606085013567ffffffffffffffff8111156130c4576130c3614176565b5b6130d087828801612f13565b91505092959194509250565b600080604083850312156130f3576130f261417b565b5b600061310185828601612ebf565b925050602061311285828601612ed4565b9150509250929050565b600080604083850312156131335761313261417b565b5b600061314185828601612ebf565b925050602061315285828601612f84565b9150509250929050565b6000602082840312156131725761317161417b565b5b600061318084828501612ed4565b91505092915050565b60006020828403121561319f5761319e61417b565b5b60006131ad84828501612ee9565b91505092915050565b6000602082840312156131cc576131cb61417b565b5b60006131da84828501612efe565b91505092915050565b6000602082840312156131f9576131f861417b565b5b600061320784828501612f41565b91505092915050565b6000602082840312156132265761322561417b565b5b600082013567ffffffffffffffff81111561324457613243614176565b5b61325084828501612f56565b91505092915050565b60006020828403121561326f5761326e61417b565b5b600061327d84828501612f84565b91505092915050565b61328f81613e96565b82525050565b61329e81613ea8565b82525050565b60006132af82613ced565b6132b98185613d03565b93506132c9818560208601613f47565b6132d281614180565b840191505092915050565b60006132e882613cf8565b6132f28185613d1f565b9350613302818560208601613f47565b61330b81614180565b840191505092915050565b600061332182613cf8565b61332b8185613d30565b935061333b818560208601613f47565b80840191505092915050565b6000815461335481613fa4565b61335e8186613d30565b94506001821660008114613379576001811461338a576133bd565b60ff198316865281860193506133bd565b61339385613cd8565b60005b838110156133b557815481890152600182019150602081019050613396565b838801955050505b50505092915050565b60006133d3602283613d1f565b91506133de82614191565b604082019050919050565b60006133f6600683613d1f565b9150613401826141e0565b602082019050919050565b6000613419602683613d1f565b915061342482614209565b604082019050919050565b600061343c602a83613d1f565b915061344782614258565b604082019050919050565b600061345f600a83613d1f565b915061346a826142a7565b602082019050919050565b6000613482601683613d1f565b915061348d826142d0565b602082019050919050565b60006134a5602383613d1f565b91506134b0826142f9565b604082019050919050565b60006134c8602583613d1f565b91506134d382614348565b604082019050919050565b60006134eb601683613d1f565b91506134f682614397565b602082019050919050565b600061350e603983613d1f565b9150613519826143c0565b604082019050919050565b6000613531601283613d1f565b915061353c8261440f565b602082019050919050565b6000613554602b83613d1f565b915061355f82614438565b604082019050919050565b6000613577601583613d1f565b915061358282614487565b602082019050919050565b600061359a602683613d1f565b91506135a5826144b0565b604082019050919050565b60006135bd602083613d1f565b91506135c8826144ff565b602082019050919050565b60006135e0601a83613d1f565b91506135eb82614528565b602082019050919050565b6000613603603283613d1f565b915061360e82614551565b604082019050919050565b6000613626601683613d1f565b9150613631826145a0565b602082019050919050565b6000613649602283613d1f565b9150613654826145c9565b604082019050919050565b600061366c600083613d14565b915061367782614618565b600082019050919050565b600061368f602383613d1f565b915061369a8261461b565b604082019050919050565b60006136b2603383613d1f565b91506136bd8261466a565b604082019050919050565b60006136d5601d83613d1f565b91506136e0826146b9565b602082019050919050565b60006136f8602183613d1f565b9150613703826146e2565b604082019050919050565b600061371b600e83613d1f565b915061372682614731565b602082019050919050565b600061373e602e83613d1f565b91506137498261475a565b604082019050919050565b6000613761601683613d1f565b915061376c826147a9565b602082019050919050565b6000613784602d83613d1f565b915061378f826147d2565b604082019050919050565b60006137a7600c83613d1f565b91506137b282614821565b602082019050919050565b6137c681613f2e565b82525050565b60006137d88286613347565b91506137e48285613316565b91506137f08284613316565b9150819050949350505050565b60006138088261365f565b9150819050919050565b60006020820190506138276000830184613286565b92915050565b60006080820190506138426000830187613286565b61384f6020830186613286565b61385c60408301856137bd565b818103606083015261386e81846132a4565b905095945050505050565b600060208201905061388e6000830184613295565b92915050565b600060208201905081810360008301526138ae81846132dd565b905092915050565b600060208201905081810360008301526138cf816133c6565b9050919050565b600060208201905081810360008301526138ef816133e9565b9050919050565b6000602082019050818103600083015261390f8161340c565b9050919050565b6000602082019050818103600083015261392f8161342f565b9050919050565b6000602082019050818103600083015261394f81613452565b9050919050565b6000602082019050818103600083015261396f81613475565b9050919050565b6000602082019050818103600083015261398f81613498565b9050919050565b600060208201905081810360008301526139af816134bb565b9050919050565b600060208201905081810360008301526139cf816134de565b9050919050565b600060208201905081810360008301526139ef81613501565b9050919050565b60006020820190508181036000830152613a0f81613524565b9050919050565b60006020820190508181036000830152613a2f81613547565b9050919050565b60006020820190508181036000830152613a4f8161356a565b9050919050565b60006020820190508181036000830152613a6f8161358d565b9050919050565b60006020820190508181036000830152613a8f816135b0565b9050919050565b60006020820190508181036000830152613aaf816135d3565b9050919050565b60006020820190508181036000830152613acf816135f6565b9050919050565b60006020820190508181036000830152613aef81613619565b9050919050565b60006020820190508181036000830152613b0f8161363c565b9050919050565b60006020820190508181036000830152613b2f81613682565b9050919050565b60006020820190508181036000830152613b4f816136a5565b9050919050565b60006020820190508181036000830152613b6f816136c8565b9050919050565b60006020820190508181036000830152613b8f816136eb565b9050919050565b60006020820190508181036000830152613baf8161370e565b9050919050565b60006020820190508181036000830152613bcf81613731565b9050919050565b60006020820190508181036000830152613bef81613754565b9050919050565b60006020820190508181036000830152613c0f81613777565b9050919050565b60006020820190508181036000830152613c2f8161379a565b9050919050565b6000602082019050613c4b60008301846137bd565b92915050565b6000613c5b613c6c565b9050613c678282613fd6565b919050565b6000604051905090565b600067ffffffffffffffff821115613c9157613c9061413d565b5b613c9a82614180565b9050602081019050919050565b600067ffffffffffffffff821115613cc257613cc161413d565b5b613ccb82614180565b9050602081019050919050565b60008190508160005260206000209050919050565b600081519050919050565b600081519050919050565b600082825260208201905092915050565b600081905092915050565b600082825260208201905092915050565b600081905092915050565b6000613d4682613ef2565b9150613d5183613ef2565b9250826fffffffffffffffffffffffffffffffff03821115613d7657613d75614081565b5b828201905092915050565b6000613d8c82613f2e565b9150613d9783613f2e565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115613dcc57613dcb614081565b5b828201905092915050565b6000613de282613f2e565b9150613ded83613f2e565b925082613dfd57613dfc6140b0565b5b828204905092915050565b6000613e1382613f2e565b9150613e1e83613f2e565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615613e5757613e56614081565b5b828202905092915050565b6000613e6d82613f2e565b9150613e7883613f2e565b925082821015613e8b57613e8a614081565b5b828203905092915050565b6000613ea182613f0e565b9050919050565b60008115159050919050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b6000613eeb82613e96565b9050919050565b60006fffffffffffffffffffffffffffffffff82169050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b82818337600083830152505050565b60005b83811015613f65578082015181840152602081019050613f4a565b83811115613f74576000848401525b50505050565b6000613f8582613f2e565b91506000821415613f9957613f98614081565b5b600182039050919050565b60006002820490506001821680613fbc57607f821691505b60208210811415613fd057613fcf6140df565b5b50919050565b613fdf82614180565b810181811067ffffffffffffffff82111715613ffe57613ffd61413d565b5b80604052505050565b600061401282613f2e565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82141561404557614044614081565b5b600182019050919050565b600061405b82613f2e565b915061406683613f2e565b925082614076576140756140b0565b5b828206905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f455243373231413a206f776e657220696e646578206f7574206f6620626f756e60008201527f6473000000000000000000000000000000000000000000000000000000000000602082015250565b7f5061757365640000000000000000000000000000000000000000000000000000600082015250565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f455243373231413a206f776e657220717565727920666f72206e6f6e6578697360008201527f74656e7420746f6b656e00000000000000000000000000000000000000000000602082015250565b7f4e6f2030206d696e747300000000000000000000000000000000000000000000600082015250565b7f457863657373206d617820706572207061696420747800000000000000000000600082015250565b7f455243373231413a20676c6f62616c20696e646578206f7574206f6620626f7560008201527f6e64730000000000000000000000000000000000000000000000000000000000602082015250565b7f455243373231413a207472616e7366657220746f20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b7f457863657373206d617820706572206672656520747800000000000000000000600082015250565b7f455243373231413a20617070726f76652063616c6c6572206973206e6f74206f60008201527f776e6572206e6f7220617070726f76656420666f7220616c6c00000000000000602082015250565b7f45786365656473206d617820737570706c790000000000000000000000000000600082015250565b7f455243373231413a2062616c616e636520717565727920666f7220746865207a60008201527f65726f2061646472657373000000000000000000000000000000000000000000602082015250565b7f546f6b656e20646f6573206e6f742065786973742e0000000000000000000000600082015250565b7f455243373231413a207472616e736665722066726f6d20696e636f727265637460008201527f206f776e65720000000000000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f455243373231413a20617070726f766520746f2063616c6c6572000000000000600082015250565b7f455243373231413a207472616e736665722063616c6c6572206973206e6f742060008201527f6f776e6572206e6f7220617070726f7665640000000000000000000000000000602082015250565b7f496e76616c69642066756e64732070726f766964656400000000000000000000600082015250565b7f455243373231413a20617070726f76616c20746f2063757272656e74206f776e60008201527f6572000000000000000000000000000000000000000000000000000000000000602082015250565b50565b7f455243373231413a207175616e74697479206d7573742062652067726561746560008201527f7220300000000000000000000000000000000000000000000000000000000000602082015250565b7f455243373231413a207472616e7366657220746f206e6f6e204552433732315260008201527f6563656976657220696d706c656d656e74657200000000000000000000000000602082015250565b7f455243373231413a20746f6b656e20616c7265616479206d696e746564000000600082015250565b7f455243373231413a206d696e7420746f20746865207a65726f2061646472657360008201527f7300000000000000000000000000000000000000000000000000000000000000602082015250565b7f4661696c656420746f2073656e64000000000000000000000000000000000000600082015250565b7f455243373231413a20756e61626c6520746f2067657420746f6b656e206f662060008201527f6f776e657220627920696e646578000000000000000000000000000000000000602082015250565b7f45786365656473206d6178207065722077616c6c657400000000000000000000600082015250565b7f455243373231413a20617070726f76656420717565727920666f72206e6f6e6560008201527f78697374656e7420746f6b656e00000000000000000000000000000000000000602082015250565b7f4e6f20636f6e7472616374730000000000000000000000000000000000000000600082015250565b61485381613e96565b811461485e57600080fd5b50565b61486a81613ea8565b811461487557600080fd5b50565b61488181613eb4565b811461488c57600080fd5b50565b61489881613ee0565b81146148a357600080fd5b50565b6148af81613f2e565b81146148ba57600080fd5b5056fea2646970667358221220df5c0af3ac63a6e826d6d8707d1eb30e8ff49c7b56215b740a7cb7f0ed709b8e64736f6c63430008070033697066733a2f2f516d5739775531474c31437a7576327553364c794b366f4579764759774154546e41427a6a7358423372655276432f

Deployed Bytecode

0x6080604052600436106101f95760003560e01c80636c0360eb1161010d578063a22cb465116100a0578063cd7c03261161006f578063cd7c032614610716578063e985e9c514610741578063f2fde38b1461077e578063f43a22dc146107a7578063fa30297e146107d2576101f9565b8063a22cb4651461065c578063b88d4fde14610685578063c6682862146106ae578063c87b56dd146106d9576101f9565b80638da5cb5b116100dc5780638da5cb5b146105bf57806395d89b41146105ea578063a035b1fe14610615578063a0712d6814610640576101f9565b80636c0360eb1461051557806370a0823114610540578063715018a61461057d5780638069876d14610594576101f9565b80632f745c5911610190578063463fff791161015f578063463fff791461041c5780634f6ccce71461044757806355f804b3146104845780635c975abb146104ad5780636352211e146104d8576101f9565b80632f745c591461037457806332cb6b0c146103b15780633ccfd60b146103dc57806342842e0e146103f3576101f9565b8063095ea7b3116101cc578063095ea7b3146102cc5780630f2cdd6c146102f557806318160ddd1461032057806323b872dd1461034b576101f9565b806301ffc9a7146101fe57806302329a291461023b57806306fdde0314610264578063081812fc1461028f575b600080fd5b34801561020a57600080fd5b5061022560048036038101906102209190613189565b61080f565b6040516102329190613879565b60405180910390f35b34801561024757600080fd5b50610262600480360381019061025d919061315c565b610959565b005b34801561027057600080fd5b506102796109f2565b6040516102869190613894565b60405180910390f35b34801561029b57600080fd5b506102b660048036038101906102b19190613259565b610a84565b6040516102c39190613812565b60405180910390f35b3480156102d857600080fd5b506102f360048036038101906102ee919061311c565b610b09565b005b34801561030157600080fd5b5061030a610c22565b6040516103179190613c36565b60405180910390f35b34801561032c57600080fd5b50610335610c27565b6040516103429190613c36565b60405180910390f35b34801561035757600080fd5b50610372600480360381019061036d9190613006565b610c30565b005b34801561038057600080fd5b5061039b6004803603810190610396919061311c565b610c40565b6040516103a89190613c36565b60405180910390f35b3480156103bd57600080fd5b506103c6610e3e565b6040516103d39190613c36565b60405180910390f35b3480156103e857600080fd5b506103f1610e44565b005b3480156103ff57600080fd5b5061041a60048036038101906104159190613006565b610f7c565b005b34801561042857600080fd5b50610431610f9c565b60405161043e9190613c36565b60405180910390f35b34801561045357600080fd5b5061046e60048036038101906104699190613259565b610fa1565b60405161047b9190613c36565b60405180910390f35b34801561049057600080fd5b506104ab60048036038101906104a69190613210565b610ff4565b005b3480156104b957600080fd5b506104c261108a565b6040516104cf9190613879565b60405180910390f35b3480156104e457600080fd5b506104ff60048036038101906104fa9190613259565b61109d565b60405161050c9190613812565b60405180910390f35b34801561052157600080fd5b5061052a6110b3565b6040516105379190613894565b60405180910390f35b34801561054c57600080fd5b5061056760048036038101906105629190612f99565b611141565b6040516105749190613c36565b60405180910390f35b34801561058957600080fd5b5061059261122a565b005b3480156105a057600080fd5b506105a96112b2565b6040516105b69190613c36565b60405180910390f35b3480156105cb57600080fd5b506105d46112b8565b6040516105e19190613812565b60405180910390f35b3480156105f657600080fd5b506105ff6112e2565b60405161060c9190613894565b60405180910390f35b34801561062157600080fd5b5061062a611374565b6040516106379190613c36565b60405180910390f35b61065a60048036038101906106559190613259565b61137f565b005b34801561066857600080fd5b50610683600480360381019061067e91906130dc565b6116c7565b005b34801561069157600080fd5b506106ac60048036038101906106a79190613059565b611848565b005b3480156106ba57600080fd5b506106c36118a4565b6040516106d09190613894565b60405180910390f35b3480156106e557600080fd5b5061070060048036038101906106fb9190613259565b6118dd565b60405161070d9190613894565b60405180910390f35b34801561072257600080fd5b5061072b6119bc565b6040516107389190613812565b60405180910390f35b34801561074d57600080fd5b5061076860048036038101906107639190612fc6565b6119d4565b6040516107759190613879565b60405180910390f35b34801561078a57600080fd5b506107a560048036038101906107a09190612f99565b611ac8565b005b3480156107b357600080fd5b506107bc611bc0565b6040516107c99190613c36565b60405180910390f35b3480156107de57600080fd5b506107f960048036038101906107f49190612f99565b611bc5565b6040516108069190613c36565b60405180910390f35b60007f80ac58cd000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806108da57507f5b5e139f000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b8061094257507f780e9d63000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b80610952575061095182611bdd565b5b9050919050565b610961611c47565b73ffffffffffffffffffffffffffffffffffffffff1661097f6112b8565b73ffffffffffffffffffffffffffffffffffffffff16146109d5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109cc90613a76565b60405180910390fd5b80600960006101000a81548160ff02191690831515021790555050565b606060018054610a0190613fa4565b80601f0160208091040260200160405190810160405280929190818152602001828054610a2d90613fa4565b8015610a7a5780601f10610a4f57610100808354040283529160200191610a7a565b820191906000526020600020905b815481529060010190602001808311610a5d57829003601f168201915b5050505050905090565b6000610a8f82611c4f565b610ace576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ac590613bf6565b60405180910390fd5b6005600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b6000610b148261109d565b90508073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610b85576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b7c90613af6565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16610ba4611c47565b73ffffffffffffffffffffffffffffffffffffffff161480610bd35750610bd281610bcd611c47565b6119d4565b5b610c12576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c09906139d6565b60405180910390fd5b610c1d838383611c5c565b505050565b600681565b60008054905090565b610c3b838383611d0e565b505050565b6000610c4b83611141565b8210610c8c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c83906138b6565b60405180910390fd5b6000610c96610c27565b905060008060005b83811015610dfc576000600360008381526020019081526020016000206040518060400160405290816000820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016000820160149054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815250509050600073ffffffffffffffffffffffffffffffffffffffff16816000015173ffffffffffffffffffffffffffffffffffffffff1614610d9057806000015192505b8773ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610de85786841415610dd9578195505050505050610e38565b8380610de490614007565b9450505b508080610df490614007565b915050610c9e565b506040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e2f90613bb6565b60405180910390fd5b92915050565b61028a81565b610e4c611c47565b73ffffffffffffffffffffffffffffffffffffffff16610e6a6112b8565b73ffffffffffffffffffffffffffffffffffffffff1614610ec0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610eb790613a76565b60405180910390fd5b60004790506000610ecf611c47565b73ffffffffffffffffffffffffffffffffffffffff1682604051610ef2906137fd565b60006040518083038185875af1925050503d8060008114610f2f576040519150601f19603f3d011682016040523d82523d6000602084013e610f34565b606091505b5050905080610f78576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f6f90613b96565b60405180910390fd5b5050565b610f9783838360405180602001604052806000815250611848565b505050565b600281565b6000610fab610c27565b8210610fec576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fe390613976565b60405180910390fd5b819050919050565b610ffc611c47565b73ffffffffffffffffffffffffffffffffffffffff1661101a6112b8565b73ffffffffffffffffffffffffffffffffffffffff1614611070576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161106790613a76565b60405180910390fd5b8060089080519060200190611086929190612d5e565b5050565b600960009054906101000a900460ff1681565b60006110a8826122b5565b600001519050919050565b600880546110c090613fa4565b80601f01602080910402602001604051908101604052809291908181526020018280546110ec90613fa4565b80156111395780601f1061110e57610100808354040283529160200191611139565b820191906000526020600020905b81548152906001019060200180831161111c57829003601f168201915b505050505081565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156111b2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111a990613a16565b60405180910390fd5b600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160009054906101000a90046fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff169050919050565b611232611c47565b73ffffffffffffffffffffffffffffffffffffffff166112506112b8565b73ffffffffffffffffffffffffffffffffffffffff16146112a6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161129d90613a76565b60405180910390fd5b6112b06000612410565b565b6101f481565b6000600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6060600280546112f190613fa4565b80601f016020809104026020016040519081016040528092919081815260200182805461131d90613fa4565b801561136a5780601f1061133f5761010080835404028352916020019161136a565b820191906000526020600020905b81548152906001019060200180831161134d57829003601f168201915b5050505050905090565b6611c37937e0800081565b6000611389611c47565b9050600960009054906101000a900460ff16156113db576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113d2906138d6565b60405180910390fd5b816113e4610c27565b6113ee9190613d81565b61028a1015611432576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611429906139f6565b60405180910390fd5b60008211611475576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161146c90613936565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff163273ffffffffffffffffffffffffffffffffffffffff16146114e3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114da90613c16565b60405180910390fd5b600682600a60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546115309190613d81565b1115611571576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161156890613bd6565b60405180910390fd5b611579610c27565b6101f4106115ca5781600210156115c5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115bc906139b6565b60405180910390fd5b611663565b816002101561160e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161160590613956565b60405180910390fd5b346611c37937e08000836116229190613e08565b14611662576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161165990613ad6565b60405180910390fd5b5b81600a60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546116b29190613d81565b925050819055506116c381836124d6565b5050565b6116cf611c47565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561173d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161173490613a96565b60405180910390fd5b806006600061174a611c47565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff166117f7611c47565b73ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c318360405161183c9190613879565b60405180910390a35050565b611853848484611d0e565b61185f848484846124f4565b61189e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161189590613b36565b60405180910390fd5b50505050565b6040518060400160405280600581526020017f2e6a736f6e00000000000000000000000000000000000000000000000000000081525081565b60606118e882611c4f565b611927576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161191e90613a36565b60405180910390fd5b60006008805461193690613fa4565b90501161195257604051806020016040528060008152506119b5565b600861195d8361268b565b6040518060400160405280600581526020017f2e6a736f6e0000000000000000000000000000000000000000000000000000008152506040516020016119a5939291906137cc565b6040516020818303038152906040525b9050919050565b73a5409ec958c83c3f309868babaca7c86dcb077c181565b60008073a5409ec958c83c3f309868babaca7c86dcb077c190508273ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1663c4552791866040518263ffffffff1660e01b8152600401611a3e9190613812565b60206040518083038186803b158015611a5657600080fd5b505afa158015611a6a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a8e91906131e3565b73ffffffffffffffffffffffffffffffffffffffff161415611ab4576001915050611ac2565b611abe84846127ec565b9150505b92915050565b611ad0611c47565b73ffffffffffffffffffffffffffffffffffffffff16611aee6112b8565b73ffffffffffffffffffffffffffffffffffffffff1614611b44576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b3b90613a76565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611bb4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bab906138f6565b60405180910390fd5b611bbd81612410565b50565b600281565b600a6020528060005260406000206000915090505481565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b600033905090565b6000805482109050919050565b826005600084815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550818373ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a4505050565b6000611d19826122b5565b90506000816000015173ffffffffffffffffffffffffffffffffffffffff16611d40611c47565b73ffffffffffffffffffffffffffffffffffffffff161480611d9c5750611d65611c47565b73ffffffffffffffffffffffffffffffffffffffff16611d8484610a84565b73ffffffffffffffffffffffffffffffffffffffff16145b80611db85750611db78260000151611db2611c47565b6119d4565b5b905080611dfa576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611df190613ab6565b60405180910390fd5b8473ffffffffffffffffffffffffffffffffffffffff16826000015173ffffffffffffffffffffffffffffffffffffffff1614611e6c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e6390613a56565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415611edc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ed390613996565b60405180910390fd5b611ee98585856001612880565b611ef96000848460000151611c5c565b6001600460008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160008282829054906101000a90046fffffffffffffffffffffffffffffffff160392506101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff1602179055506001600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160008282829054906101000a90046fffffffffffffffffffffffffffffffff160192506101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff16021790555060405180604001604052808573ffffffffffffffffffffffffffffffffffffffff1681526020014267ffffffffffffffff168152506003600085815260200190815260200160002060008201518160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060208201518160000160146101000a81548167ffffffffffffffff021916908367ffffffffffffffff16021790555090505060006001846120ff9190613d81565b9050600073ffffffffffffffffffffffffffffffffffffffff166003600083815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614156122455761217581611c4f565b15612244576040518060400160405280846000015173ffffffffffffffffffffffffffffffffffffffff168152602001846020015167ffffffffffffffff168152506003600083815260200190815260200160002060008201518160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060208201518160000160146101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055509050505b5b838573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a46122ad8686866001612886565b505050505050565b6122bd612de4565b6122c682611c4f565b612305576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122fc90613916565b60405180910390fd5b60008290505b6000600360008381526020019081526020016000206040518060400160405290816000820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016000820160149054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815250509050600073ffffffffffffffffffffffffffffffffffffffff16816000015173ffffffffffffffffffffffffffffffffffffffff16146123f757809250505061240b565b50808061240390613f7a565b91505061230b565b919050565b6000600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b6124f082826040518060200160405280600081525061288c565b5050565b60006125158473ffffffffffffffffffffffffffffffffffffffff16612d4b565b1561267e578373ffffffffffffffffffffffffffffffffffffffff1663150b7a0261253e611c47565b8786866040518563ffffffff1660e01b8152600401612560949392919061382d565b602060405180830381600087803b15801561257a57600080fd5b505af19250505080156125ab57506040513d601f19601f820116820180604052508101906125a891906131b6565b60015b61262e573d80600081146125db576040519150601f19603f3d011682016040523d82523d6000602084013e6125e0565b606091505b50600081511415612626576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161261d90613b36565b60405180910390fd5b805181602001fd5b63150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614915050612683565b600190505b949350505050565b606060008214156126d3576040518060400160405280600181526020017f300000000000000000000000000000000000000000000000000000000000000081525090506127e7565b600082905060005b600082146127055780806126ee90614007565b915050600a826126fe9190613dd7565b91506126db565b60008167ffffffffffffffff8111156127215761272061413d565b5b6040519080825280601f01601f1916602001820160405280156127535781602001600182028036833780820191505090505b5090505b600085146127e05760018261276c9190613e62565b9150600a8561277b9190614050565b60306127879190613d81565b60f81b81838151811061279d5761279c61410e565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600a856127d99190613dd7565b9450612757565b8093505050505b919050565b6000600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b50505050565b50505050565b600080549050600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415612902576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128f990613b76565b60405180910390fd5b61290b81611c4f565b1561294b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161294290613b56565b60405180910390fd5b6000831161298e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161298590613b16565b60405180910390fd5b61299b6000858386612880565b6000600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206040518060400160405290816000820160009054906101000a90046fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff1681526020016000820160109054906101000a90046fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff168152505090506040518060400160405280858360000151612a989190613d3b565b6fffffffffffffffffffffffffffffffff168152602001858360200151612abf9190613d3b565b6fffffffffffffffffffffffffffffffff16815250600460008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008201518160000160006101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff16021790555060208201518160000160106101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff16021790555090505060405180604001604052808673ffffffffffffffffffffffffffffffffffffffff1681526020014267ffffffffffffffff168152506003600084815260200190815260200160002060008201518160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060208201518160000160146101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550905050600082905060005b85811015612d2e57818773ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4612cce60008884886124f4565b612d0d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d0490613b36565b60405180910390fd5b8180612d1890614007565b9250508080612d2690614007565b915050612c5d565b5080600081905550612d436000878588612886565b505050505050565b600080823b905060008111915050919050565b828054612d6a90613fa4565b90600052602060002090601f016020900481019282612d8c5760008555612dd3565b82601f10612da557805160ff1916838001178555612dd3565b82800160010185558215612dd3579182015b82811115612dd2578251825591602001919060010190612db7565b5b509050612de09190612e1e565b5090565b6040518060400160405280600073ffffffffffffffffffffffffffffffffffffffff168152602001600067ffffffffffffffff1681525090565b5b80821115612e37576000816000905550600101612e1f565b5090565b6000612e4e612e4984613c76565b613c51565b905082815260208101848484011115612e6a57612e69614171565b5b612e75848285613f38565b509392505050565b6000612e90612e8b84613ca7565b613c51565b905082815260208101848484011115612eac57612eab614171565b5b612eb7848285613f38565b509392505050565b600081359050612ece8161484a565b92915050565b600081359050612ee381614861565b92915050565b600081359050612ef881614878565b92915050565b600081519050612f0d81614878565b92915050565b600082601f830112612f2857612f2761416c565b5b8135612f38848260208601612e3b565b91505092915050565b600081519050612f508161488f565b92915050565b600082601f830112612f6b57612f6a61416c565b5b8135612f7b848260208601612e7d565b91505092915050565b600081359050612f93816148a6565b92915050565b600060208284031215612faf57612fae61417b565b5b6000612fbd84828501612ebf565b91505092915050565b60008060408385031215612fdd57612fdc61417b565b5b6000612feb85828601612ebf565b9250506020612ffc85828601612ebf565b9150509250929050565b60008060006060848603121561301f5761301e61417b565b5b600061302d86828701612ebf565b935050602061303e86828701612ebf565b925050604061304f86828701612f84565b9150509250925092565b600080600080608085870312156130735761307261417b565b5b600061308187828801612ebf565b945050602061309287828801612ebf565b93505060406130a387828801612f84565b925050606085013567ffffffffffffffff8111156130c4576130c3614176565b5b6130d087828801612f13565b91505092959194509250565b600080604083850312156130f3576130f261417b565b5b600061310185828601612ebf565b925050602061311285828601612ed4565b9150509250929050565b600080604083850312156131335761313261417b565b5b600061314185828601612ebf565b925050602061315285828601612f84565b9150509250929050565b6000602082840312156131725761317161417b565b5b600061318084828501612ed4565b91505092915050565b60006020828403121561319f5761319e61417b565b5b60006131ad84828501612ee9565b91505092915050565b6000602082840312156131cc576131cb61417b565b5b60006131da84828501612efe565b91505092915050565b6000602082840312156131f9576131f861417b565b5b600061320784828501612f41565b91505092915050565b6000602082840312156132265761322561417b565b5b600082013567ffffffffffffffff81111561324457613243614176565b5b61325084828501612f56565b91505092915050565b60006020828403121561326f5761326e61417b565b5b600061327d84828501612f84565b91505092915050565b61328f81613e96565b82525050565b61329e81613ea8565b82525050565b60006132af82613ced565b6132b98185613d03565b93506132c9818560208601613f47565b6132d281614180565b840191505092915050565b60006132e882613cf8565b6132f28185613d1f565b9350613302818560208601613f47565b61330b81614180565b840191505092915050565b600061332182613cf8565b61332b8185613d30565b935061333b818560208601613f47565b80840191505092915050565b6000815461335481613fa4565b61335e8186613d30565b94506001821660008114613379576001811461338a576133bd565b60ff198316865281860193506133bd565b61339385613cd8565b60005b838110156133b557815481890152600182019150602081019050613396565b838801955050505b50505092915050565b60006133d3602283613d1f565b91506133de82614191565b604082019050919050565b60006133f6600683613d1f565b9150613401826141e0565b602082019050919050565b6000613419602683613d1f565b915061342482614209565b604082019050919050565b600061343c602a83613d1f565b915061344782614258565b604082019050919050565b600061345f600a83613d1f565b915061346a826142a7565b602082019050919050565b6000613482601683613d1f565b915061348d826142d0565b602082019050919050565b60006134a5602383613d1f565b91506134b0826142f9565b604082019050919050565b60006134c8602583613d1f565b91506134d382614348565b604082019050919050565b60006134eb601683613d1f565b91506134f682614397565b602082019050919050565b600061350e603983613d1f565b9150613519826143c0565b604082019050919050565b6000613531601283613d1f565b915061353c8261440f565b602082019050919050565b6000613554602b83613d1f565b915061355f82614438565b604082019050919050565b6000613577601583613d1f565b915061358282614487565b602082019050919050565b600061359a602683613d1f565b91506135a5826144b0565b604082019050919050565b60006135bd602083613d1f565b91506135c8826144ff565b602082019050919050565b60006135e0601a83613d1f565b91506135eb82614528565b602082019050919050565b6000613603603283613d1f565b915061360e82614551565b604082019050919050565b6000613626601683613d1f565b9150613631826145a0565b602082019050919050565b6000613649602283613d1f565b9150613654826145c9565b604082019050919050565b600061366c600083613d14565b915061367782614618565b600082019050919050565b600061368f602383613d1f565b915061369a8261461b565b604082019050919050565b60006136b2603383613d1f565b91506136bd8261466a565b604082019050919050565b60006136d5601d83613d1f565b91506136e0826146b9565b602082019050919050565b60006136f8602183613d1f565b9150613703826146e2565b604082019050919050565b600061371b600e83613d1f565b915061372682614731565b602082019050919050565b600061373e602e83613d1f565b91506137498261475a565b604082019050919050565b6000613761601683613d1f565b915061376c826147a9565b602082019050919050565b6000613784602d83613d1f565b915061378f826147d2565b604082019050919050565b60006137a7600c83613d1f565b91506137b282614821565b602082019050919050565b6137c681613f2e565b82525050565b60006137d88286613347565b91506137e48285613316565b91506137f08284613316565b9150819050949350505050565b60006138088261365f565b9150819050919050565b60006020820190506138276000830184613286565b92915050565b60006080820190506138426000830187613286565b61384f6020830186613286565b61385c60408301856137bd565b818103606083015261386e81846132a4565b905095945050505050565b600060208201905061388e6000830184613295565b92915050565b600060208201905081810360008301526138ae81846132dd565b905092915050565b600060208201905081810360008301526138cf816133c6565b9050919050565b600060208201905081810360008301526138ef816133e9565b9050919050565b6000602082019050818103600083015261390f8161340c565b9050919050565b6000602082019050818103600083015261392f8161342f565b9050919050565b6000602082019050818103600083015261394f81613452565b9050919050565b6000602082019050818103600083015261396f81613475565b9050919050565b6000602082019050818103600083015261398f81613498565b9050919050565b600060208201905081810360008301526139af816134bb565b9050919050565b600060208201905081810360008301526139cf816134de565b9050919050565b600060208201905081810360008301526139ef81613501565b9050919050565b60006020820190508181036000830152613a0f81613524565b9050919050565b60006020820190508181036000830152613a2f81613547565b9050919050565b60006020820190508181036000830152613a4f8161356a565b9050919050565b60006020820190508181036000830152613a6f8161358d565b9050919050565b60006020820190508181036000830152613a8f816135b0565b9050919050565b60006020820190508181036000830152613aaf816135d3565b9050919050565b60006020820190508181036000830152613acf816135f6565b9050919050565b60006020820190508181036000830152613aef81613619565b9050919050565b60006020820190508181036000830152613b0f8161363c565b9050919050565b60006020820190508181036000830152613b2f81613682565b9050919050565b60006020820190508181036000830152613b4f816136a5565b9050919050565b60006020820190508181036000830152613b6f816136c8565b9050919050565b60006020820190508181036000830152613b8f816136eb565b9050919050565b60006020820190508181036000830152613baf8161370e565b9050919050565b60006020820190508181036000830152613bcf81613731565b9050919050565b60006020820190508181036000830152613bef81613754565b9050919050565b60006020820190508181036000830152613c0f81613777565b9050919050565b60006020820190508181036000830152613c2f8161379a565b9050919050565b6000602082019050613c4b60008301846137bd565b92915050565b6000613c5b613c6c565b9050613c678282613fd6565b919050565b6000604051905090565b600067ffffffffffffffff821115613c9157613c9061413d565b5b613c9a82614180565b9050602081019050919050565b600067ffffffffffffffff821115613cc257613cc161413d565b5b613ccb82614180565b9050602081019050919050565b60008190508160005260206000209050919050565b600081519050919050565b600081519050919050565b600082825260208201905092915050565b600081905092915050565b600082825260208201905092915050565b600081905092915050565b6000613d4682613ef2565b9150613d5183613ef2565b9250826fffffffffffffffffffffffffffffffff03821115613d7657613d75614081565b5b828201905092915050565b6000613d8c82613f2e565b9150613d9783613f2e565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115613dcc57613dcb614081565b5b828201905092915050565b6000613de282613f2e565b9150613ded83613f2e565b925082613dfd57613dfc6140b0565b5b828204905092915050565b6000613e1382613f2e565b9150613e1e83613f2e565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615613e5757613e56614081565b5b828202905092915050565b6000613e6d82613f2e565b9150613e7883613f2e565b925082821015613e8b57613e8a614081565b5b828203905092915050565b6000613ea182613f0e565b9050919050565b60008115159050919050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b6000613eeb82613e96565b9050919050565b60006fffffffffffffffffffffffffffffffff82169050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b82818337600083830152505050565b60005b83811015613f65578082015181840152602081019050613f4a565b83811115613f74576000848401525b50505050565b6000613f8582613f2e565b91506000821415613f9957613f98614081565b5b600182039050919050565b60006002820490506001821680613fbc57607f821691505b60208210811415613fd057613fcf6140df565b5b50919050565b613fdf82614180565b810181811067ffffffffffffffff82111715613ffe57613ffd61413d565b5b80604052505050565b600061401282613f2e565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82141561404557614044614081565b5b600182019050919050565b600061405b82613f2e565b915061406683613f2e565b925082614076576140756140b0565b5b828206905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f455243373231413a206f776e657220696e646578206f7574206f6620626f756e60008201527f6473000000000000000000000000000000000000000000000000000000000000602082015250565b7f5061757365640000000000000000000000000000000000000000000000000000600082015250565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f455243373231413a206f776e657220717565727920666f72206e6f6e6578697360008201527f74656e7420746f6b656e00000000000000000000000000000000000000000000602082015250565b7f4e6f2030206d696e747300000000000000000000000000000000000000000000600082015250565b7f457863657373206d617820706572207061696420747800000000000000000000600082015250565b7f455243373231413a20676c6f62616c20696e646578206f7574206f6620626f7560008201527f6e64730000000000000000000000000000000000000000000000000000000000602082015250565b7f455243373231413a207472616e7366657220746f20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b7f457863657373206d617820706572206672656520747800000000000000000000600082015250565b7f455243373231413a20617070726f76652063616c6c6572206973206e6f74206f60008201527f776e6572206e6f7220617070726f76656420666f7220616c6c00000000000000602082015250565b7f45786365656473206d617820737570706c790000000000000000000000000000600082015250565b7f455243373231413a2062616c616e636520717565727920666f7220746865207a60008201527f65726f2061646472657373000000000000000000000000000000000000000000602082015250565b7f546f6b656e20646f6573206e6f742065786973742e0000000000000000000000600082015250565b7f455243373231413a207472616e736665722066726f6d20696e636f727265637460008201527f206f776e65720000000000000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f455243373231413a20617070726f766520746f2063616c6c6572000000000000600082015250565b7f455243373231413a207472616e736665722063616c6c6572206973206e6f742060008201527f6f776e6572206e6f7220617070726f7665640000000000000000000000000000602082015250565b7f496e76616c69642066756e64732070726f766964656400000000000000000000600082015250565b7f455243373231413a20617070726f76616c20746f2063757272656e74206f776e60008201527f6572000000000000000000000000000000000000000000000000000000000000602082015250565b50565b7f455243373231413a207175616e74697479206d7573742062652067726561746560008201527f7220300000000000000000000000000000000000000000000000000000000000602082015250565b7f455243373231413a207472616e7366657220746f206e6f6e204552433732315260008201527f6563656976657220696d706c656d656e74657200000000000000000000000000602082015250565b7f455243373231413a20746f6b656e20616c7265616479206d696e746564000000600082015250565b7f455243373231413a206d696e7420746f20746865207a65726f2061646472657360008201527f7300000000000000000000000000000000000000000000000000000000000000602082015250565b7f4661696c656420746f2073656e64000000000000000000000000000000000000600082015250565b7f455243373231413a20756e61626c6520746f2067657420746f6b656e206f662060008201527f6f776e657220627920696e646578000000000000000000000000000000000000602082015250565b7f45786365656473206d6178207065722077616c6c657400000000000000000000600082015250565b7f455243373231413a20617070726f76656420717565727920666f72206e6f6e6560008201527f78697374656e7420746f6b656e00000000000000000000000000000000000000602082015250565b7f4e6f20636f6e7472616374730000000000000000000000000000000000000000600082015250565b61485381613e96565b811461485e57600080fd5b50565b61486a81613ea8565b811461487557600080fd5b50565b61488181613eb4565b811461488c57600080fd5b50565b61489881613ee0565b81146148a357600080fd5b50565b6148af81613f2e565b81146148ba57600080fd5b5056fea2646970667358221220df5c0af3ac63a6e826d6d8707d1eb30e8ff49c7b56215b740a7cb7f0ed709b8e64736f6c63430008070033

Deployed Bytecode Sourcemap

20765:2731:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12135:372;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22938:81;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;13581:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14650:212;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14235:409;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;21096:42;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11007:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15330:162;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;11306:823;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21242:40;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22723:209;;;;;;;;;;;;;:::i;:::-;;15498:177;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;21046:43;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11113:187;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23025:100;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;21339:26;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13451:124;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20810:80;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12513:221;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;922:103;;;;;;;;;;;;;:::i;:::-;;21190:45;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;703:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13687:104;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21289:43;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21473:799;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;14868:286;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15681:355;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;20897:46;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23131:362;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20950:89;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22278:439;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1031:201;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;21145:38;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21369:48;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12135:372;12237:4;12289:25;12274:40;;;:11;:40;;;;:105;;;;12346:33;12331:48;;;:11;:48;;;;12274:105;:172;;;;12411:35;12396:50;;;:11;:50;;;;12274:172;:225;;;;12463:36;12487:11;12463:23;:36::i;:::-;12274:225;12254:245;;12135:372;;;:::o;22938:81::-;847:12;:10;:12::i;:::-;836:23;;:7;:5;:7::i;:::-;:23;;;828:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;23005:6:::1;22996;;:15;;;;;;;;;;;;;;;;;;22938:81:::0;:::o;13581:100::-;13635:13;13668:5;13661:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13581:100;:::o;14650:212::-;14718:7;14746:16;14754:7;14746;:16::i;:::-;14738:74;;;;;;;;;;;;:::i;:::-;;;;;;;;;14830:15;:24;14846:7;14830:24;;;;;;;;;;;;;;;;;;;;;14823:31;;14650:212;;;:::o;14235:409::-;14308:13;14324:24;14340:7;14324:15;:24::i;:::-;14308:40;;14373:5;14367:11;;:2;:11;;;;14359:58;;;;;;;;;;;;:::i;:::-;;;;;;;;;14466:5;14450:21;;:12;:10;:12::i;:::-;:21;;;:62;;;;14475:37;14492:5;14499:12;:10;:12::i;:::-;14475:16;:37::i;:::-;14450:62;14428:169;;;;;;;;;;;;:::i;:::-;;;;;;;;;14608:28;14617:2;14621:7;14630:5;14608:8;:28::i;:::-;14297:347;14235:409;;:::o;21096:42::-;21137:1;21096:42;:::o;11007:100::-;11060:7;11087:12;;11080:19;;11007:100;:::o;15330:162::-;15456:28;15466:4;15472:2;15476:7;15456:9;:28::i;:::-;15330:162;;;:::o;11306:823::-;11395:7;11431:16;11441:5;11431:9;:16::i;:::-;11423:5;:24;11415:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;11497:22;11522:13;:11;:13::i;:::-;11497:38;;11546:19;11580:25;11634:9;11629:426;11653:14;11649:1;:18;11629:426;;;11689:31;11723:11;:14;11735:1;11723:14;;;;;;;;;;;11689:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11782:1;11756:28;;:9;:14;;;:28;;;11752:103;;11825:9;:14;;;11805:34;;11752:103;11894:5;11873:26;;:17;:26;;;11869:175;;;11939:5;11924:11;:20;11920:77;;;11976:1;11969:8;;;;;;;;;11920:77;12015:13;;;;;:::i;:::-;;;;11869:175;11674:381;11669:3;;;;;:::i;:::-;;;;11629:426;;;;12065:56;;;;;;;;;;:::i;:::-;;;;;;;;11306:823;;;;;:::o;21242:40::-;21279:3;21242:40;:::o;22723:209::-;847:12;:10;:12::i;:::-;836:23;;:7;:5;:7::i;:::-;:23;;;828:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;22773:15:::1;22791:21;22773:39;;22824:12;22842;:10;:12::i;:::-;:17;;22867:7;22842:37;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22823:56;;;22898:7;22890:34;;;;;;;;;;;;:::i;:::-;;;;;;;;;22762:170;;22723:209::o:0;15498:177::-;15628:39;15645:4;15651:2;15655:7;15628:39;;;;;;;;;;;;:16;:39::i;:::-;15498:177;;;:::o;21046:43::-;21088:1;21046:43;:::o;11113:187::-;11180:7;11216:13;:11;:13::i;:::-;11208:5;:21;11200:69;;;;;;;;;;;;:::i;:::-;;;;;;;;;11287:5;11280:12;;11113:187;;;:::o;23025:100::-;847:12;:10;:12::i;:::-;836:23;;:7;:5;:7::i;:::-;:23;;;828:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;23109:8:::1;23099:7;:18;;;;;;;;;;;;:::i;:::-;;23025:100:::0;:::o;21339:26::-;;;;;;;;;;;;;:::o;13451:124::-;13515:7;13542:20;13554:7;13542:11;:20::i;:::-;:25;;;13535:32;;13451:124;;;:::o;20810:80::-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;12513:221::-;12577:7;12622:1;12605:19;;:5;:19;;;;12597:75;;;;;;;;;;;;:::i;:::-;;;;;;;;;12698:12;:19;12711:5;12698:19;;;;;;;;;;;;;;;:27;;;;;;;;;;;;12690:36;;12683:43;;12513:221;;;:::o;922:103::-;847:12;:10;:12::i;:::-;836:23;;:7;:5;:7::i;:::-;:23;;;828:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;987:30:::1;1014:1;987:18;:30::i;:::-;922:103::o:0;21190:45::-;21232:3;21190:45;:::o;703:87::-;749:7;776:6;;;;;;;;;;;769:13;;703:87;:::o;13687:104::-;13743:13;13776:7;13769:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13687:104;:::o;21289:43::-;21321:11;21289:43;:::o;21473:799::-;21532:15;21550:12;:10;:12::i;:::-;21532:30;;21582:6;;;;;;;;;;;21581:7;21573:26;;;;;;;;;;;;:::i;:::-;;;;;;;;;21648:7;21632:13;:11;:13::i;:::-;:23;;;;:::i;:::-;21279:3;21618:37;;21610:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;21707:1;21697:7;:11;21689:34;;;;;;;;;;;;:::i;:::-;;;;;;;;;21755:7;21742:20;;:9;:20;;;21734:45;;;;;;;;;;;;:::i;:::-;;;;;;;;;21137:1;21827:7;21799:13;:25;21813:10;21799:25;;;;;;;;;;;;;;;;:35;;;;:::i;:::-;:53;;21791:88;;;;;;;;;;;;:::i;:::-;;;;;;;;;21912:13;:11;:13::i;:::-;21232:3;21893:32;21890:291;;21968:7;21088:1;21949:26;;21941:62;;;;;;;;;;;;:::i;:::-;;;;;;;;;21890:291;;;22056:7;21182:1;22042:21;;22034:57;;;;;;;;;;;;:::i;:::-;;;;;;;;;22133:9;21321:11;22114:7;:15;;;;:::i;:::-;:28;22106:63;;;;;;;;;;;;:::i;:::-;;;;;;;;;21890:291;22219:7;22190:13;:25;22204:10;22190:25;;;;;;;;;;;;;;;;:36;;;;;;;:::i;:::-;;;;;;;;22237:27;22247:7;22256;22237:9;:27::i;:::-;21521:751;21473:799;:::o;14868:286::-;14975:12;:10;:12::i;:::-;14963:24;;:8;:24;;;;14955:63;;;;;;;;;;;;:::i;:::-;;;;;;;;;15074:8;15029:18;:32;15048:12;:10;:12::i;:::-;15029:32;;;;;;;;;;;;;;;:42;15062:8;15029:42;;;;;;;;;;;;;;;;:53;;;;;;;;;;;;;;;;;;15127:8;15098:48;;15113:12;:10;:12::i;:::-;15098:48;;;15137:8;15098:48;;;;;;:::i;:::-;;;;;;;;14868:286;;:::o;15681:355::-;15840:28;15850:4;15856:2;15860:7;15840:9;:28::i;:::-;15901:48;15924:4;15930:2;15934:7;15943:5;15901:22;:48::i;:::-;15879:149;;;;;;;;;;;;:::i;:::-;;;;;;;;;15681:355;;;;:::o;20897:46::-;;;;;;;;;;;;;;;;;;;:::o;23131:362::-;23197:13;23231:17;23239:8;23231:7;:17::i;:::-;23223:51;;;;;;;;;;;;:::i;:::-;;;;;;;;;23316:1;23298:7;23292:21;;;;;:::i;:::-;;;:25;:193;;;;;;;;;;;;;;;;;23374:7;23398:26;23415:8;23398:16;:26::i;:::-;23441:13;;;;;;;;;;;;;;;;;23341:128;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;23292:193;23285:200;;23131:362;;;:::o;20950:89::-;20997:42;20950:89;:::o;22278:439::-;22403:4;22488:27;20997:42;22488:65;;22609:8;22568:49;;22576:13;:21;;;22598:5;22576:28;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;22568:49;;;22564:89;;;22641:4;22634:11;;;;;22564:89;22670:39;22693:5;22700:8;22670:22;:39::i;:::-;22663:46;;;22278:439;;;;;:::o;1031:201::-;847:12;:10;:12::i;:::-;836:23;;:7;:5;:7::i;:::-;:23;;;828:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;1140:1:::1;1120:22;;:8;:22;;;;1112:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;1196:28;1215:8;1196:18;:28::i;:::-;1031:201:::0;:::o;21145:38::-;21182:1;21145:38;:::o;21369:48::-;;;;;;;;;;;;;;;;;:::o;9624:157::-;9709:4;9748:25;9733:40;;;:11;:40;;;;9726:47;;9624:157;;;:::o;145:98::-;198:7;225:10;218:17;;145:98;:::o;16042:111::-;16099:4;16133:12;;16123:7;:22;16116:29;;16042:111;;;:::o;19425:196::-;19567:2;19540:15;:24;19556:7;19540:24;;;;;;;;;;;;:29;;;;;;;;;;;;;;;;;;19605:7;19601:2;19585:28;;19594:5;19585:28;;;;;;;;;;;;19425:196;;;:::o;17654:1765::-;17769:35;17807:20;17819:7;17807:11;:20::i;:::-;17769:58;;17838:22;17880:13;:18;;;17864:34;;:12;:10;:12::i;:::-;:34;;;:87;;;;17939:12;:10;:12::i;:::-;17915:36;;:20;17927:7;17915:11;:20::i;:::-;:36;;;17864:87;:154;;;;17968:50;17985:13;:18;;;18005:12;:10;:12::i;:::-;17968:16;:50::i;:::-;17864:154;17838:181;;18038:17;18030:80;;;;;;;;;;;;:::i;:::-;;;;;;;;;18151:4;18129:26;;:13;:18;;;:26;;;18121:77;;;;;;;;;;;;:::i;:::-;;;;;;;;;18231:1;18217:16;;:2;:16;;;;18209:66;;;;;;;;;;;;:::i;:::-;;;;;;;;;18286:43;18308:4;18314:2;18318:7;18327:1;18286:21;:43::i;:::-;18392:49;18409:1;18413:7;18422:13;:18;;;18392:8;:49::i;:::-;18674:1;18644:12;:18;18657:4;18644:18;;;;;;;;;;;;;;;:26;;;:31;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18718:1;18690:12;:16;18703:2;18690:16;;;;;;;;;;;;;;;:24;;;:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18764:43;;;;;;;;18779:2;18764:43;;;;;;18790:15;18764:43;;;;;18741:11;:20;18753:7;18741:20;;;;;;;;;;;:66;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19045:19;19077:1;19067:7;:11;;;;:::i;:::-;19045:33;;19134:1;19093:43;;:11;:24;19105:11;19093:24;;;;;;;;;;;:29;;;;;;;;;;;;:43;;;19089:227;;;19157:20;19165:11;19157:7;:20::i;:::-;19153:152;;;19225:64;;;;;;;;19240:13;:18;;;19225:64;;;;;;19260:13;:28;;;19225:64;;;;;19198:11;:24;19210:11;19198:24;;;;;;;;;;;:91;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19153:152;19089:227;19350:7;19346:2;19331:27;;19340:4;19331:27;;;;;;;;;;;;19369:42;19390:4;19396:2;19400:7;19409:1;19369:20;:42::i;:::-;17758:1661;;;17654:1765;;;:::o;12975:470::-;13036:21;;:::i;:::-;13078:16;13086:7;13078;:16::i;:::-;13070:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;13157:12;13172:7;13157:22;;13152:216;13206:31;13240:11;:17;13252:4;13240:17;;;;;;;;;;;13206:51;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13302:1;13276:28;;:9;:14;;;:28;;;13272:85;;13332:9;13325:16;;;;;;13272:85;13191:177;13183:6;;;;;:::i;:::-;;;;13152:216;;12975:470;;;;:::o;1238:191::-;1312:16;1331:6;;;;;;;;;;;1312:25;;1357:8;1348:6;;:17;;;;;;;;;;;;;;;;;;1412:8;1381:40;;1402:8;1381:40;;;;;;;;;;;;1301:128;1238:191;:::o;16159:104::-;16228:27;16238:2;16242:8;16228:27;;;;;;;;;;;;:9;:27::i;:::-;16159:104;;:::o;19627:804::-;19782:4;19803:15;:2;:13;;;:15::i;:::-;19799:625;;;19855:2;19839:36;;;19876:12;:10;:12::i;:::-;19890:4;19896:7;19905:5;19839:72;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;19835:534;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20102:1;20085:6;:13;:18;20081:273;;;20128:61;;;;;;;;;;:::i;:::-;;;;;;;;20081:273;20304:6;20298:13;20289:6;20285:2;20281:15;20274:38;19835:534;19972:45;;;19962:55;;;:6;:55;;;;19955:62;;;;;19799:625;20408:4;20401:11;;19627:804;;;;;;;:::o;1732:723::-;1788:13;2018:1;2009:5;:10;2005:53;;;2036:10;;;;;;;;;;;;;;;;;;;;;2005:53;2068:12;2083:5;2068:20;;2099:14;2124:78;2139:1;2131:4;:9;2124:78;;2157:8;;;;;:::i;:::-;;;;2188:2;2180:10;;;;;:::i;:::-;;;2124:78;;;2212:19;2244:6;2234:17;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2212:39;;2262:154;2278:1;2269:5;:10;2262:154;;2306:1;2296:11;;;;;:::i;:::-;;;2373:2;2365:5;:10;;;;:::i;:::-;2352:2;:24;;;;:::i;:::-;2339:39;;2322:6;2329;2322:14;;;;;;;;:::i;:::-;;;;;:56;;;;;;;;;;;2402:2;2393:11;;;;;:::i;:::-;;;2262:154;;;2440:6;2426:21;;;;;1732:723;;;;:::o;15160:164::-;15257:4;15281:18;:25;15300:5;15281:25;;;;;;;;;;;;;;;:35;15307:8;15281:35;;;;;;;;;;;;;;;;;;;;;;;;;15274:42;;15160:164;;;;:::o;20437:159::-;;;;;:::o;20602:158::-;;;;;:::o;16269:1379::-;16392:20;16415:12;;16392:35;;16460:1;16446:16;;:2;:16;;;;16438:62;;;;;;;;;;;;:::i;:::-;;;;;;;;;16645:21;16653:12;16645:7;:21::i;:::-;16644:22;16636:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;16730:1;16719:8;:12;16711:60;;;;;;;;;;;;:::i;:::-;;;;;;;;;16782:61;16812:1;16816:2;16820:12;16834:8;16782:21;:61::i;:::-;16854:30;16887:12;:16;16900:2;16887:16;;;;;;;;;;;;;;;16854:49;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16933:135;;;;;;;;16989:8;16959:11;:19;;;:39;;;;:::i;:::-;16933:135;;;;;;17048:8;17013:11;:24;;;:44;;;;:::i;:::-;16933:135;;;;;16914:12;:16;16927:2;16914:16;;;;;;;;;;;;;;;:154;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17107:43;;;;;;;;17122:2;17107:43;;;;;;17133:15;17107:43;;;;;17079:11;:25;17091:12;17079:25;;;;;;;;;;;:71;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17161:20;17184:12;17161:35;;17212:9;17207:325;17231:8;17227:1;:12;17207:325;;;17291:12;17287:2;17266:38;;17283:1;17266:38;;;;;;;;;;;;17345:59;17376:1;17380:2;17384:12;17398:5;17345:22;:59::i;:::-;17319:172;;;;;;;;;;;;:::i;:::-;;;;;;;;;17506:14;;;;;:::i;:::-;;;;17241:3;;;;;:::i;:::-;;;;17207:325;;;;17557:12;17542;:27;;;;17580:60;17609:1;17613:2;17617:12;17631:8;17580:20;:60::i;:::-;16381:1267;;;16269:1379;;;:::o;5804:196::-;5864:4;5881:12;5948:7;5936:20;5928:28;;5991:1;5984:4;:8;5977:15;;;5804:196;;;:::o;-1:-1:-1:-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;:::o;7:410:1:-;84:5;109:65;125:48;166:6;125:48;:::i;:::-;109:65;:::i;:::-;100:74;;197:6;190:5;183:21;235:4;228:5;224:16;273:3;264:6;259:3;255:16;252:25;249:112;;;280:79;;:::i;:::-;249:112;370:41;404:6;399:3;394;370:41;:::i;:::-;90:327;7:410;;;;;:::o;423:412::-;501:5;526:66;542:49;584:6;542:49;:::i;:::-;526:66;:::i;:::-;517:75;;615:6;608:5;601:21;653:4;646:5;642:16;691:3;682:6;677:3;673:16;670:25;667:112;;;698:79;;:::i;:::-;667:112;788:41;822:6;817:3;812;788:41;:::i;:::-;507:328;423:412;;;;;:::o;841:139::-;887:5;925:6;912:20;903:29;;941:33;968:5;941:33;:::i;:::-;841:139;;;;:::o;986:133::-;1029:5;1067:6;1054:20;1045:29;;1083:30;1107:5;1083:30;:::i;:::-;986:133;;;;:::o;1125:137::-;1170:5;1208:6;1195:20;1186:29;;1224:32;1250:5;1224:32;:::i;:::-;1125:137;;;;:::o;1268:141::-;1324:5;1355:6;1349:13;1340:22;;1371:32;1397:5;1371:32;:::i;:::-;1268:141;;;;:::o;1428:338::-;1483:5;1532:3;1525:4;1517:6;1513:17;1509:27;1499:122;;1540:79;;:::i;:::-;1499:122;1657:6;1644:20;1682:78;1756:3;1748:6;1741:4;1733:6;1729:17;1682:78;:::i;:::-;1673:87;;1489:277;1428:338;;;;:::o;1772:201::-;1858:5;1889:6;1883:13;1874:22;;1905:62;1961:5;1905:62;:::i;:::-;1772:201;;;;:::o;1993:340::-;2049:5;2098:3;2091:4;2083:6;2079:17;2075:27;2065:122;;2106:79;;:::i;:::-;2065:122;2223:6;2210:20;2248:79;2323:3;2315:6;2308:4;2300:6;2296:17;2248:79;:::i;:::-;2239:88;;2055:278;1993:340;;;;:::o;2339:139::-;2385:5;2423:6;2410:20;2401:29;;2439:33;2466:5;2439:33;:::i;:::-;2339:139;;;;:::o;2484:329::-;2543:6;2592:2;2580:9;2571:7;2567:23;2563:32;2560:119;;;2598:79;;:::i;:::-;2560:119;2718:1;2743:53;2788:7;2779:6;2768:9;2764:22;2743:53;:::i;:::-;2733:63;;2689:117;2484:329;;;;:::o;2819:474::-;2887:6;2895;2944:2;2932:9;2923:7;2919:23;2915:32;2912:119;;;2950:79;;:::i;:::-;2912:119;3070:1;3095:53;3140:7;3131:6;3120:9;3116:22;3095:53;:::i;:::-;3085:63;;3041:117;3197:2;3223:53;3268:7;3259:6;3248:9;3244:22;3223:53;:::i;:::-;3213:63;;3168:118;2819:474;;;;;:::o;3299:619::-;3376:6;3384;3392;3441:2;3429:9;3420:7;3416:23;3412:32;3409:119;;;3447:79;;:::i;:::-;3409:119;3567:1;3592:53;3637:7;3628:6;3617:9;3613:22;3592:53;:::i;:::-;3582:63;;3538:117;3694:2;3720:53;3765:7;3756:6;3745:9;3741:22;3720:53;:::i;:::-;3710:63;;3665:118;3822:2;3848:53;3893:7;3884:6;3873:9;3869:22;3848:53;:::i;:::-;3838:63;;3793:118;3299:619;;;;;:::o;3924:943::-;4019:6;4027;4035;4043;4092:3;4080:9;4071:7;4067:23;4063:33;4060:120;;;4099:79;;:::i;:::-;4060:120;4219:1;4244:53;4289:7;4280:6;4269:9;4265:22;4244:53;:::i;:::-;4234:63;;4190:117;4346:2;4372:53;4417:7;4408:6;4397:9;4393:22;4372:53;:::i;:::-;4362:63;;4317:118;4474:2;4500:53;4545:7;4536:6;4525:9;4521:22;4500:53;:::i;:::-;4490:63;;4445:118;4630:2;4619:9;4615:18;4602:32;4661:18;4653:6;4650:30;4647:117;;;4683:79;;:::i;:::-;4647:117;4788:62;4842:7;4833:6;4822:9;4818:22;4788:62;:::i;:::-;4778:72;;4573:287;3924:943;;;;;;;:::o;4873:468::-;4938:6;4946;4995:2;4983:9;4974:7;4970:23;4966:32;4963:119;;;5001:79;;:::i;:::-;4963:119;5121:1;5146:53;5191:7;5182:6;5171:9;5167:22;5146:53;:::i;:::-;5136:63;;5092:117;5248:2;5274:50;5316:7;5307:6;5296:9;5292:22;5274:50;:::i;:::-;5264:60;;5219:115;4873:468;;;;;:::o;5347:474::-;5415:6;5423;5472:2;5460:9;5451:7;5447:23;5443:32;5440:119;;;5478:79;;:::i;:::-;5440:119;5598:1;5623:53;5668:7;5659:6;5648:9;5644:22;5623:53;:::i;:::-;5613:63;;5569:117;5725:2;5751:53;5796:7;5787:6;5776:9;5772:22;5751:53;:::i;:::-;5741:63;;5696:118;5347:474;;;;;:::o;5827:323::-;5883:6;5932:2;5920:9;5911:7;5907:23;5903:32;5900:119;;;5938:79;;:::i;:::-;5900:119;6058:1;6083:50;6125:7;6116:6;6105:9;6101:22;6083:50;:::i;:::-;6073:60;;6029:114;5827:323;;;;:::o;6156:327::-;6214:6;6263:2;6251:9;6242:7;6238:23;6234:32;6231:119;;;6269:79;;:::i;:::-;6231:119;6389:1;6414:52;6458:7;6449:6;6438:9;6434:22;6414:52;:::i;:::-;6404:62;;6360:116;6156:327;;;;:::o;6489:349::-;6558:6;6607:2;6595:9;6586:7;6582:23;6578:32;6575:119;;;6613:79;;:::i;:::-;6575:119;6733:1;6758:63;6813:7;6804:6;6793:9;6789:22;6758:63;:::i;:::-;6748:73;;6704:127;6489:349;;;;:::o;6844:409::-;6943:6;6992:2;6980:9;6971:7;6967:23;6963:32;6960:119;;;6998:79;;:::i;:::-;6960:119;7118:1;7143:93;7228:7;7219:6;7208:9;7204:22;7143:93;:::i;:::-;7133:103;;7089:157;6844:409;;;;:::o;7259:509::-;7328:6;7377:2;7365:9;7356:7;7352:23;7348:32;7345:119;;;7383:79;;:::i;:::-;7345:119;7531:1;7520:9;7516:17;7503:31;7561:18;7553:6;7550:30;7547:117;;;7583:79;;:::i;:::-;7547:117;7688:63;7743:7;7734:6;7723:9;7719:22;7688:63;:::i;:::-;7678:73;;7474:287;7259:509;;;;:::o;7774:329::-;7833:6;7882:2;7870:9;7861:7;7857:23;7853:32;7850:119;;;7888:79;;:::i;:::-;7850:119;8008:1;8033:53;8078:7;8069:6;8058:9;8054:22;8033:53;:::i;:::-;8023:63;;7979:117;7774:329;;;;:::o;8109:118::-;8196:24;8214:5;8196:24;:::i;:::-;8191:3;8184:37;8109:118;;:::o;8233:109::-;8314:21;8329:5;8314:21;:::i;:::-;8309:3;8302:34;8233:109;;:::o;8348:360::-;8434:3;8462:38;8494:5;8462:38;:::i;:::-;8516:70;8579:6;8574:3;8516:70;:::i;:::-;8509:77;;8595:52;8640:6;8635:3;8628:4;8621:5;8617:16;8595:52;:::i;:::-;8672:29;8694:6;8672:29;:::i;:::-;8667:3;8663:39;8656:46;;8438:270;8348:360;;;;:::o;8714:364::-;8802:3;8830:39;8863:5;8830:39;:::i;:::-;8885:71;8949:6;8944:3;8885:71;:::i;:::-;8878:78;;8965:52;9010:6;9005:3;8998:4;8991:5;8987:16;8965:52;:::i;:::-;9042:29;9064:6;9042:29;:::i;:::-;9037:3;9033:39;9026:46;;8806:272;8714:364;;;;:::o;9084:377::-;9190:3;9218:39;9251:5;9218:39;:::i;:::-;9273:89;9355:6;9350:3;9273:89;:::i;:::-;9266:96;;9371:52;9416:6;9411:3;9404:4;9397:5;9393:16;9371:52;:::i;:::-;9448:6;9443:3;9439:16;9432:23;;9194:267;9084:377;;;;:::o;9491:845::-;9594:3;9631:5;9625:12;9660:36;9686:9;9660:36;:::i;:::-;9712:89;9794:6;9789:3;9712:89;:::i;:::-;9705:96;;9832:1;9821:9;9817:17;9848:1;9843:137;;;;9994:1;9989:341;;;;9810:520;;9843:137;9927:4;9923:9;9912;9908:25;9903:3;9896:38;9963:6;9958:3;9954:16;9947:23;;9843:137;;9989:341;10056:38;10088:5;10056:38;:::i;:::-;10116:1;10130:154;10144:6;10141:1;10138:13;10130:154;;;10218:7;10212:14;10208:1;10203:3;10199:11;10192:35;10268:1;10259:7;10255:15;10244:26;;10166:4;10163:1;10159:12;10154:17;;10130:154;;;10313:6;10308:3;10304:16;10297:23;;9996:334;;9810:520;;9598:738;;9491:845;;;;:::o;10342:366::-;10484:3;10505:67;10569:2;10564:3;10505:67;:::i;:::-;10498:74;;10581:93;10670:3;10581:93;:::i;:::-;10699:2;10694:3;10690:12;10683:19;;10342:366;;;:::o;10714:365::-;10856:3;10877:66;10941:1;10936:3;10877:66;:::i;:::-;10870:73;;10952:93;11041:3;10952:93;:::i;:::-;11070:2;11065:3;11061:12;11054:19;;10714:365;;;:::o;11085:366::-;11227:3;11248:67;11312:2;11307:3;11248:67;:::i;:::-;11241:74;;11324:93;11413:3;11324:93;:::i;:::-;11442:2;11437:3;11433:12;11426:19;;11085:366;;;:::o;11457:::-;11599:3;11620:67;11684:2;11679:3;11620:67;:::i;:::-;11613:74;;11696:93;11785:3;11696:93;:::i;:::-;11814:2;11809:3;11805:12;11798:19;;11457:366;;;:::o;11829:::-;11971:3;11992:67;12056:2;12051:3;11992:67;:::i;:::-;11985:74;;12068:93;12157:3;12068:93;:::i;:::-;12186:2;12181:3;12177:12;12170:19;;11829:366;;;:::o;12201:::-;12343:3;12364:67;12428:2;12423:3;12364:67;:::i;:::-;12357:74;;12440:93;12529:3;12440:93;:::i;:::-;12558:2;12553:3;12549:12;12542:19;;12201:366;;;:::o;12573:::-;12715:3;12736:67;12800:2;12795:3;12736:67;:::i;:::-;12729:74;;12812:93;12901:3;12812:93;:::i;:::-;12930:2;12925:3;12921:12;12914:19;;12573:366;;;:::o;12945:::-;13087:3;13108:67;13172:2;13167:3;13108:67;:::i;:::-;13101:74;;13184:93;13273:3;13184:93;:::i;:::-;13302:2;13297:3;13293:12;13286:19;;12945:366;;;:::o;13317:::-;13459:3;13480:67;13544:2;13539:3;13480:67;:::i;:::-;13473:74;;13556:93;13645:3;13556:93;:::i;:::-;13674:2;13669:3;13665:12;13658:19;;13317:366;;;:::o;13689:::-;13831:3;13852:67;13916:2;13911:3;13852:67;:::i;:::-;13845:74;;13928:93;14017:3;13928:93;:::i;:::-;14046:2;14041:3;14037:12;14030:19;;13689:366;;;:::o;14061:::-;14203:3;14224:67;14288:2;14283:3;14224:67;:::i;:::-;14217:74;;14300:93;14389:3;14300:93;:::i;:::-;14418:2;14413:3;14409:12;14402:19;;14061:366;;;:::o;14433:::-;14575:3;14596:67;14660:2;14655:3;14596:67;:::i;:::-;14589:74;;14672:93;14761:3;14672:93;:::i;:::-;14790:2;14785:3;14781:12;14774:19;;14433:366;;;:::o;14805:::-;14947:3;14968:67;15032:2;15027:3;14968:67;:::i;:::-;14961:74;;15044:93;15133:3;15044:93;:::i;:::-;15162:2;15157:3;15153:12;15146:19;;14805:366;;;:::o;15177:::-;15319:3;15340:67;15404:2;15399:3;15340:67;:::i;:::-;15333:74;;15416:93;15505:3;15416:93;:::i;:::-;15534:2;15529:3;15525:12;15518:19;;15177:366;;;:::o;15549:::-;15691:3;15712:67;15776:2;15771:3;15712:67;:::i;:::-;15705:74;;15788:93;15877:3;15788:93;:::i;:::-;15906:2;15901:3;15897:12;15890:19;;15549:366;;;:::o;15921:::-;16063:3;16084:67;16148:2;16143:3;16084:67;:::i;:::-;16077:74;;16160:93;16249:3;16160:93;:::i;:::-;16278:2;16273:3;16269:12;16262:19;;15921:366;;;:::o;16293:::-;16435:3;16456:67;16520:2;16515:3;16456:67;:::i;:::-;16449:74;;16532:93;16621:3;16532:93;:::i;:::-;16650:2;16645:3;16641:12;16634:19;;16293:366;;;:::o;16665:::-;16807:3;16828:67;16892:2;16887:3;16828:67;:::i;:::-;16821:74;;16904:93;16993:3;16904:93;:::i;:::-;17022:2;17017:3;17013:12;17006:19;;16665:366;;;:::o;17037:::-;17179:3;17200:67;17264:2;17259:3;17200:67;:::i;:::-;17193:74;;17276:93;17365:3;17276:93;:::i;:::-;17394:2;17389:3;17385:12;17378:19;;17037:366;;;:::o;17409:398::-;17568:3;17589:83;17670:1;17665:3;17589:83;:::i;:::-;17582:90;;17681:93;17770:3;17681:93;:::i;:::-;17799:1;17794:3;17790:11;17783:18;;17409:398;;;:::o;17813:366::-;17955:3;17976:67;18040:2;18035:3;17976:67;:::i;:::-;17969:74;;18052:93;18141:3;18052:93;:::i;:::-;18170:2;18165:3;18161:12;18154:19;;17813:366;;;:::o;18185:::-;18327:3;18348:67;18412:2;18407:3;18348:67;:::i;:::-;18341:74;;18424:93;18513:3;18424:93;:::i;:::-;18542:2;18537:3;18533:12;18526:19;;18185:366;;;:::o;18557:::-;18699:3;18720:67;18784:2;18779:3;18720:67;:::i;:::-;18713:74;;18796:93;18885:3;18796:93;:::i;:::-;18914:2;18909:3;18905:12;18898:19;;18557:366;;;:::o;18929:::-;19071:3;19092:67;19156:2;19151:3;19092:67;:::i;:::-;19085:74;;19168:93;19257:3;19168:93;:::i;:::-;19286:2;19281:3;19277:12;19270:19;;18929:366;;;:::o;19301:::-;19443:3;19464:67;19528:2;19523:3;19464:67;:::i;:::-;19457:74;;19540:93;19629:3;19540:93;:::i;:::-;19658:2;19653:3;19649:12;19642:19;;19301:366;;;:::o;19673:::-;19815:3;19836:67;19900:2;19895:3;19836:67;:::i;:::-;19829:74;;19912:93;20001:3;19912:93;:::i;:::-;20030:2;20025:3;20021:12;20014:19;;19673:366;;;:::o;20045:::-;20187:3;20208:67;20272:2;20267:3;20208:67;:::i;:::-;20201:74;;20284:93;20373:3;20284:93;:::i;:::-;20402:2;20397:3;20393:12;20386:19;;20045:366;;;:::o;20789:::-;20931:3;20952:67;21016:2;21011:3;20952:67;:::i;:::-;20945:74;;21028:93;21117:3;21028:93;:::i;:::-;21146:2;21141:3;21137:12;21130:19;;20789:366;;;:::o;21161:::-;21303:3;21324:67;21388:2;21383:3;21324:67;:::i;:::-;21317:74;;21400:93;21489:3;21400:93;:::i;:::-;21518:2;21513:3;21509:12;21502:19;;21161:366;;;:::o;21533:118::-;21620:24;21638:5;21620:24;:::i;:::-;21615:3;21608:37;21533:118;;:::o;21657:589::-;21882:3;21904:92;21992:3;21983:6;21904:92;:::i;:::-;21897:99;;22013:95;22104:3;22095:6;22013:95;:::i;:::-;22006:102;;22125:95;22216:3;22207:6;22125:95;:::i;:::-;22118:102;;22237:3;22230:10;;21657:589;;;;;;:::o;22252:379::-;22436:3;22458:147;22601:3;22458:147;:::i;:::-;22451:154;;22622:3;22615:10;;22252:379;;;:::o;22637:222::-;22730:4;22768:2;22757:9;22753:18;22745:26;;22781:71;22849:1;22838:9;22834:17;22825:6;22781:71;:::i;:::-;22637:222;;;;:::o;22865:640::-;23060:4;23098:3;23087:9;23083:19;23075:27;;23112:71;23180:1;23169:9;23165:17;23156:6;23112:71;:::i;:::-;23193:72;23261:2;23250:9;23246:18;23237:6;23193:72;:::i;:::-;23275;23343:2;23332:9;23328:18;23319:6;23275:72;:::i;:::-;23394:9;23388:4;23384:20;23379:2;23368:9;23364:18;23357:48;23422:76;23493:4;23484:6;23422:76;:::i;:::-;23414:84;;22865:640;;;;;;;:::o;23511:210::-;23598:4;23636:2;23625:9;23621:18;23613:26;;23649:65;23711:1;23700:9;23696:17;23687:6;23649:65;:::i;:::-;23511:210;;;;:::o;23727:313::-;23840:4;23878:2;23867:9;23863:18;23855:26;;23927:9;23921:4;23917:20;23913:1;23902:9;23898:17;23891:47;23955:78;24028:4;24019:6;23955:78;:::i;:::-;23947:86;;23727:313;;;;:::o;24046:419::-;24212:4;24250:2;24239:9;24235:18;24227:26;;24299:9;24293:4;24289:20;24285:1;24274:9;24270:17;24263:47;24327:131;24453:4;24327:131;:::i;:::-;24319:139;;24046:419;;;:::o;24471:::-;24637:4;24675:2;24664:9;24660:18;24652:26;;24724:9;24718:4;24714:20;24710:1;24699:9;24695:17;24688:47;24752:131;24878:4;24752:131;:::i;:::-;24744:139;;24471:419;;;:::o;24896:::-;25062:4;25100:2;25089:9;25085:18;25077:26;;25149:9;25143:4;25139:20;25135:1;25124:9;25120:17;25113:47;25177:131;25303:4;25177:131;:::i;:::-;25169:139;;24896:419;;;:::o;25321:::-;25487:4;25525:2;25514:9;25510:18;25502:26;;25574:9;25568:4;25564:20;25560:1;25549:9;25545:17;25538:47;25602:131;25728:4;25602:131;:::i;:::-;25594:139;;25321:419;;;:::o;25746:::-;25912:4;25950:2;25939:9;25935:18;25927:26;;25999:9;25993:4;25989:20;25985:1;25974:9;25970:17;25963:47;26027:131;26153:4;26027:131;:::i;:::-;26019:139;;25746:419;;;:::o;26171:::-;26337:4;26375:2;26364:9;26360:18;26352:26;;26424:9;26418:4;26414:20;26410:1;26399:9;26395:17;26388:47;26452:131;26578:4;26452:131;:::i;:::-;26444:139;;26171:419;;;:::o;26596:::-;26762:4;26800:2;26789:9;26785:18;26777:26;;26849:9;26843:4;26839:20;26835:1;26824:9;26820:17;26813:47;26877:131;27003:4;26877:131;:::i;:::-;26869:139;;26596:419;;;:::o;27021:::-;27187:4;27225:2;27214:9;27210:18;27202:26;;27274:9;27268:4;27264:20;27260:1;27249:9;27245:17;27238:47;27302:131;27428:4;27302:131;:::i;:::-;27294:139;;27021:419;;;:::o;27446:::-;27612:4;27650:2;27639:9;27635:18;27627:26;;27699:9;27693:4;27689:20;27685:1;27674:9;27670:17;27663:47;27727:131;27853:4;27727:131;:::i;:::-;27719:139;;27446:419;;;:::o;27871:::-;28037:4;28075:2;28064:9;28060:18;28052:26;;28124:9;28118:4;28114:20;28110:1;28099:9;28095:17;28088:47;28152:131;28278:4;28152:131;:::i;:::-;28144:139;;27871:419;;;:::o;28296:::-;28462:4;28500:2;28489:9;28485:18;28477:26;;28549:9;28543:4;28539:20;28535:1;28524:9;28520:17;28513:47;28577:131;28703:4;28577:131;:::i;:::-;28569:139;;28296:419;;;:::o;28721:::-;28887:4;28925:2;28914:9;28910:18;28902:26;;28974:9;28968:4;28964:20;28960:1;28949:9;28945:17;28938:47;29002:131;29128:4;29002:131;:::i;:::-;28994:139;;28721:419;;;:::o;29146:::-;29312:4;29350:2;29339:9;29335:18;29327:26;;29399:9;29393:4;29389:20;29385:1;29374:9;29370:17;29363:47;29427:131;29553:4;29427:131;:::i;:::-;29419:139;;29146:419;;;:::o;29571:::-;29737:4;29775:2;29764:9;29760:18;29752:26;;29824:9;29818:4;29814:20;29810:1;29799:9;29795:17;29788:47;29852:131;29978:4;29852:131;:::i;:::-;29844:139;;29571:419;;;:::o;29996:::-;30162:4;30200:2;30189:9;30185:18;30177:26;;30249:9;30243:4;30239:20;30235:1;30224:9;30220:17;30213:47;30277:131;30403:4;30277:131;:::i;:::-;30269:139;;29996:419;;;:::o;30421:::-;30587:4;30625:2;30614:9;30610:18;30602:26;;30674:9;30668:4;30664:20;30660:1;30649:9;30645:17;30638:47;30702:131;30828:4;30702:131;:::i;:::-;30694:139;;30421:419;;;:::o;30846:::-;31012:4;31050:2;31039:9;31035:18;31027:26;;31099:9;31093:4;31089:20;31085:1;31074:9;31070:17;31063:47;31127:131;31253:4;31127:131;:::i;:::-;31119:139;;30846:419;;;:::o;31271:::-;31437:4;31475:2;31464:9;31460:18;31452:26;;31524:9;31518:4;31514:20;31510:1;31499:9;31495:17;31488:47;31552:131;31678:4;31552:131;:::i;:::-;31544:139;;31271:419;;;:::o;31696:::-;31862:4;31900:2;31889:9;31885:18;31877:26;;31949:9;31943:4;31939:20;31935:1;31924:9;31920:17;31913:47;31977:131;32103:4;31977:131;:::i;:::-;31969:139;;31696:419;;;:::o;32121:::-;32287:4;32325:2;32314:9;32310:18;32302:26;;32374:9;32368:4;32364:20;32360:1;32349:9;32345:17;32338:47;32402:131;32528:4;32402:131;:::i;:::-;32394:139;;32121:419;;;:::o;32546:::-;32712:4;32750:2;32739:9;32735:18;32727:26;;32799:9;32793:4;32789:20;32785:1;32774:9;32770:17;32763:47;32827:131;32953:4;32827:131;:::i;:::-;32819:139;;32546:419;;;:::o;32971:::-;33137:4;33175:2;33164:9;33160:18;33152:26;;33224:9;33218:4;33214:20;33210:1;33199:9;33195:17;33188:47;33252:131;33378:4;33252:131;:::i;:::-;33244:139;;32971:419;;;:::o;33396:::-;33562:4;33600:2;33589:9;33585:18;33577:26;;33649:9;33643:4;33639:20;33635:1;33624:9;33620:17;33613:47;33677:131;33803:4;33677:131;:::i;:::-;33669:139;;33396:419;;;:::o;33821:::-;33987:4;34025:2;34014:9;34010:18;34002:26;;34074:9;34068:4;34064:20;34060:1;34049:9;34045:17;34038:47;34102:131;34228:4;34102:131;:::i;:::-;34094:139;;33821:419;;;:::o;34246:::-;34412:4;34450:2;34439:9;34435:18;34427:26;;34499:9;34493:4;34489:20;34485:1;34474:9;34470:17;34463:47;34527:131;34653:4;34527:131;:::i;:::-;34519:139;;34246:419;;;:::o;34671:::-;34837:4;34875:2;34864:9;34860:18;34852:26;;34924:9;34918:4;34914:20;34910:1;34899:9;34895:17;34888:47;34952:131;35078:4;34952:131;:::i;:::-;34944:139;;34671:419;;;:::o;35521:::-;35687:4;35725:2;35714:9;35710:18;35702:26;;35774:9;35768:4;35764:20;35760:1;35749:9;35745:17;35738:47;35802:131;35928:4;35802:131;:::i;:::-;35794:139;;35521:419;;;:::o;35946:::-;36112:4;36150:2;36139:9;36135:18;36127:26;;36199:9;36193:4;36189:20;36185:1;36174:9;36170:17;36163:47;36227:131;36353:4;36227:131;:::i;:::-;36219:139;;35946:419;;;:::o;36371:222::-;36464:4;36502:2;36491:9;36487:18;36479:26;;36515:71;36583:1;36572:9;36568:17;36559:6;36515:71;:::i;:::-;36371:222;;;;:::o;36599:129::-;36633:6;36660:20;;:::i;:::-;36650:30;;36689:33;36717:4;36709:6;36689:33;:::i;:::-;36599:129;;;:::o;36734:75::-;36767:6;36800:2;36794:9;36784:19;;36734:75;:::o;36815:307::-;36876:4;36966:18;36958:6;36955:30;36952:56;;;36988:18;;:::i;:::-;36952:56;37026:29;37048:6;37026:29;:::i;:::-;37018:37;;37110:4;37104;37100:15;37092:23;;36815:307;;;:::o;37128:308::-;37190:4;37280:18;37272:6;37269:30;37266:56;;;37302:18;;:::i;:::-;37266:56;37340:29;37362:6;37340:29;:::i;:::-;37332:37;;37424:4;37418;37414:15;37406:23;;37128:308;;;:::o;37442:141::-;37491:4;37514:3;37506:11;;37537:3;37534:1;37527:14;37571:4;37568:1;37558:18;37550:26;;37442:141;;;:::o;37589:98::-;37640:6;37674:5;37668:12;37658:22;;37589:98;;;:::o;37693:99::-;37745:6;37779:5;37773:12;37763:22;;37693:99;;;:::o;37798:168::-;37881:11;37915:6;37910:3;37903:19;37955:4;37950:3;37946:14;37931:29;;37798:168;;;;:::o;37972:147::-;38073:11;38110:3;38095:18;;37972:147;;;;:::o;38125:169::-;38209:11;38243:6;38238:3;38231:19;38283:4;38278:3;38274:14;38259:29;;38125:169;;;;:::o;38300:148::-;38402:11;38439:3;38424:18;;38300:148;;;;:::o;38454:273::-;38494:3;38513:20;38531:1;38513:20;:::i;:::-;38508:25;;38547:20;38565:1;38547:20;:::i;:::-;38542:25;;38669:1;38633:34;38629:42;38626:1;38623:49;38620:75;;;38675:18;;:::i;:::-;38620:75;38719:1;38716;38712:9;38705:16;;38454:273;;;;:::o;38733:305::-;38773:3;38792:20;38810:1;38792:20;:::i;:::-;38787:25;;38826:20;38844:1;38826:20;:::i;:::-;38821:25;;38980:1;38912:66;38908:74;38905:1;38902:81;38899:107;;;38986:18;;:::i;:::-;38899:107;39030:1;39027;39023:9;39016:16;;38733:305;;;;:::o;39044:185::-;39084:1;39101:20;39119:1;39101:20;:::i;:::-;39096:25;;39135:20;39153:1;39135:20;:::i;:::-;39130:25;;39174:1;39164:35;;39179:18;;:::i;:::-;39164:35;39221:1;39218;39214:9;39209:14;;39044:185;;;;:::o;39235:348::-;39275:7;39298:20;39316:1;39298:20;:::i;:::-;39293:25;;39332:20;39350:1;39332:20;:::i;:::-;39327:25;;39520:1;39452:66;39448:74;39445:1;39442:81;39437:1;39430:9;39423:17;39419:105;39416:131;;;39527:18;;:::i;:::-;39416:131;39575:1;39572;39568:9;39557:20;;39235:348;;;;:::o;39589:191::-;39629:4;39649:20;39667:1;39649:20;:::i;:::-;39644:25;;39683:20;39701:1;39683:20;:::i;:::-;39678:25;;39722:1;39719;39716:8;39713:34;;;39727:18;;:::i;:::-;39713:34;39772:1;39769;39765:9;39757:17;;39589:191;;;;:::o;39786:96::-;39823:7;39852:24;39870:5;39852:24;:::i;:::-;39841:35;;39786:96;;;:::o;39888:90::-;39922:7;39965:5;39958:13;39951:21;39940:32;;39888:90;;;:::o;39984:149::-;40020:7;40060:66;40053:5;40049:78;40038:89;;39984:149;;;:::o;40139:125::-;40205:7;40234:24;40252:5;40234:24;:::i;:::-;40223:35;;40139:125;;;:::o;40270:118::-;40307:7;40347:34;40340:5;40336:46;40325:57;;40270:118;;;:::o;40394:126::-;40431:7;40471:42;40464:5;40460:54;40449:65;;40394:126;;;:::o;40526:77::-;40563:7;40592:5;40581:16;;40526:77;;;:::o;40609:154::-;40693:6;40688:3;40683;40670:30;40755:1;40746:6;40741:3;40737:16;40730:27;40609:154;;;:::o;40769:307::-;40837:1;40847:113;40861:6;40858:1;40855:13;40847:113;;;40946:1;40941:3;40937:11;40931:18;40927:1;40922:3;40918:11;40911:39;40883:2;40880:1;40876:10;40871:15;;40847:113;;;40978:6;40975:1;40972:13;40969:101;;;41058:1;41049:6;41044:3;41040:16;41033:27;40969:101;40818:258;40769:307;;;:::o;41082:171::-;41121:3;41144:24;41162:5;41144:24;:::i;:::-;41135:33;;41190:4;41183:5;41180:15;41177:41;;;41198:18;;:::i;:::-;41177:41;41245:1;41238:5;41234:13;41227:20;;41082:171;;;:::o;41259:320::-;41303:6;41340:1;41334:4;41330:12;41320:22;;41387:1;41381:4;41377:12;41408:18;41398:81;;41464:4;41456:6;41452:17;41442:27;;41398:81;41526:2;41518:6;41515:14;41495:18;41492:38;41489:84;;;41545:18;;:::i;:::-;41489:84;41310:269;41259:320;;;:::o;41585:281::-;41668:27;41690:4;41668:27;:::i;:::-;41660:6;41656:40;41798:6;41786:10;41783:22;41762:18;41750:10;41747:34;41744:62;41741:88;;;41809:18;;:::i;:::-;41741:88;41849:10;41845:2;41838:22;41628:238;41585:281;;:::o;41872:233::-;41911:3;41934:24;41952:5;41934:24;:::i;:::-;41925:33;;41980:66;41973:5;41970:77;41967:103;;;42050:18;;:::i;:::-;41967:103;42097:1;42090:5;42086:13;42079:20;;41872:233;;;:::o;42111:176::-;42143:1;42160:20;42178:1;42160:20;:::i;:::-;42155:25;;42194:20;42212:1;42194:20;:::i;:::-;42189:25;;42233:1;42223:35;;42238:18;;:::i;:::-;42223:35;42279:1;42276;42272:9;42267:14;;42111:176;;;;:::o;42293:180::-;42341:77;42338:1;42331:88;42438:4;42435:1;42428:15;42462:4;42459:1;42452:15;42479:180;42527:77;42524:1;42517:88;42624:4;42621:1;42614:15;42648:4;42645:1;42638:15;42665:180;42713:77;42710:1;42703:88;42810:4;42807:1;42800:15;42834:4;42831:1;42824:15;42851:180;42899:77;42896:1;42889:88;42996:4;42993:1;42986:15;43020:4;43017:1;43010:15;43037:180;43085:77;43082:1;43075:88;43182:4;43179:1;43172:15;43206:4;43203:1;43196:15;43223:117;43332:1;43329;43322:12;43346:117;43455:1;43452;43445:12;43469:117;43578:1;43575;43568:12;43592:117;43701:1;43698;43691:12;43715:102;43756:6;43807:2;43803:7;43798:2;43791:5;43787:14;43783:28;43773:38;;43715:102;;;:::o;43823:221::-;43963:34;43959:1;43951:6;43947:14;43940:58;44032:4;44027:2;44019:6;44015:15;44008:29;43823:221;:::o;44050:156::-;44190:8;44186:1;44178:6;44174:14;44167:32;44050:156;:::o;44212:225::-;44352:34;44348:1;44340:6;44336:14;44329:58;44421:8;44416:2;44408:6;44404:15;44397:33;44212:225;:::o;44443:229::-;44583:34;44579:1;44571:6;44567:14;44560:58;44652:12;44647:2;44639:6;44635:15;44628:37;44443:229;:::o;44678:160::-;44818:12;44814:1;44806:6;44802:14;44795:36;44678:160;:::o;44844:172::-;44984:24;44980:1;44972:6;44968:14;44961:48;44844:172;:::o;45022:222::-;45162:34;45158:1;45150:6;45146:14;45139:58;45231:5;45226:2;45218:6;45214:15;45207:30;45022:222;:::o;45250:224::-;45390:34;45386:1;45378:6;45374:14;45367:58;45459:7;45454:2;45446:6;45442:15;45435:32;45250:224;:::o;45480:172::-;45620:24;45616:1;45608:6;45604:14;45597:48;45480:172;:::o;45658:244::-;45798:34;45794:1;45786:6;45782:14;45775:58;45867:27;45862:2;45854:6;45850:15;45843:52;45658:244;:::o;45908:168::-;46048:20;46044:1;46036:6;46032:14;46025:44;45908:168;:::o;46082:230::-;46222:34;46218:1;46210:6;46206:14;46199:58;46291:13;46286:2;46278:6;46274:15;46267:38;46082:230;:::o;46318:171::-;46458:23;46454:1;46446:6;46442:14;46435:47;46318:171;:::o;46495:225::-;46635:34;46631:1;46623:6;46619:14;46612:58;46704:8;46699:2;46691:6;46687:15;46680:33;46495:225;:::o;46726:182::-;46866:34;46862:1;46854:6;46850:14;46843:58;46726:182;:::o;46914:176::-;47054:28;47050:1;47042:6;47038:14;47031:52;46914:176;:::o;47096:237::-;47236:34;47232:1;47224:6;47220:14;47213:58;47305:20;47300:2;47292:6;47288:15;47281:45;47096:237;:::o;47339:172::-;47479:24;47475:1;47467:6;47463:14;47456:48;47339:172;:::o;47517:221::-;47657:34;47653:1;47645:6;47641:14;47634:58;47726:4;47721:2;47713:6;47709:15;47702:29;47517:221;:::o;47744:114::-;;:::o;47864:222::-;48004:34;48000:1;47992:6;47988:14;47981:58;48073:5;48068:2;48060:6;48056:15;48049:30;47864:222;:::o;48092:238::-;48232:34;48228:1;48220:6;48216:14;48209:58;48301:21;48296:2;48288:6;48284:15;48277:46;48092:238;:::o;48336:179::-;48476:31;48472:1;48464:6;48460:14;48453:55;48336:179;:::o;48521:220::-;48661:34;48657:1;48649:6;48645:14;48638:58;48730:3;48725:2;48717:6;48713:15;48706:28;48521:220;:::o;48747:164::-;48887:16;48883:1;48875:6;48871:14;48864:40;48747:164;:::o;48917:233::-;49057:34;49053:1;49045:6;49041:14;49034:58;49126:16;49121:2;49113:6;49109:15;49102:41;48917:233;:::o;49156:172::-;49296:24;49292:1;49284:6;49280:14;49273:48;49156:172;:::o;49574:232::-;49714:34;49710:1;49702:6;49698:14;49691:58;49783:15;49778:2;49770:6;49766:15;49759:40;49574:232;:::o;49812:162::-;49952:14;49948:1;49940:6;49936:14;49929:38;49812:162;:::o;49980:122::-;50053:24;50071:5;50053:24;:::i;:::-;50046:5;50043:35;50033:63;;50092:1;50089;50082:12;50033:63;49980:122;:::o;50108:116::-;50178:21;50193:5;50178:21;:::i;:::-;50171:5;50168:32;50158:60;;50214:1;50211;50204:12;50158:60;50108:116;:::o;50230:120::-;50302:23;50319:5;50302:23;:::i;:::-;50295:5;50292:34;50282:62;;50340:1;50337;50330:12;50282:62;50230:120;:::o;50356:180::-;50458:53;50505:5;50458:53;:::i;:::-;50451:5;50448:64;50438:92;;50526:1;50523;50516:12;50438:92;50356:180;:::o;50542:122::-;50615:24;50633:5;50615:24;:::i;:::-;50608:5;50605:35;50595:63;;50654:1;50651;50644:12;50595:63;50542:122;:::o

Swarm Source

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