Token
TESTAIR (TESTCGV)
ERC-721
Overview
Max Total Supply
110 TESTCGV
Holders
82
Market
Onchain Market Cap
$0.00
Circulating Supply Market Cap
-
Other Info
Token Contract
Balance
6 TESTCGVLoading...
Loading
Loading...
Loading
Loading...
Loading
Contract Name:
TestAirdrop
Compiler Version
v0.8.0+commit.c7dfd78e
Contract Source Code (Solidity)
/** *Submitted for verification at mumbai.polygonscan.com on 2022-05-23 */ /** *Submitted for verification at Etherscan.io on 2022-05-20 */ /** *Submitted for verification at polygonscan.com on 2022-01-08 */ // SPDX-License-Identifier: MIT pragma solidity ^0.8.0; /* Fully commented standard ERC721 Distilled from OpenZeppelin Docs Base for Building ERC721 by Martin McConnell All the utility without the fluff. */ interface IERC165 { function supportsInterface(bytes4 interfaceId) external view returns (bool); } interface IERC721 is IERC165 { //@dev Emitted when `tokenId` token is transferred from `from` to `to`. event Transfer(address indexed from, address indexed to, uint256 indexed tokenId); //@dev Emitted when `owner` enables `approved` to manage the `tokenId` token. event Approval(address indexed owner, address indexed approved, uint256 indexed tokenId); //@dev Emitted when `owner` enables or disables (`approved`) `operator` to manage all of its assets. event ApprovalForAll(address indexed owner, address indexed operator, bool approved); //@dev Returns the number of tokens in ``owner``'s account. function balanceOf(address owner) external view returns (uint256 balance); function ownerOf(uint256 tokenId) external view returns (address owner); function safeTransferFrom(address from,address to,uint256 tokenId) external; function transferFrom(address from, address to, uint256 tokenId) external; function approve(address to, uint256 tokenId) external; function getApproved(uint256 tokenId) external view returns (address operator); function setApprovalForAll(address operator, bool _approved) external; function isApprovedForAll(address owner, address operator) external view returns (bool); function safeTransferFrom(address from, address to, uint256 tokenId, bytes calldata data) external; } interface IERC721Metadata is IERC721 { //@dev Returns the token collection name. function name() external view returns (string memory); //@dev Returns the token collection symbol. function symbol() external view returns (string memory); //@dev Returns the Uniform Resource Identifier (URI) for `tokenId` token. function tokenURI(uint256 tokenId) external view returns (string memory); } interface IERC721Receiver { function onERC721Received(address operator, address from, uint256 tokenId, bytes calldata data) external returns (bytes4); } library Address { function isContract(address account) internal view returns (bool) { // This method relies on extcodesize, which returns 0 for contracts in // construction, since the code is only stored at the end of the // constructor execution. 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, "Addr: cant send val, rcpt revert"); } 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, "Addr: low-level call value fail"); } function functionCallWithValue( address target, bytes memory data, uint256 value, string memory errorMessage ) internal returns (bytes memory) { require(address(this).balance >= value, "Addr: insufficient balance 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, "Addr: low-level static call fail"); } function functionStaticCall( address target, bytes memory data, string memory errorMessage ) internal view returns (bytes memory) { require(isContract(target), "Addr: static call 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, "Addr: low-level del call failed"); } function functionDelegateCall( address target, bytes memory data, string memory errorMessage ) internal returns (bytes memory) { require(isContract(target), "Addr: delegate call 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); } } } } abstract contract Context { function _msgSender() internal view virtual returns (address) { return msg.sender; } function _msgData() internal view virtual returns (bytes calldata) { return msg.data; } } abstract contract Ownable is Context { address private _owner; event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); /** * @dev Initializes the contract setting the deployer as the initial owner. */ constructor() { _setOwner(_msgSender()); } /** * @dev Returns the address of the current owner. */ function owner() public view virtual returns (address) { return _owner; } /** * @dev Throws if called by any account other than the owner. */ modifier onlyOwner() { require(owner() == _msgSender(), "Ownable: caller is not the owner"); _; } /** * @dev Leaves the contract without owner. It will not be possible to call * `onlyOwner` functions anymore. Can only be called by the current owner. * * NOTE: Renouncing ownership will leave the contract without an owner, * thereby removing any functionality that is only available to the owner. */ function renounceOwnership() public virtual onlyOwner { _setOwner(address(0)); } /** * @dev Transfers ownership of the contract to a new account (`newOwner`). * Can only be called by the current owner. */ function transferOwnership(address newOwner) public virtual onlyOwner { require(newOwner != address(0), "Ownable: new owner is 0x address"); _setOwner(newOwner); } function _setOwner(address newOwner) private { address oldOwner = _owner; _owner = newOwner; emit OwnershipTransferred(oldOwner, newOwner); } } abstract contract Functional { function toString(uint256 value) internal pure returns (string memory) { if (value == 0) { return "0"; } uint256 temp = value; uint256 digits; while (temp != 0) { digits++; temp /= 10; } bytes memory buffer = new bytes(digits); while (value != 0) { digits -= 1; buffer[digits] = bytes1(uint8(48 + uint256(value % 10))); value /= 10; } return string(buffer); } bool private _reentryKey = false; modifier reentryLock { require(!_reentryKey, "attempt reenter locked function"); _reentryKey = true; _; _reentryKey = false; } } abstract contract Proxy is Ownable { mapping(address => bool) private _isProxy; constructor() { _isProxy[_msgSender()] = true; } function assignProxy(address newProxy) external onlyOwner { _isProxy[newProxy] = true; } function revokeProxy(address badProxy) external onlyOwner { _isProxy[badProxy] = false; } function isProxy(address checkProxy) external view onlyOwner returns (bool) { return _isProxy[checkProxy]; } modifier proxyAccess { require(_isProxy[_msgSender()]); _; } } contract ERC721 { event Transfer(address indexed from, address indexed to, uint256 indexed tokenId); event Approval(address indexed owner, address indexed approved, uint256 indexed tokenId); event ApprovalForAll(address indexed owner, address indexed operator, bool approved); function balanceOf(address owner) external view returns (uint256 balance){} function ownerOf(uint256 tokenId) external view returns (address owner){} function safeTransferFrom(address from,address to,uint256 tokenId) external{} function transferFrom(address from, address to, uint256 tokenId) external{} function approve(address to, uint256 tokenId) external{} function getApproved(uint256 tokenId) external view returns (address operator){} function setApprovalForAll(address operator, bool _approved) external{} function isApprovedForAll(address owner, address operator) external view returns (bool){} function safeTransferFrom(address from, address to, uint256 tokenId, bytes calldata data) external{} } // ****************************************************************************************************************************** // ************************************************** Start of Main Contract *************************************************** // ****************************************************************************************************************************** contract TestAirdrop is IERC721, Functional, Proxy { using Address for address; // Token name string private _name; // Token symbol string private _symbol; // URI Root Location for Json Files string private _baseURI; // Mapping from token ID to owner address mapping(uint256 => address) private _owners; // Mapping owner address to token count mapping(address => uint256) private _balances; // Mapping from token ID to approved address mapping(uint256 => address) private _tokenApprovals; // Mapping from owner to operator approvals mapping(address => mapping(address => bool)) private _operatorApprovals; // Specific Functionality uint256 public numberMinted; /** * @dev Initializes the contract by setting a `name` and a `symbol` to the token collection. */ constructor() { _name = "TESTAIR"; _symbol = "TESTCGV"; _baseURI = "https://test.com/"; } //@dev See {IERC165-supportsInterface}. Interfaces Supported by this Standard function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) { return interfaceId == type(IERC721).interfaceId || interfaceId == type(IERC721Metadata).interfaceId || interfaceId == type(IERC165).interfaceId || interfaceId == TestAirdrop.onERC721Received.selector; } // Standard Withdraw function for the owner to pull the contract function withdraw() external onlyOwner { uint256 sendAmount = address(this).balance; address dev = payable(0x2496286BDB820d40C402802F828ae265b244188A); bool success; (success, ) = dev.call{value: sendAmount}(""); require(success, "Txn Unsuccessful"); } function airDrop(address[] memory _to, uint256[] memory _id) external proxyAccess { uint256 qty = _to.length; uint256 tokenID = _id.length; require((numberMinted + qty) > numberMinted, "Math overflow error"); require((qty == tokenID) , "Address length should match with token ID array length"); for(uint256 i = 0; i < qty; i++) { _safeMint(_to[i], _id[i]); numberMinted ++; //reservedTokens can be reset, numberMinted can not } //return mintSeedValue; } // allows holders to burn their own tokens if desired function burn(uint256 tokenID) external { require(_msgSender() == ownerOf(tokenID)); _burn(tokenID); } ////////////////////////////////////////////////////////////// //////////////////// Setters and Getters ///////////////////// ////////////////////////////////////////////////////////////// function setBaseURI(string memory newURI) public onlyOwner { _baseURI = newURI; } function totalSupply() public view returns (uint256) { return numberMinted; } function getBalance(address tokenAddress) view external returns (uint256) { //return _balances[tokenAddress]; //shows 0 on etherscan due to overflow error return _balances[tokenAddress] / (10**15); //temporary fix to report in finneys } /** * @dev See {IERC721-balanceOf}. */ function balanceOf(address owner) public view virtual override returns (uint256) { require(owner != address(0), "ERC721: bal qry for zero address"); return _balances[owner]; } /** * @dev See {IERC721-ownerOf}. */ function ownerOf(uint256 tokenId) public view virtual override returns (address) { address owner = _owners[tokenId]; require(owner != address(0), "ERC721: own query nonexist tkn"); return owner; } /** * @dev See {IERC721-approve}. */ function approve(address to, uint256 tokenId) public virtual override { address owner = ownerOf(tokenId); require(to != owner, "ERC721: approval current owner"); require( msg.sender == owner || isApprovedForAll(owner, msg.sender), "ERC721: caller !owner/!approved" ); _approve(to, tokenId); } /** * @dev See {IERC721-getApproved}. */ function getApproved(uint256 tokenId) public view virtual override returns (address) { require(_exists(tokenId), "ERC721: approved nonexistent tkn"); return _tokenApprovals[tokenId]; } /** * @dev See {IERC721-setApprovalForAll}. */ function setApprovalForAll(address operator, bool approved) public virtual override { require(operator != msg.sender, "ERC721: approve to caller"); _operatorApprovals[msg.sender][operator] = approved; emit ApprovalForAll(msg.sender, operator, approved); } /** * @dev See {IERC721-isApprovedForAll}. */ function isApprovedForAll(address owner, address operator) public view virtual override returns (bool) { return _operatorApprovals[owner][operator]; } /** * @dev See {IERC721-transferFrom}. */ function transferFrom( address from, address to, uint256 tokenId ) public virtual override { //solhint-disable-next-line max-line-length require(_isApprovedOrOwner(msg.sender, tokenId), "ERC721: txfr !owner/approved"); _transfer(from, to, tokenId); } /** * @dev See {IERC721-safeTransferFrom}. */ function safeTransferFrom( address from, address to, uint256 tokenId ) public virtual override { safeTransferFrom(from, to, tokenId, ""); } /** * @dev See {IERC721-safeTransferFrom}. */ function safeTransferFrom( address from, address to, uint256 tokenId, bytes memory _data ) public virtual override { require(_isApprovedOrOwner(msg.sender, tokenId), "ERC721: txfr !owner/approved"); _safeTransfer(from, to, tokenId, _data); } /** * @dev Safely transfers `tokenId` token from `from` to `to`, checking first that contract recipients * are aware of the ERC721 protocol to prevent tokens from being forever locked. * * `_data` is additional data, it has no specified format and it is sent in call to `to`. * * This internal function is equivalent to {safeTransferFrom}, and can be used to e.g. * implement alternative mechanisms to perform token transfer, such as signature-based. * * Requirements: * * - `from` cannot be the zero address. * - `to` cannot be the zero address. * - `tokenId` token must exist and be owned by `from`. * - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer. * * Emits a {Transfer} event. */ function _safeTransfer( address from, address to, uint256 tokenId, bytes memory _data ) internal virtual { _transfer(from, to, tokenId); require(_checkOnERC721Received(from, to, tokenId, _data), "txfr to non ERC721Reciever"); } /** * @dev Returns whether `tokenId` exists. * * Tokens can be managed by their owner or approved accounts via {approve} or {setApprovalForAll}. * * Tokens start existing when they are minted (`_mint`), * and stop existing when they are burned (`_burn`). */ function _exists(uint256 tokenId) internal view virtual returns (bool) { return _owners[tokenId] != address(0); } /** * @dev Returns whether `spender` is allowed to manage `tokenId`. * * Requirements: * * - `tokenId` must exist. */ function _isApprovedOrOwner(address spender, uint256 tokenId) internal view virtual returns (bool) { require(_exists(tokenId), "ERC721: op query nonexistent tkn"); address owner = ownerOf(tokenId); return (spender == owner || getApproved(tokenId) == spender || isApprovedForAll(owner, spender)); } /** * @dev Safely mints `tokenId` and transfers it to `to`. * * Requirements: * * - `tokenId` must not exist. * - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer. * * Emits a {Transfer} event. */ function _safeMint(address to, uint256 tokenId) internal virtual { _safeMint(to, tokenId, ""); } /** * @dev Same as {xref-ERC721-_safeMint-address-uint256-}[`_safeMint`], with an additional `data` parameter which is * forwarded in {IERC721Receiver-onERC721Received} to contract recipients. */ function _safeMint( address to, uint256 tokenId, bytes memory _data ) internal virtual { _mint(to, tokenId); require( _checkOnERC721Received(address(0), to, tokenId, _data), "txfr to non ERC721Reciever" ); } /** * @dev Mints `tokenId` and transfers it to `to`. * * WARNING: Usage of this method is discouraged, use {_safeMint} whenever possible * * Requirements: * * - `tokenId` must not exist. * - `to` cannot be the zero address. * * Emits a {Transfer} event. */ function _mint(address to, uint256 tokenId) internal virtual { require(to != address(0), "ERC721: mint to the zero address"); require(!_exists(tokenId), "ERC721: token already minted"); _beforeTokenTransfer(address(0), to, tokenId); _balances[to] += 1; _owners[tokenId] = to; emit Transfer(address(0), to, tokenId); } /** * @dev Destroys `tokenId`. * The approval is cleared when the token is burned. * * Requirements: * * - `tokenId` must exist. * * Emits a {Transfer} event. */ function _burn(uint256 tokenId) internal virtual { address owner = ownerOf(tokenId); _beforeTokenTransfer(owner, address(0), tokenId); // Clear approvals _approve(address(0), tokenId); _balances[owner] -= 1; delete _owners[tokenId]; emit Transfer(owner, address(0), tokenId); } /** * @dev Transfers `tokenId` from `from` to `to`. * As opposed to {transferFrom}, this imposes no restrictions on msg.sender. * * Requirements: * * - `to` cannot be the zero address. * - `tokenId` token must be owned by `from`. * * Emits a {Transfer} event. */ function _transfer( address from, address to, uint256 tokenId ) internal virtual { require(ownerOf(tokenId) == from, "ERC721: txfr token not owned"); require(to != address(0), "ERC721: txfr to 0x0 address"); _beforeTokenTransfer(from, to, tokenId); // Clear approvals from the previous owner _approve(address(0), tokenId); _balances[from] -= 1; _balances[to] += 1; _owners[tokenId] = to; emit Transfer(from, to, tokenId); } /** * @dev Approve `to` to operate on `tokenId` * * Emits a {Approval} event. */ function _approve(address to, uint256 tokenId) internal virtual { _tokenApprovals[tokenId] = to; emit Approval(ownerOf(tokenId), to, tokenId); } /** * @dev Internal function to invoke {IERC721Receiver-onERC721Received} on a target address. * The call is not executed if the target address is not a contract. * * @param from address representing the previous owner of the given token ID * @param to target address that will receive the tokens * @param tokenId uint256 ID of the token to be transferred * @param _data bytes optional data to send along with the call * @return bool whether the call correctly returned the expected magic value */ function _checkOnERC721Received( address from, address to, uint256 tokenId, bytes memory _data ) private returns (bool) { if (to.isContract()) { try IERC721Receiver(to).onERC721Received(msg.sender, from, tokenId, _data) returns (bytes4 retval) { return retval == IERC721Receiver(to).onERC721Received.selector; } catch (bytes memory reason) { if (reason.length == 0) { revert("txfr to non ERC721Reciever"); } else { assembly { revert(add(32, reason), mload(reason)) } } } } else { return true; } } // *********************** ERC721 Token Receiver ********************** /** * @dev Whenever an {IERC721} `tokenId` token is transferred to this contract via {IERC721-safeTransferFrom} * by `operator` from `from`, this function is called. * * It must return its Solidity selector to confirm the token transfer. * If any other value is returned or the interface is not implemented by the recipient, the transfer will be reverted. * * The selector can be obtained in Solidity with `IERC721.onERC721Received.selector`. */ function onERC721Received(address _operator, address _from, uint256 _tokenId, bytes calldata _data) external returns(bytes4) { //InterfaceID=0x150b7a02 return this.onERC721Received.selector; } /** * @dev Hook that is called before any token transfer. This includes minting * and burning. * * Calling conditions: * * - When `from` and `to` are both non-zero, ``from``'s `tokenId` will be * transferred to `to`. * - When `from` is zero, `tokenId` will be minted for `to`. * - When `to` is zero, ``from``'s `tokenId` will be burned. * - `from` and `to` are never both zero. * * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks]. */ function _beforeTokenTransfer( address from, address to, uint256 tokenId ) internal virtual {} // **************************************** Metadata Standard Functions ********** //@dev Returns the token collection name. function name() external view returns (string memory){ return _name; } //@dev Returns the token collection symbol. function symbol() external view returns (string memory){ return _symbol; } //@dev Returns the Uniform Resource Identifier (URI) for `tokenId` token. function tokenURI(uint256 tokenId) external view returns (string memory){ require(_exists(tokenId), "ERC721Metadata: URI 0x0 token"); string memory tokenuri; tokenuri = string(abi.encodePacked(_baseURI, toString(tokenId), ".json")); return tokenuri; } function contractURI() public view returns (string memory) { return string(abi.encodePacked(_baseURI,"contract.json")); } // ******************************************************************************* receive() external payable {} fallback() external payable {} }
[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"approved","type":"address"},{"indexed":true,"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"operator","type":"address"},{"indexed":false,"internalType":"bool","name":"approved","type":"bool"}],"name":"ApprovalForAll","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":true,"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"Transfer","type":"event"},{"stateMutability":"payable","type":"fallback"},{"inputs":[{"internalType":"address[]","name":"_to","type":"address[]"},{"internalType":"uint256[]","name":"_id","type":"uint256[]"}],"name":"airDrop","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"approve","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newProxy","type":"address"}],"name":"assignProxy","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenID","type":"uint256"}],"name":"burn","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"contractURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"getApproved","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"tokenAddress","type":"address"}],"name":"getBalance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"operator","type":"address"}],"name":"isApprovedForAll","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"checkProxy","type":"address"}],"name":"isProxy","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":"numberMinted","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_operator","type":"address"},{"internalType":"address","name":"_from","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"},{"internalType":"bytes","name":"_data","type":"bytes"}],"name":"onERC721Received","outputs":[{"internalType":"bytes4","name":"","type":"bytes4"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"ownerOf","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"badProxy","type":"address"}],"name":"revokeProxy","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"safeTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"bytes","name":"_data","type":"bytes"}],"name":"safeTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"bool","name":"approved","type":"bool"}],"name":"setApprovalForAll","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"newURI","type":"string"}],"name":"setBaseURI","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":"tokenId","type":"uint256"}],"name":"tokenURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"transferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"withdraw","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
608060405260008060006101000a81548160ff0219169083151502179055503480156200002b57600080fd5b506200004c62000040620001a260201b60201c565b620001aa60201b60201c565b600180600062000061620001a260201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506040518060400160405280600781526020017f544553544149520000000000000000000000000000000000000000000000000081525060029080519060200190620000ff9291906200026f565b506040518060400160405280600781526020017f5445535443475600000000000000000000000000000000000000000000000000815250600390805190602001906200014d9291906200026f565b506040518060400160405280601181526020017f68747470733a2f2f746573742e636f6d2f000000000000000000000000000000815250600490805190602001906200019b9291906200026f565b5062000384565b600033905090565b60008060019054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600060016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b8280546200027d906200031f565b90600052602060002090601f016020900481019282620002a15760008555620002ed565b82601f10620002bc57805160ff1916838001178555620002ed565b82800160010185558215620002ed579182015b82811115620002ec578251825591602001919060010190620002cf565b5b509050620002fc919062000300565b5090565b5b808211156200031b57600081600090555060010162000301565b5090565b600060028204905060018216806200033857607f821691505b602082108114156200034f576200034e62000355565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b613abd80620003946000396000f3fe6080604052600436106101bb5760003560e01c80636352211e116100ec578063b88d4fde1161008a578063e8a3d48511610064578063e8a3d4851461060e578063e985e9c514610639578063f2fde38b14610676578063f8b2cb4f1461069f576101c2565b8063b88d4fde1461057f578063c87b56dd146105a8578063c8905225146105e5576101c2565b8063715018a6116100c6578063715018a6146104e95780638da5cb5b1461050057806395d89b411461052b578063a22cb46514610556576101c2565b80636352211e1461044657806365216a411461048357806370a08231146104ac576101c2565b8063297103881161015957806342842e0e1161013357806342842e0e146103a057806342966c68146103c957806349a772b5146103f257806355f804b31461041d576101c2565b806329710388146103235780633b479d58146103605780633ccfd60b14610389576101c2565b8063095ea7b311610195578063095ea7b314610269578063150b7a021461029257806318160ddd146102cf57806323b872dd146102fa576101c2565b806301ffc9a7146101c457806306fdde0314610201578063081812fc1461022c576101c2565b366101c257005b005b3480156101d057600080fd5b506101eb60048036038101906101e69190612abb565b6106dc565b6040516101f89190613322565b60405180910390f35b34801561020d57600080fd5b50610216610865565b6040516102239190613358565b60405180910390f35b34801561023857600080fd5b50610253600480360381019061024e9190612b4e565b6108f7565b60405161026091906132bb565b60405180910390f35b34801561027557600080fd5b50610290600480360381019061028b9190612a13565b61097c565b005b34801561029e57600080fd5b506102b960048036038101906102b491906128dc565b610a86565b6040516102c6919061333d565b60405180910390f35b3480156102db57600080fd5b506102e4610a9b565b6040516102f191906135da565b60405180910390f35b34801561030657600080fd5b50610321600480360381019061031c919061288d565b610aa5565b005b34801561032f57600080fd5b5061034a60048036038101906103459190612828565b610afe565b6040516103579190613322565b60405180910390f35b34801561036c57600080fd5b5061038760048036038101906103829190612828565b610bd0565b005b34801561039557600080fd5b5061039e610ca6565b005b3480156103ac57600080fd5b506103c760048036038101906103c2919061288d565b610df3565b005b3480156103d557600080fd5b506103f060048036038101906103eb9190612b4e565b610e13565b005b3480156103fe57600080fd5b50610407610e66565b60405161041491906135da565b60405180910390f35b34801561042957600080fd5b50610444600480360381019061043f9190612b0d565b610e6c565b005b34801561045257600080fd5b5061046d60048036038101906104689190612b4e565b610f02565b60405161047a91906132bb565b60405180910390f35b34801561048f57600080fd5b506104aa60048036038101906104a59190612a4f565b610fb4565b005b3480156104b857600080fd5b506104d360048036038101906104ce9190612828565b611177565b6040516104e091906135da565b60405180910390f35b3480156104f557600080fd5b506104fe61122f565b005b34801561050c57600080fd5b506105156112b7565b60405161052291906132bb565b60405180910390f35b34801561053757600080fd5b506105406112e0565b60405161054d9190613358565b60405180910390f35b34801561056257600080fd5b5061057d600480360381019061057891906129d7565b611372565b005b34801561058b57600080fd5b506105a660048036038101906105a1919061295c565b6114de565b005b3480156105b457600080fd5b506105cf60048036038101906105ca9190612b4e565b611539565b6040516105dc9190613358565b60405180910390f35b3480156105f157600080fd5b5061060c60048036038101906106079190612828565b6115bb565b005b34801561061a57600080fd5b50610623611692565b6040516106309190613358565b60405180910390f35b34801561064557600080fd5b50610660600480360381019061065b9190612851565b6116ba565b60405161066d9190613322565b60405180910390f35b34801561068257600080fd5b5061069d60048036038101906106989190612828565b61174e565b005b3480156106ab57600080fd5b506106c660048036038101906106c19190612828565b611846565b6040516106d391906135da565b60405180910390f35b60007f80ac58cd000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806107a757507f5b5e139f000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b8061080f57507f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b8061085e575063150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b9050919050565b606060028054610874906138b2565b80601f01602080910402602001604051908101604052809291908181526020018280546108a0906138b2565b80156108ed5780601f106108c2576101008083540402835291602001916108ed565b820191906000526020600020905b8154815290600101906020018083116108d057829003601f168201915b5050505050905090565b6000610902826118a1565b610941576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610938906133fa565b60405180910390fd5b6007600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b600061098782610f02565b90508073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156109f8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109ef9061341a565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161480610a385750610a3781336116ba565b5b610a77576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a6e906134ba565b60405180910390fd5b610a81838361190d565b505050565b600063150b7a0260e01b905095945050505050565b6000600954905090565b610aaf33826119c6565b610aee576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ae59061355a565b60405180910390fd5b610af9838383611aa4565b505050565b6000610b08611d00565b73ffffffffffffffffffffffffffffffffffffffff16610b266112b7565b73ffffffffffffffffffffffffffffffffffffffff1614610b7c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b739061353a565b60405180910390fd5b600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b610bd8611d00565b73ffffffffffffffffffffffffffffffffffffffff16610bf66112b7565b73ffffffffffffffffffffffffffffffffffffffff1614610c4c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c439061353a565b60405180910390fd5b60018060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b610cae611d00565b73ffffffffffffffffffffffffffffffffffffffff16610ccc6112b7565b73ffffffffffffffffffffffffffffffffffffffff1614610d22576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d199061353a565b60405180910390fd5b60004790506000732496286bdb820d40c402802f828ae265b244188a905060008173ffffffffffffffffffffffffffffffffffffffff1683604051610d66906132a6565b60006040518083038185875af1925050503d8060008114610da3576040519150601f19603f3d011682016040523d82523d6000602084013e610da8565b606091505b50508091505080610dee576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610de59061359a565b60405180910390fd5b505050565b610e0e838383604051806020016040528060008152506114de565b505050565b610e1c81610f02565b73ffffffffffffffffffffffffffffffffffffffff16610e3a611d00565b73ffffffffffffffffffffffffffffffffffffffff1614610e5a57600080fd5b610e6381611d08565b50565b60095481565b610e74611d00565b73ffffffffffffffffffffffffffffffffffffffff16610e926112b7565b73ffffffffffffffffffffffffffffffffffffffff1614610ee8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610edf9061353a565b60405180910390fd5b8060049080519060200190610efe9291906124d6565b5050565b6000806005600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415610fab576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fa29061347a565b60405180910390fd5b80915050919050565b60016000610fc0611d00565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1661101157600080fd5b6000825190506000825190506009548260095461102e9190613741565b1161106e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611065906135ba565b60405180910390fd5b8082146110b0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110a79061339a565b60405180910390fd5b60005b82811015611170576111458582815181106110f7577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6020026020010151858381518110611138577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6020026020010151611e19565b60096000815480929190611158906138e4565b91905055508080611168906138e4565b9150506110b3565b5050505050565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156111e8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111df906134fa565b60405180910390fd5b600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b611237611d00565b73ffffffffffffffffffffffffffffffffffffffff166112556112b7565b73ffffffffffffffffffffffffffffffffffffffff16146112ab576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112a29061353a565b60405180910390fd5b6112b56000611e37565b565b60008060019054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6060600380546112ef906138b2565b80601f016020809104026020016040519081016040528092919081815260200182805461131b906138b2565b80156113685780601f1061133d57610100808354040283529160200191611368565b820191906000526020600020905b81548152906001019060200180831161134b57829003601f168201915b5050505050905090565b3373ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156113e1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113d89061345a565b60405180910390fd5b80600860003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31836040516114d29190613322565b60405180910390a35050565b6114e833836119c6565b611527576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161151e9061355a565b60405180910390fd5b61153384848484611efc565b50505050565b6060611544826118a1565b611583576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161157a9061357a565b60405180910390fd5b6060600461159084611f58565b6040516020016115a1929190613255565b604051602081830303815290604052905080915050919050565b6115c3611d00565b73ffffffffffffffffffffffffffffffffffffffff166115e16112b7565b73ffffffffffffffffffffffffffffffffffffffff1614611637576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161162e9061353a565b60405180910390fd5b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b606060046040516020016116a69190613284565b604051602081830303815290604052905090565b6000600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b611756611d00565b73ffffffffffffffffffffffffffffffffffffffff166117746112b7565b73ffffffffffffffffffffffffffffffffffffffff16146117ca576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117c19061353a565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141561183a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118319061343a565b60405180910390fd5b61184381611e37565b50565b600066038d7ea4c68000600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461189a9190613797565b9050919050565b60008073ffffffffffffffffffffffffffffffffffffffff166005600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614159050919050565b816007600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff1661198083610f02565b73ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b60006119d1826118a1565b611a10576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a079061337a565b60405180910390fd5b6000611a1b83610f02565b90508073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161480611a8a57508373ffffffffffffffffffffffffffffffffffffffff16611a72846108f7565b73ffffffffffffffffffffffffffffffffffffffff16145b80611a9b5750611a9a81856116ba565b5b91505092915050565b8273ffffffffffffffffffffffffffffffffffffffff16611ac482610f02565b73ffffffffffffffffffffffffffffffffffffffff1614611b1a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b119061351a565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611b8a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b81906133ba565b60405180910390fd5b611b95838383612105565b611ba060008261190d565b6001600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254611bf091906137c8565b925050819055506001600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254611c479190613741565b92505081905550816005600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4505050565b600033905090565b6000611d1382610f02565b9050611d2181600084612105565b611d2c60008361190d565b6001600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254611d7c91906137c8565b925050819055506005600083815260200190815260200160002060006101000a81549073ffffffffffffffffffffffffffffffffffffffff021916905581600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a45050565b611e3382826040518060200160405280600081525061210a565b5050565b60008060019054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600060016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b611f07848484611aa4565b611f1384848484612165565b611f52576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f499061349a565b60405180910390fd5b50505050565b60606000821415611fa0576040518060400160405280600181526020017f30000000000000000000000000000000000000000000000000000000000000008152509050612100565b600082905060005b60008214611fd2578080611fbb906138e4565b915050600a82611fcb9190613797565b9150611fa8565b60008167ffffffffffffffff811115612014577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040519080825280601f01601f1916602001820160405280156120465781602001600182028036833780820191505090505b5090505b600085146120f95760018261205f91906137c8565b9150600a8561206e919061392d565b603061207a9190613741565b60f81b8183815181106120b6577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600a856120f29190613797565b945061204a565b8093505050505b919050565b505050565b61211483836122f5565b6121216000848484612165565b612160576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121579061349a565b60405180910390fd5b505050565b60006121868473ffffffffffffffffffffffffffffffffffffffff166124c3565b156122e8578373ffffffffffffffffffffffffffffffffffffffff1663150b7a02338786866040518563ffffffff1660e01b81526004016121ca94939291906132d6565b602060405180830381600087803b1580156121e457600080fd5b505af192505050801561221557506040513d601f19601f820116820180604052508101906122129190612ae4565b60015b612298573d8060008114612245576040519150601f19603f3d011682016040523d82523d6000602084013e61224a565b606091505b50600081511415612290576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122879061349a565b60405180910390fd5b805181602001fd5b63150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149150506122ed565b600190505b949350505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612365576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161235c906134da565b60405180910390fd5b61236e816118a1565b156123ae576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123a5906133da565b60405180910390fd5b6123ba60008383612105565b6001600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461240a9190613741565b92505081905550816005600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a45050565b600080823b905060008111915050919050565b8280546124e2906138b2565b90600052602060002090601f016020900481019282612504576000855561254b565b82601f1061251d57805160ff191683800117855561254b565b8280016001018555821561254b579182015b8281111561254a57825182559160200191906001019061252f565b5b509050612558919061255c565b5090565b5b8082111561257557600081600090555060010161255d565b5090565b600061258c61258784613626565b6135f5565b905080838252602082019050828560208602820111156125ab57600080fd5b60005b858110156125db57816125c188826126cd565b8452602084019350602083019250506001810190506125ae565b5050509392505050565b60006125f86125f384613652565b6135f5565b9050808382526020820190508285602086028201111561261757600080fd5b60005b85811015612647578161262d8882612813565b84526020840193506020830192505060018101905061261a565b5050509392505050565b600061266461265f8461367e565b6135f5565b90508281526020810184848401111561267c57600080fd5b612687848285613870565b509392505050565b60006126a261269d846136ae565b6135f5565b9050828152602081018484840111156126ba57600080fd5b6126c5848285613870565b509392505050565b6000813590506126dc81613a2b565b92915050565b600082601f8301126126f357600080fd5b8135612703848260208601612579565b91505092915050565b600082601f83011261271d57600080fd5b813561272d8482602086016125e5565b91505092915050565b60008135905061274581613a42565b92915050565b60008135905061275a81613a59565b92915050565b60008151905061276f81613a59565b92915050565b60008083601f84011261278757600080fd5b8235905067ffffffffffffffff8111156127a057600080fd5b6020830191508360018202830111156127b857600080fd5b9250929050565b600082601f8301126127d057600080fd5b81356127e0848260208601612651565b91505092915050565b600082601f8301126127fa57600080fd5b813561280a84826020860161268f565b91505092915050565b60008135905061282281613a70565b92915050565b60006020828403121561283a57600080fd5b6000612848848285016126cd565b91505092915050565b6000806040838503121561286457600080fd5b6000612872858286016126cd565b9250506020612883858286016126cd565b9150509250929050565b6000806000606084860312156128a257600080fd5b60006128b0868287016126cd565b93505060206128c1868287016126cd565b92505060406128d286828701612813565b9150509250925092565b6000806000806000608086880312156128f457600080fd5b6000612902888289016126cd565b9550506020612913888289016126cd565b945050604061292488828901612813565b935050606086013567ffffffffffffffff81111561294157600080fd5b61294d88828901612775565b92509250509295509295909350565b6000806000806080858703121561297257600080fd5b6000612980878288016126cd565b9450506020612991878288016126cd565b93505060406129a287828801612813565b925050606085013567ffffffffffffffff8111156129bf57600080fd5b6129cb878288016127bf565b91505092959194509250565b600080604083850312156129ea57600080fd5b60006129f8858286016126cd565b9250506020612a0985828601612736565b9150509250929050565b60008060408385031215612a2657600080fd5b6000612a34858286016126cd565b9250506020612a4585828601612813565b9150509250929050565b60008060408385031215612a6257600080fd5b600083013567ffffffffffffffff811115612a7c57600080fd5b612a88858286016126e2565b925050602083013567ffffffffffffffff811115612aa557600080fd5b612ab18582860161270c565b9150509250929050565b600060208284031215612acd57600080fd5b6000612adb8482850161274b565b91505092915050565b600060208284031215612af657600080fd5b6000612b0484828501612760565b91505092915050565b600060208284031215612b1f57600080fd5b600082013567ffffffffffffffff811115612b3957600080fd5b612b45848285016127e9565b91505092915050565b600060208284031215612b6057600080fd5b6000612b6e84828501612813565b91505092915050565b612b80816137fc565b82525050565b612b8f8161380e565b82525050565b612b9e8161381a565b82525050565b6000612baf826136f3565b612bb98185613709565b9350612bc981856020860161387f565b612bd281613a1a565b840191505092915050565b6000612be8826136fe565b612bf28185613725565b9350612c0281856020860161387f565b612c0b81613a1a565b840191505092915050565b6000612c21826136fe565b612c2b8185613736565b9350612c3b81856020860161387f565b80840191505092915050565b60008154612c54816138b2565b612c5e8186613736565b94506001821660008114612c795760018114612c8a57612cbd565b60ff19831686528186019350612cbd565b612c93856136de565b60005b83811015612cb557815481890152600182019150602081019050612c96565b838801955050505b50505092915050565b6000612cd3602083613725565b91507f4552433732313a206f70207175657279206e6f6e6578697374656e7420746b6e6000830152602082019050919050565b6000612d13603783613725565b91507f4164647265737320206c656e6774682073686f756c64206d617463682077697460008301527f6820746f6b656e204944206172726179206c656e6774680000000000000000006020830152604082019050919050565b6000612d79600d83613736565b91507f636f6e74726163742e6a736f6e000000000000000000000000000000000000006000830152600d82019050919050565b6000612db9601b83613725565b91507f4552433732313a207478667220746f20307830206164647265737300000000006000830152602082019050919050565b6000612df9601c83613725565b91507f4552433732313a20746f6b656e20616c7265616479206d696e746564000000006000830152602082019050919050565b6000612e39602083613725565b91507f4552433732313a20617070726f766564206e6f6e6578697374656e7420746b6e6000830152602082019050919050565b6000612e79601e83613725565b91507f4552433732313a20617070726f76616c2063757272656e74206f776e657200006000830152602082019050919050565b6000612eb9602083613725565b91507f4f776e61626c653a206e6577206f776e657220697320307820616464726573736000830152602082019050919050565b6000612ef9601983613725565b91507f4552433732313a20617070726f766520746f2063616c6c6572000000000000006000830152602082019050919050565b6000612f39601e83613725565b91507f4552433732313a206f776e207175657279206e6f6e657869737420746b6e00006000830152602082019050919050565b6000612f79601a83613725565b91507f7478667220746f206e6f6e2045524337323152656369657665720000000000006000830152602082019050919050565b6000612fb9601f83613725565b91507f4552433732313a2063616c6c657220216f776e65722f21617070726f766564006000830152602082019050919050565b6000612ff9602083613725565b91507f4552433732313a206d696e7420746f20746865207a65726f20616464726573736000830152602082019050919050565b6000613039602083613725565b91507f4552433732313a2062616c2071727920666f72207a65726f20616464726573736000830152602082019050919050565b6000613079600583613736565b91507f2e6a736f6e0000000000000000000000000000000000000000000000000000006000830152600582019050919050565b60006130b9601c83613725565b91507f4552433732313a207478667220746f6b656e206e6f74206f776e6564000000006000830152602082019050919050565b60006130f9602083613725565b91507f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726000830152602082019050919050565b6000613139601c83613725565b91507f4552433732313a207478667220216f776e65722f617070726f766564000000006000830152602082019050919050565b600061317960008361371a565b9150600082019050919050565b6000613193601d83613725565b91507f4552433732314d657461646174613a205552492030783020746f6b656e0000006000830152602082019050919050565b60006131d3601083613725565b91507f54786e20556e7375636365737366756c000000000000000000000000000000006000830152602082019050919050565b6000613213601383613725565b91507f4d617468206f766572666c6f77206572726f72000000000000000000000000006000830152602082019050919050565b61324f81613866565b82525050565b60006132618285612c47565b915061326d8284612c16565b91506132788261306c565b91508190509392505050565b60006132908284612c47565b915061329b82612d6c565b915081905092915050565b60006132b18261316c565b9150819050919050565b60006020820190506132d06000830184612b77565b92915050565b60006080820190506132eb6000830187612b77565b6132f86020830186612b77565b6133056040830185613246565b81810360608301526133178184612ba4565b905095945050505050565b60006020820190506133376000830184612b86565b92915050565b60006020820190506133526000830184612b95565b92915050565b600060208201905081810360008301526133728184612bdd565b905092915050565b6000602082019050818103600083015261339381612cc6565b9050919050565b600060208201905081810360008301526133b381612d06565b9050919050565b600060208201905081810360008301526133d381612dac565b9050919050565b600060208201905081810360008301526133f381612dec565b9050919050565b6000602082019050818103600083015261341381612e2c565b9050919050565b6000602082019050818103600083015261343381612e6c565b9050919050565b6000602082019050818103600083015261345381612eac565b9050919050565b6000602082019050818103600083015261347381612eec565b9050919050565b6000602082019050818103600083015261349381612f2c565b9050919050565b600060208201905081810360008301526134b381612f6c565b9050919050565b600060208201905081810360008301526134d381612fac565b9050919050565b600060208201905081810360008301526134f381612fec565b9050919050565b600060208201905081810360008301526135138161302c565b9050919050565b60006020820190508181036000830152613533816130ac565b9050919050565b60006020820190508181036000830152613553816130ec565b9050919050565b600060208201905081810360008301526135738161312c565b9050919050565b6000602082019050818103600083015261359381613186565b9050919050565b600060208201905081810360008301526135b3816131c6565b9050919050565b600060208201905081810360008301526135d381613206565b9050919050565b60006020820190506135ef6000830184613246565b92915050565b6000604051905081810181811067ffffffffffffffff8211171561361c5761361b6139eb565b5b8060405250919050565b600067ffffffffffffffff821115613641576136406139eb565b5b602082029050602081019050919050565b600067ffffffffffffffff82111561366d5761366c6139eb565b5b602082029050602081019050919050565b600067ffffffffffffffff821115613699576136986139eb565b5b601f19601f8301169050602081019050919050565b600067ffffffffffffffff8211156136c9576136c86139eb565b5b601f19601f8301169050602081019050919050565b60008190508160005260206000209050919050565b600081519050919050565b600081519050919050565b600082825260208201905092915050565b600081905092915050565b600082825260208201905092915050565b600081905092915050565b600061374c82613866565b915061375783613866565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111561378c5761378b61395e565b5b828201905092915050565b60006137a282613866565b91506137ad83613866565b9250826137bd576137bc61398d565b5b828204905092915050565b60006137d382613866565b91506137de83613866565b9250828210156137f1576137f061395e565b5b828203905092915050565b600061380782613846565b9050919050565b60008115159050919050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b82818337600083830152505050565b60005b8381101561389d578082015181840152602081019050613882565b838111156138ac576000848401525b50505050565b600060028204905060018216806138ca57607f821691505b602082108114156138de576138dd6139bc565b5b50919050565b60006138ef82613866565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8214156139225761392161395e565b5b600182019050919050565b600061393882613866565b915061394383613866565b9250826139535761395261398d565b5b828206905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000601f19601f8301169050919050565b613a34816137fc565b8114613a3f57600080fd5b50565b613a4b8161380e565b8114613a5657600080fd5b50565b613a628161381a565b8114613a6d57600080fd5b50565b613a7981613866565b8114613a8457600080fd5b5056fea26469706673582212207f0045707c7ea7a925763d47f70378c9d9cca2f725a28843de519b53e77d61cf64736f6c63430008000033
Deployed Bytecode
0x6080604052600436106101bb5760003560e01c80636352211e116100ec578063b88d4fde1161008a578063e8a3d48511610064578063e8a3d4851461060e578063e985e9c514610639578063f2fde38b14610676578063f8b2cb4f1461069f576101c2565b8063b88d4fde1461057f578063c87b56dd146105a8578063c8905225146105e5576101c2565b8063715018a6116100c6578063715018a6146104e95780638da5cb5b1461050057806395d89b411461052b578063a22cb46514610556576101c2565b80636352211e1461044657806365216a411461048357806370a08231146104ac576101c2565b8063297103881161015957806342842e0e1161013357806342842e0e146103a057806342966c68146103c957806349a772b5146103f257806355f804b31461041d576101c2565b806329710388146103235780633b479d58146103605780633ccfd60b14610389576101c2565b8063095ea7b311610195578063095ea7b314610269578063150b7a021461029257806318160ddd146102cf57806323b872dd146102fa576101c2565b806301ffc9a7146101c457806306fdde0314610201578063081812fc1461022c576101c2565b366101c257005b005b3480156101d057600080fd5b506101eb60048036038101906101e69190612abb565b6106dc565b6040516101f89190613322565b60405180910390f35b34801561020d57600080fd5b50610216610865565b6040516102239190613358565b60405180910390f35b34801561023857600080fd5b50610253600480360381019061024e9190612b4e565b6108f7565b60405161026091906132bb565b60405180910390f35b34801561027557600080fd5b50610290600480360381019061028b9190612a13565b61097c565b005b34801561029e57600080fd5b506102b960048036038101906102b491906128dc565b610a86565b6040516102c6919061333d565b60405180910390f35b3480156102db57600080fd5b506102e4610a9b565b6040516102f191906135da565b60405180910390f35b34801561030657600080fd5b50610321600480360381019061031c919061288d565b610aa5565b005b34801561032f57600080fd5b5061034a60048036038101906103459190612828565b610afe565b6040516103579190613322565b60405180910390f35b34801561036c57600080fd5b5061038760048036038101906103829190612828565b610bd0565b005b34801561039557600080fd5b5061039e610ca6565b005b3480156103ac57600080fd5b506103c760048036038101906103c2919061288d565b610df3565b005b3480156103d557600080fd5b506103f060048036038101906103eb9190612b4e565b610e13565b005b3480156103fe57600080fd5b50610407610e66565b60405161041491906135da565b60405180910390f35b34801561042957600080fd5b50610444600480360381019061043f9190612b0d565b610e6c565b005b34801561045257600080fd5b5061046d60048036038101906104689190612b4e565b610f02565b60405161047a91906132bb565b60405180910390f35b34801561048f57600080fd5b506104aa60048036038101906104a59190612a4f565b610fb4565b005b3480156104b857600080fd5b506104d360048036038101906104ce9190612828565b611177565b6040516104e091906135da565b60405180910390f35b3480156104f557600080fd5b506104fe61122f565b005b34801561050c57600080fd5b506105156112b7565b60405161052291906132bb565b60405180910390f35b34801561053757600080fd5b506105406112e0565b60405161054d9190613358565b60405180910390f35b34801561056257600080fd5b5061057d600480360381019061057891906129d7565b611372565b005b34801561058b57600080fd5b506105a660048036038101906105a1919061295c565b6114de565b005b3480156105b457600080fd5b506105cf60048036038101906105ca9190612b4e565b611539565b6040516105dc9190613358565b60405180910390f35b3480156105f157600080fd5b5061060c60048036038101906106079190612828565b6115bb565b005b34801561061a57600080fd5b50610623611692565b6040516106309190613358565b60405180910390f35b34801561064557600080fd5b50610660600480360381019061065b9190612851565b6116ba565b60405161066d9190613322565b60405180910390f35b34801561068257600080fd5b5061069d60048036038101906106989190612828565b61174e565b005b3480156106ab57600080fd5b506106c660048036038101906106c19190612828565b611846565b6040516106d391906135da565b60405180910390f35b60007f80ac58cd000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806107a757507f5b5e139f000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b8061080f57507f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b8061085e575063150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b9050919050565b606060028054610874906138b2565b80601f01602080910402602001604051908101604052809291908181526020018280546108a0906138b2565b80156108ed5780601f106108c2576101008083540402835291602001916108ed565b820191906000526020600020905b8154815290600101906020018083116108d057829003601f168201915b5050505050905090565b6000610902826118a1565b610941576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610938906133fa565b60405180910390fd5b6007600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b600061098782610f02565b90508073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156109f8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109ef9061341a565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161480610a385750610a3781336116ba565b5b610a77576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a6e906134ba565b60405180910390fd5b610a81838361190d565b505050565b600063150b7a0260e01b905095945050505050565b6000600954905090565b610aaf33826119c6565b610aee576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ae59061355a565b60405180910390fd5b610af9838383611aa4565b505050565b6000610b08611d00565b73ffffffffffffffffffffffffffffffffffffffff16610b266112b7565b73ffffffffffffffffffffffffffffffffffffffff1614610b7c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b739061353a565b60405180910390fd5b600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b610bd8611d00565b73ffffffffffffffffffffffffffffffffffffffff16610bf66112b7565b73ffffffffffffffffffffffffffffffffffffffff1614610c4c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c439061353a565b60405180910390fd5b60018060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b610cae611d00565b73ffffffffffffffffffffffffffffffffffffffff16610ccc6112b7565b73ffffffffffffffffffffffffffffffffffffffff1614610d22576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d199061353a565b60405180910390fd5b60004790506000732496286bdb820d40c402802f828ae265b244188a905060008173ffffffffffffffffffffffffffffffffffffffff1683604051610d66906132a6565b60006040518083038185875af1925050503d8060008114610da3576040519150601f19603f3d011682016040523d82523d6000602084013e610da8565b606091505b50508091505080610dee576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610de59061359a565b60405180910390fd5b505050565b610e0e838383604051806020016040528060008152506114de565b505050565b610e1c81610f02565b73ffffffffffffffffffffffffffffffffffffffff16610e3a611d00565b73ffffffffffffffffffffffffffffffffffffffff1614610e5a57600080fd5b610e6381611d08565b50565b60095481565b610e74611d00565b73ffffffffffffffffffffffffffffffffffffffff16610e926112b7565b73ffffffffffffffffffffffffffffffffffffffff1614610ee8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610edf9061353a565b60405180910390fd5b8060049080519060200190610efe9291906124d6565b5050565b6000806005600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415610fab576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fa29061347a565b60405180910390fd5b80915050919050565b60016000610fc0611d00565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1661101157600080fd5b6000825190506000825190506009548260095461102e9190613741565b1161106e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611065906135ba565b60405180910390fd5b8082146110b0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110a79061339a565b60405180910390fd5b60005b82811015611170576111458582815181106110f7577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6020026020010151858381518110611138577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6020026020010151611e19565b60096000815480929190611158906138e4565b91905055508080611168906138e4565b9150506110b3565b5050505050565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156111e8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111df906134fa565b60405180910390fd5b600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b611237611d00565b73ffffffffffffffffffffffffffffffffffffffff166112556112b7565b73ffffffffffffffffffffffffffffffffffffffff16146112ab576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112a29061353a565b60405180910390fd5b6112b56000611e37565b565b60008060019054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6060600380546112ef906138b2565b80601f016020809104026020016040519081016040528092919081815260200182805461131b906138b2565b80156113685780601f1061133d57610100808354040283529160200191611368565b820191906000526020600020905b81548152906001019060200180831161134b57829003601f168201915b5050505050905090565b3373ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156113e1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113d89061345a565b60405180910390fd5b80600860003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31836040516114d29190613322565b60405180910390a35050565b6114e833836119c6565b611527576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161151e9061355a565b60405180910390fd5b61153384848484611efc565b50505050565b6060611544826118a1565b611583576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161157a9061357a565b60405180910390fd5b6060600461159084611f58565b6040516020016115a1929190613255565b604051602081830303815290604052905080915050919050565b6115c3611d00565b73ffffffffffffffffffffffffffffffffffffffff166115e16112b7565b73ffffffffffffffffffffffffffffffffffffffff1614611637576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161162e9061353a565b60405180910390fd5b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b606060046040516020016116a69190613284565b604051602081830303815290604052905090565b6000600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b611756611d00565b73ffffffffffffffffffffffffffffffffffffffff166117746112b7565b73ffffffffffffffffffffffffffffffffffffffff16146117ca576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117c19061353a565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141561183a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118319061343a565b60405180910390fd5b61184381611e37565b50565b600066038d7ea4c68000600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461189a9190613797565b9050919050565b60008073ffffffffffffffffffffffffffffffffffffffff166005600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614159050919050565b816007600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff1661198083610f02565b73ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b60006119d1826118a1565b611a10576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a079061337a565b60405180910390fd5b6000611a1b83610f02565b90508073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161480611a8a57508373ffffffffffffffffffffffffffffffffffffffff16611a72846108f7565b73ffffffffffffffffffffffffffffffffffffffff16145b80611a9b5750611a9a81856116ba565b5b91505092915050565b8273ffffffffffffffffffffffffffffffffffffffff16611ac482610f02565b73ffffffffffffffffffffffffffffffffffffffff1614611b1a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b119061351a565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611b8a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b81906133ba565b60405180910390fd5b611b95838383612105565b611ba060008261190d565b6001600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254611bf091906137c8565b925050819055506001600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254611c479190613741565b92505081905550816005600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4505050565b600033905090565b6000611d1382610f02565b9050611d2181600084612105565b611d2c60008361190d565b6001600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254611d7c91906137c8565b925050819055506005600083815260200190815260200160002060006101000a81549073ffffffffffffffffffffffffffffffffffffffff021916905581600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a45050565b611e3382826040518060200160405280600081525061210a565b5050565b60008060019054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600060016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b611f07848484611aa4565b611f1384848484612165565b611f52576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f499061349a565b60405180910390fd5b50505050565b60606000821415611fa0576040518060400160405280600181526020017f30000000000000000000000000000000000000000000000000000000000000008152509050612100565b600082905060005b60008214611fd2578080611fbb906138e4565b915050600a82611fcb9190613797565b9150611fa8565b60008167ffffffffffffffff811115612014577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040519080825280601f01601f1916602001820160405280156120465781602001600182028036833780820191505090505b5090505b600085146120f95760018261205f91906137c8565b9150600a8561206e919061392d565b603061207a9190613741565b60f81b8183815181106120b6577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600a856120f29190613797565b945061204a565b8093505050505b919050565b505050565b61211483836122f5565b6121216000848484612165565b612160576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121579061349a565b60405180910390fd5b505050565b60006121868473ffffffffffffffffffffffffffffffffffffffff166124c3565b156122e8578373ffffffffffffffffffffffffffffffffffffffff1663150b7a02338786866040518563ffffffff1660e01b81526004016121ca94939291906132d6565b602060405180830381600087803b1580156121e457600080fd5b505af192505050801561221557506040513d601f19601f820116820180604052508101906122129190612ae4565b60015b612298573d8060008114612245576040519150601f19603f3d011682016040523d82523d6000602084013e61224a565b606091505b50600081511415612290576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122879061349a565b60405180910390fd5b805181602001fd5b63150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149150506122ed565b600190505b949350505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612365576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161235c906134da565b60405180910390fd5b61236e816118a1565b156123ae576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123a5906133da565b60405180910390fd5b6123ba60008383612105565b6001600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461240a9190613741565b92505081905550816005600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a45050565b600080823b905060008111915050919050565b8280546124e2906138b2565b90600052602060002090601f016020900481019282612504576000855561254b565b82601f1061251d57805160ff191683800117855561254b565b8280016001018555821561254b579182015b8281111561254a57825182559160200191906001019061252f565b5b509050612558919061255c565b5090565b5b8082111561257557600081600090555060010161255d565b5090565b600061258c61258784613626565b6135f5565b905080838252602082019050828560208602820111156125ab57600080fd5b60005b858110156125db57816125c188826126cd565b8452602084019350602083019250506001810190506125ae565b5050509392505050565b60006125f86125f384613652565b6135f5565b9050808382526020820190508285602086028201111561261757600080fd5b60005b85811015612647578161262d8882612813565b84526020840193506020830192505060018101905061261a565b5050509392505050565b600061266461265f8461367e565b6135f5565b90508281526020810184848401111561267c57600080fd5b612687848285613870565b509392505050565b60006126a261269d846136ae565b6135f5565b9050828152602081018484840111156126ba57600080fd5b6126c5848285613870565b509392505050565b6000813590506126dc81613a2b565b92915050565b600082601f8301126126f357600080fd5b8135612703848260208601612579565b91505092915050565b600082601f83011261271d57600080fd5b813561272d8482602086016125e5565b91505092915050565b60008135905061274581613a42565b92915050565b60008135905061275a81613a59565b92915050565b60008151905061276f81613a59565b92915050565b60008083601f84011261278757600080fd5b8235905067ffffffffffffffff8111156127a057600080fd5b6020830191508360018202830111156127b857600080fd5b9250929050565b600082601f8301126127d057600080fd5b81356127e0848260208601612651565b91505092915050565b600082601f8301126127fa57600080fd5b813561280a84826020860161268f565b91505092915050565b60008135905061282281613a70565b92915050565b60006020828403121561283a57600080fd5b6000612848848285016126cd565b91505092915050565b6000806040838503121561286457600080fd5b6000612872858286016126cd565b9250506020612883858286016126cd565b9150509250929050565b6000806000606084860312156128a257600080fd5b60006128b0868287016126cd565b93505060206128c1868287016126cd565b92505060406128d286828701612813565b9150509250925092565b6000806000806000608086880312156128f457600080fd5b6000612902888289016126cd565b9550506020612913888289016126cd565b945050604061292488828901612813565b935050606086013567ffffffffffffffff81111561294157600080fd5b61294d88828901612775565b92509250509295509295909350565b6000806000806080858703121561297257600080fd5b6000612980878288016126cd565b9450506020612991878288016126cd565b93505060406129a287828801612813565b925050606085013567ffffffffffffffff8111156129bf57600080fd5b6129cb878288016127bf565b91505092959194509250565b600080604083850312156129ea57600080fd5b60006129f8858286016126cd565b9250506020612a0985828601612736565b9150509250929050565b60008060408385031215612a2657600080fd5b6000612a34858286016126cd565b9250506020612a4585828601612813565b9150509250929050565b60008060408385031215612a6257600080fd5b600083013567ffffffffffffffff811115612a7c57600080fd5b612a88858286016126e2565b925050602083013567ffffffffffffffff811115612aa557600080fd5b612ab18582860161270c565b9150509250929050565b600060208284031215612acd57600080fd5b6000612adb8482850161274b565b91505092915050565b600060208284031215612af657600080fd5b6000612b0484828501612760565b91505092915050565b600060208284031215612b1f57600080fd5b600082013567ffffffffffffffff811115612b3957600080fd5b612b45848285016127e9565b91505092915050565b600060208284031215612b6057600080fd5b6000612b6e84828501612813565b91505092915050565b612b80816137fc565b82525050565b612b8f8161380e565b82525050565b612b9e8161381a565b82525050565b6000612baf826136f3565b612bb98185613709565b9350612bc981856020860161387f565b612bd281613a1a565b840191505092915050565b6000612be8826136fe565b612bf28185613725565b9350612c0281856020860161387f565b612c0b81613a1a565b840191505092915050565b6000612c21826136fe565b612c2b8185613736565b9350612c3b81856020860161387f565b80840191505092915050565b60008154612c54816138b2565b612c5e8186613736565b94506001821660008114612c795760018114612c8a57612cbd565b60ff19831686528186019350612cbd565b612c93856136de565b60005b83811015612cb557815481890152600182019150602081019050612c96565b838801955050505b50505092915050565b6000612cd3602083613725565b91507f4552433732313a206f70207175657279206e6f6e6578697374656e7420746b6e6000830152602082019050919050565b6000612d13603783613725565b91507f4164647265737320206c656e6774682073686f756c64206d617463682077697460008301527f6820746f6b656e204944206172726179206c656e6774680000000000000000006020830152604082019050919050565b6000612d79600d83613736565b91507f636f6e74726163742e6a736f6e000000000000000000000000000000000000006000830152600d82019050919050565b6000612db9601b83613725565b91507f4552433732313a207478667220746f20307830206164647265737300000000006000830152602082019050919050565b6000612df9601c83613725565b91507f4552433732313a20746f6b656e20616c7265616479206d696e746564000000006000830152602082019050919050565b6000612e39602083613725565b91507f4552433732313a20617070726f766564206e6f6e6578697374656e7420746b6e6000830152602082019050919050565b6000612e79601e83613725565b91507f4552433732313a20617070726f76616c2063757272656e74206f776e657200006000830152602082019050919050565b6000612eb9602083613725565b91507f4f776e61626c653a206e6577206f776e657220697320307820616464726573736000830152602082019050919050565b6000612ef9601983613725565b91507f4552433732313a20617070726f766520746f2063616c6c6572000000000000006000830152602082019050919050565b6000612f39601e83613725565b91507f4552433732313a206f776e207175657279206e6f6e657869737420746b6e00006000830152602082019050919050565b6000612f79601a83613725565b91507f7478667220746f206e6f6e2045524337323152656369657665720000000000006000830152602082019050919050565b6000612fb9601f83613725565b91507f4552433732313a2063616c6c657220216f776e65722f21617070726f766564006000830152602082019050919050565b6000612ff9602083613725565b91507f4552433732313a206d696e7420746f20746865207a65726f20616464726573736000830152602082019050919050565b6000613039602083613725565b91507f4552433732313a2062616c2071727920666f72207a65726f20616464726573736000830152602082019050919050565b6000613079600583613736565b91507f2e6a736f6e0000000000000000000000000000000000000000000000000000006000830152600582019050919050565b60006130b9601c83613725565b91507f4552433732313a207478667220746f6b656e206e6f74206f776e6564000000006000830152602082019050919050565b60006130f9602083613725565b91507f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726000830152602082019050919050565b6000613139601c83613725565b91507f4552433732313a207478667220216f776e65722f617070726f766564000000006000830152602082019050919050565b600061317960008361371a565b9150600082019050919050565b6000613193601d83613725565b91507f4552433732314d657461646174613a205552492030783020746f6b656e0000006000830152602082019050919050565b60006131d3601083613725565b91507f54786e20556e7375636365737366756c000000000000000000000000000000006000830152602082019050919050565b6000613213601383613725565b91507f4d617468206f766572666c6f77206572726f72000000000000000000000000006000830152602082019050919050565b61324f81613866565b82525050565b60006132618285612c47565b915061326d8284612c16565b91506132788261306c565b91508190509392505050565b60006132908284612c47565b915061329b82612d6c565b915081905092915050565b60006132b18261316c565b9150819050919050565b60006020820190506132d06000830184612b77565b92915050565b60006080820190506132eb6000830187612b77565b6132f86020830186612b77565b6133056040830185613246565b81810360608301526133178184612ba4565b905095945050505050565b60006020820190506133376000830184612b86565b92915050565b60006020820190506133526000830184612b95565b92915050565b600060208201905081810360008301526133728184612bdd565b905092915050565b6000602082019050818103600083015261339381612cc6565b9050919050565b600060208201905081810360008301526133b381612d06565b9050919050565b600060208201905081810360008301526133d381612dac565b9050919050565b600060208201905081810360008301526133f381612dec565b9050919050565b6000602082019050818103600083015261341381612e2c565b9050919050565b6000602082019050818103600083015261343381612e6c565b9050919050565b6000602082019050818103600083015261345381612eac565b9050919050565b6000602082019050818103600083015261347381612eec565b9050919050565b6000602082019050818103600083015261349381612f2c565b9050919050565b600060208201905081810360008301526134b381612f6c565b9050919050565b600060208201905081810360008301526134d381612fac565b9050919050565b600060208201905081810360008301526134f381612fec565b9050919050565b600060208201905081810360008301526135138161302c565b9050919050565b60006020820190508181036000830152613533816130ac565b9050919050565b60006020820190508181036000830152613553816130ec565b9050919050565b600060208201905081810360008301526135738161312c565b9050919050565b6000602082019050818103600083015261359381613186565b9050919050565b600060208201905081810360008301526135b3816131c6565b9050919050565b600060208201905081810360008301526135d381613206565b9050919050565b60006020820190506135ef6000830184613246565b92915050565b6000604051905081810181811067ffffffffffffffff8211171561361c5761361b6139eb565b5b8060405250919050565b600067ffffffffffffffff821115613641576136406139eb565b5b602082029050602081019050919050565b600067ffffffffffffffff82111561366d5761366c6139eb565b5b602082029050602081019050919050565b600067ffffffffffffffff821115613699576136986139eb565b5b601f19601f8301169050602081019050919050565b600067ffffffffffffffff8211156136c9576136c86139eb565b5b601f19601f8301169050602081019050919050565b60008190508160005260206000209050919050565b600081519050919050565b600081519050919050565b600082825260208201905092915050565b600081905092915050565b600082825260208201905092915050565b600081905092915050565b600061374c82613866565b915061375783613866565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111561378c5761378b61395e565b5b828201905092915050565b60006137a282613866565b91506137ad83613866565b9250826137bd576137bc61398d565b5b828204905092915050565b60006137d382613866565b91506137de83613866565b9250828210156137f1576137f061395e565b5b828203905092915050565b600061380782613846565b9050919050565b60008115159050919050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b82818337600083830152505050565b60005b8381101561389d578082015181840152602081019050613882565b838111156138ac576000848401525b50505050565b600060028204905060018216806138ca57607f821691505b602082108114156138de576138dd6139bc565b5b50919050565b60006138ef82613866565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8214156139225761392161395e565b5b600182019050919050565b600061393882613866565b915061394383613866565b9250826139535761395261398d565b5b828206905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000601f19601f8301169050919050565b613a34816137fc565b8114613a3f57600080fd5b50565b613a4b8161380e565b8114613a5657600080fd5b50565b613a628161381a565b8114613a6d57600080fd5b50565b613a7981613866565b8114613a8457600080fd5b5056fea26469706673582212207f0045707c7ea7a925763d47f70378c9d9cca2f725a28843de519b53e77d61cf64736f6c63430008000033
Deployed Bytecode Sourcemap
11067:15664:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12178:361;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;25782:84;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15426:207;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14988:372;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;24726:215;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14016:91;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16296:314;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;9404:122;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9183:102;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12621:313;;;;;;;;;;;;;:::i;:::-;;16681:185;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;13572:125;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;11814:27;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13913:95;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;14698:228;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12948:553;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;14438:198;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7605:94;;;;;;;;;;;;;:::i;:::-;;6954:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;25923:88;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15705:289;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16937:305;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;26098:312;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9293:103;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;26422:139;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16065:164;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7854:186;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;14115:259;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12178:361;12263:4;12303:25;12288:40;;;:11;:40;;;;:109;;;;12364:33;12349:48;;;:11;:48;;;;12288:109;:170;;;;12433:25;12418:40;;;:11;:40;;;;12288:170;:243;;;;12494:37;;;12479:52;;;:11;:52;;;;12288:243;12280:251;;12178:361;;;:::o;25782:84::-;25821:13;25853:5;25846:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;25782:84;:::o;15426:207::-;15502:7;15530:16;15538:7;15530;:16::i;:::-;15522:61;;;;;;;;;;;;:::i;:::-;;;;;;;;;15601:15;:24;15617:7;15601:24;;;;;;;;;;;;;;;;;;;;;15594:31;;15426:207;;;:::o;14988:372::-;15069:13;15085:16;15093:7;15085;:16::i;:::-;15069:32;;15126:5;15120:11;;:2;:11;;;;15112:54;;;;;;;;;;;;:::i;:::-;;;;;;;;;15215:5;15201:19;;:10;:19;;;:58;;;;15224:35;15241:5;15248:10;15224:16;:35::i;:::-;15201:58;15179:139;;;;;;;;;;;;:::i;:::-;;;;;;;;;15331:21;15340:2;15344:7;15331:8;:21::i;:::-;14988:372;;;:::o;24726:215::-;24843:6;24903:30;;;24896:37;;24726:215;;;;;;;:::o;14016:91::-;14060:7;14087:12;;14080:19;;14016:91;:::o;16296:314::-;16491:39;16510:10;16522:7;16491:18;:39::i;:::-;16483:80;;;;;;;;;;;;:::i;:::-;;;;;;;;;16574:28;16584:4;16590:2;16594:7;16574:9;:28::i;:::-;16296:314;;;:::o;9404:122::-;9474:4;7185:12;:10;:12::i;:::-;7174:23;;:7;:5;:7::i;:::-;:23;;;7166:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;9498:8:::1;:20;9507:10;9498:20;;;;;;;;;;;;;;;;;;;;;;;;;9491:27;;9404:122:::0;;;:::o;9183:102::-;7185:12;:10;:12::i;:::-;7174:23;;:7;:5;:7::i;:::-;:23;;;7166:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;9273:4:::1;9252:8:::0;:18:::1;9261:8;9252:18;;;;;;;;;;;;;;;;:25;;;;;;;;;;;;;;;;;;9183:102:::0;:::o;12621:313::-;7185:12;:10;:12::i;:::-;7174:23;;:7;:5;:7::i;:::-;:23;;;7166:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;12671:18:::1;12692:21;12671:42;;12726:11;12748:42;12726:65;;12804:12;12843:3;:8;;12859:10;12843:31;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12829:45;;;;;12893:7;12885:36;;;;;;;;;;;;:::i;:::-;;;;;;;;;7245:1;;;12621:313::o:0;16681:185::-;16819:39;16836:4;16842:2;16846:7;16819:39;;;;;;;;;;;;:16;:39::i;:::-;16681:185;;;:::o;13572:125::-;13647:16;13655:7;13647;:16::i;:::-;13631:32;;:12;:10;:12::i;:::-;:32;;;13623:41;;;;;;13675:14;13681:7;13675:5;:14::i;:::-;13572:125;:::o;11814:27::-;;;;:::o;13913:95::-;7185:12;:10;:12::i;:::-;7174:23;;:7;:5;:7::i;:::-;:23;;;7166:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;13994:6:::1;13983:8;:17;;;;;;;;;;;;:::i;:::-;;13913:95:::0;:::o;14698:228::-;14770:7;14790:13;14806:7;:16;14814:7;14806:16;;;;;;;;;;;;;;;;;;;;;14790:32;;14858:1;14841:19;;:5;:19;;;;14833:62;;;;;;;;;;;;:::i;:::-;;;;;;;;;14913:5;14906:12;;;14698:228;;;:::o;12948:553::-;9574:8;:22;9583:12;:10;:12::i;:::-;9574:22;;;;;;;;;;;;;;;;;;;;;;;;;9566:31;;;;;;13042:11:::1;13056:3;:10;13042:24;;13078:15;13096:3;:10;13078:28;;13148:12;;13141:3;13126:12;;:18;;;;:::i;:::-;13125:35;13117:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;13211:7;13204:3;:14;13195:85;;;;;;;;;;;;:::i;:::-;;;;;;;;;13297:9;13293:168;13316:3;13312:1;:7;13293:168;;;13341:25;13351:3;13355:1;13351:6;;;;;;;;;;;;;;;;;;;;;;13359:3;13363:1;13359:6;;;;;;;;;;;;;;;;;;;;;;13341:9;:25::i;:::-;13381:12;;:15;;;;;;;;;:::i;:::-;;;;;;13321:3;;;;;:::i;:::-;;;;13293:168;;;;9608:1;;12948:553:::0;;:::o;14438:198::-;14510:7;14555:1;14538:19;;:5;:19;;;;14530:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;14612:9;:16;14622:5;14612:16;;;;;;;;;;;;;;;;14605:23;;14438:198;;;:::o;7605:94::-;7185:12;:10;:12::i;:::-;7174:23;;:7;:5;:7::i;:::-;:23;;;7166:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;7670:21:::1;7688:1;7670:9;:21::i;:::-;7605:94::o:0;6954:87::-;7000:7;7027:6;;;;;;;;;;;7020:13;;6954:87;:::o;25923:88::-;25964:13;25996:7;25989:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;25923:88;:::o;15705:289::-;15820:10;15808:22;;:8;:22;;;;15800:60;;;;;;;;;;;;:::i;:::-;;;;;;;;;15916:8;15873:18;:30;15892:10;15873:30;;;;;;;;;;;;;;;:40;15904:8;15873:40;;;;;;;;;;;;;;;;:51;;;;;;;;;;;;;;;;;;15967:8;15940:46;;15955:10;15940:46;;;15977:8;15940:46;;;;;;:::i;:::-;;;;;;;;15705:289;;:::o;16937:305::-;17112:39;17131:10;17143:7;17112:18;:39::i;:::-;17104:80;;;;;;;;;;;;:::i;:::-;;;;;;;;;17195:39;17209:4;17215:2;17219:7;17228:5;17195:13;:39::i;:::-;16937:305;;;;:::o;26098:312::-;26156:13;26189:16;26197:7;26189;:16::i;:::-;26181:58;;;;;;;;;;;;:::i;:::-;;;;;;;;;26250:22;26328:8;26338:17;26347:7;26338:8;:17::i;:::-;26311:54;;;;;;;;;:::i;:::-;;;;;;;;;;;;;26293:73;;26394:8;26387:15;;;26098:312;;;:::o;9293:103::-;7185:12;:10;:12::i;:::-;7174:23;;:7;:5;:7::i;:::-;:23;;;7166:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;9383:5:::1;9362:8;:18;9371:8;9362:18;;;;;;;;;;;;;;;;:26;;;;;;;;;;;;;;;;;;9293:103:::0;:::o;26422:139::-;26466:13;26527:8;26510:42;;;;;;;;:::i;:::-;;;;;;;;;;;;;26496:57;;26422:139;:::o;16065:164::-;16162:4;16186:18;:25;16205:5;16186:25;;;;;;;;;;;;;;;:35;16212:8;16186:35;;;;;;;;;;;;;;;;;;;;;;;;;16179:42;;16065:164;;;;:::o;7854:186::-;7185:12;:10;:12::i;:::-;7174:23;;:7;:5;:7::i;:::-;:23;;;7166:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;7963:1:::1;7943:22;;:8;:22;;;;7935:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;8013:19;8023:8;8013:9;:19::i;:::-;7854:186:::0;:::o;14115:259::-;14180:7;14322:6;14295:9;:23;14305:12;14295:23;;;;;;;;;;;;;;;;:34;;;;:::i;:::-;14288:41;;14115:259;;;:::o;18728:127::-;18793:4;18845:1;18817:30;;:7;:16;18825:7;18817:16;;;;;;;;;;;;;;;;;;;;;:30;;;;18810:37;;18728:127;;;:::o;22629:167::-;22731:2;22704:15;:24;22720:7;22704:24;;;;;;;;;;;;:29;;;;;;;;;;;;;;;;;;22780:7;22776:2;22749:39;;22758:16;22766:7;22758;:16::i;:::-;22749:39;;;;;;;;;;;;22629:167;;:::o;19022:329::-;19115:4;19140:16;19148:7;19140;:16::i;:::-;19132:61;;;;;;;;;;;;:::i;:::-;;;;;;;;;19204:13;19220:16;19228:7;19220;:16::i;:::-;19204:32;;19266:5;19255:16;;:7;:16;;;:51;;;;19299:7;19275:31;;:20;19287:7;19275:11;:20::i;:::-;:31;;;19255:51;:87;;;;19310:32;19327:5;19334:7;19310:16;:32::i;:::-;19255:87;19247:96;;;19022:329;;;;:::o;21964:547::-;22116:4;22096:24;;:16;22104:7;22096;:16::i;:::-;:24;;;22088:65;;;;;;;;;;;;:::i;:::-;;;;;;;;;22186:1;22172:16;;:2;:16;;;;22164:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;22231:39;22252:4;22258:2;22262:7;22231:20;:39::i;:::-;22335:29;22352:1;22356:7;22335:8;:29::i;:::-;22396:1;22377:9;:15;22387:4;22377:15;;;;;;;;;;;;;;;;:20;;;;;;;:::i;:::-;;;;;;;;22425:1;22408:9;:13;22418:2;22408:13;;;;;;;;;;;;;;;;:18;;;;;;;:::i;:::-;;;;;;;;22456:2;22437:7;:16;22445:7;22437:16;;;;;;;;;;;;:21;;;;;;;;;;;;;;;;;;22495:7;22491:2;22476:27;;22485:4;22476:27;;;;;;;;;;;;21964:547;;;:::o;6337:98::-;6390:7;6417:10;6410:17;;6337:98;:::o;21274:353::-;21334:13;21350:16;21358:7;21350;:16::i;:::-;21334:32;;21379:48;21400:5;21415:1;21419:7;21379:20;:48::i;:::-;21468:29;21485:1;21489:7;21468:8;:29::i;:::-;21530:1;21510:9;:16;21520:5;21510:16;;;;;;;;;;;;;;;;:21;;;;;;;:::i;:::-;;;;;;;;21549:7;:16;21557:7;21549:16;;;;;;;;;;;;21542:23;;;;;;;;;;;21611:7;21607:1;21583:36;;21592:5;21583:36;;;;;;;;;;;;21274:353;;:::o;19693:110::-;19769:26;19779:2;19783:7;19769:26;;;;;;;;;;;;:9;:26::i;:::-;19693:110;;:::o;8048:173::-;8104:16;8123:6;;;;;;;;;;;8104:25;;8149:8;8140:6;;:17;;;;;;;;;;;;;;;;;;8204:8;8173:40;;8194:8;8173:40;;;;;;;;;;;;8048:173;;:::o;18124:291::-;18281:28;18291:4;18297:2;18301:7;18281:9;:28::i;:::-;18328:48;18351:4;18357:2;18361:7;18370:5;18328:22;:48::i;:::-;18320:87;;;;;;;;;;;;:::i;:::-;;;;;;;;;18124:291;;;;:::o;8264:532::-;8320:13;8359:1;8350:5;:10;8346:53;;;8377:10;;;;;;;;;;;;;;;;;;;;;8346:53;8409:12;8424:5;8409:20;;8440:14;8465:78;8480:1;8472:4;:9;8465:78;;8498:8;;;;;:::i;:::-;;;;8529:2;8521:10;;;;;:::i;:::-;;;8465:78;;;8553:19;8585:6;8575:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8553:39;;8603:154;8619:1;8610:5;:10;8603:154;;8647:1;8637:11;;;;;:::i;:::-;;;8714:2;8706:5;:10;;;;:::i;:::-;8693:2;:24;;;;:::i;:::-;8680:39;;8663:6;8670;8663:14;;;;;;;;;;;;;;;;;;;:56;;;;;;;;;;;8743:2;8734:11;;;;;:::i;:::-;;;8603:154;;;8781:6;8767:21;;;;;8264:532;;;;:::o;25513:126::-;;;;:::o;20030:297::-;20160:18;20166:2;20170:7;20160:5;:18::i;:::-;20211:54;20242:1;20246:2;20250:7;20259:5;20211:22;:54::i;:::-;20189:130;;;;;;;;;;;;:::i;:::-;;;;;;;;;20030:297;;;:::o;23361:777::-;23516:4;23537:15;:2;:13;;;:15::i;:::-;23533:598;;;23589:2;23573:36;;;23610:10;23622:4;23628:7;23637:5;23573:70;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;23569:507;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23834:1;23817:6;:13;:18;23813:248;;;23860:36;;;;;;;;;;:::i;:::-;;;;;;;;23813:248;24011:6;24005:13;23996:6;23992:2;23988:15;23981:38;23569:507;23704:45;;;23694:55;;;:6;:55;;;;23687:62;;;;;23533:598;24115:4;24108:11;;23361:777;;;;;;;:::o;20663:382::-;20757:1;20743:16;;:2;:16;;;;20735:61;;;;;;;;;;;;:::i;:::-;;;;;;;;;20816:16;20824:7;20816;:16::i;:::-;20815:17;20807:58;;;;;;;;;;;;:::i;:::-;;;;;;;;;20878:45;20907:1;20911:2;20915:7;20878:20;:45::i;:::-;20953:1;20936:9;:13;20946:2;20936:13;;;;;;;;;;;;;;;;:18;;;;;;;:::i;:::-;;;;;;;;20984:2;20965:7;:16;20973:7;20965:16;;;;;;;;;;;;:21;;;;;;;;;;;;;;;;;;21029:7;21025:2;21004:33;;21021:1;21004:33;;;;;;;;;;;;20663:382;;:::o;2502:387::-;2562:4;2770:12;2837:7;2825:20;2817:28;;2880:1;2873:4;:8;2866:15;;;2502:387;;;:::o;-1:-1:-1:-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;:::o;24:622:1:-;;145:80;160:64;217:6;160:64;:::i;:::-;145:80;:::i;:::-;136:89;;245:5;273:6;266:5;259:21;299:4;292:5;288:16;281:23;;324:6;374:3;366:4;358:6;354:17;349:3;345:27;342:36;339:2;;;391:1;388;381:12;339:2;419:1;404:236;429:6;426:1;423:13;404:236;;;496:3;524:37;557:3;545:10;524:37;:::i;:::-;519:3;512:50;591:4;586:3;582:14;575:21;;625:4;620:3;616:14;609:21;;464:176;451:1;448;444:9;439:14;;404:236;;;408:14;126:520;;;;;;;:::o;669:622::-;;790:80;805:64;862:6;805:64;:::i;:::-;790:80;:::i;:::-;781:89;;890:5;918:6;911:5;904:21;944:4;937:5;933:16;926:23;;969:6;1019:3;1011:4;1003:6;999:17;994:3;990:27;987:36;984:2;;;1036:1;1033;1026:12;984:2;1064:1;1049:236;1074:6;1071:1;1068:13;1049:236;;;1141:3;1169:37;1202:3;1190:10;1169:37;:::i;:::-;1164:3;1157:50;1236:4;1231:3;1227:14;1220:21;;1270:4;1265:3;1261:14;1254:21;;1109:176;1096:1;1093;1089:9;1084:14;;1049:236;;;1053:14;771:520;;;;;;;:::o;1297:342::-;;1399:64;1414:48;1455:6;1414:48;:::i;:::-;1399:64;:::i;:::-;1390:73;;1486:6;1479:5;1472:21;1524:4;1517:5;1513:16;1562:3;1553:6;1548:3;1544:16;1541:25;1538:2;;;1579:1;1576;1569:12;1538:2;1592:41;1626:6;1621:3;1616;1592:41;:::i;:::-;1380:259;;;;;;:::o;1645:344::-;;1748:65;1763:49;1805:6;1763:49;:::i;:::-;1748:65;:::i;:::-;1739:74;;1836:6;1829:5;1822:21;1874:4;1867:5;1863:16;1912:3;1903:6;1898:3;1894:16;1891:25;1888:2;;;1929:1;1926;1919:12;1888:2;1942:41;1976:6;1971:3;1966;1942:41;:::i;:::-;1729:260;;;;;;:::o;1995:139::-;;2079:6;2066:20;2057:29;;2095:33;2122:5;2095:33;:::i;:::-;2047:87;;;;:::o;2157:303::-;;2277:3;2270:4;2262:6;2258:17;2254:27;2244:2;;2295:1;2292;2285:12;2244:2;2335:6;2322:20;2360:94;2450:3;2442:6;2435:4;2427:6;2423:17;2360:94;:::i;:::-;2351:103;;2234:226;;;;;:::o;2483:303::-;;2603:3;2596:4;2588:6;2584:17;2580:27;2570:2;;2621:1;2618;2611:12;2570:2;2661:6;2648:20;2686:94;2776:3;2768:6;2761:4;2753:6;2749:17;2686:94;:::i;:::-;2677:103;;2560:226;;;;;:::o;2792:133::-;;2873:6;2860:20;2851:29;;2889:30;2913:5;2889:30;:::i;:::-;2841:84;;;;:::o;2931:137::-;;3014:6;3001:20;2992:29;;3030:32;3056:5;3030:32;:::i;:::-;2982:86;;;;:::o;3074:141::-;;3161:6;3155:13;3146:22;;3177:32;3203:5;3177:32;:::i;:::-;3136:79;;;;:::o;3234:351::-;;;3351:3;3344:4;3336:6;3332:17;3328:27;3318:2;;3369:1;3366;3359:12;3318:2;3405:6;3392:20;3382:30;;3435:18;3427:6;3424:30;3421:2;;;3467:1;3464;3457:12;3421:2;3504:4;3496:6;3492:17;3480:29;;3558:3;3550:4;3542:6;3538:17;3528:8;3524:32;3521:41;3518:2;;;3575:1;3572;3565:12;3518:2;3308:277;;;;;:::o;3604:271::-;;3708:3;3701:4;3693:6;3689:17;3685:27;3675:2;;3726:1;3723;3716:12;3675:2;3766:6;3753:20;3791:78;3865:3;3857:6;3850:4;3842:6;3838:17;3791:78;:::i;:::-;3782:87;;3665:210;;;;;:::o;3895:273::-;;4000:3;3993:4;3985:6;3981:17;3977:27;3967:2;;4018:1;4015;4008:12;3967:2;4058:6;4045:20;4083:79;4158:3;4150:6;4143:4;4135:6;4131:17;4083:79;:::i;:::-;4074:88;;3957:211;;;;;:::o;4174:139::-;;4258:6;4245:20;4236:29;;4274:33;4301:5;4274:33;:::i;:::-;4226:87;;;;:::o;4319:262::-;;4427:2;4415:9;4406:7;4402:23;4398:32;4395:2;;;4443:1;4440;4433:12;4395:2;4486:1;4511:53;4556:7;4547:6;4536:9;4532:22;4511:53;:::i;:::-;4501:63;;4457:117;4385:196;;;;:::o;4587:407::-;;;4712:2;4700:9;4691:7;4687:23;4683:32;4680:2;;;4728:1;4725;4718:12;4680:2;4771:1;4796:53;4841:7;4832:6;4821:9;4817:22;4796:53;:::i;:::-;4786:63;;4742:117;4898:2;4924:53;4969:7;4960:6;4949:9;4945:22;4924:53;:::i;:::-;4914:63;;4869:118;4670:324;;;;;:::o;5000:552::-;;;;5142:2;5130:9;5121:7;5117:23;5113:32;5110:2;;;5158:1;5155;5148:12;5110:2;5201:1;5226:53;5271:7;5262:6;5251:9;5247:22;5226:53;:::i;:::-;5216:63;;5172:117;5328:2;5354:53;5399:7;5390:6;5379:9;5375:22;5354:53;:::i;:::-;5344:63;;5299:118;5456:2;5482:53;5527:7;5518:6;5507:9;5503:22;5482:53;:::i;:::-;5472:63;;5427:118;5100:452;;;;;:::o;5558:829::-;;;;;;5736:3;5724:9;5715:7;5711:23;5707:33;5704:2;;;5753:1;5750;5743:12;5704:2;5796:1;5821:53;5866:7;5857:6;5846:9;5842:22;5821:53;:::i;:::-;5811:63;;5767:117;5923:2;5949:53;5994:7;5985:6;5974:9;5970:22;5949:53;:::i;:::-;5939:63;;5894:118;6051:2;6077:53;6122:7;6113:6;6102:9;6098:22;6077:53;:::i;:::-;6067:63;;6022:118;6207:2;6196:9;6192:18;6179:32;6238:18;6230:6;6227:30;6224:2;;;6270:1;6267;6260:12;6224:2;6306:64;6362:7;6353:6;6342:9;6338:22;6306:64;:::i;:::-;6288:82;;;;6150:230;5694:693;;;;;;;;:::o;6393:809::-;;;;;6561:3;6549:9;6540:7;6536:23;6532:33;6529:2;;;6578:1;6575;6568:12;6529:2;6621:1;6646:53;6691:7;6682:6;6671:9;6667:22;6646:53;:::i;:::-;6636:63;;6592:117;6748:2;6774:53;6819:7;6810:6;6799:9;6795:22;6774:53;:::i;:::-;6764:63;;6719:118;6876:2;6902:53;6947:7;6938:6;6927:9;6923:22;6902:53;:::i;:::-;6892:63;;6847:118;7032:2;7021:9;7017:18;7004:32;7063:18;7055:6;7052:30;7049:2;;;7095:1;7092;7085:12;7049:2;7123:62;7177:7;7168:6;7157:9;7153:22;7123:62;:::i;:::-;7113:72;;6975:220;6519:683;;;;;;;:::o;7208:401::-;;;7330:2;7318:9;7309:7;7305:23;7301:32;7298:2;;;7346:1;7343;7336:12;7298:2;7389:1;7414:53;7459:7;7450:6;7439:9;7435:22;7414:53;:::i;:::-;7404:63;;7360:117;7516:2;7542:50;7584:7;7575:6;7564:9;7560:22;7542:50;:::i;:::-;7532:60;;7487:115;7288:321;;;;;:::o;7615:407::-;;;7740:2;7728:9;7719:7;7715:23;7711:32;7708:2;;;7756:1;7753;7746:12;7708:2;7799:1;7824:53;7869:7;7860:6;7849:9;7845:22;7824:53;:::i;:::-;7814:63;;7770:117;7926:2;7952:53;7997:7;7988:6;7977:9;7973:22;7952:53;:::i;:::-;7942:63;;7897:118;7698:324;;;;;:::o;8028:693::-;;;8203:2;8191:9;8182:7;8178:23;8174:32;8171:2;;;8219:1;8216;8209:12;8171:2;8290:1;8279:9;8275:17;8262:31;8320:18;8312:6;8309:30;8306:2;;;8352:1;8349;8342:12;8306:2;8380:78;8450:7;8441:6;8430:9;8426:22;8380:78;:::i;:::-;8370:88;;8233:235;8535:2;8524:9;8520:18;8507:32;8566:18;8558:6;8555:30;8552:2;;;8598:1;8595;8588:12;8552:2;8626:78;8696:7;8687:6;8676:9;8672:22;8626:78;:::i;:::-;8616:88;;8478:236;8161:560;;;;;:::o;8727:260::-;;8834:2;8822:9;8813:7;8809:23;8805:32;8802:2;;;8850:1;8847;8840:12;8802:2;8893:1;8918:52;8962:7;8953:6;8942:9;8938:22;8918:52;:::i;:::-;8908:62;;8864:116;8792:195;;;;:::o;8993:282::-;;9111:2;9099:9;9090:7;9086:23;9082:32;9079:2;;;9127:1;9124;9117:12;9079:2;9170:1;9195:63;9250:7;9241:6;9230:9;9226:22;9195:63;:::i;:::-;9185:73;;9141:127;9069:206;;;;:::o;9281:375::-;;9399:2;9387:9;9378:7;9374:23;9370:32;9367:2;;;9415:1;9412;9405:12;9367:2;9486:1;9475:9;9471:17;9458:31;9516:18;9508:6;9505:30;9502:2;;;9548:1;9545;9538:12;9502:2;9576:63;9631:7;9622:6;9611:9;9607:22;9576:63;:::i;:::-;9566:73;;9429:220;9357:299;;;;:::o;9662:262::-;;9770:2;9758:9;9749:7;9745:23;9741:32;9738:2;;;9786:1;9783;9776:12;9738:2;9829:1;9854:53;9899:7;9890:6;9879:9;9875:22;9854:53;:::i;:::-;9844:63;;9800:117;9728:196;;;;:::o;9930:118::-;10017:24;10035:5;10017:24;:::i;:::-;10012:3;10005:37;9995:53;;:::o;10054:109::-;10135:21;10150:5;10135:21;:::i;:::-;10130:3;10123:34;10113:50;;:::o;10169:115::-;10254:23;10271:5;10254:23;:::i;:::-;10249:3;10242:36;10232:52;;:::o;10290:360::-;;10404:38;10436:5;10404:38;:::i;:::-;10458:70;10521:6;10516:3;10458:70;:::i;:::-;10451:77;;10537:52;10582:6;10577:3;10570:4;10563:5;10559:16;10537:52;:::i;:::-;10614:29;10636:6;10614:29;:::i;:::-;10609:3;10605:39;10598:46;;10380:270;;;;;:::o;10656:364::-;;10772:39;10805:5;10772:39;:::i;:::-;10827:71;10891:6;10886:3;10827:71;:::i;:::-;10820:78;;10907:52;10952:6;10947:3;10940:4;10933:5;10929:16;10907:52;:::i;:::-;10984:29;11006:6;10984:29;:::i;:::-;10979:3;10975:39;10968:46;;10748:272;;;;;:::o;11026:377::-;;11160:39;11193:5;11160:39;:::i;:::-;11215:89;11297:6;11292:3;11215:89;:::i;:::-;11208:96;;11313:52;11358:6;11353:3;11346:4;11339:5;11335:16;11313:52;:::i;:::-;11390:6;11385:3;11381:16;11374:23;;11136:267;;;;;:::o;11433:845::-;;11573:5;11567:12;11602:36;11628:9;11602:36;:::i;:::-;11654:89;11736:6;11731:3;11654:89;:::i;:::-;11647:96;;11774:1;11763:9;11759:17;11790:1;11785:137;;;;11936:1;11931:341;;;;11752:520;;11785:137;11869:4;11865:9;11854;11850:25;11845:3;11838:38;11905:6;11900:3;11896:16;11889:23;;11785:137;;11931:341;11998:38;12030:5;11998:38;:::i;:::-;12058:1;12072:154;12086:6;12083:1;12080:13;12072:154;;;12160:7;12154:14;12150:1;12145:3;12141:11;12134:35;12210:1;12201:7;12197:15;12186:26;;12108:4;12105:1;12101:12;12096:17;;12072:154;;;12255:6;12250:3;12246:16;12239:23;;11938:334;;11752:520;;11540:738;;;;;;:::o;12284:330::-;;12447:67;12511:2;12506:3;12447:67;:::i;:::-;12440:74;;12544:34;12540:1;12535:3;12531:11;12524:55;12605:2;12600:3;12596:12;12589:19;;12430:184;;;:::o;12620:387::-;;12783:67;12847:2;12842:3;12783:67;:::i;:::-;12776:74;;12880:34;12876:1;12871:3;12867:11;12860:55;12946:25;12941:2;12936:3;12932:12;12925:47;12998:2;12993:3;12989:12;12982:19;;12766:241;;;:::o;13013:347::-;;13194:85;13276:2;13271:3;13194:85;:::i;:::-;13187:92;;13309:15;13305:1;13300:3;13296:11;13289:36;13351:2;13346:3;13342:12;13335:19;;13177:183;;;:::o;13366:325::-;;13529:67;13593:2;13588:3;13529:67;:::i;:::-;13522:74;;13626:29;13622:1;13617:3;13613:11;13606:50;13682:2;13677:3;13673:12;13666:19;;13512:179;;;:::o;13697:326::-;;13860:67;13924:2;13919:3;13860:67;:::i;:::-;13853:74;;13957:30;13953:1;13948:3;13944:11;13937:51;14014:2;14009:3;14005:12;13998:19;;13843:180;;;:::o;14029:330::-;;14192:67;14256:2;14251:3;14192:67;:::i;:::-;14185:74;;14289:34;14285:1;14280:3;14276:11;14269:55;14350:2;14345:3;14341:12;14334:19;;14175:184;;;:::o;14365:328::-;;14528:67;14592:2;14587:3;14528:67;:::i;:::-;14521:74;;14625:32;14621:1;14616:3;14612:11;14605:53;14684:2;14679:3;14675:12;14668:19;;14511:182;;;:::o;14699:330::-;;14862:67;14926:2;14921:3;14862:67;:::i;:::-;14855:74;;14959:34;14955:1;14950:3;14946:11;14939:55;15020:2;15015:3;15011:12;15004:19;;14845:184;;;:::o;15035:323::-;;15198:67;15262:2;15257:3;15198:67;:::i;:::-;15191:74;;15295:27;15291:1;15286:3;15282:11;15275:48;15349:2;15344:3;15340:12;15333:19;;15181:177;;;:::o;15364:328::-;;15527:67;15591:2;15586:3;15527:67;:::i;:::-;15520:74;;15624:32;15620:1;15615:3;15611:11;15604:53;15683:2;15678:3;15674:12;15667:19;;15510:182;;;:::o;15698:324::-;;15861:67;15925:2;15920:3;15861:67;:::i;:::-;15854:74;;15958:28;15954:1;15949:3;15945:11;15938:49;16013:2;16008:3;16004:12;15997:19;;15844:178;;;:::o;16028:329::-;;16191:67;16255:2;16250:3;16191:67;:::i;:::-;16184:74;;16288:33;16284:1;16279:3;16275:11;16268:54;16348:2;16343:3;16339:12;16332:19;;16174:183;;;:::o;16363:330::-;;16526:67;16590:2;16585:3;16526:67;:::i;:::-;16519:74;;16623:34;16619:1;16614:3;16610:11;16603:55;16684:2;16679:3;16675:12;16668:19;;16509:184;;;:::o;16699:330::-;;16862:67;16926:2;16921:3;16862:67;:::i;:::-;16855:74;;16959:34;16955:1;16950:3;16946:11;16939:55;17020:2;17015:3;17011:12;17004:19;;16845:184;;;:::o;17035:337::-;;17216:84;17298:1;17293:3;17216:84;:::i;:::-;17209:91;;17330:7;17326:1;17321:3;17317:11;17310:28;17364:1;17359:3;17355:11;17348:18;;17199:173;;;:::o;17378:326::-;;17541:67;17605:2;17600:3;17541:67;:::i;:::-;17534:74;;17638:30;17634:1;17629:3;17625:11;17618:51;17695:2;17690:3;17686:12;17679:19;;17524:180;;;:::o;17710:330::-;;17873:67;17937:2;17932:3;17873:67;:::i;:::-;17866:74;;17970:34;17966:1;17961:3;17957:11;17950:55;18031:2;18026:3;18022:12;18015:19;;17856:184;;;:::o;18046:326::-;;18209:67;18273:2;18268:3;18209:67;:::i;:::-;18202:74;;18306:30;18302:1;18297:3;18293:11;18286:51;18363:2;18358:3;18354:12;18347:19;;18192:180;;;:::o;18378:297::-;;18558:83;18639:1;18634:3;18558:83;:::i;:::-;18551:90;;18667:1;18662:3;18658:11;18651:18;;18541:134;;;:::o;18681:327::-;;18844:67;18908:2;18903:3;18844:67;:::i;:::-;18837:74;;18941:31;18937:1;18932:3;18928:11;18921:52;18999:2;18994:3;18990:12;18983:19;;18827:181;;;:::o;19014:314::-;;19177:67;19241:2;19236:3;19177:67;:::i;:::-;19170:74;;19274:18;19270:1;19265:3;19261:11;19254:39;19319:2;19314:3;19310:12;19303:19;;19160:168;;;:::o;19334:317::-;;19497:67;19561:2;19556:3;19497:67;:::i;:::-;19490:74;;19594:21;19590:1;19585:3;19581:11;19574:42;19642:2;19637:3;19633:12;19626:19;;19480:171;;;:::o;19657:118::-;19744:24;19762:5;19744:24;:::i;:::-;19739:3;19732:37;19722:53;;:::o;19781:695::-;;20081:92;20169:3;20160:6;20081:92;:::i;:::-;20074:99;;20190:95;20281:3;20272:6;20190:95;:::i;:::-;20183:102;;20302:148;20446:3;20302:148;:::i;:::-;20295:155;;20467:3;20460:10;;20063:413;;;;;:::o;20482:535::-;;20734:92;20822:3;20813:6;20734:92;:::i;:::-;20727:99;;20843:148;20987:3;20843:148;:::i;:::-;20836:155;;21008:3;21001:10;;20716:301;;;;:::o;21023:379::-;;21229:147;21372:3;21229:147;:::i;:::-;21222:154;;21393:3;21386:10;;21211:191;;;:::o;21408:222::-;;21539:2;21528:9;21524:18;21516:26;;21552:71;21620:1;21609:9;21605:17;21596:6;21552:71;:::i;:::-;21506:124;;;;:::o;21636:640::-;;21869:3;21858:9;21854:19;21846:27;;21883:71;21951:1;21940:9;21936:17;21927:6;21883:71;:::i;:::-;21964:72;22032:2;22021:9;22017:18;22008:6;21964:72;:::i;:::-;22046;22114:2;22103:9;22099:18;22090:6;22046:72;:::i;:::-;22165:9;22159:4;22155:20;22150:2;22139:9;22135:18;22128:48;22193:76;22264:4;22255:6;22193:76;:::i;:::-;22185:84;;21836:440;;;;;;;:::o;22282:210::-;;22407:2;22396:9;22392:18;22384:26;;22420:65;22482:1;22471:9;22467:17;22458:6;22420:65;:::i;:::-;22374:118;;;;:::o;22498:218::-;;22627:2;22616:9;22612:18;22604:26;;22640:69;22706:1;22695:9;22691:17;22682:6;22640:69;:::i;:::-;22594:122;;;;:::o;22722:313::-;;22873:2;22862:9;22858:18;22850:26;;22922:9;22916:4;22912:20;22908:1;22897:9;22893:17;22886:47;22950:78;23023:4;23014:6;22950:78;:::i;:::-;22942:86;;22840:195;;;;:::o;23041:419::-;;23245:2;23234:9;23230:18;23222:26;;23294:9;23288:4;23284:20;23280:1;23269:9;23265:17;23258:47;23322:131;23448:4;23322:131;:::i;:::-;23314:139;;23212:248;;;:::o;23466:419::-;;23670:2;23659:9;23655:18;23647:26;;23719:9;23713:4;23709:20;23705:1;23694:9;23690:17;23683:47;23747:131;23873:4;23747:131;:::i;:::-;23739:139;;23637:248;;;:::o;23891:419::-;;24095:2;24084:9;24080:18;24072:26;;24144:9;24138:4;24134:20;24130:1;24119:9;24115:17;24108:47;24172:131;24298:4;24172:131;:::i;:::-;24164:139;;24062:248;;;:::o;24316:419::-;;24520:2;24509:9;24505:18;24497:26;;24569:9;24563:4;24559:20;24555:1;24544:9;24540:17;24533:47;24597:131;24723:4;24597:131;:::i;:::-;24589:139;;24487:248;;;:::o;24741:419::-;;24945:2;24934:9;24930:18;24922:26;;24994:9;24988:4;24984:20;24980:1;24969:9;24965:17;24958:47;25022:131;25148:4;25022:131;:::i;:::-;25014:139;;24912:248;;;:::o;25166:419::-;;25370:2;25359:9;25355:18;25347:26;;25419:9;25413:4;25409:20;25405:1;25394:9;25390:17;25383:47;25447:131;25573:4;25447:131;:::i;:::-;25439:139;;25337:248;;;:::o;25591:419::-;;25795:2;25784:9;25780:18;25772:26;;25844:9;25838:4;25834:20;25830:1;25819:9;25815:17;25808:47;25872:131;25998:4;25872:131;:::i;:::-;25864:139;;25762:248;;;:::o;26016:419::-;;26220:2;26209:9;26205:18;26197:26;;26269:9;26263:4;26259:20;26255:1;26244:9;26240:17;26233:47;26297:131;26423:4;26297:131;:::i;:::-;26289:139;;26187:248;;;:::o;26441:419::-;;26645:2;26634:9;26630:18;26622:26;;26694:9;26688:4;26684:20;26680:1;26669:9;26665:17;26658:47;26722:131;26848:4;26722:131;:::i;:::-;26714:139;;26612:248;;;:::o;26866:419::-;;27070:2;27059:9;27055:18;27047:26;;27119:9;27113:4;27109:20;27105:1;27094:9;27090:17;27083:47;27147:131;27273:4;27147:131;:::i;:::-;27139:139;;27037:248;;;:::o;27291:419::-;;27495:2;27484:9;27480:18;27472:26;;27544:9;27538:4;27534:20;27530:1;27519:9;27515:17;27508:47;27572:131;27698:4;27572:131;:::i;:::-;27564:139;;27462:248;;;:::o;27716:419::-;;27920:2;27909:9;27905:18;27897:26;;27969:9;27963:4;27959:20;27955:1;27944:9;27940:17;27933:47;27997:131;28123:4;27997:131;:::i;:::-;27989:139;;27887:248;;;:::o;28141:419::-;;28345:2;28334:9;28330:18;28322:26;;28394:9;28388:4;28384:20;28380:1;28369:9;28365:17;28358:47;28422:131;28548:4;28422:131;:::i;:::-;28414:139;;28312:248;;;:::o;28566:419::-;;28770:2;28759:9;28755:18;28747:26;;28819:9;28813:4;28809:20;28805:1;28794:9;28790:17;28783:47;28847:131;28973:4;28847:131;:::i;:::-;28839:139;;28737:248;;;:::o;28991:419::-;;29195:2;29184:9;29180:18;29172:26;;29244:9;29238:4;29234:20;29230:1;29219:9;29215:17;29208:47;29272:131;29398:4;29272:131;:::i;:::-;29264:139;;29162:248;;;:::o;29416:419::-;;29620:2;29609:9;29605:18;29597:26;;29669:9;29663:4;29659:20;29655:1;29644:9;29640:17;29633:47;29697:131;29823:4;29697:131;:::i;:::-;29689:139;;29587:248;;;:::o;29841:419::-;;30045:2;30034:9;30030:18;30022:26;;30094:9;30088:4;30084:20;30080:1;30069:9;30065:17;30058:47;30122:131;30248:4;30122:131;:::i;:::-;30114:139;;30012:248;;;:::o;30266:419::-;;30470:2;30459:9;30455:18;30447:26;;30519:9;30513:4;30509:20;30505:1;30494:9;30490:17;30483:47;30547:131;30673:4;30547:131;:::i;:::-;30539:139;;30437:248;;;:::o;30691:419::-;;30895:2;30884:9;30880:18;30872:26;;30944:9;30938:4;30934:20;30930:1;30919:9;30915:17;30908:47;30972:131;31098:4;30972:131;:::i;:::-;30964:139;;30862:248;;;:::o;31116:222::-;;31247:2;31236:9;31232:18;31224:26;;31260:71;31328:1;31317:9;31313:17;31304:6;31260:71;:::i;:::-;31214:124;;;;:::o;31344:283::-;;31410:2;31404:9;31394:19;;31452:4;31444:6;31440:17;31559:6;31547:10;31544:22;31523:18;31511:10;31508:34;31505:62;31502:2;;;31570:18;;:::i;:::-;31502:2;31610:10;31606:2;31599:22;31384:243;;;;:::o;31633:311::-;;31800:18;31792:6;31789:30;31786:2;;;31822:18;;:::i;:::-;31786:2;31872:4;31864:6;31860:17;31852:25;;31932:4;31926;31922:15;31914:23;;31715:229;;;:::o;31950:311::-;;32117:18;32109:6;32106:30;32103:2;;;32139:18;;:::i;:::-;32103:2;32189:4;32181:6;32177:17;32169:25;;32249:4;32243;32239:15;32231:23;;32032:229;;;:::o;32267:331::-;;32418:18;32410:6;32407:30;32404:2;;;32440:18;;:::i;:::-;32404:2;32525:4;32521:9;32514:4;32506:6;32502:17;32498:33;32490:41;;32586:4;32580;32576:15;32568:23;;32333:265;;;:::o;32604:332::-;;32756:18;32748:6;32745:30;32742:2;;;32778:18;;:::i;:::-;32742:2;32863:4;32859:9;32852:4;32844:6;32840:17;32836:33;32828:41;;32924:4;32918;32914:15;32906:23;;32671:265;;;:::o;32942:141::-;;33014:3;33006:11;;33037:3;33034:1;33027:14;33071:4;33068:1;33058:18;33050:26;;32996:87;;;:::o;33089:98::-;;33174:5;33168:12;33158:22;;33147:40;;;:::o;33193:99::-;;33279:5;33273:12;33263:22;;33252:40;;;:::o;33298:168::-;;33415:6;33410:3;33403:19;33455:4;33450:3;33446:14;33431:29;;33393:73;;;;:::o;33472:147::-;;33610:3;33595:18;;33585:34;;;;:::o;33625:169::-;;33743:6;33738:3;33731:19;33783:4;33778:3;33774:14;33759:29;;33721:73;;;;:::o;33800:148::-;;33939:3;33924:18;;33914:34;;;;:::o;33954:305::-;;34013:20;34031:1;34013:20;:::i;:::-;34008:25;;34047:20;34065:1;34047:20;:::i;:::-;34042:25;;34201:1;34133:66;34129:74;34126:1;34123:81;34120:2;;;34207:18;;:::i;:::-;34120:2;34251:1;34248;34244:9;34237:16;;33998:261;;;;:::o;34265:185::-;;34322:20;34340:1;34322:20;:::i;:::-;34317:25;;34356:20;34374:1;34356:20;:::i;:::-;34351:25;;34395:1;34385:2;;34400:18;;:::i;:::-;34385:2;34442:1;34439;34435:9;34430:14;;34307:143;;;;:::o;34456:191::-;;34516:20;34534:1;34516:20;:::i;:::-;34511:25;;34550:20;34568:1;34550:20;:::i;:::-;34545:25;;34589:1;34586;34583:8;34580:2;;;34594:18;;:::i;:::-;34580:2;34639:1;34636;34632:9;34624:17;;34501:146;;;;:::o;34653:96::-;;34719:24;34737:5;34719:24;:::i;:::-;34708:35;;34698:51;;;:::o;34755:90::-;;34832:5;34825:13;34818:21;34807:32;;34797:48;;;:::o;34851:149::-;;34927:66;34920:5;34916:78;34905:89;;34895:105;;;:::o;35006:126::-;;35083:42;35076:5;35072:54;35061:65;;35051:81;;;:::o;35138:77::-;;35204:5;35193:16;;35183:32;;;:::o;35221:154::-;35305:6;35300:3;35295;35282:30;35367:1;35358:6;35353:3;35349:16;35342:27;35272:103;;;:::o;35381:307::-;35449:1;35459:113;35473:6;35470:1;35467:13;35459:113;;;35558:1;35553:3;35549:11;35543:18;35539:1;35534:3;35530:11;35523:39;35495:2;35492:1;35488:10;35483:15;;35459:113;;;35590:6;35587:1;35584:13;35581:2;;;35670:1;35661:6;35656:3;35652:16;35645:27;35581:2;35430:258;;;;:::o;35694:320::-;;35775:1;35769:4;35765:12;35755:22;;35822:1;35816:4;35812:12;35843:18;35833:2;;35899:4;35891:6;35887:17;35877:27;;35833:2;35961;35953:6;35950:14;35930:18;35927:38;35924:2;;;35980:18;;:::i;:::-;35924:2;35745:269;;;;:::o;36020:233::-;;36082:24;36100:5;36082:24;:::i;:::-;36073:33;;36128:66;36121:5;36118:77;36115:2;;;36198:18;;:::i;:::-;36115:2;36245:1;36238:5;36234:13;36227:20;;36063:190;;;:::o;36259:176::-;;36308:20;36326:1;36308:20;:::i;:::-;36303:25;;36342:20;36360:1;36342:20;:::i;:::-;36337:25;;36381:1;36371:2;;36386:18;;:::i;:::-;36371:2;36427:1;36424;36420:9;36415:14;;36293:142;;;;:::o;36441:180::-;36489:77;36486:1;36479:88;36586:4;36583:1;36576:15;36610:4;36607:1;36600:15;36627:180;36675:77;36672:1;36665:88;36772:4;36769:1;36762:15;36796:4;36793:1;36786:15;36813:180;36861:77;36858:1;36851:88;36958:4;36955:1;36948:15;36982:4;36979:1;36972:15;36999:180;37047:77;37044:1;37037:88;37144:4;37141:1;37134:15;37168:4;37165:1;37158:15;37185:102;;37277:2;37273:7;37268:2;37261:5;37257:14;37253:28;37243:38;;37233:54;;;:::o;37293:122::-;37366:24;37384:5;37366:24;:::i;:::-;37359:5;37356:35;37346:2;;37405:1;37402;37395:12;37346:2;37336:79;:::o;37421:116::-;37491:21;37506:5;37491:21;:::i;:::-;37484:5;37481:32;37471:2;;37527:1;37524;37517:12;37471:2;37461:76;:::o;37543:120::-;37615:23;37632:5;37615:23;:::i;:::-;37608:5;37605:34;37595:2;;37653:1;37650;37643:12;37595:2;37585:78;:::o;37669:122::-;37742:24;37760:5;37742:24;:::i;:::-;37735:5;37732:35;37722:2;;37781:1;37778;37771:12;37722:2;37712:79;:::o
Swarm Source
ipfs://7f0045707c7ea7a925763d47f70378c9d9cca2f725a28843de519b53e77d61cf
[ 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.