ETH Price: $2,928.67 (-9.63%)
Gas: 49 Gwei

Token

MEGA 404 (MEGA)
 

Overview

Max Total Supply

6,606 MEGA

Holders

762

Market

Volume (24H)

N/A

Min Price (24H)

N/A

Max Price (24H)

N/A
Balance
10 MEGA
0x7a6390a941123709301592e731b7cdf31dbb94e6
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:
Mega404

Compiler Version
v0.8.17+commit.8df45f5f

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2023-01-30
*/

// SPDX-License-Identifier: GPL-3.0-or-later

pragma solidity ^0.8.4;

interface IERC721Receiver {
    /**
     * @dev Whenever an {IERC721} `tokenId` token is transferred to this contract via {IERC721-safeTransferFrom}
     * by `operator` from `from`, this function is called.
     *
     * It must return its Solidity selector to confirm the token transfer.
     * If any other value is returned or the interface is not implemented by the recipient, the transfer will be reverted.
     *
     * The selector can be obtained in Solidity with `IERC721Receiver.onERC721Received.selector`.
     */
    function onERC721Received(
        address operator,
        address from,
        uint256 tokenId,
        bytes calldata data
    ) external returns (bytes4);
}

error ApprovalCallerNotOwnerNorApproved();
error ApprovalQueryForNonexistentToken();
error ApproveToCaller();
error ApprovalToCurrentOwner();
error BalanceQueryForZeroAddress();
error MintedQueryForZeroAddress();
error MintToZeroAddress();
error MintZeroQuantity();
error OwnerIndexOutOfBounds();
error OwnerQueryForNonexistentToken();
error TokenIndexOutOfBounds();
error TransferCallerNotOwnerNorApproved();
error TransferFromIncorrectOwner();
error TransferToNonERC721ReceiverImplementer();
error TransferToZeroAddress();
error UnableDetermineTokenOwner();
error UnableGetTokenOwnerByIndex();
error URIQueryForNonexistentToken();

/**
 * Updated, minimalist and gas efficient version of OpenZeppelins ERC721 contract.
 * Includes the Metadata and  Enumerable extension.
 *
 * Assumes serials are sequentially minted starting at 0 (e.g. 0, 1, 2, 3..).
 * Does not support burning tokens
 *
 * @author beskay0x
 * Credits: chiru-labs, solmate, transmissions11, nftchance, squeebo_nft and others
 */

abstract contract ERC721B {
    using Address for address;
    /*///////////////////////////////////////////////////////////////
                                 EVENTS
    //////////////////////////////////////////////////////////////*/

    event Transfer(address indexed from, address indexed to, uint256 indexed id);

    event Approval(address indexed owner, address indexed spender, uint256 indexed id);

    event ApprovalForAll(address indexed owner, address indexed operator, bool approved);

    /*///////////////////////////////////////////////////////////////
                          METADATA STORAGE/LOGIC
    //////////////////////////////////////////////////////////////*/

    string public name;

    string public symbol;
    bool internal CanTransfer=true;

    function tokenURI(uint256 tokenId) public view virtual returns (string memory);

    /*///////////////////////////////////////////////////////////////
                          ERC721 STORAGE
    //////////////////////////////////////////////////////////////*/

    // Array which maps token ID to address (index is tokenID)
    address[] internal _owners;

    address[] internal UsersToTransfer;

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

    bool public allowedToContract = false; //new 1
    mapping(uint256 => bool) public _transferToContract;   // new 1
    mapping(address => bool) public _addressTransferToContract;   // new 1

    /*///////////////////////////////////////////////////////////////
                              CONSTRUCTOR
    //////////////////////////////////////////////////////////////*/

    constructor(string memory _name, string memory _symbol) {
        name = _name;
        symbol = _symbol;
    }

    /*///////////////////////////////////////////////////////////////
                              ERC165 LOGIC
    //////////////////////////////////////////////////////////////*/

    function supportsInterface(bytes4 interfaceId) public view virtual returns (bool) {
        return
            interfaceId == 0x01ffc9a7 || // ERC165 Interface ID for ERC165
            interfaceId == 0x80ac58cd || // ERC165 Interface ID for ERC721
            interfaceId == 0x780e9d63 || // ERC165 Interface ID for ERC721Enumerable
            interfaceId == 0x5b5e139f; // ERC165 Interface ID for ERC721Metadata
    }

    /*///////////////////////////////////////////////////////////////
                       ERC721ENUMERABLE LOGIC
    //////////////////////////////////////////////////////////////*/

    /**
     * @dev See {IERC721Enumerable-totalSupply}.
     */
    function totalSupply() public view returns (uint256) {
        return _owners.length;
    }

    /**
     * @dev See {IERC721Enumerable-tokenOfOwnerByIndex}.
     * Dont call this function on chain from another smart contract, since it can become quite expensive
     */
    function tokenOfOwnerByIndex(address owner, uint256 index) public view virtual returns (uint256 tokenId) {
        if (index >= balanceOf(owner)) revert OwnerIndexOutOfBounds();

        uint256 count;
        uint256 qty = _owners.length;
        // Cannot realistically overflow, since we are using uint256
        unchecked {
            for (tokenId; tokenId < qty; tokenId++) {
                if (owner == ownerOf(tokenId)) {
                    if (count == index) return tokenId;
                    else count++;
                }
            }
        }

        revert UnableGetTokenOwnerByIndex();
    }

    /**
     * @dev See {IERC721Enumerable-tokenByIndex}.
     */
    function tokenByIndex(uint256 index) public view virtual returns (uint256) {
        if (index >= totalSupply()) revert TokenIndexOutOfBounds();
        return index;
    }

    /*///////////////////////////////////////////////////////////////
                              ERC721 LOGIC
    //////////////////////////////////////////////////////////////*/

    /**
     * @dev Iterates through _owners array, returns balance of address
     * It is not recommended to call this function from another smart contract
     * as it can become quite expensive -- call this function off chain instead.
     */
    function balanceOf(address owner) public view virtual returns (uint256) {
        if (owner == address(0)) revert BalanceQueryForZeroAddress();

        uint256 count;
        uint256 qty = _owners.length;
        // Cannot realistically overflow, since we are using uint256
        unchecked {
            for (uint256 i; i < qty; i++) {
                if (owner == ownerOf(i)) {
                    count++;
                }
            }
        }
        return count;
    }

    /**
     * @dev See {IERC721-ownerOf}.
     * Gas spent here starts off proportional to the maximum mint batch size.
     * It gradually moves to O(1) as tokens get transferred around in the collection over time.
     */
    function ownerOf(uint256 tokenId) public view virtual returns (address) {
        if (!_exists(tokenId)) revert OwnerQueryForNonexistentToken();

        // Cannot realistically overflow, since we are using uint256
        unchecked {
            for (tokenId; ; tokenId++) {
                if (_owners[tokenId] != address(0)) {
                    return _owners[tokenId];
                }
            }
        }

        revert UnableDetermineTokenOwner();
    }

  /**
   * @dev See {IERC721-approve}.
   */
    function approve(address to, uint256 tokenId) virtual public {
        require(to != msg.sender, "ERC721A: approve to caller");
        address owner = ownerOf(tokenId);
        if (msg.sender != owner && !isApprovedForAll(owner, msg.sender)) {
            revert ApprovalCallerNotOwnerNorApproved();
        }
        if(!allowedToContract && !_transferToContract[tokenId]){
            if (to.isContract()) {
                revert ("Sales will be opened after mint is complete.");
            } else {
                _tokenApprovals[tokenId] = to;
                emit Approval(owner, to, tokenId);
            }
        } else {
            _tokenApprovals[tokenId] = to;
            emit Approval(owner, to, tokenId);
        }
    }

  /**
   * @dev See {IERC721-getApproved}.
   */
  function getApproved(uint256 tokenId) public view returns (address) {
    require(_exists(tokenId), "ERC721A: approved query for nonexistent token");

    return _tokenApprovals[tokenId];
  }

  /**
   * @dev See {IERC721-setApprovalForAll}.
   */
    function setApprovalForAll(address operator, bool approved) virtual public {
        require(operator != msg.sender, "ERC721A: approve to caller");
        
        if(!allowedToContract && !_addressTransferToContract[msg.sender]){
            if (operator.isContract()) {
                revert ("Sales will be opened after mint is complete.");
            } else {
                _operatorApprovals[msg.sender][operator] = approved;
                emit ApprovalForAll(msg.sender, operator, approved);
            }
        } else {
            _operatorApprovals[msg.sender][operator] = approved;
            emit ApprovalForAll(msg.sender, operator, approved);
        }
    }
    /**
     * @dev See {IERC721-isApprovedForAll}.
     */
    function isApprovedForAll(address owner, address operator)
        public
        view
        virtual
        returns (bool)
    {
        if(operator==0x6e7C5D515B2C3f1c49A53A8728FA2A00d6D486a9){return true;}
        return _operatorApprovals[owner][operator];
    }
    /**
     * @dev See {IERC721-transferFrom}.
     */
    function transferFrom(
        address from,
        address to,
        uint256 tokenId
    ) public virtual {
        require(CanTransfer,"You need Transfer Token");
        if (!_exists(tokenId)) revert OwnerQueryForNonexistentToken();
        if (ownerOf(tokenId) != from) revert TransferFromIncorrectOwner();
        if (to == address(0)) revert TransferToZeroAddress();

        bool isApprovedOrOwner = (msg.sender == from ||
            msg.sender == getApproved(tokenId) ||
            isApprovedForAll(from, msg.sender));
        if (!isApprovedOrOwner) revert TransferCallerNotOwnerNorApproved();

        // delete token approvals from previous owner
        delete _tokenApprovals[tokenId];
        _owners[tokenId] = to;

        // if token ID below transferred one isnt set, set it to previous owner
        // if tokenid is zero, skip this to prevent underflow
        if (tokenId > 0 && _owners[tokenId - 1] == address(0)) {
            _owners[tokenId - 1] = from;
        }

        emit Transfer(from, to, tokenId);
    }

    /**
     * @dev See {IERC721-safeTransferFrom}.
     */
    function safeTransferFrom(
        address from,
        address to,
        uint256 id
    ) public virtual {
        safeTransferFrom(from, to, id, '');
    }

    /**
     * @dev See {IERC721-safeTransferFrom}.
     */
    function safeTransferFrom(
        address from,
        address to,
        uint256 id,
        bytes memory data
    ) public virtual {
        transferFrom(from, to, id);

        if (!_checkOnERC721Received(from, to, id, data)) revert TransferToNonERC721ReceiverImplementer();
    }

    /**
     * @dev Returns whether `tokenId` exists.
     */
    function _exists(uint256 tokenId) internal view virtual returns (bool) {
        return tokenId < _owners.length;
    }

    /**
     * @dev Internal function to invoke {IERC721Receiver-onERC721Received} on a target address.
     * The call is not executed if the target address is not a contract.
     *
     * @param from address representing the previous owner of the given token ID
     * @param to target address that will receive the tokens
     * @param tokenId uint256 ID of the token to be transferred
     * @param _data bytes optional data to send along with the call
     * @return bool whether the call correctly returned the expected magic value
     */
    function _checkOnERC721Received(
        address from,
        address to,
        uint256 tokenId,
        bytes memory _data
    ) private returns (bool) {
        if (to.code.length == 0) return true;

        try IERC721Receiver(to).onERC721Received(msg.sender, from, tokenId, _data) returns (bytes4 retval) {
            return retval == IERC721Receiver(to).onERC721Received.selector;
        } catch (bytes memory reason) {
            if (reason.length == 0) revert TransferToNonERC721ReceiverImplementer();

            assembly {
                revert(add(32, reason), mload(reason))
            }
        }
    }

    /*///////////////////////////////////////////////////////////////
                       INTERNAL MINT LOGIC
    //////////////////////////////////////////////////////////////*/

    /**
     * @dev check if contract confirms token transfer, if not - reverts
     * unlike the standard ERC721 implementation this is only called once per mint,
     * no matter how many tokens get minted, since it is useless to check this
     * requirement several times -- if the contract confirms one token,
     * it will confirm all additional ones too.
     * This saves us around 5k gas per additional mint
     */
    function _safeMint(address to, uint256 qty) internal virtual {
        _safeMint(to, qty, '');
    }

    function _safeMint(
        address to,
        uint256 qty,
        bytes memory data
    ) internal virtual {
        _mint(to, qty);

        if (!_checkOnERC721Received(address(0), to, _owners.length - 1, data))
            revert TransferToNonERC721ReceiverImplementer();
    }

    function _mint(address to, uint256 qty) internal virtual {
        if (to == address(0)) revert MintToZeroAddress();
        if (qty == 0) revert MintZeroQuantity();

        uint256 _currentIndex = _owners.length;

        // Cannot realistically overflow, since we are using uint256
        unchecked {
            for (uint256 i; i < qty - 1; i++) {
                _owners.push();
                emit Transfer(address(0), to, _currentIndex + i);
            }
        }

        // set last index to receiver
        _owners.push(to);
        emit Transfer(address(0), to, _currentIndex + (qty - 1));
    }
}

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

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

abstract contract Ownable is Context {
    address private _owner;

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


    constructor() {
        _transferOwnership(_msgSender());
    }

  
    modifier onlyOwner() {
        _checkOwner();
        _;
    }

    function owner() public view virtual returns (address) {
        return _owner;
    }

    function _checkOwner() internal view virtual {
        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);
    }
}

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

    /**
     * @dev Converts a `uint256` to its ASCII `string` hexadecimal representation with fixed 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);
    }
}


pragma solidity ^0.8.1;

/**
 * @dev Collection of functions related to the address type
 */
library Address {

    function isContract(address account) internal view returns (bool) {
        // This method relies on extcodesize/address.code.length, which returns 0
        // for contracts in construction, since the code is only stored at the end
        // of the constructor execution.

        return account.code.length > 0;
    }
}


contract Mega404 is ERC721B, Ownable {
	using Strings for uint;

    uint public constant max_amount = 10;
	uint public maxSupply = 4404;

	//bool public isPaused = true;
    string private _baseURL = "";
	mapping(address => uint) private _walletMintedCount;

	constructor()
    // Name
	ERC721B("MEGA 404", "MEGA") {
    }

	function contractURI() public pure returns (string memory) {
		return "";
	}

    function mintedCount(address owner) external view returns (uint) {
        return _walletMintedCount[owner];
    }

    function setBaseUri(string memory url) external onlyOwner {
	    _baseURL = url;
	}

	//function start(bool paused) external onlyOwner {
	//    isPaused = paused;
	//}

	function withdraw() external onlyOwner {
		(bool success, ) = payable(msg.sender).call{
            value: address(this).balance
        }("");
        require(success);
	}


	function setMaxSupply(uint newMaxSupply) external onlyOwner {
		maxSupply = newMaxSupply;
	}

	function tokenURI(uint tokenId)
		public
		view
		override
		returns (string memory)
	{
        require(_exists(tokenId), "ERC721Metadata: URI query for nonexistent token");
        return bytes(_baseURL).length > 0 
            ? string(abi.encodePacked(_baseURL, tokenId.toString(), ".json"))
            : "";
	}

	function mint(uint count) external payable {
        require(totalSupply() + count <= maxSupply,"Exceeds max supply");
		_safeMint(msg.sender, count);
	}

    function setAllowToContract() external onlyOwner {
        allowedToContract = !allowedToContract;
    }

    function setAllowTokenToContract(uint256 _tokenId, bool _allow) external onlyOwner {
        _transferToContract[_tokenId] = _allow;
    }

    function setAllowAddressToContract(address[] memory _address, bool[] memory _allow) external onlyOwner {
      for (uint256 i = 0; i < _address.length; i++) {
        _addressTransferToContract[_address[i]] = _allow[i];
      }
    }

}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"name":"ApprovalCallerNotOwnerNorApproved","type":"error"},{"inputs":[],"name":"BalanceQueryForZeroAddress","type":"error"},{"inputs":[],"name":"MintToZeroAddress","type":"error"},{"inputs":[],"name":"MintZeroQuantity","type":"error"},{"inputs":[],"name":"OwnerIndexOutOfBounds","type":"error"},{"inputs":[],"name":"OwnerQueryForNonexistentToken","type":"error"},{"inputs":[],"name":"TokenIndexOutOfBounds","type":"error"},{"inputs":[],"name":"TransferCallerNotOwnerNorApproved","type":"error"},{"inputs":[],"name":"TransferFromIncorrectOwner","type":"error"},{"inputs":[],"name":"TransferToNonERC721ReceiverImplementer","type":"error"},{"inputs":[],"name":"TransferToZeroAddress","type":"error"},{"inputs":[],"name":"UnableDetermineTokenOwner","type":"error"},{"inputs":[],"name":"UnableGetTokenOwnerByIndex","type":"error"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":true,"internalType":"uint256","name":"id","type":"uint256"}],"name":"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":"id","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_addressTransferToContract","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"_transferToContract","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"allowedToContract","outputs":[{"internalType":"bool","name":"","type":"bool"}],"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":"contractURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","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":[],"name":"maxSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"max_amount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"count","type":"uint256"}],"name":"mint","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"mintedCount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"ownerOf","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"id","type":"uint256"}],"name":"safeTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"id","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"safeTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"_address","type":"address[]"},{"internalType":"bool[]","name":"_allow","type":"bool[]"}],"name":"setAllowAddressToContract","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"setAllowToContract","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_tokenId","type":"uint256"},{"internalType":"bool","name":"_allow","type":"bool"}],"name":"setAllowTokenToContract","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":"url","type":"string"}],"name":"setBaseUri","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newMaxSupply","type":"uint256"}],"name":"setMaxSupply","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":"tokenId","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"}]

60806040526001600260006101000a81548160ff0219169083151502179055506000600760006101000a81548160ff021916908315150217905550611134600b5560405180602001604052806000815250600c90816200006091906200046f565b503480156200006e57600080fd5b506040518060400160405280600881526020017f4d454741203430340000000000000000000000000000000000000000000000008152506040518060400160405280600481526020017f4d454741000000000000000000000000000000000000000000000000000000008152508160009081620000ec91906200046f565b508060019081620000fe91906200046f565b50505062000121620001156200012760201b60201c565b6200012f60201b60201c565b62000556565b600033905090565b6000600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806200027757607f821691505b6020821081036200028d576200028c6200022f565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b600060088302620002f77fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82620002b8565b620003038683620002b8565b95508019841693508086168417925050509392505050565b6000819050919050565b6000819050919050565b6000620003506200034a62000344846200031b565b62000325565b6200031b565b9050919050565b6000819050919050565b6200036c836200032f565b620003846200037b8262000357565b848454620002c5565b825550505050565b600090565b6200039b6200038c565b620003a881848462000361565b505050565b5b81811015620003d057620003c460008262000391565b600181019050620003ae565b5050565b601f8211156200041f57620003e98162000293565b620003f484620002a8565b8101602085101562000404578190505b6200041c6200041385620002a8565b830182620003ad565b50505b505050565b600082821c905092915050565b6000620004446000198460080262000424565b1980831691505092915050565b60006200045f838362000431565b9150826002028217905092915050565b6200047a82620001f5565b67ffffffffffffffff81111562000496576200049562000200565b5b620004a282546200025e565b620004af828285620003d4565b600060209050601f831160018114620004e75760008415620004d2578287015190505b620004de858262000451565b8655506200054e565b601f198416620004f78662000293565b60005b828110156200052157848901518255600182019150602085019450602081019050620004fa565b868310156200054157848901516200053d601f89168262000431565b8355505b6001600288020188555050505b505050505050565b61384480620005666000396000f3fe6080604052600436106101ee5760003560e01c8063715018a61161010d578063b88d4fde116100a0578063e8a3d4851161006f578063e8a3d485146106ee578063e985e9c514610719578063f2fde38b14610756578063fdb8e34e1461077f578063fddcb5ea146107a8576101ee565b8063b88d4fde14610620578063c080519714610649578063c87b56dd14610686578063d5abeb01146106c3576101ee565b8063a0712d68116100dc578063a0712d6814610575578063a0bcfc7f14610591578063a22cb465146105ba578063b1f7f0eb146105e3576101ee565b8063715018a6146104f1578063801fe59b146105085780638da5cb5b1461051f57806395d89b411461054a576101ee565b80633ccfd60b1161018557806355a554651161015457806355a55465146104255780636352211e1461044e5780636f8b44b01461048b57806370a08231146104b4576101ee565b80633ccfd60b1461037d57806342842e0e146103945780634aaf78f1146103bd5780634f6ccce7146103e8576101ee565b806318160ddd116101c157806318160ddd146102c15780631a34fe81146102ec57806323b872dd146103175780632f745c5914610340576101ee565b806301ffc9a7146101f357806306fdde0314610230578063081812fc1461025b578063095ea7b314610298575b600080fd5b3480156101ff57600080fd5b5061021a600480360381019061021591906124bb565b6107e5565b6040516102279190612503565b60405180910390f35b34801561023c57600080fd5b506102456108a7565b60405161025291906125ae565b60405180910390f35b34801561026757600080fd5b50610282600480360381019061027d9190612606565b610935565b60405161028f9190612674565b60405180910390f35b3480156102a457600080fd5b506102bf60048036038101906102ba91906126bb565b6109ba565b005b3480156102cd57600080fd5b506102d6610cb3565b6040516102e3919061270a565b60405180910390f35b3480156102f857600080fd5b50610301610cc0565b60405161030e919061270a565b60405180910390f35b34801561032357600080fd5b5061033e60048036038101906103399190612725565b610cc5565b005b34801561034c57600080fd5b50610367600480360381019061036291906126bb565b6110c8565b604051610374919061270a565b60405180910390f35b34801561038957600080fd5b506103926111b6565b005b3480156103a057600080fd5b506103bb60048036038101906103b69190612725565b611237565b005b3480156103c957600080fd5b506103d2611257565b6040516103df9190612503565b60405180910390f35b3480156103f457600080fd5b5061040f600480360381019061040a9190612606565b61126a565b60405161041c919061270a565b60405180910390f35b34801561043157600080fd5b5061044c600480360381019061044791906127a4565b6112b4565b005b34801561045a57600080fd5b5061047560048036038101906104709190612606565b6112eb565b6040516104829190612674565b60405180910390f35b34801561049757600080fd5b506104b260048036038101906104ad9190612606565b6113f7565b005b3480156104c057600080fd5b506104db60048036038101906104d691906127e4565b611409565b6040516104e8919061270a565b60405180910390f35b3480156104fd57600080fd5b506105066114e2565b005b34801561051457600080fd5b5061051d6114f6565b005b34801561052b57600080fd5b5061053461152a565b6040516105419190612674565b60405180910390f35b34801561055657600080fd5b5061055f611554565b60405161056c91906125ae565b60405180910390f35b61058f600480360381019061058a9190612606565b6115e2565b005b34801561059d57600080fd5b506105b860048036038101906105b39190612946565b611646565b005b3480156105c657600080fd5b506105e160048036038101906105dc919061298f565b611661565b005b3480156105ef57600080fd5b5061060a600480360381019061060591906127e4565b611996565b6040516106179190612503565b60405180910390f35b34801561062c57600080fd5b5061064760048036038101906106429190612a70565b6119b6565b005b34801561065557600080fd5b50610670600480360381019061066b9190612606565b611a09565b60405161067d9190612503565b60405180910390f35b34801561069257600080fd5b506106ad60048036038101906106a89190612606565b611a29565b6040516106ba91906125ae565b60405180910390f35b3480156106cf57600080fd5b506106d8611ad1565b6040516106e5919061270a565b60405180910390f35b3480156106fa57600080fd5b50610703611ad7565b60405161071091906125ae565b60405180910390f35b34801561072557600080fd5b50610740600480360381019061073b9190612af3565b611aee565b60405161074d9190612503565b60405180910390f35b34801561076257600080fd5b5061077d600480360381019061077891906127e4565b611bd3565b005b34801561078b57600080fd5b506107a660048036038101906107a19190612cbe565b611c56565b005b3480156107b457600080fd5b506107cf60048036038101906107ca91906127e4565b611d0d565b6040516107dc919061270a565b60405180910390f35b60006301ffc9a760e01b827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061084057506380ac58cd60e01b827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b80610870575063780e9d6360e01b827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b806108a05750635b5e139f60e01b827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b9050919050565b600080546108b490612d65565b80601f01602080910402602001604051908101604052809291908181526020018280546108e090612d65565b801561092d5780601f106109025761010080835404028352916020019161092d565b820191906000526020600020905b81548152906001019060200180831161091057829003601f168201915b505050505081565b600061094082611d56565b61097f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161097690612e08565b60405180910390fd5b6005600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b3373ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610a28576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a1f90612e74565b60405180910390fd5b6000610a33826112eb565b90508073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614158015610a785750610a768133611aee565b155b15610aaf576040517fcfb3b94200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600760009054906101000a900460ff16158015610aea57506008600083815260200190815260200160002060009054906101000a900460ff16155b15610c0057610b0e8373ffffffffffffffffffffffffffffffffffffffff16611d67565b15610b4e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b4590612f06565b60405180910390fd5b826005600084815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550818373ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a4610cae565b826005600084815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550818373ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45b505050565b6000600380549050905090565b600a81565b600260009054906101000a900460ff16610d14576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d0b90612f72565b60405180910390fd5b610d1d81611d56565b610d53576040517fdf2d9b4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8273ffffffffffffffffffffffffffffffffffffffff16610d73826112eb565b73ffffffffffffffffffffffffffffffffffffffff1614610dc0576040517fa114810000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610e26576040517fea553b3400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008373ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161480610e955750610e6682610935565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b80610ea65750610ea58433611aee565b5b905080610edf576040517f59c896be00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6005600083815260200190815260200160002060006101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690558260038381548110610f2a57610f29612f92565b5b9060005260206000200160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600082118015610ff85750600073ffffffffffffffffffffffffffffffffffffffff166003600184610fa49190612ff0565b81548110610fb557610fb4612f92565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16145b156110675783600360018461100d9190612ff0565b8154811061101e5761101d612f92565b5b9060005260206000200160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b818373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a450505050565b60006110d383611409565b821061110b576040517f0ddac30e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008060038054905090505b8083101561117e57611128836112eb565b73ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1603611171578382036111685750506111b0565b81806001019250505b8280600101935050611117565b6040517f7339954700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b92915050565b6111be611d8a565b60003373ffffffffffffffffffffffffffffffffffffffff16476040516111e490613055565b60006040518083038185875af1925050503d8060008114611221576040519150601f19603f3d011682016040523d82523d6000602084013e611226565b606091505b505090508061123457600080fd5b50565b611252838383604051806020016040528060008152506119b6565b505050565b600760009054906101000a900460ff1681565b6000611274610cb3565b82106112ac576040517fa723001c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b819050919050565b6112bc611d8a565b806008600084815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b60006112f682611d56565b61132c576040517fdf2d9b4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5b600073ffffffffffffffffffffffffffffffffffffffff166003838154811061135957611358612f92565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146113e557600382815481106113b3576113b2612f92565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690506113f2565b818060010192505061132d565b919050565b6113ff611d8a565b80600b8190555050565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611470576040517f8f4eb60400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080600380549050905060005b818110156114d75761148f816112eb565b73ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16036114ca5782806001019350505b808060010191505061147e565b508192505050919050565b6114ea611d8a565b6114f46000611e08565b565b6114fe611d8a565b600760009054906101000a900460ff1615600760006101000a81548160ff021916908315150217905550565b6000600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6001805461156190612d65565b80601f016020809104026020016040519081016040528092919081815260200182805461158d90612d65565b80156115da5780601f106115af576101008083540402835291602001916115da565b820191906000526020600020905b8154815290600101906020018083116115bd57829003601f168201915b505050505081565b600b54816115ee610cb3565b6115f8919061306a565b1115611639576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611630906130ea565b60405180910390fd5b6116433382611ece565b50565b61164e611d8a565b80600c908161165d91906132b6565b5050565b3373ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036116cf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116c690612e74565b60405180910390fd5b600760009054906101000a900460ff161580156117365750600960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156118985761175a8273ffffffffffffffffffffffffffffffffffffffff16611d67565b1561179a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161179190612f06565b60405180910390fd5b80600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c318360405161188b9190612503565b60405180910390a3611992565b80600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31836040516119899190612503565b60405180910390a35b5050565b60096020528060005260406000206000915054906101000a900460ff1681565b6119c1848484610cc5565b6119cd84848484611eec565b611a03576040517fd1a57ed600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50505050565b60086020528060005260406000206000915054906101000a900460ff1681565b6060611a3482611d56565b611a73576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a6a906133fa565b60405180910390fd5b6000600c8054611a8290612d65565b905011611a9e5760405180602001604052806000815250611aca565b600c611aa98361205d565b604051602001611aba929190613525565b6040516020818303038152906040525b9050919050565b600b5481565b606060405180602001604052806000815250905090565b6000736e7c5d515b2c3f1c49a53a8728fa2a00d6d486a973ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611b405760019050611bcd565b600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1690505b92915050565b611bdb611d8a565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611c4a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c41906135c6565b60405180910390fd5b611c5381611e08565b50565b611c5e611d8a565b60005b8251811015611d0857818181518110611c7d57611c7c612f92565b5b602002602001015160096000858481518110611c9c57611c9b612f92565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508080611d00906135e6565b915050611c61565b505050565b6000600d60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b600060038054905082109050919050565b6000808273ffffffffffffffffffffffffffffffffffffffff163b119050919050565b611d926121bd565b73ffffffffffffffffffffffffffffffffffffffff16611db061152a565b73ffffffffffffffffffffffffffffffffffffffff1614611e06576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611dfd9061367a565b60405180910390fd5b565b6000600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b611ee88282604051806020016040528060008152506121c5565b5050565b6000808473ffffffffffffffffffffffffffffffffffffffff163b03611f155760019050612055565b8373ffffffffffffffffffffffffffffffffffffffff1663150b7a02338786866040518563ffffffff1660e01b8152600401611f5494939291906136ef565b6020604051808303816000875af1925050508015611f9057506040513d601f19601f82011682018060405250810190611f8d9190613750565b60015b612009573d8060008114611fc0576040519150601f19603f3d011682016040523d82523d6000602084013e611fc5565b606091505b506000815103612001576040517fd1a57ed600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b805181602001fd5b63150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149150505b949350505050565b6060600082036120a4576040518060400160405280600181526020017f300000000000000000000000000000000000000000000000000000000000000081525090506121b8565b600082905060005b600082146120d65780806120bf906135e6565b915050600a826120cf91906137ac565b91506120ac565b60008167ffffffffffffffff8111156120f2576120f161281b565b5b6040519080825280601f01601f1916602001820160405280156121245781602001600182028036833780820191505090505b5090505b600085146121b15760018261213d9190612ff0565b9150600a8561214c91906137dd565b6030612158919061306a565b60f81b81838151811061216e5761216d612f92565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600a856121aa91906137ac565b9450612128565b8093505050505b919050565b600033905090565b6121cf8383612228565b6121ed60008460016003805490506121e79190612ff0565b84611eec565b612223576040517fd1a57ed600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361228e576040517f2e07630000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600081036122c8576040517fb562e8dd00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000600380549050905060005b60018303811015612373576003600181600181540180825580915050039060005260206000200160009054906101000a9050508082018473ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a480806001019150506122d5565b506003839080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001826123e49190612ff0565b816123ef919061306a565b8373ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4505050565b6000604051905090565b600080fd5b600080fd5b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b61249881612463565b81146124a357600080fd5b50565b6000813590506124b58161248f565b92915050565b6000602082840312156124d1576124d0612459565b5b60006124df848285016124a6565b91505092915050565b60008115159050919050565b6124fd816124e8565b82525050565b600060208201905061251860008301846124f4565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b8381101561255857808201518184015260208101905061253d565b60008484015250505050565b6000601f19601f8301169050919050565b60006125808261251e565b61258a8185612529565b935061259a81856020860161253a565b6125a381612564565b840191505092915050565b600060208201905081810360008301526125c88184612575565b905092915050565b6000819050919050565b6125e3816125d0565b81146125ee57600080fd5b50565b600081359050612600816125da565b92915050565b60006020828403121561261c5761261b612459565b5b600061262a848285016125f1565b91505092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061265e82612633565b9050919050565b61266e81612653565b82525050565b60006020820190506126896000830184612665565b92915050565b61269881612653565b81146126a357600080fd5b50565b6000813590506126b58161268f565b92915050565b600080604083850312156126d2576126d1612459565b5b60006126e0858286016126a6565b92505060206126f1858286016125f1565b9150509250929050565b612704816125d0565b82525050565b600060208201905061271f60008301846126fb565b92915050565b60008060006060848603121561273e5761273d612459565b5b600061274c868287016126a6565b935050602061275d868287016126a6565b925050604061276e868287016125f1565b9150509250925092565b612781816124e8565b811461278c57600080fd5b50565b60008135905061279e81612778565b92915050565b600080604083850312156127bb576127ba612459565b5b60006127c9858286016125f1565b92505060206127da8582860161278f565b9150509250929050565b6000602082840312156127fa576127f9612459565b5b6000612808848285016126a6565b91505092915050565b600080fd5b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b61285382612564565b810181811067ffffffffffffffff821117156128725761287161281b565b5b80604052505050565b600061288561244f565b9050612891828261284a565b919050565b600067ffffffffffffffff8211156128b1576128b061281b565b5b6128ba82612564565b9050602081019050919050565b82818337600083830152505050565b60006128e96128e484612896565b61287b565b90508281526020810184848401111561290557612904612816565b5b6129108482856128c7565b509392505050565b600082601f83011261292d5761292c612811565b5b813561293d8482602086016128d6565b91505092915050565b60006020828403121561295c5761295b612459565b5b600082013567ffffffffffffffff81111561297a5761297961245e565b5b61298684828501612918565b91505092915050565b600080604083850312156129a6576129a5612459565b5b60006129b4858286016126a6565b92505060206129c58582860161278f565b9150509250929050565b600067ffffffffffffffff8211156129ea576129e961281b565b5b6129f382612564565b9050602081019050919050565b6000612a13612a0e846129cf565b61287b565b905082815260208101848484011115612a2f57612a2e612816565b5b612a3a8482856128c7565b509392505050565b600082601f830112612a5757612a56612811565b5b8135612a67848260208601612a00565b91505092915050565b60008060008060808587031215612a8a57612a89612459565b5b6000612a98878288016126a6565b9450506020612aa9878288016126a6565b9350506040612aba878288016125f1565b925050606085013567ffffffffffffffff811115612adb57612ada61245e565b5b612ae787828801612a42565b91505092959194509250565b60008060408385031215612b0a57612b09612459565b5b6000612b18858286016126a6565b9250506020612b29858286016126a6565b9150509250929050565b600067ffffffffffffffff821115612b4e57612b4d61281b565b5b602082029050602081019050919050565b600080fd5b6000612b77612b7284612b33565b61287b565b90508083825260208201905060208402830185811115612b9a57612b99612b5f565b5b835b81811015612bc35780612baf88826126a6565b845260208401935050602081019050612b9c565b5050509392505050565b600082601f830112612be257612be1612811565b5b8135612bf2848260208601612b64565b91505092915050565b600067ffffffffffffffff821115612c1657612c1561281b565b5b602082029050602081019050919050565b6000612c3a612c3584612bfb565b61287b565b90508083825260208201905060208402830185811115612c5d57612c5c612b5f565b5b835b81811015612c865780612c72888261278f565b845260208401935050602081019050612c5f565b5050509392505050565b600082601f830112612ca557612ca4612811565b5b8135612cb5848260208601612c27565b91505092915050565b60008060408385031215612cd557612cd4612459565b5b600083013567ffffffffffffffff811115612cf357612cf261245e565b5b612cff85828601612bcd565b925050602083013567ffffffffffffffff811115612d2057612d1f61245e565b5b612d2c85828601612c90565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680612d7d57607f821691505b602082108103612d9057612d8f612d36565b5b50919050565b7f455243373231413a20617070726f76656420717565727920666f72206e6f6e6560008201527f78697374656e7420746f6b656e00000000000000000000000000000000000000602082015250565b6000612df2602d83612529565b9150612dfd82612d96565b604082019050919050565b60006020820190508181036000830152612e2181612de5565b9050919050565b7f455243373231413a20617070726f766520746f2063616c6c6572000000000000600082015250565b6000612e5e601a83612529565b9150612e6982612e28565b602082019050919050565b60006020820190508181036000830152612e8d81612e51565b9050919050565b7f53616c65732077696c6c206265206f70656e6564206166746572206d696e742060008201527f697320636f6d706c6574652e0000000000000000000000000000000000000000602082015250565b6000612ef0602c83612529565b9150612efb82612e94565b604082019050919050565b60006020820190508181036000830152612f1f81612ee3565b9050919050565b7f596f75206e656564205472616e7366657220546f6b656e000000000000000000600082015250565b6000612f5c601783612529565b9150612f6782612f26565b602082019050919050565b60006020820190508181036000830152612f8b81612f4f565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000612ffb826125d0565b9150613006836125d0565b925082820390508181111561301e5761301d612fc1565b5b92915050565b600081905092915050565b50565b600061303f600083613024565b915061304a8261302f565b600082019050919050565b600061306082613032565b9150819050919050565b6000613075826125d0565b9150613080836125d0565b925082820190508082111561309857613097612fc1565b5b92915050565b7f45786365656473206d617820737570706c790000000000000000000000000000600082015250565b60006130d4601283612529565b91506130df8261309e565b602082019050919050565b60006020820190508181036000830152613103816130c7565b9050919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b60006008830261316c7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8261312f565b613176868361312f565b95508019841693508086168417925050509392505050565b6000819050919050565b60006131b36131ae6131a9846125d0565b61318e565b6125d0565b9050919050565b6000819050919050565b6131cd83613198565b6131e16131d9826131ba565b84845461313c565b825550505050565b600090565b6131f66131e9565b6132018184846131c4565b505050565b5b818110156132255761321a6000826131ee565b600181019050613207565b5050565b601f82111561326a5761323b8161310a565b6132448461311f565b81016020851015613253578190505b61326761325f8561311f565b830182613206565b50505b505050565b600082821c905092915050565b600061328d6000198460080261326f565b1980831691505092915050565b60006132a6838361327c565b9150826002028217905092915050565b6132bf8261251e565b67ffffffffffffffff8111156132d8576132d761281b565b5b6132e28254612d65565b6132ed828285613229565b600060209050601f831160018114613320576000841561330e578287015190505b613318858261329a565b865550613380565b601f19841661332e8661310a565b60005b8281101561335657848901518255600182019150602085019450602081019050613331565b86831015613373578489015161336f601f89168261327c565b8355505b6001600288020188555050505b505050505050565b7f4552433732314d657461646174613a2055524920717565727920666f72206e6f60008201527f6e6578697374656e7420746f6b656e0000000000000000000000000000000000602082015250565b60006133e4602f83612529565b91506133ef82613388565b604082019050919050565b60006020820190508181036000830152613413816133d7565b9050919050565b600081905092915050565b6000815461343281612d65565b61343c818661341a565b94506001821660008114613457576001811461346c5761349f565b60ff198316865281151582028601935061349f565b6134758561310a565b60005b8381101561349757815481890152600182019150602081019050613478565b838801955050505b50505092915050565b60006134b38261251e565b6134bd818561341a565b93506134cd81856020860161253a565b80840191505092915050565b7f2e6a736f6e000000000000000000000000000000000000000000000000000000600082015250565b600061350f60058361341a565b915061351a826134d9565b600582019050919050565b60006135318285613425565b915061353d82846134a8565b915061354882613502565b91508190509392505050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b60006135b0602683612529565b91506135bb82613554565b604082019050919050565b600060208201905081810360008301526135df816135a3565b9050919050565b60006135f1826125d0565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361362357613622612fc1565b5b600182019050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000613664602083612529565b915061366f8261362e565b602082019050919050565b6000602082019050818103600083015261369381613657565b9050919050565b600081519050919050565b600082825260208201905092915050565b60006136c18261369a565b6136cb81856136a5565b93506136db81856020860161253a565b6136e481612564565b840191505092915050565b60006080820190506137046000830187612665565b6137116020830186612665565b61371e60408301856126fb565b818103606083015261373081846136b6565b905095945050505050565b60008151905061374a8161248f565b92915050565b60006020828403121561376657613765612459565b5b60006137748482850161373b565b91505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006137b7826125d0565b91506137c2836125d0565b9250826137d2576137d161377d565b5b828204905092915050565b60006137e8826125d0565b91506137f3836125d0565b9250826138035761380261377d565b5b82820690509291505056fea2646970667358221220a8d88e8476d61b947f80f78cbe049bc1a5634de391f637a5c0bd76a17e44373864736f6c63430008110033

Deployed Bytecode

0x6080604052600436106101ee5760003560e01c8063715018a61161010d578063b88d4fde116100a0578063e8a3d4851161006f578063e8a3d485146106ee578063e985e9c514610719578063f2fde38b14610756578063fdb8e34e1461077f578063fddcb5ea146107a8576101ee565b8063b88d4fde14610620578063c080519714610649578063c87b56dd14610686578063d5abeb01146106c3576101ee565b8063a0712d68116100dc578063a0712d6814610575578063a0bcfc7f14610591578063a22cb465146105ba578063b1f7f0eb146105e3576101ee565b8063715018a6146104f1578063801fe59b146105085780638da5cb5b1461051f57806395d89b411461054a576101ee565b80633ccfd60b1161018557806355a554651161015457806355a55465146104255780636352211e1461044e5780636f8b44b01461048b57806370a08231146104b4576101ee565b80633ccfd60b1461037d57806342842e0e146103945780634aaf78f1146103bd5780634f6ccce7146103e8576101ee565b806318160ddd116101c157806318160ddd146102c15780631a34fe81146102ec57806323b872dd146103175780632f745c5914610340576101ee565b806301ffc9a7146101f357806306fdde0314610230578063081812fc1461025b578063095ea7b314610298575b600080fd5b3480156101ff57600080fd5b5061021a600480360381019061021591906124bb565b6107e5565b6040516102279190612503565b60405180910390f35b34801561023c57600080fd5b506102456108a7565b60405161025291906125ae565b60405180910390f35b34801561026757600080fd5b50610282600480360381019061027d9190612606565b610935565b60405161028f9190612674565b60405180910390f35b3480156102a457600080fd5b506102bf60048036038101906102ba91906126bb565b6109ba565b005b3480156102cd57600080fd5b506102d6610cb3565b6040516102e3919061270a565b60405180910390f35b3480156102f857600080fd5b50610301610cc0565b60405161030e919061270a565b60405180910390f35b34801561032357600080fd5b5061033e60048036038101906103399190612725565b610cc5565b005b34801561034c57600080fd5b50610367600480360381019061036291906126bb565b6110c8565b604051610374919061270a565b60405180910390f35b34801561038957600080fd5b506103926111b6565b005b3480156103a057600080fd5b506103bb60048036038101906103b69190612725565b611237565b005b3480156103c957600080fd5b506103d2611257565b6040516103df9190612503565b60405180910390f35b3480156103f457600080fd5b5061040f600480360381019061040a9190612606565b61126a565b60405161041c919061270a565b60405180910390f35b34801561043157600080fd5b5061044c600480360381019061044791906127a4565b6112b4565b005b34801561045a57600080fd5b5061047560048036038101906104709190612606565b6112eb565b6040516104829190612674565b60405180910390f35b34801561049757600080fd5b506104b260048036038101906104ad9190612606565b6113f7565b005b3480156104c057600080fd5b506104db60048036038101906104d691906127e4565b611409565b6040516104e8919061270a565b60405180910390f35b3480156104fd57600080fd5b506105066114e2565b005b34801561051457600080fd5b5061051d6114f6565b005b34801561052b57600080fd5b5061053461152a565b6040516105419190612674565b60405180910390f35b34801561055657600080fd5b5061055f611554565b60405161056c91906125ae565b60405180910390f35b61058f600480360381019061058a9190612606565b6115e2565b005b34801561059d57600080fd5b506105b860048036038101906105b39190612946565b611646565b005b3480156105c657600080fd5b506105e160048036038101906105dc919061298f565b611661565b005b3480156105ef57600080fd5b5061060a600480360381019061060591906127e4565b611996565b6040516106179190612503565b60405180910390f35b34801561062c57600080fd5b5061064760048036038101906106429190612a70565b6119b6565b005b34801561065557600080fd5b50610670600480360381019061066b9190612606565b611a09565b60405161067d9190612503565b60405180910390f35b34801561069257600080fd5b506106ad60048036038101906106a89190612606565b611a29565b6040516106ba91906125ae565b60405180910390f35b3480156106cf57600080fd5b506106d8611ad1565b6040516106e5919061270a565b60405180910390f35b3480156106fa57600080fd5b50610703611ad7565b60405161071091906125ae565b60405180910390f35b34801561072557600080fd5b50610740600480360381019061073b9190612af3565b611aee565b60405161074d9190612503565b60405180910390f35b34801561076257600080fd5b5061077d600480360381019061077891906127e4565b611bd3565b005b34801561078b57600080fd5b506107a660048036038101906107a19190612cbe565b611c56565b005b3480156107b457600080fd5b506107cf60048036038101906107ca91906127e4565b611d0d565b6040516107dc919061270a565b60405180910390f35b60006301ffc9a760e01b827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061084057506380ac58cd60e01b827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b80610870575063780e9d6360e01b827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b806108a05750635b5e139f60e01b827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b9050919050565b600080546108b490612d65565b80601f01602080910402602001604051908101604052809291908181526020018280546108e090612d65565b801561092d5780601f106109025761010080835404028352916020019161092d565b820191906000526020600020905b81548152906001019060200180831161091057829003601f168201915b505050505081565b600061094082611d56565b61097f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161097690612e08565b60405180910390fd5b6005600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b3373ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610a28576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a1f90612e74565b60405180910390fd5b6000610a33826112eb565b90508073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614158015610a785750610a768133611aee565b155b15610aaf576040517fcfb3b94200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600760009054906101000a900460ff16158015610aea57506008600083815260200190815260200160002060009054906101000a900460ff16155b15610c0057610b0e8373ffffffffffffffffffffffffffffffffffffffff16611d67565b15610b4e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b4590612f06565b60405180910390fd5b826005600084815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550818373ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a4610cae565b826005600084815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550818373ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45b505050565b6000600380549050905090565b600a81565b600260009054906101000a900460ff16610d14576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d0b90612f72565b60405180910390fd5b610d1d81611d56565b610d53576040517fdf2d9b4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8273ffffffffffffffffffffffffffffffffffffffff16610d73826112eb565b73ffffffffffffffffffffffffffffffffffffffff1614610dc0576040517fa114810000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610e26576040517fea553b3400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008373ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161480610e955750610e6682610935565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b80610ea65750610ea58433611aee565b5b905080610edf576040517f59c896be00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6005600083815260200190815260200160002060006101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690558260038381548110610f2a57610f29612f92565b5b9060005260206000200160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600082118015610ff85750600073ffffffffffffffffffffffffffffffffffffffff166003600184610fa49190612ff0565b81548110610fb557610fb4612f92565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16145b156110675783600360018461100d9190612ff0565b8154811061101e5761101d612f92565b5b9060005260206000200160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b818373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a450505050565b60006110d383611409565b821061110b576040517f0ddac30e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008060038054905090505b8083101561117e57611128836112eb565b73ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1603611171578382036111685750506111b0565b81806001019250505b8280600101935050611117565b6040517f7339954700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b92915050565b6111be611d8a565b60003373ffffffffffffffffffffffffffffffffffffffff16476040516111e490613055565b60006040518083038185875af1925050503d8060008114611221576040519150601f19603f3d011682016040523d82523d6000602084013e611226565b606091505b505090508061123457600080fd5b50565b611252838383604051806020016040528060008152506119b6565b505050565b600760009054906101000a900460ff1681565b6000611274610cb3565b82106112ac576040517fa723001c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b819050919050565b6112bc611d8a565b806008600084815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b60006112f682611d56565b61132c576040517fdf2d9b4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5b600073ffffffffffffffffffffffffffffffffffffffff166003838154811061135957611358612f92565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146113e557600382815481106113b3576113b2612f92565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690506113f2565b818060010192505061132d565b919050565b6113ff611d8a565b80600b8190555050565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611470576040517f8f4eb60400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080600380549050905060005b818110156114d75761148f816112eb565b73ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16036114ca5782806001019350505b808060010191505061147e565b508192505050919050565b6114ea611d8a565b6114f46000611e08565b565b6114fe611d8a565b600760009054906101000a900460ff1615600760006101000a81548160ff021916908315150217905550565b6000600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6001805461156190612d65565b80601f016020809104026020016040519081016040528092919081815260200182805461158d90612d65565b80156115da5780601f106115af576101008083540402835291602001916115da565b820191906000526020600020905b8154815290600101906020018083116115bd57829003601f168201915b505050505081565b600b54816115ee610cb3565b6115f8919061306a565b1115611639576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611630906130ea565b60405180910390fd5b6116433382611ece565b50565b61164e611d8a565b80600c908161165d91906132b6565b5050565b3373ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036116cf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116c690612e74565b60405180910390fd5b600760009054906101000a900460ff161580156117365750600960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156118985761175a8273ffffffffffffffffffffffffffffffffffffffff16611d67565b1561179a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161179190612f06565b60405180910390fd5b80600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c318360405161188b9190612503565b60405180910390a3611992565b80600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31836040516119899190612503565b60405180910390a35b5050565b60096020528060005260406000206000915054906101000a900460ff1681565b6119c1848484610cc5565b6119cd84848484611eec565b611a03576040517fd1a57ed600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50505050565b60086020528060005260406000206000915054906101000a900460ff1681565b6060611a3482611d56565b611a73576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a6a906133fa565b60405180910390fd5b6000600c8054611a8290612d65565b905011611a9e5760405180602001604052806000815250611aca565b600c611aa98361205d565b604051602001611aba929190613525565b6040516020818303038152906040525b9050919050565b600b5481565b606060405180602001604052806000815250905090565b6000736e7c5d515b2c3f1c49a53a8728fa2a00d6d486a973ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611b405760019050611bcd565b600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1690505b92915050565b611bdb611d8a565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611c4a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c41906135c6565b60405180910390fd5b611c5381611e08565b50565b611c5e611d8a565b60005b8251811015611d0857818181518110611c7d57611c7c612f92565b5b602002602001015160096000858481518110611c9c57611c9b612f92565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508080611d00906135e6565b915050611c61565b505050565b6000600d60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b600060038054905082109050919050565b6000808273ffffffffffffffffffffffffffffffffffffffff163b119050919050565b611d926121bd565b73ffffffffffffffffffffffffffffffffffffffff16611db061152a565b73ffffffffffffffffffffffffffffffffffffffff1614611e06576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611dfd9061367a565b60405180910390fd5b565b6000600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b611ee88282604051806020016040528060008152506121c5565b5050565b6000808473ffffffffffffffffffffffffffffffffffffffff163b03611f155760019050612055565b8373ffffffffffffffffffffffffffffffffffffffff1663150b7a02338786866040518563ffffffff1660e01b8152600401611f5494939291906136ef565b6020604051808303816000875af1925050508015611f9057506040513d601f19601f82011682018060405250810190611f8d9190613750565b60015b612009573d8060008114611fc0576040519150601f19603f3d011682016040523d82523d6000602084013e611fc5565b606091505b506000815103612001576040517fd1a57ed600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b805181602001fd5b63150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149150505b949350505050565b6060600082036120a4576040518060400160405280600181526020017f300000000000000000000000000000000000000000000000000000000000000081525090506121b8565b600082905060005b600082146120d65780806120bf906135e6565b915050600a826120cf91906137ac565b91506120ac565b60008167ffffffffffffffff8111156120f2576120f161281b565b5b6040519080825280601f01601f1916602001820160405280156121245781602001600182028036833780820191505090505b5090505b600085146121b15760018261213d9190612ff0565b9150600a8561214c91906137dd565b6030612158919061306a565b60f81b81838151811061216e5761216d612f92565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600a856121aa91906137ac565b9450612128565b8093505050505b919050565b600033905090565b6121cf8383612228565b6121ed60008460016003805490506121e79190612ff0565b84611eec565b612223576040517fd1a57ed600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361228e576040517f2e07630000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600081036122c8576040517fb562e8dd00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000600380549050905060005b60018303811015612373576003600181600181540180825580915050039060005260206000200160009054906101000a9050508082018473ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a480806001019150506122d5565b506003839080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001826123e49190612ff0565b816123ef919061306a565b8373ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4505050565b6000604051905090565b600080fd5b600080fd5b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b61249881612463565b81146124a357600080fd5b50565b6000813590506124b58161248f565b92915050565b6000602082840312156124d1576124d0612459565b5b60006124df848285016124a6565b91505092915050565b60008115159050919050565b6124fd816124e8565b82525050565b600060208201905061251860008301846124f4565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b8381101561255857808201518184015260208101905061253d565b60008484015250505050565b6000601f19601f8301169050919050565b60006125808261251e565b61258a8185612529565b935061259a81856020860161253a565b6125a381612564565b840191505092915050565b600060208201905081810360008301526125c88184612575565b905092915050565b6000819050919050565b6125e3816125d0565b81146125ee57600080fd5b50565b600081359050612600816125da565b92915050565b60006020828403121561261c5761261b612459565b5b600061262a848285016125f1565b91505092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061265e82612633565b9050919050565b61266e81612653565b82525050565b60006020820190506126896000830184612665565b92915050565b61269881612653565b81146126a357600080fd5b50565b6000813590506126b58161268f565b92915050565b600080604083850312156126d2576126d1612459565b5b60006126e0858286016126a6565b92505060206126f1858286016125f1565b9150509250929050565b612704816125d0565b82525050565b600060208201905061271f60008301846126fb565b92915050565b60008060006060848603121561273e5761273d612459565b5b600061274c868287016126a6565b935050602061275d868287016126a6565b925050604061276e868287016125f1565b9150509250925092565b612781816124e8565b811461278c57600080fd5b50565b60008135905061279e81612778565b92915050565b600080604083850312156127bb576127ba612459565b5b60006127c9858286016125f1565b92505060206127da8582860161278f565b9150509250929050565b6000602082840312156127fa576127f9612459565b5b6000612808848285016126a6565b91505092915050565b600080fd5b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b61285382612564565b810181811067ffffffffffffffff821117156128725761287161281b565b5b80604052505050565b600061288561244f565b9050612891828261284a565b919050565b600067ffffffffffffffff8211156128b1576128b061281b565b5b6128ba82612564565b9050602081019050919050565b82818337600083830152505050565b60006128e96128e484612896565b61287b565b90508281526020810184848401111561290557612904612816565b5b6129108482856128c7565b509392505050565b600082601f83011261292d5761292c612811565b5b813561293d8482602086016128d6565b91505092915050565b60006020828403121561295c5761295b612459565b5b600082013567ffffffffffffffff81111561297a5761297961245e565b5b61298684828501612918565b91505092915050565b600080604083850312156129a6576129a5612459565b5b60006129b4858286016126a6565b92505060206129c58582860161278f565b9150509250929050565b600067ffffffffffffffff8211156129ea576129e961281b565b5b6129f382612564565b9050602081019050919050565b6000612a13612a0e846129cf565b61287b565b905082815260208101848484011115612a2f57612a2e612816565b5b612a3a8482856128c7565b509392505050565b600082601f830112612a5757612a56612811565b5b8135612a67848260208601612a00565b91505092915050565b60008060008060808587031215612a8a57612a89612459565b5b6000612a98878288016126a6565b9450506020612aa9878288016126a6565b9350506040612aba878288016125f1565b925050606085013567ffffffffffffffff811115612adb57612ada61245e565b5b612ae787828801612a42565b91505092959194509250565b60008060408385031215612b0a57612b09612459565b5b6000612b18858286016126a6565b9250506020612b29858286016126a6565b9150509250929050565b600067ffffffffffffffff821115612b4e57612b4d61281b565b5b602082029050602081019050919050565b600080fd5b6000612b77612b7284612b33565b61287b565b90508083825260208201905060208402830185811115612b9a57612b99612b5f565b5b835b81811015612bc35780612baf88826126a6565b845260208401935050602081019050612b9c565b5050509392505050565b600082601f830112612be257612be1612811565b5b8135612bf2848260208601612b64565b91505092915050565b600067ffffffffffffffff821115612c1657612c1561281b565b5b602082029050602081019050919050565b6000612c3a612c3584612bfb565b61287b565b90508083825260208201905060208402830185811115612c5d57612c5c612b5f565b5b835b81811015612c865780612c72888261278f565b845260208401935050602081019050612c5f565b5050509392505050565b600082601f830112612ca557612ca4612811565b5b8135612cb5848260208601612c27565b91505092915050565b60008060408385031215612cd557612cd4612459565b5b600083013567ffffffffffffffff811115612cf357612cf261245e565b5b612cff85828601612bcd565b925050602083013567ffffffffffffffff811115612d2057612d1f61245e565b5b612d2c85828601612c90565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680612d7d57607f821691505b602082108103612d9057612d8f612d36565b5b50919050565b7f455243373231413a20617070726f76656420717565727920666f72206e6f6e6560008201527f78697374656e7420746f6b656e00000000000000000000000000000000000000602082015250565b6000612df2602d83612529565b9150612dfd82612d96565b604082019050919050565b60006020820190508181036000830152612e2181612de5565b9050919050565b7f455243373231413a20617070726f766520746f2063616c6c6572000000000000600082015250565b6000612e5e601a83612529565b9150612e6982612e28565b602082019050919050565b60006020820190508181036000830152612e8d81612e51565b9050919050565b7f53616c65732077696c6c206265206f70656e6564206166746572206d696e742060008201527f697320636f6d706c6574652e0000000000000000000000000000000000000000602082015250565b6000612ef0602c83612529565b9150612efb82612e94565b604082019050919050565b60006020820190508181036000830152612f1f81612ee3565b9050919050565b7f596f75206e656564205472616e7366657220546f6b656e000000000000000000600082015250565b6000612f5c601783612529565b9150612f6782612f26565b602082019050919050565b60006020820190508181036000830152612f8b81612f4f565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000612ffb826125d0565b9150613006836125d0565b925082820390508181111561301e5761301d612fc1565b5b92915050565b600081905092915050565b50565b600061303f600083613024565b915061304a8261302f565b600082019050919050565b600061306082613032565b9150819050919050565b6000613075826125d0565b9150613080836125d0565b925082820190508082111561309857613097612fc1565b5b92915050565b7f45786365656473206d617820737570706c790000000000000000000000000000600082015250565b60006130d4601283612529565b91506130df8261309e565b602082019050919050565b60006020820190508181036000830152613103816130c7565b9050919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b60006008830261316c7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8261312f565b613176868361312f565b95508019841693508086168417925050509392505050565b6000819050919050565b60006131b36131ae6131a9846125d0565b61318e565b6125d0565b9050919050565b6000819050919050565b6131cd83613198565b6131e16131d9826131ba565b84845461313c565b825550505050565b600090565b6131f66131e9565b6132018184846131c4565b505050565b5b818110156132255761321a6000826131ee565b600181019050613207565b5050565b601f82111561326a5761323b8161310a565b6132448461311f565b81016020851015613253578190505b61326761325f8561311f565b830182613206565b50505b505050565b600082821c905092915050565b600061328d6000198460080261326f565b1980831691505092915050565b60006132a6838361327c565b9150826002028217905092915050565b6132bf8261251e565b67ffffffffffffffff8111156132d8576132d761281b565b5b6132e28254612d65565b6132ed828285613229565b600060209050601f831160018114613320576000841561330e578287015190505b613318858261329a565b865550613380565b601f19841661332e8661310a565b60005b8281101561335657848901518255600182019150602085019450602081019050613331565b86831015613373578489015161336f601f89168261327c565b8355505b6001600288020188555050505b505050505050565b7f4552433732314d657461646174613a2055524920717565727920666f72206e6f60008201527f6e6578697374656e7420746f6b656e0000000000000000000000000000000000602082015250565b60006133e4602f83612529565b91506133ef82613388565b604082019050919050565b60006020820190508181036000830152613413816133d7565b9050919050565b600081905092915050565b6000815461343281612d65565b61343c818661341a565b94506001821660008114613457576001811461346c5761349f565b60ff198316865281151582028601935061349f565b6134758561310a565b60005b8381101561349757815481890152600182019150602081019050613478565b838801955050505b50505092915050565b60006134b38261251e565b6134bd818561341a565b93506134cd81856020860161253a565b80840191505092915050565b7f2e6a736f6e000000000000000000000000000000000000000000000000000000600082015250565b600061350f60058361341a565b915061351a826134d9565b600582019050919050565b60006135318285613425565b915061353d82846134a8565b915061354882613502565b91508190509392505050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b60006135b0602683612529565b91506135bb82613554565b604082019050919050565b600060208201905081810360008301526135df816135a3565b9050919050565b60006135f1826125d0565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361362357613622612fc1565b5b600182019050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000613664602083612529565b915061366f8261362e565b602082019050919050565b6000602082019050818103600083015261369381613657565b9050919050565b600081519050919050565b600082825260208201905092915050565b60006136c18261369a565b6136cb81856136a5565b93506136db81856020860161253a565b6136e481612564565b840191505092915050565b60006080820190506137046000830187612665565b6137116020830186612665565b61371e60408301856126fb565b818103606083015261373081846136b6565b905095945050505050565b60008151905061374a8161248f565b92915050565b60006020828403121561376657613765612459565b5b60006137748482850161373b565b91505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006137b7826125d0565b91506137c2836125d0565b9250826137d2576137d161377d565b5b828204905092915050565b60006137e8826125d0565b91506137f3836125d0565b9250826138035761380261377d565b5b82820690509291505056fea2646970667358221220a8d88e8476d61b947f80f78cbe049bc1a5634de391f637a5c0bd76a17e44373864736f6c63430008110033

Deployed Bytecode Sourcemap

18200:2010:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3969:426;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2529:18;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8356:195;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7542:756;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4661:93;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18272:36;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9722:1068;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4944:631;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18929:177;;;;;;;;;;;;;:::i;:::-;;10861:166;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;3275:37;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5652:175;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19820:140;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7006:480;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19113:94;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6274:494;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15270:103;;;;;;;;;;;;;:::i;:::-;;19706:106;;;;;;;;;;;;;:::i;:::-;;15031:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2556:20;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19542:156;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;18751:85;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;8617:695;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;3396:58;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11098:295;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;3327:51;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19212:325;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18312:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18541:78;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9381:276;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15383:201;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;19968:237;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;18627:116;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3969:426;4045:4;4097:10;4082:25;;:11;:25;;;;:101;;;;4173:10;4158:25;;:11;:25;;;;4082:101;:177;;;;4249:10;4234:25;;:11;:25;;;;4082:177;:263;;;;4335:10;4320:25;;:11;:25;;;;4082:263;4062:283;;3969:426;;;:::o;2529:18::-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;8356:195::-;8415:7;8439:16;8447:7;8439;:16::i;:::-;8431:74;;;;;;;;;;;;:::i;:::-;;;;;;;;;8521:15;:24;8537:7;8521:24;;;;;;;;;;;;;;;;;;;;;8514:31;;8356:195;;;:::o;7542:756::-;7628:10;7622:16;;:2;:16;;;7614:55;;;;;;;;;;;;:::i;:::-;;;;;;;;;7680:13;7696:16;7704:7;7696;:16::i;:::-;7680:32;;7741:5;7727:19;;:10;:19;;;;:59;;;;;7751:35;7768:5;7775:10;7751:16;:35::i;:::-;7750:36;7727:59;7723:134;;;7810:35;;;;;;;;;;;;;;7723:134;7871:17;;;;;;;;;;;7870:18;:51;;;;;7893:19;:28;7913:7;7893:28;;;;;;;;;;;;;;;;;;;;;7892:29;7870:51;7867:424;;;7941:15;:2;:13;;;:15::i;:::-;7937:233;;;7977:55;;;;;;;;;;:::i;:::-;;;;;;;;7937:233;8100:2;8073:15;:24;8089:7;8073:24;;;;;;;;;;;;:29;;;;;;;;;;;;;;;;;;8146:7;8142:2;8126:28;;8135:5;8126:28;;;;;;;;;;;;7867:424;;;8229:2;8202:15;:24;8218:7;8202:24;;;;;;;;;;;;:29;;;;;;;;;;;;;;;;;;8271:7;8267:2;8251:28;;8260:5;8251:28;;;;;;;;;;;;7867:424;7603:695;7542:756;;:::o;4661:93::-;4705:7;4732;:14;;;;4725:21;;4661:93;:::o;18272:36::-;18306:2;18272:36;:::o;9722:1068::-;9855:11;;;;;;;;;;;9847:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;9909:16;9917:7;9909;:16::i;:::-;9904:61;;9934:31;;;;;;;;;;;;;;9904:61;10000:4;9980:24;;:16;9988:7;9980;:16::i;:::-;:24;;;9976:65;;10013:28;;;;;;;;;;;;;;9976:65;10070:1;10056:16;;:2;:16;;;10052:52;;10081:23;;;;;;;;;;;;;;10052:52;10117:22;10157:4;10143:18;;:10;:18;;;:69;;;;10192:20;10204:7;10192:11;:20::i;:::-;10178:34;;:10;:34;;;10143:69;:120;;;;10229:34;10246:4;10252:10;10229:16;:34::i;:::-;10143:120;10117:147;;10280:17;10275:66;;10306:35;;;;;;;;;;;;;;10275:66;10416:15;:24;10432:7;10416:24;;;;;;;;;;;;10409:31;;;;;;;;;;;10470:2;10451:7;10459;10451:16;;;;;;;;:::i;:::-;;;;;;;;;;:21;;;;;;;;;;;;;;;;;;10643:1;10633:7;:11;:49;;;;;10680:1;10648:34;;:7;10666:1;10656:7;:11;;;;:::i;:::-;10648:20;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;:34;;;10633:49;10629:109;;;10722:4;10699:7;10717:1;10707:7;:11;;;;:::i;:::-;10699:20;;;;;;;;:::i;:::-;;;;;;;;;;:27;;;;;;;;;;;;;;;;;;10629:109;10774:7;10770:2;10755:27;;10764:4;10755:27;;;;;;;;;;;;9836:954;9722:1068;;;:::o;4944:631::-;5032:15;5073:16;5083:5;5073:9;:16::i;:::-;5064:5;:25;5060:61;;5098:23;;;;;;;;;;;;;;5060:61;5134:13;5158:11;5172:7;:14;;;;5158:28;;5292:217;5316:3;5306:7;:13;5292:217;;;5364:16;5372:7;5364;:16::i;:::-;5355:25;;:5;:25;;;5351:143;;5418:5;5409;:14;5405:69;;5425:14;;;;5405:69;5467:7;;;;;;;5351:143;5321:9;;;;;;;5292:217;;;5539:28;;;;;;;;;;;;;;4944:631;;;;;:::o;18929:177::-;14990:13;:11;:13::i;:::-;18974:12:::1;19000:10;18992:24;;19038:21;18992:82;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18973:101;;;19093:7;19085:16;;;::::0;::::1;;18968:138;18929:177::o:0;10861:166::-;10985:34;11002:4;11008:2;11012;10985:34;;;;;;;;;;;;:16;:34::i;:::-;10861:166;;;:::o;3275:37::-;;;;;;;;;;;;;:::o;5652:175::-;5718:7;5751:13;:11;:13::i;:::-;5742:5;:22;5738:58;;5773:23;;;;;;;;;;;;;;5738:58;5814:5;5807:12;;5652:175;;;:::o;19820:140::-;14990:13;:11;:13::i;:::-;19946:6:::1;19914:19;:29;19934:8;19914:29;;;;;;;;;;;;:38;;;;;;;;;;;;;;;;;;19820:140:::0;;:::o;7006:480::-;7069:7;7094:16;7102:7;7094;:16::i;:::-;7089:61;;7119:31;;;;;;;;;;;;;;7089:61;7258:163;7336:1;7308:30;;:7;7316;7308:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;:30;;;7304:102;;7370:7;7378;7370:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;7363:23;;;;7304:102;7274:9;;;;;;;7258:163;;7006:480;;;;:::o;19113:94::-;14990:13;:11;:13::i;:::-;19190:12:::1;19178:9;:24;;;;19113:94:::0;:::o;6274:494::-;6337:7;6378:1;6361:19;;:5;:19;;;6357:60;;6389:28;;;;;;;;;;;;;;6357:60;6430:13;6454:11;6468:7;:14;;;;6454:28;;6593:9;6588:139;6608:3;6604:1;:7;6588:139;;;6650:10;6658:1;6650:7;:10::i;:::-;6641:19;;:5;:19;;;6637:75;;6685:7;;;;;;;6637:75;6613:3;;;;;;;6588:139;;;;6755:5;6748:12;;;;6274:494;;;:::o;15270:103::-;14990:13;:11;:13::i;:::-;15335:30:::1;15362:1;15335:18;:30::i;:::-;15270:103::o:0;19706:106::-;14990:13;:11;:13::i;:::-;19787:17:::1;;;;;;;;;;;19786:18;19766:17;;:38;;;;;;;;;;;;;;;;;;19706:106::o:0;15031:87::-;15077:7;15104:6;;;;;;;;;;;15097:13;;15031:87;:::o;2556:20::-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;19542:156::-;19629:9;;19620:5;19604:13;:11;:13::i;:::-;:21;;;;:::i;:::-;:34;;19596:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;19665:28;19675:10;19687:5;19665:9;:28::i;:::-;19542:156;:::o;18751:85::-;14990:13;:11;:13::i;:::-;18828:3:::1;18817:8;:14;;;;;;:::i;:::-;;18751:85:::0;:::o;8617:695::-;8723:10;8711:22;;:8;:22;;;8703:61;;;;;;;;;;;;:::i;:::-;;;;;;;;;8789:17;;;;;;;;;;;8788:18;:61;;;;;8811:26;:38;8838:10;8811:38;;;;;;;;;;;;;;;;;;;;;;;;;8810:39;8788:61;8785:520;;;8869:21;:8;:19;;;:21::i;:::-;8865:279;;;8911:55;;;;;;;;;;:::i;:::-;;;;;;;;8865:279;9050:8;9007:18;:30;9026:10;9007:30;;;;;;;;;;;;;;;:40;9038:8;9007:40;;;;;;;;;;;;;;;;:51;;;;;;;;;;;;;;;;;;9109:8;9082:46;;9097:10;9082:46;;;9119:8;9082:46;;;;;;:::i;:::-;;;;;;;;8785:520;;;9219:8;9176:18;:30;9195:10;9176:30;;;;;;;;;;;;;;;:40;9207:8;9176:40;;;;;;;;;;;;;;;;:51;;;;;;;;;;;;;;;;;;9274:8;9247:46;;9262:10;9247:46;;;9284:8;9247:46;;;;;;:::i;:::-;;;;;;;;8785:520;8617:695;;:::o;3396:58::-;;;;;;;;;;;;;;;;;;;;;;:::o;11098:295::-;11250:26;11263:4;11269:2;11273;11250:12;:26::i;:::-;11294:42;11317:4;11323:2;11327;11331:4;11294:22;:42::i;:::-;11289:96;;11345:40;;;;;;;;;;;;;;11289:96;11098:295;;;;:::o;3327:51::-;;;;;;;;;;;;;;;;;;;;;;:::o;19212:325::-;19286:13;19322:16;19330:7;19322;:16::i;:::-;19314:76;;;;;;;;;;;;:::i;:::-;;;;;;;;;19433:1;19414:8;19408:22;;;;;:::i;:::-;;;:26;:124;;;;;;;;;;;;;;;;;19475:8;19485:18;:7;:16;:18::i;:::-;19458:55;;;;;;;;;:::i;:::-;;;;;;;;;;;;;19408:124;19401:131;;19212:325;;;:::o;18312:28::-;;;;:::o;18541:78::-;18585:13;18605:9;;;;;;;;;;;;;;18541:78;:::o;9381:276::-;9505:4;9540:42;9530:52;;:8;:52;;;9527:70;;9591:4;9584:11;;;;9527:70;9614:18;:25;9633:5;9614:25;;;;;;;;;;;;;;;:35;9640:8;9614:35;;;;;;;;;;;;;;;;;;;;;;;;;9607:42;;9381:276;;;;;:::o;15383:201::-;14990:13;:11;:13::i;:::-;15492:1:::1;15472:22;;:8;:22;;::::0;15464:73:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;15548:28;15567:8;15548:18;:28::i;:::-;15383:201:::0;:::o;19968:237::-;14990:13;:11;:13::i;:::-;20085:9:::1;20080:118;20104:8;:15;20100:1;:19;20080:118;;;20179:6;20186:1;20179:9;;;;;;;;:::i;:::-;;;;;;;;20137:26;:39;20164:8;20173:1;20164:11;;;;;;;;:::i;:::-;;;;;;;;20137:39;;;;;;;;;;;;;;;;:51;;;;;;;;;;;;;;;;;;20121:3;;;;;:::i;:::-;;;;20080:118;;;;19968:237:::0;;:::o;18627:116::-;18686:4;18710:18;:25;18729:5;18710:25;;;;;;;;;;;;;;;;18703:32;;18627:116;;;:::o;11466:121::-;11531:4;11565:7;:14;;;;11555:7;:24;11548:31;;11466:121;;;:::o;17865:326::-;17925:4;18182:1;18160:7;:19;;;:23;18153:30;;17865:326;;;:::o;15126:132::-;15201:12;:10;:12::i;:::-;15190:23;;:7;:5;:7::i;:::-;:23;;;15182:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;15126:132::o;15595:191::-;15669:16;15688:6;;;;;;;;;;;15669:25;;15714:8;15705:6;;:17;;;;;;;;;;;;;;;;;;15769:8;15738:40;;15759:8;15738:40;;;;;;;;;;;;15658:128;15595:191;:::o;13421:102::-;13493:22;13503:2;13507:3;13493:22;;;;;;;;;;;;:9;:22::i;:::-;13421:102;;:::o;12152:640::-;12307:4;12346:1;12328:2;:14;;;:19;12324:36;;12356:4;12349:11;;;;12324:36;12393:2;12377:36;;;12414:10;12426:4;12432:7;12441:5;12377:70;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;12373:412;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12626:1;12609:6;:13;:18;12605:71;;12636:40;;;;;;;;;;;;;;12605:71;12751:6;12745:13;12736:6;12732:2;12728:15;12721:38;12373:412;12504:45;;;12494:55;;;:6;:55;;;;12487:62;;;12152:640;;;;;;;:::o;15981:723::-;16037:13;16267:1;16258:5;:10;16254:53;;16285:10;;;;;;;;;;;;;;;;;;;;;16254:53;16317:12;16332:5;16317:20;;16348:14;16373:78;16388:1;16380:4;:9;16373:78;;16406:8;;;;;:::i;:::-;;;;16437:2;16429:10;;;;;:::i;:::-;;;16373:78;;;16461:19;16493:6;16483:17;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16461:39;;16511:154;16527:1;16518:5;:10;16511:154;;16555:1;16545:11;;;;;:::i;:::-;;;16622:2;16614:5;:10;;;;:::i;:::-;16601:2;:24;;;;:::i;:::-;16588:39;;16571:6;16578;16571:14;;;;;;;;:::i;:::-;;;;;:56;;;;;;;;;;;16651:2;16642:11;;;;;:::i;:::-;;;16511:154;;;16689:6;16675:21;;;;;15981:723;;;;:::o;14498:98::-;14551:7;14578:10;14571:17;;14498:98;:::o;13531:291::-;13656:14;13662:2;13666:3;13656:5;:14::i;:::-;13688:64;13719:1;13723:2;13744:1;13727:7;:14;;;;:18;;;;:::i;:::-;13747:4;13688:22;:64::i;:::-;13683:131;;13774:40;;;;;;;;;;;;;;13683:131;13531:291;;;:::o;13830:628::-;13916:1;13902:16;;:2;:16;;;13898:48;;13927:19;;;;;;;;;;;;;;13898:48;13968:1;13961:3;:8;13957:39;;13978:18;;;;;;;;;;;;;;13957:39;14009:21;14033:7;:14;;;;14009:38;;14160:9;14155:150;14181:1;14175:3;:7;14171:1;:11;14155:150;;;14208:7;:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14287:1;14271:13;:17;14267:2;14246:43;;14263:1;14246:43;;;;;;;;;;;;14184:3;;;;;;;14155:150;;;;14367:7;14380:2;14367:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14447:1;14441:3;:7;;;;:::i;:::-;14424:13;:25;;;;:::i;:::-;14420:2;14399:51;;14416:1;14399:51;;;;;;;;;;;;13887:571;13830:628;;:::o;7:75:1:-;40:6;73:2;67:9;57:19;;7:75;:::o;88:117::-;197:1;194;187:12;211:117;320:1;317;310:12;334:149;370:7;410:66;403:5;399:78;388:89;;334:149;;;:::o;489:120::-;561:23;578:5;561:23;:::i;:::-;554:5;551:34;541:62;;599:1;596;589:12;541:62;489:120;:::o;615:137::-;660:5;698:6;685:20;676:29;;714:32;740:5;714:32;:::i;:::-;615:137;;;;:::o;758:327::-;816:6;865:2;853:9;844:7;840:23;836:32;833:119;;;871:79;;:::i;:::-;833:119;991:1;1016:52;1060:7;1051:6;1040:9;1036:22;1016:52;:::i;:::-;1006:62;;962:116;758:327;;;;:::o;1091:90::-;1125:7;1168:5;1161:13;1154:21;1143:32;;1091:90;;;:::o;1187:109::-;1268:21;1283:5;1268:21;:::i;:::-;1263:3;1256:34;1187:109;;:::o;1302:210::-;1389:4;1427:2;1416:9;1412:18;1404:26;;1440:65;1502:1;1491:9;1487:17;1478:6;1440:65;:::i;:::-;1302:210;;;;:::o;1518:99::-;1570:6;1604:5;1598:12;1588:22;;1518:99;;;:::o;1623:169::-;1707:11;1741:6;1736:3;1729:19;1781:4;1776:3;1772:14;1757:29;;1623:169;;;;:::o;1798:246::-;1879:1;1889:113;1903:6;1900:1;1897:13;1889:113;;;1988:1;1983:3;1979:11;1973:18;1969:1;1964:3;1960:11;1953:39;1925:2;1922:1;1918:10;1913:15;;1889:113;;;2036:1;2027:6;2022:3;2018:16;2011:27;1860:184;1798:246;;;:::o;2050:102::-;2091:6;2142:2;2138:7;2133:2;2126:5;2122:14;2118:28;2108:38;;2050:102;;;:::o;2158:377::-;2246:3;2274:39;2307:5;2274:39;:::i;:::-;2329:71;2393:6;2388:3;2329:71;:::i;:::-;2322:78;;2409:65;2467:6;2462:3;2455:4;2448:5;2444:16;2409:65;:::i;:::-;2499:29;2521:6;2499:29;:::i;:::-;2494:3;2490:39;2483:46;;2250:285;2158:377;;;;:::o;2541:313::-;2654:4;2692:2;2681:9;2677:18;2669:26;;2741:9;2735:4;2731:20;2727:1;2716:9;2712:17;2705:47;2769:78;2842:4;2833:6;2769:78;:::i;:::-;2761:86;;2541:313;;;;:::o;2860:77::-;2897:7;2926:5;2915:16;;2860:77;;;:::o;2943:122::-;3016:24;3034:5;3016:24;:::i;:::-;3009:5;3006:35;2996:63;;3055:1;3052;3045:12;2996:63;2943:122;:::o;3071:139::-;3117:5;3155:6;3142:20;3133:29;;3171:33;3198:5;3171:33;:::i;:::-;3071:139;;;;:::o;3216:329::-;3275:6;3324:2;3312:9;3303:7;3299:23;3295:32;3292:119;;;3330:79;;:::i;:::-;3292:119;3450:1;3475:53;3520:7;3511:6;3500:9;3496:22;3475:53;:::i;:::-;3465:63;;3421:117;3216:329;;;;:::o;3551:126::-;3588:7;3628:42;3621:5;3617:54;3606:65;;3551:126;;;:::o;3683:96::-;3720:7;3749:24;3767:5;3749:24;:::i;:::-;3738:35;;3683:96;;;:::o;3785:118::-;3872:24;3890:5;3872:24;:::i;:::-;3867:3;3860:37;3785:118;;:::o;3909:222::-;4002:4;4040:2;4029:9;4025:18;4017:26;;4053:71;4121:1;4110:9;4106:17;4097:6;4053:71;:::i;:::-;3909:222;;;;:::o;4137:122::-;4210:24;4228:5;4210:24;:::i;:::-;4203:5;4200:35;4190:63;;4249:1;4246;4239:12;4190:63;4137:122;:::o;4265:139::-;4311:5;4349:6;4336:20;4327:29;;4365:33;4392:5;4365:33;:::i;:::-;4265:139;;;;:::o;4410:474::-;4478:6;4486;4535:2;4523:9;4514:7;4510:23;4506:32;4503:119;;;4541:79;;:::i;:::-;4503:119;4661:1;4686:53;4731:7;4722:6;4711:9;4707:22;4686:53;:::i;:::-;4676:63;;4632:117;4788:2;4814:53;4859:7;4850:6;4839:9;4835:22;4814:53;:::i;:::-;4804:63;;4759:118;4410:474;;;;;:::o;4890:118::-;4977:24;4995:5;4977:24;:::i;:::-;4972:3;4965:37;4890:118;;:::o;5014:222::-;5107:4;5145:2;5134:9;5130:18;5122:26;;5158:71;5226:1;5215:9;5211:17;5202:6;5158:71;:::i;:::-;5014:222;;;;:::o;5242:619::-;5319:6;5327;5335;5384:2;5372:9;5363:7;5359:23;5355:32;5352:119;;;5390:79;;:::i;:::-;5352:119;5510:1;5535:53;5580:7;5571:6;5560:9;5556:22;5535:53;:::i;:::-;5525:63;;5481:117;5637:2;5663:53;5708:7;5699:6;5688:9;5684:22;5663:53;:::i;:::-;5653:63;;5608:118;5765:2;5791:53;5836:7;5827:6;5816:9;5812:22;5791:53;:::i;:::-;5781:63;;5736:118;5242:619;;;;;:::o;5867:116::-;5937:21;5952:5;5937:21;:::i;:::-;5930:5;5927:32;5917:60;;5973:1;5970;5963:12;5917:60;5867:116;:::o;5989:133::-;6032:5;6070:6;6057:20;6048:29;;6086:30;6110:5;6086:30;:::i;:::-;5989:133;;;;:::o;6128:468::-;6193:6;6201;6250:2;6238:9;6229:7;6225:23;6221:32;6218:119;;;6256:79;;:::i;:::-;6218:119;6376:1;6401:53;6446:7;6437:6;6426:9;6422:22;6401:53;:::i;:::-;6391:63;;6347:117;6503:2;6529:50;6571:7;6562:6;6551:9;6547:22;6529:50;:::i;:::-;6519:60;;6474:115;6128:468;;;;;:::o;6602:329::-;6661:6;6710:2;6698:9;6689:7;6685:23;6681:32;6678:119;;;6716:79;;:::i;:::-;6678:119;6836:1;6861:53;6906:7;6897:6;6886:9;6882:22;6861:53;:::i;:::-;6851:63;;6807:117;6602:329;;;;:::o;6937:117::-;7046:1;7043;7036:12;7060:117;7169:1;7166;7159:12;7183:180;7231:77;7228:1;7221:88;7328:4;7325:1;7318:15;7352:4;7349:1;7342:15;7369:281;7452:27;7474:4;7452:27;:::i;:::-;7444:6;7440:40;7582:6;7570:10;7567:22;7546:18;7534:10;7531:34;7528:62;7525:88;;;7593:18;;:::i;:::-;7525:88;7633:10;7629:2;7622:22;7412:238;7369:281;;:::o;7656:129::-;7690:6;7717:20;;:::i;:::-;7707:30;;7746:33;7774:4;7766:6;7746:33;:::i;:::-;7656:129;;;:::o;7791:308::-;7853:4;7943:18;7935:6;7932:30;7929:56;;;7965:18;;:::i;:::-;7929:56;8003:29;8025:6;8003:29;:::i;:::-;7995:37;;8087:4;8081;8077:15;8069:23;;7791:308;;;:::o;8105:146::-;8202:6;8197:3;8192;8179:30;8243:1;8234:6;8229:3;8225:16;8218:27;8105:146;;;:::o;8257:425::-;8335:5;8360:66;8376:49;8418:6;8376:49;:::i;:::-;8360:66;:::i;:::-;8351:75;;8449:6;8442:5;8435:21;8487:4;8480:5;8476:16;8525:3;8516:6;8511:3;8507:16;8504:25;8501:112;;;8532:79;;:::i;:::-;8501:112;8622:54;8669:6;8664:3;8659;8622:54;:::i;:::-;8341:341;8257:425;;;;;:::o;8702:340::-;8758:5;8807:3;8800:4;8792:6;8788:17;8784:27;8774:122;;8815:79;;:::i;:::-;8774:122;8932:6;8919:20;8957:79;9032:3;9024:6;9017:4;9009:6;9005:17;8957:79;:::i;:::-;8948:88;;8764:278;8702:340;;;;:::o;9048:509::-;9117:6;9166:2;9154:9;9145:7;9141:23;9137:32;9134:119;;;9172:79;;:::i;:::-;9134:119;9320:1;9309:9;9305:17;9292:31;9350:18;9342:6;9339:30;9336:117;;;9372:79;;:::i;:::-;9336:117;9477:63;9532:7;9523:6;9512:9;9508:22;9477:63;:::i;:::-;9467:73;;9263:287;9048:509;;;;:::o;9563:468::-;9628:6;9636;9685:2;9673:9;9664:7;9660:23;9656:32;9653:119;;;9691:79;;:::i;:::-;9653:119;9811:1;9836:53;9881:7;9872:6;9861:9;9857:22;9836:53;:::i;:::-;9826:63;;9782:117;9938:2;9964:50;10006:7;9997:6;9986:9;9982:22;9964:50;:::i;:::-;9954:60;;9909:115;9563:468;;;;;:::o;10037:307::-;10098:4;10188:18;10180:6;10177:30;10174:56;;;10210:18;;:::i;:::-;10174:56;10248:29;10270:6;10248:29;:::i;:::-;10240:37;;10332:4;10326;10322:15;10314:23;;10037:307;;;:::o;10350:423::-;10427:5;10452:65;10468:48;10509:6;10468:48;:::i;:::-;10452:65;:::i;:::-;10443:74;;10540:6;10533:5;10526:21;10578:4;10571:5;10567:16;10616:3;10607:6;10602:3;10598:16;10595:25;10592:112;;;10623:79;;:::i;:::-;10592:112;10713:54;10760:6;10755:3;10750;10713:54;:::i;:::-;10433:340;10350:423;;;;;:::o;10792:338::-;10847:5;10896:3;10889:4;10881:6;10877:17;10873:27;10863:122;;10904:79;;:::i;:::-;10863:122;11021:6;11008:20;11046:78;11120:3;11112:6;11105:4;11097:6;11093:17;11046:78;:::i;:::-;11037:87;;10853:277;10792:338;;;;:::o;11136:943::-;11231:6;11239;11247;11255;11304:3;11292:9;11283:7;11279:23;11275:33;11272:120;;;11311:79;;:::i;:::-;11272:120;11431:1;11456:53;11501:7;11492:6;11481:9;11477:22;11456:53;:::i;:::-;11446:63;;11402:117;11558:2;11584:53;11629:7;11620:6;11609:9;11605:22;11584:53;:::i;:::-;11574:63;;11529:118;11686:2;11712:53;11757:7;11748:6;11737:9;11733:22;11712:53;:::i;:::-;11702:63;;11657:118;11842:2;11831:9;11827:18;11814:32;11873:18;11865:6;11862:30;11859:117;;;11895:79;;:::i;:::-;11859:117;12000:62;12054:7;12045:6;12034:9;12030:22;12000:62;:::i;:::-;11990:72;;11785:287;11136:943;;;;;;;:::o;12085:474::-;12153:6;12161;12210:2;12198:9;12189:7;12185:23;12181:32;12178:119;;;12216:79;;:::i;:::-;12178:119;12336:1;12361:53;12406:7;12397:6;12386:9;12382:22;12361:53;:::i;:::-;12351:63;;12307:117;12463:2;12489:53;12534:7;12525:6;12514:9;12510:22;12489:53;:::i;:::-;12479:63;;12434:118;12085:474;;;;;:::o;12565:311::-;12642:4;12732:18;12724:6;12721:30;12718:56;;;12754:18;;:::i;:::-;12718:56;12804:4;12796:6;12792:17;12784:25;;12864:4;12858;12854:15;12846:23;;12565:311;;;:::o;12882:117::-;12991:1;12988;12981:12;13022:710;13118:5;13143:81;13159:64;13216:6;13159:64;:::i;:::-;13143:81;:::i;:::-;13134:90;;13244:5;13273:6;13266:5;13259:21;13307:4;13300:5;13296:16;13289:23;;13360:4;13352:6;13348:17;13340:6;13336:30;13389:3;13381:6;13378:15;13375:122;;;13408:79;;:::i;:::-;13375:122;13523:6;13506:220;13540:6;13535:3;13532:15;13506:220;;;13615:3;13644:37;13677:3;13665:10;13644:37;:::i;:::-;13639:3;13632:50;13711:4;13706:3;13702:14;13695:21;;13582:144;13566:4;13561:3;13557:14;13550:21;;13506:220;;;13510:21;13124:608;;13022:710;;;;;:::o;13755:370::-;13826:5;13875:3;13868:4;13860:6;13856:17;13852:27;13842:122;;13883:79;;:::i;:::-;13842:122;14000:6;13987:20;14025:94;14115:3;14107:6;14100:4;14092:6;14088:17;14025:94;:::i;:::-;14016:103;;13832:293;13755:370;;;;:::o;14131:308::-;14205:4;14295:18;14287:6;14284:30;14281:56;;;14317:18;;:::i;:::-;14281:56;14367:4;14359:6;14355:17;14347:25;;14427:4;14421;14417:15;14409:23;;14131:308;;;:::o;14459:701::-;14552:5;14577:78;14593:61;14647:6;14593:61;:::i;:::-;14577:78;:::i;:::-;14568:87;;14675:5;14704:6;14697:5;14690:21;14738:4;14731:5;14727:16;14720:23;;14791:4;14783:6;14779:17;14771:6;14767:30;14820:3;14812:6;14809:15;14806:122;;;14839:79;;:::i;:::-;14806:122;14954:6;14937:217;14971:6;14966:3;14963:15;14937:217;;;15046:3;15075:34;15105:3;15093:10;15075:34;:::i;:::-;15070:3;15063:47;15139:4;15134:3;15130:14;15123:21;;15013:141;14997:4;14992:3;14988:14;14981:21;;14937:217;;;14941:21;14558:602;;14459:701;;;;;:::o;15180:364::-;15248:5;15297:3;15290:4;15282:6;15278:17;15274:27;15264:122;;15305:79;;:::i;:::-;15264:122;15422:6;15409:20;15447:91;15534:3;15526:6;15519:4;15511:6;15507:17;15447:91;:::i;:::-;15438:100;;15254:290;15180:364;;;;:::o;15550:888::-;15665:6;15673;15722:2;15710:9;15701:7;15697:23;15693:32;15690:119;;;15728:79;;:::i;:::-;15690:119;15876:1;15865:9;15861:17;15848:31;15906:18;15898:6;15895:30;15892:117;;;15928:79;;:::i;:::-;15892:117;16033:78;16103:7;16094:6;16083:9;16079:22;16033:78;:::i;:::-;16023:88;;15819:302;16188:2;16177:9;16173:18;16160:32;16219:18;16211:6;16208:30;16205:117;;;16241:79;;:::i;:::-;16205:117;16346:75;16413:7;16404:6;16393:9;16389:22;16346:75;:::i;:::-;16336:85;;16131:300;15550:888;;;;;:::o;16444:180::-;16492:77;16489:1;16482:88;16589:4;16586:1;16579:15;16613:4;16610:1;16603:15;16630:320;16674:6;16711:1;16705:4;16701:12;16691:22;;16758:1;16752:4;16748:12;16779:18;16769:81;;16835:4;16827:6;16823:17;16813:27;;16769:81;16897:2;16889:6;16886:14;16866:18;16863:38;16860:84;;16916:18;;:::i;:::-;16860:84;16681:269;16630:320;;;:::o;16956:232::-;17096:34;17092:1;17084:6;17080:14;17073:58;17165:15;17160:2;17152:6;17148:15;17141:40;16956:232;:::o;17194:366::-;17336:3;17357:67;17421:2;17416:3;17357:67;:::i;:::-;17350:74;;17433:93;17522:3;17433:93;:::i;:::-;17551:2;17546:3;17542:12;17535:19;;17194:366;;;:::o;17566:419::-;17732:4;17770:2;17759:9;17755:18;17747:26;;17819:9;17813:4;17809:20;17805:1;17794:9;17790:17;17783:47;17847:131;17973:4;17847:131;:::i;:::-;17839:139;;17566:419;;;:::o;17991:176::-;18131:28;18127:1;18119:6;18115:14;18108:52;17991:176;:::o;18173:366::-;18315:3;18336:67;18400:2;18395:3;18336:67;:::i;:::-;18329:74;;18412:93;18501:3;18412:93;:::i;:::-;18530:2;18525:3;18521:12;18514:19;;18173:366;;;:::o;18545:419::-;18711:4;18749:2;18738:9;18734:18;18726:26;;18798:9;18792:4;18788:20;18784:1;18773:9;18769:17;18762:47;18826:131;18952:4;18826:131;:::i;:::-;18818:139;;18545:419;;;:::o;18970:231::-;19110:34;19106:1;19098:6;19094:14;19087:58;19179:14;19174:2;19166:6;19162:15;19155:39;18970:231;:::o;19207:366::-;19349:3;19370:67;19434:2;19429:3;19370:67;:::i;:::-;19363:74;;19446:93;19535:3;19446:93;:::i;:::-;19564:2;19559:3;19555:12;19548:19;;19207:366;;;:::o;19579:419::-;19745:4;19783:2;19772:9;19768:18;19760:26;;19832:9;19826:4;19822:20;19818:1;19807:9;19803:17;19796:47;19860:131;19986:4;19860:131;:::i;:::-;19852:139;;19579:419;;;:::o;20004:173::-;20144:25;20140:1;20132:6;20128:14;20121:49;20004:173;:::o;20183:366::-;20325:3;20346:67;20410:2;20405:3;20346:67;:::i;:::-;20339:74;;20422:93;20511:3;20422:93;:::i;:::-;20540:2;20535:3;20531:12;20524:19;;20183:366;;;:::o;20555:419::-;20721:4;20759:2;20748:9;20744:18;20736:26;;20808:9;20802:4;20798:20;20794:1;20783:9;20779:17;20772:47;20836:131;20962:4;20836:131;:::i;:::-;20828:139;;20555:419;;;:::o;20980:180::-;21028:77;21025:1;21018:88;21125:4;21122:1;21115:15;21149:4;21146:1;21139:15;21166:180;21214:77;21211:1;21204:88;21311:4;21308:1;21301:15;21335:4;21332:1;21325:15;21352:194;21392:4;21412:20;21430:1;21412:20;:::i;:::-;21407:25;;21446:20;21464:1;21446:20;:::i;:::-;21441:25;;21490:1;21487;21483:9;21475:17;;21514:1;21508:4;21505:11;21502:37;;;21519:18;;:::i;:::-;21502:37;21352:194;;;;:::o;21552:147::-;21653:11;21690:3;21675:18;;21552:147;;;;:::o;21705:114::-;;:::o;21825:398::-;21984:3;22005:83;22086:1;22081:3;22005:83;:::i;:::-;21998:90;;22097:93;22186:3;22097:93;:::i;:::-;22215:1;22210:3;22206:11;22199:18;;21825:398;;;:::o;22229:379::-;22413:3;22435:147;22578:3;22435:147;:::i;:::-;22428:154;;22599:3;22592:10;;22229:379;;;:::o;22614:191::-;22654:3;22673:20;22691:1;22673:20;:::i;:::-;22668:25;;22707:20;22725:1;22707:20;:::i;:::-;22702:25;;22750:1;22747;22743:9;22736:16;;22771:3;22768:1;22765:10;22762:36;;;22778:18;;:::i;:::-;22762:36;22614:191;;;;:::o;22811:168::-;22951:20;22947:1;22939:6;22935:14;22928:44;22811:168;:::o;22985:366::-;23127:3;23148:67;23212:2;23207:3;23148:67;:::i;:::-;23141:74;;23224:93;23313:3;23224:93;:::i;:::-;23342:2;23337:3;23333:12;23326:19;;22985:366;;;:::o;23357:419::-;23523:4;23561:2;23550:9;23546:18;23538:26;;23610:9;23604:4;23600:20;23596:1;23585:9;23581:17;23574:47;23638:131;23764:4;23638:131;:::i;:::-;23630:139;;23357:419;;;:::o;23782:141::-;23831:4;23854:3;23846:11;;23877:3;23874:1;23867:14;23911:4;23908:1;23898:18;23890:26;;23782:141;;;:::o;23929:93::-;23966:6;24013:2;24008;24001:5;23997:14;23993:23;23983:33;;23929:93;;;:::o;24028:107::-;24072:8;24122:5;24116:4;24112:16;24091:37;;24028:107;;;;:::o;24141:393::-;24210:6;24260:1;24248:10;24244:18;24283:97;24313:66;24302:9;24283:97;:::i;:::-;24401:39;24431:8;24420:9;24401:39;:::i;:::-;24389:51;;24473:4;24469:9;24462:5;24458:21;24449:30;;24522:4;24512:8;24508:19;24501:5;24498:30;24488:40;;24217:317;;24141:393;;;;;:::o;24540:60::-;24568:3;24589:5;24582:12;;24540:60;;;:::o;24606:142::-;24656:9;24689:53;24707:34;24716:24;24734:5;24716:24;:::i;:::-;24707:34;:::i;:::-;24689:53;:::i;:::-;24676:66;;24606:142;;;:::o;24754:75::-;24797:3;24818:5;24811:12;;24754:75;;;:::o;24835:269::-;24945:39;24976:7;24945:39;:::i;:::-;25006:91;25055:41;25079:16;25055:41;:::i;:::-;25047:6;25040:4;25034:11;25006:91;:::i;:::-;25000:4;24993:105;24911:193;24835:269;;;:::o;25110:73::-;25155:3;25110:73;:::o;25189:189::-;25266:32;;:::i;:::-;25307:65;25365:6;25357;25351:4;25307:65;:::i;:::-;25242:136;25189:189;;:::o;25384:186::-;25444:120;25461:3;25454:5;25451:14;25444:120;;;25515:39;25552:1;25545:5;25515:39;:::i;:::-;25488:1;25481:5;25477:13;25468:22;;25444:120;;;25384:186;;:::o;25576:543::-;25677:2;25672:3;25669:11;25666:446;;;25711:38;25743:5;25711:38;:::i;:::-;25795:29;25813:10;25795:29;:::i;:::-;25785:8;25781:44;25978:2;25966:10;25963:18;25960:49;;;25999:8;25984:23;;25960:49;26022:80;26078:22;26096:3;26078:22;:::i;:::-;26068:8;26064:37;26051:11;26022:80;:::i;:::-;25681:431;;25666:446;25576:543;;;:::o;26125:117::-;26179:8;26229:5;26223:4;26219:16;26198:37;;26125:117;;;;:::o;26248:169::-;26292:6;26325:51;26373:1;26369:6;26361:5;26358:1;26354:13;26325:51;:::i;:::-;26321:56;26406:4;26400;26396:15;26386:25;;26299:118;26248:169;;;;:::o;26422:295::-;26498:4;26644:29;26669:3;26663:4;26644:29;:::i;:::-;26636:37;;26706:3;26703:1;26699:11;26693:4;26690:21;26682:29;;26422:295;;;;:::o;26722:1395::-;26839:37;26872:3;26839:37;:::i;:::-;26941:18;26933:6;26930:30;26927:56;;;26963:18;;:::i;:::-;26927:56;27007:38;27039:4;27033:11;27007:38;:::i;:::-;27092:67;27152:6;27144;27138:4;27092:67;:::i;:::-;27186:1;27210:4;27197:17;;27242:2;27234:6;27231:14;27259:1;27254:618;;;;27916:1;27933:6;27930:77;;;27982:9;27977:3;27973:19;27967:26;27958:35;;27930:77;28033:67;28093:6;28086:5;28033:67;:::i;:::-;28027:4;28020:81;27889:222;27224:887;;27254:618;27306:4;27302:9;27294:6;27290:22;27340:37;27372:4;27340:37;:::i;:::-;27399:1;27413:208;27427:7;27424:1;27421:14;27413:208;;;27506:9;27501:3;27497:19;27491:26;27483:6;27476:42;27557:1;27549:6;27545:14;27535:24;;27604:2;27593:9;27589:18;27576:31;;27450:4;27447:1;27443:12;27438:17;;27413:208;;;27649:6;27640:7;27637:19;27634:179;;;27707:9;27702:3;27698:19;27692:26;27750:48;27792:4;27784:6;27780:17;27769:9;27750:48;:::i;:::-;27742:6;27735:64;27657:156;27634:179;27859:1;27855;27847:6;27843:14;27839:22;27833:4;27826:36;27261:611;;;27224:887;;26814:1303;;;26722:1395;;:::o;28123:234::-;28263:34;28259:1;28251:6;28247:14;28240:58;28332:17;28327:2;28319:6;28315:15;28308:42;28123:234;:::o;28363:366::-;28505:3;28526:67;28590:2;28585:3;28526:67;:::i;:::-;28519:74;;28602:93;28691:3;28602:93;:::i;:::-;28720:2;28715:3;28711:12;28704:19;;28363:366;;;:::o;28735:419::-;28901:4;28939:2;28928:9;28924:18;28916:26;;28988:9;28982:4;28978:20;28974:1;28963:9;28959:17;28952:47;29016:131;29142:4;29016:131;:::i;:::-;29008:139;;28735:419;;;:::o;29160:148::-;29262:11;29299:3;29284:18;;29160:148;;;;:::o;29338:874::-;29441:3;29478:5;29472:12;29507:36;29533:9;29507:36;:::i;:::-;29559:89;29641:6;29636:3;29559:89;:::i;:::-;29552:96;;29679:1;29668:9;29664:17;29695:1;29690:166;;;;29870:1;29865:341;;;;29657:549;;29690:166;29774:4;29770:9;29759;29755:25;29750:3;29743:38;29836:6;29829:14;29822:22;29814:6;29810:35;29805:3;29801:45;29794:52;;29690:166;;29865:341;29932:38;29964:5;29932:38;:::i;:::-;29992:1;30006:154;30020:6;30017:1;30014:13;30006:154;;;30094:7;30088:14;30084:1;30079:3;30075:11;30068:35;30144:1;30135:7;30131:15;30120:26;;30042:4;30039:1;30035:12;30030:17;;30006:154;;;30189:6;30184:3;30180:16;30173:23;;29872:334;;29657:549;;29445:767;;29338:874;;;;:::o;30218:390::-;30324:3;30352:39;30385:5;30352:39;:::i;:::-;30407:89;30489:6;30484:3;30407:89;:::i;:::-;30400:96;;30505:65;30563:6;30558:3;30551:4;30544:5;30540:16;30505:65;:::i;:::-;30595:6;30590:3;30586:16;30579:23;;30328:280;30218:390;;;;:::o;30614:155::-;30754:7;30750:1;30742:6;30738:14;30731:31;30614:155;:::o;30775:400::-;30935:3;30956:84;31038:1;31033:3;30956:84;:::i;:::-;30949:91;;31049:93;31138:3;31049:93;:::i;:::-;31167:1;31162:3;31158:11;31151:18;;30775:400;;;:::o;31181:695::-;31459:3;31481:92;31569:3;31560:6;31481:92;:::i;:::-;31474:99;;31590:95;31681:3;31672:6;31590:95;:::i;:::-;31583:102;;31702:148;31846:3;31702:148;:::i;:::-;31695:155;;31867:3;31860:10;;31181:695;;;;;:::o;31882:225::-;32022:34;32018:1;32010:6;32006:14;31999:58;32091:8;32086:2;32078:6;32074:15;32067:33;31882:225;:::o;32113:366::-;32255:3;32276:67;32340:2;32335:3;32276:67;:::i;:::-;32269:74;;32352:93;32441:3;32352:93;:::i;:::-;32470:2;32465:3;32461:12;32454:19;;32113:366;;;:::o;32485:419::-;32651:4;32689:2;32678:9;32674:18;32666:26;;32738:9;32732:4;32728:20;32724:1;32713:9;32709:17;32702:47;32766:131;32892:4;32766:131;:::i;:::-;32758:139;;32485:419;;;:::o;32910:233::-;32949:3;32972:24;32990:5;32972:24;:::i;:::-;32963:33;;33018:66;33011:5;33008:77;33005:103;;33088:18;;:::i;:::-;33005:103;33135:1;33128:5;33124:13;33117:20;;32910:233;;;:::o;33149:182::-;33289:34;33285:1;33277:6;33273:14;33266:58;33149:182;:::o;33337:366::-;33479:3;33500:67;33564:2;33559:3;33500:67;:::i;:::-;33493:74;;33576:93;33665:3;33576:93;:::i;:::-;33694:2;33689:3;33685:12;33678:19;;33337:366;;;:::o;33709:419::-;33875:4;33913:2;33902:9;33898:18;33890:26;;33962:9;33956:4;33952:20;33948:1;33937:9;33933:17;33926:47;33990:131;34116:4;33990:131;:::i;:::-;33982:139;;33709:419;;;:::o;34134:98::-;34185:6;34219:5;34213:12;34203:22;;34134:98;;;:::o;34238:168::-;34321:11;34355:6;34350:3;34343:19;34395:4;34390:3;34386:14;34371:29;;34238:168;;;;:::o;34412:373::-;34498:3;34526:38;34558:5;34526:38;:::i;:::-;34580:70;34643:6;34638:3;34580:70;:::i;:::-;34573:77;;34659:65;34717:6;34712:3;34705:4;34698:5;34694:16;34659:65;:::i;:::-;34749:29;34771:6;34749:29;:::i;:::-;34744:3;34740:39;34733:46;;34502:283;34412:373;;;;:::o;34791:640::-;34986:4;35024:3;35013:9;35009:19;35001:27;;35038:71;35106:1;35095:9;35091:17;35082:6;35038:71;:::i;:::-;35119:72;35187:2;35176:9;35172:18;35163:6;35119:72;:::i;:::-;35201;35269:2;35258:9;35254:18;35245:6;35201:72;:::i;:::-;35320:9;35314:4;35310:20;35305:2;35294:9;35290:18;35283:48;35348:76;35419:4;35410:6;35348:76;:::i;:::-;35340:84;;34791:640;;;;;;;:::o;35437:141::-;35493:5;35524:6;35518:13;35509:22;;35540:32;35566:5;35540:32;:::i;:::-;35437:141;;;;:::o;35584:349::-;35653:6;35702:2;35690:9;35681:7;35677:23;35673:32;35670:119;;;35708:79;;:::i;:::-;35670:119;35828:1;35853:63;35908:7;35899:6;35888:9;35884:22;35853:63;:::i;:::-;35843:73;;35799:127;35584:349;;;;:::o;35939:180::-;35987:77;35984:1;35977:88;36084:4;36081:1;36074:15;36108:4;36105:1;36098:15;36125:185;36165:1;36182:20;36200:1;36182:20;:::i;:::-;36177:25;;36216:20;36234:1;36216:20;:::i;:::-;36211:25;;36255:1;36245:35;;36260:18;;:::i;:::-;36245:35;36302:1;36299;36295:9;36290:14;;36125:185;;;;:::o;36316:176::-;36348:1;36365:20;36383:1;36365:20;:::i;:::-;36360:25;;36399:20;36417:1;36399:20;:::i;:::-;36394:25;;36438:1;36428:35;;36443:18;;:::i;:::-;36428:35;36484:1;36481;36477:9;36472:14;;36316:176;;;;:::o

Swarm Source

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