ERC-1155
Overview
Max Total Supply
810,042 SC
Holders
20
Total Transfers
-
Market
Onchain Market Cap
$0.00
Circulating Supply Market Cap
-
Other Info
Token Contract
Loading...
Loading
Loading...
Loading
Loading...
Loading
Contract Name:
ShrineCrystals
Compiler Version
v0.8.20+commit.a1b79de6
Contract Source Code (Solidity)
/** *Submitted for verification at ftmscan.com on 2024-07-18 */ /* Cult Crystals with no mine function (for shrines) */ // SPDX-License-Identifier: MIT pragma solidity ^0.8.0; interface IERC165 { function supportsInterface(bytes4 interfaceId) external view returns (bool); } interface IERC1155 is IERC165 { event TransferSingle(address indexed operator, address indexed from, address indexed to, uint256 id, uint256 value); event TransferBatch( address indexed operator, address indexed from, address indexed to, uint256[] ids, uint256[] values ); event ApprovalForAll(address indexed account, address indexed operator, bool approved); event URI(string value, uint256 indexed id); function balanceOf(address account, uint256 id) external view returns (uint256); function balanceOfBatch( address[] calldata accounts, uint256[] calldata ids ) external view returns (uint256[] memory); function setApprovalForAll(address operator, bool approved) external; function isApprovedForAll(address account, address operator) external view returns (bool); function safeTransferFrom(address from, address to, uint256 id, uint256 amount, bytes calldata data) external; function safeBatchTransferFrom( address from, address to, uint256[] calldata ids, uint256[] calldata amounts, bytes calldata data ) external; } interface IERC1155Receiver is IERC165 { function onERC1155Received( address operator, address from, uint256 id, uint256 value, bytes calldata data ) external returns (bytes4); function onERC1155BatchReceived( address operator, address from, uint256[] calldata ids, uint256[] calldata values, bytes calldata data ) external returns (bytes4); } interface IERC1155MetadataURI is IERC1155 { function uri(uint256 id) external view returns (string memory); } pragma solidity ^0.8.1; library Address { function isContract(address account) internal view returns (bool) { return account.code.length > 0; } function sendValue(address payable recipient, uint256 amount) internal { require(address(this).balance >= amount, "Address: insufficient balance"); (bool success, ) = recipient.call{value: amount}(""); require(success, "Address: unable to send value, recipient may have reverted"); } function functionCall(address target, bytes memory data) internal returns (bytes memory) { return functionCallWithValue(target, data, 0, "Address: low-level call failed"); } function functionCall( address target, bytes memory data, string memory errorMessage ) internal returns (bytes memory) { return functionCallWithValue(target, data, 0, errorMessage); } function functionCallWithValue(address target, bytes memory data, uint256 value) internal returns (bytes memory) { return functionCallWithValue(target, data, value, "Address: low-level call with value failed"); } function functionCallWithValue( address target, bytes memory data, uint256 value, string memory errorMessage ) internal returns (bytes memory) { require(address(this).balance >= value, "Address: insufficient balance for call"); (bool success, bytes memory returndata) = target.call{value: value}(data); return verifyCallResultFromTarget(target, success, returndata, errorMessage); } function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) { return functionStaticCall(target, data, "Address: low-level static call failed"); } function functionStaticCall( address target, bytes memory data, string memory errorMessage ) internal view returns (bytes memory) { (bool success, bytes memory returndata) = target.staticcall(data); return verifyCallResultFromTarget(target, success, returndata, errorMessage); } function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) { return functionDelegateCall(target, data, "Address: low-level delegate call failed"); } function functionDelegateCall( address target, bytes memory data, string memory errorMessage ) internal returns (bytes memory) { (bool success, bytes memory returndata) = target.delegatecall(data); return verifyCallResultFromTarget(target, success, returndata, errorMessage); } function verifyCallResultFromTarget( address target, bool success, bytes memory returndata, string memory errorMessage ) internal view returns (bytes memory) { if (success) { if (returndata.length == 0) { // only check isContract if the call was successful and the return data is empty // otherwise we already know that it was a contract require(isContract(target), "Address: call to non-contract"); } return returndata; } else { _revert(returndata, errorMessage); } } function verifyCallResult( bool success, bytes memory returndata, string memory errorMessage ) internal pure returns (bytes memory) { if (success) { return returndata; } else { _revert(returndata, errorMessage); } } function _revert(bytes memory returndata, string memory errorMessage) private pure { // 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 /// @solidity memory-safe-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 ERC165 is IERC165 { /** * @dev See {IERC165-supportsInterface}. */ function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) { return interfaceId == type(IERC165).interfaceId; } } abstract contract ERC1155 is Context, ERC165, IERC1155, IERC1155MetadataURI { using Address for address; // Mapping from token ID to account balances mapping(uint256 => mapping(address => uint256)) private _balances; // Mapping from account to operator approvals mapping(address => mapping(address => bool)) private _operatorApprovals; // Used as the URI for all token types by relying on ID substitution, e.g. https://token-cdn-domain/{id}.json string private _uri; function supportsInterface(bytes4 interfaceId) public view virtual override(ERC165, IERC165) returns (bool) { return interfaceId == type(IERC1155).interfaceId || interfaceId == type(IERC1155MetadataURI).interfaceId || super.supportsInterface(interfaceId); } function uri(uint256) public view virtual override returns (string memory) { return _uri; } function balanceOf(address account, uint256 id) public view virtual override returns (uint256) { require(account != address(0), "ERC1155: address zero is not a valid owner"); return _balances[id][account]; } function balanceOfBatch( address[] memory accounts, uint256[] memory ids ) public view virtual override returns (uint256[] memory) { require(accounts.length == ids.length, "ERC1155: accounts and ids length mismatch"); uint256[] memory batchBalances = new uint256[](accounts.length); for (uint256 i = 0; i < accounts.length; ++i) { batchBalances[i] = balanceOf(accounts[i], ids[i]); } return batchBalances; } function setApprovalForAll(address operator, bool approved) public virtual override { _setApprovalForAll(_msgSender(), operator, approved); } function isApprovedForAll(address account, address operator) public view virtual override returns (bool) { return _operatorApprovals[account][operator]; } function safeTransferFrom( address from, address to, uint256 id, uint256 amount, bytes memory data ) public virtual override { require( from == _msgSender() || isApprovedForAll(from, _msgSender()), "ERC1155: caller is not token owner or approved" ); _safeTransferFrom(from, to, id, amount, data); } /** * @dev See {IERC1155-safeBatchTransferFrom}. */ function safeBatchTransferFrom( address from, address to, uint256[] memory ids, uint256[] memory amounts, bytes memory data ) public virtual override { require( from == _msgSender() || isApprovedForAll(from, _msgSender()), "ERC1155: caller is not token owner or approved" ); _safeBatchTransferFrom(from, to, ids, amounts, data); } function _safeTransferFrom( address from, address to, uint256 id, uint256 amount, bytes memory data ) internal virtual { require(to != address(0), "ERC1155: transfer to the zero address"); address operator = _msgSender(); uint256[] memory ids = _asSingletonArray(id); uint256[] memory amounts = _asSingletonArray(amount); _beforeTokenTransfer(operator, from, to, ids, amounts, data); uint256 fromBalance = _balances[id][from]; require(fromBalance >= amount, "ERC1155: insufficient balance for transfer"); unchecked { _balances[id][from] = fromBalance - amount; } _balances[id][to] += amount; emit TransferSingle(operator, from, to, id, amount); _afterTokenTransfer(operator, from, to, ids, amounts, data); _doSafeTransferAcceptanceCheck(operator, from, to, id, amount, data); } function _safeBatchTransferFrom( address from, address to, uint256[] memory ids, uint256[] memory amounts, bytes memory data ) internal virtual { require(ids.length == amounts.length, "ERC1155: ids and amounts length mismatch"); require(to != address(0), "ERC1155: transfer to the zero address"); address operator = _msgSender(); _beforeTokenTransfer(operator, from, to, ids, amounts, data); for (uint256 i = 0; i < ids.length; ++i) { uint256 id = ids[i]; uint256 amount = amounts[i]; uint256 fromBalance = _balances[id][from]; require(fromBalance >= amount, "ERC1155: insufficient balance for transfer"); unchecked { _balances[id][from] = fromBalance - amount; } _balances[id][to] += amount; } emit TransferBatch(operator, from, to, ids, amounts); _afterTokenTransfer(operator, from, to, ids, amounts, data); _doSafeBatchTransferAcceptanceCheck(operator, from, to, ids, amounts, data); } function _setURI(string memory newuri) internal virtual { _uri = newuri; } function _mint(address to, uint256 id, uint256 amount, bytes memory data) internal virtual { require(to != address(0), "ERC1155: mint to the zero address"); address operator = _msgSender(); uint256[] memory ids = _asSingletonArray(id); uint256[] memory amounts = _asSingletonArray(amount); _beforeTokenTransfer(operator, address(0), to, ids, amounts, data); _balances[id][to] += amount; emit TransferSingle(operator, address(0), to, id, amount); _afterTokenTransfer(operator, address(0), to, ids, amounts, data); _doSafeTransferAcceptanceCheck(operator, address(0), to, id, amount, data); } function _mintBatch( address to, uint256[] memory ids, uint256[] memory amounts, bytes memory data ) internal virtual { require(to != address(0), "ERC1155: mint to the zero address"); require(ids.length == amounts.length, "ERC1155: ids and amounts length mismatch"); address operator = _msgSender(); _beforeTokenTransfer(operator, address(0), to, ids, amounts, data); for (uint256 i = 0; i < ids.length; i++) { _balances[ids[i]][to] += amounts[i]; } emit TransferBatch(operator, address(0), to, ids, amounts); _afterTokenTransfer(operator, address(0), to, ids, amounts, data); _doSafeBatchTransferAcceptanceCheck(operator, address(0), to, ids, amounts, data); } function _burn(address from, uint256 id, uint256 amount) internal virtual { require(from != address(0), "ERC1155: burn from the zero address"); address operator = _msgSender(); uint256[] memory ids = _asSingletonArray(id); uint256[] memory amounts = _asSingletonArray(amount); _beforeTokenTransfer(operator, from, address(0), ids, amounts, ""); uint256 fromBalance = _balances[id][from]; require(fromBalance >= amount, "ERC1155: burn amount exceeds balance"); unchecked { _balances[id][from] = fromBalance - amount; } emit TransferSingle(operator, from, address(0), id, amount); _afterTokenTransfer(operator, from, address(0), ids, amounts, ""); } function _burnBatch(address from, uint256[] memory ids, uint256[] memory amounts) internal virtual { require(from != address(0), "ERC1155: burn from the zero address"); require(ids.length == amounts.length, "ERC1155: ids and amounts length mismatch"); address operator = _msgSender(); _beforeTokenTransfer(operator, from, address(0), ids, amounts, ""); for (uint256 i = 0; i < ids.length; i++) { uint256 id = ids[i]; uint256 amount = amounts[i]; uint256 fromBalance = _balances[id][from]; require(fromBalance >= amount, "ERC1155: burn amount exceeds balance"); unchecked { _balances[id][from] = fromBalance - amount; } } emit TransferBatch(operator, from, address(0), ids, amounts); _afterTokenTransfer(operator, from, address(0), ids, amounts, ""); } function _setApprovalForAll(address owner, address operator, bool approved) internal virtual { require(owner != operator, "ERC1155: setting approval status for self"); _operatorApprovals[owner][operator] = approved; emit ApprovalForAll(owner, operator, approved); } function _beforeTokenTransfer( address operator, address from, address to, uint256[] memory ids, uint256[] memory amounts, bytes memory data ) internal virtual {} function _afterTokenTransfer( address operator, address from, address to, uint256[] memory ids, uint256[] memory amounts, bytes memory data ) internal virtual {} function _doSafeTransferAcceptanceCheck( address operator, address from, address to, uint256 id, uint256 amount, bytes memory data ) private { if (to.isContract()) { try IERC1155Receiver(to).onERC1155Received(operator, from, id, amount, data) returns (bytes4 response) { if (response != IERC1155Receiver.onERC1155Received.selector) { revert("ERC1155: ERC1155Receiver rejected tokens"); } } catch Error(string memory reason) { revert(reason); } catch { revert("ERC1155: transfer to non-ERC1155Receiver implementer"); } } } function _doSafeBatchTransferAcceptanceCheck( address operator, address from, address to, uint256[] memory ids, uint256[] memory amounts, bytes memory data ) private { if (to.isContract()) { try IERC1155Receiver(to).onERC1155BatchReceived(operator, from, ids, amounts, data) returns ( bytes4 response ) { if (response != IERC1155Receiver.onERC1155BatchReceived.selector) { revert("ERC1155: ERC1155Receiver rejected tokens"); } } catch Error(string memory reason) { revert(reason); } catch { revert("ERC1155: transfer to non-ERC1155Receiver implementer"); } } } function _asSingletonArray(uint256 element) private pure returns (uint256[] memory) { uint256[] memory array = new uint256[](1); array[0] = element; return array; } } 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 the zero address"); _setOwner(newOwner); } function _setOwner(address newOwner) private { address oldOwner = _owner; _owner = newOwner; emit OwnershipTransferred(oldOwner, newOwner); } } interface ICandle { function transferFrom(address from, address to, uint256 amount) external; function balanceOf(address sender) external view returns (uint256); } interface ERC721 is IERC165 { event Transfer(address indexed _from, address indexed _to, uint256 indexed _tokenId); event Approval(address indexed _owner, address indexed _approved, uint256 indexed _tokenId); event ApprovalForAll(address indexed _owner, address indexed _operator, bool _approved); function balanceOf(address _owner) external view returns (uint256); function ownerOf(uint256 _tokenId) external view returns (address); } contract ShrineCrystals is ERC1155, Ownable { string public name = "Shrine Crystals"; string public symbol = "SC"; uint256 private _totalSupply; function totalSupply() public view virtual returns (uint256) { return _totalSupply; } struct Crystal { uint256 id; // the tokenId of the Crystal string name; // the name of the Crystal string description; // a short description of the crystal string imgdata; uint256 totalSupply; } mapping (uint256 => Crystal) public crystalById; function getCrystal(uint256 id) public view returns (Crystal memory) { Crystal memory crys = crystalById[id]; return crys; } function _addCrystal( uint256 id, string memory _name, string memory description, string memory imgdata ) internal { require(id > 0, "id cannot be zero"); require(crystalById[id].id == 0, "crystal with matching id already exists"); crystalById[id] = Crystal( id, _name, description, imgdata, 0); } function addCrystal( uint256 id, string memory _name, string memory description, string memory imgdata ) public onlyOwner { _addCrystal( id, _name, description, imgdata); } //---INTERNAL Control Functions ------------------------------------------------ function _changeCrystal_Name( uint256 index, string memory _name ) internal { Crystal memory theCrystal = crystalById[index]; crystalById[index] = Crystal( theCrystal.id, _name, theCrystal.description, theCrystal.imgdata, theCrystal.totalSupply ); } function _changeCrystal_Description( uint256 index, string memory description ) internal { Crystal memory theCrystal = crystalById[index]; crystalById[index] = Crystal( index, theCrystal.name, description, theCrystal.imgdata, theCrystal.totalSupply ); } function _changeCrystal_ImgData( uint256 index, string memory imgdata ) internal { Crystal memory theCrystal = crystalById[index]; crystalById[index] = Crystal( index, theCrystal.name, theCrystal.description, imgdata, theCrystal.totalSupply ); } //---EXTERNAL Control Functions ------------------------------------------------ function changeCrystal_Name( uint256 index, string memory _name ) public onlyOwner { _changeCrystal_Name(index, _name); } function changeCrystal_Description( uint256 index, string memory description ) public onlyOwner { _changeCrystal_Description(index, description); } function changeCrystal_ImgData( uint256 index, string memory imgdata ) public onlyOwner { _changeCrystal_ImgData(index, imgdata); } // ------------------------------------------------------------------------------ constructor() Ownable() { } function jsonify(uint256 tokenId) internal view returns (string memory) { Crystal memory theCrystal = crystalById[tokenId]; string memory json = Base64.encode(bytes(string(abi.encodePacked( '{"name": "', theCrystal.name, '", "description": "', theCrystal.description, '", "image": "', theCrystal.imgdata, '"}')))); return string(abi.encodePacked('data:application/json;base64,', json)); } function uri(uint256 id) public view override returns (string memory) { return jsonify(id); } function mintTo(uint256 id, uint256 amtToMint, address to) public onlyOwner { //safeTransfer amtToMint*rate of id to burnAddress Crystal memory theCrystal = crystalById[id]; require(theCrystal.id != 0, "invalid crystal"); bytes memory data = bytes(""); //mint amtToMint of to _mint(to, id, amtToMint, data); _totalSupply += amtToMint; theCrystal.totalSupply += amtToMint; } } library Base64 { bytes internal constant TABLE = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"; /// @notice Encodes some bytes to the base64 representation function encode(bytes memory data) internal pure returns (string memory) { uint256 len = data.length; if (len == 0) return ""; // multiply by 4/3 rounded up uint256 encodedLen = 4 * ((len + 2) / 3); // Add some extra buffer at the end bytes memory result = new bytes(encodedLen + 32); bytes memory table = TABLE; assembly { let tablePtr := add(table, 1) let resultPtr := add(result, 32) for { let i := 0 } lt(i, len) { } { i := add(i, 3) let input := and(mload(add(data, i)), 0xffffff) let out := mload(add(tablePtr, and(shr(18, input), 0x3F))) out := shl(8, out) out := add(out, and(mload(add(tablePtr, and(shr(12, input), 0x3F))), 0xFF)) out := shl(8, out) out := add(out, and(mload(add(tablePtr, and(shr(6, input), 0x3F))), 0xFF)) out := shl(8, out) out := add(out, and(mload(add(tablePtr, and(input, 0x3F))), 0xFF)) out := shl(224, out) mstore(resultPtr, out) resultPtr := add(resultPtr, 4) } switch mod(len, 3) case 1 { mstore(sub(resultPtr, 2), shl(240, 0x3d3d)) } case 2 { mstore(sub(resultPtr, 1), shl(248, 0x3d)) } mstore(result, encodedLen) } return string(result); } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
Contract ABI
API[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":true,"internalType":"address","name":"operator","type":"address"},{"indexed":false,"internalType":"bool","name":"approved","type":"bool"}],"name":"ApprovalForAll","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"operator","type":"address"},{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256[]","name":"ids","type":"uint256[]"},{"indexed":false,"internalType":"uint256[]","name":"values","type":"uint256[]"}],"name":"TransferBatch","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"operator","type":"address"},{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"id","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"TransferSingle","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"string","name":"value","type":"string"},{"indexed":true,"internalType":"uint256","name":"id","type":"uint256"}],"name":"URI","type":"event"},{"inputs":[{"internalType":"uint256","name":"id","type":"uint256"},{"internalType":"string","name":"_name","type":"string"},{"internalType":"string","name":"description","type":"string"},{"internalType":"string","name":"imgdata","type":"string"}],"name":"addCrystal","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"id","type":"uint256"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"},{"internalType":"uint256[]","name":"ids","type":"uint256[]"}],"name":"balanceOfBatch","outputs":[{"internalType":"uint256[]","name":"","type":"uint256[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"index","type":"uint256"},{"internalType":"string","name":"description","type":"string"}],"name":"changeCrystal_Description","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"index","type":"uint256"},{"internalType":"string","name":"imgdata","type":"string"}],"name":"changeCrystal_ImgData","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"index","type":"uint256"},{"internalType":"string","name":"_name","type":"string"}],"name":"changeCrystal_Name","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"crystalById","outputs":[{"internalType":"uint256","name":"id","type":"uint256"},{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"description","type":"string"},{"internalType":"string","name":"imgdata","type":"string"},{"internalType":"uint256","name":"totalSupply","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"id","type":"uint256"}],"name":"getCrystal","outputs":[{"components":[{"internalType":"uint256","name":"id","type":"uint256"},{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"description","type":"string"},{"internalType":"string","name":"imgdata","type":"string"},{"internalType":"uint256","name":"totalSupply","type":"uint256"}],"internalType":"struct ShrineCrystals.Crystal","name":"","type":"tuple"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"address","name":"operator","type":"address"}],"name":"isApprovedForAll","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"id","type":"uint256"},{"internalType":"uint256","name":"amtToMint","type":"uint256"},{"internalType":"address","name":"to","type":"address"}],"name":"mintTo","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256[]","name":"ids","type":"uint256[]"},{"internalType":"uint256[]","name":"amounts","type":"uint256[]"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"safeBatchTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"id","type":"uint256"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"safeTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"bool","name":"approved","type":"bool"}],"name":"setApprovalForAll","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"id","type":"uint256"}],"name":"uri","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"}]
Contract Creation Code
60c0604052600f60809081526e536872696e65204372797374616c7360881b60a05260049062000030908262000170565b50604080518082019091526002815261534360f01b602082015260059062000059908262000170565b503480156200006757600080fd5b50620000733362000079565b6200023c565b600380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b634e487b7160e01b600052604160045260246000fd5b600181811c90821680620000f657607f821691505b6020821081036200011757634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200016b57600081815260208120601f850160051c81016020861015620001465750805b601f850160051c820191505b81811015620001675782815560010162000152565b5050505b505050565b81516001600160401b038111156200018c576200018c620000cb565b620001a4816200019d8454620000e1565b846200011d565b602080601f831160018114620001dc5760008415620001c35750858301515b600019600386901b1c1916600185901b17855562000167565b600085815260208120601f198616915b828110156200020d57888601518255948401946001909101908401620001ec565b50858210156200022c5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b6138ec806200024c6000396000f3fe608060405234801561001057600080fd5b50600436106101765760003560e01c8063715018a6116100d8578063a22cb4651161008c578063e985e9c511610066578063e985e9c514610317578063f242432a14610360578063f2fde38b1461037357600080fd5b8063a22cb465146102cd578063bff5365a146102e0578063e822eff6146102f357600080fd5b80639374a0e9116100bd5780639374a0e91461029257806395d89b41146102a55780639c2f7a43146102ad57600080fd5b8063715018a6146102625780638da5cb5b1461026a57600080fd5b80632056877d1161012f5780633b0eeee8116101145780633b0eeee81461021c5780634e1273f41461022f5780636190e3a81461024f57600080fd5b80632056877d146101f45780632eb2c2d61461020957600080fd5b806306fdde031161016057806306fdde03146101c45780630e89341c146101d957806318160ddd146101ec57600080fd5b8062fdd58e1461017b57806301ffc9a7146101a1575b600080fd5b61018e610189366004612b74565b610386565b6040519081526020015b60405180910390f35b6101b46101af366004612bcc565b61044c565b6040519015158152602001610198565b6101cc61052f565b6040516101989190612c5e565b6101cc6101e7366004612c71565b6105bd565b60065461018e565b610207610202366004612d96565b6105c8565b005b610207610217366004612ebd565b610641565b61020761022a366004612f67565b6106f0565b61024261023d366004612fae565b610765565b60405161019891906130aa565b61020761025d3660046130bd565b6108a3565b610207610b9a565b60035460405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610198565b6102076102a0366004612f67565b610c0d565b6101cc610c7e565b6102c06102bb366004612c71565b610c8b565b60405161019891906130f2565b6102076102db366004613189565b610eb0565b6102076102ee366004612f67565b610ebb565b610306610301366004612c71565b610f2c565b6040516101989594939291906131c5565b6101b4610325366004613217565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260016020908152604080832093909416825291909152205460ff1690565b61020761036e36600461324a565b6110f3565b6102076103813660046132af565b61119b565b600073ffffffffffffffffffffffffffffffffffffffff83166104165760405162461bcd60e51b815260206004820152602a60248201527f455243313135353a2061646472657373207a65726f206973206e6f742061207660448201527f616c6964206f776e65720000000000000000000000000000000000000000000060648201526084015b60405180910390fd5b5060008181526020818152604080832073ffffffffffffffffffffffffffffffffffffffff861684529091529020545b92915050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167fd9b67a260000000000000000000000000000000000000000000000000000000014806104df57507fffffffff0000000000000000000000000000000000000000000000000000000082167f0e89341c00000000000000000000000000000000000000000000000000000000145b8061044657507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff00000000000000000000000000000000000000000000000000000000831614610446565b6004805461053c906132ca565b80601f0160208091040260200160405190810160405280929190818152602001828054610568906132ca565b80156105b55780601f1061058a576101008083540402835291602001916105b5565b820191906000526020600020905b81548152906001019060200180831161059857829003601f168201915b505050505081565b606061044682611297565b60035473ffffffffffffffffffffffffffffffffffffffff16331461062f5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161040d565b61063b848484846114e3565b50505050565b73ffffffffffffffffffffffffffffffffffffffff851633148061066a575061066a8533610325565b6106dc5760405162461bcd60e51b815260206004820152602e60248201527f455243313135353a2063616c6c6572206973206e6f7420746f6b656e206f776e60448201527f6572206f7220617070726f766564000000000000000000000000000000000000606482015260840161040d565b6106e98585858585611641565b5050505050565b60035473ffffffffffffffffffffffffffffffffffffffff1633146107575760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161040d565b610761828261192d565b5050565b606081518351146107de5760405162461bcd60e51b815260206004820152602960248201527f455243313135353a206163636f756e747320616e6420696473206c656e67746860448201527f206d69736d617463680000000000000000000000000000000000000000000000606482015260840161040d565b6000835167ffffffffffffffff8111156107fa576107fa612c8a565b604051908082528060200260200182016040528015610823578160200160208202803683370190505b50905060005b845181101561089b5761086e8582815181106108475761084761331d565b60200260200101518583815181106108615761086161331d565b6020026020010151610386565b8282815181106108805761088061331d565b60209081029190910101526108948161337b565b9050610829565b509392505050565b60035473ffffffffffffffffffffffffffffffffffffffff16331461090a5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161040d565b6000600760008581526020019081526020016000206040518060a001604052908160008201548152602001600182018054610944906132ca565b80601f0160208091040260200160405190810160405280929190818152602001828054610970906132ca565b80156109bd5780601f10610992576101008083540402835291602001916109bd565b820191906000526020600020905b8154815290600101906020018083116109a057829003601f168201915b505050505081526020016002820180546109d6906132ca565b80601f0160208091040260200160405190810160405280929190818152602001828054610a02906132ca565b8015610a4f5780601f10610a2457610100808354040283529160200191610a4f565b820191906000526020600020905b815481529060010190602001808311610a3257829003601f168201915b50505050508152602001600382018054610a68906132ca565b80601f0160208091040260200160405190810160405280929190818152602001828054610a94906132ca565b8015610ae15780601f10610ab657610100808354040283529160200191610ae1565b820191906000526020600020905b815481529060010190602001808311610ac457829003601f168201915b5050505050815260200160048201548152505090508060000151600003610b4a5760405162461bcd60e51b815260206004820152600f60248201527f696e76616c6964206372797374616c0000000000000000000000000000000000604482015260640161040d565b604080516020810190915260008152610b6583868684611bbb565b8360066000828254610b7791906133b3565b925050819055508382608001818151610b9091906133b3565b9052505050505050565b60035473ffffffffffffffffffffffffffffffffffffffff163314610c015760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161040d565b610c0b6000611d12565b565b60035473ffffffffffffffffffffffffffffffffffffffff163314610c745760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161040d565b6107618282611d89565b6005805461053c906132ca565b610cbd6040518060a0016040528060008152602001606081526020016060815260200160608152602001600081525090565b6000600760008481526020019081526020016000206040518060a001604052908160008201548152602001600182018054610cf7906132ca565b80601f0160208091040260200160405190810160405280929190818152602001828054610d23906132ca565b8015610d705780601f10610d4557610100808354040283529160200191610d70565b820191906000526020600020905b815481529060010190602001808311610d5357829003601f168201915b50505050508152602001600282018054610d89906132ca565b80601f0160208091040260200160405190810160405280929190818152602001828054610db5906132ca565b8015610e025780601f10610dd757610100808354040283529160200191610e02565b820191906000526020600020905b815481529060010190602001808311610de557829003601f168201915b50505050508152602001600382018054610e1b906132ca565b80601f0160208091040260200160405190810160405280929190818152602001828054610e47906132ca565b8015610e945780601f10610e6957610100808354040283529160200191610e94565b820191906000526020600020905b815481529060010190602001808311610e7757829003601f168201915b5050509183525050600491909101546020909101529392505050565b610761338383611fcd565b60035473ffffffffffffffffffffffffffffffffffffffff163314610f225760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161040d565b6107618282612106565b60076020526000908152604090208054600182018054919291610f4e906132ca565b80601f0160208091040260200160405190810160405280929190818152602001828054610f7a906132ca565b8015610fc75780601f10610f9c57610100808354040283529160200191610fc7565b820191906000526020600020905b815481529060010190602001808311610faa57829003601f168201915b505050505090806002018054610fdc906132ca565b80601f0160208091040260200160405190810160405280929190818152602001828054611008906132ca565b80156110555780601f1061102a57610100808354040283529160200191611055565b820191906000526020600020905b81548152906001019060200180831161103857829003601f168201915b50505050509080600301805461106a906132ca565b80601f0160208091040260200160405190810160405280929190818152602001828054611096906132ca565b80156110e35780601f106110b8576101008083540402835291602001916110e3565b820191906000526020600020905b8154815290600101906020018083116110c657829003601f168201915b5050505050908060040154905085565b73ffffffffffffffffffffffffffffffffffffffff851633148061111c575061111c8533610325565b61118e5760405162461bcd60e51b815260206004820152602e60248201527f455243313135353a2063616c6c6572206973206e6f7420746f6b656e206f776e60448201527f6572206f7220617070726f766564000000000000000000000000000000000000606482015260840161040d565b6106e9858585858561234a565b60035473ffffffffffffffffffffffffffffffffffffffff1633146112025760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161040d565b73ffffffffffffffffffffffffffffffffffffffff811661128b5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f6464726573730000000000000000000000000000000000000000000000000000606482015260840161040d565b61129481611d12565b50565b6000818152600760209081526040808320815160a081019092528054825260018101805460609594840191906112cc906132ca565b80601f01602080910402602001604051908101604052809291908181526020018280546112f8906132ca565b80156113455780601f1061131a57610100808354040283529160200191611345565b820191906000526020600020905b81548152906001019060200180831161132857829003601f168201915b5050505050815260200160028201805461135e906132ca565b80601f016020809104026020016040519081016040528092919081815260200182805461138a906132ca565b80156113d75780601f106113ac576101008083540402835291602001916113d7565b820191906000526020600020905b8154815290600101906020018083116113ba57829003601f168201915b505050505081526020016003820180546113f0906132ca565b80601f016020809104026020016040519081016040528092919081815260200182805461141c906132ca565b80156114695780601f1061143e57610100808354040283529160200191611469565b820191906000526020600020905b81548152906001019060200180831161144c57829003601f168201915b50505050508152602001600482015481525050905060006114b88260200151836040015184606001516040516020016114a4939291906133c6565b604051602081830303815290604052612554565b9050806040516020016114cb91906134b0565b60405160208183030381529060405292505050919050565b600084116115335760405162461bcd60e51b815260206004820152601160248201527f69642063616e6e6f74206265207a65726f000000000000000000000000000000604482015260640161040d565b600084815260076020526040902054156115b55760405162461bcd60e51b815260206004820152602760248201527f6372797374616c2077697468206d61746368696e6720696420616c726561647960448201527f2065786973747300000000000000000000000000000000000000000000000000606482015260840161040d565b6040805160a081018252858152602080820186815282840186905260608301859052600060808401819052888152600790925292902081518155915190919060018201906116039082613540565b50604082015160028201906116189082613540565b506060820151600382019061162d9082613540565b506080820151816004015590505050505050565b81518351146116b85760405162461bcd60e51b815260206004820152602860248201527f455243313135353a2069647320616e6420616d6f756e7473206c656e6774682060448201527f6d69736d61746368000000000000000000000000000000000000000000000000606482015260840161040d565b73ffffffffffffffffffffffffffffffffffffffff84166117415760405162461bcd60e51b815260206004820152602560248201527f455243313135353a207472616e7366657220746f20746865207a65726f20616460448201527f6472657373000000000000000000000000000000000000000000000000000000606482015260840161040d565b3360005b84518110156118985760008582815181106117625761176261331d565b6020026020010151905060008583815181106117805761178061331d565b6020908102919091018101516000848152808352604080822073ffffffffffffffffffffffffffffffffffffffff8e1683529093529190912054909150818110156118335760405162461bcd60e51b815260206004820152602a60248201527f455243313135353a20696e73756666696369656e742062616c616e636520666f60448201527f72207472616e7366657200000000000000000000000000000000000000000000606482015260840161040d565b60008381526020818152604080832073ffffffffffffffffffffffffffffffffffffffff8e8116855292528083208585039055908b1682528120805484929061187d9084906133b3565b92505081905550505050806118919061337b565b9050611745565b508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb878760405161190f92919061365a565b60405180910390a4611925818787878787612731565b505050505050565b6000600760008481526020019081526020016000206040518060a001604052908160008201548152602001600182018054611967906132ca565b80601f0160208091040260200160405190810160405280929190818152602001828054611993906132ca565b80156119e05780601f106119b5576101008083540402835291602001916119e0565b820191906000526020600020905b8154815290600101906020018083116119c357829003601f168201915b505050505081526020016002820180546119f9906132ca565b80601f0160208091040260200160405190810160405280929190818152602001828054611a25906132ca565b8015611a725780601f10611a4757610100808354040283529160200191611a72565b820191906000526020600020905b815481529060010190602001808311611a5557829003601f168201915b50505050508152602001600382018054611a8b906132ca565b80601f0160208091040260200160405190810160405280929190818152602001828054611ab7906132ca565b8015611b045780601f10611ad957610100808354040283529160200191611b04565b820191906000526020600020905b815481529060010190602001808311611ae757829003601f168201915b5050505050815260200160048201548152505090506040518060a001604052808481526020018260200151815260200183815260200182606001518152602001826080015181525060076000858152602001908152602001600020600082015181600001556020820151816001019081611b7e9190613540565b5060408201516002820190611b939082613540565b5060608201516003820190611ba89082613540565b5060808201518160040155905050505050565b73ffffffffffffffffffffffffffffffffffffffff8416611c445760405162461bcd60e51b815260206004820152602160248201527f455243313135353a206d696e7420746f20746865207a65726f2061646472657360448201527f7300000000000000000000000000000000000000000000000000000000000000606482015260840161040d565b336000611c508561296d565b90506000611c5d8561296d565b905060008681526020818152604080832073ffffffffffffffffffffffffffffffffffffffff8b16845290915281208054879290611c9c9084906133b3565b9091555050604080518781526020810187905273ffffffffffffffffffffffffffffffffffffffff808a1692600092918716917fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f62910160405180910390a4611d09836000898989896129b8565b50505050505050565b6003805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6000600760008481526020019081526020016000206040518060a001604052908160008201548152602001600182018054611dc3906132ca565b80601f0160208091040260200160405190810160405280929190818152602001828054611def906132ca565b8015611e3c5780601f10611e1157610100808354040283529160200191611e3c565b820191906000526020600020905b815481529060010190602001808311611e1f57829003601f168201915b50505050508152602001600282018054611e55906132ca565b80601f0160208091040260200160405190810160405280929190818152602001828054611e81906132ca565b8015611ece5780601f10611ea357610100808354040283529160200191611ece565b820191906000526020600020905b815481529060010190602001808311611eb157829003601f168201915b50505050508152602001600382018054611ee7906132ca565b80601f0160208091040260200160405190810160405280929190818152602001828054611f13906132ca565b8015611f605780601f10611f3557610100808354040283529160200191611f60565b820191906000526020600020905b815481529060010190602001808311611f4357829003601f168201915b5050509183525050600491909101546020918201526040805160a0810182528681528383015181840190815282850151828401526060820187905260808086015190830152600088815260079094529190922082518155905192935090916001820190611b7e9082613540565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361206e5760405162461bcd60e51b815260206004820152602960248201527f455243313135353a2073657474696e6720617070726f76616c2073746174757360448201527f20666f722073656c660000000000000000000000000000000000000000000000606482015260840161040d565b73ffffffffffffffffffffffffffffffffffffffff83811660008181526001602090815260408083209487168084529482529182902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b6000600760008481526020019081526020016000206040518060a001604052908160008201548152602001600182018054612140906132ca565b80601f016020809104026020016040519081016040528092919081815260200182805461216c906132ca565b80156121b95780601f1061218e576101008083540402835291602001916121b9565b820191906000526020600020905b81548152906001019060200180831161219c57829003601f168201915b505050505081526020016002820180546121d2906132ca565b80601f01602080910402602001604051908101604052809291908181526020018280546121fe906132ca565b801561224b5780601f106122205761010080835404028352916020019161224b565b820191906000526020600020905b81548152906001019060200180831161222e57829003601f168201915b50505050508152602001600382018054612264906132ca565b80601f0160208091040260200160405190810160405280929190818152602001828054612290906132ca565b80156122dd5780601f106122b2576101008083540402835291602001916122dd565b820191906000526020600020905b8154815290600101906020018083116122c057829003601f168201915b5050509183525050600491909101546020918201526040805160a0810182528351815280830186815282850151828401526060808601519083015260808086015190830152600088815260079094529190922082518155905192935090916001820190611b7e9082613540565b73ffffffffffffffffffffffffffffffffffffffff84166123d35760405162461bcd60e51b815260206004820152602560248201527f455243313135353a207472616e7366657220746f20746865207a65726f20616460448201527f6472657373000000000000000000000000000000000000000000000000000000606482015260840161040d565b3360006123df8561296d565b905060006123ec8561296d565b905060008681526020818152604080832073ffffffffffffffffffffffffffffffffffffffff8c168452909152902054858110156124925760405162461bcd60e51b815260206004820152602a60248201527f455243313135353a20696e73756666696369656e742062616c616e636520666f60448201527f72207472616e7366657200000000000000000000000000000000000000000000606482015260840161040d565b60008781526020818152604080832073ffffffffffffffffffffffffffffffffffffffff8d8116855292528083208985039055908a168252812080548892906124dc9084906133b3565b9091555050604080518881526020810188905273ffffffffffffffffffffffffffffffffffffffff808b16928c821692918816917fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f62910160405180910390a4612549848a8a8a8a8a6129b8565b505050505050505050565b80516060906000819003612578575050604080516020810190915260008152919050565b600060036125878360026133b3565b6125919190613688565b61259c9060046136c3565b905060006125ab8260206133b3565b67ffffffffffffffff8111156125c3576125c3612c8a565b6040519080825280601f01601f1916602001820160405280156125ed576020820181803683370190505b5090506000604051806060016040528060408152602001613877604091399050600181016020830160005b86811015612679576003818a01810151603f601282901c8116860151600c83901c8216870151600684901c831688015192909316870151600891821b60ff94851601821b92841692909201901b91160160e01b835260049092019101612618565b50600386066001811461269357600281146126dd57612723565b7f3d3d0000000000000000000000000000000000000000000000000000000000007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe830152612723565b7f3d000000000000000000000000000000000000000000000000000000000000007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8301525b505050918152949350505050565b73ffffffffffffffffffffffffffffffffffffffff84163b15611925576040517fbc197c8100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff85169063bc197c81906127a890899089908890889088906004016136da565b6020604051808303816000875af1925050508015612801575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682019092526127fe91810190613745565b60015b6128b65761280d613762565b806308c379a003612846575061282161377e565b8061282c5750612848565b8060405162461bcd60e51b815260040161040d9190612c5e565b505b60405162461bcd60e51b815260206004820152603460248201527f455243313135353a207472616e7366657220746f206e6f6e2d4552433131353560448201527f526563656976657220696d706c656d656e746572000000000000000000000000606482015260840161040d565b7fffffffff0000000000000000000000000000000000000000000000000000000081167fbc197c810000000000000000000000000000000000000000000000000000000014611d095760405162461bcd60e51b815260206004820152602860248201527f455243313135353a204552433131353552656365697665722072656a6563746560448201527f6420746f6b656e73000000000000000000000000000000000000000000000000606482015260840161040d565b604080516001808252818301909252606091600091906020808301908036833701905050905082816000815181106129a7576129a761331d565b602090810291909101015292915050565b73ffffffffffffffffffffffffffffffffffffffff84163b15611925576040517ff23a6e6100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff85169063f23a6e6190612a2f9089908990889088908890600401613826565b6020604051808303816000875af1925050508015612a88575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201909252612a8591810190613745565b60015b612a945761280d613762565b7fffffffff0000000000000000000000000000000000000000000000000000000081167ff23a6e610000000000000000000000000000000000000000000000000000000014611d095760405162461bcd60e51b815260206004820152602860248201527f455243313135353a204552433131353552656365697665722072656a6563746560448201527f6420746f6b656e73000000000000000000000000000000000000000000000000606482015260840161040d565b803573ffffffffffffffffffffffffffffffffffffffff81168114612b6f57600080fd5b919050565b60008060408385031215612b8757600080fd5b612b9083612b4b565b946020939093013593505050565b7fffffffff000000000000000000000000000000000000000000000000000000008116811461129457600080fd5b600060208284031215612bde57600080fd5b8135612be981612b9e565b9392505050565b60005b83811015612c0b578181015183820152602001612bf3565b50506000910152565b60008151808452612c2c816020860160208601612bf0565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b602081526000612be96020830184612c14565b600060208284031215612c8357600080fd5b5035919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f830116810181811067ffffffffffffffff82111715612cfd57612cfd612c8a565b6040525050565b600082601f830112612d1557600080fd5b813567ffffffffffffffff811115612d2f57612d2f612c8a565b604051612d6460207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8501160182612cb9565b818152846020838601011115612d7957600080fd5b816020850160208301376000918101602001919091529392505050565b60008060008060808587031215612dac57600080fd5b84359350602085013567ffffffffffffffff80821115612dcb57600080fd5b612dd788838901612d04565b94506040870135915080821115612ded57600080fd5b612df988838901612d04565b93506060870135915080821115612e0f57600080fd5b50612e1c87828801612d04565b91505092959194509250565b600067ffffffffffffffff821115612e4257612e42612c8a565b5060051b60200190565b600082601f830112612e5d57600080fd5b81356020612e6a82612e28565b604051612e778282612cb9565b83815260059390931b8501820192828101915086841115612e9757600080fd5b8286015b84811015612eb25780358352918301918301612e9b565b509695505050505050565b600080600080600060a08688031215612ed557600080fd5b612ede86612b4b565b9450612eec60208701612b4b565b9350604086013567ffffffffffffffff80821115612f0957600080fd5b612f1589838a01612e4c565b94506060880135915080821115612f2b57600080fd5b612f3789838a01612e4c565b93506080880135915080821115612f4d57600080fd5b50612f5a88828901612d04565b9150509295509295909350565b60008060408385031215612f7a57600080fd5b82359150602083013567ffffffffffffffff811115612f9857600080fd5b612fa485828601612d04565b9150509250929050565b60008060408385031215612fc157600080fd5b823567ffffffffffffffff80821115612fd957600080fd5b818501915085601f830112612fed57600080fd5b81356020612ffa82612e28565b6040516130078282612cb9565b83815260059390931b850182019282810191508984111561302757600080fd5b948201945b8386101561304c5761303d86612b4b565b8252948201949082019061302c565b9650508601359250508082111561306257600080fd5b50612fa485828601612e4c565b600081518084526020808501945080840160005b8381101561309f57815187529582019590820190600101613083565b509495945050505050565b602081526000612be9602083018461306f565b6000806000606084860312156130d257600080fd5b83359250602084013591506130e960408501612b4b565b90509250925092565b60208152815160208201526000602083015160a0604084015261311860c0840182612c14565b905060408401517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0808584030160608601526131548383612c14565b92506060860151915080858403016080860152506131728282612c14565b915050608084015160a08401528091505092915050565b6000806040838503121561319c57600080fd5b6131a583612b4b565b9150602083013580151581146131ba57600080fd5b809150509250929050565b85815260a0602082015260006131de60a0830187612c14565b82810360408401526131f08187612c14565b905082810360608401526132048186612c14565b9150508260808301529695505050505050565b6000806040838503121561322a57600080fd5b61323383612b4b565b915061324160208401612b4b565b90509250929050565b600080600080600060a0868803121561326257600080fd5b61326b86612b4b565b945061327960208701612b4b565b93506040860135925060608601359150608086013567ffffffffffffffff8111156132a357600080fd5b612f5a88828901612d04565b6000602082840312156132c157600080fd5b612be982612b4b565b600181811c908216806132de57607f821691505b602082108103613317577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036133ac576133ac61334c565b5060010190565b808201808211156104465761044661334c565b7f7b226e616d65223a2022000000000000000000000000000000000000000000008152600084516133fe81600a850160208901612bf0565b7f222c20226465736372697074696f6e223a202200000000000000000000000000600a91840191820152845161343b81601d840160208901612bf0565b7f222c2022696d616765223a202200000000000000000000000000000000000000601d9290910191820152835161347981602a840160208801612bf0565b7f227d000000000000000000000000000000000000000000000000000000000000602a9290910191820152602c0195945050505050565b7f646174613a6170706c69636174696f6e2f6a736f6e3b6261736536342c0000008152600082516134e881601d850160208701612bf0565b91909101601d0192915050565b601f82111561353b57600081815260208120601f850160051c8101602086101561351c5750805b601f850160051c820191505b8181101561192557828155600101613528565b505050565b815167ffffffffffffffff81111561355a5761355a612c8a565b61356e8161356884546132ca565b846134f5565b602080601f8311600181146135c1576000841561358b5750858301515b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600386901b1c1916600185901b178555611925565b6000858152602081207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08616915b8281101561360e578886015182559484019460019091019084016135ef565b508582101561364a57878501517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600388901b60f8161c191681555b5050505050600190811b01905550565b60408152600061366d604083018561306f565b828103602084015261367f818561306f565b95945050505050565b6000826136be577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b80820281158282048414176104465761044661334c565b600073ffffffffffffffffffffffffffffffffffffffff808816835280871660208401525060a0604083015261371360a083018661306f565b8281036060840152613725818661306f565b905082810360808401526137398185612c14565b98975050505050505050565b60006020828403121561375757600080fd5b8151612be981612b9e565b600060033d111561377b5760046000803e5060005160e01c5b90565b600060443d101561378c5790565b6040517ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc803d016004833e81513d67ffffffffffffffff81602484011181841117156137da57505050505090565b82850191508151818111156137f25750505050505090565b843d870101602082850101111561380c5750505050505090565b61381b60208286010187612cb9565b509095945050505050565b600073ffffffffffffffffffffffffffffffffffffffff808816835280871660208401525084604083015283606083015260a0608083015261386b60a0830184612c14565b97965050505050505056fe4142434445464748494a4b4c4d4e4f505152535455565758595a6162636465666768696a6b6c6d6e6f707172737475767778797a303132333435363738392b2fa2646970667358221220b0066fc153058e8fcd7721681d0a0cb3276f62b1826bc1c96721bda00c832de664736f6c63430008140033
Deployed Bytecode
0x608060405234801561001057600080fd5b50600436106101765760003560e01c8063715018a6116100d8578063a22cb4651161008c578063e985e9c511610066578063e985e9c514610317578063f242432a14610360578063f2fde38b1461037357600080fd5b8063a22cb465146102cd578063bff5365a146102e0578063e822eff6146102f357600080fd5b80639374a0e9116100bd5780639374a0e91461029257806395d89b41146102a55780639c2f7a43146102ad57600080fd5b8063715018a6146102625780638da5cb5b1461026a57600080fd5b80632056877d1161012f5780633b0eeee8116101145780633b0eeee81461021c5780634e1273f41461022f5780636190e3a81461024f57600080fd5b80632056877d146101f45780632eb2c2d61461020957600080fd5b806306fdde031161016057806306fdde03146101c45780630e89341c146101d957806318160ddd146101ec57600080fd5b8062fdd58e1461017b57806301ffc9a7146101a1575b600080fd5b61018e610189366004612b74565b610386565b6040519081526020015b60405180910390f35b6101b46101af366004612bcc565b61044c565b6040519015158152602001610198565b6101cc61052f565b6040516101989190612c5e565b6101cc6101e7366004612c71565b6105bd565b60065461018e565b610207610202366004612d96565b6105c8565b005b610207610217366004612ebd565b610641565b61020761022a366004612f67565b6106f0565b61024261023d366004612fae565b610765565b60405161019891906130aa565b61020761025d3660046130bd565b6108a3565b610207610b9a565b60035460405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610198565b6102076102a0366004612f67565b610c0d565b6101cc610c7e565b6102c06102bb366004612c71565b610c8b565b60405161019891906130f2565b6102076102db366004613189565b610eb0565b6102076102ee366004612f67565b610ebb565b610306610301366004612c71565b610f2c565b6040516101989594939291906131c5565b6101b4610325366004613217565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260016020908152604080832093909416825291909152205460ff1690565b61020761036e36600461324a565b6110f3565b6102076103813660046132af565b61119b565b600073ffffffffffffffffffffffffffffffffffffffff83166104165760405162461bcd60e51b815260206004820152602a60248201527f455243313135353a2061646472657373207a65726f206973206e6f742061207660448201527f616c6964206f776e65720000000000000000000000000000000000000000000060648201526084015b60405180910390fd5b5060008181526020818152604080832073ffffffffffffffffffffffffffffffffffffffff861684529091529020545b92915050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167fd9b67a260000000000000000000000000000000000000000000000000000000014806104df57507fffffffff0000000000000000000000000000000000000000000000000000000082167f0e89341c00000000000000000000000000000000000000000000000000000000145b8061044657507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff00000000000000000000000000000000000000000000000000000000831614610446565b6004805461053c906132ca565b80601f0160208091040260200160405190810160405280929190818152602001828054610568906132ca565b80156105b55780601f1061058a576101008083540402835291602001916105b5565b820191906000526020600020905b81548152906001019060200180831161059857829003601f168201915b505050505081565b606061044682611297565b60035473ffffffffffffffffffffffffffffffffffffffff16331461062f5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161040d565b61063b848484846114e3565b50505050565b73ffffffffffffffffffffffffffffffffffffffff851633148061066a575061066a8533610325565b6106dc5760405162461bcd60e51b815260206004820152602e60248201527f455243313135353a2063616c6c6572206973206e6f7420746f6b656e206f776e60448201527f6572206f7220617070726f766564000000000000000000000000000000000000606482015260840161040d565b6106e98585858585611641565b5050505050565b60035473ffffffffffffffffffffffffffffffffffffffff1633146107575760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161040d565b610761828261192d565b5050565b606081518351146107de5760405162461bcd60e51b815260206004820152602960248201527f455243313135353a206163636f756e747320616e6420696473206c656e67746860448201527f206d69736d617463680000000000000000000000000000000000000000000000606482015260840161040d565b6000835167ffffffffffffffff8111156107fa576107fa612c8a565b604051908082528060200260200182016040528015610823578160200160208202803683370190505b50905060005b845181101561089b5761086e8582815181106108475761084761331d565b60200260200101518583815181106108615761086161331d565b6020026020010151610386565b8282815181106108805761088061331d565b60209081029190910101526108948161337b565b9050610829565b509392505050565b60035473ffffffffffffffffffffffffffffffffffffffff16331461090a5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161040d565b6000600760008581526020019081526020016000206040518060a001604052908160008201548152602001600182018054610944906132ca565b80601f0160208091040260200160405190810160405280929190818152602001828054610970906132ca565b80156109bd5780601f10610992576101008083540402835291602001916109bd565b820191906000526020600020905b8154815290600101906020018083116109a057829003601f168201915b505050505081526020016002820180546109d6906132ca565b80601f0160208091040260200160405190810160405280929190818152602001828054610a02906132ca565b8015610a4f5780601f10610a2457610100808354040283529160200191610a4f565b820191906000526020600020905b815481529060010190602001808311610a3257829003601f168201915b50505050508152602001600382018054610a68906132ca565b80601f0160208091040260200160405190810160405280929190818152602001828054610a94906132ca565b8015610ae15780601f10610ab657610100808354040283529160200191610ae1565b820191906000526020600020905b815481529060010190602001808311610ac457829003601f168201915b5050505050815260200160048201548152505090508060000151600003610b4a5760405162461bcd60e51b815260206004820152600f60248201527f696e76616c6964206372797374616c0000000000000000000000000000000000604482015260640161040d565b604080516020810190915260008152610b6583868684611bbb565b8360066000828254610b7791906133b3565b925050819055508382608001818151610b9091906133b3565b9052505050505050565b60035473ffffffffffffffffffffffffffffffffffffffff163314610c015760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161040d565b610c0b6000611d12565b565b60035473ffffffffffffffffffffffffffffffffffffffff163314610c745760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161040d565b6107618282611d89565b6005805461053c906132ca565b610cbd6040518060a0016040528060008152602001606081526020016060815260200160608152602001600081525090565b6000600760008481526020019081526020016000206040518060a001604052908160008201548152602001600182018054610cf7906132ca565b80601f0160208091040260200160405190810160405280929190818152602001828054610d23906132ca565b8015610d705780601f10610d4557610100808354040283529160200191610d70565b820191906000526020600020905b815481529060010190602001808311610d5357829003601f168201915b50505050508152602001600282018054610d89906132ca565b80601f0160208091040260200160405190810160405280929190818152602001828054610db5906132ca565b8015610e025780601f10610dd757610100808354040283529160200191610e02565b820191906000526020600020905b815481529060010190602001808311610de557829003601f168201915b50505050508152602001600382018054610e1b906132ca565b80601f0160208091040260200160405190810160405280929190818152602001828054610e47906132ca565b8015610e945780601f10610e6957610100808354040283529160200191610e94565b820191906000526020600020905b815481529060010190602001808311610e7757829003601f168201915b5050509183525050600491909101546020909101529392505050565b610761338383611fcd565b60035473ffffffffffffffffffffffffffffffffffffffff163314610f225760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161040d565b6107618282612106565b60076020526000908152604090208054600182018054919291610f4e906132ca565b80601f0160208091040260200160405190810160405280929190818152602001828054610f7a906132ca565b8015610fc75780601f10610f9c57610100808354040283529160200191610fc7565b820191906000526020600020905b815481529060010190602001808311610faa57829003601f168201915b505050505090806002018054610fdc906132ca565b80601f0160208091040260200160405190810160405280929190818152602001828054611008906132ca565b80156110555780601f1061102a57610100808354040283529160200191611055565b820191906000526020600020905b81548152906001019060200180831161103857829003601f168201915b50505050509080600301805461106a906132ca565b80601f0160208091040260200160405190810160405280929190818152602001828054611096906132ca565b80156110e35780601f106110b8576101008083540402835291602001916110e3565b820191906000526020600020905b8154815290600101906020018083116110c657829003601f168201915b5050505050908060040154905085565b73ffffffffffffffffffffffffffffffffffffffff851633148061111c575061111c8533610325565b61118e5760405162461bcd60e51b815260206004820152602e60248201527f455243313135353a2063616c6c6572206973206e6f7420746f6b656e206f776e60448201527f6572206f7220617070726f766564000000000000000000000000000000000000606482015260840161040d565b6106e9858585858561234a565b60035473ffffffffffffffffffffffffffffffffffffffff1633146112025760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161040d565b73ffffffffffffffffffffffffffffffffffffffff811661128b5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f6464726573730000000000000000000000000000000000000000000000000000606482015260840161040d565b61129481611d12565b50565b6000818152600760209081526040808320815160a081019092528054825260018101805460609594840191906112cc906132ca565b80601f01602080910402602001604051908101604052809291908181526020018280546112f8906132ca565b80156113455780601f1061131a57610100808354040283529160200191611345565b820191906000526020600020905b81548152906001019060200180831161132857829003601f168201915b5050505050815260200160028201805461135e906132ca565b80601f016020809104026020016040519081016040528092919081815260200182805461138a906132ca565b80156113d75780601f106113ac576101008083540402835291602001916113d7565b820191906000526020600020905b8154815290600101906020018083116113ba57829003601f168201915b505050505081526020016003820180546113f0906132ca565b80601f016020809104026020016040519081016040528092919081815260200182805461141c906132ca565b80156114695780601f1061143e57610100808354040283529160200191611469565b820191906000526020600020905b81548152906001019060200180831161144c57829003601f168201915b50505050508152602001600482015481525050905060006114b88260200151836040015184606001516040516020016114a4939291906133c6565b604051602081830303815290604052612554565b9050806040516020016114cb91906134b0565b60405160208183030381529060405292505050919050565b600084116115335760405162461bcd60e51b815260206004820152601160248201527f69642063616e6e6f74206265207a65726f000000000000000000000000000000604482015260640161040d565b600084815260076020526040902054156115b55760405162461bcd60e51b815260206004820152602760248201527f6372797374616c2077697468206d61746368696e6720696420616c726561647960448201527f2065786973747300000000000000000000000000000000000000000000000000606482015260840161040d565b6040805160a081018252858152602080820186815282840186905260608301859052600060808401819052888152600790925292902081518155915190919060018201906116039082613540565b50604082015160028201906116189082613540565b506060820151600382019061162d9082613540565b506080820151816004015590505050505050565b81518351146116b85760405162461bcd60e51b815260206004820152602860248201527f455243313135353a2069647320616e6420616d6f756e7473206c656e6774682060448201527f6d69736d61746368000000000000000000000000000000000000000000000000606482015260840161040d565b73ffffffffffffffffffffffffffffffffffffffff84166117415760405162461bcd60e51b815260206004820152602560248201527f455243313135353a207472616e7366657220746f20746865207a65726f20616460448201527f6472657373000000000000000000000000000000000000000000000000000000606482015260840161040d565b3360005b84518110156118985760008582815181106117625761176261331d565b6020026020010151905060008583815181106117805761178061331d565b6020908102919091018101516000848152808352604080822073ffffffffffffffffffffffffffffffffffffffff8e1683529093529190912054909150818110156118335760405162461bcd60e51b815260206004820152602a60248201527f455243313135353a20696e73756666696369656e742062616c616e636520666f60448201527f72207472616e7366657200000000000000000000000000000000000000000000606482015260840161040d565b60008381526020818152604080832073ffffffffffffffffffffffffffffffffffffffff8e8116855292528083208585039055908b1682528120805484929061187d9084906133b3565b92505081905550505050806118919061337b565b9050611745565b508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb878760405161190f92919061365a565b60405180910390a4611925818787878787612731565b505050505050565b6000600760008481526020019081526020016000206040518060a001604052908160008201548152602001600182018054611967906132ca565b80601f0160208091040260200160405190810160405280929190818152602001828054611993906132ca565b80156119e05780601f106119b5576101008083540402835291602001916119e0565b820191906000526020600020905b8154815290600101906020018083116119c357829003601f168201915b505050505081526020016002820180546119f9906132ca565b80601f0160208091040260200160405190810160405280929190818152602001828054611a25906132ca565b8015611a725780601f10611a4757610100808354040283529160200191611a72565b820191906000526020600020905b815481529060010190602001808311611a5557829003601f168201915b50505050508152602001600382018054611a8b906132ca565b80601f0160208091040260200160405190810160405280929190818152602001828054611ab7906132ca565b8015611b045780601f10611ad957610100808354040283529160200191611b04565b820191906000526020600020905b815481529060010190602001808311611ae757829003601f168201915b5050505050815260200160048201548152505090506040518060a001604052808481526020018260200151815260200183815260200182606001518152602001826080015181525060076000858152602001908152602001600020600082015181600001556020820151816001019081611b7e9190613540565b5060408201516002820190611b939082613540565b5060608201516003820190611ba89082613540565b5060808201518160040155905050505050565b73ffffffffffffffffffffffffffffffffffffffff8416611c445760405162461bcd60e51b815260206004820152602160248201527f455243313135353a206d696e7420746f20746865207a65726f2061646472657360448201527f7300000000000000000000000000000000000000000000000000000000000000606482015260840161040d565b336000611c508561296d565b90506000611c5d8561296d565b905060008681526020818152604080832073ffffffffffffffffffffffffffffffffffffffff8b16845290915281208054879290611c9c9084906133b3565b9091555050604080518781526020810187905273ffffffffffffffffffffffffffffffffffffffff808a1692600092918716917fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f62910160405180910390a4611d09836000898989896129b8565b50505050505050565b6003805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6000600760008481526020019081526020016000206040518060a001604052908160008201548152602001600182018054611dc3906132ca565b80601f0160208091040260200160405190810160405280929190818152602001828054611def906132ca565b8015611e3c5780601f10611e1157610100808354040283529160200191611e3c565b820191906000526020600020905b815481529060010190602001808311611e1f57829003601f168201915b50505050508152602001600282018054611e55906132ca565b80601f0160208091040260200160405190810160405280929190818152602001828054611e81906132ca565b8015611ece5780601f10611ea357610100808354040283529160200191611ece565b820191906000526020600020905b815481529060010190602001808311611eb157829003601f168201915b50505050508152602001600382018054611ee7906132ca565b80601f0160208091040260200160405190810160405280929190818152602001828054611f13906132ca565b8015611f605780601f10611f3557610100808354040283529160200191611f60565b820191906000526020600020905b815481529060010190602001808311611f4357829003601f168201915b5050509183525050600491909101546020918201526040805160a0810182528681528383015181840190815282850151828401526060820187905260808086015190830152600088815260079094529190922082518155905192935090916001820190611b7e9082613540565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361206e5760405162461bcd60e51b815260206004820152602960248201527f455243313135353a2073657474696e6720617070726f76616c2073746174757360448201527f20666f722073656c660000000000000000000000000000000000000000000000606482015260840161040d565b73ffffffffffffffffffffffffffffffffffffffff83811660008181526001602090815260408083209487168084529482529182902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b6000600760008481526020019081526020016000206040518060a001604052908160008201548152602001600182018054612140906132ca565b80601f016020809104026020016040519081016040528092919081815260200182805461216c906132ca565b80156121b95780601f1061218e576101008083540402835291602001916121b9565b820191906000526020600020905b81548152906001019060200180831161219c57829003601f168201915b505050505081526020016002820180546121d2906132ca565b80601f01602080910402602001604051908101604052809291908181526020018280546121fe906132ca565b801561224b5780601f106122205761010080835404028352916020019161224b565b820191906000526020600020905b81548152906001019060200180831161222e57829003601f168201915b50505050508152602001600382018054612264906132ca565b80601f0160208091040260200160405190810160405280929190818152602001828054612290906132ca565b80156122dd5780601f106122b2576101008083540402835291602001916122dd565b820191906000526020600020905b8154815290600101906020018083116122c057829003601f168201915b5050509183525050600491909101546020918201526040805160a0810182528351815280830186815282850151828401526060808601519083015260808086015190830152600088815260079094529190922082518155905192935090916001820190611b7e9082613540565b73ffffffffffffffffffffffffffffffffffffffff84166123d35760405162461bcd60e51b815260206004820152602560248201527f455243313135353a207472616e7366657220746f20746865207a65726f20616460448201527f6472657373000000000000000000000000000000000000000000000000000000606482015260840161040d565b3360006123df8561296d565b905060006123ec8561296d565b905060008681526020818152604080832073ffffffffffffffffffffffffffffffffffffffff8c168452909152902054858110156124925760405162461bcd60e51b815260206004820152602a60248201527f455243313135353a20696e73756666696369656e742062616c616e636520666f60448201527f72207472616e7366657200000000000000000000000000000000000000000000606482015260840161040d565b60008781526020818152604080832073ffffffffffffffffffffffffffffffffffffffff8d8116855292528083208985039055908a168252812080548892906124dc9084906133b3565b9091555050604080518881526020810188905273ffffffffffffffffffffffffffffffffffffffff808b16928c821692918816917fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f62910160405180910390a4612549848a8a8a8a8a6129b8565b505050505050505050565b80516060906000819003612578575050604080516020810190915260008152919050565b600060036125878360026133b3565b6125919190613688565b61259c9060046136c3565b905060006125ab8260206133b3565b67ffffffffffffffff8111156125c3576125c3612c8a565b6040519080825280601f01601f1916602001820160405280156125ed576020820181803683370190505b5090506000604051806060016040528060408152602001613877604091399050600181016020830160005b86811015612679576003818a01810151603f601282901c8116860151600c83901c8216870151600684901c831688015192909316870151600891821b60ff94851601821b92841692909201901b91160160e01b835260049092019101612618565b50600386066001811461269357600281146126dd57612723565b7f3d3d0000000000000000000000000000000000000000000000000000000000007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe830152612723565b7f3d000000000000000000000000000000000000000000000000000000000000007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8301525b505050918152949350505050565b73ffffffffffffffffffffffffffffffffffffffff84163b15611925576040517fbc197c8100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff85169063bc197c81906127a890899089908890889088906004016136da565b6020604051808303816000875af1925050508015612801575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682019092526127fe91810190613745565b60015b6128b65761280d613762565b806308c379a003612846575061282161377e565b8061282c5750612848565b8060405162461bcd60e51b815260040161040d9190612c5e565b505b60405162461bcd60e51b815260206004820152603460248201527f455243313135353a207472616e7366657220746f206e6f6e2d4552433131353560448201527f526563656976657220696d706c656d656e746572000000000000000000000000606482015260840161040d565b7fffffffff0000000000000000000000000000000000000000000000000000000081167fbc197c810000000000000000000000000000000000000000000000000000000014611d095760405162461bcd60e51b815260206004820152602860248201527f455243313135353a204552433131353552656365697665722072656a6563746560448201527f6420746f6b656e73000000000000000000000000000000000000000000000000606482015260840161040d565b604080516001808252818301909252606091600091906020808301908036833701905050905082816000815181106129a7576129a761331d565b602090810291909101015292915050565b73ffffffffffffffffffffffffffffffffffffffff84163b15611925576040517ff23a6e6100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff85169063f23a6e6190612a2f9089908990889088908890600401613826565b6020604051808303816000875af1925050508015612a88575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201909252612a8591810190613745565b60015b612a945761280d613762565b7fffffffff0000000000000000000000000000000000000000000000000000000081167ff23a6e610000000000000000000000000000000000000000000000000000000014611d095760405162461bcd60e51b815260206004820152602860248201527f455243313135353a204552433131353552656365697665722072656a6563746560448201527f6420746f6b656e73000000000000000000000000000000000000000000000000606482015260840161040d565b803573ffffffffffffffffffffffffffffffffffffffff81168114612b6f57600080fd5b919050565b60008060408385031215612b8757600080fd5b612b9083612b4b565b946020939093013593505050565b7fffffffff000000000000000000000000000000000000000000000000000000008116811461129457600080fd5b600060208284031215612bde57600080fd5b8135612be981612b9e565b9392505050565b60005b83811015612c0b578181015183820152602001612bf3565b50506000910152565b60008151808452612c2c816020860160208601612bf0565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b602081526000612be96020830184612c14565b600060208284031215612c8357600080fd5b5035919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f830116810181811067ffffffffffffffff82111715612cfd57612cfd612c8a565b6040525050565b600082601f830112612d1557600080fd5b813567ffffffffffffffff811115612d2f57612d2f612c8a565b604051612d6460207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8501160182612cb9565b818152846020838601011115612d7957600080fd5b816020850160208301376000918101602001919091529392505050565b60008060008060808587031215612dac57600080fd5b84359350602085013567ffffffffffffffff80821115612dcb57600080fd5b612dd788838901612d04565b94506040870135915080821115612ded57600080fd5b612df988838901612d04565b93506060870135915080821115612e0f57600080fd5b50612e1c87828801612d04565b91505092959194509250565b600067ffffffffffffffff821115612e4257612e42612c8a565b5060051b60200190565b600082601f830112612e5d57600080fd5b81356020612e6a82612e28565b604051612e778282612cb9565b83815260059390931b8501820192828101915086841115612e9757600080fd5b8286015b84811015612eb25780358352918301918301612e9b565b509695505050505050565b600080600080600060a08688031215612ed557600080fd5b612ede86612b4b565b9450612eec60208701612b4b565b9350604086013567ffffffffffffffff80821115612f0957600080fd5b612f1589838a01612e4c565b94506060880135915080821115612f2b57600080fd5b612f3789838a01612e4c565b93506080880135915080821115612f4d57600080fd5b50612f5a88828901612d04565b9150509295509295909350565b60008060408385031215612f7a57600080fd5b82359150602083013567ffffffffffffffff811115612f9857600080fd5b612fa485828601612d04565b9150509250929050565b60008060408385031215612fc157600080fd5b823567ffffffffffffffff80821115612fd957600080fd5b818501915085601f830112612fed57600080fd5b81356020612ffa82612e28565b6040516130078282612cb9565b83815260059390931b850182019282810191508984111561302757600080fd5b948201945b8386101561304c5761303d86612b4b565b8252948201949082019061302c565b9650508601359250508082111561306257600080fd5b50612fa485828601612e4c565b600081518084526020808501945080840160005b8381101561309f57815187529582019590820190600101613083565b509495945050505050565b602081526000612be9602083018461306f565b6000806000606084860312156130d257600080fd5b83359250602084013591506130e960408501612b4b565b90509250925092565b60208152815160208201526000602083015160a0604084015261311860c0840182612c14565b905060408401517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0808584030160608601526131548383612c14565b92506060860151915080858403016080860152506131728282612c14565b915050608084015160a08401528091505092915050565b6000806040838503121561319c57600080fd5b6131a583612b4b565b9150602083013580151581146131ba57600080fd5b809150509250929050565b85815260a0602082015260006131de60a0830187612c14565b82810360408401526131f08187612c14565b905082810360608401526132048186612c14565b9150508260808301529695505050505050565b6000806040838503121561322a57600080fd5b61323383612b4b565b915061324160208401612b4b565b90509250929050565b600080600080600060a0868803121561326257600080fd5b61326b86612b4b565b945061327960208701612b4b565b93506040860135925060608601359150608086013567ffffffffffffffff8111156132a357600080fd5b612f5a88828901612d04565b6000602082840312156132c157600080fd5b612be982612b4b565b600181811c908216806132de57607f821691505b602082108103613317577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036133ac576133ac61334c565b5060010190565b808201808211156104465761044661334c565b7f7b226e616d65223a2022000000000000000000000000000000000000000000008152600084516133fe81600a850160208901612bf0565b7f222c20226465736372697074696f6e223a202200000000000000000000000000600a91840191820152845161343b81601d840160208901612bf0565b7f222c2022696d616765223a202200000000000000000000000000000000000000601d9290910191820152835161347981602a840160208801612bf0565b7f227d000000000000000000000000000000000000000000000000000000000000602a9290910191820152602c0195945050505050565b7f646174613a6170706c69636174696f6e2f6a736f6e3b6261736536342c0000008152600082516134e881601d850160208701612bf0565b91909101601d0192915050565b601f82111561353b57600081815260208120601f850160051c8101602086101561351c5750805b601f850160051c820191505b8181101561192557828155600101613528565b505050565b815167ffffffffffffffff81111561355a5761355a612c8a565b61356e8161356884546132ca565b846134f5565b602080601f8311600181146135c1576000841561358b5750858301515b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600386901b1c1916600185901b178555611925565b6000858152602081207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08616915b8281101561360e578886015182559484019460019091019084016135ef565b508582101561364a57878501517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600388901b60f8161c191681555b5050505050600190811b01905550565b60408152600061366d604083018561306f565b828103602084015261367f818561306f565b95945050505050565b6000826136be577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b80820281158282048414176104465761044661334c565b600073ffffffffffffffffffffffffffffffffffffffff808816835280871660208401525060a0604083015261371360a083018661306f565b8281036060840152613725818661306f565b905082810360808401526137398185612c14565b98975050505050505050565b60006020828403121561375757600080fd5b8151612be981612b9e565b600060033d111561377b5760046000803e5060005160e01c5b90565b600060443d101561378c5790565b6040517ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc803d016004833e81513d67ffffffffffffffff81602484011181841117156137da57505050505090565b82850191508151818111156137f25750505050505090565b843d870101602082850101111561380c5750505050505090565b61381b60208286010187612cb9565b509095945050505050565b600073ffffffffffffffffffffffffffffffffffffffff808816835280871660208401525084604083015283606083015260a0608083015261386b60a0830184612c14565b97965050505050505056fe4142434445464748494a4b4c4d4e4f505152535455565758595a6162636465666768696a6b6c6d6e6f707172737475767778797a303132333435363738392b2fa2646970667358221220b0066fc153058e8fcd7721681d0a0cb3276f62b1826bc1c96721bda00c832de664736f6c63430008140033
Deployed Bytecode Sourcemap
20165:4599:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7783:230;;;;;;:::i;:::-;;:::i;:::-;;;620:25:1;;;608:2;593:18;7783:230:0;;;;;;;;7352:310;;;;;;:::i;:::-;;:::i;:::-;;;1253:14:1;;1246:22;1228:41;;1216:2;1201:18;7352:310:0;1088:187:1;20226:38:0;;;:::i;:::-;;;;;;;:::i;24206:107::-;;;;;;:::i;:::-;;:::i;20340:99::-;20419:12;;20340:99;;21359:282;;;;;;:::i;:::-;;:::i;:::-;;9350:438;;;;;;:::i;:::-;;:::i;23165:183::-;;;;;;:::i;:::-;;:::i;8021:499::-;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;24323:437::-;;;;;;:::i;:::-;;:::i;18860:94::-;;;:::i;18209:87::-;18282:6;;18209:87;;18282:6;;;;8872:74:1;;8860:2;8845:18;18209:87:0;8726:226:1;23357:167:0;;;;;;:::i;:::-;;:::i;20271:27::-;;;:::i;20756:147::-;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;8528:155::-;;;;;;:::i;:::-;;:::i;22998:158::-;;;;;;:::i;:::-;;:::i;20700:47::-;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;;;;:::i;8691:168::-;;;;;;:::i;:::-;8814:27;;;;8790:4;8814:27;;;:18;:27;;;;;;;;:37;;;;;;;;;;;;;;;8691:168;8867:406;;;;;;:::i;:::-;;:::i;19109:192::-;;;;;;:::i;:::-;;:::i;7783:230::-;7869:7;7897:21;;;7889:76;;;;-1:-1:-1;;;7889:76:0;;12226:2:1;7889:76:0;;;12208:21:1;12265:2;12245:18;;;12238:30;12304:34;12284:18;;;12277:62;12375:12;12355:18;;;12348:40;12405:19;;7889:76:0;;;;;;;;;-1:-1:-1;7983:9:0;:13;;;;;;;;;;;:22;;;;;;;;;;;7783:230;;;;;:::o;7352:310::-;7454:4;7491:41;;;7506:26;7491:41;;:110;;-1:-1:-1;7549:52:0;;;7564:37;7549:52;7491:110;:163;;;-1:-1:-1;6795:25:0;6780:40;;;;7618:36;6671:157;20226:38;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;24206:107::-;24261:13;24294:11;24302:2;24294:7;:11::i;21359:282::-;18282:6;;18429:23;18282:6;6430:10;18429:23;18421:68;;;;-1:-1:-1;;;18421:68:0;;13079:2:1;18421:68:0;;;13061:21:1;;;13098:18;;;13091:30;13157:34;13137:18;;;13130:62;13209:18;;18421:68:0;12877:356:1;18421:68:0;21533:100:::1;21559:2;21577:5;21598:11;21625:7;21533:11;:100::i;:::-;21359:282:::0;;;;:::o;9350:438::-;9583:20;;;6430:10;9583:20;;:60;;-1:-1:-1;9607:36:0;9624:4;6430:10;8691:168;:::i;9607:36::-;9561:156;;;;-1:-1:-1;;;9561:156:0;;13440:2:1;9561:156:0;;;13422:21:1;13479:2;13459:18;;;13452:30;13518:34;13498:18;;;13491:62;13589:16;13569:18;;;13562:44;13623:19;;9561:156:0;13238:410:1;9561:156:0;9728:52;9751:4;9757:2;9761:3;9766:7;9775:4;9728:22;:52::i;:::-;9350:438;;;;;:::o;23165:183::-;18282:6;;18429:23;18282:6;6430:10;18429:23;18421:68;;;;-1:-1:-1;;;18421:68:0;;13079:2:1;18421:68:0;;;13061:21:1;;;13098:18;;;13091:30;13157:34;13137:18;;;13130:62;13209:18;;18421:68:0;12877:356:1;18421:68:0;23294:46:::1;23321:5;23328:11;23294:26;:46::i;:::-;23165:183:::0;;:::o;8021:499::-;8157:16;8213:3;:10;8194:8;:15;:29;8186:83;;;;-1:-1:-1;;;8186:83:0;;13855:2:1;8186:83:0;;;13837:21:1;13894:2;13874:18;;;13867:30;13933:34;13913:18;;;13906:62;14004:11;13984:18;;;13977:39;14033:19;;8186:83:0;13653:405:1;8186:83:0;8282:30;8329:8;:15;8315:30;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;8315:30:0;;8282:63;;8363:9;8358:122;8382:8;:15;8378:1;:19;8358:122;;;8438:30;8448:8;8457:1;8448:11;;;;;;;;:::i;:::-;;;;;;;8461:3;8465:1;8461:6;;;;;;;;:::i;:::-;;;;;;;8438:9;:30::i;:::-;8419:13;8433:1;8419:16;;;;;;;;:::i;:::-;;;;;;;;;;:49;8399:3;;;:::i;:::-;;;8358:122;;;-1:-1:-1;8499:13:0;8021:499;-1:-1:-1;;;8021:499:0:o;24323:437::-;18282:6;;18429:23;18282:6;6430:10;18429:23;18421:68;;;;-1:-1:-1;;;18421:68:0;;13079:2:1;18421:68:0;;;13061:21:1;;;13098:18;;;13091:30;13157:34;13137:18;;;13130:62;13209:18;;18421:68:0;12877:356:1;18421:68:0;24464:25:::1;24492:11;:15;24504:2;24492:15;;;;;;;;;;;24464:43;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;24526:10;:13;;;24543:1;24526:18:::0;24518:46:::1;;;::::0;-1:-1:-1;;;24518:46:0;;14843:2:1;24518:46:0::1;::::0;::::1;14825:21:1::0;14882:2;14862:18;;;14855:30;14921:17;14901:18;;;14894:45;14956:18;;24518:46:0::1;14641:339:1::0;24518:46:0::1;24593:9;::::0;;::::1;::::0;::::1;::::0;;;24573:17:::1;24593:9:::0;;24640:30:::1;24646:2:::0;24650;24654:9;24593;24640:5:::1;:30::i;:::-;24697:9;24681:12;;:25;;;;;;;:::i;:::-;;;;;;;;24743:9;24717:10;:22;;:35;;;;;;;:::i;:::-;::::0;;-1:-1:-1;;;;;;24323:437:0:o;18860:94::-;18282:6;;18429:23;18282:6;6430:10;18429:23;18421:68;;;;-1:-1:-1;;;18421:68:0;;13079:2:1;18421:68:0;;;13061:21:1;;;13098:18;;;13091:30;13157:34;13137:18;;;13130:62;13209:18;;18421:68:0;12877:356:1;18421:68:0;18925:21:::1;18943:1;18925:9;:21::i;:::-;18860:94::o:0;23357:167::-;18282:6;;18429:23;18282:6;6430:10;18429:23;18421:68;;;;-1:-1:-1;;;18421:68:0;;13079:2:1;18421:68:0;;;13061:21:1;;;13098:18;;;13091:30;13157:34;13137:18;;;13130:62;13209:18;;18421:68:0;12877:356:1;18421:68:0;23478:38:::1;23501:5;23508:7;23478:22;:38::i;20271:27::-:0;;;;;;;:::i;20756:147::-;20809:14;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20809:14:0;20836:19;20858:11;:15;20870:2;20858:15;;;;;;;;;;;20836:37;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;20836:37:0;;;-1:-1:-1;;20836:37:0;;;;;;;;;;;;20756:147;-1:-1:-1;;;20756:147:0:o;8528:155::-;8623:52;6430:10;8656:8;8666;8623:18;:52::i;22998:158::-;18282:6;;18429:23;18282:6;6430:10;18429:23;18421:68;;;;-1:-1:-1;;;18421:68:0;;13079:2:1;18421:68:0;;;13061:21:1;;;13098:18;;;13091:30;13157:34;13137:18;;;13130:62;13209:18;;18421:68:0;12877:356:1;18421:68:0;23115:33:::1;23135:5;23142;23115:19;:33::i;20700:47::-:0;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;8867:406::-;9075:20;;;6430:10;9075:20;;:60;;-1:-1:-1;9099:36:0;9116:4;6430:10;8691:168;:::i;9099:36::-;9053:156;;;;-1:-1:-1;;;9053:156:0;;13440:2:1;9053:156:0;;;13422:21:1;13479:2;13459:18;;;13452:30;13518:34;13498:18;;;13491:62;13589:16;13569:18;;;13562:44;13623:19;;9053:156:0;13238:410:1;9053:156:0;9220:45;9238:4;9244:2;9248;9252:6;9260:4;9220:17;:45::i;19109:192::-;18282:6;;18429:23;18282:6;6430:10;18429:23;18421:68;;;;-1:-1:-1;;;18421:68:0;;13079:2:1;18421:68:0;;;13061:21:1;;;13098:18;;;13091:30;13157:34;13137:18;;;13130:62;13209:18;;18421:68:0;12877:356:1;18421:68:0;19198:22:::1;::::0;::::1;19190:73;;;::::0;-1:-1:-1;;;19190:73:0;;15317:2:1;19190:73:0::1;::::0;::::1;15299:21:1::0;15356:2;15336:18;;;15329:30;15395:34;15375:18;;;15368:62;15466:8;15446:18;;;15439:36;15492:19;;19190:73:0::1;15115:402:1::0;19190:73:0::1;19274:19;19284:8;19274:9;:19::i;:::-;19109:192:::0;:::o;23683:515::-;23768:25;23796:20;;;:11;:20;;;;;;;;23768:48;;;;;;;;;;;;;;;;;23740:13;;23768:25;:48;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23827:18;23848:261;23933:10;:15;;;23999:10;:22;;;24067:10;:18;;;23875:231;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;23848:13;:261::i;:::-;23827:282;;24184:4;24134:55;;;;;;;;:::i;:::-;;;;;;;;;;;;;24120:70;;;;23683:515;;;:::o;20911:439::-;21091:1;21086:2;:6;21078:36;;;;-1:-1:-1;;;21078:36:0;;17717:2:1;21078:36:0;;;17699:21:1;17756:2;17736:18;;;17729:30;17795:19;17775:18;;;17768:47;17832:18;;21078:36:0;17515:341:1;21078:36:0;21133:15;;;;:11;:15;;;;;:18;:23;21125:75;;;;-1:-1:-1;;;21125:75:0;;18063:2:1;21125:75:0;;;18045:21:1;18102:2;18082:18;;;18075:30;18141:34;18121:18;;;18114:62;18212:9;18192:18;;;18185:37;18239:19;;21125:75:0;17861:403:1;21125:75:0;21229:113;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;21229:113:0;;;;;;21211:15;;;:11;:15;;;;;;:131;;;;;;21229:113;;21211:15;:131;;;;;;;;:::i;:::-;-1:-1:-1;21211:131:0;;;;;;;;;;;;:::i;:::-;-1:-1:-1;21211:131:0;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;20911:439;;;;:::o;10778:1146::-;11005:7;:14;10991:3;:10;:28;10983:81;;;;-1:-1:-1;;;10983:81:0;;20854:2:1;10983:81:0;;;20836:21:1;20893:2;20873:18;;;20866:30;20932:34;20912:18;;;20905:62;21003:10;20983:18;;;20976:38;21031:19;;10983:81:0;20652:404:1;10983:81:0;11083:16;;;11075:66;;;;-1:-1:-1;;;11075:66:0;;21263:2:1;11075:66:0;;;21245:21:1;21302:2;21282:18;;;21275:30;21341:34;21321:18;;;21314:62;21412:7;21392:18;;;21385:35;21437:19;;11075:66:0;21061:401:1;11075:66:0;6430:10;11154:16;11271:421;11295:3;:10;11291:1;:14;11271:421;;;11327:10;11340:3;11344:1;11340:6;;;;;;;;:::i;:::-;;;;;;;11327:19;;11361:14;11378:7;11386:1;11378:10;;;;;;;;:::i;:::-;;;;;;;;;;;;11405:19;11427:13;;;;;;;;;;:19;;;;;;;;;;;;;11378:10;;-1:-1:-1;11469:21:0;;;;11461:76;;;;-1:-1:-1;;;11461:76:0;;21669:2:1;11461:76:0;;;21651:21:1;21708:2;21688:18;;;21681:30;21747:34;21727:18;;;21720:62;21818:12;21798:18;;;21791:40;21848:19;;11461:76:0;21467:406:1;11461:76:0;11581:9;:13;;;;;;;;;;;:19;;;;;;;;;;;11603:20;;;11581:42;;11653:17;;;;;;;:27;;11603:20;;11581:9;11653:27;;11603:20;;11653:27;:::i;:::-;;;;;;;;11312:380;;;11307:3;;;;:::i;:::-;;;11271:421;;;;11739:2;11709:47;;11733:4;11709:47;;11723:8;11709:47;;;11743:3;11748:7;11709:47;;;;;;;:::i;:::-;;;;;;;;11841:75;11877:8;11887:4;11893:2;11897:3;11902:7;11911:4;11841:35;:75::i;:::-;10972:952;10778:1146;;;;;:::o;22138:381::-;22261:25;22289:11;:18;22301:5;22289:18;;;;;;;;;;;22261:46;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22339:172;;;;;;;;22361:5;22339:172;;;;22382:10;:15;;;22339:172;;;;22413:11;22339:172;;;;22440:10;:18;;;22339:172;;;;22474:10;:22;;;22339:172;;;22318:11;:18;22330:5;22318:18;;;;;;;;;;;:193;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;22318:193:0;;;;;;;;;;;;:::i;:::-;-1:-1:-1;22318:193:0;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;22250:269;22138:381;;:::o;12028:686::-;12138:16;;;12130:62;;;;-1:-1:-1;;;12130:62:0;;22550:2:1;12130:62:0;;;22532:21:1;22589:2;22569:18;;;22562:30;22628:34;22608:18;;;22601:62;22699:3;22679:18;;;22672:31;22720:19;;12130:62:0;22348:397:1;12130:62:0;6430:10;12205:16;12270:21;12288:2;12270:17;:21::i;:::-;12247:44;;12302:24;12329:25;12347:6;12329:17;:25::i;:::-;12302:52;;12446:9;:13;;;;;;;;;;;:17;;;;;;;;;;:27;;12467:6;;12446:9;:27;;12467:6;;12446:27;:::i;:::-;;;;-1:-1:-1;;12489:52:0;;;22924:25:1;;;22980:2;22965:18;;22958:34;;;12489:52:0;;;;;12522:1;;12489:52;;;;;;22897:18:1;12489:52:0;;;;;;;12632:74;12663:8;12681:1;12685:2;12689;12693:6;12701:4;12632:30;:74::i;:::-;12119:595;;;12028:686;;;;:::o;19309:173::-;19384:6;;;;19401:17;;;;;;;;;;;19434:40;;19384:6;;;19401:17;19384:6;;19434:40;;19365:16;;19434:40;19354:128;19309:173;:::o;22528:371::-;22643:25;22671:11;:18;22683:5;22671:18;;;;;;;;;;;22643:46;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;22643:46:0;;;-1:-1:-1;;22643:46:0;;;;;;;;;;;22721:170;;;;;;;;;;;22764:15;;;;22721:170;;;;;;22794:22;;;;22721:170;;;;;;;;;;;22855:22;;;;22721:170;;;;-1:-1:-1;22700:18:0;;;:11;:18;;;;;;;:191;;;;;;22643:46;;-1:-1:-1;22721:170:0;;22700:191;;;;;;;;:::i;15268:297::-;15389:8;15380:17;;:5;:17;;;15372:71;;;;-1:-1:-1;;;15372:71:0;;23205:2:1;15372:71:0;;;23187:21:1;23244:2;23224:18;;;23217:30;23283:34;23263:18;;;23256:62;23354:11;23334:18;;;23327:39;23383:19;;15372:71:0;23003:405:1;15372:71:0;15454:25;;;;;;;;:18;:25;;;;;;;;:35;;;;;;;;;;;;;:46;;;;;;;;;;;;;15516:41;;1228::1;;;15516::0;;1201:18:1;15516:41:0;;;;;;;15268:297;;;:::o;21737:390::-;21847:25;21875:11;:18;21887:5;21875:18;;;;;;;;;;;21847:46;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;21847:46:0;;;-1:-1:-1;;21847:46:0;;;;;;;;;;;21925:194;;;;;;;;21947:13;;21925:194;;;;;;;;21997:22;;;;21925:194;;;;;22035:18;;;;21925:194;;;;;22069:22;;;;21925:194;;;;-1:-1:-1;21904:18:0;;;:11;:18;;;;;;;:215;;;;;;21847:46;;-1:-1:-1;21925:194:0;;21904:215;;;;;;;;:::i;9796:974::-;9984:16;;;9976:66;;;;-1:-1:-1;;;9976:66:0;;21263:2:1;9976:66:0;;;21245:21:1;21302:2;21282:18;;;21275:30;21341:34;21321:18;;;21314:62;21412:7;21392:18;;;21385:35;21437:19;;9976:66:0;21061:401:1;9976:66:0;6430:10;10055:16;10120:21;10138:2;10120:17;:21::i;:::-;10097:44;;10152:24;10179:25;10197:6;10179:17;:25::i;:::-;10152:52;;10290:19;10312:13;;;;;;;;;;;:19;;;;;;;;;;;10350:21;;;;10342:76;;;;-1:-1:-1;;;10342:76:0;;21669:2:1;10342:76:0;;;21651:21:1;21708:2;21688:18;;;21681:30;21747:34;21727:18;;;21720:62;21818:12;21798:18;;;21791:40;21848:19;;10342:76:0;21467:406:1;10342:76:0;10454:9;:13;;;;;;;;;;;:19;;;;;;;;;;;10476:20;;;10454:42;;10518:17;;;;;;;:27;;10476:20;;10454:9;10518:27;;10476:20;;10518:27;:::i;:::-;;;;-1:-1:-1;;10563:46:0;;;22924:25:1;;;22980:2;22965:18;;22958:34;;;10563:46:0;;;;;;;;;;;;;;;22897:18:1;10563:46:0;;;;;;;10694:68;10725:8;10735:4;10741:2;10745;10749:6;10757:4;10694:30;:68::i;:::-;9965:805;;;;9796:974;;;;;:::o;24962:1607::-;25060:11;;25020:13;;25046:11;25086:8;;;25082:23;;-1:-1:-1;;25096:9:0;;;;;;;;;-1:-1:-1;25096:9:0;;;24962:1607;-1:-1:-1;24962:1607:0:o;25082:23::-;25157:18;25195:1;25184:7;:3;25190:1;25184:7;:::i;:::-;25183:13;;;;:::i;:::-;25178:19;;:1;:19;:::i;:::-;25157:40;-1:-1:-1;25255:19:0;25287:15;25157:40;25300:2;25287:15;:::i;:::-;25277:26;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;25277:26:0;;25255:48;;25316:18;25337:5;;;;;;;;;;;;;;;;;25316:26;;25406:1;25399:5;25395:13;25451:2;25443:6;25439:15;25502:1;25470:777;25525:3;25522:1;25519:10;25470:777;;;25580:1;25623:12;;;;;25617:19;25718:4;25706:2;25702:14;;;;;25684:40;;25678:47;25827:2;25823:14;;;25819:25;;25805:40;;25799:47;25956:1;25952:13;;;25948:24;;25934:39;;25928:46;26076:16;;;;26062:31;;26056:38;25754:1;25750:11;;;25848:4;25795:58;;;25786:68;25879:11;;25924:57;;;25915:67;;;;26007:11;;26052:49;;26043:59;26131:3;26127:13;26160:22;;26230:1;26215:17;;;;25573:9;25470:777;;;25474:44;26279:1;26274:3;26270:11;26300:1;26295:84;;;;26398:1;26393:82;;;;26263:212;;26295:84;26347:16;26328:17;;;26321:43;26295:84;;26393:82;26445:14;26426:17;;;26419:41;26263:212;-1:-1:-1;;;26491:26:0;;;26498:6;24962:1607;-1:-1:-1;;;;24962:1607:0:o;16782:813::-;17022:13;;;2198:19;:23;17018:570;;17058:79;;;;;:43;;;;;;:79;;17102:8;;17112:4;;17118:3;;17123:7;;17132:4;;17058:79;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;-1:-1:-1;17058:79:0;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;17054:523;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;;17450:6;17443:14;;-1:-1:-1;;;17443:14:0;;;;;;;;:::i;17054:523::-;;;17499:62;;-1:-1:-1;;;17499:62:0;;26096:2:1;17499:62:0;;;26078:21:1;26135:2;26115:18;;;26108:30;26174:34;26154:18;;;26147:62;26245:22;26225:18;;;26218:50;26285:19;;17499:62:0;25894:416:1;17054:523:0;17219:60;;;17231:48;17219:60;17215:159;;17304:50;;-1:-1:-1;;;17304:50:0;;26517:2:1;17304:50:0;;;26499:21:1;26556:2;26536:18;;;26529:30;26595:34;26575:18;;;26568:62;26666:10;26646:18;;;26639:38;26694:19;;17304:50:0;26315:404:1;17603:198:0;17723:16;;;17737:1;17723:16;;;;;;;;;17669;;17698:22;;17723:16;;;;;;;;;;;;-1:-1:-1;17723:16:0;17698:41;;17761:7;17750:5;17756:1;17750:8;;;;;;;;:::i;:::-;;;;;;;;;;:18;17788:5;17603:198;-1:-1:-1;;17603:198:0:o;16030:744::-;16245:13;;;2198:19;:23;16241:526;;16281:72;;;;;:38;;;;;;:72;;16320:8;;16330:4;;16336:2;;16340:6;;16348:4;;16281:72;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;-1:-1:-1;16281:72:0;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;16277:479;;;;:::i;:::-;16403:55;;;16415:43;16403:55;16399:154;;16483:50;;-1:-1:-1;;;16483:50:0;;26517:2:1;16483:50:0;;;26499:21:1;26556:2;26536:18;;;26529:30;26595:34;26575:18;;;26568:62;26666:10;26646:18;;;26639:38;26694:19;;16483:50:0;26315:404:1;14:196;82:20;;142:42;131:54;;121:65;;111:93;;200:1;197;190:12;111:93;14:196;;;:::o;215:254::-;283:6;291;344:2;332:9;323:7;319:23;315:32;312:52;;;360:1;357;350:12;312:52;383:29;402:9;383:29;:::i;:::-;373:39;459:2;444:18;;;;431:32;;-1:-1:-1;;;215:254:1:o;656:177::-;741:66;734:5;730:78;723:5;720:89;710:117;;823:1;820;813:12;838:245;896:6;949:2;937:9;928:7;924:23;920:32;917:52;;;965:1;962;955:12;917:52;1004:9;991:23;1023:30;1047:5;1023:30;:::i;:::-;1072:5;838:245;-1:-1:-1;;;838:245:1:o;1280:250::-;1365:1;1375:113;1389:6;1386:1;1383:13;1375:113;;;1465:11;;;1459:18;1446:11;;;1439:39;1411:2;1404:10;1375:113;;;-1:-1:-1;;1522:1:1;1504:16;;1497:27;1280:250::o;1535:330::-;1577:3;1615:5;1609:12;1642:6;1637:3;1630:19;1658:76;1727:6;1720:4;1715:3;1711:14;1704:4;1697:5;1693:16;1658:76;:::i;:::-;1779:2;1767:15;1784:66;1763:88;1754:98;;;;1854:4;1750:109;;1535:330;-1:-1:-1;;1535:330:1:o;1870:220::-;2019:2;2008:9;2001:21;1982:4;2039:45;2080:2;2069:9;2065:18;2057:6;2039:45;:::i;2095:180::-;2154:6;2207:2;2195:9;2186:7;2182:23;2178:32;2175:52;;;2223:1;2220;2213:12;2175:52;-1:-1:-1;2246:23:1;;2095:180;-1:-1:-1;2095:180:1:o;2280:184::-;2332:77;2329:1;2322:88;2429:4;2426:1;2419:15;2453:4;2450:1;2443:15;2469:308;2575:66;2570:2;2564:4;2560:13;2556:86;2548:6;2544:99;2709:6;2697:10;2694:22;2673:18;2661:10;2658:34;2655:62;2652:88;;;2720:18;;:::i;:::-;2756:2;2749:22;-1:-1:-1;;2469:308:1:o;2782:615::-;2825:5;2878:3;2871:4;2863:6;2859:17;2855:27;2845:55;;2896:1;2893;2886:12;2845:55;2932:6;2919:20;2958:18;2954:2;2951:26;2948:52;;;2980:18;;:::i;:::-;3029:2;3023:9;3041:126;3161:4;3092:66;3085:4;3081:2;3077:13;3073:86;3069:97;3061:6;3041:126;:::i;:::-;3191:2;3183:6;3176:18;3237:3;3230:4;3225:2;3217:6;3213:15;3209:26;3206:35;3203:55;;;3254:1;3251;3244:12;3203:55;3318:2;3311:4;3303:6;3299:17;3292:4;3284:6;3280:17;3267:54;3365:1;3341:15;;;3358:4;3337:26;3330:37;;;;3345:6;2782:615;-1:-1:-1;;;2782:615:1:o;3402:812::-;3518:6;3526;3534;3542;3595:3;3583:9;3574:7;3570:23;3566:33;3563:53;;;3612:1;3609;3602:12;3563:53;3648:9;3635:23;3625:33;;3709:2;3698:9;3694:18;3681:32;3732:18;3773:2;3765:6;3762:14;3759:34;;;3789:1;3786;3779:12;3759:34;3812:50;3854:7;3845:6;3834:9;3830:22;3812:50;:::i;:::-;3802:60;;3915:2;3904:9;3900:18;3887:32;3871:48;;3944:2;3934:8;3931:16;3928:36;;;3960:1;3957;3950:12;3928:36;3983:52;4027:7;4016:8;4005:9;4001:24;3983:52;:::i;:::-;3973:62;;4088:2;4077:9;4073:18;4060:32;4044:48;;4117:2;4107:8;4104:16;4101:36;;;4133:1;4130;4123:12;4101:36;;4156:52;4200:7;4189:8;4178:9;4174:24;4156:52;:::i;:::-;4146:62;;;3402:812;;;;;;;:::o;4219:183::-;4279:4;4312:18;4304:6;4301:30;4298:56;;;4334:18;;:::i;:::-;-1:-1:-1;4379:1:1;4375:14;4391:4;4371:25;;4219:183::o;4407:724::-;4461:5;4514:3;4507:4;4499:6;4495:17;4491:27;4481:55;;4532:1;4529;4522:12;4481:55;4568:6;4555:20;4594:4;4617:43;4657:2;4617:43;:::i;:::-;4689:2;4683:9;4701:31;4729:2;4721:6;4701:31;:::i;:::-;4767:18;;;4859:1;4855:10;;;;4843:23;;4839:32;;;4801:15;;;;-1:-1:-1;4883:15:1;;;4880:35;;;4911:1;4908;4901:12;4880:35;4947:2;4939:6;4935:15;4959:142;4975:6;4970:3;4967:15;4959:142;;;5041:17;;5029:30;;5079:12;;;;4992;;4959:142;;;-1:-1:-1;5119:6:1;4407:724;-1:-1:-1;;;;;;4407:724:1:o;5136:944::-;5290:6;5298;5306;5314;5322;5375:3;5363:9;5354:7;5350:23;5346:33;5343:53;;;5392:1;5389;5382:12;5343:53;5415:29;5434:9;5415:29;:::i;:::-;5405:39;;5463:38;5497:2;5486:9;5482:18;5463:38;:::i;:::-;5453:48;;5552:2;5541:9;5537:18;5524:32;5575:18;5616:2;5608:6;5605:14;5602:34;;;5632:1;5629;5622:12;5602:34;5655:61;5708:7;5699:6;5688:9;5684:22;5655:61;:::i;:::-;5645:71;;5769:2;5758:9;5754:18;5741:32;5725:48;;5798:2;5788:8;5785:16;5782:36;;;5814:1;5811;5804:12;5782:36;5837:63;5892:7;5881:8;5870:9;5866:24;5837:63;:::i;:::-;5827:73;;5953:3;5942:9;5938:19;5925:33;5909:49;;5983:2;5973:8;5970:16;5967:36;;;5999:1;5996;5989:12;5967:36;;6022:52;6066:7;6055:8;6044:9;6040:24;6022:52;:::i;:::-;6012:62;;;5136:944;;;;;;;;:::o;6085:390::-;6163:6;6171;6224:2;6212:9;6203:7;6199:23;6195:32;6192:52;;;6240:1;6237;6230:12;6192:52;6276:9;6263:23;6253:33;;6337:2;6326:9;6322:18;6309:32;6364:18;6356:6;6353:30;6350:50;;;6396:1;6393;6386:12;6350:50;6419;6461:7;6452:6;6441:9;6437:22;6419:50;:::i;:::-;6409:60;;;6085:390;;;;;:::o;6480:1208::-;6598:6;6606;6659:2;6647:9;6638:7;6634:23;6630:32;6627:52;;;6675:1;6672;6665:12;6627:52;6715:9;6702:23;6744:18;6785:2;6777:6;6774:14;6771:34;;;6801:1;6798;6791:12;6771:34;6839:6;6828:9;6824:22;6814:32;;6884:7;6877:4;6873:2;6869:13;6865:27;6855:55;;6906:1;6903;6896:12;6855:55;6942:2;6929:16;6964:4;6987:43;7027:2;6987:43;:::i;:::-;7059:2;7053:9;7071:31;7099:2;7091:6;7071:31;:::i;:::-;7137:18;;;7225:1;7221:10;;;;7213:19;;7209:28;;;7171:15;;;;-1:-1:-1;7249:19:1;;;7246:39;;;7281:1;7278;7271:12;7246:39;7305:11;;;;7325:148;7341:6;7336:3;7333:15;7325:148;;;7407:23;7426:3;7407:23;:::i;:::-;7395:36;;7358:12;;;;7451;;;;7325:148;;;7492:6;-1:-1:-1;;7536:18:1;;7523:32;;-1:-1:-1;;7567:16:1;;;7564:36;;;7596:1;7593;7586:12;7564:36;;7619:63;7674:7;7663:8;7652:9;7648:24;7619:63;:::i;7693:435::-;7746:3;7784:5;7778:12;7811:6;7806:3;7799:19;7837:4;7866:2;7861:3;7857:12;7850:19;;7903:2;7896:5;7892:14;7924:1;7934:169;7948:6;7945:1;7942:13;7934:169;;;8009:13;;7997:26;;8043:12;;;;8078:15;;;;7970:1;7963:9;7934:169;;;-1:-1:-1;8119:3:1;;7693:435;-1:-1:-1;;;;;7693:435:1:o;8133:261::-;8312:2;8301:9;8294:21;8275:4;8332:56;8384:2;8373:9;8369:18;8361:6;8332:56;:::i;8399:322::-;8476:6;8484;8492;8545:2;8533:9;8524:7;8520:23;8516:32;8513:52;;;8561:1;8558;8551:12;8513:52;8597:9;8584:23;8574:33;;8654:2;8643:9;8639:18;8626:32;8616:42;;8677:38;8711:2;8700:9;8696:18;8677:38;:::i;:::-;8667:48;;8399:322;;;;;:::o;8957:946::-;9136:2;9125:9;9118:21;9181:6;9175:13;9170:2;9159:9;9155:18;9148:41;9099:4;9236:2;9228:6;9224:15;9218:22;9276:4;9271:2;9260:9;9256:18;9249:32;9304:52;9351:3;9340:9;9336:19;9322:12;9304:52;:::i;:::-;9290:66;;9405:2;9397:6;9393:15;9387:22;9428:66;9558:2;9546:9;9538:6;9534:22;9530:31;9525:2;9514:9;9510:18;9503:59;9585:41;9619:6;9603:14;9585:41;:::i;:::-;9571:55;;9675:2;9667:6;9663:15;9657:22;9635:44;;9744:2;9732:9;9724:6;9720:22;9716:31;9710:3;9699:9;9695:19;9688:60;;9771:41;9805:6;9789:14;9771:41;:::i;:::-;9757:55;;;9868:3;9860:6;9856:16;9850:23;9843:4;9832:9;9828:20;9821:53;9891:6;9883:14;;;8957:946;;;;:::o;9908:347::-;9973:6;9981;10034:2;10022:9;10013:7;10009:23;10005:32;10002:52;;;10050:1;10047;10040:12;10002:52;10073:29;10092:9;10073:29;:::i;:::-;10063:39;;10152:2;10141:9;10137:18;10124:32;10199:5;10192:13;10185:21;10178:5;10175:32;10165:60;;10221:1;10218;10211:12;10165:60;10244:5;10234:15;;;9908:347;;;;;:::o;10260:691::-;10561:6;10550:9;10543:25;10604:3;10599:2;10588:9;10584:18;10577:31;10524:4;10631:46;10672:3;10661:9;10657:19;10649:6;10631:46;:::i;:::-;10725:9;10717:6;10713:22;10708:2;10697:9;10693:18;10686:50;10759:33;10785:6;10777;10759:33;:::i;:::-;10745:47;;10840:9;10832:6;10828:22;10823:2;10812:9;10808:18;10801:50;10868:33;10894:6;10886;10868:33;:::i;:::-;10860:41;;;10938:6;10932:3;10921:9;10917:19;10910:35;10260:691;;;;;;;;:::o;10956:260::-;11024:6;11032;11085:2;11073:9;11064:7;11060:23;11056:32;11053:52;;;11101:1;11098;11091:12;11053:52;11124:29;11143:9;11124:29;:::i;:::-;11114:39;;11172:38;11206:2;11195:9;11191:18;11172:38;:::i;:::-;11162:48;;10956:260;;;;;:::o;11221:607::-;11325:6;11333;11341;11349;11357;11410:3;11398:9;11389:7;11385:23;11381:33;11378:53;;;11427:1;11424;11417:12;11378:53;11450:29;11469:9;11450:29;:::i;:::-;11440:39;;11498:38;11532:2;11521:9;11517:18;11498:38;:::i;:::-;11488:48;;11583:2;11572:9;11568:18;11555:32;11545:42;;11634:2;11623:9;11619:18;11606:32;11596:42;;11689:3;11678:9;11674:19;11661:33;11717:18;11709:6;11706:30;11703:50;;;11749:1;11746;11739:12;11703:50;11772;11814:7;11805:6;11794:9;11790:22;11772:50;:::i;11833:186::-;11892:6;11945:2;11933:9;11924:7;11920:23;11916:32;11913:52;;;11961:1;11958;11951:12;11913:52;11984:29;12003:9;11984:29;:::i;12435:437::-;12514:1;12510:12;;;;12557;;;12578:61;;12632:4;12624:6;12620:17;12610:27;;12578:61;12685:2;12677:6;12674:14;12654:18;12651:38;12648:218;;12722:77;12719:1;12712:88;12823:4;12820:1;12813:15;12851:4;12848:1;12841:15;12648:218;;12435:437;;;:::o;14063:184::-;14115:77;14112:1;14105:88;14212:4;14209:1;14202:15;14236:4;14233:1;14226:15;14252:184;14304:77;14301:1;14294:88;14401:4;14398:1;14391:15;14425:4;14422:1;14415:15;14441:195;14480:3;14511:66;14504:5;14501:77;14498:103;;14581:18;;:::i;:::-;-1:-1:-1;14628:1:1;14617:13;;14441:195::o;14985:125::-;15050:9;;;15071:10;;;15068:36;;;15084:18;;:::i;15522:1522::-;16183:66;16178:3;16171:79;16153:3;16279:6;16273:13;16295:75;16363:6;16358:2;16353:3;16349:12;16342:4;16334:6;16330:17;16295:75;:::i;:::-;16434:66;16429:2;16389:16;;;16421:11;;;16414:87;16526:13;;16548:76;16526:13;16610:2;16602:11;;16595:4;16583:17;;16548:76;:::i;:::-;16689:66;16684:2;16643:17;;;;16676:11;;;16669:87;16781:13;;16803:76;16781:13;16865:2;16857:11;;16850:4;16838:17;;16803:76;:::i;:::-;16944:66;16939:2;16898:17;;;;16931:11;;;16924:87;17035:2;17027:11;;15522:1522;-1:-1:-1;;;;;15522:1522:1:o;17049:461::-;17311:31;17306:3;17299:44;17281:3;17372:6;17366:13;17388:75;17456:6;17451:2;17446:3;17442:12;17435:4;17427:6;17423:17;17388:75;:::i;:::-;17483:16;;;;17501:2;17479:25;;17049:461;-1:-1:-1;;17049:461:1:o;18395:545::-;18497:2;18492:3;18489:11;18486:448;;;18533:1;18558:5;18554:2;18547:17;18603:4;18599:2;18589:19;18673:2;18661:10;18657:19;18654:1;18650:27;18644:4;18640:38;18709:4;18697:10;18694:20;18691:47;;;-1:-1:-1;18732:4:1;18691:47;18787:2;18782:3;18778:12;18775:1;18771:20;18765:4;18761:31;18751:41;;18842:82;18860:2;18853:5;18850:13;18842:82;;;18905:17;;;18886:1;18875:13;18842:82;;18486:448;18395:545;;;:::o;19176:1471::-;19302:3;19296:10;19329:18;19321:6;19318:30;19315:56;;;19351:18;;:::i;:::-;19380:97;19470:6;19430:38;19462:4;19456:11;19430:38;:::i;:::-;19424:4;19380:97;:::i;:::-;19532:4;;19596:2;19585:14;;19613:1;19608:782;;;;20434:1;20451:6;20448:89;;;-1:-1:-1;20503:19:1;;;20497:26;20448:89;19082:66;19073:1;19069:11;;;19065:84;19061:89;19051:100;19157:1;19153:11;;;19048:117;20550:81;;19578:1063;;19608:782;18342:1;18335:14;;;18379:4;18366:18;;19656:66;19644:79;;;19821:236;19835:7;19832:1;19829:14;19821:236;;;19924:19;;;19918:26;19903:42;;20016:27;;;;19984:1;19972:14;;;;19851:19;;19821:236;;;19825:3;20085:6;20076:7;20073:19;20070:261;;;20146:19;;;20140:26;20247:66;20229:1;20225:14;;;20241:3;20221:24;20217:97;20213:102;20198:118;20183:134;;20070:261;-1:-1:-1;;;;;20377:1:1;20361:14;;;20357:22;20344:36;;-1:-1:-1;19176:1471:1:o;21878:465::-;22135:2;22124:9;22117:21;22098:4;22161:56;22213:2;22202:9;22198:18;22190:6;22161:56;:::i;:::-;22265:9;22257:6;22253:22;22248:2;22237:9;22233:18;22226:50;22293:44;22330:6;22322;22293:44;:::i;:::-;22285:52;21878:465;-1:-1:-1;;;;;21878:465:1:o;23413:274::-;23453:1;23479;23469:189;;23514:77;23511:1;23504:88;23615:4;23612:1;23605:15;23643:4;23640:1;23633:15;23469:189;-1:-1:-1;23672:9:1;;23413:274::o;23692:168::-;23765:9;;;23796;;23813:15;;;23807:22;;23793:37;23783:71;;23834:18;;:::i;23865:850::-;24187:4;24216:42;24297:2;24289:6;24285:15;24274:9;24267:34;24349:2;24341:6;24337:15;24332:2;24321:9;24317:18;24310:43;;24389:3;24384:2;24373:9;24369:18;24362:31;24416:57;24468:3;24457:9;24453:19;24445:6;24416:57;:::i;:::-;24521:9;24513:6;24509:22;24504:2;24493:9;24489:18;24482:50;24555:44;24592:6;24584;24555:44;:::i;:::-;24541:58;;24648:9;24640:6;24636:22;24630:3;24619:9;24615:19;24608:51;24676:33;24702:6;24694;24676:33;:::i;:::-;24668:41;23865:850;-1:-1:-1;;;;;;;;23865:850:1:o;24720:249::-;24789:6;24842:2;24830:9;24821:7;24817:23;24813:32;24810:52;;;24858:1;24855;24848:12;24810:52;24890:9;24884:16;24909:30;24933:5;24909:30;:::i;24974:179::-;25009:3;25051:1;25033:16;25030:23;25027:120;;;25097:1;25094;25091;25076:23;-1:-1:-1;25134:1:1;25128:8;25123:3;25119:18;25027:120;24974:179;:::o;25158:731::-;25197:3;25239:4;25221:16;25218:26;25215:39;;;25158:731;:::o;25215:39::-;25281:2;25275:9;25303:66;25424:2;25406:16;25402:25;25399:1;25393:4;25378:50;25457:4;25451:11;25481:16;25516:18;25587:2;25580:4;25572:6;25568:17;25565:25;25560:2;25552:6;25549:14;25546:45;25543:58;;;25594:5;;;;;25158:731;:::o;25543:58::-;25631:6;25625:4;25621:17;25610:28;;25667:3;25661:10;25694:2;25686:6;25683:14;25680:27;;;25700:5;;;;;;25158:731;:::o;25680:27::-;25784:2;25765:16;25759:4;25755:27;25751:36;25744:4;25735:6;25730:3;25726:16;25722:27;25719:69;25716:82;;;25791:5;;;;;;25158:731;:::o;25716:82::-;25807:57;25858:4;25849:6;25841;25837:19;25833:30;25827:4;25807:57;:::i;:::-;-1:-1:-1;25880:3:1;;25158:731;-1:-1:-1;;;;;25158:731:1:o;26724:584::-;26946:4;26975:42;27056:2;27048:6;27044:15;27033:9;27026:34;27108:2;27100:6;27096:15;27091:2;27080:9;27076:18;27069:43;;27148:6;27143:2;27132:9;27128:18;27121:34;27191:6;27186:2;27175:9;27171:18;27164:34;27235:3;27229;27218:9;27214:19;27207:32;27256:46;27297:3;27286:9;27282:19;27274:6;27256:46;:::i;:::-;27248:54;26724:584;-1:-1:-1;;;;;;;26724:584:1:o
Swarm Source
ipfs://b0066fc153058e8fcd7721681d0a0cb3276f62b1826bc1c96721bda00c832de6
Loading...
Loading
[ Download: CSV Export ]
[ Download: CSV Export ]
A token is a representation of an on-chain or off-chain asset. The token page shows information such as price, total supply, holders, transfers and social links. Learn more about this page in our Knowledge Base.