ETH Price: $3,101.26 (-0.98%)
Gas: 8.46 Gwei

Token

Alpha Spy (AS)
 

Overview

Max Total Supply

1,027 AS

Holders

385

Market

Volume (24H)

N/A

Min Price (24H)

N/A

Max Price (24H)

N/A
Balance
2 AS
0xae9f34eee477457fe591ebc5572fbbd6a07c502f
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:
AlphaSpy

Compiler Version
v0.8.15+commit.e14f2714

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2022-07-18
*/

// SPDX-License-Identifier: MIT
pragma solidity ^0.8.15;

abstract contract ReentrancyGuard {
    uint256 private constant _NOT_ENTERED = 1;
    uint256 private constant _ENTERED = 2;
    uint256 private _status;

    constructor() {
        _status = _NOT_ENTERED;
    }

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

pragma solidity ^0.8.15;

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


pragma solidity ^0.8.15;

library Address {

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

    function sendValue(address payable recipient, uint256 amount) internal {
        require(address(this).balance >= amount, "Address: insufficient balance");
        (bool success, ) = recipient.call{value: amount}("");
        require(success, "Address: unable to send value, recipient may have reverted");
    }

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

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

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

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

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

    function functionStaticCall(
        address target,
        bytes memory data,
        string memory errorMessage
    ) internal view returns (bytes memory) {
        require(isContract(target), "Address: static call to non-contract");
        (bool success, bytes memory returndata) = target.staticcall(data);
        return verifyCallResult(success, returndata, errorMessage);
    }

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

    function functionDelegateCall(
        address target,
        bytes memory data,
        string memory errorMessage
    ) internal returns (bytes memory) {
        require(isContract(target), "Address: delegate call to non-contract");
        (bool success, bytes memory returndata) = target.delegatecall(data);
        return verifyCallResult(success, returndata, errorMessage);
    }

    function verifyCallResult(
        bool success,
        bytes memory returndata,
        string memory errorMessage
    ) internal pure returns (bytes memory) {
        if (success) {
            return returndata;
        } else {
            if (returndata.length > 0) {
                assembly {
                    let returndata_size := mload(returndata)
                    revert(add(32, returndata), returndata_size)
                }
            } else {
                revert(errorMessage);
            }
        }
    }
}

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

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

pragma solidity ^0.8.15;

library Strings {
    bytes16 private constant _HEX_SYMBOLS = "0123456789abcdef";
    function toString(uint256 value) internal pure returns (string memory) {
        if (value == 0) {
            return "0";
        }
        uint256 temp = value;
        uint256 digits;
        while (temp != 0) {
            digits++;
            temp /= 10;
        }
        bytes memory buffer = new bytes(digits);
        while (value != 0) {
            digits -= 1;
            buffer[digits] = bytes1(uint8(48 + uint256(value % 10)));
            value /= 10;
        }
        return string(buffer);
    }

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

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

pragma solidity ^0.8.15;

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


pragma solidity ^0.8.15;

library SafeMath {
    function tryAdd(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {
            uint256 c = a + b;
            if (c < a) return (false, 0);
            return (true, c);
        }
    }

    function trySub(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {
            if (b > a) return (false, 0);
            return (true, a - b);
        }
    }

    function tryMul(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {
            if (a == 0) return (true, 0);
            uint256 c = a * b;
            if (c / a != b) return (false, 0);
            return (true, c);
        }
    }

    function tryDiv(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {
            if (b == 0) return (false, 0);
            return (true, a / b);
        }
    }

    function tryMod(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {
            if (b == 0) return (false, 0);
            return (true, a % b);
        }
    }

    function add(uint256 a, uint256 b) internal pure returns (uint256) {
        return a + b;
    }

    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        return a - b;
    }

    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        return a * b;
    }

    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        return a / b;
    }

    function mod(uint256 a, uint256 b) internal pure returns (uint256) {
        return a % b;
    }

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

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

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


pragma solidity ^0.8.15;

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


pragma solidity ^0.8.15;

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


pragma solidity ^0.8.15;

interface IERC721Metadata is IERC721 {
    function name() external view returns (string memory);
    function symbol() external view returns (string memory);
    function tokenURI(uint256 tokenId) external view returns (string memory);
}


pragma solidity ^0.8.15;
interface IERC721Enumerable is IERC721 {
    function totalSupply() external view returns (uint256);
    function tokenOfOwnerByIndex(address owner, uint256 index) external view returns (uint256 tokenId);
    function tokenByIndex(uint256 index) external view returns (uint256);
}

pragma solidity ^0.8.15;
abstract contract Ownable is Context {
    address private _owner;
    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);

    constructor() {
        _setOwner(_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 {
        _setOwner(address(0));
    }

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

    function _setOwner(address newOwner) private {
        address oldOwner = _owner;
        _owner = newOwner;
        emit OwnershipTransferred(oldOwner, newOwner);
    }
}

pragma solidity ^0.8.15;

abstract contract ERC721 is Context, ERC165, IERC721, IERC721Metadata {
    using Address for address;
    string private _name;
    string private _symbol;
    address[] internal _owners;
    mapping(uint256 => address) private _tokenApprovals;
    mapping(address => mapping(address => bool)) private _operatorApprovals;     
    constructor(string memory name_, string memory symbol_) {
        _name = name_;
        _symbol = symbol_;
    }     
    function supportsInterface(bytes4 interfaceId) public view virtual override(ERC165, IERC165) returns (bool) {
        return
            interfaceId == type(IERC721).interfaceId ||
            interfaceId == type(IERC721Metadata).interfaceId ||
            super.supportsInterface(interfaceId);
    }
    function balanceOf(address owner) public view virtual override returns (uint256) {
        require(owner != address(0), "ERC721: balance query for the zero address");
        uint count = 0;
        uint length = _owners.length;
        for( uint i = 0; i < length; ++i ){
          if( owner == _owners[i] ){
            ++count;
          }
        }
        delete length;
        return count;
    }
    function ownerOf(uint256 tokenId) public view virtual override returns (address) {
        address owner = _owners[tokenId];
        require(owner != address(0), "ERC721: owner query for nonexistent token");
        return owner;
    }
    function name() public view virtual override returns (string memory) {
        return _name;
    }
    function symbol() public view virtual override returns (string memory) {
        return _symbol;
    }
    function approve(address to, uint256 tokenId) public virtual override {
        address owner = ERC721.ownerOf(tokenId);
        require(to != owner, "ERC721: approval to current owner");
        require(
            _msgSender() == owner || isApprovedForAll(owner, _msgSender()),
            "ERC721: approve caller is not owner nor approved for all"
        );
        _approve(to, tokenId);
    }
    function getApproved(uint256 tokenId) public view virtual override returns (address) {
        require(_exists(tokenId), "ERC721: approved query for nonexistent token");
        return _tokenApprovals[tokenId];
    }
    function setApprovalForAll(address operator, bool approved) public virtual override {
        require(operator != _msgSender(), "ERC721: approve to caller");
        _operatorApprovals[_msgSender()][operator] = approved;
        emit ApprovalForAll(_msgSender(), operator, approved);
    }
    function isApprovedForAll(address owner, address operator) public view virtual override returns (bool) {
        return _operatorApprovals[owner][operator];
    }
    function transferFrom(
        address from,
        address to,
        uint256 tokenId
    ) public virtual override {
        require(_isApprovedOrOwner(_msgSender(), tokenId), "ERC721: transfer caller is not owner nor approved");
        _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 virtual override {
        require(_isApprovedOrOwner(_msgSender(), tokenId), "ERC721: transfer caller is not owner nor approved");
        _safeTransfer(from, to, tokenId, _data);
    }     
    function _safeTransfer(
        address from,
        address to,
        uint256 tokenId,
        bytes memory _data
    ) internal virtual {
        _transfer(from, to, tokenId);
        require(_checkOnERC721Received(from, to, tokenId, _data), "ERC721: transfer to non ERC721Receiver implementer");
    }
	function _exists(uint256 tokenId) internal view virtual returns (bool) {
        return tokenId < _owners.length && _owners[tokenId] != address(0);
    }
	function _isApprovedOrOwner(address spender, uint256 tokenId) internal view virtual returns (bool) {
        require(_exists(tokenId), "ERC721: operator query for nonexistent token");
        address owner = ERC721.ownerOf(tokenId);
        return (spender == owner || getApproved(tokenId) == spender || isApprovedForAll(owner, spender));
    }
	function _safeMint(address to, uint256 tokenId) internal virtual {
        _safeMint(to, tokenId, "");
    }
	function _safeMint(
        address to,
        uint256 tokenId,
        bytes memory _data
    ) internal virtual {
        _mint(to, tokenId);
        require(
            _checkOnERC721Received(address(0), to, tokenId, _data),
            "ERC721: transfer to non ERC721Receiver implementer"
        );
    }
	function _mint(address to, uint256 tokenId) internal virtual {
        require(to != address(0), "ERC721: mint to the zero address");
        require(!_exists(tokenId), "ERC721: token already minted");
        _beforeTokenTransfer(address(0), to, tokenId);
        _owners.push(to);
        emit Transfer(address(0), to, tokenId);
    }
	function _burn(uint256 tokenId) internal virtual {
        address owner = ERC721.ownerOf(tokenId);
        _beforeTokenTransfer(owner, address(0), tokenId);
        _approve(address(0), tokenId);
        _owners[tokenId] = address(0);
        emit Transfer(owner, address(0), tokenId);
    }
	function _transfer(
        address from,
        address to,
        uint256 tokenId
    ) internal virtual {
        require(ERC721.ownerOf(tokenId) == from, "ERC721: transfer of token that is not own");
        require(to != address(0), "ERC721: transfer to the zero address");
        _beforeTokenTransfer(from, to, tokenId);
        _approve(address(0), tokenId);
        _owners[tokenId] = to;
        emit Transfer(from, to, tokenId);
    }
	function _approve(address to, uint256 tokenId) internal virtual {
        _tokenApprovals[tokenId] = to;
        emit Approval(ERC721.ownerOf(tokenId), 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.onERC721Received.selector;
            } catch (bytes memory reason) {
                if (reason.length == 0) {
                    revert("ERC721: transfer to non ERC721Receiver implementer");
                } else {
                    assembly {
                        revert(add(32, reason), mload(reason))
                    }
                }
            }
        } else {
            return true;
        }
    }
	function _beforeTokenTransfer(
        address from,
        address to,
        uint256 tokenId
    ) internal virtual {}
}


pragma solidity ^0.8.15;
abstract contract ERC721Enum is ERC721, IERC721Enumerable {
    function supportsInterface(bytes4 interfaceId) public view virtual override(IERC165, ERC721) returns (bool) {
        return interfaceId == type(IERC721Enumerable).interfaceId || super.supportsInterface(interfaceId);
    }
    function tokenOfOwnerByIndex(address owner, uint256 index) public view override returns (uint256 tokenId) {
        require(index < ERC721.balanceOf(owner), "ERC721Enum: owner ioob");
        uint count;
        for( uint i; i < _owners.length; ++i ){
            if( owner == _owners[i] ){
                if( count == index )
                    return i;
                else
                    ++count;
            }
        }
        require(false, "ERC721Enum: owner ioob");
    }
    function tokensOfOwner(address owner) public view returns (uint256[] memory) {
        require(0 < ERC721.balanceOf(owner), "ERC721Enum: owner ioob");
        uint256 tokenCount = balanceOf(owner);
        uint256[] memory tokenIds = new uint256[](tokenCount);
        for (uint256 i = 0; i < tokenCount; i++) {
            tokenIds[i] = tokenOfOwnerByIndex(owner, i);
        }
        return tokenIds;
    }
    function totalSupply() public view virtual override returns (uint256) {
        return _owners.length;
    }
    function tokenByIndex(uint256 index) public view virtual override returns (uint256) {
        require(index < ERC721Enum.totalSupply(), "ERC721Enum: global ioob");
        return index;
    }
}


pragma solidity ^0.8.15;

contract AlphaSpy is ERC721Enum, Ownable, ReentrancyGuard {
	using Strings for uint256;
	string public baseURI;
	//sale settings
	uint256 public cost = 0.03 ether;
	uint256 public maxSupply = 2000;
	uint256 public maxMint = 5;
    address private company = 0x32C0A78CD060115Cce5E851e48913e368119F879;
	bool public status = false;

	constructor(
	string memory _name,
	string memory _symbol,
	string memory _initBaseURI
	) ERC721(_name, _symbol){
	setBaseURI(_initBaseURI);
	}
	// internal
	function _baseURI() internal view virtual returns (string memory) {
	return baseURI;
	}
	function mint(uint256 _mintAmount) public payable nonReentrant{
	uint256 s = totalSupply();
	require(status, "Off" );
	require(_mintAmount > 0, "0" );
	require(_mintAmount <= maxMint, "Too many" );
	require(s + _mintAmount <= maxSupply, "Max" );
	require(msg.value >= cost * _mintAmount);
	for (uint256 i = 0; i < _mintAmount; ++i) {
	_safeMint(msg.sender, s + i, "");
	}
	delete s;
	}
	function adminMint(address[] calldata recipient) external onlyOwner{
	uint256 s = totalSupply();
	require(s + recipient.length <= maxSupply, "Too many" );
	for(uint i = 0; i < recipient.length; ++i){
	_safeMint(recipient[i], s++, "" );
	}
	delete s;	
	}
	function tokenURI(uint256 tokenId) public view virtual override returns (string memory) {
	require(_exists(tokenId), "ERC721Metadata: Nonexistent token");
	string memory currentBaseURI = _baseURI();
	return bytes(currentBaseURI).length > 0	? string(abi.encodePacked(currentBaseURI, tokenId.toString())) : "";
	}
	function setCost(uint256 _newCost) public onlyOwner {
	cost = _newCost;
	}
	function setMaxMintAmount(uint256 _newMaxMintAmount) public onlyOwner {
	maxMint = _newMaxMintAmount;
	}
	function setBaseURI(string memory _newBaseURI) public onlyOwner {
	baseURI = _newBaseURI;
	}
	function setSaleStatus(bool _status) public onlyOwner {
	status = _status;
	}
	function withdraw() public onlyOwner {
    (bool _company, ) = payable(company).call{value: address(this).balance}("");
    require(_company);
	}
    function setmaxSupply(uint256 _newMaxSupply) public onlyOwner {
	maxSupply = _newMaxSupply;
	}
}

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"string","name":"_name","type":"string"},{"internalType":"string","name":"_symbol","type":"string"},{"internalType":"string","name":"_initBaseURI","type":"string"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"approved","type":"address"},{"indexed":true,"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"operator","type":"address"},{"indexed":false,"internalType":"bool","name":"approved","type":"bool"}],"name":"ApprovalForAll","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":true,"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address[]","name":"recipient","type":"address[]"}],"name":"adminMint","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"approve","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"baseURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"cost","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"getApproved","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"operator","type":"address"}],"name":"isApprovedForAll","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxMint","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":"_mintAmount","type":"uint256"}],"name":"mint","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"ownerOf","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"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":"uint256","name":"_newCost","type":"uint256"}],"name":"setCost","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_newMaxMintAmount","type":"uint256"}],"name":"setMaxMintAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_status","type":"bool"}],"name":"setSaleStatus","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_newMaxSupply","type":"uint256"}],"name":"setmaxSupply","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"status","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"index","type":"uint256"}],"name":"tokenByIndex","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"uint256","name":"index","type":"uint256"}],"name":"tokenOfOwnerByIndex","outputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"tokenURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"tokensOfOwner","outputs":[{"internalType":"uint256[]","name":"","type":"uint256[]"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"transferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"withdraw","outputs":[],"stateMutability":"nonpayable","type":"function"}]

6080604052666a94d74f4300006008556107d06009556005600a557332c0a78cd060115cce5e851e48913e368119f879600b60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600b60146101000a81548160ff0219169083151502179055503480156200009757600080fd5b5060405162004bcb38038062004bcb8339818101604052810190620000bd919062000460565b82828160009081620000d0919062000764565b508060019081620000e2919062000764565b50505062000105620000f96200012760201b60201c565b6200012f60201b60201c565b60016006819055506200011e81620001f560201b60201c565b505050620008ce565b600033905090565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b620002056200012760201b60201c565b73ffffffffffffffffffffffffffffffffffffffff166200022b6200029960201b60201c565b73ffffffffffffffffffffffffffffffffffffffff161462000284576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200027b90620008ac565b60405180910390fd5b806007908162000295919062000764565b5050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6000604051905090565b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6200032c82620002e1565b810181811067ffffffffffffffff821117156200034e576200034d620002f2565b5b80604052505050565b600062000363620002c3565b905062000371828262000321565b919050565b600067ffffffffffffffff821115620003945762000393620002f2565b5b6200039f82620002e1565b9050602081019050919050565b60005b83811015620003cc578082015181840152602081019050620003af565b83811115620003dc576000848401525b50505050565b6000620003f9620003f38462000376565b62000357565b905082815260208101848484011115620004185762000417620002dc565b5b62000425848285620003ac565b509392505050565b600082601f830112620004455762000444620002d7565b5b815162000457848260208601620003e2565b91505092915050565b6000806000606084860312156200047c576200047b620002cd565b5b600084015167ffffffffffffffff8111156200049d576200049c620002d2565b5b620004ab868287016200042d565b935050602084015167ffffffffffffffff811115620004cf57620004ce620002d2565b5b620004dd868287016200042d565b925050604084015167ffffffffffffffff811115620005015762000500620002d2565b5b6200050f868287016200042d565b9150509250925092565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806200056c57607f821691505b60208210810362000582576200058162000524565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b600060088302620005ec7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82620005ad565b620005f88683620005ad565b95508019841693508086168417925050509392505050565b6000819050919050565b6000819050919050565b6000620006456200063f620006398462000610565b6200061a565b62000610565b9050919050565b6000819050919050565b620006618362000624565b6200067962000670826200064c565b848454620005ba565b825550505050565b600090565b6200069062000681565b6200069d81848462000656565b505050565b5b81811015620006c557620006b960008262000686565b600181019050620006a3565b5050565b601f8211156200071457620006de8162000588565b620006e9846200059d565b81016020851015620006f9578190505b6200071162000708856200059d565b830182620006a2565b50505b505050565b600082821c905092915050565b6000620007396000198460080262000719565b1980831691505092915050565b600062000754838362000726565b9150826002028217905092915050565b6200076f8262000519565b67ffffffffffffffff8111156200078b576200078a620002f2565b5b62000797825462000553565b620007a4828285620006c9565b600060209050601f831160018114620007dc5760008415620007c7578287015190505b620007d3858262000746565b86555062000843565b601f198416620007ec8662000588565b60005b828110156200081657848901518255600182019150602085019450602081019050620007ef565b8683101562000836578489015162000832601f89168262000726565b8355505b6001600288020188555050505b505050505050565b600082825260208201905092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000620008946020836200084b565b9150620008a1826200085c565b602082019050919050565b60006020820190508181036000830152620008c78162000885565b9050919050565b6142ed80620008de6000396000f3fe6080604052600436106101ee5760003560e01c806355f804b31161010d57806395d89b41116100a0578063c87b56dd1161006f578063c87b56dd146106da578063d5abeb0114610717578063d897833e14610742578063e985e9c51461076b578063f2fde38b146107a8576101ee565b806395d89b4114610641578063a0712d681461066c578063a22cb46514610688578063b88d4fde146106b1576101ee565b8063715018a6116100dc578063715018a6146105975780637501f741146105ae5780638462151c146105d95780638da5cb5b14610616576101ee565b806355f804b3146104c95780636352211e146104f25780636c0360eb1461052f57806370a082311461055a576101ee565b806321cbb5bd116101855780633ccfd60b116101545780633ccfd60b1461042357806342842e0e1461043a57806344a0d68a146104635780634f6ccce71461048c576101ee565b806321cbb5bd1461036b578063228025e81461039457806323b872dd146103bd5780632f745c59146103e6576101ee565b8063095ea7b3116101c1578063095ea7b3146102c157806313faede6146102ea57806318160ddd14610315578063200d2ed214610340576101ee565b806301ffc9a7146101f357806306fdde0314610230578063081812fc1461025b578063088a4ed014610298575b600080fd5b3480156101ff57600080fd5b5061021a600480360381019061021591906128be565b6107d1565b6040516102279190612906565b60405180910390f35b34801561023c57600080fd5b5061024561084b565b60405161025291906129ba565b60405180910390f35b34801561026757600080fd5b50610282600480360381019061027d9190612a12565b6108dd565b60405161028f9190612a80565b60405180910390f35b3480156102a457600080fd5b506102bf60048036038101906102ba9190612a12565b610962565b005b3480156102cd57600080fd5b506102e860048036038101906102e39190612ac7565b6109e8565b005b3480156102f657600080fd5b506102ff610aff565b60405161030c9190612b16565b60405180910390f35b34801561032157600080fd5b5061032a610b05565b6040516103379190612b16565b60405180910390f35b34801561034c57600080fd5b50610355610b12565b6040516103629190612906565b60405180910390f35b34801561037757600080fd5b50610392600480360381019061038d9190612b96565b610b25565b005b3480156103a057600080fd5b506103bb60048036038101906103b69190612a12565b610c76565b005b3480156103c957600080fd5b506103e460048036038101906103df9190612be3565b610cfc565b005b3480156103f257600080fd5b5061040d60048036038101906104089190612ac7565b610d5c565b60405161041a9190612b16565b60405180910390f35b34801561042f57600080fd5b50610438610ea3565b005b34801561044657600080fd5b50610461600480360381019061045c9190612be3565b610fba565b005b34801561046f57600080fd5b5061048a60048036038101906104859190612a12565b610fda565b005b34801561049857600080fd5b506104b360048036038101906104ae9190612a12565b611060565b6040516104c09190612b16565b60405180910390f35b3480156104d557600080fd5b506104f060048036038101906104eb9190612d66565b6110b3565b005b3480156104fe57600080fd5b5061051960048036038101906105149190612a12565b611142565b6040516105269190612a80565b60405180910390f35b34801561053b57600080fd5b506105446111fe565b60405161055191906129ba565b60405180910390f35b34801561056657600080fd5b50610581600480360381019061057c9190612daf565b61128c565b60405161058e9190612b16565b60405180910390f35b3480156105a357600080fd5b506105ac6113b0565b005b3480156105ba57600080fd5b506105c3611438565b6040516105d09190612b16565b60405180910390f35b3480156105e557600080fd5b5061060060048036038101906105fb9190612daf565b61143e565b60405161060d9190612e9a565b60405180910390f35b34801561062257600080fd5b5061062b611537565b6040516106389190612a80565b60405180910390f35b34801561064d57600080fd5b50610656611561565b60405161066391906129ba565b60405180910390f35b61068660048036038101906106819190612a12565b6115f3565b005b34801561069457600080fd5b506106af60048036038101906106aa9190612ee8565b6117df565b005b3480156106bd57600080fd5b506106d860048036038101906106d39190612fc9565b61195f565b005b3480156106e657600080fd5b5061070160048036038101906106fc9190612a12565b6119c1565b60405161070e91906129ba565b60405180910390f35b34801561072357600080fd5b5061072c611a68565b6040516107399190612b16565b60405180910390f35b34801561074e57600080fd5b506107696004803603810190610764919061304c565b611a6e565b005b34801561077757600080fd5b50610792600480360381019061078d9190613079565b611b07565b60405161079f9190612906565b60405180910390f35b3480156107b457600080fd5b506107cf60048036038101906107ca9190612daf565b611b9b565b005b60007f780e9d63000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480610844575061084382611c92565b5b9050919050565b60606000805461085a906130e8565b80601f0160208091040260200160405190810160405280929190818152602001828054610886906130e8565b80156108d35780601f106108a8576101008083540402835291602001916108d3565b820191906000526020600020905b8154815290600101906020018083116108b657829003601f168201915b5050505050905090565b60006108e882611d74565b610927576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161091e9061318b565b60405180910390fd5b6003600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b61096a611dfc565b73ffffffffffffffffffffffffffffffffffffffff16610988611537565b73ffffffffffffffffffffffffffffffffffffffff16146109de576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109d5906131f7565b60405180910390fd5b80600a8190555050565b60006109f382611142565b90508073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610a63576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a5a90613289565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16610a82611dfc565b73ffffffffffffffffffffffffffffffffffffffff161480610ab15750610ab081610aab611dfc565b611b07565b5b610af0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ae79061331b565b60405180910390fd5b610afa8383611e04565b505050565b60085481565b6000600280549050905090565b600b60149054906101000a900460ff1681565b610b2d611dfc565b73ffffffffffffffffffffffffffffffffffffffff16610b4b611537565b73ffffffffffffffffffffffffffffffffffffffff1614610ba1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b98906131f7565b60405180910390fd5b6000610bab610b05565b90506009548383905082610bbf919061336a565b1115610c00576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bf79061340c565b60405180910390fd5b60005b83839050811015610c6c57610c5b848483818110610c2457610c2361342c565b5b9050602002016020810190610c399190612daf565b8380610c449061345b565b945060405180602001604052806000815250611ebd565b80610c659061345b565b9050610c03565b5060009050505050565b610c7e611dfc565b73ffffffffffffffffffffffffffffffffffffffff16610c9c611537565b73ffffffffffffffffffffffffffffffffffffffff1614610cf2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ce9906131f7565b60405180910390fd5b8060098190555050565b610d0d610d07611dfc565b82611f18565b610d4c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d4390613515565b60405180910390fd5b610d57838383611ff6565b505050565b6000610d678361128c565b8210610da8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d9f90613581565b60405180910390fd5b6000805b600280549050811015610e595760028181548110610dcd57610dcc61342c565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1603610e4857838203610e3b578092505050610e9d565b81610e459061345b565b91505b80610e529061345b565b9050610dac565b506000610e9b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e9290613581565b60405180910390fd5b505b92915050565b610eab611dfc565b73ffffffffffffffffffffffffffffffffffffffff16610ec9611537565b73ffffffffffffffffffffffffffffffffffffffff1614610f1f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f16906131f7565b60405180910390fd5b6000600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1647604051610f67906135d2565b60006040518083038185875af1925050503d8060008114610fa4576040519150601f19603f3d011682016040523d82523d6000602084013e610fa9565b606091505b5050905080610fb757600080fd5b50565b610fd58383836040518060200160405280600081525061195f565b505050565b610fe2611dfc565b73ffffffffffffffffffffffffffffffffffffffff16611000611537565b73ffffffffffffffffffffffffffffffffffffffff1614611056576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161104d906131f7565b60405180910390fd5b8060088190555050565b600061106a610b05565b82106110ab576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110a290613633565b60405180910390fd5b819050919050565b6110bb611dfc565b73ffffffffffffffffffffffffffffffffffffffff166110d9611537565b73ffffffffffffffffffffffffffffffffffffffff161461112f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611126906131f7565b60405180910390fd5b806007908161113e91906137ff565b5050565b600080600283815481106111595761115861342c565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036111f5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111ec90613943565b60405180910390fd5b80915050919050565b6007805461120b906130e8565b80601f0160208091040260200160405190810160405280929190818152602001828054611237906130e8565b80156112845780601f1061125957610100808354040283529160200191611284565b820191906000526020600020905b81548152906001019060200180831161126757829003601f168201915b505050505081565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036112fc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112f3906139d5565b60405180910390fd5b600080600280549050905060005b818110156113a157600281815481106113265761132561342c565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1603611390578261138d9061345b565b92505b8061139a9061345b565b905061130a565b50600090508192505050919050565b6113b8611dfc565b73ffffffffffffffffffffffffffffffffffffffff166113d6611537565b73ffffffffffffffffffffffffffffffffffffffff161461142c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611423906131f7565b60405180910390fd5b61143660006121ae565b565b600a5481565b60606114498261128c565b60001061148b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161148290613581565b60405180910390fd5b60006114968361128c565b905060008167ffffffffffffffff8111156114b4576114b3612c3b565b5b6040519080825280602002602001820160405280156114e25781602001602082028036833780820191505090505b50905060005b8281101561152c576114fa8582610d5c565b82828151811061150d5761150c61342c565b5b60200260200101818152505080806115249061345b565b9150506114e8565b508092505050919050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b606060018054611570906130e8565b80601f016020809104026020016040519081016040528092919081815260200182805461159c906130e8565b80156115e95780601f106115be576101008083540402835291602001916115e9565b820191906000526020600020905b8154815290600101906020018083116115cc57829003601f168201915b5050505050905090565b600260065403611638576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161162f90613a41565b60405180910390fd5b6002600681905550600061164a610b05565b9050600b60149054906101000a900460ff1661169b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161169290613aad565b60405180910390fd5b600082116116de576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116d590613b19565b60405180910390fd5b600a54821115611723576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161171a9061340c565b60405180910390fd5b6009548282611732919061336a565b1115611773576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161176a90613b85565b60405180910390fd5b816008546117819190613ba5565b34101561178d57600080fd5b60005b828110156117ce576117bd3382846117a8919061336a565b60405180602001604052806000815250611ebd565b806117c79061345b565b9050611790565b506000905050600160068190555050565b6117e7611dfc565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611854576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161184b90613c4b565b60405180910390fd5b8060046000611861611dfc565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff1661190e611dfc565b73ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31836040516119539190612906565b60405180910390a35050565b61197061196a611dfc565b83611f18565b6119af576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119a690613515565b60405180910390fd5b6119bb84848484612274565b50505050565b60606119cc82611d74565b611a0b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a0290613cdd565b60405180910390fd5b6000611a156122d0565b90506000815111611a355760405180602001604052806000815250611a60565b80611a3f84612362565b604051602001611a50929190613d39565b6040516020818303038152906040525b915050919050565b60095481565b611a76611dfc565b73ffffffffffffffffffffffffffffffffffffffff16611a94611537565b73ffffffffffffffffffffffffffffffffffffffff1614611aea576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ae1906131f7565b60405180910390fd5b80600b60146101000a81548160ff02191690831515021790555050565b6000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b611ba3611dfc565b73ffffffffffffffffffffffffffffffffffffffff16611bc1611537565b73ffffffffffffffffffffffffffffffffffffffff1614611c17576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c0e906131f7565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611c86576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c7d90613dcf565b60405180910390fd5b611c8f816121ae565b50565b60007f80ac58cd000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480611d5d57507f5b5e139f000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b80611d6d5750611d6c826124c2565b5b9050919050565b600060028054905082108015611df55750600073ffffffffffffffffffffffffffffffffffffffff1660028381548110611db157611db061342c565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614155b9050919050565b600033905090565b816003600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff16611e7783611142565b73ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b611ec7838361252c565b611ed460008484846126b3565b611f13576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f0a90613e61565b60405180910390fd5b505050565b6000611f2382611d74565b611f62576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f5990613ef3565b60405180910390fd5b6000611f6d83611142565b90508073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161480611fdc57508373ffffffffffffffffffffffffffffffffffffffff16611fc4846108dd565b73ffffffffffffffffffffffffffffffffffffffff16145b80611fed5750611fec8185611b07565b5b91505092915050565b8273ffffffffffffffffffffffffffffffffffffffff1661201682611142565b73ffffffffffffffffffffffffffffffffffffffff161461206c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161206390613f85565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036120db576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120d290614017565b60405180910390fd5b6120e683838361283a565b6120f1600082611e04565b81600282815481106121065761210561342c565b5b9060005260206000200160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4505050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b61227f848484611ff6565b61228b848484846126b3565b6122ca576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122c190613e61565b60405180910390fd5b50505050565b6060600780546122df906130e8565b80601f016020809104026020016040519081016040528092919081815260200182805461230b906130e8565b80156123585780601f1061232d57610100808354040283529160200191612358565b820191906000526020600020905b81548152906001019060200180831161233b57829003601f168201915b5050505050905090565b6060600082036123a9576040518060400160405280600181526020017f300000000000000000000000000000000000000000000000000000000000000081525090506124bd565b600082905060005b600082146123db5780806123c49061345b565b915050600a826123d49190614066565b91506123b1565b60008167ffffffffffffffff8111156123f7576123f6612c3b565b5b6040519080825280601f01601f1916602001820160405280156124295781602001600182028036833780820191505090505b5090505b600085146124b6576001826124429190614097565b9150600a8561245191906140cb565b603061245d919061336a565b60f81b8183815181106124735761247261342c565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600a856124af9190614066565b945061242d565b8093505050505b919050565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361259b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161259290614148565b60405180910390fd5b6125a481611d74565b156125e4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125db906141b4565b60405180910390fd5b6125f06000838361283a565b6002829080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a45050565b60006126d48473ffffffffffffffffffffffffffffffffffffffff1661283f565b1561282d578373ffffffffffffffffffffffffffffffffffffffff1663150b7a026126fd611dfc565b8786866040518563ffffffff1660e01b815260040161271f9493929190614229565b6020604051808303816000875af192505050801561275b57506040513d601f19601f82011682018060405250810190612758919061428a565b60015b6127dd573d806000811461278b576040519150601f19603f3d011682016040523d82523d6000602084013e612790565b606091505b5060008151036127d5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127cc90613e61565b60405180910390fd5b805181602001fd5b63150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614915050612832565b600190505b949350505050565b505050565b600080823b905060008111915050919050565b6000604051905090565b600080fd5b600080fd5b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b61289b81612866565b81146128a657600080fd5b50565b6000813590506128b881612892565b92915050565b6000602082840312156128d4576128d361285c565b5b60006128e2848285016128a9565b91505092915050565b60008115159050919050565b612900816128eb565b82525050565b600060208201905061291b60008301846128f7565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b8381101561295b578082015181840152602081019050612940565b8381111561296a576000848401525b50505050565b6000601f19601f8301169050919050565b600061298c82612921565b612996818561292c565b93506129a681856020860161293d565b6129af81612970565b840191505092915050565b600060208201905081810360008301526129d48184612981565b905092915050565b6000819050919050565b6129ef816129dc565b81146129fa57600080fd5b50565b600081359050612a0c816129e6565b92915050565b600060208284031215612a2857612a2761285c565b5b6000612a36848285016129fd565b91505092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000612a6a82612a3f565b9050919050565b612a7a81612a5f565b82525050565b6000602082019050612a956000830184612a71565b92915050565b612aa481612a5f565b8114612aaf57600080fd5b50565b600081359050612ac181612a9b565b92915050565b60008060408385031215612ade57612add61285c565b5b6000612aec85828601612ab2565b9250506020612afd858286016129fd565b9150509250929050565b612b10816129dc565b82525050565b6000602082019050612b2b6000830184612b07565b92915050565b600080fd5b600080fd5b600080fd5b60008083601f840112612b5657612b55612b31565b5b8235905067ffffffffffffffff811115612b7357612b72612b36565b5b602083019150836020820283011115612b8f57612b8e612b3b565b5b9250929050565b60008060208385031215612bad57612bac61285c565b5b600083013567ffffffffffffffff811115612bcb57612bca612861565b5b612bd785828601612b40565b92509250509250929050565b600080600060608486031215612bfc57612bfb61285c565b5b6000612c0a86828701612ab2565b9350506020612c1b86828701612ab2565b9250506040612c2c868287016129fd565b9150509250925092565b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b612c7382612970565b810181811067ffffffffffffffff82111715612c9257612c91612c3b565b5b80604052505050565b6000612ca5612852565b9050612cb18282612c6a565b919050565b600067ffffffffffffffff821115612cd157612cd0612c3b565b5b612cda82612970565b9050602081019050919050565b82818337600083830152505050565b6000612d09612d0484612cb6565b612c9b565b905082815260208101848484011115612d2557612d24612c36565b5b612d30848285612ce7565b509392505050565b600082601f830112612d4d57612d4c612b31565b5b8135612d5d848260208601612cf6565b91505092915050565b600060208284031215612d7c57612d7b61285c565b5b600082013567ffffffffffffffff811115612d9a57612d99612861565b5b612da684828501612d38565b91505092915050565b600060208284031215612dc557612dc461285c565b5b6000612dd384828501612ab2565b91505092915050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b612e11816129dc565b82525050565b6000612e238383612e08565b60208301905092915050565b6000602082019050919050565b6000612e4782612ddc565b612e518185612de7565b9350612e5c83612df8565b8060005b83811015612e8d578151612e748882612e17565b9750612e7f83612e2f565b925050600181019050612e60565b5085935050505092915050565b60006020820190508181036000830152612eb48184612e3c565b905092915050565b612ec5816128eb565b8114612ed057600080fd5b50565b600081359050612ee281612ebc565b92915050565b60008060408385031215612eff57612efe61285c565b5b6000612f0d85828601612ab2565b9250506020612f1e85828601612ed3565b9150509250929050565b600067ffffffffffffffff821115612f4357612f42612c3b565b5b612f4c82612970565b9050602081019050919050565b6000612f6c612f6784612f28565b612c9b565b905082815260208101848484011115612f8857612f87612c36565b5b612f93848285612ce7565b509392505050565b600082601f830112612fb057612faf612b31565b5b8135612fc0848260208601612f59565b91505092915050565b60008060008060808587031215612fe357612fe261285c565b5b6000612ff187828801612ab2565b945050602061300287828801612ab2565b9350506040613013878288016129fd565b925050606085013567ffffffffffffffff81111561303457613033612861565b5b61304087828801612f9b565b91505092959194509250565b6000602082840312156130625761306161285c565b5b600061307084828501612ed3565b91505092915050565b600080604083850312156130905761308f61285c565b5b600061309e85828601612ab2565b92505060206130af85828601612ab2565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061310057607f821691505b602082108103613113576131126130b9565b5b50919050565b7f4552433732313a20617070726f76656420717565727920666f72206e6f6e657860008201527f697374656e7420746f6b656e0000000000000000000000000000000000000000602082015250565b6000613175602c8361292c565b915061318082613119565b604082019050919050565b600060208201905081810360008301526131a481613168565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b60006131e160208361292c565b91506131ec826131ab565b602082019050919050565b60006020820190508181036000830152613210816131d4565b9050919050565b7f4552433732313a20617070726f76616c20746f2063757272656e74206f776e6560008201527f7200000000000000000000000000000000000000000000000000000000000000602082015250565b600061327360218361292c565b915061327e82613217565b604082019050919050565b600060208201905081810360008301526132a281613266565b9050919050565b7f4552433732313a20617070726f76652063616c6c6572206973206e6f74206f7760008201527f6e6572206e6f7220617070726f76656420666f7220616c6c0000000000000000602082015250565b600061330560388361292c565b9150613310826132a9565b604082019050919050565b60006020820190508181036000830152613334816132f8565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000613375826129dc565b9150613380836129dc565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156133b5576133b461333b565b5b828201905092915050565b7f546f6f206d616e79000000000000000000000000000000000000000000000000600082015250565b60006133f660088361292c565b9150613401826133c0565b602082019050919050565b60006020820190508181036000830152613425816133e9565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000613466826129dc565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036134985761349761333b565b5b600182019050919050565b7f4552433732313a207472616e736665722063616c6c6572206973206e6f74206f60008201527f776e6572206e6f7220617070726f766564000000000000000000000000000000602082015250565b60006134ff60318361292c565b915061350a826134a3565b604082019050919050565b6000602082019050818103600083015261352e816134f2565b9050919050565b7f455243373231456e756d3a206f776e657220696f6f6200000000000000000000600082015250565b600061356b60168361292c565b915061357682613535565b602082019050919050565b6000602082019050818103600083015261359a8161355e565b9050919050565b600081905092915050565b50565b60006135bc6000836135a1565b91506135c7826135ac565b600082019050919050565b60006135dd826135af565b9150819050919050565b7f455243373231456e756d3a20676c6f62616c20696f6f62000000000000000000600082015250565b600061361d60178361292c565b9150613628826135e7565b602082019050919050565b6000602082019050818103600083015261364c81613610565b9050919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b6000600883026136b57fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82613678565b6136bf8683613678565b95508019841693508086168417925050509392505050565b6000819050919050565b60006136fc6136f76136f2846129dc565b6136d7565b6129dc565b9050919050565b6000819050919050565b613716836136e1565b61372a61372282613703565b848454613685565b825550505050565b600090565b61373f613732565b61374a81848461370d565b505050565b5b8181101561376e57613763600082613737565b600181019050613750565b5050565b601f8211156137b35761378481613653565b61378d84613668565b8101602085101561379c578190505b6137b06137a885613668565b83018261374f565b50505b505050565b600082821c905092915050565b60006137d6600019846008026137b8565b1980831691505092915050565b60006137ef83836137c5565b9150826002028217905092915050565b61380882612921565b67ffffffffffffffff81111561382157613820612c3b565b5b61382b82546130e8565b613836828285613772565b600060209050601f8311600181146138695760008415613857578287015190505b61386185826137e3565b8655506138c9565b601f19841661387786613653565b60005b8281101561389f5784890151825560018201915060208501945060208101905061387a565b868310156138bc57848901516138b8601f8916826137c5565b8355505b6001600288020188555050505b505050505050565b7f4552433732313a206f776e657220717565727920666f72206e6f6e657869737460008201527f656e7420746f6b656e0000000000000000000000000000000000000000000000602082015250565b600061392d60298361292c565b9150613938826138d1565b604082019050919050565b6000602082019050818103600083015261395c81613920565b9050919050565b7f4552433732313a2062616c616e636520717565727920666f7220746865207a6560008201527f726f206164647265737300000000000000000000000000000000000000000000602082015250565b60006139bf602a8361292c565b91506139ca82613963565b604082019050919050565b600060208201905081810360008301526139ee816139b2565b9050919050565b7f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00600082015250565b6000613a2b601f8361292c565b9150613a36826139f5565b602082019050919050565b60006020820190508181036000830152613a5a81613a1e565b9050919050565b7f4f66660000000000000000000000000000000000000000000000000000000000600082015250565b6000613a9760038361292c565b9150613aa282613a61565b602082019050919050565b60006020820190508181036000830152613ac681613a8a565b9050919050565b7f3000000000000000000000000000000000000000000000000000000000000000600082015250565b6000613b0360018361292c565b9150613b0e82613acd565b602082019050919050565b60006020820190508181036000830152613b3281613af6565b9050919050565b7f4d61780000000000000000000000000000000000000000000000000000000000600082015250565b6000613b6f60038361292c565b9150613b7a82613b39565b602082019050919050565b60006020820190508181036000830152613b9e81613b62565b9050919050565b6000613bb0826129dc565b9150613bbb836129dc565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615613bf457613bf361333b565b5b828202905092915050565b7f4552433732313a20617070726f766520746f2063616c6c657200000000000000600082015250565b6000613c3560198361292c565b9150613c4082613bff565b602082019050919050565b60006020820190508181036000830152613c6481613c28565b9050919050565b7f4552433732314d657461646174613a204e6f6e6578697374656e7420746f6b6560008201527f6e00000000000000000000000000000000000000000000000000000000000000602082015250565b6000613cc760218361292c565b9150613cd282613c6b565b604082019050919050565b60006020820190508181036000830152613cf681613cba565b9050919050565b600081905092915050565b6000613d1382612921565b613d1d8185613cfd565b9350613d2d81856020860161293d565b80840191505092915050565b6000613d458285613d08565b9150613d518284613d08565b91508190509392505050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000613db960268361292c565b9150613dc482613d5d565b604082019050919050565b60006020820190508181036000830152613de881613dac565b9050919050565b7f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560008201527f63656976657220696d706c656d656e7465720000000000000000000000000000602082015250565b6000613e4b60328361292c565b9150613e5682613def565b604082019050919050565b60006020820190508181036000830152613e7a81613e3e565b9050919050565b7f4552433732313a206f70657261746f7220717565727920666f72206e6f6e657860008201527f697374656e7420746f6b656e0000000000000000000000000000000000000000602082015250565b6000613edd602c8361292c565b9150613ee882613e81565b604082019050919050565b60006020820190508181036000830152613f0c81613ed0565b9050919050565b7f4552433732313a207472616e73666572206f6620746f6b656e2074686174206960008201527f73206e6f74206f776e0000000000000000000000000000000000000000000000602082015250565b6000613f6f60298361292c565b9150613f7a82613f13565b604082019050919050565b60006020820190508181036000830152613f9e81613f62565b9050919050565b7f4552433732313a207472616e7366657220746f20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b600061400160248361292c565b915061400c82613fa5565b604082019050919050565b6000602082019050818103600083015261403081613ff4565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000614071826129dc565b915061407c836129dc565b92508261408c5761408b614037565b5b828204905092915050565b60006140a2826129dc565b91506140ad836129dc565b9250828210156140c0576140bf61333b565b5b828203905092915050565b60006140d6826129dc565b91506140e1836129dc565b9250826140f1576140f0614037565b5b828206905092915050565b7f4552433732313a206d696e7420746f20746865207a65726f2061646472657373600082015250565b600061413260208361292c565b915061413d826140fc565b602082019050919050565b6000602082019050818103600083015261416181614125565b9050919050565b7f4552433732313a20746f6b656e20616c7265616479206d696e74656400000000600082015250565b600061419e601c8361292c565b91506141a982614168565b602082019050919050565b600060208201905081810360008301526141cd81614191565b9050919050565b600081519050919050565b600082825260208201905092915050565b60006141fb826141d4565b61420581856141df565b935061421581856020860161293d565b61421e81612970565b840191505092915050565b600060808201905061423e6000830187612a71565b61424b6020830186612a71565b6142586040830185612b07565b818103606083015261426a81846141f0565b905095945050505050565b60008151905061428481612892565b92915050565b6000602082840312156142a05761429f61285c565b5b60006142ae84828501614275565b9150509291505056fea2646970667358221220af3c0af2301d7bb4a511130156f4bae4ab3c2a74c9fc5ba2645044f61977f72e64736f6c634300080f0033000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000e00000000000000000000000000000000000000000000000000000000000000009416c706861205370790000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000241530000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000

Deployed Bytecode

0x6080604052600436106101ee5760003560e01c806355f804b31161010d57806395d89b41116100a0578063c87b56dd1161006f578063c87b56dd146106da578063d5abeb0114610717578063d897833e14610742578063e985e9c51461076b578063f2fde38b146107a8576101ee565b806395d89b4114610641578063a0712d681461066c578063a22cb46514610688578063b88d4fde146106b1576101ee565b8063715018a6116100dc578063715018a6146105975780637501f741146105ae5780638462151c146105d95780638da5cb5b14610616576101ee565b806355f804b3146104c95780636352211e146104f25780636c0360eb1461052f57806370a082311461055a576101ee565b806321cbb5bd116101855780633ccfd60b116101545780633ccfd60b1461042357806342842e0e1461043a57806344a0d68a146104635780634f6ccce71461048c576101ee565b806321cbb5bd1461036b578063228025e81461039457806323b872dd146103bd5780632f745c59146103e6576101ee565b8063095ea7b3116101c1578063095ea7b3146102c157806313faede6146102ea57806318160ddd14610315578063200d2ed214610340576101ee565b806301ffc9a7146101f357806306fdde0314610230578063081812fc1461025b578063088a4ed014610298575b600080fd5b3480156101ff57600080fd5b5061021a600480360381019061021591906128be565b6107d1565b6040516102279190612906565b60405180910390f35b34801561023c57600080fd5b5061024561084b565b60405161025291906129ba565b60405180910390f35b34801561026757600080fd5b50610282600480360381019061027d9190612a12565b6108dd565b60405161028f9190612a80565b60405180910390f35b3480156102a457600080fd5b506102bf60048036038101906102ba9190612a12565b610962565b005b3480156102cd57600080fd5b506102e860048036038101906102e39190612ac7565b6109e8565b005b3480156102f657600080fd5b506102ff610aff565b60405161030c9190612b16565b60405180910390f35b34801561032157600080fd5b5061032a610b05565b6040516103379190612b16565b60405180910390f35b34801561034c57600080fd5b50610355610b12565b6040516103629190612906565b60405180910390f35b34801561037757600080fd5b50610392600480360381019061038d9190612b96565b610b25565b005b3480156103a057600080fd5b506103bb60048036038101906103b69190612a12565b610c76565b005b3480156103c957600080fd5b506103e460048036038101906103df9190612be3565b610cfc565b005b3480156103f257600080fd5b5061040d60048036038101906104089190612ac7565b610d5c565b60405161041a9190612b16565b60405180910390f35b34801561042f57600080fd5b50610438610ea3565b005b34801561044657600080fd5b50610461600480360381019061045c9190612be3565b610fba565b005b34801561046f57600080fd5b5061048a60048036038101906104859190612a12565b610fda565b005b34801561049857600080fd5b506104b360048036038101906104ae9190612a12565b611060565b6040516104c09190612b16565b60405180910390f35b3480156104d557600080fd5b506104f060048036038101906104eb9190612d66565b6110b3565b005b3480156104fe57600080fd5b5061051960048036038101906105149190612a12565b611142565b6040516105269190612a80565b60405180910390f35b34801561053b57600080fd5b506105446111fe565b60405161055191906129ba565b60405180910390f35b34801561056657600080fd5b50610581600480360381019061057c9190612daf565b61128c565b60405161058e9190612b16565b60405180910390f35b3480156105a357600080fd5b506105ac6113b0565b005b3480156105ba57600080fd5b506105c3611438565b6040516105d09190612b16565b60405180910390f35b3480156105e557600080fd5b5061060060048036038101906105fb9190612daf565b61143e565b60405161060d9190612e9a565b60405180910390f35b34801561062257600080fd5b5061062b611537565b6040516106389190612a80565b60405180910390f35b34801561064d57600080fd5b50610656611561565b60405161066391906129ba565b60405180910390f35b61068660048036038101906106819190612a12565b6115f3565b005b34801561069457600080fd5b506106af60048036038101906106aa9190612ee8565b6117df565b005b3480156106bd57600080fd5b506106d860048036038101906106d39190612fc9565b61195f565b005b3480156106e657600080fd5b5061070160048036038101906106fc9190612a12565b6119c1565b60405161070e91906129ba565b60405180910390f35b34801561072357600080fd5b5061072c611a68565b6040516107399190612b16565b60405180910390f35b34801561074e57600080fd5b506107696004803603810190610764919061304c565b611a6e565b005b34801561077757600080fd5b50610792600480360381019061078d9190613079565b611b07565b60405161079f9190612906565b60405180910390f35b3480156107b457600080fd5b506107cf60048036038101906107ca9190612daf565b611b9b565b005b60007f780e9d63000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480610844575061084382611c92565b5b9050919050565b60606000805461085a906130e8565b80601f0160208091040260200160405190810160405280929190818152602001828054610886906130e8565b80156108d35780601f106108a8576101008083540402835291602001916108d3565b820191906000526020600020905b8154815290600101906020018083116108b657829003601f168201915b5050505050905090565b60006108e882611d74565b610927576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161091e9061318b565b60405180910390fd5b6003600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b61096a611dfc565b73ffffffffffffffffffffffffffffffffffffffff16610988611537565b73ffffffffffffffffffffffffffffffffffffffff16146109de576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109d5906131f7565b60405180910390fd5b80600a8190555050565b60006109f382611142565b90508073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610a63576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a5a90613289565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16610a82611dfc565b73ffffffffffffffffffffffffffffffffffffffff161480610ab15750610ab081610aab611dfc565b611b07565b5b610af0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ae79061331b565b60405180910390fd5b610afa8383611e04565b505050565b60085481565b6000600280549050905090565b600b60149054906101000a900460ff1681565b610b2d611dfc565b73ffffffffffffffffffffffffffffffffffffffff16610b4b611537565b73ffffffffffffffffffffffffffffffffffffffff1614610ba1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b98906131f7565b60405180910390fd5b6000610bab610b05565b90506009548383905082610bbf919061336a565b1115610c00576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bf79061340c565b60405180910390fd5b60005b83839050811015610c6c57610c5b848483818110610c2457610c2361342c565b5b9050602002016020810190610c399190612daf565b8380610c449061345b565b945060405180602001604052806000815250611ebd565b80610c659061345b565b9050610c03565b5060009050505050565b610c7e611dfc565b73ffffffffffffffffffffffffffffffffffffffff16610c9c611537565b73ffffffffffffffffffffffffffffffffffffffff1614610cf2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ce9906131f7565b60405180910390fd5b8060098190555050565b610d0d610d07611dfc565b82611f18565b610d4c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d4390613515565b60405180910390fd5b610d57838383611ff6565b505050565b6000610d678361128c565b8210610da8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d9f90613581565b60405180910390fd5b6000805b600280549050811015610e595760028181548110610dcd57610dcc61342c565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1603610e4857838203610e3b578092505050610e9d565b81610e459061345b565b91505b80610e529061345b565b9050610dac565b506000610e9b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e9290613581565b60405180910390fd5b505b92915050565b610eab611dfc565b73ffffffffffffffffffffffffffffffffffffffff16610ec9611537565b73ffffffffffffffffffffffffffffffffffffffff1614610f1f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f16906131f7565b60405180910390fd5b6000600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1647604051610f67906135d2565b60006040518083038185875af1925050503d8060008114610fa4576040519150601f19603f3d011682016040523d82523d6000602084013e610fa9565b606091505b5050905080610fb757600080fd5b50565b610fd58383836040518060200160405280600081525061195f565b505050565b610fe2611dfc565b73ffffffffffffffffffffffffffffffffffffffff16611000611537565b73ffffffffffffffffffffffffffffffffffffffff1614611056576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161104d906131f7565b60405180910390fd5b8060088190555050565b600061106a610b05565b82106110ab576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110a290613633565b60405180910390fd5b819050919050565b6110bb611dfc565b73ffffffffffffffffffffffffffffffffffffffff166110d9611537565b73ffffffffffffffffffffffffffffffffffffffff161461112f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611126906131f7565b60405180910390fd5b806007908161113e91906137ff565b5050565b600080600283815481106111595761115861342c565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036111f5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111ec90613943565b60405180910390fd5b80915050919050565b6007805461120b906130e8565b80601f0160208091040260200160405190810160405280929190818152602001828054611237906130e8565b80156112845780601f1061125957610100808354040283529160200191611284565b820191906000526020600020905b81548152906001019060200180831161126757829003601f168201915b505050505081565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036112fc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112f3906139d5565b60405180910390fd5b600080600280549050905060005b818110156113a157600281815481106113265761132561342c565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1603611390578261138d9061345b565b92505b8061139a9061345b565b905061130a565b50600090508192505050919050565b6113b8611dfc565b73ffffffffffffffffffffffffffffffffffffffff166113d6611537565b73ffffffffffffffffffffffffffffffffffffffff161461142c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611423906131f7565b60405180910390fd5b61143660006121ae565b565b600a5481565b60606114498261128c565b60001061148b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161148290613581565b60405180910390fd5b60006114968361128c565b905060008167ffffffffffffffff8111156114b4576114b3612c3b565b5b6040519080825280602002602001820160405280156114e25781602001602082028036833780820191505090505b50905060005b8281101561152c576114fa8582610d5c565b82828151811061150d5761150c61342c565b5b60200260200101818152505080806115249061345b565b9150506114e8565b508092505050919050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b606060018054611570906130e8565b80601f016020809104026020016040519081016040528092919081815260200182805461159c906130e8565b80156115e95780601f106115be576101008083540402835291602001916115e9565b820191906000526020600020905b8154815290600101906020018083116115cc57829003601f168201915b5050505050905090565b600260065403611638576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161162f90613a41565b60405180910390fd5b6002600681905550600061164a610b05565b9050600b60149054906101000a900460ff1661169b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161169290613aad565b60405180910390fd5b600082116116de576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116d590613b19565b60405180910390fd5b600a54821115611723576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161171a9061340c565b60405180910390fd5b6009548282611732919061336a565b1115611773576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161176a90613b85565b60405180910390fd5b816008546117819190613ba5565b34101561178d57600080fd5b60005b828110156117ce576117bd3382846117a8919061336a565b60405180602001604052806000815250611ebd565b806117c79061345b565b9050611790565b506000905050600160068190555050565b6117e7611dfc565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611854576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161184b90613c4b565b60405180910390fd5b8060046000611861611dfc565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff1661190e611dfc565b73ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31836040516119539190612906565b60405180910390a35050565b61197061196a611dfc565b83611f18565b6119af576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119a690613515565b60405180910390fd5b6119bb84848484612274565b50505050565b60606119cc82611d74565b611a0b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a0290613cdd565b60405180910390fd5b6000611a156122d0565b90506000815111611a355760405180602001604052806000815250611a60565b80611a3f84612362565b604051602001611a50929190613d39565b6040516020818303038152906040525b915050919050565b60095481565b611a76611dfc565b73ffffffffffffffffffffffffffffffffffffffff16611a94611537565b73ffffffffffffffffffffffffffffffffffffffff1614611aea576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ae1906131f7565b60405180910390fd5b80600b60146101000a81548160ff02191690831515021790555050565b6000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b611ba3611dfc565b73ffffffffffffffffffffffffffffffffffffffff16611bc1611537565b73ffffffffffffffffffffffffffffffffffffffff1614611c17576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c0e906131f7565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611c86576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c7d90613dcf565b60405180910390fd5b611c8f816121ae565b50565b60007f80ac58cd000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480611d5d57507f5b5e139f000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b80611d6d5750611d6c826124c2565b5b9050919050565b600060028054905082108015611df55750600073ffffffffffffffffffffffffffffffffffffffff1660028381548110611db157611db061342c565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614155b9050919050565b600033905090565b816003600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff16611e7783611142565b73ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b611ec7838361252c565b611ed460008484846126b3565b611f13576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f0a90613e61565b60405180910390fd5b505050565b6000611f2382611d74565b611f62576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f5990613ef3565b60405180910390fd5b6000611f6d83611142565b90508073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161480611fdc57508373ffffffffffffffffffffffffffffffffffffffff16611fc4846108dd565b73ffffffffffffffffffffffffffffffffffffffff16145b80611fed5750611fec8185611b07565b5b91505092915050565b8273ffffffffffffffffffffffffffffffffffffffff1661201682611142565b73ffffffffffffffffffffffffffffffffffffffff161461206c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161206390613f85565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036120db576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120d290614017565b60405180910390fd5b6120e683838361283a565b6120f1600082611e04565b81600282815481106121065761210561342c565b5b9060005260206000200160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4505050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b61227f848484611ff6565b61228b848484846126b3565b6122ca576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122c190613e61565b60405180910390fd5b50505050565b6060600780546122df906130e8565b80601f016020809104026020016040519081016040528092919081815260200182805461230b906130e8565b80156123585780601f1061232d57610100808354040283529160200191612358565b820191906000526020600020905b81548152906001019060200180831161233b57829003601f168201915b5050505050905090565b6060600082036123a9576040518060400160405280600181526020017f300000000000000000000000000000000000000000000000000000000000000081525090506124bd565b600082905060005b600082146123db5780806123c49061345b565b915050600a826123d49190614066565b91506123b1565b60008167ffffffffffffffff8111156123f7576123f6612c3b565b5b6040519080825280601f01601f1916602001820160405280156124295781602001600182028036833780820191505090505b5090505b600085146124b6576001826124429190614097565b9150600a8561245191906140cb565b603061245d919061336a565b60f81b8183815181106124735761247261342c565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600a856124af9190614066565b945061242d565b8093505050505b919050565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361259b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161259290614148565b60405180910390fd5b6125a481611d74565b156125e4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125db906141b4565b60405180910390fd5b6125f06000838361283a565b6002829080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a45050565b60006126d48473ffffffffffffffffffffffffffffffffffffffff1661283f565b1561282d578373ffffffffffffffffffffffffffffffffffffffff1663150b7a026126fd611dfc565b8786866040518563ffffffff1660e01b815260040161271f9493929190614229565b6020604051808303816000875af192505050801561275b57506040513d601f19601f82011682018060405250810190612758919061428a565b60015b6127dd573d806000811461278b576040519150601f19603f3d011682016040523d82523d6000602084013e612790565b606091505b5060008151036127d5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127cc90613e61565b60405180910390fd5b805181602001fd5b63150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614915050612832565b600190505b949350505050565b505050565b600080823b905060008111915050919050565b6000604051905090565b600080fd5b600080fd5b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b61289b81612866565b81146128a657600080fd5b50565b6000813590506128b881612892565b92915050565b6000602082840312156128d4576128d361285c565b5b60006128e2848285016128a9565b91505092915050565b60008115159050919050565b612900816128eb565b82525050565b600060208201905061291b60008301846128f7565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b8381101561295b578082015181840152602081019050612940565b8381111561296a576000848401525b50505050565b6000601f19601f8301169050919050565b600061298c82612921565b612996818561292c565b93506129a681856020860161293d565b6129af81612970565b840191505092915050565b600060208201905081810360008301526129d48184612981565b905092915050565b6000819050919050565b6129ef816129dc565b81146129fa57600080fd5b50565b600081359050612a0c816129e6565b92915050565b600060208284031215612a2857612a2761285c565b5b6000612a36848285016129fd565b91505092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000612a6a82612a3f565b9050919050565b612a7a81612a5f565b82525050565b6000602082019050612a956000830184612a71565b92915050565b612aa481612a5f565b8114612aaf57600080fd5b50565b600081359050612ac181612a9b565b92915050565b60008060408385031215612ade57612add61285c565b5b6000612aec85828601612ab2565b9250506020612afd858286016129fd565b9150509250929050565b612b10816129dc565b82525050565b6000602082019050612b2b6000830184612b07565b92915050565b600080fd5b600080fd5b600080fd5b60008083601f840112612b5657612b55612b31565b5b8235905067ffffffffffffffff811115612b7357612b72612b36565b5b602083019150836020820283011115612b8f57612b8e612b3b565b5b9250929050565b60008060208385031215612bad57612bac61285c565b5b600083013567ffffffffffffffff811115612bcb57612bca612861565b5b612bd785828601612b40565b92509250509250929050565b600080600060608486031215612bfc57612bfb61285c565b5b6000612c0a86828701612ab2565b9350506020612c1b86828701612ab2565b9250506040612c2c868287016129fd565b9150509250925092565b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b612c7382612970565b810181811067ffffffffffffffff82111715612c9257612c91612c3b565b5b80604052505050565b6000612ca5612852565b9050612cb18282612c6a565b919050565b600067ffffffffffffffff821115612cd157612cd0612c3b565b5b612cda82612970565b9050602081019050919050565b82818337600083830152505050565b6000612d09612d0484612cb6565b612c9b565b905082815260208101848484011115612d2557612d24612c36565b5b612d30848285612ce7565b509392505050565b600082601f830112612d4d57612d4c612b31565b5b8135612d5d848260208601612cf6565b91505092915050565b600060208284031215612d7c57612d7b61285c565b5b600082013567ffffffffffffffff811115612d9a57612d99612861565b5b612da684828501612d38565b91505092915050565b600060208284031215612dc557612dc461285c565b5b6000612dd384828501612ab2565b91505092915050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b612e11816129dc565b82525050565b6000612e238383612e08565b60208301905092915050565b6000602082019050919050565b6000612e4782612ddc565b612e518185612de7565b9350612e5c83612df8565b8060005b83811015612e8d578151612e748882612e17565b9750612e7f83612e2f565b925050600181019050612e60565b5085935050505092915050565b60006020820190508181036000830152612eb48184612e3c565b905092915050565b612ec5816128eb565b8114612ed057600080fd5b50565b600081359050612ee281612ebc565b92915050565b60008060408385031215612eff57612efe61285c565b5b6000612f0d85828601612ab2565b9250506020612f1e85828601612ed3565b9150509250929050565b600067ffffffffffffffff821115612f4357612f42612c3b565b5b612f4c82612970565b9050602081019050919050565b6000612f6c612f6784612f28565b612c9b565b905082815260208101848484011115612f8857612f87612c36565b5b612f93848285612ce7565b509392505050565b600082601f830112612fb057612faf612b31565b5b8135612fc0848260208601612f59565b91505092915050565b60008060008060808587031215612fe357612fe261285c565b5b6000612ff187828801612ab2565b945050602061300287828801612ab2565b9350506040613013878288016129fd565b925050606085013567ffffffffffffffff81111561303457613033612861565b5b61304087828801612f9b565b91505092959194509250565b6000602082840312156130625761306161285c565b5b600061307084828501612ed3565b91505092915050565b600080604083850312156130905761308f61285c565b5b600061309e85828601612ab2565b92505060206130af85828601612ab2565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061310057607f821691505b602082108103613113576131126130b9565b5b50919050565b7f4552433732313a20617070726f76656420717565727920666f72206e6f6e657860008201527f697374656e7420746f6b656e0000000000000000000000000000000000000000602082015250565b6000613175602c8361292c565b915061318082613119565b604082019050919050565b600060208201905081810360008301526131a481613168565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b60006131e160208361292c565b91506131ec826131ab565b602082019050919050565b60006020820190508181036000830152613210816131d4565b9050919050565b7f4552433732313a20617070726f76616c20746f2063757272656e74206f776e6560008201527f7200000000000000000000000000000000000000000000000000000000000000602082015250565b600061327360218361292c565b915061327e82613217565b604082019050919050565b600060208201905081810360008301526132a281613266565b9050919050565b7f4552433732313a20617070726f76652063616c6c6572206973206e6f74206f7760008201527f6e6572206e6f7220617070726f76656420666f7220616c6c0000000000000000602082015250565b600061330560388361292c565b9150613310826132a9565b604082019050919050565b60006020820190508181036000830152613334816132f8565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000613375826129dc565b9150613380836129dc565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156133b5576133b461333b565b5b828201905092915050565b7f546f6f206d616e79000000000000000000000000000000000000000000000000600082015250565b60006133f660088361292c565b9150613401826133c0565b602082019050919050565b60006020820190508181036000830152613425816133e9565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000613466826129dc565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036134985761349761333b565b5b600182019050919050565b7f4552433732313a207472616e736665722063616c6c6572206973206e6f74206f60008201527f776e6572206e6f7220617070726f766564000000000000000000000000000000602082015250565b60006134ff60318361292c565b915061350a826134a3565b604082019050919050565b6000602082019050818103600083015261352e816134f2565b9050919050565b7f455243373231456e756d3a206f776e657220696f6f6200000000000000000000600082015250565b600061356b60168361292c565b915061357682613535565b602082019050919050565b6000602082019050818103600083015261359a8161355e565b9050919050565b600081905092915050565b50565b60006135bc6000836135a1565b91506135c7826135ac565b600082019050919050565b60006135dd826135af565b9150819050919050565b7f455243373231456e756d3a20676c6f62616c20696f6f62000000000000000000600082015250565b600061361d60178361292c565b9150613628826135e7565b602082019050919050565b6000602082019050818103600083015261364c81613610565b9050919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b6000600883026136b57fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82613678565b6136bf8683613678565b95508019841693508086168417925050509392505050565b6000819050919050565b60006136fc6136f76136f2846129dc565b6136d7565b6129dc565b9050919050565b6000819050919050565b613716836136e1565b61372a61372282613703565b848454613685565b825550505050565b600090565b61373f613732565b61374a81848461370d565b505050565b5b8181101561376e57613763600082613737565b600181019050613750565b5050565b601f8211156137b35761378481613653565b61378d84613668565b8101602085101561379c578190505b6137b06137a885613668565b83018261374f565b50505b505050565b600082821c905092915050565b60006137d6600019846008026137b8565b1980831691505092915050565b60006137ef83836137c5565b9150826002028217905092915050565b61380882612921565b67ffffffffffffffff81111561382157613820612c3b565b5b61382b82546130e8565b613836828285613772565b600060209050601f8311600181146138695760008415613857578287015190505b61386185826137e3565b8655506138c9565b601f19841661387786613653565b60005b8281101561389f5784890151825560018201915060208501945060208101905061387a565b868310156138bc57848901516138b8601f8916826137c5565b8355505b6001600288020188555050505b505050505050565b7f4552433732313a206f776e657220717565727920666f72206e6f6e657869737460008201527f656e7420746f6b656e0000000000000000000000000000000000000000000000602082015250565b600061392d60298361292c565b9150613938826138d1565b604082019050919050565b6000602082019050818103600083015261395c81613920565b9050919050565b7f4552433732313a2062616c616e636520717565727920666f7220746865207a6560008201527f726f206164647265737300000000000000000000000000000000000000000000602082015250565b60006139bf602a8361292c565b91506139ca82613963565b604082019050919050565b600060208201905081810360008301526139ee816139b2565b9050919050565b7f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00600082015250565b6000613a2b601f8361292c565b9150613a36826139f5565b602082019050919050565b60006020820190508181036000830152613a5a81613a1e565b9050919050565b7f4f66660000000000000000000000000000000000000000000000000000000000600082015250565b6000613a9760038361292c565b9150613aa282613a61565b602082019050919050565b60006020820190508181036000830152613ac681613a8a565b9050919050565b7f3000000000000000000000000000000000000000000000000000000000000000600082015250565b6000613b0360018361292c565b9150613b0e82613acd565b602082019050919050565b60006020820190508181036000830152613b3281613af6565b9050919050565b7f4d61780000000000000000000000000000000000000000000000000000000000600082015250565b6000613b6f60038361292c565b9150613b7a82613b39565b602082019050919050565b60006020820190508181036000830152613b9e81613b62565b9050919050565b6000613bb0826129dc565b9150613bbb836129dc565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615613bf457613bf361333b565b5b828202905092915050565b7f4552433732313a20617070726f766520746f2063616c6c657200000000000000600082015250565b6000613c3560198361292c565b9150613c4082613bff565b602082019050919050565b60006020820190508181036000830152613c6481613c28565b9050919050565b7f4552433732314d657461646174613a204e6f6e6578697374656e7420746f6b6560008201527f6e00000000000000000000000000000000000000000000000000000000000000602082015250565b6000613cc760218361292c565b9150613cd282613c6b565b604082019050919050565b60006020820190508181036000830152613cf681613cba565b9050919050565b600081905092915050565b6000613d1382612921565b613d1d8185613cfd565b9350613d2d81856020860161293d565b80840191505092915050565b6000613d458285613d08565b9150613d518284613d08565b91508190509392505050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000613db960268361292c565b9150613dc482613d5d565b604082019050919050565b60006020820190508181036000830152613de881613dac565b9050919050565b7f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560008201527f63656976657220696d706c656d656e7465720000000000000000000000000000602082015250565b6000613e4b60328361292c565b9150613e5682613def565b604082019050919050565b60006020820190508181036000830152613e7a81613e3e565b9050919050565b7f4552433732313a206f70657261746f7220717565727920666f72206e6f6e657860008201527f697374656e7420746f6b656e0000000000000000000000000000000000000000602082015250565b6000613edd602c8361292c565b9150613ee882613e81565b604082019050919050565b60006020820190508181036000830152613f0c81613ed0565b9050919050565b7f4552433732313a207472616e73666572206f6620746f6b656e2074686174206960008201527f73206e6f74206f776e0000000000000000000000000000000000000000000000602082015250565b6000613f6f60298361292c565b9150613f7a82613f13565b604082019050919050565b60006020820190508181036000830152613f9e81613f62565b9050919050565b7f4552433732313a207472616e7366657220746f20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b600061400160248361292c565b915061400c82613fa5565b604082019050919050565b6000602082019050818103600083015261403081613ff4565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000614071826129dc565b915061407c836129dc565b92508261408c5761408b614037565b5b828204905092915050565b60006140a2826129dc565b91506140ad836129dc565b9250828210156140c0576140bf61333b565b5b828203905092915050565b60006140d6826129dc565b91506140e1836129dc565b9250826140f1576140f0614037565b5b828206905092915050565b7f4552433732313a206d696e7420746f20746865207a65726f2061646472657373600082015250565b600061413260208361292c565b915061413d826140fc565b602082019050919050565b6000602082019050818103600083015261416181614125565b9050919050565b7f4552433732313a20746f6b656e20616c7265616479206d696e74656400000000600082015250565b600061419e601c8361292c565b91506141a982614168565b602082019050919050565b600060208201905081810360008301526141cd81614191565b9050919050565b600081519050919050565b600082825260208201905092915050565b60006141fb826141d4565b61420581856141df565b935061421581856020860161293d565b61421e81612970565b840191505092915050565b600060808201905061423e6000830187612a71565b61424b6020830186612a71565b6142586040830185612b07565b818103606083015261426a81846141f0565b905095945050505050565b60008151905061428481612892565b92915050565b6000602082840312156142a05761429f61285c565b5b60006142ae84828501614275565b9150509291505056fea2646970667358221220af3c0af2301d7bb4a511130156f4bae4ab3c2a74c9fc5ba2645044f61977f72e64736f6c634300080f0033

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

000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000e00000000000000000000000000000000000000000000000000000000000000009416c706861205370790000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000241530000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000

-----Decoded View---------------
Arg [0] : _name (string): Alpha Spy
Arg [1] : _symbol (string): AS
Arg [2] : _initBaseURI (string):

-----Encoded View---------------
8 Constructor Arguments found :
Arg [0] : 0000000000000000000000000000000000000000000000000000000000000060
Arg [1] : 00000000000000000000000000000000000000000000000000000000000000a0
Arg [2] : 00000000000000000000000000000000000000000000000000000000000000e0
Arg [3] : 0000000000000000000000000000000000000000000000000000000000000009
Arg [4] : 416c706861205370790000000000000000000000000000000000000000000000
Arg [5] : 0000000000000000000000000000000000000000000000000000000000000002
Arg [6] : 4153000000000000000000000000000000000000000000000000000000000000
Arg [7] : 0000000000000000000000000000000000000000000000000000000000000000


Deployed Bytecode Sourcemap

20264:2200:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18759:224;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13040:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13669:219;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21923:106;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;13256:407;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;20398:32;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19917:110;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20574:26;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21263:260;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;22365:96;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;14363:284;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;18989:499;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22211:148;;;;;;;;;;;;;:::i;:::-;;14653:185;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;21844:76;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;20033:194;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22032:94;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12795:239;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20355:21;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12375:414;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11088:94;;;;;;;;;;;;;:::i;:::-;;20469:26;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19494:417;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10865:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13146:104;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20864:396;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;13894:293;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;14844:328;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;21526:315;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20434:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22129:79;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;14193:164;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11190:192;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;18759:224;18861:4;18900:35;18885:50;;;:11;:50;;;;:90;;;;18939:36;18963:11;18939:23;:36::i;:::-;18885:90;18878:97;;18759:224;;;:::o;13040:100::-;13094:13;13127:5;13120:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13040:100;:::o;13669:219::-;13745:7;13773:16;13781:7;13773;:16::i;:::-;13765:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;13856:15;:24;13872:7;13856:24;;;;;;;;;;;;;;;;;;;;;13849:31;;13669:219;;;:::o;21923:106::-;11011:12;:10;:12::i;:::-;11000:23;;:7;:5;:7::i;:::-;:23;;;10992:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;22007:17:::1;21997:7;:27;;;;21923:106:::0;:::o;13256:407::-;13337:13;13353:23;13368:7;13353:14;:23::i;:::-;13337:39;;13401:5;13395:11;;:2;:11;;;13387:57;;;;;;;;;;;;:::i;:::-;;;;;;;;;13493:5;13477:21;;:12;:10;:12::i;:::-;:21;;;:62;;;;13502:37;13519:5;13526:12;:10;:12::i;:::-;13502:16;:37::i;:::-;13477:62;13455:168;;;;;;;;;;;;:::i;:::-;;;;;;;;;13634:21;13643:2;13647:7;13634:8;:21::i;:::-;13326:337;13256:407;;:::o;20398:32::-;;;;:::o;19917:110::-;19978:7;20005;:14;;;;19998:21;;19917:110;:::o;20574:26::-;;;;;;;;;;;;;:::o;21263:260::-;11011:12;:10;:12::i;:::-;11000:23;;:7;:5;:7::i;:::-;:23;;;10992:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;21334:9:::1;21346:13;:11;:13::i;:::-;21334:25;;21395:9;;21375;;:16;;21371:1;:20;;;;:::i;:::-;:33;;21363:55;;;;;;;;;;;;:::i;:::-;;;;;;;;;21426:6;21422:84;21442:9;;:16;;21438:1;:20;21422:84;;;21468:33;21478:9;;21488:1;21478:12;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;21492:3;;;;;:::i;:::-;;;21468:33;;;;;;;;;;;::::0;:9:::1;:33::i;:::-;21460:3;;;;:::i;:::-;;;21422:84;;;;21509:8;;;21330:193;21263:260:::0;;:::o;22365:96::-;11011:12;:10;:12::i;:::-;11000:23;;:7;:5;:7::i;:::-;:23;;;10992:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;22443:13:::1;22431:9;:25;;;;22365:96:::0;:::o;14363:284::-;14505:41;14524:12;:10;:12::i;:::-;14538:7;14505:18;:41::i;:::-;14497:103;;;;;;;;;;;;:::i;:::-;;;;;;;;;14611:28;14621:4;14627:2;14631:7;14611:9;:28::i;:::-;14363:284;;;:::o;18989:499::-;19078:15;19122:23;19139:5;19122:16;:23::i;:::-;19114:5;:31;19106:66;;;;;;;;;;;;:::i;:::-;;;;;;;;;19183:10;19209:6;19204:226;19221:7;:14;;;;19217:1;:18;19204:226;;;19270:7;19278:1;19270:10;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;19261:19;;:5;:19;;;19257:162;;19314:5;19305;:14;19301:102;;19350:1;19343:8;;;;;;19301:102;19396:7;;;;:::i;:::-;;;19257:162;19237:3;;;;:::i;:::-;;;19204:226;;;;19448:5;19440:40;;;;;;;;;;;;:::i;:::-;;;;;;;;;19095:393;18989:499;;;;;:::o;22211:148::-;11011:12;:10;:12::i;:::-;11000:23;;:7;:5;:7::i;:::-;:23;;;10992:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;22256:13:::1;22283:7;;;;;;;;;;;22275:21;;22304;22275:55;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22255:75;;;22345:8;22337:17;;;::::0;::::1;;22248:111;22211:148::o:0;14653:185::-;14791:39;14808:4;14814:2;14818:7;14791:39;;;;;;;;;;;;:16;:39::i;:::-;14653:185;;;:::o;21844:76::-;11011:12;:10;:12::i;:::-;11000:23;;:7;:5;:7::i;:::-;:23;;;10992:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;21907:8:::1;21900:4;:15;;;;21844:76:::0;:::o;20033:194::-;20108:7;20144:24;:22;:24::i;:::-;20136:5;:32;20128:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;20214:5;20207:12;;20033:194;;;:::o;22032:94::-;11011:12;:10;:12::i;:::-;11000:23;;:7;:5;:7::i;:::-;:23;;;10992:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;22110:11:::1;22100:7;:21;;;;;;:::i;:::-;;22032:94:::0;:::o;12795:239::-;12867:7;12887:13;12903:7;12911;12903:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;12887:32;;12955:1;12938:19;;:5;:19;;;12930:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;13021:5;13014:12;;;12795:239;;;:::o;20355:21::-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;12375:414::-;12447:7;12492:1;12475:19;;:5;:19;;;12467:74;;;;;;;;;;;;:::i;:::-;;;;;;;;;12552:10;12577:11;12591:7;:14;;;;12577:28;;12621:6;12616:119;12637:6;12633:1;:10;12616:119;;;12676:7;12684:1;12676:10;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;12667:19;;:5;:19;;;12663:61;;12703:7;;;;:::i;:::-;;;12663:61;12645:3;;;;:::i;:::-;;;12616:119;;;;12745:13;;;12776:5;12769:12;;;;12375:414;;;:::o;11088:94::-;11011:12;:10;:12::i;:::-;11000:23;;:7;:5;:7::i;:::-;:23;;;10992:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;11153:21:::1;11171:1;11153:9;:21::i;:::-;11088:94::o:0;20469:26::-;;;;:::o;19494:417::-;19553:16;19594:23;19611:5;19594:16;:23::i;:::-;19590:1;:27;19582:62;;;;;;;;;;;;:::i;:::-;;;;;;;;;19655:18;19676:16;19686:5;19676:9;:16::i;:::-;19655:37;;19703:25;19745:10;19731:25;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19703:53;;19772:9;19767:111;19791:10;19787:1;:14;19767:111;;;19837:29;19857:5;19864:1;19837:19;:29::i;:::-;19823:8;19832:1;19823:11;;;;;;;;:::i;:::-;;;;;;;:43;;;;;19803:3;;;;;:::i;:::-;;;;19767:111;;;;19895:8;19888:15;;;;19494:417;;;:::o;10865:87::-;10911:7;10938:6;;;;;;;;;;;10931:13;;10865:87;:::o;13146:104::-;13202:13;13235:7;13228:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13146:104;:::o;20864:396::-;186:1;332:7;;:19;324:63;;;;;;;;;;;;:::i;:::-;;;;;;;;;186:1;398:7;:18;;;;20930:9:::1;20942:13;:11;:13::i;:::-;20930:25;;20967:6;;;;;;;;;;;20959:23;;;;;;;;;;;;:::i;:::-;;;;;;;;;21008:1;20994:11;:15;20986:30;;;;;;;;;;;;:::i;:::-;;;;;;;;;21043:7;;21028:11;:22;;21020:44;;;;;;;;;;;;:::i;:::-;;;;;;;;;21095:9;;21080:11;21076:1;:15;;;;:::i;:::-;:28;;21068:45;;;;;;;;;;;;:::i;:::-;;;;;;;;;21145:11;21138:4;;:18;;;;:::i;:::-;21125:9;:31;;21117:40;;;::::0;::::1;;21166:9;21161:83;21185:11;21181:1;:15;21161:83;;;21207:32;21217:10;21233:1;21229;:5;;;;:::i;:::-;21207:32;;;;;;;;;;;::::0;:9:::1;:32::i;:::-;21198:3;;;;:::i;:::-;;;21161:83;;;;21247:8;;;20926:334;142:1:::0;439:7;:22;;;;20864:396;:::o;13894:293::-;14009:12;:10;:12::i;:::-;13997:24;;:8;:24;;;13989:62;;;;;;;;;;;;:::i;:::-;;;;;;;;;14107:8;14062:18;:32;14081:12;:10;:12::i;:::-;14062:32;;;;;;;;;;;;;;;:42;14095:8;14062:42;;;;;;;;;;;;;;;;:53;;;;;;;;;;;;;;;;;;14160:8;14131:48;;14146:12;:10;:12::i;:::-;14131:48;;;14170:8;14131:48;;;;;;:::i;:::-;;;;;;;;13894:293;;:::o;14844:328::-;15019:41;15038:12;:10;:12::i;:::-;15052:7;15019:18;:41::i;:::-;15011:103;;;;;;;;;;;;:::i;:::-;;;;;;;;;15125:39;15139:4;15145:2;15149:7;15158:5;15125:13;:39::i;:::-;14844:328;;;;:::o;21526:315::-;21599:13;21626:16;21634:7;21626;:16::i;:::-;21618:62;;;;;;;;;;;;:::i;:::-;;;;;;;;;21684:28;21715:10;:8;:10::i;:::-;21684:41;;21767:1;21742:14;21736:28;:32;:100;;;;;;;;;;;;;;;;;21795:14;21811:18;:7;:16;:18::i;:::-;21778:52;;;;;;;;;:::i;:::-;;;;;;;;;;;;;21736:100;21729:107;;;21526:315;;;:::o;20434:31::-;;;;:::o;22129:79::-;11011:12;:10;:12::i;:::-;11000:23;;:7;:5;:7::i;:::-;:23;;;10992:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;22196:7:::1;22187:6;;:16;;;;;;;;;;;;;;;;;;22129:79:::0;:::o;14193:164::-;14290:4;14314:18;:25;14333:5;14314:25;;;;;;;;;;;;;;;:35;14340:8;14314:35;;;;;;;;;;;;;;;;;;;;;;;;;14307:42;;14193:164;;;;:::o;11190:192::-;11011:12;:10;:12::i;:::-;11000:23;;:7;:5;:7::i;:::-;:23;;;10992:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;11299:1:::1;11279:22;;:8;:22;;::::0;11271:73:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;11355:19;11365:8;11355:9;:19::i;:::-;11190:192:::0;:::o;12064:305::-;12166:4;12218:25;12203:40;;;:11;:40;;;;:105;;;;12275:33;12260:48;;;:11;:48;;;;12203:105;:158;;;;12325:36;12349:11;12325:23;:36::i;:::-;12203:158;12183:178;;12064:305;;;:::o;15501:155::-;15566:4;15600:7;:14;;;;15590:7;:24;:58;;;;;15646:1;15618:30;;:7;15626;15618:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;:30;;;;15590:58;15583:65;;15501:155;;;:::o;4329:98::-;4382:7;4409:10;4402:17;;4329:98;:::o;17554:174::-;17656:2;17629:15;:24;17645:7;17629:24;;;;;;;;;;;;:29;;;;;;;;;;;;;;;;;;17712:7;17708:2;17674:46;;17683:23;17698:7;17683:14;:23::i;:::-;17674:46;;;;;;;;;;;;17554:174;;:::o;16123:321::-;16253:18;16259:2;16263:7;16253:5;:18::i;:::-;16304:54;16335:1;16339:2;16343:7;16352:5;16304:22;:54::i;:::-;16282:154;;;;;;;;;;;;:::i;:::-;;;;;;;;;16123:321;;;:::o;15659:348::-;15752:4;15777:16;15785:7;15777;:16::i;:::-;15769:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;15853:13;15869:23;15884:7;15869:14;:23::i;:::-;15853:39;;15922:5;15911:16;;:7;:16;;;:51;;;;15955:7;15931:31;;:20;15943:7;15931:11;:20::i;:::-;:31;;;15911:51;:87;;;;15966:32;15983:5;15990:7;15966:16;:32::i;:::-;15911:87;15903:96;;;15659:348;;;;:::o;17093:458::-;17252:4;17225:31;;:23;17240:7;17225:14;:23::i;:::-;:31;;;17217:85;;;;;;;;;;;;:::i;:::-;;;;;;;;;17335:1;17321:16;;:2;:16;;;17313:65;;;;;;;;;;;;:::i;:::-;;;;;;;;;17389:39;17410:4;17416:2;17420:7;17389:20;:39::i;:::-;17439:29;17456:1;17460:7;17439:8;:29::i;:::-;17498:2;17479:7;17487;17479:16;;;;;;;;:::i;:::-;;;;;;;;;;:21;;;;;;;;;;;;;;;;;;17535:7;17531:2;17516:27;;17525:4;17516:27;;;;;;;;;;;;17093:458;;;:::o;11390:173::-;11446:16;11465:6;;;;;;;;;;;11446:25;;11491:8;11482:6;;:17;;;;;;;;;;;;;;;;;;11546:8;11515:40;;11536:8;11515:40;;;;;;;;;;;;11435:128;11390:173;:::o;15183:315::-;15340:28;15350:4;15356:2;15360:7;15340:9;:28::i;:::-;15387:48;15410:4;15416:2;15420:7;15429:5;15387:22;:48::i;:::-;15379:111;;;;;;;;;;;;:::i;:::-;;;;;;;;;15183:315;;;;:::o;20772:89::-;20823:13;20849:7;20842:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20772:89;:::o;4659:532::-;4715:13;4754:1;4745:5;:10;4741:53;;4772:10;;;;;;;;;;;;;;;;;;;;;4741:53;4804:12;4819:5;4804:20;;4835:14;4860:78;4875:1;4867:4;:9;4860:78;;4893:8;;;;;:::i;:::-;;;;4924:2;4916:10;;;;;:::i;:::-;;;4860:78;;;4948:19;4980:6;4970:17;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4948:39;;4998:154;5014:1;5005:5;:10;4998:154;;5042:1;5032:11;;;;;:::i;:::-;;;5109:2;5101:5;:10;;;;:::i;:::-;5088:2;:24;;;;:::i;:::-;5075:39;;5058:6;5065;5058:14;;;;;;;;:::i;:::-;;;;;:56;;;;;;;;;;;5138:2;5129:11;;;;;:::i;:::-;;;4998:154;;;5176:6;5162:21;;;;;4659:532;;;;:::o;8655:157::-;8740:4;8779:25;8764:40;;;:11;:40;;;;8757:47;;8655:157;;;:::o;16447:342::-;16541:1;16527:16;;:2;:16;;;16519:61;;;;;;;;;;;;:::i;:::-;;;;;;;;;16600:16;16608:7;16600;:16::i;:::-;16599:17;16591:58;;;;;;;;;;;;:::i;:::-;;;;;;;;;16660:45;16689:1;16693:2;16697:7;16660:20;:45::i;:::-;16716:7;16729:2;16716:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16773:7;16769:2;16748:33;;16765:1;16748:33;;;;;;;;;;;;16447:342;;:::o;17731:799::-;17886:4;17907:15;:2;:13;;;:15::i;:::-;17903:620;;;17959:2;17943:36;;;17980:12;:10;:12::i;:::-;17994:4;18000:7;18009:5;17943:72;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;17939:529;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18202:1;18185:6;:13;:18;18181:272;;18228:60;;;;;;;;;;:::i;:::-;;;;;;;;18181:272;18403:6;18397:13;18388:6;18384:2;18380:15;18373:38;17939:529;18076:41;;;18066:51;;;:6;:51;;;;18059:58;;;;;17903:620;18507:4;18500:11;;17731:799;;;;;;;:::o;18533:126::-;;;;:::o;764:196::-;824:4;841:12;908:7;896:20;888:28;;951:1;944:4;:8;937:15;;;764:196;;;:::o;7:75:1:-;40:6;73:2;67:9;57:19;;7:75;:::o;88:117::-;197:1;194;187:12;211:117;320:1;317;310:12;334:149;370:7;410:66;403:5;399:78;388:89;;334:149;;;:::o;489:120::-;561:23;578:5;561:23;:::i;:::-;554:5;551:34;541:62;;599:1;596;589:12;541:62;489:120;:::o;615:137::-;660:5;698:6;685:20;676:29;;714:32;740:5;714:32;:::i;:::-;615:137;;;;:::o;758:327::-;816:6;865:2;853:9;844:7;840:23;836:32;833:119;;;871:79;;:::i;:::-;833:119;991:1;1016:52;1060:7;1051:6;1040:9;1036:22;1016:52;:::i;:::-;1006:62;;962:116;758:327;;;;:::o;1091:90::-;1125:7;1168:5;1161:13;1154:21;1143:32;;1091:90;;;:::o;1187:109::-;1268:21;1283:5;1268:21;:::i;:::-;1263:3;1256:34;1187:109;;:::o;1302:210::-;1389:4;1427:2;1416:9;1412:18;1404:26;;1440:65;1502:1;1491:9;1487:17;1478:6;1440:65;:::i;:::-;1302:210;;;;:::o;1518:99::-;1570:6;1604:5;1598:12;1588:22;;1518:99;;;:::o;1623:169::-;1707:11;1741:6;1736:3;1729:19;1781:4;1776:3;1772:14;1757:29;;1623:169;;;;:::o;1798:307::-;1866:1;1876:113;1890:6;1887:1;1884:13;1876:113;;;1975:1;1970:3;1966:11;1960:18;1956:1;1951:3;1947:11;1940:39;1912:2;1909:1;1905:10;1900:15;;1876:113;;;2007:6;2004:1;2001:13;1998:101;;;2087:1;2078:6;2073:3;2069:16;2062:27;1998:101;1847:258;1798:307;;;:::o;2111:102::-;2152:6;2203:2;2199:7;2194:2;2187:5;2183:14;2179:28;2169:38;;2111:102;;;:::o;2219:364::-;2307:3;2335:39;2368:5;2335:39;:::i;:::-;2390:71;2454:6;2449:3;2390:71;:::i;:::-;2383:78;;2470:52;2515:6;2510:3;2503:4;2496:5;2492:16;2470:52;:::i;:::-;2547:29;2569:6;2547:29;:::i;:::-;2542:3;2538:39;2531:46;;2311:272;2219:364;;;;:::o;2589:313::-;2702:4;2740:2;2729:9;2725:18;2717:26;;2789:9;2783:4;2779:20;2775:1;2764:9;2760:17;2753:47;2817:78;2890:4;2881:6;2817:78;:::i;:::-;2809:86;;2589:313;;;;:::o;2908:77::-;2945:7;2974:5;2963:16;;2908:77;;;:::o;2991:122::-;3064:24;3082:5;3064:24;:::i;:::-;3057:5;3054:35;3044:63;;3103:1;3100;3093:12;3044:63;2991:122;:::o;3119:139::-;3165:5;3203:6;3190:20;3181:29;;3219:33;3246:5;3219:33;:::i;:::-;3119:139;;;;:::o;3264:329::-;3323:6;3372:2;3360:9;3351:7;3347:23;3343:32;3340:119;;;3378:79;;:::i;:::-;3340:119;3498:1;3523:53;3568:7;3559:6;3548:9;3544:22;3523:53;:::i;:::-;3513:63;;3469:117;3264:329;;;;:::o;3599:126::-;3636:7;3676:42;3669:5;3665:54;3654:65;;3599:126;;;:::o;3731:96::-;3768:7;3797:24;3815:5;3797:24;:::i;:::-;3786:35;;3731:96;;;:::o;3833:118::-;3920:24;3938:5;3920:24;:::i;:::-;3915:3;3908:37;3833:118;;:::o;3957:222::-;4050:4;4088:2;4077:9;4073:18;4065:26;;4101:71;4169:1;4158:9;4154:17;4145:6;4101:71;:::i;:::-;3957:222;;;;:::o;4185:122::-;4258:24;4276:5;4258:24;:::i;:::-;4251:5;4248:35;4238:63;;4297:1;4294;4287:12;4238:63;4185:122;:::o;4313:139::-;4359:5;4397:6;4384:20;4375:29;;4413:33;4440:5;4413:33;:::i;:::-;4313:139;;;;:::o;4458:474::-;4526:6;4534;4583:2;4571:9;4562:7;4558:23;4554:32;4551:119;;;4589:79;;:::i;:::-;4551:119;4709:1;4734:53;4779:7;4770:6;4759:9;4755:22;4734:53;:::i;:::-;4724:63;;4680:117;4836:2;4862:53;4907:7;4898:6;4887:9;4883:22;4862:53;:::i;:::-;4852:63;;4807:118;4458:474;;;;;:::o;4938:118::-;5025:24;5043:5;5025:24;:::i;:::-;5020:3;5013:37;4938:118;;:::o;5062:222::-;5155:4;5193:2;5182:9;5178:18;5170:26;;5206:71;5274:1;5263:9;5259:17;5250:6;5206:71;:::i;:::-;5062:222;;;;:::o;5290:117::-;5399:1;5396;5389:12;5413:117;5522:1;5519;5512:12;5536:117;5645:1;5642;5635:12;5676:568;5749:8;5759:6;5809:3;5802:4;5794:6;5790:17;5786:27;5776:122;;5817:79;;:::i;:::-;5776:122;5930:6;5917:20;5907:30;;5960:18;5952:6;5949:30;5946:117;;;5982:79;;:::i;:::-;5946:117;6096:4;6088:6;6084:17;6072:29;;6150:3;6142:4;6134:6;6130:17;6120:8;6116:32;6113:41;6110:128;;;6157:79;;:::i;:::-;6110:128;5676:568;;;;;:::o;6250:559::-;6336:6;6344;6393:2;6381:9;6372:7;6368:23;6364:32;6361:119;;;6399:79;;:::i;:::-;6361:119;6547:1;6536:9;6532:17;6519:31;6577:18;6569:6;6566:30;6563:117;;;6599:79;;:::i;:::-;6563:117;6712:80;6784:7;6775:6;6764:9;6760:22;6712:80;:::i;:::-;6694:98;;;;6490:312;6250:559;;;;;:::o;6815:619::-;6892:6;6900;6908;6957:2;6945:9;6936:7;6932:23;6928:32;6925:119;;;6963:79;;:::i;:::-;6925:119;7083:1;7108:53;7153:7;7144:6;7133:9;7129:22;7108:53;:::i;:::-;7098:63;;7054:117;7210:2;7236:53;7281:7;7272:6;7261:9;7257:22;7236:53;:::i;:::-;7226:63;;7181:118;7338:2;7364:53;7409:7;7400:6;7389:9;7385:22;7364:53;:::i;:::-;7354:63;;7309:118;6815:619;;;;;:::o;7440:117::-;7549:1;7546;7539:12;7563:180;7611:77;7608:1;7601:88;7708:4;7705:1;7698:15;7732:4;7729:1;7722:15;7749:281;7832:27;7854:4;7832:27;:::i;:::-;7824:6;7820:40;7962:6;7950:10;7947:22;7926:18;7914:10;7911:34;7908:62;7905:88;;;7973:18;;:::i;:::-;7905:88;8013:10;8009:2;8002:22;7792:238;7749:281;;:::o;8036:129::-;8070:6;8097:20;;:::i;:::-;8087:30;;8126:33;8154:4;8146:6;8126:33;:::i;:::-;8036:129;;;:::o;8171:308::-;8233:4;8323:18;8315:6;8312:30;8309:56;;;8345:18;;:::i;:::-;8309:56;8383:29;8405:6;8383:29;:::i;:::-;8375:37;;8467:4;8461;8457:15;8449:23;;8171:308;;;:::o;8485:154::-;8569:6;8564:3;8559;8546:30;8631:1;8622:6;8617:3;8613:16;8606:27;8485:154;;;:::o;8645:412::-;8723:5;8748:66;8764:49;8806:6;8764:49;:::i;:::-;8748:66;:::i;:::-;8739:75;;8837:6;8830:5;8823:21;8875:4;8868:5;8864:16;8913:3;8904:6;8899:3;8895:16;8892:25;8889:112;;;8920:79;;:::i;:::-;8889:112;9010:41;9044:6;9039:3;9034;9010:41;:::i;:::-;8729:328;8645:412;;;;;:::o;9077:340::-;9133:5;9182:3;9175:4;9167:6;9163:17;9159:27;9149:122;;9190:79;;:::i;:::-;9149:122;9307:6;9294:20;9332:79;9407:3;9399:6;9392:4;9384:6;9380:17;9332:79;:::i;:::-;9323:88;;9139:278;9077:340;;;;:::o;9423:509::-;9492:6;9541:2;9529:9;9520:7;9516:23;9512:32;9509:119;;;9547:79;;:::i;:::-;9509:119;9695:1;9684:9;9680:17;9667:31;9725:18;9717:6;9714:30;9711:117;;;9747:79;;:::i;:::-;9711:117;9852:63;9907:7;9898:6;9887:9;9883:22;9852:63;:::i;:::-;9842:73;;9638:287;9423:509;;;;:::o;9938:329::-;9997:6;10046:2;10034:9;10025:7;10021:23;10017:32;10014:119;;;10052:79;;:::i;:::-;10014:119;10172:1;10197:53;10242:7;10233:6;10222:9;10218:22;10197:53;:::i;:::-;10187:63;;10143:117;9938:329;;;;:::o;10273:114::-;10340:6;10374:5;10368:12;10358:22;;10273:114;;;:::o;10393:184::-;10492:11;10526:6;10521:3;10514:19;10566:4;10561:3;10557:14;10542:29;;10393:184;;;;:::o;10583:132::-;10650:4;10673:3;10665:11;;10703:4;10698:3;10694:14;10686:22;;10583:132;;;:::o;10721:108::-;10798:24;10816:5;10798:24;:::i;:::-;10793:3;10786:37;10721:108;;:::o;10835:179::-;10904:10;10925:46;10967:3;10959:6;10925:46;:::i;:::-;11003:4;10998:3;10994:14;10980:28;;10835:179;;;;:::o;11020:113::-;11090:4;11122;11117:3;11113:14;11105:22;;11020:113;;;:::o;11169:732::-;11288:3;11317:54;11365:5;11317:54;:::i;:::-;11387:86;11466:6;11461:3;11387:86;:::i;:::-;11380:93;;11497:56;11547:5;11497:56;:::i;:::-;11576:7;11607:1;11592:284;11617:6;11614:1;11611:13;11592:284;;;11693:6;11687:13;11720:63;11779:3;11764:13;11720:63;:::i;:::-;11713:70;;11806:60;11859:6;11806:60;:::i;:::-;11796:70;;11652:224;11639:1;11636;11632:9;11627:14;;11592:284;;;11596:14;11892:3;11885:10;;11293:608;;;11169:732;;;;:::o;11907:373::-;12050:4;12088:2;12077:9;12073:18;12065:26;;12137:9;12131:4;12127:20;12123:1;12112:9;12108:17;12101:47;12165:108;12268:4;12259:6;12165:108;:::i;:::-;12157:116;;11907:373;;;;:::o;12286:116::-;12356:21;12371:5;12356:21;:::i;:::-;12349:5;12346:32;12336:60;;12392:1;12389;12382:12;12336:60;12286:116;:::o;12408:133::-;12451:5;12489:6;12476:20;12467:29;;12505:30;12529:5;12505:30;:::i;:::-;12408:133;;;;:::o;12547:468::-;12612:6;12620;12669:2;12657:9;12648:7;12644:23;12640:32;12637:119;;;12675:79;;:::i;:::-;12637:119;12795:1;12820:53;12865:7;12856:6;12845:9;12841:22;12820:53;:::i;:::-;12810:63;;12766:117;12922:2;12948:50;12990:7;12981:6;12970:9;12966:22;12948:50;:::i;:::-;12938:60;;12893:115;12547:468;;;;;:::o;13021:307::-;13082:4;13172:18;13164:6;13161:30;13158:56;;;13194:18;;:::i;:::-;13158:56;13232:29;13254:6;13232:29;:::i;:::-;13224:37;;13316:4;13310;13306:15;13298:23;;13021:307;;;:::o;13334:410::-;13411:5;13436:65;13452:48;13493:6;13452:48;:::i;:::-;13436:65;:::i;:::-;13427:74;;13524:6;13517:5;13510:21;13562:4;13555:5;13551:16;13600:3;13591:6;13586:3;13582:16;13579:25;13576:112;;;13607:79;;:::i;:::-;13576:112;13697:41;13731:6;13726:3;13721;13697:41;:::i;:::-;13417:327;13334:410;;;;;:::o;13763:338::-;13818:5;13867:3;13860:4;13852:6;13848:17;13844:27;13834:122;;13875:79;;:::i;:::-;13834:122;13992:6;13979:20;14017:78;14091:3;14083:6;14076:4;14068:6;14064:17;14017:78;:::i;:::-;14008:87;;13824:277;13763:338;;;;:::o;14107:943::-;14202:6;14210;14218;14226;14275:3;14263:9;14254:7;14250:23;14246:33;14243:120;;;14282:79;;:::i;:::-;14243:120;14402:1;14427:53;14472:7;14463:6;14452:9;14448:22;14427:53;:::i;:::-;14417:63;;14373:117;14529:2;14555:53;14600:7;14591:6;14580:9;14576:22;14555:53;:::i;:::-;14545:63;;14500:118;14657:2;14683:53;14728:7;14719:6;14708:9;14704:22;14683:53;:::i;:::-;14673:63;;14628:118;14813:2;14802:9;14798:18;14785:32;14844:18;14836:6;14833:30;14830:117;;;14866:79;;:::i;:::-;14830:117;14971:62;15025:7;15016:6;15005:9;15001:22;14971:62;:::i;:::-;14961:72;;14756:287;14107:943;;;;;;;:::o;15056:323::-;15112:6;15161:2;15149:9;15140:7;15136:23;15132:32;15129:119;;;15167:79;;:::i;:::-;15129:119;15287:1;15312:50;15354:7;15345:6;15334:9;15330:22;15312:50;:::i;:::-;15302:60;;15258:114;15056:323;;;;:::o;15385:474::-;15453:6;15461;15510:2;15498:9;15489:7;15485:23;15481:32;15478:119;;;15516:79;;:::i;:::-;15478:119;15636:1;15661:53;15706:7;15697:6;15686:9;15682:22;15661:53;:::i;:::-;15651:63;;15607:117;15763:2;15789:53;15834:7;15825:6;15814:9;15810:22;15789:53;:::i;:::-;15779:63;;15734:118;15385:474;;;;;:::o;15865:180::-;15913:77;15910:1;15903:88;16010:4;16007:1;16000:15;16034:4;16031:1;16024:15;16051:320;16095:6;16132:1;16126:4;16122:12;16112:22;;16179:1;16173:4;16169:12;16200:18;16190:81;;16256:4;16248:6;16244:17;16234:27;;16190:81;16318:2;16310:6;16307:14;16287:18;16284:38;16281:84;;16337:18;;:::i;:::-;16281:84;16102:269;16051:320;;;:::o;16377:231::-;16517:34;16513:1;16505:6;16501:14;16494:58;16586:14;16581:2;16573:6;16569:15;16562:39;16377:231;:::o;16614:366::-;16756:3;16777:67;16841:2;16836:3;16777:67;:::i;:::-;16770:74;;16853:93;16942:3;16853:93;:::i;:::-;16971:2;16966:3;16962:12;16955:19;;16614:366;;;:::o;16986:419::-;17152:4;17190:2;17179:9;17175:18;17167:26;;17239:9;17233:4;17229:20;17225:1;17214:9;17210:17;17203:47;17267:131;17393:4;17267:131;:::i;:::-;17259:139;;16986:419;;;:::o;17411:182::-;17551:34;17547:1;17539:6;17535:14;17528:58;17411:182;:::o;17599:366::-;17741:3;17762:67;17826:2;17821:3;17762:67;:::i;:::-;17755:74;;17838:93;17927:3;17838:93;:::i;:::-;17956:2;17951:3;17947:12;17940:19;;17599:366;;;:::o;17971:419::-;18137:4;18175:2;18164:9;18160:18;18152:26;;18224:9;18218:4;18214:20;18210:1;18199:9;18195:17;18188:47;18252:131;18378:4;18252:131;:::i;:::-;18244:139;;17971:419;;;:::o;18396:220::-;18536:34;18532:1;18524:6;18520:14;18513:58;18605:3;18600:2;18592:6;18588:15;18581:28;18396:220;:::o;18622:366::-;18764:3;18785:67;18849:2;18844:3;18785:67;:::i;:::-;18778:74;;18861:93;18950:3;18861:93;:::i;:::-;18979:2;18974:3;18970:12;18963:19;;18622:366;;;:::o;18994:419::-;19160:4;19198:2;19187:9;19183:18;19175:26;;19247:9;19241:4;19237:20;19233:1;19222:9;19218:17;19211:47;19275:131;19401:4;19275:131;:::i;:::-;19267:139;;18994:419;;;:::o;19419:243::-;19559:34;19555:1;19547:6;19543:14;19536:58;19628:26;19623:2;19615:6;19611:15;19604:51;19419:243;:::o;19668:366::-;19810:3;19831:67;19895:2;19890:3;19831:67;:::i;:::-;19824:74;;19907:93;19996:3;19907:93;:::i;:::-;20025:2;20020:3;20016:12;20009:19;;19668:366;;;:::o;20040:419::-;20206:4;20244:2;20233:9;20229:18;20221:26;;20293:9;20287:4;20283:20;20279:1;20268:9;20264:17;20257:47;20321:131;20447:4;20321:131;:::i;:::-;20313:139;;20040:419;;;:::o;20465:180::-;20513:77;20510:1;20503:88;20610:4;20607:1;20600:15;20634:4;20631:1;20624:15;20651:305;20691:3;20710:20;20728:1;20710:20;:::i;:::-;20705:25;;20744:20;20762:1;20744:20;:::i;:::-;20739:25;;20898:1;20830:66;20826:74;20823:1;20820:81;20817:107;;;20904:18;;:::i;:::-;20817:107;20948:1;20945;20941:9;20934:16;;20651:305;;;;:::o;20962:158::-;21102:10;21098:1;21090:6;21086:14;21079:34;20962:158;:::o;21126:365::-;21268:3;21289:66;21353:1;21348:3;21289:66;:::i;:::-;21282:73;;21364:93;21453:3;21364:93;:::i;:::-;21482:2;21477:3;21473:12;21466:19;;21126:365;;;:::o;21497:419::-;21663:4;21701:2;21690:9;21686:18;21678:26;;21750:9;21744:4;21740:20;21736:1;21725:9;21721:17;21714:47;21778:131;21904:4;21778:131;:::i;:::-;21770:139;;21497:419;;;:::o;21922:180::-;21970:77;21967:1;21960:88;22067:4;22064:1;22057:15;22091:4;22088:1;22081:15;22108:233;22147:3;22170:24;22188:5;22170:24;:::i;:::-;22161:33;;22216:66;22209:5;22206:77;22203:103;;22286:18;;:::i;:::-;22203:103;22333:1;22326:5;22322:13;22315:20;;22108:233;;;:::o;22347:236::-;22487:34;22483:1;22475:6;22471:14;22464:58;22556:19;22551:2;22543:6;22539:15;22532:44;22347:236;:::o;22589:366::-;22731:3;22752:67;22816:2;22811:3;22752:67;:::i;:::-;22745:74;;22828:93;22917:3;22828:93;:::i;:::-;22946:2;22941:3;22937:12;22930:19;;22589:366;;;:::o;22961:419::-;23127:4;23165:2;23154:9;23150:18;23142:26;;23214:9;23208:4;23204:20;23200:1;23189:9;23185:17;23178:47;23242:131;23368:4;23242:131;:::i;:::-;23234:139;;22961:419;;;:::o;23386:172::-;23526:24;23522:1;23514:6;23510:14;23503:48;23386:172;:::o;23564:366::-;23706:3;23727:67;23791:2;23786:3;23727:67;:::i;:::-;23720:74;;23803:93;23892:3;23803:93;:::i;:::-;23921:2;23916:3;23912:12;23905:19;;23564:366;;;:::o;23936:419::-;24102:4;24140:2;24129:9;24125:18;24117:26;;24189:9;24183:4;24179:20;24175:1;24164:9;24160:17;24153:47;24217:131;24343:4;24217:131;:::i;:::-;24209:139;;23936:419;;;:::o;24361:147::-;24462:11;24499:3;24484:18;;24361:147;;;;:::o;24514:114::-;;:::o;24634:398::-;24793:3;24814:83;24895:1;24890:3;24814:83;:::i;:::-;24807:90;;24906:93;24995:3;24906:93;:::i;:::-;25024:1;25019:3;25015:11;25008:18;;24634:398;;;:::o;25038:379::-;25222:3;25244:147;25387:3;25244:147;:::i;:::-;25237:154;;25408:3;25401:10;;25038:379;;;:::o;25423:173::-;25563:25;25559:1;25551:6;25547:14;25540:49;25423:173;:::o;25602:366::-;25744:3;25765:67;25829:2;25824:3;25765:67;:::i;:::-;25758:74;;25841:93;25930:3;25841:93;:::i;:::-;25959:2;25954:3;25950:12;25943:19;;25602:366;;;:::o;25974:419::-;26140:4;26178:2;26167:9;26163:18;26155:26;;26227:9;26221:4;26217:20;26213:1;26202:9;26198:17;26191:47;26255:131;26381:4;26255:131;:::i;:::-;26247:139;;25974:419;;;:::o;26399:141::-;26448:4;26471:3;26463:11;;26494:3;26491:1;26484:14;26528:4;26525:1;26515:18;26507:26;;26399:141;;;:::o;26546:93::-;26583:6;26630:2;26625;26618:5;26614:14;26610:23;26600:33;;26546:93;;;:::o;26645:107::-;26689:8;26739:5;26733:4;26729:16;26708:37;;26645:107;;;;:::o;26758:393::-;26827:6;26877:1;26865:10;26861:18;26900:97;26930:66;26919:9;26900:97;:::i;:::-;27018:39;27048:8;27037:9;27018:39;:::i;:::-;27006:51;;27090:4;27086:9;27079:5;27075:21;27066:30;;27139:4;27129:8;27125:19;27118:5;27115:30;27105:40;;26834:317;;26758:393;;;;;:::o;27157:60::-;27185:3;27206:5;27199:12;;27157:60;;;:::o;27223:142::-;27273:9;27306:53;27324:34;27333:24;27351:5;27333:24;:::i;:::-;27324:34;:::i;:::-;27306:53;:::i;:::-;27293:66;;27223:142;;;:::o;27371:75::-;27414:3;27435:5;27428:12;;27371:75;;;:::o;27452:269::-;27562:39;27593:7;27562:39;:::i;:::-;27623:91;27672:41;27696:16;27672:41;:::i;:::-;27664:6;27657:4;27651:11;27623:91;:::i;:::-;27617:4;27610:105;27528:193;27452:269;;;:::o;27727:73::-;27772:3;27727:73;:::o;27806:189::-;27883:32;;:::i;:::-;27924:65;27982:6;27974;27968:4;27924:65;:::i;:::-;27859:136;27806:189;;:::o;28001:186::-;28061:120;28078:3;28071:5;28068:14;28061:120;;;28132:39;28169:1;28162:5;28132:39;:::i;:::-;28105:1;28098:5;28094:13;28085:22;;28061:120;;;28001:186;;:::o;28193:543::-;28294:2;28289:3;28286:11;28283:446;;;28328:38;28360:5;28328:38;:::i;:::-;28412:29;28430:10;28412:29;:::i;:::-;28402:8;28398:44;28595:2;28583:10;28580:18;28577:49;;;28616:8;28601:23;;28577:49;28639:80;28695:22;28713:3;28695:22;:::i;:::-;28685:8;28681:37;28668:11;28639:80;:::i;:::-;28298:431;;28283:446;28193:543;;;:::o;28742:117::-;28796:8;28846:5;28840:4;28836:16;28815:37;;28742:117;;;;:::o;28865:169::-;28909:6;28942:51;28990:1;28986:6;28978:5;28975:1;28971:13;28942:51;:::i;:::-;28938:56;29023:4;29017;29013:15;29003:25;;28916:118;28865:169;;;;:::o;29039:295::-;29115:4;29261:29;29286:3;29280:4;29261:29;:::i;:::-;29253:37;;29323:3;29320:1;29316:11;29310:4;29307:21;29299:29;;29039:295;;;;:::o;29339:1395::-;29456:37;29489:3;29456:37;:::i;:::-;29558:18;29550:6;29547:30;29544:56;;;29580:18;;:::i;:::-;29544:56;29624:38;29656:4;29650:11;29624:38;:::i;:::-;29709:67;29769:6;29761;29755:4;29709:67;:::i;:::-;29803:1;29827:4;29814:17;;29859:2;29851:6;29848:14;29876:1;29871:618;;;;30533:1;30550:6;30547:77;;;30599:9;30594:3;30590:19;30584:26;30575:35;;30547:77;30650:67;30710:6;30703:5;30650:67;:::i;:::-;30644:4;30637:81;30506:222;29841:887;;29871:618;29923:4;29919:9;29911:6;29907:22;29957:37;29989:4;29957:37;:::i;:::-;30016:1;30030:208;30044:7;30041:1;30038:14;30030:208;;;30123:9;30118:3;30114:19;30108:26;30100:6;30093:42;30174:1;30166:6;30162:14;30152:24;;30221:2;30210:9;30206:18;30193:31;;30067:4;30064:1;30060:12;30055:17;;30030:208;;;30266:6;30257:7;30254:19;30251:179;;;30324:9;30319:3;30315:19;30309:26;30367:48;30409:4;30401:6;30397:17;30386:9;30367:48;:::i;:::-;30359:6;30352:64;30274:156;30251:179;30476:1;30472;30464:6;30460:14;30456:22;30450:4;30443:36;29878:611;;;29841:887;;29431:1303;;;29339:1395;;:::o;30740:228::-;30880:34;30876:1;30868:6;30864:14;30857:58;30949:11;30944:2;30936:6;30932:15;30925:36;30740:228;:::o;30974:366::-;31116:3;31137:67;31201:2;31196:3;31137:67;:::i;:::-;31130:74;;31213:93;31302:3;31213:93;:::i;:::-;31331:2;31326:3;31322:12;31315:19;;30974:366;;;:::o;31346:419::-;31512:4;31550:2;31539:9;31535:18;31527:26;;31599:9;31593:4;31589:20;31585:1;31574:9;31570:17;31563:47;31627:131;31753:4;31627:131;:::i;:::-;31619:139;;31346:419;;;:::o;31771:229::-;31911:34;31907:1;31899:6;31895:14;31888:58;31980:12;31975:2;31967:6;31963:15;31956:37;31771:229;:::o;32006:366::-;32148:3;32169:67;32233:2;32228:3;32169:67;:::i;:::-;32162:74;;32245:93;32334:3;32245:93;:::i;:::-;32363:2;32358:3;32354:12;32347:19;;32006:366;;;:::o;32378:419::-;32544:4;32582:2;32571:9;32567:18;32559:26;;32631:9;32625:4;32621:20;32617:1;32606:9;32602:17;32595:47;32659:131;32785:4;32659:131;:::i;:::-;32651:139;;32378:419;;;:::o;32803:181::-;32943:33;32939:1;32931:6;32927:14;32920:57;32803:181;:::o;32990:366::-;33132:3;33153:67;33217:2;33212:3;33153:67;:::i;:::-;33146:74;;33229:93;33318:3;33229:93;:::i;:::-;33347:2;33342:3;33338:12;33331:19;;32990:366;;;:::o;33362:419::-;33528:4;33566:2;33555:9;33551:18;33543:26;;33615:9;33609:4;33605:20;33601:1;33590:9;33586:17;33579:47;33643:131;33769:4;33643:131;:::i;:::-;33635:139;;33362:419;;;:::o;33787:153::-;33927:5;33923:1;33915:6;33911:14;33904:29;33787:153;:::o;33946:365::-;34088:3;34109:66;34173:1;34168:3;34109:66;:::i;:::-;34102:73;;34184:93;34273:3;34184:93;:::i;:::-;34302:2;34297:3;34293:12;34286:19;;33946:365;;;:::o;34317:419::-;34483:4;34521:2;34510:9;34506:18;34498:26;;34570:9;34564:4;34560:20;34556:1;34545:9;34541:17;34534:47;34598:131;34724:4;34598:131;:::i;:::-;34590:139;;34317:419;;;:::o;34742:151::-;34882:3;34878:1;34870:6;34866:14;34859:27;34742:151;:::o;34899:365::-;35041:3;35062:66;35126:1;35121:3;35062:66;:::i;:::-;35055:73;;35137:93;35226:3;35137:93;:::i;:::-;35255:2;35250:3;35246:12;35239:19;;34899:365;;;:::o;35270:419::-;35436:4;35474:2;35463:9;35459:18;35451:26;;35523:9;35517:4;35513:20;35509:1;35498:9;35494:17;35487:47;35551:131;35677:4;35551:131;:::i;:::-;35543:139;;35270:419;;;:::o;35695:153::-;35835:5;35831:1;35823:6;35819:14;35812:29;35695:153;:::o;35854:365::-;35996:3;36017:66;36081:1;36076:3;36017:66;:::i;:::-;36010:73;;36092:93;36181:3;36092:93;:::i;:::-;36210:2;36205:3;36201:12;36194:19;;35854:365;;;:::o;36225:419::-;36391:4;36429:2;36418:9;36414:18;36406:26;;36478:9;36472:4;36468:20;36464:1;36453:9;36449:17;36442:47;36506:131;36632:4;36506:131;:::i;:::-;36498:139;;36225:419;;;:::o;36650:348::-;36690:7;36713:20;36731:1;36713:20;:::i;:::-;36708:25;;36747:20;36765:1;36747:20;:::i;:::-;36742:25;;36935:1;36867:66;36863:74;36860:1;36857:81;36852:1;36845:9;36838:17;36834:105;36831:131;;;36942:18;;:::i;:::-;36831:131;36990:1;36987;36983:9;36972:20;;36650:348;;;;:::o;37004:175::-;37144:27;37140:1;37132:6;37128:14;37121:51;37004:175;:::o;37185:366::-;37327:3;37348:67;37412:2;37407:3;37348:67;:::i;:::-;37341:74;;37424:93;37513:3;37424:93;:::i;:::-;37542:2;37537:3;37533:12;37526:19;;37185:366;;;:::o;37557:419::-;37723:4;37761:2;37750:9;37746:18;37738:26;;37810:9;37804:4;37800:20;37796:1;37785:9;37781:17;37774:47;37838:131;37964:4;37838:131;:::i;:::-;37830:139;;37557:419;;;:::o;37982:220::-;38122:34;38118:1;38110:6;38106:14;38099:58;38191:3;38186:2;38178:6;38174:15;38167:28;37982:220;:::o;38208:366::-;38350:3;38371:67;38435:2;38430:3;38371:67;:::i;:::-;38364:74;;38447:93;38536:3;38447:93;:::i;:::-;38565:2;38560:3;38556:12;38549:19;;38208:366;;;:::o;38580:419::-;38746:4;38784:2;38773:9;38769:18;38761:26;;38833:9;38827:4;38823:20;38819:1;38808:9;38804:17;38797:47;38861:131;38987:4;38861:131;:::i;:::-;38853:139;;38580:419;;;:::o;39005:148::-;39107:11;39144:3;39129:18;;39005:148;;;;:::o;39159:377::-;39265:3;39293:39;39326:5;39293:39;:::i;:::-;39348:89;39430:6;39425:3;39348:89;:::i;:::-;39341:96;;39446:52;39491:6;39486:3;39479:4;39472:5;39468:16;39446:52;:::i;:::-;39523:6;39518:3;39514:16;39507:23;;39269:267;39159:377;;;;:::o;39542:435::-;39722:3;39744:95;39835:3;39826:6;39744:95;:::i;:::-;39737:102;;39856:95;39947:3;39938:6;39856:95;:::i;:::-;39849:102;;39968:3;39961:10;;39542:435;;;;;:::o;39983:225::-;40123:34;40119:1;40111:6;40107:14;40100:58;40192:8;40187:2;40179:6;40175:15;40168:33;39983:225;:::o;40214:366::-;40356:3;40377:67;40441:2;40436:3;40377:67;:::i;:::-;40370:74;;40453:93;40542:3;40453:93;:::i;:::-;40571:2;40566:3;40562:12;40555:19;;40214:366;;;:::o;40586:419::-;40752:4;40790:2;40779:9;40775:18;40767:26;;40839:9;40833:4;40829:20;40825:1;40814:9;40810:17;40803:47;40867:131;40993:4;40867:131;:::i;:::-;40859:139;;40586:419;;;:::o;41011:237::-;41151:34;41147:1;41139:6;41135:14;41128:58;41220:20;41215:2;41207:6;41203:15;41196:45;41011:237;:::o;41254:366::-;41396:3;41417:67;41481:2;41476:3;41417:67;:::i;:::-;41410:74;;41493:93;41582:3;41493:93;:::i;:::-;41611:2;41606:3;41602:12;41595:19;;41254:366;;;:::o;41626:419::-;41792:4;41830:2;41819:9;41815:18;41807:26;;41879:9;41873:4;41869:20;41865:1;41854:9;41850:17;41843:47;41907:131;42033:4;41907:131;:::i;:::-;41899:139;;41626:419;;;:::o;42051:231::-;42191:34;42187:1;42179:6;42175:14;42168:58;42260:14;42255:2;42247:6;42243:15;42236:39;42051:231;:::o;42288:366::-;42430:3;42451:67;42515:2;42510:3;42451:67;:::i;:::-;42444:74;;42527:93;42616:3;42527:93;:::i;:::-;42645:2;42640:3;42636:12;42629:19;;42288:366;;;:::o;42660:419::-;42826:4;42864:2;42853:9;42849:18;42841:26;;42913:9;42907:4;42903:20;42899:1;42888:9;42884:17;42877:47;42941:131;43067:4;42941:131;:::i;:::-;42933:139;;42660:419;;;:::o;43085:228::-;43225:34;43221:1;43213:6;43209:14;43202:58;43294:11;43289:2;43281:6;43277:15;43270:36;43085:228;:::o;43319:366::-;43461:3;43482:67;43546:2;43541:3;43482:67;:::i;:::-;43475:74;;43558:93;43647:3;43558:93;:::i;:::-;43676:2;43671:3;43667:12;43660:19;;43319:366;;;:::o;43691:419::-;43857:4;43895:2;43884:9;43880:18;43872:26;;43944:9;43938:4;43934:20;43930:1;43919:9;43915:17;43908:47;43972:131;44098:4;43972:131;:::i;:::-;43964:139;;43691:419;;;:::o;44116:223::-;44256:34;44252:1;44244:6;44240:14;44233:58;44325:6;44320:2;44312:6;44308:15;44301:31;44116:223;:::o;44345:366::-;44487:3;44508:67;44572:2;44567:3;44508:67;:::i;:::-;44501:74;;44584:93;44673:3;44584:93;:::i;:::-;44702:2;44697:3;44693:12;44686:19;;44345:366;;;:::o;44717:419::-;44883:4;44921:2;44910:9;44906:18;44898:26;;44970:9;44964:4;44960:20;44956:1;44945:9;44941:17;44934:47;44998:131;45124:4;44998:131;:::i;:::-;44990:139;;44717:419;;;:::o;45142:180::-;45190:77;45187:1;45180:88;45287:4;45284:1;45277:15;45311:4;45308:1;45301:15;45328:185;45368:1;45385:20;45403:1;45385:20;:::i;:::-;45380:25;;45419:20;45437:1;45419:20;:::i;:::-;45414:25;;45458:1;45448:35;;45463:18;;:::i;:::-;45448:35;45505:1;45502;45498:9;45493:14;;45328:185;;;;:::o;45519:191::-;45559:4;45579:20;45597:1;45579:20;:::i;:::-;45574:25;;45613:20;45631:1;45613:20;:::i;:::-;45608:25;;45652:1;45649;45646:8;45643:34;;;45657:18;;:::i;:::-;45643:34;45702:1;45699;45695:9;45687:17;;45519:191;;;;:::o;45716:176::-;45748:1;45765:20;45783:1;45765:20;:::i;:::-;45760:25;;45799:20;45817:1;45799:20;:::i;:::-;45794:25;;45838:1;45828:35;;45843:18;;:::i;:::-;45828:35;45884:1;45881;45877:9;45872:14;;45716:176;;;;:::o;45898:182::-;46038:34;46034:1;46026:6;46022:14;46015:58;45898:182;:::o;46086:366::-;46228:3;46249:67;46313:2;46308:3;46249:67;:::i;:::-;46242:74;;46325:93;46414:3;46325:93;:::i;:::-;46443:2;46438:3;46434:12;46427:19;;46086:366;;;:::o;46458:419::-;46624:4;46662:2;46651:9;46647:18;46639:26;;46711:9;46705:4;46701:20;46697:1;46686:9;46682:17;46675:47;46739:131;46865:4;46739:131;:::i;:::-;46731:139;;46458:419;;;:::o;46883:178::-;47023:30;47019:1;47011:6;47007:14;47000:54;46883:178;:::o;47067:366::-;47209:3;47230:67;47294:2;47289:3;47230:67;:::i;:::-;47223:74;;47306:93;47395:3;47306:93;:::i;:::-;47424:2;47419:3;47415:12;47408:19;;47067:366;;;:::o;47439:419::-;47605:4;47643:2;47632:9;47628:18;47620:26;;47692:9;47686:4;47682:20;47678:1;47667:9;47663:17;47656:47;47720:131;47846:4;47720:131;:::i;:::-;47712:139;;47439:419;;;:::o;47864:98::-;47915:6;47949:5;47943:12;47933:22;;47864:98;;;:::o;47968:168::-;48051:11;48085:6;48080:3;48073:19;48125:4;48120:3;48116:14;48101:29;;47968:168;;;;:::o;48142:360::-;48228:3;48256:38;48288:5;48256:38;:::i;:::-;48310:70;48373:6;48368:3;48310:70;:::i;:::-;48303:77;;48389:52;48434:6;48429:3;48422:4;48415:5;48411:16;48389:52;:::i;:::-;48466:29;48488:6;48466:29;:::i;:::-;48461:3;48457:39;48450:46;;48232:270;48142:360;;;;:::o;48508:640::-;48703:4;48741:3;48730:9;48726:19;48718:27;;48755:71;48823:1;48812:9;48808:17;48799:6;48755:71;:::i;:::-;48836:72;48904:2;48893:9;48889:18;48880:6;48836:72;:::i;:::-;48918;48986:2;48975:9;48971:18;48962:6;48918:72;:::i;:::-;49037:9;49031:4;49027:20;49022:2;49011:9;49007:18;49000:48;49065:76;49136:4;49127:6;49065:76;:::i;:::-;49057:84;;48508:640;;;;;;;:::o;49154:141::-;49210:5;49241:6;49235:13;49226:22;;49257:32;49283:5;49257:32;:::i;:::-;49154:141;;;;:::o;49301:349::-;49370:6;49419:2;49407:9;49398:7;49394:23;49390:32;49387:119;;;49425:79;;:::i;:::-;49387:119;49545:1;49570:63;49625:7;49616:6;49605:9;49601:22;49570:63;:::i;:::-;49560:73;;49516:127;49301:349;;;;:::o

Swarm Source

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