ETH Price: $3,419.18 (+3.60%)

Token

troll-town-mutational-elixirs (TTME)
 

Overview

Max Total Supply

0 TTME

Holders

990

Market

Volume (24H)

N/A

Min Price (24H)

N/A

Max Price (24H)

N/A
0xA487b579Cf197AB4f7D3a1b2b59195862Da15A7B
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:
TrollTownElixir

Compiler Version
v0.8.4+commit.c7e474f2

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2022-06-24
*/

// SPDX-License-Identifier: MIT
/**
 * @title TrollTownElixir
 * @author AhmYieTrollElixir
 * @dev Used for Ethereum projects compatible with OpenSea
 */

pragma solidity ^0.8.0;
interface IERC165 {
    function supportsInterface(bytes4 interfaceId) external view returns (bool);
}

pragma solidity ^0.8.0;
interface IERC1155 is IERC165 {
    event TransferSingle(address indexed operator, address indexed from, address indexed to, uint256 id, uint256 value);
    event TransferBatch(
        address indexed operator,
        address indexed from,
        address indexed to,
        uint256[] ids,
        uint256[] values
    );
    event ApprovalForAll(address indexed account, address indexed operator, bool approved);
    event URI(string value, uint256 indexed id);
    function balanceOf(address account, uint256 id) external view returns (uint256);
    function balanceOfBatch(address[] calldata accounts, uint256[] calldata ids)
        external
        view
        returns (uint256[] memory);
    function setApprovalForAll(address operator, bool approved) external;
    function isApprovedForAll(address account, address operator) external view returns (bool);
    function safeTransferFrom(
        address from,
        address to,
        uint256 id,
        uint256 amount,
        bytes calldata data
    ) external;
    function safeBatchTransferFrom(
        address from,
        address to,
        uint256[] calldata ids,
        uint256[] calldata amounts,
        bytes calldata data
    ) external;
}

pragma solidity ^0.8.0;
interface IERC1155Receiver is IERC165 {
    function onERC1155Received(
        address operator,
        address from,
        uint256 id,
        uint256 value,
        bytes calldata data
    ) external returns (bytes4);
    function onERC1155BatchReceived(
        address operator,
        address from,
        uint256[] calldata ids,
        uint256[] calldata values,
        bytes calldata data
    ) external returns (bytes4);
}

pragma solidity ^0.8.0;
interface IERC1155MetadataURI is IERC1155 {
    function uri(uint256 id) external view returns (string memory);
}

pragma solidity ^0.8.1;
library Address {
    function isContract(address account) internal view returns (bool) {
        // for contracts in construction, since the code is only stored at the end

        return account.code.length > 0;
    }
    function sendValue(address payable recipient, uint256 amount) internal {
        require(address(this).balance >= amount, "Address: insufficient balance");

        (bool success, ) = recipient.call{value: amount}("");
        require(success, "Address: unable to send value, recipient may have reverted");
    }
    function functionCall(address target, bytes memory data) internal returns (bytes memory) {
        return functionCall(target, data, "Address: low-level call failed");
    }
    function functionCall(
        address target,
        bytes memory data,
        string memory errorMessage
    ) internal returns (bytes memory) {
        return functionCallWithValue(target, data, 0, errorMessage);
    }
    function functionCallWithValue(
        address target,
        bytes memory data,
        uint256 value
    ) internal returns (bytes memory) {
        return functionCallWithValue(target, data, value, "Address: low-level call with value failed");
    }
    function functionCallWithValue(
        address target,
        bytes memory data,
        uint256 value,
        string memory errorMessage
    ) internal returns (bytes memory) {
        require(address(this).balance >= value, "Address: insufficient balance for call");
        require(isContract(target), "Address: call to non-contract");

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

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

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

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

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

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

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

pragma solidity ^0.8.0;
contract ERC1155 is Context, ERC165, IERC1155, IERC1155MetadataURI {
    using Address for address;
    mapping(uint256 => mapping(address => uint256)) private _balances;
    mapping(address => mapping(address => bool)) private _operatorApprovals;
    string private _uri;
    constructor(string memory uri_) {
        _setURI(uri_);
    }
    function supportsInterface(bytes4 interfaceId) public view virtual override(ERC165, IERC165) returns (bool) {
        return
            interfaceId == type(IERC1155).interfaceId ||
            interfaceId == type(IERC1155MetadataURI).interfaceId ||
            super.supportsInterface(interfaceId);
    }
    function uri(uint256) public view virtual override returns (string memory) {
        return _uri;
    }
    function balanceOf(address account, uint256 id) public view virtual override returns (uint256) {
        require(account != address(0), "ERC1155: balance query for the zero address");
        return _balances[id][account];
    }
    function balanceOfBatch(address[] memory accounts, uint256[] memory ids)
        public
        view
        virtual
        override
        returns (uint256[] memory)
    {
        require(accounts.length == ids.length, "ERC1155: accounts and ids length mismatch");

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

        for (uint256 i = 0; i < accounts.length; ++i) {
            batchBalances[i] = balanceOf(accounts[i], ids[i]);
        }

        return batchBalances;
    }
    function setApprovalForAll(address operator, bool approved) public virtual override {
        _setApprovalForAll(_msgSender(), operator, approved);
    }
    function isApprovedForAll(address account, address operator) public view virtual override returns (bool) {
        return _operatorApprovals[account][operator];
    }
    function safeTransferFrom(
        address from,
        address to,
        uint256 id,
        uint256 amount,
        bytes memory data
    ) public virtual override {
        require(
            from == _msgSender() || isApprovedForAll(from, _msgSender()),
            "ERC1155: caller is not owner nor approved"
        );
        _safeTransferFrom(from, to, id, amount, data);
    }
    function safeBatchTransferFrom(
        address from,
        address to,
        uint256[] memory ids,
        uint256[] memory amounts,
        bytes memory data
    ) public virtual override {
        require(
            from == _msgSender() || isApprovedForAll(from, _msgSender()),
            "ERC1155: transfer caller is not owner nor approved"
        );
        _safeBatchTransferFrom(from, to, ids, amounts, data);
    }
    function _safeTransferFrom(
        address from,
        address to,
        uint256 id,
        uint256 amount,
        bytes memory data
    ) internal virtual {
        require(to != address(0), "ERC1155: transfer to the zero address");

        address operator = _msgSender();

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

        uint256 fromBalance = _balances[id][from];
        require(fromBalance >= amount, "ERC1155: insufficient balance for transfer");
        unchecked {
            _balances[id][from] = fromBalance - amount;
        }
        _balances[id][to] += amount;

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

        _doSafeTransferAcceptanceCheck(operator, from, to, id, amount, data);
    }
    function _safeBatchTransferFrom(
        address from,
        address to,
        uint256[] memory ids,
        uint256[] memory amounts,
        bytes memory data
    ) internal virtual {
        require(ids.length == amounts.length, "ERC1155: ids and amounts length mismatch");
        require(to != address(0), "ERC1155: transfer to the zero address");

        address operator = _msgSender();

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

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

            uint256 fromBalance = _balances[id][from];
            require(fromBalance >= amount, "ERC1155: insufficient balance for transfer");
            unchecked {
                _balances[id][from] = fromBalance - amount;
            }
            _balances[id][to] += amount;
        }

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

        _doSafeBatchTransferAcceptanceCheck(operator, from, to, ids, amounts, data);
    }
    function _setURI(string memory newuri) internal virtual {
        _uri = newuri;
    }
    function _mint(
        address to,
        uint256 id,
        uint256 amount,
        bytes memory data
    ) internal virtual {
        require(to != address(0), "ERC1155: mint to the zero address");

        address operator = _msgSender();

        _beforeTokenTransfer(operator, address(0), to, _asSingletonArray(id), _asSingletonArray(amount), data);

        _balances[id][to] += amount;
        emit TransferSingle(operator, address(0), to, id, amount);

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

        address operator = _msgSender();

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

        for (uint256 i = 0; i < ids.length; i++) {
            _balances[ids[i]][to] += amounts[i];
        }

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

        _doSafeBatchTransferAcceptanceCheck(operator, address(0), to, ids, amounts, data);
    }
    function _burn(
        address from,
        uint256 id,
        uint256 amount
    ) internal virtual {
        require(from != address(0), "ERC1155: burn from the zero address");

        address operator = _msgSender();

        _beforeTokenTransfer(operator, from, address(0), _asSingletonArray(id), _asSingletonArray(amount), "");

        uint256 fromBalance = _balances[id][from];
        require(fromBalance >= amount, "ERC1155: burn amount exceeds balance");
        unchecked {
            _balances[id][from] = fromBalance - amount;
        }

        emit TransferSingle(operator, from, address(0), id, amount);
    }
    function _burnBatch(
        address from,
        uint256[] memory ids,
        uint256[] memory amounts
    ) internal virtual {
        require(from != address(0), "ERC1155: burn from the zero address");
        require(ids.length == amounts.length, "ERC1155: ids and amounts length mismatch");

        address operator = _msgSender();

        _beforeTokenTransfer(operator, from, address(0), ids, amounts, "");

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

            uint256 fromBalance = _balances[id][from];
            require(fromBalance >= amount, "ERC1155: burn amount exceeds balance");
            unchecked {
                _balances[id][from] = fromBalance - amount;
            }
        }

        emit TransferBatch(operator, from, address(0), ids, amounts);
    }
    function _setApprovalForAll(
        address owner,
        address operator,
        bool approved
    ) internal virtual {
        require(owner != operator, "ERC1155: setting approval status for self");
        _operatorApprovals[owner][operator] = approved;
        emit ApprovalForAll(owner, operator, approved);
    }
    function _beforeTokenTransfer(
        address operator,
        address from,
        address to,
        uint256[] memory ids,
        uint256[] memory amounts,
        bytes memory data
    ) internal virtual {}

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

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

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

        return array;
    }
}

pragma solidity ^0.8.0;
abstract contract ERC1155Supply is ERC1155 {
    mapping(uint256 => uint256) private _totalSupply;
    function totalSupply(uint256 id) public view virtual returns (uint256) {
        return _totalSupply[id];
    }
    function exists(uint256 id) public view virtual returns (bool) {
        return ERC1155Supply.totalSupply(id) > 0;
    }
    function _beforeTokenTransfer(
        address operator,
        address from,
        address to,
        uint256[] memory ids,
        uint256[] memory amounts,
        bytes memory data
    ) internal virtual override {
        super._beforeTokenTransfer(operator, from, to, ids, amounts, data);

        if (from == address(0)) {
            for (uint256 i = 0; i < ids.length; ++i) {
                _totalSupply[ids[i]] += amounts[i];
            }
        }

        if (to == address(0)) {
            for (uint256 i = 0; i < ids.length; ++i) {
                _totalSupply[ids[i]] -= amounts[i];
            }
        }
    }
}

pragma solidity ^0.8.0;
abstract contract Ownable is Context {
    address private _owner;

    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);
    constructor() {
        _transferOwnership(_msgSender());
    }
    function owner() public view virtual returns (address) {
        return _owner;
    }
    modifier onlyOwner() {
        require(owner() == _msgSender(), "Ownable: caller is not the owner");
        _;
    }
    function renounceOwnership() public virtual onlyOwner {
        _transferOwnership(address(0));
    }
    function transferOwnership(address newOwner) public virtual onlyOwner {
        require(newOwner != address(0), "Ownable: new owner is the zero address");
        _transferOwnership(newOwner);
    }
    function _transferOwnership(address newOwner) internal virtual {
        address oldOwner = _owner;
        _owner = newOwner;
        emit OwnershipTransferred(oldOwner, newOwner);
    }
}

pragma solidity ^0.8.0;
library Strings {
    bytes16 private constant _HEX_SYMBOLS = "0123456789abcdef";
    function toString(uint256 value) internal pure returns (string memory) {
        if (value == 0) {
            return "0";
        }
        uint256 temp = value;
        uint256 digits;
        while (temp != 0) {
            digits++;
            temp /= 10;
        }
        bytes memory buffer = new bytes(digits);
        while (value != 0) {
            digits -= 1;
            buffer[digits] = bytes1(uint8(48 + uint256(value % 10)));
            value /= 10;
        }
        return string(buffer);
    }
    function toHexString(uint256 value) internal pure returns (string memory) {
        if (value == 0) {
            return "0x00";
        }
        uint256 temp = value;
        uint256 length = 0;
        while (temp != 0) {
            length++;
            temp >>= 8;
        }
        return toHexString(value, length);
    }
    function toHexString(uint256 value, uint256 length) internal pure returns (string memory) {
        bytes memory buffer = new bytes(2 * length + 2);
        buffer[0] = "0";
        buffer[1] = "x";
        for (uint256 i = 2 * length + 1; i > 1; --i) {
            buffer[i] = _HEX_SYMBOLS[value & 0xf];
            value >>= 4;
        }
        require(value == 0, "Strings: hex length insufficient");
        return string(buffer);
    }
}

pragma solidity ^0.8.0;
abstract contract TrollTown {
    function balanceOf(address account) public view virtual returns (uint256);
    function tokenOfOwnerByIndex(address owner, uint256 index) public view virtual returns (uint256);
}

contract TrollTownElixir is ERC1155, Ownable {

    using Strings for uint256;
    string  public name;
    string  public symbol;
    TrollTown public trolltown;
    bool public claim = false;
    bool public makeElixir = false;
    address public mutationContract;
    string private baseURI;
    mapping(address => bool) public isClaimed;
    mapping(uint256 => bool) public validElixirTypes;

    bytes32 public merkleRoots;

    constructor(
        string memory _name,
        string memory _symbol,
        string memory _baseURI, 
        address _trollAddress,
        address _mutationContract
        ) ERC1155(_baseURI) {
        baseURI = _baseURI;
        name = _name;
        symbol = _symbol;
        validElixirTypes[0] = true;
        validElixirTypes[1] = true;
        trolltown = TrollTown(_trollAddress);
        mutationContract = _mutationContract;
    }

    function uri(uint256 typeId) public view override returns (string memory) {
        require(validElixirTypes[typeId], "URI requested for invalid serum type");
        return bytes(baseURI).length > 0 ? string(abi.encodePacked(baseURI, typeId.toString())) : baseURI;
    }

    function _leafFromAddressAndNumTokens(address _a, uint256 _n) private pure returns (bytes32){
        return keccak256(abi.encodePacked(_a, _n));
    }
    
    function _checkProof(bytes32[] calldata proof, bytes32 _hash) private view returns (bool) {
        bytes32 el;
        bytes32 h = _hash;
        for (uint256 i = 0; i < proof.length; i += 1) {
            el = proof[i];
            if (h < el) {
                h = keccak256(abi.encodePacked(h, el));
            } else {
                h = keccak256(abi.encodePacked(el, h));
            }
        }
        return h == merkleRoots;
    }

    function claimDrop(bytes32[] calldata _proof, uint256 _quantity) external {
        uint256 currentBal = trolltown.balanceOf(msg.sender);
        require(claim, "AIRDROP_NOT_YET_STARTED");
        require(isClaimed[msg.sender] != true, "CLAIMED_ALREADY");
        require(_quantity > 0, "INVALID_QUANTITY");
        require(_checkProof(_proof, _leafFromAddressAndNumTokens(msg.sender, _quantity)), "WRONG_PROOF");
        isClaimed[msg.sender] = true;
        if(currentBal >= _quantity){
            _mint(msg.sender, 0, _quantity, "");
        }else if(_quantity >= currentBal){
            _mint(msg.sender, 0, currentBal, "");
        }else{
            revert("NO_SWEEPING!");
        }
    }

    function makeSuperElixir(uint256 _quantity) external {
        require(makeElixir, "NOT_YET_STARTED");
        require(_quantity == 3, "THREE_TIER_1_REQUIRED_TO_MAKE_SUPER_ELIXIR");
        require(balanceOf(msg.sender, 0) >= 3, "YOU_DONT_HAVE_ENOUGH_ELIXIRS");
        _burn(msg.sender, 0, 3);
        _mint(msg.sender, 1, 1, "");
    }

    function burnElixirForAddress(uint256 typeId, address burnTokenAddress) external {
        require(msg.sender == mutationContract, "Invalid burner address");
        _burn(burnTokenAddress, typeId, 1);
    }

    function ownerMint(address _address, uint256 quantity, uint256 typeId) external onlyOwner {
        _mint(_address, typeId, quantity, "");
    }

    function ownerBurn(address _address, uint256 quantity, uint256 typeId) external onlyOwner {
        _burn(_address, typeId, quantity);
    }

    function setAirdropRoot(bytes32 _merkleRoot) external onlyOwner {
        merkleRoots = _merkleRoot;
    }

    function updateBaseUri(string memory _baseURI) external onlyOwner {
        baseURI = _baseURI;
    }

    function flipClaim() external onlyOwner {
        claim = !claim;
    }

    function flipMakeElixir() external onlyOwner {
        makeElixir = !makeElixir;
    }

    function setMutationContract(address mutationContractAddress) external onlyOwner {
        mutationContract = mutationContractAddress;
    }

    function setTrollTownContract(address trolltownContractAddress) external onlyOwner {
        trolltown = TrollTown(trolltownContractAddress);
    }

    function withdraw() external onlyOwner {
        payable(msg.sender).transfer(address(this).balance);
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"string","name":"_name","type":"string"},{"internalType":"string","name":"_symbol","type":"string"},{"internalType":"string","name":"_baseURI","type":"string"},{"internalType":"address","name":"_trollAddress","type":"address"},{"internalType":"address","name":"_mutationContract","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":true,"internalType":"address","name":"operator","type":"address"},{"indexed":false,"internalType":"bool","name":"approved","type":"bool"}],"name":"ApprovalForAll","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"operator","type":"address"},{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256[]","name":"ids","type":"uint256[]"},{"indexed":false,"internalType":"uint256[]","name":"values","type":"uint256[]"}],"name":"TransferBatch","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"operator","type":"address"},{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"id","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"TransferSingle","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"string","name":"value","type":"string"},{"indexed":true,"internalType":"uint256","name":"id","type":"uint256"}],"name":"URI","type":"event"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"id","type":"uint256"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"},{"internalType":"uint256[]","name":"ids","type":"uint256[]"}],"name":"balanceOfBatch","outputs":[{"internalType":"uint256[]","name":"","type":"uint256[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"typeId","type":"uint256"},{"internalType":"address","name":"burnTokenAddress","type":"address"}],"name":"burnElixirForAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"claim","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32[]","name":"_proof","type":"bytes32[]"},{"internalType":"uint256","name":"_quantity","type":"uint256"}],"name":"claimDrop","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"flipClaim","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"flipMakeElixir","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"address","name":"operator","type":"address"}],"name":"isApprovedForAll","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isClaimed","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"makeElixir","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_quantity","type":"uint256"}],"name":"makeSuperElixir","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"merkleRoots","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"mutationContract","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"},{"internalType":"uint256","name":"quantity","type":"uint256"},{"internalType":"uint256","name":"typeId","type":"uint256"}],"name":"ownerBurn","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"},{"internalType":"uint256","name":"quantity","type":"uint256"},{"internalType":"uint256","name":"typeId","type":"uint256"}],"name":"ownerMint","outputs":[],"stateMutability":"nonpayable","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":"ids","type":"uint256[]"},{"internalType":"uint256[]","name":"amounts","type":"uint256[]"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"safeBatchTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"id","type":"uint256"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"safeTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"_merkleRoot","type":"bytes32"}],"name":"setAirdropRoot","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":"address","name":"mutationContractAddress","type":"address"}],"name":"setMutationContract","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"trolltownContractAddress","type":"address"}],"name":"setTrollTownContract","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"trolltown","outputs":[{"internalType":"contract TrollTown","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"string","name":"_baseURI","type":"string"}],"name":"updateBaseUri","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"typeId","type":"uint256"}],"name":"uri","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"validElixirTypes","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"withdraw","outputs":[],"stateMutability":"nonpayable","type":"function"}]

60806040526000600660146101000a81548160ff0219169083151502179055506000600660156101000a81548160ff0219169083151502179055503480156200004757600080fd5b50604051620054a5380380620054a583398181016040528101906200006d9190620003f4565b826200007f81620001d160201b60201c565b50620000a062000094620001ed60201b60201c565b620001f560201b60201c565b8260089080519060200190620000b8929190620002bb565b508460049080519060200190620000d1929190620002bb565b508360059080519060200190620000ea929190620002bb565b506001600a600080815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600a60006001815260200190815260200160002060006101000a81548160ff02191690831515021790555081600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050505050506200067f565b8060029080519060200190620001e9929190620002bb565b5050565b600033905090565b6000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b828054620002c9906200058a565b90600052602060002090601f016020900481019282620002ed576000855562000339565b82601f106200030857805160ff191683800117855562000339565b8280016001018555821562000339579182015b82811115620003385782518255916020019190600101906200031b565b5b5090506200034891906200034c565b5090565b5b80821115620003675760008160009055506001016200034d565b5090565b6000620003826200037c84620004ea565b620004c1565b9050828152602081018484840111156200039b57600080fd5b620003a884828562000554565b509392505050565b600081519050620003c18162000665565b92915050565b600082601f830112620003d957600080fd5b8151620003eb8482602086016200036b565b91505092915050565b600080600080600060a086880312156200040d57600080fd5b600086015167ffffffffffffffff8111156200042857600080fd5b6200043688828901620003c7565b955050602086015167ffffffffffffffff8111156200045457600080fd5b6200046288828901620003c7565b945050604086015167ffffffffffffffff8111156200048057600080fd5b6200048e88828901620003c7565b9350506060620004a188828901620003b0565b9250506080620004b488828901620003b0565b9150509295509295909350565b6000620004cd620004e0565b9050620004db8282620005c0565b919050565b6000604051905090565b600067ffffffffffffffff82111562000508576200050762000625565b5b620005138262000654565b9050602081019050919050565b60006200052d8262000534565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60005b838110156200057457808201518184015260208101905062000557565b8381111562000584576000848401525b50505050565b60006002820490506001821680620005a357607f821691505b60208210811415620005ba57620005b9620005f6565b5b50919050565b620005cb8262000654565b810181811067ffffffffffffffff82111715620005ed57620005ec62000625565b5b80604052505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000601f19601f8301169050919050565b620006708162000520565b81146200067c57600080fd5b50565b614e16806200068f6000396000f3fe608060405234801561001057600080fd5b50600436106101ef5760003560e01c80635e0bd4ee1161010f5780639d9e7a99116100a2578063df38f49111610071578063df38f49114610544578063e985e9c514610560578063f242432a14610590578063f2fde38b146105ac576101ef565b80639d9e7a99146104be578063a14a4887146104da578063a22cb4651461050a578063d33cd1a114610526576101ef565b80638a55d6ad116100de5780638a55d6ad146104365780638cc08025146104525780638da5cb5b1461048257806395d89b41146104a0576101ef565b80635e0bd4ee146103ea5780635f480e9a146103f457806370ce8eea14610410578063715018a61461042c576101ef565b806339f7e37f1161018757806348f5bcb31161015657806348f5bcb3146103645780634e1273f4146103805780634e71d92d146103b057806350f853ce146103ce576101ef565b806339f7e37f146103165780633ccfd60b14610332578063468f9e6a1461033c57806347cbcf641461035a576101ef565b80630e89341c116101c35780630e89341c146102905780632730fda3146102c05780632eb2c2d6146102de578063388b9fe0146102fa576101ef565b8062fdd58e146101f457806301ffc9a71461022457806306fdde03146102545780630ad6fd0f14610272575b600080fd5b61020e60048036038101906102099190613385565b6105c8565b60405161021b9190614105565b60405180910390f35b61023e600480360381019061023991906134fd565b610691565b60405161024b9190613d72565b60405180910390f35b61025c610773565b6040516102699190613dc3565b60405180910390f35b61027a610801565b6040516102879190613d72565b60405180910390f35b6102aa60048036038101906102a59190613590565b610814565b6040516102b79190613dc3565b60405180910390f35b6102c861094f565b6040516102d59190613d8d565b60405180910390f35b6102f860048036038101906102f391906131fb565b610955565b005b610314600480360381019061030f91906133c1565b6109f6565b005b610330600480360381019061032b919061354f565b610a92565b005b61033a610b28565b005b610344610bed565b6040516103519190613da8565b60405180910390f35b610362610c13565b005b61037e60048036038101906103799190613196565b610cbb565b005b61039a60048036038101906103959190613410565b610d7b565b6040516103a79190613d19565b60405180910390f35b6103b8610f2c565b6040516103c59190613d72565b60405180910390f35b6103e860048036038101906103e39190613590565b610f3f565b005b6103f261104b565b005b61040e600480360381019061040991906135e2565b6110f3565b005b61042a600480360381019061042591906133c1565b611193565b005b61043461121f565b005b610450600480360381019061044b919061347c565b6112a7565b005b61046c60048036038101906104679190613196565b6115b9565b6040516104799190613d72565b60405180910390f35b61048a6115d9565b6040516104979190613c3c565b60405180910390f35b6104a8611603565b6040516104b59190613dc3565b60405180910390f35b6104d860048036038101906104d391906134d4565b611691565b005b6104f460048036038101906104ef9190613590565b611717565b6040516105019190613d72565b60405180910390f35b610524600480360381019061051f9190613349565b611737565b005b61052e61174d565b60405161053b9190613c3c565b60405180910390f35b61055e60048036038101906105599190613196565b611773565b005b61057a600480360381019061057591906131bf565b611833565b6040516105879190613d72565b60405180910390f35b6105aa60048036038101906105a591906132ba565b6118c7565b005b6105c660048036038101906105c19190613196565b611968565b005b60008073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610639576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161063090613e45565b60405180910390fd5b60008083815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60007fd9b67a26000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061075c57507f0e89341c000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b8061076c575061076b82611a60565b5b9050919050565b6004805461078090614458565b80601f01602080910402602001604051908101604052809291908181526020018280546107ac90614458565b80156107f95780601f106107ce576101008083540402835291602001916107f9565b820191906000526020600020905b8154815290600101906020018083116107dc57829003601f168201915b505050505081565b600660159054906101000a900460ff1681565b6060600a600083815260200190815260200160002060009054906101000a900460ff16610876576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161086d90613e25565b60405180910390fd5b60006008805461088590614458565b90501161091c576008805461089990614458565b80601f01602080910402602001604051908101604052809291908181526020018280546108c590614458565b80156109125780601f106108e757610100808354040283529160200191610912565b820191906000526020600020905b8154815290600101906020018083116108f557829003601f168201915b5050505050610948565b600861092783611aca565b604051602001610938929190613c18565b6040516020818303038152906040525b9050919050565b600b5481565b61095d611c77565b73ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614806109a357506109a28561099d611c77565b611833565b5b6109e2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109d990613f65565b60405180910390fd5b6109ef8585858585611c7f565b5050505050565b6109fe611c77565b73ffffffffffffffffffffffffffffffffffffffff16610a1c6115d9565b73ffffffffffffffffffffffffffffffffffffffff1614610a72576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a6990614005565b60405180910390fd5b610a8d83828460405180602001604052806000815250611fdf565b505050565b610a9a611c77565b73ffffffffffffffffffffffffffffffffffffffff16610ab86115d9565b73ffffffffffffffffffffffffffffffffffffffff1614610b0e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b0590614005565b60405180910390fd5b8060089080519060200190610b24929190612e1a565b5050565b610b30611c77565b73ffffffffffffffffffffffffffffffffffffffff16610b4e6115d9565b73ffffffffffffffffffffffffffffffffffffffff1614610ba4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b9b90614005565b60405180910390fd5b3373ffffffffffffffffffffffffffffffffffffffff166108fc479081150290604051600060405180830381858888f19350505050158015610bea573d6000803e3d6000fd5b50565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b610c1b611c77565b73ffffffffffffffffffffffffffffffffffffffff16610c396115d9565b73ffffffffffffffffffffffffffffffffffffffff1614610c8f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c8690614005565b60405180910390fd5b600660159054906101000a900460ff1615600660156101000a81548160ff021916908315150217905550565b610cc3611c77565b73ffffffffffffffffffffffffffffffffffffffff16610ce16115d9565b73ffffffffffffffffffffffffffffffffffffffff1614610d37576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d2e90614005565b60405180910390fd5b80600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60608151835114610dc1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610db890614065565b60405180910390fd5b6000835167ffffffffffffffff811115610e04577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051908082528060200260200182016040528015610e325781602001602082028036833780820191505090505b50905060005b8451811015610f2157610ecb858281518110610e7d577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6020026020010151858381518110610ebe577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60200260200101516105c8565b828281518110610f04577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60200260200101818152505080610f1a906144bb565b9050610e38565b508091505092915050565b600660149054906101000a900460ff1681565b600660159054906101000a900460ff16610f8e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f8590613ea5565b60405180910390fd5b60038114610fd1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fc890613f25565b60405180910390fd5b6003610fde3360006105c8565b101561101f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161101690613fe5565b60405180910390fd5b61102c3360006003612175565b6110483360018060405180602001604052806000815250611fdf565b50565b611053611c77565b73ffffffffffffffffffffffffffffffffffffffff166110716115d9565b73ffffffffffffffffffffffffffffffffffffffff16146110c7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110be90614005565b60405180910390fd5b600660149054906101000a900460ff1615600660146101000a81548160ff021916908315150217905550565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611183576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161117a90614085565b60405180910390fd5b61118f81836001612175565b5050565b61119b611c77565b73ffffffffffffffffffffffffffffffffffffffff166111b96115d9565b73ffffffffffffffffffffffffffffffffffffffff161461120f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161120690614005565b60405180910390fd5b61121a838284612175565b505050565b611227611c77565b73ffffffffffffffffffffffffffffffffffffffff166112456115d9565b73ffffffffffffffffffffffffffffffffffffffff161461129b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161129290614005565b60405180910390fd5b6112a56000612392565b565b6000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231336040518263ffffffff1660e01b81526004016113049190613c3c565b60206040518083038186803b15801561131c57600080fd5b505afa158015611330573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061135491906135b9565b9050600660149054906101000a900460ff166113a5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161139c90613f05565b60405180910390fd5b60011515600960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615151415611439576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161143090614025565b60405180910390fd5b6000821161147c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611473906140a5565b60405180910390fd5b611490848461148b3386612458565b61248b565b6114cf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114c690613f85565b60405180910390fd5b6001600960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555081811061154f5761154a3360008460405180602001604052806000815250611fdf565b6115b3565b808210611577576115723360008360405180602001604052806000815250611fdf565b6115b2565b6040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115a990613ec5565b60405180910390fd5b5b50505050565b60096020528060005260406000206000915054906101000a900460ff1681565b6000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6005805461161090614458565b80601f016020809104026020016040519081016040528092919081815260200182805461163c90614458565b80156116895780601f1061165e57610100808354040283529160200191611689565b820191906000526020600020905b81548152906001019060200180831161166c57829003601f168201915b505050505081565b611699611c77565b73ffffffffffffffffffffffffffffffffffffffff166116b76115d9565b73ffffffffffffffffffffffffffffffffffffffff161461170d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161170490614005565b60405180910390fd5b80600b8190555050565b600a6020528060005260406000206000915054906101000a900460ff1681565b611749611742611c77565b838361256c565b5050565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b61177b611c77565b73ffffffffffffffffffffffffffffffffffffffff166117996115d9565b73ffffffffffffffffffffffffffffffffffffffff16146117ef576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117e690614005565b60405180910390fd5b80600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b6118cf611c77565b73ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16148061191557506119148561190f611c77565b611833565b5b611954576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161194b90613ee5565b60405180910390fd5b61196185858585856126d9565b5050505050565b611970611c77565b73ffffffffffffffffffffffffffffffffffffffff1661198e6115d9565b73ffffffffffffffffffffffffffffffffffffffff16146119e4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119db90614005565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611a54576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a4b90613e65565b60405180910390fd5b611a5d81612392565b50565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b60606000821415611b12576040518060400160405280600181526020017f30000000000000000000000000000000000000000000000000000000000000008152509050611c72565b600082905060005b60008214611b44578080611b2d906144bb565b915050600a82611b3d919061430f565b9150611b1a565b60008167ffffffffffffffff811115611b86577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040519080825280601f01601f191660200182016040528015611bb85781602001600182028036833780820191505090505b5090505b60008514611c6b57600182611bd19190614340565b9150600a85611be0919061453c565b6030611bec91906142b9565b60f81b818381518110611c28577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600a85611c64919061430f565b9450611bbc565b8093505050505b919050565b600033905090565b8151835114611cc3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cba906140c5565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415611d33576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d2a90613f45565b60405180910390fd5b6000611d3d611c77565b9050611d4d81878787878761295b565b60005b8451811015611f4a576000858281518110611d94577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001015190506000858381518110611dd9577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60200260200101519050600080600084815260200190815260200160002060008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015611e7a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e7190613fc5565b60405180910390fd5b81810360008085815260200190815260200160002060008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508160008085815260200190815260200160002060008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254611f2f91906142b9565b9250508190555050505080611f43906144bb565b9050611d50565b508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb8787604051611fc1929190613d3b565b60405180910390a4611fd7818787878787612963565b505050505050565b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16141561204f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612046906140e5565b60405180910390fd5b6000612059611c77565b905061207a8160008761206b88612b4a565b61207488612b4a565b8761295b565b8260008086815260200190815260200160002060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546120d991906142b9565b925050819055508473ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f628787604051612157929190614120565b60405180910390a461216e81600087878787612c10565b5050505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156121e5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121dc90613fa5565b60405180910390fd5b60006121ef611c77565b905061221f8185600061220187612b4a565b61220a87612b4a565b6040518060200160405280600081525061295b565b600080600085815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050828110156122b6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122ad90613e85565b60405180910390fd5b82810360008086815260200190815260200160002060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f628787604051612383929190614120565b60405180910390a45050505050565b6000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b6000828260405160200161246d929190613bc0565b60405160208183030381529060405280519060200120905092915050565b600080600083905060005b8686905081101561255b578686828181106124da577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9050602002013592508282101561251b5781836040516020016124fe929190613bec565b604051602081830303815290604052805190602001209150612547565b828260405160200161252e929190613bec565b6040516020818303038152906040528051906020012091505b60018161255491906142b9565b9050612496565b50600b548114925050509392505050565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156125db576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125d290614045565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31836040516126cc9190613d72565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415612749576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161274090613f45565b60405180910390fd5b6000612753611c77565b905061277381878761276488612b4a565b61276d88612b4a565b8761295b565b600080600086815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490508381101561280a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161280190613fc5565b60405180910390fd5b83810360008087815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508360008087815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546128bf91906142b9565b925050819055508573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f62888860405161293c929190614120565b60405180910390a4612952828888888888612c10565b50505050505050565b505050505050565b6129828473ffffffffffffffffffffffffffffffffffffffff16612df7565b15612b42578373ffffffffffffffffffffffffffffffffffffffff1663bc197c8187878686866040518663ffffffff1660e01b81526004016129c8959493929190613c57565b602060405180830381600087803b1580156129e257600080fd5b505af1925050508015612a1357506040513d601f19601f82011682018060405250810190612a109190613526565b60015b612ab957612a1f614629565b806308c379a01415612a7c5750612a34614cd7565b80612a3f5750612a7e565b806040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a739190613dc3565b60405180910390fd5b505b6040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ab090613de5565b60405180910390fd5b63bc197c8160e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614612b40576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b3790613e05565b60405180910390fd5b505b505050505050565b60606000600167ffffffffffffffff811115612b8f577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051908082528060200260200182016040528015612bbd5781602001602082028036833780820191505090505b5090508281600081518110612bfb577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60200260200101818152505080915050919050565b612c2f8473ffffffffffffffffffffffffffffffffffffffff16612df7565b15612def578373ffffffffffffffffffffffffffffffffffffffff1663f23a6e6187878686866040518663ffffffff1660e01b8152600401612c75959493929190613cbf565b602060405180830381600087803b158015612c8f57600080fd5b505af1925050508015612cc057506040513d601f19601f82011682018060405250810190612cbd9190613526565b60015b612d6657612ccc614629565b806308c379a01415612d295750612ce1614cd7565b80612cec5750612d2b565b806040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d209190613dc3565b60405180910390fd5b505b6040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d5d90613de5565b60405180910390fd5b63f23a6e6160e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614612ded576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612de490613e05565b60405180910390fd5b505b505050505050565b6000808273ffffffffffffffffffffffffffffffffffffffff163b119050919050565b828054612e2690614458565b90600052602060002090601f016020900481019282612e485760008555612e8f565b82601f10612e6157805160ff1916838001178555612e8f565b82800160010185558215612e8f579182015b82811115612e8e578251825591602001919060010190612e73565b5b509050612e9c9190612ea0565b5090565b5b80821115612eb9576000816000905550600101612ea1565b5090565b6000612ed0612ecb8461416e565b614149565b90508083825260208201905082856020860282011115612eef57600080fd5b60005b85811015612f1f5781612f058882613011565b845260208401935060208301925050600181019050612ef2565b5050509392505050565b6000612f3c612f378461419a565b614149565b90508083825260208201905082856020860282011115612f5b57600080fd5b60005b85811015612f8b5781612f71888261316c565b845260208401935060208301925050600181019050612f5e565b5050509392505050565b6000612fa8612fa3846141c6565b614149565b905082815260208101848484011115612fc057600080fd5b612fcb848285614416565b509392505050565b6000612fe6612fe1846141f7565b614149565b905082815260208101848484011115612ffe57600080fd5b613009848285614416565b509392505050565b60008135905061302081614d6d565b92915050565b600082601f83011261303757600080fd5b8135613047848260208601612ebd565b91505092915050565b60008083601f84011261306257600080fd5b8235905067ffffffffffffffff81111561307b57600080fd5b60208301915083602082028301111561309357600080fd5b9250929050565b600082601f8301126130ab57600080fd5b81356130bb848260208601612f29565b91505092915050565b6000813590506130d381614d84565b92915050565b6000813590506130e881614d9b565b92915050565b6000813590506130fd81614db2565b92915050565b60008151905061311281614db2565b92915050565b600082601f83011261312957600080fd5b8135613139848260208601612f95565b91505092915050565b600082601f83011261315357600080fd5b8135613163848260208601612fd3565b91505092915050565b60008135905061317b81614dc9565b92915050565b60008151905061319081614dc9565b92915050565b6000602082840312156131a857600080fd5b60006131b684828501613011565b91505092915050565b600080604083850312156131d257600080fd5b60006131e085828601613011565b92505060206131f185828601613011565b9150509250929050565b600080600080600060a0868803121561321357600080fd5b600061322188828901613011565b955050602061323288828901613011565b945050604086013567ffffffffffffffff81111561324f57600080fd5b61325b8882890161309a565b935050606086013567ffffffffffffffff81111561327857600080fd5b6132848882890161309a565b925050608086013567ffffffffffffffff8111156132a157600080fd5b6132ad88828901613118565b9150509295509295909350565b600080600080600060a086880312156132d257600080fd5b60006132e088828901613011565b95505060206132f188828901613011565b94505060406133028882890161316c565b93505060606133138882890161316c565b925050608086013567ffffffffffffffff81111561333057600080fd5b61333c88828901613118565b9150509295509295909350565b6000806040838503121561335c57600080fd5b600061336a85828601613011565b925050602061337b858286016130c4565b9150509250929050565b6000806040838503121561339857600080fd5b60006133a685828601613011565b92505060206133b78582860161316c565b9150509250929050565b6000806000606084860312156133d657600080fd5b60006133e486828701613011565b93505060206133f58682870161316c565b92505060406134068682870161316c565b9150509250925092565b6000806040838503121561342357600080fd5b600083013567ffffffffffffffff81111561343d57600080fd5b61344985828601613026565b925050602083013567ffffffffffffffff81111561346657600080fd5b6134728582860161309a565b9150509250929050565b60008060006040848603121561349157600080fd5b600084013567ffffffffffffffff8111156134ab57600080fd5b6134b786828701613050565b935093505060206134ca8682870161316c565b9150509250925092565b6000602082840312156134e657600080fd5b60006134f4848285016130d9565b91505092915050565b60006020828403121561350f57600080fd5b600061351d848285016130ee565b91505092915050565b60006020828403121561353857600080fd5b600061354684828501613103565b91505092915050565b60006020828403121561356157600080fd5b600082013567ffffffffffffffff81111561357b57600080fd5b61358784828501613142565b91505092915050565b6000602082840312156135a257600080fd5b60006135b08482850161316c565b91505092915050565b6000602082840312156135cb57600080fd5b60006135d984828501613181565b91505092915050565b600080604083850312156135f557600080fd5b60006136038582860161316c565b925050602061361485828601613011565b9150509250929050565b600061362a8383613b8b565b60208301905092915050565b61363f81614374565b82525050565b61365661365182614374565b614504565b82525050565b60006136678261424d565b613671818561427b565b935061367c83614228565b8060005b838110156136ad578151613694888261361e565b975061369f8361426e565b925050600181019050613680565b5085935050505092915050565b6136c381614386565b82525050565b6136d281614392565b82525050565b6136e96136e482614392565b614516565b82525050565b60006136fa82614258565b613704818561428c565b9350613714818560208601614425565b61371d8161464b565b840191505092915050565b613731816143f2565b82525050565b600061374282614263565b61374c818561429d565b935061375c818560208601614425565b6137658161464b565b840191505092915050565b600061377b82614263565b61378581856142ae565b9350613795818560208601614425565b80840191505092915050565b600081546137ae81614458565b6137b881866142ae565b945060018216600081146137d357600181146137e457613817565b60ff19831686528186019350613817565b6137ed85614238565b60005b8381101561380f578154818901526001820191506020810190506137f0565b838801955050505b50505092915050565b600061382d60348361429d565b915061383882614676565b604082019050919050565b600061385060288361429d565b915061385b826146c5565b604082019050919050565b600061387360248361429d565b915061387e82614714565b604082019050919050565b6000613896602b8361429d565b91506138a182614763565b604082019050919050565b60006138b960268361429d565b91506138c4826147b2565b604082019050919050565b60006138dc60248361429d565b91506138e782614801565b604082019050919050565b60006138ff600f8361429d565b915061390a82614850565b602082019050919050565b6000613922600c8361429d565b915061392d82614879565b602082019050919050565b600061394560298361429d565b9150613950826148a2565b604082019050919050565b600061396860178361429d565b9150613973826148f1565b602082019050919050565b600061398b602a8361429d565b91506139968261491a565b604082019050919050565b60006139ae60258361429d565b91506139b982614969565b604082019050919050565b60006139d160328361429d565b91506139dc826149b8565b604082019050919050565b60006139f4600b8361429d565b91506139ff82614a07565b602082019050919050565b6000613a1760238361429d565b9150613a2282614a30565b604082019050919050565b6000613a3a602a8361429d565b9150613a4582614a7f565b604082019050919050565b6000613a5d601c8361429d565b9150613a6882614ace565b602082019050919050565b6000613a8060208361429d565b9150613a8b82614af7565b602082019050919050565b6000613aa3600f8361429d565b9150613aae82614b20565b602082019050919050565b6000613ac660298361429d565b9150613ad182614b49565b604082019050919050565b6000613ae960298361429d565b9150613af482614b98565b604082019050919050565b6000613b0c60168361429d565b9150613b1782614be7565b602082019050919050565b6000613b2f60108361429d565b9150613b3a82614c10565b602082019050919050565b6000613b5260288361429d565b9150613b5d82614c39565b604082019050919050565b6000613b7560218361429d565b9150613b8082614c88565b604082019050919050565b613b94816143e8565b82525050565b613ba3816143e8565b82525050565b613bba613bb5826143e8565b614532565b82525050565b6000613bcc8285613645565b601482019150613bdc8284613ba9565b6020820191508190509392505050565b6000613bf882856136d8565b602082019150613c0882846136d8565b6020820191508190509392505050565b6000613c2482856137a1565b9150613c308284613770565b91508190509392505050565b6000602082019050613c516000830184613636565b92915050565b600060a082019050613c6c6000830188613636565b613c796020830187613636565b8181036040830152613c8b818661365c565b90508181036060830152613c9f818561365c565b90508181036080830152613cb381846136ef565b90509695505050505050565b600060a082019050613cd46000830188613636565b613ce16020830187613636565b613cee6040830186613b9a565b613cfb6060830185613b9a565b8181036080830152613d0d81846136ef565b90509695505050505050565b60006020820190508181036000830152613d33818461365c565b905092915050565b60006040820190508181036000830152613d55818561365c565b90508181036020830152613d69818461365c565b90509392505050565b6000602082019050613d8760008301846136ba565b92915050565b6000602082019050613da260008301846136c9565b92915050565b6000602082019050613dbd6000830184613728565b92915050565b60006020820190508181036000830152613ddd8184613737565b905092915050565b60006020820190508181036000830152613dfe81613820565b9050919050565b60006020820190508181036000830152613e1e81613843565b9050919050565b60006020820190508181036000830152613e3e81613866565b9050919050565b60006020820190508181036000830152613e5e81613889565b9050919050565b60006020820190508181036000830152613e7e816138ac565b9050919050565b60006020820190508181036000830152613e9e816138cf565b9050919050565b60006020820190508181036000830152613ebe816138f2565b9050919050565b60006020820190508181036000830152613ede81613915565b9050919050565b60006020820190508181036000830152613efe81613938565b9050919050565b60006020820190508181036000830152613f1e8161395b565b9050919050565b60006020820190508181036000830152613f3e8161397e565b9050919050565b60006020820190508181036000830152613f5e816139a1565b9050919050565b60006020820190508181036000830152613f7e816139c4565b9050919050565b60006020820190508181036000830152613f9e816139e7565b9050919050565b60006020820190508181036000830152613fbe81613a0a565b9050919050565b60006020820190508181036000830152613fde81613a2d565b9050919050565b60006020820190508181036000830152613ffe81613a50565b9050919050565b6000602082019050818103600083015261401e81613a73565b9050919050565b6000602082019050818103600083015261403e81613a96565b9050919050565b6000602082019050818103600083015261405e81613ab9565b9050919050565b6000602082019050818103600083015261407e81613adc565b9050919050565b6000602082019050818103600083015261409e81613aff565b9050919050565b600060208201905081810360008301526140be81613b22565b9050919050565b600060208201905081810360008301526140de81613b45565b9050919050565b600060208201905081810360008301526140fe81613b68565b9050919050565b600060208201905061411a6000830184613b9a565b92915050565b60006040820190506141356000830185613b9a565b6141426020830184613b9a565b9392505050565b6000614153614164565b905061415f828261448a565b919050565b6000604051905090565b600067ffffffffffffffff821115614189576141886145fa565b5b602082029050602081019050919050565b600067ffffffffffffffff8211156141b5576141b46145fa565b5b602082029050602081019050919050565b600067ffffffffffffffff8211156141e1576141e06145fa565b5b6141ea8261464b565b9050602081019050919050565b600067ffffffffffffffff821115614212576142116145fa565b5b61421b8261464b565b9050602081019050919050565b6000819050602082019050919050565b60008190508160005260206000209050919050565b600081519050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600082825260208201905092915050565b600082825260208201905092915050565b600081905092915050565b60006142c4826143e8565b91506142cf836143e8565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156143045761430361456d565b5b828201905092915050565b600061431a826143e8565b9150614325836143e8565b9250826143355761433461459c565b5b828204905092915050565b600061434b826143e8565b9150614356836143e8565b9250828210156143695761436861456d565b5b828203905092915050565b600061437f826143c8565b9050919050565b60008115159050919050565b6000819050919050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b60006143fd82614404565b9050919050565b600061440f826143c8565b9050919050565b82818337600083830152505050565b60005b83811015614443578082015181840152602081019050614428565b83811115614452576000848401525b50505050565b6000600282049050600182168061447057607f821691505b60208210811415614484576144836145cb565b5b50919050565b6144938261464b565b810181811067ffffffffffffffff821117156144b2576144b16145fa565b5b80604052505050565b60006144c6826143e8565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8214156144f9576144f861456d565b5b600182019050919050565b600061450f82614520565b9050919050565b6000819050919050565b600061452b8261465c565b9050919050565b6000819050919050565b6000614547826143e8565b9150614552836143e8565b9250826145625761456161459c565b5b828206905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600060033d11156146485760046000803e614645600051614669565b90505b90565b6000601f19601f8301169050919050565b60008160601b9050919050565b60008160e01c9050919050565b7f455243313135353a207472616e7366657220746f206e6f6e204552433131353560008201527f526563656976657220696d706c656d656e746572000000000000000000000000602082015250565b7f455243313135353a204552433131353552656365697665722072656a6563746560008201527f6420746f6b656e73000000000000000000000000000000000000000000000000602082015250565b7f5552492072657175657374656420666f7220696e76616c696420736572756d2060008201527f7479706500000000000000000000000000000000000000000000000000000000602082015250565b7f455243313135353a2062616c616e636520717565727920666f7220746865207a60008201527f65726f2061646472657373000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f455243313135353a206275726e20616d6f756e7420657863656564732062616c60008201527f616e636500000000000000000000000000000000000000000000000000000000602082015250565b7f4e4f545f5945545f535441525445440000000000000000000000000000000000600082015250565b7f4e4f5f5357454550494e47210000000000000000000000000000000000000000600082015250565b7f455243313135353a2063616c6c6572206973206e6f74206f776e6572206e6f7260008201527f20617070726f7665640000000000000000000000000000000000000000000000602082015250565b7f41495244524f505f4e4f545f5945545f53544152544544000000000000000000600082015250565b7f54485245455f544945525f315f52455155495245445f544f5f4d414b455f535560008201527f5045525f454c4958495200000000000000000000000000000000000000000000602082015250565b7f455243313135353a207472616e7366657220746f20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b7f455243313135353a207472616e736665722063616c6c6572206973206e6f742060008201527f6f776e6572206e6f7220617070726f7665640000000000000000000000000000602082015250565b7f57524f4e475f50524f4f46000000000000000000000000000000000000000000600082015250565b7f455243313135353a206275726e2066726f6d20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b7f455243313135353a20696e73756666696369656e742062616c616e636520666f60008201527f72207472616e7366657200000000000000000000000000000000000000000000602082015250565b7f594f555f444f4e545f484156455f454e4f5547485f454c495849525300000000600082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f434c41494d45445f414c52454144590000000000000000000000000000000000600082015250565b7f455243313135353a2073657474696e6720617070726f76616c2073746174757360008201527f20666f722073656c660000000000000000000000000000000000000000000000602082015250565b7f455243313135353a206163636f756e747320616e6420696473206c656e67746860008201527f206d69736d617463680000000000000000000000000000000000000000000000602082015250565b7f496e76616c6964206275726e6572206164647265737300000000000000000000600082015250565b7f494e56414c49445f5155414e5449545900000000000000000000000000000000600082015250565b7f455243313135353a2069647320616e6420616d6f756e7473206c656e6774682060008201527f6d69736d61746368000000000000000000000000000000000000000000000000602082015250565b7f455243313135353a206d696e7420746f20746865207a65726f2061646472657360008201527f7300000000000000000000000000000000000000000000000000000000000000602082015250565b600060443d1015614ce757614d6a565b614cef614164565b60043d036004823e80513d602482011167ffffffffffffffff82111715614d17575050614d6a565b808201805167ffffffffffffffff811115614d355750505050614d6a565b80602083010160043d038501811115614d52575050505050614d6a565b614d618260200185018661448a565b82955050505050505b90565b614d7681614374565b8114614d8157600080fd5b50565b614d8d81614386565b8114614d9857600080fd5b50565b614da481614392565b8114614daf57600080fd5b50565b614dbb8161439c565b8114614dc657600080fd5b50565b614dd2816143e8565b8114614ddd57600080fd5b5056fea2646970667358221220354583cbc0e928e38d7127643611c1f7d0f3898b4ecbc25b1552ea709209b89464736f6c6343000804003300000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000e0000000000000000000000000000000000000000000000000000000000000012000000000000000000000000054616c0815c306fc22417b96282ca4aa6f47d35700000000000000000000000054616c0815c306fc22417b96282ca4aa6f47d357000000000000000000000000000000000000000000000000000000000000001d74726f6c6c2d746f776e2d6d75746174696f6e616c2d656c6978697273000000000000000000000000000000000000000000000000000000000000000000000454544d4500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001874726f6c6c2d746f776e2e7774662f6d657461646174612f0000000000000000

Deployed Bytecode

0x608060405234801561001057600080fd5b50600436106101ef5760003560e01c80635e0bd4ee1161010f5780639d9e7a99116100a2578063df38f49111610071578063df38f49114610544578063e985e9c514610560578063f242432a14610590578063f2fde38b146105ac576101ef565b80639d9e7a99146104be578063a14a4887146104da578063a22cb4651461050a578063d33cd1a114610526576101ef565b80638a55d6ad116100de5780638a55d6ad146104365780638cc08025146104525780638da5cb5b1461048257806395d89b41146104a0576101ef565b80635e0bd4ee146103ea5780635f480e9a146103f457806370ce8eea14610410578063715018a61461042c576101ef565b806339f7e37f1161018757806348f5bcb31161015657806348f5bcb3146103645780634e1273f4146103805780634e71d92d146103b057806350f853ce146103ce576101ef565b806339f7e37f146103165780633ccfd60b14610332578063468f9e6a1461033c57806347cbcf641461035a576101ef565b80630e89341c116101c35780630e89341c146102905780632730fda3146102c05780632eb2c2d6146102de578063388b9fe0146102fa576101ef565b8062fdd58e146101f457806301ffc9a71461022457806306fdde03146102545780630ad6fd0f14610272575b600080fd5b61020e60048036038101906102099190613385565b6105c8565b60405161021b9190614105565b60405180910390f35b61023e600480360381019061023991906134fd565b610691565b60405161024b9190613d72565b60405180910390f35b61025c610773565b6040516102699190613dc3565b60405180910390f35b61027a610801565b6040516102879190613d72565b60405180910390f35b6102aa60048036038101906102a59190613590565b610814565b6040516102b79190613dc3565b60405180910390f35b6102c861094f565b6040516102d59190613d8d565b60405180910390f35b6102f860048036038101906102f391906131fb565b610955565b005b610314600480360381019061030f91906133c1565b6109f6565b005b610330600480360381019061032b919061354f565b610a92565b005b61033a610b28565b005b610344610bed565b6040516103519190613da8565b60405180910390f35b610362610c13565b005b61037e60048036038101906103799190613196565b610cbb565b005b61039a60048036038101906103959190613410565b610d7b565b6040516103a79190613d19565b60405180910390f35b6103b8610f2c565b6040516103c59190613d72565b60405180910390f35b6103e860048036038101906103e39190613590565b610f3f565b005b6103f261104b565b005b61040e600480360381019061040991906135e2565b6110f3565b005b61042a600480360381019061042591906133c1565b611193565b005b61043461121f565b005b610450600480360381019061044b919061347c565b6112a7565b005b61046c60048036038101906104679190613196565b6115b9565b6040516104799190613d72565b60405180910390f35b61048a6115d9565b6040516104979190613c3c565b60405180910390f35b6104a8611603565b6040516104b59190613dc3565b60405180910390f35b6104d860048036038101906104d391906134d4565b611691565b005b6104f460048036038101906104ef9190613590565b611717565b6040516105019190613d72565b60405180910390f35b610524600480360381019061051f9190613349565b611737565b005b61052e61174d565b60405161053b9190613c3c565b60405180910390f35b61055e60048036038101906105599190613196565b611773565b005b61057a600480360381019061057591906131bf565b611833565b6040516105879190613d72565b60405180910390f35b6105aa60048036038101906105a591906132ba565b6118c7565b005b6105c660048036038101906105c19190613196565b611968565b005b60008073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610639576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161063090613e45565b60405180910390fd5b60008083815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60007fd9b67a26000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061075c57507f0e89341c000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b8061076c575061076b82611a60565b5b9050919050565b6004805461078090614458565b80601f01602080910402602001604051908101604052809291908181526020018280546107ac90614458565b80156107f95780601f106107ce576101008083540402835291602001916107f9565b820191906000526020600020905b8154815290600101906020018083116107dc57829003601f168201915b505050505081565b600660159054906101000a900460ff1681565b6060600a600083815260200190815260200160002060009054906101000a900460ff16610876576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161086d90613e25565b60405180910390fd5b60006008805461088590614458565b90501161091c576008805461089990614458565b80601f01602080910402602001604051908101604052809291908181526020018280546108c590614458565b80156109125780601f106108e757610100808354040283529160200191610912565b820191906000526020600020905b8154815290600101906020018083116108f557829003601f168201915b5050505050610948565b600861092783611aca565b604051602001610938929190613c18565b6040516020818303038152906040525b9050919050565b600b5481565b61095d611c77565b73ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614806109a357506109a28561099d611c77565b611833565b5b6109e2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109d990613f65565b60405180910390fd5b6109ef8585858585611c7f565b5050505050565b6109fe611c77565b73ffffffffffffffffffffffffffffffffffffffff16610a1c6115d9565b73ffffffffffffffffffffffffffffffffffffffff1614610a72576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a6990614005565b60405180910390fd5b610a8d83828460405180602001604052806000815250611fdf565b505050565b610a9a611c77565b73ffffffffffffffffffffffffffffffffffffffff16610ab86115d9565b73ffffffffffffffffffffffffffffffffffffffff1614610b0e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b0590614005565b60405180910390fd5b8060089080519060200190610b24929190612e1a565b5050565b610b30611c77565b73ffffffffffffffffffffffffffffffffffffffff16610b4e6115d9565b73ffffffffffffffffffffffffffffffffffffffff1614610ba4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b9b90614005565b60405180910390fd5b3373ffffffffffffffffffffffffffffffffffffffff166108fc479081150290604051600060405180830381858888f19350505050158015610bea573d6000803e3d6000fd5b50565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b610c1b611c77565b73ffffffffffffffffffffffffffffffffffffffff16610c396115d9565b73ffffffffffffffffffffffffffffffffffffffff1614610c8f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c8690614005565b60405180910390fd5b600660159054906101000a900460ff1615600660156101000a81548160ff021916908315150217905550565b610cc3611c77565b73ffffffffffffffffffffffffffffffffffffffff16610ce16115d9565b73ffffffffffffffffffffffffffffffffffffffff1614610d37576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d2e90614005565b60405180910390fd5b80600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60608151835114610dc1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610db890614065565b60405180910390fd5b6000835167ffffffffffffffff811115610e04577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051908082528060200260200182016040528015610e325781602001602082028036833780820191505090505b50905060005b8451811015610f2157610ecb858281518110610e7d577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6020026020010151858381518110610ebe577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60200260200101516105c8565b828281518110610f04577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60200260200101818152505080610f1a906144bb565b9050610e38565b508091505092915050565b600660149054906101000a900460ff1681565b600660159054906101000a900460ff16610f8e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f8590613ea5565b60405180910390fd5b60038114610fd1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fc890613f25565b60405180910390fd5b6003610fde3360006105c8565b101561101f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161101690613fe5565b60405180910390fd5b61102c3360006003612175565b6110483360018060405180602001604052806000815250611fdf565b50565b611053611c77565b73ffffffffffffffffffffffffffffffffffffffff166110716115d9565b73ffffffffffffffffffffffffffffffffffffffff16146110c7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110be90614005565b60405180910390fd5b600660149054906101000a900460ff1615600660146101000a81548160ff021916908315150217905550565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611183576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161117a90614085565b60405180910390fd5b61118f81836001612175565b5050565b61119b611c77565b73ffffffffffffffffffffffffffffffffffffffff166111b96115d9565b73ffffffffffffffffffffffffffffffffffffffff161461120f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161120690614005565b60405180910390fd5b61121a838284612175565b505050565b611227611c77565b73ffffffffffffffffffffffffffffffffffffffff166112456115d9565b73ffffffffffffffffffffffffffffffffffffffff161461129b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161129290614005565b60405180910390fd5b6112a56000612392565b565b6000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231336040518263ffffffff1660e01b81526004016113049190613c3c565b60206040518083038186803b15801561131c57600080fd5b505afa158015611330573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061135491906135b9565b9050600660149054906101000a900460ff166113a5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161139c90613f05565b60405180910390fd5b60011515600960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615151415611439576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161143090614025565b60405180910390fd5b6000821161147c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611473906140a5565b60405180910390fd5b611490848461148b3386612458565b61248b565b6114cf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114c690613f85565b60405180910390fd5b6001600960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555081811061154f5761154a3360008460405180602001604052806000815250611fdf565b6115b3565b808210611577576115723360008360405180602001604052806000815250611fdf565b6115b2565b6040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115a990613ec5565b60405180910390fd5b5b50505050565b60096020528060005260406000206000915054906101000a900460ff1681565b6000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6005805461161090614458565b80601f016020809104026020016040519081016040528092919081815260200182805461163c90614458565b80156116895780601f1061165e57610100808354040283529160200191611689565b820191906000526020600020905b81548152906001019060200180831161166c57829003601f168201915b505050505081565b611699611c77565b73ffffffffffffffffffffffffffffffffffffffff166116b76115d9565b73ffffffffffffffffffffffffffffffffffffffff161461170d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161170490614005565b60405180910390fd5b80600b8190555050565b600a6020528060005260406000206000915054906101000a900460ff1681565b611749611742611c77565b838361256c565b5050565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b61177b611c77565b73ffffffffffffffffffffffffffffffffffffffff166117996115d9565b73ffffffffffffffffffffffffffffffffffffffff16146117ef576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117e690614005565b60405180910390fd5b80600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b6118cf611c77565b73ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16148061191557506119148561190f611c77565b611833565b5b611954576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161194b90613ee5565b60405180910390fd5b61196185858585856126d9565b5050505050565b611970611c77565b73ffffffffffffffffffffffffffffffffffffffff1661198e6115d9565b73ffffffffffffffffffffffffffffffffffffffff16146119e4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119db90614005565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611a54576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a4b90613e65565b60405180910390fd5b611a5d81612392565b50565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b60606000821415611b12576040518060400160405280600181526020017f30000000000000000000000000000000000000000000000000000000000000008152509050611c72565b600082905060005b60008214611b44578080611b2d906144bb565b915050600a82611b3d919061430f565b9150611b1a565b60008167ffffffffffffffff811115611b86577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040519080825280601f01601f191660200182016040528015611bb85781602001600182028036833780820191505090505b5090505b60008514611c6b57600182611bd19190614340565b9150600a85611be0919061453c565b6030611bec91906142b9565b60f81b818381518110611c28577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600a85611c64919061430f565b9450611bbc565b8093505050505b919050565b600033905090565b8151835114611cc3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cba906140c5565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415611d33576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d2a90613f45565b60405180910390fd5b6000611d3d611c77565b9050611d4d81878787878761295b565b60005b8451811015611f4a576000858281518110611d94577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001015190506000858381518110611dd9577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60200260200101519050600080600084815260200190815260200160002060008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015611e7a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e7190613fc5565b60405180910390fd5b81810360008085815260200190815260200160002060008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508160008085815260200190815260200160002060008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254611f2f91906142b9565b9250508190555050505080611f43906144bb565b9050611d50565b508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb8787604051611fc1929190613d3b565b60405180910390a4611fd7818787878787612963565b505050505050565b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16141561204f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612046906140e5565b60405180910390fd5b6000612059611c77565b905061207a8160008761206b88612b4a565b61207488612b4a565b8761295b565b8260008086815260200190815260200160002060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546120d991906142b9565b925050819055508473ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f628787604051612157929190614120565b60405180910390a461216e81600087878787612c10565b5050505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156121e5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121dc90613fa5565b60405180910390fd5b60006121ef611c77565b905061221f8185600061220187612b4a565b61220a87612b4a565b6040518060200160405280600081525061295b565b600080600085815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050828110156122b6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122ad90613e85565b60405180910390fd5b82810360008086815260200190815260200160002060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f628787604051612383929190614120565b60405180910390a45050505050565b6000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b6000828260405160200161246d929190613bc0565b60405160208183030381529060405280519060200120905092915050565b600080600083905060005b8686905081101561255b578686828181106124da577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9050602002013592508282101561251b5781836040516020016124fe929190613bec565b604051602081830303815290604052805190602001209150612547565b828260405160200161252e929190613bec565b6040516020818303038152906040528051906020012091505b60018161255491906142b9565b9050612496565b50600b548114925050509392505050565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156125db576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125d290614045565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31836040516126cc9190613d72565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415612749576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161274090613f45565b60405180910390fd5b6000612753611c77565b905061277381878761276488612b4a565b61276d88612b4a565b8761295b565b600080600086815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490508381101561280a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161280190613fc5565b60405180910390fd5b83810360008087815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508360008087815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546128bf91906142b9565b925050819055508573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f62888860405161293c929190614120565b60405180910390a4612952828888888888612c10565b50505050505050565b505050505050565b6129828473ffffffffffffffffffffffffffffffffffffffff16612df7565b15612b42578373ffffffffffffffffffffffffffffffffffffffff1663bc197c8187878686866040518663ffffffff1660e01b81526004016129c8959493929190613c57565b602060405180830381600087803b1580156129e257600080fd5b505af1925050508015612a1357506040513d601f19601f82011682018060405250810190612a109190613526565b60015b612ab957612a1f614629565b806308c379a01415612a7c5750612a34614cd7565b80612a3f5750612a7e565b806040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a739190613dc3565b60405180910390fd5b505b6040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ab090613de5565b60405180910390fd5b63bc197c8160e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614612b40576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b3790613e05565b60405180910390fd5b505b505050505050565b60606000600167ffffffffffffffff811115612b8f577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051908082528060200260200182016040528015612bbd5781602001602082028036833780820191505090505b5090508281600081518110612bfb577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60200260200101818152505080915050919050565b612c2f8473ffffffffffffffffffffffffffffffffffffffff16612df7565b15612def578373ffffffffffffffffffffffffffffffffffffffff1663f23a6e6187878686866040518663ffffffff1660e01b8152600401612c75959493929190613cbf565b602060405180830381600087803b158015612c8f57600080fd5b505af1925050508015612cc057506040513d601f19601f82011682018060405250810190612cbd9190613526565b60015b612d6657612ccc614629565b806308c379a01415612d295750612ce1614cd7565b80612cec5750612d2b565b806040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d209190613dc3565b60405180910390fd5b505b6040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d5d90613de5565b60405180910390fd5b63f23a6e6160e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614612ded576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612de490613e05565b60405180910390fd5b505b505050505050565b6000808273ffffffffffffffffffffffffffffffffffffffff163b119050919050565b828054612e2690614458565b90600052602060002090601f016020900481019282612e485760008555612e8f565b82601f10612e6157805160ff1916838001178555612e8f565b82800160010185558215612e8f579182015b82811115612e8e578251825591602001919060010190612e73565b5b509050612e9c9190612ea0565b5090565b5b80821115612eb9576000816000905550600101612ea1565b5090565b6000612ed0612ecb8461416e565b614149565b90508083825260208201905082856020860282011115612eef57600080fd5b60005b85811015612f1f5781612f058882613011565b845260208401935060208301925050600181019050612ef2565b5050509392505050565b6000612f3c612f378461419a565b614149565b90508083825260208201905082856020860282011115612f5b57600080fd5b60005b85811015612f8b5781612f71888261316c565b845260208401935060208301925050600181019050612f5e565b5050509392505050565b6000612fa8612fa3846141c6565b614149565b905082815260208101848484011115612fc057600080fd5b612fcb848285614416565b509392505050565b6000612fe6612fe1846141f7565b614149565b905082815260208101848484011115612ffe57600080fd5b613009848285614416565b509392505050565b60008135905061302081614d6d565b92915050565b600082601f83011261303757600080fd5b8135613047848260208601612ebd565b91505092915050565b60008083601f84011261306257600080fd5b8235905067ffffffffffffffff81111561307b57600080fd5b60208301915083602082028301111561309357600080fd5b9250929050565b600082601f8301126130ab57600080fd5b81356130bb848260208601612f29565b91505092915050565b6000813590506130d381614d84565b92915050565b6000813590506130e881614d9b565b92915050565b6000813590506130fd81614db2565b92915050565b60008151905061311281614db2565b92915050565b600082601f83011261312957600080fd5b8135613139848260208601612f95565b91505092915050565b600082601f83011261315357600080fd5b8135613163848260208601612fd3565b91505092915050565b60008135905061317b81614dc9565b92915050565b60008151905061319081614dc9565b92915050565b6000602082840312156131a857600080fd5b60006131b684828501613011565b91505092915050565b600080604083850312156131d257600080fd5b60006131e085828601613011565b92505060206131f185828601613011565b9150509250929050565b600080600080600060a0868803121561321357600080fd5b600061322188828901613011565b955050602061323288828901613011565b945050604086013567ffffffffffffffff81111561324f57600080fd5b61325b8882890161309a565b935050606086013567ffffffffffffffff81111561327857600080fd5b6132848882890161309a565b925050608086013567ffffffffffffffff8111156132a157600080fd5b6132ad88828901613118565b9150509295509295909350565b600080600080600060a086880312156132d257600080fd5b60006132e088828901613011565b95505060206132f188828901613011565b94505060406133028882890161316c565b93505060606133138882890161316c565b925050608086013567ffffffffffffffff81111561333057600080fd5b61333c88828901613118565b9150509295509295909350565b6000806040838503121561335c57600080fd5b600061336a85828601613011565b925050602061337b858286016130c4565b9150509250929050565b6000806040838503121561339857600080fd5b60006133a685828601613011565b92505060206133b78582860161316c565b9150509250929050565b6000806000606084860312156133d657600080fd5b60006133e486828701613011565b93505060206133f58682870161316c565b92505060406134068682870161316c565b9150509250925092565b6000806040838503121561342357600080fd5b600083013567ffffffffffffffff81111561343d57600080fd5b61344985828601613026565b925050602083013567ffffffffffffffff81111561346657600080fd5b6134728582860161309a565b9150509250929050565b60008060006040848603121561349157600080fd5b600084013567ffffffffffffffff8111156134ab57600080fd5b6134b786828701613050565b935093505060206134ca8682870161316c565b9150509250925092565b6000602082840312156134e657600080fd5b60006134f4848285016130d9565b91505092915050565b60006020828403121561350f57600080fd5b600061351d848285016130ee565b91505092915050565b60006020828403121561353857600080fd5b600061354684828501613103565b91505092915050565b60006020828403121561356157600080fd5b600082013567ffffffffffffffff81111561357b57600080fd5b61358784828501613142565b91505092915050565b6000602082840312156135a257600080fd5b60006135b08482850161316c565b91505092915050565b6000602082840312156135cb57600080fd5b60006135d984828501613181565b91505092915050565b600080604083850312156135f557600080fd5b60006136038582860161316c565b925050602061361485828601613011565b9150509250929050565b600061362a8383613b8b565b60208301905092915050565b61363f81614374565b82525050565b61365661365182614374565b614504565b82525050565b60006136678261424d565b613671818561427b565b935061367c83614228565b8060005b838110156136ad578151613694888261361e565b975061369f8361426e565b925050600181019050613680565b5085935050505092915050565b6136c381614386565b82525050565b6136d281614392565b82525050565b6136e96136e482614392565b614516565b82525050565b60006136fa82614258565b613704818561428c565b9350613714818560208601614425565b61371d8161464b565b840191505092915050565b613731816143f2565b82525050565b600061374282614263565b61374c818561429d565b935061375c818560208601614425565b6137658161464b565b840191505092915050565b600061377b82614263565b61378581856142ae565b9350613795818560208601614425565b80840191505092915050565b600081546137ae81614458565b6137b881866142ae565b945060018216600081146137d357600181146137e457613817565b60ff19831686528186019350613817565b6137ed85614238565b60005b8381101561380f578154818901526001820191506020810190506137f0565b838801955050505b50505092915050565b600061382d60348361429d565b915061383882614676565b604082019050919050565b600061385060288361429d565b915061385b826146c5565b604082019050919050565b600061387360248361429d565b915061387e82614714565b604082019050919050565b6000613896602b8361429d565b91506138a182614763565b604082019050919050565b60006138b960268361429d565b91506138c4826147b2565b604082019050919050565b60006138dc60248361429d565b91506138e782614801565b604082019050919050565b60006138ff600f8361429d565b915061390a82614850565b602082019050919050565b6000613922600c8361429d565b915061392d82614879565b602082019050919050565b600061394560298361429d565b9150613950826148a2565b604082019050919050565b600061396860178361429d565b9150613973826148f1565b602082019050919050565b600061398b602a8361429d565b91506139968261491a565b604082019050919050565b60006139ae60258361429d565b91506139b982614969565b604082019050919050565b60006139d160328361429d565b91506139dc826149b8565b604082019050919050565b60006139f4600b8361429d565b91506139ff82614a07565b602082019050919050565b6000613a1760238361429d565b9150613a2282614a30565b604082019050919050565b6000613a3a602a8361429d565b9150613a4582614a7f565b604082019050919050565b6000613a5d601c8361429d565b9150613a6882614ace565b602082019050919050565b6000613a8060208361429d565b9150613a8b82614af7565b602082019050919050565b6000613aa3600f8361429d565b9150613aae82614b20565b602082019050919050565b6000613ac660298361429d565b9150613ad182614b49565b604082019050919050565b6000613ae960298361429d565b9150613af482614b98565b604082019050919050565b6000613b0c60168361429d565b9150613b1782614be7565b602082019050919050565b6000613b2f60108361429d565b9150613b3a82614c10565b602082019050919050565b6000613b5260288361429d565b9150613b5d82614c39565b604082019050919050565b6000613b7560218361429d565b9150613b8082614c88565b604082019050919050565b613b94816143e8565b82525050565b613ba3816143e8565b82525050565b613bba613bb5826143e8565b614532565b82525050565b6000613bcc8285613645565b601482019150613bdc8284613ba9565b6020820191508190509392505050565b6000613bf882856136d8565b602082019150613c0882846136d8565b6020820191508190509392505050565b6000613c2482856137a1565b9150613c308284613770565b91508190509392505050565b6000602082019050613c516000830184613636565b92915050565b600060a082019050613c6c6000830188613636565b613c796020830187613636565b8181036040830152613c8b818661365c565b90508181036060830152613c9f818561365c565b90508181036080830152613cb381846136ef565b90509695505050505050565b600060a082019050613cd46000830188613636565b613ce16020830187613636565b613cee6040830186613b9a565b613cfb6060830185613b9a565b8181036080830152613d0d81846136ef565b90509695505050505050565b60006020820190508181036000830152613d33818461365c565b905092915050565b60006040820190508181036000830152613d55818561365c565b90508181036020830152613d69818461365c565b90509392505050565b6000602082019050613d8760008301846136ba565b92915050565b6000602082019050613da260008301846136c9565b92915050565b6000602082019050613dbd6000830184613728565b92915050565b60006020820190508181036000830152613ddd8184613737565b905092915050565b60006020820190508181036000830152613dfe81613820565b9050919050565b60006020820190508181036000830152613e1e81613843565b9050919050565b60006020820190508181036000830152613e3e81613866565b9050919050565b60006020820190508181036000830152613e5e81613889565b9050919050565b60006020820190508181036000830152613e7e816138ac565b9050919050565b60006020820190508181036000830152613e9e816138cf565b9050919050565b60006020820190508181036000830152613ebe816138f2565b9050919050565b60006020820190508181036000830152613ede81613915565b9050919050565b60006020820190508181036000830152613efe81613938565b9050919050565b60006020820190508181036000830152613f1e8161395b565b9050919050565b60006020820190508181036000830152613f3e8161397e565b9050919050565b60006020820190508181036000830152613f5e816139a1565b9050919050565b60006020820190508181036000830152613f7e816139c4565b9050919050565b60006020820190508181036000830152613f9e816139e7565b9050919050565b60006020820190508181036000830152613fbe81613a0a565b9050919050565b60006020820190508181036000830152613fde81613a2d565b9050919050565b60006020820190508181036000830152613ffe81613a50565b9050919050565b6000602082019050818103600083015261401e81613a73565b9050919050565b6000602082019050818103600083015261403e81613a96565b9050919050565b6000602082019050818103600083015261405e81613ab9565b9050919050565b6000602082019050818103600083015261407e81613adc565b9050919050565b6000602082019050818103600083015261409e81613aff565b9050919050565b600060208201905081810360008301526140be81613b22565b9050919050565b600060208201905081810360008301526140de81613b45565b9050919050565b600060208201905081810360008301526140fe81613b68565b9050919050565b600060208201905061411a6000830184613b9a565b92915050565b60006040820190506141356000830185613b9a565b6141426020830184613b9a565b9392505050565b6000614153614164565b905061415f828261448a565b919050565b6000604051905090565b600067ffffffffffffffff821115614189576141886145fa565b5b602082029050602081019050919050565b600067ffffffffffffffff8211156141b5576141b46145fa565b5b602082029050602081019050919050565b600067ffffffffffffffff8211156141e1576141e06145fa565b5b6141ea8261464b565b9050602081019050919050565b600067ffffffffffffffff821115614212576142116145fa565b5b61421b8261464b565b9050602081019050919050565b6000819050602082019050919050565b60008190508160005260206000209050919050565b600081519050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600082825260208201905092915050565b600082825260208201905092915050565b600081905092915050565b60006142c4826143e8565b91506142cf836143e8565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156143045761430361456d565b5b828201905092915050565b600061431a826143e8565b9150614325836143e8565b9250826143355761433461459c565b5b828204905092915050565b600061434b826143e8565b9150614356836143e8565b9250828210156143695761436861456d565b5b828203905092915050565b600061437f826143c8565b9050919050565b60008115159050919050565b6000819050919050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b60006143fd82614404565b9050919050565b600061440f826143c8565b9050919050565b82818337600083830152505050565b60005b83811015614443578082015181840152602081019050614428565b83811115614452576000848401525b50505050565b6000600282049050600182168061447057607f821691505b60208210811415614484576144836145cb565b5b50919050565b6144938261464b565b810181811067ffffffffffffffff821117156144b2576144b16145fa565b5b80604052505050565b60006144c6826143e8565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8214156144f9576144f861456d565b5b600182019050919050565b600061450f82614520565b9050919050565b6000819050919050565b600061452b8261465c565b9050919050565b6000819050919050565b6000614547826143e8565b9150614552836143e8565b9250826145625761456161459c565b5b828206905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600060033d11156146485760046000803e614645600051614669565b90505b90565b6000601f19601f8301169050919050565b60008160601b9050919050565b60008160e01c9050919050565b7f455243313135353a207472616e7366657220746f206e6f6e204552433131353560008201527f526563656976657220696d706c656d656e746572000000000000000000000000602082015250565b7f455243313135353a204552433131353552656365697665722072656a6563746560008201527f6420746f6b656e73000000000000000000000000000000000000000000000000602082015250565b7f5552492072657175657374656420666f7220696e76616c696420736572756d2060008201527f7479706500000000000000000000000000000000000000000000000000000000602082015250565b7f455243313135353a2062616c616e636520717565727920666f7220746865207a60008201527f65726f2061646472657373000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f455243313135353a206275726e20616d6f756e7420657863656564732062616c60008201527f616e636500000000000000000000000000000000000000000000000000000000602082015250565b7f4e4f545f5945545f535441525445440000000000000000000000000000000000600082015250565b7f4e4f5f5357454550494e47210000000000000000000000000000000000000000600082015250565b7f455243313135353a2063616c6c6572206973206e6f74206f776e6572206e6f7260008201527f20617070726f7665640000000000000000000000000000000000000000000000602082015250565b7f41495244524f505f4e4f545f5945545f53544152544544000000000000000000600082015250565b7f54485245455f544945525f315f52455155495245445f544f5f4d414b455f535560008201527f5045525f454c4958495200000000000000000000000000000000000000000000602082015250565b7f455243313135353a207472616e7366657220746f20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b7f455243313135353a207472616e736665722063616c6c6572206973206e6f742060008201527f6f776e6572206e6f7220617070726f7665640000000000000000000000000000602082015250565b7f57524f4e475f50524f4f46000000000000000000000000000000000000000000600082015250565b7f455243313135353a206275726e2066726f6d20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b7f455243313135353a20696e73756666696369656e742062616c616e636520666f60008201527f72207472616e7366657200000000000000000000000000000000000000000000602082015250565b7f594f555f444f4e545f484156455f454e4f5547485f454c495849525300000000600082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f434c41494d45445f414c52454144590000000000000000000000000000000000600082015250565b7f455243313135353a2073657474696e6720617070726f76616c2073746174757360008201527f20666f722073656c660000000000000000000000000000000000000000000000602082015250565b7f455243313135353a206163636f756e747320616e6420696473206c656e67746860008201527f206d69736d617463680000000000000000000000000000000000000000000000602082015250565b7f496e76616c6964206275726e6572206164647265737300000000000000000000600082015250565b7f494e56414c49445f5155414e5449545900000000000000000000000000000000600082015250565b7f455243313135353a2069647320616e6420616d6f756e7473206c656e6774682060008201527f6d69736d61746368000000000000000000000000000000000000000000000000602082015250565b7f455243313135353a206d696e7420746f20746865207a65726f2061646472657360008201527f7300000000000000000000000000000000000000000000000000000000000000602082015250565b600060443d1015614ce757614d6a565b614cef614164565b60043d036004823e80513d602482011167ffffffffffffffff82111715614d17575050614d6a565b808201805167ffffffffffffffff811115614d355750505050614d6a565b80602083010160043d038501811115614d52575050505050614d6a565b614d618260200185018661448a565b82955050505050505b90565b614d7681614374565b8114614d8157600080fd5b50565b614d8d81614386565b8114614d9857600080fd5b50565b614da481614392565b8114614daf57600080fd5b50565b614dbb8161439c565b8114614dc657600080fd5b50565b614dd2816143e8565b8114614ddd57600080fd5b5056fea2646970667358221220354583cbc0e928e38d7127643611c1f7d0f3898b4ecbc25b1552ea709209b89464736f6c63430008040033

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

00000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000e0000000000000000000000000000000000000000000000000000000000000012000000000000000000000000054616c0815c306fc22417b96282ca4aa6f47d35700000000000000000000000054616c0815c306fc22417b96282ca4aa6f47d357000000000000000000000000000000000000000000000000000000000000001d74726f6c6c2d746f776e2d6d75746174696f6e616c2d656c6978697273000000000000000000000000000000000000000000000000000000000000000000000454544d4500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001874726f6c6c2d746f776e2e7774662f6d657461646174612f0000000000000000

-----Decoded View---------------
Arg [0] : _name (string): troll-town-mutational-elixirs
Arg [1] : _symbol (string): TTME
Arg [2] : _baseURI (string): troll-town.wtf/metadata/
Arg [3] : _trollAddress (address): 0x54616C0815c306FC22417b96282cA4AA6F47D357
Arg [4] : _mutationContract (address): 0x54616C0815c306FC22417b96282cA4AA6F47D357

-----Encoded View---------------
11 Constructor Arguments found :
Arg [0] : 00000000000000000000000000000000000000000000000000000000000000a0
Arg [1] : 00000000000000000000000000000000000000000000000000000000000000e0
Arg [2] : 0000000000000000000000000000000000000000000000000000000000000120
Arg [3] : 00000000000000000000000054616c0815c306fc22417b96282ca4aa6f47d357
Arg [4] : 00000000000000000000000054616c0815c306fc22417b96282ca4aa6f47d357
Arg [5] : 000000000000000000000000000000000000000000000000000000000000001d
Arg [6] : 74726f6c6c2d746f776e2d6d75746174696f6e616c2d656c6978697273000000
Arg [7] : 0000000000000000000000000000000000000000000000000000000000000004
Arg [8] : 54544d4500000000000000000000000000000000000000000000000000000000
Arg [9] : 0000000000000000000000000000000000000000000000000000000000000018
Arg [10] : 74726f6c6c2d746f776e2e7774662f6d657461646174612f0000000000000000


Deployed Bytecode Sourcemap

19958:4242:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7058:231;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6631:310;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20044:19;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20163:30;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20875:274;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20372:26;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8567:442;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;23073:146;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;23493:103;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;24088:109;;;:::i;:::-;;20098:26;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23685:88;;;:::i;:::-;;23781:142;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7295:524;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20131:25;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22504:343;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;23604:73;;;:::i;:::-;;22855:210;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;23227:142;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;17745:103;;;:::i;:::-;;21785:711;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;20267:41;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17526:87;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20070:21;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23377:108;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;20315:48;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7825:155;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;20200:31;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23931:149;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7986:168;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8160:401;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;17854:201;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7058:231;7144:7;7191:1;7172:21;;:7;:21;;;;7164:77;;;;;;;;;;;;:::i;:::-;;;;;;;;;7259:9;:13;7269:2;7259:13;;;;;;;;;;;:22;7273:7;7259:22;;;;;;;;;;;;;;;;7252:29;;7058:231;;;;:::o;6631:310::-;6733:4;6785:26;6770:41;;;:11;:41;;;;:110;;;;6843:37;6828:52;;;:11;:52;;;;6770:110;:163;;;;6897:36;6921:11;6897:23;:36::i;:::-;6770:163;6750:183;;6631:310;;;:::o;20044:19::-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;20163:30::-;;;;;;;;;;;;;:::o;20875:274::-;20934:13;20968:16;:24;20985:6;20968:24;;;;;;;;;;;;;;;;;;;;;20960:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;21075:1;21057:7;21051:21;;;;;:::i;:::-;;;:25;:90;;21134:7;21051:90;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21103:7;21112:17;:6;:15;:17::i;:::-;21086:44;;;;;;;;;:::i;:::-;;;;;;;;;;;;;21051:90;21044:97;;20875:274;;;:::o;20372:26::-;;;;:::o;8567:442::-;8808:12;:10;:12::i;:::-;8800:20;;:4;:20;;;:60;;;;8824:36;8841:4;8847:12;:10;:12::i;:::-;8824:16;:36::i;:::-;8800:60;8778:160;;;;;;;;;;;;:::i;:::-;;;;;;;;;8949:52;8972:4;8978:2;8982:3;8987:7;8996:4;8949:22;:52::i;:::-;8567:442;;;;;:::o;23073:146::-;17670:12;:10;:12::i;:::-;17659:23;;:7;:5;:7::i;:::-;:23;;;17651:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;23174:37:::1;23180:8;23190:6;23198:8;23174:37;;;;;;;;;;;::::0;:5:::1;:37::i;:::-;23073:146:::0;;;:::o;23493:103::-;17670:12;:10;:12::i;:::-;17659:23;;:7;:5;:7::i;:::-;:23;;;17651:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;23580:8:::1;23570:7;:18;;;;;;;;;;;;:::i;:::-;;23493:103:::0;:::o;24088:109::-;17670:12;:10;:12::i;:::-;17659:23;;:7;:5;:7::i;:::-;:23;;;17651:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;24146:10:::1;24138:28;;:51;24167:21;24138:51;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;24088:109::o:0;20098:26::-;;;;;;;;;;;;;:::o;23685:88::-;17670:12;:10;:12::i;:::-;17659:23;;:7;:5;:7::i;:::-;:23;;;17651:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;23755:10:::1;;;;;;;;;;;23754:11;23741:10;;:24;;;;;;;;;;;;;;;;;;23685:88::o:0;23781:142::-;17670:12;:10;:12::i;:::-;17659:23;;:7;:5;:7::i;:::-;:23;;;17651:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;23892:23:::1;23873:16;;:42;;;;;;;;;;;;;;;;;;23781:142:::0;:::o;7295:524::-;7451:16;7512:3;:10;7493:8;:15;:29;7485:83;;;;;;;;;;;;:::i;:::-;;;;;;;;;7581:30;7628:8;:15;7614:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7581:63;;7662:9;7657:122;7681:8;:15;7677:1;:19;7657:122;;;7737:30;7747:8;7756:1;7747:11;;;;;;;;;;;;;;;;;;;;;;7760:3;7764:1;7760:6;;;;;;;;;;;;;;;;;;;;;;7737:9;:30::i;:::-;7718:13;7732:1;7718:16;;;;;;;;;;;;;;;;;;;;;:49;;;;;7698:3;;;;:::i;:::-;;;7657:122;;;;7798:13;7791:20;;;7295:524;;;;:::o;20131:25::-;;;;;;;;;;;;;:::o;22504:343::-;22576:10;;;;;;;;;;;22568:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;22638:1;22625:9;:14;22617:69;;;;;;;;;;;;:::i;:::-;;;;;;;;;22733:1;22705:24;22715:10;22727:1;22705:9;:24::i;:::-;:29;;22697:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;22778:23;22784:10;22796:1;22799;22778:5;:23::i;:::-;22812:27;22818:10;22830:1;22833;22812:27;;;;;;;;;;;;:5;:27::i;:::-;22504:343;:::o;23604:73::-;17670:12;:10;:12::i;:::-;17659:23;;:7;:5;:7::i;:::-;:23;;;17651:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;23664:5:::1;;;;;;;;;;;23663:6;23655:5;;:14;;;;;;;;;;;;;;;;;;23604:73::o:0;22855:210::-;22969:16;;;;;;;;;;;22955:30;;:10;:30;;;22947:65;;;;;;;;;;;;:::i;:::-;;;;;;;;;23023:34;23029:16;23047:6;23055:1;23023:5;:34::i;:::-;22855:210;;:::o;23227:142::-;17670:12;:10;:12::i;:::-;17659:23;;:7;:5;:7::i;:::-;:23;;;17651:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;23328:33:::1;23334:8;23344:6;23352:8;23328:5;:33::i;:::-;23227:142:::0;;;:::o;17745:103::-;17670:12;:10;:12::i;:::-;17659:23;;:7;:5;:7::i;:::-;:23;;;17651:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;17810:30:::1;17837:1;17810:18;:30::i;:::-;17745:103::o:0;21785:711::-;21870:18;21891:9;;;;;;;;;;;:19;;;21911:10;21891:31;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;21870:52;;21941:5;;;;;;;;;;;21933:41;;;;;;;;;;;;:::i;:::-;;;;;;;;;22018:4;21993:29;;:9;:21;22003:10;21993:21;;;;;;;;;;;;;;;;;;;;;;;;;:29;;;;21985:57;;;;;;;;;;;;:::i;:::-;;;;;;;;;22073:1;22061:9;:13;22053:42;;;;;;;;;;;;:::i;:::-;;;;;;;;;22114:72;22126:6;;22134:51;22163:10;22175:9;22134:28;:51::i;:::-;22114:11;:72::i;:::-;22106:96;;;;;;;;;;;;:::i;:::-;;;;;;;;;22237:4;22213:9;:21;22223:10;22213:21;;;;;;;;;;;;;;;;:28;;;;;;;;;;;;;;;;;;22269:9;22255:10;:23;22252:237;;22294:35;22300:10;22312:1;22315:9;22294:35;;;;;;;;;;;;:5;:35::i;:::-;22252:237;;;22362:10;22349:9;:23;22346:143;;22388:36;22394:10;22406:1;22409:10;22388:36;;;;;;;;;;;;:5;:36::i;:::-;22346:143;;;22455:22;;;;;;;;;;:::i;:::-;;;;;;;;22346:143;22252:237;21785:711;;;;:::o;20267:41::-;;;;;;;;;;;;;;;;;;;;;;:::o;17526:87::-;17572:7;17599:6;;;;;;;;;;;17592:13;;17526:87;:::o;20070:21::-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;23377:108::-;17670:12;:10;:12::i;:::-;17659:23;;:7;:5;:7::i;:::-;:23;;;17651:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;23466:11:::1;23452;:25;;;;23377:108:::0;:::o;20315:48::-;;;;;;;;;;;;;;;;;;;;;;:::o;7825:155::-;7920:52;7939:12;:10;:12::i;:::-;7953:8;7963;7920:18;:52::i;:::-;7825:155;;:::o;20200:31::-;;;;;;;;;;;;;:::o;23931:149::-;17670:12;:10;:12::i;:::-;17659:23;;:7;:5;:7::i;:::-;:23;;;17651:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;24047:24:::1;24025:9;;:47;;;;;;;;;;;;;;;;;;23931:149:::0;:::o;7986:168::-;8085:4;8109:18;:27;8128:7;8109:27;;;;;;;;;;;;;;;:37;8137:8;8109:37;;;;;;;;;;;;;;;;;;;;;;;;;8102:44;;7986:168;;;;:::o;8160:401::-;8376:12;:10;:12::i;:::-;8368:20;;:4;:20;;;:60;;;;8392:36;8409:4;8415:12;:10;:12::i;:::-;8392:16;:36::i;:::-;8368:60;8346:151;;;;;;;;;;;;:::i;:::-;;;;;;;;;8508:45;8526:4;8532:2;8536;8540:6;8548:4;8508:17;:45::i;:::-;8160:401;;;;;:::o;17854:201::-;17670:12;:10;:12::i;:::-;17659:23;;:7;:5;:7::i;:::-;:23;;;17651:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;17963:1:::1;17943:22;;:8;:22;;;;17935:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;18019:28;18038:8;18019:18;:28::i;:::-;17854:201:::0;:::o;6090:157::-;6175:4;6214:25;6199:40;;;:11;:40;;;;6192:47;;6090:157;;;:::o;18372:532::-;18428:13;18467:1;18458:5;:10;18454:53;;;18485:10;;;;;;;;;;;;;;;;;;;;;18454:53;18517:12;18532:5;18517:20;;18548:14;18573:78;18588:1;18580:4;:9;18573:78;;18606:8;;;;;:::i;:::-;;;;18637:2;18629:10;;;;;:::i;:::-;;;18573:78;;;18661:19;18693:6;18683:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18661:39;;18711:154;18727:1;18718:5;:10;18711:154;;18755:1;18745:11;;;;;:::i;:::-;;;18822:2;18814:5;:10;;;;:::i;:::-;18801:2;:24;;;;:::i;:::-;18788:39;;18771:6;18778;18771:14;;;;;;;;;;;;;;;;;;;:56;;;;;;;;;;;18851:2;18842:11;;;;;:::i;:::-;;;18711:154;;;18889:6;18875:21;;;;;18372:532;;;;:::o;5808:98::-;5861:7;5888:10;5881:17;;5808:98;:::o;9841:1074::-;10068:7;:14;10054:3;:10;:28;10046:81;;;;;;;;;;;;:::i;:::-;;;;;;;;;10160:1;10146:16;;:2;:16;;;;10138:66;;;;;;;;;;;;:::i;:::-;;;;;;;;;10217:16;10236:12;:10;:12::i;:::-;10217:31;;10261:60;10282:8;10292:4;10298:2;10302:3;10307:7;10316:4;10261:20;:60::i;:::-;10339:9;10334:421;10358:3;:10;10354:1;:14;10334:421;;;10390:10;10403:3;10407:1;10403:6;;;;;;;;;;;;;;;;;;;;;;10390:19;;10424:14;10441:7;10449:1;10441:10;;;;;;;;;;;;;;;;;;;;;;10424:27;;10468:19;10490:9;:13;10500:2;10490:13;;;;;;;;;;;:19;10504:4;10490:19;;;;;;;;;;;;;;;;10468:41;;10547:6;10532:11;:21;;10524:76;;;;;;;;;;;;:::i;:::-;;;;;;;;;10680:6;10666:11;:20;10644:9;:13;10654:2;10644:13;;;;;;;;;;;:19;10658:4;10644:19;;;;;;;;;;;;;;;:42;;;;10737:6;10716:9;:13;10726:2;10716:13;;;;;;;;;;;:17;10730:2;10716:17;;;;;;;;;;;;;;;;:27;;;;;;;:::i;:::-;;;;;;;;10334:421;;;10370:3;;;;:::i;:::-;;;10334:421;;;;10802:2;10772:47;;10796:4;10772:47;;10786:8;10772:47;;;10806:3;10811:7;10772:47;;;;;;;:::i;:::-;;;;;;;;10832:75;10868:8;10878:4;10884:2;10888:3;10893:7;10902:4;10832:35;:75::i;:::-;9841:1074;;;;;;:::o;11015:569::-;11182:1;11168:16;;:2;:16;;;;11160:62;;;;;;;;;;;;:::i;:::-;;;;;;;;;11235:16;11254:12;:10;:12::i;:::-;11235:31;;11279:102;11300:8;11318:1;11322:2;11326:21;11344:2;11326:17;:21::i;:::-;11349:25;11367:6;11349:17;:25::i;:::-;11376:4;11279:20;:102::i;:::-;11415:6;11394:9;:13;11404:2;11394:13;;;;;;;;;;;:17;11408:2;11394:17;;;;;;;;;;;;;;;;:27;;;;;;;:::i;:::-;;;;;;;;11474:2;11437:52;;11470:1;11437:52;;11452:8;11437:52;;;11478:2;11482:6;11437:52;;;;;;;:::i;:::-;;;;;;;;11502:74;11533:8;11551:1;11555:2;11559;11563:6;11571:4;11502:30;:74::i;:::-;11015:569;;;;;:::o;12331:648::-;12474:1;12458:18;;:4;:18;;;;12450:66;;;;;;;;;;;;:::i;:::-;;;;;;;;;12529:16;12548:12;:10;:12::i;:::-;12529:31;;12573:102;12594:8;12604:4;12618:1;12622:21;12640:2;12622:17;:21::i;:::-;12645:25;12663:6;12645:17;:25::i;:::-;12573:102;;;;;;;;;;;;:20;:102::i;:::-;12688:19;12710:9;:13;12720:2;12710:13;;;;;;;;;;;:19;12724:4;12710:19;;;;;;;;;;;;;;;;12688:41;;12763:6;12748:11;:21;;12740:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;12882:6;12868:11;:20;12846:9;:13;12856:2;12846:13;;;;;;;;;;;:19;12860:4;12846:19;;;;;;;;;;;;;;;:42;;;;12956:1;12917:54;;12942:4;12917:54;;12932:8;12917:54;;;12960:2;12964:6;12917:54;;;;;;;:::i;:::-;;;;;;;;12331:648;;;;;:::o;18061:191::-;18135:16;18154:6;;;;;;;;;;;18135:25;;18180:8;18171:6;;:17;;;;;;;;;;;;;;;;;;18235:8;18204:40;;18225:8;18204:40;;;;;;;;;;;;18061:191;;:::o;21157:153::-;21241:7;21294:2;21298;21277:24;;;;;;;;;:::i;:::-;;;;;;;;;;;;;21267:35;;;;;;21260:42;;21157:153;;;;:::o;21322:455::-;21406:4;21423:10;21444:9;21456:5;21444:17;;21477:9;21472:264;21496:5;;:12;;21492:1;:16;21472:264;;;21538:5;;21544:1;21538:8;;;;;;;;;;;;;;;;;;;;;21533:13;;21569:2;21565:1;:6;21561:164;;;21623:1;21626:2;21606:23;;;;;;;;;:::i;:::-;;;;;;;;;;;;;21596:34;;;;;;21592:38;;21561:164;;;21702:2;21706:1;21685:23;;;;;;;;;:::i;:::-;;;;;;;;;;;;;21675:34;;;;;;21671:38;;21561:164;21515:1;21510:6;;;;;:::i;:::-;;;21472:264;;;;21758:11;;21753:1;:16;21746:23;;;;21322:455;;;;;:::o;13882:331::-;14037:8;14028:17;;:5;:17;;;;14020:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;14140:8;14102:18;:25;14121:5;14102:25;;;;;;;;;;;;;;;:35;14128:8;14102:35;;;;;;;;;;;;;;;;:46;;;;;;;;;;;;;;;;;;14186:8;14164:41;;14179:5;14164:41;;;14196:8;14164:41;;;;;;:::i;:::-;;;;;;;;13882:331;;;:::o;9015:820::-;9217:1;9203:16;;:2;:16;;;;9195:66;;;;;;;;;;;;:::i;:::-;;;;;;;;;9274:16;9293:12;:10;:12::i;:::-;9274:31;;9318:96;9339:8;9349:4;9355:2;9359:21;9377:2;9359:17;:21::i;:::-;9382:25;9400:6;9382:17;:25::i;:::-;9409:4;9318:20;:96::i;:::-;9427:19;9449:9;:13;9459:2;9449:13;;;;;;;;;;;:19;9463:4;9449:19;;;;;;;;;;;;;;;;9427:41;;9502:6;9487:11;:21;;9479:76;;;;;;;;;;;;:::i;:::-;;;;;;;;;9627:6;9613:11;:20;9591:9;:13;9601:2;9591:13;;;;;;;;;;;:19;9605:4;9591:19;;;;;;;;;;;;;;;:42;;;;9676:6;9655:9;:13;9665:2;9655:13;;;;;;;;;;;:17;9669:2;9655:17;;;;;;;;;;;;;;;;:27;;;;;;;:::i;:::-;;;;;;;;9731:2;9700:46;;9725:4;9700:46;;9715:8;9700:46;;;9735:2;9739:6;9700:46;;;;;;;:::i;:::-;;;;;;;;9759:68;9790:8;9800:4;9806:2;9810;9814:6;9822:4;9759:30;:68::i;:::-;9015:820;;;;;;;:::o;14219:221::-;;;;;;;:::o;15200:813::-;15440:15;:2;:13;;;:15::i;:::-;15436:570;;;15493:2;15476:43;;;15520:8;15530:4;15536:3;15541:7;15550:4;15476:79;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;15472:523;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;15868:6;15861:14;;;;;;;;;;;:::i;:::-;;;;;;;;15472:523;;;15917:62;;;;;;;;;;:::i;:::-;;;;;;;;15472:523;15649:48;;;15637:60;;;:8;:60;;;;15633:159;;15722:50;;;;;;;;;;:::i;:::-;;;;;;;;15633:159;15556:251;15436:570;15200:813;;;;;;:::o;16021:198::-;16087:16;16116:22;16155:1;16141:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16116:41;;16179:7;16168:5;16174:1;16168:8;;;;;;;;;;;;;;;;;;;;;:18;;;;;16206:5;16199:12;;;16021:198;;;:::o;14448:744::-;14663:15;:2;:13;;;:15::i;:::-;14659:526;;;14716:2;14699:38;;;14738:8;14748:4;14754:2;14758:6;14766:4;14699:72;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;14695:479;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;15047:6;15040:14;;;;;;;;;;;:::i;:::-;;;;;;;;14695:479;;;15096:62;;;;;;;;;;:::i;:::-;;;;;;;;14695:479;14833:43;;;14821:55;;;:8;:55;;;;14817:154;;14901:50;;;;;;;;;;:::i;:::-;;;;;;;;14817:154;14772:214;14659:526;14448:744;;;;;;:::o;2249:201::-;2309:4;2441:1;2419:7;:19;;;:23;2412:30;;2249:201;;;:::o;-1:-1:-1:-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;:::o;24:655:1:-;120:5;145:81;161:64;218:6;161:64;:::i;:::-;145:81;:::i;:::-;136:90;;246:5;275:6;268:5;261:21;309:4;302:5;298:16;291:23;;335:6;385:3;377:4;369:6;365:17;360:3;356:27;353:36;350:2;;;414:1;411;404:12;350:2;450:1;435:238;460:6;457:1;454:13;435:238;;;528:3;557:37;590:3;578:10;557:37;:::i;:::-;552:3;545:50;624:4;619:3;615:14;608:21;;658:4;653:3;649:14;642:21;;495:178;482:1;479;475:9;470:14;;435:238;;;439:14;126:553;;;;;;;:::o;702:655::-;798:5;823:81;839:64;896:6;839:64;:::i;:::-;823:81;:::i;:::-;814:90;;924:5;953:6;946:5;939:21;987:4;980:5;976:16;969:23;;1013:6;1063:3;1055:4;1047:6;1043:17;1038:3;1034:27;1031:36;1028:2;;;1092:1;1089;1082:12;1028:2;1128:1;1113:238;1138:6;1135:1;1132:13;1113:238;;;1206:3;1235:37;1268:3;1256:10;1235:37;:::i;:::-;1230:3;1223:50;1302:4;1297:3;1293:14;1286:21;;1336:4;1331:3;1327:14;1320:21;;1173:178;1160:1;1157;1153:9;1148:14;;1113:238;;;1117:14;804:553;;;;;;;:::o;1363:343::-;1440:5;1465:65;1481:48;1522:6;1481:48;:::i;:::-;1465:65;:::i;:::-;1456:74;;1553:6;1546:5;1539:21;1591:4;1584:5;1580:16;1629:3;1620:6;1615:3;1611:16;1608:25;1605:2;;;1646:1;1643;1636:12;1605:2;1659:41;1693:6;1688:3;1683;1659:41;:::i;:::-;1446:260;;;;;;:::o;1712:345::-;1790:5;1815:66;1831:49;1873:6;1831:49;:::i;:::-;1815:66;:::i;:::-;1806:75;;1904:6;1897:5;1890:21;1942:4;1935:5;1931:16;1980:3;1971:6;1966:3;1962:16;1959:25;1956:2;;;1997:1;1994;1987:12;1956:2;2010:41;2044:6;2039:3;2034;2010:41;:::i;:::-;1796:261;;;;;;:::o;2063:139::-;2109:5;2147:6;2134:20;2125:29;;2163:33;2190:5;2163:33;:::i;:::-;2115:87;;;;:::o;2225:303::-;2296:5;2345:3;2338:4;2330:6;2326:17;2322:27;2312:2;;2363:1;2360;2353:12;2312:2;2403:6;2390:20;2428:94;2518:3;2510:6;2503:4;2495:6;2491:17;2428:94;:::i;:::-;2419:103;;2302:226;;;;;:::o;2551:367::-;2624:8;2634:6;2684:3;2677:4;2669:6;2665:17;2661:27;2651:2;;2702:1;2699;2692:12;2651:2;2738:6;2725:20;2715:30;;2768:18;2760:6;2757:30;2754:2;;;2800:1;2797;2790:12;2754:2;2837:4;2829:6;2825:17;2813:29;;2891:3;2883:4;2875:6;2871:17;2861:8;2857:32;2854:41;2851:2;;;2908:1;2905;2898:12;2851:2;2641:277;;;;;:::o;2941:303::-;3012:5;3061:3;3054:4;3046:6;3042:17;3038:27;3028:2;;3079:1;3076;3069:12;3028:2;3119:6;3106:20;3144:94;3234:3;3226:6;3219:4;3211:6;3207:17;3144:94;:::i;:::-;3135:103;;3018:226;;;;;:::o;3250:133::-;3293:5;3331:6;3318:20;3309:29;;3347:30;3371:5;3347:30;:::i;:::-;3299:84;;;;:::o;3389:139::-;3435:5;3473:6;3460:20;3451:29;;3489:33;3516:5;3489:33;:::i;:::-;3441:87;;;;:::o;3534:137::-;3579:5;3617:6;3604:20;3595:29;;3633:32;3659:5;3633:32;:::i;:::-;3585:86;;;;:::o;3677:141::-;3733:5;3764:6;3758:13;3749:22;;3780:32;3806:5;3780:32;:::i;:::-;3739:79;;;;:::o;3837:271::-;3892:5;3941:3;3934:4;3926:6;3922:17;3918:27;3908:2;;3959:1;3956;3949:12;3908:2;3999:6;3986:20;4024:78;4098:3;4090:6;4083:4;4075:6;4071:17;4024:78;:::i;:::-;4015:87;;3898:210;;;;;:::o;4128:273::-;4184:5;4233:3;4226:4;4218:6;4214:17;4210:27;4200:2;;4251:1;4248;4241:12;4200:2;4291:6;4278:20;4316:79;4391:3;4383:6;4376:4;4368:6;4364:17;4316:79;:::i;:::-;4307:88;;4190:211;;;;;:::o;4407:139::-;4453:5;4491:6;4478:20;4469:29;;4507:33;4534:5;4507:33;:::i;:::-;4459:87;;;;:::o;4552:143::-;4609:5;4640:6;4634:13;4625:22;;4656:33;4683:5;4656:33;:::i;:::-;4615:80;;;;:::o;4701:262::-;4760:6;4809:2;4797:9;4788:7;4784:23;4780:32;4777:2;;;4825:1;4822;4815:12;4777:2;4868:1;4893:53;4938:7;4929:6;4918:9;4914:22;4893:53;:::i;:::-;4883:63;;4839:117;4767:196;;;;:::o;4969:407::-;5037:6;5045;5094:2;5082:9;5073:7;5069:23;5065:32;5062:2;;;5110:1;5107;5100:12;5062:2;5153:1;5178:53;5223:7;5214:6;5203:9;5199:22;5178:53;:::i;:::-;5168:63;;5124:117;5280:2;5306:53;5351:7;5342:6;5331:9;5327:22;5306:53;:::i;:::-;5296:63;;5251:118;5052:324;;;;;:::o;5382:1241::-;5536:6;5544;5552;5560;5568;5617:3;5605:9;5596:7;5592:23;5588:33;5585:2;;;5634:1;5631;5624:12;5585:2;5677:1;5702:53;5747:7;5738:6;5727:9;5723:22;5702:53;:::i;:::-;5692:63;;5648:117;5804:2;5830:53;5875:7;5866:6;5855:9;5851:22;5830:53;:::i;:::-;5820:63;;5775:118;5960:2;5949:9;5945:18;5932:32;5991:18;5983:6;5980:30;5977:2;;;6023:1;6020;6013:12;5977:2;6051:78;6121:7;6112:6;6101:9;6097:22;6051:78;:::i;:::-;6041:88;;5903:236;6206:2;6195:9;6191:18;6178:32;6237:18;6229:6;6226:30;6223:2;;;6269:1;6266;6259:12;6223:2;6297:78;6367:7;6358:6;6347:9;6343:22;6297:78;:::i;:::-;6287:88;;6149:236;6452:3;6441:9;6437:19;6424:33;6484:18;6476:6;6473:30;6470:2;;;6516:1;6513;6506:12;6470:2;6544:62;6598:7;6589:6;6578:9;6574:22;6544:62;:::i;:::-;6534:72;;6395:221;5575:1048;;;;;;;;:::o;6629:955::-;6733:6;6741;6749;6757;6765;6814:3;6802:9;6793:7;6789:23;6785:33;6782:2;;;6831:1;6828;6821:12;6782:2;6874:1;6899:53;6944:7;6935:6;6924:9;6920:22;6899:53;:::i;:::-;6889:63;;6845:117;7001:2;7027:53;7072:7;7063:6;7052:9;7048:22;7027:53;:::i;:::-;7017:63;;6972:118;7129:2;7155:53;7200:7;7191:6;7180:9;7176:22;7155:53;:::i;:::-;7145:63;;7100:118;7257:2;7283:53;7328:7;7319:6;7308:9;7304:22;7283:53;:::i;:::-;7273:63;;7228:118;7413:3;7402:9;7398:19;7385:33;7445:18;7437:6;7434:30;7431:2;;;7477:1;7474;7467:12;7431:2;7505:62;7559:7;7550:6;7539:9;7535:22;7505:62;:::i;:::-;7495:72;;7356:221;6772:812;;;;;;;;:::o;7590:401::-;7655:6;7663;7712:2;7700:9;7691:7;7687:23;7683:32;7680:2;;;7728:1;7725;7718:12;7680:2;7771:1;7796:53;7841:7;7832:6;7821:9;7817:22;7796:53;:::i;:::-;7786:63;;7742:117;7898:2;7924:50;7966:7;7957:6;7946:9;7942:22;7924:50;:::i;:::-;7914:60;;7869:115;7670:321;;;;;:::o;7997:407::-;8065:6;8073;8122:2;8110:9;8101:7;8097:23;8093:32;8090:2;;;8138:1;8135;8128:12;8090:2;8181:1;8206:53;8251:7;8242:6;8231:9;8227:22;8206:53;:::i;:::-;8196:63;;8152:117;8308:2;8334:53;8379:7;8370:6;8359:9;8355:22;8334:53;:::i;:::-;8324:63;;8279:118;8080:324;;;;;:::o;8410:552::-;8487:6;8495;8503;8552:2;8540:9;8531:7;8527:23;8523:32;8520:2;;;8568:1;8565;8558:12;8520:2;8611:1;8636:53;8681:7;8672:6;8661:9;8657:22;8636:53;:::i;:::-;8626:63;;8582:117;8738:2;8764:53;8809:7;8800:6;8789:9;8785:22;8764:53;:::i;:::-;8754:63;;8709:118;8866:2;8892:53;8937:7;8928:6;8917:9;8913:22;8892:53;:::i;:::-;8882:63;;8837:118;8510:452;;;;;:::o;8968:693::-;9086:6;9094;9143:2;9131:9;9122:7;9118:23;9114:32;9111:2;;;9159:1;9156;9149:12;9111:2;9230:1;9219:9;9215:17;9202:31;9260:18;9252:6;9249:30;9246:2;;;9292:1;9289;9282:12;9246:2;9320:78;9390:7;9381:6;9370:9;9366:22;9320:78;:::i;:::-;9310:88;;9173:235;9475:2;9464:9;9460:18;9447:32;9506:18;9498:6;9495:30;9492:2;;;9538:1;9535;9528:12;9492:2;9566:78;9636:7;9627:6;9616:9;9612:22;9566:78;:::i;:::-;9556:88;;9418:236;9101:560;;;;;:::o;9667:570::-;9762:6;9770;9778;9827:2;9815:9;9806:7;9802:23;9798:32;9795:2;;;9843:1;9840;9833:12;9795:2;9914:1;9903:9;9899:17;9886:31;9944:18;9936:6;9933:30;9930:2;;;9976:1;9973;9966:12;9930:2;10012:80;10084:7;10075:6;10064:9;10060:22;10012:80;:::i;:::-;9994:98;;;;9857:245;10141:2;10167:53;10212:7;10203:6;10192:9;10188:22;10167:53;:::i;:::-;10157:63;;10112:118;9785:452;;;;;:::o;10243:262::-;10302:6;10351:2;10339:9;10330:7;10326:23;10322:32;10319:2;;;10367:1;10364;10357:12;10319:2;10410:1;10435:53;10480:7;10471:6;10460:9;10456:22;10435:53;:::i;:::-;10425:63;;10381:117;10309:196;;;;:::o;10511:260::-;10569:6;10618:2;10606:9;10597:7;10593:23;10589:32;10586:2;;;10634:1;10631;10624:12;10586:2;10677:1;10702:52;10746:7;10737:6;10726:9;10722:22;10702:52;:::i;:::-;10692:62;;10648:116;10576:195;;;;:::o;10777:282::-;10846:6;10895:2;10883:9;10874:7;10870:23;10866:32;10863:2;;;10911:1;10908;10901:12;10863:2;10954:1;10979:63;11034:7;11025:6;11014:9;11010:22;10979:63;:::i;:::-;10969:73;;10925:127;10853:206;;;;:::o;11065:375::-;11134:6;11183:2;11171:9;11162:7;11158:23;11154:32;11151:2;;;11199:1;11196;11189:12;11151:2;11270:1;11259:9;11255:17;11242:31;11300:18;11292:6;11289:30;11286:2;;;11332:1;11329;11322:12;11286:2;11360:63;11415:7;11406:6;11395:9;11391:22;11360:63;:::i;:::-;11350:73;;11213:220;11141:299;;;;:::o;11446:262::-;11505:6;11554:2;11542:9;11533:7;11529:23;11525:32;11522:2;;;11570:1;11567;11560:12;11522:2;11613:1;11638:53;11683:7;11674:6;11663:9;11659:22;11638:53;:::i;:::-;11628:63;;11584:117;11512:196;;;;:::o;11714:284::-;11784:6;11833:2;11821:9;11812:7;11808:23;11804:32;11801:2;;;11849:1;11846;11839:12;11801:2;11892:1;11917:64;11973:7;11964:6;11953:9;11949:22;11917:64;:::i;:::-;11907:74;;11863:128;11791:207;;;;:::o;12004:407::-;12072:6;12080;12129:2;12117:9;12108:7;12104:23;12100:32;12097:2;;;12145:1;12142;12135:12;12097:2;12188:1;12213:53;12258:7;12249:6;12238:9;12234:22;12213:53;:::i;:::-;12203:63;;12159:117;12315:2;12341:53;12386:7;12377:6;12366:9;12362:22;12341:53;:::i;:::-;12331:63;;12286:118;12087:324;;;;;:::o;12417:179::-;12486:10;12507:46;12549:3;12541:6;12507:46;:::i;:::-;12585:4;12580:3;12576:14;12562:28;;12497:99;;;;:::o;12602:118::-;12689:24;12707:5;12689:24;:::i;:::-;12684:3;12677:37;12667:53;;:::o;12726:157::-;12831:45;12851:24;12869:5;12851:24;:::i;:::-;12831:45;:::i;:::-;12826:3;12819:58;12809:74;;:::o;12919:732::-;13038:3;13067:54;13115:5;13067:54;:::i;:::-;13137:86;13216:6;13211:3;13137:86;:::i;:::-;13130:93;;13247:56;13297:5;13247:56;:::i;:::-;13326:7;13357:1;13342:284;13367:6;13364:1;13361:13;13342:284;;;13443:6;13437:13;13470:63;13529:3;13514:13;13470:63;:::i;:::-;13463:70;;13556:60;13609:6;13556:60;:::i;:::-;13546:70;;13402:224;13389:1;13386;13382:9;13377:14;;13342:284;;;13346:14;13642:3;13635:10;;13043:608;;;;;;;:::o;13657:109::-;13738:21;13753:5;13738:21;:::i;:::-;13733:3;13726:34;13716:50;;:::o;13772:118::-;13859:24;13877:5;13859:24;:::i;:::-;13854:3;13847:37;13837:53;;:::o;13896:157::-;14001:45;14021:24;14039:5;14021:24;:::i;:::-;14001:45;:::i;:::-;13996:3;13989:58;13979:74;;:::o;14059:360::-;14145:3;14173:38;14205:5;14173:38;:::i;:::-;14227:70;14290:6;14285:3;14227:70;:::i;:::-;14220:77;;14306:52;14351:6;14346:3;14339:4;14332:5;14328:16;14306:52;:::i;:::-;14383:29;14405:6;14383:29;:::i;:::-;14378:3;14374:39;14367:46;;14149:270;;;;;:::o;14425:167::-;14530:55;14579:5;14530:55;:::i;:::-;14525:3;14518:68;14508:84;;:::o;14598:364::-;14686:3;14714:39;14747:5;14714:39;:::i;:::-;14769:71;14833:6;14828:3;14769:71;:::i;:::-;14762:78;;14849:52;14894:6;14889:3;14882:4;14875:5;14871:16;14849:52;:::i;:::-;14926:29;14948:6;14926:29;:::i;:::-;14921:3;14917:39;14910:46;;14690:272;;;;;:::o;14968:377::-;15074:3;15102:39;15135:5;15102:39;:::i;:::-;15157:89;15239:6;15234:3;15157:89;:::i;:::-;15150:96;;15255:52;15300:6;15295:3;15288:4;15281:5;15277:16;15255:52;:::i;:::-;15332:6;15327:3;15323:16;15316:23;;15078:267;;;;;:::o;15375:845::-;15478:3;15515:5;15509:12;15544:36;15570:9;15544:36;:::i;:::-;15596:89;15678:6;15673:3;15596:89;:::i;:::-;15589:96;;15716:1;15705:9;15701:17;15732:1;15727:137;;;;15878:1;15873:341;;;;15694:520;;15727:137;15811:4;15807:9;15796;15792:25;15787:3;15780:38;15847:6;15842:3;15838:16;15831:23;;15727:137;;15873:341;15940:38;15972:5;15940:38;:::i;:::-;16000:1;16014:154;16028:6;16025:1;16022:13;16014:154;;;16102:7;16096:14;16092:1;16087:3;16083:11;16076:35;16152:1;16143:7;16139:15;16128:26;;16050:4;16047:1;16043:12;16038:17;;16014:154;;;16197:6;16192:3;16188:16;16181:23;;15880:334;;15694:520;;15482:738;;;;;;:::o;16226:366::-;16368:3;16389:67;16453:2;16448:3;16389:67;:::i;:::-;16382:74;;16465:93;16554:3;16465:93;:::i;:::-;16583:2;16578:3;16574:12;16567:19;;16372:220;;;:::o;16598:366::-;16740:3;16761:67;16825:2;16820:3;16761:67;:::i;:::-;16754:74;;16837:93;16926:3;16837:93;:::i;:::-;16955:2;16950:3;16946:12;16939:19;;16744:220;;;:::o;16970:366::-;17112:3;17133:67;17197:2;17192:3;17133:67;:::i;:::-;17126:74;;17209:93;17298:3;17209:93;:::i;:::-;17327:2;17322:3;17318:12;17311:19;;17116:220;;;:::o;17342:366::-;17484:3;17505:67;17569:2;17564:3;17505:67;:::i;:::-;17498:74;;17581:93;17670:3;17581:93;:::i;:::-;17699:2;17694:3;17690:12;17683:19;;17488:220;;;:::o;17714:366::-;17856:3;17877:67;17941:2;17936:3;17877:67;:::i;:::-;17870:74;;17953:93;18042:3;17953:93;:::i;:::-;18071:2;18066:3;18062:12;18055:19;;17860:220;;;:::o;18086:366::-;18228:3;18249:67;18313:2;18308:3;18249:67;:::i;:::-;18242:74;;18325:93;18414:3;18325:93;:::i;:::-;18443:2;18438:3;18434:12;18427:19;;18232:220;;;:::o;18458:366::-;18600:3;18621:67;18685:2;18680:3;18621:67;:::i;:::-;18614:74;;18697:93;18786:3;18697:93;:::i;:::-;18815:2;18810:3;18806:12;18799:19;;18604:220;;;:::o;18830:366::-;18972:3;18993:67;19057:2;19052:3;18993:67;:::i;:::-;18986:74;;19069:93;19158:3;19069:93;:::i;:::-;19187:2;19182:3;19178:12;19171:19;;18976:220;;;:::o;19202:366::-;19344:3;19365:67;19429:2;19424:3;19365:67;:::i;:::-;19358:74;;19441:93;19530:3;19441:93;:::i;:::-;19559:2;19554:3;19550:12;19543:19;;19348:220;;;:::o;19574:366::-;19716:3;19737:67;19801:2;19796:3;19737:67;:::i;:::-;19730:74;;19813:93;19902:3;19813:93;:::i;:::-;19931:2;19926:3;19922:12;19915:19;;19720:220;;;:::o;19946:366::-;20088:3;20109:67;20173:2;20168:3;20109:67;:::i;:::-;20102:74;;20185:93;20274:3;20185:93;:::i;:::-;20303:2;20298:3;20294:12;20287:19;;20092:220;;;:::o;20318:366::-;20460:3;20481:67;20545:2;20540:3;20481:67;:::i;:::-;20474:74;;20557:93;20646:3;20557:93;:::i;:::-;20675:2;20670:3;20666:12;20659:19;;20464:220;;;:::o;20690:366::-;20832:3;20853:67;20917:2;20912:3;20853:67;:::i;:::-;20846:74;;20929:93;21018:3;20929:93;:::i;:::-;21047:2;21042:3;21038:12;21031:19;;20836:220;;;:::o;21062:366::-;21204:3;21225:67;21289:2;21284:3;21225:67;:::i;:::-;21218:74;;21301:93;21390:3;21301:93;:::i;:::-;21419:2;21414:3;21410:12;21403:19;;21208:220;;;:::o;21434:366::-;21576:3;21597:67;21661:2;21656:3;21597:67;:::i;:::-;21590:74;;21673:93;21762:3;21673:93;:::i;:::-;21791:2;21786:3;21782:12;21775:19;;21580:220;;;:::o;21806:366::-;21948:3;21969:67;22033:2;22028:3;21969:67;:::i;:::-;21962:74;;22045:93;22134:3;22045:93;:::i;:::-;22163:2;22158:3;22154:12;22147:19;;21952:220;;;:::o;22178:366::-;22320:3;22341:67;22405:2;22400:3;22341:67;:::i;:::-;22334:74;;22417:93;22506:3;22417:93;:::i;:::-;22535:2;22530:3;22526:12;22519:19;;22324:220;;;:::o;22550:366::-;22692:3;22713:67;22777:2;22772:3;22713:67;:::i;:::-;22706:74;;22789:93;22878:3;22789:93;:::i;:::-;22907:2;22902:3;22898:12;22891:19;;22696:220;;;:::o;22922:366::-;23064:3;23085:67;23149:2;23144:3;23085:67;:::i;:::-;23078:74;;23161:93;23250:3;23161:93;:::i;:::-;23279:2;23274:3;23270:12;23263:19;;23068:220;;;:::o;23294:366::-;23436:3;23457:67;23521:2;23516:3;23457:67;:::i;:::-;23450:74;;23533:93;23622:3;23533:93;:::i;:::-;23651:2;23646:3;23642:12;23635:19;;23440:220;;;:::o;23666:366::-;23808:3;23829:67;23893:2;23888:3;23829:67;:::i;:::-;23822:74;;23905:93;23994:3;23905:93;:::i;:::-;24023:2;24018:3;24014:12;24007:19;;23812:220;;;:::o;24038:366::-;24180:3;24201:67;24265:2;24260:3;24201:67;:::i;:::-;24194:74;;24277:93;24366:3;24277:93;:::i;:::-;24395:2;24390:3;24386:12;24379:19;;24184:220;;;:::o;24410:366::-;24552:3;24573:67;24637:2;24632:3;24573:67;:::i;:::-;24566:74;;24649:93;24738:3;24649:93;:::i;:::-;24767:2;24762:3;24758:12;24751:19;;24556:220;;;:::o;24782:366::-;24924:3;24945:67;25009:2;25004:3;24945:67;:::i;:::-;24938:74;;25021:93;25110:3;25021:93;:::i;:::-;25139:2;25134:3;25130:12;25123:19;;24928:220;;;:::o;25154:366::-;25296:3;25317:67;25381:2;25376:3;25317:67;:::i;:::-;25310:74;;25393:93;25482:3;25393:93;:::i;:::-;25511:2;25506:3;25502:12;25495:19;;25300:220;;;:::o;25526:108::-;25603:24;25621:5;25603:24;:::i;:::-;25598:3;25591:37;25581:53;;:::o;25640:118::-;25727:24;25745:5;25727:24;:::i;:::-;25722:3;25715:37;25705:53;;:::o;25764:157::-;25869:45;25889:24;25907:5;25889:24;:::i;:::-;25869:45;:::i;:::-;25864:3;25857:58;25847:74;;:::o;25927:397::-;26067:3;26082:75;26153:3;26144:6;26082:75;:::i;:::-;26182:2;26177:3;26173:12;26166:19;;26195:75;26266:3;26257:6;26195:75;:::i;:::-;26295:2;26290:3;26286:12;26279:19;;26315:3;26308:10;;26071:253;;;;;:::o;26330:397::-;26470:3;26485:75;26556:3;26547:6;26485:75;:::i;:::-;26585:2;26580:3;26576:12;26569:19;;26598:75;26669:3;26660:6;26598:75;:::i;:::-;26698:2;26693:3;26689:12;26682:19;;26718:3;26711:10;;26474:253;;;;;:::o;26733:429::-;26910:3;26932:92;27020:3;27011:6;26932:92;:::i;:::-;26925:99;;27041:95;27132:3;27123:6;27041:95;:::i;:::-;27034:102;;27153:3;27146:10;;26914:248;;;;;:::o;27168:222::-;27261:4;27299:2;27288:9;27284:18;27276:26;;27312:71;27380:1;27369:9;27365:17;27356:6;27312:71;:::i;:::-;27266:124;;;;:::o;27396:1053::-;27719:4;27757:3;27746:9;27742:19;27734:27;;27771:71;27839:1;27828:9;27824:17;27815:6;27771:71;:::i;:::-;27852:72;27920:2;27909:9;27905:18;27896:6;27852:72;:::i;:::-;27971:9;27965:4;27961:20;27956:2;27945:9;27941:18;27934:48;27999:108;28102:4;28093:6;27999:108;:::i;:::-;27991:116;;28154:9;28148:4;28144:20;28139:2;28128:9;28124:18;28117:48;28182:108;28285:4;28276:6;28182:108;:::i;:::-;28174:116;;28338:9;28332:4;28328:20;28322:3;28311:9;28307:19;28300:49;28366:76;28437:4;28428:6;28366:76;:::i;:::-;28358:84;;27724:725;;;;;;;;:::o;28455:751::-;28678:4;28716:3;28705:9;28701:19;28693:27;;28730:71;28798:1;28787:9;28783:17;28774:6;28730:71;:::i;:::-;28811:72;28879:2;28868:9;28864:18;28855:6;28811:72;:::i;:::-;28893;28961:2;28950:9;28946:18;28937:6;28893:72;:::i;:::-;28975;29043:2;29032:9;29028:18;29019:6;28975:72;:::i;:::-;29095:9;29089:4;29085:20;29079:3;29068:9;29064:19;29057:49;29123:76;29194:4;29185:6;29123:76;:::i;:::-;29115:84;;28683:523;;;;;;;;:::o;29212:373::-;29355:4;29393:2;29382:9;29378:18;29370:26;;29442:9;29436:4;29432:20;29428:1;29417:9;29413:17;29406:47;29470:108;29573:4;29564:6;29470:108;:::i;:::-;29462:116;;29360:225;;;;:::o;29591:634::-;29812:4;29850:2;29839:9;29835:18;29827:26;;29899:9;29893:4;29889:20;29885:1;29874:9;29870:17;29863:47;29927:108;30030:4;30021:6;29927:108;:::i;:::-;29919:116;;30082:9;30076:4;30072:20;30067:2;30056:9;30052:18;30045:48;30110:108;30213:4;30204:6;30110:108;:::i;:::-;30102:116;;29817:408;;;;;:::o;30231:210::-;30318:4;30356:2;30345:9;30341:18;30333:26;;30369:65;30431:1;30420:9;30416:17;30407:6;30369:65;:::i;:::-;30323:118;;;;:::o;30447:222::-;30540:4;30578:2;30567:9;30563:18;30555:26;;30591:71;30659:1;30648:9;30644:17;30635:6;30591:71;:::i;:::-;30545:124;;;;:::o;30675:258::-;30786:4;30824:2;30813:9;30809:18;30801:26;;30837:89;30923:1;30912:9;30908:17;30899:6;30837:89;:::i;:::-;30791:142;;;;:::o;30939:313::-;31052:4;31090:2;31079:9;31075:18;31067:26;;31139:9;31133:4;31129:20;31125:1;31114:9;31110:17;31103:47;31167:78;31240:4;31231:6;31167:78;:::i;:::-;31159:86;;31057:195;;;;:::o;31258:419::-;31424:4;31462:2;31451:9;31447:18;31439:26;;31511:9;31505:4;31501:20;31497:1;31486:9;31482:17;31475:47;31539:131;31665:4;31539:131;:::i;:::-;31531:139;;31429:248;;;:::o;31683:419::-;31849:4;31887:2;31876:9;31872:18;31864:26;;31936:9;31930:4;31926:20;31922:1;31911:9;31907:17;31900:47;31964:131;32090:4;31964:131;:::i;:::-;31956:139;;31854:248;;;:::o;32108:419::-;32274:4;32312:2;32301:9;32297:18;32289:26;;32361:9;32355:4;32351:20;32347:1;32336:9;32332:17;32325:47;32389:131;32515:4;32389:131;:::i;:::-;32381:139;;32279:248;;;:::o;32533:419::-;32699:4;32737:2;32726:9;32722:18;32714:26;;32786:9;32780:4;32776:20;32772:1;32761:9;32757:17;32750:47;32814:131;32940:4;32814:131;:::i;:::-;32806:139;;32704:248;;;:::o;32958:419::-;33124:4;33162:2;33151:9;33147:18;33139:26;;33211:9;33205:4;33201:20;33197:1;33186:9;33182:17;33175:47;33239:131;33365:4;33239:131;:::i;:::-;33231:139;;33129:248;;;:::o;33383:419::-;33549:4;33587:2;33576:9;33572:18;33564:26;;33636:9;33630:4;33626:20;33622:1;33611:9;33607:17;33600:47;33664:131;33790:4;33664:131;:::i;:::-;33656:139;;33554:248;;;:::o;33808:419::-;33974:4;34012:2;34001:9;33997:18;33989:26;;34061:9;34055:4;34051:20;34047:1;34036:9;34032:17;34025:47;34089:131;34215:4;34089:131;:::i;:::-;34081:139;;33979:248;;;:::o;34233:419::-;34399:4;34437:2;34426:9;34422:18;34414:26;;34486:9;34480:4;34476:20;34472:1;34461:9;34457:17;34450:47;34514:131;34640:4;34514:131;:::i;:::-;34506:139;;34404:248;;;:::o;34658:419::-;34824:4;34862:2;34851:9;34847:18;34839:26;;34911:9;34905:4;34901:20;34897:1;34886:9;34882:17;34875:47;34939:131;35065:4;34939:131;:::i;:::-;34931:139;;34829:248;;;:::o;35083:419::-;35249:4;35287:2;35276:9;35272:18;35264:26;;35336:9;35330:4;35326:20;35322:1;35311:9;35307:17;35300:47;35364:131;35490:4;35364:131;:::i;:::-;35356:139;;35254:248;;;:::o;35508:419::-;35674:4;35712:2;35701:9;35697:18;35689:26;;35761:9;35755:4;35751:20;35747:1;35736:9;35732:17;35725:47;35789:131;35915:4;35789:131;:::i;:::-;35781:139;;35679:248;;;:::o;35933:419::-;36099:4;36137:2;36126:9;36122:18;36114:26;;36186:9;36180:4;36176:20;36172:1;36161:9;36157:17;36150:47;36214:131;36340:4;36214:131;:::i;:::-;36206:139;;36104:248;;;:::o;36358:419::-;36524:4;36562:2;36551:9;36547:18;36539:26;;36611:9;36605:4;36601:20;36597:1;36586:9;36582:17;36575:47;36639:131;36765:4;36639:131;:::i;:::-;36631:139;;36529:248;;;:::o;36783:419::-;36949:4;36987:2;36976:9;36972:18;36964:26;;37036:9;37030:4;37026:20;37022:1;37011:9;37007:17;37000:47;37064:131;37190:4;37064:131;:::i;:::-;37056:139;;36954:248;;;:::o;37208:419::-;37374:4;37412:2;37401:9;37397:18;37389:26;;37461:9;37455:4;37451:20;37447:1;37436:9;37432:17;37425:47;37489:131;37615:4;37489:131;:::i;:::-;37481:139;;37379:248;;;:::o;37633:419::-;37799:4;37837:2;37826:9;37822:18;37814:26;;37886:9;37880:4;37876:20;37872:1;37861:9;37857:17;37850:47;37914:131;38040:4;37914:131;:::i;:::-;37906:139;;37804:248;;;:::o;38058:419::-;38224:4;38262:2;38251:9;38247:18;38239:26;;38311:9;38305:4;38301:20;38297:1;38286:9;38282:17;38275:47;38339:131;38465:4;38339:131;:::i;:::-;38331:139;;38229:248;;;:::o;38483:419::-;38649:4;38687:2;38676:9;38672:18;38664:26;;38736:9;38730:4;38726:20;38722:1;38711:9;38707:17;38700:47;38764:131;38890:4;38764:131;:::i;:::-;38756:139;;38654:248;;;:::o;38908:419::-;39074:4;39112:2;39101:9;39097:18;39089:26;;39161:9;39155:4;39151:20;39147:1;39136:9;39132:17;39125:47;39189:131;39315:4;39189:131;:::i;:::-;39181:139;;39079:248;;;:::o;39333:419::-;39499:4;39537:2;39526:9;39522:18;39514:26;;39586:9;39580:4;39576:20;39572:1;39561:9;39557:17;39550:47;39614:131;39740:4;39614:131;:::i;:::-;39606:139;;39504:248;;;:::o;39758:419::-;39924:4;39962:2;39951:9;39947:18;39939:26;;40011:9;40005:4;40001:20;39997:1;39986:9;39982:17;39975:47;40039:131;40165:4;40039:131;:::i;:::-;40031:139;;39929:248;;;:::o;40183:419::-;40349:4;40387:2;40376:9;40372:18;40364:26;;40436:9;40430:4;40426:20;40422:1;40411:9;40407:17;40400:47;40464:131;40590:4;40464:131;:::i;:::-;40456:139;;40354:248;;;:::o;40608:419::-;40774:4;40812:2;40801:9;40797:18;40789:26;;40861:9;40855:4;40851:20;40847:1;40836:9;40832:17;40825:47;40889:131;41015:4;40889:131;:::i;:::-;40881:139;;40779:248;;;:::o;41033:419::-;41199:4;41237:2;41226:9;41222:18;41214:26;;41286:9;41280:4;41276:20;41272:1;41261:9;41257:17;41250:47;41314:131;41440:4;41314:131;:::i;:::-;41306:139;;41204:248;;;:::o;41458:419::-;41624:4;41662:2;41651:9;41647:18;41639:26;;41711:9;41705:4;41701:20;41697:1;41686:9;41682:17;41675:47;41739:131;41865:4;41739:131;:::i;:::-;41731:139;;41629:248;;;:::o;41883:222::-;41976:4;42014:2;42003:9;41999:18;41991:26;;42027:71;42095:1;42084:9;42080:17;42071:6;42027:71;:::i;:::-;41981:124;;;;:::o;42111:332::-;42232:4;42270:2;42259:9;42255:18;42247:26;;42283:71;42351:1;42340:9;42336:17;42327:6;42283:71;:::i;:::-;42364:72;42432:2;42421:9;42417:18;42408:6;42364:72;:::i;:::-;42237:206;;;;;:::o;42449:129::-;42483:6;42510:20;;:::i;:::-;42500:30;;42539:33;42567:4;42559:6;42539:33;:::i;:::-;42490:88;;;:::o;42584:75::-;42617:6;42650:2;42644:9;42634:19;;42624:35;:::o;42665:311::-;42742:4;42832:18;42824:6;42821:30;42818:2;;;42854:18;;:::i;:::-;42818:2;42904:4;42896:6;42892:17;42884:25;;42964:4;42958;42954:15;42946:23;;42747:229;;;:::o;42982:311::-;43059:4;43149:18;43141:6;43138:30;43135:2;;;43171:18;;:::i;:::-;43135:2;43221:4;43213:6;43209:17;43201:25;;43281:4;43275;43271:15;43263:23;;43064:229;;;:::o;43299:307::-;43360:4;43450:18;43442:6;43439:30;43436:2;;;43472:18;;:::i;:::-;43436:2;43510:29;43532:6;43510:29;:::i;:::-;43502:37;;43594:4;43588;43584:15;43576:23;;43365:241;;;:::o;43612:308::-;43674:4;43764:18;43756:6;43753:30;43750:2;;;43786:18;;:::i;:::-;43750:2;43824:29;43846:6;43824:29;:::i;:::-;43816:37;;43908:4;43902;43898:15;43890:23;;43679:241;;;:::o;43926:132::-;43993:4;44016:3;44008:11;;44046:4;44041:3;44037:14;44029:22;;43998:60;;;:::o;44064:141::-;44113:4;44136:3;44128:11;;44159:3;44156:1;44149:14;44193:4;44190:1;44180:18;44172:26;;44118:87;;;:::o;44211:114::-;44278:6;44312:5;44306:12;44296:22;;44285:40;;;:::o;44331:98::-;44382:6;44416:5;44410:12;44400:22;;44389:40;;;:::o;44435:99::-;44487:6;44521:5;44515:12;44505:22;;44494:40;;;:::o;44540:113::-;44610:4;44642;44637:3;44633:14;44625:22;;44615:38;;;:::o;44659:184::-;44758:11;44792:6;44787:3;44780:19;44832:4;44827:3;44823:14;44808:29;;44770:73;;;;:::o;44849:168::-;44932:11;44966:6;44961:3;44954:19;45006:4;45001:3;44997:14;44982:29;;44944:73;;;;:::o;45023:169::-;45107:11;45141:6;45136:3;45129:19;45181:4;45176:3;45172:14;45157:29;;45119:73;;;;:::o;45198:148::-;45300:11;45337:3;45322:18;;45312:34;;;;:::o;45352:305::-;45392:3;45411:20;45429:1;45411:20;:::i;:::-;45406:25;;45445:20;45463:1;45445:20;:::i;:::-;45440:25;;45599:1;45531:66;45527:74;45524:1;45521:81;45518:2;;;45605:18;;:::i;:::-;45518:2;45649:1;45646;45642:9;45635:16;;45396:261;;;;:::o;45663:185::-;45703:1;45720:20;45738:1;45720:20;:::i;:::-;45715:25;;45754:20;45772:1;45754:20;:::i;:::-;45749:25;;45793:1;45783:2;;45798:18;;:::i;:::-;45783:2;45840:1;45837;45833:9;45828:14;;45705:143;;;;:::o;45854:191::-;45894:4;45914:20;45932:1;45914:20;:::i;:::-;45909:25;;45948:20;45966:1;45948:20;:::i;:::-;45943:25;;45987:1;45984;45981:8;45978:2;;;45992:18;;:::i;:::-;45978:2;46037:1;46034;46030:9;46022:17;;45899:146;;;;:::o;46051:96::-;46088:7;46117:24;46135:5;46117:24;:::i;:::-;46106:35;;46096:51;;;:::o;46153:90::-;46187:7;46230:5;46223:13;46216:21;46205:32;;46195:48;;;:::o;46249:77::-;46286:7;46315:5;46304:16;;46294:32;;;:::o;46332:149::-;46368:7;46408:66;46401:5;46397:78;46386:89;;46376:105;;;:::o;46487:126::-;46524:7;46564:42;46557:5;46553:54;46542:65;;46532:81;;;:::o;46619:77::-;46656:7;46685:5;46674:16;;46664:32;;;:::o;46702:162::-;46770:9;46803:55;46852:5;46803:55;:::i;:::-;46790:68;;46780:84;;;:::o;46870:131::-;46938:9;46971:24;46989:5;46971:24;:::i;:::-;46958:37;;46948:53;;;:::o;47007:154::-;47091:6;47086:3;47081;47068:30;47153:1;47144:6;47139:3;47135:16;47128:27;47058:103;;;:::o;47167:307::-;47235:1;47245:113;47259:6;47256:1;47253:13;47245:113;;;47344:1;47339:3;47335:11;47329:18;47325:1;47320:3;47316:11;47309:39;47281:2;47278:1;47274:10;47269:15;;47245:113;;;47376:6;47373:1;47370:13;47367:2;;;47456:1;47447:6;47442:3;47438:16;47431:27;47367:2;47216:258;;;;:::o;47480:320::-;47524:6;47561:1;47555:4;47551:12;47541:22;;47608:1;47602:4;47598:12;47629:18;47619:2;;47685:4;47677:6;47673:17;47663:27;;47619:2;47747;47739:6;47736:14;47716:18;47713:38;47710:2;;;47766:18;;:::i;:::-;47710:2;47531:269;;;;:::o;47806:281::-;47889:27;47911:4;47889:27;:::i;:::-;47881:6;47877:40;48019:6;48007:10;48004:22;47983:18;47971:10;47968:34;47965:62;47962:2;;;48030:18;;:::i;:::-;47962:2;48070:10;48066:2;48059:22;47849:238;;;:::o;48093:233::-;48132:3;48155:24;48173:5;48155:24;:::i;:::-;48146:33;;48201:66;48194:5;48191:77;48188:2;;;48271:18;;:::i;:::-;48188:2;48318:1;48311:5;48307:13;48300:20;;48136:190;;;:::o;48332:100::-;48371:7;48400:26;48420:5;48400:26;:::i;:::-;48389:37;;48379:53;;;:::o;48438:79::-;48477:7;48506:5;48495:16;;48485:32;;;:::o;48523:94::-;48562:7;48591:20;48605:5;48591:20;:::i;:::-;48580:31;;48570:47;;;:::o;48623:79::-;48662:7;48691:5;48680:16;;48670:32;;;:::o;48708:176::-;48740:1;48757:20;48775:1;48757:20;:::i;:::-;48752:25;;48791:20;48809:1;48791:20;:::i;:::-;48786:25;;48830:1;48820:2;;48835:18;;:::i;:::-;48820:2;48876:1;48873;48869:9;48864:14;;48742:142;;;;:::o;48890:180::-;48938:77;48935:1;48928:88;49035:4;49032:1;49025:15;49059:4;49056:1;49049:15;49076:180;49124:77;49121:1;49114:88;49221:4;49218:1;49211:15;49245:4;49242:1;49235:15;49262:180;49310:77;49307:1;49300:88;49407:4;49404:1;49397:15;49431:4;49428:1;49421:15;49448:180;49496:77;49493:1;49486:88;49593:4;49590:1;49583:15;49617:4;49614:1;49607:15;49634:183;49669:3;49707:1;49689:16;49686:23;49683:2;;;49745:1;49742;49739;49724:23;49767:34;49798:1;49792:8;49767:34;:::i;:::-;49760:41;;49683:2;49673:144;:::o;49823:102::-;49864:6;49915:2;49911:7;49906:2;49899:5;49895:14;49891:28;49881:38;;49871:54;;;:::o;49931:94::-;49964:8;50012:5;50008:2;50004:14;49983:35;;49973:52;;;:::o;50031:106::-;50075:8;50124:5;50119:3;50115:15;50094:36;;50084:53;;;:::o;50143:239::-;50283:34;50279:1;50271:6;50267:14;50260:58;50352:22;50347:2;50339:6;50335:15;50328:47;50249:133;:::o;50388:227::-;50528:34;50524:1;50516:6;50512:14;50505:58;50597:10;50592:2;50584:6;50580:15;50573:35;50494:121;:::o;50621:223::-;50761:34;50757:1;50749:6;50745:14;50738:58;50830:6;50825:2;50817:6;50813:15;50806:31;50727:117;:::o;50850:230::-;50990:34;50986:1;50978:6;50974:14;50967:58;51059:13;51054:2;51046:6;51042:15;51035:38;50956:124;:::o;51086:225::-;51226:34;51222:1;51214:6;51210:14;51203:58;51295:8;51290:2;51282:6;51278:15;51271:33;51192:119;:::o;51317:223::-;51457:34;51453:1;51445:6;51441:14;51434:58;51526:6;51521:2;51513:6;51509:15;51502:31;51423:117;:::o;51546:165::-;51686:17;51682:1;51674:6;51670:14;51663:41;51652:59;:::o;51717:162::-;51857:14;51853:1;51845:6;51841:14;51834:38;51823:56;:::o;51885:228::-;52025:34;52021:1;52013:6;52009:14;52002:58;52094:11;52089:2;52081:6;52077:15;52070:36;51991:122;:::o;52119:173::-;52259:25;52255:1;52247:6;52243:14;52236:49;52225:67;:::o;52298:229::-;52438:34;52434:1;52426:6;52422:14;52415:58;52507:12;52502:2;52494:6;52490:15;52483:37;52404:123;:::o;52533:224::-;52673:34;52669:1;52661:6;52657:14;52650:58;52742:7;52737:2;52729:6;52725:15;52718:32;52639:118;:::o;52763:237::-;52903:34;52899:1;52891:6;52887:14;52880:58;52972:20;52967:2;52959:6;52955:15;52948:45;52869:131;:::o;53006:161::-;53146:13;53142:1;53134:6;53130:14;53123:37;53112:55;:::o;53173:222::-;53313:34;53309:1;53301:6;53297:14;53290:58;53382:5;53377:2;53369:6;53365:15;53358:30;53279:116;:::o;53401:229::-;53541:34;53537:1;53529:6;53525:14;53518:58;53610:12;53605:2;53597:6;53593:15;53586:37;53507:123;:::o;53636:178::-;53776:30;53772:1;53764:6;53760:14;53753:54;53742:72;:::o;53820:182::-;53960:34;53956:1;53948:6;53944:14;53937:58;53926:76;:::o;54008:165::-;54148:17;54144:1;54136:6;54132:14;54125:41;54114:59;:::o;54179:228::-;54319:34;54315:1;54307:6;54303:14;54296:58;54388:11;54383:2;54375:6;54371:15;54364:36;54285:122;:::o;54413:228::-;54553:34;54549:1;54541:6;54537:14;54530:58;54622:11;54617:2;54609:6;54605:15;54598:36;54519:122;:::o;54647:172::-;54787:24;54783:1;54775:6;54771:14;54764:48;54753:66;:::o;54825:166::-;54965:18;54961:1;54953:6;54949:14;54942:42;54931:60;:::o;54997:227::-;55137:34;55133:1;55125:6;55121:14;55114:58;55206:10;55201:2;55193:6;55189:15;55182:35;55103:121;:::o;55230:220::-;55370:34;55366:1;55358:6;55354:14;55347:58;55439:3;55434:2;55426:6;55422:15;55415:28;55336:114;:::o;55456:711::-;55495:3;55533:4;55515:16;55512:26;55509:2;;;55541:5;;55509:2;55570:20;;:::i;:::-;55645:1;55627:16;55623:24;55620:1;55614:4;55599:49;55678:4;55672:11;55777:16;55770:4;55762:6;55758:17;55755:39;55722:18;55714:6;55711:30;55695:113;55692:2;;;55823:5;;;;55692:2;55869:6;55863:4;55859:17;55905:3;55899:10;55932:18;55924:6;55921:30;55918:2;;;55954:5;;;;;;55918:2;56002:6;55995:4;55990:3;55986:14;55982:27;56061:1;56043:16;56039:24;56033:4;56029:35;56024:3;56021:44;56018:2;;;56068:5;;;;;;;56018:2;56085:57;56133:6;56127:4;56123:17;56115:6;56111:30;56105:4;56085:57;:::i;:::-;56158:3;56151:10;;55499:668;;;;;;;:::o;56173:122::-;56246:24;56264:5;56246:24;:::i;:::-;56239:5;56236:35;56226:2;;56285:1;56282;56275:12;56226:2;56216:79;:::o;56301:116::-;56371:21;56386:5;56371:21;:::i;:::-;56364:5;56361:32;56351:2;;56407:1;56404;56397:12;56351:2;56341:76;:::o;56423:122::-;56496:24;56514:5;56496:24;:::i;:::-;56489:5;56486:35;56476:2;;56535:1;56532;56525:12;56476:2;56466:79;:::o;56551:120::-;56623:23;56640:5;56623:23;:::i;:::-;56616:5;56613:34;56603:2;;56661:1;56658;56651:12;56603:2;56593:78;:::o;56677:122::-;56750:24;56768:5;56750:24;:::i;:::-;56743:5;56740:35;56730:2;;56789:1;56786;56779:12;56730:2;56720:79;:::o

Swarm Source

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