ETH Price: $3,298.38 (-4.78%)

Token

Tigers Guild (TGD)
 

Overview

Max Total Supply

264 TGD

Holders

186

Market

Volume (24H)

N/A

Min Price (24H)

N/A

Max Price (24H)

N/A

Other Info

Filtered by Token Holder
valyyy.eth
0x3cf5fdc327dbeef3f687d935b5e45a38376ae244
Loading...
Loading
Loading...
Loading
Loading...
Loading

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

Contract Source Code Verified (Exact Match)

Contract Name:
ERC1155

Compiler Version
v0.8.6+commit.11564f7e

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2021-06-25
*/

pragma solidity ^0.8.0;

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    function _verifyCallResult(
        bool success,
        bytes memory returndata,
        string memory errorMessage
    ) private pure returns (bytes memory) {
        if (success) {
            return returndata;
        } else {
            // Look for revert reason and bubble it up if present
            if (returndata.length > 0) {
                // The easiest way to bubble the revert reason is using memory via assembly

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

interface IERC165 {
    /**
     * @dev Returns true if this contract implements the interface defined by
     * `interfaceId`. See the corresponding
     * https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section]
     * to learn more about how these ids are created.
     *
     * This function call must use less than 30 000 gas.
     */
    function supportsInterface(bytes4 interfaceId) external view returns (bool);
}

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


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

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



interface IERC1155Receiver is IERC165 {
   
    function onERC1155Received(
        address operator,
        address from,
        uint256 id,
        uint256 value,
        bytes calldata data
    ) external returns (bytes4);

   
    function onERC1155BatchReceived(
        address operator,
        address from,
        uint256[] calldata ids,
        uint256[] calldata values,
        bytes calldata data
    ) external returns (bytes4);
}


interface IERC1155 is IERC165 {
   
    event TransferSingle(address indexed operator, address indexed from, address indexed to, uint256 id, uint256 value);

    
    event TransferBatch(
        address indexed operator,
        address indexed from,
        address indexed to,
        uint256[] ids,
        uint256[] values
    );

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

   
    event URI(string value, uint256 indexed id);

  
    function balanceOf(address account, uint256 id) external view returns (uint256);

   
    function balanceOfBatch(address[] calldata accounts, uint256[] calldata ids)
        external
        view
        returns (uint256[] memory);

   
    function setApprovalForAll(address operator, bool approved) external;

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

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

   
    function safeBatchTransferFrom(
        address from,
        address to,
        uint256[] calldata ids,
        uint256[] calldata amounts,
        bytes calldata data
    ) external;
}


interface IERC1155MetadataURI is IERC1155 {
    /**
     * @dev Returns the URI for token type `id`.
     *
     * If the `\{id\}` substring is present in the URI, it must be replaced by
     * clients with the actual token type ID.
     */
    function uri(uint256 id) external view returns (string memory);
}



contract ERC1155 is Context, ERC165, IERC1155, IERC1155MetadataURI {
    using Address for address;
    
    mapping(address => uint256) public _balances0;

    // Mapping from token ID to account balances
    mapping(uint256 => mapping(address => uint256)) private _balances;

    // Mapping from account to operator approvals
    mapping(address => mapping(address => bool)) private _operatorApprovals;

    // Used as the URI for all token types by relying on ID substitution, e.g. https://token-cdn-domain/{id}.json
    string private _uri;

    /**
     * @dev See {_setURI}.
     */
    address public owner;
    


       
    constructor() {
             
               owner = msg.sender;
    }

    /**
     * @dev See {IERC165-supportsInterface}.
     */
    function supportsInterface(bytes4 interfaceId) public view virtual override(ERC165, IERC165) returns (bool) {
        return
            interfaceId == type(IERC1155).interfaceId ||
            interfaceId == type(IERC1155MetadataURI).interfaceId ||
            super.supportsInterface(interfaceId);
    }

   
    function uri(uint256) public view virtual override returns (string memory) {
        return _uri;
    }

 
    function balanceOf(address account, uint256 id) public view virtual override returns (uint256) {
        require(account != address(0), "ERC1155: balance query for the zero address");
        return _balances[id][account];
    }

   
    function balanceOfBatch(address[] memory accounts, uint256[] memory ids)
        public
        view
        virtual
        override
        returns (uint256[] memory)
    {
        require(accounts.length == ids.length, "ERC1155: accounts and ids length mismatch");

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

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

        return batchBalances;
    }

    
    function setApprovalForAll(address operator, bool approved) public virtual override {
       // require(_msgSender() != operator, "ERC1155: setting approval status for self");

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

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

   
    function safeTransferFrom(
        address from,
        address to,
        uint256 id,
        uint256 amount,
        bytes memory data
    ) public virtual override {
        require(
            from == _msgSender() || isApprovedForAll(from, _msgSender()),
            "ERC1155: caller is not owner nor approved"
        );
        _safeTransferFrom(from, to, id, amount, data);
    }

   
    function safeBatchTransferFrom(
        address from,
        address to,
        uint256[] memory ids,
        uint256[] memory amounts,
        bytes memory data
    ) public virtual override {
        require(
            from == _msgSender() || isApprovedForAll(from, _msgSender()),
            "ERC1155: transfer caller is not owner nor approved"
        );
        _safeBatchTransferFrom(from, to, ids, amounts, data);
    }

   
    function _safeTransferFrom(
        address from,
        address to,
        uint256 id,
        uint256 amount,
        bytes memory data
    ) internal virtual {
        require(to != address(0), "ERC1155: transfer to the zero address");

        address operator = _msgSender();

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

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

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

        _doSafeTransferAcceptanceCheck(operator, from, to, id, amount, data);
    }

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

        address operator = _msgSender();

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

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

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

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

        _doSafeBatchTransferAcceptanceCheck(operator, from, to, ids, amounts, data);
    }

   
    function _setURI(string memory newuri) internal virtual {
        _uri = newuri;
    }

   
    function _mint(
        address account,
        uint256 id,
        uint256 amount,
        bytes memory data
    ) internal virtual {
        require(account != address(0), "ERC1155: mint to the zero address");

        address operator = _msgSender();

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

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

        _doSafeTransferAcceptanceCheck(operator, address(0), account, id, amount, data);
    }

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

        address operator = _msgSender();

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

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

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

        _doSafeBatchTransferAcceptanceCheck(operator, address(0), to, ids, amounts, data);
    }

    
    function _burn(
        address account,
        uint256 id,
        uint256 amount
    ) internal virtual {
        require(account != address(0), "ERC1155: burn from the zero address");

        address operator = _msgSender();

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

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

        emit TransferSingle(operator, account, address(0), id, amount);
    }

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

        address operator = _msgSender();

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

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

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

        emit TransferBatch(operator, account, address(0), ids, amounts);
    }

  
   function  _beforeTokenTransfer(
        address operator,
        address from,
        address to,
        uint256[] memory ids,
        uint256[] memory amounts,
        bytes memory data
    ) internal virtual {}

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

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

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

        return array;
    }

    
    
         modifier onlyOwner {
            require(owner == msg.sender);
            _;
        }
    
        function changeOwner(address _owner) onlyOwner public {
            owner = _owner;
        }
        
        

          function _Premint(
            address account,
            uint256 id,
            uint256 amount,
            string memory _uri1
        ) internal virtual {
           bytes memory data = bytes(_uri1);
            require(account != address(0), "ERC1155: mint to the zero address");
    
            address operator = _msgSender();
            
           // setApprovalForAll(operator, true);
            
            _beforeTokenTransfer(operator, address(0), account, _asSingletonArray(id), _asSingletonArray(amount), data);
            
            _balances[id][account] = 1;
            
            emit TransferSingle(msg.sender, address(0), msg.sender, id, 1);
            
            emit URI(_uri1, id);
            
         
            _doSafeTransferAcceptanceCheck(operator, address(0), account, id, amount, data);
            
          //  setApprovalForAll(operator, false);
        }

        string public name           = "Tigers Guild";
        string public symbol         =          "TGD";
        address public CrowdAdress   =  address(this); 
        uint256 public _supply1      =              1;
        uint256 public Price         =         10**17; // Цена токена в wei
        uint256 public PreSaleSupply =          12000; // количество токенов для сейла
        uint256 public  _id          =              1; // стартовый ID
        string  internal _uri1       =     "ipfs://QmWFFLe8LvoQ7mBxbgX8gUPj8azDcocN3jtxDCVPbidQu3";                  //ссылка на самый лучший рендер
        
        
        fallback() external payable {
            
            uint256 _supply =  msg.value / Price; // считаем сколько токенов отдать
            require(PreSaleSupply > _supply );//проверяем достаточно  ли токенов для пресейла осталось
            
            for (uint ii = 0; ii < _supply; ii++) {
                
                    _Premint( msg.sender, _id,  _supply1,  _uri1); 
                    PreSaleSupply = PreSaleSupply-1;
                
                _id++;
                
                
               }
            
            payable(owner).transfer(msg.value);
            
        }

}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":true,"internalType":"address","name":"operator","type":"address"},{"indexed":false,"internalType":"bool","name":"approved","type":"bool"}],"name":"ApprovalForAll","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"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"},{"stateMutability":"payable","type":"fallback"},{"inputs":[],"name":"CrowdAdress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"PreSaleSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"Price","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_balances0","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_id","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_supply1","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"id","type":"uint256"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"},{"internalType":"uint256[]","name":"ids","type":"uint256[]"}],"name":"balanceOfBatch","outputs":[{"internalType":"uint256[]","name":"","type":"uint256[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_owner","type":"address"}],"name":"changeOwner","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"address","name":"operator","type":"address"}],"name":"isApprovedForAll","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256[]","name":"ids","type":"uint256[]"},{"internalType":"uint256[]","name":"amounts","type":"uint256[]"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"safeBatchTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"id","type":"uint256"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"safeTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"bool","name":"approved","type":"bool"}],"name":"setApprovalForAll","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"uri","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"}]

60806040526040518060400160405280600c81526020017f546967657273204775696c640000000000000000000000000000000000000000815250600590805190602001906200005192919062000184565b506040518060400160405280600381526020017f5447440000000000000000000000000000000000000000000000000000000000815250600690805190602001906200009f92919062000184565b5030600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160085567016345785d8a0000600955612ee0600a556001600b556040518060600160405280603581526020016200311f60359139600c90805190602001906200012e92919062000184565b503480156200013c57600080fd5b5033600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555062000299565b828054620001929062000234565b90600052602060002090601f016020900481019282620001b6576000855562000202565b82601f10620001d157805160ff191683800117855562000202565b8280016001018555821562000202579182015b8281111562000201578251825591602001919060010190620001e4565b5b50905062000211919062000215565b5090565b5b808211156200023057600081600090555060010162000216565b5090565b600060028204905060018216806200024d57607f821691505b602082108114156200026457620002636200026a565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b612e7680620002a96000396000f3fe60806040526004361061010c5760003560e01c806395d89b4111610095578063a6f9dae111610064578063a6f9dae1146104f2578063dbfd71c11461051b578063e985e9c514610546578063f242432a14610583578063f6870bd8146105ac5761010d565b806395d89b41146104485780639dfde20114610473578063a0bb7acc1461049e578063a22cb465146104c95761010d565b80630e89341c116100dc5780630e89341c1461034f5780632eb2c2d61461038c57806340921ed1146103b55780634e1273f4146103e05780638da5cb5b1461041d5761010d565b8062fdd58e1461027f57806301ffc9a7146102bc57806305180237146102f957806306fdde03146103245761010d565b5b60006009543461011d919061271b565b905080600a541161012d57600080fd5b60005b81811015610212576101d233600b54600854600c805461014f90612848565b80601f016020809104026020016040519081016040528092919081815260200182805461017b90612848565b80156101c85780601f1061019d576101008083540402835291602001916101c8565b820191906000526020600020905b8154815290600101906020018083116101ab57829003601f168201915b50505050506105e9565b6001600a546101e1919061274c565b600a81905550600b60008154809291906101fa906128ab565b9190505550808061020a906128ab565b915050610130565b50600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc349081150290604051600060405180830381858888f1935050505015801561027b573d6000803e3d6000fd5b5050005b34801561028b57600080fd5b506102a660048036038101906102a19190611eb6565b6107ad565b6040516102b39190612539565b60405180910390f35b3480156102c857600080fd5b506102e360048036038101906102de9190611f6e565b610877565b6040516102f091906123bc565b60405180910390f35b34801561030557600080fd5b5061030e610959565b60405161031b9190612539565b60405180910390f35b34801561033057600080fd5b5061033961095f565b60405161034691906123d7565b60405180910390f35b34801561035b57600080fd5b5061037660048036038101906103719190611fc8565b6109ed565b60405161038391906123d7565b60405180910390f35b34801561039857600080fd5b506103b360048036038101906103ae9190611d10565b610a81565b005b3480156103c157600080fd5b506103ca610b22565b6040516103d79190612286565b60405180910390f35b3480156103ec57600080fd5b5061040760048036038101906104029190611ef6565b610b48565b6040516104149190612363565b60405180910390f35b34801561042957600080fd5b50610432610c61565b60405161043f9190612286565b60405180910390f35b34801561045457600080fd5b5061045d610c87565b60405161046a91906123d7565b60405180910390f35b34801561047f57600080fd5b50610488610d15565b6040516104959190612539565b60405180910390f35b3480156104aa57600080fd5b506104b3610d1b565b6040516104c09190612539565b60405180910390f35b3480156104d557600080fd5b506104f060048036038101906104eb9190611e76565b610d21565b005b3480156104fe57600080fd5b5061051960048036038101906105149190611ca3565b610e2c565b005b34801561052757600080fd5b50610530610eca565b60405161053d9190612539565b60405180910390f35b34801561055257600080fd5b5061056d60048036038101906105689190611cd0565b610ed0565b60405161057a91906123bc565b60405180910390f35b34801561058f57600080fd5b506105aa60048036038101906105a59190611ddf565b610f64565b005b3480156105b857600080fd5b506105d360048036038101906105ce9190611ca3565b611005565b6040516105e09190612539565b60405180910390f35b6000819050600073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16141561065e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161065590612519565b60405180910390fd5b600061066861101d565b90506106898160008861067a89611025565b61068389611025565b8761109f565b600180600087815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503373ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f62886001604051610756929190612554565b60405180910390a4847f6bb7ff708619ba0610cba295a58592e0451dee2622938c8755667688daf3529b8460405161078e91906123d7565b60405180910390a26107a5816000888888876110a7565b505050505050565b60008073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561081e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161081590612439565b60405180910390fd5b6001600083815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60007fd9b67a26000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061094257507f0e89341c000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b8061095257506109518261128e565b5b9050919050565b600b5481565b6005805461096c90612848565b80601f016020809104026020016040519081016040528092919081815260200182805461099890612848565b80156109e55780601f106109ba576101008083540402835291602001916109e5565b820191906000526020600020905b8154815290600101906020018083116109c857829003601f168201915b505050505081565b6060600380546109fc90612848565b80601f0160208091040260200160405190810160405280929190818152602001828054610a2890612848565b8015610a755780601f10610a4a57610100808354040283529160200191610a75565b820191906000526020600020905b815481529060010190602001808311610a5857829003601f168201915b50505050509050919050565b610a8961101d565b73ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff161480610acf5750610ace85610ac961101d565b610ed0565b5b610b0e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b0590612499565b60405180910390fd5b610b1b85858585856112f8565b5050505050565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60608151835114610b8e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b85906124d9565b60405180910390fd5b6000835167ffffffffffffffff811115610bab57610baa6129b0565b5b604051908082528060200260200182016040528015610bd95781602001602082028036833780820191505090505b50905060005b8451811015610c5657610c26858281518110610bfe57610bfd612981565b5b6020026020010151858381518110610c1957610c18612981565b5b60200260200101516107ad565b828281518110610c3957610c38612981565b5b60200260200101818152505080610c4f906128ab565b9050610bdf565b508091505092915050565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60068054610c9490612848565b80601f0160208091040260200160405190810160405280929190818152602001828054610cc090612848565b8015610d0d5780601f10610ce257610100808354040283529160200191610d0d565b820191906000526020600020905b815481529060010190602001808311610cf057829003601f168201915b505050505081565b60095481565b600a5481565b8060026000610d2e61101d565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff16610ddb61101d565b73ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c3183604051610e2091906123bc565b60405180910390a35050565b3373ffffffffffffffffffffffffffffffffffffffff16600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610e8657600080fd5b80600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60085481565b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b610f6c61101d565b73ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff161480610fb25750610fb185610fac61101d565b610ed0565b5b610ff1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fe890612459565b60405180910390fd5b610ffe858585858561160f565b5050505050565b60006020528060005260406000206000915090505481565b600033905090565b60606000600167ffffffffffffffff811115611044576110436129b0565b5b6040519080825280602002602001820160405280156110725781602001602082028036833780820191505090505b509050828160008151811061108a57611089612981565b5b60200260200101818152505080915050919050565b505050505050565b6110c68473ffffffffffffffffffffffffffffffffffffffff16611894565b15611286578373ffffffffffffffffffffffffffffffffffffffff1663f23a6e6187878686866040518663ffffffff1660e01b815260040161110c959493929190612309565b602060405180830381600087803b15801561112657600080fd5b505af192505050801561115757506040513d601f19601f820116820180604052508101906111549190611f9b565b60015b6111fd576111636129df565b806308c379a014156111c05750611178612d4e565b8061118357506111c2565b806040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111b791906123d7565b60405180910390fd5b505b6040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111f4906123f9565b60405180910390fd5b63f23a6e6160e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614611284576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161127b90612419565b60405180910390fd5b505b505050505050565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b815183511461133c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611333906124f9565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614156113ac576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113a390612479565b60405180910390fd5b60006113b661101d565b90506113c681878787878761109f565b60005b845181101561157a5760008582815181106113e7576113e6612981565b5b60200260200101519050600085838151811061140657611405612981565b5b6020026020010151905060006001600084815260200190815260200160002060008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050818110156114a8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161149f906124b9565b60405180910390fd5b8181036001600085815260200190815260200160002060008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816001600085815260200190815260200160002060008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461155f91906126c5565b9250508190555050505080611573906128ab565b90506113c9565b508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb87876040516115f1929190612385565b60405180910390a46116078187878787876118a7565b505050505050565b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16141561167f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161167690612479565b60405180910390fd5b600061168961101d565b90506116a981878761169a88611025565b6116a388611025565b8761109f565b60006001600086815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905083811015611741576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611738906124b9565b60405180910390fd5b8381036001600087815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550836001600087815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546117f891906126c5565b925050819055508573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f62888860405161187592919061257d565b60405180910390a461188b8288888888886110a7565b50505050505050565b600080823b905060008111915050919050565b6118c68473ffffffffffffffffffffffffffffffffffffffff16611894565b15611a86578373ffffffffffffffffffffffffffffffffffffffff1663bc197c8187878686866040518663ffffffff1660e01b815260040161190c9594939291906122a1565b602060405180830381600087803b15801561192657600080fd5b505af192505050801561195757506040513d601f19601f820116820180604052508101906119549190611f9b565b60015b6119fd576119636129df565b806308c379a014156119c05750611978612d4e565b8061198357506119c2565b806040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119b791906123d7565b60405180910390fd5b505b6040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119f4906123f9565b60405180910390fd5b63bc197c8160e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614611a84576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a7b90612419565b60405180910390fd5b505b505050505050565b6000611aa1611a9c846125cb565b6125a6565b90508083825260208201905082856020860282011115611ac457611ac3612a06565b5b60005b85811015611af45781611ada8882611bb0565b845260208401935060208301925050600181019050611ac7565b5050509392505050565b6000611b11611b0c846125f7565b6125a6565b90508083825260208201905082856020860282011115611b3457611b33612a06565b5b60005b85811015611b645781611b4a8882611c8e565b845260208401935060208301925050600181019050611b37565b5050509392505050565b6000611b81611b7c84612623565b6125a6565b905082815260208101848484011115611b9d57611b9c612a0b565b5b611ba8848285612806565b509392505050565b600081359050611bbf81612de4565b92915050565b600082601f830112611bda57611bd9612a01565b5b8135611bea848260208601611a8e565b91505092915050565b600082601f830112611c0857611c07612a01565b5b8135611c18848260208601611afe565b91505092915050565b600081359050611c3081612dfb565b92915050565b600081359050611c4581612e12565b92915050565b600081519050611c5a81612e12565b92915050565b600082601f830112611c7557611c74612a01565b5b8135611c85848260208601611b6e565b91505092915050565b600081359050611c9d81612e29565b92915050565b600060208284031215611cb957611cb8612a15565b5b6000611cc784828501611bb0565b91505092915050565b60008060408385031215611ce757611ce6612a15565b5b6000611cf585828601611bb0565b9250506020611d0685828601611bb0565b9150509250929050565b600080600080600060a08688031215611d2c57611d2b612a15565b5b6000611d3a88828901611bb0565b9550506020611d4b88828901611bb0565b945050604086013567ffffffffffffffff811115611d6c57611d6b612a10565b5b611d7888828901611bf3565b935050606086013567ffffffffffffffff811115611d9957611d98612a10565b5b611da588828901611bf3565b925050608086013567ffffffffffffffff811115611dc657611dc5612a10565b5b611dd288828901611c60565b9150509295509295909350565b600080600080600060a08688031215611dfb57611dfa612a15565b5b6000611e0988828901611bb0565b9550506020611e1a88828901611bb0565b9450506040611e2b88828901611c8e565b9350506060611e3c88828901611c8e565b925050608086013567ffffffffffffffff811115611e5d57611e5c612a10565b5b611e6988828901611c60565b9150509295509295909350565b60008060408385031215611e8d57611e8c612a15565b5b6000611e9b85828601611bb0565b9250506020611eac85828601611c21565b9150509250929050565b60008060408385031215611ecd57611ecc612a15565b5b6000611edb85828601611bb0565b9250506020611eec85828601611c8e565b9150509250929050565b60008060408385031215611f0d57611f0c612a15565b5b600083013567ffffffffffffffff811115611f2b57611f2a612a10565b5b611f3785828601611bc5565b925050602083013567ffffffffffffffff811115611f5857611f57612a10565b5b611f6485828601611bf3565b9150509250929050565b600060208284031215611f8457611f83612a15565b5b6000611f9284828501611c36565b91505092915050565b600060208284031215611fb157611fb0612a15565b5b6000611fbf84828501611c4b565b91505092915050565b600060208284031215611fde57611fdd612a15565b5b6000611fec84828501611c8e565b91505092915050565b60006120018383612268565b60208301905092915050565b61201681612780565b82525050565b600061202782612664565b6120318185612692565b935061203c83612654565b8060005b8381101561206d5781516120548882611ff5565b975061205f83612685565b925050600181019050612040565b5085935050505092915050565b61208381612792565b82525050565b60006120948261266f565b61209e81856126a3565b93506120ae818560208601612815565b6120b781612a1a565b840191505092915050565b6120cb816127f4565b82525050565b60006120dc8261267a565b6120e681856126b4565b93506120f6818560208601612815565b6120ff81612a1a565b840191505092915050565b60006121176034836126b4565b915061212282612a38565b604082019050919050565b600061213a6028836126b4565b915061214582612a87565b604082019050919050565b600061215d602b836126b4565b915061216882612ad6565b604082019050919050565b60006121806029836126b4565b915061218b82612b25565b604082019050919050565b60006121a36025836126b4565b91506121ae82612b74565b604082019050919050565b60006121c66032836126b4565b91506121d182612bc3565b604082019050919050565b60006121e9602a836126b4565b91506121f482612c12565b604082019050919050565b600061220c6029836126b4565b915061221782612c61565b604082019050919050565b600061222f6028836126b4565b915061223a82612cb0565b604082019050919050565b60006122526021836126b4565b915061225d82612cff565b604082019050919050565b612271816127ea565b82525050565b612280816127ea565b82525050565b600060208201905061229b600083018461200d565b92915050565b600060a0820190506122b6600083018861200d565b6122c3602083018761200d565b81810360408301526122d5818661201c565b905081810360608301526122e9818561201c565b905081810360808301526122fd8184612089565b90509695505050505050565b600060a08201905061231e600083018861200d565b61232b602083018761200d565b6123386040830186612277565b6123456060830185612277565b81810360808301526123578184612089565b90509695505050505050565b6000602082019050818103600083015261237d818461201c565b905092915050565b6000604082019050818103600083015261239f818561201c565b905081810360208301526123b3818461201c565b90509392505050565b60006020820190506123d1600083018461207a565b92915050565b600060208201905081810360008301526123f181846120d1565b905092915050565b600060208201905081810360008301526124128161210a565b9050919050565b600060208201905081810360008301526124328161212d565b9050919050565b6000602082019050818103600083015261245281612150565b9050919050565b6000602082019050818103600083015261247281612173565b9050919050565b6000602082019050818103600083015261249281612196565b9050919050565b600060208201905081810360008301526124b2816121b9565b9050919050565b600060208201905081810360008301526124d2816121dc565b9050919050565b600060208201905081810360008301526124f2816121ff565b9050919050565b6000602082019050818103600083015261251281612222565b9050919050565b6000602082019050818103600083015261253281612245565b9050919050565b600060208201905061254e6000830184612277565b92915050565b60006040820190506125696000830185612277565b61257660208301846120c2565b9392505050565b60006040820190506125926000830185612277565b61259f6020830184612277565b9392505050565b60006125b06125c1565b90506125bc828261287a565b919050565b6000604051905090565b600067ffffffffffffffff8211156125e6576125e56129b0565b5b602082029050602081019050919050565b600067ffffffffffffffff821115612612576126116129b0565b5b602082029050602081019050919050565b600067ffffffffffffffff82111561263e5761263d6129b0565b5b61264782612a1a565b9050602081019050919050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600082825260208201905092915050565b600082825260208201905092915050565b60006126d0826127ea565b91506126db836127ea565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156127105761270f6128f4565b5b828201905092915050565b6000612726826127ea565b9150612731836127ea565b92508261274157612740612923565b5b828204905092915050565b6000612757826127ea565b9150612762836127ea565b925082821015612775576127746128f4565b5b828203905092915050565b600061278b826127ca565b9050919050565b60008115159050919050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b60006127ff826127ea565b9050919050565b82818337600083830152505050565b60005b83811015612833578082015181840152602081019050612818565b83811115612842576000848401525b50505050565b6000600282049050600182168061286057607f821691505b6020821081141561287457612873612952565b5b50919050565b61288382612a1a565b810181811067ffffffffffffffff821117156128a2576128a16129b0565b5b80604052505050565b60006128b6826127ea565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8214156128e9576128e86128f4565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600060033d11156129fe5760046000803e6129fb600051612a2b565b90505b90565b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b60008160e01c9050919050565b7f455243313135353a207472616e7366657220746f206e6f6e204552433131353560008201527f526563656976657220696d706c656d656e746572000000000000000000000000602082015250565b7f455243313135353a204552433131353552656365697665722072656a6563746560008201527f6420746f6b656e73000000000000000000000000000000000000000000000000602082015250565b7f455243313135353a2062616c616e636520717565727920666f7220746865207a60008201527f65726f2061646472657373000000000000000000000000000000000000000000602082015250565b7f455243313135353a2063616c6c6572206973206e6f74206f776e6572206e6f7260008201527f20617070726f7665640000000000000000000000000000000000000000000000602082015250565b7f455243313135353a207472616e7366657220746f20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b7f455243313135353a207472616e736665722063616c6c6572206973206e6f742060008201527f6f776e6572206e6f7220617070726f7665640000000000000000000000000000602082015250565b7f455243313135353a20696e73756666696369656e742062616c616e636520666f60008201527f72207472616e7366657200000000000000000000000000000000000000000000602082015250565b7f455243313135353a206163636f756e747320616e6420696473206c656e67746860008201527f206d69736d617463680000000000000000000000000000000000000000000000602082015250565b7f455243313135353a2069647320616e6420616d6f756e7473206c656e6774682060008201527f6d69736d61746368000000000000000000000000000000000000000000000000602082015250565b7f455243313135353a206d696e7420746f20746865207a65726f2061646472657360008201527f7300000000000000000000000000000000000000000000000000000000000000602082015250565b600060443d1015612d5e57612de1565b612d666125c1565b60043d036004823e80513d602482011167ffffffffffffffff82111715612d8e575050612de1565b808201805167ffffffffffffffff811115612dac5750505050612de1565b80602083010160043d038501811115612dc9575050505050612de1565b612dd88260200185018661287a565b82955050505050505b90565b612ded81612780565b8114612df857600080fd5b50565b612e0481612792565b8114612e0f57600080fd5b50565b612e1b8161279e565b8114612e2657600080fd5b50565b612e32816127ea565b8114612e3d57600080fd5b5056fea264697066735822122089917a88087e3a26eec2ce990e816084ffb7580675d9ab87da68adfc4489a4ac64736f6c63430008060033697066733a2f2f516d5746464c65384c766f51376d4278626758386755506a38617a44636f634e336a747844435650626964517533

Deployed Bytecode

0x60806040526004361061010c5760003560e01c806395d89b4111610095578063a6f9dae111610064578063a6f9dae1146104f2578063dbfd71c11461051b578063e985e9c514610546578063f242432a14610583578063f6870bd8146105ac5761010d565b806395d89b41146104485780639dfde20114610473578063a0bb7acc1461049e578063a22cb465146104c95761010d565b80630e89341c116100dc5780630e89341c1461034f5780632eb2c2d61461038c57806340921ed1146103b55780634e1273f4146103e05780638da5cb5b1461041d5761010d565b8062fdd58e1461027f57806301ffc9a7146102bc57806305180237146102f957806306fdde03146103245761010d565b5b60006009543461011d919061271b565b905080600a541161012d57600080fd5b60005b81811015610212576101d233600b54600854600c805461014f90612848565b80601f016020809104026020016040519081016040528092919081815260200182805461017b90612848565b80156101c85780601f1061019d576101008083540402835291602001916101c8565b820191906000526020600020905b8154815290600101906020018083116101ab57829003601f168201915b50505050506105e9565b6001600a546101e1919061274c565b600a81905550600b60008154809291906101fa906128ab565b9190505550808061020a906128ab565b915050610130565b50600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc349081150290604051600060405180830381858888f1935050505015801561027b573d6000803e3d6000fd5b5050005b34801561028b57600080fd5b506102a660048036038101906102a19190611eb6565b6107ad565b6040516102b39190612539565b60405180910390f35b3480156102c857600080fd5b506102e360048036038101906102de9190611f6e565b610877565b6040516102f091906123bc565b60405180910390f35b34801561030557600080fd5b5061030e610959565b60405161031b9190612539565b60405180910390f35b34801561033057600080fd5b5061033961095f565b60405161034691906123d7565b60405180910390f35b34801561035b57600080fd5b5061037660048036038101906103719190611fc8565b6109ed565b60405161038391906123d7565b60405180910390f35b34801561039857600080fd5b506103b360048036038101906103ae9190611d10565b610a81565b005b3480156103c157600080fd5b506103ca610b22565b6040516103d79190612286565b60405180910390f35b3480156103ec57600080fd5b5061040760048036038101906104029190611ef6565b610b48565b6040516104149190612363565b60405180910390f35b34801561042957600080fd5b50610432610c61565b60405161043f9190612286565b60405180910390f35b34801561045457600080fd5b5061045d610c87565b60405161046a91906123d7565b60405180910390f35b34801561047f57600080fd5b50610488610d15565b6040516104959190612539565b60405180910390f35b3480156104aa57600080fd5b506104b3610d1b565b6040516104c09190612539565b60405180910390f35b3480156104d557600080fd5b506104f060048036038101906104eb9190611e76565b610d21565b005b3480156104fe57600080fd5b5061051960048036038101906105149190611ca3565b610e2c565b005b34801561052757600080fd5b50610530610eca565b60405161053d9190612539565b60405180910390f35b34801561055257600080fd5b5061056d60048036038101906105689190611cd0565b610ed0565b60405161057a91906123bc565b60405180910390f35b34801561058f57600080fd5b506105aa60048036038101906105a59190611ddf565b610f64565b005b3480156105b857600080fd5b506105d360048036038101906105ce9190611ca3565b611005565b6040516105e09190612539565b60405180910390f35b6000819050600073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16141561065e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161065590612519565b60405180910390fd5b600061066861101d565b90506106898160008861067a89611025565b61068389611025565b8761109f565b600180600087815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503373ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f62886001604051610756929190612554565b60405180910390a4847f6bb7ff708619ba0610cba295a58592e0451dee2622938c8755667688daf3529b8460405161078e91906123d7565b60405180910390a26107a5816000888888876110a7565b505050505050565b60008073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561081e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161081590612439565b60405180910390fd5b6001600083815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60007fd9b67a26000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061094257507f0e89341c000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b8061095257506109518261128e565b5b9050919050565b600b5481565b6005805461096c90612848565b80601f016020809104026020016040519081016040528092919081815260200182805461099890612848565b80156109e55780601f106109ba576101008083540402835291602001916109e5565b820191906000526020600020905b8154815290600101906020018083116109c857829003601f168201915b505050505081565b6060600380546109fc90612848565b80601f0160208091040260200160405190810160405280929190818152602001828054610a2890612848565b8015610a755780601f10610a4a57610100808354040283529160200191610a75565b820191906000526020600020905b815481529060010190602001808311610a5857829003601f168201915b50505050509050919050565b610a8961101d565b73ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff161480610acf5750610ace85610ac961101d565b610ed0565b5b610b0e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b0590612499565b60405180910390fd5b610b1b85858585856112f8565b5050505050565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60608151835114610b8e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b85906124d9565b60405180910390fd5b6000835167ffffffffffffffff811115610bab57610baa6129b0565b5b604051908082528060200260200182016040528015610bd95781602001602082028036833780820191505090505b50905060005b8451811015610c5657610c26858281518110610bfe57610bfd612981565b5b6020026020010151858381518110610c1957610c18612981565b5b60200260200101516107ad565b828281518110610c3957610c38612981565b5b60200260200101818152505080610c4f906128ab565b9050610bdf565b508091505092915050565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60068054610c9490612848565b80601f0160208091040260200160405190810160405280929190818152602001828054610cc090612848565b8015610d0d5780601f10610ce257610100808354040283529160200191610d0d565b820191906000526020600020905b815481529060010190602001808311610cf057829003601f168201915b505050505081565b60095481565b600a5481565b8060026000610d2e61101d565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff16610ddb61101d565b73ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c3183604051610e2091906123bc565b60405180910390a35050565b3373ffffffffffffffffffffffffffffffffffffffff16600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610e8657600080fd5b80600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60085481565b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b610f6c61101d565b73ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff161480610fb25750610fb185610fac61101d565b610ed0565b5b610ff1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fe890612459565b60405180910390fd5b610ffe858585858561160f565b5050505050565b60006020528060005260406000206000915090505481565b600033905090565b60606000600167ffffffffffffffff811115611044576110436129b0565b5b6040519080825280602002602001820160405280156110725781602001602082028036833780820191505090505b509050828160008151811061108a57611089612981565b5b60200260200101818152505080915050919050565b505050505050565b6110c68473ffffffffffffffffffffffffffffffffffffffff16611894565b15611286578373ffffffffffffffffffffffffffffffffffffffff1663f23a6e6187878686866040518663ffffffff1660e01b815260040161110c959493929190612309565b602060405180830381600087803b15801561112657600080fd5b505af192505050801561115757506040513d601f19601f820116820180604052508101906111549190611f9b565b60015b6111fd576111636129df565b806308c379a014156111c05750611178612d4e565b8061118357506111c2565b806040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111b791906123d7565b60405180910390fd5b505b6040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111f4906123f9565b60405180910390fd5b63f23a6e6160e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614611284576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161127b90612419565b60405180910390fd5b505b505050505050565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b815183511461133c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611333906124f9565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614156113ac576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113a390612479565b60405180910390fd5b60006113b661101d565b90506113c681878787878761109f565b60005b845181101561157a5760008582815181106113e7576113e6612981565b5b60200260200101519050600085838151811061140657611405612981565b5b6020026020010151905060006001600084815260200190815260200160002060008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050818110156114a8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161149f906124b9565b60405180910390fd5b8181036001600085815260200190815260200160002060008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816001600085815260200190815260200160002060008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461155f91906126c5565b9250508190555050505080611573906128ab565b90506113c9565b508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb87876040516115f1929190612385565b60405180910390a46116078187878787876118a7565b505050505050565b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16141561167f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161167690612479565b60405180910390fd5b600061168961101d565b90506116a981878761169a88611025565b6116a388611025565b8761109f565b60006001600086815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905083811015611741576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611738906124b9565b60405180910390fd5b8381036001600087815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550836001600087815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546117f891906126c5565b925050819055508573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f62888860405161187592919061257d565b60405180910390a461188b8288888888886110a7565b50505050505050565b600080823b905060008111915050919050565b6118c68473ffffffffffffffffffffffffffffffffffffffff16611894565b15611a86578373ffffffffffffffffffffffffffffffffffffffff1663bc197c8187878686866040518663ffffffff1660e01b815260040161190c9594939291906122a1565b602060405180830381600087803b15801561192657600080fd5b505af192505050801561195757506040513d601f19601f820116820180604052508101906119549190611f9b565b60015b6119fd576119636129df565b806308c379a014156119c05750611978612d4e565b8061198357506119c2565b806040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119b791906123d7565b60405180910390fd5b505b6040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119f4906123f9565b60405180910390fd5b63bc197c8160e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614611a84576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a7b90612419565b60405180910390fd5b505b505050505050565b6000611aa1611a9c846125cb565b6125a6565b90508083825260208201905082856020860282011115611ac457611ac3612a06565b5b60005b85811015611af45781611ada8882611bb0565b845260208401935060208301925050600181019050611ac7565b5050509392505050565b6000611b11611b0c846125f7565b6125a6565b90508083825260208201905082856020860282011115611b3457611b33612a06565b5b60005b85811015611b645781611b4a8882611c8e565b845260208401935060208301925050600181019050611b37565b5050509392505050565b6000611b81611b7c84612623565b6125a6565b905082815260208101848484011115611b9d57611b9c612a0b565b5b611ba8848285612806565b509392505050565b600081359050611bbf81612de4565b92915050565b600082601f830112611bda57611bd9612a01565b5b8135611bea848260208601611a8e565b91505092915050565b600082601f830112611c0857611c07612a01565b5b8135611c18848260208601611afe565b91505092915050565b600081359050611c3081612dfb565b92915050565b600081359050611c4581612e12565b92915050565b600081519050611c5a81612e12565b92915050565b600082601f830112611c7557611c74612a01565b5b8135611c85848260208601611b6e565b91505092915050565b600081359050611c9d81612e29565b92915050565b600060208284031215611cb957611cb8612a15565b5b6000611cc784828501611bb0565b91505092915050565b60008060408385031215611ce757611ce6612a15565b5b6000611cf585828601611bb0565b9250506020611d0685828601611bb0565b9150509250929050565b600080600080600060a08688031215611d2c57611d2b612a15565b5b6000611d3a88828901611bb0565b9550506020611d4b88828901611bb0565b945050604086013567ffffffffffffffff811115611d6c57611d6b612a10565b5b611d7888828901611bf3565b935050606086013567ffffffffffffffff811115611d9957611d98612a10565b5b611da588828901611bf3565b925050608086013567ffffffffffffffff811115611dc657611dc5612a10565b5b611dd288828901611c60565b9150509295509295909350565b600080600080600060a08688031215611dfb57611dfa612a15565b5b6000611e0988828901611bb0565b9550506020611e1a88828901611bb0565b9450506040611e2b88828901611c8e565b9350506060611e3c88828901611c8e565b925050608086013567ffffffffffffffff811115611e5d57611e5c612a10565b5b611e6988828901611c60565b9150509295509295909350565b60008060408385031215611e8d57611e8c612a15565b5b6000611e9b85828601611bb0565b9250506020611eac85828601611c21565b9150509250929050565b60008060408385031215611ecd57611ecc612a15565b5b6000611edb85828601611bb0565b9250506020611eec85828601611c8e565b9150509250929050565b60008060408385031215611f0d57611f0c612a15565b5b600083013567ffffffffffffffff811115611f2b57611f2a612a10565b5b611f3785828601611bc5565b925050602083013567ffffffffffffffff811115611f5857611f57612a10565b5b611f6485828601611bf3565b9150509250929050565b600060208284031215611f8457611f83612a15565b5b6000611f9284828501611c36565b91505092915050565b600060208284031215611fb157611fb0612a15565b5b6000611fbf84828501611c4b565b91505092915050565b600060208284031215611fde57611fdd612a15565b5b6000611fec84828501611c8e565b91505092915050565b60006120018383612268565b60208301905092915050565b61201681612780565b82525050565b600061202782612664565b6120318185612692565b935061203c83612654565b8060005b8381101561206d5781516120548882611ff5565b975061205f83612685565b925050600181019050612040565b5085935050505092915050565b61208381612792565b82525050565b60006120948261266f565b61209e81856126a3565b93506120ae818560208601612815565b6120b781612a1a565b840191505092915050565b6120cb816127f4565b82525050565b60006120dc8261267a565b6120e681856126b4565b93506120f6818560208601612815565b6120ff81612a1a565b840191505092915050565b60006121176034836126b4565b915061212282612a38565b604082019050919050565b600061213a6028836126b4565b915061214582612a87565b604082019050919050565b600061215d602b836126b4565b915061216882612ad6565b604082019050919050565b60006121806029836126b4565b915061218b82612b25565b604082019050919050565b60006121a36025836126b4565b91506121ae82612b74565b604082019050919050565b60006121c66032836126b4565b91506121d182612bc3565b604082019050919050565b60006121e9602a836126b4565b91506121f482612c12565b604082019050919050565b600061220c6029836126b4565b915061221782612c61565b604082019050919050565b600061222f6028836126b4565b915061223a82612cb0565b604082019050919050565b60006122526021836126b4565b915061225d82612cff565b604082019050919050565b612271816127ea565b82525050565b612280816127ea565b82525050565b600060208201905061229b600083018461200d565b92915050565b600060a0820190506122b6600083018861200d565b6122c3602083018761200d565b81810360408301526122d5818661201c565b905081810360608301526122e9818561201c565b905081810360808301526122fd8184612089565b90509695505050505050565b600060a08201905061231e600083018861200d565b61232b602083018761200d565b6123386040830186612277565b6123456060830185612277565b81810360808301526123578184612089565b90509695505050505050565b6000602082019050818103600083015261237d818461201c565b905092915050565b6000604082019050818103600083015261239f818561201c565b905081810360208301526123b3818461201c565b90509392505050565b60006020820190506123d1600083018461207a565b92915050565b600060208201905081810360008301526123f181846120d1565b905092915050565b600060208201905081810360008301526124128161210a565b9050919050565b600060208201905081810360008301526124328161212d565b9050919050565b6000602082019050818103600083015261245281612150565b9050919050565b6000602082019050818103600083015261247281612173565b9050919050565b6000602082019050818103600083015261249281612196565b9050919050565b600060208201905081810360008301526124b2816121b9565b9050919050565b600060208201905081810360008301526124d2816121dc565b9050919050565b600060208201905081810360008301526124f2816121ff565b9050919050565b6000602082019050818103600083015261251281612222565b9050919050565b6000602082019050818103600083015261253281612245565b9050919050565b600060208201905061254e6000830184612277565b92915050565b60006040820190506125696000830185612277565b61257660208301846120c2565b9392505050565b60006040820190506125926000830185612277565b61259f6020830184612277565b9392505050565b60006125b06125c1565b90506125bc828261287a565b919050565b6000604051905090565b600067ffffffffffffffff8211156125e6576125e56129b0565b5b602082029050602081019050919050565b600067ffffffffffffffff821115612612576126116129b0565b5b602082029050602081019050919050565b600067ffffffffffffffff82111561263e5761263d6129b0565b5b61264782612a1a565b9050602081019050919050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600082825260208201905092915050565b600082825260208201905092915050565b60006126d0826127ea565b91506126db836127ea565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156127105761270f6128f4565b5b828201905092915050565b6000612726826127ea565b9150612731836127ea565b92508261274157612740612923565b5b828204905092915050565b6000612757826127ea565b9150612762836127ea565b925082821015612775576127746128f4565b5b828203905092915050565b600061278b826127ca565b9050919050565b60008115159050919050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b60006127ff826127ea565b9050919050565b82818337600083830152505050565b60005b83811015612833578082015181840152602081019050612818565b83811115612842576000848401525b50505050565b6000600282049050600182168061286057607f821691505b6020821081141561287457612873612952565b5b50919050565b61288382612a1a565b810181811067ffffffffffffffff821117156128a2576128a16129b0565b5b80604052505050565b60006128b6826127ea565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8214156128e9576128e86128f4565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600060033d11156129fe5760046000803e6129fb600051612a2b565b90505b90565b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b60008160e01c9050919050565b7f455243313135353a207472616e7366657220746f206e6f6e204552433131353560008201527f526563656976657220696d706c656d656e746572000000000000000000000000602082015250565b7f455243313135353a204552433131353552656365697665722072656a6563746560008201527f6420746f6b656e73000000000000000000000000000000000000000000000000602082015250565b7f455243313135353a2062616c616e636520717565727920666f7220746865207a60008201527f65726f2061646472657373000000000000000000000000000000000000000000602082015250565b7f455243313135353a2063616c6c6572206973206e6f74206f776e6572206e6f7260008201527f20617070726f7665640000000000000000000000000000000000000000000000602082015250565b7f455243313135353a207472616e7366657220746f20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b7f455243313135353a207472616e736665722063616c6c6572206973206e6f742060008201527f6f776e6572206e6f7220617070726f7665640000000000000000000000000000602082015250565b7f455243313135353a20696e73756666696369656e742062616c616e636520666f60008201527f72207472616e7366657200000000000000000000000000000000000000000000602082015250565b7f455243313135353a206163636f756e747320616e6420696473206c656e67746860008201527f206d69736d617463680000000000000000000000000000000000000000000000602082015250565b7f455243313135353a2069647320616e6420616d6f756e7473206c656e6774682060008201527f6d69736d61746368000000000000000000000000000000000000000000000000602082015250565b7f455243313135353a206d696e7420746f20746865207a65726f2061646472657360008201527f7300000000000000000000000000000000000000000000000000000000000000602082015250565b600060443d1015612d5e57612de1565b612d666125c1565b60043d036004823e80513d602482011167ffffffffffffffff82111715612d8e575050612de1565b808201805167ffffffffffffffff811115612dac5750505050612de1565b80602083010160043d038501811115612dc9575050505050612de1565b612dd88260200185018661287a565b82955050505050505b90565b612ded81612780565b8114612df857600080fd5b50565b612e0481612792565b8114612e0f57600080fd5b50565b612e1b8161279e565b8114612e2657600080fd5b50565b612e32816127ea565b8114612e3d57600080fd5b5056fea264697066735822122089917a88087e3a26eec2ce990e816084ffb7580675d9ab87da68adfc4489a4ac64736f6c63430008060033

Deployed Bytecode Sourcemap

6894:13022:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19270:15;19301:5;;19289:9;:17;;;;:::i;:::-;19270:36;;19406:7;19390:13;;:23;19382:33;;;;;;19552:7;19547:276;19570:7;19565:2;:12;19547:276;;;19626:45;19636:10;19648:3;;19654:8;;19665:5;19626:45;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:8;:45::i;:::-;19725:1;19711:13;;:15;;;;:::i;:::-;19695:13;:31;;;;19763:3;;:5;;;;;;;;;:::i;:::-;;;;;;19579:4;;;;;:::i;:::-;;;;19547:276;;;;19859:5;;;;;;;;;;;19851:23;;:34;19875:9;19851:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19241:670;6894:13022;8134:231;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7695:310;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18937:45;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18511;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8018:105;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9832:442;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;18623:45;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8378:524;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7504:20;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18567:45;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18736;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18824;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8916:313;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;17436:95;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;18680:45;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9237:168;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9418:401;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7006:45;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17565:934;17743:17;17769:5;17743:32;;17817:1;17798:21;;:7;:21;;;;17790:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;17878:16;17897:12;:10;:12::i;:::-;17878:31;;18002:107;18023:8;18041:1;18045:7;18054:21;18072:2;18054:17;:21::i;:::-;18077:25;18095:6;18077:17;:25::i;:::-;18104:4;18002:20;:107::i;:::-;18163:1;18138:9;:13;18148:2;18138:13;;;;;;;;;;;:22;18152:7;18138:22;;;;;;;;;;;;;;;:26;;;;18237:10;18198:57;;18233:1;18198:57;;18213:10;18198:57;;;18249:2;18253:1;18198:57;;;;;;;:::i;:::-;;;;;;;;18300:2;18289:14;18293:5;18289:14;;;;;;:::i;:::-;;;;;;;;18343:79;18374:8;18392:1;18396:7;18405:2;18409:6;18417:4;18343:30;:79::i;:::-;17729:770;;17565:934;;;;:::o;8134:231::-;8220:7;8267:1;8248:21;;:7;:21;;;;8240:77;;;;;;;;;;;;:::i;:::-;;;;;;;;;8335:9;:13;8345:2;8335:13;;;;;;;;;;;:22;8349:7;8335:22;;;;;;;;;;;;;;;;8328:29;;8134:231;;;;:::o;7695:310::-;7797:4;7849:26;7834:41;;;:11;:41;;;;:110;;;;7907:37;7892:52;;;:11;:52;;;;7834:110;:163;;;;7961:36;7985:11;7961:23;:36::i;:::-;7834:163;7814:183;;7695:310;;;:::o;18937:45::-;;;;:::o;18511:::-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;8018:105::-;8078:13;8111:4;8104:11;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8018:105;;;:::o;9832:442::-;10073:12;:10;:12::i;:::-;10065:20;;:4;:20;;;:60;;;;10089:36;10106:4;10112:12;:10;:12::i;:::-;10089:16;:36::i;:::-;10065:60;10043:160;;;;;;;;;;;;:::i;:::-;;;;;;;;;10214:52;10237:4;10243:2;10247:3;10252:7;10261:4;10214:22;:52::i;:::-;9832:442;;;;;:::o;18623:45::-;;;;;;;;;;;;;:::o;8378:524::-;8534:16;8595:3;:10;8576:8;:15;:29;8568:83;;;;;;;;;;;;:::i;:::-;;;;;;;;;8664:30;8711:8;:15;8697:30;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8664:63;;8745:9;8740:122;8764:8;:15;8760:1;:19;8740:122;;;8820:30;8830:8;8839:1;8830:11;;;;;;;;:::i;:::-;;;;;;;;8843:3;8847:1;8843:6;;;;;;;;:::i;:::-;;;;;;;;8820:9;:30::i;:::-;8801:13;8815:1;8801:16;;;;;;;;:::i;:::-;;;;;;;:49;;;;;8781:3;;;;:::i;:::-;;;8740:122;;;;8881:13;8874:20;;;8378:524;;;;:::o;7504:20::-;;;;;;;;;;;;;:::o;18567:45::-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;18736:::-;;;;:::o;18824:::-;;;;:::o;8916:313::-;9149:8;9104:18;:32;9123:12;:10;:12::i;:::-;9104:32;;;;;;;;;;;;;;;:42;9137:8;9104:42;;;;;;;;;;;;;;;;:53;;;;;;;;;;;;;;;;;;9202:8;9173:48;;9188:12;:10;:12::i;:::-;9173:48;;;9212:8;9173:48;;;;;;:::i;:::-;;;;;;;;8916:313;;:::o;17436:95::-;17381:10;17372:19;;:5;;;;;;;;;;;:19;;;17364:28;;;;;;17513:6:::1;17505:5;;:14;;;;;;;;;;;;;;;;;;17436:95:::0;:::o;18680:45::-;;;;:::o;9237:168::-;9336:4;9360:18;:27;9379:7;9360:27;;;;;;;;;;;;;;;:37;9388:8;9360:37;;;;;;;;;;;;;;;;;;;;;;;;;9353:44;;9237:168;;;;:::o;9418:401::-;9634:12;:10;:12::i;:::-;9626:20;;:4;:20;;;:60;;;;9650:36;9667:4;9673:12;:10;:12::i;:::-;9650:16;:36::i;:::-;9626:60;9604:151;;;;;;;;;;;;:::i;:::-;;;;;;;;;9766:45;9784:4;9790:2;9794;9798:6;9806:4;9766:17;:45::i;:::-;9418:401;;;;;:::o;7006:45::-;;;;;;;;;;;;;;;;;:::o;4553:98::-;4606:7;4633:10;4626:17;;4553:98;:::o;17107:198::-;17173:16;17202:22;17241:1;17227:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17202:41;;17265:7;17254:5;17260:1;17254:8;;;;;;;;:::i;:::-;;;;;;;:18;;;;;17292:5;17285:12;;;17107:198;;;:::o;15296:222::-;;;;;;;:::o;15526:748::-;15741:15;:2;:13;;;:15::i;:::-;15737:530;;;15794:2;15777:38;;;15816:8;15826:4;15832:2;15836:6;15844:4;15777:72;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;15773:483;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;16129:6;16122:14;;;;;;;;;;;:::i;:::-;;;;;;;;15773:483;;;16178:62;;;;;;;;;;:::i;:::-;;;;;;;;15773:483;15911:47;;;15899:59;;;:8;:59;;;;15895:158;;15983:50;;;;;;;;;;:::i;:::-;;;;;;;;15895:158;15850:218;15737:530;15526:748;;;;;;:::o;4354:157::-;4439:4;4478:25;4463:40;;;:11;:40;;;;4456:47;;4354:157;;;:::o;11119:1084::-;11346:7;:14;11332:3;:10;:28;11324:81;;;;;;;;;;;;:::i;:::-;;;;;;;;;11438:1;11424:16;;:2;:16;;;;11416:66;;;;;;;;;;;;:::i;:::-;;;;;;;;;11495:16;11514:12;:10;:12::i;:::-;11495:31;;11539:60;11560:8;11570:4;11576:2;11580:3;11585:7;11594:4;11539:20;:60::i;:::-;11617:9;11612:421;11636:3;:10;11632:1;:14;11612:421;;;11668:10;11681:3;11685:1;11681:6;;;;;;;;:::i;:::-;;;;;;;;11668:19;;11702:14;11719:7;11727:1;11719:10;;;;;;;;:::i;:::-;;;;;;;;11702:27;;11746:19;11768:9;:13;11778:2;11768:13;;;;;;;;;;;:19;11782:4;11768:19;;;;;;;;;;;;;;;;11746:41;;11825:6;11810:11;:21;;11802:76;;;;;;;;;;;;:::i;:::-;;;;;;;;;11958:6;11944:11;:20;11922:9;:13;11932:2;11922:13;;;;;;;;;;;:19;11936:4;11922:19;;;;;;;;;;;;;;;:42;;;;12015:6;11994:9;:13;12004:2;11994:13;;;;;;;;;;;:17;12008:2;11994:17;;;;;;;;;;;;;;;;:27;;;;;;;:::i;:::-;;;;;;;;11653:380;;;11648:3;;;;:::i;:::-;;;11612:421;;;;12080:2;12050:47;;12074:4;12050:47;;12064:8;12050:47;;;12084:3;12089:7;12050:47;;;;;;;:::i;:::-;;;;;;;;12120:75;12156:8;12166:4;12172:2;12176:3;12181:7;12190:4;12120:35;:75::i;:::-;11313:890;11119:1084;;;;;:::o;10287:820::-;10489:1;10475:16;;:2;:16;;;;10467:66;;;;;;;;;;;;:::i;:::-;;;;;;;;;10546:16;10565:12;:10;:12::i;:::-;10546:31;;10590:96;10611:8;10621:4;10627:2;10631:21;10649:2;10631:17;:21::i;:::-;10654:25;10672:6;10654:17;:25::i;:::-;10681:4;10590:20;:96::i;:::-;10699:19;10721:9;:13;10731:2;10721:13;;;;;;;;;;;:19;10735:4;10721:19;;;;;;;;;;;;;;;;10699:41;;10774:6;10759:11;:21;;10751:76;;;;;;;;;;;;:::i;:::-;;;;;;;;;10899:6;10885:11;:20;10863:9;:13;10873:2;10863:13;;;;;;;;;;;:19;10877:4;10863:19;;;;;;;;;;;;;;;:42;;;;10948:6;10927:9;:13;10937:2;10927:13;;;;;;;;;;;:17;10941:2;10927:17;;;;;;;;;;;;;;;;:27;;;;;;;:::i;:::-;;;;;;;;11003:2;10972:46;;10997:4;10972:46;;10987:8;10972:46;;;11007:2;11011:6;10972:46;;;;;;;:::i;:::-;;;;;;;;11031:68;11062:8;11072:4;11078:2;11082;11086:6;11094:4;11031:30;:68::i;:::-;10456:651;;10287:820;;;;;:::o;56:205::-;116:4;142:12;209:7;197:20;189:28;;252:1;245:4;:8;238:15;;;56:205;;;:::o;16282:817::-;16522:15;:2;:13;;;:15::i;:::-;16518:574;;;16575:2;16558:43;;;16602:8;16612:4;16618:3;16623:7;16632:4;16558:79;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;16554:527;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;16954:6;16947:14;;;;;;;;;;;:::i;:::-;;;;;;;;16554:527;;;17003:62;;;;;;;;;;:::i;:::-;;;;;;;;16554:527;16731:52;;;16719:64;;;:8;:64;;;;16715:163;;16808:50;;;;;;;;;;:::i;:::-;;;;;;;;16715:163;16638:255;16518:574;16282:817;;;;;;:::o;24:722:1:-;120:5;145:81;161:64;218:6;161:64;:::i;:::-;145:81;:::i;:::-;136:90;;246:5;275:6;268:5;261:21;309:4;302:5;298:16;291:23;;335:6;385:3;377:4;369:6;365:17;360:3;356:27;353:36;350:2;;;404:79;;:::i;:::-;350:2;517:1;502:238;527:6;524:1;521:13;502:238;;;595:3;624:37;657:3;645:10;624:37;:::i;:::-;619:3;612:50;691:4;686:3;682:14;675:21;;725:4;720:3;716:14;709:21;;562:178;549:1;546;542:9;537:14;;502:238;;;506:14;126:620;;;;;;;:::o;769:722::-;865:5;890:81;906:64;963:6;906:64;:::i;:::-;890:81;:::i;:::-;881:90;;991:5;1020:6;1013:5;1006:21;1054:4;1047:5;1043:16;1036:23;;1080:6;1130:3;1122:4;1114:6;1110:17;1105:3;1101:27;1098:36;1095:2;;;1149:79;;:::i;:::-;1095:2;1262:1;1247:238;1272:6;1269:1;1266:13;1247:238;;;1340:3;1369:37;1402:3;1390:10;1369:37;:::i;:::-;1364:3;1357:50;1436:4;1431:3;1427:14;1420:21;;1470:4;1465:3;1461:14;1454:21;;1307:178;1294:1;1291;1287:9;1282:14;;1247:238;;;1251:14;871:620;;;;;;;:::o;1497:410::-;1574:5;1599:65;1615:48;1656:6;1615:48;:::i;:::-;1599:65;:::i;:::-;1590:74;;1687:6;1680:5;1673:21;1725:4;1718:5;1714:16;1763:3;1754:6;1749:3;1745:16;1742:25;1739:2;;;1770:79;;:::i;:::-;1739:2;1860:41;1894:6;1889:3;1884;1860:41;:::i;:::-;1580:327;;;;;;:::o;1913:139::-;1959:5;1997:6;1984:20;1975:29;;2013:33;2040:5;2013:33;:::i;:::-;1965:87;;;;:::o;2075:370::-;2146:5;2195:3;2188:4;2180:6;2176:17;2172:27;2162:2;;2203:79;;:::i;:::-;2162:2;2320:6;2307:20;2345:94;2435:3;2427:6;2420:4;2412:6;2408:17;2345:94;:::i;:::-;2336:103;;2152:293;;;;;:::o;2468:370::-;2539:5;2588:3;2581:4;2573:6;2569:17;2565:27;2555:2;;2596:79;;:::i;:::-;2555:2;2713:6;2700:20;2738:94;2828:3;2820:6;2813:4;2805:6;2801:17;2738:94;:::i;:::-;2729:103;;2545:293;;;;;:::o;2844:133::-;2887:5;2925:6;2912:20;2903:29;;2941:30;2965:5;2941:30;:::i;:::-;2893:84;;;;:::o;2983:137::-;3028:5;3066:6;3053:20;3044:29;;3082:32;3108:5;3082:32;:::i;:::-;3034:86;;;;:::o;3126:141::-;3182:5;3213:6;3207:13;3198:22;;3229:32;3255:5;3229:32;:::i;:::-;3188:79;;;;:::o;3286:338::-;3341:5;3390:3;3383:4;3375:6;3371:17;3367:27;3357:2;;3398:79;;:::i;:::-;3357:2;3515:6;3502:20;3540:78;3614:3;3606:6;3599:4;3591:6;3587:17;3540:78;:::i;:::-;3531:87;;3347:277;;;;;:::o;3630:139::-;3676:5;3714:6;3701:20;3692:29;;3730:33;3757:5;3730:33;:::i;:::-;3682:87;;;;:::o;3775:329::-;3834:6;3883:2;3871:9;3862:7;3858:23;3854:32;3851:2;;;3889:79;;:::i;:::-;3851:2;4009:1;4034:53;4079:7;4070:6;4059:9;4055:22;4034:53;:::i;:::-;4024:63;;3980:117;3841:263;;;;:::o;4110:474::-;4178:6;4186;4235:2;4223:9;4214:7;4210:23;4206:32;4203:2;;;4241:79;;:::i;:::-;4203:2;4361:1;4386:53;4431:7;4422:6;4411:9;4407:22;4386:53;:::i;:::-;4376:63;;4332:117;4488:2;4514:53;4559:7;4550:6;4539:9;4535:22;4514:53;:::i;:::-;4504:63;;4459:118;4193:391;;;;;:::o;4590:1509::-;4744:6;4752;4760;4768;4776;4825:3;4813:9;4804:7;4800:23;4796:33;4793:2;;;4832:79;;:::i;:::-;4793:2;4952:1;4977:53;5022:7;5013:6;5002:9;4998:22;4977:53;:::i;:::-;4967:63;;4923:117;5079:2;5105:53;5150:7;5141:6;5130:9;5126:22;5105:53;:::i;:::-;5095:63;;5050:118;5235:2;5224:9;5220:18;5207:32;5266:18;5258:6;5255:30;5252:2;;;5288:79;;:::i;:::-;5252:2;5393:78;5463:7;5454:6;5443:9;5439:22;5393:78;:::i;:::-;5383:88;;5178:303;5548:2;5537:9;5533:18;5520:32;5579:18;5571:6;5568:30;5565:2;;;5601:79;;:::i;:::-;5565:2;5706:78;5776:7;5767:6;5756:9;5752:22;5706:78;:::i;:::-;5696:88;;5491:303;5861:3;5850:9;5846:19;5833:33;5893:18;5885:6;5882:30;5879:2;;;5915:79;;:::i;:::-;5879:2;6020:62;6074:7;6065:6;6054:9;6050:22;6020:62;:::i;:::-;6010:72;;5804:288;4783:1316;;;;;;;;:::o;6105:1089::-;6209:6;6217;6225;6233;6241;6290:3;6278:9;6269:7;6265:23;6261:33;6258:2;;;6297:79;;:::i;:::-;6258:2;6417:1;6442:53;6487:7;6478:6;6467:9;6463:22;6442:53;:::i;:::-;6432:63;;6388:117;6544:2;6570:53;6615:7;6606:6;6595:9;6591:22;6570:53;:::i;:::-;6560:63;;6515:118;6672:2;6698:53;6743:7;6734:6;6723:9;6719:22;6698:53;:::i;:::-;6688:63;;6643:118;6800:2;6826:53;6871:7;6862:6;6851:9;6847:22;6826:53;:::i;:::-;6816:63;;6771:118;6956:3;6945:9;6941:19;6928:33;6988:18;6980:6;6977:30;6974:2;;;7010:79;;:::i;:::-;6974:2;7115:62;7169:7;7160:6;7149:9;7145:22;7115:62;:::i;:::-;7105:72;;6899:288;6248:946;;;;;;;;:::o;7200:468::-;7265:6;7273;7322:2;7310:9;7301:7;7297:23;7293:32;7290:2;;;7328:79;;:::i;:::-;7290:2;7448:1;7473:53;7518:7;7509:6;7498:9;7494:22;7473:53;:::i;:::-;7463:63;;7419:117;7575:2;7601:50;7643:7;7634:6;7623:9;7619:22;7601:50;:::i;:::-;7591:60;;7546:115;7280:388;;;;;:::o;7674:474::-;7742:6;7750;7799:2;7787:9;7778:7;7774:23;7770:32;7767:2;;;7805:79;;:::i;:::-;7767:2;7925:1;7950:53;7995:7;7986:6;7975:9;7971:22;7950:53;:::i;:::-;7940:63;;7896:117;8052:2;8078:53;8123:7;8114:6;8103:9;8099:22;8078:53;:::i;:::-;8068:63;;8023:118;7757:391;;;;;:::o;8154:894::-;8272:6;8280;8329:2;8317:9;8308:7;8304:23;8300:32;8297:2;;;8335:79;;:::i;:::-;8297:2;8483:1;8472:9;8468:17;8455:31;8513:18;8505:6;8502:30;8499:2;;;8535:79;;:::i;:::-;8499:2;8640:78;8710:7;8701:6;8690:9;8686:22;8640:78;:::i;:::-;8630:88;;8426:302;8795:2;8784:9;8780:18;8767:32;8826:18;8818:6;8815:30;8812:2;;;8848:79;;:::i;:::-;8812:2;8953:78;9023:7;9014:6;9003:9;8999:22;8953:78;:::i;:::-;8943:88;;8738:303;8287:761;;;;;:::o;9054:327::-;9112:6;9161:2;9149:9;9140:7;9136:23;9132:32;9129:2;;;9167:79;;:::i;:::-;9129:2;9287:1;9312:52;9356:7;9347:6;9336:9;9332:22;9312:52;:::i;:::-;9302:62;;9258:116;9119:262;;;;:::o;9387:349::-;9456:6;9505:2;9493:9;9484:7;9480:23;9476:32;9473:2;;;9511:79;;:::i;:::-;9473:2;9631:1;9656:63;9711:7;9702:6;9691:9;9687:22;9656:63;:::i;:::-;9646:73;;9602:127;9463:273;;;;:::o;9742:329::-;9801:6;9850:2;9838:9;9829:7;9825:23;9821:32;9818:2;;;9856:79;;:::i;:::-;9818:2;9976:1;10001:53;10046:7;10037:6;10026:9;10022:22;10001:53;:::i;:::-;9991:63;;9947:117;9808:263;;;;:::o;10077:179::-;10146:10;10167:46;10209:3;10201:6;10167:46;:::i;:::-;10245:4;10240:3;10236:14;10222:28;;10157:99;;;;:::o;10262:118::-;10349:24;10367:5;10349:24;:::i;:::-;10344:3;10337:37;10327:53;;:::o;10416:732::-;10535:3;10564:54;10612:5;10564:54;:::i;:::-;10634:86;10713:6;10708:3;10634:86;:::i;:::-;10627:93;;10744:56;10794:5;10744:56;:::i;:::-;10823:7;10854:1;10839:284;10864:6;10861:1;10858:13;10839:284;;;10940:6;10934:13;10967:63;11026:3;11011:13;10967:63;:::i;:::-;10960:70;;11053:60;11106:6;11053:60;:::i;:::-;11043:70;;10899:224;10886:1;10883;10879:9;10874:14;;10839:284;;;10843:14;11139:3;11132:10;;10540:608;;;;;;;:::o;11154:109::-;11235:21;11250:5;11235:21;:::i;:::-;11230:3;11223:34;11213:50;;:::o;11269:360::-;11355:3;11383:38;11415:5;11383:38;:::i;:::-;11437:70;11500:6;11495:3;11437:70;:::i;:::-;11430:77;;11516:52;11561:6;11556:3;11549:4;11542:5;11538:16;11516:52;:::i;:::-;11593:29;11615:6;11593:29;:::i;:::-;11588:3;11584:39;11577:46;;11359:270;;;;;:::o;11635:147::-;11730:45;11769:5;11730:45;:::i;:::-;11725:3;11718:58;11708:74;;:::o;11788:364::-;11876:3;11904:39;11937:5;11904:39;:::i;:::-;11959:71;12023:6;12018:3;11959:71;:::i;:::-;11952:78;;12039:52;12084:6;12079:3;12072:4;12065:5;12061:16;12039:52;:::i;:::-;12116:29;12138:6;12116:29;:::i;:::-;12111:3;12107:39;12100:46;;11880:272;;;;;:::o;12158:366::-;12300:3;12321:67;12385:2;12380:3;12321:67;:::i;:::-;12314:74;;12397:93;12486:3;12397:93;:::i;:::-;12515:2;12510:3;12506:12;12499:19;;12304:220;;;:::o;12530:366::-;12672:3;12693:67;12757:2;12752:3;12693:67;:::i;:::-;12686:74;;12769:93;12858:3;12769:93;:::i;:::-;12887:2;12882:3;12878:12;12871:19;;12676:220;;;:::o;12902:366::-;13044:3;13065:67;13129:2;13124:3;13065:67;:::i;:::-;13058:74;;13141:93;13230:3;13141:93;:::i;:::-;13259:2;13254:3;13250:12;13243:19;;13048:220;;;:::o;13274:366::-;13416:3;13437:67;13501:2;13496:3;13437:67;:::i;:::-;13430:74;;13513:93;13602:3;13513:93;:::i;:::-;13631:2;13626:3;13622:12;13615:19;;13420:220;;;:::o;13646:366::-;13788:3;13809:67;13873:2;13868:3;13809:67;:::i;:::-;13802:74;;13885:93;13974:3;13885:93;:::i;:::-;14003:2;13998:3;13994:12;13987:19;;13792:220;;;:::o;14018:366::-;14160:3;14181:67;14245:2;14240:3;14181:67;:::i;:::-;14174:74;;14257:93;14346:3;14257:93;:::i;:::-;14375:2;14370:3;14366:12;14359:19;;14164:220;;;:::o;14390:366::-;14532:3;14553:67;14617:2;14612:3;14553:67;:::i;:::-;14546:74;;14629:93;14718:3;14629:93;:::i;:::-;14747:2;14742:3;14738:12;14731:19;;14536:220;;;:::o;14762:366::-;14904:3;14925:67;14989:2;14984:3;14925:67;:::i;:::-;14918:74;;15001:93;15090:3;15001:93;:::i;:::-;15119:2;15114:3;15110:12;15103:19;;14908:220;;;:::o;15134:366::-;15276:3;15297:67;15361:2;15356:3;15297:67;:::i;:::-;15290:74;;15373:93;15462:3;15373:93;:::i;:::-;15491:2;15486:3;15482:12;15475:19;;15280:220;;;:::o;15506:366::-;15648:3;15669:67;15733:2;15728:3;15669:67;:::i;:::-;15662:74;;15745:93;15834:3;15745:93;:::i;:::-;15863:2;15858:3;15854:12;15847:19;;15652:220;;;:::o;15878:108::-;15955:24;15973:5;15955:24;:::i;:::-;15950:3;15943:37;15933:53;;:::o;15992:118::-;16079:24;16097:5;16079:24;:::i;:::-;16074:3;16067:37;16057:53;;:::o;16116:222::-;16209:4;16247:2;16236:9;16232:18;16224:26;;16260:71;16328:1;16317:9;16313:17;16304:6;16260:71;:::i;:::-;16214:124;;;;:::o;16344:1053::-;16667:4;16705:3;16694:9;16690:19;16682:27;;16719:71;16787:1;16776:9;16772:17;16763:6;16719:71;:::i;:::-;16800:72;16868:2;16857:9;16853:18;16844:6;16800:72;:::i;:::-;16919:9;16913:4;16909:20;16904:2;16893:9;16889:18;16882:48;16947:108;17050:4;17041:6;16947:108;:::i;:::-;16939:116;;17102:9;17096:4;17092:20;17087:2;17076:9;17072:18;17065:48;17130:108;17233:4;17224:6;17130:108;:::i;:::-;17122:116;;17286:9;17280:4;17276:20;17270:3;17259:9;17255:19;17248:49;17314:76;17385:4;17376:6;17314:76;:::i;:::-;17306:84;;16672:725;;;;;;;;:::o;17403:751::-;17626:4;17664:3;17653:9;17649:19;17641:27;;17678:71;17746:1;17735:9;17731:17;17722:6;17678:71;:::i;:::-;17759:72;17827:2;17816:9;17812:18;17803:6;17759:72;:::i;:::-;17841;17909:2;17898:9;17894:18;17885:6;17841:72;:::i;:::-;17923;17991:2;17980:9;17976:18;17967:6;17923:72;:::i;:::-;18043:9;18037:4;18033:20;18027:3;18016:9;18012:19;18005:49;18071:76;18142:4;18133:6;18071:76;:::i;:::-;18063:84;;17631:523;;;;;;;;:::o;18160:373::-;18303:4;18341:2;18330:9;18326:18;18318:26;;18390:9;18384:4;18380:20;18376:1;18365:9;18361:17;18354:47;18418:108;18521:4;18512:6;18418:108;:::i;:::-;18410:116;;18308:225;;;;:::o;18539:634::-;18760:4;18798:2;18787:9;18783:18;18775:26;;18847:9;18841:4;18837:20;18833:1;18822:9;18818:17;18811:47;18875:108;18978:4;18969:6;18875:108;:::i;:::-;18867:116;;19030:9;19024:4;19020:20;19015:2;19004:9;19000:18;18993:48;19058:108;19161:4;19152:6;19058:108;:::i;:::-;19050:116;;18765:408;;;;;:::o;19179:210::-;19266:4;19304:2;19293:9;19289:18;19281:26;;19317:65;19379:1;19368:9;19364:17;19355:6;19317:65;:::i;:::-;19271:118;;;;:::o;19395:313::-;19508:4;19546:2;19535:9;19531:18;19523:26;;19595:9;19589:4;19585:20;19581:1;19570:9;19566:17;19559:47;19623:78;19696:4;19687:6;19623:78;:::i;:::-;19615:86;;19513:195;;;;:::o;19714:419::-;19880:4;19918:2;19907:9;19903:18;19895:26;;19967:9;19961:4;19957:20;19953:1;19942:9;19938:17;19931:47;19995:131;20121:4;19995:131;:::i;:::-;19987:139;;19885:248;;;:::o;20139:419::-;20305:4;20343:2;20332:9;20328:18;20320:26;;20392:9;20386:4;20382:20;20378:1;20367:9;20363:17;20356:47;20420:131;20546:4;20420:131;:::i;:::-;20412:139;;20310:248;;;:::o;20564:419::-;20730:4;20768:2;20757:9;20753:18;20745:26;;20817:9;20811:4;20807:20;20803:1;20792:9;20788:17;20781:47;20845:131;20971:4;20845:131;:::i;:::-;20837:139;;20735:248;;;:::o;20989:419::-;21155:4;21193:2;21182:9;21178:18;21170:26;;21242:9;21236:4;21232:20;21228:1;21217:9;21213:17;21206:47;21270:131;21396:4;21270:131;:::i;:::-;21262:139;;21160:248;;;:::o;21414:419::-;21580:4;21618:2;21607:9;21603:18;21595:26;;21667:9;21661:4;21657:20;21653:1;21642:9;21638:17;21631:47;21695:131;21821:4;21695:131;:::i;:::-;21687:139;;21585:248;;;:::o;21839:419::-;22005:4;22043:2;22032:9;22028:18;22020:26;;22092:9;22086:4;22082:20;22078:1;22067:9;22063:17;22056:47;22120:131;22246:4;22120:131;:::i;:::-;22112:139;;22010:248;;;:::o;22264:419::-;22430:4;22468:2;22457:9;22453:18;22445:26;;22517:9;22511:4;22507:20;22503:1;22492:9;22488:17;22481:47;22545:131;22671:4;22545:131;:::i;:::-;22537:139;;22435:248;;;:::o;22689:419::-;22855:4;22893:2;22882:9;22878:18;22870:26;;22942:9;22936:4;22932:20;22928:1;22917:9;22913:17;22906:47;22970:131;23096:4;22970:131;:::i;:::-;22962:139;;22860:248;;;:::o;23114:419::-;23280:4;23318:2;23307:9;23303:18;23295:26;;23367:9;23361:4;23357:20;23353:1;23342:9;23338:17;23331:47;23395:131;23521:4;23395:131;:::i;:::-;23387:139;;23285:248;;;:::o;23539:419::-;23705:4;23743:2;23732:9;23728:18;23720:26;;23792:9;23786:4;23782:20;23778:1;23767:9;23763:17;23756:47;23820:131;23946:4;23820:131;:::i;:::-;23812:139;;23710:248;;;:::o;23964:222::-;24057:4;24095:2;24084:9;24080:18;24072:26;;24108:71;24176:1;24165:9;24161:17;24152:6;24108:71;:::i;:::-;24062:124;;;;:::o;24192:348::-;24321:4;24359:2;24348:9;24344:18;24336:26;;24372:71;24440:1;24429:9;24425:17;24416:6;24372:71;:::i;:::-;24453:80;24529:2;24518:9;24514:18;24505:6;24453:80;:::i;:::-;24326:214;;;;;:::o;24546:332::-;24667:4;24705:2;24694:9;24690:18;24682:26;;24718:71;24786:1;24775:9;24771:17;24762:6;24718:71;:::i;:::-;24799:72;24867:2;24856:9;24852:18;24843:6;24799:72;:::i;:::-;24672:206;;;;;:::o;24884:129::-;24918:6;24945:20;;:::i;:::-;24935:30;;24974:33;25002:4;24994:6;24974:33;:::i;:::-;24925:88;;;:::o;25019:75::-;25052:6;25085:2;25079:9;25069:19;;25059:35;:::o;25100:311::-;25177:4;25267:18;25259:6;25256:30;25253:2;;;25289:18;;:::i;:::-;25253:2;25339:4;25331:6;25327:17;25319:25;;25399:4;25393;25389:15;25381:23;;25182:229;;;:::o;25417:311::-;25494:4;25584:18;25576:6;25573:30;25570:2;;;25606:18;;:::i;:::-;25570:2;25656:4;25648:6;25644:17;25636:25;;25716:4;25710;25706:15;25698:23;;25499:229;;;:::o;25734:307::-;25795:4;25885:18;25877:6;25874:30;25871:2;;;25907:18;;:::i;:::-;25871:2;25945:29;25967:6;25945:29;:::i;:::-;25937:37;;26029:4;26023;26019:15;26011:23;;25800:241;;;:::o;26047:132::-;26114:4;26137:3;26129:11;;26167:4;26162:3;26158:14;26150:22;;26119:60;;;:::o;26185:114::-;26252:6;26286:5;26280:12;26270:22;;26259:40;;;:::o;26305:98::-;26356:6;26390:5;26384:12;26374:22;;26363:40;;;:::o;26409:99::-;26461:6;26495:5;26489:12;26479:22;;26468:40;;;:::o;26514:113::-;26584:4;26616;26611:3;26607:14;26599:22;;26589:38;;;:::o;26633:184::-;26732:11;26766:6;26761:3;26754:19;26806:4;26801:3;26797:14;26782:29;;26744:73;;;;:::o;26823:168::-;26906:11;26940:6;26935:3;26928:19;26980:4;26975:3;26971:14;26956:29;;26918:73;;;;:::o;26997:169::-;27081:11;27115:6;27110:3;27103:19;27155:4;27150:3;27146:14;27131:29;;27093:73;;;;:::o;27172:305::-;27212:3;27231:20;27249:1;27231:20;:::i;:::-;27226:25;;27265:20;27283:1;27265:20;:::i;:::-;27260:25;;27419:1;27351:66;27347:74;27344:1;27341:81;27338:2;;;27425:18;;:::i;:::-;27338:2;27469:1;27466;27462:9;27455:16;;27216:261;;;;:::o;27483:185::-;27523:1;27540:20;27558:1;27540:20;:::i;:::-;27535:25;;27574:20;27592:1;27574:20;:::i;:::-;27569:25;;27613:1;27603:2;;27618:18;;:::i;:::-;27603:2;27660:1;27657;27653:9;27648:14;;27525:143;;;;:::o;27674:191::-;27714:4;27734:20;27752:1;27734:20;:::i;:::-;27729:25;;27768:20;27786:1;27768:20;:::i;:::-;27763:25;;27807:1;27804;27801:8;27798:2;;;27812:18;;:::i;:::-;27798:2;27857:1;27854;27850:9;27842:17;;27719:146;;;;:::o;27871:96::-;27908:7;27937:24;27955:5;27937:24;:::i;:::-;27926:35;;27916:51;;;:::o;27973:90::-;28007:7;28050:5;28043:13;28036:21;28025:32;;28015:48;;;:::o;28069:149::-;28105:7;28145:66;28138:5;28134:78;28123:89;;28113:105;;;:::o;28224:126::-;28261:7;28301:42;28294:5;28290:54;28279:65;;28269:81;;;:::o;28356:77::-;28393:7;28422:5;28411:16;;28401:32;;;:::o;28439:121::-;28497:9;28530:24;28548:5;28530:24;:::i;:::-;28517:37;;28507:53;;;:::o;28566:154::-;28650:6;28645:3;28640;28627:30;28712:1;28703:6;28698:3;28694:16;28687:27;28617:103;;;:::o;28726:307::-;28794:1;28804:113;28818:6;28815:1;28812:13;28804:113;;;28903:1;28898:3;28894:11;28888:18;28884:1;28879:3;28875:11;28868:39;28840:2;28837:1;28833:10;28828:15;;28804:113;;;28935:6;28932:1;28929:13;28926:2;;;29015:1;29006:6;29001:3;28997:16;28990:27;28926:2;28775:258;;;;:::o;29039:320::-;29083:6;29120:1;29114:4;29110:12;29100:22;;29167:1;29161:4;29157:12;29188:18;29178:2;;29244:4;29236:6;29232:17;29222:27;;29178:2;29306;29298:6;29295:14;29275:18;29272:38;29269:2;;;29325:18;;:::i;:::-;29269:2;29090:269;;;;:::o;29365:281::-;29448:27;29470:4;29448:27;:::i;:::-;29440:6;29436:40;29578:6;29566:10;29563:22;29542:18;29530:10;29527:34;29524:62;29521:2;;;29589:18;;:::i;:::-;29521:2;29629:10;29625:2;29618:22;29408:238;;;:::o;29652:233::-;29691:3;29714:24;29732:5;29714:24;:::i;:::-;29705:33;;29760:66;29753:5;29750:77;29747:2;;;29830:18;;:::i;:::-;29747:2;29877:1;29870:5;29866:13;29859:20;;29695:190;;;:::o;29891:180::-;29939:77;29936:1;29929:88;30036:4;30033:1;30026:15;30060:4;30057:1;30050:15;30077:180;30125:77;30122:1;30115:88;30222:4;30219:1;30212:15;30246:4;30243:1;30236:15;30263:180;30311:77;30308:1;30301:88;30408:4;30405:1;30398:15;30432:4;30429:1;30422:15;30449:180;30497:77;30494:1;30487:88;30594:4;30591:1;30584:15;30618:4;30615:1;30608:15;30635:180;30683:77;30680:1;30673:88;30780:4;30777:1;30770:15;30804:4;30801:1;30794:15;30821:183;30856:3;30894:1;30876:16;30873:23;30870:2;;;30932:1;30929;30926;30911:23;30954:34;30985:1;30979:8;30954:34;:::i;:::-;30947:41;;30870:2;30860:144;:::o;31010:117::-;31119:1;31116;31109:12;31133:117;31242:1;31239;31232:12;31256:117;31365:1;31362;31355:12;31379:117;31488:1;31485;31478:12;31502:117;31611:1;31608;31601:12;31625:102;31666:6;31717:2;31713:7;31708:2;31701:5;31697:14;31693:28;31683:38;;31673:54;;;:::o;31733:106::-;31777:8;31826:5;31821:3;31817:15;31796:36;;31786:53;;;:::o;31845:239::-;31985:34;31981:1;31973:6;31969:14;31962:58;32054:22;32049:2;32041:6;32037:15;32030:47;31951:133;:::o;32090:227::-;32230:34;32226:1;32218:6;32214:14;32207:58;32299:10;32294:2;32286:6;32282:15;32275:35;32196:121;:::o;32323:230::-;32463:34;32459:1;32451:6;32447:14;32440:58;32532:13;32527:2;32519:6;32515:15;32508:38;32429:124;:::o;32559:228::-;32699:34;32695:1;32687:6;32683:14;32676:58;32768:11;32763:2;32755:6;32751:15;32744:36;32665:122;:::o;32793:224::-;32933:34;32929:1;32921:6;32917:14;32910:58;33002:7;32997:2;32989:6;32985:15;32978:32;32899:118;:::o;33023:237::-;33163:34;33159:1;33151:6;33147:14;33140:58;33232:20;33227:2;33219:6;33215:15;33208:45;33129:131;:::o;33266:229::-;33406:34;33402:1;33394:6;33390:14;33383:58;33475:12;33470:2;33462:6;33458:15;33451:37;33372:123;:::o;33501:228::-;33641:34;33637:1;33629:6;33625:14;33618:58;33710:11;33705:2;33697:6;33693:15;33686:36;33607:122;:::o;33735:227::-;33875:34;33871:1;33863:6;33859:14;33852:58;33944:10;33939:2;33931:6;33927:15;33920:35;33841:121;:::o;33968:220::-;34108:34;34104:1;34096:6;34092:14;34085:58;34177:3;34172:2;34164:6;34160:15;34153:28;34074:114;:::o;34194:711::-;34233:3;34271:4;34253:16;34250:26;34247:2;;;34279:5;;34247:2;34308:20;;:::i;:::-;34383:1;34365:16;34361:24;34358:1;34352:4;34337:49;34416:4;34410:11;34515:16;34508:4;34500:6;34496:17;34493:39;34460:18;34452:6;34449:30;34433:113;34430:2;;;34561:5;;;;34430:2;34607:6;34601:4;34597:17;34643:3;34637:10;34670:18;34662:6;34659:30;34656:2;;;34692:5;;;;;;34656:2;34740:6;34733:4;34728:3;34724:14;34720:27;34799:1;34781:16;34777:24;34771:4;34767:35;34762:3;34759:44;34756:2;;;34806:5;;;;;;;34756:2;34823:57;34871:6;34865:4;34861:17;34853:6;34849:30;34843:4;34823:57;:::i;:::-;34896:3;34889:10;;34237:668;;;;;;;:::o;34911:122::-;34984:24;35002:5;34984:24;:::i;:::-;34977:5;34974:35;34964:2;;35023:1;35020;35013:12;34964:2;34954:79;:::o;35039:116::-;35109:21;35124:5;35109:21;:::i;:::-;35102:5;35099:32;35089:2;;35145:1;35142;35135:12;35089:2;35079:76;:::o;35161:120::-;35233:23;35250:5;35233:23;:::i;:::-;35226:5;35223:34;35213:2;;35271:1;35268;35261:12;35213:2;35203:78;:::o;35287:122::-;35360:24;35378:5;35360:24;:::i;:::-;35353:5;35350:35;35340:2;;35399:1;35396;35389:12;35340:2;35330:79;:::o

Swarm Source

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