ETH Price: $3,678.54 (+10.76%)

Token

Town Star ()
 

Overview

Max Total Supply

0

Holders

57,774

Market

Volume (24H)

0.6225 ETH

Min Price (24H)

$0.74 @ 0.000200 ETH

Max Price (24H)

$517.94 @ 0.140800 ETH
0xd8bcfffbf8dc67353cd0739f4f2ad487c657d5b0
Loading...
Loading
Loading...
Loading
Loading...
Loading

OVERVIEW

From one of the founders of Zynga and some of the creative minds behind FarmVille and Words With Friends comes Town Star. Blockchain is the next evolution of gaming and has the $148B industry buzzing with excitement. It’s gaming re-imagined to benefit creators and players, alike.

# Exchange Pair Price  24H Volume % Volume

Contract Source Code Verified (Exact Match)

Contract Name:
Gala

Compiler Version
v0.5.17+commit.d19bba13

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity Multiple files format)

File 4 of 9: Gala.sol
import "./SafeMath.sol";
import "./Address.sol";
import "./Common.sol";
import "./IERC1155TokenReceiver.sol";
import "./IERC1155.sol";

pragma solidity ^0.5.0;


contract Gala is IERC1155, ERC165, CommonConstants {
    using SafeMath for uint256;
    using Address for address;

    uint256 constant TYPE_MASK = uint256(uint128(~0)) << 128;
    uint256 constant NF_INDEX_MASK = uint128(~0);
    uint256 constant TYPE_NF_BIT = 1 << 255;
    uint256 nonce;

    address public owner;

    mapping(uint256 => mapping(address => uint256)) internal balances; // id => (owner => balance)
    mapping(address => mapping(address => bool)) internal operatorApproval; // owner => (operator => approved)
    mapping(uint256 => address) nfOwners;
    mapping(uint256 => uint256) public maxIndex;
    mapping(address => mapping(address => mapping(uint256 => uint256))) allowances;
    mapping(uint256 => uint256) public tokenSupply;
    mapping(uint256 => uint256) public tokenSupplyLimit;
    mapping(address => bool) internal creators;

    event Approval(
        address indexed _owner,
        address indexed _spender,
        uint256 indexed _id,
        uint256 _oldValue,
        uint256 _value
    );
    event SupplyLimit(uint256 indexed _id, uint256 _supplyLimit);

    event TransferSingle(
        address indexed _operator,
        address indexed _from,
        address indexed _to,
        uint256 _id,
        uint256 _value
    );
    event ApprovalForAll(address indexed _owner, address indexed _operator, bool _approved);
    event URI(string _value, uint256 indexed _id);
    event TransferBatch(
        address indexed _operator,
        address indexed _from,
        address indexed _to,
        uint256[] _ids,
        uint256[] _values
    );

    event Creator(address _creator);

    constructor() public {
        owner = msg.sender;
        creators[msg.sender] = true;
    }

    modifier creatorOnly() {
        require(creators[msg.sender], "Creator permission required");
        _;
    }

    modifier ownerOnly() {
        require(msg.sender == owner);
        _;
    }

    function create(string calldata _uri, bool _isNF) external creatorOnly returns (uint256 _type) {
        _type = (++nonce << 128);

        if (_isNF) _type = _type | TYPE_NF_BIT;

        emit TransferSingle(msg.sender, address(0x0), address(0x0), _type, 0);

        if (bytes(_uri).length > 0) emit URI(_uri, _type);
        return _type;
    }

    function mintNonFungible(
        uint256 _type,
        address[] calldata _to,
        bytes calldata _data
    ) external creatorOnly {
        require(isNonFungible(_type));
        uint256 index = maxIndex[_type] + 1;
        maxIndex[_type] = _to.length.add(maxIndex[_type]);
        for (uint256 i = 0; i < _to.length; ++i) {
            address distributeTo = _to[i];
            uint256 id = _type | (index + i);
            require(
                tokenSupplyLimit[_type] == 0 ||
                    tokenSupply[_type].add(1) <= tokenSupplyLimit[_type],
                "Token supply limit exceeded"
            );
            nfOwners[id] = distributeTo;
            tokenSupply[_type] = tokenSupply[_type].add(1);
            balances[_type][distributeTo] = balances[_type][distributeTo].add(1);

            emit TransferSingle(msg.sender, address(0x0), distributeTo, id, 1);

            if (distributeTo.isContract()) {
                _doSafeTransferAcceptanceCheck(msg.sender, msg.sender, distributeTo, id, 1, _data);
            }
        }
    }

    function mintFungible(
        uint256 _id,
        address[] calldata _to,
        uint256[] calldata _quantities,
        bytes calldata _data
    ) external creatorOnly {
        require(isFungible(_id), "ID must be a non-fungible ID");
        for (uint256 i = 0; i < _to.length; ++i) {
            require(
                tokenSupplyLimit[_id] == 0 ||
                    tokenSupply[_id].add(_quantities[i]) <= tokenSupplyLimit[_id],
                "Token supply limit exceeded"
            );
            balances[_id][_to[i]] = _quantities[i].add(balances[_id][_to[i]]);
            tokenSupply[_id] = tokenSupply[_id].add(_quantities[i]);

            emit TransferSingle(msg.sender, address(0x0), _to[i], _id, _quantities[i]);

            if (_to[i].isContract()) {
                _doSafeTransferAcceptanceCheck(
                    msg.sender,
                    msg.sender,
                    _to[i],
                    _id,
                    _quantities[i],
                    _data
                );
            }
        }
    }

    function safeTransferFrom(
        address _from,
        address _to,
        uint256 _id,
        uint256 _value,
        bytes calldata _data
    ) external {
        require(_to != address(0x0), "cannot send to zero address");
        require(
            _from == msg.sender || operatorApproval[_from][msg.sender] == true,
            "Need operator approval for 3rd party transfers."
        );

        if (isNonFungible(_id)) {
            require(nfOwners[_id] == _from);
            nfOwners[_id] = _to;
            // You could keep balance of NF type in base type id like so:
            uint256 baseType = getNonFungibleBaseType(_id);
            balances[baseType][_from] = balances[baseType][_from].sub(_value);
            balances[baseType][_to] = balances[baseType][_to].add(_value);
        } else {
            balances[_id][_from] = balances[_id][_from].sub(_value);
            balances[_id][_to] = balances[_id][_to].add(_value);
        }

        emit TransferSingle(msg.sender, _from, _to, _id, _value);

        if (_to.isContract()) {
            _doSafeTransferAcceptanceCheck(msg.sender, _from, _to, _id, _value, _data);
        }
    }

    function safeBatchTransferFrom(
        address _from,
        address _to,
        uint256[] calldata _ids,
        uint256[] calldata _values,
        bytes calldata _data
    ) external {
        require(_to != address(0x0), "cannot send to zero address");
        require(_ids.length == _values.length, "Array length must match");
        require(
            _from == msg.sender || operatorApproval[_from][msg.sender] == true,
            "Need operator approval for 3rd party transfers."
        );

        for (uint256 i = 0; i < _ids.length; ++i) {
            if (isNonFungible(_ids[i])) {
                require(nfOwners[_ids[i]] == _from);
                nfOwners[_ids[i]] = _to;
                balances[getNonFungibleBaseType(_ids[i])][_from] = balances[getNonFungibleBaseType(
                    _ids[i]
                )][_from]
                    .sub(_values[i]);
                balances[getNonFungibleBaseType(_ids[i])][_to] = balances[getNonFungibleBaseType(
                    _ids[i]
                )][_to]
                    .add(_values[i]);
            } else {
                balances[_ids[i]][_from] = balances[_ids[i]][_from].sub(_values[i]);
                balances[_ids[i]][_to] = _values[i].add(balances[_ids[i]][_to]);
            }
        }

        emit TransferBatch(msg.sender, _from, _to, _ids, _values);

        if (_to.isContract()) {
            _doSafeBatchTransferAcceptanceCheck(msg.sender, _from, _to, _ids, _values, _data);
        }
    }

    function balanceOf(address _owner, uint256 _id) external view returns (uint256) {
        if (isNonFungibleItem(_id)) return nfOwners[_id] == _owner ? 1 : 0;
        return balances[_id][_owner];
    }

    function balanceOfBatch(address[] calldata _owners, uint256[] calldata _ids)
        external
        view
        returns (uint256[] memory)
    {
        require(_owners.length == _ids.length);
        uint256[] memory balances_ = new uint256[](_owners.length);
        for (uint256 i = 0; i < _owners.length; ++i) {
            uint256 id = _ids[i];
            if (isNonFungibleItem(id)) {
                balances_[i] = nfOwners[id] == _owners[i] ? 1 : 0;
            } else {
                balances_[i] = balances[id][_owners[i]];
            }
        }

        return balances_;
    }

    function setApprovalForAll(address _operator, bool _approved) external {
        operatorApproval[msg.sender][_operator] = _approved;
        emit ApprovalForAll(msg.sender, _operator, _approved);
    }

    function isApprovedForAll(address _owner, address _operator) external view returns (bool) {
        return operatorApproval[_owner][_operator];
    }

    function setSupplyLimit(uint256 _typeOrId, uint256 _supplyLimit) external creatorOnly {
        require(_supplyLimit > 0);
        if (isNonFungibleItem(_typeOrId)) {
            uint256 typeId = getNonFungibleBaseType(_typeOrId);
            require(tokenSupplyLimit[typeId] == 0);
            tokenSupplyLimit[typeId] = _supplyLimit;
            emit SupplyLimit(typeId, _supplyLimit);
        } else {
            require(tokenSupplyLimit[_typeOrId] == 0);
            tokenSupplyLimit[_typeOrId] = _supplyLimit;
            emit SupplyLimit(_typeOrId, _supplyLimit);
        }
    }

    function approveBatch(
        address _spender,
        uint256[] calldata _ids,
        uint256[] calldata _currentValues,
        uint256[] calldata _values
    ) external {
        require(_ids.length == _currentValues.length, "Arrays must be same length");
        require(_currentValues.length == _values.length, "Arrays must be same length");
        for (uint256 i = 0; i < _values.length; i++) {
            uint256 id = _ids[i];
            uint256 currentValue = _currentValues[i];
            uint256 value = _values[i];
            require(allowances[msg.sender][_spender][id] == currentValue);
            allowances[msg.sender][_spender][id] = value;
            emit Approval(msg.sender, _spender, id, currentValue, value);
        }
    }

    function isNonFungible(uint256 _id) public pure returns (bool) {
        return _id & TYPE_NF_BIT == TYPE_NF_BIT;
    }

    function isFungible(uint256 _id) public pure returns (bool) {
        return _id & TYPE_NF_BIT == 0;
    }

    function getNonFungibleIndex(uint256 _id) public pure returns (uint256) {
        return _id & NF_INDEX_MASK;
    }

    function getNonFungibleBaseType(uint256 _id) public pure returns (uint256) {
        return _id & TYPE_MASK;
    }

    function isNonFungibleBaseType(uint256 _id) public pure returns (bool) {
        // A base type has the NF bit but does not have an index.
        return (_id & TYPE_NF_BIT == TYPE_NF_BIT) && (_id & NF_INDEX_MASK == 0);
    }

    function isNonFungibleItem(uint256 _id) public pure returns (bool) {
        // A base type has the NF bit but does has an index.
        return (_id & TYPE_NF_BIT == TYPE_NF_BIT) && (_id & NF_INDEX_MASK != 0);
    }

    function ownerOf(uint256 _id) public view returns (address) {
        return nfOwners[_id];
    }

    /////////////////////////////////////////// ERC165 //////////////////////////////////////////////

    bytes4 private constant INTERFACE_SIGNATURE_ERC165 = 0x01ffc9a7;
    bytes4 private constant INTERFACE_SIGNATURE_ERC1155 = 0xd9b67a26;

    function supportsInterface(bytes4 _interfaceId) public view returns (bool) {
        if (
            _interfaceId == INTERFACE_SIGNATURE_ERC165 ||
            _interfaceId == INTERFACE_SIGNATURE_ERC1155
        ) {
            return true;
        }

        return false;
    }

    /////////////////////////////////////////// Internal //////////////////////////////////////////////

    function _doSafeTransferAcceptanceCheck(
        address _operator,
        address _from,
        address _to,
        uint256 _id,
        uint256 _value,
        bytes memory _data
    ) internal {
        require(
            ERC1155TokenReceiver(_to).onERC1155Received(_operator, _from, _id, _value, _data) ==
                ERC1155_ACCEPTED,
            "contract returned an unknown value from onERC1155Received"
        );
    }

    function _doSafeBatchTransferAcceptanceCheck(
        address _operator,
        address _from,
        address _to,
        uint256[] memory _ids,
        uint256[] memory _values,
        bytes memory _data
    ) internal {
        require(
            ERC1155TokenReceiver(_to).onERC1155BatchReceived(
                _operator,
                _from,
                _ids,
                _values,
                _data
            ) == ERC1155_BATCH_ACCEPTED,
            "contract returned an unknown value from onERC1155BatchReceived"
        );
    }

    /////////////////////////////////////////// ERC1155 //////////////////////////////////////////////

    function batchAuthorizeCreators(address[] calldata _addresses) external ownerOnly {
        for (uint256 i = 0; i < _addresses.length; ++i) {
            emit Creator(_addresses[i]);
            creators[_addresses[i]] = true;
        }
    }

    function batchDeauthorizeCreators(address[] calldata _addresses) external ownerOnly {
        for (uint256 i = 0; i < _addresses.length; ++i) {
            delete creators[_addresses[i]];
        }
    }

    function allowance(
        address _owner,
        address _spender,
        uint256 _id
    ) external view returns (uint256) {
        return allowances[_owner][_spender][_id];
    }

    function burn(
        address _from,
        uint256[] calldata _ids,
        uint256[] calldata _values
    ) external {
        require(
            _from == msg.sender || operatorApproval[_from][msg.sender] == true,
            "Need operator approval for 3rd party burn."
        );
        require(_ids.length > 0 && _ids.length == _values.length);
        for (uint256 i = 0; i < _ids.length; i++) {
            if (isFungible(_ids[i])) {
                require(balances[_ids[i]][_from] >= _values[i]);
                balances[_ids[i]][_from] = balances[_ids[i]][_from].sub(_values[i]);
            } else {
                require(isNonFungible(_ids[i]));
                require(_values[i] == 1);
                uint256 baseType = getNonFungibleBaseType(_ids[i]);
                // --totalSupply?
                balances[baseType][_from] = balances[baseType][_from].sub(1);
                delete nfOwners[_ids[i]];
            }
            emit TransferSingle(msg.sender, _from, address(0x0), _ids[i], _values[i]);
        }
    }

    function setNewUri(string calldata _uri, uint256 _id) external creatorOnly {
        require(bytes(_uri).length > 0);
        emit URI(_uri, _id);
    }
}

File 1 of 9: Address.sol
pragma solidity ^0.5.0;


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

File 2 of 9: Common.sol
pragma solidity ^0.5.0;


contract CommonConstants {
    bytes4 internal constant ERC1155_ACCEPTED = 0xf23a6e61;
    bytes4 internal constant ERC1155_BATCH_ACCEPTED = 0xbc197c81;
}

File 3 of 9: ERC165.sol
pragma solidity ^0.5.0;


interface ERC165 {
    function supportsInterface(bytes4 _interfaceId) external view returns (bool);
}

File 5 of 9: IERC1155.sol
pragma solidity ^0.5.0;

import "./ERC165.sol";


/* is ERC165 */
interface IERC1155 {
    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 _owner, address indexed _operator, bool _approved);
    event URI(string _value, uint256 indexed _id);

    function safeTransferFrom(
        address _from,
        address _to,
        uint256 _id,
        uint256 _value,
        bytes calldata _data
    ) external;

    function safeBatchTransferFrom(
        address _from,
        address _to,
        uint256[] calldata _ids,
        uint256[] calldata _values,
        bytes calldata _data
    ) external;

    function balanceOf(address _owner, uint256 _id) external view returns (uint256);

    function balanceOfBatch(address[] calldata _owners, uint256[] calldata _ids)
        external
        view
        returns (uint256[] memory);

    function setApprovalForAll(address _operator, bool _approved) external;

    function isApprovedForAll(address _owner, address _operator) external view returns (bool);
}

File 6 of 9: IERC1155TokenReceiver.sol
pragma solidity ^0.5.0;


interface ERC1155TokenReceiver {
    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);
}

File 7 of 9: Migrations.sol
pragma solidity >=0.4.21 <0.7.0;


contract Migrations {
    address public owner;
    uint256 public last_completed_migration;

    constructor() public {
        owner = msg.sender;
    }

    modifier restricted() {
        if (msg.sender == owner) _;
    }

    function setCompleted(uint256 completed) public restricted {
        last_completed_migration = completed;
    }
}

File 8 of 9: SafeMath.sol
pragma solidity ^0.5.0;


library SafeMath {
    function mul(uint256 a, uint256 b) internal pure returns (uint256 c) {
        if (a == 0) {
            return 0;
        }
        c = a * b;
        assert(c / a == b);
        return c;
    }

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

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

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

File 9 of 9: SignatureVerifier.sol
pragma solidity ^0.5.0;


contract SignatureVerifier {
    function validateNodeSignature(
        string memory nodeHardwareLicenseId,
        uint256 sigNonce,
        bytes memory signature
    ) internal view returns (address signer) {
        bytes32 r;
        bytes32 s;
        uint8 v;
        (v, r, s) = splitSignature(signature);
        bytes32 hash = keccak256(abi.encodePacked(nodeHardwareLicenseId, sigNonce, this));
        bytes32 hashWithHeader = keccak256(
            abi.encodePacked("\x19Ethereum Signed Message:\n32", hash)
        );

        return ecrecover(hashWithHeader, v, r, s);
    }

    function splitSignature(bytes memory signature)
        internal
        pure
        returns (
            uint8,
            bytes32,
            bytes32
        )
    {
        require(signature.length == 65);

        bytes32 r;
        bytes32 s;
        uint8 v;

        assembly {
            // first 32 bytes, after the length prefix
            r := mload(add(signature, 32))
            // second 32 bytes
            s := mload(add(signature, 64))
            // final byte (first byte of the next 32 bytes)
            v := byte(0, mload(add(signature, 96)))
        }

        return (v, r, s);
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"_owner","type":"address"},{"indexed":true,"internalType":"address","name":"_spender","type":"address"},{"indexed":true,"internalType":"uint256","name":"_id","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"_oldValue","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"_value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"_owner","type":"address"},{"indexed":true,"internalType":"address","name":"_operator","type":"address"},{"indexed":false,"internalType":"bool","name":"_approved","type":"bool"}],"name":"ApprovalForAll","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"_creator","type":"address"}],"name":"Creator","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"_id","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"_supplyLimit","type":"uint256"}],"name":"SupplyLimit","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"},{"constant":true,"inputs":[{"internalType":"address","name":"_owner","type":"address"},{"internalType":"address","name":"_spender","type":"address"},{"internalType":"uint256","name":"_id","type":"uint256"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"_spender","type":"address"},{"internalType":"uint256[]","name":"_ids","type":"uint256[]"},{"internalType":"uint256[]","name":"_currentValues","type":"uint256[]"},{"internalType":"uint256[]","name":"_values","type":"uint256[]"}],"name":"approveBatch","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"_owner","type":"address"},{"internalType":"uint256","name":"_id","type":"uint256"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address[]","name":"_owners","type":"address[]"},{"internalType":"uint256[]","name":"_ids","type":"uint256[]"}],"name":"balanceOfBatch","outputs":[{"internalType":"uint256[]","name":"","type":"uint256[]"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address[]","name":"_addresses","type":"address[]"}],"name":"batchAuthorizeCreators","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address[]","name":"_addresses","type":"address[]"}],"name":"batchDeauthorizeCreators","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"_from","type":"address"},{"internalType":"uint256[]","name":"_ids","type":"uint256[]"},{"internalType":"uint256[]","name":"_values","type":"uint256[]"}],"name":"burn","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"string","name":"_uri","type":"string"},{"internalType":"bool","name":"_isNF","type":"bool"}],"name":"create","outputs":[{"internalType":"uint256","name":"_type","type":"uint256"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"internalType":"uint256","name":"_id","type":"uint256"}],"name":"getNonFungibleBaseType","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"pure","type":"function"},{"constant":true,"inputs":[{"internalType":"uint256","name":"_id","type":"uint256"}],"name":"getNonFungibleIndex","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"pure","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"_owner","type":"address"},{"internalType":"address","name":"_operator","type":"address"}],"name":"isApprovedForAll","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"uint256","name":"_id","type":"uint256"}],"name":"isFungible","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"pure","type":"function"},{"constant":true,"inputs":[{"internalType":"uint256","name":"_id","type":"uint256"}],"name":"isNonFungible","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"pure","type":"function"},{"constant":true,"inputs":[{"internalType":"uint256","name":"_id","type":"uint256"}],"name":"isNonFungibleBaseType","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"pure","type":"function"},{"constant":true,"inputs":[{"internalType":"uint256","name":"_id","type":"uint256"}],"name":"isNonFungibleItem","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"pure","type":"function"},{"constant":true,"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"maxIndex","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"uint256","name":"_id","type":"uint256"},{"internalType":"address[]","name":"_to","type":"address[]"},{"internalType":"uint256[]","name":"_quantities","type":"uint256[]"},{"internalType":"bytes","name":"_data","type":"bytes"}],"name":"mintFungible","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"uint256","name":"_type","type":"uint256"},{"internalType":"address[]","name":"_to","type":"address[]"},{"internalType":"bytes","name":"_data","type":"bytes"}],"name":"mintNonFungible","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"uint256","name":"_id","type":"uint256"}],"name":"ownerOf","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"_from","type":"address"},{"internalType":"address","name":"_to","type":"address"},{"internalType":"uint256[]","name":"_ids","type":"uint256[]"},{"internalType":"uint256[]","name":"_values","type":"uint256[]"},{"internalType":"bytes","name":"_data","type":"bytes"}],"name":"safeBatchTransferFrom","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"_from","type":"address"},{"internalType":"address","name":"_to","type":"address"},{"internalType":"uint256","name":"_id","type":"uint256"},{"internalType":"uint256","name":"_value","type":"uint256"},{"internalType":"bytes","name":"_data","type":"bytes"}],"name":"safeTransferFrom","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"_operator","type":"address"},{"internalType":"bool","name":"_approved","type":"bool"}],"name":"setApprovalForAll","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"string","name":"_uri","type":"string"},{"internalType":"uint256","name":"_id","type":"uint256"}],"name":"setNewUri","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"uint256","name":"_typeOrId","type":"uint256"},{"internalType":"uint256","name":"_supplyLimit","type":"uint256"}],"name":"setSupplyLimit","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"internalType":"bytes4","name":"_interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"tokenSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"tokenSupplyLimit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"}]

608060405234801561001057600080fd5b50600180546001600160a01b0319163390811782556000908152600960205260409020805460ff19169091179055612da08061004d6000396000f3fe608060405234801561001057600080fd5b50600436106101c35760003560e01c80635e81b958116100f9578063a22cb46511610097578063cc10e40111610071578063cc10e40114610b38578063e44591f014610ba8578063e985e9c514610bc5578063f242432a14610bf3576101c3565b8063a22cb46514610a7f578063a9e7d53114610aad578063adebf6f214610b1b576101c3565b80637269a327116100d35780637269a32714610a1a5780638413e8b314610a375780638da5cb5b14610a5a5780639cca1c6414610a62576101c3565b80635e81b958146109a75780636352211e146109c45780636f969c2d146109fd576101c3565b8063352949d3116101665780634e1273f4116101405780634e1273f41461068057806354dbdbf41461078e578063598af9e7146108535780635b286d4a14610889576101c3565b8063352949d3146104d657806336fc1079146105445780633db0f8ab146105b2576101c3565b8063183fb254116101a2578063183fb2541461025e5780632693ebf21461037557806328fd70ec146103925780632eb2c2d6146103af576101c3565b8062fdd58e146101c857806301ffc9a71461020657806308d7d46914610241575b600080fd5b6101f4600480360360408110156101de57600080fd5b506001600160a01b038135169060200135610c86565b60408051918252519081900360200190f35b61022d6004803603602081101561021c57600080fd5b50356001600160e01b031916610cf6565b604080519115158252519081900360200190f35b6101f46004803603602081101561025757600080fd5b5035610d3d565b6103736004803603608081101561027457600080fd5b81359190810190604081016020820135600160201b81111561029557600080fd5b8201836020820111156102a757600080fd5b803590602001918460208302840111600160201b831117156102c857600080fd5b919390929091602081019035600160201b8111156102e557600080fd5b8201836020820111156102f757600080fd5b803590602001918460208302840111600160201b8311171561031857600080fd5b919390929091602081019035600160201b81111561033557600080fd5b82018360208201111561034757600080fd5b803590602001918460018302840111600160201b8311171561036857600080fd5b509092509050610d4f565b005b6101f46004803603602081101561038b57600080fd5b50356110dd565b6101f4600480360360208110156103a857600080fd5b50356110ef565b610373600480360360a08110156103c557600080fd5b6001600160a01b038235811692602081013590911691810190606081016040820135600160201b8111156103f857600080fd5b82018360208201111561040a57600080fd5b803590602001918460208302840111600160201b8311171561042b57600080fd5b919390929091602081019035600160201b81111561044857600080fd5b82018360208201111561045a57600080fd5b803590602001918460208302840111600160201b8311171561047b57600080fd5b919390929091602081019035600160201b81111561049857600080fd5b8201836020820111156104aa57600080fd5b803590602001918460018302840111600160201b831117156104cb57600080fd5b509092509050611101565b610373600480360360208110156104ec57600080fd5b810190602081018135600160201b81111561050657600080fd5b82018360208201111561051857600080fd5b803590602001918460208302840111600160201b8311171561053957600080fd5b5090925090506116f6565b6103736004803603604081101561055a57600080fd5b810190602081018135600160201b81111561057457600080fd5b82018360208201111561058657600080fd5b803590602001918460018302840111600160201b831117156105a757600080fd5b91935091503561175f565b610373600480360360608110156105c857600080fd5b6001600160a01b038235169190810190604081016020820135600160201b8111156105f257600080fd5b82018360208201111561060457600080fd5b803590602001918460208302840111600160201b8311171561062557600080fd5b919390929091602081019035600160201b81111561064257600080fd5b82018360208201111561065457600080fd5b803590602001918460208302840111600160201b8311171561067557600080fd5b509092509050611821565b61073e6004803603604081101561069657600080fd5b810190602081018135600160201b8111156106b057600080fd5b8201836020820111156106c257600080fd5b803590602001918460208302840111600160201b831117156106e357600080fd5b919390929091602081019035600160201b81111561070057600080fd5b82018360208201111561071257600080fd5b803590602001918460208302840111600160201b8311171561073357600080fd5b509092509050611b49565b60408051602080825283518183015283519192839290830191858101910280838360005b8381101561077a578181015183820152602001610762565b505050509050019250505060405180910390f35b610373600480360360608110156107a457600080fd5b81359190810190604081016020820135600160201b8111156107c557600080fd5b8201836020820111156107d757600080fd5b803590602001918460208302840111600160201b831117156107f857600080fd5b919390929091602081019035600160201b81111561081557600080fd5b82018360208201111561082757600080fd5b803590602001918460018302840111600160201b8311171561084857600080fd5b509092509050611c94565b6101f46004803603606081101561086957600080fd5b506001600160a01b03813581169160208101359091169060400135611f3b565b6103736004803603608081101561089f57600080fd5b6001600160a01b038235169190810190604081016020820135600160201b8111156108c957600080fd5b8201836020820111156108db57600080fd5b803590602001918460208302840111600160201b831117156108fc57600080fd5b919390929091602081019035600160201b81111561091957600080fd5b82018360208201111561092b57600080fd5b803590602001918460208302840111600160201b8311171561094c57600080fd5b919390929091602081019035600160201b81111561096957600080fd5b82018360208201111561097b57600080fd5b803590602001918460208302840111600160201b8311171561099c57600080fd5b509092509050611f6d565b61022d600480360360208110156109bd57600080fd5b5035612187565b6109e1600480360360208110156109da57600080fd5b50356121a8565b604080516001600160a01b039092168252519081900360200190f35b6101f460048036036020811015610a1357600080fd5b50356121c3565b61022d60048036036020811015610a3057600080fd5b50356121d9565b61037360048036036040811015610a4d57600080fd5b50803590602001356121f9565b6109e161233f565b6101f460048036036020811015610a7857600080fd5b503561234e565b61037360048036036040811015610a9557600080fd5b506001600160a01b038135169060200135151561235a565b61037360048036036020811015610ac357600080fd5b810190602081018135600160201b811115610add57600080fd5b820183602082011115610aef57600080fd5b803590602001918460208302840111600160201b83111715610b1057600080fd5b5090925090506123c8565b61022d60048036036020811015610b3157600080fd5b5035612485565b6101f460048036036040811015610b4e57600080fd5b810190602081018135600160201b811115610b6857600080fd5b820183602082011115610b7a57600080fd5b803590602001918460018302840111600160201b83111715610b9b57600080fd5b919350915035151561248f565b61022d60048036036020811015610bbe57600080fd5b503561259d565b61022d60048036036040811015610bdb57600080fd5b506001600160a01b03813581169160200135166125a9565b610373600480360360a0811015610c0957600080fd5b6001600160a01b03823581169260208101359091169160408201359160608101359181019060a081016080820135600160201b811115610c4857600080fd5b820183602082011115610c5a57600080fd5b803590602001918460018302840111600160201b83111715610c7b57600080fd5b5090925090506125d7565b6000610c9182612187565b15610ccb576000828152600460205260409020546001600160a01b03848116911614610cbe576000610cc1565b60015b60ff169050610cf0565b5060008181526002602090815260408083206001600160a01b03861684529091529020545b92915050565b60006001600160e01b031982166301ffc9a760e01b1480610d2757506001600160e01b03198216636cdb3d1360e11b145b15610d3457506001610d38565b5060005b919050565b60056020526000908152604090205481565b3360009081526009602052604090205460ff16610da1576040805162461bcd60e51b815260206004820152601b6024820152600080516020612d13833981519152604482015290519081900360640190fd5b610daa87612485565b610dfb576040805162461bcd60e51b815260206004820152601c60248201527f4944206d7573742062652061206e6f6e2d66756e6769626c6520494400000000604482015290519081900360640190fd5b60005b858110156110d3576000888152600860205260409020541580610e615750600088815260086020526040902054610e5e868684818110610e3a57fe5b60008d8152600760209081526040909120549391020135905063ffffffff6128da16565b11155b610eb2576040805162461bcd60e51b815260206004820152601b60248201527f546f6b656e20737570706c79206c696d69742065786365656465640000000000604482015290519081900360640190fd5b6000888152600260205260408120610f2291898985818110610ed057fe5b905060200201356001600160a01b03166001600160a01b03166001600160a01b0316815260200190815260200160002054868684818110610f0d57fe5b905060200201356128da90919063ffffffff16565b600089815260026020526040812090898985818110610f3d57fe5b905060200201356001600160a01b03166001600160a01b03166001600160a01b0316815260200190815260200160002081905550610fa4858583818110610f8057fe5b60008c8152600760209081526040909120549391020135905063ffffffff6128da16565b600089815260076020526040902055868682818110610fbf57fe5b905060200201356001600160a01b03166001600160a01b031660006001600160a01b0316336001600160a01b0316600080516020612c5c8339815191528b89898781811061100957fe5b604080519485526020918202939093013590840152508051918290030190a461105587878381811061103757fe5b905060200201356001600160a01b03166001600160a01b03166128e7565b156110cb576110cb333389898581811061106b57fe5b905060200201356001600160a01b03168b89898781811061108857fe5b9050602002013588888080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506128ed92505050565b600101610dfe565b5050505050505050565b60076020526000908152604090205481565b60086020526000908152604090205481565b6001600160a01b03871661115c576040805162461bcd60e51b815260206004820152601b60248201527f63616e6e6f742073656e6420746f207a65726f20616464726573730000000000604482015290519081900360640190fd5b8483146111b0576040805162461bcd60e51b815260206004820152601760248201527f4172726179206c656e677468206d757374206d61746368000000000000000000604482015290519081900360640190fd5b6001600160a01b0388163314806111ef57506001600160a01b038816600090815260036020908152604080832033845290915290205460ff1615156001145b61122a5760405162461bcd60e51b815260040180806020018281038252602f815260200180612c7c602f913960400191505060405180910390fd5b60005b858110156115895761125087878381811061124457fe5b9050602002013561259d565b1561142357886001600160a01b03166004600089898581811061126f57fe5b60209081029290920135835250810191909152604001600020546001600160a01b03161461129c57600080fd5b87600460008989858181106112ad57fe5b90506020020135815260200190815260200160002060006101000a8154816001600160a01b0302191690836001600160a01b0316021790555061134e8585838181106112f557fe5b905060200201356002600061131b8b8b8781811061130f57fe5b905060200201356121c3565b8152602080820192909252604090810160009081206001600160a01b038f1682529092529020549063ffffffff612a5d16565b600260006113618a8a8681811061130f57fe5b8152602080820192909252604090810160009081206001600160a01b038e1682529092529020556113e485858381811061139757fe5b90506020020135600260006113b18b8b8781811061130f57fe5b8152602080820192909252604090810160009081206001600160a01b038e1682529092529020549063ffffffff6128da16565b600260006113f78a8a8681811061130f57fe5b8152602080820192909252604090810160009081206001600160a01b038d168252909252902055611581565b61149085858381811061143257fe5b90506020020135600260008a8a8681811061144957fe5b90506020020135815260200190815260200160002060008c6001600160a01b03166001600160a01b0316815260200190815260200160002054612a5d90919063ffffffff16565b600260008989858181106114a057fe5b90506020020135815260200190815260200160002060008b6001600160a01b03166001600160a01b0316815260200190815260200160002081905550611534600260008989858181106114ef57fe5b90506020020135815260200190815260200160002060008a6001600160a01b03166001600160a01b0316815260200190815260200160002054868684818110610f0d57fe5b6002600089898581811061154457fe5b90506020020135815260200190815260200160002060008a6001600160a01b03166001600160a01b03168152602001908152602001600020819055505b60010161122d565b50866001600160a01b0316886001600160a01b0316336001600160a01b03167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb898989896040518080602001806020018381038352878782818152602001925060200280828437600083820152601f01601f19169091018481038352858152602090810191508690860280828437600083820152604051601f909101601f19169092018290039850909650505050505050a461164d876001600160a01b03166128e7565b156110d3576110d333898989898080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525050604080516020808d0282810182019093528c82529093508c92508b91829185019084908082843760009201919091525050604080516020601f8c018190048102820181019092528a815292508a9150899081908401838280828437600092019190915250612a6f92505050565b6001546001600160a01b0316331461170d57600080fd5b60005b8181101561175a576009600084848481811061172857fe5b602090810292909201356001600160a01b0316835250810191909152604001600020805460ff19169055600101611710565b505050565b3360009081526009602052604090205460ff166117b1576040805162461bcd60e51b815260206004820152601b6024820152600080516020612d13833981519152604482015290519081900360640190fd5b816117bb57600080fd5b807f6bb7ff708619ba0610cba295a58592e0451dee2622938c8755667688daf3529b848460405180806020018281038252848482818152602001925080828437600083820152604051601f909101601f19169092018290039550909350505050a2505050565b6001600160a01b03851633148061186057506001600160a01b038516600090815260036020908152604080832033845290915290205460ff1615156001145b61189b5760405162461bcd60e51b815260040180806020018281038252602a815260200180612ce9602a913960400191505060405180910390fd5b82158015906118a957508281145b6118b257600080fd5b60005b83811015611b41576118d88585838181106118cc57fe5b90506020020135612485565b15611a02578282828181106118e957fe5b905060200201356002600087878581811061190057fe5b9050602002013581526020019081526020016000206000886001600160a01b03166001600160a01b0316815260200190815260200160002054101561194457600080fd5b6119b183838381811061195357fe5b905060200201356002600088888681811061196a57fe5b9050602002013581526020019081526020016000206000896001600160a01b03166001600160a01b0316815260200190815260200160002054612a5d90919063ffffffff16565b600260008787858181106119c157fe5b9050602002013581526020019081526020016000206000886001600160a01b03166001600160a01b0316815260200190815260200160002081905550611adf565b611a1185858381811061124457fe5b611a1a57600080fd5b828282818110611a2657fe5b90506020020135600114611a3957600080fd5b6000611a4a86868481811061130f57fe5b60008181526002602090815260408083206001600160a01b038c168452909152902054909150611a8190600163ffffffff612a5d16565b60008281526002602090815260408083206001600160a01b038c168452909152812091909155600490878785818110611ab657fe5b6020908102929092013583525081019190915260400160002080546001600160a01b0319169055505b60006001600160a01b03871633600080516020612c5c833981519152888886818110611b0757fe5b90506020020135878787818110611b1a57fe5b604080519485526020918202939093013590840152508051918290030190a46001016118b5565b505050505050565b6060838214611b5757600080fd5b604080518581526020808702820101909152606090858015611b83578160200160208202803883390190505b50905060005b85811015611c8a576000858583818110611b9f57fe5b905060200201359050611bb181612187565b15611c1c57878783818110611bc257fe5b600084815260046020908152604090912054910292909201356001600160a01b039081169216919091149050611bf9576000611bfc565b60015b60ff16838381518110611c0b57fe5b602002602001018181525050611c81565b600081815260026020526040812090898985818110611c3757fe5b905060200201356001600160a01b03166001600160a01b03166001600160a01b0316815260200190815260200160002054838381518110611c7457fe5b6020026020010181815250505b50600101611b89565b5095945050505050565b3360009081526009602052604090205460ff16611ce6576040805162461bcd60e51b815260206004820152601b6024820152600080516020612d13833981519152604482015290519081900360640190fd5b611cef8561259d565b611cf857600080fd5b6000858152600560205260409020546001810190611d1d90859063ffffffff6128da16565b6000878152600560205260408120919091555b84811015611f32576000868683818110611d4657fe5b905060200201356001600160a01b03169050600082840189179050600860008a81526020019081526020016000205460001480611dad5750600089815260086020908152604080832054600790925290912054611daa90600163ffffffff6128da16565b11155b611dfe576040805162461bcd60e51b815260206004820152601b60248201527f546f6b656e20737570706c79206c696d69742065786365656465640000000000604482015290519081900360640190fd5b600081815260046020908152604080832080546001600160a01b0319166001600160a01b0387161790558b83526007909152902054611e3e9060016128da565b60008a815260076020908152604080832093909355600281528282206001600160a01b038616835290522054611e7b90600163ffffffff6128da16565b60008a81526002602090815260408083206001600160a01b03871680855290835281842094909455805185815260019281019290925280513392600080516020612c5c83398151915292908290030190a4611ede826001600160a01b03166128e7565b15611f2857611f283333848460018b8b8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506128ed92505050565b5050600101611d30565b50505050505050565b6001600160a01b0392831660009081526006602090815260408083209490951682529283528381209181529152205490565b848314611fc1576040805162461bcd60e51b815260206004820152601a60248201527f417272617973206d7573742062652073616d65206c656e677468000000000000604482015290519081900360640190fd5b828114612015576040805162461bcd60e51b815260206004820152601a60248201527f417272617973206d7573742062652073616d65206c656e677468000000000000604482015290519081900360640190fd5b60005b818110156110d357600087878381811061202e57fe5b905060200201359050600086868481811061204557fe5b905060200201359050600085858581811061205c57fe5b9050602002013590508160066000336001600160a01b03166001600160a01b0316815260200190815260200160002060008d6001600160a01b03166001600160a01b03168152602001908152602001600020600085815260200190815260200160002054146120ca57600080fd5b8060066000336001600160a01b03166001600160a01b0316815260200190815260200160002060008d6001600160a01b03166001600160a01b03168152602001908152602001600020600085815260200190815260200160002081905550828b6001600160a01b0316336001600160a01b03167f3a9c85c6b31f7a9d7fe1478f53e1be42e85db97ca30d1789cfef9196dbc472c98585604051808381526020018281526020019250505060405180910390a4505050600101612018565b6000600160ff1b808316148015610cf05750506001600160801b0316151590565b6000908152600460205260409020546001600160a01b031690565b6fffffffffffffffffffffffffffffffff191690565b6000600160ff1b808316148015610cf05750506001600160801b03161590565b3360009081526009602052604090205460ff1661224b576040805162461bcd60e51b815260206004820152601b6024820152600080516020612d13833981519152604482015290519081900360640190fd5b6000811161225857600080fd5b61226182612187565b156122da576000612271836121c3565b6000818152600860205260409020549091501561228d57600080fd5b6000818152600860209081526040918290208490558151848152915183927f4a92cb8a98b3c42468f2ffd7b4dc17755416ebcfd17fd0040895ea07895c0fae92908290030190a25061233b565b600082815260086020526040902054156122f357600080fd5b6000828152600860209081526040918290208390558151838152915184927f4a92cb8a98b3c42468f2ffd7b4dc17755416ebcfd17fd0040895ea07895c0fae92908290030190a25b5050565b6001546001600160a01b031681565b6001600160801b031690565b3360008181526003602090815260408083206001600160a01b03871680855290835292819020805460ff1916861515908117909155815190815290519293927f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31929181900390910190a35050565b6001546001600160a01b031633146123df57600080fd5b60005b8181101561175a577f77b942a0834ead73d2e76c27f611bd4f14e4cd55de82e1d4bbd5521905f69f0f83838381811061241757fe5b60408051602092830294909401356001600160a01b03168452519283900301919050a160016009600085858581811061244c57fe5b602090810292909201356001600160a01b0316835250810191909152604001600020805460ff19169115159190911790556001016123e2565b600160ff1b161590565b3360009081526009602052604081205460ff166124e1576040805162461bcd60e51b815260206004820152601b6024820152600080516020612d13833981519152604482015290519081900360640190fd5b50600080546001019081905560801b81156124fd57600160ff1b175b604080518281526000602082018190528251909283923392600080516020612c5c833981519152929181900390910190a4821561259657807f6bb7ff708619ba0610cba295a58592e0451dee2622938c8755667688daf3529b858560405180806020018281038252848482818152602001925080828437600083820152604051601f909101601f19169092018290039550909350505050a25b9392505050565b600160ff1b9081161490565b6001600160a01b03918216600090815260036020908152604080832093909416825291909152205460ff1690565b6001600160a01b038516612632576040805162461bcd60e51b815260206004820152601b60248201527f63616e6e6f742073656e6420746f207a65726f20616464726573730000000000604482015290519081900360640190fd5b6001600160a01b03861633148061267157506001600160a01b038616600090815260036020908152604080832033845290915290205460ff1615156001145b6126ac5760405162461bcd60e51b815260040180806020018281038252602f815260200180612c7c602f913960400191505060405180910390fd5b6126b58461259d565b156127a6576000848152600460205260409020546001600160a01b038781169116146126e057600080fd5b600084815260046020526040812080546001600160a01b0319166001600160a01b038816179055612710856121c3565b60008181526002602090815260408083206001600160a01b038c168452909152902054909150612746908563ffffffff612a5d16565b60008281526002602090815260408083206001600160a01b038c8116855292528083209390935588168152205461277d90856128da565b60009182526002602090815260408084206001600160a01b038a16855290915290912055612834565b60008481526002602090815260408083206001600160a01b038a1684529091529020546127d9908463ffffffff612a5d16565b60008581526002602090815260408083206001600160a01b038b8116855292528083209390935587168152205461281090846128da565b60008581526002602090815260408083206001600160a01b038a1684529091529020555b846001600160a01b0316866001600160a01b0316336001600160a01b0316600080516020612c5c8339815191528787604051808381526020018281526020019250505060405180910390a4612891856001600160a01b03166128e7565b15611b4157611b41338787878787878080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506128ed92505050565b81810182811015610cf057fe5b3b151590565b63f23a6e6160e01b6001600160e01b031916846001600160a01b031663f23a6e6188888787876040518663ffffffff1660e01b815260040180866001600160a01b03166001600160a01b03168152602001856001600160a01b03166001600160a01b0316815260200184815260200183815260200180602001828103825283818151815260200191508051906020019080838360005b8381101561299b578181015183820152602001612983565b50505050905090810190601f1680156129c85780820380516001836020036101000a031916815260200191505b509650505050505050602060405180830381600087803b1580156129eb57600080fd5b505af11580156129ff573d6000803e3d6000fd5b505050506040513d6020811015612a1557600080fd5b50516001600160e01b03191614611b415760405162461bcd60e51b8152600401808060200182810382526039815260200180612d336039913960400191505060405180910390fd5b600082821115612a6957fe5b50900390565b63bc197c8160e01b6001600160e01b031916846001600160a01b031663bc197c8188888787876040518663ffffffff1660e01b815260040180866001600160a01b03166001600160a01b03168152602001856001600160a01b03166001600160a01b03168152602001806020018060200180602001848103845287818151815260200191508051906020019060200280838360005b83811015612b1c578181015183820152602001612b04565b50505050905001848103835286818151815260200191508051906020019060200280838360005b83811015612b5b578181015183820152602001612b43565b50505050905001848103825285818151815260200191508051906020019080838360005b83811015612b97578181015183820152602001612b7f565b50505050905090810190601f168015612bc45780820380516001836020036101000a031916815260200191505b5098505050505050505050602060405180830381600087803b158015612be957600080fd5b505af1158015612bfd573d6000803e3d6000fd5b505050506040513d6020811015612c1357600080fd5b50516001600160e01b03191614611b415760405162461bcd60e51b815260040180806020018281038252603e815260200180612cab603e913960400191505060405180910390fdfec3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f624e656564206f70657261746f7220617070726f76616c20666f7220337264207061727479207472616e73666572732e636f6e74726163742072657475726e656420616e20756e6b6e6f776e2076616c75652066726f6d206f6e45524331313535426174636852656365697665644e656564206f70657261746f7220617070726f76616c20666f7220337264207061727479206275726e2e43726561746f72207065726d697373696f6e2072657175697265640000000000636f6e74726163742072657475726e656420616e20756e6b6e6f776e2076616c75652066726f6d206f6e455243313135355265636569766564a265627a7a72315820e8a61d55a194b2f42d83bad5cb50743bb2cae21f6bc9f7b12d8f0056879d500e64736f6c63430005110032

Deployed Bytecode

0x608060405234801561001057600080fd5b50600436106101c35760003560e01c80635e81b958116100f9578063a22cb46511610097578063cc10e40111610071578063cc10e40114610b38578063e44591f014610ba8578063e985e9c514610bc5578063f242432a14610bf3576101c3565b8063a22cb46514610a7f578063a9e7d53114610aad578063adebf6f214610b1b576101c3565b80637269a327116100d35780637269a32714610a1a5780638413e8b314610a375780638da5cb5b14610a5a5780639cca1c6414610a62576101c3565b80635e81b958146109a75780636352211e146109c45780636f969c2d146109fd576101c3565b8063352949d3116101665780634e1273f4116101405780634e1273f41461068057806354dbdbf41461078e578063598af9e7146108535780635b286d4a14610889576101c3565b8063352949d3146104d657806336fc1079146105445780633db0f8ab146105b2576101c3565b8063183fb254116101a2578063183fb2541461025e5780632693ebf21461037557806328fd70ec146103925780632eb2c2d6146103af576101c3565b8062fdd58e146101c857806301ffc9a71461020657806308d7d46914610241575b600080fd5b6101f4600480360360408110156101de57600080fd5b506001600160a01b038135169060200135610c86565b60408051918252519081900360200190f35b61022d6004803603602081101561021c57600080fd5b50356001600160e01b031916610cf6565b604080519115158252519081900360200190f35b6101f46004803603602081101561025757600080fd5b5035610d3d565b6103736004803603608081101561027457600080fd5b81359190810190604081016020820135600160201b81111561029557600080fd5b8201836020820111156102a757600080fd5b803590602001918460208302840111600160201b831117156102c857600080fd5b919390929091602081019035600160201b8111156102e557600080fd5b8201836020820111156102f757600080fd5b803590602001918460208302840111600160201b8311171561031857600080fd5b919390929091602081019035600160201b81111561033557600080fd5b82018360208201111561034757600080fd5b803590602001918460018302840111600160201b8311171561036857600080fd5b509092509050610d4f565b005b6101f46004803603602081101561038b57600080fd5b50356110dd565b6101f4600480360360208110156103a857600080fd5b50356110ef565b610373600480360360a08110156103c557600080fd5b6001600160a01b038235811692602081013590911691810190606081016040820135600160201b8111156103f857600080fd5b82018360208201111561040a57600080fd5b803590602001918460208302840111600160201b8311171561042b57600080fd5b919390929091602081019035600160201b81111561044857600080fd5b82018360208201111561045a57600080fd5b803590602001918460208302840111600160201b8311171561047b57600080fd5b919390929091602081019035600160201b81111561049857600080fd5b8201836020820111156104aa57600080fd5b803590602001918460018302840111600160201b831117156104cb57600080fd5b509092509050611101565b610373600480360360208110156104ec57600080fd5b810190602081018135600160201b81111561050657600080fd5b82018360208201111561051857600080fd5b803590602001918460208302840111600160201b8311171561053957600080fd5b5090925090506116f6565b6103736004803603604081101561055a57600080fd5b810190602081018135600160201b81111561057457600080fd5b82018360208201111561058657600080fd5b803590602001918460018302840111600160201b831117156105a757600080fd5b91935091503561175f565b610373600480360360608110156105c857600080fd5b6001600160a01b038235169190810190604081016020820135600160201b8111156105f257600080fd5b82018360208201111561060457600080fd5b803590602001918460208302840111600160201b8311171561062557600080fd5b919390929091602081019035600160201b81111561064257600080fd5b82018360208201111561065457600080fd5b803590602001918460208302840111600160201b8311171561067557600080fd5b509092509050611821565b61073e6004803603604081101561069657600080fd5b810190602081018135600160201b8111156106b057600080fd5b8201836020820111156106c257600080fd5b803590602001918460208302840111600160201b831117156106e357600080fd5b919390929091602081019035600160201b81111561070057600080fd5b82018360208201111561071257600080fd5b803590602001918460208302840111600160201b8311171561073357600080fd5b509092509050611b49565b60408051602080825283518183015283519192839290830191858101910280838360005b8381101561077a578181015183820152602001610762565b505050509050019250505060405180910390f35b610373600480360360608110156107a457600080fd5b81359190810190604081016020820135600160201b8111156107c557600080fd5b8201836020820111156107d757600080fd5b803590602001918460208302840111600160201b831117156107f857600080fd5b919390929091602081019035600160201b81111561081557600080fd5b82018360208201111561082757600080fd5b803590602001918460018302840111600160201b8311171561084857600080fd5b509092509050611c94565b6101f46004803603606081101561086957600080fd5b506001600160a01b03813581169160208101359091169060400135611f3b565b6103736004803603608081101561089f57600080fd5b6001600160a01b038235169190810190604081016020820135600160201b8111156108c957600080fd5b8201836020820111156108db57600080fd5b803590602001918460208302840111600160201b831117156108fc57600080fd5b919390929091602081019035600160201b81111561091957600080fd5b82018360208201111561092b57600080fd5b803590602001918460208302840111600160201b8311171561094c57600080fd5b919390929091602081019035600160201b81111561096957600080fd5b82018360208201111561097b57600080fd5b803590602001918460208302840111600160201b8311171561099c57600080fd5b509092509050611f6d565b61022d600480360360208110156109bd57600080fd5b5035612187565b6109e1600480360360208110156109da57600080fd5b50356121a8565b604080516001600160a01b039092168252519081900360200190f35b6101f460048036036020811015610a1357600080fd5b50356121c3565b61022d60048036036020811015610a3057600080fd5b50356121d9565b61037360048036036040811015610a4d57600080fd5b50803590602001356121f9565b6109e161233f565b6101f460048036036020811015610a7857600080fd5b503561234e565b61037360048036036040811015610a9557600080fd5b506001600160a01b038135169060200135151561235a565b61037360048036036020811015610ac357600080fd5b810190602081018135600160201b811115610add57600080fd5b820183602082011115610aef57600080fd5b803590602001918460208302840111600160201b83111715610b1057600080fd5b5090925090506123c8565b61022d60048036036020811015610b3157600080fd5b5035612485565b6101f460048036036040811015610b4e57600080fd5b810190602081018135600160201b811115610b6857600080fd5b820183602082011115610b7a57600080fd5b803590602001918460018302840111600160201b83111715610b9b57600080fd5b919350915035151561248f565b61022d60048036036020811015610bbe57600080fd5b503561259d565b61022d60048036036040811015610bdb57600080fd5b506001600160a01b03813581169160200135166125a9565b610373600480360360a0811015610c0957600080fd5b6001600160a01b03823581169260208101359091169160408201359160608101359181019060a081016080820135600160201b811115610c4857600080fd5b820183602082011115610c5a57600080fd5b803590602001918460018302840111600160201b83111715610c7b57600080fd5b5090925090506125d7565b6000610c9182612187565b15610ccb576000828152600460205260409020546001600160a01b03848116911614610cbe576000610cc1565b60015b60ff169050610cf0565b5060008181526002602090815260408083206001600160a01b03861684529091529020545b92915050565b60006001600160e01b031982166301ffc9a760e01b1480610d2757506001600160e01b03198216636cdb3d1360e11b145b15610d3457506001610d38565b5060005b919050565b60056020526000908152604090205481565b3360009081526009602052604090205460ff16610da1576040805162461bcd60e51b815260206004820152601b6024820152600080516020612d13833981519152604482015290519081900360640190fd5b610daa87612485565b610dfb576040805162461bcd60e51b815260206004820152601c60248201527f4944206d7573742062652061206e6f6e2d66756e6769626c6520494400000000604482015290519081900360640190fd5b60005b858110156110d3576000888152600860205260409020541580610e615750600088815260086020526040902054610e5e868684818110610e3a57fe5b60008d8152600760209081526040909120549391020135905063ffffffff6128da16565b11155b610eb2576040805162461bcd60e51b815260206004820152601b60248201527f546f6b656e20737570706c79206c696d69742065786365656465640000000000604482015290519081900360640190fd5b6000888152600260205260408120610f2291898985818110610ed057fe5b905060200201356001600160a01b03166001600160a01b03166001600160a01b0316815260200190815260200160002054868684818110610f0d57fe5b905060200201356128da90919063ffffffff16565b600089815260026020526040812090898985818110610f3d57fe5b905060200201356001600160a01b03166001600160a01b03166001600160a01b0316815260200190815260200160002081905550610fa4858583818110610f8057fe5b60008c8152600760209081526040909120549391020135905063ffffffff6128da16565b600089815260076020526040902055868682818110610fbf57fe5b905060200201356001600160a01b03166001600160a01b031660006001600160a01b0316336001600160a01b0316600080516020612c5c8339815191528b89898781811061100957fe5b604080519485526020918202939093013590840152508051918290030190a461105587878381811061103757fe5b905060200201356001600160a01b03166001600160a01b03166128e7565b156110cb576110cb333389898581811061106b57fe5b905060200201356001600160a01b03168b89898781811061108857fe5b9050602002013588888080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506128ed92505050565b600101610dfe565b5050505050505050565b60076020526000908152604090205481565b60086020526000908152604090205481565b6001600160a01b03871661115c576040805162461bcd60e51b815260206004820152601b60248201527f63616e6e6f742073656e6420746f207a65726f20616464726573730000000000604482015290519081900360640190fd5b8483146111b0576040805162461bcd60e51b815260206004820152601760248201527f4172726179206c656e677468206d757374206d61746368000000000000000000604482015290519081900360640190fd5b6001600160a01b0388163314806111ef57506001600160a01b038816600090815260036020908152604080832033845290915290205460ff1615156001145b61122a5760405162461bcd60e51b815260040180806020018281038252602f815260200180612c7c602f913960400191505060405180910390fd5b60005b858110156115895761125087878381811061124457fe5b9050602002013561259d565b1561142357886001600160a01b03166004600089898581811061126f57fe5b60209081029290920135835250810191909152604001600020546001600160a01b03161461129c57600080fd5b87600460008989858181106112ad57fe5b90506020020135815260200190815260200160002060006101000a8154816001600160a01b0302191690836001600160a01b0316021790555061134e8585838181106112f557fe5b905060200201356002600061131b8b8b8781811061130f57fe5b905060200201356121c3565b8152602080820192909252604090810160009081206001600160a01b038f1682529092529020549063ffffffff612a5d16565b600260006113618a8a8681811061130f57fe5b8152602080820192909252604090810160009081206001600160a01b038e1682529092529020556113e485858381811061139757fe5b90506020020135600260006113b18b8b8781811061130f57fe5b8152602080820192909252604090810160009081206001600160a01b038e1682529092529020549063ffffffff6128da16565b600260006113f78a8a8681811061130f57fe5b8152602080820192909252604090810160009081206001600160a01b038d168252909252902055611581565b61149085858381811061143257fe5b90506020020135600260008a8a8681811061144957fe5b90506020020135815260200190815260200160002060008c6001600160a01b03166001600160a01b0316815260200190815260200160002054612a5d90919063ffffffff16565b600260008989858181106114a057fe5b90506020020135815260200190815260200160002060008b6001600160a01b03166001600160a01b0316815260200190815260200160002081905550611534600260008989858181106114ef57fe5b90506020020135815260200190815260200160002060008a6001600160a01b03166001600160a01b0316815260200190815260200160002054868684818110610f0d57fe5b6002600089898581811061154457fe5b90506020020135815260200190815260200160002060008a6001600160a01b03166001600160a01b03168152602001908152602001600020819055505b60010161122d565b50866001600160a01b0316886001600160a01b0316336001600160a01b03167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb898989896040518080602001806020018381038352878782818152602001925060200280828437600083820152601f01601f19169091018481038352858152602090810191508690860280828437600083820152604051601f909101601f19169092018290039850909650505050505050a461164d876001600160a01b03166128e7565b156110d3576110d333898989898080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525050604080516020808d0282810182019093528c82529093508c92508b91829185019084908082843760009201919091525050604080516020601f8c018190048102820181019092528a815292508a9150899081908401838280828437600092019190915250612a6f92505050565b6001546001600160a01b0316331461170d57600080fd5b60005b8181101561175a576009600084848481811061172857fe5b602090810292909201356001600160a01b0316835250810191909152604001600020805460ff19169055600101611710565b505050565b3360009081526009602052604090205460ff166117b1576040805162461bcd60e51b815260206004820152601b6024820152600080516020612d13833981519152604482015290519081900360640190fd5b816117bb57600080fd5b807f6bb7ff708619ba0610cba295a58592e0451dee2622938c8755667688daf3529b848460405180806020018281038252848482818152602001925080828437600083820152604051601f909101601f19169092018290039550909350505050a2505050565b6001600160a01b03851633148061186057506001600160a01b038516600090815260036020908152604080832033845290915290205460ff1615156001145b61189b5760405162461bcd60e51b815260040180806020018281038252602a815260200180612ce9602a913960400191505060405180910390fd5b82158015906118a957508281145b6118b257600080fd5b60005b83811015611b41576118d88585838181106118cc57fe5b90506020020135612485565b15611a02578282828181106118e957fe5b905060200201356002600087878581811061190057fe5b9050602002013581526020019081526020016000206000886001600160a01b03166001600160a01b0316815260200190815260200160002054101561194457600080fd5b6119b183838381811061195357fe5b905060200201356002600088888681811061196a57fe5b9050602002013581526020019081526020016000206000896001600160a01b03166001600160a01b0316815260200190815260200160002054612a5d90919063ffffffff16565b600260008787858181106119c157fe5b9050602002013581526020019081526020016000206000886001600160a01b03166001600160a01b0316815260200190815260200160002081905550611adf565b611a1185858381811061124457fe5b611a1a57600080fd5b828282818110611a2657fe5b90506020020135600114611a3957600080fd5b6000611a4a86868481811061130f57fe5b60008181526002602090815260408083206001600160a01b038c168452909152902054909150611a8190600163ffffffff612a5d16565b60008281526002602090815260408083206001600160a01b038c168452909152812091909155600490878785818110611ab657fe5b6020908102929092013583525081019190915260400160002080546001600160a01b0319169055505b60006001600160a01b03871633600080516020612c5c833981519152888886818110611b0757fe5b90506020020135878787818110611b1a57fe5b604080519485526020918202939093013590840152508051918290030190a46001016118b5565b505050505050565b6060838214611b5757600080fd5b604080518581526020808702820101909152606090858015611b83578160200160208202803883390190505b50905060005b85811015611c8a576000858583818110611b9f57fe5b905060200201359050611bb181612187565b15611c1c57878783818110611bc257fe5b600084815260046020908152604090912054910292909201356001600160a01b039081169216919091149050611bf9576000611bfc565b60015b60ff16838381518110611c0b57fe5b602002602001018181525050611c81565b600081815260026020526040812090898985818110611c3757fe5b905060200201356001600160a01b03166001600160a01b03166001600160a01b0316815260200190815260200160002054838381518110611c7457fe5b6020026020010181815250505b50600101611b89565b5095945050505050565b3360009081526009602052604090205460ff16611ce6576040805162461bcd60e51b815260206004820152601b6024820152600080516020612d13833981519152604482015290519081900360640190fd5b611cef8561259d565b611cf857600080fd5b6000858152600560205260409020546001810190611d1d90859063ffffffff6128da16565b6000878152600560205260408120919091555b84811015611f32576000868683818110611d4657fe5b905060200201356001600160a01b03169050600082840189179050600860008a81526020019081526020016000205460001480611dad5750600089815260086020908152604080832054600790925290912054611daa90600163ffffffff6128da16565b11155b611dfe576040805162461bcd60e51b815260206004820152601b60248201527f546f6b656e20737570706c79206c696d69742065786365656465640000000000604482015290519081900360640190fd5b600081815260046020908152604080832080546001600160a01b0319166001600160a01b0387161790558b83526007909152902054611e3e9060016128da565b60008a815260076020908152604080832093909355600281528282206001600160a01b038616835290522054611e7b90600163ffffffff6128da16565b60008a81526002602090815260408083206001600160a01b03871680855290835281842094909455805185815260019281019290925280513392600080516020612c5c83398151915292908290030190a4611ede826001600160a01b03166128e7565b15611f2857611f283333848460018b8b8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506128ed92505050565b5050600101611d30565b50505050505050565b6001600160a01b0392831660009081526006602090815260408083209490951682529283528381209181529152205490565b848314611fc1576040805162461bcd60e51b815260206004820152601a60248201527f417272617973206d7573742062652073616d65206c656e677468000000000000604482015290519081900360640190fd5b828114612015576040805162461bcd60e51b815260206004820152601a60248201527f417272617973206d7573742062652073616d65206c656e677468000000000000604482015290519081900360640190fd5b60005b818110156110d357600087878381811061202e57fe5b905060200201359050600086868481811061204557fe5b905060200201359050600085858581811061205c57fe5b9050602002013590508160066000336001600160a01b03166001600160a01b0316815260200190815260200160002060008d6001600160a01b03166001600160a01b03168152602001908152602001600020600085815260200190815260200160002054146120ca57600080fd5b8060066000336001600160a01b03166001600160a01b0316815260200190815260200160002060008d6001600160a01b03166001600160a01b03168152602001908152602001600020600085815260200190815260200160002081905550828b6001600160a01b0316336001600160a01b03167f3a9c85c6b31f7a9d7fe1478f53e1be42e85db97ca30d1789cfef9196dbc472c98585604051808381526020018281526020019250505060405180910390a4505050600101612018565b6000600160ff1b808316148015610cf05750506001600160801b0316151590565b6000908152600460205260409020546001600160a01b031690565b6fffffffffffffffffffffffffffffffff191690565b6000600160ff1b808316148015610cf05750506001600160801b03161590565b3360009081526009602052604090205460ff1661224b576040805162461bcd60e51b815260206004820152601b6024820152600080516020612d13833981519152604482015290519081900360640190fd5b6000811161225857600080fd5b61226182612187565b156122da576000612271836121c3565b6000818152600860205260409020549091501561228d57600080fd5b6000818152600860209081526040918290208490558151848152915183927f4a92cb8a98b3c42468f2ffd7b4dc17755416ebcfd17fd0040895ea07895c0fae92908290030190a25061233b565b600082815260086020526040902054156122f357600080fd5b6000828152600860209081526040918290208390558151838152915184927f4a92cb8a98b3c42468f2ffd7b4dc17755416ebcfd17fd0040895ea07895c0fae92908290030190a25b5050565b6001546001600160a01b031681565b6001600160801b031690565b3360008181526003602090815260408083206001600160a01b03871680855290835292819020805460ff1916861515908117909155815190815290519293927f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31929181900390910190a35050565b6001546001600160a01b031633146123df57600080fd5b60005b8181101561175a577f77b942a0834ead73d2e76c27f611bd4f14e4cd55de82e1d4bbd5521905f69f0f83838381811061241757fe5b60408051602092830294909401356001600160a01b03168452519283900301919050a160016009600085858581811061244c57fe5b602090810292909201356001600160a01b0316835250810191909152604001600020805460ff19169115159190911790556001016123e2565b600160ff1b161590565b3360009081526009602052604081205460ff166124e1576040805162461bcd60e51b815260206004820152601b6024820152600080516020612d13833981519152604482015290519081900360640190fd5b50600080546001019081905560801b81156124fd57600160ff1b175b604080518281526000602082018190528251909283923392600080516020612c5c833981519152929181900390910190a4821561259657807f6bb7ff708619ba0610cba295a58592e0451dee2622938c8755667688daf3529b858560405180806020018281038252848482818152602001925080828437600083820152604051601f909101601f19169092018290039550909350505050a25b9392505050565b600160ff1b9081161490565b6001600160a01b03918216600090815260036020908152604080832093909416825291909152205460ff1690565b6001600160a01b038516612632576040805162461bcd60e51b815260206004820152601b60248201527f63616e6e6f742073656e6420746f207a65726f20616464726573730000000000604482015290519081900360640190fd5b6001600160a01b03861633148061267157506001600160a01b038616600090815260036020908152604080832033845290915290205460ff1615156001145b6126ac5760405162461bcd60e51b815260040180806020018281038252602f815260200180612c7c602f913960400191505060405180910390fd5b6126b58461259d565b156127a6576000848152600460205260409020546001600160a01b038781169116146126e057600080fd5b600084815260046020526040812080546001600160a01b0319166001600160a01b038816179055612710856121c3565b60008181526002602090815260408083206001600160a01b038c168452909152902054909150612746908563ffffffff612a5d16565b60008281526002602090815260408083206001600160a01b038c8116855292528083209390935588168152205461277d90856128da565b60009182526002602090815260408084206001600160a01b038a16855290915290912055612834565b60008481526002602090815260408083206001600160a01b038a1684529091529020546127d9908463ffffffff612a5d16565b60008581526002602090815260408083206001600160a01b038b8116855292528083209390935587168152205461281090846128da565b60008581526002602090815260408083206001600160a01b038a1684529091529020555b846001600160a01b0316866001600160a01b0316336001600160a01b0316600080516020612c5c8339815191528787604051808381526020018281526020019250505060405180910390a4612891856001600160a01b03166128e7565b15611b4157611b41338787878787878080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506128ed92505050565b81810182811015610cf057fe5b3b151590565b63f23a6e6160e01b6001600160e01b031916846001600160a01b031663f23a6e6188888787876040518663ffffffff1660e01b815260040180866001600160a01b03166001600160a01b03168152602001856001600160a01b03166001600160a01b0316815260200184815260200183815260200180602001828103825283818151815260200191508051906020019080838360005b8381101561299b578181015183820152602001612983565b50505050905090810190601f1680156129c85780820380516001836020036101000a031916815260200191505b509650505050505050602060405180830381600087803b1580156129eb57600080fd5b505af11580156129ff573d6000803e3d6000fd5b505050506040513d6020811015612a1557600080fd5b50516001600160e01b03191614611b415760405162461bcd60e51b8152600401808060200182810382526039815260200180612d336039913960400191505060405180910390fd5b600082821115612a6957fe5b50900390565b63bc197c8160e01b6001600160e01b031916846001600160a01b031663bc197c8188888787876040518663ffffffff1660e01b815260040180866001600160a01b03166001600160a01b03168152602001856001600160a01b03166001600160a01b03168152602001806020018060200180602001848103845287818151815260200191508051906020019060200280838360005b83811015612b1c578181015183820152602001612b04565b50505050905001848103835286818151815260200191508051906020019060200280838360005b83811015612b5b578181015183820152602001612b43565b50505050905001848103825285818151815260200191508051906020019080838360005b83811015612b97578181015183820152602001612b7f565b50505050905090810190601f168015612bc45780820380516001836020036101000a031916815260200191505b5098505050505050505050602060405180830381600087803b158015612be957600080fd5b505af1158015612bfd573d6000803e3d6000fd5b505050506040513d6020811015612c1357600080fd5b50516001600160e01b03191614611b415760405162461bcd60e51b815260040180806020018281038252603e815260200180612cab603e913960400191505060405180910390fdfec3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f624e656564206f70657261746f7220617070726f76616c20666f7220337264207061727479207472616e73666572732e636f6e74726163742072657475726e656420616e20756e6b6e6f776e2076616c75652066726f6d206f6e45524331313535426174636852656365697665644e656564206f70657261746f7220617070726f76616c20666f7220337264207061727479206275726e2e43726561746f72207065726d697373696f6e2072657175697265640000000000636f6e74726163742072657475726e656420616e20756e6b6e6f776e2076616c75652066726f6d206f6e455243313135355265636569766564a265627a7a72315820e8a61d55a194b2f42d83bad5cb50743bb2cae21f6bc9f7b12d8f0056879d500e64736f6c63430005110032

Deployed Bytecode Sourcemap

162:14252:3:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;162:14252:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7258:201;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;7258:201:3;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;11059:279;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;11059:279:3;-1:-1:-1;;;;;;11059:279:3;;:::i;:::-;;;;;;;;;;;;;;;;;;739:43;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;739:43:3;;:::i;3524:1054::-;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;3524:1054:3;;;;;;;;;;;;;;-1:-1:-1;;;5:28;;2:2;;;46:1;43;36:12;2:2;3524:1054:3;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;3524:1054:3;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;-1:-1;;;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;3524:1054:3;;;;;;;;;;;-1:-1:-1;;;5:28;;2:2;;;46:1;43;36:12;2:2;3524:1054:3;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;3524:1054:3;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;-1:-1;;;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;3524:1054:3;;;;;;;;;;;-1:-1:-1;;;5:28;;2:2;;;46:1;43;36:12;2:2;3524:1054:3;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;3524:1054:3;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;-1:-1;;;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;-1:-1;3524:1054:3;;-1:-1:-1;3524:1054:3;-1:-1:-1;3524:1054:3;:::i;:::-;;872:46;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;872:46:3;;:::i;924:51::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;924:51:3;;:::i;5756:1496::-;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;-1:-1;;;;;5756:1496:3;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;5:28;;2:2;;;46:1;43;36:12;2:2;5756:1496:3;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;5756:1496:3;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;-1:-1;;;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;5756:1496:3;;;;;;;;;;;-1:-1:-1;;;5:28;;2:2;;;46:1;43;36:12;2:2;5756:1496:3;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;5756:1496:3;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;-1:-1;;;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;5756:1496:3;;;;;;;;;;;-1:-1:-1;;;5:28;;2:2;;;46:1;43;36:12;2:2;5756:1496:3;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;5756:1496:3;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;-1:-1;;;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;-1:-1;5756:1496:3;;-1:-1:-1;5756:1496:3;-1:-1:-1;5756:1496:3;:::i;12808:203::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;12808:203:3;;;;;;;;-1:-1:-1;;;5:28;;2:2;;;46:1;43;36:12;2:2;12808:203:3;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;12808:203:3;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;-1:-1;;;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;-1:-1;12808:203:3;;-1:-1:-1;12808:203:3;-1:-1:-1;12808:203:3;:::i;14260:152::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;14260:152:3;;;;;;;;-1:-1:-1;;;5:28;;2:2;;;46:1;43;36:12;2:2;14260:152:3;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;14260:152:3;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;-1:-1;;;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;14260:152:3;;-1:-1:-1;14260:152:3;-1:-1:-1;14260:152:3;;:::i;13208:1046::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;13208:1046:3;;;;;;;;;;;;;;;-1:-1:-1;;;5:28;;2:2;;;46:1;43;36:12;2:2;13208:1046:3;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;13208:1046:3;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;-1:-1;;;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;13208:1046:3;;;;;;;;;;;-1:-1:-1;;;5:28;;2:2;;;46:1;43;36:12;2:2;13208:1046:3;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;13208:1046:3;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;-1:-1;;;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;-1:-1;13208:1046:3;;-1:-1:-1;13208:1046:3;-1:-1:-1;13208:1046:3;:::i;7465:595::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;7465:595:3;;;;;;;;-1:-1:-1;;;5:28;;2:2;;;46:1;43;36:12;2:2;7465:595:3;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;7465:595:3;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;-1:-1;;;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;7465:595:3;;;;;;;;;;;-1:-1:-1;;;5:28;;2:2;;;46:1;43;36:12;2:2;7465:595:3;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;7465:595:3;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;-1:-1;;;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;-1:-1;7465:595:3;;-1:-1:-1;7465:595:3;-1:-1:-1;7465:595:3;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:100:-1;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;7465:595:3;;;;;;;;;;;;;;;;;2453:1065;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;2453:1065:3;;;;;;;;;;;;;;-1:-1:-1;;;5:28;;2:2;;;46:1;43;36:12;2:2;2453:1065:3;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;2453:1065:3;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;-1:-1;;;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;2453:1065:3;;;;;;;;;;;-1:-1:-1;;;5:28;;2:2;;;46:1;43;36:12;2:2;2453:1065:3;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;2453:1065:3;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;-1:-1;;;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;-1:-1;2453:1065:3;;-1:-1:-1;2453:1065:3;-1:-1:-1;2453:1065:3;:::i;13017:185::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;13017:185:3;;;;;;;;;;;;;;;;;:::i;9021:755::-;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;-1:-1;;;;;9021:755:3;;;;;;;;;;;;;;;-1:-1:-1;;;5:28;;2:2;;;46:1;43;36:12;2:2;9021:755:3;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;9021:755:3;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;-1:-1;;;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;9021:755:3;;;;;;;;;;;-1:-1:-1;;;5:28;;2:2;;;46:1;43;36:12;2:2;9021:755:3;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;9021:755:3;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;-1:-1;;;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;9021:755:3;;;;;;;;;;;-1:-1:-1;;;5:28;;2:2;;;46:1;43;36:12;2:2;9021:755:3;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;9021:755:3;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;-1:-1;;;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;-1:-1;9021:755:3;;-1:-1:-1;9021:755:3;-1:-1:-1;9021:755:3;:::i;10491:216::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;10491:216:3;;:::i;10713:97::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;10713:97:3;;:::i;:::-;;;;-1:-1:-1;;;;;10713:97:3;;;;;;;;;;;;;;10140:114;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;10140:114:3;;:::i;10260:225::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;10260:225:3;;:::i;8429:586::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;8429:586:3;;;;;;;:::i;460:20::-;;;:::i;10019:115::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;10019:115:3;;:::i;8066:202::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;8066:202:3;;;;;;;;;;:::i;12560:242::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;12560:242:3;;;;;;;;-1:-1:-1;;;5:28;;2:2;;;46:1;43;36:12;2:2;12560:242:3;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;12560:242:3;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;-1:-1;;;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;-1:-1;12560:242:3;;-1:-1:-1;12560:242:3;-1:-1:-1;12560:242:3;:::i;9907:106::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;9907:106:3;;:::i;2100:347::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;2100:347:3;;;;;;;;-1:-1:-1;;;5:28;;2:2;;;46:1;43;36:12;2:2;2100:347:3;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;2100:347:3;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;-1:-1;;;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;2100:347:3;;-1:-1:-1;2100:347:3;-1:-1:-1;2100:347:3;;;;:::i;9782:119::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;9782:119:3;;:::i;8274:149::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;8274:149:3;;;;;;;;;;:::i;4584:1166::-;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;-1:-1;;;;;4584:1166:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;5:28;;2:2;;;46:1;43;36:12;2:2;4584:1166:3;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;4584:1166:3;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;-1:-1;;;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;-1:-1;4584:1166:3;;-1:-1:-1;4584:1166:3;-1:-1:-1;4584:1166:3;:::i;7258:201::-;7329:7;7352:22;7370:3;7352:17;:22::i;:::-;7348:66;;;7383:13;;;;:8;:13;;;;;;-1:-1:-1;;;;;7383:23:3;;;:13;;:23;:31;;7413:1;7383:31;;;7409:1;7383:31;7376:38;;;;;;7348:66;-1:-1:-1;7431:13:3;;;;:8;:13;;;;;;;;-1:-1:-1;;;;;7431:21:3;;;;;;;;;;7258:201;;;;;:::o;11059:279::-;11128:4;-1:-1:-1;;;;;;11161:42:3;;-1:-1:-1;;;11161:42:3;;:101;;-1:-1:-1;;;;;;;11219:43:3;;-1:-1:-1;;;11219:43:3;11161:101;11144:165;;;-1:-1:-1;11294:4:3;11287:11;;11144:165;-1:-1:-1;11326:5:3;11059:279;;;;:::o;739:43::-;;;;;;;;;;;;;:::o;3524:1054::-;1950:10;1941:20;;;;:8;:20;;;;;;;;1933:60;;;;;-1:-1:-1;;;1933:60:3;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;1933:60:3;;;;;;;;;;;;;;;3714:15;3725:3;3714:10;:15::i;:::-;3706:56;;;;;-1:-1:-1;;;3706:56:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;3777:9;3772:800;3792:14;;;3772:800;;;3852:21;;;;:16;:21;;;;;;:26;;:111;;-1:-1:-1;3942:21:3;;;;:16;:21;;;;;;3902:36;3923:11;;3935:1;3923:14;;;;;;;3902:16;;;;:11;3923:14;3902:16;;;;;;;;;3923:14;;;;;-1:-1:-1;3902:36:3;:20;:36;:::i;:::-;:61;;3852:111;3827:197;;;;;-1:-1:-1;;;3827:197:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;4081:13;;;;:8;:13;;;;;4062:41;;4095:3;;4099:1;4095:6;;;;;;;;;;;;;-1:-1:-1;;;;;4095:6:3;-1:-1:-1;;;;;4081:21:3;-1:-1:-1;;;;;4081:21:3;;;;;;;;;;;;;4062:11;;4074:1;4062:14;;;;;;;;;;;;;:18;;:41;;;;:::i;:::-;4038:13;;;;:8;:13;;;;;;4052:3;;4056:1;4052:6;;;;;;;;;;;;;-1:-1:-1;;;;;4052:6:3;-1:-1:-1;;;;;4038:21:3;-1:-1:-1;;;;;4038:21:3;;;;;;;;;;;;:65;;;;4136:36;4157:11;;4169:1;4157:14;;;;;;;4136:16;;;;:11;4157:14;4136:16;;;;;;;;;4157:14;;;;;-1:-1:-1;4136:36:3;:20;:36;:::i;:::-;4117:16;;;;:11;:16;;;;;:55;4233:3;;4237:1;4233:6;;;;;;;;;;;;;-1:-1:-1;;;;;4233:6:3;-1:-1:-1;;;;;4192:69:3;4227:3;-1:-1:-1;;;;;4192:69:3;4207:10;-1:-1:-1;;;;;4192:69:3;-1:-1:-1;;;;;;;;;;;4241:3:3;4246:11;;4258:1;4246:14;;;;;;;4192:69;;;;;;4246:14;;;;;;;;;4192:69;;;;-1:-1:-1;4192:69:3;;;;;;;;;4280:19;:3;;4284:1;4280:6;;;;;;;;;;;;;-1:-1:-1;;;;;4280:6:3;-1:-1:-1;;;;;4280:17:3;;:19::i;:::-;4276:286;;;4319:228;4371:10;4403;4435:3;;4439:1;4435:6;;;;;;;;;;;;;-1:-1:-1;;;;;4435:6:3;4463:3;4488:11;;4500:1;4488:14;;;;;;;;;;;;;4524:5;;4319:228;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;4319:30:3;;-1:-1:-1;;;4319:228:3:i;:::-;3808:3;;3772:800;;;;3524:1054;;;;;;;:::o;872:46::-;;;;;;;;;;;;;:::o;924:51::-;;;;;;;;;;;;;:::o;5756:1496::-;-1:-1:-1;;;;;5963:19:3;;5955:59;;;;;-1:-1:-1;;;5955:59:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;6032:29;;;6024:65;;;;;-1:-1:-1;;;6024:65:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;6120:19:3;;6129:10;6120:19;;:66;;-1:-1:-1;;;;;;6143:23:3;;;;;;:16;:23;;;;;;;;6167:10;6143:35;;;;;;;;;;:43;;:35;:43;6120:66;6099:160;;;;-1:-1:-1;;;6099:160:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6275:9;6270:770;6290:15;;;6270:770;;;6330:22;6344:4;;6349:1;6344:7;;;;;;;;;;;;;6330:13;:22::i;:::-;6326:704;;;6401:5;-1:-1:-1;;;;;6380:26:3;:8;:17;6389:4;;6394:1;6389:7;;;;;;;;;;;;;;;;6380:17;;-1:-1:-1;6380:17:3;;;;;;;;-1:-1:-1;6380:17:3;;-1:-1:-1;;;;;6380:17:3;:26;6372:35;;;;;;6445:3;6425:8;:17;6434:4;;6439:1;6434:7;;;;;;;;;;;;;6425:17;;;;;;;;;;;;:23;;;;;-1:-1:-1;;;;;6425:23:3;;;;;-1:-1:-1;;;;;6425:23:3;;;;;;6517:123;6629:7;;6637:1;6629:10;;;;;;;;;;;;;6517:8;:79;6526:69;6570:4;;6575:1;6570:7;;;;;;;;;;;;;6526:22;:69::i;:::-;6517:79;;;;;;;;;;;;;;-1:-1:-1;6517:79:3;;;-1:-1:-1;;;;;6517:86:3;;;;;;;;;;;:123;:111;:123;:::i;:::-;6466:8;:41;6475:31;6498:4;;6503:1;6498:7;;;;;;6475:31;6466:41;;;;;;;;;;;;;;-1:-1:-1;6466:41:3;;;-1:-1:-1;;;;;6466:48:3;;;;;;;;;:174;6707:121;6817:7;;6825:1;6817:10;;;;;;;;;;;;;6707:8;:79;6716:69;6760:4;;6765:1;6760:7;;;;;;6716:69;6707:79;;;;;;;;;;;;;;-1:-1:-1;6707:79:3;;;-1:-1:-1;;;;;6707:84:3;;;;;;;;;;;:121;:109;:121;:::i;:::-;6658:8;:41;6667:31;6690:4;;6695:1;6690:7;;;;;;6667:31;6658:41;;;;;;;;;;;;;;-1:-1:-1;6658:41:3;;;-1:-1:-1;;;;;6658:46:3;;;;;;;;;:170;6326:704;;;6894:40;6923:7;;6931:1;6923:10;;;;;;;;;;;;;6894:8;:17;6903:4;;6908:1;6903:7;;;;;;;;;;;;;6894:17;;;;;;;;;;;:24;6912:5;-1:-1:-1;;;;;6894:24:3;-1:-1:-1;;;;;6894:24:3;;;;;;;;;;;;;:28;;:40;;;;:::i;:::-;6867:8;:17;6876:4;;6881:1;6876:7;;;;;;;;;;;;;6867:17;;;;;;;;;;;:24;6885:5;-1:-1:-1;;;;;6867:24:3;-1:-1:-1;;;;;6867:24:3;;;;;;;;;;;;:67;;;;6977:38;6992:8;:17;7001:4;;7006:1;7001:7;;;;;;;;;;;;;6992:17;;;;;;;;;;;:22;7010:3;-1:-1:-1;;;;;6992:22:3;-1:-1:-1;;;;;6992:22:3;;;;;;;;;;;;;6977:7;;6985:1;6977:10;;;;;;:38;6952:8;:17;6961:4;;6966:1;6961:7;;;;;;;;;;;;;6952:17;;;;;;;;;;;:22;6970:3;-1:-1:-1;;;;;6952:22:3;-1:-1:-1;;;;;6952:22:3;;;;;;;;;;;;:63;;;;6326:704;6307:3;;6270:770;;;;7088:3;-1:-1:-1;;;;;7055:52:3;7081:5;-1:-1:-1;;;;;7055:52:3;7069:10;-1:-1:-1;;;;;7055:52:3;;7093:4;;7099:7;;7055:52;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;;74:27;137:4;117:14;-1:-1;;113:30;157:16;;;7055:52:3;;;;;;;;;;;;;-1:-1:-1;7055:52:3;;;;;;;1:33:-1;99:1;81:16;;;74:27;7055:52:3;;137:4:-1;117:14;;;-1:-1;;113:30;157:16;;;7055:52:3;;;;-1:-1:-1;7055:52:3;;-1:-1:-1;;;;;;;7055:52:3;7122:16;:3;-1:-1:-1;;;;;7122:14:3;;:16::i;:::-;7118:128;;;7154:81;7190:10;7202:5;7209:3;7214:4;;7154:81;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;;7154:81:3;;;;;;;;;;;;;;;;;;;;-1:-1:-1;7220:7:3;;-1:-1:-1;7220:7:3;;;;7154:81;;;7220:7;;7154:81;7220:7;7154:81;1:33:-1;99:1;81:16;;74:27;;;;-1:-1;;7154:81:3;;;;137:4:-1;7154:81:3;;;;;;;;;;;;;;;;;;-1:-1:-1;7229:5:3;;-1:-1:-1;7229:5:3;;;;7154:81;;7229:5;;;;7154:81;1:33:-1;99:1;81:16;;74:27;;;;-1:-1;7154:35:3;;-1:-1:-1;;;7154:81:3:i;12808:203::-;2070:5;;-1:-1:-1;;;;;2070:5:3;2056:10;:19;2048:28;;;;;;12907:9;12902:103;12922:21;;;12902:103;;;12971:8;:23;12980:10;;12991:1;12980:13;;;;;;;;;;;;;;;;-1:-1:-1;;;;;12980:13:3;12971:23;;-1:-1:-1;12971:23:3;;;;;;;;-1:-1:-1;12971:23:3;12964:30;;-1:-1:-1;;12964:30:3;;;-1:-1:-1;12945:3:3;12902:103;;;;12808:203;;:::o;14260:152::-;1950:10;1941:20;;;;:8;:20;;;;;;;;1933:60;;;;;-1:-1:-1;;;1933:60:3;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;1933:60:3;;;;;;;;;;;;;;;14353:22;14345:31;;;;;;14401:3;14391:14;14395:4;;14391:14;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;;74:27;14391:14:3;;137:4:-1;117:14;;;-1:-1;;113:30;157:16;;;14391:14:3;;;;-1:-1:-1;14391:14:3;;-1:-1:-1;;;;14391:14:3;14260:152;;;:::o;13208:1046::-;-1:-1:-1;;;;;13360:19:3;;13369:10;13360:19;;:66;;-1:-1:-1;;;;;;13383:23:3;;;;;;:16;:23;;;;;;;;13407:10;13383:35;;;;;;;;;;:43;;:35;:43;13360:66;13339:155;;;;-1:-1:-1;;;13339:155:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13512:15;;;;;:48;;-1:-1:-1;13531:29:3;;;13512:48;13504:57;;;;;;13576:9;13571:677;13591:15;;;13571:677;;;13631:19;13642:4;;13647:1;13642:7;;;;;;;;;;;;;13631:10;:19::i;:::-;13627:524;;;13706:7;;13714:1;13706:10;;;;;;;;;;;;;13678:8;:17;13687:4;;13692:1;13687:7;;;;;;;;;;;;;13678:17;;;;;;;;;;;:24;13696:5;-1:-1:-1;;;;;13678:24:3;-1:-1:-1;;;;;13678:24:3;;;;;;;;;;;;;:38;;13670:47;;;;;;13762:40;13791:7;;13799:1;13791:10;;;;;;;;;;;;;13762:8;:17;13771:4;;13776:1;13771:7;;;;;;;;;;;;;13762:17;;;;;;;;;;;:24;13780:5;-1:-1:-1;;;;;13762:24:3;-1:-1:-1;;;;;13762:24:3;;;;;;;;;;;;;:28;;:40;;;;:::i;:::-;13735:8;:17;13744:4;;13749:1;13744:7;;;;;;;;;;;;;13735:17;;;;;;;;;;;:24;13753:5;-1:-1:-1;;;;;13735:24:3;-1:-1:-1;;;;;13735:24:3;;;;;;;;;;;;:67;;;;13627:524;;;13849:22;13863:4;;13868:1;13863:7;;;;;;13849:22;13841:31;;;;;;13898:7;;13906:1;13898:10;;;;;;;;;;;;;13912:1;13898:15;13890:24;;;;;;13932:16;13951:31;13974:4;;13979:1;13974:7;;;;;;13951:31;14062:18;;;;:8;:18;;;;;;;;-1:-1:-1;;;;;14062:25:3;;;;;;;;;;13932:50;;-1:-1:-1;14062:32:3;;14092:1;14062:32;:29;:32;:::i;:::-;14034:18;;;;:8;:18;;;;;;;;-1:-1:-1;;;;;14034:25:3;;;;;;;;;:60;;;;14119:8;;14128:4;;14133:1;14128:7;;;;;;;;;;;;;;;;14119:17;;-1:-1:-1;14119:17:3;;;;;;;;-1:-1:-1;14119:17:3;14112:24;;-1:-1:-1;;;;;;14112:24:3;;;-1:-1:-1;13627:524:3;14211:3;-1:-1:-1;;;;;14169:68:3;;14184:10;-1:-1:-1;;;;;;;;;;;14217:4:3;;14222:1;14217:7;;;;;;;;;;;;;14226;;14234:1;14226:10;;;;;;;14169:68;;;;;;14226:10;;;;;;;;;14169:68;;;;-1:-1:-1;14169:68:3;;;;;;;;;13608:3;;13571:677;;;;13208:1046;;;;;:::o;7465:595::-;7589:16;7629:29;;;7621:38;;;;;;7698:29;;;;;;;;;;;;;;;;7669:26;;7712:7;7698:29;;;;;;;29:2:-1;21:6;17:15;117:4;105:10;97:6;88:34;136:17;;-1:-1;7698:29:3;-1:-1:-1;7669:58:3;-1:-1:-1;7742:9:3;7737:290;7757:18;;;7737:290;;;7796:10;7809:4;;7814:1;7809:7;;;;;;;;;;;;;7796:20;;7834:21;7852:2;7834:17;:21::i;:::-;7830:187;;;7906:7;;7914:1;7906:10;;;;;;;7890:12;;;;:8;7906:10;7890:12;;;;;;;;7906:10;;;;;;;-1:-1:-1;;;;;7906:10:3;;;7890:12;;:26;;;;;-1:-1:-1;7890:34:3;;7923:1;7890:34;;;7919:1;7890:34;7875:49;;:9;7885:1;7875:12;;;;;;;;;;;;;:49;;;;;7830:187;;;7978:12;;;;:8;:12;;;;;;7991:7;;7999:1;7991:10;;;;;;;;;;;;;-1:-1:-1;;;;;7991:10:3;-1:-1:-1;;;;;7978:24:3;-1:-1:-1;;;;;7978:24:3;;;;;;;;;;;;;7963:9;7973:1;7963:12;;;;;;;;;;;;;:39;;;;;7830:187;-1:-1:-1;7777:3:3;;7737:290;;;-1:-1:-1;8044:9:3;7465:595;-1:-1:-1;;;;;7465:595:3:o;2453:1065::-;1950:10;1941:20;;;;:8;:20;;;;;;;;1933:60;;;;;-1:-1:-1;;;1933:60:3;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;1933:60:3;;;;;;;;;;;;;;;2608:20;2622:5;2608:13;:20::i;:::-;2600:29;;;;;;2639:13;2655:15;;;:8;:15;;;;;;2673:1;2655:19;;;2702:31;;:3;;:31;:14;:31;:::i;:::-;2684:15;;;;:8;:15;;;;;:49;;;;2743:769;2763:14;;;2743:769;;;2798:20;2821:3;;2825:1;2821:6;;;;;;;;;;;;;-1:-1:-1;;;;;2821:6:3;2798:29;;2841:10;2871:1;2863:5;:9;2854:5;:19;2841:32;;2912:16;:23;2929:5;2912:23;;;;;;;;;;;;2939:1;2912:28;:104;;;-1:-1:-1;2993:23:3;;;;:16;:23;;;;;;;;;2964:11;:18;;;;;;;:25;;2987:1;2964:25;:22;:25;:::i;:::-;:52;;2912:104;2887:190;;;;;-1:-1:-1;;;2887:190:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;3091:12;;;;:8;:12;;;;;;;;:27;;-1:-1:-1;;;;;;3091:27:3;-1:-1:-1;;;;;3091:27:3;;;;;3153:18;;;:11;:18;;;;;;:25;;-1:-1:-1;3153:22:3;:25::i;:::-;3132:18;;;;:11;:18;;;;;;;;:46;;;;3224:8;:15;;;;;-1:-1:-1;;;;;3224:29:3;;;;;;;;:36;;3258:1;3224:36;:33;:36;:::i;:::-;3192:15;;;;:8;:15;;;;;;;;-1:-1:-1;;;;;3192:29:3;;;;;;;;;;;:68;;;;3280:61;;;;;3339:1;3280:61;;;;;;;;;3295:10;;-1:-1:-1;;;;;;;;;;;3280:61:3;;;;;;;;3360:25;:12;-1:-1:-1;;;;;3360:23:3;;:25::i;:::-;3356:146;;;3405:82;3436:10;3448;3460:12;3474:2;3478:1;3481:5;;3405:82;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;3405:30:3;;-1:-1:-1;;;3405:82:3:i;:::-;-1:-1:-1;;2779:3:3;;2743:769;;;;2003:1;2453:1065;;;;;:::o;13017:185::-;-1:-1:-1;;;;;13162:18:3;;;13136:7;13162:18;;;:10;:18;;;;;;;;:28;;;;;;;;;;;;:33;;;;;;;;13017:185::o;9021:755::-;9214:36;;;9206:75;;;;;-1:-1:-1;;;9206:75:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;9299:39;;;9291:78;;;;;-1:-1:-1;;;9291:78:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;9384:9;9379:391;9399:18;;;9379:391;;;9438:10;9451:4;;9456:1;9451:7;;;;;;;;;;;;;9438:20;;9472;9495:14;;9510:1;9495:17;;;;;;;;;;;;;9472:40;;9526:13;9542:7;;9550:1;9542:10;;;;;;;;;;;;;9526:26;;9614:12;9574:10;:22;9585:10;-1:-1:-1;;;;;9574:22:3;-1:-1:-1;;;;;9574:22:3;;;;;;;;;;;;:32;9597:8;-1:-1:-1;;;;;9574:32:3;-1:-1:-1;;;;;9574:32:3;;;;;;;;;;;;:36;9607:2;9574:36;;;;;;;;;;;;:52;9566:61;;;;;;9680:5;9641:10;:22;9652:10;-1:-1:-1;;;;;9641:22:3;-1:-1:-1;;;;;9641:22:3;;;;;;;;;;;;:32;9664:8;-1:-1:-1;;;;;9641:32:3;-1:-1:-1;;;;;9641:32:3;;;;;;;;;;;;:36;9674:2;9641:36;;;;;;;;;;;:44;;;;9735:2;9725:8;-1:-1:-1;;;;;9704:55:3;9713:10;-1:-1:-1;;;;;9704:55:3;;9739:12;9753:5;9704:55;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;9419:3:3;;9379:391;;10491:216;10552:4;-1:-1:-1;;;426:8:3;10637:3;:17;:32;10636:64;;;;-1:-1:-1;;;;;;;10675:19:3;:24;;;10491:216::o;10713:97::-;10764:7;10790:13;;;:8;:13;;;;;;-1:-1:-1;;;;;10790:13:3;;10713:97::o;10140:114::-;-1:-1:-1;;10232:15:3;;10140:114::o;10260:225::-;10325:4;-1:-1:-1;;;426:8:3;10415:3;:17;:32;10414:64;;;;-1:-1:-1;;;;;;;10453:19:3;:24;;10260:225::o;8429:586::-;1950:10;1941:20;;;;:8;:20;;;;;;;;1933:60;;;;;-1:-1:-1;;;1933:60:3;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;1933:60:3;;;;;;;;;;;;;;;8548:1;8533:12;:16;8525:25;;;;;;8564:28;8582:9;8564:17;:28::i;:::-;8560:449;;;8608:14;8625:33;8648:9;8625:22;:33::i;:::-;8680:24;;;;:16;:24;;;;;;8608:50;;-1:-1:-1;8680:29:3;8672:38;;;;;;8724:24;;;;:16;:24;;;;;;;;;:39;;;8782:33;;;;;;;8741:6;;8782:33;;;;;;;;;8560:449;;;;8854:27;;;;:16;:27;;;;;;:32;8846:41;;;;;;8901:27;;;;:16;:27;;;;;;;;;:42;;;8962:36;;;;;;;8918:9;;8962:36;;;;;;;;;8560:449;8429:586;;:::o;460:20::-;;;-1:-1:-1;;;;;460:20:3;;:::o;10019:115::-;-1:-1:-1;;;;;10108:19:3;;10019:115::o;8066:202::-;8164:10;8147:28;;;;:16;:28;;;;;;;;-1:-1:-1;;;;;8147:39:3;;;;;;;;;;;;:51;;-1:-1:-1;;8147:51:3;;;;;;;;;;8213:48;;;;;;;8147:39;;8164:10;8213:48;;;;;;;;;;;8066:202;;:::o;12560:242::-;2070:5;;-1:-1:-1;;;;;2070:5:3;2056:10;:19;2048:28;;;;;;12657:9;12652:144;12672:21;;;12652:144;;;12719:22;12727:10;;12738:1;12727:13;;;;;;;12719:22;;;12727:13;;;;;;;;;-1:-1:-1;;;;;12727:13:3;12719:22;;;;;;;;;;-1:-1:-1;12719:22:3;12781:4;12755:8;:23;12764:10;;12775:1;12764:13;;;;;;;;;;;;;;;;-1:-1:-1;;;;;12764:13:3;12755:23;;-1:-1:-1;12755:23:3;;;;;;;;-1:-1:-1;12755:23:3;:30;;-1:-1:-1;;12755:30:3;;;;;;;;;;-1:-1:-1;12695:3:3;12652:144;;9907:106;-1:-1:-1;;;9984:17:3;:22;;9907:106::o;2100:347::-;1950:10;2180:13;1941:20;;;:8;:20;;;;;;;;1933:60;;;;;-1:-1:-1;;;1933:60:3;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;1933:60:3;;;;;;;;;;;;;;;-1:-1:-1;2216:5:3;2214:7;;;;;;;;2225:3;2214:14;2240:38;;;;-1:-1:-1;;;2259:19:3;2240:38;2294:64;;;;;;2343:3;2294:64;;;;;;;;2343:3;;;;2309:10;;-1:-1:-1;;;;;;;;;;;2294:64:3;;;;;;;;;;2373:22;;2369:49;;2412:5;2402:16;2406:4;;2402:16;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;;74:27;2402:16:3;;137:4:-1;117:14;;;-1:-1;;113:30;157:16;;;2402::3;;;;-1:-1:-1;2402:16:3;;-1:-1:-1;;;;2402:16:3;2369:49;2100:347;;;;;:::o;9782:119::-;-1:-1:-1;;;9862:17:3;;;:32;;9782:119::o;8274:149::-;-1:-1:-1;;;;;8381:24:3;;;8358:4;8381:24;;;:16;:24;;;;;;;;:35;;;;;;;;;;;;;;;8274:149::o;4584:1166::-;-1:-1:-1;;;;;4762:19:3;;4754:59;;;;;-1:-1:-1;;;4754:59:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;4844:19:3;;4853:10;4844:19;;:66;;-1:-1:-1;;;;;;4867:23:3;;;;;;:16;:23;;;;;;;;4891:10;4867:35;;;;;;;;;;:43;;:35;:43;4844:66;4823:160;;;;-1:-1:-1;;;4823:160:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4998:18;5012:3;4998:13;:18::i;:::-;4994:552;;;5040:13;;;;:8;:13;;;;;;-1:-1:-1;;;;;5040:22:3;;;:13;;:22;5032:31;;;;;;5077:13;;;;:8;:13;;;;;:19;;-1:-1:-1;;;;;;5077:19:3;-1:-1:-1;;;;;5077:19:3;;;;;5203:27;5077:13;5203:22;:27::i;:::-;5272:18;;;;:8;:18;;;;;;;;-1:-1:-1;;;;;5272:25:3;;;;;;;;;;5184:46;;-1:-1:-1;5272:37:3;;5302:6;5272:37;:29;:37;:::i;:::-;5244:18;;;;:8;:18;;;;;;;;-1:-1:-1;;;;;5244:25:3;;;;;;;;;;:65;;;;5349:23;;;;;;:35;;5377:6;5349:27;:35::i;:::-;5323:18;;;;:8;:18;;;;;;;;-1:-1:-1;;;;;5323:23:3;;;;;;;;;;:61;4994:552;;;5438:13;;;;:8;:13;;;;;;;;-1:-1:-1;;;;;5438:20:3;;;;;;;;;;:32;;5463:6;5438:32;:24;:32;:::i;:::-;5415:13;;;;:8;:13;;;;;;;;-1:-1:-1;;;;;5415:20:3;;;;;;;;;;:55;;;;5505:18;;;;;;:30;;5528:6;5505:22;:30::i;:::-;5484:13;;;;:8;:13;;;;;;;;-1:-1:-1;;;;;5484:18:3;;;;;;;;;:51;4994:552;5595:3;-1:-1:-1;;;;;5561:51:3;5588:5;-1:-1:-1;;;;;5561:51:3;5576:10;-1:-1:-1;;;;;5561:51:3;-1:-1:-1;;;;;;;;;;;5600:3:3;5605:6;5561:51;;;;;;;;;;;;;;;;;;;;;;;;5627:16;:3;-1:-1:-1;;;;;5627:14:3;;:16::i;:::-;5623:121;;;5659:74;5690:10;5702:5;5709:3;5714;5719:6;5727:5;;5659:74;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;5659:30:3;;-1:-1:-1;;;5659:74:3:i;478:137:7:-;561:5;;;583:6;;;;576:14;;;48:190:0;177:20;223:8;;;48:190::o;11449:437:3:-;101:10:1;11780:16:3;;-1:-1:-1;;;;;11679:117:3;;11700:3;-1:-1:-1;;;;;11679:43:3;;11723:9;11734:5;11741:3;11746:6;11754:5;11679:81;;;;;;;;;;;;;-1:-1:-1;;;;;11679:81:3;-1:-1:-1;;;;;11679:81:3;;;;;;-1:-1:-1;;;;;11679:81:3;-1:-1:-1;;;;;11679:81:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;11679:81:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;11679:81:3;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;11679:81:3;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;11679:81:3;-1:-1:-1;;;;;;11679:117:3;;11658:221;;;;-1:-1:-1;;;11658:221:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;352:120:7;410:7;441:1;436;:6;;429:14;;;;-1:-1:-1;460:5:7;;;352:120::o;11892:558:3:-;167:10:1;12333:22:3;;-1:-1:-1;;;;;12147:208:3;;12168:3;-1:-1:-1;;;;;12147:48:3;;12213:9;12240:5;12263:4;12285:7;12310:5;12147:182;;;;;;;;;;;;;-1:-1:-1;;;;;12147:182:3;-1:-1:-1;;;;;12147:182:3;;;;;;-1:-1:-1;;;;;12147:182:3;-1:-1:-1;;;;;12147:182:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;12147:182:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;12147:182:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;12147:182:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;12147:182:3;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;12147:182:3;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;12147:182:3;-1:-1:-1;;;;;;12147:208:3;;12126:317;;;;-1:-1:-1;;;12126:317:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

Swarm Source

bzzr://e8a61d55a194b2f42d83bad5cb50743bb2cae21f6bc9f7b12d8f0056879d500e
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.