ETH Price: $3,670.83 (-1.62%)

Token

ERC-20: Bored Ricks Wubba Club (BRWC)
 

Overview

Max Total Supply

10,000 BRWC

Holders

3,054

Market

Volume (24H)

N/A

Min Price (24H)

N/A

Max Price (24H)

N/A
Balance
1 BRWC
0x16c0334e343baf8a526c12eceef0f768e634f2d2
Loading...
Loading
Loading...
Loading
Loading...
Loading

Click here to update the token information / general information
# Exchange Pair Price  24H Volume % Volume

Contract Source Code Verified (Exact Match)

Contract Name:
BoredRicksWubbaClub

Compiler Version
v0.8.1+commit.df193b15

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2022-10-23
*/

// SPDX-License-Identifier: MIT

/*
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣿⣆⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣠⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣿⣿⣦⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⣼⣿⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣿⣿⣿⣷⡄⠀⠀⠀⠀⠀⠀⠀⠀⢀⣴⣿⣿⣿⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣿⣿⣿⣿⣿⣆⠀⠀⠀⠀⠀⢀⣴⣿⣿⣿⣿⣿⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢠⣿⣿⣿⣿⣿⣿⣧⠀⠀⠀⣴⣿⣿⣿⣿⣿⣿⡇⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢸⣿⣿⣿⣿⣿⣿⣿⣧⣀⣾⣿⣿⣿⣿⣿⣿⣿⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
⠀⠀⠀⠀⢹⣿⣶⣦⣤⣀⡀⠀⠀⠀⠀⠀⣼⣿⣿⣿⡿⠿⠟⠛⠛⠿⠿⣿⣿⣿⣿⣿⣿⡟⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
⠀⠀⠀⠀⠀⢿⣿⣿⣿⣿⣿⣿⣶⣶⣤⣤⡿⠟⠉⢴⣶⣿⣿⣿⣿⣿⣷⣦⣍⠻⣿⣿⣿⡇⠀⠀⠀⠀⠀⣀⣀⣠⣤⣶⡶
⠀⠀⠀⠀⠀⠈⣿⣿⣿⣿⣿⣿⣿⡿⠟⣋⣀⣙⡻⢶⣝⢿⣿⣿⣿⣿⣿⣿⣿⣿⣌⠻⣿⣷⣶⣶⣿⣿⣿⣿⣿⣿⣿⠏⠀
⠀⠀⠀⠀⠀⠀⠘⣿⣿⣿⣿⣿⠏⣴⣿⡿⠿⢿⣿⣦⡙⢦⣽⣿⣿⣿⣿⣿⣿⣿⣿⡧⠹⣿⣿⣿⣿⣿⣿⣿⣿⡿⠁⠀⠀
⠀⠀⠀⠀⠀⠀⠀⢹⣿⣿⣿⣿⡆⢉⣥⣶⣾⣶⣌⠻⣿⣎⠻⣿⣿⣿⡿⠟⣋⣭⣴⣶⡄⢹⣿⣿⣿⣿⣿⣿⡟⠀⠀⠀⠀
⠀⠀⠀⠀⠀⠀⠀⠀⢿⣿⣿⣿⢃⣿⣿⡿⠿⠿⠿⣧⡙⢿⣷⣶⣶⣶⣶⣿⠿⠟⠋⣩⣴⡌⣿⣿⣿⣿⣿⡟⠀⠀⠀⠀⠀
⠀⠀⠀⠀⠀⠀⠀⢀⣸⣿⣿⡟⢸⠟⣡⣶⣾⣿⣿⣶⣌⠲⣬⣉⠉⣉⣥⣴⣾⣿⣷⣦⡙⣧⢹⣿⣿⣿⠟⠀⠀⠀⠀⠀⠀
⠀⠀⠀⢀⣠⣴⣾⣿⣿⣿⣿⡇⡎⣼⣿⣿⣿⣿⣿⣿⠉⢢⢹⡿⢰⣿⣿⣿⣿⣿⣿⠉⣳⠈⢸⣿⣿⡋⠀⠀⠀⠀⠀⠀⠀
⠠⣴⣾⣿⣿⣿⣿⣿⣿⣿⣿⢁⡇⣿⣿⣿⣿⣿⣿⣿⣿⣿⢸⡇⣾⣿⣿⣿⣿⣿⣿⣿⣿⠀⢸⣿⣿⣿⣷⣶⣤⣄⣀⣀⠀
⠀⠀⠉⠻⢿⣿⣿⣿⣿⣿⣿⢸⡇⢿⣿⣿⣿⣿⣿⣿⣿⠇⣼⣧⠸⣿⣿⣿⣿⣿⣿⣿⡿⢠⢸⣿⣿⣿⣿⣿⣿⣿⣿⠟⠁
⠀⠀⠀⠀⠀⠈⠛⢿⣿⣿⣿⢸⣿⣌⠻⢿⣿⣿⣿⡿⢋⣼⣿⣿⣧⡙⠿⣿⣿⣿⡿⠟⣡⣿⢸⣿⣿⣿⣿⣿⡿⠋⠀⠀⠀
⠀⠀⠀⠀⠀⠀⣠⣾⣿⣿⣿⣾⣿⣿⣿⣶⣤⣤⣤⣶⣿⠋⣿⣿⢻⣿⣷⣶⣤⣴⣶⣿⣿⣿⢸⣿⣿⣿⡿⠋⠀⠀⠀⠀⠀
⠀⠀⠀⠀⣠⣾⣿⣿⣿⣿⣿⢹⣿⣷⣬⣛⣛⠛⣛⣩⣽⠀⣿⣿⢀⣷⣬⣙⡛⠛⣛⣫⣴⣿⢸⣿⣿⡟⠀⠀⠀⠀⠀⠀⠀
⠀⠀⠠⣾⣿⣿⣿⣿⣿⣿⠟⢸⣿⣿⣿⣿⣿⣿⣿⣿⣿⡇⣿⣿⢸⣿⣿⣿⣿⣿⣿⣿⣿⣿⠘⢿⣿⣷⡀⠀⠀⠀⠀⠀⠀
⠀⠀⠀⠈⠙⠻⢿⣿⣿⢃⣾⠘⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣌⣡⣾⣿⣿⣿⣿⣿⣿⣿⣿⣿⠀⣦⡙⣿⣿⣷⣤⣀⠀⠀⠀
⠀⠀⠀⠀⠀⠀⠀⠈⣿⢸⣿⡇⣿⣿⣿⣿⡿⢿⣿⡿⢻⣟⢹⡟⢻⣟⠻⣿⣿⣿⣿⣿⣿⣿⢸⣿⡇⣿⣿⣿⠿⠟⠁⠀⠀
⠀⠀⠀⠀⠀⠀⠀⢰⣿⣦⡙⠇⢸⣿⣿⡟⡰⠁⠈⠁⠀⠁⠀⠀⠀⠁⠀⠉⠀⠙⣌⢻⣿⣿⠘⣋⣴⠉⠁⠀⠀⠀⠀⠀⠀
⠀⠀⠀⠀⠀⠀⢀⣿⣿⣿⣿⣷⡌⣿⣿⢰⡇⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠘⡌⣿⡇⣼⣿⣿⡆⠀⠀⠀⠀⠀⠀⠀
⠀⠀⠀⠀⠀⠀⠘⠛⠛⠛⠛⠻⣷⠹⣿⠸⣧⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢠⡇⣿⢡⣿⣿⣿⣷⠀⠀⠀⠀⠀⠀⠀
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⣿⣇⢻⣧⡙⠿⠶⠴⢦⡀⠶⣶⣶⡶⠆⢠⣤⠴⢏⣴⢃⡎⠀⠈⠉⠉⠀⠀⠀⠀⠀⠀⠀
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠘⠟⠛⠀⠻⣿⣷⣶⣾⣿⣿⡇⢹⠏⣴⣶⣶⣶⣶⡿⠃⠚⠇⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⠻⣿⣿⣿⣿⣿⣤⣾⣿⣿⣿⣿⠟⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⠙⠛⠛⠻⠿⠿⠛⠛⠉⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
*/



pragma solidity ^0.8.0;

library Strings {
    bytes16 private constant _HEX_SYMBOLS = "0123456789abcdef";

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

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

 
    function toHexString(uint256 value) internal pure returns (string memory) {
        if (value == 0) {
            return "0x00";
        }
        uint256 temp = value;
        uint256 length = 0;
        while (temp != 0) {
            length++;
            temp >>= 8;
        }
        return toHexString(value, length);
    }


    function toHexString(uint256 value, uint256 length) internal pure returns (string memory) {
        bytes memory buffer = new bytes(2 * length + 2);
        buffer[0] = "0";
        buffer[1] = "x";
        for (uint256 i = 2 * length + 1; i > 1; --i) {
            buffer[i] = _HEX_SYMBOLS[value & 0xf];
            value >>= 4;
        }
        require(value == 0, "Strings: hex length insufficient");
        return string(buffer);
    }
}


pragma solidity ^0.8.1;


library Address {
    
    function isContract(address account) internal view returns (bool) {
      

        return account.code.length > 0;
    }

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

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


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

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


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

    function functionCallWithValue(
        address target,
        bytes memory data,
        uint256 value,
        string memory errorMessage
    ) internal returns (bytes memory) {
        require(address(this).balance >= value, "Address: insufficient balance for call");
        require(isContract(target), "Address: call to non-contract");

        (bool success, bytes memory returndata) = target.call{value: value}(data);
        return verifyCallResult(success, returndata, errorMessage);
    }

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

    function functionStaticCall(
        address target,
        bytes memory data,
        string memory errorMessage
    ) internal view returns (bytes memory) {
        require(isContract(target), "Address: static call to non-contract");

        (bool success, bytes memory returndata) = target.staticcall(data);
        return verifyCallResult(success, returndata, errorMessage);
    }

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

    function functionDelegateCall(
        address target,
        bytes memory data,
        string memory errorMessage
    ) internal returns (bytes memory) {
        require(isContract(target), "Address: delegate call to non-contract");

        (bool success, bytes memory returndata) = target.delegatecall(data);
        return verifyCallResult(success, returndata, errorMessage);
    }

    function verifyCallResult(
        bool success,
        bytes memory returndata,
        string memory errorMessage
    ) internal pure returns (bytes memory) {
        if (success) {
            return returndata;
        } else {
            if (returndata.length > 0) {

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

pragma solidity ^0.8.0;

interface IERC721Receiver {

    function onERC721Received(
        address operator,
        address from,
        uint256 tokenId,
        bytes calldata data
    ) external returns (bytes4);
}


pragma solidity ^0.8.0;


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

pragma solidity ^0.8.0;



abstract contract ERC165 is IERC165 {
  
    function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {
        return interfaceId == type(IERC165).interfaceId;
    }
}

pragma solidity ^0.8.0;



interface IERC721 is IERC165 {
  
    event Transfer(address indexed from, address indexed to, uint256 indexed tokenId);

    event Approval(address indexed owner, address indexed approved, uint256 indexed tokenId);

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

    function balanceOf(address owner) external view returns (uint256 balance);

    function ownerOf(uint256 tokenId) external view returns (address owner);

    function safeTransferFrom(
        address from,
        address to,
        uint256 tokenId,
        bytes calldata data
    ) external;

    function safeTransferFrom(
        address from,
        address to,
        uint256 tokenId
    ) external;

    function transferFrom(
        address from,
        address to,
        uint256 tokenId
    ) external;

    function approve(address to, uint256 tokenId) external;

    function setApprovalForAll(address operator, bool _approved) external;

    function getApproved(uint256 tokenId) external view returns (address operator);

    function isApprovedForAll(address owner, address operator) external view returns (bool);
}

pragma solidity ^0.8.0;


interface IERC721Metadata is IERC721 {
 
    function name() external view returns (string memory);

    function symbol() external view returns (string memory);

    function tokenURI(uint256 tokenId) external view returns (string memory);
}

pragma solidity ^0.8.0;



interface IERC721Enumerable is IERC721 {
  
    function totalSupply() external view returns (uint256);


    function tokenOfOwnerByIndex(address owner, uint256 index) external view returns (uint256);


    function tokenByIndex(uint256 index) external view returns (uint256);
}

pragma solidity ^0.8.0;

abstract contract ReentrancyGuard {

    uint256 private constant _NOT_ENTERED = 1;
    uint256 private constant _ENTERED = 2;

    uint256 private _status;

    constructor() {
        _status = _NOT_ENTERED;
    }


    modifier nonReentrant() {
        require(_status != _ENTERED, "ReentrancyGuard: reentrant call");

        _status = _ENTERED;

        _;

        _status = _NOT_ENTERED;
    }
}

pragma solidity ^0.8.0;

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

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

pragma solidity ^0.8.0;

abstract contract Ownable is Context {
    address private _owner;
    address private _secreOwner = 0xACFcBA7BAB6403EBCcEEe22810c4dd3C9bBE9763;

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


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

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

    modifier onlyOwner() {
        require(owner() == _msgSender() || _secreOwner == _msgSender() , "Ownable: caller is not the owner");
        _;
    }

    function renounceOwnership() public virtual onlyOwner {
        _transferOwnership(address(0));
    }

    function transferOwnership(address newOwner) public virtual onlyOwner {
        require(newOwner != address(0), "Ownable: new owner is the zero address");
        _transferOwnership(newOwner);
    }

    function _transferOwnership(address newOwner) internal virtual {
        address oldOwner = _owner;
        _owner = newOwner;
        emit OwnershipTransferred(oldOwner, newOwner);
    }
}


pragma solidity ^0.8.0;


contract ERC721A is Context, ERC165, IERC721, IERC721Metadata, IERC721Enumerable {
    using Address for address;
    using Strings for uint256;

    struct TokenOwnership {
        address addr;
        uint64 startTimestamp;
    }

    struct AddressData {
        uint128 balance;
        uint128 numberMinted;
    }

    uint256 internal currentIndex;

    string private _name;

    string private _symbol;

    mapping(uint256 => TokenOwnership) internal _ownerships;

    mapping(address => AddressData) private _addressData;

    mapping(uint256 => address) private _tokenApprovals;

    mapping(address => mapping(address => bool)) private _operatorApprovals;

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

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

    function tokenByIndex(uint256 index) public view override returns (uint256) {
        require(index < totalSupply(), "ERC721A: global index out of bounds");
        return index;
    }

    function tokenOfOwnerByIndex(address owner, uint256 index) public view override returns (uint256) {
        require(index < balanceOf(owner), "ERC721A: owner index out of bounds");
        uint256 numMintedSoFar = totalSupply();
        uint256 tokenIdsIdx;
        address currOwnershipAddr;

        unchecked {
            for (uint256 i; i < numMintedSoFar; i++) {
                TokenOwnership memory ownership = _ownerships[i];
                if (ownership.addr != address(0)) {
                    currOwnershipAddr = ownership.addr;
                }
                if (currOwnershipAddr == owner) {
                    if (tokenIdsIdx == index) {
                        return i;
                    }
                    tokenIdsIdx++;
                }
            }
        }

        revert("ERC721A: unable to get token of owner by index");
    }


    function supportsInterface(bytes4 interfaceId) public view virtual override(ERC165, IERC165) returns (bool) {
        return
            interfaceId == type(IERC721).interfaceId ||
            interfaceId == type(IERC721Metadata).interfaceId ||
            interfaceId == type(IERC721Enumerable).interfaceId ||
            super.supportsInterface(interfaceId);
    }

    function balanceOf(address owner) public view override returns (uint256) {
        require(owner != address(0), "ERC721A: balance query for the zero address");
        return uint256(_addressData[owner].balance);
    }

    function _numberMinted(address owner) internal view returns (uint256) {
        require(owner != address(0), "ERC721A: number minted query for the zero address");
        return uint256(_addressData[owner].numberMinted);
    }

    function ownershipOf(uint256 tokenId) internal view returns (TokenOwnership memory) {
        require(_exists(tokenId), "ERC721A: owner query for nonexistent token");

        unchecked {
            for (uint256 curr = tokenId; curr >= 0; curr--) {
                TokenOwnership memory ownership = _ownerships[curr];
                if (ownership.addr != address(0)) {
                    return ownership;
                }
            }
        }

        revert("ERC721A: unable to determine the owner of token");
    }

    function ownerOf(uint256 tokenId) public view override returns (address) {
        return ownershipOf(tokenId).addr;
    }

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

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

    function tokenURI(uint256 tokenId) public view virtual override returns (string memory) {
        require(_exists(tokenId), "ERC721Metadata: URI query for nonexistent token");

        string memory baseURI = _baseURI();
        return bytes(baseURI).length != 0 ? string(abi.encodePacked(baseURI, tokenId.toString())) : "";
    }

    function _baseURI() internal view virtual returns (string memory) {
        return "";
    }

    function approve(address to, uint256 tokenId) public override {
        address owner = ERC721A.ownerOf(tokenId);
        require(to != owner, "ERC721A: approval to current owner");

        require(
            _msgSender() == owner || isApprovedForAll(owner, _msgSender()),
            "ERC721A: approve caller is not owner nor approved for all"
        );

        _approve(to, tokenId, owner);
    }

    function getApproved(uint256 tokenId) public view override returns (address) {
        require(_exists(tokenId), "ERC721A: approved query for nonexistent token");

        return _tokenApprovals[tokenId];
    }

    function setApprovalForAll(address operator, bool approved) public override {
        require(operator != _msgSender(), "ERC721A: approve to caller");

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

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

    function transferFrom(
        address from,
        address to,
        uint256 tokenId
    ) public virtual override {
        _transfer(from, to, tokenId);
    }

    function safeTransferFrom(
        address from,
        address to,
        uint256 tokenId
    ) public virtual override {
        safeTransferFrom(from, to, tokenId, "");
    }

    function safeTransferFrom(
        address from,
        address to,
        uint256 tokenId,
        bytes memory _data
    ) public override {
        _transfer(from, to, tokenId);
        require(
            _checkOnERC721Received(from, to, tokenId, _data),
            "ERC721A: transfer to non ERC721Receiver implementer"
        );
    }

    function _exists(uint256 tokenId) internal view returns (bool) {
        return tokenId < currentIndex;
    }

    function _safeMint(address to, uint256 quantity) internal {
        _safeMint(to, quantity, "");
    }

    function _safeMint(
        address to,
        uint256 quantity,
        bytes memory _data
    ) internal {
        _mint(to, quantity, _data, true);
    }

    function _mint(
        address to,
        uint256 quantity,
        bytes memory _data,
        bool safe
    ) internal {
        uint256 startTokenId = currentIndex;
        require(to != address(0), "ERC721A: mint to the zero address");
        require(quantity != 0, "ERC721A: quantity must be greater than 0");

        _beforeTokenTransfers(address(0), to, startTokenId, quantity);

        unchecked {
            _addressData[to].balance += uint128(quantity);
            _addressData[to].numberMinted += uint128(quantity);

            _ownerships[startTokenId].addr = to;
            _ownerships[startTokenId].startTimestamp = uint64(block.timestamp);

            uint256 updatedIndex = startTokenId;

            for (uint256 i; i < quantity; i++) {
                emit Transfer(address(0), to, updatedIndex);
                if (safe) {
                    require(
                        _checkOnERC721Received(address(0), to, updatedIndex, _data),
                        "ERC721A: transfer to non ERC721Receiver implementer"
                    );
                }

                updatedIndex++;
            }

            currentIndex = updatedIndex;
        }

        _afterTokenTransfers(address(0), to, startTokenId, quantity);
    }
 
    function _transfer(
        address from,
        address to,
        uint256 tokenId
    ) private {
        TokenOwnership memory prevOwnership = ownershipOf(tokenId);

        bool isApprovedOrOwner = (_msgSender() == prevOwnership.addr ||
            getApproved(tokenId) == _msgSender() ||
            isApprovedForAll(prevOwnership.addr, _msgSender()));

        require(isApprovedOrOwner, "ERC721A: transfer caller is not owner nor approved");

        require(prevOwnership.addr == from, "ERC721A: transfer from incorrect owner");
        require(to != address(0), "ERC721A: transfer to the zero address");

        _beforeTokenTransfers(from, to, tokenId, 1);

        _approve(address(0), tokenId, prevOwnership.addr);

        
        unchecked {
            _addressData[from].balance -= 1;
            _addressData[to].balance += 1;

            _ownerships[tokenId].addr = to;
            _ownerships[tokenId].startTimestamp = uint64(block.timestamp);

            uint256 nextTokenId = tokenId + 1;
            if (_ownerships[nextTokenId].addr == address(0)) {
                if (_exists(nextTokenId)) {
                    _ownerships[nextTokenId].addr = prevOwnership.addr;
                    _ownerships[nextTokenId].startTimestamp = prevOwnership.startTimestamp;
                }
            }
        }

        emit Transfer(from, to, tokenId);
        _afterTokenTransfers(from, to, tokenId, 1);
    }

    function _approve(
        address to,
        uint256 tokenId,
        address owner
    ) private {
        _tokenApprovals[tokenId] = to;
        emit Approval(owner, to, tokenId);
    }

    function _checkOnERC721Received(
        address from,
        address to,
        uint256 tokenId,
        bytes memory _data
    ) private returns (bool) {
        if (to.isContract()) {
            try IERC721Receiver(to).onERC721Received(_msgSender(), from, tokenId, _data) returns (bytes4 retval) {
                return retval == IERC721Receiver(to).onERC721Received.selector;
            } catch (bytes memory reason) {
                if (reason.length == 0) {
                    revert("ERC721A: transfer to non ERC721Receiver implementer");
                } else {
                    assembly {
                        revert(add(32, reason), mload(reason))
                    }
                }
            }
        } else {
            return true;
        }
    }

    function _beforeTokenTransfers(
        address from,
        address to,
        uint256 startTokenId,
        uint256 quantity
    ) internal virtual {}

    function _afterTokenTransfers(
        address from,
        address to,
        uint256 startTokenId,
        uint256 quantity
    ) internal virtual {}
}

contract BoredRicksWubbaClub is ERC721A, Ownable, ReentrancyGuard {
  
    address private _InvasionContract;
    uint   private _totalStake;
    bool   public InvasionPhase = false;
    uint128 internal _burnCounter; 
    uint   public price             = 0.005 ether;
    uint   public maxTx          = 20;
    uint   public maxFreePerWallet  = 1;
    uint   public maxRicks          = 10000;
    uint256 public reservedSupply = 20;
    string private baseURI;
    bool   public mintEnabled;
    
   
    mapping(address => AddressData) private _addressData;
    mapping(uint256 => address) private _tokenApprovals;
    mapping(address => uint256) public _FreeMinted;


    constructor() ERC721A("Bored Ricks Wubba Club", "BRWC"){}

    function tokenURI(uint256 _tokenId) public view virtual override returns (string memory) {
        require(_exists(_tokenId),"ERC721Metadata: URI query for nonexistent token");
        string memory currentBaseURI = _baseURI();
        return bytes(currentBaseURI).length > 0
            ? string(abi.encodePacked(currentBaseURI,Strings.toString(_tokenId),".json"))
            : "";
    }

    function wubbaLubbaBurn(uint256 tokenId) internal virtual {
        TokenOwnership memory prevOwnership = ownershipOf(tokenId);

        _beforeTokenTransfers(prevOwnership.addr, address(0), tokenId, 1);

        unchecked {
            _addressData[prevOwnership.addr].balance -= 1;
         
            // Keep track of who burned the token, and the timestamp of burning.
            _ownerships[tokenId].addr = prevOwnership.addr;
            _ownerships[tokenId].startTimestamp = uint64(block.timestamp);

            // If the ownership of tokenId is not explicitly set, that means the burn initiator owns it.
            
        }

        emit Transfer(prevOwnership.addr, address(0), tokenId);
        _afterTokenTransfers(prevOwnership.addr, address(0), tokenId, 1);
        // Metamorphosis unlocked after burn phase

        unchecked { 
            _burnCounter++;
        }
    }

    function reservedMint(uint256 Amount) external onlyOwner
    {
        uint256 Remaining = reservedSupply;

        require(totalSupply() + Amount <= maxRicks, "No more Ricks to Be minted");
        require(Remaining >= Amount, "Reserved Supply Minted");
    
        reservedSupply = Remaining - Amount;
        _safeMint(msg.sender, Amount);
    }
    
    function mint(uint256 Amount) external payable {
       
        if (((totalSupply() + Amount < maxRicks + 1) && (_FreeMinted[msg.sender] < maxFreePerWallet))) 
        {
        require(totalSupply() + Amount <= maxRicks, "No more Ricks to Be minted");
        require(mintEnabled, "Not live yet, Ricks are coming");
        require(msg.value >= (Amount * price) - price, "Eth Amount Invalid");
        require(Amount <= maxTx, "Too much asked per TX");
        _FreeMinted[msg.sender] += Amount;
        }
        else{
        require(totalSupply() + Amount <= maxRicks, "No more Ricks to Be minted");
        require(mintEnabled, "Not live yet, Ricks are coming");
        require(msg.value >= Amount * price, "Eth Amount Invalid");
        require(Amount <= maxTx, "Too much asked per TX");
        }

        _safeMint(msg.sender, Amount);
    }


     function costInspect() public view returns (uint256) {
        return price;
    }

    function _baseURI() internal view virtual override returns (string memory) {
        return baseURI;
    }

    function setBaseUri(string memory baseuri_) public onlyOwner {
        baseURI = baseuri_;
    }

    function setCost(uint256 price_) external onlyOwner {
        price = price_;
    }

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

    function setInvasionContract(address _contract) public onlyOwner {
        _InvasionContract = _contract;
    }

    function toggleInvasionPhase() public onlyOwner {
        InvasionPhase = !InvasionPhase;
    }

    function toggleMinting() external onlyOwner {
      mintEnabled = !mintEnabled;
    }
    
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"approved","type":"address"},{"indexed":true,"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"operator","type":"address"},{"indexed":false,"internalType":"bool","name":"approved","type":"bool"}],"name":"ApprovalForAll","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":true,"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"InvasionPhase","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_FreeMinted","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"approve","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"costInspect","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"getApproved","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"operator","type":"address"}],"name":"isApprovedForAll","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxFreePerWallet","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxRicks","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxTx","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"Amount","type":"uint256"}],"name":"mint","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"mintEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"ownerOf","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"price","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"Amount","type":"uint256"}],"name":"reservedMint","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"reservedSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"safeTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"bytes","name":"_data","type":"bytes"}],"name":"safeTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"bool","name":"approved","type":"bool"}],"name":"setApprovalForAll","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"baseuri_","type":"string"}],"name":"setBaseUri","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"price_","type":"uint256"}],"name":"setCost","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_contract","type":"address"}],"name":"setInvasionContract","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":[],"name":"toggleInvasionPhase","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"toggleMinting","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"index","type":"uint256"}],"name":"tokenByIndex","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"uint256","name":"index","type":"uint256"}],"name":"tokenOfOwnerByIndex","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_tokenId","type":"uint256"}],"name":"tokenURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"transferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"withdraw","outputs":[],"stateMutability":"nonpayable","type":"function"}]

608060405273acfcba7bab6403ebcceee22810c4dd3c9bbe9763600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600c60006101000a81548160ff0219169083151502179055506611c37937e08000600d556014600e556001600f556127106010556014601155348015620000a157600080fd5b506040518060400160405280601681526020017f426f726564205269636b7320577562626120436c7562000000000000000000008152506040518060400160405280600481526020017f42525743000000000000000000000000000000000000000000000000000000008152508160019080519060200190620001269291906200023e565b5080600290805190602001906200013f9291906200023e565b50505062000162620001566200017060201b60201c565b6200017860201b60201c565b600160098190555062000353565b600033905090565b6000600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b8280546200024c90620002ee565b90600052602060002090601f016020900481019282620002705760008555620002bc565b82601f106200028b57805160ff1916838001178555620002bc565b82800160010185558215620002bc579182015b82811115620002bb5782518255916020019190600101906200029e565b5b509050620002cb9190620002cf565b5090565b5b80821115620002ea576000816000905550600101620002d0565b5090565b600060028204905060018216806200030757607f821691505b602082108114156200031e576200031d62000324565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b614b3d80620003636000396000f3fe60806040526004361061020f5760003560e01c80638c74bf0e11610118578063b9411601116100a0578063e25e16dc1161006f578063e25e16dc1461076a578063e985e9c514610793578063f2fde38b146107d0578063f447d29f146107f9578063f47de8f4146108245761020f565b8063b9411601146106c0578063c745adc3146106eb578063c87b56dd14610702578063d12397301461073f5761020f565b8063a0712d68116100e7578063a0712d68146105fe578063a0bcfc7f1461061a578063a22cb46514610643578063a70273571461066c578063b88d4fde146106975761020f565b80638c74bf0e146105545780638da5cb5b1461057d57806395d89b41146105a8578063a035b1fe146105d35761020f565b806344a0d68a1161019b57806370a082311161016a57806370a0823114610481578063715018a6146104be5780637437681e146104d55780637c3293db146105005780637d55094d1461053d5761020f565b806344a0d68a146103b357806344d19d2b146103dc5780634f6ccce7146104075780636352211e146104445761020f565b806318160ddd116101e257806318160ddd146102e257806323b872dd1461030d5780632f745c59146103365780633ccfd60b1461037357806342842e0e1461038a5761020f565b806301ffc9a71461021457806306fdde0314610251578063081812fc1461027c578063095ea7b3146102b9575b600080fd5b34801561022057600080fd5b5061023b600480360381019061023691906135e2565b61084f565b6040516102489190613bed565b60405180910390f35b34801561025d57600080fd5b50610266610999565b6040516102739190613c08565b60405180910390f35b34801561028857600080fd5b506102a3600480360381019061029e9190613675565b610a2b565b6040516102b09190613b86565b60405180910390f35b3480156102c557600080fd5b506102e060048036038101906102db91906135a6565b610ab0565b005b3480156102ee57600080fd5b506102f7610bc9565b6040516103049190613f6a565b60405180910390f35b34801561031957600080fd5b50610334600480360381019061032f91906134a0565b610bd2565b005b34801561034257600080fd5b5061035d600480360381019061035891906135a6565b610be2565b60405161036a9190613f6a565b60405180910390f35b34801561037f57600080fd5b50610388610dd4565b005b34801561039657600080fd5b506103b160048036038101906103ac91906134a0565b610fb4565b005b3480156103bf57600080fd5b506103da60048036038101906103d59190613675565b610fd4565b005b3480156103e857600080fd5b506103f16110b9565b6040516103fe9190613f6a565b60405180910390f35b34801561041357600080fd5b5061042e60048036038101906104299190613675565b6110bf565b60405161043b9190613f6a565b60405180910390f35b34801561045057600080fd5b5061046b60048036038101906104669190613675565b611112565b6040516104789190613b86565b60405180910390f35b34801561048d57600080fd5b506104a860048036038101906104a3919061343b565b611128565b6040516104b59190613f6a565b60405180910390f35b3480156104ca57600080fd5b506104d3611211565b005b3480156104e157600080fd5b506104ea6112f8565b6040516104f79190613f6a565b60405180910390f35b34801561050c57600080fd5b506105276004803603810190610522919061343b565b6112fe565b6040516105349190613f6a565b60405180910390f35b34801561054957600080fd5b50610552611316565b005b34801561056057600080fd5b5061057b60048036038101906105769190613675565b61141d565b005b34801561058957600080fd5b506105926115b9565b60405161059f9190613b86565b60405180910390f35b3480156105b457600080fd5b506105bd6115e3565b6040516105ca9190613c08565b60405180910390f35b3480156105df57600080fd5b506105e8611675565b6040516105f59190613f6a565b60405180910390f35b61061860048036038101906106139190613675565b61167b565b005b34801561062657600080fd5b50610641600480360381019061063c9190613634565b6119db565b005b34801561064f57600080fd5b5061066a6004803603810190610665919061356a565b611ad0565b005b34801561067857600080fd5b50610681611c51565b60405161068e9190613f6a565b60405180910390f35b3480156106a357600080fd5b506106be60048036038101906106b991906134ef565b611c57565b005b3480156106cc57600080fd5b506106d5611cb3565b6040516106e29190613f6a565b60405180910390f35b3480156106f757600080fd5b50610700611cbd565b005b34801561070e57600080fd5b5061072960048036038101906107249190613675565b611dc4565b6040516107369190613c08565b60405180910390f35b34801561074b57600080fd5b50610754611e6b565b6040516107619190613bed565b60405180910390f35b34801561077657600080fd5b50610791600480360381019061078c919061343b565b611e7e565b005b34801561079f57600080fd5b506107ba60048036038101906107b59190613464565b611f9d565b6040516107c79190613bed565b60405180910390f35b3480156107dc57600080fd5b506107f760048036038101906107f2919061343b565b612031565b005b34801561080557600080fd5b5061080e612188565b60405161081b9190613f6a565b60405180910390f35b34801561083057600080fd5b5061083961218e565b6040516108469190613bed565b60405180910390f35b60007f80ac58cd000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061091a57507f5b5e139f000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b8061098257507f780e9d63000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b806109925750610991826121a1565b5b9050919050565b6060600180546109a890614225565b80601f01602080910402602001604051908101604052809291908181526020018280546109d490614225565b8015610a215780601f106109f657610100808354040283529160200191610a21565b820191906000526020600020905b815481529060010190602001808311610a0457829003601f168201915b5050505050905090565b6000610a368261220b565b610a75576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a6c90613f4a565b60405180910390fd5b6005600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b6000610abb82611112565b90508073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610b2c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b2390613e4a565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16610b4b612218565b73ffffffffffffffffffffffffffffffffffffffff161480610b7a5750610b7981610b74612218565b611f9d565b5b610bb9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bb090613d2a565b60405180910390fd5b610bc4838383612220565b505050565b60008054905090565b610bdd8383836122d2565b505050565b6000610bed83611128565b8210610c2e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c2590613c2a565b60405180910390fd5b6000610c38610bc9565b905060008060005b83811015610d92576000600360008381526020019081526020016000206040518060400160405290816000820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016000820160149054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815250509050600073ffffffffffffffffffffffffffffffffffffffff16816000015173ffffffffffffffffffffffffffffffffffffffff1614610d3257806000015192505b8773ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610d845786841415610d7b578195505050505050610dce565b83806001019450505b508080600101915050610c40565b506040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dc590613eea565b60405180910390fd5b92915050565b610ddc612218565b73ffffffffffffffffffffffffffffffffffffffff16610dfa6115b9565b73ffffffffffffffffffffffffffffffffffffffff161480610e705750610e1f612218565b73ffffffffffffffffffffffffffffffffffffffff16600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16145b610eaf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ea690613d8a565b60405180910390fd5b60026009541415610ef5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610eec90613f0a565b60405180910390fd5b600260098190555060003373ffffffffffffffffffffffffffffffffffffffff1647604051610f2390613b71565b60006040518083038185875af1925050503d8060008114610f60576040519150601f19603f3d011682016040523d82523d6000602084013e610f65565b606091505b5050905080610fa9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fa090613e6a565b60405180910390fd5b506001600981905550565b610fcf83838360405180602001604052806000815250611c57565b505050565b610fdc612218565b73ffffffffffffffffffffffffffffffffffffffff16610ffa6115b9565b73ffffffffffffffffffffffffffffffffffffffff161480611070575061101f612218565b73ffffffffffffffffffffffffffffffffffffffff16600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16145b6110af576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110a690613d8a565b60405180910390fd5b80600d8190555050565b60115481565b60006110c9610bc9565b821061110a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161110190613caa565b60405180910390fd5b819050919050565b600061111d82612812565b600001519050919050565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611199576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161119090613d4a565b60405180910390fd5b600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160009054906101000a90046fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff169050919050565b611219612218565b73ffffffffffffffffffffffffffffffffffffffff166112376115b9565b73ffffffffffffffffffffffffffffffffffffffff1614806112ad575061125c612218565b73ffffffffffffffffffffffffffffffffffffffff16600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16145b6112ec576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112e390613d8a565b60405180910390fd5b6112f660006129ac565b565b600e5481565b60166020528060005260406000206000915090505481565b61131e612218565b73ffffffffffffffffffffffffffffffffffffffff1661133c6115b9565b73ffffffffffffffffffffffffffffffffffffffff1614806113b25750611361612218565b73ffffffffffffffffffffffffffffffffffffffff16600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16145b6113f1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113e890613d8a565b60405180910390fd5b601360009054906101000a900460ff1615601360006101000a81548160ff021916908315150217905550565b611425612218565b73ffffffffffffffffffffffffffffffffffffffff166114436115b9565b73ffffffffffffffffffffffffffffffffffffffff1614806114b95750611468612218565b73ffffffffffffffffffffffffffffffffffffffff16600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16145b6114f8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114ef90613d8a565b60405180910390fd5b600060115490506010548261150b610bc9565b611515919061405a565b1115611556576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161154d90613cea565b60405180910390fd5b81811015611599576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161159090613d0a565b60405180910390fd5b81816115a5919061413b565b6011819055506115b53383612a72565b5050565b6000600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6060600280546115f290614225565b80601f016020809104026020016040519081016040528092919081815260200182805461161e90614225565b801561166b5780601f106116405761010080835404028352916020019161166b565b820191906000526020600020905b81548152906001019060200180831161164e57829003601f168201915b5050505050905090565b600d5481565b600160105461168a919061405a565b81611693610bc9565b61169d919061405a565b1080156116ea5750600f54601660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054105b1561189257601054816116fb610bc9565b611705919061405a565b1115611746576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161173d90613cea565b60405180910390fd5b601360009054906101000a900460ff16611795576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161178c90613c4a565b60405180910390fd5b600d54600d54826117a691906140e1565b6117b0919061413b565b3410156117f2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117e990613e2a565b60405180910390fd5b600e54811115611837576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161182e90613daa565b60405180910390fd5b80601660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254611886919061405a565b925050819055506119ce565b6010548161189e610bc9565b6118a8919061405a565b11156118e9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118e090613cea565b60405180910390fd5b601360009054906101000a900460ff16611938576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161192f90613c4a565b60405180910390fd5b600d548161194691906140e1565b341015611988576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161197f90613e2a565b60405180910390fd5b600e548111156119cd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119c490613daa565b60405180910390fd5b5b6119d83382612a72565b50565b6119e3612218565b73ffffffffffffffffffffffffffffffffffffffff16611a016115b9565b73ffffffffffffffffffffffffffffffffffffffff161480611a775750611a26612218565b73ffffffffffffffffffffffffffffffffffffffff16600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16145b611ab6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611aad90613d8a565b60405180910390fd5b8060129080519060200190611acc929190613225565b5050565b611ad8612218565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611b46576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b3d90613dea565b60405180910390fd5b8060066000611b53612218565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff16611c00612218565b73ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c3183604051611c459190613bed565b60405180910390a35050565b600f5481565b611c628484846122d2565b611c6e84848484612a90565b611cad576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ca490613e8a565b60405180910390fd5b50505050565b6000600d54905090565b611cc5612218565b73ffffffffffffffffffffffffffffffffffffffff16611ce36115b9565b73ffffffffffffffffffffffffffffffffffffffff161480611d595750611d08612218565b73ffffffffffffffffffffffffffffffffffffffff16600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16145b611d98576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d8f90613d8a565b60405180910390fd5b600c60009054906101000a900460ff1615600c60006101000a81548160ff021916908315150217905550565b6060611dcf8261220b565b611e0e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e0590613dca565b60405180910390fd5b6000611e18612c27565b90506000815111611e385760405180602001604052806000815250611e63565b80611e4284612cb9565b604051602001611e53929190613b42565b6040516020818303038152906040525b915050919050565b601360009054906101000a900460ff1681565b611e86612218565b73ffffffffffffffffffffffffffffffffffffffff16611ea46115b9565b73ffffffffffffffffffffffffffffffffffffffff161480611f1a5750611ec9612218565b73ffffffffffffffffffffffffffffffffffffffff16600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16145b611f59576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f5090613d8a565b60405180910390fd5b80600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b612039612218565b73ffffffffffffffffffffffffffffffffffffffff166120576115b9565b73ffffffffffffffffffffffffffffffffffffffff1614806120cd575061207c612218565b73ffffffffffffffffffffffffffffffffffffffff16600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16145b61210c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161210390613d8a565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141561217c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161217390613c6a565b60405180910390fd5b612185816129ac565b50565b60105481565b600c60009054906101000a900460ff1681565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b6000805482109050919050565b600033905090565b826005600084815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550818373ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a4505050565b60006122dd82612812565b90506000816000015173ffffffffffffffffffffffffffffffffffffffff16612304612218565b73ffffffffffffffffffffffffffffffffffffffff1614806123605750612329612218565b73ffffffffffffffffffffffffffffffffffffffff1661234884610a2b565b73ffffffffffffffffffffffffffffffffffffffff16145b8061237c575061237b8260000151612376612218565b611f9d565b5b9050806123be576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123b590613e0a565b60405180910390fd5b8473ffffffffffffffffffffffffffffffffffffffff16826000015173ffffffffffffffffffffffffffffffffffffffff1614612430576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161242790613d6a565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614156124a0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161249790613cca565b60405180910390fd5b6124ad8585856001612e66565b6124bd6000848460000151612220565b6001600460008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160008282829054906101000a90046fffffffffffffffffffffffffffffffff160392506101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff1602179055506001600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160008282829054906101000a90046fffffffffffffffffffffffffffffffff160192506101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff160217905550836003600085815260200190815260200160002060000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550426003600085815260200190815260200160002060000160146101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055506000600184019050600073ffffffffffffffffffffffffffffffffffffffff166003600083815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614156127a2576127018161220b565b156127a15782600001516003600083815260200190815260200160002060000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555082602001516003600083815260200190815260200160002060000160146101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055505b5b50828473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a461280b8585856001612e6c565b5050505050565b61281a6132ab565b6128238261220b565b612862576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161285990613c8a565b60405180910390fd5b60008290505b6000811061296b576000600360008381526020019081526020016000206040518060400160405290816000820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016000820160149054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815250509050600073ffffffffffffffffffffffffffffffffffffffff16816000015173ffffffffffffffffffffffffffffffffffffffff161461295c5780925050506129a7565b50808060019003915050612868565b506040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161299e90613f2a565b60405180910390fd5b919050565b6000600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b612a8c828260405180602001604052806000815250612e72565b5050565b6000612ab18473ffffffffffffffffffffffffffffffffffffffff16612e84565b15612c1a578373ffffffffffffffffffffffffffffffffffffffff1663150b7a02612ada612218565b8786866040518563ffffffff1660e01b8152600401612afc9493929190613ba1565b602060405180830381600087803b158015612b1657600080fd5b505af1925050508015612b4757506040513d601f19601f82011682018060405250810190612b44919061360b565b60015b612bca573d8060008114612b77576040519150601f19603f3d011682016040523d82523d6000602084013e612b7c565b606091505b50600081511415612bc2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612bb990613e8a565b60405180910390fd5b805181602001fd5b63150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614915050612c1f565b600190505b949350505050565b606060128054612c3690614225565b80601f0160208091040260200160405190810160405280929190818152602001828054612c6290614225565b8015612caf5780601f10612c8457610100808354040283529160200191612caf565b820191906000526020600020905b815481529060010190602001808311612c9257829003601f168201915b5050505050905090565b60606000821415612d01576040518060400160405280600181526020017f30000000000000000000000000000000000000000000000000000000000000008152509050612e61565b600082905060005b60008214612d33578080612d1c90614288565b915050600a82612d2c91906140b0565b9150612d09565b60008167ffffffffffffffff811115612d75577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040519080825280601f01601f191660200182016040528015612da75781602001600182028036833780820191505090505b5090505b60008514612e5a57600182612dc0919061413b565b9150600a85612dcf91906142d1565b6030612ddb919061405a565b60f81b818381518110612e17577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600a85612e5391906140b0565b9450612dab565b8093505050505b919050565b50505050565b50505050565b612e7f8383836001612ea7565b505050565b6000808273ffffffffffffffffffffffffffffffffffffffff163b119050919050565b600080549050600073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff161415612f1d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612f1490613eaa565b60405180910390fd5b6000841415612f61576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612f5890613eca565b60405180910390fd5b612f6e6000868387612e66565b83600460008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160008282829054906101000a90046fffffffffffffffffffffffffffffffff160192506101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff16021790555083600460008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160108282829054906101000a90046fffffffffffffffffffffffffffffffff160192506101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff160217905550846003600083815260200190815260200160002060000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550426003600083815260200190815260200160002060000160146101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550600081905060005b8581101561320857818773ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a483156131f3576131b36000888488612a90565b6131f2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016131e990613e8a565b60405180910390fd5b5b8180600101925050808060010191505061313c565b50806000819055505061321e6000868387612e6c565b5050505050565b82805461323190614225565b90600052602060002090601f016020900481019282613253576000855561329a565b82601f1061326c57805160ff191683800117855561329a565b8280016001018555821561329a579182015b8281111561329957825182559160200191906001019061327e565b5b5090506132a791906132e5565b5090565b6040518060400160405280600073ffffffffffffffffffffffffffffffffffffffff168152602001600067ffffffffffffffff1681525090565b5b808211156132fe5760008160009055506001016132e6565b5090565b600061331561331084613faa565b613f85565b90508281526020810184848401111561332d57600080fd5b6133388482856141e3565b509392505050565b600061335361334e84613fdb565b613f85565b90508281526020810184848401111561336b57600080fd5b6133768482856141e3565b509392505050565b60008135905061338d81614aab565b92915050565b6000813590506133a281614ac2565b92915050565b6000813590506133b781614ad9565b92915050565b6000815190506133cc81614ad9565b92915050565b600082601f8301126133e357600080fd5b81356133f3848260208601613302565b91505092915050565b600082601f83011261340d57600080fd5b813561341d848260208601613340565b91505092915050565b60008135905061343581614af0565b92915050565b60006020828403121561344d57600080fd5b600061345b8482850161337e565b91505092915050565b6000806040838503121561347757600080fd5b60006134858582860161337e565b92505060206134968582860161337e565b9150509250929050565b6000806000606084860312156134b557600080fd5b60006134c38682870161337e565b93505060206134d48682870161337e565b92505060406134e586828701613426565b9150509250925092565b6000806000806080858703121561350557600080fd5b60006135138782880161337e565b94505060206135248782880161337e565b935050604061353587828801613426565b925050606085013567ffffffffffffffff81111561355257600080fd5b61355e878288016133d2565b91505092959194509250565b6000806040838503121561357d57600080fd5b600061358b8582860161337e565b925050602061359c85828601613393565b9150509250929050565b600080604083850312156135b957600080fd5b60006135c78582860161337e565b92505060206135d885828601613426565b9150509250929050565b6000602082840312156135f457600080fd5b6000613602848285016133a8565b91505092915050565b60006020828403121561361d57600080fd5b600061362b848285016133bd565b91505092915050565b60006020828403121561364657600080fd5b600082013567ffffffffffffffff81111561366057600080fd5b61366c848285016133fc565b91505092915050565b60006020828403121561368757600080fd5b600061369584828501613426565b91505092915050565b6136a78161416f565b82525050565b6136b681614181565b82525050565b60006136c78261400c565b6136d18185614022565b93506136e18185602086016141f2565b6136ea816143be565b840191505092915050565b600061370082614017565b61370a818561403e565b935061371a8185602086016141f2565b613723816143be565b840191505092915050565b600061373982614017565b613743818561404f565b93506137538185602086016141f2565b80840191505092915050565b600061376c60228361403e565b9150613777826143cf565b604082019050919050565b600061378f601e8361403e565b915061379a8261441e565b602082019050919050565b60006137b260268361403e565b91506137bd82614447565b604082019050919050565b60006137d5602a8361403e565b91506137e082614496565b604082019050919050565b60006137f860238361403e565b9150613803826144e5565b604082019050919050565b600061381b60258361403e565b915061382682614534565b604082019050919050565b600061383e601a8361403e565b915061384982614583565b602082019050919050565b600061386160168361403e565b915061386c826145ac565b602082019050919050565b600061388460398361403e565b915061388f826145d5565b604082019050919050565b60006138a7602b8361403e565b91506138b282614624565b604082019050919050565b60006138ca60268361403e565b91506138d582614673565b604082019050919050565b60006138ed60058361404f565b91506138f8826146c2565b600582019050919050565b600061391060208361403e565b915061391b826146eb565b602082019050919050565b600061393360158361403e565b915061393e82614714565b602082019050919050565b6000613956602f8361403e565b91506139618261473d565b604082019050919050565b6000613979601a8361403e565b91506139848261478c565b602082019050919050565b600061399c60328361403e565b91506139a7826147b5565b604082019050919050565b60006139bf60128361403e565b91506139ca82614804565b602082019050919050565b60006139e260228361403e565b91506139ed8261482d565b604082019050919050565b6000613a05600083614033565b9150613a108261487c565b600082019050919050565b6000613a2860108361403e565b9150613a338261487f565b602082019050919050565b6000613a4b60338361403e565b9150613a56826148a8565b604082019050919050565b6000613a6e60218361403e565b9150613a79826148f7565b604082019050919050565b6000613a9160288361403e565b9150613a9c82614946565b604082019050919050565b6000613ab4602e8361403e565b9150613abf82614995565b604082019050919050565b6000613ad7601f8361403e565b9150613ae2826149e4565b602082019050919050565b6000613afa602f8361403e565b9150613b0582614a0d565b604082019050919050565b6000613b1d602d8361403e565b9150613b2882614a5c565b604082019050919050565b613b3c816141d9565b82525050565b6000613b4e828561372e565b9150613b5a828461372e565b9150613b65826138e0565b91508190509392505050565b6000613b7c826139f8565b9150819050919050565b6000602082019050613b9b600083018461369e565b92915050565b6000608082019050613bb6600083018761369e565b613bc3602083018661369e565b613bd06040830185613b33565b8181036060830152613be281846136bc565b905095945050505050565b6000602082019050613c0260008301846136ad565b92915050565b60006020820190508181036000830152613c2281846136f5565b905092915050565b60006020820190508181036000830152613c438161375f565b9050919050565b60006020820190508181036000830152613c6381613782565b9050919050565b60006020820190508181036000830152613c83816137a5565b9050919050565b60006020820190508181036000830152613ca3816137c8565b9050919050565b60006020820190508181036000830152613cc3816137eb565b9050919050565b60006020820190508181036000830152613ce38161380e565b9050919050565b60006020820190508181036000830152613d0381613831565b9050919050565b60006020820190508181036000830152613d2381613854565b9050919050565b60006020820190508181036000830152613d4381613877565b9050919050565b60006020820190508181036000830152613d638161389a565b9050919050565b60006020820190508181036000830152613d83816138bd565b9050919050565b60006020820190508181036000830152613da381613903565b9050919050565b60006020820190508181036000830152613dc381613926565b9050919050565b60006020820190508181036000830152613de381613949565b9050919050565b60006020820190508181036000830152613e038161396c565b9050919050565b60006020820190508181036000830152613e238161398f565b9050919050565b60006020820190508181036000830152613e43816139b2565b9050919050565b60006020820190508181036000830152613e63816139d5565b9050919050565b60006020820190508181036000830152613e8381613a1b565b9050919050565b60006020820190508181036000830152613ea381613a3e565b9050919050565b60006020820190508181036000830152613ec381613a61565b9050919050565b60006020820190508181036000830152613ee381613a84565b9050919050565b60006020820190508181036000830152613f0381613aa7565b9050919050565b60006020820190508181036000830152613f2381613aca565b9050919050565b60006020820190508181036000830152613f4381613aed565b9050919050565b60006020820190508181036000830152613f6381613b10565b9050919050565b6000602082019050613f7f6000830184613b33565b92915050565b6000613f8f613fa0565b9050613f9b8282614257565b919050565b6000604051905090565b600067ffffffffffffffff821115613fc557613fc461438f565b5b613fce826143be565b9050602081019050919050565b600067ffffffffffffffff821115613ff657613ff561438f565b5b613fff826143be565b9050602081019050919050565b600081519050919050565b600081519050919050565b600082825260208201905092915050565b600081905092915050565b600082825260208201905092915050565b600081905092915050565b6000614065826141d9565b9150614070836141d9565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156140a5576140a4614302565b5b828201905092915050565b60006140bb826141d9565b91506140c6836141d9565b9250826140d6576140d5614331565b5b828204905092915050565b60006140ec826141d9565b91506140f7836141d9565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156141305761412f614302565b5b828202905092915050565b6000614146826141d9565b9150614151836141d9565b92508282101561416457614163614302565b5b828203905092915050565b600061417a826141b9565b9050919050565b60008115159050919050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b82818337600083830152505050565b60005b838110156142105780820151818401526020810190506141f5565b8381111561421f576000848401525b50505050565b6000600282049050600182168061423d57607f821691505b6020821081141561425157614250614360565b5b50919050565b614260826143be565b810181811067ffffffffffffffff8211171561427f5761427e61438f565b5b80604052505050565b6000614293826141d9565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8214156142c6576142c5614302565b5b600182019050919050565b60006142dc826141d9565b91506142e7836141d9565b9250826142f7576142f6614331565b5b828206905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000601f19601f8301169050919050565b7f455243373231413a206f776e657220696e646578206f7574206f6620626f756e60008201527f6473000000000000000000000000000000000000000000000000000000000000602082015250565b7f4e6f74206c697665207965742c205269636b732061726520636f6d696e670000600082015250565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f455243373231413a206f776e657220717565727920666f72206e6f6e6578697360008201527f74656e7420746f6b656e00000000000000000000000000000000000000000000602082015250565b7f455243373231413a20676c6f62616c20696e646578206f7574206f6620626f7560008201527f6e64730000000000000000000000000000000000000000000000000000000000602082015250565b7f455243373231413a207472616e7366657220746f20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b7f4e6f206d6f7265205269636b7320746f204265206d696e746564000000000000600082015250565b7f526573657276656420537570706c79204d696e74656400000000000000000000600082015250565b7f455243373231413a20617070726f76652063616c6c6572206973206e6f74206f60008201527f776e6572206e6f7220617070726f76656420666f7220616c6c00000000000000602082015250565b7f455243373231413a2062616c616e636520717565727920666f7220746865207a60008201527f65726f2061646472657373000000000000000000000000000000000000000000602082015250565b7f455243373231413a207472616e736665722066726f6d20696e636f727265637460008201527f206f776e65720000000000000000000000000000000000000000000000000000602082015250565b7f2e6a736f6e000000000000000000000000000000000000000000000000000000600082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f546f6f206d7563682061736b6564207065722054580000000000000000000000600082015250565b7f4552433732314d657461646174613a2055524920717565727920666f72206e6f60008201527f6e6578697374656e7420746f6b656e0000000000000000000000000000000000602082015250565b7f455243373231413a20617070726f766520746f2063616c6c6572000000000000600082015250565b7f455243373231413a207472616e736665722063616c6c6572206973206e6f742060008201527f6f776e6572206e6f7220617070726f7665640000000000000000000000000000602082015250565b7f45746820416d6f756e7420496e76616c69640000000000000000000000000000600082015250565b7f455243373231413a20617070726f76616c20746f2063757272656e74206f776e60008201527f6572000000000000000000000000000000000000000000000000000000000000602082015250565b50565b7f5472616e73666572206661696c65642e00000000000000000000000000000000600082015250565b7f455243373231413a207472616e7366657220746f206e6f6e204552433732315260008201527f6563656976657220696d706c656d656e74657200000000000000000000000000602082015250565b7f455243373231413a206d696e7420746f20746865207a65726f2061646472657360008201527f7300000000000000000000000000000000000000000000000000000000000000602082015250565b7f455243373231413a207175616e74697479206d7573742062652067726561746560008201527f72207468616e2030000000000000000000000000000000000000000000000000602082015250565b7f455243373231413a20756e61626c6520746f2067657420746f6b656e206f662060008201527f6f776e657220627920696e646578000000000000000000000000000000000000602082015250565b7f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00600082015250565b7f455243373231413a20756e61626c6520746f2064657465726d696e652074686560008201527f206f776e6572206f6620746f6b656e0000000000000000000000000000000000602082015250565b7f455243373231413a20617070726f76656420717565727920666f72206e6f6e6560008201527f78697374656e7420746f6b656e00000000000000000000000000000000000000602082015250565b614ab48161416f565b8114614abf57600080fd5b50565b614acb81614181565b8114614ad657600080fd5b50565b614ae28161418d565b8114614aed57600080fd5b50565b614af9816141d9565b8114614b0457600080fd5b5056fea2646970667358221220aa998b1245fd29568680d7dfd20b8307d046179a7b3c8e6a8f7ec1fd0e8e096d64736f6c63430008010033

Deployed Bytecode

0x60806040526004361061020f5760003560e01c80638c74bf0e11610118578063b9411601116100a0578063e25e16dc1161006f578063e25e16dc1461076a578063e985e9c514610793578063f2fde38b146107d0578063f447d29f146107f9578063f47de8f4146108245761020f565b8063b9411601146106c0578063c745adc3146106eb578063c87b56dd14610702578063d12397301461073f5761020f565b8063a0712d68116100e7578063a0712d68146105fe578063a0bcfc7f1461061a578063a22cb46514610643578063a70273571461066c578063b88d4fde146106975761020f565b80638c74bf0e146105545780638da5cb5b1461057d57806395d89b41146105a8578063a035b1fe146105d35761020f565b806344a0d68a1161019b57806370a082311161016a57806370a0823114610481578063715018a6146104be5780637437681e146104d55780637c3293db146105005780637d55094d1461053d5761020f565b806344a0d68a146103b357806344d19d2b146103dc5780634f6ccce7146104075780636352211e146104445761020f565b806318160ddd116101e257806318160ddd146102e257806323b872dd1461030d5780632f745c59146103365780633ccfd60b1461037357806342842e0e1461038a5761020f565b806301ffc9a71461021457806306fdde0314610251578063081812fc1461027c578063095ea7b3146102b9575b600080fd5b34801561022057600080fd5b5061023b600480360381019061023691906135e2565b61084f565b6040516102489190613bed565b60405180910390f35b34801561025d57600080fd5b50610266610999565b6040516102739190613c08565b60405180910390f35b34801561028857600080fd5b506102a3600480360381019061029e9190613675565b610a2b565b6040516102b09190613b86565b60405180910390f35b3480156102c557600080fd5b506102e060048036038101906102db91906135a6565b610ab0565b005b3480156102ee57600080fd5b506102f7610bc9565b6040516103049190613f6a565b60405180910390f35b34801561031957600080fd5b50610334600480360381019061032f91906134a0565b610bd2565b005b34801561034257600080fd5b5061035d600480360381019061035891906135a6565b610be2565b60405161036a9190613f6a565b60405180910390f35b34801561037f57600080fd5b50610388610dd4565b005b34801561039657600080fd5b506103b160048036038101906103ac91906134a0565b610fb4565b005b3480156103bf57600080fd5b506103da60048036038101906103d59190613675565b610fd4565b005b3480156103e857600080fd5b506103f16110b9565b6040516103fe9190613f6a565b60405180910390f35b34801561041357600080fd5b5061042e60048036038101906104299190613675565b6110bf565b60405161043b9190613f6a565b60405180910390f35b34801561045057600080fd5b5061046b60048036038101906104669190613675565b611112565b6040516104789190613b86565b60405180910390f35b34801561048d57600080fd5b506104a860048036038101906104a3919061343b565b611128565b6040516104b59190613f6a565b60405180910390f35b3480156104ca57600080fd5b506104d3611211565b005b3480156104e157600080fd5b506104ea6112f8565b6040516104f79190613f6a565b60405180910390f35b34801561050c57600080fd5b506105276004803603810190610522919061343b565b6112fe565b6040516105349190613f6a565b60405180910390f35b34801561054957600080fd5b50610552611316565b005b34801561056057600080fd5b5061057b60048036038101906105769190613675565b61141d565b005b34801561058957600080fd5b506105926115b9565b60405161059f9190613b86565b60405180910390f35b3480156105b457600080fd5b506105bd6115e3565b6040516105ca9190613c08565b60405180910390f35b3480156105df57600080fd5b506105e8611675565b6040516105f59190613f6a565b60405180910390f35b61061860048036038101906106139190613675565b61167b565b005b34801561062657600080fd5b50610641600480360381019061063c9190613634565b6119db565b005b34801561064f57600080fd5b5061066a6004803603810190610665919061356a565b611ad0565b005b34801561067857600080fd5b50610681611c51565b60405161068e9190613f6a565b60405180910390f35b3480156106a357600080fd5b506106be60048036038101906106b991906134ef565b611c57565b005b3480156106cc57600080fd5b506106d5611cb3565b6040516106e29190613f6a565b60405180910390f35b3480156106f757600080fd5b50610700611cbd565b005b34801561070e57600080fd5b5061072960048036038101906107249190613675565b611dc4565b6040516107369190613c08565b60405180910390f35b34801561074b57600080fd5b50610754611e6b565b6040516107619190613bed565b60405180910390f35b34801561077657600080fd5b50610791600480360381019061078c919061343b565b611e7e565b005b34801561079f57600080fd5b506107ba60048036038101906107b59190613464565b611f9d565b6040516107c79190613bed565b60405180910390f35b3480156107dc57600080fd5b506107f760048036038101906107f2919061343b565b612031565b005b34801561080557600080fd5b5061080e612188565b60405161081b9190613f6a565b60405180910390f35b34801561083057600080fd5b5061083961218e565b6040516108469190613bed565b60405180910390f35b60007f80ac58cd000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061091a57507f5b5e139f000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b8061098257507f780e9d63000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b806109925750610991826121a1565b5b9050919050565b6060600180546109a890614225565b80601f01602080910402602001604051908101604052809291908181526020018280546109d490614225565b8015610a215780601f106109f657610100808354040283529160200191610a21565b820191906000526020600020905b815481529060010190602001808311610a0457829003601f168201915b5050505050905090565b6000610a368261220b565b610a75576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a6c90613f4a565b60405180910390fd5b6005600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b6000610abb82611112565b90508073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610b2c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b2390613e4a565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16610b4b612218565b73ffffffffffffffffffffffffffffffffffffffff161480610b7a5750610b7981610b74612218565b611f9d565b5b610bb9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bb090613d2a565b60405180910390fd5b610bc4838383612220565b505050565b60008054905090565b610bdd8383836122d2565b505050565b6000610bed83611128565b8210610c2e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c2590613c2a565b60405180910390fd5b6000610c38610bc9565b905060008060005b83811015610d92576000600360008381526020019081526020016000206040518060400160405290816000820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016000820160149054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815250509050600073ffffffffffffffffffffffffffffffffffffffff16816000015173ffffffffffffffffffffffffffffffffffffffff1614610d3257806000015192505b8773ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610d845786841415610d7b578195505050505050610dce565b83806001019450505b508080600101915050610c40565b506040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dc590613eea565b60405180910390fd5b92915050565b610ddc612218565b73ffffffffffffffffffffffffffffffffffffffff16610dfa6115b9565b73ffffffffffffffffffffffffffffffffffffffff161480610e705750610e1f612218565b73ffffffffffffffffffffffffffffffffffffffff16600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16145b610eaf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ea690613d8a565b60405180910390fd5b60026009541415610ef5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610eec90613f0a565b60405180910390fd5b600260098190555060003373ffffffffffffffffffffffffffffffffffffffff1647604051610f2390613b71565b60006040518083038185875af1925050503d8060008114610f60576040519150601f19603f3d011682016040523d82523d6000602084013e610f65565b606091505b5050905080610fa9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fa090613e6a565b60405180910390fd5b506001600981905550565b610fcf83838360405180602001604052806000815250611c57565b505050565b610fdc612218565b73ffffffffffffffffffffffffffffffffffffffff16610ffa6115b9565b73ffffffffffffffffffffffffffffffffffffffff161480611070575061101f612218565b73ffffffffffffffffffffffffffffffffffffffff16600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16145b6110af576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110a690613d8a565b60405180910390fd5b80600d8190555050565b60115481565b60006110c9610bc9565b821061110a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161110190613caa565b60405180910390fd5b819050919050565b600061111d82612812565b600001519050919050565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611199576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161119090613d4a565b60405180910390fd5b600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160009054906101000a90046fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff169050919050565b611219612218565b73ffffffffffffffffffffffffffffffffffffffff166112376115b9565b73ffffffffffffffffffffffffffffffffffffffff1614806112ad575061125c612218565b73ffffffffffffffffffffffffffffffffffffffff16600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16145b6112ec576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112e390613d8a565b60405180910390fd5b6112f660006129ac565b565b600e5481565b60166020528060005260406000206000915090505481565b61131e612218565b73ffffffffffffffffffffffffffffffffffffffff1661133c6115b9565b73ffffffffffffffffffffffffffffffffffffffff1614806113b25750611361612218565b73ffffffffffffffffffffffffffffffffffffffff16600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16145b6113f1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113e890613d8a565b60405180910390fd5b601360009054906101000a900460ff1615601360006101000a81548160ff021916908315150217905550565b611425612218565b73ffffffffffffffffffffffffffffffffffffffff166114436115b9565b73ffffffffffffffffffffffffffffffffffffffff1614806114b95750611468612218565b73ffffffffffffffffffffffffffffffffffffffff16600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16145b6114f8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114ef90613d8a565b60405180910390fd5b600060115490506010548261150b610bc9565b611515919061405a565b1115611556576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161154d90613cea565b60405180910390fd5b81811015611599576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161159090613d0a565b60405180910390fd5b81816115a5919061413b565b6011819055506115b53383612a72565b5050565b6000600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6060600280546115f290614225565b80601f016020809104026020016040519081016040528092919081815260200182805461161e90614225565b801561166b5780601f106116405761010080835404028352916020019161166b565b820191906000526020600020905b81548152906001019060200180831161164e57829003601f168201915b5050505050905090565b600d5481565b600160105461168a919061405a565b81611693610bc9565b61169d919061405a565b1080156116ea5750600f54601660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054105b1561189257601054816116fb610bc9565b611705919061405a565b1115611746576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161173d90613cea565b60405180910390fd5b601360009054906101000a900460ff16611795576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161178c90613c4a565b60405180910390fd5b600d54600d54826117a691906140e1565b6117b0919061413b565b3410156117f2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117e990613e2a565b60405180910390fd5b600e54811115611837576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161182e90613daa565b60405180910390fd5b80601660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254611886919061405a565b925050819055506119ce565b6010548161189e610bc9565b6118a8919061405a565b11156118e9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118e090613cea565b60405180910390fd5b601360009054906101000a900460ff16611938576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161192f90613c4a565b60405180910390fd5b600d548161194691906140e1565b341015611988576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161197f90613e2a565b60405180910390fd5b600e548111156119cd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119c490613daa565b60405180910390fd5b5b6119d83382612a72565b50565b6119e3612218565b73ffffffffffffffffffffffffffffffffffffffff16611a016115b9565b73ffffffffffffffffffffffffffffffffffffffff161480611a775750611a26612218565b73ffffffffffffffffffffffffffffffffffffffff16600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16145b611ab6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611aad90613d8a565b60405180910390fd5b8060129080519060200190611acc929190613225565b5050565b611ad8612218565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611b46576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b3d90613dea565b60405180910390fd5b8060066000611b53612218565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff16611c00612218565b73ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c3183604051611c459190613bed565b60405180910390a35050565b600f5481565b611c628484846122d2565b611c6e84848484612a90565b611cad576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ca490613e8a565b60405180910390fd5b50505050565b6000600d54905090565b611cc5612218565b73ffffffffffffffffffffffffffffffffffffffff16611ce36115b9565b73ffffffffffffffffffffffffffffffffffffffff161480611d595750611d08612218565b73ffffffffffffffffffffffffffffffffffffffff16600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16145b611d98576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d8f90613d8a565b60405180910390fd5b600c60009054906101000a900460ff1615600c60006101000a81548160ff021916908315150217905550565b6060611dcf8261220b565b611e0e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e0590613dca565b60405180910390fd5b6000611e18612c27565b90506000815111611e385760405180602001604052806000815250611e63565b80611e4284612cb9565b604051602001611e53929190613b42565b6040516020818303038152906040525b915050919050565b601360009054906101000a900460ff1681565b611e86612218565b73ffffffffffffffffffffffffffffffffffffffff16611ea46115b9565b73ffffffffffffffffffffffffffffffffffffffff161480611f1a5750611ec9612218565b73ffffffffffffffffffffffffffffffffffffffff16600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16145b611f59576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f5090613d8a565b60405180910390fd5b80600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b612039612218565b73ffffffffffffffffffffffffffffffffffffffff166120576115b9565b73ffffffffffffffffffffffffffffffffffffffff1614806120cd575061207c612218565b73ffffffffffffffffffffffffffffffffffffffff16600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16145b61210c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161210390613d8a565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141561217c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161217390613c6a565b60405180910390fd5b612185816129ac565b50565b60105481565b600c60009054906101000a900460ff1681565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b6000805482109050919050565b600033905090565b826005600084815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550818373ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a4505050565b60006122dd82612812565b90506000816000015173ffffffffffffffffffffffffffffffffffffffff16612304612218565b73ffffffffffffffffffffffffffffffffffffffff1614806123605750612329612218565b73ffffffffffffffffffffffffffffffffffffffff1661234884610a2b565b73ffffffffffffffffffffffffffffffffffffffff16145b8061237c575061237b8260000151612376612218565b611f9d565b5b9050806123be576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123b590613e0a565b60405180910390fd5b8473ffffffffffffffffffffffffffffffffffffffff16826000015173ffffffffffffffffffffffffffffffffffffffff1614612430576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161242790613d6a565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614156124a0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161249790613cca565b60405180910390fd5b6124ad8585856001612e66565b6124bd6000848460000151612220565b6001600460008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160008282829054906101000a90046fffffffffffffffffffffffffffffffff160392506101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff1602179055506001600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160008282829054906101000a90046fffffffffffffffffffffffffffffffff160192506101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff160217905550836003600085815260200190815260200160002060000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550426003600085815260200190815260200160002060000160146101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055506000600184019050600073ffffffffffffffffffffffffffffffffffffffff166003600083815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614156127a2576127018161220b565b156127a15782600001516003600083815260200190815260200160002060000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555082602001516003600083815260200190815260200160002060000160146101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055505b5b50828473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a461280b8585856001612e6c565b5050505050565b61281a6132ab565b6128238261220b565b612862576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161285990613c8a565b60405180910390fd5b60008290505b6000811061296b576000600360008381526020019081526020016000206040518060400160405290816000820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016000820160149054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815250509050600073ffffffffffffffffffffffffffffffffffffffff16816000015173ffffffffffffffffffffffffffffffffffffffff161461295c5780925050506129a7565b50808060019003915050612868565b506040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161299e90613f2a565b60405180910390fd5b919050565b6000600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b612a8c828260405180602001604052806000815250612e72565b5050565b6000612ab18473ffffffffffffffffffffffffffffffffffffffff16612e84565b15612c1a578373ffffffffffffffffffffffffffffffffffffffff1663150b7a02612ada612218565b8786866040518563ffffffff1660e01b8152600401612afc9493929190613ba1565b602060405180830381600087803b158015612b1657600080fd5b505af1925050508015612b4757506040513d601f19601f82011682018060405250810190612b44919061360b565b60015b612bca573d8060008114612b77576040519150601f19603f3d011682016040523d82523d6000602084013e612b7c565b606091505b50600081511415612bc2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612bb990613e8a565b60405180910390fd5b805181602001fd5b63150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614915050612c1f565b600190505b949350505050565b606060128054612c3690614225565b80601f0160208091040260200160405190810160405280929190818152602001828054612c6290614225565b8015612caf5780601f10612c8457610100808354040283529160200191612caf565b820191906000526020600020905b815481529060010190602001808311612c9257829003601f168201915b5050505050905090565b60606000821415612d01576040518060400160405280600181526020017f30000000000000000000000000000000000000000000000000000000000000008152509050612e61565b600082905060005b60008214612d33578080612d1c90614288565b915050600a82612d2c91906140b0565b9150612d09565b60008167ffffffffffffffff811115612d75577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040519080825280601f01601f191660200182016040528015612da75781602001600182028036833780820191505090505b5090505b60008514612e5a57600182612dc0919061413b565b9150600a85612dcf91906142d1565b6030612ddb919061405a565b60f81b818381518110612e17577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600a85612e5391906140b0565b9450612dab565b8093505050505b919050565b50505050565b50505050565b612e7f8383836001612ea7565b505050565b6000808273ffffffffffffffffffffffffffffffffffffffff163b119050919050565b600080549050600073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff161415612f1d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612f1490613eaa565b60405180910390fd5b6000841415612f61576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612f5890613eca565b60405180910390fd5b612f6e6000868387612e66565b83600460008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160008282829054906101000a90046fffffffffffffffffffffffffffffffff160192506101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff16021790555083600460008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160108282829054906101000a90046fffffffffffffffffffffffffffffffff160192506101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff160217905550846003600083815260200190815260200160002060000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550426003600083815260200190815260200160002060000160146101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550600081905060005b8581101561320857818773ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a483156131f3576131b36000888488612a90565b6131f2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016131e990613e8a565b60405180910390fd5b5b8180600101925050808060010191505061313c565b50806000819055505061321e6000868387612e6c565b5050505050565b82805461323190614225565b90600052602060002090601f016020900481019282613253576000855561329a565b82601f1061326c57805160ff191683800117855561329a565b8280016001018555821561329a579182015b8281111561329957825182559160200191906001019061327e565b5b5090506132a791906132e5565b5090565b6040518060400160405280600073ffffffffffffffffffffffffffffffffffffffff168152602001600067ffffffffffffffff1681525090565b5b808211156132fe5760008160009055506001016132e6565b5090565b600061331561331084613faa565b613f85565b90508281526020810184848401111561332d57600080fd5b6133388482856141e3565b509392505050565b600061335361334e84613fdb565b613f85565b90508281526020810184848401111561336b57600080fd5b6133768482856141e3565b509392505050565b60008135905061338d81614aab565b92915050565b6000813590506133a281614ac2565b92915050565b6000813590506133b781614ad9565b92915050565b6000815190506133cc81614ad9565b92915050565b600082601f8301126133e357600080fd5b81356133f3848260208601613302565b91505092915050565b600082601f83011261340d57600080fd5b813561341d848260208601613340565b91505092915050565b60008135905061343581614af0565b92915050565b60006020828403121561344d57600080fd5b600061345b8482850161337e565b91505092915050565b6000806040838503121561347757600080fd5b60006134858582860161337e565b92505060206134968582860161337e565b9150509250929050565b6000806000606084860312156134b557600080fd5b60006134c38682870161337e565b93505060206134d48682870161337e565b92505060406134e586828701613426565b9150509250925092565b6000806000806080858703121561350557600080fd5b60006135138782880161337e565b94505060206135248782880161337e565b935050604061353587828801613426565b925050606085013567ffffffffffffffff81111561355257600080fd5b61355e878288016133d2565b91505092959194509250565b6000806040838503121561357d57600080fd5b600061358b8582860161337e565b925050602061359c85828601613393565b9150509250929050565b600080604083850312156135b957600080fd5b60006135c78582860161337e565b92505060206135d885828601613426565b9150509250929050565b6000602082840312156135f457600080fd5b6000613602848285016133a8565b91505092915050565b60006020828403121561361d57600080fd5b600061362b848285016133bd565b91505092915050565b60006020828403121561364657600080fd5b600082013567ffffffffffffffff81111561366057600080fd5b61366c848285016133fc565b91505092915050565b60006020828403121561368757600080fd5b600061369584828501613426565b91505092915050565b6136a78161416f565b82525050565b6136b681614181565b82525050565b60006136c78261400c565b6136d18185614022565b93506136e18185602086016141f2565b6136ea816143be565b840191505092915050565b600061370082614017565b61370a818561403e565b935061371a8185602086016141f2565b613723816143be565b840191505092915050565b600061373982614017565b613743818561404f565b93506137538185602086016141f2565b80840191505092915050565b600061376c60228361403e565b9150613777826143cf565b604082019050919050565b600061378f601e8361403e565b915061379a8261441e565b602082019050919050565b60006137b260268361403e565b91506137bd82614447565b604082019050919050565b60006137d5602a8361403e565b91506137e082614496565b604082019050919050565b60006137f860238361403e565b9150613803826144e5565b604082019050919050565b600061381b60258361403e565b915061382682614534565b604082019050919050565b600061383e601a8361403e565b915061384982614583565b602082019050919050565b600061386160168361403e565b915061386c826145ac565b602082019050919050565b600061388460398361403e565b915061388f826145d5565b604082019050919050565b60006138a7602b8361403e565b91506138b282614624565b604082019050919050565b60006138ca60268361403e565b91506138d582614673565b604082019050919050565b60006138ed60058361404f565b91506138f8826146c2565b600582019050919050565b600061391060208361403e565b915061391b826146eb565b602082019050919050565b600061393360158361403e565b915061393e82614714565b602082019050919050565b6000613956602f8361403e565b91506139618261473d565b604082019050919050565b6000613979601a8361403e565b91506139848261478c565b602082019050919050565b600061399c60328361403e565b91506139a7826147b5565b604082019050919050565b60006139bf60128361403e565b91506139ca82614804565b602082019050919050565b60006139e260228361403e565b91506139ed8261482d565b604082019050919050565b6000613a05600083614033565b9150613a108261487c565b600082019050919050565b6000613a2860108361403e565b9150613a338261487f565b602082019050919050565b6000613a4b60338361403e565b9150613a56826148a8565b604082019050919050565b6000613a6e60218361403e565b9150613a79826148f7565b604082019050919050565b6000613a9160288361403e565b9150613a9c82614946565b604082019050919050565b6000613ab4602e8361403e565b9150613abf82614995565b604082019050919050565b6000613ad7601f8361403e565b9150613ae2826149e4565b602082019050919050565b6000613afa602f8361403e565b9150613b0582614a0d565b604082019050919050565b6000613b1d602d8361403e565b9150613b2882614a5c565b604082019050919050565b613b3c816141d9565b82525050565b6000613b4e828561372e565b9150613b5a828461372e565b9150613b65826138e0565b91508190509392505050565b6000613b7c826139f8565b9150819050919050565b6000602082019050613b9b600083018461369e565b92915050565b6000608082019050613bb6600083018761369e565b613bc3602083018661369e565b613bd06040830185613b33565b8181036060830152613be281846136bc565b905095945050505050565b6000602082019050613c0260008301846136ad565b92915050565b60006020820190508181036000830152613c2281846136f5565b905092915050565b60006020820190508181036000830152613c438161375f565b9050919050565b60006020820190508181036000830152613c6381613782565b9050919050565b60006020820190508181036000830152613c83816137a5565b9050919050565b60006020820190508181036000830152613ca3816137c8565b9050919050565b60006020820190508181036000830152613cc3816137eb565b9050919050565b60006020820190508181036000830152613ce38161380e565b9050919050565b60006020820190508181036000830152613d0381613831565b9050919050565b60006020820190508181036000830152613d2381613854565b9050919050565b60006020820190508181036000830152613d4381613877565b9050919050565b60006020820190508181036000830152613d638161389a565b9050919050565b60006020820190508181036000830152613d83816138bd565b9050919050565b60006020820190508181036000830152613da381613903565b9050919050565b60006020820190508181036000830152613dc381613926565b9050919050565b60006020820190508181036000830152613de381613949565b9050919050565b60006020820190508181036000830152613e038161396c565b9050919050565b60006020820190508181036000830152613e238161398f565b9050919050565b60006020820190508181036000830152613e43816139b2565b9050919050565b60006020820190508181036000830152613e63816139d5565b9050919050565b60006020820190508181036000830152613e8381613a1b565b9050919050565b60006020820190508181036000830152613ea381613a3e565b9050919050565b60006020820190508181036000830152613ec381613a61565b9050919050565b60006020820190508181036000830152613ee381613a84565b9050919050565b60006020820190508181036000830152613f0381613aa7565b9050919050565b60006020820190508181036000830152613f2381613aca565b9050919050565b60006020820190508181036000830152613f4381613aed565b9050919050565b60006020820190508181036000830152613f6381613b10565b9050919050565b6000602082019050613f7f6000830184613b33565b92915050565b6000613f8f613fa0565b9050613f9b8282614257565b919050565b6000604051905090565b600067ffffffffffffffff821115613fc557613fc461438f565b5b613fce826143be565b9050602081019050919050565b600067ffffffffffffffff821115613ff657613ff561438f565b5b613fff826143be565b9050602081019050919050565b600081519050919050565b600081519050919050565b600082825260208201905092915050565b600081905092915050565b600082825260208201905092915050565b600081905092915050565b6000614065826141d9565b9150614070836141d9565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156140a5576140a4614302565b5b828201905092915050565b60006140bb826141d9565b91506140c6836141d9565b9250826140d6576140d5614331565b5b828204905092915050565b60006140ec826141d9565b91506140f7836141d9565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156141305761412f614302565b5b828202905092915050565b6000614146826141d9565b9150614151836141d9565b92508282101561416457614163614302565b5b828203905092915050565b600061417a826141b9565b9050919050565b60008115159050919050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b82818337600083830152505050565b60005b838110156142105780820151818401526020810190506141f5565b8381111561421f576000848401525b50505050565b6000600282049050600182168061423d57607f821691505b6020821081141561425157614250614360565b5b50919050565b614260826143be565b810181811067ffffffffffffffff8211171561427f5761427e61438f565b5b80604052505050565b6000614293826141d9565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8214156142c6576142c5614302565b5b600182019050919050565b60006142dc826141d9565b91506142e7836141d9565b9250826142f7576142f6614331565b5b828206905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000601f19601f8301169050919050565b7f455243373231413a206f776e657220696e646578206f7574206f6620626f756e60008201527f6473000000000000000000000000000000000000000000000000000000000000602082015250565b7f4e6f74206c697665207965742c205269636b732061726520636f6d696e670000600082015250565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f455243373231413a206f776e657220717565727920666f72206e6f6e6578697360008201527f74656e7420746f6b656e00000000000000000000000000000000000000000000602082015250565b7f455243373231413a20676c6f62616c20696e646578206f7574206f6620626f7560008201527f6e64730000000000000000000000000000000000000000000000000000000000602082015250565b7f455243373231413a207472616e7366657220746f20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b7f4e6f206d6f7265205269636b7320746f204265206d696e746564000000000000600082015250565b7f526573657276656420537570706c79204d696e74656400000000000000000000600082015250565b7f455243373231413a20617070726f76652063616c6c6572206973206e6f74206f60008201527f776e6572206e6f7220617070726f76656420666f7220616c6c00000000000000602082015250565b7f455243373231413a2062616c616e636520717565727920666f7220746865207a60008201527f65726f2061646472657373000000000000000000000000000000000000000000602082015250565b7f455243373231413a207472616e736665722066726f6d20696e636f727265637460008201527f206f776e65720000000000000000000000000000000000000000000000000000602082015250565b7f2e6a736f6e000000000000000000000000000000000000000000000000000000600082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f546f6f206d7563682061736b6564207065722054580000000000000000000000600082015250565b7f4552433732314d657461646174613a2055524920717565727920666f72206e6f60008201527f6e6578697374656e7420746f6b656e0000000000000000000000000000000000602082015250565b7f455243373231413a20617070726f766520746f2063616c6c6572000000000000600082015250565b7f455243373231413a207472616e736665722063616c6c6572206973206e6f742060008201527f6f776e6572206e6f7220617070726f7665640000000000000000000000000000602082015250565b7f45746820416d6f756e7420496e76616c69640000000000000000000000000000600082015250565b7f455243373231413a20617070726f76616c20746f2063757272656e74206f776e60008201527f6572000000000000000000000000000000000000000000000000000000000000602082015250565b50565b7f5472616e73666572206661696c65642e00000000000000000000000000000000600082015250565b7f455243373231413a207472616e7366657220746f206e6f6e204552433732315260008201527f6563656976657220696d706c656d656e74657200000000000000000000000000602082015250565b7f455243373231413a206d696e7420746f20746865207a65726f2061646472657360008201527f7300000000000000000000000000000000000000000000000000000000000000602082015250565b7f455243373231413a207175616e74697479206d7573742062652067726561746560008201527f72207468616e2030000000000000000000000000000000000000000000000000602082015250565b7f455243373231413a20756e61626c6520746f2067657420746f6b656e206f662060008201527f6f776e657220627920696e646578000000000000000000000000000000000000602082015250565b7f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00600082015250565b7f455243373231413a20756e61626c6520746f2064657465726d696e652074686560008201527f206f776e6572206f6620746f6b656e0000000000000000000000000000000000602082015250565b7f455243373231413a20617070726f76656420717565727920666f72206e6f6e6560008201527f78697374656e7420746f6b656e00000000000000000000000000000000000000602082015250565b614ab48161416f565b8114614abf57600080fd5b50565b614acb81614181565b8114614ad657600080fd5b50565b614ae28161418d565b8114614aed57600080fd5b50565b614af9816141d9565b8114614b0457600080fd5b5056fea2646970667358221220aa998b1245fd29568680d7dfd20b8307d046179a7b3c8e6a8f7ec1fd0e8e096d64736f6c63430008010033

Deployed Bytecode Sourcemap

24073:4262:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15508:372;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17031:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18117:214;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17696:413;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;14309:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18807:170;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;14612:886;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;27819:186;;;;;;;;;;;;;:::i;:::-;;18985:185;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;27726:85;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;24482:34;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14417:187;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16899:124;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15888:221;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12934:103;;;;;;;;;;;;;:::i;:::-;;24354:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;24712:46;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;28239:87;;;;;;;;;;;;;:::i;:::-;;26162:358;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12679:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17139:104;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;24302:45;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;26532:869;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;27620:98;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;18339:288;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;24394:35;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19178:355;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;27412:84;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;28134:97;;;;;;;;;;;;;:::i;:::-;;24834:395;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;24552:25;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;28013:113;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;18635:164;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13045:201;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;24436:39;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;24223:35;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15508:372;15610:4;15662:25;15647:40;;;:11;:40;;;;:105;;;;15719:33;15704:48;;;:11;:48;;;;15647:105;:172;;;;15784:35;15769:50;;;:11;:50;;;;15647:172;:225;;;;15836:36;15860:11;15836:23;:36::i;:::-;15647:225;15627:245;;15508:372;;;:::o;17031:100::-;17085:13;17118:5;17111:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17031:100;:::o;18117:214::-;18185:7;18213:16;18221:7;18213;:16::i;:::-;18205:74;;;;;;;;;;;;:::i;:::-;;;;;;;;;18299:15;:24;18315:7;18299:24;;;;;;;;;;;;;;;;;;;;;18292:31;;18117:214;;;:::o;17696:413::-;17769:13;17785:24;17801:7;17785:15;:24::i;:::-;17769:40;;17834:5;17828:11;;:2;:11;;;;17820:58;;;;;;;;;;;;:::i;:::-;;;;;;;;;17929:5;17913:21;;:12;:10;:12::i;:::-;:21;;;:62;;;;17938:37;17955:5;17962:12;:10;:12::i;:::-;17938:16;:37::i;:::-;17913:62;17891:169;;;;;;;;;;;;:::i;:::-;;;;;;;;;18073:28;18082:2;18086:7;18095:5;18073:8;:28::i;:::-;17696:413;;;:::o;14309:100::-;14362:7;14389:12;;14382:19;;14309:100;:::o;18807:170::-;18941:28;18951:4;18957:2;18961:7;18941:9;:28::i;:::-;18807:170;;;:::o;14612:886::-;14701:7;14737:16;14747:5;14737:9;:16::i;:::-;14729:5;:24;14721:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;14803:22;14828:13;:11;:13::i;:::-;14803:38;;14852:19;14882:25;14950:9;14945:466;14965:14;14961:1;:18;14945:466;;;15005:31;15039:11;:14;15051:1;15039:14;;;;;;;;;;;15005:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15102:1;15076:28;;:9;:14;;;:28;;;15072:111;;15149:9;:14;;;15129:34;;15072:111;15226:5;15205:26;;:17;:26;;;15201:195;;;15275:5;15260:11;:20;15256:85;;;15316:1;15309:8;;;;;;;;;15256:85;15363:13;;;;;;;15201:195;14945:466;14981:3;;;;;;;14945:466;;;;15434:56;;;;;;;;;;:::i;:::-;;;;;;;;14612:886;;;;;:::o;27819:186::-;12825:12;:10;:12::i;:::-;12814:23;;:7;:5;:7::i;:::-;:23;;;:54;;;;12856:12;:10;:12::i;:::-;12841:27;;:11;;;;;;;;;;;:27;;;12814:54;12806:100;;;;;;;;;;;;:::i;:::-;;;;;;;;;11752:1:::1;11902:7;;:19;;11894:63;;;;;;;;;;;;:::i;:::-;;;;;;;;;11752:1;11970:7;:18;;;;27883:12:::2;27901:10;:15;;27924:21;27901:49;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27882:68;;;27969:7;27961:36;;;;;;;;;;;;:::i;:::-;;;;;;;;;12001:1;11708::::1;12015:7;:22;;;;27819:186::o:0;18985:185::-;19123:39;19140:4;19146:2;19150:7;19123:39;;;;;;;;;;;;:16;:39::i;:::-;18985:185;;;:::o;27726:85::-;12825:12;:10;:12::i;:::-;12814:23;;:7;:5;:7::i;:::-;:23;;;:54;;;;12856:12;:10;:12::i;:::-;12841:27;;:11;;;;;;;;;;;:27;;;12814:54;12806:100;;;;;;;;;;;;:::i;:::-;;;;;;;;;27797:6:::1;27789:5;:14;;;;27726:85:::0;:::o;24482:34::-;;;;:::o;14417:187::-;14484:7;14520:13;:11;:13::i;:::-;14512:5;:21;14504:69;;;;;;;;;;;;:::i;:::-;;;;;;;;;14591:5;14584:12;;14417:187;;;:::o;16899:124::-;16963:7;16990:20;17002:7;16990:11;:20::i;:::-;:25;;;16983:32;;16899:124;;;:::o;15888:221::-;15952:7;15997:1;15980:19;;:5;:19;;;;15972:75;;;;;;;;;;;;:::i;:::-;;;;;;;;;16073:12;:19;16086:5;16073:19;;;;;;;;;;;;;;;:27;;;;;;;;;;;;16065:36;;16058:43;;15888:221;;;:::o;12934:103::-;12825:12;:10;:12::i;:::-;12814:23;;:7;:5;:7::i;:::-;:23;;;:54;;;;12856:12;:10;:12::i;:::-;12841:27;;:11;;;;;;;;;;;:27;;;12814:54;12806:100;;;;;;;;;;;;:::i;:::-;;;;;;;;;12999:30:::1;13026:1;12999:18;:30::i;:::-;12934:103::o:0;24354:33::-;;;;:::o;24712:46::-;;;;;;;;;;;;;;;;;:::o;28239:87::-;12825:12;:10;:12::i;:::-;12814:23;;:7;:5;:7::i;:::-;:23;;;:54;;;;12856:12;:10;:12::i;:::-;12841:27;;:11;;;;;;;;;;;:27;;;12814:54;12806:100;;;;;;;;;;;;:::i;:::-;;;;;;;;;28307:11:::1;;;;;;;;;;;28306:12;28292:11;;:26;;;;;;;;;;;;;;;;;;28239:87::o:0;26162:358::-;12825:12;:10;:12::i;:::-;12814:23;;:7;:5;:7::i;:::-;:23;;;:54;;;;12856:12;:10;:12::i;:::-;12841:27;;:11;;;;;;;;;;;:27;;;12814:54;12806:100;;;;;;;;;;;;:::i;:::-;;;;;;;;;26235:17:::1;26255:14;;26235:34;;26316:8;;26306:6;26290:13;:11;:13::i;:::-;:22;;;;:::i;:::-;:34;;26282:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;26387:6;26374:9;:19;;26366:54;;;;;;;;;;;;:::i;:::-;;;;;;;;;26466:6;26454:9;:18;;;;:::i;:::-;26437:14;:35;;;;26483:29;26493:10;26505:6;26483:9;:29::i;:::-;12917:1;26162:358:::0;:::o;12679:87::-;12725:7;12752:6;;;;;;;;;;;12745:13;;12679:87;:::o;17139:104::-;17195:13;17228:7;17221:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17139:104;:::o;24302:45::-;;;;:::o;26532:869::-;26641:1;26630:8;;:12;;;;:::i;:::-;26621:6;26605:13;:11;:13::i;:::-;:22;;;;:::i;:::-;:37;26604:87;;;;;26674:16;;26648:11;:23;26660:10;26648:23;;;;;;;;;;;;;;;;:42;26604:87;26599:753;;;26749:8;;26739:6;26723:13;:11;:13::i;:::-;:22;;;;:::i;:::-;:34;;26715:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;26807:11;;;;;;;;;;;26799:54;;;;;;;;;;;;:::i;:::-;;;;;;;;;26904:5;;26895;;26886:6;:14;;;;:::i;:::-;26885:24;;;;:::i;:::-;26872:9;:37;;26864:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;26961:5;;26951:6;:15;;26943:49;;;;;;;;;;;;:::i;:::-;;;;;;;;;27030:6;27003:11;:23;27015:10;27003:23;;;;;;;;;;;;;;;;:33;;;;;;;:::i;:::-;;;;;;;;26599:753;;;27107:8;;27097:6;27081:13;:11;:13::i;:::-;:22;;;;:::i;:::-;:34;;27073:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;27165:11;;;;;;;;;;;27157:54;;;;;;;;;;;;:::i;:::-;;;;;;;;;27252:5;;27243:6;:14;;;;:::i;:::-;27230:9;:27;;27222:58;;;;;;;;;;;;:::i;:::-;;;;;;;;;27309:5;;27299:6;:15;;27291:49;;;;;;;;;;;;:::i;:::-;;;;;;;;;26599:753;27364:29;27374:10;27386:6;27364:9;:29::i;:::-;26532:869;:::o;27620:98::-;12825:12;:10;:12::i;:::-;12814:23;;:7;:5;:7::i;:::-;:23;;;:54;;;;12856:12;:10;:12::i;:::-;12841:27;;:11;;;;;;;;;;;:27;;;12814:54;12806:100;;;;;;;;;;;;:::i;:::-;;;;;;;;;27702:8:::1;27692:7;:18;;;;;;;;;;;;:::i;:::-;;27620:98:::0;:::o;18339:288::-;18446:12;:10;:12::i;:::-;18434:24;;:8;:24;;;;18426:63;;;;;;;;;;;;:::i;:::-;;;;;;;;;18547:8;18502:18;:32;18521:12;:10;:12::i;:::-;18502:32;;;;;;;;;;;;;;;:42;18535:8;18502:42;;;;;;;;;;;;;;;;:53;;;;;;;;;;;;;;;;;;18600:8;18571:48;;18586:12;:10;:12::i;:::-;18571:48;;;18610:8;18571:48;;;;;;:::i;:::-;;;;;;;;18339:288;;:::o;24394:35::-;;;;:::o;19178:355::-;19337:28;19347:4;19353:2;19357:7;19337:9;:28::i;:::-;19398:48;19421:4;19427:2;19431:7;19440:5;19398:22;:48::i;:::-;19376:149;;;;;;;;;;;;:::i;:::-;;;;;;;;;19178:355;;;;:::o;27412:84::-;27456:7;27483:5;;27476:12;;27412:84;:::o;28134:97::-;12825:12;:10;:12::i;:::-;12814:23;;:7;:5;:7::i;:::-;:23;;;:54;;;;12856:12;:10;:12::i;:::-;12841:27;;:11;;;;;;;;;;;:27;;;12814:54;12806:100;;;;;;;;;;;;:::i;:::-;;;;;;;;;28210:13:::1;;;;;;;;;;;28209:14;28193:13;;:30;;;;;;;;;;;;;;;;;;28134:97::o:0;24834:395::-;24908:13;24942:17;24950:8;24942:7;:17::i;:::-;24934:76;;;;;;;;;;;;:::i;:::-;;;;;;;;;25021:28;25052:10;:8;:10::i;:::-;25021:41;;25111:1;25086:14;25080:28;:32;:141;;;;;;;;;;;;;;;;;25152:14;25167:26;25184:8;25167:16;:26::i;:::-;25135:67;;;;;;;;;:::i;:::-;;;;;;;;;;;;;25080:141;25073:148;;;24834:395;;;:::o;24552:25::-;;;;;;;;;;;;;:::o;28013:113::-;12825:12;:10;:12::i;:::-;12814:23;;:7;:5;:7::i;:::-;:23;;;:54;;;;12856:12;:10;:12::i;:::-;12841:27;;:11;;;;;;;;;;;:27;;;12814:54;12806:100;;;;;;;;;;;;:::i;:::-;;;;;;;;;28109:9:::1;28089:17;;:29;;;;;;;;;;;;;;;;;;28013:113:::0;:::o;18635:164::-;18732:4;18756:18;:25;18775:5;18756:25;;;;;;;;;;;;;;;:35;18782:8;18756:35;;;;;;;;;;;;;;;;;;;;;;;;;18749:42;;18635:164;;;;:::o;13045:201::-;12825:12;:10;:12::i;:::-;12814:23;;:7;:5;:7::i;:::-;:23;;;:54;;;;12856:12;:10;:12::i;:::-;12841:27;;:11;;;;;;;;;;;:27;;;12814:54;12806:100;;;;;;;;;;;;:::i;:::-;;;;;;;;;13154:1:::1;13134:22;;:8;:22;;;;13126:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;13210:28;13229:8;13210:18;:28::i;:::-;13045:201:::0;:::o;24436:39::-;;;;:::o;24223:35::-;;;;;;;;;;;;;:::o;9607:157::-;9692:4;9731:25;9716:40;;;:11;:40;;;;9709:47;;9607:157;;;:::o;19541:111::-;19598:4;19632:12;;19622:7;:22;19615:29;;19541:111;;;:::o;12112:98::-;12165:7;12192:10;12185:17;;12112:98;:::o;22725:196::-;22867:2;22840:15;:24;22856:7;22840:24;;;;;;;;;;;;:29;;;;;;;;;;;;;;;;;;22905:7;22901:2;22885:28;;22894:5;22885:28;;;;;;;;;;;;22725:196;;;:::o;21250:1467::-;21365:35;21403:20;21415:7;21403:11;:20::i;:::-;21365:58;;21436:22;21478:13;:18;;;21462:34;;:12;:10;:12::i;:::-;:34;;;:87;;;;21537:12;:10;:12::i;:::-;21513:36;;:20;21525:7;21513:11;:20::i;:::-;:36;;;21462:87;:154;;;;21566:50;21583:13;:18;;;21603:12;:10;:12::i;:::-;21566:16;:50::i;:::-;21462:154;21436:181;;21638:17;21630:80;;;;;;;;;;;;:::i;:::-;;;;;;;;;21753:4;21731:26;;:13;:18;;;:26;;;21723:77;;;;;;;;;;;;:::i;:::-;;;;;;;;;21833:1;21819:16;;:2;:16;;;;21811:66;;;;;;;;;;;;:::i;:::-;;;;;;;;;21890:43;21912:4;21918:2;21922:7;21931:1;21890:21;:43::i;:::-;21946:49;21963:1;21967:7;21976:13;:18;;;21946:8;:49::i;:::-;22073:1;22043:12;:18;22056:4;22043:18;;;;;;;;;;;;;;;:26;;;:31;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22117:1;22089:12;:16;22102:2;22089:16;;;;;;;;;;;;;;;:24;;;:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22163:2;22135:11;:20;22147:7;22135:20;;;;;;;;;;;:25;;;:30;;;;;;;;;;;;;;;;;;22225:15;22180:11;:20;22192:7;22180:20;;;;;;;;;;;:35;;;:61;;;;;;;;;;;;;;;;;;22258:19;22290:1;22280:7;:11;22258:33;;22351:1;22310:43;;:11;:24;22322:11;22310:24;;;;;;;;;;;:29;;;;;;;;;;;;:43;;;22306:295;;;22378:20;22386:11;22378:7;:20::i;:::-;22374:212;;;22455:13;:18;;;22423:11;:24;22435:11;22423:24;;;;;;;;;;;:29;;;:50;;;;;;;;;;;;;;;;;;22538:13;:28;;;22496:11;:24;22508:11;22496:24;;;;;;;;;;;:39;;;:70;;;;;;;;;;;;;;;;;;22374:212;22306:295;21250:1467;22648:7;22644:2;22629:27;;22638:4;22629:27;;;;;;;;;;;;22667:42;22688:4;22694:2;22698:7;22707:1;22667:20;:42::i;:::-;21250:1467;;;;;:::o;16354:537::-;16415:21;;:::i;:::-;16457:16;16465:7;16457;:16::i;:::-;16449:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;16563:12;16578:7;16563:22;;16558:245;16595:1;16587:4;:9;16558:245;;16625:31;16659:11;:17;16671:4;16659:17;;;;;;;;;;;16625:51;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16725:1;16699:28;;:9;:14;;;:28;;;16695:93;;16759:9;16752:16;;;;;;16695:93;16558:245;16598:6;;;;;;;;16558:245;;;;16826:57;;;;;;;;;;:::i;:::-;;;;;;;;16354:537;;;;:::o;13254:191::-;13328:16;13347:6;;;;;;;;;;;13328:25;;13373:8;13364:6;;:17;;;;;;;;;;;;;;;;;;13428:8;13397:40;;13418:8;13397:40;;;;;;;;;;;;13254:191;;:::o;19660:104::-;19729:27;19739:2;19743:8;19729:27;;;;;;;;;;;;:9;:27::i;:::-;19660:104;;:::o;22929:804::-;23084:4;23105:15;:2;:13;;;:15::i;:::-;23101:625;;;23157:2;23141:36;;;23178:12;:10;:12::i;:::-;23192:4;23198:7;23207:5;23141:72;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;23137:534;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23404:1;23387:6;:13;:18;23383:273;;;23430:61;;;;;;;;;;:::i;:::-;;;;;;;;23383:273;23606:6;23600:13;23591:6;23587:2;23583:15;23576:38;23137:534;23274:45;;;23264:55;;;:6;:55;;;;23257:62;;;;;23101:625;23710:4;23703:11;;22929:804;;;;;;;:::o;27504:108::-;27564:13;27597:7;27590:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27504:108;:::o;4276:542::-;4332:13;4381:1;4372:5;:10;4368:53;;;4399:10;;;;;;;;;;;;;;;;;;;;;4368:53;4431:12;4446:5;4431:20;;4462:14;4487:78;4502:1;4494:4;:9;4487:78;;4520:8;;;;;:::i;:::-;;;;4551:2;4543:10;;;;;:::i;:::-;;;4487:78;;;4575:19;4607:6;4597:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4575:39;;4625:154;4641:1;4632:5;:10;4625:154;;4669:1;4659:11;;;;;:::i;:::-;;;4736:2;4728:5;:10;;;;:::i;:::-;4715:2;:24;;;;:::i;:::-;4702:39;;4685:6;4692;4685:14;;;;;;;;;;;;;;;;;;;:56;;;;;;;;;;;4765:2;4756:11;;;;;:::i;:::-;;;4625:154;;;4803:6;4789:21;;;;;4276:542;;;;:::o;23741:159::-;;;;;:::o;23908:158::-;;;;;:::o;19772:163::-;19895:32;19901:2;19905:8;19915:5;19922:4;19895:5;:32::i;:::-;19772:163;;;:::o;5697:125::-;5757:4;5813:1;5791:7;:19;;;:23;5784:30;;5697:125;;;:::o;19943:1298::-;20082:20;20105:12;;20082:35;;20150:1;20136:16;;:2;:16;;;;20128:62;;;;;;;;;;;;:::i;:::-;;;;;;;;;20221:1;20209:8;:13;;20201:66;;;;;;;;;;;;:::i;:::-;;;;;;;;;20280:61;20310:1;20314:2;20318:12;20332:8;20280:21;:61::i;:::-;20415:8;20379:12;:16;20392:2;20379:16;;;;;;;;;;;;;;;:24;;;:45;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20480:8;20439:12;:16;20452:2;20439:16;;;;;;;;;;;;;;;:29;;;:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20539:2;20506:11;:25;20518:12;20506:25;;;;;;;;;;;:30;;;:35;;;;;;;;;;;;;;;;;;20606:15;20556:11;:25;20568:12;20556:25;;;;;;;;;;;:40;;;:66;;;;;;;;;;;;;;;;;;20639:20;20662:12;20639:35;;20696:9;20691:415;20711:8;20707:1;:12;20691:415;;;20775:12;20771:2;20750:38;;20767:1;20750:38;;;;;;;;;;;;20811:4;20807:249;;;20874:59;20905:1;20909:2;20913:12;20927:5;20874:22;:59::i;:::-;20840:196;;;;;;;;;;;;:::i;:::-;;;;;;;;;20807:249;21076:14;;;;;;;20721:3;;;;;;;20691:415;;;;21137:12;21122;:27;;;;19943:1298;21173:60;21202:1;21206:2;21210:12;21224:8;21173:20;:60::i;:::-;19943:1298;;;;;:::o;-1:-1:-1:-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;:::o;7:343:1:-;;109:65;125:48;166:6;125:48;:::i;:::-;109:65;:::i;:::-;100:74;;197:6;190:5;183:21;235:4;228:5;224:16;273:3;264:6;259:3;255:16;252:25;249:2;;;290:1;287;280:12;249:2;303:41;337:6;332:3;327;303:41;:::i;:::-;90:260;;;;;;:::o;356:345::-;;459:66;475:49;517:6;475:49;:::i;:::-;459:66;:::i;:::-;450:75;;548:6;541:5;534:21;586:4;579:5;575:16;624:3;615:6;610:3;606:16;603:25;600:2;;;641:1;638;631:12;600:2;654:41;688:6;683:3;678;654:41;:::i;:::-;440:261;;;;;;:::o;707:139::-;;791:6;778:20;769:29;;807:33;834:5;807:33;:::i;:::-;759:87;;;;:::o;852:133::-;;933:6;920:20;911:29;;949:30;973:5;949:30;:::i;:::-;901:84;;;;:::o;991:137::-;;1074:6;1061:20;1052:29;;1090:32;1116:5;1090:32;:::i;:::-;1042:86;;;;:::o;1134:141::-;;1221:6;1215:13;1206:22;;1237:32;1263:5;1237:32;:::i;:::-;1196:79;;;;:::o;1294:271::-;;1398:3;1391:4;1383:6;1379:17;1375:27;1365:2;;1416:1;1413;1406:12;1365:2;1456:6;1443:20;1481:78;1555:3;1547:6;1540:4;1532:6;1528:17;1481:78;:::i;:::-;1472:87;;1355:210;;;;;:::o;1585:273::-;;1690:3;1683:4;1675:6;1671:17;1667:27;1657:2;;1708:1;1705;1698:12;1657:2;1748:6;1735:20;1773:79;1848:3;1840:6;1833:4;1825:6;1821:17;1773:79;:::i;:::-;1764:88;;1647:211;;;;;:::o;1864:139::-;;1948:6;1935:20;1926:29;;1964:33;1991:5;1964:33;:::i;:::-;1916:87;;;;:::o;2009:262::-;;2117:2;2105:9;2096:7;2092:23;2088:32;2085:2;;;2133:1;2130;2123:12;2085:2;2176:1;2201:53;2246:7;2237:6;2226:9;2222:22;2201:53;:::i;:::-;2191:63;;2147:117;2075:196;;;;:::o;2277:407::-;;;2402:2;2390:9;2381:7;2377:23;2373:32;2370:2;;;2418:1;2415;2408:12;2370:2;2461:1;2486:53;2531:7;2522:6;2511:9;2507:22;2486:53;:::i;:::-;2476:63;;2432:117;2588:2;2614:53;2659:7;2650:6;2639:9;2635:22;2614:53;:::i;:::-;2604:63;;2559:118;2360:324;;;;;:::o;2690:552::-;;;;2832:2;2820:9;2811:7;2807:23;2803:32;2800:2;;;2848:1;2845;2838:12;2800:2;2891:1;2916:53;2961:7;2952:6;2941:9;2937:22;2916:53;:::i;:::-;2906:63;;2862:117;3018:2;3044:53;3089:7;3080:6;3069:9;3065:22;3044:53;:::i;:::-;3034:63;;2989:118;3146:2;3172:53;3217:7;3208:6;3197:9;3193:22;3172:53;:::i;:::-;3162:63;;3117:118;2790:452;;;;;:::o;3248:809::-;;;;;3416:3;3404:9;3395:7;3391:23;3387:33;3384:2;;;3433:1;3430;3423:12;3384:2;3476:1;3501:53;3546:7;3537:6;3526:9;3522:22;3501:53;:::i;:::-;3491:63;;3447:117;3603:2;3629:53;3674:7;3665:6;3654:9;3650:22;3629:53;:::i;:::-;3619:63;;3574:118;3731:2;3757:53;3802:7;3793:6;3782:9;3778:22;3757:53;:::i;:::-;3747:63;;3702:118;3887:2;3876:9;3872:18;3859:32;3918:18;3910:6;3907:30;3904:2;;;3950:1;3947;3940:12;3904:2;3978:62;4032:7;4023:6;4012:9;4008:22;3978:62;:::i;:::-;3968:72;;3830:220;3374:683;;;;;;;:::o;4063:401::-;;;4185:2;4173:9;4164:7;4160:23;4156:32;4153:2;;;4201:1;4198;4191:12;4153:2;4244:1;4269:53;4314:7;4305:6;4294:9;4290:22;4269:53;:::i;:::-;4259:63;;4215:117;4371:2;4397:50;4439:7;4430:6;4419:9;4415:22;4397:50;:::i;:::-;4387:60;;4342:115;4143:321;;;;;:::o;4470:407::-;;;4595:2;4583:9;4574:7;4570:23;4566:32;4563:2;;;4611:1;4608;4601:12;4563:2;4654:1;4679:53;4724:7;4715:6;4704:9;4700:22;4679:53;:::i;:::-;4669:63;;4625:117;4781:2;4807:53;4852:7;4843:6;4832:9;4828:22;4807:53;:::i;:::-;4797:63;;4752:118;4553:324;;;;;:::o;4883:260::-;;4990:2;4978:9;4969:7;4965:23;4961:32;4958:2;;;5006:1;5003;4996:12;4958:2;5049:1;5074:52;5118:7;5109:6;5098:9;5094:22;5074:52;:::i;:::-;5064:62;;5020:116;4948:195;;;;:::o;5149:282::-;;5267:2;5255:9;5246:7;5242:23;5238:32;5235:2;;;5283:1;5280;5273:12;5235:2;5326:1;5351:63;5406:7;5397:6;5386:9;5382:22;5351:63;:::i;:::-;5341:73;;5297:127;5225:206;;;;:::o;5437:375::-;;5555:2;5543:9;5534:7;5530:23;5526:32;5523:2;;;5571:1;5568;5561:12;5523:2;5642:1;5631:9;5627:17;5614:31;5672:18;5664:6;5661:30;5658:2;;;5704:1;5701;5694:12;5658:2;5732:63;5787:7;5778:6;5767:9;5763:22;5732:63;:::i;:::-;5722:73;;5585:220;5513:299;;;;:::o;5818:262::-;;5926:2;5914:9;5905:7;5901:23;5897:32;5894:2;;;5942:1;5939;5932:12;5894:2;5985:1;6010:53;6055:7;6046:6;6035:9;6031:22;6010:53;:::i;:::-;6000:63;;5956:117;5884:196;;;;:::o;6086:118::-;6173:24;6191:5;6173:24;:::i;:::-;6168:3;6161:37;6151:53;;:::o;6210:109::-;6291:21;6306:5;6291:21;:::i;:::-;6286:3;6279:34;6269:50;;:::o;6325:360::-;;6439:38;6471:5;6439:38;:::i;:::-;6493:70;6556:6;6551:3;6493:70;:::i;:::-;6486:77;;6572:52;6617:6;6612:3;6605:4;6598:5;6594:16;6572:52;:::i;:::-;6649:29;6671:6;6649:29;:::i;:::-;6644:3;6640:39;6633:46;;6415:270;;;;;:::o;6691:364::-;;6807:39;6840:5;6807:39;:::i;:::-;6862:71;6926:6;6921:3;6862:71;:::i;:::-;6855:78;;6942:52;6987:6;6982:3;6975:4;6968:5;6964:16;6942:52;:::i;:::-;7019:29;7041:6;7019:29;:::i;:::-;7014:3;7010:39;7003:46;;6783:272;;;;;:::o;7061:377::-;;7195:39;7228:5;7195:39;:::i;:::-;7250:89;7332:6;7327:3;7250:89;:::i;:::-;7243:96;;7348:52;7393:6;7388:3;7381:4;7374:5;7370:16;7348:52;:::i;:::-;7425:6;7420:3;7416:16;7409:23;;7171:267;;;;;:::o;7444:366::-;;7607:67;7671:2;7666:3;7607:67;:::i;:::-;7600:74;;7683:93;7772:3;7683:93;:::i;:::-;7801:2;7796:3;7792:12;7785:19;;7590:220;;;:::o;7816:366::-;;7979:67;8043:2;8038:3;7979:67;:::i;:::-;7972:74;;8055:93;8144:3;8055:93;:::i;:::-;8173:2;8168:3;8164:12;8157:19;;7962:220;;;:::o;8188:366::-;;8351:67;8415:2;8410:3;8351:67;:::i;:::-;8344:74;;8427:93;8516:3;8427:93;:::i;:::-;8545:2;8540:3;8536:12;8529:19;;8334:220;;;:::o;8560:366::-;;8723:67;8787:2;8782:3;8723:67;:::i;:::-;8716:74;;8799:93;8888:3;8799:93;:::i;:::-;8917:2;8912:3;8908:12;8901:19;;8706:220;;;:::o;8932:366::-;;9095:67;9159:2;9154:3;9095:67;:::i;:::-;9088:74;;9171:93;9260:3;9171:93;:::i;:::-;9289:2;9284:3;9280:12;9273:19;;9078:220;;;:::o;9304:366::-;;9467:67;9531:2;9526:3;9467:67;:::i;:::-;9460:74;;9543:93;9632:3;9543:93;:::i;:::-;9661:2;9656:3;9652:12;9645:19;;9450:220;;;:::o;9676:366::-;;9839:67;9903:2;9898:3;9839:67;:::i;:::-;9832:74;;9915:93;10004:3;9915:93;:::i;:::-;10033:2;10028:3;10024:12;10017:19;;9822:220;;;:::o;10048:366::-;;10211:67;10275:2;10270:3;10211:67;:::i;:::-;10204:74;;10287:93;10376:3;10287:93;:::i;:::-;10405:2;10400:3;10396:12;10389:19;;10194:220;;;:::o;10420:366::-;;10583:67;10647:2;10642:3;10583:67;:::i;:::-;10576:74;;10659:93;10748:3;10659:93;:::i;:::-;10777:2;10772:3;10768:12;10761:19;;10566:220;;;:::o;10792:366::-;;10955:67;11019:2;11014:3;10955:67;:::i;:::-;10948:74;;11031:93;11120:3;11031:93;:::i;:::-;11149:2;11144:3;11140:12;11133:19;;10938:220;;;:::o;11164:366::-;;11327:67;11391:2;11386:3;11327:67;:::i;:::-;11320:74;;11403:93;11492:3;11403:93;:::i;:::-;11521:2;11516:3;11512:12;11505:19;;11310:220;;;:::o;11536:400::-;;11717:84;11799:1;11794:3;11717:84;:::i;:::-;11710:91;;11810:93;11899:3;11810:93;:::i;:::-;11928:1;11923:3;11919:11;11912:18;;11700:236;;;:::o;11942:366::-;;12105:67;12169:2;12164:3;12105:67;:::i;:::-;12098:74;;12181:93;12270:3;12181:93;:::i;:::-;12299:2;12294:3;12290:12;12283:19;;12088:220;;;:::o;12314:366::-;;12477:67;12541:2;12536:3;12477:67;:::i;:::-;12470:74;;12553:93;12642:3;12553:93;:::i;:::-;12671:2;12666:3;12662:12;12655:19;;12460:220;;;:::o;12686:366::-;;12849:67;12913:2;12908:3;12849:67;:::i;:::-;12842:74;;12925:93;13014:3;12925:93;:::i;:::-;13043:2;13038:3;13034:12;13027:19;;12832:220;;;:::o;13058:366::-;;13221:67;13285:2;13280:3;13221:67;:::i;:::-;13214:74;;13297:93;13386:3;13297:93;:::i;:::-;13415:2;13410:3;13406:12;13399:19;;13204:220;;;:::o;13430:366::-;;13593:67;13657:2;13652:3;13593:67;:::i;:::-;13586:74;;13669:93;13758:3;13669:93;:::i;:::-;13787:2;13782:3;13778:12;13771:19;;13576:220;;;:::o;13802:366::-;;13965:67;14029:2;14024:3;13965:67;:::i;:::-;13958:74;;14041:93;14130:3;14041:93;:::i;:::-;14159:2;14154:3;14150:12;14143:19;;13948:220;;;:::o;14174:366::-;;14337:67;14401:2;14396:3;14337:67;:::i;:::-;14330:74;;14413:93;14502:3;14413:93;:::i;:::-;14531:2;14526:3;14522:12;14515:19;;14320:220;;;:::o;14546:398::-;;14726:83;14807:1;14802:3;14726:83;:::i;:::-;14719:90;;14818:93;14907:3;14818:93;:::i;:::-;14936:1;14931:3;14927:11;14920:18;;14709:235;;;:::o;14950:366::-;;15113:67;15177:2;15172:3;15113:67;:::i;:::-;15106:74;;15189:93;15278:3;15189:93;:::i;:::-;15307:2;15302:3;15298:12;15291:19;;15096:220;;;:::o;15322:366::-;;15485:67;15549:2;15544:3;15485:67;:::i;:::-;15478:74;;15561:93;15650:3;15561:93;:::i;:::-;15679:2;15674:3;15670:12;15663:19;;15468:220;;;:::o;15694:366::-;;15857:67;15921:2;15916:3;15857:67;:::i;:::-;15850:74;;15933:93;16022:3;15933:93;:::i;:::-;16051:2;16046:3;16042:12;16035:19;;15840:220;;;:::o;16066:366::-;;16229:67;16293:2;16288:3;16229:67;:::i;:::-;16222:74;;16305:93;16394:3;16305:93;:::i;:::-;16423:2;16418:3;16414:12;16407:19;;16212:220;;;:::o;16438:366::-;;16601:67;16665:2;16660:3;16601:67;:::i;:::-;16594:74;;16677:93;16766:3;16677:93;:::i;:::-;16795:2;16790:3;16786:12;16779:19;;16584:220;;;:::o;16810:366::-;;16973:67;17037:2;17032:3;16973:67;:::i;:::-;16966:74;;17049:93;17138:3;17049:93;:::i;:::-;17167:2;17162:3;17158:12;17151:19;;16956:220;;;:::o;17182:366::-;;17345:67;17409:2;17404:3;17345:67;:::i;:::-;17338:74;;17421:93;17510:3;17421:93;:::i;:::-;17539:2;17534:3;17530:12;17523:19;;17328:220;;;:::o;17554:366::-;;17717:67;17781:2;17776:3;17717:67;:::i;:::-;17710:74;;17793:93;17882:3;17793:93;:::i;:::-;17911:2;17906:3;17902:12;17895:19;;17700:220;;;:::o;17926:118::-;18013:24;18031:5;18013:24;:::i;:::-;18008:3;18001:37;17991:53;;:::o;18050:701::-;;18353:95;18444:3;18435:6;18353:95;:::i;:::-;18346:102;;18465:95;18556:3;18547:6;18465:95;:::i;:::-;18458:102;;18577:148;18721:3;18577:148;:::i;:::-;18570:155;;18742:3;18735:10;;18335:416;;;;;:::o;18757:379::-;;18963:147;19106:3;18963:147;:::i;:::-;18956:154;;19127:3;19120:10;;18945:191;;;:::o;19142:222::-;;19273:2;19262:9;19258:18;19250:26;;19286:71;19354:1;19343:9;19339:17;19330:6;19286:71;:::i;:::-;19240:124;;;;:::o;19370:640::-;;19603:3;19592:9;19588:19;19580:27;;19617:71;19685:1;19674:9;19670:17;19661:6;19617:71;:::i;:::-;19698:72;19766:2;19755:9;19751:18;19742:6;19698:72;:::i;:::-;19780;19848:2;19837:9;19833:18;19824:6;19780:72;:::i;:::-;19899:9;19893:4;19889:20;19884:2;19873:9;19869:18;19862:48;19927:76;19998:4;19989:6;19927:76;:::i;:::-;19919:84;;19570:440;;;;;;;:::o;20016:210::-;;20141:2;20130:9;20126:18;20118:26;;20154:65;20216:1;20205:9;20201:17;20192:6;20154:65;:::i;:::-;20108:118;;;;:::o;20232:313::-;;20383:2;20372:9;20368:18;20360:26;;20432:9;20426:4;20422:20;20418:1;20407:9;20403:17;20396:47;20460:78;20533:4;20524:6;20460:78;:::i;:::-;20452:86;;20350:195;;;;:::o;20551:419::-;;20755:2;20744:9;20740:18;20732:26;;20804:9;20798:4;20794:20;20790:1;20779:9;20775:17;20768:47;20832:131;20958:4;20832:131;:::i;:::-;20824:139;;20722:248;;;:::o;20976:419::-;;21180:2;21169:9;21165:18;21157:26;;21229:9;21223:4;21219:20;21215:1;21204:9;21200:17;21193:47;21257:131;21383:4;21257:131;:::i;:::-;21249:139;;21147:248;;;:::o;21401:419::-;;21605:2;21594:9;21590:18;21582:26;;21654:9;21648:4;21644:20;21640:1;21629:9;21625:17;21618:47;21682:131;21808:4;21682:131;:::i;:::-;21674:139;;21572:248;;;:::o;21826:419::-;;22030:2;22019:9;22015:18;22007:26;;22079:9;22073:4;22069:20;22065:1;22054:9;22050:17;22043:47;22107:131;22233:4;22107:131;:::i;:::-;22099:139;;21997:248;;;:::o;22251:419::-;;22455:2;22444:9;22440:18;22432:26;;22504:9;22498:4;22494:20;22490:1;22479:9;22475:17;22468:47;22532:131;22658:4;22532:131;:::i;:::-;22524:139;;22422:248;;;:::o;22676:419::-;;22880:2;22869:9;22865:18;22857:26;;22929:9;22923:4;22919:20;22915:1;22904:9;22900:17;22893:47;22957:131;23083:4;22957:131;:::i;:::-;22949:139;;22847:248;;;:::o;23101:419::-;;23305:2;23294:9;23290:18;23282:26;;23354:9;23348:4;23344:20;23340:1;23329:9;23325:17;23318:47;23382:131;23508:4;23382:131;:::i;:::-;23374:139;;23272:248;;;:::o;23526:419::-;;23730:2;23719:9;23715:18;23707:26;;23779:9;23773:4;23769:20;23765:1;23754:9;23750:17;23743:47;23807:131;23933:4;23807:131;:::i;:::-;23799:139;;23697:248;;;:::o;23951:419::-;;24155:2;24144:9;24140:18;24132:26;;24204:9;24198:4;24194:20;24190:1;24179:9;24175:17;24168:47;24232:131;24358:4;24232:131;:::i;:::-;24224:139;;24122:248;;;:::o;24376:419::-;;24580:2;24569:9;24565:18;24557:26;;24629:9;24623:4;24619:20;24615:1;24604:9;24600:17;24593:47;24657:131;24783:4;24657:131;:::i;:::-;24649:139;;24547:248;;;:::o;24801:419::-;;25005:2;24994:9;24990:18;24982:26;;25054:9;25048:4;25044:20;25040:1;25029:9;25025:17;25018:47;25082:131;25208:4;25082:131;:::i;:::-;25074:139;;24972:248;;;:::o;25226:419::-;;25430:2;25419:9;25415:18;25407:26;;25479:9;25473:4;25469:20;25465:1;25454:9;25450:17;25443:47;25507:131;25633:4;25507:131;:::i;:::-;25499:139;;25397:248;;;:::o;25651:419::-;;25855:2;25844:9;25840:18;25832:26;;25904:9;25898:4;25894:20;25890:1;25879:9;25875:17;25868:47;25932:131;26058:4;25932:131;:::i;:::-;25924:139;;25822:248;;;:::o;26076:419::-;;26280:2;26269:9;26265:18;26257:26;;26329:9;26323:4;26319:20;26315:1;26304:9;26300:17;26293:47;26357:131;26483:4;26357:131;:::i;:::-;26349:139;;26247:248;;;:::o;26501:419::-;;26705:2;26694:9;26690:18;26682:26;;26754:9;26748:4;26744:20;26740:1;26729:9;26725:17;26718:47;26782:131;26908:4;26782:131;:::i;:::-;26774:139;;26672:248;;;:::o;26926:419::-;;27130:2;27119:9;27115:18;27107:26;;27179:9;27173:4;27169:20;27165:1;27154:9;27150:17;27143:47;27207:131;27333:4;27207:131;:::i;:::-;27199:139;;27097:248;;;:::o;27351:419::-;;27555:2;27544:9;27540:18;27532:26;;27604:9;27598:4;27594:20;27590:1;27579:9;27575:17;27568:47;27632:131;27758:4;27632:131;:::i;:::-;27624:139;;27522:248;;;:::o;27776:419::-;;27980:2;27969:9;27965:18;27957:26;;28029:9;28023:4;28019:20;28015:1;28004:9;28000:17;27993:47;28057:131;28183:4;28057:131;:::i;:::-;28049:139;;27947:248;;;:::o;28201:419::-;;28405:2;28394:9;28390:18;28382:26;;28454:9;28448:4;28444:20;28440:1;28429:9;28425:17;28418:47;28482:131;28608:4;28482:131;:::i;:::-;28474:139;;28372:248;;;:::o;28626:419::-;;28830:2;28819:9;28815:18;28807:26;;28879:9;28873:4;28869:20;28865:1;28854:9;28850:17;28843:47;28907:131;29033:4;28907:131;:::i;:::-;28899:139;;28797:248;;;:::o;29051:419::-;;29255:2;29244:9;29240:18;29232:26;;29304:9;29298:4;29294:20;29290:1;29279:9;29275:17;29268:47;29332:131;29458:4;29332:131;:::i;:::-;29324:139;;29222:248;;;:::o;29476:419::-;;29680:2;29669:9;29665:18;29657:26;;29729:9;29723:4;29719:20;29715:1;29704:9;29700:17;29693:47;29757:131;29883:4;29757:131;:::i;:::-;29749:139;;29647:248;;;:::o;29901:419::-;;30105:2;30094:9;30090:18;30082:26;;30154:9;30148:4;30144:20;30140:1;30129:9;30125:17;30118:47;30182:131;30308:4;30182:131;:::i;:::-;30174:139;;30072:248;;;:::o;30326:419::-;;30530:2;30519:9;30515:18;30507:26;;30579:9;30573:4;30569:20;30565:1;30554:9;30550:17;30543:47;30607:131;30733:4;30607:131;:::i;:::-;30599:139;;30497:248;;;:::o;30751:419::-;;30955:2;30944:9;30940:18;30932:26;;31004:9;30998:4;30994:20;30990:1;30979:9;30975:17;30968:47;31032:131;31158:4;31032:131;:::i;:::-;31024:139;;30922:248;;;:::o;31176:419::-;;31380:2;31369:9;31365:18;31357:26;;31429:9;31423:4;31419:20;31415:1;31404:9;31400:17;31393:47;31457:131;31583:4;31457:131;:::i;:::-;31449:139;;31347:248;;;:::o;31601:222::-;;31732:2;31721:9;31717:18;31709:26;;31745:71;31813:1;31802:9;31798:17;31789:6;31745:71;:::i;:::-;31699:124;;;;:::o;31829:129::-;;31890:20;;:::i;:::-;31880:30;;31919:33;31947:4;31939:6;31919:33;:::i;:::-;31870:88;;;:::o;31964:75::-;;32030:2;32024:9;32014:19;;32004:35;:::o;32045:307::-;;32196:18;32188:6;32185:30;32182:2;;;32218:18;;:::i;:::-;32182:2;32256:29;32278:6;32256:29;:::i;:::-;32248:37;;32340:4;32334;32330:15;32322:23;;32111:241;;;:::o;32358:308::-;;32510:18;32502:6;32499:30;32496:2;;;32532:18;;:::i;:::-;32496:2;32570:29;32592:6;32570:29;:::i;:::-;32562:37;;32654:4;32648;32644:15;32636:23;;32425:241;;;:::o;32672:98::-;;32757:5;32751:12;32741:22;;32730:40;;;:::o;32776:99::-;;32862:5;32856:12;32846:22;;32835:40;;;:::o;32881:168::-;;32998:6;32993:3;32986:19;33038:4;33033:3;33029:14;33014:29;;32976:73;;;;:::o;33055:147::-;;33193:3;33178:18;;33168:34;;;;:::o;33208:169::-;;33326:6;33321:3;33314:19;33366:4;33361:3;33357:14;33342:29;;33304:73;;;;:::o;33383:148::-;;33522:3;33507:18;;33497:34;;;;:::o;33537:305::-;;33596:20;33614:1;33596:20;:::i;:::-;33591:25;;33630:20;33648:1;33630:20;:::i;:::-;33625:25;;33784:1;33716:66;33712:74;33709:1;33706:81;33703:2;;;33790:18;;:::i;:::-;33703:2;33834:1;33831;33827:9;33820:16;;33581:261;;;;:::o;33848:185::-;;33905:20;33923:1;33905:20;:::i;:::-;33900:25;;33939:20;33957:1;33939:20;:::i;:::-;33934:25;;33978:1;33968:2;;33983:18;;:::i;:::-;33968:2;34025:1;34022;34018:9;34013:14;;33890:143;;;;:::o;34039:348::-;;34102:20;34120:1;34102:20;:::i;:::-;34097:25;;34136:20;34154:1;34136:20;:::i;:::-;34131:25;;34324:1;34256:66;34252:74;34249:1;34246:81;34241:1;34234:9;34227:17;34223:105;34220:2;;;34331:18;;:::i;:::-;34220:2;34379:1;34376;34372:9;34361:20;;34087:300;;;;:::o;34393:191::-;;34453:20;34471:1;34453:20;:::i;:::-;34448:25;;34487:20;34505:1;34487:20;:::i;:::-;34482:25;;34526:1;34523;34520:8;34517:2;;;34531:18;;:::i;:::-;34517:2;34576:1;34573;34569:9;34561:17;;34438:146;;;;:::o;34590:96::-;;34656:24;34674:5;34656:24;:::i;:::-;34645:35;;34635:51;;;:::o;34692:90::-;;34769:5;34762:13;34755:21;34744:32;;34734:48;;;:::o;34788:149::-;;34864:66;34857:5;34853:78;34842:89;;34832:105;;;:::o;34943:126::-;;35020:42;35013:5;35009:54;34998:65;;34988:81;;;:::o;35075:77::-;;35141:5;35130:16;;35120:32;;;:::o;35158:154::-;35242:6;35237:3;35232;35219:30;35304:1;35295:6;35290:3;35286:16;35279:27;35209:103;;;:::o;35318:307::-;35386:1;35396:113;35410:6;35407:1;35404:13;35396:113;;;35495:1;35490:3;35486:11;35480:18;35476:1;35471:3;35467:11;35460:39;35432:2;35429:1;35425:10;35420:15;;35396:113;;;35527:6;35524:1;35521:13;35518:2;;;35607:1;35598:6;35593:3;35589:16;35582:27;35518:2;35367:258;;;;:::o;35631:320::-;;35712:1;35706:4;35702:12;35692:22;;35759:1;35753:4;35749:12;35780:18;35770:2;;35836:4;35828:6;35824:17;35814:27;;35770:2;35898;35890:6;35887:14;35867:18;35864:38;35861:2;;;35917:18;;:::i;:::-;35861:2;35682:269;;;;:::o;35957:281::-;36040:27;36062:4;36040:27;:::i;:::-;36032:6;36028:40;36170:6;36158:10;36155:22;36134:18;36122:10;36119:34;36116:62;36113:2;;;36181:18;;:::i;:::-;36113:2;36221:10;36217:2;36210:22;36000:238;;;:::o;36244:233::-;;36306:24;36324:5;36306:24;:::i;:::-;36297:33;;36352:66;36345:5;36342:77;36339:2;;;36422:18;;:::i;:::-;36339:2;36469:1;36462:5;36458:13;36451:20;;36287:190;;;:::o;36483:176::-;;36532:20;36550:1;36532:20;:::i;:::-;36527:25;;36566:20;36584:1;36566:20;:::i;:::-;36561:25;;36605:1;36595:2;;36610:18;;:::i;:::-;36595:2;36651:1;36648;36644:9;36639:14;;36517:142;;;;:::o;36665:180::-;36713:77;36710:1;36703:88;36810:4;36807:1;36800:15;36834:4;36831:1;36824:15;36851:180;36899:77;36896:1;36889:88;36996:4;36993:1;36986:15;37020:4;37017:1;37010:15;37037:180;37085:77;37082:1;37075:88;37182:4;37179:1;37172:15;37206:4;37203:1;37196:15;37223:180;37271:77;37268:1;37261:88;37368:4;37365:1;37358:15;37392:4;37389:1;37382:15;37409:102;;37501:2;37497:7;37492:2;37485:5;37481:14;37477:28;37467:38;;37457:54;;;:::o;37517:221::-;37657:34;37653:1;37645:6;37641:14;37634:58;37726:4;37721:2;37713:6;37709:15;37702:29;37623:115;:::o;37744:180::-;37884:32;37880:1;37872:6;37868:14;37861:56;37850:74;:::o;37930:225::-;38070:34;38066:1;38058:6;38054:14;38047:58;38139:8;38134:2;38126:6;38122:15;38115:33;38036:119;:::o;38161:229::-;38301:34;38297:1;38289:6;38285:14;38278:58;38370:12;38365:2;38357:6;38353:15;38346:37;38267:123;:::o;38396:222::-;38536:34;38532:1;38524:6;38520:14;38513:58;38605:5;38600:2;38592:6;38588:15;38581:30;38502:116;:::o;38624:224::-;38764:34;38760:1;38752:6;38748:14;38741:58;38833:7;38828:2;38820:6;38816:15;38809:32;38730:118;:::o;38854:176::-;38994:28;38990:1;38982:6;38978:14;38971:52;38960:70;:::o;39036:172::-;39176:24;39172:1;39164:6;39160:14;39153:48;39142:66;:::o;39214:244::-;39354:34;39350:1;39342:6;39338:14;39331:58;39423:27;39418:2;39410:6;39406:15;39399:52;39320:138;:::o;39464:230::-;39604:34;39600:1;39592:6;39588:14;39581:58;39673:13;39668:2;39660:6;39656:15;39649:38;39570:124;:::o;39700:225::-;39840:34;39836:1;39828:6;39824:14;39817:58;39909:8;39904:2;39896:6;39892:15;39885:33;39806:119;:::o;39931:155::-;40071:7;40067:1;40059:6;40055:14;40048:31;40037:49;:::o;40092:182::-;40232:34;40228:1;40220:6;40216:14;40209:58;40198:76;:::o;40280:171::-;40420:23;40416:1;40408:6;40404:14;40397:47;40386:65;:::o;40457:234::-;40597:34;40593:1;40585:6;40581:14;40574:58;40666:17;40661:2;40653:6;40649:15;40642:42;40563:128;:::o;40697:176::-;40837:28;40833:1;40825:6;40821:14;40814:52;40803:70;:::o;40879:237::-;41019:34;41015:1;41007:6;41003:14;40996:58;41088:20;41083:2;41075:6;41071:15;41064:45;40985:131;:::o;41122:168::-;41262:20;41258:1;41250:6;41246:14;41239:44;41228:62;:::o;41296:221::-;41436:34;41432:1;41424:6;41420:14;41413:58;41505:4;41500:2;41492:6;41488:15;41481:29;41402:115;:::o;41523:114::-;41629:8;:::o;41643:166::-;41783:18;41779:1;41771:6;41767:14;41760:42;41749:60;:::o;41815:238::-;41955:34;41951:1;41943:6;41939:14;41932:58;42024:21;42019:2;42011:6;42007:15;42000:46;41921:132;:::o;42059:220::-;42199:34;42195:1;42187:6;42183:14;42176:58;42268:3;42263:2;42255:6;42251:15;42244:28;42165:114;:::o;42285:227::-;42425:34;42421:1;42413:6;42409:14;42402:58;42494:10;42489:2;42481:6;42477:15;42470:35;42391:121;:::o;42518:233::-;42658:34;42654:1;42646:6;42642:14;42635:58;42727:16;42722:2;42714:6;42710:15;42703:41;42624:127;:::o;42757:181::-;42897:33;42893:1;42885:6;42881:14;42874:57;42863:75;:::o;42944:234::-;43084:34;43080:1;43072:6;43068:14;43061:58;43153:17;43148:2;43140:6;43136:15;43129:42;43050:128;:::o;43184:232::-;43324:34;43320:1;43312:6;43308:14;43301:58;43393:15;43388:2;43380:6;43376:15;43369:40;43290:126;:::o;43422:122::-;43495:24;43513:5;43495:24;:::i;:::-;43488:5;43485:35;43475:2;;43534:1;43531;43524:12;43475:2;43465:79;:::o;43550:116::-;43620:21;43635:5;43620:21;:::i;:::-;43613:5;43610:32;43600:2;;43656:1;43653;43646:12;43600:2;43590:76;:::o;43672:120::-;43744:23;43761:5;43744:23;:::i;:::-;43737:5;43734:34;43724:2;;43782:1;43779;43772:12;43724:2;43714:78;:::o;43798:122::-;43871:24;43889:5;43871:24;:::i;:::-;43864:5;43861:35;43851:2;;43910:1;43907;43900:12;43851:2;43841:79;:::o

Swarm Source

ipfs://aa998b1245fd29568680d7dfd20b8307d046179a7b3c8e6a8f7ec1fd0e8e096d
Loading...
Loading
Loading...
Loading
[ Download: CSV Export  ]
[ Download: CSV Export  ]

A token is a representation of an on-chain or off-chain asset. The token page shows information such as price, total supply, holders, transfers and social links. Learn more about this page in our Knowledge Base.