ETH Price: $2,607.11 (-2.10%)

Contract

0xe2464b0853557f62c2d2af17eb45ef5dAc783E6b
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Set Approval For...148895932022-06-02 7:07:13986 days ago1654153633IN
0xe2464b08...dAc783E6b
0 ETH0.0012372749.90831211
Set Approval For...143308912022-03-06 3:19:051074 days ago1646536745IN
0xe2464b08...dAc783E6b
0 ETH0.0010274622
Safe Transfer Fr...136551342021-11-21 0:50:551179 days ago1637455855IN
0xe2464b08...dAc783E6b
0 ETH0.0036897299.28749283
Safe Transfer Fr...136551272021-11-21 0:48:351179 days ago1637455715IN
0xe2464b08...dAc783E6b
0 ETH0.00391335105.30541412
Set Approval For...136546082021-11-20 22:50:411179 days ago1637448641IN
0xe2464b08...dAc783E6b
0 ETH0.00498697106.78051384
Mint135284182021-11-01 2:05:201199 days ago1635732320IN
0xe2464b08...dAc783E6b
0 ETH0.03927512157
Set Approval For...135284092021-11-01 2:02:361199 days ago1635732156IN
0xe2464b08...dAc783E6b
0 ETH0.00509903109.1800286
Set Approval For...134883832021-10-25 19:07:031205 days ago1635188823IN
0xe2464b08...dAc783E6b
0 ETH0.00778294166.64769052
Set Approval For...133810902021-10-08 23:18:111222 days ago1633735091IN
0xe2464b08...dAc783E6b
0 ETH0.0027938759.82226111
Mint133661892021-10-06 15:21:231225 days ago1633533683IN
0xe2464b08...dAc783E6b
0 ETH0.03147607125.81171835
Mint133661302021-10-06 15:07:141225 days ago1633532834IN
0xe2464b08...dAc783E6b
0 ETH0.03925956156.92277166
Burn133660812021-10-06 14:57:191225 days ago1633532239IN
0xe2464b08...dAc783E6b
0 ETH0.00405444140.8919286
Burn133660732021-10-06 14:54:521225 days ago1633532092IN
0xe2464b08...dAc783E6b
0 ETH0.00309169107.43648961
Burn133368982021-10-02 1:20:231229 days ago1633137623IN
0xe2464b08...dAc783E6b
0 ETH0.0022376777.82397785
Burn133368892021-10-02 1:19:271229 days ago1633137567IN
0xe2464b08...dAc783E6b
0 ETH0.002859599.45068434
Burn133368832021-10-02 1:17:141229 days ago1633137434IN
0xe2464b08...dAc783E6b
0 ETH0.0027800596.68762031
Mint133366352021-10-02 0:15:041229 days ago1633133704IN
0xe2464b08...dAc783E6b
0 ETH0.0190062775.97649266
Mint133363252021-10-01 23:06:111229 days ago1633129571IN
0xe2464b08...dAc783E6b
0 ETH0.03197679127.82537313
Mint133357432021-10-01 20:59:111229 days ago1633121951IN
0xe2464b08...dAc783E6b
0 ETH0.03062177122.40875678
Set Approval For...133357132021-10-01 20:51:381229 days ago1633121498IN
0xe2464b08...dAc783E6b
0 ETH0.0045893898.26737577
Set Approval For...132272122021-09-15 0:53:121246 days ago1631667192IN
0xe2464b08...dAc783E6b
0 ETH0.0020103243.04493126
Mint131667512021-09-05 16:16:531255 days ago1630858613IN
0xe2464b08...dAc783E6b
0 ETH0.07820088312.5735004
Mint131666922021-09-05 16:05:111255 days ago1630857911IN
0xe2464b08...dAc783E6b
0 ETH0.11419995456.46385123
Set Approval For...131666322021-09-05 15:49:451255 days ago1630856985IN
0xe2464b08...dAc783E6b
0 ETH0.0073891158.21479974
Set Approval For...131309532021-08-31 3:37:231261 days ago1630381043IN
0xe2464b08...dAc783E6b
0 ETH0.0036829978.85995326
View all transactions

View more zero value Internal Transactions in Advanced View mode

Advanced mode:
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
MintySwap

Compiler Version
v0.8.4+commit.c7e474f2

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, Unlicense license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2021-08-27
*/

// SPDX-License-Identifier: UNLICENSED
pragma solidity ^0.8.4;

library Strings {

    function toString(uint256 value) internal pure returns (string memory) {

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

library EnumerableMap {

    struct MapEntry {
        bytes32 _key;
        bytes32 _value;
    }

    struct Map {
        MapEntry[] _entries;

        mapping (bytes32 => uint256) _indexes;
    }

    function _set(Map storage map, bytes32 key, bytes32 value) private returns (bool) {
        uint256 keyIndex = map._indexes[key];

        if (keyIndex == 0) { // Equivalent to !contains(map, key)
            map._entries.push(MapEntry({ _key: key, _value: value }));
            map._indexes[key] = map._entries.length;
            return true;
        } else {
            map._entries[keyIndex - 1]._value = value;
            return false;
        }
    }

    function _remove(Map storage map, bytes32 key) private returns (bool) {
        uint256 keyIndex = map._indexes[key];

        if (keyIndex != 0) { // Equivalent to contains(map, key)
            uint256 toDeleteIndex = keyIndex - 1;
            uint256 lastIndex = map._entries.length - 1;
            MapEntry storage lastEntry = map._entries[lastIndex];

            map._entries[toDeleteIndex] = lastEntry;
            map._indexes[lastEntry._key] = toDeleteIndex + 1; // All indexes are 1-based

            map._entries.pop();

            delete map._indexes[key];

            return true;
        } else {
            return false;
        }
    }

    function _contains(Map storage map, bytes32 key) private view returns (bool) {
        return map._indexes[key] != 0;
    }

    function _length(Map storage map) private view returns (uint256) {
        return map._entries.length;
    }

    function _at(Map storage map, uint256 index) private view returns (bytes32, bytes32) {
        require(map._entries.length > index, "EnumerableMap: index out of bounds");

        MapEntry storage entry = map._entries[index];
        return (entry._key, entry._value);
    }

    function _tryGet(Map storage map, bytes32 key) private view returns (bool, bytes32) {
        uint256 keyIndex = map._indexes[key];
        if (keyIndex == 0) return (false, 0); // Equivalent to contains(map, key)
        return (true, map._entries[keyIndex - 1]._value); // All indexes are 1-based
    }

    function _get(Map storage map, bytes32 key) private view returns (bytes32) {
        uint256 keyIndex = map._indexes[key];
        require(keyIndex != 0, "EnumerableMap: nonexistent key"); // Equivalent to contains(map, key)
        return map._entries[keyIndex - 1]._value; // All indexes are 1-based
    }

    function _get(Map storage map, bytes32 key, string memory errorMessage) private view returns (bytes32) {
        uint256 keyIndex = map._indexes[key];
        require(keyIndex != 0, errorMessage); // Equivalent to contains(map, key)
        return map._entries[keyIndex - 1]._value; // All indexes are 1-based
    }

    struct UintToAddressMap {
        Map _inner;
    }

    function set(UintToAddressMap storage map, uint256 key, address value) internal returns (bool) {
        return _set(map._inner, bytes32(key), bytes32(uint256(uint160(value))));
    }

    function remove(UintToAddressMap storage map, uint256 key) internal returns (bool) {
        return _remove(map._inner, bytes32(key));
    }

    function contains(UintToAddressMap storage map, uint256 key) internal view returns (bool) {
        return _contains(map._inner, bytes32(key));
    }

    function length(UintToAddressMap storage map) internal view returns (uint256) {
        return _length(map._inner);
    }

    function at(UintToAddressMap storage map, uint256 index) internal view returns (uint256, address) {
        (bytes32 key, bytes32 value) = _at(map._inner, index);
        return (uint256(key), address(uint160(uint256(value))));
    }

    function tryGet(UintToAddressMap storage map, uint256 key) internal view returns (bool, address) {
        (bool success, bytes32 value) = _tryGet(map._inner, bytes32(key));
        return (success, address(uint160(uint256(value))));
    }

    function get(UintToAddressMap storage map, uint256 key) internal view returns (address) {
        return address(uint160(uint256(_get(map._inner, bytes32(key)))));
    }

    function get(UintToAddressMap storage map, uint256 key, string memory errorMessage) internal view returns (address) {
        return address(uint160(uint256(_get(map._inner, bytes32(key), errorMessage))));
    }
}

library EnumerableSet {
    struct Set {
        bytes32[] _values;
        mapping (bytes32 => uint256) _indexes;
    }

    function _add(Set storage set, bytes32 value) private returns (bool) {
        if (!_contains(set, value)) {
            set._values.push(value);
            set._indexes[value] = set._values.length;
            return true;
        } else {
            return false;
        }
    }

    function _remove(Set storage set, bytes32 value) private returns (bool) {
        uint256 valueIndex = set._indexes[value];

        if (valueIndex != 0) { // Equivalent to contains(set, value)
            uint256 toDeleteIndex = valueIndex - 1;
            uint256 lastIndex = set._values.length - 1;
            bytes32 lastvalue = set._values[lastIndex];

            set._values[toDeleteIndex] = lastvalue;
            set._indexes[lastvalue] = toDeleteIndex + 1; // All indexes are 1-based

            set._values.pop();

            delete set._indexes[value];

            return true;
        } else {
            return false;
        }
    }

    function _contains(Set storage set, bytes32 value) private view returns (bool) {
        return set._indexes[value] != 0;
    }

    function _length(Set storage set) private view returns (uint256) {
        return set._values.length;
    }

    function _at(Set storage set, uint256 index) private view returns (bytes32) {
        require(set._values.length > index, "EnumerableSet: index out of bounds");
        return set._values[index];
    }

    struct Bytes32Set {
        Set _inner;
    }

    function add(Bytes32Set storage set, bytes32 value) internal returns (bool) {
        return _add(set._inner, value);
    }

    function remove(Bytes32Set storage set, bytes32 value) internal returns (bool) {
        return _remove(set._inner, value);
    }

    function contains(Bytes32Set storage set, bytes32 value) internal view returns (bool) {
        return _contains(set._inner, value);
    }

    function length(Bytes32Set storage set) internal view returns (uint256) {
        return _length(set._inner);
    }

    function at(Bytes32Set storage set, uint256 index) internal view returns (bytes32) {
        return _at(set._inner, index);
    }

    struct AddressSet {
        Set _inner;
    }

    function add(AddressSet storage set, address value) internal returns (bool) {
        return _add(set._inner, bytes32(uint256(uint160(value))));
    }

    function remove(AddressSet storage set, address value) internal returns (bool) {
        return _remove(set._inner, bytes32(uint256(uint160(value))));
    }

    function contains(AddressSet storage set, address value) internal view returns (bool) {
        return _contains(set._inner, bytes32(uint256(uint160(value))));
    }

    function length(AddressSet storage set) internal view returns (uint256) {
        return _length(set._inner);
    }

    function at(AddressSet storage set, uint256 index) internal view returns (address) {
        return address(uint160(uint256(_at(set._inner, index))));
    }

    struct UintSet {
        Set _inner;
    }

    function add(UintSet storage set, uint256 value) internal returns (bool) {
        return _add(set._inner, bytes32(value));
    }

    function remove(UintSet storage set, uint256 value) internal returns (bool) {
        return _remove(set._inner, bytes32(value));
    }

    function contains(UintSet storage set, uint256 value) internal view returns (bool) {
        return _contains(set._inner, bytes32(value));
    }

    function length(UintSet storage set) internal view returns (uint256) {
        return _length(set._inner);
    }

    function at(UintSet storage set, uint256 index) internal view returns (uint256) {
        return uint256(_at(set._inner, index));
    }
}

interface IERC165 {

    /**
     * @dev Returns true if this contract implements the interface defined by
     * `interfaceId`. See the corresponding
     * https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section]
     * to learn more about how these ids are created.
     *
     * This function call must use less than 30 000 gas.
     */ 

    function supportsInterface(bytes4 interfaceId) external view returns (bool);
}

interface IERC1155 is IERC165 {

    event TransferSingle(address indexed operator, address indexed from, address indexed to, uint256 id, uint256 value);
    event TransferBatch(address indexed operator, address indexed from, address indexed to, uint256[] ids, uint256[] values);
    event ApprovalForAll(address indexed account, address indexed operator, bool approved);
    event URI(string value, uint256 indexed id);
    event tokenBaseURI(string value);
    event OwnershipTransfer(address  indexed owner, address indexed newOwner);


    function name() external view returns (string memory);
    function symbol() external view returns (string memory);
    function balanceOf(address account, uint256 id) external view returns (uint256);
    function royaltyFee(uint256 tokenId) external view returns(uint256);
    function getCreator(uint256 tokenId) external view returns(address);
    function tokenURI(uint256 tokenId) external view returns (string memory);
    function balanceOfBatch(address[] calldata accounts, uint256[] calldata ids) external view returns (uint256[] memory);
    function setApprovalForAll(address operator, bool approved) external;
    function isApprovedForAll(address account, address operator) external view returns (bool);
    function safeTransferFrom(address from, address to, uint256 id, uint256 amount, bytes calldata data) external;
    function safeBatchTransferFrom(address from, address to, uint256[] calldata ids, uint256[] calldata amounts, bytes calldata data) external;
}

interface IERC1155MetadataURI is IERC1155 {
}

interface IERC1155Receiver is IERC165 {
    function onERC1155Received(
        address operator,
        address from,
        uint256 id,
        uint256 value,
        bytes calldata data
    )
        external
        returns(bytes4);

    function onERC1155BatchReceived(
        address operator,
        address from,
        uint256[] calldata ids,
        uint256[] calldata values,
        bytes calldata data
    )
        external
        returns(bytes4);
}

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

    function _msgData() internal view virtual returns (bytes memory) {
        this; // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691
        return msg.data;
    }
}

contract ERC165 is IERC165 {
    bytes4 private constant _INTERFACE_ID_ERC165 = 0x01ffc9a7;
    mapping(bytes4 => bool) private _supportedInterfaces;

    constructor () {
        _registerInterface(_INTERFACE_ID_ERC165);
    }

    function supportsInterface(bytes4 interfaceId) public view override returns (bool) {
        return _supportedInterfaces[interfaceId];
    }

    function _registerInterface(bytes4 interfaceId) internal virtual {
        require(interfaceId != 0xffffffff, "ERC165: invalid interface id");
        _supportedInterfaces[interfaceId] = true;
    }
}

/**
 * @title SafeMath
 * @dev Math operations with safety checks that throw on error
*/

library SafeMath {

    /**
    * @dev Adds two numbers, throws on overflow.
    */

    function add(uint256 a, uint256 b) internal pure returns (uint256) {
        uint256 c = a + b;
        require(c >= a, "SafeMath: addition overflow");

        return c;
    }

    /**
    * @dev Subtracts two numbers, throws on overflow (i.e. if subtrahend is greater than minuend).
    */

    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        return sub(a, b, "SafeMath: subtraction overflow");
    }

    function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b <= a, errorMessage);
        uint256 c = a - b;

        return c;
    }

    /**
    * @dev Multiplies two numbers, throws on overflow.
    */

    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        if (a == 0) {
            return 0;
        }

        uint256 c = a * b;
        require(c / a == b, "SafeMath: multiplication overflow");

        return c;
    }

    /**
    * @dev Integer division of two numbers, truncating the quotient.
    */

    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        return div(a, b, "SafeMath: division by zero");
    }

    function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b > 0, errorMessage);
        uint256 c = a / b;
        return c;
    }

    /**
    * @dev Integer modulo of two numbers, truncating the remainder.
    */

    function mod(uint256 a, uint256 b) internal pure returns (uint256) {
        return mod(a, b, "SafeMath: modulo by zero");
    }

    function mod(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b != 0, errorMessage);
        return a % b;
    }
}

library Address {

    function isContract(address account) internal view returns (bool) {
        uint256 size;
        assembly { size := extcodesize(account) }
        return size > 0;
    }

    function sendValue(address payable recipient, uint256 amount) internal {
        require(address(this).balance >= amount, "Address: insufficient balance");

        (bool success, ) = recipient.call{ value: amount }("");
        require(success, "Address: unable to send value, recipient may have reverted");
    }

    function functionCall(address target, bytes memory data) internal returns (bytes memory) {
      return functionCall(target, data, "Address: low-level call failed");
    }

    function functionCall(address target, bytes memory data, string memory errorMessage) internal returns (bytes memory) {
        return _functionCallWithValue(target, data, 0, errorMessage);
    }

    function functionCallWithValue(address target, bytes memory data, uint256 value) internal returns (bytes memory) {
        return functionCallWithValue(target, data, value, "Address: low-level call with value failed");
    }

    function functionCallWithValue(address target, bytes memory data, uint256 value, string memory errorMessage) internal returns (bytes memory) {
        require(address(this).balance >= value, "Address: insufficient balance for call");
        return _functionCallWithValue(target, data, value, errorMessage);
    }

    function _functionCallWithValue(address target, bytes memory data, uint256 weiValue, string memory errorMessage) private returns (bytes memory) {
        require(isContract(target), "Address: call to non-contract");

        (bool success, bytes memory returndata) = target.call{ value: weiValue }(data);
        if (success) {
            return returndata;
        } else {
            if (returndata.length > 0) {

                assembly {
                    let returndata_size := mload(returndata)
                    revert(add(32, returndata), returndata_size)
                }
            } else {
                revert(errorMessage);
            }
        }
    }
}

contract ERC1155 is Context, ERC165, IERC1155, IERC1155MetadataURI {
    using SafeMath for uint256;
    using Address for address;
    using Strings for uint256;
    using EnumerableMap for EnumerableMap.UintToAddressMap;

    // Mapping from token ID to account balances
    mapping (uint256 => address) private creators;
    mapping (uint256 => uint256) private _royaltyFee;
    mapping (uint256 => mapping(address => uint256)) private _balances;

    // Mapping from account to operator approvals
    mapping (address => mapping(address => bool)) private _operatorApprovals;
    string public tokenURIPrefix;

    // Optional mapping for token URIs
    mapping(uint256 => string) private _tokenURIs;

    EnumerableMap.UintToAddressMap private _tokenOwners;

    string private _name;

    string private _symbol;

    bytes4 private constant _INTERFACE_ID_ERC1155 = 0xd9b67a26;

    bytes4 private constant _INTERFACE_ID_ERC1155_METADATA_URI = 0x0e89341c;

    constructor (string memory name_, string memory symbol_) {
        _name = name_;
        _symbol = symbol_;

        _registerInterface(_INTERFACE_ID_ERC1155);
        _registerInterface(_INTERFACE_ID_ERC1155_METADATA_URI);
    }

    function name() public view virtual override returns (string memory) {
        return _name;
    }

    function symbol() public view virtual override returns (string memory) {
        return _symbol;
    }

    /**
        * @dev Internal function to set the token URI for a given token.
        * Reverts if the token ID does not exist.
        * @param tokenId uint256 ID of the token to set its URI
        * @param uri string URI to assign
    */    

    function _setTokenURI(uint256 tokenId, string memory uri) internal {
        _tokenURIs[tokenId] = uri;
    }

    /**
        @notice Get the royalty associated with tokenID.
        @param tokenId     ID of the Token.
        @return        royaltyFee of given ID.
     */

    function royaltyFee(uint256 tokenId) public view override returns(uint256) {
        return _royaltyFee[tokenId];
    }

    /**
        @notice Get the creator of given tokenID.
        @param tokenId     ID of the Token.
        @return        creator of given ID.
     */    

    function getCreator(uint256 tokenId) public view virtual override returns(address) {
        return creators[tokenId];
    }

    /**
        * @dev Internal function to set the token URI for all the tokens.
        * @param _tokenURIPrefix string memory _tokenURIPrefix of the tokens.
    */   

    function _setTokenURIPrefix(string memory _tokenURIPrefix) internal {
        tokenURIPrefix = _tokenURIPrefix;
        emit tokenBaseURI(_tokenURIPrefix);
    }

    /**
        * @dev Returns an URI for a given token ID.
        * Throws if the token ID does not exist. May return an empty string.
        * @param tokenId uint256 ID of the token to query
    */    

    function tokenURI(uint256 tokenId) public view virtual override returns (string memory) {
        require(_exists(tokenId), "ERC1155Metadata: URI query for nonexistent token");
        string memory _tokenURI = _tokenURIs[tokenId];
        string memory base = tokenURIPrefix;

        if (bytes(base).length == 0) {
            return _tokenURI;
        }
        if (bytes(_tokenURI).length > 0) {
            return string(abi.encodePacked(base, _tokenURI));
        }
        return string(abi.encodePacked(base, tokenId.toString()));
    }

    function _exists(uint256 tokenId) internal view virtual returns (bool) {
        return _tokenOwners.contains(tokenId);
    }

    /**
        @notice Get the balance of an account's Tokens.
        @param account  The address of the token holder
        @param tokenId     ID of the Token
        @return        The owner's balance of the Token type requested
     */

    function balanceOf(address account, uint256 tokenId) public view override returns (uint256) {
        require(_exists(tokenId), "ERC1155Metadata: balance query for nonexistent token");
        require(account != address(0), "ERC1155: balance query for the zero address");
        return _balances[tokenId][account];
    }


    /**
        @notice Get the balance of multiple account/token pairs
        @param accounts The addresses of the token holders
        @param ids    ID of the Tokens
        @return        The _owner's balance of the Token types requested (i.e. balance for each (owner, id) pair)
     */

    function balanceOfBatch(
        address[] memory accounts,
        uint256[] memory ids
    )
        public
        view
        override
        returns (uint256[] memory)
    {
        require(accounts.length == ids.length, "ERC1155: accounts and ids length mismatch");

        uint256[] memory batchBalances = new uint256[](accounts.length);

        for (uint256 i = 0; i < accounts.length; ++i) {
            require(accounts[i] != address(0), "ERC1155: batch balance query for the zero address");
            batchBalances[i] = _balances[ids[i]][accounts[i]];
        }

        return batchBalances;
    }

    /**
        @notice Enable or disable approval for a third party ("operator") to manage all of the caller's tokens.
        @dev MUST emit the ApprovalForAll event on success.
        @param operator  Address to add to the set of authorized operators
        @param approved  True if the operator is approved, false to revoke approval
    */

    function setApprovalForAll(address operator, bool approved) public virtual override {
        require(_msgSender() != operator, "ERC1155: setting approval status for self");

        _operatorApprovals[_msgSender()][operator] = approved;
        emit ApprovalForAll(_msgSender(), operator, approved);
    }

    /**
        @notice Queries the approval status of an operator for a given owner.
        @param account     The owner of the Tokens
        @param operator  Address of authorized operator
        @return           True if the operator is approved, false if not
    */

    function isApprovedForAll(address account, address operator) public view override returns (bool) {
        return _operatorApprovals[account][operator];
    }

    /**
        @notice Transfers `_value` amount of an `_id` from the `_from` address to the `_to` address specified (with safety call).
        @dev Caller must be approved to manage the tokens being transferred out of the `_from` account (see "Approval" section of the standard).
        MUST revert if `_to` is the zero address.
        MUST revert if balance of holder for token `_id` is lower than the `_value` sent.
        MUST revert on any other error.
        MUST emit the `TransferSingle` event to reflect the balance change (see "Safe Transfer Rules" section of the standard).
        After the above conditions are met, this function MUST check if `_to` is a smart contract (e.g. code size > 0). If so, it MUST call `onERC1155Received` on `_to` and act appropriately (see "Safe Transfer Rules" section of the standard).
        @param from    Source address
        @param to      Target address
        @param tokenId      ID of the token type
        @param amount   Transfer amount
        @param data    Additional data with no specified format, MUST be sent unaltered in call to `onERC1155Received` on `_to`
    */    

    function safeTransferFrom(
        address from,
        address to,
        uint256 tokenId,
        uint256 amount,
        bytes memory data
    )
        public
        virtual
        override
    {
        require(to != address(0), "ERC1155: transfer to the zero address");
        require(
            from == _msgSender() || isApprovedForAll(from, _msgSender()),
            "ERC1155: caller is not owner nor approved"
        );

        address operator = _msgSender();

        _beforeTokenTransfer(operator, from, to, _asSingletonArray(tokenId), _asSingletonArray(amount), data);

        _balances[tokenId][from] = _balances[tokenId][from].sub(amount, "ERC1155: insufficient balance for transfer");
        _balances[tokenId][to] = _balances[tokenId][to].add(amount);

        emit TransferSingle(operator, from, to, tokenId, amount);

        _doSafeTransferAcceptanceCheck(operator, from, to, tokenId, amount, data);
    }

    /**
        @notice Transfers `_values` amount(s) of `_ids` from the `_from` address to the `_to` address specified (with safety call).
        @dev Caller must be approved to manage the tokens being transferred out of the `_from` account (see "Approval" section of the standard).
        MUST revert if `_to` is the zero address.
        MUST revert if length of `_ids` is not the same as length of `_values`.
        MUST revert if any of the balance(s) of the holder(s) for token(s) in `_ids` is lower than the respective amount(s) in `_values` sent to the recipient.
        MUST revert on any other error.
        MUST emit `TransferSingle` or `TransferBatch` event(s) such that all the balance changes are reflected (see "Safe Transfer Rules" section of the standard).
        Balance changes and events MUST follow the ordering of the arrays (_ids[0]/_values[0] before _ids[1]/_values[1], etc).
        After the above conditions for the transfer(s) in the batch are met, this function MUST check if `_to` is a smart contract (e.g. code size > 0). If so, it MUST call the relevant `ERC1155TokenReceiver` hook(s) on `_to` and act appropriately (see "Safe Transfer Rules" section of the standard).
        @param from    Source address
        @param to      Target address
        @param tokenIds     IDs of each token type (order and length must match _values array)
        @param amounts  Transfer amounts per token type (order and length must match _ids array)
        @param data    Additional data with no specified format, MUST be sent unaltered in call to the `ERC1155TokenReceiver` hook(s) on `_to`
    */

    function safeBatchTransferFrom(
        address from,
        address to,
        uint256[] memory tokenIds,
        uint256[] memory amounts,
        bytes memory data
    )
        public
        virtual
        override
    {
        require(tokenIds.length == amounts.length, "ERC1155: ids and amounts length mismatch");
        require(to != address(0), "ERC1155: transfer to the zero address");
        require(
            from == _msgSender() || isApprovedForAll(from, _msgSender()),
            "ERC1155: transfer caller is not owner nor approved"
        );

        address operator = _msgSender();

        _beforeTokenTransfer(operator, from, to, tokenIds, amounts, data);

        for (uint256 i = 0; i < tokenIds.length; ++i) {
            uint256 tokenId = tokenIds[i];
            uint256 amount = amounts[i];

            _balances[tokenId][from] = _balances[tokenId][from].sub(
                amount,
                "ERC1155: insufficient balance for transfer"
            );
            _balances[tokenId][to] = _balances[tokenId][to].add(amount);
        }

        emit TransferBatch(operator, from, to, tokenIds, amounts);

        _doSafeBatchTransferAcceptanceCheck(operator, from, to, tokenIds, amounts, data);
    }



    /**
        * @dev Internal function to mint a new token.
        * Reverts if the given token ID already exists.
        * @param tokenId uint256 ID of the token to be minted
        * @param _supply uint256 supply of the token to be minted
        * @param _uri string memory URI of the token to be minted
        * @param _fee uint256 royalty of the token to be minted
    */

    function _mint(uint256 tokenId, uint256 _supply, string memory _uri, uint256 _fee) internal {
        require(!_exists(tokenId), "ERC1155: token already minted");
        require(_supply != 0, "Supply should be positive");
        require(bytes(_uri).length > 0, "uri should be set");

        creators[tokenId] = msg.sender;
        _tokenOwners.set(tokenId, msg.sender);
        _royaltyFee[tokenId] = _fee;
        _balances[tokenId][msg.sender] = _supply;
        _setTokenURI(tokenId, _uri);

        emit TransferSingle(msg.sender, address(0x0), msg.sender, tokenId, _supply);
        emit URI(_uri, tokenId);
    }

    /**
        * @dev version of {_mint}.
        *
        * Requirements:
        *
        * - `tokenIds` and `amounts` must have the same length.
    */

    function _mintBatch(address to, uint256[] memory tokenIds, uint256[] memory amounts, bytes memory data) internal virtual {
        require(to != address(0), "ERC1155: mint to the zero address");
        require(tokenIds.length == amounts.length, "ERC1155: ids and amounts length mismatch");

        address operator = _msgSender();

        _beforeTokenTransfer(operator, address(0), to, tokenIds, amounts, data);

        for (uint i = 0; i < tokenIds.length; i++) {
            _balances[tokenIds[i]][to] = amounts[i].add(_balances[tokenIds[i]][to]);
        }

        emit TransferBatch(operator, address(0), to, tokenIds, amounts);

        _doSafeBatchTransferAcceptanceCheck(operator, address(0), to, tokenIds, amounts, data);
    }

    /**
        * @dev Internal function to burn a specific token.
        * Reverts if the token does not exist.
        * Deprecated, use {ERC721-_burn} instead.
        * @param account owner of the token to burn
        * @param tokenId uint256 ID of the token being burned
        * @param amount uint256 amount of supply being burned
    */    

    function _burn(address account, uint256 tokenId, uint256 amount) internal virtual {
        require(_exists(tokenId), "ERC1155Metadata: burn query for nonexistent token");
        require(account != address(0), "ERC1155: burn from the zero address");

        address operator = _msgSender();

        _beforeTokenTransfer(operator, account, address(0), _asSingletonArray(tokenId), _asSingletonArray(amount), "");

        _balances[tokenId][account] = _balances[tokenId][account].sub(
            amount,
            "ERC_holderTokens1155: burn amount exceeds balance"
        );


        emit TransferSingle(operator, account, address(0), tokenId, amount);
    }


    /**
        * @dev version of {_burn}.
        * Requirements:
        * - `ids` and `amounts` must have the same length.
    */

    function _burnBatch(address account, uint256[] memory tokenIds, uint256[] memory amounts) internal virtual {
        require(account != address(0), "ERC1155: burn from the zero address");
        require(tokenIds.length == amounts.length, "ERC1155: ids and amounts length mismatch");

        address operator = _msgSender();

        _beforeTokenTransfer(operator, account, address(0), tokenIds, amounts, "");

        for (uint i = 0; i < tokenIds.length; i++) {
            _balances[tokenIds[i]][account] = _balances[tokenIds[i]][account].sub(
                amounts[i],
                "ERC1155: burn amount exceeds balance"
            );
        }

        emit TransferBatch(operator, account, address(0), tokenIds, amounts);
    }


    function _beforeTokenTransfer(
        address operator,
        address from,
        address to,
        uint256[] memory tokenIds,
        uint256[] memory amounts,
        bytes memory data
    )
        internal virtual
    { }

    function _doSafeTransferAcceptanceCheck(
        address operator,
        address from,
        address to,
        uint256 tokenId,
        uint256 amount,
        bytes memory data
    )
        private
    {
        if (to.isContract()) {
            try IERC1155Receiver(to).onERC1155Received(operator, from, tokenId, amount, data) returns (bytes4 response) {
                if (response != IERC1155Receiver(to).onERC1155Received.selector) {
                    revert("ERC1155: ERC1155Receiver rejected tokens");
                }
            } catch Error(string memory reason) {
                revert(reason);
            } catch {
                revert("ERC1155: transfer to non ERC1155Receiver implementer");
            }
        }
    }

    function _doSafeBatchTransferAcceptanceCheck(
        address operator,
        address from,
        address to,
        uint256[] memory tokenIds,
        uint256[] memory amounts,
        bytes memory data
    )
        private
    {
        if (to.isContract()) {
            try IERC1155Receiver(to).onERC1155BatchReceived(operator, from, tokenIds, amounts, data) returns (bytes4 response) {
                if (response != IERC1155Receiver(to).onERC1155BatchReceived.selector) {
                    revert("ERC1155: ERC1155Receiver rejected tokens");
                }
            } catch Error(string memory reason) {
                revert(reason);
            } catch {
                revert("ERC1155: transfer to non ERC1155Receiver implementer");
            }
        }
    }

    function _asSingletonArray(uint256 element) private pure returns (uint256[] memory) {
        uint256[] memory array = new uint256[](1);
        array[0] = element;

        return array;
    }
}

contract MintySwap is ERC1155 {

    uint256 newItemId = 1;
    address public owner;

    struct Sign {
        uint8 v;
        bytes32 r;
        bytes32 s;
    }

    constructor (string memory name, string memory symbol, string memory tokenURIPrefix) ERC1155 (name, symbol) {
        owner = msg.sender;
        _setTokenURIPrefix(tokenURIPrefix);

    }

    modifier onlyOwner() {
        require(owner == msg.sender, "Ownable: caller is not the owner");
        _;
    }

    /** @dev change the Ownership from current owner to newOwner address
        @param newOwner : newOwner address */    

    function ownerTransfership(address newOwner) public onlyOwner returns(bool){
        require(newOwner != address(0), "Ownable: new owner is the zero address");
        owner = newOwner;
        emit OwnershipTransfer(owner, newOwner);
        return true;
    }

    /** @dev verify the tokenURI that should be verified by owner of the contract.
        *requirements: signer must be owner of the contract
        @param tokenURI string memory URI of token to be minted.
        @param sign struct combination of uint8, bytes32, bytes 32 are v, r, s.
        note : sign value must be in the order of v, r, s.

    */

    function verifySign(string memory tokenURI, Sign memory sign) internal view {
        bytes32 hash = keccak256(abi.encodePacked(this,tokenURI));
        require(owner == ecrecover(keccak256(abi.encodePacked("\x19Ethereum Signed Message:\n32", hash)), sign.v, sign.r, sign.s), "Owner sign verification failed");
    }

    function mint(string memory uri, uint256 supply, uint256 fee, Sign memory sign)  public {
        verifySign(uri, sign);
        _mint(newItemId, supply, uri,fee);
        newItemId = newItemId+1;
    }

    function setBaseURI(string memory _baseURI) public onlyOwner{
         _setTokenURIPrefix(_baseURI);
    }

    function burn(uint256 tokenId, uint256 supply) public {
        _burn(msg.sender, tokenId, supply);
    }

    function burnBatch(address account, uint256[] memory tokenIds, uint256[] memory amounts) public {
        _burnBatch(account, tokenIds, amounts);
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"symbol","type":"string"},{"internalType":"string","name":"tokenURIPrefix","type":"string"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","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":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"operator","type":"address"},{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256[]","name":"ids","type":"uint256[]"},{"indexed":false,"internalType":"uint256[]","name":"values","type":"uint256[]"}],"name":"TransferBatch","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"operator","type":"address"},{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"id","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"TransferSingle","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"string","name":"value","type":"string"},{"indexed":true,"internalType":"uint256","name":"id","type":"uint256"}],"name":"URI","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"string","name":"value","type":"string"}],"name":"tokenBaseURI","type":"event"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"},{"internalType":"uint256[]","name":"ids","type":"uint256[]"}],"name":"balanceOfBatch","outputs":[{"internalType":"uint256[]","name":"","type":"uint256[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"uint256","name":"supply","type":"uint256"}],"name":"burn","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256[]","name":"tokenIds","type":"uint256[]"},{"internalType":"uint256[]","name":"amounts","type":"uint256[]"}],"name":"burnBatch","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"getCreator","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"address","name":"operator","type":"address"}],"name":"isApprovedForAll","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"string","name":"uri","type":"string"},{"internalType":"uint256","name":"supply","type":"uint256"},{"internalType":"uint256","name":"fee","type":"uint256"},{"components":[{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"internalType":"struct MintySwap.Sign","name":"sign","type":"tuple"}],"name":"mint","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"ownerTransfership","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"royaltyFee","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":"tokenIds","type":"uint256[]"},{"internalType":"uint256[]","name":"amounts","type":"uint256[]"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"safeBatchTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"safeTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"bool","name":"approved","type":"bool"}],"name":"setApprovalForAll","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"_baseURI","type":"string"}],"name":"setBaseURI","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"tokenURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokenURIPrefix","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"}]

60806040526001600b553480156200001657600080fd5b5060405162004fda38038062004fda83398181016040528101906200003c919062000364565b8282620000566301ffc9a760e01b6200011560201b60201c565b81600990805190602001906200006e92919062000242565b5080600a90805190602001906200008792919062000242565b50620000a063d9b67a2660e01b6200011560201b60201c565b620000b8630e89341c60e01b6200011560201b60201c565b505033600c60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506200010c81620001ed60201b60201c565b50505062000668565b63ffffffff60e01b817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916141562000181576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620001789062000491565b60405180910390fd5b6001600080837bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b80600590805190602001906200020592919062000242565b507f5514cc7324ac64a875ba50a1849367d39c8b030fe0f563c3c7142984552bc306816040516200023791906200046d565b60405180910390a150565b828054620002509062000564565b90600052602060002090601f016020900481019282620002745760008555620002c0565b82601f106200028f57805160ff1916838001178555620002c0565b82800160010185558215620002c0579182015b82811115620002bf578251825591602001919060010190620002a2565b5b509050620002cf9190620002d3565b5090565b5b80821115620002ee576000816000905550600101620002d4565b5090565b6000620003096200030384620004dc565b620004b3565b9050828152602081018484840111156200032257600080fd5b6200032f8482856200052e565b509392505050565b600082601f8301126200034957600080fd5b81516200035b848260208601620002f2565b91505092915050565b6000806000606084860312156200037a57600080fd5b600084015167ffffffffffffffff8111156200039557600080fd5b620003a38682870162000337565b935050602084015167ffffffffffffffff811115620003c157600080fd5b620003cf8682870162000337565b925050604084015167ffffffffffffffff811115620003ed57600080fd5b620003fb8682870162000337565b9150509250925092565b6000620004128262000512565b6200041e81856200051d565b9350620004308185602086016200052e565b6200043b816200062e565b840191505092915050565b600062000455601c836200051d565b915062000462826200063f565b602082019050919050565b6000602082019050818103600083015262000489818462000405565b905092915050565b60006020820190508181036000830152620004ac8162000446565b9050919050565b6000620004bf620004d2565b9050620004cd82826200059a565b919050565b6000604051905090565b600067ffffffffffffffff821115620004fa57620004f9620005ff565b5b62000505826200062e565b9050602081019050919050565b600081519050919050565b600082825260208201905092915050565b60005b838110156200054e57808201518184015260208101905062000531565b838111156200055e576000848401525b50505050565b600060028204905060018216806200057d57607f821691505b60208210811415620005945762000593620005d0565b5b50919050565b620005a5826200062e565b810181811067ffffffffffffffff82111715620005c757620005c6620005ff565b5b80604052505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000601f19601f8301169050919050565b7f4552433136353a20696e76616c696420696e7465726661636520696400000000600082015250565b61496280620006786000396000f3fe608060405234801561001057600080fd5b50600436106101205760003560e01c806395d89b41116100ad578063c87b56dd11610071578063c87b56dd14610319578063ca1daf8814610349578063d48e638a14610365578063e985e9c514610395578063f242432a146103c557610120565b806395d89b4114610275578063a22cb46514610293578063b390c0ab146102af578063c0ac9983146102cb578063c57dc235146102e957610120565b80634e1273f4116100f45780634e1273f4146101bf57806355f804b3146101ef5780636b20c4541461020b5780636fdc202f146102275780638da5cb5b1461025757610120565b8062fdd58e1461012557806301ffc9a71461015557806306fdde03146101855780632eb2c2d6146101a3575b600080fd5b61013f600480360381019061013a91906130bc565b6103e1565b60405161014c9190613c44565b60405180910390f35b61016f600480360381019061016a9190613164565b6104f4565b60405161017c9190613922565b60405180910390f35b61018d61055b565b60405161019a9190613982565b60405180910390f35b6101bd60048036038101906101b89190612eb3565b6105ed565b005b6101d960048036038101906101d491906130f8565b610a0e565b6040516101e691906138c9565b60405180910390f35b610209600480360381019061020491906131b6565b610cb6565b005b61022560048036038101906102209190613001565b610d52565b005b610241600480360381019061023c9190612e4e565b610d62565b60405161024e9190613922565b60405180910390f35b61025f610f2a565b60405161026c91906137ec565b60405180910390f35b61027d610f50565b60405161028a9190613982565b60405180910390f35b6102ad60048036038101906102a89190613080565b610fe2565b005b6102c960048036038101906102c4919061329b565b611163565b005b6102d3611172565b6040516102e09190613982565b60405180910390f35b61030360048036038101906102fe9190613272565b611200565b6040516103109190613c44565b60405180910390f35b610333600480360381019061032e9190613272565b61121d565b6040516103409190613982565b60405180910390f35b610363600480360381019061035e91906131f7565b611413565b005b61037f600480360381019061037a9190613272565b611446565b60405161038c91906137ec565b60405180910390f35b6103af60048036038101906103aa9190612e77565b611483565b6040516103bc9190613922565b60405180910390f35b6103df60048036038101906103da9190612f72565b611517565b005b60006103ec8261185a565b61042b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161042290613b04565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561049b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610492906139e4565b60405180910390fd5b6003600083815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6000806000837bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060009054906101000a900460ff169050919050565b60606009805461056a90613fb9565b80601f016020809104026020016040519081016040528092919081815260200182805461059690613fb9565b80156105e35780601f106105b8576101008083540402835291602001916105e3565b820191906000526020600020905b8154815290600101906020018083116105c657829003601f168201915b5050505050905090565b8151835114610631576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161062890613be4565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614156106a1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161069890613aa4565b60405180910390fd5b6106a9611877565b73ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614806106ef57506106ee856106e9611877565b611483565b5b61072e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161072590613ac4565b60405180910390fd5b6000610738611877565b905061074881878787878761187f565b60005b845181101561097957600085828151811061078f577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6020026020010151905060008583815181106107d4577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6020026020010151905061085b816040518060600160405280602a81526020016148d2602a91396003600086815260200190815260200160002060008d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546118879092919063ffffffff16565b6003600084815260200190815260200160002060008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610912816003600085815260200190815260200160002060008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546118eb90919063ffffffff16565b6003600084815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505050806109729061401c565b905061074b565b508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb87876040516109f09291906138eb565b60405180910390a4610a06818787878787611949565b505050505050565b60608151835114610a54576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a4b90613bc4565b60405180910390fd5b6000835167ffffffffffffffff811115610a97577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051908082528060200260200182016040528015610ac55781602001602082028036833780820191505090505b50905060005b8451811015610cab57600073ffffffffffffffffffffffffffffffffffffffff16858281518110610b25577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001015173ffffffffffffffffffffffffffffffffffffffff161415610b84576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b7b90613a04565b60405180910390fd5b60036000858381518110610bc1577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001015181526020019081526020016000206000868381518110610c12577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054828281518110610c8e577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60200260200101818152505080610ca49061401c565b9050610acb565b508091505092915050565b3373ffffffffffffffffffffffffffffffffffffffff16600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610d46576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d3d90613b44565b60405180910390fd5b610d4f81611b30565b50565b610d5d838383611b81565b505050565b60003373ffffffffffffffffffffffffffffffffffffffff16600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610df4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610deb90613b44565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610e64576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e5b90613a24565b60405180910390fd5b81600c60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff16600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f22500af037c600dd7b720644ab6e358635085601d9ac508ad83eb2d6b2d729ca60405160405180910390a360019050919050565b600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6060600a8054610f5f90613fb9565b80601f0160208091040260200160405190810160405280929190818152602001828054610f8b90613fb9565b8015610fd85780601f10610fad57610100808354040283529160200191610fd8565b820191906000526020600020905b815481529060010190602001808311610fbb57829003601f168201915b5050505050905090565b8173ffffffffffffffffffffffffffffffffffffffff16611001611877565b73ffffffffffffffffffffffffffffffffffffffff161415611058576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161104f90613ba4565b60405180910390fd5b8060046000611065611877565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff16611112611877565b73ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31836040516111579190613922565b60405180910390a35050565b61116e338383611e95565b5050565b6005805461117f90613fb9565b80601f01602080910402602001604051908101604052809291908181526020018280546111ab90613fb9565b80156111f85780601f106111cd576101008083540402835291602001916111f8565b820191906000526020600020905b8154815290600101906020018083116111db57829003601f168201915b505050505081565b600060026000838152602001908152602001600020549050919050565b60606112288261185a565b611267576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161125e90613b64565b60405180910390fd5b600060066000848152602001908152602001600020805461128790613fb9565b80601f01602080910402602001604051908101604052809291908181526020018280546112b390613fb9565b80156113005780601f106112d557610100808354040283529160200191611300565b820191906000526020600020905b8154815290600101906020018083116112e357829003601f168201915b5050505050905060006005805461131690613fb9565b80601f016020809104026020016040519081016040528092919081815260200182805461134290613fb9565b801561138f5780601f106113645761010080835404028352916020019161138f565b820191906000526020600020905b81548152906001019060200180831161137257829003601f168201915b505050505090506000815114156113aa57819250505061140e565b6000825111156113df5780826040516020016113c79291906137a2565b6040516020818303038152906040529250505061140e565b806113e9856120dd565b6040516020016113fa9291906137a2565b604051602081830303815290604052925050505b919050565b61141d848261229c565b61142b600b548486856123de565b6001600b5461143a9190613de3565b600b8190555050505050565b60006001600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b6000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415611587576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161157e90613aa4565b60405180910390fd5b61158f611877565b73ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614806115d557506115d4856115cf611877565b611483565b5b611614576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161160b90613a64565b60405180910390fd5b600061161e611877565b905061163e81878761162f8861264c565b6116388861264c565b8761187f565b6116bb836040518060600160405280602a81526020016148d2602a91396003600088815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546118879092919063ffffffff16565b6003600086815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611772836003600087815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546118eb90919063ffffffff16565b6003600086815260200190815260200160002060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f62878760405161183c929190613c5f565b60405180910390a4611852818787878787612712565b505050505050565b60006118708260076128f990919063ffffffff16565b9050919050565b600033905090565b505050505050565b60008383111582906118cf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118c69190613982565b60405180910390fd5b50600083856118de9190613e6a565b9050809150509392505050565b60008082846118fa9190613de3565b90508381101561193f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161193690613a44565b60405180910390fd5b8091505092915050565b6119688473ffffffffffffffffffffffffffffffffffffffff16612913565b15611b28578373ffffffffffffffffffffffffffffffffffffffff1663bc197c8187878686866040518663ffffffff1660e01b81526004016119ae959493929190613807565b602060405180830381600087803b1580156119c857600080fd5b505af19250505080156119f957506040513d601f19601f820116820180604052508101906119f6919061318d565b60015b611a9f57611a05614180565b806308c379a01415611a625750611a1a61478d565b80611a255750611a64565b806040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a599190613982565b60405180910390fd5b505b6040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a96906139a4565b60405180910390fd5b63bc197c8160e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614611b26576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b1d906139c4565b60405180910390fd5b505b505050505050565b8060059080519060200190611b46929190612abc565b507f5514cc7324ac64a875ba50a1849367d39c8b030fe0f563c3c7142984552bc30681604051611b769190613982565b60405180910390a150565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611bf1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611be890613b24565b60405180910390fd5b8051825114611c35576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c2c90613be4565b60405180910390fd5b6000611c3f611877565b9050611c5f8185600086866040518060200160405280600081525061187f565b60005b8351811015611e0f57611d68838281518110611ca7577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60200260200101516040518060600160405280602481526020016148ae6024913960036000888681518110611d05577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6020026020010151815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546118879092919063ffffffff16565b60036000868481518110611da5577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6020026020010151815260200190815260200160002060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508080611e079061401c565b915050611c62565b50600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb8686604051611e879291906138eb565b60405180910390a450505050565b611e9e8261185a565b611edd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ed490613a84565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611f4d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f4490613b24565b60405180910390fd5b6000611f57611877565b9050611f8781856000611f698761264c565b611f728761264c565b6040518060200160405280600081525061187f565b612004826040518060600160405280603181526020016148fc603191396003600087815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546118879092919063ffffffff16565b6003600085815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f6286866040516120cf929190613c5f565b60405180910390a450505050565b60606000821415612125576040518060400160405280600181526020017f30000000000000000000000000000000000000000000000000000000000000008152509050612297565b600082905060005b600082146121575780806121409061401c565b915050600a826121509190613e39565b915061212d565b60008167ffffffffffffffff811115612199577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040519080825280601f01601f1916602001820160405280156121cb5781602001600182028036833780820191505090505b50905060006001836121dd9190613e6a565b90508593505b6000841461228f57600a846121f89190614093565b60306122049190613de3565b60f81b82828061221390613f8f565b93508151811061224c577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600a846122889190613e39565b93506121e3565b819450505050505b919050565b600030836040516020016122b192919061377a565b6040516020818303038152906040528051906020012090506001816040516020016122dc91906137c6565b604051602081830303815290604052805190602001208360000151846020015185604001516040516000815260200160405260405161231e949392919061393d565b6020604051602081039080840390855afa158015612340573d6000803e3d6000fd5b5050506020604051035173ffffffffffffffffffffffffffffffffffffffff16600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146123d9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123d090613ae4565b60405180910390fd5b505050565b6123e78461185a565b15612427576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161241e90613c04565b60405180910390fd5b600083141561246b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161246290613b84565b60405180910390fd5b60008251116124af576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124a690613c24565b60405180910390fd5b336001600086815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550612517843360076129269092919063ffffffff16565b50806002600086815260200190815260200160002081905550826003600086815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061258f848361295b565b3373ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f628787604051612606929190613c5f565b60405180910390a4837f6bb7ff708619ba0610cba295a58592e0451dee2622938c8755667688daf3529b8360405161263e9190613982565b60405180910390a250505050565b60606000600167ffffffffffffffff811115612691577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040519080825280602002602001820160405280156126bf5781602001602082028036833780820191505090505b50905082816000815181106126fd577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60200260200101818152505080915050919050565b6127318473ffffffffffffffffffffffffffffffffffffffff16612913565b156128f1578373ffffffffffffffffffffffffffffffffffffffff1663f23a6e6187878686866040518663ffffffff1660e01b815260040161277795949392919061386f565b602060405180830381600087803b15801561279157600080fd5b505af19250505080156127c257506040513d601f19601f820116820180604052508101906127bf919061318d565b60015b612868576127ce614180565b806308c379a0141561282b57506127e361478d565b806127ee575061282d565b806040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128229190613982565b60405180910390fd5b505b6040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161285f906139a4565b60405180910390fd5b63f23a6e6160e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916146128ef576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128e6906139c4565b60405180910390fd5b505b505050505050565b600061290b836000018360001b612987565b905092915050565b600080823b905060008111915050919050565b6000612952846000018460001b8473ffffffffffffffffffffffffffffffffffffffff1660001b6129aa565b90509392505050565b80600660008481526020019081526020016000209080519060200190612982929190612abc565b505050565b600080836001016000848152602001908152602001600020541415905092915050565b6000808460010160008581526020019081526020016000205490506000811415612a5157846000016040518060400160405280868152602001858152509080600181540180825580915050600190039060005260206000209060020201600090919091909150600082015181600001556020820151816001015550508460000180549050856001016000868152602001908152602001600020819055506001915050612ab5565b8285600001600183612a639190613e6a565b81548110612a9a577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b90600052602060002090600202016001018190555060009150505b9392505050565b828054612ac890613fb9565b90600052602060002090601f016020900481019282612aea5760008555612b31565b82601f10612b0357805160ff1916838001178555612b31565b82800160010185558215612b31579182015b82811115612b30578251825591602001919060010190612b15565b5b509050612b3e9190612b42565b5090565b5b80821115612b5b576000816000905550600101612b43565b5090565b6000612b72612b6d84613cad565b613c88565b90508083825260208201905082856020860282011115612b9157600080fd5b60005b85811015612bc15781612ba78882612cb3565b845260208401935060208301925050600181019050612b94565b5050509392505050565b6000612bde612bd984613cd9565b613c88565b90508083825260208201905082856020860282011115612bfd57600080fd5b60005b85811015612c2d5781612c138882612e24565b845260208401935060208301925050600181019050612c00565b5050509392505050565b6000612c4a612c4584613d05565b613c88565b905082815260208101848484011115612c6257600080fd5b612c6d848285613f4d565b509392505050565b6000612c88612c8384613d36565b613c88565b905082815260208101848484011115612ca057600080fd5b612cab848285613f4d565b509392505050565b600081359050612cc281614823565b92915050565b600082601f830112612cd957600080fd5b8135612ce9848260208601612b5f565b91505092915050565b600082601f830112612d0357600080fd5b8135612d13848260208601612bcb565b91505092915050565b600081359050612d2b8161483a565b92915050565b600081359050612d4081614851565b92915050565b600081359050612d5581614868565b92915050565b600081519050612d6a81614868565b92915050565b600082601f830112612d8157600080fd5b8135612d91848260208601612c37565b91505092915050565b600082601f830112612dab57600080fd5b8135612dbb848260208601612c75565b91505092915050565b600060608284031215612dd657600080fd5b612de06060613c88565b90506000612df084828501612e39565b6000830152506020612e0484828501612d31565b6020830152506040612e1884828501612d31565b60408301525092915050565b600081359050612e338161487f565b92915050565b600081359050612e4881614896565b92915050565b600060208284031215612e6057600080fd5b6000612e6e84828501612cb3565b91505092915050565b60008060408385031215612e8a57600080fd5b6000612e9885828601612cb3565b9250506020612ea985828601612cb3565b9150509250929050565b600080600080600060a08688031215612ecb57600080fd5b6000612ed988828901612cb3565b9550506020612eea88828901612cb3565b945050604086013567ffffffffffffffff811115612f0757600080fd5b612f1388828901612cf2565b935050606086013567ffffffffffffffff811115612f3057600080fd5b612f3c88828901612cf2565b925050608086013567ffffffffffffffff811115612f5957600080fd5b612f6588828901612d70565b9150509295509295909350565b600080600080600060a08688031215612f8a57600080fd5b6000612f9888828901612cb3565b9550506020612fa988828901612cb3565b9450506040612fba88828901612e24565b9350506060612fcb88828901612e24565b925050608086013567ffffffffffffffff811115612fe857600080fd5b612ff488828901612d70565b9150509295509295909350565b60008060006060848603121561301657600080fd5b600061302486828701612cb3565b935050602084013567ffffffffffffffff81111561304157600080fd5b61304d86828701612cf2565b925050604084013567ffffffffffffffff81111561306a57600080fd5b61307686828701612cf2565b9150509250925092565b6000806040838503121561309357600080fd5b60006130a185828601612cb3565b92505060206130b285828601612d1c565b9150509250929050565b600080604083850312156130cf57600080fd5b60006130dd85828601612cb3565b92505060206130ee85828601612e24565b9150509250929050565b6000806040838503121561310b57600080fd5b600083013567ffffffffffffffff81111561312557600080fd5b61313185828601612cc8565b925050602083013567ffffffffffffffff81111561314e57600080fd5b61315a85828601612cf2565b9150509250929050565b60006020828403121561317657600080fd5b600061318484828501612d46565b91505092915050565b60006020828403121561319f57600080fd5b60006131ad84828501612d5b565b91505092915050565b6000602082840312156131c857600080fd5b600082013567ffffffffffffffff8111156131e257600080fd5b6131ee84828501612d9a565b91505092915050565b60008060008060c0858703121561320d57600080fd5b600085013567ffffffffffffffff81111561322757600080fd5b61323387828801612d9a565b945050602061324487828801612e24565b935050604061325587828801612e24565b925050606061326687828801612dc4565b91505092959194509250565b60006020828403121561328457600080fd5b600061329284828501612e24565b91505092915050565b600080604083850312156132ae57600080fd5b60006132bc85828601612e24565b92505060206132cd85828601612e24565b9150509250929050565b60006132e3838361374d565b60208301905092915050565b6132f881613e9e565b82525050565b600061330982613d77565b6133138185613da5565b935061331e83613d67565b8060005b8381101561334f57815161333688826132d7565b975061334183613d98565b925050600181019050613322565b5085935050505092915050565b61336581613eb0565b82525050565b61337481613ebc565b82525050565b61338b61338682613ebc565b614077565b82525050565b600061339c82613d82565b6133a68185613db6565b93506133b6818560208601613f5c565b6133bf816141a2565b840191505092915050565b6133db6133d682613f29565b614065565b82525050565b60006133ec82613d8d565b6133f68185613dc7565b9350613406818560208601613f5c565b61340f816141a2565b840191505092915050565b600061342582613d8d565b61342f8185613dd8565b935061343f818560208601613f5c565b80840191505092915050565b6000613458603483613dc7565b9150613463826141cd565b604082019050919050565b600061347b602883613dc7565b91506134868261421c565b604082019050919050565b600061349e601c83613dd8565b91506134a98261426b565b601c82019050919050565b60006134c1602b83613dc7565b91506134cc82614294565b604082019050919050565b60006134e4603183613dc7565b91506134ef826142e3565b604082019050919050565b6000613507602683613dc7565b915061351282614332565b604082019050919050565b600061352a601b83613dc7565b915061353582614381565b602082019050919050565b600061354d602983613dc7565b9150613558826143aa565b604082019050919050565b6000613570603183613dc7565b915061357b826143f9565b604082019050919050565b6000613593602583613dc7565b915061359e82614448565b604082019050919050565b60006135b6603283613dc7565b91506135c182614497565b604082019050919050565b60006135d9601e83613dc7565b91506135e4826144e6565b602082019050919050565b60006135fc603483613dc7565b91506136078261450f565b604082019050919050565b600061361f602383613dc7565b915061362a8261455e565b604082019050919050565b6000613642602083613dc7565b915061364d826145ad565b602082019050919050565b6000613665603083613dc7565b9150613670826145d6565b604082019050919050565b6000613688601983613dc7565b915061369382614625565b602082019050919050565b60006136ab602983613dc7565b91506136b68261464e565b604082019050919050565b60006136ce602983613dc7565b91506136d98261469d565b604082019050919050565b60006136f1602883613dc7565b91506136fc826146ec565b604082019050919050565b6000613714601d83613dc7565b915061371f8261473b565b602082019050919050565b6000613737601183613dc7565b915061374282614764565b602082019050919050565b61375681613f12565b82525050565b61376581613f12565b82525050565b61377481613f1c565b82525050565b600061378682856133ca565b601482019150613796828461341a565b91508190509392505050565b60006137ae828561341a565b91506137ba828461341a565b91508190509392505050565b60006137d182613491565b91506137dd828461337a565b60208201915081905092915050565b600060208201905061380160008301846132ef565b92915050565b600060a08201905061381c60008301886132ef565b61382960208301876132ef565b818103604083015261383b81866132fe565b9050818103606083015261384f81856132fe565b905081810360808301526138638184613391565b90509695505050505050565b600060a08201905061388460008301886132ef565b61389160208301876132ef565b61389e604083018661375c565b6138ab606083018561375c565b81810360808301526138bd8184613391565b90509695505050505050565b600060208201905081810360008301526138e381846132fe565b905092915050565b6000604082019050818103600083015261390581856132fe565b9050818103602083015261391981846132fe565b90509392505050565b6000602082019050613937600083018461335c565b92915050565b6000608082019050613952600083018761336b565b61395f602083018661376b565b61396c604083018561336b565b613979606083018461336b565b95945050505050565b6000602082019050818103600083015261399c81846133e1565b905092915050565b600060208201905081810360008301526139bd8161344b565b9050919050565b600060208201905081810360008301526139dd8161346e565b9050919050565b600060208201905081810360008301526139fd816134b4565b9050919050565b60006020820190508181036000830152613a1d816134d7565b9050919050565b60006020820190508181036000830152613a3d816134fa565b9050919050565b60006020820190508181036000830152613a5d8161351d565b9050919050565b60006020820190508181036000830152613a7d81613540565b9050919050565b60006020820190508181036000830152613a9d81613563565b9050919050565b60006020820190508181036000830152613abd81613586565b9050919050565b60006020820190508181036000830152613add816135a9565b9050919050565b60006020820190508181036000830152613afd816135cc565b9050919050565b60006020820190508181036000830152613b1d816135ef565b9050919050565b60006020820190508181036000830152613b3d81613612565b9050919050565b60006020820190508181036000830152613b5d81613635565b9050919050565b60006020820190508181036000830152613b7d81613658565b9050919050565b60006020820190508181036000830152613b9d8161367b565b9050919050565b60006020820190508181036000830152613bbd8161369e565b9050919050565b60006020820190508181036000830152613bdd816136c1565b9050919050565b60006020820190508181036000830152613bfd816136e4565b9050919050565b60006020820190508181036000830152613c1d81613707565b9050919050565b60006020820190508181036000830152613c3d8161372a565b9050919050565b6000602082019050613c59600083018461375c565b92915050565b6000604082019050613c74600083018561375c565b613c81602083018461375c565b9392505050565b6000613c92613ca3565b9050613c9e8282613feb565b919050565b6000604051905090565b600067ffffffffffffffff821115613cc857613cc7614151565b5b602082029050602081019050919050565b600067ffffffffffffffff821115613cf457613cf3614151565b5b602082029050602081019050919050565b600067ffffffffffffffff821115613d2057613d1f614151565b5b613d29826141a2565b9050602081019050919050565b600067ffffffffffffffff821115613d5157613d50614151565b5b613d5a826141a2565b9050602081019050919050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600082825260208201905092915050565b600082825260208201905092915050565b600081905092915050565b6000613dee82613f12565b9150613df983613f12565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115613e2e57613e2d6140c4565b5b828201905092915050565b6000613e4482613f12565b9150613e4f83613f12565b925082613e5f57613e5e6140f3565b5b828204905092915050565b6000613e7582613f12565b9150613e8083613f12565b925082821015613e9357613e926140c4565b5b828203905092915050565b6000613ea982613ef2565b9050919050565b60008115159050919050565b6000819050919050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b6000613f3482613f3b565b9050919050565b6000613f4682613ef2565b9050919050565b82818337600083830152505050565b60005b83811015613f7a578082015181840152602081019050613f5f565b83811115613f89576000848401525b50505050565b6000613f9a82613f12565b91506000821415613fae57613fad6140c4565b5b600182039050919050565b60006002820490506001821680613fd157607f821691505b60208210811415613fe557613fe4614122565b5b50919050565b613ff4826141a2565b810181811067ffffffffffffffff8211171561401357614012614151565b5b80604052505050565b600061402782613f12565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82141561405a576140596140c4565b5b600182019050919050565b600061407082614081565b9050919050565b6000819050919050565b600061408c826141b3565b9050919050565b600061409e82613f12565b91506140a983613f12565b9250826140b9576140b86140f3565b5b828206905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600060033d111561419f5760046000803e61419c6000516141c0565b90505b90565b6000601f19601f8301169050919050565b60008160601b9050919050565b60008160e01c9050919050565b7f455243313135353a207472616e7366657220746f206e6f6e204552433131353560008201527f526563656976657220696d706c656d656e746572000000000000000000000000602082015250565b7f455243313135353a204552433131353552656365697665722072656a6563746560008201527f6420746f6b656e73000000000000000000000000000000000000000000000000602082015250565b7f19457468657265756d205369676e6564204d6573736167653a0a333200000000600082015250565b7f455243313135353a2062616c616e636520717565727920666f7220746865207a60008201527f65726f2061646472657373000000000000000000000000000000000000000000602082015250565b7f455243313135353a2062617463682062616c616e636520717565727920666f7260008201527f20746865207a65726f2061646472657373000000000000000000000000000000602082015250565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b7f455243313135353a2063616c6c6572206973206e6f74206f776e6572206e6f7260008201527f20617070726f7665640000000000000000000000000000000000000000000000602082015250565b7f455243313135354d657461646174613a206275726e20717565727920666f722060008201527f6e6f6e6578697374656e7420746f6b656e000000000000000000000000000000602082015250565b7f455243313135353a207472616e7366657220746f20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b7f455243313135353a207472616e736665722063616c6c6572206973206e6f742060008201527f6f776e6572206e6f7220617070726f7665640000000000000000000000000000602082015250565b7f4f776e6572207369676e20766572696669636174696f6e206661696c65640000600082015250565b7f455243313135354d657461646174613a2062616c616e6365207175657279206660008201527f6f72206e6f6e6578697374656e7420746f6b656e000000000000000000000000602082015250565b7f455243313135353a206275726e2066726f6d20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f455243313135354d657461646174613a2055524920717565727920666f72206e60008201527f6f6e6578697374656e7420746f6b656e00000000000000000000000000000000602082015250565b7f537570706c792073686f756c6420626520706f73697469766500000000000000600082015250565b7f455243313135353a2073657474696e6720617070726f76616c2073746174757360008201527f20666f722073656c660000000000000000000000000000000000000000000000602082015250565b7f455243313135353a206163636f756e747320616e6420696473206c656e67746860008201527f206d69736d617463680000000000000000000000000000000000000000000000602082015250565b7f455243313135353a2069647320616e6420616d6f756e7473206c656e6774682060008201527f6d69736d61746368000000000000000000000000000000000000000000000000602082015250565b7f455243313135353a20746f6b656e20616c7265616479206d696e746564000000600082015250565b7f7572692073686f756c6420626520736574000000000000000000000000000000600082015250565b600060443d101561479d57614820565b6147a5613ca3565b60043d036004823e80513d602482011167ffffffffffffffff821117156147cd575050614820565b808201805167ffffffffffffffff8111156147eb5750505050614820565b80602083010160043d038501811115614808575050505050614820565b61481782602001850186613feb565b82955050505050505b90565b61482c81613e9e565b811461483757600080fd5b50565b61484381613eb0565b811461484e57600080fd5b50565b61485a81613ebc565b811461486557600080fd5b50565b61487181613ec6565b811461487c57600080fd5b50565b61488881613f12565b811461489357600080fd5b50565b61489f81613f1c565b81146148aa57600080fd5b5056fe455243313135353a206275726e20616d6f756e7420657863656564732062616c616e6365455243313135353a20696e73756666696369656e742062616c616e636520666f72207472616e736665724552435f686f6c646572546f6b656e73313135353a206275726e20616d6f756e7420657863656564732062616c616e6365a2646970667358221220e8f1492e20ef6c120aa42443d2594a01f05fd14dcce50ea9f498bb3a5817be3264736f6c63430008040033000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000e000000000000000000000000000000000000000000000000000000000000000094d494e54595357415000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007244d494e54595300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002268747470733a2f2f676174657761792e70696e6174612e636c6f75642f697066732f000000000000000000000000000000000000000000000000000000000000

Deployed Bytecode

0x608060405234801561001057600080fd5b50600436106101205760003560e01c806395d89b41116100ad578063c87b56dd11610071578063c87b56dd14610319578063ca1daf8814610349578063d48e638a14610365578063e985e9c514610395578063f242432a146103c557610120565b806395d89b4114610275578063a22cb46514610293578063b390c0ab146102af578063c0ac9983146102cb578063c57dc235146102e957610120565b80634e1273f4116100f45780634e1273f4146101bf57806355f804b3146101ef5780636b20c4541461020b5780636fdc202f146102275780638da5cb5b1461025757610120565b8062fdd58e1461012557806301ffc9a71461015557806306fdde03146101855780632eb2c2d6146101a3575b600080fd5b61013f600480360381019061013a91906130bc565b6103e1565b60405161014c9190613c44565b60405180910390f35b61016f600480360381019061016a9190613164565b6104f4565b60405161017c9190613922565b60405180910390f35b61018d61055b565b60405161019a9190613982565b60405180910390f35b6101bd60048036038101906101b89190612eb3565b6105ed565b005b6101d960048036038101906101d491906130f8565b610a0e565b6040516101e691906138c9565b60405180910390f35b610209600480360381019061020491906131b6565b610cb6565b005b61022560048036038101906102209190613001565b610d52565b005b610241600480360381019061023c9190612e4e565b610d62565b60405161024e9190613922565b60405180910390f35b61025f610f2a565b60405161026c91906137ec565b60405180910390f35b61027d610f50565b60405161028a9190613982565b60405180910390f35b6102ad60048036038101906102a89190613080565b610fe2565b005b6102c960048036038101906102c4919061329b565b611163565b005b6102d3611172565b6040516102e09190613982565b60405180910390f35b61030360048036038101906102fe9190613272565b611200565b6040516103109190613c44565b60405180910390f35b610333600480360381019061032e9190613272565b61121d565b6040516103409190613982565b60405180910390f35b610363600480360381019061035e91906131f7565b611413565b005b61037f600480360381019061037a9190613272565b611446565b60405161038c91906137ec565b60405180910390f35b6103af60048036038101906103aa9190612e77565b611483565b6040516103bc9190613922565b60405180910390f35b6103df60048036038101906103da9190612f72565b611517565b005b60006103ec8261185a565b61042b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161042290613b04565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561049b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610492906139e4565b60405180910390fd5b6003600083815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6000806000837bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060009054906101000a900460ff169050919050565b60606009805461056a90613fb9565b80601f016020809104026020016040519081016040528092919081815260200182805461059690613fb9565b80156105e35780601f106105b8576101008083540402835291602001916105e3565b820191906000526020600020905b8154815290600101906020018083116105c657829003601f168201915b5050505050905090565b8151835114610631576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161062890613be4565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614156106a1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161069890613aa4565b60405180910390fd5b6106a9611877565b73ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614806106ef57506106ee856106e9611877565b611483565b5b61072e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161072590613ac4565b60405180910390fd5b6000610738611877565b905061074881878787878761187f565b60005b845181101561097957600085828151811061078f577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6020026020010151905060008583815181106107d4577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6020026020010151905061085b816040518060600160405280602a81526020016148d2602a91396003600086815260200190815260200160002060008d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546118879092919063ffffffff16565b6003600084815260200190815260200160002060008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610912816003600085815260200190815260200160002060008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546118eb90919063ffffffff16565b6003600084815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505050806109729061401c565b905061074b565b508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb87876040516109f09291906138eb565b60405180910390a4610a06818787878787611949565b505050505050565b60608151835114610a54576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a4b90613bc4565b60405180910390fd5b6000835167ffffffffffffffff811115610a97577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051908082528060200260200182016040528015610ac55781602001602082028036833780820191505090505b50905060005b8451811015610cab57600073ffffffffffffffffffffffffffffffffffffffff16858281518110610b25577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001015173ffffffffffffffffffffffffffffffffffffffff161415610b84576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b7b90613a04565b60405180910390fd5b60036000858381518110610bc1577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001015181526020019081526020016000206000868381518110610c12577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054828281518110610c8e577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60200260200101818152505080610ca49061401c565b9050610acb565b508091505092915050565b3373ffffffffffffffffffffffffffffffffffffffff16600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610d46576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d3d90613b44565b60405180910390fd5b610d4f81611b30565b50565b610d5d838383611b81565b505050565b60003373ffffffffffffffffffffffffffffffffffffffff16600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610df4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610deb90613b44565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610e64576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e5b90613a24565b60405180910390fd5b81600c60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff16600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f22500af037c600dd7b720644ab6e358635085601d9ac508ad83eb2d6b2d729ca60405160405180910390a360019050919050565b600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6060600a8054610f5f90613fb9565b80601f0160208091040260200160405190810160405280929190818152602001828054610f8b90613fb9565b8015610fd85780601f10610fad57610100808354040283529160200191610fd8565b820191906000526020600020905b815481529060010190602001808311610fbb57829003601f168201915b5050505050905090565b8173ffffffffffffffffffffffffffffffffffffffff16611001611877565b73ffffffffffffffffffffffffffffffffffffffff161415611058576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161104f90613ba4565b60405180910390fd5b8060046000611065611877565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff16611112611877565b73ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31836040516111579190613922565b60405180910390a35050565b61116e338383611e95565b5050565b6005805461117f90613fb9565b80601f01602080910402602001604051908101604052809291908181526020018280546111ab90613fb9565b80156111f85780601f106111cd576101008083540402835291602001916111f8565b820191906000526020600020905b8154815290600101906020018083116111db57829003601f168201915b505050505081565b600060026000838152602001908152602001600020549050919050565b60606112288261185a565b611267576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161125e90613b64565b60405180910390fd5b600060066000848152602001908152602001600020805461128790613fb9565b80601f01602080910402602001604051908101604052809291908181526020018280546112b390613fb9565b80156113005780601f106112d557610100808354040283529160200191611300565b820191906000526020600020905b8154815290600101906020018083116112e357829003601f168201915b5050505050905060006005805461131690613fb9565b80601f016020809104026020016040519081016040528092919081815260200182805461134290613fb9565b801561138f5780601f106113645761010080835404028352916020019161138f565b820191906000526020600020905b81548152906001019060200180831161137257829003601f168201915b505050505090506000815114156113aa57819250505061140e565b6000825111156113df5780826040516020016113c79291906137a2565b6040516020818303038152906040529250505061140e565b806113e9856120dd565b6040516020016113fa9291906137a2565b604051602081830303815290604052925050505b919050565b61141d848261229c565b61142b600b548486856123de565b6001600b5461143a9190613de3565b600b8190555050505050565b60006001600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b6000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415611587576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161157e90613aa4565b60405180910390fd5b61158f611877565b73ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614806115d557506115d4856115cf611877565b611483565b5b611614576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161160b90613a64565b60405180910390fd5b600061161e611877565b905061163e81878761162f8861264c565b6116388861264c565b8761187f565b6116bb836040518060600160405280602a81526020016148d2602a91396003600088815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546118879092919063ffffffff16565b6003600086815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611772836003600087815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546118eb90919063ffffffff16565b6003600086815260200190815260200160002060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f62878760405161183c929190613c5f565b60405180910390a4611852818787878787612712565b505050505050565b60006118708260076128f990919063ffffffff16565b9050919050565b600033905090565b505050505050565b60008383111582906118cf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118c69190613982565b60405180910390fd5b50600083856118de9190613e6a565b9050809150509392505050565b60008082846118fa9190613de3565b90508381101561193f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161193690613a44565b60405180910390fd5b8091505092915050565b6119688473ffffffffffffffffffffffffffffffffffffffff16612913565b15611b28578373ffffffffffffffffffffffffffffffffffffffff1663bc197c8187878686866040518663ffffffff1660e01b81526004016119ae959493929190613807565b602060405180830381600087803b1580156119c857600080fd5b505af19250505080156119f957506040513d601f19601f820116820180604052508101906119f6919061318d565b60015b611a9f57611a05614180565b806308c379a01415611a625750611a1a61478d565b80611a255750611a64565b806040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a599190613982565b60405180910390fd5b505b6040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a96906139a4565b60405180910390fd5b63bc197c8160e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614611b26576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b1d906139c4565b60405180910390fd5b505b505050505050565b8060059080519060200190611b46929190612abc565b507f5514cc7324ac64a875ba50a1849367d39c8b030fe0f563c3c7142984552bc30681604051611b769190613982565b60405180910390a150565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611bf1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611be890613b24565b60405180910390fd5b8051825114611c35576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c2c90613be4565b60405180910390fd5b6000611c3f611877565b9050611c5f8185600086866040518060200160405280600081525061187f565b60005b8351811015611e0f57611d68838281518110611ca7577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60200260200101516040518060600160405280602481526020016148ae6024913960036000888681518110611d05577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6020026020010151815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546118879092919063ffffffff16565b60036000868481518110611da5577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6020026020010151815260200190815260200160002060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508080611e079061401c565b915050611c62565b50600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb8686604051611e879291906138eb565b60405180910390a450505050565b611e9e8261185a565b611edd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ed490613a84565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611f4d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f4490613b24565b60405180910390fd5b6000611f57611877565b9050611f8781856000611f698761264c565b611f728761264c565b6040518060200160405280600081525061187f565b612004826040518060600160405280603181526020016148fc603191396003600087815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546118879092919063ffffffff16565b6003600085815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f6286866040516120cf929190613c5f565b60405180910390a450505050565b60606000821415612125576040518060400160405280600181526020017f30000000000000000000000000000000000000000000000000000000000000008152509050612297565b600082905060005b600082146121575780806121409061401c565b915050600a826121509190613e39565b915061212d565b60008167ffffffffffffffff811115612199577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040519080825280601f01601f1916602001820160405280156121cb5781602001600182028036833780820191505090505b50905060006001836121dd9190613e6a565b90508593505b6000841461228f57600a846121f89190614093565b60306122049190613de3565b60f81b82828061221390613f8f565b93508151811061224c577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600a846122889190613e39565b93506121e3565b819450505050505b919050565b600030836040516020016122b192919061377a565b6040516020818303038152906040528051906020012090506001816040516020016122dc91906137c6565b604051602081830303815290604052805190602001208360000151846020015185604001516040516000815260200160405260405161231e949392919061393d565b6020604051602081039080840390855afa158015612340573d6000803e3d6000fd5b5050506020604051035173ffffffffffffffffffffffffffffffffffffffff16600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146123d9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123d090613ae4565b60405180910390fd5b505050565b6123e78461185a565b15612427576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161241e90613c04565b60405180910390fd5b600083141561246b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161246290613b84565b60405180910390fd5b60008251116124af576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124a690613c24565b60405180910390fd5b336001600086815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550612517843360076129269092919063ffffffff16565b50806002600086815260200190815260200160002081905550826003600086815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061258f848361295b565b3373ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f628787604051612606929190613c5f565b60405180910390a4837f6bb7ff708619ba0610cba295a58592e0451dee2622938c8755667688daf3529b8360405161263e9190613982565b60405180910390a250505050565b60606000600167ffffffffffffffff811115612691577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040519080825280602002602001820160405280156126bf5781602001602082028036833780820191505090505b50905082816000815181106126fd577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60200260200101818152505080915050919050565b6127318473ffffffffffffffffffffffffffffffffffffffff16612913565b156128f1578373ffffffffffffffffffffffffffffffffffffffff1663f23a6e6187878686866040518663ffffffff1660e01b815260040161277795949392919061386f565b602060405180830381600087803b15801561279157600080fd5b505af19250505080156127c257506040513d601f19601f820116820180604052508101906127bf919061318d565b60015b612868576127ce614180565b806308c379a0141561282b57506127e361478d565b806127ee575061282d565b806040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128229190613982565b60405180910390fd5b505b6040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161285f906139a4565b60405180910390fd5b63f23a6e6160e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916146128ef576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128e6906139c4565b60405180910390fd5b505b505050505050565b600061290b836000018360001b612987565b905092915050565b600080823b905060008111915050919050565b6000612952846000018460001b8473ffffffffffffffffffffffffffffffffffffffff1660001b6129aa565b90509392505050565b80600660008481526020019081526020016000209080519060200190612982929190612abc565b505050565b600080836001016000848152602001908152602001600020541415905092915050565b6000808460010160008581526020019081526020016000205490506000811415612a5157846000016040518060400160405280868152602001858152509080600181540180825580915050600190039060005260206000209060020201600090919091909150600082015181600001556020820151816001015550508460000180549050856001016000868152602001908152602001600020819055506001915050612ab5565b8285600001600183612a639190613e6a565b81548110612a9a577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b90600052602060002090600202016001018190555060009150505b9392505050565b828054612ac890613fb9565b90600052602060002090601f016020900481019282612aea5760008555612b31565b82601f10612b0357805160ff1916838001178555612b31565b82800160010185558215612b31579182015b82811115612b30578251825591602001919060010190612b15565b5b509050612b3e9190612b42565b5090565b5b80821115612b5b576000816000905550600101612b43565b5090565b6000612b72612b6d84613cad565b613c88565b90508083825260208201905082856020860282011115612b9157600080fd5b60005b85811015612bc15781612ba78882612cb3565b845260208401935060208301925050600181019050612b94565b5050509392505050565b6000612bde612bd984613cd9565b613c88565b90508083825260208201905082856020860282011115612bfd57600080fd5b60005b85811015612c2d5781612c138882612e24565b845260208401935060208301925050600181019050612c00565b5050509392505050565b6000612c4a612c4584613d05565b613c88565b905082815260208101848484011115612c6257600080fd5b612c6d848285613f4d565b509392505050565b6000612c88612c8384613d36565b613c88565b905082815260208101848484011115612ca057600080fd5b612cab848285613f4d565b509392505050565b600081359050612cc281614823565b92915050565b600082601f830112612cd957600080fd5b8135612ce9848260208601612b5f565b91505092915050565b600082601f830112612d0357600080fd5b8135612d13848260208601612bcb565b91505092915050565b600081359050612d2b8161483a565b92915050565b600081359050612d4081614851565b92915050565b600081359050612d5581614868565b92915050565b600081519050612d6a81614868565b92915050565b600082601f830112612d8157600080fd5b8135612d91848260208601612c37565b91505092915050565b600082601f830112612dab57600080fd5b8135612dbb848260208601612c75565b91505092915050565b600060608284031215612dd657600080fd5b612de06060613c88565b90506000612df084828501612e39565b6000830152506020612e0484828501612d31565b6020830152506040612e1884828501612d31565b60408301525092915050565b600081359050612e338161487f565b92915050565b600081359050612e4881614896565b92915050565b600060208284031215612e6057600080fd5b6000612e6e84828501612cb3565b91505092915050565b60008060408385031215612e8a57600080fd5b6000612e9885828601612cb3565b9250506020612ea985828601612cb3565b9150509250929050565b600080600080600060a08688031215612ecb57600080fd5b6000612ed988828901612cb3565b9550506020612eea88828901612cb3565b945050604086013567ffffffffffffffff811115612f0757600080fd5b612f1388828901612cf2565b935050606086013567ffffffffffffffff811115612f3057600080fd5b612f3c88828901612cf2565b925050608086013567ffffffffffffffff811115612f5957600080fd5b612f6588828901612d70565b9150509295509295909350565b600080600080600060a08688031215612f8a57600080fd5b6000612f9888828901612cb3565b9550506020612fa988828901612cb3565b9450506040612fba88828901612e24565b9350506060612fcb88828901612e24565b925050608086013567ffffffffffffffff811115612fe857600080fd5b612ff488828901612d70565b9150509295509295909350565b60008060006060848603121561301657600080fd5b600061302486828701612cb3565b935050602084013567ffffffffffffffff81111561304157600080fd5b61304d86828701612cf2565b925050604084013567ffffffffffffffff81111561306a57600080fd5b61307686828701612cf2565b9150509250925092565b6000806040838503121561309357600080fd5b60006130a185828601612cb3565b92505060206130b285828601612d1c565b9150509250929050565b600080604083850312156130cf57600080fd5b60006130dd85828601612cb3565b92505060206130ee85828601612e24565b9150509250929050565b6000806040838503121561310b57600080fd5b600083013567ffffffffffffffff81111561312557600080fd5b61313185828601612cc8565b925050602083013567ffffffffffffffff81111561314e57600080fd5b61315a85828601612cf2565b9150509250929050565b60006020828403121561317657600080fd5b600061318484828501612d46565b91505092915050565b60006020828403121561319f57600080fd5b60006131ad84828501612d5b565b91505092915050565b6000602082840312156131c857600080fd5b600082013567ffffffffffffffff8111156131e257600080fd5b6131ee84828501612d9a565b91505092915050565b60008060008060c0858703121561320d57600080fd5b600085013567ffffffffffffffff81111561322757600080fd5b61323387828801612d9a565b945050602061324487828801612e24565b935050604061325587828801612e24565b925050606061326687828801612dc4565b91505092959194509250565b60006020828403121561328457600080fd5b600061329284828501612e24565b91505092915050565b600080604083850312156132ae57600080fd5b60006132bc85828601612e24565b92505060206132cd85828601612e24565b9150509250929050565b60006132e3838361374d565b60208301905092915050565b6132f881613e9e565b82525050565b600061330982613d77565b6133138185613da5565b935061331e83613d67565b8060005b8381101561334f57815161333688826132d7565b975061334183613d98565b925050600181019050613322565b5085935050505092915050565b61336581613eb0565b82525050565b61337481613ebc565b82525050565b61338b61338682613ebc565b614077565b82525050565b600061339c82613d82565b6133a68185613db6565b93506133b6818560208601613f5c565b6133bf816141a2565b840191505092915050565b6133db6133d682613f29565b614065565b82525050565b60006133ec82613d8d565b6133f68185613dc7565b9350613406818560208601613f5c565b61340f816141a2565b840191505092915050565b600061342582613d8d565b61342f8185613dd8565b935061343f818560208601613f5c565b80840191505092915050565b6000613458603483613dc7565b9150613463826141cd565b604082019050919050565b600061347b602883613dc7565b91506134868261421c565b604082019050919050565b600061349e601c83613dd8565b91506134a98261426b565b601c82019050919050565b60006134c1602b83613dc7565b91506134cc82614294565b604082019050919050565b60006134e4603183613dc7565b91506134ef826142e3565b604082019050919050565b6000613507602683613dc7565b915061351282614332565b604082019050919050565b600061352a601b83613dc7565b915061353582614381565b602082019050919050565b600061354d602983613dc7565b9150613558826143aa565b604082019050919050565b6000613570603183613dc7565b915061357b826143f9565b604082019050919050565b6000613593602583613dc7565b915061359e82614448565b604082019050919050565b60006135b6603283613dc7565b91506135c182614497565b604082019050919050565b60006135d9601e83613dc7565b91506135e4826144e6565b602082019050919050565b60006135fc603483613dc7565b91506136078261450f565b604082019050919050565b600061361f602383613dc7565b915061362a8261455e565b604082019050919050565b6000613642602083613dc7565b915061364d826145ad565b602082019050919050565b6000613665603083613dc7565b9150613670826145d6565b604082019050919050565b6000613688601983613dc7565b915061369382614625565b602082019050919050565b60006136ab602983613dc7565b91506136b68261464e565b604082019050919050565b60006136ce602983613dc7565b91506136d98261469d565b604082019050919050565b60006136f1602883613dc7565b91506136fc826146ec565b604082019050919050565b6000613714601d83613dc7565b915061371f8261473b565b602082019050919050565b6000613737601183613dc7565b915061374282614764565b602082019050919050565b61375681613f12565b82525050565b61376581613f12565b82525050565b61377481613f1c565b82525050565b600061378682856133ca565b601482019150613796828461341a565b91508190509392505050565b60006137ae828561341a565b91506137ba828461341a565b91508190509392505050565b60006137d182613491565b91506137dd828461337a565b60208201915081905092915050565b600060208201905061380160008301846132ef565b92915050565b600060a08201905061381c60008301886132ef565b61382960208301876132ef565b818103604083015261383b81866132fe565b9050818103606083015261384f81856132fe565b905081810360808301526138638184613391565b90509695505050505050565b600060a08201905061388460008301886132ef565b61389160208301876132ef565b61389e604083018661375c565b6138ab606083018561375c565b81810360808301526138bd8184613391565b90509695505050505050565b600060208201905081810360008301526138e381846132fe565b905092915050565b6000604082019050818103600083015261390581856132fe565b9050818103602083015261391981846132fe565b90509392505050565b6000602082019050613937600083018461335c565b92915050565b6000608082019050613952600083018761336b565b61395f602083018661376b565b61396c604083018561336b565b613979606083018461336b565b95945050505050565b6000602082019050818103600083015261399c81846133e1565b905092915050565b600060208201905081810360008301526139bd8161344b565b9050919050565b600060208201905081810360008301526139dd8161346e565b9050919050565b600060208201905081810360008301526139fd816134b4565b9050919050565b60006020820190508181036000830152613a1d816134d7565b9050919050565b60006020820190508181036000830152613a3d816134fa565b9050919050565b60006020820190508181036000830152613a5d8161351d565b9050919050565b60006020820190508181036000830152613a7d81613540565b9050919050565b60006020820190508181036000830152613a9d81613563565b9050919050565b60006020820190508181036000830152613abd81613586565b9050919050565b60006020820190508181036000830152613add816135a9565b9050919050565b60006020820190508181036000830152613afd816135cc565b9050919050565b60006020820190508181036000830152613b1d816135ef565b9050919050565b60006020820190508181036000830152613b3d81613612565b9050919050565b60006020820190508181036000830152613b5d81613635565b9050919050565b60006020820190508181036000830152613b7d81613658565b9050919050565b60006020820190508181036000830152613b9d8161367b565b9050919050565b60006020820190508181036000830152613bbd8161369e565b9050919050565b60006020820190508181036000830152613bdd816136c1565b9050919050565b60006020820190508181036000830152613bfd816136e4565b9050919050565b60006020820190508181036000830152613c1d81613707565b9050919050565b60006020820190508181036000830152613c3d8161372a565b9050919050565b6000602082019050613c59600083018461375c565b92915050565b6000604082019050613c74600083018561375c565b613c81602083018461375c565b9392505050565b6000613c92613ca3565b9050613c9e8282613feb565b919050565b6000604051905090565b600067ffffffffffffffff821115613cc857613cc7614151565b5b602082029050602081019050919050565b600067ffffffffffffffff821115613cf457613cf3614151565b5b602082029050602081019050919050565b600067ffffffffffffffff821115613d2057613d1f614151565b5b613d29826141a2565b9050602081019050919050565b600067ffffffffffffffff821115613d5157613d50614151565b5b613d5a826141a2565b9050602081019050919050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600082825260208201905092915050565b600082825260208201905092915050565b600081905092915050565b6000613dee82613f12565b9150613df983613f12565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115613e2e57613e2d6140c4565b5b828201905092915050565b6000613e4482613f12565b9150613e4f83613f12565b925082613e5f57613e5e6140f3565b5b828204905092915050565b6000613e7582613f12565b9150613e8083613f12565b925082821015613e9357613e926140c4565b5b828203905092915050565b6000613ea982613ef2565b9050919050565b60008115159050919050565b6000819050919050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b6000613f3482613f3b565b9050919050565b6000613f4682613ef2565b9050919050565b82818337600083830152505050565b60005b83811015613f7a578082015181840152602081019050613f5f565b83811115613f89576000848401525b50505050565b6000613f9a82613f12565b91506000821415613fae57613fad6140c4565b5b600182039050919050565b60006002820490506001821680613fd157607f821691505b60208210811415613fe557613fe4614122565b5b50919050565b613ff4826141a2565b810181811067ffffffffffffffff8211171561401357614012614151565b5b80604052505050565b600061402782613f12565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82141561405a576140596140c4565b5b600182019050919050565b600061407082614081565b9050919050565b6000819050919050565b600061408c826141b3565b9050919050565b600061409e82613f12565b91506140a983613f12565b9250826140b9576140b86140f3565b5b828206905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600060033d111561419f5760046000803e61419c6000516141c0565b90505b90565b6000601f19601f8301169050919050565b60008160601b9050919050565b60008160e01c9050919050565b7f455243313135353a207472616e7366657220746f206e6f6e204552433131353560008201527f526563656976657220696d706c656d656e746572000000000000000000000000602082015250565b7f455243313135353a204552433131353552656365697665722072656a6563746560008201527f6420746f6b656e73000000000000000000000000000000000000000000000000602082015250565b7f19457468657265756d205369676e6564204d6573736167653a0a333200000000600082015250565b7f455243313135353a2062616c616e636520717565727920666f7220746865207a60008201527f65726f2061646472657373000000000000000000000000000000000000000000602082015250565b7f455243313135353a2062617463682062616c616e636520717565727920666f7260008201527f20746865207a65726f2061646472657373000000000000000000000000000000602082015250565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b7f455243313135353a2063616c6c6572206973206e6f74206f776e6572206e6f7260008201527f20617070726f7665640000000000000000000000000000000000000000000000602082015250565b7f455243313135354d657461646174613a206275726e20717565727920666f722060008201527f6e6f6e6578697374656e7420746f6b656e000000000000000000000000000000602082015250565b7f455243313135353a207472616e7366657220746f20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b7f455243313135353a207472616e736665722063616c6c6572206973206e6f742060008201527f6f776e6572206e6f7220617070726f7665640000000000000000000000000000602082015250565b7f4f776e6572207369676e20766572696669636174696f6e206661696c65640000600082015250565b7f455243313135354d657461646174613a2062616c616e6365207175657279206660008201527f6f72206e6f6e6578697374656e7420746f6b656e000000000000000000000000602082015250565b7f455243313135353a206275726e2066726f6d20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f455243313135354d657461646174613a2055524920717565727920666f72206e60008201527f6f6e6578697374656e7420746f6b656e00000000000000000000000000000000602082015250565b7f537570706c792073686f756c6420626520706f73697469766500000000000000600082015250565b7f455243313135353a2073657474696e6720617070726f76616c2073746174757360008201527f20666f722073656c660000000000000000000000000000000000000000000000602082015250565b7f455243313135353a206163636f756e747320616e6420696473206c656e67746860008201527f206d69736d617463680000000000000000000000000000000000000000000000602082015250565b7f455243313135353a2069647320616e6420616d6f756e7473206c656e6774682060008201527f6d69736d61746368000000000000000000000000000000000000000000000000602082015250565b7f455243313135353a20746f6b656e20616c7265616479206d696e746564000000600082015250565b7f7572692073686f756c6420626520736574000000000000000000000000000000600082015250565b600060443d101561479d57614820565b6147a5613ca3565b60043d036004823e80513d602482011167ffffffffffffffff821117156147cd575050614820565b808201805167ffffffffffffffff8111156147eb5750505050614820565b80602083010160043d038501811115614808575050505050614820565b61481782602001850186613feb565b82955050505050505b90565b61482c81613e9e565b811461483757600080fd5b50565b61484381613eb0565b811461484e57600080fd5b50565b61485a81613ebc565b811461486557600080fd5b50565b61487181613ec6565b811461487c57600080fd5b50565b61488881613f12565b811461489357600080fd5b50565b61489f81613f1c565b81146148aa57600080fd5b5056fe455243313135353a206275726e20616d6f756e7420657863656564732062616c616e6365455243313135353a20696e73756666696369656e742062616c616e636520666f72207472616e736665724552435f686f6c646572546f6b656e73313135353a206275726e20616d6f756e7420657863656564732062616c616e6365a2646970667358221220e8f1492e20ef6c120aa42443d2594a01f05fd14dcce50ea9f498bb3a5817be3264736f6c63430008040033

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

000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000e000000000000000000000000000000000000000000000000000000000000000094d494e54595357415000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007244d494e54595300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002268747470733a2f2f676174657761792e70696e6174612e636c6f75642f697066732f000000000000000000000000000000000000000000000000000000000000

-----Decoded View---------------
Arg [0] : name (string): MINTYSWAP
Arg [1] : symbol (string): $MINTYS
Arg [2] : tokenURIPrefix (string): https://gateway.pinata.cloud/ipfs/

-----Encoded View---------------
10 Constructor Arguments found :
Arg [0] : 0000000000000000000000000000000000000000000000000000000000000060
Arg [1] : 00000000000000000000000000000000000000000000000000000000000000a0
Arg [2] : 00000000000000000000000000000000000000000000000000000000000000e0
Arg [3] : 0000000000000000000000000000000000000000000000000000000000000009
Arg [4] : 4d494e5459535741500000000000000000000000000000000000000000000000
Arg [5] : 0000000000000000000000000000000000000000000000000000000000000007
Arg [6] : 244d494e54595300000000000000000000000000000000000000000000000000
Arg [7] : 0000000000000000000000000000000000000000000000000000000000000022
Arg [8] : 68747470733a2f2f676174657761792e70696e6174612e636c6f75642f697066
Arg [9] : 732f000000000000000000000000000000000000000000000000000000000000


Deployed Bytecode Sourcemap

34144:2199:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20710:325;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12232:142;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18006:100;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;26879:1280;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;21345:634;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;35956:108;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;36187:153;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;34777:266;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;34211:20;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18114:104;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22341:311;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;36072:107;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;17364:28;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18772:121;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19761:556;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;35742:206;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;19066:126;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22941:160;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;24264:964;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;20710:325;20793:7;20821:16;20829:7;20821;:16::i;:::-;20813:81;;;;;;;;;;;;:::i;:::-;;;;;;;;;20932:1;20913:21;;:7;:21;;;;20905:77;;;;;;;;;;;;:::i;:::-;;;;;;;;;21000:9;:18;21010:7;21000:18;;;;;;;;;;;:27;21019:7;21000:27;;;;;;;;;;;;;;;;20993:34;;20710:325;;;;:::o;12232:142::-;12309:4;12333:20;:33;12354:11;12333:33;;;;;;;;;;;;;;;;;;;;;;;;;;;12326:40;;12232:142;;;:::o;18006:100::-;18060:13;18093:5;18086:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18006:100;:::o;26879:1280::-;27154:7;:14;27135:8;:15;:33;27127:86;;;;;;;;;;;;:::i;:::-;;;;;;;;;27246:1;27232:16;;:2;:16;;;;27224:66;;;;;;;;;;;;:::i;:::-;;;;;;;;;27331:12;:10;:12::i;:::-;27323:20;;:4;:20;;;:60;;;;27347:36;27364:4;27370:12;:10;:12::i;:::-;27347:16;:36::i;:::-;27323:60;27301:160;;;;;;;;;;;;:::i;:::-;;;;;;;;;27474:16;27493:12;:10;:12::i;:::-;27474:31;;27518:65;27539:8;27549:4;27555:2;27559:8;27569:7;27578:4;27518:20;:65::i;:::-;27601:9;27596:393;27620:8;:15;27616:1;:19;27596:393;;;27657:15;27675:8;27684:1;27675:11;;;;;;;;;;;;;;;;;;;;;;27657:29;;27701:14;27718:7;27726:1;27718:10;;;;;;;;;;;;;;;;;;;;;;27701:27;;27772:131;27819:6;27772:131;;;;;;;;;;;;;;;;;:9;:18;27782:7;27772:18;;;;;;;;;;;:24;27791:4;27772:24;;;;;;;;;;;;;;;;:28;;:131;;;;;:::i;:::-;27745:9;:18;27755:7;27745:18;;;;;;;;;;;:24;27764:4;27745:24;;;;;;;;;;;;;;;:158;;;;27943:34;27970:6;27943:9;:18;27953:7;27943:18;;;;;;;;;;;:22;27962:2;27943:22;;;;;;;;;;;;;;;;:26;;:34;;;;:::i;:::-;27918:9;:18;27928:7;27918:18;;;;;;;;;;;:22;27937:2;27918:22;;;;;;;;;;;;;;;:59;;;;27596:393;;27637:3;;;;:::i;:::-;;;27596:393;;;;28036:2;28006:52;;28030:4;28006:52;;28020:8;28006:52;;;28040:8;28050:7;28006:52;;;;;;;:::i;:::-;;;;;;;;28071:80;28107:8;28117:4;28123:2;28127:8;28137:7;28146:4;28071:35;:80::i;:::-;26879:1280;;;;;;:::o;21345:634::-;21509:16;21570:3;:10;21551:8;:15;:29;21543:83;;;;;;;;;;;;:::i;:::-;;;;;;;;;21639:30;21686:8;:15;21672:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21639:63;;21720:9;21715:224;21739:8;:15;21735:1;:19;21715:224;;;21807:1;21784:25;;:8;21793:1;21784:11;;;;;;;;;;;;;;;;;;;;;;:25;;;;21776:87;;;;;;;;;;;;:::i;:::-;;;;;;;;;21897:9;:17;21907:3;21911:1;21907:6;;;;;;;;;;;;;;;;;;;;;;21897:17;;;;;;;;;;;:30;21915:8;21924:1;21915:11;;;;;;;;;;;;;;;;;;;;;;21897:30;;;;;;;;;;;;;;;;21878:13;21892:1;21878:16;;;;;;;;;;;;;;;;;;;;;:49;;;;;21756:3;;;;:::i;:::-;;;21715:224;;;;21958:13;21951:20;;;21345:634;;;;:::o;35956:108::-;34575:10;34566:19;;:5;;;;;;;;;;;:19;;;34558:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;36028:28:::1;36047:8;36028:18;:28::i;:::-;35956:108:::0;:::o;36187:153::-;36294:38;36305:7;36314:8;36324:7;36294:10;:38::i;:::-;36187:153;;;:::o;34777:266::-;34847:4;34575:10;34566:19;;:5;;;;;;;;;;;:19;;;34558:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;34891:1:::1;34871:22;;:8;:22;;;;34863:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;34955:8;34947:5;;:16;;;;;;;;;;;;;;;;;;35004:8;34979:34;;34997:5;;;;;;;;;;;34979:34;;;;;;;;;;;;35031:4;35024:11;;34777:266:::0;;;:::o;34211:20::-;;;;;;;;;;;;;:::o;18114:104::-;18170:13;18203:7;18196:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18114:104;:::o;22341:311::-;22460:8;22444:24;;:12;:10;:12::i;:::-;:24;;;;22436:78;;;;;;;;;;;;:::i;:::-;;;;;;;;;22572:8;22527:18;:32;22546:12;:10;:12::i;:::-;22527:32;;;;;;;;;;;;;;;:42;22560:8;22527:42;;;;;;;;;;;;;;;;:53;;;;;;;;;;;;;;;;;;22625:8;22596:48;;22611:12;:10;:12::i;:::-;22596:48;;;22635:8;22596:48;;;;;;:::i;:::-;;;;;;;;22341:311;;:::o;36072:107::-;36137:34;36143:10;36155:7;36164:6;36137:5;:34::i;:::-;36072:107;;:::o;17364:28::-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;18772:121::-;18838:7;18865:11;:20;18877:7;18865:20;;;;;;;;;;;;18858:27;;18772:121;;;:::o;19761:556::-;19834:13;19868:16;19876:7;19868;:16::i;:::-;19860:77;;;;;;;;;;;;:::i;:::-;;;;;;;;;19948:23;19974:10;:19;19985:7;19974:19;;;;;;;;;;;19948:45;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20004:18;20025:14;20004:35;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20078:1;20062:4;20056:18;:23;20052:72;;;20103:9;20096:16;;;;;;20052:72;20164:1;20144:9;20138:23;:27;20134:108;;;20213:4;20219:9;20196:33;;;;;;;;;:::i;:::-;;;;;;;;;;;;;20182:48;;;;;;20134:108;20283:4;20289:18;:7;:16;:18::i;:::-;20266:42;;;;;;;;;:::i;:::-;;;;;;;;;;;;;20252:57;;;;19761:556;;;;:::o;35742:206::-;35841:21;35852:3;35857:4;35841:10;:21::i;:::-;35873:33;35879:9;;35890:6;35898:3;35902;35873:5;:33::i;:::-;35939:1;35929:9;;:11;;;;:::i;:::-;35917:9;:23;;;;35742:206;;;;:::o;19066:126::-;19140:7;19167:8;:17;19176:7;19167:17;;;;;;;;;;;;;;;;;;;;;19160:24;;19066:126;;;:::o;22941:160::-;23032:4;23056:18;:27;23075:7;23056:27;;;;;;;;;;;;;;;:37;23084:8;23056:37;;;;;;;;;;;;;;;;;;;;;;;;;23049:44;;22941:160;;;;:::o;24264:964::-;24509:1;24495:16;;:2;:16;;;;24487:66;;;;;;;;;;;;:::i;:::-;;;;;;;;;24594:12;:10;:12::i;:::-;24586:20;;:4;:20;;;:60;;;;24610:36;24627:4;24633:12;:10;:12::i;:::-;24610:16;:36::i;:::-;24586:60;24564:151;;;;;;;;;;;;:::i;:::-;;;;;;;;;24728:16;24747:12;:10;:12::i;:::-;24728:31;;24772:101;24793:8;24803:4;24809:2;24813:26;24831:7;24813:17;:26::i;:::-;24841:25;24859:6;24841:17;:25::i;:::-;24868:4;24772:20;:101::i;:::-;24913:82;24942:6;24913:82;;;;;;;;;;;;;;;;;:9;:18;24923:7;24913:18;;;;;;;;;;;:24;24932:4;24913:24;;;;;;;;;;;;;;;;:28;;:82;;;;;:::i;:::-;24886:9;:18;24896:7;24886:18;;;;;;;;;;;:24;24905:4;24886:24;;;;;;;;;;;;;;;:109;;;;25031:34;25058:6;25031:9;:18;25041:7;25031:18;;;;;;;;;;;:22;25050:2;25031:22;;;;;;;;;;;;;;;;:26;;:34;;;;:::i;:::-;25006:9;:18;25016:7;25006:18;;;;;;;;;;;:22;25025:2;25006:22;;;;;;;;;;;;;;;:59;;;;25114:2;25083:51;;25108:4;25083:51;;25098:8;25083:51;;;25118:7;25127:6;25083:51;;;;;;;:::i;:::-;;;;;;;;25147:73;25178:8;25188:4;25194:2;25198:7;25207:6;25215:4;25147:30;:73::i;:::-;24264:964;;;;;;:::o;20325:127::-;20390:4;20414:30;20436:7;20414:12;:21;;:30;;;;:::i;:::-;20407:37;;20325:127;;;:::o;11628:115::-;11681:15;11724:10;11709:26;;11628:115;:::o;32093:241::-;;;;;;;:::o;13232:192::-;13318:7;13351:1;13346;:6;;13354:12;13338:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;13378:9;13394:1;13390;:5;;;;:::i;:::-;13378:17;;13415:1;13408:8;;;13232:192;;;;;:::o;12780:181::-;12838:7;12858:9;12874:1;12870;:5;;;;:::i;:::-;12858:17;;12899:1;12894;:6;;12886:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;12952:1;12945:8;;;12780:181;;;;:::o;33122:809::-;33381:15;:2;:13;;;:15::i;:::-;33377:547;;;33434:2;33417:43;;;33461:8;33471:4;33477:8;33487:7;33496:4;33417:84;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;33413:500;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;33786:6;33779:14;;;;;;;;;;;:::i;:::-;;;;;;;;33413:500;;;33835:62;;;;;;;;;;:::i;:::-;;;;;;;;33413:500;33563:52;;;33551:64;;;:8;:64;;;;33547:163;;33640:50;;;;;;;;;;:::i;:::-;;;;;;;;33547:163;33502:223;33377:547;33122:809;;;;;;:::o;19376:164::-;19472:15;19455:14;:32;;;;;;;;;;;;:::i;:::-;;19503:29;19516:15;19503:29;;;;;;:::i;:::-;;;;;;;;19376:164;:::o;31327:756::-;31472:1;31453:21;;:7;:21;;;;31445:69;;;;;;;;;;;;:::i;:::-;;;;;;;;;31552:7;:14;31533:8;:15;:33;31525:86;;;;;;;;;;;;:::i;:::-;;;;;;;;;31624:16;31643:12;:10;:12::i;:::-;31624:31;;31668:74;31689:8;31699:7;31716:1;31720:8;31730:7;31668:74;;;;;;;;;;;;:20;:74::i;:::-;31760:6;31755:240;31776:8;:15;31772:1;:19;31755:240;;;31847:136;31901:7;31909:1;31901:10;;;;;;;;;;;;;;;;;;;;;;31847:136;;;;;;;;;;;;;;;;;:9;:22;31857:8;31866:1;31857:11;;;;;;;;;;;;;;;;;;;;;;31847:22;;;;;;;;;;;:31;31870:7;31847:31;;;;;;;;;;;;;;;;:35;;:136;;;;;:::i;:::-;31813:9;:22;31823:8;31832:1;31823:11;;;;;;;;;;;;;;;;;;;;;;31813:22;;;;;;;;;;;:31;31836:7;31813:31;;;;;;;;;;;;;;;:170;;;;31793:3;;;;;:::i;:::-;;;;31755:240;;;;32053:1;32012:63;;32036:7;32012:63;;32026:8;32012:63;;;32057:8;32067:7;32012:63;;;;;;;:::i;:::-;;;;;;;;31327:756;;;;:::o;30497:680::-;30598:16;30606:7;30598;:16::i;:::-;30590:78;;;;;;;;;;;;:::i;:::-;;;;;;;;;30706:1;30687:21;;:7;:21;;;;30679:69;;;;;;;;;;;;:::i;:::-;;;;;;;;;30761:16;30780:12;:10;:12::i;:::-;30761:31;;30805:110;30826:8;30836:7;30853:1;30857:26;30875:7;30857:17;:26::i;:::-;30885:25;30903:6;30885:17;:25::i;:::-;30805:110;;;;;;;;;;;;:20;:110::i;:::-;30958:129;31004:6;30958:129;;;;;;;;;;;;;;;;;:9;:18;30968:7;30958:18;;;;;;;;;;;:27;30977:7;30958:27;;;;;;;;;;;;;;;;:31;;:129;;;;;:::i;:::-;30928:9;:18;30938:7;30928:18;;;;;;;;;;;:27;30947:7;30928:27;;;;;;;;;;;;;;;:159;;;;31149:1;31107:62;;31132:7;31107:62;;31122:8;31107:62;;;31153:7;31162:6;31107:62;;;;;;;:::i;:::-;;;;;;;;30497:680;;;;:::o;92:557::-;148:13;189:1;180:5;:10;176:53;;;207:10;;;;;;;;;;;;;;;;;;;;;176:53;239:12;254:5;239:20;;270:14;295:78;310:1;302:4;:9;295:78;;328:8;;;;;:::i;:::-;;;;359:2;351:10;;;;;:::i;:::-;;;295:78;;;383:19;415:6;405:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;383:39;;433:13;458:1;449:6;:10;;;;:::i;:::-;433:26;;477:5;470:12;;493:117;508:1;500:4;:9;493:117;;569:2;562:4;:9;;;;:::i;:::-;557:2;:14;;;;:::i;:::-;544:29;;526:6;533:7;;;;;:::i;:::-;;;526:15;;;;;;;;;;;;;;;;;;;:47;;;;;;;;;;;596:2;588:10;;;;;:::i;:::-;;;493:117;;;634:6;620:21;;;;;;92:557;;;;:::o;35415:319::-;35502:12;35544:4;35549:8;35527:31;;;;;;;;;:::i;:::-;;;;;;;;;;;;;35517:42;;;;;;35502:57;;35587:104;35660:4;35607:58;;;;;;;;:::i;:::-;;;;;;;;;;;;;35597:69;;;;;;35668:4;:6;;;35676:4;:6;;;35684:4;:6;;;35587:104;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;35578:113;;:5;;;;;;;;;;;:113;;;35570:156;;;;;;;;;;;;:::i;:::-;;;;;;;;;35415:319;;;:::o;28564:634::-;28676:16;28684:7;28676;:16::i;:::-;28675:17;28667:59;;;;;;;;;;;;:::i;:::-;;;;;;;;;28756:1;28745:7;:12;;28737:50;;;;;;;;;;;;:::i;:::-;;;;;;;;;28827:1;28812:4;28806:18;:22;28798:52;;;;;;;;;;;;:::i;:::-;;;;;;;;;28883:10;28863:8;:17;28872:7;28863:17;;;;;;;;;;;;:30;;;;;;;;;;;;;;;;;;28904:37;28921:7;28930:10;28904:12;:16;;:37;;;;;:::i;:::-;;28975:4;28952:11;:20;28964:7;28952:20;;;;;;;;;;;:27;;;;29023:7;28990:9;:18;29000:7;28990:18;;;;;;;;;;;:30;29009:10;28990:30;;;;;;;;;;;;;;;:40;;;;29041:27;29054:7;29063:4;29041:12;:27::i;:::-;29127:10;29086:70;;29121:3;29086:70;;29101:10;29086:70;;;29139:7;29148;29086:70;;;;;;;:::i;:::-;;;;;;;;29182:7;29172:18;29176:4;29172:18;;;;;;:::i;:::-;;;;;;;;28564:634;;;;:::o;33939:198::-;34005:16;34034:22;34073:1;34059:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;34034:41;;34097:7;34086:5;34092:1;34086:8;;;;;;;;;;;;;;;;;;;;;:18;;;;;34124:5;34117:12;;;33939:198;;;:::o;32342:772::-;32576:15;:2;:13;;;:15::i;:::-;32572:535;;;32629:2;32612:38;;;32651:8;32661:4;32667:7;32676:6;32684:4;32612:77;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;32608:488;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;32969:6;32962:14;;;;;;;;;;;:::i;:::-;;;;;;;;32608:488;;;33018:62;;;;;;;;;;:::i;:::-;;;;;;;;32608:488;32751:47;;;32739:59;;;:8;:59;;;;32735:158;;32823:50;;;;;;;;;;:::i;:::-;;;;;;;;32735:158;32690:218;32572:535;32342:772;;;;;;:::o;3939:151::-;4023:4;4047:35;4057:3;:10;;4077:3;4069:12;;4047:9;:35::i;:::-;4040:42;;3939:151;;;;:::o;14615:174::-;14675:4;14692:12;14746:7;14734:20;14726:28;;14780:1;14773:4;:8;14766:15;;;14615:174;;;:::o;3596:185::-;3685:4;3709:64;3714:3;:10;;3734:3;3726:12;;3764:5;3748:23;;3740:32;;3709:4;:64::i;:::-;3702:71;;3596:185;;;;;:::o;18482:111::-;18582:3;18560:10;:19;18571:7;18560:19;;;;;;;;;;;:25;;;;;;;;;;;;:::i;:::-;;18482:111;;:::o;2035:125::-;2106:4;2151:1;2130:3;:12;;:17;2143:3;2130:17;;;;;;;;;;;;:22;;2123:29;;2035:125;;;;:::o;874:470::-;950:4;967:16;986:3;:12;;:17;999:3;986:17;;;;;;;;;;;;967:36;;1032:1;1020:8;:13;1016:321;;;1087:3;:12;;1105:38;;;;;;;;1122:3;1105:38;;;;1135:5;1105:38;;;1087:57;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1179:3;:12;;:19;;;;1159:3;:12;;:17;1172:3;1159:17;;;;;;;;;;;:39;;;;1220:4;1213:11;;;;;1016:321;1293:5;1257:3;:12;;1281:1;1270:8;:12;;;;:::i;:::-;1257:26;;;;;;;;;;;;;;;;;;;;;;;;;;:33;;:41;;;;1320:5;1313:12;;;874:470;;;;;;:::o;-1:-1:-1:-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;:::o;24:655:1:-;120:5;145:81;161:64;218:6;161:64;:::i;:::-;145:81;:::i;:::-;136:90;;246:5;275:6;268:5;261:21;309:4;302:5;298:16;291:23;;335:6;385:3;377:4;369:6;365:17;360:3;356:27;353:36;350:2;;;414:1;411;404:12;350:2;450:1;435:238;460:6;457:1;454:13;435:238;;;528:3;557:37;590:3;578:10;557:37;:::i;:::-;552:3;545:50;624:4;619:3;615:14;608:21;;658:4;653:3;649:14;642:21;;495:178;482:1;479;475:9;470:14;;435:238;;;439:14;126:553;;;;;;;:::o;702:655::-;798:5;823:81;839:64;896:6;839:64;:::i;:::-;823:81;:::i;:::-;814:90;;924:5;953:6;946:5;939:21;987:4;980:5;976:16;969:23;;1013:6;1063:3;1055:4;1047:6;1043:17;1038:3;1034:27;1031:36;1028:2;;;1092:1;1089;1082:12;1028:2;1128:1;1113:238;1138:6;1135:1;1132:13;1113:238;;;1206:3;1235:37;1268:3;1256:10;1235:37;:::i;:::-;1230:3;1223:50;1302:4;1297:3;1293:14;1286:21;;1336:4;1331:3;1327:14;1320:21;;1173:178;1160:1;1157;1153:9;1148:14;;1113:238;;;1117:14;804:553;;;;;;;:::o;1363:343::-;1440:5;1465:65;1481:48;1522:6;1481:48;:::i;:::-;1465:65;:::i;:::-;1456:74;;1553:6;1546:5;1539:21;1591:4;1584:5;1580:16;1629:3;1620:6;1615:3;1611:16;1608:25;1605:2;;;1646:1;1643;1636:12;1605:2;1659:41;1693:6;1688:3;1683;1659:41;:::i;:::-;1446:260;;;;;;:::o;1712:345::-;1790:5;1815:66;1831:49;1873:6;1831:49;:::i;:::-;1815:66;:::i;:::-;1806:75;;1904:6;1897:5;1890:21;1942:4;1935:5;1931:16;1980:3;1971:6;1966:3;1962:16;1959:25;1956:2;;;1997:1;1994;1987:12;1956:2;2010:41;2044:6;2039:3;2034;2010:41;:::i;:::-;1796:261;;;;;;:::o;2063:139::-;2109:5;2147:6;2134:20;2125:29;;2163:33;2190:5;2163:33;:::i;:::-;2115:87;;;;:::o;2225:303::-;2296:5;2345:3;2338:4;2330:6;2326:17;2322:27;2312:2;;2363:1;2360;2353:12;2312:2;2403:6;2390:20;2428:94;2518:3;2510:6;2503:4;2495:6;2491:17;2428:94;:::i;:::-;2419:103;;2302:226;;;;;:::o;2551:303::-;2622:5;2671:3;2664:4;2656:6;2652:17;2648:27;2638:2;;2689:1;2686;2679:12;2638:2;2729:6;2716:20;2754:94;2844:3;2836:6;2829:4;2821:6;2817:17;2754:94;:::i;:::-;2745:103;;2628:226;;;;;:::o;2860:133::-;2903:5;2941:6;2928:20;2919:29;;2957:30;2981:5;2957:30;:::i;:::-;2909:84;;;;:::o;2999:139::-;3045:5;3083:6;3070:20;3061:29;;3099:33;3126:5;3099:33;:::i;:::-;3051:87;;;;:::o;3144:137::-;3189:5;3227:6;3214:20;3205:29;;3243:32;3269:5;3243:32;:::i;:::-;3195:86;;;;:::o;3287:141::-;3343:5;3374:6;3368:13;3359:22;;3390:32;3416:5;3390:32;:::i;:::-;3349:79;;;;:::o;3447:271::-;3502:5;3551:3;3544:4;3536:6;3532:17;3528:27;3518:2;;3569:1;3566;3559:12;3518:2;3609:6;3596:20;3634:78;3708:3;3700:6;3693:4;3685:6;3681:17;3634:78;:::i;:::-;3625:87;;3508:210;;;;;:::o;3738:273::-;3794:5;3843:3;3836:4;3828:6;3824:17;3820:27;3810:2;;3861:1;3858;3851:12;3810:2;3901:6;3888:20;3926:79;4001:3;3993:6;3986:4;3978:6;3974:17;3926:79;:::i;:::-;3917:88;;3800:211;;;;;:::o;4046:654::-;4117:5;4161:4;4149:9;4144:3;4140:19;4136:30;4133:2;;;4179:1;4176;4169:12;4133:2;4201:21;4217:4;4201:21;:::i;:::-;4192:30;;4278:1;4318:47;4361:3;4352:6;4341:9;4337:22;4318:47;:::i;:::-;4311:4;4304:5;4300:16;4293:73;4232:145;4433:2;4474:49;4519:3;4510:6;4499:9;4495:22;4474:49;:::i;:::-;4467:4;4460:5;4456:16;4449:75;4387:148;4591:2;4632:49;4677:3;4668:6;4657:9;4653:22;4632:49;:::i;:::-;4625:4;4618:5;4614:16;4607:75;4545:148;4123:577;;;;:::o;4706:139::-;4752:5;4790:6;4777:20;4768:29;;4806:33;4833:5;4806:33;:::i;:::-;4758:87;;;;:::o;4851:135::-;4895:5;4933:6;4920:20;4911:29;;4949:31;4974:5;4949:31;:::i;:::-;4901:85;;;;:::o;4992:262::-;5051:6;5100:2;5088:9;5079:7;5075:23;5071:32;5068:2;;;5116:1;5113;5106:12;5068:2;5159:1;5184:53;5229:7;5220:6;5209:9;5205:22;5184:53;:::i;:::-;5174:63;;5130:117;5058:196;;;;:::o;5260:407::-;5328:6;5336;5385:2;5373:9;5364:7;5360:23;5356:32;5353:2;;;5401:1;5398;5391:12;5353:2;5444:1;5469:53;5514:7;5505:6;5494:9;5490:22;5469:53;:::i;:::-;5459:63;;5415:117;5571:2;5597:53;5642:7;5633:6;5622:9;5618:22;5597:53;:::i;:::-;5587:63;;5542:118;5343:324;;;;;:::o;5673:1241::-;5827:6;5835;5843;5851;5859;5908:3;5896:9;5887:7;5883:23;5879:33;5876:2;;;5925:1;5922;5915:12;5876:2;5968:1;5993:53;6038:7;6029:6;6018:9;6014:22;5993:53;:::i;:::-;5983:63;;5939:117;6095:2;6121:53;6166:7;6157:6;6146:9;6142:22;6121:53;:::i;:::-;6111:63;;6066:118;6251:2;6240:9;6236:18;6223:32;6282:18;6274:6;6271:30;6268:2;;;6314:1;6311;6304:12;6268:2;6342:78;6412:7;6403:6;6392:9;6388:22;6342:78;:::i;:::-;6332:88;;6194:236;6497:2;6486:9;6482:18;6469:32;6528:18;6520:6;6517:30;6514:2;;;6560:1;6557;6550:12;6514:2;6588:78;6658:7;6649:6;6638:9;6634:22;6588:78;:::i;:::-;6578:88;;6440:236;6743:3;6732:9;6728:19;6715:33;6775:18;6767:6;6764:30;6761:2;;;6807:1;6804;6797:12;6761:2;6835:62;6889:7;6880:6;6869:9;6865:22;6835:62;:::i;:::-;6825:72;;6686:221;5866:1048;;;;;;;;:::o;6920:955::-;7024:6;7032;7040;7048;7056;7105:3;7093:9;7084:7;7080:23;7076:33;7073:2;;;7122:1;7119;7112:12;7073:2;7165:1;7190:53;7235:7;7226:6;7215:9;7211:22;7190:53;:::i;:::-;7180:63;;7136:117;7292:2;7318:53;7363:7;7354:6;7343:9;7339:22;7318:53;:::i;:::-;7308:63;;7263:118;7420:2;7446:53;7491:7;7482:6;7471:9;7467:22;7446:53;:::i;:::-;7436:63;;7391:118;7548:2;7574:53;7619:7;7610:6;7599:9;7595:22;7574:53;:::i;:::-;7564:63;;7519:118;7704:3;7693:9;7689:19;7676:33;7736:18;7728:6;7725:30;7722:2;;;7768:1;7765;7758:12;7722:2;7796:62;7850:7;7841:6;7830:9;7826:22;7796:62;:::i;:::-;7786:72;;7647:221;7063:812;;;;;;;;:::o;7881:838::-;8008:6;8016;8024;8073:2;8061:9;8052:7;8048:23;8044:32;8041:2;;;8089:1;8086;8079:12;8041:2;8132:1;8157:53;8202:7;8193:6;8182:9;8178:22;8157:53;:::i;:::-;8147:63;;8103:117;8287:2;8276:9;8272:18;8259:32;8318:18;8310:6;8307:30;8304:2;;;8350:1;8347;8340:12;8304:2;8378:78;8448:7;8439:6;8428:9;8424:22;8378:78;:::i;:::-;8368:88;;8230:236;8533:2;8522:9;8518:18;8505:32;8564:18;8556:6;8553:30;8550:2;;;8596:1;8593;8586:12;8550:2;8624:78;8694:7;8685:6;8674:9;8670:22;8624:78;:::i;:::-;8614:88;;8476:236;8031:688;;;;;:::o;8725:401::-;8790:6;8798;8847:2;8835:9;8826:7;8822:23;8818:32;8815:2;;;8863:1;8860;8853:12;8815:2;8906:1;8931:53;8976:7;8967:6;8956:9;8952:22;8931:53;:::i;:::-;8921:63;;8877:117;9033:2;9059:50;9101:7;9092:6;9081:9;9077:22;9059:50;:::i;:::-;9049:60;;9004:115;8805:321;;;;;:::o;9132:407::-;9200:6;9208;9257:2;9245:9;9236:7;9232:23;9228:32;9225:2;;;9273:1;9270;9263:12;9225:2;9316:1;9341:53;9386:7;9377:6;9366:9;9362:22;9341:53;:::i;:::-;9331:63;;9287:117;9443:2;9469:53;9514:7;9505:6;9494:9;9490:22;9469:53;:::i;:::-;9459:63;;9414:118;9215:324;;;;;:::o;9545:693::-;9663:6;9671;9720:2;9708:9;9699:7;9695:23;9691:32;9688:2;;;9736:1;9733;9726:12;9688:2;9807:1;9796:9;9792:17;9779:31;9837:18;9829:6;9826:30;9823:2;;;9869:1;9866;9859:12;9823:2;9897:78;9967:7;9958:6;9947:9;9943:22;9897:78;:::i;:::-;9887:88;;9750:235;10052:2;10041:9;10037:18;10024:32;10083:18;10075:6;10072:30;10069:2;;;10115:1;10112;10105:12;10069:2;10143:78;10213:7;10204:6;10193:9;10189:22;10143:78;:::i;:::-;10133:88;;9995:236;9678:560;;;;;:::o;10244:260::-;10302:6;10351:2;10339:9;10330:7;10326:23;10322:32;10319:2;;;10367:1;10364;10357:12;10319:2;10410:1;10435:52;10479:7;10470:6;10459:9;10455:22;10435:52;:::i;:::-;10425:62;;10381:116;10309:195;;;;:::o;10510:282::-;10579:6;10628:2;10616:9;10607:7;10603:23;10599:32;10596:2;;;10644:1;10641;10634:12;10596:2;10687:1;10712:63;10767:7;10758:6;10747:9;10743:22;10712:63;:::i;:::-;10702:73;;10658:127;10586:206;;;;:::o;10798:375::-;10867:6;10916:2;10904:9;10895:7;10891:23;10887:32;10884:2;;;10932:1;10929;10922:12;10884:2;11003:1;10992:9;10988:17;10975:31;11033:18;11025:6;11022:30;11019:2;;;11065:1;11062;11055:12;11019:2;11093:63;11148:7;11139:6;11128:9;11124:22;11093:63;:::i;:::-;11083:73;;10946:220;10874:299;;;;:::o;11179:855::-;11297:6;11305;11313;11321;11370:3;11358:9;11349:7;11345:23;11341:33;11338:2;;;11387:1;11384;11377:12;11338:2;11458:1;11447:9;11443:17;11430:31;11488:18;11480:6;11477:30;11474:2;;;11520:1;11517;11510:12;11474:2;11548:63;11603:7;11594:6;11583:9;11579:22;11548:63;:::i;:::-;11538:73;;11401:220;11660:2;11686:53;11731:7;11722:6;11711:9;11707:22;11686:53;:::i;:::-;11676:63;;11631:118;11788:2;11814:53;11859:7;11850:6;11839:9;11835:22;11814:53;:::i;:::-;11804:63;;11759:118;11916:2;11942:75;12009:7;12000:6;11989:9;11985:22;11942:75;:::i;:::-;11932:85;;11887:140;11328:706;;;;;;;:::o;12040:262::-;12099:6;12148:2;12136:9;12127:7;12123:23;12119:32;12116:2;;;12164:1;12161;12154:12;12116:2;12207:1;12232:53;12277:7;12268:6;12257:9;12253:22;12232:53;:::i;:::-;12222:63;;12178:117;12106:196;;;;:::o;12308:407::-;12376:6;12384;12433:2;12421:9;12412:7;12408:23;12404:32;12401:2;;;12449:1;12446;12439:12;12401:2;12492:1;12517:53;12562:7;12553:6;12542:9;12538:22;12517:53;:::i;:::-;12507:63;;12463:117;12619:2;12645:53;12690:7;12681:6;12670:9;12666:22;12645:53;:::i;:::-;12635:63;;12590:118;12391:324;;;;;:::o;12721:179::-;12790:10;12811:46;12853:3;12845:6;12811:46;:::i;:::-;12889:4;12884:3;12880:14;12866:28;;12801:99;;;;:::o;12906:118::-;12993:24;13011:5;12993:24;:::i;:::-;12988:3;12981:37;12971:53;;:::o;13060:732::-;13179:3;13208:54;13256:5;13208:54;:::i;:::-;13278:86;13357:6;13352:3;13278:86;:::i;:::-;13271:93;;13388:56;13438:5;13388:56;:::i;:::-;13467:7;13498:1;13483:284;13508:6;13505:1;13502:13;13483:284;;;13584:6;13578:13;13611:63;13670:3;13655:13;13611:63;:::i;:::-;13604:70;;13697:60;13750:6;13697:60;:::i;:::-;13687:70;;13543:224;13530:1;13527;13523:9;13518:14;;13483:284;;;13487:14;13783:3;13776:10;;13184:608;;;;;;;:::o;13798:109::-;13879:21;13894:5;13879:21;:::i;:::-;13874:3;13867:34;13857:50;;:::o;13913:118::-;14000:24;14018:5;14000:24;:::i;:::-;13995:3;13988:37;13978:53;;:::o;14037:157::-;14142:45;14162:24;14180:5;14162:24;:::i;:::-;14142:45;:::i;:::-;14137:3;14130:58;14120:74;;:::o;14200:360::-;14286:3;14314:38;14346:5;14314:38;:::i;:::-;14368:70;14431:6;14426:3;14368:70;:::i;:::-;14361:77;;14447:52;14492:6;14487:3;14480:4;14473:5;14469:16;14447:52;:::i;:::-;14524:29;14546:6;14524:29;:::i;:::-;14519:3;14515:39;14508:46;;14290:270;;;;;:::o;14566:206::-;14689:76;14709:55;14758:5;14709:55;:::i;:::-;14689:76;:::i;:::-;14684:3;14677:89;14667:105;;:::o;14778:364::-;14866:3;14894:39;14927:5;14894:39;:::i;:::-;14949:71;15013:6;15008:3;14949:71;:::i;:::-;14942:78;;15029:52;15074:6;15069:3;15062:4;15055:5;15051:16;15029:52;:::i;:::-;15106:29;15128:6;15106:29;:::i;:::-;15101:3;15097:39;15090:46;;14870:272;;;;;:::o;15148:377::-;15254:3;15282:39;15315:5;15282:39;:::i;:::-;15337:89;15419:6;15414:3;15337:89;:::i;:::-;15330:96;;15435:52;15480:6;15475:3;15468:4;15461:5;15457:16;15435:52;:::i;:::-;15512:6;15507:3;15503:16;15496:23;;15258:267;;;;;:::o;15531:366::-;15673:3;15694:67;15758:2;15753:3;15694:67;:::i;:::-;15687:74;;15770:93;15859:3;15770:93;:::i;:::-;15888:2;15883:3;15879:12;15872:19;;15677:220;;;:::o;15903:366::-;16045:3;16066:67;16130:2;16125:3;16066:67;:::i;:::-;16059:74;;16142:93;16231:3;16142:93;:::i;:::-;16260:2;16255:3;16251:12;16244:19;;16049:220;;;:::o;16275:402::-;16435:3;16456:85;16538:2;16533:3;16456:85;:::i;:::-;16449:92;;16550:93;16639:3;16550:93;:::i;:::-;16668:2;16663:3;16659:12;16652:19;;16439:238;;;:::o;16683:366::-;16825:3;16846:67;16910:2;16905:3;16846:67;:::i;:::-;16839:74;;16922:93;17011:3;16922:93;:::i;:::-;17040:2;17035:3;17031:12;17024:19;;16829:220;;;:::o;17055:366::-;17197:3;17218:67;17282:2;17277:3;17218:67;:::i;:::-;17211:74;;17294:93;17383:3;17294:93;:::i;:::-;17412:2;17407:3;17403:12;17396:19;;17201:220;;;:::o;17427:366::-;17569:3;17590:67;17654:2;17649:3;17590:67;:::i;:::-;17583:74;;17666:93;17755:3;17666:93;:::i;:::-;17784:2;17779:3;17775:12;17768:19;;17573:220;;;:::o;17799:366::-;17941:3;17962:67;18026:2;18021:3;17962:67;:::i;:::-;17955:74;;18038:93;18127:3;18038:93;:::i;:::-;18156:2;18151:3;18147:12;18140:19;;17945:220;;;:::o;18171:366::-;18313:3;18334:67;18398:2;18393:3;18334:67;:::i;:::-;18327:74;;18410:93;18499:3;18410:93;:::i;:::-;18528:2;18523:3;18519:12;18512:19;;18317:220;;;:::o;18543:366::-;18685:3;18706:67;18770:2;18765:3;18706:67;:::i;:::-;18699:74;;18782:93;18871:3;18782:93;:::i;:::-;18900:2;18895:3;18891:12;18884:19;;18689:220;;;:::o;18915:366::-;19057:3;19078:67;19142:2;19137:3;19078:67;:::i;:::-;19071:74;;19154:93;19243:3;19154:93;:::i;:::-;19272:2;19267:3;19263:12;19256:19;;19061:220;;;:::o;19287:366::-;19429:3;19450:67;19514:2;19509:3;19450:67;:::i;:::-;19443:74;;19526:93;19615:3;19526:93;:::i;:::-;19644:2;19639:3;19635:12;19628:19;;19433:220;;;:::o;19659:366::-;19801:3;19822:67;19886:2;19881:3;19822:67;:::i;:::-;19815:74;;19898:93;19987:3;19898:93;:::i;:::-;20016:2;20011:3;20007:12;20000:19;;19805:220;;;:::o;20031:366::-;20173:3;20194:67;20258:2;20253:3;20194:67;:::i;:::-;20187:74;;20270:93;20359:3;20270:93;:::i;:::-;20388:2;20383:3;20379:12;20372:19;;20177:220;;;:::o;20403:366::-;20545:3;20566:67;20630:2;20625:3;20566:67;:::i;:::-;20559:74;;20642:93;20731:3;20642:93;:::i;:::-;20760:2;20755:3;20751:12;20744:19;;20549:220;;;:::o;20775:366::-;20917:3;20938:67;21002:2;20997:3;20938:67;:::i;:::-;20931:74;;21014:93;21103:3;21014:93;:::i;:::-;21132:2;21127:3;21123:12;21116:19;;20921:220;;;:::o;21147:366::-;21289:3;21310:67;21374:2;21369:3;21310:67;:::i;:::-;21303:74;;21386:93;21475:3;21386:93;:::i;:::-;21504:2;21499:3;21495:12;21488:19;;21293:220;;;:::o;21519:366::-;21661:3;21682:67;21746:2;21741:3;21682:67;:::i;:::-;21675:74;;21758:93;21847:3;21758:93;:::i;:::-;21876:2;21871:3;21867:12;21860:19;;21665:220;;;:::o;21891:366::-;22033:3;22054:67;22118:2;22113:3;22054:67;:::i;:::-;22047:74;;22130:93;22219:3;22130:93;:::i;:::-;22248:2;22243:3;22239:12;22232:19;;22037:220;;;:::o;22263:366::-;22405:3;22426:67;22490:2;22485:3;22426:67;:::i;:::-;22419:74;;22502:93;22591:3;22502:93;:::i;:::-;22620:2;22615:3;22611:12;22604:19;;22409:220;;;:::o;22635:366::-;22777:3;22798:67;22862:2;22857:3;22798:67;:::i;:::-;22791:74;;22874:93;22963:3;22874:93;:::i;:::-;22992:2;22987:3;22983:12;22976:19;;22781:220;;;:::o;23007:366::-;23149:3;23170:67;23234:2;23229:3;23170:67;:::i;:::-;23163:74;;23246:93;23335:3;23246:93;:::i;:::-;23364:2;23359:3;23355:12;23348:19;;23153:220;;;:::o;23379:366::-;23521:3;23542:67;23606:2;23601:3;23542:67;:::i;:::-;23535:74;;23618:93;23707:3;23618:93;:::i;:::-;23736:2;23731:3;23727:12;23720:19;;23525:220;;;:::o;23751:108::-;23828:24;23846:5;23828:24;:::i;:::-;23823:3;23816:37;23806:53;;:::o;23865:118::-;23952:24;23970:5;23952:24;:::i;:::-;23947:3;23940:37;23930:53;;:::o;23989:112::-;24072:22;24088:5;24072:22;:::i;:::-;24067:3;24060:35;24050:51;;:::o;24107:452::-;24285:3;24300:93;24389:3;24380:6;24300:93;:::i;:::-;24418:2;24413:3;24409:12;24402:19;;24438:95;24529:3;24520:6;24438:95;:::i;:::-;24431:102;;24550:3;24543:10;;24289:270;;;;;:::o;24565:435::-;24745:3;24767:95;24858:3;24849:6;24767:95;:::i;:::-;24760:102;;24879:95;24970:3;24961:6;24879:95;:::i;:::-;24872:102;;24991:3;24984:10;;24749:251;;;;;:::o;25006:522::-;25219:3;25241:148;25385:3;25241:148;:::i;:::-;25234:155;;25399:75;25470:3;25461:6;25399:75;:::i;:::-;25499:2;25494:3;25490:12;25483:19;;25519:3;25512:10;;25223:305;;;;:::o;25534:222::-;25627:4;25665:2;25654:9;25650:18;25642:26;;25678:71;25746:1;25735:9;25731:17;25722:6;25678:71;:::i;:::-;25632:124;;;;:::o;25762:1053::-;26085:4;26123:3;26112:9;26108:19;26100:27;;26137:71;26205:1;26194:9;26190:17;26181:6;26137:71;:::i;:::-;26218:72;26286:2;26275:9;26271:18;26262:6;26218:72;:::i;:::-;26337:9;26331:4;26327:20;26322:2;26311:9;26307:18;26300:48;26365:108;26468:4;26459:6;26365:108;:::i;:::-;26357:116;;26520:9;26514:4;26510:20;26505:2;26494:9;26490:18;26483:48;26548:108;26651:4;26642:6;26548:108;:::i;:::-;26540:116;;26704:9;26698:4;26694:20;26688:3;26677:9;26673:19;26666:49;26732:76;26803:4;26794:6;26732:76;:::i;:::-;26724:84;;26090:725;;;;;;;;:::o;26821:751::-;27044:4;27082:3;27071:9;27067:19;27059:27;;27096:71;27164:1;27153:9;27149:17;27140:6;27096:71;:::i;:::-;27177:72;27245:2;27234:9;27230:18;27221:6;27177:72;:::i;:::-;27259;27327:2;27316:9;27312:18;27303:6;27259:72;:::i;:::-;27341;27409:2;27398:9;27394:18;27385:6;27341:72;:::i;:::-;27461:9;27455:4;27451:20;27445:3;27434:9;27430:19;27423:49;27489:76;27560:4;27551:6;27489:76;:::i;:::-;27481:84;;27049:523;;;;;;;;:::o;27578:373::-;27721:4;27759:2;27748:9;27744:18;27736:26;;27808:9;27802:4;27798:20;27794:1;27783:9;27779:17;27772:47;27836:108;27939:4;27930:6;27836:108;:::i;:::-;27828:116;;27726:225;;;;:::o;27957:634::-;28178:4;28216:2;28205:9;28201:18;28193:26;;28265:9;28259:4;28255:20;28251:1;28240:9;28236:17;28229:47;28293:108;28396:4;28387:6;28293:108;:::i;:::-;28285:116;;28448:9;28442:4;28438:20;28433:2;28422:9;28418:18;28411:48;28476:108;28579:4;28570:6;28476:108;:::i;:::-;28468:116;;28183:408;;;;;:::o;28597:210::-;28684:4;28722:2;28711:9;28707:18;28699:26;;28735:65;28797:1;28786:9;28782:17;28773:6;28735:65;:::i;:::-;28689:118;;;;:::o;28813:545::-;28986:4;29024:3;29013:9;29009:19;29001:27;;29038:71;29106:1;29095:9;29091:17;29082:6;29038:71;:::i;:::-;29119:68;29183:2;29172:9;29168:18;29159:6;29119:68;:::i;:::-;29197:72;29265:2;29254:9;29250:18;29241:6;29197:72;:::i;:::-;29279;29347:2;29336:9;29332:18;29323:6;29279:72;:::i;:::-;28991:367;;;;;;;:::o;29364:313::-;29477:4;29515:2;29504:9;29500:18;29492:26;;29564:9;29558:4;29554:20;29550:1;29539:9;29535:17;29528:47;29592:78;29665:4;29656:6;29592:78;:::i;:::-;29584:86;;29482:195;;;;:::o;29683:419::-;29849:4;29887:2;29876:9;29872:18;29864:26;;29936:9;29930:4;29926:20;29922:1;29911:9;29907:17;29900:47;29964:131;30090:4;29964:131;:::i;:::-;29956:139;;29854:248;;;:::o;30108:419::-;30274:4;30312:2;30301:9;30297:18;30289:26;;30361:9;30355:4;30351:20;30347:1;30336:9;30332:17;30325:47;30389:131;30515:4;30389:131;:::i;:::-;30381:139;;30279:248;;;:::o;30533:419::-;30699:4;30737:2;30726:9;30722:18;30714:26;;30786:9;30780:4;30776:20;30772:1;30761:9;30757:17;30750:47;30814:131;30940:4;30814:131;:::i;:::-;30806:139;;30704:248;;;:::o;30958:419::-;31124:4;31162:2;31151:9;31147:18;31139:26;;31211:9;31205:4;31201:20;31197:1;31186:9;31182:17;31175:47;31239:131;31365:4;31239:131;:::i;:::-;31231:139;;31129:248;;;:::o;31383:419::-;31549:4;31587:2;31576:9;31572:18;31564:26;;31636:9;31630:4;31626:20;31622:1;31611:9;31607:17;31600:47;31664:131;31790:4;31664:131;:::i;:::-;31656:139;;31554:248;;;:::o;31808:419::-;31974:4;32012:2;32001:9;31997:18;31989:26;;32061:9;32055:4;32051:20;32047:1;32036:9;32032:17;32025:47;32089:131;32215:4;32089:131;:::i;:::-;32081:139;;31979:248;;;:::o;32233:419::-;32399:4;32437:2;32426:9;32422:18;32414:26;;32486:9;32480:4;32476:20;32472:1;32461:9;32457:17;32450:47;32514:131;32640:4;32514:131;:::i;:::-;32506:139;;32404:248;;;:::o;32658:419::-;32824:4;32862:2;32851:9;32847:18;32839:26;;32911:9;32905:4;32901:20;32897:1;32886:9;32882:17;32875:47;32939:131;33065:4;32939:131;:::i;:::-;32931:139;;32829:248;;;:::o;33083:419::-;33249:4;33287:2;33276:9;33272:18;33264:26;;33336:9;33330:4;33326:20;33322:1;33311:9;33307:17;33300:47;33364:131;33490:4;33364:131;:::i;:::-;33356:139;;33254:248;;;:::o;33508:419::-;33674:4;33712:2;33701:9;33697:18;33689:26;;33761:9;33755:4;33751:20;33747:1;33736:9;33732:17;33725:47;33789:131;33915:4;33789:131;:::i;:::-;33781:139;;33679:248;;;:::o;33933:419::-;34099:4;34137:2;34126:9;34122:18;34114:26;;34186:9;34180:4;34176:20;34172:1;34161:9;34157:17;34150:47;34214:131;34340:4;34214:131;:::i;:::-;34206:139;;34104:248;;;:::o;34358:419::-;34524:4;34562:2;34551:9;34547:18;34539:26;;34611:9;34605:4;34601:20;34597:1;34586:9;34582:17;34575:47;34639:131;34765:4;34639:131;:::i;:::-;34631:139;;34529:248;;;:::o;34783:419::-;34949:4;34987:2;34976:9;34972:18;34964:26;;35036:9;35030:4;35026:20;35022:1;35011:9;35007:17;35000:47;35064:131;35190:4;35064:131;:::i;:::-;35056:139;;34954:248;;;:::o;35208:419::-;35374:4;35412:2;35401:9;35397:18;35389:26;;35461:9;35455:4;35451:20;35447:1;35436:9;35432:17;35425:47;35489:131;35615:4;35489:131;:::i;:::-;35481:139;;35379:248;;;:::o;35633:419::-;35799:4;35837:2;35826:9;35822:18;35814:26;;35886:9;35880:4;35876:20;35872:1;35861:9;35857:17;35850:47;35914:131;36040:4;35914:131;:::i;:::-;35906:139;;35804:248;;;:::o;36058:419::-;36224:4;36262:2;36251:9;36247:18;36239:26;;36311:9;36305:4;36301:20;36297:1;36286:9;36282:17;36275:47;36339:131;36465:4;36339:131;:::i;:::-;36331:139;;36229:248;;;:::o;36483:419::-;36649:4;36687:2;36676:9;36672:18;36664:26;;36736:9;36730:4;36726:20;36722:1;36711:9;36707:17;36700:47;36764:131;36890:4;36764:131;:::i;:::-;36756:139;;36654:248;;;:::o;36908:419::-;37074:4;37112:2;37101:9;37097:18;37089:26;;37161:9;37155:4;37151:20;37147:1;37136:9;37132:17;37125:47;37189:131;37315:4;37189:131;:::i;:::-;37181:139;;37079:248;;;:::o;37333:419::-;37499:4;37537:2;37526:9;37522:18;37514:26;;37586:9;37580:4;37576:20;37572:1;37561:9;37557:17;37550:47;37614:131;37740:4;37614:131;:::i;:::-;37606:139;;37504:248;;;:::o;37758:419::-;37924:4;37962:2;37951:9;37947:18;37939:26;;38011:9;38005:4;38001:20;37997:1;37986:9;37982:17;37975:47;38039:131;38165:4;38039:131;:::i;:::-;38031:139;;37929:248;;;:::o;38183:419::-;38349:4;38387:2;38376:9;38372:18;38364:26;;38436:9;38430:4;38426:20;38422:1;38411:9;38407:17;38400:47;38464:131;38590:4;38464:131;:::i;:::-;38456:139;;38354:248;;;:::o;38608:222::-;38701:4;38739:2;38728:9;38724:18;38716:26;;38752:71;38820:1;38809:9;38805:17;38796:6;38752:71;:::i;:::-;38706:124;;;;:::o;38836:332::-;38957:4;38995:2;38984:9;38980:18;38972:26;;39008:71;39076:1;39065:9;39061:17;39052:6;39008:71;:::i;:::-;39089:72;39157:2;39146:9;39142:18;39133:6;39089:72;:::i;:::-;38962:206;;;;;:::o;39174:129::-;39208:6;39235:20;;:::i;:::-;39225:30;;39264:33;39292:4;39284:6;39264:33;:::i;:::-;39215:88;;;:::o;39309:75::-;39342:6;39375:2;39369:9;39359:19;;39349:35;:::o;39390:311::-;39467:4;39557:18;39549:6;39546:30;39543:2;;;39579:18;;:::i;:::-;39543:2;39629:4;39621:6;39617:17;39609:25;;39689:4;39683;39679:15;39671:23;;39472:229;;;:::o;39707:311::-;39784:4;39874:18;39866:6;39863:30;39860:2;;;39896:18;;:::i;:::-;39860:2;39946:4;39938:6;39934:17;39926:25;;40006:4;40000;39996:15;39988:23;;39789:229;;;:::o;40024:307::-;40085:4;40175:18;40167:6;40164:30;40161:2;;;40197:18;;:::i;:::-;40161:2;40235:29;40257:6;40235:29;:::i;:::-;40227:37;;40319:4;40313;40309:15;40301:23;;40090:241;;;:::o;40337:308::-;40399:4;40489:18;40481:6;40478:30;40475:2;;;40511:18;;:::i;:::-;40475:2;40549:29;40571:6;40549:29;:::i;:::-;40541:37;;40633:4;40627;40623:15;40615:23;;40404:241;;;:::o;40651:132::-;40718:4;40741:3;40733:11;;40771:4;40766:3;40762:14;40754:22;;40723:60;;;:::o;40789:114::-;40856:6;40890:5;40884:12;40874:22;;40863:40;;;:::o;40909:98::-;40960:6;40994:5;40988:12;40978:22;;40967:40;;;:::o;41013:99::-;41065:6;41099:5;41093:12;41083:22;;41072:40;;;:::o;41118:113::-;41188:4;41220;41215:3;41211:14;41203:22;;41193:38;;;:::o;41237:184::-;41336:11;41370:6;41365:3;41358:19;41410:4;41405:3;41401:14;41386:29;;41348:73;;;;:::o;41427:168::-;41510:11;41544:6;41539:3;41532:19;41584:4;41579:3;41575:14;41560:29;;41522:73;;;;:::o;41601:169::-;41685:11;41719:6;41714:3;41707:19;41759:4;41754:3;41750:14;41735:29;;41697:73;;;;:::o;41776:148::-;41878:11;41915:3;41900:18;;41890:34;;;;:::o;41930:305::-;41970:3;41989:20;42007:1;41989:20;:::i;:::-;41984:25;;42023:20;42041:1;42023:20;:::i;:::-;42018:25;;42177:1;42109:66;42105:74;42102:1;42099:81;42096:2;;;42183:18;;:::i;:::-;42096:2;42227:1;42224;42220:9;42213:16;;41974:261;;;;:::o;42241:185::-;42281:1;42298:20;42316:1;42298:20;:::i;:::-;42293:25;;42332:20;42350:1;42332:20;:::i;:::-;42327:25;;42371:1;42361:2;;42376:18;;:::i;:::-;42361:2;42418:1;42415;42411:9;42406:14;;42283:143;;;;:::o;42432:191::-;42472:4;42492:20;42510:1;42492:20;:::i;:::-;42487:25;;42526:20;42544:1;42526:20;:::i;:::-;42521:25;;42565:1;42562;42559:8;42556:2;;;42570:18;;:::i;:::-;42556:2;42615:1;42612;42608:9;42600:17;;42477:146;;;;:::o;42629:96::-;42666:7;42695:24;42713:5;42695:24;:::i;:::-;42684:35;;42674:51;;;:::o;42731:90::-;42765:7;42808:5;42801:13;42794:21;42783:32;;42773:48;;;:::o;42827:77::-;42864:7;42893:5;42882:16;;42872:32;;;:::o;42910:149::-;42946:7;42986:66;42979:5;42975:78;42964:89;;42954:105;;;:::o;43065:126::-;43102:7;43142:42;43135:5;43131:54;43120:65;;43110:81;;;:::o;43197:77::-;43234:7;43263:5;43252:16;;43242:32;;;:::o;43280:86::-;43315:7;43355:4;43348:5;43344:16;43333:27;;43323:43;;;:::o;43372:162::-;43440:9;43473:55;43522:5;43473:55;:::i;:::-;43460:68;;43450:84;;;:::o;43540:131::-;43608:9;43641:24;43659:5;43641:24;:::i;:::-;43628:37;;43618:53;;;:::o;43677:154::-;43761:6;43756:3;43751;43738:30;43823:1;43814:6;43809:3;43805:16;43798:27;43728:103;;;:::o;43837:307::-;43905:1;43915:113;43929:6;43926:1;43923:13;43915:113;;;44014:1;44009:3;44005:11;43999:18;43995:1;43990:3;43986:11;43979:39;43951:2;43948:1;43944:10;43939:15;;43915:113;;;44046:6;44043:1;44040:13;44037:2;;;44126:1;44117:6;44112:3;44108:16;44101:27;44037:2;43886:258;;;;:::o;44150:171::-;44189:3;44212:24;44230:5;44212:24;:::i;:::-;44203:33;;44258:4;44251:5;44248:15;44245:2;;;44266:18;;:::i;:::-;44245:2;44313:1;44306:5;44302:13;44295:20;;44193:128;;;:::o;44327:320::-;44371:6;44408:1;44402:4;44398:12;44388:22;;44455:1;44449:4;44445:12;44476:18;44466:2;;44532:4;44524:6;44520:17;44510:27;;44466:2;44594;44586:6;44583:14;44563:18;44560:38;44557:2;;;44613:18;;:::i;:::-;44557:2;44378:269;;;;:::o;44653:281::-;44736:27;44758:4;44736:27;:::i;:::-;44728:6;44724:40;44866:6;44854:10;44851:22;44830:18;44818:10;44815:34;44812:62;44809:2;;;44877:18;;:::i;:::-;44809:2;44917:10;44913:2;44906:22;44696:238;;;:::o;44940:233::-;44979:3;45002:24;45020:5;45002:24;:::i;:::-;44993:33;;45048:66;45041:5;45038:77;45035:2;;;45118:18;;:::i;:::-;45035:2;45165:1;45158:5;45154:13;45147:20;;44983:190;;;:::o;45179:100::-;45218:7;45247:26;45267:5;45247:26;:::i;:::-;45236:37;;45226:53;;;:::o;45285:79::-;45324:7;45353:5;45342:16;;45332:32;;;:::o;45370:94::-;45409:7;45438:20;45452:5;45438:20;:::i;:::-;45427:31;;45417:47;;;:::o;45470:176::-;45502:1;45519:20;45537:1;45519:20;:::i;:::-;45514:25;;45553:20;45571:1;45553:20;:::i;:::-;45548:25;;45592:1;45582:2;;45597:18;;:::i;:::-;45582:2;45638:1;45635;45631:9;45626:14;;45504:142;;;;:::o;45652:180::-;45700:77;45697:1;45690:88;45797:4;45794:1;45787:15;45821:4;45818:1;45811:15;45838:180;45886:77;45883:1;45876:88;45983:4;45980:1;45973:15;46007:4;46004:1;45997:15;46024:180;46072:77;46069:1;46062:88;46169:4;46166:1;46159:15;46193:4;46190:1;46183:15;46210:180;46258:77;46255:1;46248:88;46355:4;46352:1;46345:15;46379:4;46376:1;46369:15;46396:183;46431:3;46469:1;46451:16;46448:23;46445:2;;;46507:1;46504;46501;46486:23;46529:34;46560:1;46554:8;46529:34;:::i;:::-;46522:41;;46445:2;46435:144;:::o;46585:102::-;46626:6;46677:2;46673:7;46668:2;46661:5;46657:14;46653:28;46643:38;;46633:54;;;:::o;46693:94::-;46726:8;46774:5;46770:2;46766:14;46745:35;;46735:52;;;:::o;46793:106::-;46837:8;46886:5;46881:3;46877:15;46856:36;;46846:53;;;:::o;46905:239::-;47045:34;47041:1;47033:6;47029:14;47022:58;47114:22;47109:2;47101:6;47097:15;47090:47;47011:133;:::o;47150:227::-;47290:34;47286:1;47278:6;47274:14;47267:58;47359:10;47354:2;47346:6;47342:15;47335:35;47256:121;:::o;47383:214::-;47523:66;47519:1;47511:6;47507:14;47500:90;47489:108;:::o;47603:230::-;47743:34;47739:1;47731:6;47727:14;47720:58;47812:13;47807:2;47799:6;47795:15;47788:38;47709:124;:::o;47839:236::-;47979:34;47975:1;47967:6;47963:14;47956:58;48048:19;48043:2;48035:6;48031:15;48024:44;47945:130;:::o;48081:225::-;48221:34;48217:1;48209:6;48205:14;48198:58;48290:8;48285:2;48277:6;48273:15;48266:33;48187:119;:::o;48312:177::-;48452:29;48448:1;48440:6;48436:14;48429:53;48418:71;:::o;48495:228::-;48635:34;48631:1;48623:6;48619:14;48612:58;48704:11;48699:2;48691:6;48687:15;48680:36;48601:122;:::o;48729:236::-;48869:34;48865:1;48857:6;48853:14;48846:58;48938:19;48933:2;48925:6;48921:15;48914:44;48835:130;:::o;48971:224::-;49111:34;49107:1;49099:6;49095:14;49088:58;49180:7;49175:2;49167:6;49163:15;49156:32;49077:118;:::o;49201:237::-;49341:34;49337:1;49329:6;49325:14;49318:58;49410:20;49405:2;49397:6;49393:15;49386:45;49307:131;:::o;49444:180::-;49584:32;49580:1;49572:6;49568:14;49561:56;49550:74;:::o;49630:239::-;49770:34;49766:1;49758:6;49754:14;49747:58;49839:22;49834:2;49826:6;49822:15;49815:47;49736:133;:::o;49875:222::-;50015:34;50011:1;50003:6;49999:14;49992:58;50084:5;50079:2;50071:6;50067:15;50060:30;49981:116;:::o;50103:182::-;50243:34;50239:1;50231:6;50227:14;50220:58;50209:76;:::o;50291:235::-;50431:34;50427:1;50419:6;50415:14;50408:58;50500:18;50495:2;50487:6;50483:15;50476:43;50397:129;:::o;50532:175::-;50672:27;50668:1;50660:6;50656:14;50649:51;50638:69;:::o;50713:228::-;50853:34;50849:1;50841:6;50837:14;50830:58;50922:11;50917:2;50909:6;50905:15;50898:36;50819:122;:::o;50947:228::-;51087:34;51083:1;51075:6;51071:14;51064:58;51156:11;51151:2;51143:6;51139:15;51132:36;51053:122;:::o;51181:227::-;51321:34;51317:1;51309:6;51305:14;51298:58;51390:10;51385:2;51377:6;51373:15;51366:35;51287:121;:::o;51414:179::-;51554:31;51550:1;51542:6;51538:14;51531:55;51520:73;:::o;51599:167::-;51739:19;51735:1;51727:6;51723:14;51716:43;51705:61;:::o;51772:711::-;51811:3;51849:4;51831:16;51828:26;51825:2;;;51857:5;;51825:2;51886:20;;:::i;:::-;51961:1;51943:16;51939:24;51936:1;51930:4;51915:49;51994:4;51988:11;52093:16;52086:4;52078:6;52074:17;52071:39;52038:18;52030:6;52027:30;52011:113;52008:2;;;52139:5;;;;52008:2;52185:6;52179:4;52175:17;52221:3;52215:10;52248:18;52240:6;52237:30;52234:2;;;52270:5;;;;;;52234:2;52318:6;52311:4;52306:3;52302:14;52298:27;52377:1;52359:16;52355:24;52349:4;52345:35;52340:3;52337:44;52334:2;;;52384:5;;;;;;;52334:2;52401:57;52449:6;52443:4;52439:17;52431:6;52427:30;52421:4;52401:57;:::i;:::-;52474:3;52467:10;;51815:668;;;;;;;:::o;52489:122::-;52562:24;52580:5;52562:24;:::i;:::-;52555:5;52552:35;52542:2;;52601:1;52598;52591:12;52542:2;52532:79;:::o;52617:116::-;52687:21;52702:5;52687:21;:::i;:::-;52680:5;52677:32;52667:2;;52723:1;52720;52713:12;52667:2;52657:76;:::o;52739:122::-;52812:24;52830:5;52812:24;:::i;:::-;52805:5;52802:35;52792:2;;52851:1;52848;52841:12;52792:2;52782:79;:::o;52867:120::-;52939:23;52956:5;52939:23;:::i;:::-;52932:5;52929:34;52919:2;;52977:1;52974;52967:12;52919:2;52909:78;:::o;52993:122::-;53066:24;53084:5;53066:24;:::i;:::-;53059:5;53056:35;53046:2;;53105:1;53102;53095:12;53046:2;53036:79;:::o;53121:118::-;53192:22;53208:5;53192:22;:::i;:::-;53185:5;53182:33;53172:2;;53229:1;53226;53219:12;53172:2;53162:77;:::o

Swarm Source

ipfs://e8f1492e20ef6c120aa42443d2594a01f05fd14dcce50ea9f498bb3a5817be32

Block Transaction Difficulty Gas Used Reward
View All Blocks Produced

Block Uncle Number Difficulty Gas Used Reward
View All Uncles
Loading...
Loading
Loading...
Loading

Validator Index Block Amount
View All Withdrawals

Transaction Hash Block Value Eth2 PubKey Valid
View All Deposits
Loading...
Loading
[ Download: CSV Export  ]

A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.