ERC-1155
Overview
Max Total Supply
358
Holders
162
Market
Volume (24H)
N/A
Min Price (24H)
N/A
Max Price (24H)
N/A
Other Info
Token Contract
Loading...
Loading
Loading...
Loading
Loading...
Loading
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
Contract Name:
ERC1155_Comic
Compiler Version
v0.8.17+commit.8df45f5f
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2022-12-27 */ // SPDX-License-Identifier: MIT pragma solidity ^0.8.17; // Ownable From OpenZeppelin Contracts v4.4.1 (Ownable.sol) abstract contract Ownable { address private _owner; event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); constructor() { _transferOwnership(msg.sender); } function owner() public view virtual returns (address) { return _owner; } modifier onlyOwner() { require(owner() == msg.sender, "Ownable: caller is not the owner"); _; } function renounceOwnership() public virtual onlyOwner { _transferOwnership(address(0)); } function transferOwnership(address newOwner) public virtual onlyOwner { require(newOwner != address(0), "Ownable: new owner is the zero address"); _transferOwnership(newOwner); } function _transferOwnership(address newOwner) internal virtual { address oldOwner = _owner; _owner = newOwner; emit OwnershipTransferred(oldOwner, newOwner); } } // Based on ERC1155 implementation by Solmate (https://github.com/transmissions11/solmate/blob/main/src/tokens/ERC1155.sol) contract ERC1155_Comic is Ownable { /*////////////////////////////////////////////////////////////// EVENTS //////////////////////////////////////////////////////////////*/ event TransferSingle( address indexed operator, address indexed from, address indexed to, uint256 id, uint256 amount ); event TransferBatch( address indexed operator, address indexed from, address indexed to, uint256[] ids, uint256[] amounts ); event ApprovalForAll(address indexed owner, address indexed operator, bool approved); event URI(string value, uint256 indexed id); /*////////////////////////////////////////////////////////////// ERC1155 STORAGE //////////////////////////////////////////////////////////////*/ mapping(address => mapping(uint256 => uint256)) public balanceOf; mapping(address => mapping(address => bool)) public isApprovedForAll; mapping(uint256 => string) public tokenURIs; mapping(uint256 => bool) public uriLocked; mapping(uint256 => bool) public mintIdLocked; // ERC-2981: NFT Royalty Standard address payable private _royaltyRecipient; uint256 private _royaltyBps; mapping(uint256 => uint256) private _royaltyBpsTokenId; constructor() { _royaltyRecipient = payable(msg.sender); _royaltyBps = 250; } /*////////////////////////////////////////////////////////////// ERC1155 LOGIC //////////////////////////////////////////////////////////////*/ function setApprovalForAll(address operator, bool approved) public virtual { isApprovedForAll[msg.sender][operator] = approved; emit ApprovalForAll(msg.sender, operator, approved); } function safeTransferFrom( address from, address to, uint256 id, uint256 amount, bytes calldata data ) public virtual { require(msg.sender == from || isApprovedForAll[from][msg.sender], "NOT_AUTHORIZED"); balanceOf[from][id] -= amount; balanceOf[to][id] += amount; emit TransferSingle(msg.sender, from, to, id, amount); require( to.code.length == 0 ? to != address(0) : ERC1155TokenReceiver(to).onERC1155Received(msg.sender, from, id, amount, data) == ERC1155TokenReceiver.onERC1155Received.selector, "UNSAFE_RECIPIENT" ); } function safeBatchTransferFrom( address from, address to, uint256[] calldata ids, uint256[] calldata amounts, bytes calldata data ) public virtual { require(ids.length == amounts.length, "LENGTH_MISMATCH"); require(msg.sender == from || isApprovedForAll[from][msg.sender], "NOT_AUTHORIZED"); // Storing these outside the loop saves ~15 gas per iteration. uint256 id; uint256 amount; for (uint256 i = 0; i < ids.length; ) { id = ids[i]; amount = amounts[i]; balanceOf[from][id] -= amount; balanceOf[to][id] += amount; // An array can't have a total length // larger than the max uint256 value. unchecked { ++i; } } emit TransferBatch(msg.sender, from, to, ids, amounts); require( to.code.length == 0 ? to != address(0) : ERC1155TokenReceiver(to).onERC1155BatchReceived(msg.sender, from, ids, amounts, data) == ERC1155TokenReceiver.onERC1155BatchReceived.selector, "UNSAFE_RECIPIENT" ); } function balanceOfBatch(address[] calldata owners, uint256[] calldata ids) public view virtual returns (uint256[] memory balances) { require(owners.length == ids.length, "LENGTH_MISMATCH"); balances = new uint256[](owners.length); // Unchecked because the only math done is incrementing // the array index counter which cannot possibly overflow. unchecked { for (uint256 i = 0; i < owners.length; ++i) { balances[i] = balanceOf[owners[i]][ids[i]]; } } } /*////////////////////////////////////////////////////////////// ERC165 LOGIC //////////////////////////////////////////////////////////////*/ function supportsInterface(bytes4 interfaceId) public view virtual returns (bool) { return interfaceId == 0x01ffc9a7 || // ERC165 interfaceId == 0xd9b67a26 || // ERC1155 interfaceId == 0x0e89341c || // ERC1155MetadataURI interfaceId == 0x2a55205a; // ERC2981 = 0x2a55205a; } /*////////////////////////////////////////////////////////////// INTERNAL MINT/BURN LOGIC //////////////////////////////////////////////////////////////*/ function _mint( address to, uint256 id, uint256 amount, bytes memory data ) internal virtual { balanceOf[to][id] += amount; emit TransferSingle(msg.sender, address(0), to, id, amount); require( to.code.length == 0 ? to != address(0) : ERC1155TokenReceiver(to).onERC1155Received(msg.sender, address(0), id, amount, data) == ERC1155TokenReceiver.onERC1155Received.selector, "UNSAFE_RECIPIENT" ); } function _batchMint( address to, uint256[] memory ids, uint256[] memory amounts, bytes memory data ) internal virtual { uint256 idsLength = ids.length; // Saves MLOADs. require(idsLength == amounts.length, "LENGTH_MISMATCH"); for (uint256 i = 0; i < idsLength; ) { balanceOf[to][ids[i]] += amounts[i]; // An array can't have a total length // larger than the max uint256 value. unchecked { ++i; } } emit TransferBatch(msg.sender, address(0), to, ids, amounts); require( to.code.length == 0 ? to != address(0) : ERC1155TokenReceiver(to).onERC1155BatchReceived(msg.sender, address(0), ids, amounts, data) == ERC1155TokenReceiver.onERC1155BatchReceived.selector, "UNSAFE_RECIPIENT" ); } function _batchBurn( address from, uint256[] memory ids, uint256[] memory amounts ) internal virtual { uint256 idsLength = ids.length; // Saves MLOADs. require(idsLength == amounts.length, "LENGTH_MISMATCH"); for (uint256 i = 0; i < idsLength; ) { balanceOf[from][ids[i]] -= amounts[i]; // An array can't have a total length // larger than the max uint256 value. unchecked { ++i; } } emit TransferBatch(msg.sender, from, address(0), ids, amounts); } function _burn( address from, uint256 id, uint256 amount ) internal virtual { balanceOf[from][id] -= amount; emit TransferSingle(msg.sender, from, address(0), id, amount); } /*////////////////////////////////////////////////////////////// COMIC MINT/BURN/URI LOGIC //////////////////////////////////////////////////////////////*/ function mint ( address to, uint256 id, uint256 amount, bytes calldata data ) public virtual onlyOwner { require(!mintIdLocked[id], "No more minting allowed"); _mint(to, id, amount, data); } function batchMint ( address to, uint256[] memory ids, uint256[] memory amounts, bytes calldata data ) public virtual onlyOwner { unchecked { for (uint256 i = 0; i < ids.length; i++) { require(!mintIdLocked[ids[i]], "No more minting allowed"); } } _batchMint(to, ids, amounts, data); } function mintMultipleUsers( address[] calldata recipients, uint256 id, uint256 amount, bytes calldata data ) public onlyOwner { require(!mintIdLocked[id], "No more minting allowed"); unchecked { for (uint256 i = 0; i < recipients.length; i++) { _mint(recipients[i], id, amount, data); } } } function uri(uint256 id) public view virtual returns (string memory) { return tokenURIs[id]; } function setUri(uint256[] calldata tokenId, string[] calldata newUri) public onlyOwner { require(tokenId.length == newUri.length, "Length mismatch"); unchecked { for (uint256 i = 0; i < tokenId.length; i++) { require(!uriLocked[tokenId[i]], "URI locked"); tokenURIs[tokenId[i]] = newUri[i]; emit URI(newUri[i], tokenId[i]); } } } function lockUri(uint256[] calldata tokenId) public onlyOwner { unchecked { for (uint256 i = 0; i < tokenId.length; i++) { uriLocked[tokenId[i]] = true; } } } function lockMintId(uint256[] calldata tokenId) public onlyOwner { unchecked { for (uint256 i = 0; i < tokenId.length; i++) { mintIdLocked[tokenId[i]] = true; } } } function burn ( address from, uint256 id, uint256 amount ) public virtual { require(msg.sender == from || isApprovedForAll[from][msg.sender], "NOT_AUTHORIZED"); _burn(from, id, amount); } function batchBurn( address from, uint256[] memory ids, uint256[] memory amounts ) public virtual { require(msg.sender == from || isApprovedForAll[from][msg.sender], "NOT_AUTHORIZED"); _batchBurn(from, ids, amounts); } /*////////////////////////////////////////////////////////////// EIP-2981 ROYALTY STANDARD //////////////////////////////////////////////////////////////*/ function setRoyaltyBps(uint256 royaltyPercentageBasisPoints) public onlyOwner { _royaltyBps = royaltyPercentageBasisPoints; } function setRoyaltyBpsForTokenId(uint256 tokenId, uint256 royaltyPercentageBasisPoints) public onlyOwner { _royaltyBpsTokenId[tokenId] = royaltyPercentageBasisPoints; } function setRoyaltyReceipientAddress(address payable royaltyReceipientAddress) public onlyOwner { _royaltyRecipient = royaltyReceipientAddress; } function royaltyInfo(uint256 tokenId, uint256 salePrice) external view returns (address receiver, uint256 royaltyAmount) { uint256 bps; if(_royaltyBpsTokenId[tokenId] > 0) { bps = _royaltyBpsTokenId[tokenId]; } else { bps = _royaltyBps; } uint256 royalty = (salePrice * bps) / 10000; return (_royaltyRecipient, royalty); } } abstract contract ERC1155TokenReceiver { function onERC1155Received( address, address, uint256, uint256, bytes calldata ) external virtual returns (bytes4) { return ERC1155TokenReceiver.onERC1155Received.selector; } function onERC1155BatchReceived( address, address, uint256[] calldata, uint256[] calldata, bytes calldata ) external virtual returns (bytes4) { return ERC1155TokenReceiver.onERC1155BatchReceived.selector; } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"operator","type":"address"},{"indexed":false,"internalType":"bool","name":"approved","type":"bool"}],"name":"ApprovalForAll","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"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":"amounts","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":"amount","type":"uint256"}],"name":"TransferSingle","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"string","name":"value","type":"string"},{"indexed":true,"internalType":"uint256","name":"id","type":"uint256"}],"name":"URI","type":"event"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"owners","type":"address[]"},{"internalType":"uint256[]","name":"ids","type":"uint256[]"}],"name":"balanceOfBatch","outputs":[{"internalType":"uint256[]","name":"balances","type":"uint256[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"uint256[]","name":"ids","type":"uint256[]"},{"internalType":"uint256[]","name":"amounts","type":"uint256[]"}],"name":"batchBurn","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"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":"batchMint","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"uint256","name":"id","type":"uint256"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"burn","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"}],"name":"isApprovedForAll","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"tokenId","type":"uint256[]"}],"name":"lockMintId","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"tokenId","type":"uint256[]"}],"name":"lockUri","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"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":"mint","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"mintIdLocked","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"recipients","type":"address[]"},{"internalType":"uint256","name":"id","type":"uint256"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"mintMultipleUsers","outputs":[],"stateMutability":"nonpayable","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":"uint256","name":"tokenId","type":"uint256"},{"internalType":"uint256","name":"salePrice","type":"uint256"}],"name":"royaltyInfo","outputs":[{"internalType":"address","name":"receiver","type":"address"},{"internalType":"uint256","name":"royaltyAmount","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256[]","name":"ids","type":"uint256[]"},{"internalType":"uint256[]","name":"amounts","type":"uint256[]"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"safeBatchTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"id","type":"uint256"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"safeTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"bool","name":"approved","type":"bool"}],"name":"setApprovalForAll","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"royaltyPercentageBasisPoints","type":"uint256"}],"name":"setRoyaltyBps","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"uint256","name":"royaltyPercentageBasisPoints","type":"uint256"}],"name":"setRoyaltyBpsForTokenId","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"royaltyReceipientAddress","type":"address"}],"name":"setRoyaltyReceipientAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"tokenId","type":"uint256[]"},{"internalType":"string[]","name":"newUri","type":"string[]"}],"name":"setUri","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":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"tokenURIs","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"id","type":"uint256"}],"name":"uri","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"uriLocked","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"}]
Contract Creation Code
60806040523480156200001157600080fd5b506200001d336200003a565b600680546001600160a01b0319163317905560fa6007556200008a565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b613431806200009a6000396000f3fe608060405234801561001057600080fd5b50600436106101ac5760003560e01c80636c8b703f116100ee578063b48ab8b611610097578063f2fde38b11610071578063f2fde38b1461041b578063f5298aca1461042e578063f6eb127a14610441578063f8707ab51461045457600080fd5b8063b48ab8b6146103c7578063e985e9c5146103da578063f242432a1461040857600080fd5b8063731133e9116100c8578063731133e9146103795780638da5cb5b1461038c578063a22cb465146103b457600080fd5b80636c8b703f1461033b5780636d2bce341461034e578063715018a61461037157600080fd5b80632a55205a1161015b578063404899cd11610135578063404899cd146102e2578063469e4025146102f55780634d564dc0146103085780634e1273f41461031b57600080fd5b80632a55205a1461027d5780632eb2c2d6146102bc57806333373cea146102cf57600080fd5b80630e89341c1161018c5780630e89341c1461022757806312efaf1c146102475780631f72d8311461026a57600080fd5b80629ee39c146101b1578062fdd58e146101c657806301ffc9a714610204575b600080fd5b6101c46101bf36600461270e565b610467565b005b6101f16101d4366004612732565b600160209081526000928352604080842090915290825290205481565b6040519081526020015b60405180910390f35b61021761021236600461278c565b610550565b60405190151581526020016101fb565b61023a6102353660046127a9565b610681565b6040516101fb9190612826565b6102176102553660046127a9565b60046020526000908152604090205460ff1681565b6101c46102783660046127a9565b610723565b61029061028b366004612839565b6107c5565b6040805173ffffffffffffffffffffffffffffffffffffffff90931683526020830191909152016101fb565b6101c46102ca3660046128e2565b610837565b6101c46102dd366004612839565b610c2c565b6101c46102f03660046129a1565b610cdb565b6101c46103033660046129e3565b610dee565b6101c46103163660046129a1565b610f88565b61032e610329366004612a66565b611096565b6040516101fb9190612b0d565b61023a6103493660046127a9565b61120e565b61021761035c3660046127a9565b60056020526000908152604090205460ff1681565b6101c46112a8565b6101c4610387366004612b20565b611351565b60005460405173ffffffffffffffffffffffffffffffffffffffff90911681526020016101fb565b6101c46103c2366004612b8a565b6114b0565b6101c46103d5366004612cb0565b611547565b6102176103e8366004612d41565b600260209081526000928352604080842090915290825290205460ff1681565b6101c4610416366004612d6f565b6116d6565b6101c461042936600461270e565b6119e0565b6101c461043c366004612dd9565b611b2c565b6101c461044f366004612e0e565b611bf1565b6101c4610462366004612a66565b611cb6565b3361048760005473ffffffffffffffffffffffffffffffffffffffff1690565b73ffffffffffffffffffffffffffffffffffffffff1614610509576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064015b60405180910390fd5b600680547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff00000000000000000000000000000000000000000000000000000000831614806105e357507fd9b67a26000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b8061062f57507f0e89341c000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b8061067b57507f2a55205a000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b92915050565b600081815260036020526040902080546060919061069e90612e84565b80601f01602080910402602001604051908101604052809291908181526020018280546106ca90612e84565b80156107175780601f106106ec57610100808354040283529160200191610717565b820191906000526020600020905b8154815290600101906020018083116106fa57829003601f168201915b50505050509050919050565b3361074360005473ffffffffffffffffffffffffffffffffffffffff1690565b73ffffffffffffffffffffffffffffffffffffffff16146107c0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610500565b600755565b60008281526008602052604081205481908190156107f257506000848152600860205260409020546107f7565b506007545b60006127106108068387612f06565b6108109190612f1d565b60065473ffffffffffffffffffffffffffffffffffffffff169450925050505b9250929050565b8483146108a0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600f60248201527f4c454e4754485f4d49534d4154434800000000000000000000000000000000006044820152606401610500565b3373ffffffffffffffffffffffffffffffffffffffff891614806108f4575073ffffffffffffffffffffffffffffffffffffffff8816600090815260026020908152604080832033845290915290205460ff165b61095a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f4e4f545f415554484f52495a45440000000000000000000000000000000000006044820152606401610500565b60008060005b87811015610a335788888281811061097a5761097a612f58565b90506020020135925086868281811061099557610995612f58565b73ffffffffffffffffffffffffffffffffffffffff8e166000908152600160209081526040808320898452825282208054939091029490940135955085939250906109e1908490612f87565b909155505073ffffffffffffffffffffffffffffffffffffffff8a16600090815260016020908152604080832086845290915281208054849290610a26908490612f9a565b9091555050600101610960565b508873ffffffffffffffffffffffffffffffffffffffff168a73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb8b8b8b8b604051610aae9493929190612ff8565b60405180910390a473ffffffffffffffffffffffffffffffffffffffff89163b15610ba0576040517fbc197c81000000000000000000000000000000000000000000000000000000008082529073ffffffffffffffffffffffffffffffffffffffff8b169063bc197c8190610b359033908f908e908e908e908e908e908e90600401613068565b6020604051808303816000875af1158015610b54573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b7891906130d9565b7fffffffff000000000000000000000000000000000000000000000000000000001614610bba565b73ffffffffffffffffffffffffffffffffffffffff891615155b610c20576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f554e534146455f524543495049454e54000000000000000000000000000000006044820152606401610500565b50505050505050505050565b33610c4c60005473ffffffffffffffffffffffffffffffffffffffff1690565b73ffffffffffffffffffffffffffffffffffffffff1614610cc9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610500565b60009182526008602052604090912055565b33610cfb60005473ffffffffffffffffffffffffffffffffffffffff1690565b73ffffffffffffffffffffffffffffffffffffffff1614610d78576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610500565b60005b81811015610de957600160046000858585818110610d9b57610d9b612f58565b6020908102929092013583525081019190915260400160002080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016911515919091179055600101610d7b565b505050565b33610e0e60005473ffffffffffffffffffffffffffffffffffffffff1690565b73ffffffffffffffffffffffffffffffffffffffff1614610e8b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610500565b60008481526005602052604090205460ff1615610f04576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f4e6f206d6f7265206d696e74696e6720616c6c6f7765640000000000000000006044820152606401610500565b60005b85811015610f7f57610f77878783818110610f2457610f24612f58565b9050602002016020810190610f39919061270e565b868686868080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250611f3a92505050565b600101610f07565b50505050505050565b33610fa860005473ffffffffffffffffffffffffffffffffffffffff1690565b73ffffffffffffffffffffffffffffffffffffffff1614611025576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610500565b60005b81811015610de95760016005600085858581811061104857611048612f58565b6020908102929092013583525081019190915260400160002080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016911515919091179055600101611028565b6060838214611101576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600f60248201527f4c454e4754485f4d49534d4154434800000000000000000000000000000000006044820152606401610500565b8367ffffffffffffffff81111561111a5761111a612bc8565b604051908082528060200260200182016040528015611143578160200160208202803683370190505b50905060005b84811015611205576001600087878481811061116757611167612f58565b905060200201602081019061117c919061270e565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008585848181106111ca576111ca612f58565b905060200201358152602001908152602001600020548282815181106111f2576111f2612f58565b6020908102919091010152600101611149565b50949350505050565b6003602052600090815260409020805461122790612e84565b80601f016020809104026020016040519081016040528092919081815260200182805461125390612e84565b80156112a05780601f10611275576101008083540402835291602001916112a0565b820191906000526020600020905b81548152906001019060200180831161128357829003601f168201915b505050505081565b336112c860005473ffffffffffffffffffffffffffffffffffffffff1690565b73ffffffffffffffffffffffffffffffffffffffff1614611345576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610500565b61134f6000612140565b565b3361137160005473ffffffffffffffffffffffffffffffffffffffff1690565b73ffffffffffffffffffffffffffffffffffffffff16146113ee576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610500565b60008481526005602052604090205460ff1615611467576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f4e6f206d6f7265206d696e74696e6720616c6c6f7765640000000000000000006044820152606401610500565b6114a985858585858080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250611f3a92505050565b5050505050565b33600081815260026020908152604080832073ffffffffffffffffffffffffffffffffffffffff87168085529083529281902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001686151590811790915590519081529192917f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a35050565b3361156760005473ffffffffffffffffffffffffffffffffffffffff1690565b73ffffffffffffffffffffffffffffffffffffffff16146115e4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610500565b60005b8451811015611693576005600086838151811061160657611606612f58565b60209081029190910181015182528101919091526040016000205460ff161561168b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f4e6f206d6f7265206d696e74696e6720616c6c6f7765640000000000000000006044820152606401610500565b6001016115e7565b506114a985858585858080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506121b592505050565b3373ffffffffffffffffffffffffffffffffffffffff8716148061172a575073ffffffffffffffffffffffffffffffffffffffff8616600090815260026020908152604080832033845290915290205460ff165b611790576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f4e4f545f415554484f52495a45440000000000000000000000000000000000006044820152606401610500565b73ffffffffffffffffffffffffffffffffffffffff86166000908152600160209081526040808320878452909152812080548592906117d0908490612f87565b909155505073ffffffffffffffffffffffffffffffffffffffff8516600090815260016020908152604080832087845290915281208054859290611815908490612f9a565b9091555050604080518581526020810185905273ffffffffffffffffffffffffffffffffffffffff808816929089169133917fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f62910160405180910390a473ffffffffffffffffffffffffffffffffffffffff85163b15611958576040517ff23a6e61000000000000000000000000000000000000000000000000000000008082529073ffffffffffffffffffffffffffffffffffffffff87169063f23a6e61906118ed9033908b908a908a908a908a906004016130f6565b6020604051808303816000875af115801561190c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061193091906130d9565b7fffffffff000000000000000000000000000000000000000000000000000000001614611972565b73ffffffffffffffffffffffffffffffffffffffff851615155b6119d8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f554e534146455f524543495049454e54000000000000000000000000000000006044820152606401610500565b505050505050565b33611a0060005473ffffffffffffffffffffffffffffffffffffffff1690565b73ffffffffffffffffffffffffffffffffffffffff1614611a7d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610500565b73ffffffffffffffffffffffffffffffffffffffff8116611b20576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f64647265737300000000000000000000000000000000000000000000000000006064820152608401610500565b611b2981612140565b50565b3373ffffffffffffffffffffffffffffffffffffffff84161480611b80575073ffffffffffffffffffffffffffffffffffffffff8316600090815260026020908152604080832033845290915290205460ff165b611be6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f4e4f545f415554484f52495a45440000000000000000000000000000000000006044820152606401610500565b610de98383836124b0565b3373ffffffffffffffffffffffffffffffffffffffff84161480611c45575073ffffffffffffffffffffffffffffffffffffffff8316600090815260026020908152604080832033845290915290205460ff165b611cab576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f4e4f545f415554484f52495a45440000000000000000000000000000000000006044820152606401610500565b610de9838383612550565b33611cd660005473ffffffffffffffffffffffffffffffffffffffff1690565b73ffffffffffffffffffffffffffffffffffffffff1614611d53576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610500565b828114611dbc576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600f60248201527f4c656e677468206d69736d6174636800000000000000000000000000000000006044820152606401610500565b60005b838110156114a95760046000868684818110611ddd57611ddd612f58565b602090810292909201358352508101919091526040016000205460ff1615611e61576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f555249206c6f636b6564000000000000000000000000000000000000000000006044820152606401610500565b828282818110611e7357611e73612f58565b9050602002810190611e859190613148565b60036000888886818110611e9b57611e9b612f58565b9050602002013581526020019081526020016000209182611ebd9291906131f3565b50848482818110611ed057611ed0612f58565b905060200201357f6bb7ff708619ba0610cba295a58592e0451dee2622938c8755667688daf3529b848484818110611f0a57611f0a612f58565b9050602002810190611f1c9190613148565b604051611f2a92919061330d565b60405180910390a2600101611dbf565b73ffffffffffffffffffffffffffffffffffffffff8416600090815260016020908152604080832086845290915281208054849290611f7a908490612f9a565b9091555050604080518481526020810184905273ffffffffffffffffffffffffffffffffffffffff86169160009133917fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f62910160405180910390a473ffffffffffffffffffffffffffffffffffffffff84163b156120ba576040517ff23a6e61000000000000000000000000000000000000000000000000000000008082529073ffffffffffffffffffffffffffffffffffffffff86169063f23a6e619061204f903390600090899089908990600401613329565b6020604051808303816000875af115801561206e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061209291906130d9565b7fffffffff0000000000000000000000000000000000000000000000000000000016146120d4565b73ffffffffffffffffffffffffffffffffffffffff841615155b61213a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f554e534146455f524543495049454e54000000000000000000000000000000006044820152606401610500565b50505050565b6000805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b825182518114612221576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600f60248201527f4c454e4754485f4d49534d4154434800000000000000000000000000000000006044820152606401610500565b60005b818110156122cb5783818151811061223e5761223e612f58565b6020026020010151600160008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600087848151811061229957612299612f58565b6020026020010151815260200190815260200160002060008282546122be9190612f9a565b9091555050600101612224565b508473ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb878760405161234392919061336e565b60405180910390a473ffffffffffffffffffffffffffffffffffffffff85163b15612430576040517fbc197c81000000000000000000000000000000000000000000000000000000008082529073ffffffffffffffffffffffffffffffffffffffff87169063bc197c81906123c59033906000908a908a908a9060040161339c565b6020604051808303816000875af11580156123e4573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061240891906130d9565b7fffffffff00000000000000000000000000000000000000000000000000000000161461244a565b73ffffffffffffffffffffffffffffffffffffffff851615155b6114a9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f554e534146455f524543495049454e54000000000000000000000000000000006044820152606401610500565b73ffffffffffffffffffffffffffffffffffffffff83166000908152600160209081526040808320858452909152812080548392906124f0908490612f87565b9091555050604080518381526020810183905260009173ffffffffffffffffffffffffffffffffffffffff86169133917fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f62910160405180910390a4505050565b8151815181146125bc576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600f60248201527f4c454e4754485f4d49534d4154434800000000000000000000000000000000006044820152606401610500565b60005b81811015612666578281815181106125d9576125d9612f58565b6020026020010151600160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600086848151811061263457612634612f58565b6020026020010151815260200190815260200160002060008282546126599190612f87565b90915550506001016125bf565b50600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb86866040516126de92919061336e565b60405180910390a450505050565b73ffffffffffffffffffffffffffffffffffffffff81168114611b2957600080fd5b60006020828403121561272057600080fd5b813561272b816126ec565b9392505050565b6000806040838503121561274557600080fd5b8235612750816126ec565b946020939093013593505050565b7fffffffff0000000000000000000000000000000000000000000000000000000081168114611b2957600080fd5b60006020828403121561279e57600080fd5b813561272b8161275e565b6000602082840312156127bb57600080fd5b5035919050565b6000815180845260005b818110156127e8576020818501810151868301820152016127cc565b5060006020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b60208152600061272b60208301846127c2565b6000806040838503121561284c57600080fd5b50508035926020909101359150565b60008083601f84011261286d57600080fd5b50813567ffffffffffffffff81111561288557600080fd5b6020830191508360208260051b850101111561083057600080fd5b60008083601f8401126128b257600080fd5b50813567ffffffffffffffff8111156128ca57600080fd5b60208301915083602082850101111561083057600080fd5b60008060008060008060008060a0898b0312156128fe57600080fd5b8835612909816126ec565b97506020890135612919816126ec565b9650604089013567ffffffffffffffff8082111561293657600080fd5b6129428c838d0161285b565b909850965060608b013591508082111561295b57600080fd5b6129678c838d0161285b565b909650945060808b013591508082111561298057600080fd5b5061298d8b828c016128a0565b999c989b5096995094979396929594505050565b600080602083850312156129b457600080fd5b823567ffffffffffffffff8111156129cb57600080fd5b6129d78582860161285b565b90969095509350505050565b600080600080600080608087890312156129fc57600080fd5b863567ffffffffffffffff80821115612a1457600080fd5b612a208a838b0161285b565b909850965060208901359550604089013594506060890135915080821115612a4757600080fd5b50612a5489828a016128a0565b979a9699509497509295939492505050565b60008060008060408587031215612a7c57600080fd5b843567ffffffffffffffff80821115612a9457600080fd5b612aa08883890161285b565b90965094506020870135915080821115612ab957600080fd5b50612ac68782880161285b565b95989497509550505050565b600081518084526020808501945080840160005b83811015612b0257815187529582019590820190600101612ae6565b509495945050505050565b60208152600061272b6020830184612ad2565b600080600080600060808688031215612b3857600080fd5b8535612b43816126ec565b94506020860135935060408601359250606086013567ffffffffffffffff811115612b6d57600080fd5b612b79888289016128a0565b969995985093965092949392505050565b60008060408385031215612b9d57600080fd5b8235612ba8816126ec565b915060208301358015158114612bbd57600080fd5b809150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600082601f830112612c0857600080fd5b8135602067ffffffffffffffff80831115612c2557612c25612bc8565b8260051b6040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0603f83011681018181108482111715612c6857612c68612bc8565b604052938452858101830193838101925087851115612c8657600080fd5b83870191505b84821015612ca557813583529183019190830190612c8c565b979650505050505050565b600080600080600060808688031215612cc857600080fd5b8535612cd3816126ec565b9450602086013567ffffffffffffffff80821115612cf057600080fd5b612cfc89838a01612bf7565b95506040880135915080821115612d1257600080fd5b612d1e89838a01612bf7565b94506060880135915080821115612d3457600080fd5b50612b79888289016128a0565b60008060408385031215612d5457600080fd5b8235612d5f816126ec565b91506020830135612bbd816126ec565b60008060008060008060a08789031215612d8857600080fd5b8635612d93816126ec565b95506020870135612da3816126ec565b94506040870135935060608701359250608087013567ffffffffffffffff811115612dcd57600080fd5b612a5489828a016128a0565b600080600060608486031215612dee57600080fd5b8335612df9816126ec565b95602085013595506040909401359392505050565b600080600060608486031215612e2357600080fd5b8335612e2e816126ec565b9250602084013567ffffffffffffffff80821115612e4b57600080fd5b612e5787838801612bf7565b93506040860135915080821115612e6d57600080fd5b50612e7a86828701612bf7565b9150509250925092565b600181811c90821680612e9857607f821691505b602082108103612ed1577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b808202811582820484141761067b5761067b612ed7565b600082612f53577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b8181038181111561067b5761067b612ed7565b8082018082111561067b5761067b612ed7565b81835260007f07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff831115612fdf57600080fd5b8260051b80836020870137939093016020019392505050565b60408152600061300c604083018688612fad565b8281036020840152612ca5818587612fad565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b600073ffffffffffffffffffffffffffffffffffffffff808b168352808a1660208401525060a060408301526130a260a08301888a612fad565b82810360608401526130b5818789612fad565b905082810360808401526130ca81858761301f565b9b9a5050505050505050505050565b6000602082840312156130eb57600080fd5b815161272b8161275e565b600073ffffffffffffffffffffffffffffffffffffffff808916835280881660208401525085604083015284606083015260a0608083015261313c60a08301848661301f565b98975050505050505050565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe184360301811261317d57600080fd5b83018035915067ffffffffffffffff82111561319857600080fd5b60200191503681900382131561083057600080fd5b601f821115610de957600081815260208120601f850160051c810160208610156131d45750805b601f850160051c820191505b818110156119d8578281556001016131e0565b67ffffffffffffffff83111561320b5761320b612bc8565b61321f836132198354612e84565b836131ad565b6000601f841160018114613271576000851561323b5750838201355b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600387901b1c1916600186901b1783556114a9565b6000838152602090207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0861690835b828110156132c057868501358255602094850194600190920191016132a0565b50868210156132fb577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60f88860031b161c19848701351681555b505060018560011b0183555050505050565b60208152600061332160208301848661301f565b949350505050565b600073ffffffffffffffffffffffffffffffffffffffff808816835280871660208401525084604083015283606083015260a06080830152612ca560a08301846127c2565b6040815260006133816040830185612ad2565b82810360208401526133938185612ad2565b95945050505050565b600073ffffffffffffffffffffffffffffffffffffffff808816835280871660208401525060a060408301526133d560a0830186612ad2565b82810360608401526133e78186612ad2565b9050828103608084015261313c81856127c256fea264697066735822122089ddd7820be7dc6d9df993cc7846a801cd8635d73751562a3c6be7d83e87561264736f6c63430008110033
Deployed Bytecode
0x608060405234801561001057600080fd5b50600436106101ac5760003560e01c80636c8b703f116100ee578063b48ab8b611610097578063f2fde38b11610071578063f2fde38b1461041b578063f5298aca1461042e578063f6eb127a14610441578063f8707ab51461045457600080fd5b8063b48ab8b6146103c7578063e985e9c5146103da578063f242432a1461040857600080fd5b8063731133e9116100c8578063731133e9146103795780638da5cb5b1461038c578063a22cb465146103b457600080fd5b80636c8b703f1461033b5780636d2bce341461034e578063715018a61461037157600080fd5b80632a55205a1161015b578063404899cd11610135578063404899cd146102e2578063469e4025146102f55780634d564dc0146103085780634e1273f41461031b57600080fd5b80632a55205a1461027d5780632eb2c2d6146102bc57806333373cea146102cf57600080fd5b80630e89341c1161018c5780630e89341c1461022757806312efaf1c146102475780631f72d8311461026a57600080fd5b80629ee39c146101b1578062fdd58e146101c657806301ffc9a714610204575b600080fd5b6101c46101bf36600461270e565b610467565b005b6101f16101d4366004612732565b600160209081526000928352604080842090915290825290205481565b6040519081526020015b60405180910390f35b61021761021236600461278c565b610550565b60405190151581526020016101fb565b61023a6102353660046127a9565b610681565b6040516101fb9190612826565b6102176102553660046127a9565b60046020526000908152604090205460ff1681565b6101c46102783660046127a9565b610723565b61029061028b366004612839565b6107c5565b6040805173ffffffffffffffffffffffffffffffffffffffff90931683526020830191909152016101fb565b6101c46102ca3660046128e2565b610837565b6101c46102dd366004612839565b610c2c565b6101c46102f03660046129a1565b610cdb565b6101c46103033660046129e3565b610dee565b6101c46103163660046129a1565b610f88565b61032e610329366004612a66565b611096565b6040516101fb9190612b0d565b61023a6103493660046127a9565b61120e565b61021761035c3660046127a9565b60056020526000908152604090205460ff1681565b6101c46112a8565b6101c4610387366004612b20565b611351565b60005460405173ffffffffffffffffffffffffffffffffffffffff90911681526020016101fb565b6101c46103c2366004612b8a565b6114b0565b6101c46103d5366004612cb0565b611547565b6102176103e8366004612d41565b600260209081526000928352604080842090915290825290205460ff1681565b6101c4610416366004612d6f565b6116d6565b6101c461042936600461270e565b6119e0565b6101c461043c366004612dd9565b611b2c565b6101c461044f366004612e0e565b611bf1565b6101c4610462366004612a66565b611cb6565b3361048760005473ffffffffffffffffffffffffffffffffffffffff1690565b73ffffffffffffffffffffffffffffffffffffffff1614610509576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064015b60405180910390fd5b600680547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff00000000000000000000000000000000000000000000000000000000831614806105e357507fd9b67a26000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b8061062f57507f0e89341c000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b8061067b57507f2a55205a000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b92915050565b600081815260036020526040902080546060919061069e90612e84565b80601f01602080910402602001604051908101604052809291908181526020018280546106ca90612e84565b80156107175780601f106106ec57610100808354040283529160200191610717565b820191906000526020600020905b8154815290600101906020018083116106fa57829003601f168201915b50505050509050919050565b3361074360005473ffffffffffffffffffffffffffffffffffffffff1690565b73ffffffffffffffffffffffffffffffffffffffff16146107c0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610500565b600755565b60008281526008602052604081205481908190156107f257506000848152600860205260409020546107f7565b506007545b60006127106108068387612f06565b6108109190612f1d565b60065473ffffffffffffffffffffffffffffffffffffffff169450925050505b9250929050565b8483146108a0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600f60248201527f4c454e4754485f4d49534d4154434800000000000000000000000000000000006044820152606401610500565b3373ffffffffffffffffffffffffffffffffffffffff891614806108f4575073ffffffffffffffffffffffffffffffffffffffff8816600090815260026020908152604080832033845290915290205460ff165b61095a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f4e4f545f415554484f52495a45440000000000000000000000000000000000006044820152606401610500565b60008060005b87811015610a335788888281811061097a5761097a612f58565b90506020020135925086868281811061099557610995612f58565b73ffffffffffffffffffffffffffffffffffffffff8e166000908152600160209081526040808320898452825282208054939091029490940135955085939250906109e1908490612f87565b909155505073ffffffffffffffffffffffffffffffffffffffff8a16600090815260016020908152604080832086845290915281208054849290610a26908490612f9a565b9091555050600101610960565b508873ffffffffffffffffffffffffffffffffffffffff168a73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb8b8b8b8b604051610aae9493929190612ff8565b60405180910390a473ffffffffffffffffffffffffffffffffffffffff89163b15610ba0576040517fbc197c81000000000000000000000000000000000000000000000000000000008082529073ffffffffffffffffffffffffffffffffffffffff8b169063bc197c8190610b359033908f908e908e908e908e908e908e90600401613068565b6020604051808303816000875af1158015610b54573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b7891906130d9565b7fffffffff000000000000000000000000000000000000000000000000000000001614610bba565b73ffffffffffffffffffffffffffffffffffffffff891615155b610c20576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f554e534146455f524543495049454e54000000000000000000000000000000006044820152606401610500565b50505050505050505050565b33610c4c60005473ffffffffffffffffffffffffffffffffffffffff1690565b73ffffffffffffffffffffffffffffffffffffffff1614610cc9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610500565b60009182526008602052604090912055565b33610cfb60005473ffffffffffffffffffffffffffffffffffffffff1690565b73ffffffffffffffffffffffffffffffffffffffff1614610d78576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610500565b60005b81811015610de957600160046000858585818110610d9b57610d9b612f58565b6020908102929092013583525081019190915260400160002080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016911515919091179055600101610d7b565b505050565b33610e0e60005473ffffffffffffffffffffffffffffffffffffffff1690565b73ffffffffffffffffffffffffffffffffffffffff1614610e8b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610500565b60008481526005602052604090205460ff1615610f04576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f4e6f206d6f7265206d696e74696e6720616c6c6f7765640000000000000000006044820152606401610500565b60005b85811015610f7f57610f77878783818110610f2457610f24612f58565b9050602002016020810190610f39919061270e565b868686868080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250611f3a92505050565b600101610f07565b50505050505050565b33610fa860005473ffffffffffffffffffffffffffffffffffffffff1690565b73ffffffffffffffffffffffffffffffffffffffff1614611025576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610500565b60005b81811015610de95760016005600085858581811061104857611048612f58565b6020908102929092013583525081019190915260400160002080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016911515919091179055600101611028565b6060838214611101576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600f60248201527f4c454e4754485f4d49534d4154434800000000000000000000000000000000006044820152606401610500565b8367ffffffffffffffff81111561111a5761111a612bc8565b604051908082528060200260200182016040528015611143578160200160208202803683370190505b50905060005b84811015611205576001600087878481811061116757611167612f58565b905060200201602081019061117c919061270e565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008585848181106111ca576111ca612f58565b905060200201358152602001908152602001600020548282815181106111f2576111f2612f58565b6020908102919091010152600101611149565b50949350505050565b6003602052600090815260409020805461122790612e84565b80601f016020809104026020016040519081016040528092919081815260200182805461125390612e84565b80156112a05780601f10611275576101008083540402835291602001916112a0565b820191906000526020600020905b81548152906001019060200180831161128357829003601f168201915b505050505081565b336112c860005473ffffffffffffffffffffffffffffffffffffffff1690565b73ffffffffffffffffffffffffffffffffffffffff1614611345576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610500565b61134f6000612140565b565b3361137160005473ffffffffffffffffffffffffffffffffffffffff1690565b73ffffffffffffffffffffffffffffffffffffffff16146113ee576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610500565b60008481526005602052604090205460ff1615611467576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f4e6f206d6f7265206d696e74696e6720616c6c6f7765640000000000000000006044820152606401610500565b6114a985858585858080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250611f3a92505050565b5050505050565b33600081815260026020908152604080832073ffffffffffffffffffffffffffffffffffffffff87168085529083529281902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001686151590811790915590519081529192917f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a35050565b3361156760005473ffffffffffffffffffffffffffffffffffffffff1690565b73ffffffffffffffffffffffffffffffffffffffff16146115e4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610500565b60005b8451811015611693576005600086838151811061160657611606612f58565b60209081029190910181015182528101919091526040016000205460ff161561168b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f4e6f206d6f7265206d696e74696e6720616c6c6f7765640000000000000000006044820152606401610500565b6001016115e7565b506114a985858585858080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506121b592505050565b3373ffffffffffffffffffffffffffffffffffffffff8716148061172a575073ffffffffffffffffffffffffffffffffffffffff8616600090815260026020908152604080832033845290915290205460ff165b611790576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f4e4f545f415554484f52495a45440000000000000000000000000000000000006044820152606401610500565b73ffffffffffffffffffffffffffffffffffffffff86166000908152600160209081526040808320878452909152812080548592906117d0908490612f87565b909155505073ffffffffffffffffffffffffffffffffffffffff8516600090815260016020908152604080832087845290915281208054859290611815908490612f9a565b9091555050604080518581526020810185905273ffffffffffffffffffffffffffffffffffffffff808816929089169133917fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f62910160405180910390a473ffffffffffffffffffffffffffffffffffffffff85163b15611958576040517ff23a6e61000000000000000000000000000000000000000000000000000000008082529073ffffffffffffffffffffffffffffffffffffffff87169063f23a6e61906118ed9033908b908a908a908a908a906004016130f6565b6020604051808303816000875af115801561190c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061193091906130d9565b7fffffffff000000000000000000000000000000000000000000000000000000001614611972565b73ffffffffffffffffffffffffffffffffffffffff851615155b6119d8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f554e534146455f524543495049454e54000000000000000000000000000000006044820152606401610500565b505050505050565b33611a0060005473ffffffffffffffffffffffffffffffffffffffff1690565b73ffffffffffffffffffffffffffffffffffffffff1614611a7d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610500565b73ffffffffffffffffffffffffffffffffffffffff8116611b20576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f64647265737300000000000000000000000000000000000000000000000000006064820152608401610500565b611b2981612140565b50565b3373ffffffffffffffffffffffffffffffffffffffff84161480611b80575073ffffffffffffffffffffffffffffffffffffffff8316600090815260026020908152604080832033845290915290205460ff165b611be6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f4e4f545f415554484f52495a45440000000000000000000000000000000000006044820152606401610500565b610de98383836124b0565b3373ffffffffffffffffffffffffffffffffffffffff84161480611c45575073ffffffffffffffffffffffffffffffffffffffff8316600090815260026020908152604080832033845290915290205460ff165b611cab576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f4e4f545f415554484f52495a45440000000000000000000000000000000000006044820152606401610500565b610de9838383612550565b33611cd660005473ffffffffffffffffffffffffffffffffffffffff1690565b73ffffffffffffffffffffffffffffffffffffffff1614611d53576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610500565b828114611dbc576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600f60248201527f4c656e677468206d69736d6174636800000000000000000000000000000000006044820152606401610500565b60005b838110156114a95760046000868684818110611ddd57611ddd612f58565b602090810292909201358352508101919091526040016000205460ff1615611e61576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f555249206c6f636b6564000000000000000000000000000000000000000000006044820152606401610500565b828282818110611e7357611e73612f58565b9050602002810190611e859190613148565b60036000888886818110611e9b57611e9b612f58565b9050602002013581526020019081526020016000209182611ebd9291906131f3565b50848482818110611ed057611ed0612f58565b905060200201357f6bb7ff708619ba0610cba295a58592e0451dee2622938c8755667688daf3529b848484818110611f0a57611f0a612f58565b9050602002810190611f1c9190613148565b604051611f2a92919061330d565b60405180910390a2600101611dbf565b73ffffffffffffffffffffffffffffffffffffffff8416600090815260016020908152604080832086845290915281208054849290611f7a908490612f9a565b9091555050604080518481526020810184905273ffffffffffffffffffffffffffffffffffffffff86169160009133917fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f62910160405180910390a473ffffffffffffffffffffffffffffffffffffffff84163b156120ba576040517ff23a6e61000000000000000000000000000000000000000000000000000000008082529073ffffffffffffffffffffffffffffffffffffffff86169063f23a6e619061204f903390600090899089908990600401613329565b6020604051808303816000875af115801561206e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061209291906130d9565b7fffffffff0000000000000000000000000000000000000000000000000000000016146120d4565b73ffffffffffffffffffffffffffffffffffffffff841615155b61213a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f554e534146455f524543495049454e54000000000000000000000000000000006044820152606401610500565b50505050565b6000805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b825182518114612221576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600f60248201527f4c454e4754485f4d49534d4154434800000000000000000000000000000000006044820152606401610500565b60005b818110156122cb5783818151811061223e5761223e612f58565b6020026020010151600160008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600087848151811061229957612299612f58565b6020026020010151815260200190815260200160002060008282546122be9190612f9a565b9091555050600101612224565b508473ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb878760405161234392919061336e565b60405180910390a473ffffffffffffffffffffffffffffffffffffffff85163b15612430576040517fbc197c81000000000000000000000000000000000000000000000000000000008082529073ffffffffffffffffffffffffffffffffffffffff87169063bc197c81906123c59033906000908a908a908a9060040161339c565b6020604051808303816000875af11580156123e4573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061240891906130d9565b7fffffffff00000000000000000000000000000000000000000000000000000000161461244a565b73ffffffffffffffffffffffffffffffffffffffff851615155b6114a9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f554e534146455f524543495049454e54000000000000000000000000000000006044820152606401610500565b73ffffffffffffffffffffffffffffffffffffffff83166000908152600160209081526040808320858452909152812080548392906124f0908490612f87565b9091555050604080518381526020810183905260009173ffffffffffffffffffffffffffffffffffffffff86169133917fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f62910160405180910390a4505050565b8151815181146125bc576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600f60248201527f4c454e4754485f4d49534d4154434800000000000000000000000000000000006044820152606401610500565b60005b81811015612666578281815181106125d9576125d9612f58565b6020026020010151600160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600086848151811061263457612634612f58565b6020026020010151815260200190815260200160002060008282546126599190612f87565b90915550506001016125bf565b50600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb86866040516126de92919061336e565b60405180910390a450505050565b73ffffffffffffffffffffffffffffffffffffffff81168114611b2957600080fd5b60006020828403121561272057600080fd5b813561272b816126ec565b9392505050565b6000806040838503121561274557600080fd5b8235612750816126ec565b946020939093013593505050565b7fffffffff0000000000000000000000000000000000000000000000000000000081168114611b2957600080fd5b60006020828403121561279e57600080fd5b813561272b8161275e565b6000602082840312156127bb57600080fd5b5035919050565b6000815180845260005b818110156127e8576020818501810151868301820152016127cc565b5060006020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b60208152600061272b60208301846127c2565b6000806040838503121561284c57600080fd5b50508035926020909101359150565b60008083601f84011261286d57600080fd5b50813567ffffffffffffffff81111561288557600080fd5b6020830191508360208260051b850101111561083057600080fd5b60008083601f8401126128b257600080fd5b50813567ffffffffffffffff8111156128ca57600080fd5b60208301915083602082850101111561083057600080fd5b60008060008060008060008060a0898b0312156128fe57600080fd5b8835612909816126ec565b97506020890135612919816126ec565b9650604089013567ffffffffffffffff8082111561293657600080fd5b6129428c838d0161285b565b909850965060608b013591508082111561295b57600080fd5b6129678c838d0161285b565b909650945060808b013591508082111561298057600080fd5b5061298d8b828c016128a0565b999c989b5096995094979396929594505050565b600080602083850312156129b457600080fd5b823567ffffffffffffffff8111156129cb57600080fd5b6129d78582860161285b565b90969095509350505050565b600080600080600080608087890312156129fc57600080fd5b863567ffffffffffffffff80821115612a1457600080fd5b612a208a838b0161285b565b909850965060208901359550604089013594506060890135915080821115612a4757600080fd5b50612a5489828a016128a0565b979a9699509497509295939492505050565b60008060008060408587031215612a7c57600080fd5b843567ffffffffffffffff80821115612a9457600080fd5b612aa08883890161285b565b90965094506020870135915080821115612ab957600080fd5b50612ac68782880161285b565b95989497509550505050565b600081518084526020808501945080840160005b83811015612b0257815187529582019590820190600101612ae6565b509495945050505050565b60208152600061272b6020830184612ad2565b600080600080600060808688031215612b3857600080fd5b8535612b43816126ec565b94506020860135935060408601359250606086013567ffffffffffffffff811115612b6d57600080fd5b612b79888289016128a0565b969995985093965092949392505050565b60008060408385031215612b9d57600080fd5b8235612ba8816126ec565b915060208301358015158114612bbd57600080fd5b809150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600082601f830112612c0857600080fd5b8135602067ffffffffffffffff80831115612c2557612c25612bc8565b8260051b6040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0603f83011681018181108482111715612c6857612c68612bc8565b604052938452858101830193838101925087851115612c8657600080fd5b83870191505b84821015612ca557813583529183019190830190612c8c565b979650505050505050565b600080600080600060808688031215612cc857600080fd5b8535612cd3816126ec565b9450602086013567ffffffffffffffff80821115612cf057600080fd5b612cfc89838a01612bf7565b95506040880135915080821115612d1257600080fd5b612d1e89838a01612bf7565b94506060880135915080821115612d3457600080fd5b50612b79888289016128a0565b60008060408385031215612d5457600080fd5b8235612d5f816126ec565b91506020830135612bbd816126ec565b60008060008060008060a08789031215612d8857600080fd5b8635612d93816126ec565b95506020870135612da3816126ec565b94506040870135935060608701359250608087013567ffffffffffffffff811115612dcd57600080fd5b612a5489828a016128a0565b600080600060608486031215612dee57600080fd5b8335612df9816126ec565b95602085013595506040909401359392505050565b600080600060608486031215612e2357600080fd5b8335612e2e816126ec565b9250602084013567ffffffffffffffff80821115612e4b57600080fd5b612e5787838801612bf7565b93506040860135915080821115612e6d57600080fd5b50612e7a86828701612bf7565b9150509250925092565b600181811c90821680612e9857607f821691505b602082108103612ed1577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b808202811582820484141761067b5761067b612ed7565b600082612f53577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b8181038181111561067b5761067b612ed7565b8082018082111561067b5761067b612ed7565b81835260007f07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff831115612fdf57600080fd5b8260051b80836020870137939093016020019392505050565b60408152600061300c604083018688612fad565b8281036020840152612ca5818587612fad565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b600073ffffffffffffffffffffffffffffffffffffffff808b168352808a1660208401525060a060408301526130a260a08301888a612fad565b82810360608401526130b5818789612fad565b905082810360808401526130ca81858761301f565b9b9a5050505050505050505050565b6000602082840312156130eb57600080fd5b815161272b8161275e565b600073ffffffffffffffffffffffffffffffffffffffff808916835280881660208401525085604083015284606083015260a0608083015261313c60a08301848661301f565b98975050505050505050565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe184360301811261317d57600080fd5b83018035915067ffffffffffffffff82111561319857600080fd5b60200191503681900382131561083057600080fd5b601f821115610de957600081815260208120601f850160051c810160208610156131d45750805b601f850160051c820191505b818110156119d8578281556001016131e0565b67ffffffffffffffff83111561320b5761320b612bc8565b61321f836132198354612e84565b836131ad565b6000601f841160018114613271576000851561323b5750838201355b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600387901b1c1916600186901b1783556114a9565b6000838152602090207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0861690835b828110156132c057868501358255602094850194600190920191016132a0565b50868210156132fb577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60f88860031b161c19848701351681555b505060018560011b0183555050505050565b60208152600061332160208301848661301f565b949350505050565b600073ffffffffffffffffffffffffffffffffffffffff808816835280871660208401525084604083015283606083015260a06080830152612ca560a08301846127c2565b6040815260006133816040830185612ad2565b82810360208401526133938185612ad2565b95945050505050565b600073ffffffffffffffffffffffffffffffffffffffff808816835280871660208401525060a060408301526133d560a0830186612ad2565b82810360608401526133e78186612ad2565b9050828103608084015261313c81856127c256fea264697066735822122089ddd7820be7dc6d9df993cc7846a801cd8635d73751562a3c6be7d83e87561264736f6c63430008110033
Deployed Bytecode Sourcemap
1217:11632:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12253:159;;;;;;:::i;:::-;;:::i;:::-;;2133:64;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;923:25:1;;;911:2;896:18;2133:64:0;;;;;;;;5917:342;;;;;;:::i;:::-;;:::i;:::-;;;1556:14:1;;1549:22;1531:41;;1519:2;1504:18;5917:342:0;1391:187:1;10152:108:0;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;2335:41::-;;;;;;:::i;:::-;;;;;;;;;;;;;;;;11916:139;;;;;;:::i;:::-;;:::i;12420:420::-;;;;;;:::i;:::-;;:::i;:::-;;;;2937:42:1;2925:55;;;2907:74;;3012:2;2997:18;;2990:34;;;;2880:18;12420:420:0;2733:297:1;3868:1247:0;;;;;;:::i;:::-;;:::i;12063:182::-;;;;;;:::i;:::-;;:::i;10724:224::-;;;;;;:::i;:::-;;:::i;9733:409::-;;;;;;:::i;:::-;;:::i;10956:230::-;;;;;;:::i;:::-;;:::i;5123:600::-;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;2283:43::-;;;;;;:::i;:::-;;:::i;2385:44::-;;;;;;:::i;:::-;;;;;;;;;;;;;;;;572:103;;;:::i;9062:254::-;;;;;;:::i;:::-;;:::i;351:87::-;397:7;424:6;351:87;;424:6;;;;8771:74:1;;8759:2;8744:18;351:87:0;8625:226:1;2925:207:0;;;;;;:::i;:::-;;:::i;9324:401::-;;;;;;:::i;:::-;;:::i;2206:68::-;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;3140:720;;;;;;:::i;:::-;;:::i;683:201::-;;;;;;:::i;:::-;;:::i;11194:242::-;;;;;;:::i;:::-;;:::i;11444:273::-;;;;;;:::i;:::-;;:::i;10268:448::-;;;;;;:::i;:::-;;:::i;12253:159::-;497:10;486:7;397;424:6;;;;351:87;486:7;:21;;;478:66;;;;;;;15115:2:1;478:66:0;;;15097:21:1;;;15134:18;;;15127:30;15193:34;15173:18;;;15166:62;15245:18;;478:66:0;;;;;;;;;12360:17:::1;:44:::0;;;::::1;;::::0;;;::::1;::::0;;;::::1;::::0;;12253:159::o;5917:342::-;5993:4;6030:25;;;;;;:77;;-1:-1:-1;6082:25:0;;;;;6030:77;:130;;;-1:-1:-1;6135:25:0;;;;;6030:130;:194;;;-1:-1:-1;6199:25:0;;;;;6030:194;6010:214;5917:342;-1:-1:-1;;5917:342:0:o;10152:108::-;10239:13;;;;:9;:13;;;;;10232:20;;10206:13;;10239;10232:20;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10152:108;;;:::o;11916:139::-;497:10;486:7;397;424:6;;;;351:87;486:7;:21;;;478:66;;;;;;;15115:2:1;478:66:0;;;15097:21:1;;;15134:18;;;15127:30;15193:34;15173:18;;;15166:62;15245:18;;478:66:0;14913:356:1;478:66:0;12005:11:::1;:42:::0;11916:139::o;12420:420::-;12500:16;12579:27;;;:18;:27;;;;;;12500:16;;;;12579:31;12576:155;;-1:-1:-1;12633:27:0;;;;:18;:27;;;;;;12576:155;;;-1:-1:-1;12708:11:0;;12576:155;12743:15;12781:5;12762:15;12774:3;12762:9;:15;:::i;:::-;12761:25;;;;:::i;:::-;12805:17;;;;;-1:-1:-1;12743:43:0;-1:-1:-1;;;12420:420:0;;;;;;:::o;3868:1247::-;4084:28;;;4076:56;;;;;;;16559:2:1;4076:56:0;;;16541:21:1;16598:2;16578:18;;;16571:30;16637:17;16617:18;;;16610:45;16672:18;;4076:56:0;16357:339:1;4076:56:0;4153:10;:18;;;;;:56;;-1:-1:-1;4175:22:0;;;;;;;:16;:22;;;;;;;;4198:10;4175:34;;;;;;;;;;4153:56;4145:83;;;;;;;16903:2:1;4145:83:0;;;16885:21:1;16942:2;16922:18;;;16915:30;16981:16;16961:18;;;16954:44;17015:18;;4145:83:0;16701:338:1;4145:83:0;4313:10;4334:14;4366:9;4361:364;4381:14;;;4361:364;;;4419:3;;4423:1;4419:6;;;;;;;:::i;:::-;;;;;;;4414:11;;4449:7;;4457:1;4449:10;;;;;;;:::i;:::-;4476:15;;;;;;;:9;4449:10;4476:15;;;;;;;:19;;;;;;;:29;;4449:10;;;;;;;;;;-1:-1:-1;4449:10:0;;4476:19;-1:-1:-1;4476:15:0;:29;;4449:10;;4476:29;:::i;:::-;;;;-1:-1:-1;;4520:13:0;;;;;;;:9;:13;;;;;;;;:17;;;;;;;;:27;;4541:6;;4520:13;:27;;4541:6;;4520:27;:::i;:::-;;;;-1:-1:-1;;4695:3:0;;4361:364;;;;4774:2;4742:49;;4768:4;4742:49;;4756:10;4742:49;;;4778:3;;4783:7;;4742:49;;;;;;;;;:::i;:::-;;;;;;;;4826:14;;;;:19;:237;;4901:85;;5011:52;4901:85;;;5011:52;4901:47;;;;5011:52;;4901:85;;4949:10;;4961:4;;4967:3;;;;4972:7;;;;4981:4;;;;4901:85;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:162;;;4826:237;;;4865:16;;;;;4826:237;4804:303;;;;;;;20104:2:1;4804:303:0;;;20086:21:1;20143:2;20123:18;;;20116:30;20182:18;20162;;;20155:46;20218:18;;4804:303:0;19902:340:1;4804:303:0;4065:1050;;3868:1247;;;;;;;;:::o;12063:182::-;497:10;486:7;397;424:6;;;;351:87;486:7;:21;;;478:66;;;;;;;15115:2:1;478:66:0;;;15097:21:1;;;15134:18;;;15127:30;15193:34;15173:18;;;15166:62;15245:18;;478:66:0;14913:356:1;478:66:0;12179:27:::1;::::0;;;:18:::1;:27;::::0;;;;;:58;12063:182::o;10724:224::-;497:10;486:7;397;424:6;;;;351:87;486:7;:21;;;478:66;;;;;;;15115:2:1;478:66:0;;;15097:21:1;;;15134:18;;;15127:30;15193:34;15173:18;;;15166:62;15245:18;;478:66:0;14913:356:1;478:66:0;10827:9:::1;10822:108;10842:18:::0;;::::1;10822:108;;;10910:4;10886:9;:21;10896:7;;10904:1;10896:10;;;;;;;:::i;:::-;;::::0;;::::1;::::0;;;::::1;;10886:21:::0;;-1:-1:-1;10886:21:0;::::1;::::0;;;;;;-1:-1:-1;10886:21:0;:28;;;::::1;::::0;::::1;;::::0;;;::::1;::::0;;-1:-1:-1;10862:3:0::1;10822:108;;;;10724:224:::0;;:::o;9733:409::-;497:10;486:7;397;424:6;;;;351:87;486:7;:21;;;478:66;;;;;;;15115:2:1;478:66:0;;;15097:21:1;;;15134:18;;;15127:30;15193:34;15173:18;;;15166:62;15245:18;;478:66:0;14913:356:1;478:66:0;9920:16:::1;::::0;;;:12:::1;:16;::::0;;;;;::::1;;9919:17;9911:53;;;::::0;::::1;::::0;;20449:2:1;9911:53:0::1;::::0;::::1;20431:21:1::0;20488:2;20468:18;;;20461:30;20527:25;20507:18;;;20500:53;20570:18;;9911:53:0::1;20247:347:1::0;9911:53:0::1;10005:9;10000:121;10020:21:::0;;::::1;10000:121;;;10067:38;10073:10;;10084:1;10073:13;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;10088:2;10092:6;10100:4;;10067:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;::::0;;;;-1:-1:-1;10067:5:0::1;::::0;-1:-1:-1;;;10067:38:0:i:1;:::-;10043:3;;10000:121;;;;9733:409:::0;;;;;;:::o;10956:230::-;497:10;486:7;397;424:6;;;;351:87;486:7;:21;;;478:66;;;;;;;15115:2:1;478:66:0;;;15097:21:1;;;15134:18;;;15127:30;15193:34;15173:18;;;15166:62;15245:18;;478:66:0;14913:356:1;478:66:0;11062:9:::1;11057:111;11077:18:::0;;::::1;11057:111;;;11148:4;11121:12;:24;11134:7;;11142:1;11134:10;;;;;;;:::i;:::-;;::::0;;::::1;::::0;;;::::1;;11121:24:::0;;-1:-1:-1;11121:24:0;::::1;::::0;;;;;;-1:-1:-1;11121:24:0;:31;;;::::1;::::0;::::1;;::::0;;;::::1;::::0;;-1:-1:-1;11097:3:0::1;11057:111;;5123:600:::0;5263:25;5314:27;;;5306:55;;;;;;;16559:2:1;5306:55:0;;;16541:21:1;16598:2;16578:18;;;16571:30;16637:17;16617:18;;;16610:45;16672:18;;5306:55:0;16357:339:1;5306:55:0;5399:6;5385:28;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;5385:28:0;;5374:39;;5589:9;5584:121;5604:17;;;5584:121;;;5661:9;:20;5671:6;;5678:1;5671:9;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;5661:20;;;;;;;;;;;;;;;:28;5682:3;;5686:1;5682:6;;;;;;;:::i;:::-;;;;;;;5661:28;;;;;;;;;;;;5647:8;5656:1;5647:11;;;;;;;;:::i;:::-;;;;;;;;;;:42;5623:3;;5584:121;;;;5123:600;;;;;;:::o;2283:43::-;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;572:103::-;497:10;486:7;397;424:6;;;;351:87;486:7;:21;;;478:66;;;;;;;15115:2:1;478:66:0;;;15097:21:1;;;15134:18;;;15127:30;15193:34;15173:18;;;15166:62;15245:18;;478:66:0;14913:356:1;478:66:0;637:30:::1;664:1;637:18;:30::i;:::-;572:103::o:0;9062:254::-;497:10;486:7;397;424:6;;;;351:87;486:7;:21;;;478:66;;;;;;;15115:2:1;478:66:0;;;15097:21:1;;;15134:18;;;15127:30;15193:34;15173:18;;;15166:62;15245:18;;478:66:0;14913:356:1;478:66:0;9226:16:::1;::::0;;;:12:::1;:16;::::0;;;;;::::1;;9225:17;9217:53;;;::::0;::::1;::::0;;20449:2:1;9217:53:0::1;::::0;::::1;20431:21:1::0;20488:2;20468:18;;;20461:30;20527:25;20507:18;;;20500:53;20570:18;;9217:53:0::1;20247:347:1::0;9217:53:0::1;9281:27;9287:2;9291;9295:6;9303:4;;9281:27;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;::::0;;;;-1:-1:-1;9281:5:0::1;::::0;-1:-1:-1;;;9281:27:0:i:1;:::-;9062:254:::0;;;;;:::o;2925:207::-;3028:10;3011:28;;;;:16;:28;;;;;;;;;:38;;;;;;;;;;;;:49;;;;;;;;;;;;;3078:46;;1531:41:1;;;3011:38:0;;3028:10;3078:46;;1504:18:1;3078:46:0;;;;;;;2925:207;;:::o;9324:401::-;497:10;486:7;397;424:6;;;;351:87;486:7;:21;;;478:66;;;;;;;15115:2:1;478:66:0;;;15097:21:1;;;15134:18;;;15127:30;15193:34;15173:18;;;15166:62;15245:18;;478:66:0;14913:356:1;478:66:0;9534:9:::1;9529:133;9553:3;:10;9549:1;:14;9529:133;;;9598:12;:20;9611:3;9615:1;9611:6;;;;;;;;:::i;:::-;;::::0;;::::1;::::0;;;;;;;9598:20;;;::::1;::::0;;;;;;-1:-1:-1;9598:20:0;;::::1;;9597:21;9589:57;;;::::0;::::1;::::0;;20449:2:1;9589:57:0::1;::::0;::::1;20431:21:1::0;20488:2;20468:18;;;20461:30;20527:25;20507:18;;;20500:53;20570:18;;9589:57:0::1;20247:347:1::0;9589:57:0::1;9565:3;;9529:133;;;;9683:34;9694:2;9698:3;9703:7;9712:4;;9683:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;::::0;;;;-1:-1:-1;9683:10:0::1;::::0;-1:-1:-1;;;9683:34:0:i:1;3140:720::-:0;3327:10;:18;;;;;:56;;-1:-1:-1;3349:22:0;;;;;;;:16;:22;;;;;;;;3372:10;3349:34;;;;;;;;;;3327:56;3319:83;;;;;;;16903:2:1;3319:83:0;;;16885:21:1;16942:2;16922:18;;;16915:30;16981:16;16961:18;;;16954:44;17015:18;;3319:83:0;16701:338:1;3319:83:0;3415:15;;;;;;;:9;:15;;;;;;;;:19;;;;;;;;:29;;3438:6;;3415:15;:29;;3438:6;;3415:29;:::i;:::-;;;;-1:-1:-1;;3455:13:0;;;;;;;:9;:13;;;;;;;;:17;;;;;;;;:27;;3476:6;;3455:13;:27;;3476:6;;3455:27;:::i;:::-;;;;-1:-1:-1;;3500:48:0;;;20773:25:1;;;20829:2;20814:18;;20807:34;;;3500:48:0;;;;;;;;;3515:10;;3500:48;;20746:18:1;3500:48:0;;;;;;;3583:14;;;;:19;:225;;3658:78;;3761:47;3658:78;;;3761:47;3658:42;;;;3761:47;;3658:78;;3701:10;;3713:4;;3719:2;;3723:6;;3731:4;;;;3658:78;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:150;;;3583:225;;;3622:16;;;;;3583:225;3561:291;;;;;;;20104:2:1;3561:291:0;;;20086:21:1;20143:2;20123:18;;;20116:30;20182:18;20162;;;20155:46;20218:18;;3561:291:0;19902:340:1;3561:291:0;3140:720;;;;;;:::o;683:201::-;497:10;486:7;397;424:6;;;;351:87;486:7;:21;;;478:66;;;;;;;15115:2:1;478:66:0;;;15097:21:1;;;15134:18;;;15127:30;15193:34;15173:18;;;15166:62;15245:18;;478:66:0;14913:356:1;478:66:0;772:22:::1;::::0;::::1;764:73;;;::::0;::::1;::::0;;21669:2:1;764:73:0::1;::::0;::::1;21651:21:1::0;21708:2;21688:18;;;21681:30;21747:34;21727:18;;;21720:62;21818:8;21798:18;;;21791:36;21844:19;;764:73:0::1;21467:402:1::0;764:73:0::1;848:28;867:8;848:18;:28::i;:::-;683:201:::0;:::o;11194:242::-;11319:10;:18;;;;;:56;;-1:-1:-1;11341:22:0;;;;;;;:16;:22;;;;;;;;11364:10;11341:34;;;;;;;;;;11319:56;11311:83;;;;;;;16903:2:1;11311:83:0;;;16885:21:1;16942:2;16922:18;;;16915:30;16981:16;16961:18;;;16954:44;17015:18;;11311:83:0;16701:338:1;11311:83:0;11405:23;11411:4;11417:2;11421:6;11405:5;:23::i;11444:273::-;11593:10;:18;;;;;:56;;-1:-1:-1;11615:22:0;;;;;;;:16;:22;;;;;;;;11638:10;11615:34;;;;;;;;;;11593:56;11585:83;;;;;;;16903:2:1;11585:83:0;;;16885:21:1;16942:2;16922:18;;;16915:30;16981:16;16961:18;;;16954:44;17015:18;;11585:83:0;16701:338:1;11585:83:0;11679:30;11690:4;11696:3;11701:7;11679:10;:30::i;10268:448::-;497:10;486:7;397;424:6;;;;351:87;486:7;:21;;;478:66;;;;;;;15115:2:1;478:66:0;;;15097:21:1;;;15134:18;;;15127:30;15193:34;15173:18;;;15166:62;15245:18;;478:66:0;14913:356:1;478:66:0;10374:31;;::::1;10366:59;;;::::0;::::1;::::0;;22076:2:1;10366:59:0::1;::::0;::::1;22058:21:1::0;22115:2;22095:18;;;22088:30;22154:17;22134:18;;;22127:45;22189:18;;10366:59:0::1;21874:339:1::0;10366:59:0::1;10472:9;10467:231;10487:18:::0;;::::1;10467:231;;;10540:9;:21;10550:7;;10558:1;10550:10;;;;;;;:::i;:::-;;::::0;;::::1;::::0;;;::::1;;10540:21:::0;;-1:-1:-1;10540:21:0;::::1;::::0;;;;;;-1:-1:-1;10540:21:0;;::::1;;10539:22;10531:45;;;::::0;::::1;::::0;;22420:2:1;10531:45:0::1;::::0;::::1;22402:21:1::0;22459:2;22439:18;;;22432:30;22498:12;22478:18;;;22471:40;22528:18;;10531:45:0::1;22218:334:1::0;10531:45:0::1;10621:6;;10628:1;10621:9;;;;;;;:::i;:::-;;;;;;;;;;;;:::i;:::-;10597;:21;10607:7;;10615:1;10607:10;;;;;;;:::i;:::-;;;;;;;10597:21;;;;;;;;;;;:33;;;;;;;:::i;:::-;;10671:7;;10679:1;10671:10;;;;;;;:::i;:::-;;;;;;;10656:26;10660:6;;10667:1;10660:9;;;;;;;:::i;:::-;;;;;;;;;;;;:::i;:::-;10656:26;;;;;;;:::i;:::-;;;;;;;;10507:3;;10467:231;;6459:562:::0;6604:13;;;;;;;:9;:13;;;;;;;;:17;;;;;;;;:27;;6625:6;;6604:13;:27;;6625:6;;6604:27;:::i;:::-;;;;-1:-1:-1;;6649:54:0;;;20773:25:1;;;20829:2;20814:18;;20807:34;;;6649:54:0;;;;6684:1;;6664:10;;6649:54;;20746:18:1;6649:54:0;;;;;;;6738:14;;;;:19;:231;;6813:84;;6922:47;6813:84;;;6922:47;6813:42;;;;6922:47;;6813:84;;6856:10;;6876:1;;6880:2;;6884:6;;6892:4;;6813:84;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:156;;;6738:231;;;6777:16;;;;;6738:231;6716:297;;;;;;;20104:2:1;6716:297:0;;;20086:21:1;20143:2;20123:18;;;20116:30;20182:18;20162;;;20155:46;20218:18;;6716:297:0;19902:340:1;6716:297:0;6459:562;;;;:::o;892:191::-;966:16;985:6;;;1002:17;;;;;;;;;;1035:40;;985:6;;;;;;;1035:40;;966:16;1035:40;955:128;892:191;:::o;7029:965::-;7219:10;;7280:14;;7267:27;;7259:55;;;;;;;16559:2:1;7259:55:0;;;16541:21:1;16598:2;16578:18;;;16571:30;16637:17;16617:18;;;16610:45;16672:18;;7259:55:0;16357:339:1;7259:55:0;7332:9;7327:265;7351:9;7347:1;:13;7327:265;;;7404:7;7412:1;7404:10;;;;;;;;:::i;:::-;;;;;;;7379:9;:13;7389:2;7379:13;;;;;;;;;;;;;;;:21;7393:3;7397:1;7393:6;;;;;;;;:::i;:::-;;;;;;;7379:21;;;;;;;;;;;;:35;;;;;;;:::i;:::-;;;;-1:-1:-1;;7562:3:0;;7327:265;;;;7647:2;7609:55;;7643:1;7609:55;;7623:10;7609:55;;;7651:3;7656:7;7609:55;;;;;;;:::i;:::-;;;;;;;;7699:14;;;;:19;:243;;7774:91;;7890:52;7774:91;;;7890:52;7774:47;;;;7890:52;;7774:91;;7822:10;;7842:1;;7846:3;;7851:7;;7860:4;;7774:91;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:168;;;7699:243;;;7738:16;;;;;7699:243;7677:309;;;;;;;20104:2:1;7677:309:0;;;20086:21:1;20143:2;20123:18;;;20116:30;20182:18;20162;;;20155:46;20218:18;;7677:309:0;19902:340:1;8631:230:0;8750:15;;;;;;;:9;:15;;;;;;;;:19;;;;;;;;:29;;8773:6;;8750:15;:29;;8773:6;;8750:29;:::i;:::-;;;;-1:-1:-1;;8797:56:0;;;20773:25:1;;;20829:2;20814:18;;20807:34;;;8838:1:0;;8797:56;;;;8812:10;;8797:56;;20746:18:1;8797:56:0;;;;;;;8631:230;;;:::o;8002:621::-;8166:10;;8227:14;;8214:27;;8206:55;;;;;;;16559:2:1;8206:55:0;;;16541:21:1;16598:2;16578:18;;;16571:30;16637:17;16617:18;;;16610:45;16672:18;;8206:55:0;16357:339:1;8206:55:0;8279:9;8274:267;8298:9;8294:1;:13;8274:267;;;8353:7;8361:1;8353:10;;;;;;;;:::i;:::-;;;;;;;8326:9;:15;8336:4;8326:15;;;;;;;;;;;;;;;:23;8342:3;8346:1;8342:6;;;;;;;;:::i;:::-;;;;;;;8326:23;;;;;;;;;;;;:37;;;;;;;:::i;:::-;;;;-1:-1:-1;;8511:3:0;;8274:267;;;;8598:1;8558:57;;8584:4;8558:57;;8572:10;8558:57;;;8602:3;8607:7;8558:57;;;;;;;:::i;:::-;;;;;;;;8135:488;8002:621;;;:::o;14:162:1:-;108:42;101:5;97:54;90:5;87:65;77:93;;166:1;163;156:12;181:263;248:6;301:2;289:9;280:7;276:23;272:32;269:52;;;317:1;314;307:12;269:52;356:9;343:23;375:39;408:5;375:39;:::i;:::-;433:5;181:263;-1:-1:-1;;;181:263:1:o;449:323::-;517:6;525;578:2;566:9;557:7;553:23;549:32;546:52;;;594:1;591;584:12;546:52;633:9;620:23;652:39;685:5;652:39;:::i;:::-;710:5;762:2;747:18;;;;734:32;;-1:-1:-1;;;449:323:1:o;959:177::-;1044:66;1037:5;1033:78;1026:5;1023:89;1013:117;;1126:1;1123;1116:12;1141:245;1199:6;1252:2;1240:9;1231:7;1227:23;1223:32;1220:52;;;1268:1;1265;1258:12;1220:52;1307:9;1294:23;1326:30;1350:5;1326:30;:::i;1583:180::-;1642:6;1695:2;1683:9;1674:7;1670:23;1666:32;1663:52;;;1711:1;1708;1701:12;1663:52;-1:-1:-1;1734:23:1;;1583:180;-1:-1:-1;1583:180:1:o;1768:482::-;1810:3;1848:5;1842:12;1875:6;1870:3;1863:19;1900:1;1910:162;1924:6;1921:1;1918:13;1910:162;;;1986:4;2042:13;;;2038:22;;2032:29;2014:11;;;2010:20;;2003:59;1939:12;1910:162;;;1914:3;2117:1;2110:4;2101:6;2096:3;2092:16;2088:27;2081:38;2239:4;2169:66;2164:2;2156:6;2152:15;2148:88;2143:3;2139:98;2135:109;2128:116;;;1768:482;;;;:::o;2255:220::-;2404:2;2393:9;2386:21;2367:4;2424:45;2465:2;2454:9;2450:18;2442:6;2424:45;:::i;2480:248::-;2548:6;2556;2609:2;2597:9;2588:7;2584:23;2580:32;2577:52;;;2625:1;2622;2615:12;2577:52;-1:-1:-1;;2648:23:1;;;2718:2;2703:18;;;2690:32;;-1:-1:-1;2480:248:1:o;3035:367::-;3098:8;3108:6;3162:3;3155:4;3147:6;3143:17;3139:27;3129:55;;3180:1;3177;3170:12;3129:55;-1:-1:-1;3203:20:1;;3246:18;3235:30;;3232:50;;;3278:1;3275;3268:12;3232:50;3315:4;3307:6;3303:17;3291:29;;3375:3;3368:4;3358:6;3355:1;3351:14;3343:6;3339:27;3335:38;3332:47;3329:67;;;3392:1;3389;3382:12;3407:347;3458:8;3468:6;3522:3;3515:4;3507:6;3503:17;3499:27;3489:55;;3540:1;3537;3530:12;3489:55;-1:-1:-1;3563:20:1;;3606:18;3595:30;;3592:50;;;3638:1;3635;3628:12;3592:50;3675:4;3667:6;3663:17;3651:29;;3727:3;3720:4;3711:6;3703;3699:19;3695:30;3692:39;3689:59;;;3744:1;3741;3734:12;3759:1354;3919:6;3927;3935;3943;3951;3959;3967;3975;4028:3;4016:9;4007:7;4003:23;3999:33;3996:53;;;4045:1;4042;4035:12;3996:53;4084:9;4071:23;4103:39;4136:5;4103:39;:::i;:::-;4161:5;-1:-1:-1;4218:2:1;4203:18;;4190:32;4231:41;4190:32;4231:41;:::i;:::-;4291:7;-1:-1:-1;4349:2:1;4334:18;;4321:32;4372:18;4402:14;;;4399:34;;;4429:1;4426;4419:12;4399:34;4468:70;4530:7;4521:6;4510:9;4506:22;4468:70;:::i;:::-;4557:8;;-1:-1:-1;4442:96:1;-1:-1:-1;4645:2:1;4630:18;;4617:32;;-1:-1:-1;4661:16:1;;;4658:36;;;4690:1;4687;4680:12;4658:36;4729:72;4793:7;4782:8;4771:9;4767:24;4729:72;:::i;:::-;4820:8;;-1:-1:-1;4703:98:1;-1:-1:-1;4908:3:1;4893:19;;4880:33;;-1:-1:-1;4925:16:1;;;4922:36;;;4954:1;4951;4944:12;4922:36;;4993:60;5045:7;5034:8;5023:9;5019:24;4993:60;:::i;:::-;3759:1354;;;;-1:-1:-1;3759:1354:1;;-1:-1:-1;3759:1354:1;;;;;;5072:8;-1:-1:-1;;;3759:1354:1:o;5118:437::-;5204:6;5212;5265:2;5253:9;5244:7;5240:23;5236:32;5233:52;;;5281:1;5278;5271:12;5233:52;5321:9;5308:23;5354:18;5346:6;5343:30;5340:50;;;5386:1;5383;5376:12;5340:50;5425:70;5487:7;5478:6;5467:9;5463:22;5425:70;:::i;:::-;5514:8;;5399:96;;-1:-1:-1;5118:437:1;-1:-1:-1;;;;5118:437:1:o;5560:882::-;5684:6;5692;5700;5708;5716;5724;5777:3;5765:9;5756:7;5752:23;5748:33;5745:53;;;5794:1;5791;5784:12;5745:53;5834:9;5821:23;5863:18;5904:2;5896:6;5893:14;5890:34;;;5920:1;5917;5910:12;5890:34;5959:70;6021:7;6012:6;6001:9;5997:22;5959:70;:::i;:::-;6048:8;;-1:-1:-1;5933:96:1;-1:-1:-1;6130:2:1;6115:18;;6102:32;;-1:-1:-1;6181:2:1;6166:18;;6153:32;;-1:-1:-1;6238:2:1;6223:18;;6210:32;;-1:-1:-1;6254:16:1;;;6251:36;;;6283:1;6280;6273:12;6251:36;;6322:60;6374:7;6363:8;6352:9;6348:24;6322:60;:::i;:::-;5560:882;;;;-1:-1:-1;5560:882:1;;-1:-1:-1;5560:882:1;;6401:8;;5560:882;-1:-1:-1;;;5560:882:1:o;6447:773::-;6569:6;6577;6585;6593;6646:2;6634:9;6625:7;6621:23;6617:32;6614:52;;;6662:1;6659;6652:12;6614:52;6702:9;6689:23;6731:18;6772:2;6764:6;6761:14;6758:34;;;6788:1;6785;6778:12;6758:34;6827:70;6889:7;6880:6;6869:9;6865:22;6827:70;:::i;:::-;6916:8;;-1:-1:-1;6801:96:1;-1:-1:-1;7004:2:1;6989:18;;6976:32;;-1:-1:-1;7020:16:1;;;7017:36;;;7049:1;7046;7039:12;7017:36;;7088:72;7152:7;7141:8;7130:9;7126:24;7088:72;:::i;:::-;6447:773;;;;-1:-1:-1;7179:8:1;-1:-1:-1;;;;6447:773:1:o;7225:435::-;7278:3;7316:5;7310:12;7343:6;7338:3;7331:19;7369:4;7398:2;7393:3;7389:12;7382:19;;7435:2;7428:5;7424:14;7456:1;7466:169;7480:6;7477:1;7474:13;7466:169;;;7541:13;;7529:26;;7575:12;;;;7610:15;;;;7502:1;7495:9;7466:169;;;-1:-1:-1;7651:3:1;;7225:435;-1:-1:-1;;;;;7225:435:1:o;7665:261::-;7844:2;7833:9;7826:21;7807:4;7864:56;7916:2;7905:9;7901:18;7893:6;7864:56;:::i;7931:689::-;8028:6;8036;8044;8052;8060;8113:3;8101:9;8092:7;8088:23;8084:33;8081:53;;;8130:1;8127;8120:12;8081:53;8169:9;8156:23;8188:39;8221:5;8188:39;:::i;:::-;8246:5;-1:-1:-1;8298:2:1;8283:18;;8270:32;;-1:-1:-1;8349:2:1;8334:18;;8321:32;;-1:-1:-1;8404:2:1;8389:18;;8376:32;8431:18;8420:30;;8417:50;;;8463:1;8460;8453:12;8417:50;8502:58;8552:7;8543:6;8532:9;8528:22;8502:58;:::i;:::-;7931:689;;;;-1:-1:-1;7931:689:1;;-1:-1:-1;8579:8:1;;8476:84;7931:689;-1:-1:-1;;;7931:689:1:o;8856:424::-;8921:6;8929;8982:2;8970:9;8961:7;8957:23;8953:32;8950:52;;;8998:1;8995;8988:12;8950:52;9037:9;9024:23;9056:39;9089:5;9056:39;:::i;:::-;9114:5;-1:-1:-1;9171:2:1;9156:18;;9143:32;9213:15;;9206:23;9194:36;;9184:64;;9244:1;9241;9234:12;9184:64;9267:7;9257:17;;;8856:424;;;;;:::o;9285:184::-;9337:77;9334:1;9327:88;9434:4;9431:1;9424:15;9458:4;9455:1;9448:15;9474:961;9528:5;9581:3;9574:4;9566:6;9562:17;9558:27;9548:55;;9599:1;9596;9589:12;9548:55;9635:6;9622:20;9661:4;9684:18;9721:2;9717;9714:10;9711:36;;;9727:18;;:::i;:::-;9773:2;9770:1;9766:10;9805:2;9799:9;9864:66;9859:2;9855;9851:11;9847:84;9839:6;9835:97;9982:6;9970:10;9967:22;9962:2;9950:10;9947:18;9944:46;9941:72;;;9993:18;;:::i;:::-;10029:2;10022:22;10079:18;;;10155:15;;;10151:24;;;10113:15;;;;-1:-1:-1;10187:15:1;;;10184:35;;;10215:1;10212;10205:12;10184:35;10251:2;10243:6;10239:15;10228:26;;10263:142;10279:6;10274:3;10271:15;10263:142;;;10345:17;;10333:30;;10383:12;;;;10296;;;;10263:142;;;10423:6;9474:961;-1:-1:-1;;;;;;;9474:961:1:o;10440:1026::-;10587:6;10595;10603;10611;10619;10672:3;10660:9;10651:7;10647:23;10643:33;10640:53;;;10689:1;10686;10679:12;10640:53;10728:9;10715:23;10747:39;10780:5;10747:39;:::i;:::-;10805:5;-1:-1:-1;10861:2:1;10846:18;;10833:32;10884:18;10914:14;;;10911:34;;;10941:1;10938;10931:12;10911:34;10964:61;11017:7;11008:6;10997:9;10993:22;10964:61;:::i;:::-;10954:71;;11078:2;11067:9;11063:18;11050:32;11034:48;;11107:2;11097:8;11094:16;11091:36;;;11123:1;11120;11113:12;11091:36;11146:63;11201:7;11190:8;11179:9;11175:24;11146:63;:::i;:::-;11136:73;;11262:2;11251:9;11247:18;11234:32;11218:48;;11291:2;11281:8;11278:16;11275:36;;;11307:1;11304;11297:12;11275:36;;11346:60;11398:7;11387:8;11376:9;11372:24;11346:60;:::i;11471:404::-;11539:6;11547;11600:2;11588:9;11579:7;11575:23;11571:32;11568:52;;;11616:1;11613;11606:12;11568:52;11655:9;11642:23;11674:39;11707:5;11674:39;:::i;:::-;11732:5;-1:-1:-1;11789:2:1;11774:18;;11761:32;11802:41;11761:32;11802:41;:::i;11880:839::-;11986:6;11994;12002;12010;12018;12026;12079:3;12067:9;12058:7;12054:23;12050:33;12047:53;;;12096:1;12093;12086:12;12047:53;12135:9;12122:23;12154:39;12187:5;12154:39;:::i;:::-;12212:5;-1:-1:-1;12269:2:1;12254:18;;12241:32;12282:41;12241:32;12282:41;:::i;:::-;12342:7;-1:-1:-1;12396:2:1;12381:18;;12368:32;;-1:-1:-1;12447:2:1;12432:18;;12419:32;;-1:-1:-1;12502:3:1;12487:19;;12474:33;12530:18;12519:30;;12516:50;;;12562:1;12559;12552:12;12516:50;12601:58;12651:7;12642:6;12631:9;12627:22;12601:58;:::i;12984:391::-;13061:6;13069;13077;13130:2;13118:9;13109:7;13105:23;13101:32;13098:52;;;13146:1;13143;13136:12;13098:52;13185:9;13172:23;13204:39;13237:5;13204:39;:::i;:::-;13262:5;13314:2;13299:18;;13286:32;;-1:-1:-1;13365:2:1;13350:18;;;13337:32;;12984:391;-1:-1:-1;;;12984:391:1:o;13380:738::-;13507:6;13515;13523;13576:2;13564:9;13555:7;13551:23;13547:32;13544:52;;;13592:1;13589;13582:12;13544:52;13631:9;13618:23;13650:39;13683:5;13650:39;:::i;:::-;13708:5;-1:-1:-1;13764:2:1;13749:18;;13736:32;13787:18;13817:14;;;13814:34;;;13844:1;13841;13834:12;13814:34;13867:61;13920:7;13911:6;13900:9;13896:22;13867:61;:::i;:::-;13857:71;;13981:2;13970:9;13966:18;13953:32;13937:48;;14010:2;14000:8;13997:16;13994:36;;;14026:1;14023;14016:12;13994:36;;14049:63;14104:7;14093:8;14082:9;14078:24;14049:63;:::i;:::-;14039:73;;;13380:738;;;;;:::o;15274:437::-;15353:1;15349:12;;;;15396;;;15417:61;;15471:4;15463:6;15459:17;15449:27;;15417:61;15524:2;15516:6;15513:14;15493:18;15490:38;15487:218;;15561:77;15558:1;15551:88;15662:4;15659:1;15652:15;15690:4;15687:1;15680:15;15487:218;;15274:437;;;:::o;15716:184::-;15768:77;15765:1;15758:88;15865:4;15862:1;15855:15;15889:4;15886:1;15879:15;15905:168;15978:9;;;16009;;16026:15;;;16020:22;;16006:37;15996:71;;16047:18;;:::i;16078:274::-;16118:1;16144;16134:189;;16179:77;16176:1;16169:88;16280:4;16277:1;16270:15;16308:4;16305:1;16298:15;16134:189;-1:-1:-1;16337:9:1;;16078:274::o;17044:184::-;17096:77;17093:1;17086:88;17193:4;17190:1;17183:15;17217:4;17214:1;17207:15;17233:128;17300:9;;;17321:11;;;17318:37;;;17335:18;;:::i;17366:125::-;17431:9;;;17452:10;;;17449:36;;;17465:18;;:::i;17496:358::-;17596:6;17591:3;17584:19;17566:3;17626:66;17618:6;17615:78;17612:98;;;17706:1;17703;17696:12;17612:98;17742:6;17739:1;17735:14;17794:8;17787:5;17780:4;17775:3;17771:14;17758:45;17823:18;;;;17843:4;17819:29;;17496:358;-1:-1:-1;;;17496:358:1:o;17859:519::-;18136:2;18125:9;18118:21;18099:4;18162:73;18231:2;18220:9;18216:18;18208:6;18200;18162:73;:::i;:::-;18283:9;18275:6;18271:22;18266:2;18255:9;18251:18;18244:50;18311:61;18365:6;18357;18349;18311:61;:::i;18383:325::-;18471:6;18466:3;18459:19;18523:6;18516:5;18509:4;18504:3;18500:14;18487:43;;18575:1;18568:4;18559:6;18554:3;18550:16;18546:27;18539:38;18441:3;18697:4;18627:66;18622:2;18614:6;18610:15;18606:88;18601:3;18597:98;18593:109;18586:116;;18383:325;;;;:::o;18713:930::-;19065:4;19094:42;19175:2;19167:6;19163:15;19152:9;19145:34;19227:2;19219:6;19215:15;19210:2;19199:9;19195:18;19188:43;;19267:3;19262:2;19251:9;19247:18;19240:31;19294:74;19363:3;19352:9;19348:19;19340:6;19332;19294:74;:::i;:::-;19416:9;19408:6;19404:22;19399:2;19388:9;19384:18;19377:50;19450:61;19504:6;19496;19488;19450:61;:::i;:::-;19436:75;;19560:9;19552:6;19548:22;19542:3;19531:9;19527:19;19520:51;19588:49;19630:6;19622;19614;19588:49;:::i;:::-;19580:57;18713:930;-1:-1:-1;;;;;;;;;;;18713:930:1:o;19648:249::-;19717:6;19770:2;19758:9;19749:7;19745:23;19741:32;19738:52;;;19786:1;19783;19776:12;19738:52;19818:9;19812:16;19837:30;19861:5;19837:30;:::i;20852:610::-;21084:4;21113:42;21194:2;21186:6;21182:15;21171:9;21164:34;21246:2;21238:6;21234:15;21229:2;21218:9;21214:18;21207:43;;21286:6;21281:2;21270:9;21266:18;21259:34;21329:6;21324:2;21313:9;21309:18;21302:34;21373:3;21367;21356:9;21352:19;21345:32;21394:62;21451:3;21440:9;21436:19;21428:6;21420;21394:62;:::i;:::-;21386:70;20852:610;-1:-1:-1;;;;;;;;20852:610:1:o;22557:581::-;22635:4;22641:6;22701:11;22688:25;22791:66;22780:8;22764:14;22760:29;22756:102;22736:18;22732:127;22722:155;;22873:1;22870;22863:12;22722:155;22900:33;;22952:20;;;-1:-1:-1;22995:18:1;22984:30;;22981:50;;;23027:1;23024;23017:12;22981:50;23060:4;23048:17;;-1:-1:-1;23091:14:1;23087:27;;;23077:38;;23074:58;;;23128:1;23125;23118:12;23269:545;23371:2;23366:3;23363:11;23360:448;;;23407:1;23432:5;23428:2;23421:17;23477:4;23473:2;23463:19;23547:2;23535:10;23531:19;23528:1;23524:27;23518:4;23514:38;23583:4;23571:10;23568:20;23565:47;;;-1:-1:-1;23606:4:1;23565:47;23661:2;23656:3;23652:12;23649:1;23645:20;23639:4;23635:31;23625:41;;23716:82;23734:2;23727:5;23724:13;23716:82;;;23779:17;;;23760:1;23749:13;23716:82;;24050:1325;24174:18;24169:3;24166:27;24163:53;;;24196:18;;:::i;:::-;24225:94;24315:3;24275:38;24307:4;24301:11;24275:38;:::i;:::-;24269:4;24225:94;:::i;:::-;24345:1;24370:2;24365:3;24362:11;24387:1;24382:735;;;;25161:1;25178:3;25175:93;;;-1:-1:-1;25234:19:1;;;25221:33;25175:93;23956:66;23947:1;23943:11;;;23939:84;23935:89;23925:100;24031:1;24027:11;;;23922:117;25281:78;;24355:1014;;24382:735;23216:1;23209:14;;;23253:4;23240:18;;24427:66;24418:76;;;24578:9;24600:229;24614:7;24611:1;24608:14;24600:229;;;24703:19;;;24690:33;24675:49;;24810:4;24795:20;;;;24763:1;24751:14;;;;24630:12;24600:229;;;24604:3;24857;24848:7;24845:16;24842:219;;;24977:66;24971:3;24965;24962:1;24958:11;24954:21;24950:94;24946:99;24933:9;24928:3;24924:19;24911:33;24907:139;24899:6;24892:155;24842:219;;;25104:1;25098:3;25095:1;25091:11;25087:19;25081:4;25074:33;24355:1014;;24050:1325;;;:::o;25380:246::-;25539:2;25528:9;25521:21;25502:4;25559:61;25616:2;25605:9;25601:18;25593:6;25585;25559:61;:::i;:::-;25551:69;25380:246;-1:-1:-1;;;;25380:246:1:o;25631:584::-;25853:4;25882:42;25963:2;25955:6;25951:15;25940:9;25933:34;26015:2;26007:6;26003:15;25998:2;25987:9;25983:18;25976:43;;26055:6;26050:2;26039:9;26035:18;26028:34;26098:6;26093:2;26082:9;26078:18;26071:34;26142:3;26136;26125:9;26121:19;26114:32;26163:46;26204:3;26193:9;26189:19;26181:6;26163:46;:::i;26220:465::-;26477:2;26466:9;26459:21;26440:4;26503:56;26555:2;26544:9;26540:18;26532:6;26503:56;:::i;:::-;26607:9;26599:6;26595:22;26590:2;26579:9;26575:18;26568:50;26635:44;26672:6;26664;26635:44;:::i;:::-;26627:52;26220:465;-1:-1:-1;;;;;26220:465:1:o;26690:850::-;27012:4;27041:42;27122:2;27114:6;27110:15;27099:9;27092:34;27174:2;27166:6;27162:15;27157:2;27146:9;27142:18;27135:43;;27214:3;27209:2;27198:9;27194:18;27187:31;27241:57;27293:3;27282:9;27278:19;27270:6;27241:57;:::i;:::-;27346:9;27338:6;27334:22;27329:2;27318:9;27314:18;27307:50;27380:44;27417:6;27409;27380:44;:::i;:::-;27366:58;;27473:9;27465:6;27461:22;27455:3;27444:9;27440:19;27433:51;27501:33;27527:6;27519;27501:33;:::i
Swarm Source
ipfs://89ddd7820be7dc6d9df993cc7846a801cd8635d73751562a3c6be7d83e875612
Loading...
Loading
Loading...
Loading
[ Download: CSV Export ]
[ Download: CSV Export ]
A token is a representation of an on-chain or off-chain asset. The token page shows information such as price, total supply, holders, transfers and social links. Learn more about this page in our Knowledge Base.