ETH Price: $3,028.42 (+2.33%)
Gas: 2 Gwei

Token

THE SATOSHI GIRLS (TSG)
 

Overview

Max Total Supply

1,091 TSG

Holders

281

Market

Volume (24H)

N/A

Min Price (24H)

N/A

Max Price (24H)

N/A
Filtered by Token Holder
ASTROCRYPTIDS: Deployer
Balance
1 TSG
0xf75341b90b8beb9f93c50facb92bc552f20797bb
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:
THE_SATOSHI_GIRLS

Compiler Version
v0.8.7+commit.e28d00a7

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

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

pragma solidity 0.8.7;

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);
    }
}
abstract contract Context {
    function _msgSender() internal view virtual returns (address) {
        return msg.sender;
    }

    function _msgData() internal view virtual returns (bytes calldata) {
        return msg.data;
    }
}
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);
            }
        }
    }
}
interface IERC165 {
    function supportsInterface(bytes4 interfaceId) external view returns (bool);
}
abstract contract ERC165 is IERC165 {
    function supportsInterface(bytes4 interfaceId)
        public
        view
        virtual
        override
        returns (bool)
    {
        return interfaceId == type(IERC165).interfaceId;
    }
}
interface IERC721 is IERC165 {
    event Transfer(
        address indexed from,
        address indexed to,
        uint256 indexed tokenId
    );
    event Approval(
        address indexed owner,
        address indexed approved,
        uint256 indexed tokenId
    );
    event ApprovalForAll(
        address indexed owner,
        address indexed operator,
        bool approved
    );
    function balanceOf(address owner) external view returns (uint256 balance);
    function ownerOf(uint256 tokenId) external view returns (address owner);
    function safeTransferFrom(
        address from,
        address to,
        uint256 tokenId
    ) external;
    function transferFrom(
        address from,
        address to,
        uint256 tokenId
    ) external;
    function approve(address to, uint256 tokenId) external;
    function getApproved(uint256 tokenId)
        external
        view
        returns (address operator);
    function setApprovalForAll(address operator, bool _approved) external;
    function isApprovedForAll(address owner, address operator)
        external
        view
        returns (bool);
    function safeTransferFrom(
        address from,
        address to,
        uint256 tokenId,
        bytes calldata data
    ) external;
}
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);
}
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);
}
interface IERC721Receiver {
    function onERC721Received(
        address operator,
        address from,
        uint256 tokenId,
        bytes calldata data
    ) external returns (bytes4);
}
error ApprovalCallerNotOwnerNorApproved();
error ApprovalQueryForNonexistentToken();
error ApproveToCaller();
error ApprovalToCurrentOwner();
error BalanceQueryForZeroAddress();
error MintedQueryForZeroAddress();
error MintToZeroAddress();
error MintZeroQuantity();
error OwnerIndexOutOfBounds();
error OwnerQueryForNonexistentToken();
error TokenIndexOutOfBounds();
error TransferCallerNotOwnerNorApproved();
error TransferFromIncorrectOwner();
error TransferToNonERC721ReceiverImplementer();
error TransferToZeroAddress();
error UnableDetermineTokenOwner();
error URIQueryForNonexistentToken();
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)
    {
        if (index >= totalSupply()) revert TokenIndexOutOfBounds();
        return index;
    }
    function tokenOfOwnerByIndex(address owner, uint256 index)
        public
        view
        override
        returns (uint256 a)
    {
        if (index >= balanceOf(owner)) revert OwnerIndexOutOfBounds();
        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++;
                }
            }
        }
        assert(false);
    }
    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) {
        if (owner == address(0)) revert BalanceQueryForZeroAddress();
        return uint256(_addressData[owner].balance);
    }

    function _numberMinted(address owner) internal view returns (uint256) {
        if (owner == address(0)) revert MintedQueryForZeroAddress();
        return uint256(_addressData[owner].numberMinted);
    }
    function ownershipOf(uint256 tokenId)
        internal
        view
        returns (TokenOwnership memory)
    {
        if (!_exists(tokenId)) revert OwnerQueryForNonexistentToken();

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

        revert UnableDetermineTokenOwner();
    }
    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
        override
        returns (string memory)
    {
        if (!_exists(tokenId)) revert URIQueryForNonexistentToken();

        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);
        if (to == owner) revert ApprovalToCurrentOwner();

        if (_msgSender() != owner && !isApprovedForAll(owner, _msgSender()))
            revert ApprovalCallerNotOwnerNorApproved();

        _approve(to, tokenId, owner);
    }
    function getApproved(uint256 tokenId)
        public
        view
        override
        returns (address)
    {
        if (!_exists(tokenId)) revert ApprovalQueryForNonexistentToken();

        return _tokenApprovals[tokenId];
    }
    function setApprovalForAll(address operator, bool approved)
        public
        override
    {
        if (operator == _msgSender()) revert ApproveToCaller();

        _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);
        if (!_checkOnERC721Received(from, to, tokenId, _data))
            revert TransferToNonERC721ReceiverImplementer();
    }
    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;
        if (to == address(0)) revert MintToZeroAddress();
        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 &&
                    !_checkOnERC721Received(address(0), to, updatedIndex, _data)
                ) {
                    revert TransferToNonERC721ReceiverImplementer();
                }
                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()));
        if (!isApprovedOrOwner) revert TransferCallerNotOwnerNorApproved();
        if (prevOwnership.addr != from) revert TransferFromIncorrectOwner();
        if (to == address(0)) revert TransferToZeroAddress();
        _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 TransferToNonERC721ReceiverImplementer();
                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 {}
}
library MerkleProof {
    function verify(
        bytes32[] memory proof,
        bytes32 root,
        bytes32 leaf
    ) internal pure returns (bool) {
        return processProof(proof, leaf) == root;
    }
    function processProof(bytes32[] memory proof, bytes32 leaf)
        internal
        pure
        returns (bytes32)
    {
        bytes32 computedHash = leaf;
        for (uint256 i = 0; i < proof.length; i++) {
            bytes32 proofElement = proof[i];
            if (computedHash <= proofElement) {
                computedHash = _efficientHash(computedHash, proofElement);
            } else {
                computedHash = _efficientHash(proofElement, computedHash);
            }
        }
        return computedHash;
    }

    function _efficientHash(bytes32 a, bytes32 b)
        private
        pure
        returns (bytes32 value)
    {
        assembly {
            mstore(0x00, a)
            mstore(0x20, b)
            value := keccak256(0x00, 0x40)
        }
    }
}
abstract contract Ownable is Context {
    address private _owner;
    event OwnershipTransferred(
        address indexed previousOwner,
        address indexed newOwner
    );
    constructor() {
        _transferOwnership(_msgSender());
    }
    function owner() public view virtual returns (address) {
        return _owner;
    }
    modifier onlyOwner() {
        require(owner() == _msgSender(), "Ownable: caller is not the owner");
        _;
    }
    function renounceOwnership() public virtual onlyOwner {
        _transferOwnership(address(0));
    }
    function transferOwnership(address newOwner) public virtual onlyOwner {
        require(
            newOwner != address(0),
            "Ownable: new owner is the zero address"
        );
        _transferOwnership(newOwner);
    }
    function _transferOwnership(address newOwner) internal virtual {
        address oldOwner = _owner;
        _owner = newOwner;
        emit OwnershipTransferred(oldOwner, newOwner);
    }
}
contract THE_SATOSHI_GIRLS is ERC721A, Ownable {
    using Strings for uint256;

    constructor(string memory baseuri, bytes32 finalPreviousCollectionRootHash, bytes32 finalPreSaleRootHash)
        ERC721A("THE SATOSHI GIRLS", "TSG")
    {
        _baseURI1 = baseuri;
        PreSaleRootHash = finalPreSaleRootHash;
        PreviousCollectionRootHash = finalPreviousCollectionRootHash;
    }

    uint256 public  maxSupply                   = 5000;
    uint256 public  reserved                    = 100;
    
    uint256 public  publicSalePrice             = 0.06 ether;
    uint256 public  preSalePrice                = 0.04 ether;

    uint256 public  preSaleMaxQuantity          = 1500;

    uint256 public  maxPerWallet                = 5;

    bool public     isPreviousCollectionPaused  = true;
    bool public     isPreSalePaused             = true;
    bool public     isPublicSalePaused          = true;
    
    string public   _baseURI1;
    bytes32 private PreSaleRootHash;
    bytes32 private PreviousCollectionRootHash;

    struct userAddress {
        address userAddress;
        uint256 counter;
    }

    mapping(address => userAddress) public _PublicSaleAddresses;
    mapping(address => bool) public _PublicSaleAddressExist;

    mapping(address => userAddress) public _PreSaleAddresses;
    mapping(address => bool) public _PreSaleAddressExist;

    mapping(address => userAddress) public _PreviousCollectionAddresses;
    mapping(address => bool) public _PreviousCollectionAddressExist;

    // Flip Previous Collection, Whitelist And Public Mint Pause Status 
    function flipPreviousCollectionPauseStatus() public onlyOwner {
        isPreviousCollectionPaused = !isPreviousCollectionPaused;
    }
    function flipPreSalePauseStatus() public onlyOwner {
        isPreSalePaused = !isPreSalePaused;
    }
    function flipPublicSalePauseStatus() public onlyOwner {
        isPublicSalePaused = !isPublicSalePaused;
    }

    // setting merkle root hashes
    function setPreSaleRootHash(bytes32 _rootHash) public onlyOwner {
        PreSaleRootHash = _rootHash;
    }
    function setPreviousCollectionRootHash(bytes32 _rootHash) public onlyOwner {
        PreviousCollectionRootHash = _rootHash;
    }

    // Setter And Getter base URI Functions
    function setBaseURI(string memory _newBaseURI) public onlyOwner {
        _baseURI1 = _newBaseURI;
    }
    function _baseURI() internal view virtual override returns (string memory) {
        return _baseURI1;
    }

    // Get Public And Whitelist Price
    function getPublicPrice(uint256 _quantity) public view returns (uint256) {
        return _quantity * publicSalePrice;
    }
    function getPreSalePrice(uint256 _quantity) public view returns (uint256) {
        return _quantity * preSalePrice;
    }

    // Reserved, Previous Collection, Pre Sale, Free And Normal Mint Functions
    function mintReservedTokens(uint256 quantity) public onlyOwner {
        require(quantity <= reserved, "All reserve tokens have bene minted");
        reserved -= quantity;
        _safeMint(msg.sender, quantity);
    }
    function PreviousCollectionWhiteListMint(bytes32[] calldata _merkleProof, uint256 chosenAmount, uint256 maxPreviousCollectionMintLimit) public payable {
        if (_PreviousCollectionAddressExist[msg.sender] == false) {
            _PreviousCollectionAddresses[msg.sender] = userAddress({
                userAddress: msg.sender,
                counter: 0
            });
            _PreviousCollectionAddressExist[msg.sender] = true;
        }
        require(isPreviousCollectionPaused == false, "Previous Collection Mint Is Not ACtive Right Now");
        require(chosenAmount > 0, "Number Of Tokens Can Not Be Less Than Or Equal To 0");
        require(_PreviousCollectionAddresses[msg.sender].counter + chosenAmount <= maxPreviousCollectionMintLimit, "Max Previous Collection Mint Limit reached");
        require(totalSupply() + chosenAmount <= maxSupply - reserved, "Presale Limit Reached");
        bytes32 leaf = keccak256(abi.encodePacked(msg.sender));
        require(MerkleProof.verify(_merkleProof, PreSaleRootHash, leaf), "Invalid Proof");

        _safeMint(msg.sender, chosenAmount);
        _PreviousCollectionAddresses[msg.sender].counter += chosenAmount;
    }
    function whiteListMint(bytes32[] calldata _merkleProof, uint256 chosenAmount) public payable {
        if (_PreSaleAddressExist[msg.sender] == false) {
            _PreSaleAddresses[msg.sender] = userAddress({
                userAddress: msg.sender,
                counter: 0
            });
            _PreSaleAddressExist[msg.sender] = true;
        }
        require(isPreSalePaused == false, "Whitelist Mint Is Not Active Right Now");
        require(chosenAmount > 0, "Number Of Tokens Can Not Be Less Than Or Equal To 0");
        require(_PreSaleAddresses[msg.sender].counter + chosenAmount <= preSaleMaxQuantity, "Quantity Must Be Lesser Than Max Presale Supply");
        require(_PreSaleAddresses[msg.sender].counter + chosenAmount <= maxPerWallet, "Max limit per wallet reached");
        require(totalSupply() + chosenAmount <= maxSupply - reserved, "Presale Limit Reached");
        bytes32 leaf = keccak256(abi.encodePacked(msg.sender));
        require(MerkleProof.verify(_merkleProof, PreSaleRootHash, leaf), "Invalid Proof");
        require(preSalePrice * chosenAmount == msg.value, "Sent Ether Value Is Incorrect");

        _safeMint(msg.sender, chosenAmount);
        _PreSaleAddresses[msg.sender].counter += chosenAmount;
    }
    function mint(uint256 chosenAmount) public payable {
        if (_PublicSaleAddressExist[msg.sender] == false) {
            _PublicSaleAddresses[msg.sender] = userAddress({
                userAddress: msg.sender,
                counter: 0
            });
            _PublicSaleAddressExist[msg.sender] = true;
        }
        require( isPublicSalePaused == false, "Public Mint Is Not ACtive Right Now" );
        require( chosenAmount > 0,"Number Of Tokens Can Not Be Less Than Or Equal To 0" );
        require(_PreSaleAddresses[msg.sender].counter + chosenAmount <= maxPerWallet, "Max limit per wallet reached");
        require( totalSupply() + chosenAmount <= maxSupply - reserved, "All Tokens Have Been Minted" );
        require( publicSalePrice * chosenAmount == msg.value, "Sent Ether Value Is Incorrect" );
        _safeMint(msg.sender, chosenAmount);
        _PublicSaleAddresses[msg.sender].counter += chosenAmount;
    }
    function freeMint(uint quantity) public payable onlyOwner {
        require(totalSupply() + quantity <= (maxSupply - reserved), "QUANTITY MUST BE LESS THEN MAX SUPPLY");
        for (uint i = 0; i < quantity; i++) {
            _safeMint(msg.sender, quantity);
        }
    }

    // Withdraw function
    function withdraw() public onlyOwner {
        uint totalBalance   = address(this).balance;
        payable(msg.sender).transfer(totalBalance);
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"string","name":"baseuri","type":"string"},{"internalType":"bytes32","name":"finalPreviousCollectionRootHash","type":"bytes32"},{"internalType":"bytes32","name":"finalPreSaleRootHash","type":"bytes32"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"name":"ApprovalCallerNotOwnerNorApproved","type":"error"},{"inputs":[],"name":"ApprovalQueryForNonexistentToken","type":"error"},{"inputs":[],"name":"ApprovalToCurrentOwner","type":"error"},{"inputs":[],"name":"ApproveToCaller","type":"error"},{"inputs":[],"name":"BalanceQueryForZeroAddress","type":"error"},{"inputs":[],"name":"MintToZeroAddress","type":"error"},{"inputs":[],"name":"OwnerIndexOutOfBounds","type":"error"},{"inputs":[],"name":"OwnerQueryForNonexistentToken","type":"error"},{"inputs":[],"name":"TokenIndexOutOfBounds","type":"error"},{"inputs":[],"name":"TransferCallerNotOwnerNorApproved","type":"error"},{"inputs":[],"name":"TransferFromIncorrectOwner","type":"error"},{"inputs":[],"name":"TransferToNonERC721ReceiverImplementer","type":"error"},{"inputs":[],"name":"TransferToZeroAddress","type":"error"},{"inputs":[],"name":"URIQueryForNonexistentToken","type":"error"},{"inputs":[],"name":"UnableDetermineTokenOwner","type":"error"},{"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":[{"internalType":"bytes32[]","name":"_merkleProof","type":"bytes32[]"},{"internalType":"uint256","name":"chosenAmount","type":"uint256"},{"internalType":"uint256","name":"maxPreviousCollectionMintLimit","type":"uint256"}],"name":"PreviousCollectionWhiteListMint","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_PreSaleAddressExist","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_PreSaleAddresses","outputs":[{"internalType":"address","name":"userAddress","type":"address"},{"internalType":"uint256","name":"counter","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_PreviousCollectionAddressExist","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_PreviousCollectionAddresses","outputs":[{"internalType":"address","name":"userAddress","type":"address"},{"internalType":"uint256","name":"counter","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_PublicSaleAddressExist","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_PublicSaleAddresses","outputs":[{"internalType":"address","name":"userAddress","type":"address"},{"internalType":"uint256","name":"counter","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_baseURI1","outputs":[{"internalType":"string","name":"","type":"string"}],"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":"flipPreSalePauseStatus","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"flipPreviousCollectionPauseStatus","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"flipPublicSalePauseStatus","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"quantity","type":"uint256"}],"name":"freeMint","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"getApproved","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_quantity","type":"uint256"}],"name":"getPreSalePrice","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_quantity","type":"uint256"}],"name":"getPublicPrice","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"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":"isPreSalePaused","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"isPreviousCollectionPaused","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"isPublicSalePaused","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxPerWallet","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"chosenAmount","type":"uint256"}],"name":"mint","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"uint256","name":"quantity","type":"uint256"}],"name":"mintReservedTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"ownerOf","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"preSaleMaxQuantity","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"preSalePrice","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"publicSalePrice","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"reserved","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":"_newBaseURI","type":"string"}],"name":"setBaseURI","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"_rootHash","type":"bytes32"}],"name":"setPreSaleRootHash","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"_rootHash","type":"bytes32"}],"name":"setPreviousCollectionRootHash","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"index","type":"uint256"}],"name":"tokenByIndex","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"uint256","name":"index","type":"uint256"}],"name":"tokenOfOwnerByIndex","outputs":[{"internalType":"uint256","name":"a","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":[{"internalType":"bytes32[]","name":"_merkleProof","type":"bytes32[]"},{"internalType":"uint256","name":"chosenAmount","type":"uint256"}],"name":"whiteListMint","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"withdraw","outputs":[],"stateMutability":"nonpayable","type":"function"}]

6080604052611388600855606460095566d529ae9e860000600a55668e1bc9bf040000600b556105dc600c556005600d556001600e60006101000a81548160ff0219169083151502179055506001600e60016101000a81548160ff0219169083151502179055506001600e60026101000a81548160ff0219169083151502179055503480156200008e57600080fd5b5060405162005872380380620058728339818101604052810190620000b49190620003b7565b6040518060400160405280601181526020017f544845205341544f534849204749524c530000000000000000000000000000008152506040518060400160405280600381526020017f545347000000000000000000000000000000000000000000000000000000000081525081600190805190602001906200013892919062000272565b5080600290805190602001906200015192919062000272565b5050506200017462000168620001a460201b60201c565b620001ac60201b60201c565b82600f90805190602001906200018c92919062000272565b508060108190555081601181905550505050620005da565b600033905090565b6000600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b8280546200028090620004d1565b90600052602060002090601f016020900481019282620002a45760008555620002f0565b82601f10620002bf57805160ff1916838001178555620002f0565b82800160010185558215620002f0579182015b82811115620002ef578251825591602001919060010190620002d2565b5b509050620002ff919062000303565b5090565b5b808211156200031e57600081600090555060010162000304565b5090565b60006200033962000333846200045b565b62000432565b905082815260208101848484011115620003585762000357620005a0565b5b620003658482856200049b565b509392505050565b6000815190506200037e81620005c0565b92915050565b600082601f8301126200039c576200039b6200059b565b5b8151620003ae84826020860162000322565b91505092915050565b600080600060608486031215620003d357620003d2620005aa565b5b600084015167ffffffffffffffff811115620003f457620003f3620005a5565b5b620004028682870162000384565b935050602062000415868287016200036d565b925050604062000428868287016200036d565b9150509250925092565b60006200043e62000451565b90506200044c828262000507565b919050565b6000604051905090565b600067ffffffffffffffff8211156200047957620004786200056c565b5b6200048482620005af565b9050602081019050919050565b6000819050919050565b60005b83811015620004bb5780820151818401526020810190506200049e565b83811115620004cb576000848401525b50505050565b60006002820490506001821680620004ea57607f821691505b602082108114156200050157620005006200053d565b5b50919050565b6200051282620005af565b810181811067ffffffffffffffff821117156200053457620005336200056c565b5b80604052505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b620005cb8162000491565b8114620005d757600080fd5b50565b61528880620005ea6000396000f3fe6080604052600436106102ae5760003560e01c806367f8ccb811610175578063b88d4fde116100dc578063d6cffbd711610095578063e985e9c51161006f578063e985e9c514610aa3578063f2fde38b14610ae0578063f76752ba14610b09578063fe60d12c14610b32576102ae565b8063d6cffbd7146109fc578063dbe67ab314610a3a578063e757c17d14610a78576102ae565b8063b88d4fde1461090a578063bf382a2f14610933578063c30bf3181461095c578063c87b56dd14610978578063ccc24ca1146109b5578063d5abeb01146109d1576102ae565b806395d89b411161012e57806395d89b411461081b5780639b6860c8146108465780639e21dabb14610871578063a0712d68146108ae578063a22cb465146108ca578063acda3e01146108f3576102ae565b806367f8ccb81461074057806370a0823114610757578063715018a6146107945780637c928fe9146107ab5780637d5cb4e5146107c75780638da5cb5b146107f0576102ae565b80632f745c59116102195780634e823f02116101d25780634e823f02146105f85780634f6ccce71461063557806355f804b31461067257806362ba16f81461069b5780636352211e146106d8578063647e901114610715576102ae565b80632f745c59146104e857806330a3f446146105255780633ccfd60b1461056257806342842e0e14610579578063453c2310146105a2578063492b5ff7146105cd576102ae565b806311e0f0631161026b57806311e0f063146103ea5780631802d8471461041557806318160ddd146104525780632031b4a81461047d57806323b872dd146104945780632e280e32146104bd576102ae565b806301ffc9a7146102b357806306fdde03146102f05780630747be6a1461031b578063081812fc14610359578063095ea7b31461039657806309f29f92146103bf575b600080fd5b3480156102bf57600080fd5b506102da60048036038101906102d59190614230565b610b5d565b6040516102e791906146f1565b60405180910390f35b3480156102fc57600080fd5b50610305610ca7565b604051610312919061470c565b60405180910390f35b34801561032757600080fd5b50610342600480360381019061033d9190613f6c565b610d39565b6040516103509291906146c8565b60405180910390f35b34801561036557600080fd5b50610380600480360381019061037b91906142d3565b610d7d565b60405161038d9190614661565b60405180910390f35b3480156103a257600080fd5b506103bd60048036038101906103b891906140ef565b610df9565b005b3480156103cb57600080fd5b506103d4610f04565b6040516103e1919061490e565b60405180910390f35b3480156103f657600080fd5b506103ff610f0a565b60405161040c919061470c565b60405180910390f35b34801561042157600080fd5b5061043c60048036038101906104379190613f6c565b610f98565b60405161044991906146f1565b60405180910390f35b34801561045e57600080fd5b50610467610fb8565b604051610474919061490e565b60405180910390f35b34801561048957600080fd5b50610492610fc1565b005b3480156104a057600080fd5b506104bb60048036038101906104b69190613fd9565b611069565b005b3480156104c957600080fd5b506104d2611079565b6040516104df91906146f1565b60405180910390f35b3480156104f457600080fd5b5061050f600480360381019061050a91906140ef565b61108c565b60405161051c919061490e565b60405180910390f35b34801561053157600080fd5b5061054c600480360381019061054791906142d3565b61124d565b604051610559919061490e565b60405180910390f35b34801561056e57600080fd5b50610577611264565b005b34801561058557600080fd5b506105a0600480360381019061059b9190613fd9565b61132f565b005b3480156105ae57600080fd5b506105b761134f565b6040516105c4919061490e565b60405180910390f35b3480156105d957600080fd5b506105e2611355565b6040516105ef91906146f1565b60405180910390f35b34801561060457600080fd5b5061061f600480360381019061061a9190613f6c565b611368565b60405161062c91906146f1565b60405180910390f35b34801561064157600080fd5b5061065c600480360381019061065791906142d3565b611388565b604051610669919061490e565b60405180910390f35b34801561067e57600080fd5b506106996004803603810190610694919061428a565b6113d2565b005b3480156106a757600080fd5b506106c260048036038101906106bd9190613f6c565b611468565b6040516106cf91906146f1565b60405180910390f35b3480156106e457600080fd5b506106ff60048036038101906106fa91906142d3565b611488565b60405161070c9190614661565b60405180910390f35b34801561072157600080fd5b5061072a61149e565b60405161073791906146f1565b60405180910390f35b34801561074c57600080fd5b506107556114b1565b005b34801561076357600080fd5b5061077e60048036038101906107799190613f6c565b611559565b60405161078b919061490e565b60405180910390f35b3480156107a057600080fd5b506107a9611639565b005b6107c560048036038101906107c091906142d3565b6116c1565b005b3480156107d357600080fd5b506107ee60048036038101906107e991906142d3565b6117cd565b005b3480156107fc57600080fd5b506108056118b4565b6040516108129190614661565b60405180910390f35b34801561082757600080fd5b506108306118de565b60405161083d919061470c565b60405180910390f35b34801561085257600080fd5b5061085b611970565b604051610868919061490e565b60405180910390f35b34801561087d57600080fd5b50610898600480360381019061089391906142d3565b611976565b6040516108a5919061490e565b60405180910390f35b6108c860048036038101906108c391906142d3565b61198d565b005b3480156108d657600080fd5b506108f160048036038101906108ec91906140af565b611d42565b005b3480156108ff57600080fd5b50610908611eba565b005b34801561091657600080fd5b50610931600480360381019061092c919061402c565b611f62565b005b34801561093f57600080fd5b5061095a60048036038101906109559190614203565b611fb5565b005b6109766004803603810190610971919061412f565b61203b565b005b34801561098457600080fd5b5061099f600480360381019061099a91906142d3565b61253d565b6040516109ac919061470c565b60405180910390f35b6109cf60048036038101906109ca919061418f565b6125dc565b005b3480156109dd57600080fd5b506109e66129fc565b6040516109f3919061490e565b60405180910390f35b348015610a0857600080fd5b50610a236004803603810190610a1e9190613f6c565b612a02565b604051610a319291906146c8565b60405180910390f35b348015610a4657600080fd5b50610a616004803603810190610a5c9190613f6c565b612a46565b604051610a6f9291906146c8565b60405180910390f35b348015610a8457600080fd5b50610a8d612a8a565b604051610a9a919061490e565b60405180910390f35b348015610aaf57600080fd5b50610aca6004803603810190610ac59190613f99565b612a90565b604051610ad791906146f1565b60405180910390f35b348015610aec57600080fd5b50610b076004803603810190610b029190613f6c565b612b24565b005b348015610b1557600080fd5b50610b306004803603810190610b2b9190614203565b612c1c565b005b348015610b3e57600080fd5b50610b47612ca2565b604051610b54919061490e565b60405180910390f35b60007f80ac58cd000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480610c2857507f5b5e139f000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b80610c9057507f780e9d63000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b80610ca05750610c9f82612ca8565b5b9050919050565b606060018054610cb690614bc8565b80601f0160208091040260200160405190810160405280929190818152602001828054610ce290614bc8565b8015610d2f5780601f10610d0457610100808354040283529160200191610d2f565b820191906000526020600020905b815481529060010190602001808311610d1257829003601f168201915b5050505050905090565b60126020528060005260406000206000915090508060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16908060010154905082565b6000610d8882612d12565b610dbe576040517fcf4700e400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6005600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b6000610e0482611488565b90508073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610e6c576040517f943f7b8c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16610e8b612d1f565b73ffffffffffffffffffffffffffffffffffffffff1614158015610ebd5750610ebb81610eb6612d1f565b612a90565b155b15610ef4576040517fcfb3b94200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610eff838383612d27565b505050565b600c5481565b600f8054610f1790614bc8565b80601f0160208091040260200160405190810160405280929190818152602001828054610f4390614bc8565b8015610f905780601f10610f6557610100808354040283529160200191610f90565b820191906000526020600020905b815481529060010190602001808311610f7357829003601f168201915b505050505081565b60136020528060005260406000206000915054906101000a900460ff1681565b60008054905090565b610fc9612d1f565b73ffffffffffffffffffffffffffffffffffffffff16610fe76118b4565b73ffffffffffffffffffffffffffffffffffffffff161461103d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611034906147ee565b60405180910390fd5b600e60009054906101000a900460ff1615600e60006101000a81548160ff021916908315150217905550565b611074838383612dd9565b505050565b600e60019054906101000a900460ff1681565b600061109783611559565b82106110cf576040517f0ddac30e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006110d9610fb8565b905060008060005b83811015611233576000600360008381526020019081526020016000206040518060400160405290816000820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016000820160149054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815250509050600073ffffffffffffffffffffffffffffffffffffffff16816000015173ffffffffffffffffffffffffffffffffffffffff16146111d357806000015192505b8773ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611225578684141561121c578195505050505050611247565b83806001019450505b5080806001019150506110e1565b50600061124357611242614cc9565b5b5050505b92915050565b6000600a548261125d9190614a7a565b9050919050565b61126c612d1f565b73ffffffffffffffffffffffffffffffffffffffff1661128a6118b4565b73ffffffffffffffffffffffffffffffffffffffff16146112e0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112d7906147ee565b60405180910390fd5b60004790503373ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f1935050505015801561132b573d6000803e3d6000fd5b5050565b61134a83838360405180602001604052806000815250611f62565b505050565b600d5481565b600e60029054906101000a900460ff1681565b60176020528060005260406000206000915054906101000a900460ff1681565b6000611392610fb8565b82106113ca576040517fa723001c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b819050919050565b6113da612d1f565b73ffffffffffffffffffffffffffffffffffffffff166113f86118b4565b73ffffffffffffffffffffffffffffffffffffffff161461144e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611445906147ee565b60405180910390fd5b80600f9080519060200190611464929190613cdb565b5050565b60156020528060005260406000206000915054906101000a900460ff1681565b6000611493826132f1565b600001519050919050565b600e60009054906101000a900460ff1681565b6114b9612d1f565b73ffffffffffffffffffffffffffffffffffffffff166114d76118b4565b73ffffffffffffffffffffffffffffffffffffffff161461152d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611524906147ee565b60405180910390fd5b600e60019054906101000a900460ff1615600e60016101000a81548160ff021916908315150217905550565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156115c1576040517f8f4eb60400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160009054906101000a90046fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff169050919050565b611641612d1f565b73ffffffffffffffffffffffffffffffffffffffff1661165f6118b4565b73ffffffffffffffffffffffffffffffffffffffff16146116b5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116ac906147ee565b60405180910390fd5b6116bf6000613479565b565b6116c9612d1f565b73ffffffffffffffffffffffffffffffffffffffff166116e76118b4565b73ffffffffffffffffffffffffffffffffffffffff161461173d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611734906147ee565b60405180910390fd5b60095460085461174d9190614ad4565b81611756610fb8565b61176091906149f3565b11156117a1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117989061484e565b60405180910390fd5b60005b818110156117c9576117b6338361353f565b80806117c190614c2b565b9150506117a4565b5050565b6117d5612d1f565b73ffffffffffffffffffffffffffffffffffffffff166117f36118b4565b73ffffffffffffffffffffffffffffffffffffffff1614611849576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611840906147ee565b60405180910390fd5b60095481111561188e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118859061486e565b60405180910390fd5b80600960008282546118a09190614ad4565b925050819055506118b1338261353f565b50565b6000600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6060600280546118ed90614bc8565b80601f016020809104026020016040519081016040528092919081815260200182805461191990614bc8565b80156119665780601f1061193b57610100808354040283529160200191611966565b820191906000526020600020905b81548152906001019060200180831161194957829003601f168201915b5050505050905090565b600a5481565b6000600b54826119869190614a7a565b9050919050565b60001515601360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615151415611afe5760405180604001604052803373ffffffffffffffffffffffffffffffffffffffff1681526020016000815250601260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008201518160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550602082015181600101559050506001601360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505b60001515600e60029054906101000a900460ff16151514611b54576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b4b9061476e565b60405180910390fd5b60008111611b97576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b8e906147ae565b60405180910390fd5b600d5481601460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010154611be891906149f3565b1115611c29576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c20906148ce565b60405180910390fd5b600954600854611c399190614ad4565b81611c42610fb8565b611c4c91906149f3565b1115611c8d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c84906147ce565b60405180910390fd5b3481600a54611c9c9190614a7a565b14611cdc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cd3906148ae565b60405180910390fd5b611ce6338261353f565b80601260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206001016000828254611d3891906149f3565b9250508190555050565b611d4a612d1f565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611daf576040517fb06307db00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8060066000611dbc612d1f565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff16611e69612d1f565b73ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c3183604051611eae91906146f1565b60405180910390a35050565b611ec2612d1f565b73ffffffffffffffffffffffffffffffffffffffff16611ee06118b4565b73ffffffffffffffffffffffffffffffffffffffff1614611f36576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f2d906147ee565b60405180910390fd5b600e60029054906101000a900460ff1615600e60026101000a81548160ff021916908315150217905550565b611f6d848484612dd9565b611f798484848461355d565b611faf576040517fd1a57ed600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50505050565b611fbd612d1f565b73ffffffffffffffffffffffffffffffffffffffff16611fdb6118b4565b73ffffffffffffffffffffffffffffffffffffffff1614612031576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612028906147ee565b60405180910390fd5b8060108190555050565b60001515601560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151514156121ac5760405180604001604052803373ffffffffffffffffffffffffffffffffffffffff1681526020016000815250601460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008201518160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550602082015181600101559050506001601560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505b60001515600e60019054906101000a900460ff16151514612202576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121f99061478e565b60405180910390fd5b60008111612245576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161223c906147ae565b60405180910390fd5b600c5481601460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206001015461229691906149f3565b11156122d7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122ce906148ee565b60405180910390fd5b600d5481601460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206001015461232891906149f3565b1115612369576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612360906148ce565b60405180910390fd5b6009546008546123799190614ad4565b81612382610fb8565b61238c91906149f3565b11156123cd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123c49061482e565b60405180910390fd5b6000336040516020016123e09190614617565b604051602081830303815290604052805190602001209050612446848480806020026020016040519081016040528093929190818152602001838360200280828437600081840152601f19601f82011690508083019250505050505050601054836136eb565b612485576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161247c9061488e565b60405180910390fd5b3482600b546124949190614a7a565b146124d4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124cb906148ae565b60405180910390fd5b6124de338361353f565b81601460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600101600082825461253091906149f3565b9250508190555050505050565b606061254882612d12565b61257e576040517fa14c4b5000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000612588613702565b90506000815114156125a957604051806020016040528060008152506125d4565b806125b384613794565b6040516020016125c4929190614632565b6040516020818303038152906040525b915050919050565b60001515601760003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515141561274d5760405180604001604052803373ffffffffffffffffffffffffffffffffffffffff1681526020016000815250601660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008201518160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550602082015181600101559050506001601760003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505b60001515600e60009054906101000a900460ff161515146127a3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161279a9061480e565b60405180910390fd5b600082116127e6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127dd906147ae565b60405180910390fd5b8082601660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206001015461283591906149f3565b1115612876576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161286d9061472e565b60405180910390fd5b6009546008546128869190614ad4565b8261288f610fb8565b61289991906149f3565b11156128da576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128d19061482e565b60405180910390fd5b6000336040516020016128ed9190614617565b604051602081830303815290604052805190602001209050612953858580806020026020016040519081016040528093929190818152602001838360200280828437600081840152601f19601f82011690508083019250505050505050601054836136eb565b612992576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129899061488e565b60405180910390fd5b61299c338461353f565b82601660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010160008282546129ee91906149f3565b925050819055505050505050565b60085481565b60166020528060005260406000206000915090508060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16908060010154905082565b60146020528060005260406000206000915090508060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16908060010154905082565b600b5481565b6000600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b612b2c612d1f565b73ffffffffffffffffffffffffffffffffffffffff16612b4a6118b4565b73ffffffffffffffffffffffffffffffffffffffff1614612ba0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b97906147ee565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415612c10576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c079061474e565b60405180910390fd5b612c1981613479565b50565b612c24612d1f565b73ffffffffffffffffffffffffffffffffffffffff16612c426118b4565b73ffffffffffffffffffffffffffffffffffffffff1614612c98576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c8f906147ee565b60405180910390fd5b8060118190555050565b60095481565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b6000805482109050919050565b600033905090565b826005600084815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550818373ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a4505050565b6000612de4826132f1565b90506000816000015173ffffffffffffffffffffffffffffffffffffffff16612e0b612d1f565b73ffffffffffffffffffffffffffffffffffffffff161480612e675750612e30612d1f565b73ffffffffffffffffffffffffffffffffffffffff16612e4f84610d7d565b73ffffffffffffffffffffffffffffffffffffffff16145b80612e835750612e828260000151612e7d612d1f565b612a90565b5b905080612ebc576040517f59c896be00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8473ffffffffffffffffffffffffffffffffffffffff16826000015173ffffffffffffffffffffffffffffffffffffffff1614612f25576040517fa114810000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415612f8c576040517fea553b3400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b612f9c6000848460000151612d27565b6001600460008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160008282829054906101000a90046fffffffffffffffffffffffffffffffff160392506101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff1602179055506001600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160008282829054906101000a90046fffffffffffffffffffffffffffffffff160192506101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff160217905550836003600085815260200190815260200160002060000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550426003600085815260200190815260200160002060000160146101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055506000600184019050600073ffffffffffffffffffffffffffffffffffffffff166003600083815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415613281576131e081612d12565b156132805782600001516003600083815260200190815260200160002060000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555082602001516003600083815260200190815260200160002060000160146101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055505b5b50828473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a46132ea85858560016138f5565b5050505050565b6132f9613d61565b61330282612d12565b613338576040517fdf2d9b4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008290505b60008110613441576000600360008381526020019081526020016000206040518060400160405290816000820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016000820160149054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815250509050600073ffffffffffffffffffffffffffffffffffffffff16816000015173ffffffffffffffffffffffffffffffffffffffff1614613432578092505050613474565b5080806001900391505061333e565b506040517fe7c0edfb00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b919050565b6000600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b6135598282604051806020016040528060008152506138fb565b5050565b600061357e8473ffffffffffffffffffffffffffffffffffffffff1661390d565b156136de578373ffffffffffffffffffffffffffffffffffffffff1663150b7a026135a7612d1f565b8786866040518563ffffffff1660e01b81526004016135c9949392919061467c565b602060405180830381600087803b1580156135e357600080fd5b505af192505050801561361457506040513d601f19601f82011682018060405250810190613611919061425d565b60015b61368e573d8060008114613644576040519150601f19603f3d011682016040523d82523d6000602084013e613649565b606091505b50600081511415613686576040517fd1a57ed600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b805181602001fd5b63150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149150506136e3565b600190505b949350505050565b6000826136f88584613930565b1490509392505050565b6060600f805461371190614bc8565b80601f016020809104026020016040519081016040528092919081815260200182805461373d90614bc8565b801561378a5780601f1061375f5761010080835404028352916020019161378a565b820191906000526020600020905b81548152906001019060200180831161376d57829003601f168201915b5050505050905090565b606060008214156137dc576040518060400160405280600181526020017f300000000000000000000000000000000000000000000000000000000000000081525090506138f0565b600082905060005b6000821461380e5780806137f790614c2b565b915050600a826138079190614a49565b91506137e4565b60008167ffffffffffffffff81111561382a57613829614db4565b5b6040519080825280601f01601f19166020018201604052801561385c5781602001600182028036833780820191505090505b5090505b600085146138e9576001826138759190614ad4565b9150600a856138849190614c98565b603061389091906149f3565b60f81b8183815181106138a6576138a5614d85565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600a856138e29190614a49565b9450613860565b8093505050505b919050565b50505050565b61390883838360016139a5565b505050565b6000808273ffffffffffffffffffffffffffffffffffffffff163b119050919050565b60008082905060005b845181101561399a57600085828151811061395757613956614d85565b5b60200260200101519050808311613979576139728382613cc4565b9250613986565b6139838184613cc4565b92505b50808061399290614c2b565b915050613939565b508091505092915050565b600080549050600073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff161415613a12576040517f2e07630000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b83600460008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160008282829054906101000a90046fffffffffffffffffffffffffffffffff160192506101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff16021790555083600460008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160108282829054906101000a90046fffffffffffffffffffffffffffffffff160192506101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff160217905550846003600083815260200190815260200160002060000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550426003600083815260200190815260200160002060000160146101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550600081905060005b85811015613ca757818773ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4838015613c5b5750613c59600088848861355d565b155b15613c92576040517fd1a57ed600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b81806001019250508080600101915050613be0565b508060008190555050613cbd60008683876138f5565b5050505050565b600082600052816020526040600020905092915050565b828054613ce790614bc8565b90600052602060002090601f016020900481019282613d095760008555613d50565b82601f10613d2257805160ff1916838001178555613d50565b82800160010185558215613d50579182015b82811115613d4f578251825591602001919060010190613d34565b5b509050613d5d9190613d9b565b5090565b6040518060400160405280600073ffffffffffffffffffffffffffffffffffffffff168152602001600067ffffffffffffffff1681525090565b5b80821115613db4576000816000905550600101613d9c565b5090565b6000613dcb613dc68461494e565b614929565b905082815260208101848484011115613de757613de6614df2565b5b613df2848285614b86565b509392505050565b6000613e0d613e088461497f565b614929565b905082815260208101848484011115613e2957613e28614df2565b5b613e34848285614b86565b509392505050565b600081359050613e4b816151df565b92915050565b60008083601f840112613e6757613e66614de8565b5b8235905067ffffffffffffffff811115613e8457613e83614de3565b5b602083019150836020820283011115613ea057613e9f614ded565b5b9250929050565b600081359050613eb6816151f6565b92915050565b600081359050613ecb8161520d565b92915050565b600081359050613ee081615224565b92915050565b600081519050613ef581615224565b92915050565b600082601f830112613f1057613f0f614de8565b5b8135613f20848260208601613db8565b91505092915050565b600082601f830112613f3e57613f3d614de8565b5b8135613f4e848260208601613dfa565b91505092915050565b600081359050613f668161523b565b92915050565b600060208284031215613f8257613f81614dfc565b5b6000613f9084828501613e3c565b91505092915050565b60008060408385031215613fb057613faf614dfc565b5b6000613fbe85828601613e3c565b9250506020613fcf85828601613e3c565b9150509250929050565b600080600060608486031215613ff257613ff1614dfc565b5b600061400086828701613e3c565b935050602061401186828701613e3c565b925050604061402286828701613f57565b9150509250925092565b6000806000806080858703121561404657614045614dfc565b5b600061405487828801613e3c565b945050602061406587828801613e3c565b935050604061407687828801613f57565b925050606085013567ffffffffffffffff81111561409757614096614df7565b5b6140a387828801613efb565b91505092959194509250565b600080604083850312156140c6576140c5614dfc565b5b60006140d485828601613e3c565b92505060206140e585828601613ea7565b9150509250929050565b6000806040838503121561410657614105614dfc565b5b600061411485828601613e3c565b925050602061412585828601613f57565b9150509250929050565b60008060006040848603121561414857614147614dfc565b5b600084013567ffffffffffffffff81111561416657614165614df7565b5b61417286828701613e51565b9350935050602061418586828701613f57565b9150509250925092565b600080600080606085870312156141a9576141a8614dfc565b5b600085013567ffffffffffffffff8111156141c7576141c6614df7565b5b6141d387828801613e51565b945094505060206141e687828801613f57565b92505060406141f787828801613f57565b91505092959194509250565b60006020828403121561421957614218614dfc565b5b600061422784828501613ebc565b91505092915050565b60006020828403121561424657614245614dfc565b5b600061425484828501613ed1565b91505092915050565b60006020828403121561427357614272614dfc565b5b600061428184828501613ee6565b91505092915050565b6000602082840312156142a05761429f614dfc565b5b600082013567ffffffffffffffff8111156142be576142bd614df7565b5b6142ca84828501613f29565b91505092915050565b6000602082840312156142e9576142e8614dfc565b5b60006142f784828501613f57565b91505092915050565b61430981614b08565b82525050565b61432061431b82614b08565b614c74565b82525050565b61432f81614b1a565b82525050565b6000614340826149b0565b61434a81856149c6565b935061435a818560208601614b95565b61436381614e01565b840191505092915050565b6000614379826149bb565b61438381856149d7565b9350614393818560208601614b95565b61439c81614e01565b840191505092915050565b60006143b2826149bb565b6143bc81856149e8565b93506143cc818560208601614b95565b80840191505092915050565b60006143e5602a836149d7565b91506143f082614e1f565b604082019050919050565b60006144086026836149d7565b915061441382614e6e565b604082019050919050565b600061442b6023836149d7565b915061443682614ebd565b604082019050919050565b600061444e6026836149d7565b915061445982614f0c565b604082019050919050565b60006144716033836149d7565b915061447c82614f5b565b604082019050919050565b6000614494601b836149d7565b915061449f82614faa565b602082019050919050565b60006144b76020836149d7565b91506144c282614fd3565b602082019050919050565b60006144da6030836149d7565b91506144e582614ffc565b604082019050919050565b60006144fd6015836149d7565b91506145088261504b565b602082019050919050565b60006145206025836149d7565b915061452b82615074565b604082019050919050565b60006145436000836149e8565b915061454e826150c3565b600082019050919050565b60006145666023836149d7565b9150614571826150c6565b604082019050919050565b6000614589600d836149d7565b915061459482615115565b602082019050919050565b60006145ac601d836149d7565b91506145b78261513e565b602082019050919050565b60006145cf601c836149d7565b91506145da82615167565b602082019050919050565b60006145f2602f836149d7565b91506145fd82615190565b604082019050919050565b61461181614b7c565b82525050565b6000614623828461430f565b60148201915081905092915050565b600061463e82856143a7565b915061464a82846143a7565b915061465582614536565b91508190509392505050565b60006020820190506146766000830184614300565b92915050565b60006080820190506146916000830187614300565b61469e6020830186614300565b6146ab6040830185614608565b81810360608301526146bd8184614335565b905095945050505050565b60006040820190506146dd6000830185614300565b6146ea6020830184614608565b9392505050565b60006020820190506147066000830184614326565b92915050565b60006020820190508181036000830152614726818461436e565b905092915050565b60006020820190508181036000830152614747816143d8565b9050919050565b60006020820190508181036000830152614767816143fb565b9050919050565b600060208201905081810360008301526147878161441e565b9050919050565b600060208201905081810360008301526147a781614441565b9050919050565b600060208201905081810360008301526147c781614464565b9050919050565b600060208201905081810360008301526147e781614487565b9050919050565b60006020820190508181036000830152614807816144aa565b9050919050565b60006020820190508181036000830152614827816144cd565b9050919050565b60006020820190508181036000830152614847816144f0565b9050919050565b6000602082019050818103600083015261486781614513565b9050919050565b6000602082019050818103600083015261488781614559565b9050919050565b600060208201905081810360008301526148a78161457c565b9050919050565b600060208201905081810360008301526148c78161459f565b9050919050565b600060208201905081810360008301526148e7816145c2565b9050919050565b60006020820190508181036000830152614907816145e5565b9050919050565b60006020820190506149236000830184614608565b92915050565b6000614933614944565b905061493f8282614bfa565b919050565b6000604051905090565b600067ffffffffffffffff82111561496957614968614db4565b5b61497282614e01565b9050602081019050919050565b600067ffffffffffffffff82111561499a57614999614db4565b5b6149a382614e01565b9050602081019050919050565b600081519050919050565b600081519050919050565b600082825260208201905092915050565b600082825260208201905092915050565b600081905092915050565b60006149fe82614b7c565b9150614a0983614b7c565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115614a3e57614a3d614cf8565b5b828201905092915050565b6000614a5482614b7c565b9150614a5f83614b7c565b925082614a6f57614a6e614d27565b5b828204905092915050565b6000614a8582614b7c565b9150614a9083614b7c565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615614ac957614ac8614cf8565b5b828202905092915050565b6000614adf82614b7c565b9150614aea83614b7c565b925082821015614afd57614afc614cf8565b5b828203905092915050565b6000614b1382614b5c565b9050919050565b60008115159050919050565b6000819050919050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b82818337600083830152505050565b60005b83811015614bb3578082015181840152602081019050614b98565b83811115614bc2576000848401525b50505050565b60006002820490506001821680614be057607f821691505b60208210811415614bf457614bf3614d56565b5b50919050565b614c0382614e01565b810181811067ffffffffffffffff82111715614c2257614c21614db4565b5b80604052505050565b6000614c3682614b7c565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415614c6957614c68614cf8565b5b600182019050919050565b6000614c7f82614c86565b9050919050565b6000614c9182614e12565b9050919050565b6000614ca382614b7c565b9150614cae83614b7c565b925082614cbe57614cbd614d27565b5b828206905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052600160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b60008160601b9050919050565b7f4d61782050726576696f757320436f6c6c656374696f6e204d696e74204c696d60008201527f6974207265616368656400000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f5075626c6963204d696e74204973204e6f74204143746976652052696768742060008201527f4e6f770000000000000000000000000000000000000000000000000000000000602082015250565b7f57686974656c697374204d696e74204973204e6f74204163746976652052696760008201527f6874204e6f770000000000000000000000000000000000000000000000000000602082015250565b7f4e756d626572204f6620546f6b656e732043616e204e6f74204265204c65737360008201527f205468616e204f7220457175616c20546f203000000000000000000000000000602082015250565b7f416c6c20546f6b656e732048617665204265656e204d696e7465640000000000600082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f50726576696f757320436f6c6c656374696f6e204d696e74204973204e6f742060008201527f414374697665205269676874204e6f7700000000000000000000000000000000602082015250565b7f50726573616c65204c696d697420526561636865640000000000000000000000600082015250565b7f5155414e54495459204d555354204245204c455353205448454e204d4158205360008201527f5550504c59000000000000000000000000000000000000000000000000000000602082015250565b50565b7f416c6c207265736572766520746f6b656e7320686176652062656e65206d696e60008201527f7465640000000000000000000000000000000000000000000000000000000000602082015250565b7f496e76616c69642050726f6f6600000000000000000000000000000000000000600082015250565b7f53656e742045746865722056616c756520497320496e636f7272656374000000600082015250565b7f4d6178206c696d6974207065722077616c6c6574207265616368656400000000600082015250565b7f5175616e74697479204d757374204265204c6573736572205468616e204d617860008201527f2050726573616c6520537570706c790000000000000000000000000000000000602082015250565b6151e881614b08565b81146151f357600080fd5b50565b6151ff81614b1a565b811461520a57600080fd5b50565b61521681614b26565b811461522157600080fd5b50565b61522d81614b30565b811461523857600080fd5b50565b61524481614b7c565b811461524f57600080fd5b5056fea26469706673582212201045b669100e8d6b02f5c2ea63fedc7435745ee85e6424191d5f1eff6073b14864736f6c634300080700330000000000000000000000000000000000000000000000000000000000000060f9d69f0cd90e98e53425ddeae353d1a32eb4a6c68cb2939d03b4581781567a57f9d69f0cd90e98e53425ddeae353d1a32eb4a6c68cb2939d03b4581781567a57000000000000000000000000000000000000000000000000000000000000003d68747470733a2f2f7361746f7368692d6769726c732d6261636b656e642e6865726f6b756170702e636f6d2f6170692f7361746f7368694769726c732f000000

Deployed Bytecode

0x6080604052600436106102ae5760003560e01c806367f8ccb811610175578063b88d4fde116100dc578063d6cffbd711610095578063e985e9c51161006f578063e985e9c514610aa3578063f2fde38b14610ae0578063f76752ba14610b09578063fe60d12c14610b32576102ae565b8063d6cffbd7146109fc578063dbe67ab314610a3a578063e757c17d14610a78576102ae565b8063b88d4fde1461090a578063bf382a2f14610933578063c30bf3181461095c578063c87b56dd14610978578063ccc24ca1146109b5578063d5abeb01146109d1576102ae565b806395d89b411161012e57806395d89b411461081b5780639b6860c8146108465780639e21dabb14610871578063a0712d68146108ae578063a22cb465146108ca578063acda3e01146108f3576102ae565b806367f8ccb81461074057806370a0823114610757578063715018a6146107945780637c928fe9146107ab5780637d5cb4e5146107c75780638da5cb5b146107f0576102ae565b80632f745c59116102195780634e823f02116101d25780634e823f02146105f85780634f6ccce71461063557806355f804b31461067257806362ba16f81461069b5780636352211e146106d8578063647e901114610715576102ae565b80632f745c59146104e857806330a3f446146105255780633ccfd60b1461056257806342842e0e14610579578063453c2310146105a2578063492b5ff7146105cd576102ae565b806311e0f0631161026b57806311e0f063146103ea5780631802d8471461041557806318160ddd146104525780632031b4a81461047d57806323b872dd146104945780632e280e32146104bd576102ae565b806301ffc9a7146102b357806306fdde03146102f05780630747be6a1461031b578063081812fc14610359578063095ea7b31461039657806309f29f92146103bf575b600080fd5b3480156102bf57600080fd5b506102da60048036038101906102d59190614230565b610b5d565b6040516102e791906146f1565b60405180910390f35b3480156102fc57600080fd5b50610305610ca7565b604051610312919061470c565b60405180910390f35b34801561032757600080fd5b50610342600480360381019061033d9190613f6c565b610d39565b6040516103509291906146c8565b60405180910390f35b34801561036557600080fd5b50610380600480360381019061037b91906142d3565b610d7d565b60405161038d9190614661565b60405180910390f35b3480156103a257600080fd5b506103bd60048036038101906103b891906140ef565b610df9565b005b3480156103cb57600080fd5b506103d4610f04565b6040516103e1919061490e565b60405180910390f35b3480156103f657600080fd5b506103ff610f0a565b60405161040c919061470c565b60405180910390f35b34801561042157600080fd5b5061043c60048036038101906104379190613f6c565b610f98565b60405161044991906146f1565b60405180910390f35b34801561045e57600080fd5b50610467610fb8565b604051610474919061490e565b60405180910390f35b34801561048957600080fd5b50610492610fc1565b005b3480156104a057600080fd5b506104bb60048036038101906104b69190613fd9565b611069565b005b3480156104c957600080fd5b506104d2611079565b6040516104df91906146f1565b60405180910390f35b3480156104f457600080fd5b5061050f600480360381019061050a91906140ef565b61108c565b60405161051c919061490e565b60405180910390f35b34801561053157600080fd5b5061054c600480360381019061054791906142d3565b61124d565b604051610559919061490e565b60405180910390f35b34801561056e57600080fd5b50610577611264565b005b34801561058557600080fd5b506105a0600480360381019061059b9190613fd9565b61132f565b005b3480156105ae57600080fd5b506105b761134f565b6040516105c4919061490e565b60405180910390f35b3480156105d957600080fd5b506105e2611355565b6040516105ef91906146f1565b60405180910390f35b34801561060457600080fd5b5061061f600480360381019061061a9190613f6c565b611368565b60405161062c91906146f1565b60405180910390f35b34801561064157600080fd5b5061065c600480360381019061065791906142d3565b611388565b604051610669919061490e565b60405180910390f35b34801561067e57600080fd5b506106996004803603810190610694919061428a565b6113d2565b005b3480156106a757600080fd5b506106c260048036038101906106bd9190613f6c565b611468565b6040516106cf91906146f1565b60405180910390f35b3480156106e457600080fd5b506106ff60048036038101906106fa91906142d3565b611488565b60405161070c9190614661565b60405180910390f35b34801561072157600080fd5b5061072a61149e565b60405161073791906146f1565b60405180910390f35b34801561074c57600080fd5b506107556114b1565b005b34801561076357600080fd5b5061077e60048036038101906107799190613f6c565b611559565b60405161078b919061490e565b60405180910390f35b3480156107a057600080fd5b506107a9611639565b005b6107c560048036038101906107c091906142d3565b6116c1565b005b3480156107d357600080fd5b506107ee60048036038101906107e991906142d3565b6117cd565b005b3480156107fc57600080fd5b506108056118b4565b6040516108129190614661565b60405180910390f35b34801561082757600080fd5b506108306118de565b60405161083d919061470c565b60405180910390f35b34801561085257600080fd5b5061085b611970565b604051610868919061490e565b60405180910390f35b34801561087d57600080fd5b50610898600480360381019061089391906142d3565b611976565b6040516108a5919061490e565b60405180910390f35b6108c860048036038101906108c391906142d3565b61198d565b005b3480156108d657600080fd5b506108f160048036038101906108ec91906140af565b611d42565b005b3480156108ff57600080fd5b50610908611eba565b005b34801561091657600080fd5b50610931600480360381019061092c919061402c565b611f62565b005b34801561093f57600080fd5b5061095a60048036038101906109559190614203565b611fb5565b005b6109766004803603810190610971919061412f565b61203b565b005b34801561098457600080fd5b5061099f600480360381019061099a91906142d3565b61253d565b6040516109ac919061470c565b60405180910390f35b6109cf60048036038101906109ca919061418f565b6125dc565b005b3480156109dd57600080fd5b506109e66129fc565b6040516109f3919061490e565b60405180910390f35b348015610a0857600080fd5b50610a236004803603810190610a1e9190613f6c565b612a02565b604051610a319291906146c8565b60405180910390f35b348015610a4657600080fd5b50610a616004803603810190610a5c9190613f6c565b612a46565b604051610a6f9291906146c8565b60405180910390f35b348015610a8457600080fd5b50610a8d612a8a565b604051610a9a919061490e565b60405180910390f35b348015610aaf57600080fd5b50610aca6004803603810190610ac59190613f99565b612a90565b604051610ad791906146f1565b60405180910390f35b348015610aec57600080fd5b50610b076004803603810190610b029190613f6c565b612b24565b005b348015610b1557600080fd5b50610b306004803603810190610b2b9190614203565b612c1c565b005b348015610b3e57600080fd5b50610b47612ca2565b604051610b54919061490e565b60405180910390f35b60007f80ac58cd000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480610c2857507f5b5e139f000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b80610c9057507f780e9d63000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b80610ca05750610c9f82612ca8565b5b9050919050565b606060018054610cb690614bc8565b80601f0160208091040260200160405190810160405280929190818152602001828054610ce290614bc8565b8015610d2f5780601f10610d0457610100808354040283529160200191610d2f565b820191906000526020600020905b815481529060010190602001808311610d1257829003601f168201915b5050505050905090565b60126020528060005260406000206000915090508060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16908060010154905082565b6000610d8882612d12565b610dbe576040517fcf4700e400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6005600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b6000610e0482611488565b90508073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610e6c576040517f943f7b8c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16610e8b612d1f565b73ffffffffffffffffffffffffffffffffffffffff1614158015610ebd5750610ebb81610eb6612d1f565b612a90565b155b15610ef4576040517fcfb3b94200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610eff838383612d27565b505050565b600c5481565b600f8054610f1790614bc8565b80601f0160208091040260200160405190810160405280929190818152602001828054610f4390614bc8565b8015610f905780601f10610f6557610100808354040283529160200191610f90565b820191906000526020600020905b815481529060010190602001808311610f7357829003601f168201915b505050505081565b60136020528060005260406000206000915054906101000a900460ff1681565b60008054905090565b610fc9612d1f565b73ffffffffffffffffffffffffffffffffffffffff16610fe76118b4565b73ffffffffffffffffffffffffffffffffffffffff161461103d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611034906147ee565b60405180910390fd5b600e60009054906101000a900460ff1615600e60006101000a81548160ff021916908315150217905550565b611074838383612dd9565b505050565b600e60019054906101000a900460ff1681565b600061109783611559565b82106110cf576040517f0ddac30e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006110d9610fb8565b905060008060005b83811015611233576000600360008381526020019081526020016000206040518060400160405290816000820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016000820160149054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815250509050600073ffffffffffffffffffffffffffffffffffffffff16816000015173ffffffffffffffffffffffffffffffffffffffff16146111d357806000015192505b8773ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611225578684141561121c578195505050505050611247565b83806001019450505b5080806001019150506110e1565b50600061124357611242614cc9565b5b5050505b92915050565b6000600a548261125d9190614a7a565b9050919050565b61126c612d1f565b73ffffffffffffffffffffffffffffffffffffffff1661128a6118b4565b73ffffffffffffffffffffffffffffffffffffffff16146112e0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112d7906147ee565b60405180910390fd5b60004790503373ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f1935050505015801561132b573d6000803e3d6000fd5b5050565b61134a83838360405180602001604052806000815250611f62565b505050565b600d5481565b600e60029054906101000a900460ff1681565b60176020528060005260406000206000915054906101000a900460ff1681565b6000611392610fb8565b82106113ca576040517fa723001c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b819050919050565b6113da612d1f565b73ffffffffffffffffffffffffffffffffffffffff166113f86118b4565b73ffffffffffffffffffffffffffffffffffffffff161461144e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611445906147ee565b60405180910390fd5b80600f9080519060200190611464929190613cdb565b5050565b60156020528060005260406000206000915054906101000a900460ff1681565b6000611493826132f1565b600001519050919050565b600e60009054906101000a900460ff1681565b6114b9612d1f565b73ffffffffffffffffffffffffffffffffffffffff166114d76118b4565b73ffffffffffffffffffffffffffffffffffffffff161461152d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611524906147ee565b60405180910390fd5b600e60019054906101000a900460ff1615600e60016101000a81548160ff021916908315150217905550565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156115c1576040517f8f4eb60400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160009054906101000a90046fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff169050919050565b611641612d1f565b73ffffffffffffffffffffffffffffffffffffffff1661165f6118b4565b73ffffffffffffffffffffffffffffffffffffffff16146116b5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116ac906147ee565b60405180910390fd5b6116bf6000613479565b565b6116c9612d1f565b73ffffffffffffffffffffffffffffffffffffffff166116e76118b4565b73ffffffffffffffffffffffffffffffffffffffff161461173d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611734906147ee565b60405180910390fd5b60095460085461174d9190614ad4565b81611756610fb8565b61176091906149f3565b11156117a1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117989061484e565b60405180910390fd5b60005b818110156117c9576117b6338361353f565b80806117c190614c2b565b9150506117a4565b5050565b6117d5612d1f565b73ffffffffffffffffffffffffffffffffffffffff166117f36118b4565b73ffffffffffffffffffffffffffffffffffffffff1614611849576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611840906147ee565b60405180910390fd5b60095481111561188e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118859061486e565b60405180910390fd5b80600960008282546118a09190614ad4565b925050819055506118b1338261353f565b50565b6000600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6060600280546118ed90614bc8565b80601f016020809104026020016040519081016040528092919081815260200182805461191990614bc8565b80156119665780601f1061193b57610100808354040283529160200191611966565b820191906000526020600020905b81548152906001019060200180831161194957829003601f168201915b5050505050905090565b600a5481565b6000600b54826119869190614a7a565b9050919050565b60001515601360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615151415611afe5760405180604001604052803373ffffffffffffffffffffffffffffffffffffffff1681526020016000815250601260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008201518160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550602082015181600101559050506001601360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505b60001515600e60029054906101000a900460ff16151514611b54576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b4b9061476e565b60405180910390fd5b60008111611b97576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b8e906147ae565b60405180910390fd5b600d5481601460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010154611be891906149f3565b1115611c29576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c20906148ce565b60405180910390fd5b600954600854611c399190614ad4565b81611c42610fb8565b611c4c91906149f3565b1115611c8d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c84906147ce565b60405180910390fd5b3481600a54611c9c9190614a7a565b14611cdc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cd3906148ae565b60405180910390fd5b611ce6338261353f565b80601260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206001016000828254611d3891906149f3565b9250508190555050565b611d4a612d1f565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611daf576040517fb06307db00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8060066000611dbc612d1f565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff16611e69612d1f565b73ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c3183604051611eae91906146f1565b60405180910390a35050565b611ec2612d1f565b73ffffffffffffffffffffffffffffffffffffffff16611ee06118b4565b73ffffffffffffffffffffffffffffffffffffffff1614611f36576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f2d906147ee565b60405180910390fd5b600e60029054906101000a900460ff1615600e60026101000a81548160ff021916908315150217905550565b611f6d848484612dd9565b611f798484848461355d565b611faf576040517fd1a57ed600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50505050565b611fbd612d1f565b73ffffffffffffffffffffffffffffffffffffffff16611fdb6118b4565b73ffffffffffffffffffffffffffffffffffffffff1614612031576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612028906147ee565b60405180910390fd5b8060108190555050565b60001515601560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151514156121ac5760405180604001604052803373ffffffffffffffffffffffffffffffffffffffff1681526020016000815250601460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008201518160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550602082015181600101559050506001601560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505b60001515600e60019054906101000a900460ff16151514612202576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121f99061478e565b60405180910390fd5b60008111612245576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161223c906147ae565b60405180910390fd5b600c5481601460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206001015461229691906149f3565b11156122d7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122ce906148ee565b60405180910390fd5b600d5481601460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206001015461232891906149f3565b1115612369576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612360906148ce565b60405180910390fd5b6009546008546123799190614ad4565b81612382610fb8565b61238c91906149f3565b11156123cd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123c49061482e565b60405180910390fd5b6000336040516020016123e09190614617565b604051602081830303815290604052805190602001209050612446848480806020026020016040519081016040528093929190818152602001838360200280828437600081840152601f19601f82011690508083019250505050505050601054836136eb565b612485576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161247c9061488e565b60405180910390fd5b3482600b546124949190614a7a565b146124d4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124cb906148ae565b60405180910390fd5b6124de338361353f565b81601460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600101600082825461253091906149f3565b9250508190555050505050565b606061254882612d12565b61257e576040517fa14c4b5000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000612588613702565b90506000815114156125a957604051806020016040528060008152506125d4565b806125b384613794565b6040516020016125c4929190614632565b6040516020818303038152906040525b915050919050565b60001515601760003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515141561274d5760405180604001604052803373ffffffffffffffffffffffffffffffffffffffff1681526020016000815250601660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008201518160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550602082015181600101559050506001601760003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505b60001515600e60009054906101000a900460ff161515146127a3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161279a9061480e565b60405180910390fd5b600082116127e6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127dd906147ae565b60405180910390fd5b8082601660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206001015461283591906149f3565b1115612876576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161286d9061472e565b60405180910390fd5b6009546008546128869190614ad4565b8261288f610fb8565b61289991906149f3565b11156128da576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128d19061482e565b60405180910390fd5b6000336040516020016128ed9190614617565b604051602081830303815290604052805190602001209050612953858580806020026020016040519081016040528093929190818152602001838360200280828437600081840152601f19601f82011690508083019250505050505050601054836136eb565b612992576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129899061488e565b60405180910390fd5b61299c338461353f565b82601660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010160008282546129ee91906149f3565b925050819055505050505050565b60085481565b60166020528060005260406000206000915090508060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16908060010154905082565b60146020528060005260406000206000915090508060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16908060010154905082565b600b5481565b6000600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b612b2c612d1f565b73ffffffffffffffffffffffffffffffffffffffff16612b4a6118b4565b73ffffffffffffffffffffffffffffffffffffffff1614612ba0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b97906147ee565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415612c10576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c079061474e565b60405180910390fd5b612c1981613479565b50565b612c24612d1f565b73ffffffffffffffffffffffffffffffffffffffff16612c426118b4565b73ffffffffffffffffffffffffffffffffffffffff1614612c98576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c8f906147ee565b60405180910390fd5b8060118190555050565b60095481565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b6000805482109050919050565b600033905090565b826005600084815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550818373ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a4505050565b6000612de4826132f1565b90506000816000015173ffffffffffffffffffffffffffffffffffffffff16612e0b612d1f565b73ffffffffffffffffffffffffffffffffffffffff161480612e675750612e30612d1f565b73ffffffffffffffffffffffffffffffffffffffff16612e4f84610d7d565b73ffffffffffffffffffffffffffffffffffffffff16145b80612e835750612e828260000151612e7d612d1f565b612a90565b5b905080612ebc576040517f59c896be00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8473ffffffffffffffffffffffffffffffffffffffff16826000015173ffffffffffffffffffffffffffffffffffffffff1614612f25576040517fa114810000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415612f8c576040517fea553b3400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b612f9c6000848460000151612d27565b6001600460008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160008282829054906101000a90046fffffffffffffffffffffffffffffffff160392506101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff1602179055506001600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160008282829054906101000a90046fffffffffffffffffffffffffffffffff160192506101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff160217905550836003600085815260200190815260200160002060000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550426003600085815260200190815260200160002060000160146101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055506000600184019050600073ffffffffffffffffffffffffffffffffffffffff166003600083815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415613281576131e081612d12565b156132805782600001516003600083815260200190815260200160002060000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555082602001516003600083815260200190815260200160002060000160146101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055505b5b50828473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a46132ea85858560016138f5565b5050505050565b6132f9613d61565b61330282612d12565b613338576040517fdf2d9b4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008290505b60008110613441576000600360008381526020019081526020016000206040518060400160405290816000820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016000820160149054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815250509050600073ffffffffffffffffffffffffffffffffffffffff16816000015173ffffffffffffffffffffffffffffffffffffffff1614613432578092505050613474565b5080806001900391505061333e565b506040517fe7c0edfb00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b919050565b6000600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b6135598282604051806020016040528060008152506138fb565b5050565b600061357e8473ffffffffffffffffffffffffffffffffffffffff1661390d565b156136de578373ffffffffffffffffffffffffffffffffffffffff1663150b7a026135a7612d1f565b8786866040518563ffffffff1660e01b81526004016135c9949392919061467c565b602060405180830381600087803b1580156135e357600080fd5b505af192505050801561361457506040513d601f19601f82011682018060405250810190613611919061425d565b60015b61368e573d8060008114613644576040519150601f19603f3d011682016040523d82523d6000602084013e613649565b606091505b50600081511415613686576040517fd1a57ed600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b805181602001fd5b63150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149150506136e3565b600190505b949350505050565b6000826136f88584613930565b1490509392505050565b6060600f805461371190614bc8565b80601f016020809104026020016040519081016040528092919081815260200182805461373d90614bc8565b801561378a5780601f1061375f5761010080835404028352916020019161378a565b820191906000526020600020905b81548152906001019060200180831161376d57829003601f168201915b5050505050905090565b606060008214156137dc576040518060400160405280600181526020017f300000000000000000000000000000000000000000000000000000000000000081525090506138f0565b600082905060005b6000821461380e5780806137f790614c2b565b915050600a826138079190614a49565b91506137e4565b60008167ffffffffffffffff81111561382a57613829614db4565b5b6040519080825280601f01601f19166020018201604052801561385c5781602001600182028036833780820191505090505b5090505b600085146138e9576001826138759190614ad4565b9150600a856138849190614c98565b603061389091906149f3565b60f81b8183815181106138a6576138a5614d85565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600a856138e29190614a49565b9450613860565b8093505050505b919050565b50505050565b61390883838360016139a5565b505050565b6000808273ffffffffffffffffffffffffffffffffffffffff163b119050919050565b60008082905060005b845181101561399a57600085828151811061395757613956614d85565b5b60200260200101519050808311613979576139728382613cc4565b9250613986565b6139838184613cc4565b92505b50808061399290614c2b565b915050613939565b508091505092915050565b600080549050600073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff161415613a12576040517f2e07630000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b83600460008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160008282829054906101000a90046fffffffffffffffffffffffffffffffff160192506101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff16021790555083600460008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160108282829054906101000a90046fffffffffffffffffffffffffffffffff160192506101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff160217905550846003600083815260200190815260200160002060000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550426003600083815260200190815260200160002060000160146101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550600081905060005b85811015613ca757818773ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4838015613c5b5750613c59600088848861355d565b155b15613c92576040517fd1a57ed600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b81806001019250508080600101915050613be0565b508060008190555050613cbd60008683876138f5565b5050505050565b600082600052816020526040600020905092915050565b828054613ce790614bc8565b90600052602060002090601f016020900481019282613d095760008555613d50565b82601f10613d2257805160ff1916838001178555613d50565b82800160010185558215613d50579182015b82811115613d4f578251825591602001919060010190613d34565b5b509050613d5d9190613d9b565b5090565b6040518060400160405280600073ffffffffffffffffffffffffffffffffffffffff168152602001600067ffffffffffffffff1681525090565b5b80821115613db4576000816000905550600101613d9c565b5090565b6000613dcb613dc68461494e565b614929565b905082815260208101848484011115613de757613de6614df2565b5b613df2848285614b86565b509392505050565b6000613e0d613e088461497f565b614929565b905082815260208101848484011115613e2957613e28614df2565b5b613e34848285614b86565b509392505050565b600081359050613e4b816151df565b92915050565b60008083601f840112613e6757613e66614de8565b5b8235905067ffffffffffffffff811115613e8457613e83614de3565b5b602083019150836020820283011115613ea057613e9f614ded565b5b9250929050565b600081359050613eb6816151f6565b92915050565b600081359050613ecb8161520d565b92915050565b600081359050613ee081615224565b92915050565b600081519050613ef581615224565b92915050565b600082601f830112613f1057613f0f614de8565b5b8135613f20848260208601613db8565b91505092915050565b600082601f830112613f3e57613f3d614de8565b5b8135613f4e848260208601613dfa565b91505092915050565b600081359050613f668161523b565b92915050565b600060208284031215613f8257613f81614dfc565b5b6000613f9084828501613e3c565b91505092915050565b60008060408385031215613fb057613faf614dfc565b5b6000613fbe85828601613e3c565b9250506020613fcf85828601613e3c565b9150509250929050565b600080600060608486031215613ff257613ff1614dfc565b5b600061400086828701613e3c565b935050602061401186828701613e3c565b925050604061402286828701613f57565b9150509250925092565b6000806000806080858703121561404657614045614dfc565b5b600061405487828801613e3c565b945050602061406587828801613e3c565b935050604061407687828801613f57565b925050606085013567ffffffffffffffff81111561409757614096614df7565b5b6140a387828801613efb565b91505092959194509250565b600080604083850312156140c6576140c5614dfc565b5b60006140d485828601613e3c565b92505060206140e585828601613ea7565b9150509250929050565b6000806040838503121561410657614105614dfc565b5b600061411485828601613e3c565b925050602061412585828601613f57565b9150509250929050565b60008060006040848603121561414857614147614dfc565b5b600084013567ffffffffffffffff81111561416657614165614df7565b5b61417286828701613e51565b9350935050602061418586828701613f57565b9150509250925092565b600080600080606085870312156141a9576141a8614dfc565b5b600085013567ffffffffffffffff8111156141c7576141c6614df7565b5b6141d387828801613e51565b945094505060206141e687828801613f57565b92505060406141f787828801613f57565b91505092959194509250565b60006020828403121561421957614218614dfc565b5b600061422784828501613ebc565b91505092915050565b60006020828403121561424657614245614dfc565b5b600061425484828501613ed1565b91505092915050565b60006020828403121561427357614272614dfc565b5b600061428184828501613ee6565b91505092915050565b6000602082840312156142a05761429f614dfc565b5b600082013567ffffffffffffffff8111156142be576142bd614df7565b5b6142ca84828501613f29565b91505092915050565b6000602082840312156142e9576142e8614dfc565b5b60006142f784828501613f57565b91505092915050565b61430981614b08565b82525050565b61432061431b82614b08565b614c74565b82525050565b61432f81614b1a565b82525050565b6000614340826149b0565b61434a81856149c6565b935061435a818560208601614b95565b61436381614e01565b840191505092915050565b6000614379826149bb565b61438381856149d7565b9350614393818560208601614b95565b61439c81614e01565b840191505092915050565b60006143b2826149bb565b6143bc81856149e8565b93506143cc818560208601614b95565b80840191505092915050565b60006143e5602a836149d7565b91506143f082614e1f565b604082019050919050565b60006144086026836149d7565b915061441382614e6e565b604082019050919050565b600061442b6023836149d7565b915061443682614ebd565b604082019050919050565b600061444e6026836149d7565b915061445982614f0c565b604082019050919050565b60006144716033836149d7565b915061447c82614f5b565b604082019050919050565b6000614494601b836149d7565b915061449f82614faa565b602082019050919050565b60006144b76020836149d7565b91506144c282614fd3565b602082019050919050565b60006144da6030836149d7565b91506144e582614ffc565b604082019050919050565b60006144fd6015836149d7565b91506145088261504b565b602082019050919050565b60006145206025836149d7565b915061452b82615074565b604082019050919050565b60006145436000836149e8565b915061454e826150c3565b600082019050919050565b60006145666023836149d7565b9150614571826150c6565b604082019050919050565b6000614589600d836149d7565b915061459482615115565b602082019050919050565b60006145ac601d836149d7565b91506145b78261513e565b602082019050919050565b60006145cf601c836149d7565b91506145da82615167565b602082019050919050565b60006145f2602f836149d7565b91506145fd82615190565b604082019050919050565b61461181614b7c565b82525050565b6000614623828461430f565b60148201915081905092915050565b600061463e82856143a7565b915061464a82846143a7565b915061465582614536565b91508190509392505050565b60006020820190506146766000830184614300565b92915050565b60006080820190506146916000830187614300565b61469e6020830186614300565b6146ab6040830185614608565b81810360608301526146bd8184614335565b905095945050505050565b60006040820190506146dd6000830185614300565b6146ea6020830184614608565b9392505050565b60006020820190506147066000830184614326565b92915050565b60006020820190508181036000830152614726818461436e565b905092915050565b60006020820190508181036000830152614747816143d8565b9050919050565b60006020820190508181036000830152614767816143fb565b9050919050565b600060208201905081810360008301526147878161441e565b9050919050565b600060208201905081810360008301526147a781614441565b9050919050565b600060208201905081810360008301526147c781614464565b9050919050565b600060208201905081810360008301526147e781614487565b9050919050565b60006020820190508181036000830152614807816144aa565b9050919050565b60006020820190508181036000830152614827816144cd565b9050919050565b60006020820190508181036000830152614847816144f0565b9050919050565b6000602082019050818103600083015261486781614513565b9050919050565b6000602082019050818103600083015261488781614559565b9050919050565b600060208201905081810360008301526148a78161457c565b9050919050565b600060208201905081810360008301526148c78161459f565b9050919050565b600060208201905081810360008301526148e7816145c2565b9050919050565b60006020820190508181036000830152614907816145e5565b9050919050565b60006020820190506149236000830184614608565b92915050565b6000614933614944565b905061493f8282614bfa565b919050565b6000604051905090565b600067ffffffffffffffff82111561496957614968614db4565b5b61497282614e01565b9050602081019050919050565b600067ffffffffffffffff82111561499a57614999614db4565b5b6149a382614e01565b9050602081019050919050565b600081519050919050565b600081519050919050565b600082825260208201905092915050565b600082825260208201905092915050565b600081905092915050565b60006149fe82614b7c565b9150614a0983614b7c565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115614a3e57614a3d614cf8565b5b828201905092915050565b6000614a5482614b7c565b9150614a5f83614b7c565b925082614a6f57614a6e614d27565b5b828204905092915050565b6000614a8582614b7c565b9150614a9083614b7c565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615614ac957614ac8614cf8565b5b828202905092915050565b6000614adf82614b7c565b9150614aea83614b7c565b925082821015614afd57614afc614cf8565b5b828203905092915050565b6000614b1382614b5c565b9050919050565b60008115159050919050565b6000819050919050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b82818337600083830152505050565b60005b83811015614bb3578082015181840152602081019050614b98565b83811115614bc2576000848401525b50505050565b60006002820490506001821680614be057607f821691505b60208210811415614bf457614bf3614d56565b5b50919050565b614c0382614e01565b810181811067ffffffffffffffff82111715614c2257614c21614db4565b5b80604052505050565b6000614c3682614b7c565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415614c6957614c68614cf8565b5b600182019050919050565b6000614c7f82614c86565b9050919050565b6000614c9182614e12565b9050919050565b6000614ca382614b7c565b9150614cae83614b7c565b925082614cbe57614cbd614d27565b5b828206905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052600160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b60008160601b9050919050565b7f4d61782050726576696f757320436f6c6c656374696f6e204d696e74204c696d60008201527f6974207265616368656400000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f5075626c6963204d696e74204973204e6f74204143746976652052696768742060008201527f4e6f770000000000000000000000000000000000000000000000000000000000602082015250565b7f57686974656c697374204d696e74204973204e6f74204163746976652052696760008201527f6874204e6f770000000000000000000000000000000000000000000000000000602082015250565b7f4e756d626572204f6620546f6b656e732043616e204e6f74204265204c65737360008201527f205468616e204f7220457175616c20546f203000000000000000000000000000602082015250565b7f416c6c20546f6b656e732048617665204265656e204d696e7465640000000000600082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f50726576696f757320436f6c6c656374696f6e204d696e74204973204e6f742060008201527f414374697665205269676874204e6f7700000000000000000000000000000000602082015250565b7f50726573616c65204c696d697420526561636865640000000000000000000000600082015250565b7f5155414e54495459204d555354204245204c455353205448454e204d4158205360008201527f5550504c59000000000000000000000000000000000000000000000000000000602082015250565b50565b7f416c6c207265736572766520746f6b656e7320686176652062656e65206d696e60008201527f7465640000000000000000000000000000000000000000000000000000000000602082015250565b7f496e76616c69642050726f6f6600000000000000000000000000000000000000600082015250565b7f53656e742045746865722056616c756520497320496e636f7272656374000000600082015250565b7f4d6178206c696d6974207065722077616c6c6574207265616368656400000000600082015250565b7f5175616e74697479204d757374204265204c6573736572205468616e204d617860008201527f2050726573616c6520537570706c790000000000000000000000000000000000602082015250565b6151e881614b08565b81146151f357600080fd5b50565b6151ff81614b1a565b811461520a57600080fd5b50565b61521681614b26565b811461522157600080fd5b50565b61522d81614b30565b811461523857600080fd5b50565b61524481614b7c565b811461524f57600080fd5b5056fea26469706673582212201045b669100e8d6b02f5c2ea63fedc7435745ee85e6424191d5f1eff6073b14864736f6c63430008070033

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

0000000000000000000000000000000000000000000000000000000000000060f9d69f0cd90e98e53425ddeae353d1a32eb4a6c68cb2939d03b4581781567a57f9d69f0cd90e98e53425ddeae353d1a32eb4a6c68cb2939d03b4581781567a57000000000000000000000000000000000000000000000000000000000000003d68747470733a2f2f7361746f7368692d6769726c732d6261636b656e642e6865726f6b756170702e636f6d2f6170692f7361746f7368694769726c732f000000

-----Decoded View---------------
Arg [0] : baseuri (string): https://satoshi-girls-backend.herokuapp.com/api/satoshiGirls/
Arg [1] : finalPreviousCollectionRootHash (bytes32): 0xf9d69f0cd90e98e53425ddeae353d1a32eb4a6c68cb2939d03b4581781567a57
Arg [2] : finalPreSaleRootHash (bytes32): 0xf9d69f0cd90e98e53425ddeae353d1a32eb4a6c68cb2939d03b4581781567a57

-----Encoded View---------------
6 Constructor Arguments found :
Arg [0] : 0000000000000000000000000000000000000000000000000000000000000060
Arg [1] : f9d69f0cd90e98e53425ddeae353d1a32eb4a6c68cb2939d03b4581781567a57
Arg [2] : f9d69f0cd90e98e53425ddeae353d1a32eb4a6c68cb2939d03b4581781567a57
Arg [3] : 000000000000000000000000000000000000000000000000000000000000003d
Arg [4] : 68747470733a2f2f7361746f7368692d6769726c732d6261636b656e642e6865
Arg [5] : 726f6b756170702e636f6d2f6170692f7361746f7368694769726c732f000000


Deployed Bytecode Sourcemap

21193:7098:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10699:422;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12226:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22354:59;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;13314:245;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12950:358;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;21850:50;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22142:25;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22420:55;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9491:101;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22828:137;;;;;;;;;;;;;:::i;:::-;;14093:170;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;22022:50;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9821:872;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23807:126;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;28136:152;;;;;;;;;;;;;:::i;:::-;;14269:185;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;21909:47;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22079:50;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22682:63;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9598:217;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23538:106;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;22547:52;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12096:124;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21965:50;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22971:104;;;;;;;;;;;;;:::i;:::-;;11127:206;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20644:103;;;;;;;;;;;;;:::i;:::-;;27821:281;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;24151:223;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;20425:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12332:104;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21722:56;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23939:124;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;26862:953;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;13565:302;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;23081:113;;;;;;;;;;;;;:::i;:::-;;14460:321;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;23237:110;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;25585:1271;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12442:402;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;24380:1199;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;21603:50;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22608:67;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;22484:56;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;21785;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13873:214;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20753:238;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;23353:132;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;21660:49;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10699:422;10846:4;10903:25;10888:40;;;:11;:40;;;;:105;;;;10960:33;10945:48;;;:11;:48;;;;10888:105;:172;;;;11025:35;11010:50;;;:11;:50;;;;10888:172;:225;;;;11077:36;11101:11;11077:23;:36::i;:::-;10888:225;10868:245;;10699:422;;;:::o;12226:100::-;12280:13;12313:5;12306:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12226:100;:::o;22354:59::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;13314:245::-;13418:7;13448:16;13456:7;13448;:16::i;:::-;13443:64;;13473:34;;;;;;;;;;;;;;13443:64;13527:15;:24;13543:7;13527:24;;;;;;;;;;;;;;;;;;;;;13520:31;;13314:245;;;:::o;12950:358::-;13023:13;13039:24;13055:7;13039:15;:24::i;:::-;13023:40;;13084:5;13078:11;;:2;:11;;;13074:48;;;13098:24;;;;;;;;;;;;;;13074:48;13155:5;13139:21;;:12;:10;:12::i;:::-;:21;;;;:63;;;;;13165:37;13182:5;13189:12;:10;:12::i;:::-;13165:16;:37::i;:::-;13164:38;13139:63;13135:124;;;13224:35;;;;;;;;;;;;;;13135:124;13272:28;13281:2;13285:7;13294:5;13272:8;:28::i;:::-;13012:296;12950:358;;:::o;21850:50::-;;;;:::o;22142:25::-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;22420:55::-;;;;;;;;;;;;;;;;;;;;;;:::o;9491:101::-;9544:7;9571:13;;9564:20;;9491:101;:::o;22828:137::-;20569:12;:10;:12::i;:::-;20558:23;;:7;:5;:7::i;:::-;:23;;;20550:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;22931:26:::1;;;;;;;;;;;22930:27;22901:26;;:56;;;;;;;;;;;;;;;;;;22828:137::o:0;14093:170::-;14227:28;14237:4;14243:2;14247:7;14227:9;:28::i;:::-;14093:170;;;:::o;22022:50::-;;;;;;;;;;;;;:::o;9821:872::-;9946:9;9986:16;9996:5;9986:9;:16::i;:::-;9977:5;:25;9973:61;;10011:23;;;;;;;;;;;;;;9973:61;10045:22;10070:13;:11;:13::i;:::-;10045:38;;10094:19;10124:25;10190:9;10185:466;10205:14;10201:1;:18;10185:466;;;10245:31;10279:11;:14;10291:1;10279:14;;;;;;;;;;;10245:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10342:1;10316:28;;:9;:14;;;:28;;;10312:111;;10389:9;:14;;;10369:34;;10312:111;10466:5;10445:26;;:17;:26;;;10441:195;;;10515:5;10500:11;:20;10496:85;;;10556:1;10549:8;;;;;;;;;10496:85;10603:13;;;;;;;10441:195;10226:425;10221:3;;;;;;;10185:466;;;;10679:5;10672:13;;;;:::i;:::-;;9962:731;;;9821:872;;;;;:::o;23807:126::-;23871:7;23910:15;;23898:9;:27;;;;:::i;:::-;23891:34;;23807:126;;;:::o;28136:152::-;20569:12;:10;:12::i;:::-;20558:23;;:7;:5;:7::i;:::-;:23;;;20550:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;28184:17:::1;28206:21;28184:43;;28246:10;28238:28;;:42;28267:12;28238:42;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;28173:115;28136:152::o:0;14269:185::-;14407:39;14424:4;14430:2;14434:7;14407:39;;;;;;;;;;;;:16;:39::i;:::-;14269:185;;;:::o;21909:47::-;;;;:::o;22079:50::-;;;;;;;;;;;;;:::o;22682:63::-;;;;;;;;;;;;;;;;;;;;;;:::o;9598:217::-;9701:7;9739:13;:11;:13::i;:::-;9730:5;:22;9726:58;;9761:23;;;;;;;;;;;;;;9726:58;9802:5;9795:12;;9598:217;;;:::o;23538:106::-;20569:12;:10;:12::i;:::-;20558:23;;:7;:5;:7::i;:::-;:23;;;20550:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;23625:11:::1;23613:9;:23;;;;;;;;;;;;:::i;:::-;;23538:106:::0;:::o;22547:52::-;;;;;;;;;;;;;;;;;;;;;;:::o;12096:124::-;12160:7;12187:20;12199:7;12187:11;:20::i;:::-;:25;;;12180:32;;12096:124;;;:::o;21965:50::-;;;;;;;;;;;;;:::o;22971:104::-;20569:12;:10;:12::i;:::-;20558:23;;:7;:5;:7::i;:::-;:23;;;20550:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;23052:15:::1;;;;;;;;;;;23051:16;23033:15;;:34;;;;;;;;;;;;;;;;;;22971:104::o:0;11127:206::-;11191:7;11232:1;11215:19;;:5;:19;;;11211:60;;;11243:28;;;;;;;;;;;;;;11211:60;11297:12;:19;11310:5;11297:19;;;;;;;;;;;;;;;:27;;;;;;;;;;;;11289:36;;11282:43;;11127:206;;;:::o;20644:103::-;20569:12;:10;:12::i;:::-;20558:23;;:7;:5;:7::i;:::-;:23;;;20550:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;20709:30:::1;20736:1;20709:18;:30::i;:::-;20644:103::o:0;27821:281::-;20569:12;:10;:12::i;:::-;20558:23;;:7;:5;:7::i;:::-;:23;;;20550:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;27939:8:::1;;27927:9;;:20;;;;:::i;:::-;27914:8;27898:13;:11;:13::i;:::-;:24;;;;:::i;:::-;:50;;27890:100;;;;;;;;;;;;:::i;:::-;;;;;;;;;28006:6;28001:94;28022:8;28018:1;:12;28001:94;;;28052:31;28062:10;28074:8;28052:9;:31::i;:::-;28032:3;;;;;:::i;:::-;;;;28001:94;;;;27821:281:::0;:::o;24151:223::-;20569:12;:10;:12::i;:::-;20558:23;;:7;:5;:7::i;:::-;:23;;;20550:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;24245:8:::1;;24233;:20;;24225:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;24316:8;24304;;:20;;;;;;;:::i;:::-;;;;;;;;24335:31;24345:10;24357:8;24335:9;:31::i;:::-;24151:223:::0;:::o;20425:87::-;20471:7;20498:6;;;;;;;;;;;20491:13;;20425:87;:::o;12332:104::-;12388:13;12421:7;12414:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12332:104;:::o;21722:56::-;;;;:::o;23939:124::-;24004:7;24043:12;;24031:9;:24;;;;:::i;:::-;24024:31;;23939:124;;;:::o;26862:953::-;26967:5;26928:44;;:23;:35;26952:10;26928:35;;;;;;;;;;;;;;;;;;;;;;;;;:44;;;26924:268;;;27024:99;;;;;;;;27068:10;27024:99;;;;;;27106:1;27024:99;;;26989:20;:32;27010:10;26989:32;;;;;;;;;;;;;;;:134;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27176:4;27138:23;:35;27162:10;27138:35;;;;;;;;;;;;;;;;:42;;;;;;;;;;;;;;;;;;26924:268;27233:5;27211:27;;:18;;;;;;;;;;;:27;;;27202:77;;;;;;;;;;;;:::i;:::-;;;;;;;;;27314:1;27299:12;:16;27290:81;;;;;;;;;;;;:::i;:::-;;;;;;;;;27446:12;;27430;27390:17;:29;27408:10;27390:29;;;;;;;;;;;;;;;:37;;;:52;;;;:::i;:::-;:68;;27382:109;;;;;;;;;;;;:::i;:::-;;;;;;;;;27555:8;;27543:9;;:20;;;;:::i;:::-;27527:12;27511:13;:11;:13::i;:::-;:28;;;;:::i;:::-;:52;;27502:94;;;;;;;;;;;;:::i;:::-;;;;;;;;;27650:9;27634:12;27616:15;;:30;;;;:::i;:::-;:43;27607:87;;;;;;;;;;;;:::i;:::-;;;;;;;;;27705:35;27715:10;27727:12;27705:9;:35::i;:::-;27795:12;27751:20;:32;27772:10;27751:32;;;;;;;;;;;;;;;:40;;;:56;;;;;;;:::i;:::-;;;;;;;;26862:953;:::o;13565:302::-;13691:12;:10;:12::i;:::-;13679:24;;:8;:24;;;13675:54;;;13712:17;;;;;;;;;;;;;;13675:54;13787:8;13742:18;:32;13761:12;:10;:12::i;:::-;13742:32;;;;;;;;;;;;;;;:42;13775:8;13742:42;;;;;;;;;;;;;;;;:53;;;;;;;;;;;;;;;;;;13840:8;13811:48;;13826:12;:10;:12::i;:::-;13811:48;;;13850:8;13811:48;;;;;;:::i;:::-;;;;;;;;13565:302;;:::o;23081:113::-;20569:12;:10;:12::i;:::-;20558:23;;:7;:5;:7::i;:::-;:23;;;20550:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;23168:18:::1;;;;;;;;;;;23167:19;23146:18;;:40;;;;;;;;;;;;;;;;;;23081:113::o:0;14460:321::-;14619:28;14629:4;14635:2;14639:7;14619:9;:28::i;:::-;14663:48;14686:4;14692:2;14696:7;14705:5;14663:22;:48::i;:::-;14658:115;;14733:40;;;;;;;;;;;;;;14658:115;14460:321;;;;:::o;23237:110::-;20569:12;:10;:12::i;:::-;20558:23;;:7;:5;:7::i;:::-;:23;;;20550:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;23330:9:::1;23312:15;:27;;;;23237:110:::0;:::o;25585:1271::-;25729:5;25693:41;;:20;:32;25714:10;25693:32;;;;;;;;;;;;;;;;;;;;;;;;;:41;;;25689:259;;;25783:99;;;;;;;;25827:10;25783:99;;;;;;25865:1;25783:99;;;25751:17;:29;25769:10;25751:29;;;;;;;;;;;;;;;:131;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;25932:4;25897:20;:32;25918:10;25897:32;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;25689:259;25985:5;25966:24;;:15;;;;;;;;;;;:24;;;25958:75;;;;;;;;;;;;:::i;:::-;;;;;;;;;26067:1;26052:12;:16;26044:80;;;;;;;;;;;;:::i;:::-;;;;;;;;;26199:18;;26183:12;26143:17;:29;26161:10;26143:29;;;;;;;;;;;;;;;:37;;;:52;;;;:::i;:::-;:74;;26135:134;;;;;;;;;;;;:::i;:::-;;;;;;;;;26344:12;;26328;26288:17;:29;26306:10;26288:29;;;;;;;;;;;;;;;:37;;;:52;;;;:::i;:::-;:68;;26280:109;;;;;;;;;;;;:::i;:::-;;;;;;;;;26452:8;;26440:9;;:20;;;;:::i;:::-;26424:12;26408:13;:11;:13::i;:::-;:28;;;;:::i;:::-;:52;;26400:86;;;;;;;;;;;;:::i;:::-;;;;;;;;;26497:12;26539:10;26522:28;;;;;;;;:::i;:::-;;;;;;;;;;;;;26512:39;;;;;;26497:54;;26570:55;26589:12;;26570:55;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;26603:15;;26620:4;26570:18;:55::i;:::-;26562:81;;;;;;;;;;;;:::i;:::-;;;;;;;;;26693:9;26677:12;26662;;:27;;;;:::i;:::-;:40;26654:82;;;;;;;;;;;;:::i;:::-;;;;;;;;;26749:35;26759:10;26771:12;26749:9;:35::i;:::-;26836:12;26795:17;:29;26813:10;26795:29;;;;;;;;;;;;;;;:37;;;:53;;;;;;;:::i;:::-;;;;;;;;25678:1178;25585:1271;;;:::o;12442:402::-;12543:13;12579:16;12587:7;12579;:16::i;:::-;12574:59;;12604:29;;;;;;;;;;;;;;12574:59;12646:21;12670:10;:8;:10::i;:::-;12646:34;;12736:1;12717:7;12711:21;:26;;:125;;;;;;;;;;;;;;;;;12781:7;12790:18;:7;:16;:18::i;:::-;12764:49;;;;;;;;;:::i;:::-;;;;;;;;;;;;;12711:125;12691:145;;;12442:402;;;:::o;24380:1199::-;24593:5;24546:52;;:31;:43;24578:10;24546:43;;;;;;;;;;;;;;;;;;;;;;;;;:52;;;24542:292;;;24658:99;;;;;;;;24702:10;24658:99;;;;;;24740:1;24658:99;;;24615:28;:40;24644:10;24615:40;;;;;;;;;;;;;;;:142;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24818:4;24772:31;:43;24804:10;24772:43;;;;;;;;;;;;;;;;:50;;;;;;;;;;;;;;;;;;24542:292;24882:5;24852:35;;:26;;;;;;;;;;;:35;;;24844:96;;;;;;;;;;;;:::i;:::-;;;;;;;;;24974:1;24959:12;:16;24951:80;;;;;;;;;;;;:::i;:::-;;;;;;;;;25117:30;25101:12;25050:28;:40;25079:10;25050:40;;;;;;;;;;;;;;;:48;;;:63;;;;:::i;:::-;:97;;25042:152;;;;;;;;;;;;:::i;:::-;;;;;;;;;25257:8;;25245:9;;:20;;;;:::i;:::-;25229:12;25213:13;:11;:13::i;:::-;:28;;;;:::i;:::-;:52;;25205:86;;;;;;;;;;;;:::i;:::-;;;;;;;;;25302:12;25344:10;25327:28;;;;;;;;:::i;:::-;;;;;;;;;;;;;25317:39;;;;;;25302:54;;25375:55;25394:12;;25375:55;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;25408:15;;25425:4;25375:18;:55::i;:::-;25367:81;;;;;;;;;;;;:::i;:::-;;;;;;;;;25461:35;25471:10;25483:12;25461:9;:35::i;:::-;25559:12;25507:28;:40;25536:10;25507:40;;;;;;;;;;;;;;;:48;;;:64;;;;;;;:::i;:::-;;;;;;;;24531:1048;24380:1199;;;;:::o;21603:50::-;;;;:::o;22608:67::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;22484:56::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;21785:::-;;;;:::o;13873:214::-;14015:4;14044:18;:25;14063:5;14044:25;;;;;;;;;;;;;;;:35;14070:8;14044:35;;;;;;;;;;;;;;;;;;;;;;;;;14037:42;;13873:214;;;;:::o;20753:238::-;20569:12;:10;:12::i;:::-;20558:23;;:7;:5;:7::i;:::-;:23;;;20550:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;20876:1:::1;20856:22;;:8;:22;;;;20834:110;;;;;;;;;;;;:::i;:::-;;;;;;;;;20955:28;20974:8;20955:18;:28::i;:::-;20753:238:::0;:::o;23353:132::-;20569:12;:10;:12::i;:::-;20558:23;;:7;:5;:7::i;:::-;:23;;;20550:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;23468:9:::1;23439:26;:38;;;;23353:132:::0;:::o;21660:49::-;;;;:::o;5783:207::-;5913:4;5957:25;5942:40;;;:11;:40;;;;5935:47;;5783:207;;;:::o;14787:112::-;14844:4;14878:13;;14868:7;:23;14861:30;;14787:112;;;:::o;1521:98::-;1574:7;1601:10;1594:17;;1521:98;:::o;17670:196::-;17812:2;17785:15;:24;17801:7;17785:24;;;;;;;;;;;;:29;;;;;;;;;;;;;;;;;;17850:7;17846:2;17830:28;;17839:5;17830:28;;;;;;;;;;;;17670:196;;;:::o;16291:1373::-;16406:35;16444:20;16456:7;16444:11;:20::i;:::-;16406:58;;16475:22;16517:13;:18;;;16501:34;;:12;:10;:12::i;:::-;:34;;;:87;;;;16576:12;:10;:12::i;:::-;16552:36;;:20;16564:7;16552:11;:20::i;:::-;:36;;;16501:87;:154;;;;16605:50;16622:13;:18;;;16642:12;:10;:12::i;:::-;16605:16;:50::i;:::-;16501:154;16475:181;;16672:17;16667:66;;16698:35;;;;;;;;;;;;;;16667:66;16770:4;16748:26;;:13;:18;;;:26;;;16744:67;;16783:28;;;;;;;;;;;;;;16744:67;16840:1;16826:16;;:2;:16;;;16822:52;;;16851:23;;;;;;;;;;;;;;16822:52;16885:49;16902:1;16906:7;16915:13;:18;;;16885:8;:49::i;:::-;17000:1;16970:12;:18;16983:4;16970:18;;;;;;;;;;;;;;;:26;;;:31;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17044:1;17016:12;:16;17029:2;17016:16;;;;;;;;;;;;;;;:24;;;:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17088:2;17060:11;:20;17072:7;17060:20;;;;;;;;;;;:25;;;:30;;;;;;;;;;;;;;;;;;17150:15;17105:11;:20;17117:7;17105:20;;;;;;;;;;;:35;;;:61;;;;;;;;;;;;;;;;;;17181:19;17213:1;17203:7;:11;17181:33;;17274:1;17233:43;;:11;:24;17245:11;17233:24;;;;;;;;;;;:29;;;;;;;;;;;;:43;;;17229:321;;;17301:20;17309:11;17301:7;:20::i;:::-;17297:238;;;17378:13;:18;;;17346:11;:24;17358:11;17346:24;;;;;;;;;;;:29;;;:50;;;;;;;;;;;;;;;;;;17461:13;:54;;;17419:11;:24;17431:11;17419:24;;;;;;;;;;;:39;;;:96;;;;;;;;;;;;;;;;;;17297:238;17229:321;16945:616;17595:7;17591:2;17576:27;;17585:4;17576:27;;;;;;;;;;;;17614:42;17635:4;17641:2;17645:7;17654:1;17614:20;:42::i;:::-;16395:1269;;16291:1373;;;:::o;11554:536::-;11642:21;;:::i;:::-;11686:16;11694:7;11686;:16::i;:::-;11681:61;;11711:31;;;;;;;;;;;;;;11681:61;11785:12;11800:7;11785:22;;11780:245;11817:1;11809:4;:9;11780:245;;11847:31;11881:11;:17;11893:4;11881:17;;;;;;;;;;;11847:51;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11947:1;11921:28;;:9;:14;;;:28;;;11917:93;;11981:9;11974:16;;;;;;11917:93;11828:197;11820:6;;;;;;;;11780:245;;;;12055:27;;;;;;;;;;;;;;11554:536;;;;:::o;20997:191::-;21071:16;21090:6;;;;;;;;;;;21071:25;;21116:8;21107:6;;:17;;;;;;;;;;;;;;;;;;21171:8;21140:40;;21161:8;21140:40;;;;;;;;;;;;21060:128;20997:191;:::o;14907:104::-;14976:27;14986:2;14990:8;14976:27;;;;;;;;;;;;:9;:27::i;:::-;14907:104;;:::o;17872:919::-;18027:4;18048:15;:2;:13;;;:15::i;:::-;18044:740;;;18117:2;18101:36;;;18160:12;:10;:12::i;:::-;18195:4;18222:7;18252:5;18101:175;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;18080:649;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18480:1;18463:6;:13;:18;18459:255;;;18511:40;;;;;;;;;;;;;;18459:255;18664:6;18658:13;18649:6;18645:2;18641:15;18634:38;18080:649;18350:45;;;18340:55;;;:6;:55;;;;18333:62;;;;;18044:740;18768:4;18761:11;;17872:919;;;;;;;:::o;19152:190::-;19277:4;19330;19301:25;19314:5;19321:4;19301:12;:25::i;:::-;:33;19294:40;;19152:190;;;;;:::o;23650:110::-;23710:13;23743:9;23736:16;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23650:110;:::o;116:532::-;172:13;211:1;202:5;:10;198:53;;;229:10;;;;;;;;;;;;;;;;;;;;;198:53;261:12;276:5;261:20;;292:14;317:78;332:1;324:4;:9;317:78;;350:8;;;;;:::i;:::-;;;;381:2;373:10;;;;;:::i;:::-;;;317:78;;;405:19;437:6;427:17;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;405:39;;455:154;471:1;462:5;:10;455:154;;499:1;489:11;;;;;:::i;:::-;;;566:2;558:5;:10;;;;:::i;:::-;545:2;:24;;;;:::i;:::-;532:39;;515:6;522;515:14;;;;;;;;:::i;:::-;;;;;:56;;;;;;;;;;;595:2;586:11;;;;;:::i;:::-;;;455:154;;;633:6;619:21;;;;;116:532;;;;:::o;18962:158::-;;;;;:::o;15017:163::-;15140:32;15146:2;15150:8;15160:5;15167:4;15140:5;:32::i;:::-;15017:163;;;:::o;1756:115::-;1816:4;1862:1;1840:7;:19;;;:23;1833:30;;1756:115;;;:::o;19348:549::-;19458:7;19483:20;19506:4;19483:27;;19526:9;19521:339;19545:5;:12;19541:1;:16;19521:339;;;19579:20;19602:5;19608:1;19602:8;;;;;;;;:::i;:::-;;;;;;;;19579:31;;19645:12;19629;:28;19625:224;;19693:42;19708:12;19722;19693:14;:42::i;:::-;19678:57;;19625:224;;;19791:42;19806:12;19820;19791:14;:42::i;:::-;19776:57;;19625:224;19564:296;19559:3;;;;;:::i;:::-;;;;19521:339;;;;19877:12;19870:19;;;19348:549;;;;:::o;15186:1099::-;15325:20;15348:13;;15325:36;;15390:1;15376:16;;:2;:16;;;15372:48;;;15401:19;;;;;;;;;;;;;;15372:48;15492:8;15456:12;:16;15469:2;15456:16;;;;;;;;;;;;;;;:24;;;:45;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15557:8;15516:12;:16;15529:2;15516:16;;;;;;;;;;;;;;;:29;;;:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15614:2;15581:11;:25;15593:12;15581:25;;;;;;;;;;;:30;;;:35;;;;;;;;;;;;;;;;;;15681:15;15631:11;:25;15643:12;15631:25;;;;;;;;;;;:40;;;:66;;;;;;;;;;;;;;;;;;15712:20;15735:12;15712:35;;15767:9;15762:389;15782:8;15778:1;:12;15762:389;;;15846:12;15842:2;15821:38;;15838:1;15821:38;;;;;;;;;;;;15904:4;:89;;;;;15934:59;15965:1;15969:2;15973:12;15987:5;15934:22;:59::i;:::-;15933:60;15904:89;15878:225;;;16043:40;;;;;;;;;;;;;;15878:225;16121:14;;;;;;;15792:3;;;;;;;15762:389;;;;16181:12;16165:13;:28;;;;15431:774;16217:60;16246:1;16250:2;16254:12;16268:8;16217:20;:60::i;:::-;15314:971;15186:1099;;;;:::o;19905:256::-;20000:13;20068:1;20062:4;20055:15;20097:1;20091:4;20084:15;20138:4;20132;20122:21;20113:30;;19905:256;;;;:::o;-1:-1:-1:-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;:::o;7:410:1:-;84:5;109:65;125:48;166:6;125:48;:::i;:::-;109:65;:::i;:::-;100:74;;197:6;190:5;183:21;235:4;228:5;224:16;273:3;264:6;259:3;255:16;252:25;249:112;;;280:79;;:::i;:::-;249:112;370:41;404:6;399:3;394;370:41;:::i;:::-;90:327;7:410;;;;;:::o;423:412::-;501:5;526:66;542:49;584:6;542:49;:::i;:::-;526:66;:::i;:::-;517:75;;615:6;608:5;601:21;653:4;646:5;642:16;691:3;682:6;677:3;673:16;670:25;667:112;;;698:79;;:::i;:::-;667:112;788:41;822:6;817:3;812;788:41;:::i;:::-;507:328;423:412;;;;;:::o;841:139::-;887:5;925:6;912:20;903:29;;941:33;968:5;941:33;:::i;:::-;841:139;;;;:::o;1003:568::-;1076:8;1086:6;1136:3;1129:4;1121:6;1117:17;1113:27;1103:122;;1144:79;;:::i;:::-;1103:122;1257:6;1244:20;1234:30;;1287:18;1279:6;1276:30;1273:117;;;1309:79;;:::i;:::-;1273:117;1423:4;1415:6;1411:17;1399:29;;1477:3;1469:4;1461:6;1457:17;1447:8;1443:32;1440:41;1437:128;;;1484:79;;:::i;:::-;1437:128;1003:568;;;;;:::o;1577:133::-;1620:5;1658:6;1645:20;1636:29;;1674:30;1698:5;1674:30;:::i;:::-;1577:133;;;;:::o;1716:139::-;1762:5;1800:6;1787:20;1778:29;;1816:33;1843:5;1816:33;:::i;:::-;1716:139;;;;:::o;1861:137::-;1906:5;1944:6;1931:20;1922:29;;1960:32;1986:5;1960:32;:::i;:::-;1861:137;;;;:::o;2004:141::-;2060:5;2091:6;2085:13;2076:22;;2107:32;2133:5;2107:32;:::i;:::-;2004:141;;;;:::o;2164:338::-;2219:5;2268:3;2261:4;2253:6;2249:17;2245:27;2235:122;;2276:79;;:::i;:::-;2235:122;2393:6;2380:20;2418:78;2492:3;2484:6;2477:4;2469:6;2465:17;2418:78;:::i;:::-;2409:87;;2225:277;2164:338;;;;:::o;2522:340::-;2578:5;2627:3;2620:4;2612:6;2608:17;2604:27;2594:122;;2635:79;;:::i;:::-;2594:122;2752:6;2739:20;2777:79;2852:3;2844:6;2837:4;2829:6;2825:17;2777:79;:::i;:::-;2768:88;;2584:278;2522:340;;;;:::o;2868:139::-;2914:5;2952:6;2939:20;2930:29;;2968:33;2995:5;2968:33;:::i;:::-;2868:139;;;;:::o;3013:329::-;3072:6;3121:2;3109:9;3100:7;3096:23;3092:32;3089:119;;;3127:79;;:::i;:::-;3089:119;3247:1;3272:53;3317:7;3308:6;3297:9;3293:22;3272:53;:::i;:::-;3262:63;;3218:117;3013:329;;;;:::o;3348:474::-;3416:6;3424;3473:2;3461:9;3452:7;3448:23;3444:32;3441:119;;;3479:79;;:::i;:::-;3441:119;3599:1;3624:53;3669:7;3660:6;3649:9;3645:22;3624:53;:::i;:::-;3614:63;;3570:117;3726:2;3752:53;3797:7;3788:6;3777:9;3773:22;3752:53;:::i;:::-;3742:63;;3697:118;3348:474;;;;;:::o;3828:619::-;3905:6;3913;3921;3970:2;3958:9;3949:7;3945:23;3941:32;3938:119;;;3976:79;;:::i;:::-;3938:119;4096:1;4121:53;4166:7;4157:6;4146:9;4142:22;4121:53;:::i;:::-;4111:63;;4067:117;4223:2;4249:53;4294:7;4285:6;4274:9;4270:22;4249:53;:::i;:::-;4239:63;;4194:118;4351:2;4377:53;4422:7;4413:6;4402:9;4398:22;4377:53;:::i;:::-;4367:63;;4322:118;3828:619;;;;;:::o;4453:943::-;4548:6;4556;4564;4572;4621:3;4609:9;4600:7;4596:23;4592:33;4589:120;;;4628:79;;:::i;:::-;4589:120;4748:1;4773:53;4818:7;4809:6;4798:9;4794:22;4773:53;:::i;:::-;4763:63;;4719:117;4875:2;4901:53;4946:7;4937:6;4926:9;4922:22;4901:53;:::i;:::-;4891:63;;4846:118;5003:2;5029:53;5074:7;5065:6;5054:9;5050:22;5029:53;:::i;:::-;5019:63;;4974:118;5159:2;5148:9;5144:18;5131:32;5190:18;5182:6;5179:30;5176:117;;;5212:79;;:::i;:::-;5176:117;5317:62;5371:7;5362:6;5351:9;5347:22;5317:62;:::i;:::-;5307:72;;5102:287;4453:943;;;;;;;:::o;5402:468::-;5467:6;5475;5524:2;5512:9;5503:7;5499:23;5495:32;5492:119;;;5530:79;;:::i;:::-;5492:119;5650:1;5675:53;5720:7;5711:6;5700:9;5696:22;5675:53;:::i;:::-;5665:63;;5621:117;5777:2;5803:50;5845:7;5836:6;5825:9;5821:22;5803:50;:::i;:::-;5793:60;;5748:115;5402:468;;;;;:::o;5876:474::-;5944:6;5952;6001:2;5989:9;5980:7;5976:23;5972:32;5969:119;;;6007:79;;:::i;:::-;5969:119;6127:1;6152:53;6197:7;6188:6;6177:9;6173:22;6152:53;:::i;:::-;6142:63;;6098:117;6254:2;6280:53;6325:7;6316:6;6305:9;6301:22;6280:53;:::i;:::-;6270:63;;6225:118;5876:474;;;;;:::o;6356:704::-;6451:6;6459;6467;6516:2;6504:9;6495:7;6491:23;6487:32;6484:119;;;6522:79;;:::i;:::-;6484:119;6670:1;6659:9;6655:17;6642:31;6700:18;6692:6;6689:30;6686:117;;;6722:79;;:::i;:::-;6686:117;6835:80;6907:7;6898:6;6887:9;6883:22;6835:80;:::i;:::-;6817:98;;;;6613:312;6964:2;6990:53;7035:7;7026:6;7015:9;7011:22;6990:53;:::i;:::-;6980:63;;6935:118;6356:704;;;;;:::o;7066:849::-;7170:6;7178;7186;7194;7243:2;7231:9;7222:7;7218:23;7214:32;7211:119;;;7249:79;;:::i;:::-;7211:119;7397:1;7386:9;7382:17;7369:31;7427:18;7419:6;7416:30;7413:117;;;7449:79;;:::i;:::-;7413:117;7562:80;7634:7;7625:6;7614:9;7610:22;7562:80;:::i;:::-;7544:98;;;;7340:312;7691:2;7717:53;7762:7;7753:6;7742:9;7738:22;7717:53;:::i;:::-;7707:63;;7662:118;7819:2;7845:53;7890:7;7881:6;7870:9;7866:22;7845:53;:::i;:::-;7835:63;;7790:118;7066:849;;;;;;;:::o;7921:329::-;7980:6;8029:2;8017:9;8008:7;8004:23;8000:32;7997:119;;;8035:79;;:::i;:::-;7997:119;8155:1;8180:53;8225:7;8216:6;8205:9;8201:22;8180:53;:::i;:::-;8170:63;;8126:117;7921:329;;;;:::o;8256:327::-;8314:6;8363:2;8351:9;8342:7;8338:23;8334:32;8331:119;;;8369:79;;:::i;:::-;8331:119;8489:1;8514:52;8558:7;8549:6;8538:9;8534:22;8514:52;:::i;:::-;8504:62;;8460:116;8256:327;;;;:::o;8589:349::-;8658:6;8707:2;8695:9;8686:7;8682:23;8678:32;8675:119;;;8713:79;;:::i;:::-;8675:119;8833:1;8858:63;8913:7;8904:6;8893:9;8889:22;8858:63;:::i;:::-;8848:73;;8804:127;8589:349;;;;:::o;8944:509::-;9013:6;9062:2;9050:9;9041:7;9037:23;9033:32;9030:119;;;9068:79;;:::i;:::-;9030:119;9216:1;9205:9;9201:17;9188:31;9246:18;9238:6;9235:30;9232:117;;;9268:79;;:::i;:::-;9232:117;9373:63;9428:7;9419:6;9408:9;9404:22;9373:63;:::i;:::-;9363:73;;9159:287;8944:509;;;;:::o;9459:329::-;9518:6;9567:2;9555:9;9546:7;9542:23;9538:32;9535:119;;;9573:79;;:::i;:::-;9535:119;9693:1;9718:53;9763:7;9754:6;9743:9;9739:22;9718:53;:::i;:::-;9708:63;;9664:117;9459:329;;;;:::o;9794:118::-;9881:24;9899:5;9881:24;:::i;:::-;9876:3;9869:37;9794:118;;:::o;9918:157::-;10023:45;10043:24;10061:5;10043:24;:::i;:::-;10023:45;:::i;:::-;10018:3;10011:58;9918:157;;:::o;10081:109::-;10162:21;10177:5;10162:21;:::i;:::-;10157:3;10150:34;10081:109;;:::o;10196:360::-;10282:3;10310:38;10342:5;10310:38;:::i;:::-;10364:70;10427:6;10422:3;10364:70;:::i;:::-;10357:77;;10443:52;10488:6;10483:3;10476:4;10469:5;10465:16;10443:52;:::i;:::-;10520:29;10542:6;10520:29;:::i;:::-;10515:3;10511:39;10504:46;;10286:270;10196:360;;;;:::o;10562:364::-;10650:3;10678:39;10711:5;10678:39;:::i;:::-;10733:71;10797:6;10792:3;10733:71;:::i;:::-;10726:78;;10813:52;10858:6;10853:3;10846:4;10839:5;10835:16;10813:52;:::i;:::-;10890:29;10912:6;10890:29;:::i;:::-;10885:3;10881:39;10874:46;;10654:272;10562:364;;;;:::o;10932:377::-;11038:3;11066:39;11099:5;11066:39;:::i;:::-;11121:89;11203:6;11198:3;11121:89;:::i;:::-;11114:96;;11219:52;11264:6;11259:3;11252:4;11245:5;11241:16;11219:52;:::i;:::-;11296:6;11291:3;11287:16;11280:23;;11042:267;10932:377;;;;:::o;11315:366::-;11457:3;11478:67;11542:2;11537:3;11478:67;:::i;:::-;11471:74;;11554:93;11643:3;11554:93;:::i;:::-;11672:2;11667:3;11663:12;11656:19;;11315:366;;;:::o;11687:::-;11829:3;11850:67;11914:2;11909:3;11850:67;:::i;:::-;11843:74;;11926:93;12015:3;11926:93;:::i;:::-;12044:2;12039:3;12035:12;12028:19;;11687:366;;;:::o;12059:::-;12201:3;12222:67;12286:2;12281:3;12222:67;:::i;:::-;12215:74;;12298:93;12387:3;12298:93;:::i;:::-;12416:2;12411:3;12407:12;12400:19;;12059:366;;;:::o;12431:::-;12573:3;12594:67;12658:2;12653:3;12594:67;:::i;:::-;12587:74;;12670:93;12759:3;12670:93;:::i;:::-;12788:2;12783:3;12779:12;12772:19;;12431:366;;;:::o;12803:::-;12945:3;12966:67;13030:2;13025:3;12966:67;:::i;:::-;12959:74;;13042:93;13131:3;13042:93;:::i;:::-;13160:2;13155:3;13151:12;13144:19;;12803:366;;;:::o;13175:::-;13317:3;13338:67;13402:2;13397:3;13338:67;:::i;:::-;13331:74;;13414:93;13503:3;13414:93;:::i;:::-;13532:2;13527:3;13523:12;13516:19;;13175:366;;;:::o;13547:::-;13689:3;13710:67;13774:2;13769:3;13710:67;:::i;:::-;13703:74;;13786:93;13875:3;13786:93;:::i;:::-;13904:2;13899:3;13895:12;13888:19;;13547:366;;;:::o;13919:::-;14061:3;14082:67;14146:2;14141:3;14082:67;:::i;:::-;14075:74;;14158:93;14247:3;14158:93;:::i;:::-;14276:2;14271:3;14267:12;14260:19;;13919:366;;;:::o;14291:::-;14433:3;14454:67;14518:2;14513:3;14454:67;:::i;:::-;14447:74;;14530:93;14619:3;14530:93;:::i;:::-;14648:2;14643:3;14639:12;14632:19;;14291:366;;;:::o;14663:::-;14805:3;14826:67;14890:2;14885:3;14826:67;:::i;:::-;14819:74;;14902:93;14991:3;14902:93;:::i;:::-;15020:2;15015:3;15011:12;15004:19;;14663:366;;;:::o;15035:400::-;15195:3;15216:84;15298:1;15293:3;15216:84;:::i;:::-;15209:91;;15309:93;15398:3;15309:93;:::i;:::-;15427:1;15422:3;15418:11;15411:18;;15035:400;;;:::o;15441:366::-;15583:3;15604:67;15668:2;15663:3;15604:67;:::i;:::-;15597:74;;15680:93;15769:3;15680:93;:::i;:::-;15798:2;15793:3;15789:12;15782:19;;15441:366;;;:::o;15813:::-;15955:3;15976:67;16040:2;16035:3;15976:67;:::i;:::-;15969:74;;16052:93;16141:3;16052:93;:::i;:::-;16170:2;16165:3;16161:12;16154:19;;15813:366;;;:::o;16185:::-;16327:3;16348:67;16412:2;16407:3;16348:67;:::i;:::-;16341:74;;16424:93;16513:3;16424:93;:::i;:::-;16542:2;16537:3;16533:12;16526:19;;16185:366;;;:::o;16557:::-;16699:3;16720:67;16784:2;16779:3;16720:67;:::i;:::-;16713:74;;16796:93;16885:3;16796:93;:::i;:::-;16914:2;16909:3;16905:12;16898:19;;16557:366;;;:::o;16929:::-;17071:3;17092:67;17156:2;17151:3;17092:67;:::i;:::-;17085:74;;17168:93;17257:3;17168:93;:::i;:::-;17286:2;17281:3;17277:12;17270:19;;16929:366;;;:::o;17301:118::-;17388:24;17406:5;17388:24;:::i;:::-;17383:3;17376:37;17301:118;;:::o;17425:256::-;17537:3;17552:75;17623:3;17614:6;17552:75;:::i;:::-;17652:2;17647:3;17643:12;17636:19;;17672:3;17665:10;;17425:256;;;;:::o;17687:701::-;17968:3;17990:95;18081:3;18072:6;17990:95;:::i;:::-;17983:102;;18102:95;18193:3;18184:6;18102:95;:::i;:::-;18095:102;;18214:148;18358:3;18214:148;:::i;:::-;18207:155;;18379:3;18372:10;;17687:701;;;;;:::o;18394:222::-;18487:4;18525:2;18514:9;18510:18;18502:26;;18538:71;18606:1;18595:9;18591:17;18582:6;18538:71;:::i;:::-;18394:222;;;;:::o;18622:640::-;18817:4;18855:3;18844:9;18840:19;18832:27;;18869:71;18937:1;18926:9;18922:17;18913:6;18869:71;:::i;:::-;18950:72;19018:2;19007:9;19003:18;18994:6;18950:72;:::i;:::-;19032;19100:2;19089:9;19085:18;19076:6;19032:72;:::i;:::-;19151:9;19145:4;19141:20;19136:2;19125:9;19121:18;19114:48;19179:76;19250:4;19241:6;19179:76;:::i;:::-;19171:84;;18622:640;;;;;;;:::o;19268:332::-;19389:4;19427:2;19416:9;19412:18;19404:26;;19440:71;19508:1;19497:9;19493:17;19484:6;19440:71;:::i;:::-;19521:72;19589:2;19578:9;19574:18;19565:6;19521:72;:::i;:::-;19268:332;;;;;:::o;19606:210::-;19693:4;19731:2;19720:9;19716:18;19708:26;;19744:65;19806:1;19795:9;19791:17;19782:6;19744:65;:::i;:::-;19606:210;;;;:::o;19822:313::-;19935:4;19973:2;19962:9;19958:18;19950:26;;20022:9;20016:4;20012:20;20008:1;19997:9;19993:17;19986:47;20050:78;20123:4;20114:6;20050:78;:::i;:::-;20042:86;;19822:313;;;;:::o;20141:419::-;20307:4;20345:2;20334:9;20330:18;20322:26;;20394:9;20388:4;20384:20;20380:1;20369:9;20365:17;20358:47;20422:131;20548:4;20422:131;:::i;:::-;20414:139;;20141:419;;;:::o;20566:::-;20732:4;20770:2;20759:9;20755:18;20747:26;;20819:9;20813:4;20809:20;20805:1;20794:9;20790:17;20783:47;20847:131;20973:4;20847:131;:::i;:::-;20839:139;;20566:419;;;:::o;20991:::-;21157:4;21195:2;21184:9;21180:18;21172:26;;21244:9;21238:4;21234:20;21230:1;21219:9;21215:17;21208:47;21272:131;21398:4;21272:131;:::i;:::-;21264:139;;20991:419;;;:::o;21416:::-;21582:4;21620:2;21609:9;21605:18;21597:26;;21669:9;21663:4;21659:20;21655:1;21644:9;21640:17;21633:47;21697:131;21823:4;21697:131;:::i;:::-;21689:139;;21416:419;;;:::o;21841:::-;22007:4;22045:2;22034:9;22030:18;22022:26;;22094:9;22088:4;22084:20;22080:1;22069:9;22065:17;22058:47;22122:131;22248:4;22122:131;:::i;:::-;22114:139;;21841:419;;;:::o;22266:::-;22432:4;22470:2;22459:9;22455:18;22447:26;;22519:9;22513:4;22509:20;22505:1;22494:9;22490:17;22483:47;22547:131;22673:4;22547:131;:::i;:::-;22539:139;;22266:419;;;:::o;22691:::-;22857:4;22895:2;22884:9;22880:18;22872:26;;22944:9;22938:4;22934:20;22930:1;22919:9;22915:17;22908:47;22972:131;23098:4;22972:131;:::i;:::-;22964:139;;22691:419;;;:::o;23116:::-;23282:4;23320:2;23309:9;23305:18;23297:26;;23369:9;23363:4;23359:20;23355:1;23344:9;23340:17;23333:47;23397:131;23523:4;23397:131;:::i;:::-;23389:139;;23116:419;;;:::o;23541:::-;23707:4;23745:2;23734:9;23730:18;23722:26;;23794:9;23788:4;23784:20;23780:1;23769:9;23765:17;23758:47;23822:131;23948:4;23822:131;:::i;:::-;23814:139;;23541:419;;;:::o;23966:::-;24132:4;24170:2;24159:9;24155:18;24147:26;;24219:9;24213:4;24209:20;24205:1;24194:9;24190:17;24183:47;24247:131;24373:4;24247:131;:::i;:::-;24239:139;;23966:419;;;:::o;24391:::-;24557:4;24595:2;24584:9;24580:18;24572:26;;24644:9;24638:4;24634:20;24630:1;24619:9;24615:17;24608:47;24672:131;24798:4;24672:131;:::i;:::-;24664:139;;24391:419;;;:::o;24816:::-;24982:4;25020:2;25009:9;25005:18;24997:26;;25069:9;25063:4;25059:20;25055:1;25044:9;25040:17;25033:47;25097:131;25223:4;25097:131;:::i;:::-;25089:139;;24816:419;;;:::o;25241:::-;25407:4;25445:2;25434:9;25430:18;25422:26;;25494:9;25488:4;25484:20;25480:1;25469:9;25465:17;25458:47;25522:131;25648:4;25522:131;:::i;:::-;25514:139;;25241:419;;;:::o;25666:::-;25832:4;25870:2;25859:9;25855:18;25847:26;;25919:9;25913:4;25909:20;25905:1;25894:9;25890:17;25883:47;25947:131;26073:4;25947:131;:::i;:::-;25939:139;;25666:419;;;:::o;26091:::-;26257:4;26295:2;26284:9;26280:18;26272:26;;26344:9;26338:4;26334:20;26330:1;26319:9;26315:17;26308:47;26372:131;26498:4;26372:131;:::i;:::-;26364:139;;26091:419;;;:::o;26516:222::-;26609:4;26647:2;26636:9;26632:18;26624:26;;26660:71;26728:1;26717:9;26713:17;26704:6;26660:71;:::i;:::-;26516:222;;;;:::o;26744:129::-;26778:6;26805:20;;:::i;:::-;26795:30;;26834:33;26862:4;26854:6;26834:33;:::i;:::-;26744:129;;;:::o;26879:75::-;26912:6;26945:2;26939:9;26929:19;;26879:75;:::o;26960:307::-;27021:4;27111:18;27103:6;27100:30;27097:56;;;27133:18;;:::i;:::-;27097:56;27171:29;27193:6;27171:29;:::i;:::-;27163:37;;27255:4;27249;27245:15;27237:23;;26960:307;;;:::o;27273:308::-;27335:4;27425:18;27417:6;27414:30;27411:56;;;27447:18;;:::i;:::-;27411:56;27485:29;27507:6;27485:29;:::i;:::-;27477:37;;27569:4;27563;27559:15;27551:23;;27273:308;;;:::o;27587:98::-;27638:6;27672:5;27666:12;27656:22;;27587:98;;;:::o;27691:99::-;27743:6;27777:5;27771:12;27761:22;;27691:99;;;:::o;27796:168::-;27879:11;27913:6;27908:3;27901:19;27953:4;27948:3;27944:14;27929:29;;27796:168;;;;:::o;27970:169::-;28054:11;28088:6;28083:3;28076:19;28128:4;28123:3;28119:14;28104:29;;27970:169;;;;:::o;28145:148::-;28247:11;28284:3;28269:18;;28145:148;;;;:::o;28299:305::-;28339:3;28358:20;28376:1;28358:20;:::i;:::-;28353:25;;28392:20;28410:1;28392:20;:::i;:::-;28387:25;;28546:1;28478:66;28474:74;28471:1;28468:81;28465:107;;;28552:18;;:::i;:::-;28465:107;28596:1;28593;28589:9;28582:16;;28299:305;;;;:::o;28610:185::-;28650:1;28667:20;28685:1;28667:20;:::i;:::-;28662:25;;28701:20;28719:1;28701:20;:::i;:::-;28696:25;;28740:1;28730:35;;28745:18;;:::i;:::-;28730:35;28787:1;28784;28780:9;28775:14;;28610:185;;;;:::o;28801:348::-;28841:7;28864:20;28882:1;28864:20;:::i;:::-;28859:25;;28898:20;28916:1;28898:20;:::i;:::-;28893:25;;29086:1;29018:66;29014:74;29011:1;29008:81;29003:1;28996:9;28989:17;28985:105;28982:131;;;29093:18;;:::i;:::-;28982:131;29141:1;29138;29134:9;29123:20;;28801:348;;;;:::o;29155:191::-;29195:4;29215:20;29233:1;29215:20;:::i;:::-;29210:25;;29249:20;29267:1;29249:20;:::i;:::-;29244:25;;29288:1;29285;29282:8;29279:34;;;29293:18;;:::i;:::-;29279:34;29338:1;29335;29331:9;29323:17;;29155:191;;;;:::o;29352:96::-;29389:7;29418:24;29436:5;29418:24;:::i;:::-;29407:35;;29352:96;;;:::o;29454:90::-;29488:7;29531:5;29524:13;29517:21;29506:32;;29454:90;;;:::o;29550:77::-;29587:7;29616:5;29605:16;;29550:77;;;:::o;29633:149::-;29669:7;29709:66;29702:5;29698:78;29687:89;;29633:149;;;:::o;29788:126::-;29825:7;29865:42;29858:5;29854:54;29843:65;;29788:126;;;:::o;29920:77::-;29957:7;29986:5;29975:16;;29920:77;;;:::o;30003:154::-;30087:6;30082:3;30077;30064:30;30149:1;30140:6;30135:3;30131:16;30124:27;30003:154;;;:::o;30163:307::-;30231:1;30241:113;30255:6;30252:1;30249:13;30241:113;;;30340:1;30335:3;30331:11;30325:18;30321:1;30316:3;30312:11;30305:39;30277:2;30274:1;30270:10;30265:15;;30241:113;;;30372:6;30369:1;30366:13;30363:101;;;30452:1;30443:6;30438:3;30434:16;30427:27;30363:101;30212:258;30163:307;;;:::o;30476:320::-;30520:6;30557:1;30551:4;30547:12;30537:22;;30604:1;30598:4;30594:12;30625:18;30615:81;;30681:4;30673:6;30669:17;30659:27;;30615:81;30743:2;30735:6;30732:14;30712:18;30709:38;30706:84;;;30762:18;;:::i;:::-;30706:84;30527:269;30476:320;;;:::o;30802:281::-;30885:27;30907:4;30885:27;:::i;:::-;30877:6;30873:40;31015:6;31003:10;31000:22;30979:18;30967:10;30964:34;30961:62;30958:88;;;31026:18;;:::i;:::-;30958:88;31066:10;31062:2;31055:22;30845:238;30802:281;;:::o;31089:233::-;31128:3;31151:24;31169:5;31151:24;:::i;:::-;31142:33;;31197:66;31190:5;31187:77;31184:103;;;31267:18;;:::i;:::-;31184:103;31314:1;31307:5;31303:13;31296:20;;31089:233;;;:::o;31328:100::-;31367:7;31396:26;31416:5;31396:26;:::i;:::-;31385:37;;31328:100;;;:::o;31434:94::-;31473:7;31502:20;31516:5;31502:20;:::i;:::-;31491:31;;31434:94;;;:::o;31534:176::-;31566:1;31583:20;31601:1;31583:20;:::i;:::-;31578:25;;31617:20;31635:1;31617:20;:::i;:::-;31612:25;;31656:1;31646:35;;31661:18;;:::i;:::-;31646:35;31702:1;31699;31695:9;31690:14;;31534:176;;;;:::o;31716:180::-;31764:77;31761:1;31754:88;31861:4;31858:1;31851:15;31885:4;31882:1;31875:15;31902:180;31950:77;31947:1;31940:88;32047:4;32044:1;32037:15;32071:4;32068:1;32061:15;32088:180;32136:77;32133:1;32126:88;32233:4;32230:1;32223:15;32257:4;32254:1;32247:15;32274:180;32322:77;32319:1;32312:88;32419:4;32416:1;32409:15;32443:4;32440:1;32433:15;32460:180;32508:77;32505:1;32498:88;32605:4;32602:1;32595:15;32629:4;32626:1;32619:15;32646:180;32694:77;32691:1;32684:88;32791:4;32788:1;32781:15;32815:4;32812:1;32805:15;32832:117;32941:1;32938;32931:12;32955:117;33064:1;33061;33054:12;33078:117;33187:1;33184;33177:12;33201:117;33310:1;33307;33300:12;33324:117;33433:1;33430;33423:12;33447:117;33556:1;33553;33546:12;33570:102;33611:6;33662:2;33658:7;33653:2;33646:5;33642:14;33638:28;33628:38;;33570:102;;;:::o;33678:94::-;33711:8;33759:5;33755:2;33751:14;33730:35;;33678:94;;;:::o;33778:229::-;33918:34;33914:1;33906:6;33902:14;33895:58;33987:12;33982:2;33974:6;33970:15;33963:37;33778:229;:::o;34013:225::-;34153:34;34149:1;34141:6;34137:14;34130:58;34222:8;34217:2;34209:6;34205:15;34198:33;34013:225;:::o;34244:222::-;34384:34;34380:1;34372:6;34368:14;34361:58;34453:5;34448:2;34440:6;34436:15;34429:30;34244:222;:::o;34472:225::-;34612:34;34608:1;34600:6;34596:14;34589:58;34681:8;34676:2;34668:6;34664:15;34657:33;34472:225;:::o;34703:238::-;34843:34;34839:1;34831:6;34827:14;34820:58;34912:21;34907:2;34899:6;34895:15;34888:46;34703:238;:::o;34947:177::-;35087:29;35083:1;35075:6;35071:14;35064:53;34947:177;:::o;35130:182::-;35270:34;35266:1;35258:6;35254:14;35247:58;35130:182;:::o;35318:235::-;35458:34;35454:1;35446:6;35442:14;35435:58;35527:18;35522:2;35514:6;35510:15;35503:43;35318:235;:::o;35559:171::-;35699:23;35695:1;35687:6;35683:14;35676:47;35559:171;:::o;35736:224::-;35876:34;35872:1;35864:6;35860:14;35853:58;35945:7;35940:2;35932:6;35928:15;35921:32;35736:224;:::o;35966:114::-;;:::o;36086:222::-;36226:34;36222:1;36214:6;36210:14;36203:58;36295:5;36290:2;36282:6;36278:15;36271:30;36086:222;:::o;36314:163::-;36454:15;36450:1;36442:6;36438:14;36431:39;36314:163;:::o;36483:179::-;36623:31;36619:1;36611:6;36607:14;36600:55;36483:179;:::o;36668:178::-;36808:30;36804:1;36796:6;36792:14;36785:54;36668:178;:::o;36852:234::-;36992:34;36988:1;36980:6;36976:14;36969:58;37061:17;37056:2;37048:6;37044:15;37037:42;36852:234;:::o;37092:122::-;37165:24;37183:5;37165:24;:::i;:::-;37158:5;37155:35;37145:63;;37204:1;37201;37194:12;37145:63;37092:122;:::o;37220:116::-;37290:21;37305:5;37290:21;:::i;:::-;37283:5;37280:32;37270:60;;37326:1;37323;37316:12;37270:60;37220:116;:::o;37342:122::-;37415:24;37433:5;37415:24;:::i;:::-;37408:5;37405:35;37395:63;;37454:1;37451;37444:12;37395:63;37342:122;:::o;37470:120::-;37542:23;37559:5;37542:23;:::i;:::-;37535:5;37532:34;37522:62;;37580:1;37577;37570:12;37522:62;37470:120;:::o;37596:122::-;37669:24;37687:5;37669:24;:::i;:::-;37662:5;37659:35;37649:63;;37708:1;37705;37698:12;37649:63;37596:122;:::o

Swarm Source

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