ETH Price: $2,579.93 (-3.07%)

Token

RAXworld x Arthur Vilar Surfboard (RAXworldxArthurVilar)
 

Overview

Max Total Supply

1,000 RAXworldxArthurVilar

Holders

996

Market

Volume (24H)

N/A

Min Price (24H)

N/A

Max Price (24H)

N/A
Balance
1 RAXworldxArthurVilar
0x9d13c9a14801b4319dc0a3a42d5859b329df7be2
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:
Solmate

Compiler Version
v0.8.18+commit.87f61d96

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion
File 1 of 1 : Solmate.sol
// SPDX-License-Identifier: NONE

// File src/solmate/ERC721.sol

pragma solidity >=0.8.0;

/// @notice Modern, minimalist, and gas efficient ERC-721 implementation.
/// @author Solmate (https://github.com/transmissions11/solmate/blob/main/src/tokens/ERC721.sol)
abstract contract ERC721 {
    /*//////////////////////////////////////////////////////////////
                                 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;

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

    /*//////////////////////////////////////////////////////////////
                      ERC721 BALANCE/OWNER STORAGE
    //////////////////////////////////////////////////////////////*/

    mapping(uint256 => address) internal _ownerOf;

    mapping(address => uint256) internal _balanceOf;

    function ownerOf(uint256 id) public view virtual returns (address owner) {
        require((owner = _ownerOf[id]) != address(0), 'NOT_MINTED');
    }

    function balanceOf(address owner) public view virtual returns (uint256) {
        require(owner != address(0), 'ZERO_ADDRESS');

        return _balanceOf[owner];
    }

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

    mapping(uint256 => address) public getApproved;

    mapping(address => mapping(address => bool)) public isApprovedForAll;

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

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

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

    function approve(address spender, uint256 id) public virtual {
        address owner = _ownerOf[id];

        require(
            msg.sender == owner || isApprovedForAll[owner][msg.sender],
            'NOT_AUTHORIZED'
        );

        getApproved[id] = spender;

        emit Approval(owner, spender, id);
    }

    function setApprovalForAll(address operator, bool approved) public virtual {
        isApprovedForAll[msg.sender][operator] = approved;

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

    function transferFrom(
        address from,
        address to,
        uint256 id
    ) public virtual {
        require(from == _ownerOf[id], 'WRONG_FROM');

        require(to != address(0), 'INVALID_RECIPIENT');

        require(
            msg.sender == from ||
                isApprovedForAll[from][msg.sender] ||
                msg.sender == getApproved[id],
            'NOT_AUTHORIZED'
        );

        // Underflow of the sender's balance is impossible because we check for
        // ownership above and the recipient's balance can't realistically overflow.
        unchecked {
            _balanceOf[from]--;

            _balanceOf[to]++;
        }

        _ownerOf[id] = to;

        delete getApproved[id];

        emit Transfer(from, to, id);
    }

    function safeTransferFrom(
        address from,
        address to,
        uint256 id
    ) public virtual {
        transferFrom(from, to, id);

        require(
            to.code.length == 0 ||
                ERC721TokenReceiver(to).onERC721Received(
                    msg.sender,
                    from,
                    id,
                    ''
                ) ==
                ERC721TokenReceiver.onERC721Received.selector,
            'UNSAFE_RECIPIENT'
        );
    }

    function safeTransferFrom(
        address from,
        address to,
        uint256 id,
        bytes calldata data
    ) public virtual {
        transferFrom(from, to, id);

        require(
            to.code.length == 0 ||
                ERC721TokenReceiver(to).onERC721Received(
                    msg.sender,
                    from,
                    id,
                    data
                ) ==
                ERC721TokenReceiver.onERC721Received.selector,
            'UNSAFE_RECIPIENT'
        );
    }

    /*//////////////////////////////////////////////////////////////
                              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 == 0x5b5e139f; // ERC165 Interface ID for ERC721Metadata
    }

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

    function _mint(address to, uint256 id) internal virtual {
        require(to != address(0), 'INVALID_RECIPIENT');

        require(_ownerOf[id] == address(0), 'ALREADY_MINTED');

        // Counter overflow is incredibly unrealistic.
        unchecked {
            _balanceOf[to]++;
        }

        _ownerOf[id] = to;

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

    function _burn(uint256 id) internal virtual {
        address owner = _ownerOf[id];

        require(owner != address(0), 'NOT_MINTED');

        // Ownership check above ensures no underflow.
        unchecked {
            _balanceOf[owner]--;
        }

        delete _ownerOf[id];

        delete getApproved[id];

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

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

    function _safeMint(address to, uint256 id) internal virtual {
        _mint(to, id);

        require(
            to.code.length == 0 ||
                ERC721TokenReceiver(to).onERC721Received(
                    msg.sender,
                    address(0),
                    id,
                    ''
                ) ==
                ERC721TokenReceiver.onERC721Received.selector,
            'UNSAFE_RECIPIENT'
        );
    }

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

        require(
            to.code.length == 0 ||
                ERC721TokenReceiver(to).onERC721Received(
                    msg.sender,
                    address(0),
                    id,
                    data
                ) ==
                ERC721TokenReceiver.onERC721Received.selector,
            'UNSAFE_RECIPIENT'
        );
    }
}

/// @notice A generic interface for a contract which properly accepts ERC721 tokens.
/// @author Solmate (https://github.com/transmissions11/solmate/blob/main/src/tokens/ERC721.sol)
abstract contract ERC721TokenReceiver {
    function onERC721Received(
        address,
        address,
        uint256,
        bytes calldata
    ) external virtual returns (bytes4) {
// SPDX-License-Identifier: NONE
        return ERC721TokenReceiver.onERC721Received.selector;
    }
}


// File src/ProxyRegistry.sol

pragma solidity ^0.8.4;

contract OwnableDelegateProxy {}

contract ProxyRegistry {
// SPDX-License-Identifier: NONE
    mapping(address => OwnableDelegateProxy) public proxies;
    mapping(address => bool) public contracts;
}


// File src/Solmate.sol

pragma solidity ^0.8.4;

// ERC721A so we can make approve function virtual


contract Solmate is ERC721 {
    address private _owner;
    string public baseURI;
    uint256 public currentTokenId;
    uint256 public maxSupply = 1_000;

    // pauses transfers and sales
    // minting and burning are always allowed
    bool private _paused = true;

    // authorised Operators list
    address[] private authorisedOperators;

    // madworld marketplace proxy registry
    address public proxyRegistryAddress =
        0x8DEeC50d7d92911c40574700F7A51ee5130857EE;

    constructor(
        string memory _name,
        string memory _symbol,
        string memory _baseURI
    ) ERC721(_name, _symbol) {
        baseURI = _baseURI;
        _owner = msg.sender;
    }

    // MODIFIERS

    modifier onlyOwner() {
        require(msg.sender == _owner, 'CALLER_NOT_OWNER');
        _;
    }

    modifier transferActive() {
        require(!_paused, 'TRANSFER_PAUSED');
        _;
    }

    function setBaseURI(string memory _newBaseURI) external onlyOwner {
        baseURI = _newBaseURI;
    }

    function setPaused(bool paused) external onlyOwner {
        _paused = paused;
    }

    function setMaxSupply(uint256 _maxSupply) external onlyOwner {
        maxSupply = _maxSupply;
    }

    function setProxyRegistryAddress(address _proxyRegistry)
        external
        onlyOwner
    {
        proxyRegistryAddress = _proxyRegistry;
    }

    // OWNERSHIP

    function transferOwnership(address to) external onlyOwner {
        require(_owner != to, 'OWNER_SET');
        _owner = to;
    }

    // MINT

    function batchMint(address[] memory receivers) external onlyOwner {
        require(currentTokenId + receivers.length <= maxSupply, 'MAX_SUPPLY');

        uint256 newTokenId;

        for (uint8 i = 0; i < receivers.length; i++) {
            newTokenId = ++currentTokenId;
            _safeMint(receivers[i], newTokenId);
        }
    }

    // ERC721

    function totalSupply()
        public
        view
        returns (uint256)
    {
        return maxSupply;
    }

    function tokenURI(uint256 tokenId)
        public
        view
        virtual
        override
        returns (string memory)
    {
        require(ownerOf(tokenId) != address(0), 'NON_EXISTENT_TOKEN');

        return
            bytes(baseURI).length > 0
                ? string(abi.encodePacked(baseURI, _toString(tokenId)))
                : '';
    }

    function contractURI() public view returns (string memory) 
    {
        return string(abi.encodePacked(baseURI, "metadata.json"));
    }

    function setApprovalForAll(address operator, bool approved)
        public
        virtual
        override
    {
        ProxyRegistry registry = ProxyRegistry(proxyRegistryAddress);

        if (approved) {
            require(
                isAuthorisedOperator(operator) ||
                    address(registry.proxies(_msgSender())) == operator,
                'UNAUTHORISED_OPERATOR'
            );
        }
        super.setApprovalForAll(operator, approved);
    }

    function approve(address to, uint256 tokenId) public override {
        if (to != address(0)) {
            ProxyRegistry registry = ProxyRegistry(proxyRegistryAddress);

            require(
                isAuthorisedOperator(to) ||
                    address(registry.proxies(_msgSender())) == to,
                'UNAUTHORISED_OPERATOR'
            );
        }
        super.approve(to, tokenId);
    }

    function transferFrom(
        address from,
        address to,
        uint256 id
    ) public virtual override transferActive {
        super.transferFrom(from, to, id);
    }

    function safeTransferFrom(
        address from,
        address to,
        uint256 id
    ) public virtual override transferActive {
        super.safeTransferFrom(from, to, id);
    }

    function safeTransferFrom(
        address from,
        address to,
        uint256 id,
        bytes calldata data
    ) public virtual override transferActive {
        super.safeTransferFrom(from, to, id, data);
    }

    // OPERATOR AUTHORISATION

    function addAuthorisedOperator(address[] calldata operators)
        external
        onlyOwner
    {
        for (uint256 i = 0; i < operators.length; i++) {
            authorisedOperators.push(operators[i]);
        }
    }

    function removeOperator(address operator) external onlyOwner {
        address[] memory filteredOperators;
        uint256 count = 0;

        for (uint256 i = 0; i < authorisedOperators.length; i++) {
            if (authorisedOperators[i] != operator) {
                filteredOperators[count] = authorisedOperators[i];
                count++;
            }
        }

        authorisedOperators = filteredOperators;
    }

    function isAuthorisedOperator(address operator) public view returns (bool) {
        for (uint256 i = 0; i < authorisedOperators.length; i++) {
            if (operator == authorisedOperators[i]) {
                return true;
            }
        }

        return false;
    }

    // UTIL FUNCTIONS

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

    /**
     * @dev Converts a uint256 to its ASCII string decimal representation.
     *   from ERC721A
     */
    function _toString(uint256 value)
        internal
        pure
        virtual
        returns (string memory str)
    {
        assembly {
            // The maximum value of a uint256 contains 78 digits (1 byte per digit), but
            // we allocate 0xa0 bytes to keep the free memory pointer 32-byte word aligned.
            // We will need 1 word for the trailing zeros padding, 1 word for the length,
            // and 3 words for a maximum of 78 digits. Total: 5 * 0x20 = 0xa0.
            let m := add(mload(0x40), 0xa0)
            // Update the free memory pointer to allocate.
            mstore(0x40, m)
            // Assign the `str` to the end.
            str := sub(m, 0x20)
            // Zeroize the slot after the string.
            mstore(str, 0)

            // Cache the end of the memory to calculate the length later.
            let end := str

            // We write the string from rightmost digit to leftmost digit.
            // The following is essentially a do-while loop that also handles the zero case.
            // prettier-ignore
            for { let temp := value } 1 {} {
                str := sub(str, 1)
                // Write the character to the pointer.
                // The ASCII index of the '0' character is 48.
                mstore8(str, add(48, mod(temp, 10)))
                // Keep dividing `temp` until zero.
                temp := div(temp, 10)
                // prettier-ignore
                if iszero(temp) { break }
            }

            let length := sub(end, str)
            // Move the pointer 32 bytes leftwards to make room for the length.
            str := sub(str, 0x20)
            // Store the length.
            mstore(str, length)
        }
    }
}

Settings
{
  "optimizer": {
    "enabled": false,
    "runs": 200
  },
  "outputSelection": {
    "*": {
      "*": [
        "evm.bytecode",
        "evm.deployedBytecode",
        "devdoc",
        "userdoc",
        "metadata",
        "abi"
      ]
    }
  }
}

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"string","name":"_name","type":"string"},{"internalType":"string","name":"_symbol","type":"string"},{"internalType":"string","name":"_baseURI","type":"string"}],"stateMutability":"nonpayable","type":"constructor"},{"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":"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":"operators","type":"address[]"}],"name":"addAuthorisedOperator","outputs":[],"stateMutability":"nonpayable","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":"baseURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"receivers","type":"address[]"}],"name":"batchMint","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"contractURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"currentTokenId","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"getApproved","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"}],"name":"isApprovedForAll","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"operator","type":"address"}],"name":"isAuthorisedOperator","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":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"id","type":"uint256"}],"name":"ownerOf","outputs":[{"internalType":"address","name":"owner","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"proxyRegistryAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"operator","type":"address"}],"name":"removeOperator","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"id","type":"uint256"}],"name":"safeTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"id","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"safeTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"bool","name":"approved","type":"bool"}],"name":"setApprovalForAll","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"_newBaseURI","type":"string"}],"name":"setBaseURI","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_maxSupply","type":"uint256"}],"name":"setMaxSupply","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"paused","type":"bool"}],"name":"setPaused","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_proxyRegistry","type":"address"}],"name":"setProxyRegistryAddress","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":"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":"id","type":"uint256"}],"name":"transferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"}]

60806040526103e86009556001600a60006101000a81548160ff021916908315150217905550738deec50d7d92911c40574700f7a51ee5130857ee600c60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055503480156200008757600080fd5b50604051620040f3380380620040f38339818101604052810190620000ad9190620002c4565b82828160009081620000c09190620005c8565b508060019081620000d29190620005c8565b5050508060079081620000e69190620005c8565b5033600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550505050620006af565b6000604051905090565b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6200019a826200014f565b810181811067ffffffffffffffff82111715620001bc57620001bb62000160565b5b80604052505050565b6000620001d162000131565b9050620001df82826200018f565b919050565b600067ffffffffffffffff82111562000202576200020162000160565b5b6200020d826200014f565b9050602081019050919050565b60005b838110156200023a5780820151818401526020810190506200021d565b60008484015250505050565b60006200025d6200025784620001e4565b620001c5565b9050828152602081018484840111156200027c576200027b6200014a565b5b620002898482856200021a565b509392505050565b600082601f830112620002a957620002a862000145565b5b8151620002bb84826020860162000246565b91505092915050565b600080600060608486031215620002e057620002df6200013b565b5b600084015167ffffffffffffffff81111562000301576200030062000140565b5b6200030f8682870162000291565b935050602084015167ffffffffffffffff81111562000333576200033262000140565b5b620003418682870162000291565b925050604084015167ffffffffffffffff81111562000365576200036462000140565b5b620003738682870162000291565b9150509250925092565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680620003d057607f821691505b602082108103620003e657620003e562000388565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b600060088302620004507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8262000411565b6200045c868362000411565b95508019841693508086168417925050509392505050565b6000819050919050565b6000819050919050565b6000620004a9620004a36200049d8462000474565b6200047e565b62000474565b9050919050565b6000819050919050565b620004c58362000488565b620004dd620004d482620004b0565b8484546200041e565b825550505050565b600090565b620004f4620004e5565b62000501818484620004ba565b505050565b5b8181101562000529576200051d600082620004ea565b60018101905062000507565b5050565b601f82111562000578576200054281620003ec565b6200054d8462000401565b810160208510156200055d578190505b620005756200056c8562000401565b83018262000506565b50505b505050565b600082821c905092915050565b60006200059d600019846008026200057d565b1980831691505092915050565b6000620005b883836200058a565b9150826002028217905092915050565b620005d3826200037d565b67ffffffffffffffff811115620005ef57620005ee62000160565b5b620005fb8254620003b7565b620006088282856200052d565b600060209050601f8311600181146200064057600084156200062b578287015190505b620006378582620005aa565b865550620006a7565b601f1984166200065086620003ec565b60005b828110156200067a5784890151825560018201915060208501945060208101905062000653565b868310156200069a578489015162000696601f8916826200058a565b8355505b6001600288020188555050505b505050505050565b613a3480620006bf6000396000f3fe608060405234801561001057600080fd5b50600436106101c35760003560e01c806395d89b41116100f9578063d26ea6c011610097578063df0b663711610071578063df0b6637146104ee578063e8a3d4851461050a578063e985e9c514610528578063f2fde38b14610558576101c3565b8063d26ea6c014610498578063d5abeb01146104b4578063d67b06c1146104d2576101c3565b8063b88d4fde116100d3578063b88d4fde146103fe578063bc30d7641461041a578063c87b56dd1461044a578063cd7c03261461047a576101c3565b806395d89b41146103a8578063a22cb465146103c6578063ac8a584a146103e2576101c3565b806323b872dd116101665780636352211e116101405780636352211e1461030e5780636c0360eb1461033e5780636f8b44b01461035c57806370a0823114610378576101c3565b806323b872dd146102ba57806342842e0e146102d657806355f804b3146102f2576101c3565b8063081812fc116101a2578063081812fc14610234578063095ea7b31461026457806316c38b3c1461028057806318160ddd1461029c576101c3565b80629a9b7b146101c857806301ffc9a7146101e657806306fdde0314610216575b600080fd5b6101d0610574565b6040516101dd919061256f565b60405180910390f35b61020060048036038101906101fb91906125f6565b61057a565b60405161020d919061263e565b60405180910390f35b61021e61060c565b60405161022b91906126e9565b60405180910390f35b61024e60048036038101906102499190612737565b61069a565b60405161025b91906127a5565b60405180910390f35b61027e600480360381019061027991906127ec565b6106cd565b005b61029a60048036038101906102959190612858565b610836565b005b6102a46108e3565b6040516102b1919061256f565b60405180910390f35b6102d460048036038101906102cf9190612885565b6108ed565b005b6102f060048036038101906102eb9190612885565b61094d565b005b61030c60048036038101906103079190612a0d565b6109ad565b005b61032860048036038101906103239190612737565b610a50565b60405161033591906127a5565b60405180910390f35b610346610afb565b60405161035391906126e9565b60405180910390f35b61037660048036038101906103719190612737565b610b89565b005b610392600480360381019061038d9190612a56565b610c23565b60405161039f919061256f565b60405180910390f35b6103b0610cda565b6040516103bd91906126e9565b60405180910390f35b6103e060048036038101906103db9190612a83565b610d68565b005b6103fc60048036038101906103f79190612a56565b610ea3565b005b61041860048036038101906104139190612b23565b611082565b005b610434600480360381019061042f9190612a56565b6110e6565b604051610441919061263e565b60405180910390f35b610464600480360381019061045f9190612737565b611194565b60405161047191906126e9565b60405180910390f35b61048261126b565b60405161048f91906127a5565b60405180910390f35b6104b260048036038101906104ad9190612a56565b611291565b005b6104bc611365565b6040516104c9919061256f565b60405180910390f35b6104ec60048036038101906104e79190612c6e565b61136b565b005b61050860048036038101906105039190612d0d565b6114b8565b005b6105126115f8565b60405161051f91906126e9565b60405180910390f35b610542600480360381019061053d9190612d5a565b611620565b60405161054f919061263e565b60405180910390f35b610572600480360381019061056d9190612a56565b61164f565b005b60085481565b60006301ffc9a760e01b827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806105d557506380ac58cd60e01b827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b806106055750635b5e139f60e01b827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b9050919050565b6000805461061990612dc9565b80601f016020809104026020016040519081016040528092919081815260200182805461064590612dc9565b80156106925780601f1061066757610100808354040283529160200191610692565b820191906000526020600020905b81548152906001019060200180831161067557829003601f168201915b505050505081565b60046020528060005260406000206000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614610828576000600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050610731836110e6565b806107e757508273ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1663c45527916107726117b3565b6040518263ffffffff1660e01b815260040161078e91906127a5565b602060405180830381865afa1580156107ab573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107cf9190612e38565b73ffffffffffffffffffffffffffffffffffffffff16145b610826576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161081d90612eb1565b60405180910390fd5b505b61083282826117bb565b5050565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146108c6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108bd90612f1d565b60405180910390fd5b80600a60006101000a81548160ff02191690831515021790555050565b6000600954905090565b600a60009054906101000a900460ff161561093d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161093490612f89565b60405180910390fd5b6109488383836119a4565b505050565b600a60009054906101000a900460ff161561099d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161099490612f89565b60405180910390fd5b6109a8838383611da3565b505050565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610a3d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a3490612f1d565b60405180910390fd5b8060079081610a4c9190613155565b5050565b60008073ffffffffffffffffffffffffffffffffffffffff166002600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1691508173ffffffffffffffffffffffffffffffffffffffff1603610af6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610aed90613273565b60405180910390fd5b919050565b60078054610b0890612dc9565b80601f0160208091040260200160405190810160405280929190818152602001828054610b3490612dc9565b8015610b815780601f10610b5657610100808354040283529160200191610b81565b820191906000526020600020905b815481529060010190602001808311610b6457829003601f168201915b505050505081565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610c19576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c1090612f1d565b60405180910390fd5b8060098190555050565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610c93576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c8a906132df565b60405180910390fd5b600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b60018054610ce790612dc9565b80601f0160208091040260200160405190810160405280929190818152602001828054610d1390612dc9565b8015610d605780601f10610d3557610100808354040283529160200191610d60565b820191906000526020600020905b815481529060010190602001808311610d4357829003601f168201915b505050505081565b6000600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508115610e9457610d9e836110e6565b80610e5457508273ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1663c4552791610ddf6117b3565b6040518263ffffffff1660e01b8152600401610dfb91906127a5565b602060405180830381865afa158015610e18573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e3c9190612e38565b73ffffffffffffffffffffffffffffffffffffffff16145b610e93576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e8a90612eb1565b60405180910390fd5b5b610e9e8383611edb565b505050565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610f33576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f2a90612f1d565b60405180910390fd5b60606000805b600b80549050811015611065578373ffffffffffffffffffffffffffffffffffffffff16600b8281548110610f7157610f706132ff565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461105257600b8181548110610fcb57610fca6132ff565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16838381518110611009576110086132ff565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050818061104e9061335d565b9250505b808061105d9061335d565b915050610f39565b5081600b908051906020019061107c9291906124af565b50505050565b600a60009054906101000a900460ff16156110d2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110c990612f89565b60405180910390fd5b6110df8585858585611fd8565b5050505050565b600080600090505b600b8054905081101561118957600b818154811061110f5761110e6132ff565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361117657600191505061118f565b80806111819061335d565b9150506110ee565b50600090505b919050565b6060600073ffffffffffffffffffffffffffffffffffffffff166111b783610a50565b73ffffffffffffffffffffffffffffffffffffffff160361120d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611204906133f1565b60405180910390fd5b60006007805461121c90612dc9565b9050116112385760405180602001604052806000815250611264565b600761124383612116565b6040516020016112549291906134d0565b6040516020818303038152906040525b9050919050565b600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611321576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161131890612f1d565b60405180910390fd5b80600c60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60095481565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146113fb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113f290612f1d565b60405180910390fd5b600954815160085461140d91906134f4565b111561144e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161144590613574565b60405180910390fd5b600080600090505b82518160ff1610156114b3576008600081546114719061335d565b91905081905591506114a0838260ff1681518110611492576114916132ff565b5b602002602001015183612166565b80806114ab906135a1565b915050611456565b505050565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611548576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161153f90612f1d565b60405180910390fd5b60005b828290508110156115f357600b83838381811061156b5761156a6132ff565b5b90506020020160208101906115809190612a56565b9080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080806115eb9061335d565b91505061154b565b505050565b6060600760405160200161160c9190613616565b604051602081830303815290604052905090565b60056020528160005260406000206020528060005260406000206000915091509054906101000a900460ff1681565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146116df576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116d690612f1d565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff160361176f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161176690613684565b60405180910390fd5b80600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600033905090565b60006002600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614806118b35750600560008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b6118f2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118e9906136f0565b60405180910390fd5b826004600084815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550818373ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a4505050565b6002600082815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614611a45576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a3c9061375c565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611ab4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611aab906137c8565b60405180910390fd5b8273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161480611b745750600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b80611bdd57506004600082815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b611c1c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c13906136f0565b60405180910390fd5b600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000815480929190600190039190505550600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008154809291906001019190505550816002600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506004600082815260200190815260200160002060006101000a81549073ffffffffffffffffffffffffffffffffffffffff0219169055808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4505050565b611dae8383836108ed565b60008273ffffffffffffffffffffffffffffffffffffffff163b1480611e97575063150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168273ffffffffffffffffffffffffffffffffffffffff1663150b7a023386856040518463ffffffff1660e01b8152600401611e339392919061381f565b6020604051808303816000875af1158015611e52573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e76919061387e565b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b611ed6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ecd906138f7565b60405180910390fd5b505050565b80600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c3183604051611fcc919061263e565b60405180910390a35050565b611fe38585856108ed565b60008473ffffffffffffffffffffffffffffffffffffffff163b14806120d0575063150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168473ffffffffffffffffffffffffffffffffffffffff1663150b7a0233888787876040518663ffffffff1660e01b815260040161206c959493929190613944565b6020604051808303816000875af115801561208b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120af919061387e565b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b61210f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612106906138f7565b60405180910390fd5b5050505050565b606060a060405101806040526020810391506000825281835b60011561215157600184039350600a81066030018453600a810490508061212f575b50828103602084039350808452505050919050565b612170828261229d565b60008273ffffffffffffffffffffffffffffffffffffffff163b148061225a575063150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168273ffffffffffffffffffffffffffffffffffffffff1663150b7a02336000856040518463ffffffff1660e01b81526004016121f69392919061381f565b6020604051808303816000875af1158015612215573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612239919061387e565b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b612299576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612290906138f7565b60405180910390fd5b5050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361230c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612303906137c8565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff166002600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146123ae576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123a5906139de565b60405180910390fd5b600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008154809291906001019190505550816002600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a45050565b828054828255906000526020600020908101928215612528579160200282015b828111156125275782518260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550916020019190600101906124cf565b5b5090506125359190612539565b5090565b5b8082111561255257600081600090555060010161253a565b5090565b6000819050919050565b61256981612556565b82525050565b60006020820190506125846000830184612560565b92915050565b6000604051905090565b600080fd5b600080fd5b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b6125d38161259e565b81146125de57600080fd5b50565b6000813590506125f0816125ca565b92915050565b60006020828403121561260c5761260b612594565b5b600061261a848285016125e1565b91505092915050565b60008115159050919050565b61263881612623565b82525050565b6000602082019050612653600083018461262f565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015612693578082015181840152602081019050612678565b60008484015250505050565b6000601f19601f8301169050919050565b60006126bb82612659565b6126c58185612664565b93506126d5818560208601612675565b6126de8161269f565b840191505092915050565b6000602082019050818103600083015261270381846126b0565b905092915050565b61271481612556565b811461271f57600080fd5b50565b6000813590506127318161270b565b92915050565b60006020828403121561274d5761274c612594565b5b600061275b84828501612722565b91505092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061278f82612764565b9050919050565b61279f81612784565b82525050565b60006020820190506127ba6000830184612796565b92915050565b6127c981612784565b81146127d457600080fd5b50565b6000813590506127e6816127c0565b92915050565b6000806040838503121561280357612802612594565b5b6000612811858286016127d7565b925050602061282285828601612722565b9150509250929050565b61283581612623565b811461284057600080fd5b50565b6000813590506128528161282c565b92915050565b60006020828403121561286e5761286d612594565b5b600061287c84828501612843565b91505092915050565b60008060006060848603121561289e5761289d612594565b5b60006128ac868287016127d7565b93505060206128bd868287016127d7565b92505060406128ce86828701612722565b9150509250925092565b600080fd5b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b61291a8261269f565b810181811067ffffffffffffffff82111715612939576129386128e2565b5b80604052505050565b600061294c61258a565b90506129588282612911565b919050565b600067ffffffffffffffff821115612978576129776128e2565b5b6129818261269f565b9050602081019050919050565b82818337600083830152505050565b60006129b06129ab8461295d565b612942565b9050828152602081018484840111156129cc576129cb6128dd565b5b6129d784828561298e565b509392505050565b600082601f8301126129f4576129f36128d8565b5b8135612a0484826020860161299d565b91505092915050565b600060208284031215612a2357612a22612594565b5b600082013567ffffffffffffffff811115612a4157612a40612599565b5b612a4d848285016129df565b91505092915050565b600060208284031215612a6c57612a6b612594565b5b6000612a7a848285016127d7565b91505092915050565b60008060408385031215612a9a57612a99612594565b5b6000612aa8858286016127d7565b9250506020612ab985828601612843565b9150509250929050565b600080fd5b600080fd5b60008083601f840112612ae357612ae26128d8565b5b8235905067ffffffffffffffff811115612b0057612aff612ac3565b5b602083019150836001820283011115612b1c57612b1b612ac8565b5b9250929050565b600080600080600060808688031215612b3f57612b3e612594565b5b6000612b4d888289016127d7565b9550506020612b5e888289016127d7565b9450506040612b6f88828901612722565b935050606086013567ffffffffffffffff811115612b9057612b8f612599565b5b612b9c88828901612acd565b92509250509295509295909350565b600067ffffffffffffffff821115612bc657612bc56128e2565b5b602082029050602081019050919050565b6000612bea612be584612bab565b612942565b90508083825260208201905060208402830185811115612c0d57612c0c612ac8565b5b835b81811015612c365780612c2288826127d7565b845260208401935050602081019050612c0f565b5050509392505050565b600082601f830112612c5557612c546128d8565b5b8135612c65848260208601612bd7565b91505092915050565b600060208284031215612c8457612c83612594565b5b600082013567ffffffffffffffff811115612ca257612ca1612599565b5b612cae84828501612c40565b91505092915050565b60008083601f840112612ccd57612ccc6128d8565b5b8235905067ffffffffffffffff811115612cea57612ce9612ac3565b5b602083019150836020820283011115612d0657612d05612ac8565b5b9250929050565b60008060208385031215612d2457612d23612594565b5b600083013567ffffffffffffffff811115612d4257612d41612599565b5b612d4e85828601612cb7565b92509250509250929050565b60008060408385031215612d7157612d70612594565b5b6000612d7f858286016127d7565b9250506020612d90858286016127d7565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680612de157607f821691505b602082108103612df457612df3612d9a565b5b50919050565b6000612e0582612784565b9050919050565b612e1581612dfa565b8114612e2057600080fd5b50565b600081519050612e3281612e0c565b92915050565b600060208284031215612e4e57612e4d612594565b5b6000612e5c84828501612e23565b91505092915050565b7f554e415554484f52495345445f4f50455241544f520000000000000000000000600082015250565b6000612e9b601583612664565b9150612ea682612e65565b602082019050919050565b60006020820190508181036000830152612eca81612e8e565b9050919050565b7f43414c4c45525f4e4f545f4f574e455200000000000000000000000000000000600082015250565b6000612f07601083612664565b9150612f1282612ed1565b602082019050919050565b60006020820190508181036000830152612f3681612efa565b9050919050565b7f5452414e534645525f5041555345440000000000000000000000000000000000600082015250565b6000612f73600f83612664565b9150612f7e82612f3d565b602082019050919050565b60006020820190508181036000830152612fa281612f66565b9050919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b60006008830261300b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82612fce565b6130158683612fce565b95508019841693508086168417925050509392505050565b6000819050919050565b600061305261304d61304884612556565b61302d565b612556565b9050919050565b6000819050919050565b61306c83613037565b61308061307882613059565b848454612fdb565b825550505050565b600090565b613095613088565b6130a0818484613063565b505050565b5b818110156130c4576130b960008261308d565b6001810190506130a6565b5050565b601f821115613109576130da81612fa9565b6130e384612fbe565b810160208510156130f2578190505b6131066130fe85612fbe565b8301826130a5565b50505b505050565b600082821c905092915050565b600061312c6000198460080261310e565b1980831691505092915050565b6000613145838361311b565b9150826002028217905092915050565b61315e82612659565b67ffffffffffffffff811115613177576131766128e2565b5b6131818254612dc9565b61318c8282856130c8565b600060209050601f8311600181146131bf57600084156131ad578287015190505b6131b78582613139565b86555061321f565b601f1984166131cd86612fa9565b60005b828110156131f5578489015182556001820191506020850194506020810190506131d0565b86831015613212578489015161320e601f89168261311b565b8355505b6001600288020188555050505b505050505050565b7f4e4f545f4d494e54454400000000000000000000000000000000000000000000600082015250565b600061325d600a83612664565b915061326882613227565b602082019050919050565b6000602082019050818103600083015261328c81613250565b9050919050565b7f5a45524f5f414444524553530000000000000000000000000000000000000000600082015250565b60006132c9600c83612664565b91506132d482613293565b602082019050919050565b600060208201905081810360008301526132f8816132bc565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061336882612556565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361339a5761339961332e565b5b600182019050919050565b7f4e4f4e5f4558495354454e545f544f4b454e0000000000000000000000000000600082015250565b60006133db601283612664565b91506133e6826133a5565b602082019050919050565b6000602082019050818103600083015261340a816133ce565b9050919050565b600081905092915050565b6000815461342981612dc9565b6134338186613411565b9450600182166000811461344e576001811461346357613496565b60ff1983168652811515820286019350613496565b61346c85612fa9565b60005b8381101561348e5781548189015260018201915060208101905061346f565b838801955050505b50505092915050565b60006134aa82612659565b6134b48185613411565b93506134c4818560208601612675565b80840191505092915050565b60006134dc828561341c565b91506134e8828461349f565b91508190509392505050565b60006134ff82612556565b915061350a83612556565b92508282019050808211156135225761352161332e565b5b92915050565b7f4d41585f535550504c5900000000000000000000000000000000000000000000600082015250565b600061355e600a83612664565b915061356982613528565b602082019050919050565b6000602082019050818103600083015261358d81613551565b9050919050565b600060ff82169050919050565b60006135ac82613594565b915060ff82036135bf576135be61332e565b5b600182019050919050565b7f6d657461646174612e6a736f6e00000000000000000000000000000000000000600082015250565b6000613600600d83613411565b915061360b826135ca565b600d82019050919050565b6000613622828461341c565b915061362d826135f3565b915081905092915050565b7f4f574e45525f5345540000000000000000000000000000000000000000000000600082015250565b600061366e600983612664565b915061367982613638565b602082019050919050565b6000602082019050818103600083015261369d81613661565b9050919050565b7f4e4f545f415554484f52495a4544000000000000000000000000000000000000600082015250565b60006136da600e83612664565b91506136e5826136a4565b602082019050919050565b60006020820190508181036000830152613709816136cd565b9050919050565b7f57524f4e475f46524f4d00000000000000000000000000000000000000000000600082015250565b6000613746600a83612664565b915061375182613710565b602082019050919050565b6000602082019050818103600083015261377581613739565b9050919050565b7f494e56414c49445f524543495049454e54000000000000000000000000000000600082015250565b60006137b2601183612664565b91506137bd8261377c565b602082019050919050565b600060208201905081810360008301526137e1816137a5565b9050919050565b600082825260208201905092915050565b50565b60006138096000836137e8565b9150613814826137f9565b600082019050919050565b60006080820190506138346000830186612796565b6138416020830185612796565b61384e6040830184612560565b818103606083015261385f816137fc565b9050949350505050565b600081519050613878816125ca565b92915050565b60006020828403121561389457613893612594565b5b60006138a284828501613869565b91505092915050565b7f554e534146455f524543495049454e5400000000000000000000000000000000600082015250565b60006138e1601083612664565b91506138ec826138ab565b602082019050919050565b60006020820190508181036000830152613910816138d4565b9050919050565b600061392383856137e8565b935061393083858461298e565b6139398361269f565b840190509392505050565b60006080820190506139596000830188612796565b6139666020830187612796565b6139736040830186612560565b8181036060830152613986818486613917565b90509695505050505050565b7f414c52454144595f4d494e544544000000000000000000000000000000000000600082015250565b60006139c8600e83612664565b91506139d382613992565b602082019050919050565b600060208201905081810360008301526139f7816139bb565b905091905056fea26469706673582212209f5b83d05c774b4b20bc8fbd07b0b89e872e43032438e22b25e225d4e42b8ef064736f6c63430008120033000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000c000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000021524158776f726c642078204172746875722056696c61722053757266626f617264000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000014524158776f726c647841727468757256696c6172000000000000000000000000000000000000000000000000000000000000000000000000000000000000004468747470733a2f2f697066732e696f2f697066732f516d4e6e584a4a695567746841516b6678435a354e4a786f7754485a7a766d4857547372333774595852324a6f532f00000000000000000000000000000000000000000000000000000000

Deployed Bytecode

0x608060405234801561001057600080fd5b50600436106101c35760003560e01c806395d89b41116100f9578063d26ea6c011610097578063df0b663711610071578063df0b6637146104ee578063e8a3d4851461050a578063e985e9c514610528578063f2fde38b14610558576101c3565b8063d26ea6c014610498578063d5abeb01146104b4578063d67b06c1146104d2576101c3565b8063b88d4fde116100d3578063b88d4fde146103fe578063bc30d7641461041a578063c87b56dd1461044a578063cd7c03261461047a576101c3565b806395d89b41146103a8578063a22cb465146103c6578063ac8a584a146103e2576101c3565b806323b872dd116101665780636352211e116101405780636352211e1461030e5780636c0360eb1461033e5780636f8b44b01461035c57806370a0823114610378576101c3565b806323b872dd146102ba57806342842e0e146102d657806355f804b3146102f2576101c3565b8063081812fc116101a2578063081812fc14610234578063095ea7b31461026457806316c38b3c1461028057806318160ddd1461029c576101c3565b80629a9b7b146101c857806301ffc9a7146101e657806306fdde0314610216575b600080fd5b6101d0610574565b6040516101dd919061256f565b60405180910390f35b61020060048036038101906101fb91906125f6565b61057a565b60405161020d919061263e565b60405180910390f35b61021e61060c565b60405161022b91906126e9565b60405180910390f35b61024e60048036038101906102499190612737565b61069a565b60405161025b91906127a5565b60405180910390f35b61027e600480360381019061027991906127ec565b6106cd565b005b61029a60048036038101906102959190612858565b610836565b005b6102a46108e3565b6040516102b1919061256f565b60405180910390f35b6102d460048036038101906102cf9190612885565b6108ed565b005b6102f060048036038101906102eb9190612885565b61094d565b005b61030c60048036038101906103079190612a0d565b6109ad565b005b61032860048036038101906103239190612737565b610a50565b60405161033591906127a5565b60405180910390f35b610346610afb565b60405161035391906126e9565b60405180910390f35b61037660048036038101906103719190612737565b610b89565b005b610392600480360381019061038d9190612a56565b610c23565b60405161039f919061256f565b60405180910390f35b6103b0610cda565b6040516103bd91906126e9565b60405180910390f35b6103e060048036038101906103db9190612a83565b610d68565b005b6103fc60048036038101906103f79190612a56565b610ea3565b005b61041860048036038101906104139190612b23565b611082565b005b610434600480360381019061042f9190612a56565b6110e6565b604051610441919061263e565b60405180910390f35b610464600480360381019061045f9190612737565b611194565b60405161047191906126e9565b60405180910390f35b61048261126b565b60405161048f91906127a5565b60405180910390f35b6104b260048036038101906104ad9190612a56565b611291565b005b6104bc611365565b6040516104c9919061256f565b60405180910390f35b6104ec60048036038101906104e79190612c6e565b61136b565b005b61050860048036038101906105039190612d0d565b6114b8565b005b6105126115f8565b60405161051f91906126e9565b60405180910390f35b610542600480360381019061053d9190612d5a565b611620565b60405161054f919061263e565b60405180910390f35b610572600480360381019061056d9190612a56565b61164f565b005b60085481565b60006301ffc9a760e01b827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806105d557506380ac58cd60e01b827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b806106055750635b5e139f60e01b827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b9050919050565b6000805461061990612dc9565b80601f016020809104026020016040519081016040528092919081815260200182805461064590612dc9565b80156106925780601f1061066757610100808354040283529160200191610692565b820191906000526020600020905b81548152906001019060200180831161067557829003601f168201915b505050505081565b60046020528060005260406000206000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614610828576000600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050610731836110e6565b806107e757508273ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1663c45527916107726117b3565b6040518263ffffffff1660e01b815260040161078e91906127a5565b602060405180830381865afa1580156107ab573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107cf9190612e38565b73ffffffffffffffffffffffffffffffffffffffff16145b610826576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161081d90612eb1565b60405180910390fd5b505b61083282826117bb565b5050565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146108c6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108bd90612f1d565b60405180910390fd5b80600a60006101000a81548160ff02191690831515021790555050565b6000600954905090565b600a60009054906101000a900460ff161561093d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161093490612f89565b60405180910390fd5b6109488383836119a4565b505050565b600a60009054906101000a900460ff161561099d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161099490612f89565b60405180910390fd5b6109a8838383611da3565b505050565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610a3d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a3490612f1d565b60405180910390fd5b8060079081610a4c9190613155565b5050565b60008073ffffffffffffffffffffffffffffffffffffffff166002600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1691508173ffffffffffffffffffffffffffffffffffffffff1603610af6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610aed90613273565b60405180910390fd5b919050565b60078054610b0890612dc9565b80601f0160208091040260200160405190810160405280929190818152602001828054610b3490612dc9565b8015610b815780601f10610b5657610100808354040283529160200191610b81565b820191906000526020600020905b815481529060010190602001808311610b6457829003601f168201915b505050505081565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610c19576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c1090612f1d565b60405180910390fd5b8060098190555050565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610c93576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c8a906132df565b60405180910390fd5b600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b60018054610ce790612dc9565b80601f0160208091040260200160405190810160405280929190818152602001828054610d1390612dc9565b8015610d605780601f10610d3557610100808354040283529160200191610d60565b820191906000526020600020905b815481529060010190602001808311610d4357829003601f168201915b505050505081565b6000600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508115610e9457610d9e836110e6565b80610e5457508273ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1663c4552791610ddf6117b3565b6040518263ffffffff1660e01b8152600401610dfb91906127a5565b602060405180830381865afa158015610e18573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e3c9190612e38565b73ffffffffffffffffffffffffffffffffffffffff16145b610e93576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e8a90612eb1565b60405180910390fd5b5b610e9e8383611edb565b505050565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610f33576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f2a90612f1d565b60405180910390fd5b60606000805b600b80549050811015611065578373ffffffffffffffffffffffffffffffffffffffff16600b8281548110610f7157610f706132ff565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461105257600b8181548110610fcb57610fca6132ff565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16838381518110611009576110086132ff565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050818061104e9061335d565b9250505b808061105d9061335d565b915050610f39565b5081600b908051906020019061107c9291906124af565b50505050565b600a60009054906101000a900460ff16156110d2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110c990612f89565b60405180910390fd5b6110df8585858585611fd8565b5050505050565b600080600090505b600b8054905081101561118957600b818154811061110f5761110e6132ff565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361117657600191505061118f565b80806111819061335d565b9150506110ee565b50600090505b919050565b6060600073ffffffffffffffffffffffffffffffffffffffff166111b783610a50565b73ffffffffffffffffffffffffffffffffffffffff160361120d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611204906133f1565b60405180910390fd5b60006007805461121c90612dc9565b9050116112385760405180602001604052806000815250611264565b600761124383612116565b6040516020016112549291906134d0565b6040516020818303038152906040525b9050919050565b600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611321576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161131890612f1d565b60405180910390fd5b80600c60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60095481565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146113fb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113f290612f1d565b60405180910390fd5b600954815160085461140d91906134f4565b111561144e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161144590613574565b60405180910390fd5b600080600090505b82518160ff1610156114b3576008600081546114719061335d565b91905081905591506114a0838260ff1681518110611492576114916132ff565b5b602002602001015183612166565b80806114ab906135a1565b915050611456565b505050565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611548576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161153f90612f1d565b60405180910390fd5b60005b828290508110156115f357600b83838381811061156b5761156a6132ff565b5b90506020020160208101906115809190612a56565b9080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080806115eb9061335d565b91505061154b565b505050565b6060600760405160200161160c9190613616565b604051602081830303815290604052905090565b60056020528160005260406000206020528060005260406000206000915091509054906101000a900460ff1681565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146116df576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116d690612f1d565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff160361176f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161176690613684565b60405180910390fd5b80600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600033905090565b60006002600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614806118b35750600560008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b6118f2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118e9906136f0565b60405180910390fd5b826004600084815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550818373ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a4505050565b6002600082815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614611a45576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a3c9061375c565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611ab4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611aab906137c8565b60405180910390fd5b8273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161480611b745750600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b80611bdd57506004600082815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b611c1c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c13906136f0565b60405180910390fd5b600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000815480929190600190039190505550600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008154809291906001019190505550816002600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506004600082815260200190815260200160002060006101000a81549073ffffffffffffffffffffffffffffffffffffffff0219169055808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4505050565b611dae8383836108ed565b60008273ffffffffffffffffffffffffffffffffffffffff163b1480611e97575063150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168273ffffffffffffffffffffffffffffffffffffffff1663150b7a023386856040518463ffffffff1660e01b8152600401611e339392919061381f565b6020604051808303816000875af1158015611e52573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e76919061387e565b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b611ed6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ecd906138f7565b60405180910390fd5b505050565b80600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c3183604051611fcc919061263e565b60405180910390a35050565b611fe38585856108ed565b60008473ffffffffffffffffffffffffffffffffffffffff163b14806120d0575063150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168473ffffffffffffffffffffffffffffffffffffffff1663150b7a0233888787876040518663ffffffff1660e01b815260040161206c959493929190613944565b6020604051808303816000875af115801561208b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120af919061387e565b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b61210f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612106906138f7565b60405180910390fd5b5050505050565b606060a060405101806040526020810391506000825281835b60011561215157600184039350600a81066030018453600a810490508061212f575b50828103602084039350808452505050919050565b612170828261229d565b60008273ffffffffffffffffffffffffffffffffffffffff163b148061225a575063150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168273ffffffffffffffffffffffffffffffffffffffff1663150b7a02336000856040518463ffffffff1660e01b81526004016121f69392919061381f565b6020604051808303816000875af1158015612215573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612239919061387e565b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b612299576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612290906138f7565b60405180910390fd5b5050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361230c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612303906137c8565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff166002600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146123ae576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123a5906139de565b60405180910390fd5b600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008154809291906001019190505550816002600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a45050565b828054828255906000526020600020908101928215612528579160200282015b828111156125275782518260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550916020019190600101906124cf565b5b5090506125359190612539565b5090565b5b8082111561255257600081600090555060010161253a565b5090565b6000819050919050565b61256981612556565b82525050565b60006020820190506125846000830184612560565b92915050565b6000604051905090565b600080fd5b600080fd5b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b6125d38161259e565b81146125de57600080fd5b50565b6000813590506125f0816125ca565b92915050565b60006020828403121561260c5761260b612594565b5b600061261a848285016125e1565b91505092915050565b60008115159050919050565b61263881612623565b82525050565b6000602082019050612653600083018461262f565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015612693578082015181840152602081019050612678565b60008484015250505050565b6000601f19601f8301169050919050565b60006126bb82612659565b6126c58185612664565b93506126d5818560208601612675565b6126de8161269f565b840191505092915050565b6000602082019050818103600083015261270381846126b0565b905092915050565b61271481612556565b811461271f57600080fd5b50565b6000813590506127318161270b565b92915050565b60006020828403121561274d5761274c612594565b5b600061275b84828501612722565b91505092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061278f82612764565b9050919050565b61279f81612784565b82525050565b60006020820190506127ba6000830184612796565b92915050565b6127c981612784565b81146127d457600080fd5b50565b6000813590506127e6816127c0565b92915050565b6000806040838503121561280357612802612594565b5b6000612811858286016127d7565b925050602061282285828601612722565b9150509250929050565b61283581612623565b811461284057600080fd5b50565b6000813590506128528161282c565b92915050565b60006020828403121561286e5761286d612594565b5b600061287c84828501612843565b91505092915050565b60008060006060848603121561289e5761289d612594565b5b60006128ac868287016127d7565b93505060206128bd868287016127d7565b92505060406128ce86828701612722565b9150509250925092565b600080fd5b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b61291a8261269f565b810181811067ffffffffffffffff82111715612939576129386128e2565b5b80604052505050565b600061294c61258a565b90506129588282612911565b919050565b600067ffffffffffffffff821115612978576129776128e2565b5b6129818261269f565b9050602081019050919050565b82818337600083830152505050565b60006129b06129ab8461295d565b612942565b9050828152602081018484840111156129cc576129cb6128dd565b5b6129d784828561298e565b509392505050565b600082601f8301126129f4576129f36128d8565b5b8135612a0484826020860161299d565b91505092915050565b600060208284031215612a2357612a22612594565b5b600082013567ffffffffffffffff811115612a4157612a40612599565b5b612a4d848285016129df565b91505092915050565b600060208284031215612a6c57612a6b612594565b5b6000612a7a848285016127d7565b91505092915050565b60008060408385031215612a9a57612a99612594565b5b6000612aa8858286016127d7565b9250506020612ab985828601612843565b9150509250929050565b600080fd5b600080fd5b60008083601f840112612ae357612ae26128d8565b5b8235905067ffffffffffffffff811115612b0057612aff612ac3565b5b602083019150836001820283011115612b1c57612b1b612ac8565b5b9250929050565b600080600080600060808688031215612b3f57612b3e612594565b5b6000612b4d888289016127d7565b9550506020612b5e888289016127d7565b9450506040612b6f88828901612722565b935050606086013567ffffffffffffffff811115612b9057612b8f612599565b5b612b9c88828901612acd565b92509250509295509295909350565b600067ffffffffffffffff821115612bc657612bc56128e2565b5b602082029050602081019050919050565b6000612bea612be584612bab565b612942565b90508083825260208201905060208402830185811115612c0d57612c0c612ac8565b5b835b81811015612c365780612c2288826127d7565b845260208401935050602081019050612c0f565b5050509392505050565b600082601f830112612c5557612c546128d8565b5b8135612c65848260208601612bd7565b91505092915050565b600060208284031215612c8457612c83612594565b5b600082013567ffffffffffffffff811115612ca257612ca1612599565b5b612cae84828501612c40565b91505092915050565b60008083601f840112612ccd57612ccc6128d8565b5b8235905067ffffffffffffffff811115612cea57612ce9612ac3565b5b602083019150836020820283011115612d0657612d05612ac8565b5b9250929050565b60008060208385031215612d2457612d23612594565b5b600083013567ffffffffffffffff811115612d4257612d41612599565b5b612d4e85828601612cb7565b92509250509250929050565b60008060408385031215612d7157612d70612594565b5b6000612d7f858286016127d7565b9250506020612d90858286016127d7565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680612de157607f821691505b602082108103612df457612df3612d9a565b5b50919050565b6000612e0582612784565b9050919050565b612e1581612dfa565b8114612e2057600080fd5b50565b600081519050612e3281612e0c565b92915050565b600060208284031215612e4e57612e4d612594565b5b6000612e5c84828501612e23565b91505092915050565b7f554e415554484f52495345445f4f50455241544f520000000000000000000000600082015250565b6000612e9b601583612664565b9150612ea682612e65565b602082019050919050565b60006020820190508181036000830152612eca81612e8e565b9050919050565b7f43414c4c45525f4e4f545f4f574e455200000000000000000000000000000000600082015250565b6000612f07601083612664565b9150612f1282612ed1565b602082019050919050565b60006020820190508181036000830152612f3681612efa565b9050919050565b7f5452414e534645525f5041555345440000000000000000000000000000000000600082015250565b6000612f73600f83612664565b9150612f7e82612f3d565b602082019050919050565b60006020820190508181036000830152612fa281612f66565b9050919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b60006008830261300b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82612fce565b6130158683612fce565b95508019841693508086168417925050509392505050565b6000819050919050565b600061305261304d61304884612556565b61302d565b612556565b9050919050565b6000819050919050565b61306c83613037565b61308061307882613059565b848454612fdb565b825550505050565b600090565b613095613088565b6130a0818484613063565b505050565b5b818110156130c4576130b960008261308d565b6001810190506130a6565b5050565b601f821115613109576130da81612fa9565b6130e384612fbe565b810160208510156130f2578190505b6131066130fe85612fbe565b8301826130a5565b50505b505050565b600082821c905092915050565b600061312c6000198460080261310e565b1980831691505092915050565b6000613145838361311b565b9150826002028217905092915050565b61315e82612659565b67ffffffffffffffff811115613177576131766128e2565b5b6131818254612dc9565b61318c8282856130c8565b600060209050601f8311600181146131bf57600084156131ad578287015190505b6131b78582613139565b86555061321f565b601f1984166131cd86612fa9565b60005b828110156131f5578489015182556001820191506020850194506020810190506131d0565b86831015613212578489015161320e601f89168261311b565b8355505b6001600288020188555050505b505050505050565b7f4e4f545f4d494e54454400000000000000000000000000000000000000000000600082015250565b600061325d600a83612664565b915061326882613227565b602082019050919050565b6000602082019050818103600083015261328c81613250565b9050919050565b7f5a45524f5f414444524553530000000000000000000000000000000000000000600082015250565b60006132c9600c83612664565b91506132d482613293565b602082019050919050565b600060208201905081810360008301526132f8816132bc565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061336882612556565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361339a5761339961332e565b5b600182019050919050565b7f4e4f4e5f4558495354454e545f544f4b454e0000000000000000000000000000600082015250565b60006133db601283612664565b91506133e6826133a5565b602082019050919050565b6000602082019050818103600083015261340a816133ce565b9050919050565b600081905092915050565b6000815461342981612dc9565b6134338186613411565b9450600182166000811461344e576001811461346357613496565b60ff1983168652811515820286019350613496565b61346c85612fa9565b60005b8381101561348e5781548189015260018201915060208101905061346f565b838801955050505b50505092915050565b60006134aa82612659565b6134b48185613411565b93506134c4818560208601612675565b80840191505092915050565b60006134dc828561341c565b91506134e8828461349f565b91508190509392505050565b60006134ff82612556565b915061350a83612556565b92508282019050808211156135225761352161332e565b5b92915050565b7f4d41585f535550504c5900000000000000000000000000000000000000000000600082015250565b600061355e600a83612664565b915061356982613528565b602082019050919050565b6000602082019050818103600083015261358d81613551565b9050919050565b600060ff82169050919050565b60006135ac82613594565b915060ff82036135bf576135be61332e565b5b600182019050919050565b7f6d657461646174612e6a736f6e00000000000000000000000000000000000000600082015250565b6000613600600d83613411565b915061360b826135ca565b600d82019050919050565b6000613622828461341c565b915061362d826135f3565b915081905092915050565b7f4f574e45525f5345540000000000000000000000000000000000000000000000600082015250565b600061366e600983612664565b915061367982613638565b602082019050919050565b6000602082019050818103600083015261369d81613661565b9050919050565b7f4e4f545f415554484f52495a4544000000000000000000000000000000000000600082015250565b60006136da600e83612664565b91506136e5826136a4565b602082019050919050565b60006020820190508181036000830152613709816136cd565b9050919050565b7f57524f4e475f46524f4d00000000000000000000000000000000000000000000600082015250565b6000613746600a83612664565b915061375182613710565b602082019050919050565b6000602082019050818103600083015261377581613739565b9050919050565b7f494e56414c49445f524543495049454e54000000000000000000000000000000600082015250565b60006137b2601183612664565b91506137bd8261377c565b602082019050919050565b600060208201905081810360008301526137e1816137a5565b9050919050565b600082825260208201905092915050565b50565b60006138096000836137e8565b9150613814826137f9565b600082019050919050565b60006080820190506138346000830186612796565b6138416020830185612796565b61384e6040830184612560565b818103606083015261385f816137fc565b9050949350505050565b600081519050613878816125ca565b92915050565b60006020828403121561389457613893612594565b5b60006138a284828501613869565b91505092915050565b7f554e534146455f524543495049454e5400000000000000000000000000000000600082015250565b60006138e1601083612664565b91506138ec826138ab565b602082019050919050565b60006020820190508181036000830152613910816138d4565b9050919050565b600061392383856137e8565b935061393083858461298e565b6139398361269f565b840190509392505050565b60006080820190506139596000830188612796565b6139666020830187612796565b6139736040830186612560565b8181036060830152613986818486613917565b90509695505050505050565b7f414c52454144595f4d494e544544000000000000000000000000000000000000600082015250565b60006139c8600e83612664565b91506139d382613992565b602082019050919050565b600060208201905081810360008301526139f7816139bb565b905091905056fea26469706673582212209f5b83d05c774b4b20bc8fbd07b0b89e872e43032438e22b25e225d4e42b8ef064736f6c63430008120033

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

000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000c000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000021524158776f726c642078204172746875722056696c61722053757266626f617264000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000014524158776f726c647841727468757256696c6172000000000000000000000000000000000000000000000000000000000000000000000000000000000000004468747470733a2f2f697066732e696f2f697066732f516d4e6e584a4a695567746841516b6678435a354e4a786f7754485a7a766d4857547372333774595852324a6f532f00000000000000000000000000000000000000000000000000000000

-----Decoded View---------------
Arg [0] : _name (string): RAXworld x Arthur Vilar Surfboard
Arg [1] : _symbol (string): RAXworldxArthurVilar
Arg [2] : _baseURI (string): https://ipfs.io/ipfs/QmNnXJJiUgthAQkfxCZ5NJxowTHZzvmHWTsr37tYXR2JoS/

-----Encoded View---------------
12 Constructor Arguments found :
Arg [0] : 0000000000000000000000000000000000000000000000000000000000000060
Arg [1] : 00000000000000000000000000000000000000000000000000000000000000c0
Arg [2] : 0000000000000000000000000000000000000000000000000000000000000100
Arg [3] : 0000000000000000000000000000000000000000000000000000000000000021
Arg [4] : 524158776f726c642078204172746875722056696c61722053757266626f6172
Arg [5] : 6400000000000000000000000000000000000000000000000000000000000000
Arg [6] : 0000000000000000000000000000000000000000000000000000000000000014
Arg [7] : 524158776f726c647841727468757256696c6172000000000000000000000000
Arg [8] : 0000000000000000000000000000000000000000000000000000000000000044
Arg [9] : 68747470733a2f2f697066732e696f2f697066732f516d4e6e584a4a69556774
Arg [10] : 6841516b6678435a354e4a786f7754485a7a766d485754737233377459585232
Arg [11] : 4a6f532f00000000000000000000000000000000000000000000000000000000


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.