Overview
ETH Balance
0 ETH
Eth Value
$0.00More Info
Private Name Tags
ContractCreator
TokenTracker
Latest 25 from a total of 4,948 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Withdraw | 18540431 | 421 days ago | IN | 0 ETH | 0.00106048 | ||||
Approve | 18213452 | 467 days ago | IN | 0 ETH | 0.0010665 | ||||
Approve | 18213452 | 467 days ago | IN | 0 ETH | 0.0010665 | ||||
Approve | 18213452 | 467 days ago | IN | 0 ETH | 0.0010665 | ||||
Approve | 18213452 | 467 days ago | IN | 0 ETH | 0.0010665 | ||||
Approve | 18213452 | 467 days ago | IN | 0 ETH | 0.0010665 | ||||
Approve | 18213452 | 467 days ago | IN | 0 ETH | 0.0010665 | ||||
Approve | 18213452 | 467 days ago | IN | 0 ETH | 0.0010665 | ||||
Approve | 18213452 | 467 days ago | IN | 0 ETH | 0.0010665 | ||||
Approve | 18213452 | 467 days ago | IN | 0 ETH | 0.0010665 | ||||
Approve | 18213452 | 467 days ago | IN | 0 ETH | 0.0010665 | ||||
Approve | 18213452 | 467 days ago | IN | 0 ETH | 0.0010665 | ||||
Approve | 18213452 | 467 days ago | IN | 0 ETH | 0.0010665 | ||||
Approve | 18213452 | 467 days ago | IN | 0 ETH | 0.0010665 | ||||
Approve | 18213452 | 467 days ago | IN | 0 ETH | 0.0010665 | ||||
Approve | 18213452 | 467 days ago | IN | 0 ETH | 0.0010665 | ||||
Approve | 18213452 | 467 days ago | IN | 0 ETH | 0.0010665 | ||||
Approve | 18213452 | 467 days ago | IN | 0 ETH | 0.0010665 | ||||
Approve | 18213365 | 467 days ago | IN | 0 ETH | 0.00108299 | ||||
Approve | 18213365 | 467 days ago | IN | 0 ETH | 0.00108299 | ||||
Approve | 18213365 | 467 days ago | IN | 0 ETH | 0.00108299 | ||||
Approve | 18213365 | 467 days ago | IN | 0 ETH | 0.00108299 | ||||
Approve | 18213364 | 467 days ago | IN | 0 ETH | 0.0010495 | ||||
Approve | 18213364 | 467 days ago | IN | 0 ETH | 0.0010495 | ||||
Approve | 18213364 | 467 days ago | IN | 0 ETH | 0.0010495 |
Loading...
Loading
Contract Name:
NFTvGenesisBox
Compiler Version
v0.8.7+commit.e28d00a7
Optimization Enabled:
No with 200 runs
Other Settings:
default evmVersion
Contract Source Code (Solidity Standard Json-Input format)
// SPDX-License-Identifier: GPL-3.0 pragma solidity ^0.8.0; interface IERC165 { function supportsInterface(bytes4 interfaceId) external view returns (bool); } interface IERC721 is IERC165 { event Transfer(address indexed from, address indexed to, uint256 indexed tokenId); event Approval(address indexed owner, address indexed approved, uint256 indexed tokenId); event ApprovalForAll(address indexed owner, address indexed operator, bool approved); function balanceOf(address owner) external view returns (uint256 balance); function ownerOf(uint256 tokenId) external view returns (address owner); function safeTransferFrom( address from, address to, uint256 tokenId ) external; function transferFrom( address from, address to, uint256 tokenId ) external; function approve(address to, uint256 tokenId) external; function getApproved(uint256 tokenId) external view returns (address operator); function setApprovalForAll(address operator, bool _approved) external; function isApprovedForAll(address owner, address operator) external view returns (bool); function safeTransferFrom( address from, address to, uint256 tokenId, bytes calldata data ) external; } interface IERC721Receiver { function onERC721Received( address operator, address from, uint256 tokenId, bytes calldata data ) external returns (bytes4); } interface IERC721Metadata is IERC721 { function name() external view returns (string memory); function symbol() external view returns (string memory); function tokenURI(uint256 tokenId) external view returns (string memory); } library Address { function isContract(address account) internal view returns (bool) { return account.code.length > 0; } } abstract contract Context { function _msgSender() internal view virtual returns (address) { return msg.sender; } } library Strings { bytes16 private constant _HEX_SYMBOLS = "0123456789abcdef"; function toString(uint256 value) internal pure returns (string memory) { if (value == 0) { return "0"; } uint256 temp = value; uint256 digits; while (temp != 0) { digits++; temp /= 10; } bytes memory buffer = new bytes(digits); while (value != 0) { digits -= 1; buffer[digits] = bytes1(uint8(48 + uint256(value % 10))); value /= 10; } return string(buffer); } function toHexString(uint256 value, uint256 length) internal pure returns (string memory) { bytes memory buffer = new bytes(2 * length + 2); buffer[0] = "0"; buffer[1] = "x"; for (uint256 i = 2 * length + 1; i > 1; --i) { buffer[i] = _HEX_SYMBOLS[value & 0xf]; value >>= 4; } require(value == 0, "Strings: hex length insufficient"); return string(buffer); } } abstract contract ERC165 is IERC165 { function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) { return interfaceId == type(IERC165).interfaceId; } } contract ERC721 is Context, ERC165, IERC721, IERC721Metadata { using Address for address; using Strings for uint256; string private _name; string private _symbol; mapping(uint256 => address) private _owners; mapping(address => uint256) private _balances; mapping(uint256 => address) private _tokenApprovals; mapping(address => mapping(address => bool)) private _operatorApprovals; constructor(string memory name_, string memory symbol_) { _name = name_; _symbol = symbol_; } function supportsInterface(bytes4 interfaceId) public view virtual override(ERC165, IERC165) returns (bool) { return interfaceId == type(IERC721).interfaceId || interfaceId == type(IERC721Metadata).interfaceId || super.supportsInterface(interfaceId); } function balanceOf(address owner) public view virtual override returns (uint256) { require(owner != address(0), "ERC721: balance query for the zero address"); return _balances[owner]; } function ownerOf(uint256 tokenId) public view virtual override returns (address) { address owner = _owners[tokenId]; require(owner != address(0), "ERC721: owner query for nonexistent token"); return owner; } function name() public view virtual override returns (string memory) { return _name; } function symbol() public view virtual override returns (string memory) { return _symbol; } function tokenURI(uint256 tokenId) public view virtual override returns (string memory) { require(_exists(tokenId), "ERC721Metadata: URI query for nonexistent token"); string memory baseURI = _baseURI(); return bytes(baseURI).length > 0 ? string(abi.encodePacked(baseURI, tokenId.toString())) : ""; } function _baseURI() internal view virtual returns (string memory) { return ""; } function approve(address to, uint256 tokenId) public virtual override { address owner = ERC721.ownerOf(tokenId); require(to != owner, "ERC721: approval to current owner"); require( _msgSender() == owner || isApprovedForAll(owner, _msgSender()), "ERC721: approve caller is not owner nor approved for all" ); _approve(to, tokenId); } function getApproved(uint256 tokenId) public view virtual override returns (address) { require(_exists(tokenId), "ERC721: approved query for nonexistent token"); return _tokenApprovals[tokenId]; } function setApprovalForAll(address operator, bool approved) public virtual override { _setApprovalForAll(_msgSender(), operator, approved); } function isApprovedForAll(address owner, address operator) public view virtual override returns (bool) { return _operatorApprovals[owner][operator]; } function transferFrom( address from, address to, uint256 tokenId ) public virtual override { //solhint-disable-next-line max-line-length require(_isApprovedOrOwner(_msgSender(), tokenId), "ERC721: transfer caller is not owner nor approved"); _transfer(from, to, tokenId); } function safeTransferFrom( address from, address to, uint256 tokenId ) public virtual override { safeTransferFrom(from, to, tokenId, ""); } function safeTransferFrom( address from, address to, uint256 tokenId, bytes memory _data ) public virtual override { require(_isApprovedOrOwner(_msgSender(), tokenId), "ERC721: transfer caller is not owner nor approved"); _safeTransfer(from, to, tokenId, _data); } function _safeTransfer( address from, address to, uint256 tokenId, bytes memory _data ) internal virtual { _transfer(from, to, tokenId); require(_checkOnERC721Received(from, to, tokenId, _data), "ERC721: transfer to non ERC721Receiver implementer"); } function _exists(uint256 tokenId) internal view virtual returns (bool) { return _owners[tokenId] != address(0); } function _isApprovedOrOwner(address spender, uint256 tokenId) internal view virtual returns (bool) { require(_exists(tokenId), "ERC721: operator query for nonexistent token"); address owner = ERC721.ownerOf(tokenId); return (spender == owner || getApproved(tokenId) == spender || isApprovedForAll(owner, spender)); } function _mint(address to, uint256 tokenId) internal virtual { require(to != address(0), "ERC721: mint to the zero address"); require(!_exists(tokenId), "ERC721: token already minted"); _beforeTokenTransfer(address(0), to, tokenId); _balances[to] += 1; _owners[tokenId] = to; emit Transfer(address(0), to, tokenId); _afterTokenTransfer(address(0), to, tokenId); } function _transfer( address from, address to, uint256 tokenId ) internal virtual { require(ERC721.ownerOf(tokenId) == from, "ERC721: transfer from incorrect owner"); require(to != address(0), "ERC721: transfer to the zero address"); _beforeTokenTransfer(from, to, tokenId); _approve(address(0), tokenId); _balances[from] -= 1; _balances[to] += 1; _owners[tokenId] = to; emit Transfer(from, to, tokenId); _afterTokenTransfer(from, to, tokenId); } function _approve(address to, uint256 tokenId) internal virtual { _tokenApprovals[tokenId] = to; emit Approval(ERC721.ownerOf(tokenId), to, tokenId); } function _setApprovalForAll( address owner, address operator, bool approved ) internal virtual { require(owner != operator, "ERC721: approve to caller"); _operatorApprovals[owner][operator] = approved; emit ApprovalForAll(owner, operator, approved); } function _checkOnERC721Received( address from, address to, uint256 tokenId, bytes memory _data ) private returns (bool) { if (to.isContract()) { try IERC721Receiver(to).onERC721Received(_msgSender(), from, tokenId, _data) returns (bytes4 retval) { return retval == IERC721Receiver.onERC721Received.selector; } catch (bytes memory reason) { if (reason.length == 0) { revert("ERC721: transfer to non ERC721Receiver implementer"); } else { assembly { revert(add(32, reason), mload(reason)) } } } } else { return true; } } function _beforeTokenTransfer( address from, address to, uint256 tokenId ) internal virtual {} function _afterTokenTransfer( address from, address to, uint256 tokenId ) internal virtual {} } interface IERC721Enumerable is IERC721 { function totalSupply() external view returns (uint256); function tokenOfOwnerByIndex(address owner, uint256 index) external view returns (uint256); function tokenByIndex(uint256 index) external view returns (uint256); } abstract contract ERC721Enumerable is ERC721, IERC721Enumerable { mapping(address => mapping(uint256 => uint256)) private _ownedTokens; mapping(uint256 => uint256) private _ownedTokensIndex; uint256[] private _allTokens; mapping(uint256 => uint256) private _allTokensIndex; function supportsInterface(bytes4 interfaceId) public view virtual override(IERC165, ERC721) returns (bool) { return interfaceId == type(IERC721Enumerable).interfaceId || super.supportsInterface(interfaceId); } function tokenOfOwnerByIndex(address owner, uint256 index) public view virtual override returns (uint256) { require(index < ERC721.balanceOf(owner), "ERC721Enumerable: owner index out of bounds"); return _ownedTokens[owner][index]; } function totalSupply() public view virtual override returns (uint256) { return _allTokens.length; } function tokenByIndex(uint256 index) public view virtual override returns (uint256) { require(index < ERC721Enumerable.totalSupply(), "ERC721Enumerable: global index out of bounds"); return _allTokens[index]; } function _beforeTokenTransfer( address from, address to, uint256 tokenId ) internal virtual override { super._beforeTokenTransfer(from, to, tokenId); if (from == address(0)) { _addTokenToAllTokensEnumeration(tokenId); } else if (from != to) { _removeTokenFromOwnerEnumeration(from, tokenId); } if (to == address(0)) { _removeTokenFromAllTokensEnumeration(tokenId); } else if (to != from) { _addTokenToOwnerEnumeration(to, tokenId); } } function _addTokenToOwnerEnumeration(address to, uint256 tokenId) private { uint256 length = ERC721.balanceOf(to); _ownedTokens[to][length] = tokenId; _ownedTokensIndex[tokenId] = length; } function _addTokenToAllTokensEnumeration(uint256 tokenId) private { _allTokensIndex[tokenId] = _allTokens.length; _allTokens.push(tokenId); } function _removeTokenFromOwnerEnumeration(address from, uint256 tokenId) private { uint256 lastTokenIndex = ERC721.balanceOf(from) - 1; uint256 tokenIndex = _ownedTokensIndex[tokenId]; if (tokenIndex != lastTokenIndex) { uint256 lastTokenId = _ownedTokens[from][lastTokenIndex]; _ownedTokens[from][tokenIndex] = lastTokenId; _ownedTokensIndex[lastTokenId] = tokenIndex; } delete _ownedTokensIndex[tokenId]; delete _ownedTokens[from][lastTokenIndex]; } function _removeTokenFromAllTokensEnumeration(uint256 tokenId) private { uint256 lastTokenIndex = _allTokens.length - 1; uint256 tokenIndex = _allTokensIndex[tokenId]; uint256 lastTokenId = _allTokens[lastTokenIndex]; _allTokens[tokenIndex] = lastTokenId; _allTokensIndex[lastTokenId] = tokenIndex; delete _allTokensIndex[tokenId]; _allTokens.pop(); } } interface IAccessControl { event RoleAdminChanged(bytes32 indexed role, bytes32 indexed previousAdminRole, bytes32 indexed newAdminRole); event RoleGranted(bytes32 indexed role, address indexed account, address indexed sender); event RoleRevoked(bytes32 indexed role, address indexed account, address indexed sender); function hasRole(bytes32 role, address account) external view returns (bool); function getRoleAdmin(bytes32 role) external view returns (bytes32); function grantRole(bytes32 role, address account) external; function revokeRole(bytes32 role, address account) external; function renounceRole(bytes32 role, address account) external; } abstract contract AccessControl is Context, IAccessControl, ERC165 { struct RoleData { mapping(address => bool) members; bytes32 adminRole; } mapping(bytes32 => RoleData) private _roles; bytes32 public constant DEFAULT_ADMIN_ROLE = 0x00; modifier onlyRole(bytes32 role) { _checkRole(role); _; } function supportsInterface(bytes4 interfaceId) public view virtual override(ERC165) returns (bool) { return interfaceId == type(IAccessControl).interfaceId || super.supportsInterface(interfaceId); } function hasRole(bytes32 role, address account) public view virtual override returns (bool) { return _roles[role].members[account]; } function _checkRole(bytes32 role) internal view virtual { _checkRole(role, _msgSender()); } function _checkRole(bytes32 role, address account) internal view virtual { if (!hasRole(role, account)) { revert( string( abi.encodePacked( "AccessControl: account ", Strings.toHexString(uint160(account), 20), " is missing role ", Strings.toHexString(uint256(role), 32) ) ) ); } } function getRoleAdmin(bytes32 role) public view virtual override returns (bytes32) { return _roles[role].adminRole; } function grantRole(bytes32 role, address account) public virtual override onlyRole(getRoleAdmin(role)) { _grantRole(role, account); } function revokeRole(bytes32 role, address account) public virtual override onlyRole(getRoleAdmin(role)) { _revokeRole(role, account); } function renounceRole(bytes32 role, address account) public virtual override { require(account == _msgSender(), "AccessControl: can only renounce roles for self"); _revokeRole(role, account); } function _setupRole(bytes32 role, address account) internal virtual { _grantRole(role, account); } function _grantRole(bytes32 role, address account) internal virtual { if (!hasRole(role, account)) { _roles[role].members[account] = true; emit RoleGranted(role, account, _msgSender()); } } function _revokeRole(bytes32 role, address account) internal virtual { if (hasRole(role, account)) { _roles[role].members[account] = false; emit RoleRevoked(role, account, _msgSender()); } } } library MerkleProof { function verify( bytes32[] memory proof, bytes32 root, bytes32 leaf ) internal pure returns (bool) { return processProof(proof, leaf) == root; } function processProof(bytes32[] memory proof, bytes32 leaf) internal pure returns (bytes32) { bytes32 computedHash = leaf; for (uint256 i = 0; i < proof.length; i++) { bytes32 proofElement = proof[i]; if (computedHash <= proofElement) { // Hash(current computed hash + current element of the proof) computedHash = keccak256(abi.encodePacked(computedHash, proofElement)); } else { // Hash(current element of the proof + current computed hash) computedHash = keccak256(abi.encodePacked(proofElement, computedHash)); } } return computedHash; } } contract NFTvGenesisBox is ERC721Enumerable, AccessControl { bytes32 public constant MINTER_ROLE = keccak256("MINTER_ROLE"); bytes32 public constant SUBADMIN_ROLE = keccak256("SUBADMIN_ROLE"); string public baseURI = ""; address public multisig; // address to withdraw bool public isPaused; uint256 public id; // id of the next token minted // MAINNET SETTINGS uint256 public maxSupply = 9999; // PLEASE UNCOMMENT THIS LINE BEFORE MAINNET LAUNCH uint256 public allowedByRoundByAddress = 2; uint256 public teamRound = 3; uint256 public publicRound = 4; mapping(uint256=>bytes32) public root; // should be set each round mapping(uint256=>uint256) public tokenPrice; // nft price to set by round mapping(uint256=>uint256) public maxRoundSupply; mapping(uint256=>uint256) public roundSold; mapping(address=>mapping(uint256 => uint256)) public ownedByRound; // nft alredy minted by round by address mapping(uint256=>bool) public sellAvailable; // is the round available constructor() ERC721("NFTvGenesisBox", "NFTvGenBox") { _setupRole(DEFAULT_ADMIN_ROLE, _msgSender()); // Maybe to define a different owner address _setupRole(MINTER_ROLE, _msgSender()); _setupRole(SUBADMIN_ROLE, _msgSender()); // MAINNET SETTINGS !!!! maxRoundSupply[0] = 3333; // round 0 maxRoundSupply[1] = 3333; // round 1 maxRoundSupply[2] = 3100; // round 2 maxRoundSupply[3] = 33; // team round } // public mint: in public sell, proof array must set empty function mint(uint256 _round, uint256 _amount, bytes32[] memory _proof) external payable { require(!isPaused, "contract paused"); // allow pause buy require(sellAvailable[_round], "round unavailable"); // need to allow each round require(totalSupply() + _amount <= maxSupply, "max supply"); // this to ensure max supply require(_amount > 0, "amount 0"); // this to request at least 1 nft if(_round != teamRound){ require(tokenPrice[_round] > 0, "tokenPrice unset"); // this to ensure price is already fixed in wei // this to ensure value deposited is enough require(msg.value >= _amount * tokenPrice[_round], "value too low"); } // ensure user round already minted + amount less than max by round by address require( ownedByRound[_msgSender()][_round] + _amount <= allowedByRoundByAddress, "max by round by address" ); if( _round != publicRound){ // ensure maxRoundSupply is set and round nft sold + amount less or equal than maxRoundSuply require( maxRoundSupply[_round] > 0 && roundSold[_round] + _amount <= maxRoundSupply[_round], "max total by round" ); // ensure root of the round is set and user is in whitelist require( root[_round].length > 0 && MerkleProof.verify(_proof, root[_round], keccak256(abi.encodePacked(_msgSender()))), "not allowed to mint" ); } // user by round increment ownedByRound[_msgSender()][_round] += _amount; // total sold by round increment roundSold[_round] += _amount; // loop of mint for(uint256 i = 0; i < _amount; i++){ require(internalMint(_msgSender()), "mint error"); } } // ############################################################################################################### // RESTRICTED ROLES FUNCTIONS // ############################################################################################################### // simple mint for certain roles with less verifications steps to save gas function mintForMinter(uint256 _amount, address _receiver) external onlyRole(MINTER_ROLE) returns(bool) { require(_amount > 0, "amount 0"); require(totalSupply() + _amount <= maxSupply, "max supply"); for(uint256 i = 0; i < _amount; i++){ require(internalMint(_receiver), "mint error"); } return true; } function setTokenPrice(uint256 _round, uint256 _tokenPrice) external onlyRole(SUBADMIN_ROLE) { tokenPrice[_round] = _tokenPrice; } function setBaseURI(string memory baseURI_) external onlyRole(SUBADMIN_ROLE) { baseURI = baseURI_; } function setPause(bool _isPaused) external onlyRole(SUBADMIN_ROLE) { isPaused = _isPaused; } function setRoot(uint256 _round, bytes32 _root) external onlyRole(SUBADMIN_ROLE) { root[_round] = _root; } function setMultiSig(address _multisig) external onlyRole(DEFAULT_ADMIN_ROLE) { multisig = _multisig; } function setAllowedByRoundByAddress(uint256 _allowedByRoundByAddress) external onlyRole(SUBADMIN_ROLE) { allowedByRoundByAddress = _allowedByRoundByAddress; } function setMaxRoundSupply(uint256 _round, uint256 _maxRoundSupply) external onlyRole(SUBADMIN_ROLE) { maxRoundSupply[_round] = _maxRoundSupply; } function setSellAvailable(uint256 _round, bool _sellAvailable) external onlyRole(SUBADMIN_ROLE) { sellAvailable[_round] = _sellAvailable; } function setTeamRound(uint256 _teamRound) external onlyRole(SUBADMIN_ROLE) { teamRound = _teamRound; } function setPublicRound(uint256 _publicRound) external onlyRole(SUBADMIN_ROLE) { publicRound = _publicRound; } // withdraw balance of the contract fully or partially function withdraw(uint256 _ethAmount, bool _withdrawAll) external onlyRole(SUBADMIN_ROLE) returns(bool) { require(multisig != address(0), "multisig not set"); uint256 ethBalance = address(this).balance; uint256 ethAmount; if(_withdrawAll){ ethAmount = ethBalance; } else { ethAmount = _ethAmount; } require(ethAmount <= ethBalance, "eth balance too low"); require(ethAmount > 0, "eth amount 0"); (bool success,) = payable(multisig).call{value: ethAmount}(new bytes(0)); require(success, "transfer error"); return true; } // ############################################################################################################### // VIEW FUNCTIONS // ############################################################################################################### function _baseURI() internal view override returns (string memory) { return baseURI; } // required by ERC165 function supportsInterface(bytes4 interfaceId) public view virtual override( ERC721Enumerable, AccessControl ) returns (bool) { return interfaceId == type(IAccessControl).interfaceId || interfaceId == type(IERC721).interfaceId || interfaceId == type(IERC721Metadata).interfaceId || interfaceId == type(IERC721Enumerable).interfaceId || interfaceId == type(IERC165).interfaceId || super.supportsInterface(interfaceId); } function exists(uint256 _tokenId) external view returns(bool){ return _exists(_tokenId); } // ############################################################################################################### // PRIVATE FUNCTION // ############################################################################################################### // ERC721 mint function increment id function internalMint(address _address) private returns(bool){ _mint(_address, id); id++; return true; } }
{ "optimizer": { "enabled": false, "runs": 200 }, "outputSelection": { "*": { "*": [ "evm.bytecode", "evm.deployedBytecode", "devdoc", "userdoc", "metadata", "abi" ] } } }
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":"approved","type":"address"},{"indexed":true,"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"operator","type":"address"},{"indexed":false,"internalType":"bool","name":"approved","type":"bool"}],"name":"ApprovalForAll","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"role","type":"bytes32"},{"indexed":true,"internalType":"bytes32","name":"previousAdminRole","type":"bytes32"},{"indexed":true,"internalType":"bytes32","name":"newAdminRole","type":"bytes32"}],"name":"RoleAdminChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"role","type":"bytes32"},{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":true,"internalType":"address","name":"sender","type":"address"}],"name":"RoleGranted","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"role","type":"bytes32"},{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":true,"internalType":"address","name":"sender","type":"address"}],"name":"RoleRevoked","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":true,"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"DEFAULT_ADMIN_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"MINTER_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"SUBADMIN_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"allowedByRoundByAddress","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"approve","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"baseURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_tokenId","type":"uint256"}],"name":"exists","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"getApproved","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"}],"name":"getRoleAdmin","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"grantRole","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"hasRole","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"id","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"operator","type":"address"}],"name":"isApprovedForAll","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"isPaused","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"maxRoundSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_round","type":"uint256"},{"internalType":"uint256","name":"_amount","type":"uint256"},{"internalType":"bytes32[]","name":"_proof","type":"bytes32[]"}],"name":"mint","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_amount","type":"uint256"},{"internalType":"address","name":"_receiver","type":"address"}],"name":"mintForMinter","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"multisig","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"}],"name":"ownedByRound","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"ownerOf","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"publicRound","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"renounceRole","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"revokeRole","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"root","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"roundSold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"safeTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"bytes","name":"_data","type":"bytes"}],"name":"safeTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"sellAvailable","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_allowedByRoundByAddress","type":"uint256"}],"name":"setAllowedByRoundByAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"bool","name":"approved","type":"bool"}],"name":"setApprovalForAll","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"baseURI_","type":"string"}],"name":"setBaseURI","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_round","type":"uint256"},{"internalType":"uint256","name":"_maxRoundSupply","type":"uint256"}],"name":"setMaxRoundSupply","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_multisig","type":"address"}],"name":"setMultiSig","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_isPaused","type":"bool"}],"name":"setPause","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_publicRound","type":"uint256"}],"name":"setPublicRound","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_round","type":"uint256"},{"internalType":"bytes32","name":"_root","type":"bytes32"}],"name":"setRoot","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_round","type":"uint256"},{"internalType":"bool","name":"_sellAvailable","type":"bool"}],"name":"setSellAvailable","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_teamRound","type":"uint256"}],"name":"setTeamRound","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_round","type":"uint256"},{"internalType":"uint256","name":"_tokenPrice","type":"uint256"}],"name":"setTokenPrice","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"teamRound","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"index","type":"uint256"}],"name":"tokenByIndex","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"uint256","name":"index","type":"uint256"}],"name":"tokenOfOwnerByIndex","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"tokenPrice","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"tokenURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"transferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_ethAmount","type":"uint256"},{"internalType":"bool","name":"_withdrawAll","type":"bool"}],"name":"withdraw","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"}]
Contract Creation Code
608060405260405180602001604052806000815250600b90805190602001906200002b92919062000380565b5061270f600e556002600f55600360105560046011553480156200004e57600080fd5b506040518060400160405280600e81526020017f4e46547647656e65736973426f780000000000000000000000000000000000008152506040518060400160405280600a81526020017f4e46547647656e426f78000000000000000000000000000000000000000000008152508160009080519060200190620000d392919062000380565b508060019080519060200190620000ec92919062000380565b505050620001136000801b620001076200020560201b60201c565b6200020d60201b60201c565b620001547f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a6620001486200020560201b60201c565b6200020d60201b60201c565b620001957f2ccf90dd7c30b80a460e25097b3c5ef613343f69ad6b2cfd3cfb644af593ca0b620001896200020560201b60201c565b6200020d60201b60201c565b610d056014600080815260200190815260200160002081905550610d05601460006001815260200190815260200160002081905550610c1c601460006002815260200190815260200160002081905550602160146000600381526020019081526020016000208190555062000495565b600033905090565b6200021f82826200022360201b60201c565b5050565b6200023582826200031560201b60201c565b62000311576001600a600084815260200190815260200160002060000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550620002b66200020560201b60201c565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45b5050565b6000600a600084815260200190815260200160002060000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b8280546200038e9062000430565b90600052602060002090601f016020900481019282620003b25760008555620003fe565b82601f10620003cd57805160ff1916838001178555620003fe565b82800160010185558215620003fe579182015b82811115620003fd578251825591602001919060010190620003e0565b5b5090506200040d919062000411565b5090565b5b808211156200042c57600081600090555060010162000412565b5090565b600060028204905060018216806200044957607f821691505b6020821081141562000460576200045f62000466565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b615d3d80620004a56000396000f3fe6080604052600436106102ff5760003560e01c806388c15e4111610190578063c87b56dd116100dc578063d73d3dd811610095578063e6d37b881161006f578063e6d37b8814610c38578063e985e9c514610c54578063eb685c4714610c91578063ec75be9214610cba576102ff565b8063d73d3dd814610b95578063e221cd8714610bbe578063e56bf02714610bfb576102ff565b8063c87b56dd14610a71578063cc2df2aa14610aae578063d4ddce8a14610ad9578063d539139314610b16578063d547741f14610b41578063d5abeb0114610b6a576102ff565b8063a22cb46511610149578063b88d4fde11610123578063b88d4fde146109b7578063ba87a7c9146109e0578063bedb86fb14610a0b578063c2a321b314610a34576102ff565b8063a22cb46514610938578063af640d0f14610961578063b187bd261461098c576102ff565b806388c15e41146108165780638cc2666d1461085357806391d148541461087c57806395d89b41146108b95780639f966777146108e4578063a217fddf1461090d576102ff565b806336568abe1161024f5780634f6ccce7116102085780636312af17116101e25780636312af17146107485780636352211e146107715780636c0360eb146107ae57806370a08231146107d9576102ff565b80634f6ccce7146106b757806355f804b3146106f45780635d64f80c1461071d576102ff565b806336568abe1461058357806338d07436146105ac57806338f14154146105e957806342842e0e146106265780634783c35b1461064f5780634f558e791461067a576102ff565b806318160ddd116102bc578063284d30ef11610296578063284d30ef146104c95780632eacab9f146104f25780632f2ff15d1461051d5780632f745c5914610546576102ff565b806318160ddd1461043857806323b872dd14610463578063248a9ca31461048c576102ff565b806301ffc9a7146103045780630441952614610341578063048f06f21461037e57806306fdde03146103a7578063081812fc146103d2578063095ea7b31461040f575b600080fd5b34801561031057600080fd5b5061032b600480360381019061032691906141f9565b610ce3565b6040516103389190614b3f565b60405180910390f35b34801561034d57600080fd5b506103686004803603810190610363919061429c565b610efd565b6040516103759190614b3f565b60405180910390f35b34801561038a57600080fd5b506103a560048036038101906103a09190614349565b610f1d565b005b3480156103b357600080fd5b506103bc610f64565b6040516103c99190614b75565b60405180910390f35b3480156103de57600080fd5b506103f960048036038101906103f4919061429c565b610ff6565b6040516104069190614ad8565b60405180910390f35b34801561041b57600080fd5b506104366004803603810190610431919061411f565b61107b565b005b34801561044457600080fd5b5061044d611193565b60405161045a9190614f97565b60405180910390f35b34801561046f57600080fd5b5061048a60048036038101906104859190614009565b6111a0565b005b34801561049857600080fd5b506104b360048036038101906104ae919061418c565b611200565b6040516104c09190614b5a565b60405180910390f35b3480156104d557600080fd5b506104f060048036038101906104eb9190613f9c565b611220565b005b3480156104fe57600080fd5b50610507611272565b6040516105149190614f97565b60405180910390f35b34801561052957600080fd5b50610544600480360381019061053f91906141b9565b611278565b005b34801561055257600080fd5b5061056d6004803603810190610568919061411f565b611299565b60405161057a9190614f97565b60405180910390f35b34801561058f57600080fd5b506105aa60048036038101906105a591906141b9565b61133e565b005b3480156105b857600080fd5b506105d360048036038101906105ce9190614309565b6113c1565b6040516105e09190614b3f565b60405180910390f35b3480156105f557600080fd5b50610610600480360381019061060b919061411f565b611649565b60405161061d9190614f97565b60405180910390f35b34801561063257600080fd5b5061064d60048036038101906106489190614009565b61166e565b005b34801561065b57600080fd5b5061066461168e565b6040516106719190614ad8565b60405180910390f35b34801561068657600080fd5b506106a1600480360381019061069c919061429c565b6116b4565b6040516106ae9190614b3f565b60405180910390f35b3480156106c357600080fd5b506106de60048036038101906106d9919061429c565b6116c6565b6040516106eb9190614f97565b60405180910390f35b34801561070057600080fd5b5061071b60048036038101906107169190614253565b611737565b005b34801561072957600080fd5b5061073261177c565b60405161073f9190614f97565b60405180910390f35b34801561075457600080fd5b5061076f600480360381019061076a9190614309565b611782565b005b34801561077d57600080fd5b506107986004803603810190610793919061429c565b6117dc565b6040516107a59190614ad8565b60405180910390f35b3480156107ba57600080fd5b506107c361188e565b6040516107d09190614b75565b60405180910390f35b3480156107e557600080fd5b5061080060048036038101906107fb9190613f9c565b61191c565b60405161080d9190614f97565b60405180910390f35b34801561082257600080fd5b5061083d6004803603810190610838919061429c565b6119d4565b60405161084a9190614f97565b60405180910390f35b34801561085f57600080fd5b5061087a6004803603810190610875919061429c565b6119ec565b005b34801561088857600080fd5b506108a3600480360381019061089e91906141b9565b611a21565b6040516108b09190614b3f565b60405180910390f35b3480156108c557600080fd5b506108ce611a8c565b6040516108db9190614b75565b60405180910390f35b3480156108f057600080fd5b5061090b60048036038101906109069190614389565b611b1e565b005b34801561091957600080fd5b50610922611b65565b60405161092f9190614b5a565b60405180910390f35b34801561094457600080fd5b5061095f600480360381019061095a91906140df565b611b6c565b005b34801561096d57600080fd5b50610976611b82565b6040516109839190614f97565b60405180910390f35b34801561099857600080fd5b506109a1611b88565b6040516109ae9190614b3f565b60405180910390f35b3480156109c357600080fd5b506109de60048036038101906109d9919061405c565b611b9b565b005b3480156109ec57600080fd5b506109f5611bfd565b604051610a029190614b5a565b60405180910390f35b348015610a1757600080fd5b50610a326004803603810190610a2d919061415f565b611c21565b005b348015610a4057600080fd5b50610a5b6004803603810190610a5691906142c9565b611c69565b604051610a689190614b3f565b60405180910390f35b348015610a7d57600080fd5b50610a986004803603810190610a93919061429c565b611da1565b604051610aa59190614b75565b60405180910390f35b348015610aba57600080fd5b50610ac3611e48565b604051610ad09190614f97565b60405180910390f35b348015610ae557600080fd5b50610b006004803603810190610afb919061429c565b611e4e565b604051610b0d9190614f97565b60405180910390f35b348015610b2257600080fd5b50610b2b611e66565b604051610b389190614b5a565b60405180910390f35b348015610b4d57600080fd5b50610b686004803603810190610b6391906141b9565b611e8a565b005b348015610b7657600080fd5b50610b7f611eab565b604051610b8c9190614f97565b60405180910390f35b348015610ba157600080fd5b50610bbc6004803603810190610bb7919061429c565b611eb1565b005b348015610bca57600080fd5b50610be56004803603810190610be0919061429c565b611ee6565b604051610bf29190614f97565b60405180910390f35b348015610c0757600080fd5b50610c226004803603810190610c1d919061429c565b611efe565b604051610c2f9190614b5a565b60405180910390f35b610c526004803603810190610c4d91906143c9565b611f16565b005b348015610c6057600080fd5b50610c7b6004803603810190610c769190613fc9565b61241e565b604051610c889190614b3f565b60405180910390f35b348015610c9d57600080fd5b50610cb86004803603810190610cb39190614389565b6124b2565b005b348015610cc657600080fd5b50610ce16004803603810190610cdc919061429c565b6124f9565b005b60007f7965db0b000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480610dae57507f80ac58cd000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b80610e1657507f5b5e139f000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b80610e7e57507f780e9d63000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b80610ee657507f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b80610ef65750610ef58261252e565b5b9050919050565b60176020528060005260406000206000915054906101000a900460ff1681565b7f2ccf90dd7c30b80a460e25097b3c5ef613343f69ad6b2cfd3cfb644af593ca0b610f47816125a8565b816012600085815260200190815260200160002081905550505050565b606060008054610f73906152b2565b80601f0160208091040260200160405190810160405280929190818152602001828054610f9f906152b2565b8015610fec5780601f10610fc157610100808354040283529160200191610fec565b820191906000526020600020905b815481529060010190602001808311610fcf57829003601f168201915b5050505050905090565b6000611001826125bc565b611040576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161103790614df7565b60405180910390fd5b6004600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b6000611086826117dc565b90508073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156110f7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110ee90614e57565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16611116612628565b73ffffffffffffffffffffffffffffffffffffffff16148061114557506111448161113f612628565b61241e565b5b611184576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161117b90614d37565b60405180910390fd5b61118e8383612630565b505050565b6000600880549050905090565b6111b16111ab612628565b826126e9565b6111f0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111e790614e97565b60405180910390fd5b6111fb8383836127c7565b505050565b6000600a6000838152602001908152602001600020600101549050919050565b6000801b61122d816125a8565b81600c60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050565b60115481565b61128182611200565b61128a816125a8565b6112948383612a2e565b505050565b60006112a48361191c565b82106112e5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112dc90614bd7565b60405180910390fd5b600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600083815260200190815260200160002054905092915050565b611346612628565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16146113b3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113aa90614f77565b60405180910390fd5b6113bd8282612b0f565b5050565b60007f2ccf90dd7c30b80a460e25097b3c5ef613343f69ad6b2cfd3cfb644af593ca0b6113ed816125a8565b600073ffffffffffffffffffffffffffffffffffffffff16600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141561147f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161147690614f37565b60405180910390fd5b60004790506000841561149457819050611498565b8590505b818111156114db576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114d290614dd7565b60405180910390fd5b6000811161151e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161151590614cd7565b60405180910390fd5b6000600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1682600067ffffffffffffffff811115611575576115746154a8565b5b6040519080825280601f01601f1916602001820160405280156115a75781602001600182028036833780820191505090505b506040516115b59190614a63565b60006040518083038185875af1925050503d80600081146115f2576040519150601f19603f3d011682016040523d82523d6000602084013e6115f7565b606091505b505090508061163b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161163290614e77565b60405180910390fd5b600194505050505092915050565b6016602052816000526040600020602052806000526040600020600091509150505481565b61168983838360405180602001604052806000815250611b9b565b505050565b600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60006116bf826125bc565b9050919050565b60006116d0611193565b8210611711576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161170890614ef7565b60405180910390fd5b6008828154811061172557611724615479565b5b90600052602060002001549050919050565b7f2ccf90dd7c30b80a460e25097b3c5ef613343f69ad6b2cfd3cfb644af593ca0b611761816125a8565b81600b9080519060200190611777929190613cfd565b505050565b600f5481565b7f2ccf90dd7c30b80a460e25097b3c5ef613343f69ad6b2cfd3cfb644af593ca0b6117ac816125a8565b816017600085815260200190815260200160002060006101000a81548160ff021916908315150217905550505050565b6000806002600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611885576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161187c90614d97565b60405180910390fd5b80915050919050565b600b805461189b906152b2565b80601f01602080910402602001604051908101604052809291908181526020018280546118c7906152b2565b80156119145780601f106118e957610100808354040283529160200191611914565b820191906000526020600020905b8154815290600101906020018083116118f757829003601f168201915b505050505081565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561198d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161198490614d77565b60405180910390fd5b600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b60156020528060005260406000206000915090505481565b7f2ccf90dd7c30b80a460e25097b3c5ef613343f69ad6b2cfd3cfb644af593ca0b611a16816125a8565b816010819055505050565b6000600a600084815260200190815260200160002060000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b606060018054611a9b906152b2565b80601f0160208091040260200160405190810160405280929190818152602001828054611ac7906152b2565b8015611b145780601f10611ae957610100808354040283529160200191611b14565b820191906000526020600020905b815481529060010190602001808311611af757829003601f168201915b5050505050905090565b7f2ccf90dd7c30b80a460e25097b3c5ef613343f69ad6b2cfd3cfb644af593ca0b611b48816125a8565b816014600085815260200190815260200160002081905550505050565b6000801b81565b611b7e611b77612628565b8383612bf1565b5050565b600d5481565b600c60149054906101000a900460ff1681565b611bac611ba6612628565b836126e9565b611beb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611be290614e97565b60405180910390fd5b611bf784848484612d5e565b50505050565b7f2ccf90dd7c30b80a460e25097b3c5ef613343f69ad6b2cfd3cfb644af593ca0b81565b7f2ccf90dd7c30b80a460e25097b3c5ef613343f69ad6b2cfd3cfb644af593ca0b611c4b816125a8565b81600c60146101000a81548160ff0219169083151502179055505050565b60007f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a6611c95816125a8565b60008411611cd8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ccf90614e37565b60405180910390fd5b600e5484611ce4611193565b611cee91906150b3565b1115611d2f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d2690614c57565b60405180910390fd5b60005b84811015611d9557611d4384612dba565b611d82576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d7990614ed7565b60405180910390fd5b8080611d8d90615315565b915050611d32565b50600191505092915050565b6060611dac826125bc565b611deb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611de290614e17565b60405180910390fd5b6000611df5612de9565b90506000815111611e155760405180602001604052806000815250611e40565b80611e1f84612e7b565b604051602001611e30929190614a7a565b6040516020818303038152906040525b915050919050565b60105481565b60136020528060005260406000206000915090505481565b7f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a681565b611e9382611200565b611e9c816125a8565b611ea68383612b0f565b505050565b600e5481565b7f2ccf90dd7c30b80a460e25097b3c5ef613343f69ad6b2cfd3cfb644af593ca0b611edb816125a8565b81600f819055505050565b60146020528060005260406000206000915090505481565b60126020528060005260406000206000915090505481565b600c60149054906101000a900460ff1615611f66576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f5d90614eb7565b60405180910390fd5b6017600084815260200190815260200160002060009054906101000a900460ff16611fc6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fbd90614f57565b60405180910390fd5b600e5482611fd2611193565b611fdc91906150b3565b111561201d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161201490614c57565b60405180910390fd5b60008211612060576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161205790614e37565b60405180910390fd5b60105483146121215760006013600085815260200190815260200160002054116120bf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120b690614bb7565b60405180910390fd5b6013600084815260200190815260200160002054826120de919061513a565b341015612120576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161211790614cb7565b60405180910390fd5b5b600f548260166000612131612628565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008681526020019081526020016000205461218791906150b3565b11156121c8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121bf90614d17565b60405180910390fd5b601154831461231357600060146000858152602001908152602001600020541180156122255750601460008481526020019081526020016000205482601560008681526020019081526020016000205461222291906150b3565b11155b612264576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161225b90614d57565b60405180910390fd5b60006012600085815260200190815260200160002050602060ff161180156122d357506122d28160126000868152602001908152602001600020546122a7612628565b6040516020016122b79190614a1c565b60405160208183030381529060405280519060200120612fdc565b5b612312576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161230990614f17565b60405180910390fd5b5b8160166000612320612628565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000858152602001908152602001600020600082825461237a91906150b3565b92505081905550816015600085815260200190815260200160002060008282546123a491906150b3565b9250508190555060005b82811015612418576123c66123c1612628565b612dba565b612405576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123fc90614ed7565b60405180910390fd5b808061241090615315565b9150506123ae565b50505050565b6000600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b7f2ccf90dd7c30b80a460e25097b3c5ef613343f69ad6b2cfd3cfb644af593ca0b6124dc816125a8565b816013600085815260200190815260200160002081905550505050565b7f2ccf90dd7c30b80a460e25097b3c5ef613343f69ad6b2cfd3cfb644af593ca0b612523816125a8565b816011819055505050565b60007f7965db0b000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806125a157506125a082612ff3565b5b9050919050565b6125b9816125b4612628565b61306d565b50565b60008073ffffffffffffffffffffffffffffffffffffffff166002600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614159050919050565b600033905090565b816004600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff166126a3836117dc565b73ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b60006126f4826125bc565b612733576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161272a90614cf7565b60405180910390fd5b600061273e836117dc565b90508073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614806127ad57508373ffffffffffffffffffffffffffffffffffffffff1661279584610ff6565b73ffffffffffffffffffffffffffffffffffffffff16145b806127be57506127bd818561241e565b5b91505092915050565b8273ffffffffffffffffffffffffffffffffffffffff166127e7826117dc565b73ffffffffffffffffffffffffffffffffffffffff161461283d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161283490614c17565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156128ad576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128a490614c77565b60405180910390fd5b6128b883838361310a565b6128c3600082612630565b6001600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546129139190615194565b925050819055506001600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461296a91906150b3565b92505081905550816002600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4612a2983838361321e565b505050565b612a388282611a21565b612b0b576001600a600084815260200190815260200160002060000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550612ab0612628565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45b5050565b612b198282611a21565b15612bed576000600a600084815260200190815260200160002060000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550612b92612628565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16837ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b60405160405180910390a45b5050565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415612c60576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c5790614c97565b60405180910390fd5b80600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c3183604051612d519190614b3f565b60405180910390a3505050565b612d698484846127c7565b612d7584848484613223565b612db4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612dab90614bf7565b60405180910390fd5b50505050565b6000612dc882600d546133ba565b600d6000815480929190612ddb90615315565b919050555060019050919050565b6060600b8054612df8906152b2565b80601f0160208091040260200160405190810160405280929190818152602001828054612e24906152b2565b8015612e715780601f10612e4657610100808354040283529160200191612e71565b820191906000526020600020905b815481529060010190602001808311612e5457829003601f168201915b5050505050905090565b60606000821415612ec3576040518060400160405280600181526020017f30000000000000000000000000000000000000000000000000000000000000008152509050612fd7565b600082905060005b60008214612ef5578080612ede90615315565b915050600a82612eee9190615109565b9150612ecb565b60008167ffffffffffffffff811115612f1157612f106154a8565b5b6040519080825280601f01601f191660200182016040528015612f435781602001600182028036833780820191505090505b5090505b60008514612fd057600182612f5c9190615194565b9150600a85612f6b919061538c565b6030612f7791906150b3565b60f81b818381518110612f8d57612f8c615479565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600a85612fc99190615109565b9450612f47565b8093505050505b919050565b600082612fe98584613594565b1490509392505050565b60007f780e9d63000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480613066575061306582613647565b5b9050919050565b6130778282611a21565b6131065761309c8173ffffffffffffffffffffffffffffffffffffffff166014613729565b6130aa8360001c6020613729565b6040516020016130bb929190614a9e565b6040516020818303038152906040526040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016130fd9190614b75565b60405180910390fd5b5050565b613115838383613965565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415613158576131538161396a565b613197565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16146131965761319583826139b3565b5b5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156131da576131d581613b20565b613219565b8273ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614613218576132178282613bf1565b5b5b505050565b505050565b60006132448473ffffffffffffffffffffffffffffffffffffffff16613c70565b156133ad578373ffffffffffffffffffffffffffffffffffffffff1663150b7a0261326d612628565b8786866040518563ffffffff1660e01b815260040161328f9493929190614af3565b602060405180830381600087803b1580156132a957600080fd5b505af19250505080156132da57506040513d601f19601f820116820180604052508101906132d79190614226565b60015b61335d573d806000811461330a576040519150601f19603f3d011682016040523d82523d6000602084013e61330f565b606091505b50600081511415613355576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161334c90614bf7565b60405180910390fd5b805181602001fd5b63150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149150506133b2565b600190505b949350505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561342a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161342190614db7565b60405180910390fd5b613433816125bc565b15613473576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161346a90614c37565b60405180910390fd5b61347f6000838361310a565b6001600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546134cf91906150b3565b92505081905550816002600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a46135906000838361321e565b5050565b60008082905060005b845181101561363c5760008582815181106135bb576135ba615479565b5b602002602001015190508083116135fc5782816040516020016135df929190614a37565b604051602081830303815290604052805190602001209250613628565b808360405160200161360f929190614a37565b6040516020818303038152906040528051906020012092505b50808061363490615315565b91505061359d565b508091505092915050565b60007f80ac58cd000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061371257507f5b5e139f000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b80613722575061372182613c93565b5b9050919050565b60606000600283600261373c919061513a565b61374691906150b3565b67ffffffffffffffff81111561375f5761375e6154a8565b5b6040519080825280601f01601f1916602001820160405280156137915781602001600182028036833780820191505090505b5090507f3000000000000000000000000000000000000000000000000000000000000000816000815181106137c9576137c8615479565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053507f78000000000000000000000000000000000000000000000000000000000000008160018151811061382d5761382c615479565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053506000600184600261386d919061513a565b61387791906150b3565b90505b6001811115613917577f3031323334353637383961626364656600000000000000000000000000000000600f8616601081106138b9576138b8615479565b5b1a60f81b8282815181106138d0576138cf615479565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600485901c94508061391090615288565b905061387a565b506000841461395b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161395290614b97565b60405180910390fd5b8091505092915050565b505050565b6008805490506009600083815260200190815260200160002081905550600881908060018154018082558091505060019003906000526020600020016000909190919091505550565b600060016139c08461191c565b6139ca9190615194565b9050600060076000848152602001908152602001600020549050818114613aaf576000600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600084815260200190815260200160002054905080600660008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600084815260200190815260200160002081905550816007600083815260200190815260200160002081905550505b6007600084815260200190815260200160002060009055600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008381526020019081526020016000206000905550505050565b60006001600880549050613b349190615194565b9050600060096000848152602001908152602001600020549050600060088381548110613b6457613b63615479565b5b906000526020600020015490508060088381548110613b8657613b85615479565b5b906000526020600020018190555081600960008381526020019081526020016000208190555060096000858152602001908152602001600020600090556008805480613bd557613bd461544a565b5b6001900381819060005260206000200160009055905550505050565b6000613bfc8361191c565b905081600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600083815260200190815260200160002081905550806007600084815260200190815260200160002081905550505050565b6000808273ffffffffffffffffffffffffffffffffffffffff163b119050919050565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b828054613d09906152b2565b90600052602060002090601f016020900481019282613d2b5760008555613d72565b82601f10613d4457805160ff1916838001178555613d72565b82800160010185558215613d72579182015b82811115613d71578251825591602001919060010190613d56565b5b509050613d7f9190613d83565b5090565b5b80821115613d9c576000816000905550600101613d84565b5090565b6000613db3613dae84614fd7565b614fb2565b90508083825260208201905082856020860282011115613dd657613dd56154dc565b5b60005b85811015613e065781613dec8882613eec565b845260208401935060208301925050600181019050613dd9565b5050509392505050565b6000613e23613e1e84615003565b614fb2565b905082815260208101848484011115613e3f57613e3e6154e1565b5b613e4a848285615246565b509392505050565b6000613e65613e6084615034565b614fb2565b905082815260208101848484011115613e8157613e806154e1565b5b613e8c848285615246565b509392505050565b600081359050613ea381615c94565b92915050565b600082601f830112613ebe57613ebd6154d7565b5b8135613ece848260208601613da0565b91505092915050565b600081359050613ee681615cab565b92915050565b600081359050613efb81615cc2565b92915050565b600081359050613f1081615cd9565b92915050565b600081519050613f2581615cd9565b92915050565b600082601f830112613f4057613f3f6154d7565b5b8135613f50848260208601613e10565b91505092915050565b600082601f830112613f6e57613f6d6154d7565b5b8135613f7e848260208601613e52565b91505092915050565b600081359050613f9681615cf0565b92915050565b600060208284031215613fb257613fb16154eb565b5b6000613fc084828501613e94565b91505092915050565b60008060408385031215613fe057613fdf6154eb565b5b6000613fee85828601613e94565b9250506020613fff85828601613e94565b9150509250929050565b600080600060608486031215614022576140216154eb565b5b600061403086828701613e94565b935050602061404186828701613e94565b925050604061405286828701613f87565b9150509250925092565b60008060008060808587031215614076576140756154eb565b5b600061408487828801613e94565b945050602061409587828801613e94565b93505060406140a687828801613f87565b925050606085013567ffffffffffffffff8111156140c7576140c66154e6565b5b6140d387828801613f2b565b91505092959194509250565b600080604083850312156140f6576140f56154eb565b5b600061410485828601613e94565b925050602061411585828601613ed7565b9150509250929050565b60008060408385031215614136576141356154eb565b5b600061414485828601613e94565b925050602061415585828601613f87565b9150509250929050565b600060208284031215614175576141746154eb565b5b600061418384828501613ed7565b91505092915050565b6000602082840312156141a2576141a16154eb565b5b60006141b084828501613eec565b91505092915050565b600080604083850312156141d0576141cf6154eb565b5b60006141de85828601613eec565b92505060206141ef85828601613e94565b9150509250929050565b60006020828403121561420f5761420e6154eb565b5b600061421d84828501613f01565b91505092915050565b60006020828403121561423c5761423b6154eb565b5b600061424a84828501613f16565b91505092915050565b600060208284031215614269576142686154eb565b5b600082013567ffffffffffffffff811115614287576142866154e6565b5b61429384828501613f59565b91505092915050565b6000602082840312156142b2576142b16154eb565b5b60006142c084828501613f87565b91505092915050565b600080604083850312156142e0576142df6154eb565b5b60006142ee85828601613f87565b92505060206142ff85828601613e94565b9150509250929050565b600080604083850312156143205761431f6154eb565b5b600061432e85828601613f87565b925050602061433f85828601613ed7565b9150509250929050565b600080604083850312156143605761435f6154eb565b5b600061436e85828601613f87565b925050602061437f85828601613eec565b9150509250929050565b600080604083850312156143a05761439f6154eb565b5b60006143ae85828601613f87565b92505060206143bf85828601613f87565b9150509250929050565b6000806000606084860312156143e2576143e16154eb565b5b60006143f086828701613f87565b935050602061440186828701613f87565b925050604084013567ffffffffffffffff811115614422576144216154e6565b5b61442e86828701613ea9565b9150509250925092565b614441816151c8565b82525050565b614458614453826151c8565b61535e565b82525050565b614467816151da565b82525050565b614476816151e6565b82525050565b61448d614488826151e6565b615370565b82525050565b600061449e82615065565b6144a8818561507b565b93506144b8818560208601615255565b6144c1816154f0565b840191505092915050565b60006144d782615065565b6144e1818561508c565b93506144f1818560208601615255565b80840191505092915050565b600061450882615070565b6145128185615097565b9350614522818560208601615255565b61452b816154f0565b840191505092915050565b600061454182615070565b61454b81856150a8565b935061455b818560208601615255565b80840191505092915050565b6000614574602083615097565b915061457f8261550e565b602082019050919050565b6000614597601083615097565b91506145a282615537565b602082019050919050565b60006145ba602b83615097565b91506145c582615560565b604082019050919050565b60006145dd603283615097565b91506145e8826155af565b604082019050919050565b6000614600602583615097565b915061460b826155fe565b604082019050919050565b6000614623601c83615097565b915061462e8261564d565b602082019050919050565b6000614646600a83615097565b915061465182615676565b602082019050919050565b6000614669602483615097565b91506146748261569f565b604082019050919050565b600061468c601983615097565b9150614697826156ee565b602082019050919050565b60006146af600d83615097565b91506146ba82615717565b602082019050919050565b60006146d2600c83615097565b91506146dd82615740565b602082019050919050565b60006146f5602c83615097565b915061470082615769565b604082019050919050565b6000614718601783615097565b9150614723826157b8565b602082019050919050565b600061473b603883615097565b9150614746826157e1565b604082019050919050565b600061475e601283615097565b915061476982615830565b602082019050919050565b6000614781602a83615097565b915061478c82615859565b604082019050919050565b60006147a4602983615097565b91506147af826158a8565b604082019050919050565b60006147c7602083615097565b91506147d2826158f7565b602082019050919050565b60006147ea601383615097565b91506147f582615920565b602082019050919050565b600061480d602c83615097565b915061481882615949565b604082019050919050565b6000614830602f83615097565b915061483b82615998565b604082019050919050565b6000614853600883615097565b915061485e826159e7565b602082019050919050565b6000614876602183615097565b915061488182615a10565b604082019050919050565b6000614899600e83615097565b91506148a482615a5f565b602082019050919050565b60006148bc603183615097565b91506148c782615a88565b604082019050919050565b60006148df600f83615097565b91506148ea82615ad7565b602082019050919050565b6000614902600a83615097565b915061490d82615b00565b602082019050919050565b6000614925602c83615097565b915061493082615b29565b604082019050919050565b60006149486017836150a8565b915061495382615b78565b601782019050919050565b600061496b601383615097565b915061497682615ba1565b602082019050919050565b600061498e601083615097565b915061499982615bca565b602082019050919050565b60006149b1601183615097565b91506149bc82615bf3565b602082019050919050565b60006149d46011836150a8565b91506149df82615c1c565b601182019050919050565b60006149f7602f83615097565b9150614a0282615c45565b604082019050919050565b614a168161523c565b82525050565b6000614a288284614447565b60148201915081905092915050565b6000614a43828561447c565b602082019150614a53828461447c565b6020820191508190509392505050565b6000614a6f82846144cc565b915081905092915050565b6000614a868285614536565b9150614a928284614536565b91508190509392505050565b6000614aa98261493b565b9150614ab58285614536565b9150614ac0826149c7565b9150614acc8284614536565b91508190509392505050565b6000602082019050614aed6000830184614438565b92915050565b6000608082019050614b086000830187614438565b614b156020830186614438565b614b226040830185614a0d565b8181036060830152614b348184614493565b905095945050505050565b6000602082019050614b54600083018461445e565b92915050565b6000602082019050614b6f600083018461446d565b92915050565b60006020820190508181036000830152614b8f81846144fd565b905092915050565b60006020820190508181036000830152614bb081614567565b9050919050565b60006020820190508181036000830152614bd08161458a565b9050919050565b60006020820190508181036000830152614bf0816145ad565b9050919050565b60006020820190508181036000830152614c10816145d0565b9050919050565b60006020820190508181036000830152614c30816145f3565b9050919050565b60006020820190508181036000830152614c5081614616565b9050919050565b60006020820190508181036000830152614c7081614639565b9050919050565b60006020820190508181036000830152614c908161465c565b9050919050565b60006020820190508181036000830152614cb08161467f565b9050919050565b60006020820190508181036000830152614cd0816146a2565b9050919050565b60006020820190508181036000830152614cf0816146c5565b9050919050565b60006020820190508181036000830152614d10816146e8565b9050919050565b60006020820190508181036000830152614d308161470b565b9050919050565b60006020820190508181036000830152614d508161472e565b9050919050565b60006020820190508181036000830152614d7081614751565b9050919050565b60006020820190508181036000830152614d9081614774565b9050919050565b60006020820190508181036000830152614db081614797565b9050919050565b60006020820190508181036000830152614dd0816147ba565b9050919050565b60006020820190508181036000830152614df0816147dd565b9050919050565b60006020820190508181036000830152614e1081614800565b9050919050565b60006020820190508181036000830152614e3081614823565b9050919050565b60006020820190508181036000830152614e5081614846565b9050919050565b60006020820190508181036000830152614e7081614869565b9050919050565b60006020820190508181036000830152614e908161488c565b9050919050565b60006020820190508181036000830152614eb0816148af565b9050919050565b60006020820190508181036000830152614ed0816148d2565b9050919050565b60006020820190508181036000830152614ef0816148f5565b9050919050565b60006020820190508181036000830152614f1081614918565b9050919050565b60006020820190508181036000830152614f308161495e565b9050919050565b60006020820190508181036000830152614f5081614981565b9050919050565b60006020820190508181036000830152614f70816149a4565b9050919050565b60006020820190508181036000830152614f90816149ea565b9050919050565b6000602082019050614fac6000830184614a0d565b92915050565b6000614fbc614fcd565b9050614fc882826152e4565b919050565b6000604051905090565b600067ffffffffffffffff821115614ff257614ff16154a8565b5b602082029050602081019050919050565b600067ffffffffffffffff82111561501e5761501d6154a8565b5b615027826154f0565b9050602081019050919050565b600067ffffffffffffffff82111561504f5761504e6154a8565b5b615058826154f0565b9050602081019050919050565b600081519050919050565b600081519050919050565b600082825260208201905092915050565b600081905092915050565b600082825260208201905092915050565b600081905092915050565b60006150be8261523c565b91506150c98361523c565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156150fe576150fd6153bd565b5b828201905092915050565b60006151148261523c565b915061511f8361523c565b92508261512f5761512e6153ec565b5b828204905092915050565b60006151458261523c565b91506151508361523c565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615615189576151886153bd565b5b828202905092915050565b600061519f8261523c565b91506151aa8361523c565b9250828210156151bd576151bc6153bd565b5b828203905092915050565b60006151d38261521c565b9050919050565b60008115159050919050565b6000819050919050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b82818337600083830152505050565b60005b83811015615273578082015181840152602081019050615258565b83811115615282576000848401525b50505050565b60006152938261523c565b915060008214156152a7576152a66153bd565b5b600182039050919050565b600060028204905060018216806152ca57607f821691505b602082108114156152de576152dd61541b565b5b50919050565b6152ed826154f0565b810181811067ffffffffffffffff8211171561530c5761530b6154a8565b5b80604052505050565b60006153208261523c565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415615353576153526153bd565b5b600182019050919050565b60006153698261537a565b9050919050565b6000819050919050565b600061538582615501565b9050919050565b60006153978261523c565b91506153a28361523c565b9250826153b2576153b16153ec565b5b828206905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b60008160601b9050919050565b7f537472696e67733a20686578206c656e67746820696e73756666696369656e74600082015250565b7f746f6b656e507269636520756e73657400000000000000000000000000000000600082015250565b7f455243373231456e756d657261626c653a206f776e657220696e646578206f7560008201527f74206f6620626f756e6473000000000000000000000000000000000000000000602082015250565b7f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560008201527f63656976657220696d706c656d656e7465720000000000000000000000000000602082015250565b7f4552433732313a207472616e736665722066726f6d20696e636f72726563742060008201527f6f776e6572000000000000000000000000000000000000000000000000000000602082015250565b7f4552433732313a20746f6b656e20616c7265616479206d696e74656400000000600082015250565b7f6d617820737570706c7900000000000000000000000000000000000000000000600082015250565b7f4552433732313a207472616e7366657220746f20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b7f4552433732313a20617070726f766520746f2063616c6c657200000000000000600082015250565b7f76616c756520746f6f206c6f7700000000000000000000000000000000000000600082015250565b7f65746820616d6f756e7420300000000000000000000000000000000000000000600082015250565b7f4552433732313a206f70657261746f7220717565727920666f72206e6f6e657860008201527f697374656e7420746f6b656e0000000000000000000000000000000000000000602082015250565b7f6d617820627920726f756e642062792061646472657373000000000000000000600082015250565b7f4552433732313a20617070726f76652063616c6c6572206973206e6f74206f7760008201527f6e6572206e6f7220617070726f76656420666f7220616c6c0000000000000000602082015250565b7f6d617820746f74616c20627920726f756e640000000000000000000000000000600082015250565b7f4552433732313a2062616c616e636520717565727920666f7220746865207a6560008201527f726f206164647265737300000000000000000000000000000000000000000000602082015250565b7f4552433732313a206f776e657220717565727920666f72206e6f6e657869737460008201527f656e7420746f6b656e0000000000000000000000000000000000000000000000602082015250565b7f4552433732313a206d696e7420746f20746865207a65726f2061646472657373600082015250565b7f6574682062616c616e636520746f6f206c6f7700000000000000000000000000600082015250565b7f4552433732313a20617070726f76656420717565727920666f72206e6f6e657860008201527f697374656e7420746f6b656e0000000000000000000000000000000000000000602082015250565b7f4552433732314d657461646174613a2055524920717565727920666f72206e6f60008201527f6e6578697374656e7420746f6b656e0000000000000000000000000000000000602082015250565b7f616d6f756e742030000000000000000000000000000000000000000000000000600082015250565b7f4552433732313a20617070726f76616c20746f2063757272656e74206f776e6560008201527f7200000000000000000000000000000000000000000000000000000000000000602082015250565b7f7472616e73666572206572726f72000000000000000000000000000000000000600082015250565b7f4552433732313a207472616e736665722063616c6c6572206973206e6f74206f60008201527f776e6572206e6f7220617070726f766564000000000000000000000000000000602082015250565b7f636f6e7472616374207061757365640000000000000000000000000000000000600082015250565b7f6d696e74206572726f7200000000000000000000000000000000000000000000600082015250565b7f455243373231456e756d657261626c653a20676c6f62616c20696e646578206f60008201527f7574206f6620626f756e64730000000000000000000000000000000000000000602082015250565b7f416363657373436f6e74726f6c3a206163636f756e7420000000000000000000600082015250565b7f6e6f7420616c6c6f77656420746f206d696e7400000000000000000000000000600082015250565b7f6d756c7469736967206e6f742073657400000000000000000000000000000000600082015250565b7f726f756e6420756e617661696c61626c65000000000000000000000000000000600082015250565b7f206973206d697373696e6720726f6c6520000000000000000000000000000000600082015250565b7f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560008201527f20726f6c657320666f722073656c660000000000000000000000000000000000602082015250565b615c9d816151c8565b8114615ca857600080fd5b50565b615cb4816151da565b8114615cbf57600080fd5b50565b615ccb816151e6565b8114615cd657600080fd5b50565b615ce2816151f0565b8114615ced57600080fd5b50565b615cf98161523c565b8114615d0457600080fd5b5056fea2646970667358221220611978832870a9764596913f28b422e5aa9b536bec8a85e615ca43f9a31629ae64736f6c63430008070033
Deployed Bytecode
0x6080604052600436106102ff5760003560e01c806388c15e4111610190578063c87b56dd116100dc578063d73d3dd811610095578063e6d37b881161006f578063e6d37b8814610c38578063e985e9c514610c54578063eb685c4714610c91578063ec75be9214610cba576102ff565b8063d73d3dd814610b95578063e221cd8714610bbe578063e56bf02714610bfb576102ff565b8063c87b56dd14610a71578063cc2df2aa14610aae578063d4ddce8a14610ad9578063d539139314610b16578063d547741f14610b41578063d5abeb0114610b6a576102ff565b8063a22cb46511610149578063b88d4fde11610123578063b88d4fde146109b7578063ba87a7c9146109e0578063bedb86fb14610a0b578063c2a321b314610a34576102ff565b8063a22cb46514610938578063af640d0f14610961578063b187bd261461098c576102ff565b806388c15e41146108165780638cc2666d1461085357806391d148541461087c57806395d89b41146108b95780639f966777146108e4578063a217fddf1461090d576102ff565b806336568abe1161024f5780634f6ccce7116102085780636312af17116101e25780636312af17146107485780636352211e146107715780636c0360eb146107ae57806370a08231146107d9576102ff565b80634f6ccce7146106b757806355f804b3146106f45780635d64f80c1461071d576102ff565b806336568abe1461058357806338d07436146105ac57806338f14154146105e957806342842e0e146106265780634783c35b1461064f5780634f558e791461067a576102ff565b806318160ddd116102bc578063284d30ef11610296578063284d30ef146104c95780632eacab9f146104f25780632f2ff15d1461051d5780632f745c5914610546576102ff565b806318160ddd1461043857806323b872dd14610463578063248a9ca31461048c576102ff565b806301ffc9a7146103045780630441952614610341578063048f06f21461037e57806306fdde03146103a7578063081812fc146103d2578063095ea7b31461040f575b600080fd5b34801561031057600080fd5b5061032b600480360381019061032691906141f9565b610ce3565b6040516103389190614b3f565b60405180910390f35b34801561034d57600080fd5b506103686004803603810190610363919061429c565b610efd565b6040516103759190614b3f565b60405180910390f35b34801561038a57600080fd5b506103a560048036038101906103a09190614349565b610f1d565b005b3480156103b357600080fd5b506103bc610f64565b6040516103c99190614b75565b60405180910390f35b3480156103de57600080fd5b506103f960048036038101906103f4919061429c565b610ff6565b6040516104069190614ad8565b60405180910390f35b34801561041b57600080fd5b506104366004803603810190610431919061411f565b61107b565b005b34801561044457600080fd5b5061044d611193565b60405161045a9190614f97565b60405180910390f35b34801561046f57600080fd5b5061048a60048036038101906104859190614009565b6111a0565b005b34801561049857600080fd5b506104b360048036038101906104ae919061418c565b611200565b6040516104c09190614b5a565b60405180910390f35b3480156104d557600080fd5b506104f060048036038101906104eb9190613f9c565b611220565b005b3480156104fe57600080fd5b50610507611272565b6040516105149190614f97565b60405180910390f35b34801561052957600080fd5b50610544600480360381019061053f91906141b9565b611278565b005b34801561055257600080fd5b5061056d6004803603810190610568919061411f565b611299565b60405161057a9190614f97565b60405180910390f35b34801561058f57600080fd5b506105aa60048036038101906105a591906141b9565b61133e565b005b3480156105b857600080fd5b506105d360048036038101906105ce9190614309565b6113c1565b6040516105e09190614b3f565b60405180910390f35b3480156105f557600080fd5b50610610600480360381019061060b919061411f565b611649565b60405161061d9190614f97565b60405180910390f35b34801561063257600080fd5b5061064d60048036038101906106489190614009565b61166e565b005b34801561065b57600080fd5b5061066461168e565b6040516106719190614ad8565b60405180910390f35b34801561068657600080fd5b506106a1600480360381019061069c919061429c565b6116b4565b6040516106ae9190614b3f565b60405180910390f35b3480156106c357600080fd5b506106de60048036038101906106d9919061429c565b6116c6565b6040516106eb9190614f97565b60405180910390f35b34801561070057600080fd5b5061071b60048036038101906107169190614253565b611737565b005b34801561072957600080fd5b5061073261177c565b60405161073f9190614f97565b60405180910390f35b34801561075457600080fd5b5061076f600480360381019061076a9190614309565b611782565b005b34801561077d57600080fd5b506107986004803603810190610793919061429c565b6117dc565b6040516107a59190614ad8565b60405180910390f35b3480156107ba57600080fd5b506107c361188e565b6040516107d09190614b75565b60405180910390f35b3480156107e557600080fd5b5061080060048036038101906107fb9190613f9c565b61191c565b60405161080d9190614f97565b60405180910390f35b34801561082257600080fd5b5061083d6004803603810190610838919061429c565b6119d4565b60405161084a9190614f97565b60405180910390f35b34801561085f57600080fd5b5061087a6004803603810190610875919061429c565b6119ec565b005b34801561088857600080fd5b506108a3600480360381019061089e91906141b9565b611a21565b6040516108b09190614b3f565b60405180910390f35b3480156108c557600080fd5b506108ce611a8c565b6040516108db9190614b75565b60405180910390f35b3480156108f057600080fd5b5061090b60048036038101906109069190614389565b611b1e565b005b34801561091957600080fd5b50610922611b65565b60405161092f9190614b5a565b60405180910390f35b34801561094457600080fd5b5061095f600480360381019061095a91906140df565b611b6c565b005b34801561096d57600080fd5b50610976611b82565b6040516109839190614f97565b60405180910390f35b34801561099857600080fd5b506109a1611b88565b6040516109ae9190614b3f565b60405180910390f35b3480156109c357600080fd5b506109de60048036038101906109d9919061405c565b611b9b565b005b3480156109ec57600080fd5b506109f5611bfd565b604051610a029190614b5a565b60405180910390f35b348015610a1757600080fd5b50610a326004803603810190610a2d919061415f565b611c21565b005b348015610a4057600080fd5b50610a5b6004803603810190610a5691906142c9565b611c69565b604051610a689190614b3f565b60405180910390f35b348015610a7d57600080fd5b50610a986004803603810190610a93919061429c565b611da1565b604051610aa59190614b75565b60405180910390f35b348015610aba57600080fd5b50610ac3611e48565b604051610ad09190614f97565b60405180910390f35b348015610ae557600080fd5b50610b006004803603810190610afb919061429c565b611e4e565b604051610b0d9190614f97565b60405180910390f35b348015610b2257600080fd5b50610b2b611e66565b604051610b389190614b5a565b60405180910390f35b348015610b4d57600080fd5b50610b686004803603810190610b6391906141b9565b611e8a565b005b348015610b7657600080fd5b50610b7f611eab565b604051610b8c9190614f97565b60405180910390f35b348015610ba157600080fd5b50610bbc6004803603810190610bb7919061429c565b611eb1565b005b348015610bca57600080fd5b50610be56004803603810190610be0919061429c565b611ee6565b604051610bf29190614f97565b60405180910390f35b348015610c0757600080fd5b50610c226004803603810190610c1d919061429c565b611efe565b604051610c2f9190614b5a565b60405180910390f35b610c526004803603810190610c4d91906143c9565b611f16565b005b348015610c6057600080fd5b50610c7b6004803603810190610c769190613fc9565b61241e565b604051610c889190614b3f565b60405180910390f35b348015610c9d57600080fd5b50610cb86004803603810190610cb39190614389565b6124b2565b005b348015610cc657600080fd5b50610ce16004803603810190610cdc919061429c565b6124f9565b005b60007f7965db0b000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480610dae57507f80ac58cd000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b80610e1657507f5b5e139f000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b80610e7e57507f780e9d63000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b80610ee657507f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b80610ef65750610ef58261252e565b5b9050919050565b60176020528060005260406000206000915054906101000a900460ff1681565b7f2ccf90dd7c30b80a460e25097b3c5ef613343f69ad6b2cfd3cfb644af593ca0b610f47816125a8565b816012600085815260200190815260200160002081905550505050565b606060008054610f73906152b2565b80601f0160208091040260200160405190810160405280929190818152602001828054610f9f906152b2565b8015610fec5780601f10610fc157610100808354040283529160200191610fec565b820191906000526020600020905b815481529060010190602001808311610fcf57829003601f168201915b5050505050905090565b6000611001826125bc565b611040576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161103790614df7565b60405180910390fd5b6004600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b6000611086826117dc565b90508073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156110f7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110ee90614e57565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16611116612628565b73ffffffffffffffffffffffffffffffffffffffff16148061114557506111448161113f612628565b61241e565b5b611184576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161117b90614d37565b60405180910390fd5b61118e8383612630565b505050565b6000600880549050905090565b6111b16111ab612628565b826126e9565b6111f0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111e790614e97565b60405180910390fd5b6111fb8383836127c7565b505050565b6000600a6000838152602001908152602001600020600101549050919050565b6000801b61122d816125a8565b81600c60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050565b60115481565b61128182611200565b61128a816125a8565b6112948383612a2e565b505050565b60006112a48361191c565b82106112e5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112dc90614bd7565b60405180910390fd5b600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600083815260200190815260200160002054905092915050565b611346612628565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16146113b3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113aa90614f77565b60405180910390fd5b6113bd8282612b0f565b5050565b60007f2ccf90dd7c30b80a460e25097b3c5ef613343f69ad6b2cfd3cfb644af593ca0b6113ed816125a8565b600073ffffffffffffffffffffffffffffffffffffffff16600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141561147f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161147690614f37565b60405180910390fd5b60004790506000841561149457819050611498565b8590505b818111156114db576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114d290614dd7565b60405180910390fd5b6000811161151e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161151590614cd7565b60405180910390fd5b6000600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1682600067ffffffffffffffff811115611575576115746154a8565b5b6040519080825280601f01601f1916602001820160405280156115a75781602001600182028036833780820191505090505b506040516115b59190614a63565b60006040518083038185875af1925050503d80600081146115f2576040519150601f19603f3d011682016040523d82523d6000602084013e6115f7565b606091505b505090508061163b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161163290614e77565b60405180910390fd5b600194505050505092915050565b6016602052816000526040600020602052806000526040600020600091509150505481565b61168983838360405180602001604052806000815250611b9b565b505050565b600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60006116bf826125bc565b9050919050565b60006116d0611193565b8210611711576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161170890614ef7565b60405180910390fd5b6008828154811061172557611724615479565b5b90600052602060002001549050919050565b7f2ccf90dd7c30b80a460e25097b3c5ef613343f69ad6b2cfd3cfb644af593ca0b611761816125a8565b81600b9080519060200190611777929190613cfd565b505050565b600f5481565b7f2ccf90dd7c30b80a460e25097b3c5ef613343f69ad6b2cfd3cfb644af593ca0b6117ac816125a8565b816017600085815260200190815260200160002060006101000a81548160ff021916908315150217905550505050565b6000806002600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611885576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161187c90614d97565b60405180910390fd5b80915050919050565b600b805461189b906152b2565b80601f01602080910402602001604051908101604052809291908181526020018280546118c7906152b2565b80156119145780601f106118e957610100808354040283529160200191611914565b820191906000526020600020905b8154815290600101906020018083116118f757829003601f168201915b505050505081565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561198d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161198490614d77565b60405180910390fd5b600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b60156020528060005260406000206000915090505481565b7f2ccf90dd7c30b80a460e25097b3c5ef613343f69ad6b2cfd3cfb644af593ca0b611a16816125a8565b816010819055505050565b6000600a600084815260200190815260200160002060000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b606060018054611a9b906152b2565b80601f0160208091040260200160405190810160405280929190818152602001828054611ac7906152b2565b8015611b145780601f10611ae957610100808354040283529160200191611b14565b820191906000526020600020905b815481529060010190602001808311611af757829003601f168201915b5050505050905090565b7f2ccf90dd7c30b80a460e25097b3c5ef613343f69ad6b2cfd3cfb644af593ca0b611b48816125a8565b816014600085815260200190815260200160002081905550505050565b6000801b81565b611b7e611b77612628565b8383612bf1565b5050565b600d5481565b600c60149054906101000a900460ff1681565b611bac611ba6612628565b836126e9565b611beb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611be290614e97565b60405180910390fd5b611bf784848484612d5e565b50505050565b7f2ccf90dd7c30b80a460e25097b3c5ef613343f69ad6b2cfd3cfb644af593ca0b81565b7f2ccf90dd7c30b80a460e25097b3c5ef613343f69ad6b2cfd3cfb644af593ca0b611c4b816125a8565b81600c60146101000a81548160ff0219169083151502179055505050565b60007f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a6611c95816125a8565b60008411611cd8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ccf90614e37565b60405180910390fd5b600e5484611ce4611193565b611cee91906150b3565b1115611d2f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d2690614c57565b60405180910390fd5b60005b84811015611d9557611d4384612dba565b611d82576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d7990614ed7565b60405180910390fd5b8080611d8d90615315565b915050611d32565b50600191505092915050565b6060611dac826125bc565b611deb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611de290614e17565b60405180910390fd5b6000611df5612de9565b90506000815111611e155760405180602001604052806000815250611e40565b80611e1f84612e7b565b604051602001611e30929190614a7a565b6040516020818303038152906040525b915050919050565b60105481565b60136020528060005260406000206000915090505481565b7f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a681565b611e9382611200565b611e9c816125a8565b611ea68383612b0f565b505050565b600e5481565b7f2ccf90dd7c30b80a460e25097b3c5ef613343f69ad6b2cfd3cfb644af593ca0b611edb816125a8565b81600f819055505050565b60146020528060005260406000206000915090505481565b60126020528060005260406000206000915090505481565b600c60149054906101000a900460ff1615611f66576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f5d90614eb7565b60405180910390fd5b6017600084815260200190815260200160002060009054906101000a900460ff16611fc6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fbd90614f57565b60405180910390fd5b600e5482611fd2611193565b611fdc91906150b3565b111561201d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161201490614c57565b60405180910390fd5b60008211612060576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161205790614e37565b60405180910390fd5b60105483146121215760006013600085815260200190815260200160002054116120bf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120b690614bb7565b60405180910390fd5b6013600084815260200190815260200160002054826120de919061513a565b341015612120576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161211790614cb7565b60405180910390fd5b5b600f548260166000612131612628565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008681526020019081526020016000205461218791906150b3565b11156121c8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121bf90614d17565b60405180910390fd5b601154831461231357600060146000858152602001908152602001600020541180156122255750601460008481526020019081526020016000205482601560008681526020019081526020016000205461222291906150b3565b11155b612264576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161225b90614d57565b60405180910390fd5b60006012600085815260200190815260200160002050602060ff161180156122d357506122d28160126000868152602001908152602001600020546122a7612628565b6040516020016122b79190614a1c565b60405160208183030381529060405280519060200120612fdc565b5b612312576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161230990614f17565b60405180910390fd5b5b8160166000612320612628565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000858152602001908152602001600020600082825461237a91906150b3565b92505081905550816015600085815260200190815260200160002060008282546123a491906150b3565b9250508190555060005b82811015612418576123c66123c1612628565b612dba565b612405576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123fc90614ed7565b60405180910390fd5b808061241090615315565b9150506123ae565b50505050565b6000600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b7f2ccf90dd7c30b80a460e25097b3c5ef613343f69ad6b2cfd3cfb644af593ca0b6124dc816125a8565b816013600085815260200190815260200160002081905550505050565b7f2ccf90dd7c30b80a460e25097b3c5ef613343f69ad6b2cfd3cfb644af593ca0b612523816125a8565b816011819055505050565b60007f7965db0b000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806125a157506125a082612ff3565b5b9050919050565b6125b9816125b4612628565b61306d565b50565b60008073ffffffffffffffffffffffffffffffffffffffff166002600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614159050919050565b600033905090565b816004600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff166126a3836117dc565b73ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b60006126f4826125bc565b612733576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161272a90614cf7565b60405180910390fd5b600061273e836117dc565b90508073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614806127ad57508373ffffffffffffffffffffffffffffffffffffffff1661279584610ff6565b73ffffffffffffffffffffffffffffffffffffffff16145b806127be57506127bd818561241e565b5b91505092915050565b8273ffffffffffffffffffffffffffffffffffffffff166127e7826117dc565b73ffffffffffffffffffffffffffffffffffffffff161461283d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161283490614c17565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156128ad576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128a490614c77565b60405180910390fd5b6128b883838361310a565b6128c3600082612630565b6001600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546129139190615194565b925050819055506001600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461296a91906150b3565b92505081905550816002600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4612a2983838361321e565b505050565b612a388282611a21565b612b0b576001600a600084815260200190815260200160002060000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550612ab0612628565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45b5050565b612b198282611a21565b15612bed576000600a600084815260200190815260200160002060000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550612b92612628565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16837ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b60405160405180910390a45b5050565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415612c60576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c5790614c97565b60405180910390fd5b80600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c3183604051612d519190614b3f565b60405180910390a3505050565b612d698484846127c7565b612d7584848484613223565b612db4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612dab90614bf7565b60405180910390fd5b50505050565b6000612dc882600d546133ba565b600d6000815480929190612ddb90615315565b919050555060019050919050565b6060600b8054612df8906152b2565b80601f0160208091040260200160405190810160405280929190818152602001828054612e24906152b2565b8015612e715780601f10612e4657610100808354040283529160200191612e71565b820191906000526020600020905b815481529060010190602001808311612e5457829003601f168201915b5050505050905090565b60606000821415612ec3576040518060400160405280600181526020017f30000000000000000000000000000000000000000000000000000000000000008152509050612fd7565b600082905060005b60008214612ef5578080612ede90615315565b915050600a82612eee9190615109565b9150612ecb565b60008167ffffffffffffffff811115612f1157612f106154a8565b5b6040519080825280601f01601f191660200182016040528015612f435781602001600182028036833780820191505090505b5090505b60008514612fd057600182612f5c9190615194565b9150600a85612f6b919061538c565b6030612f7791906150b3565b60f81b818381518110612f8d57612f8c615479565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600a85612fc99190615109565b9450612f47565b8093505050505b919050565b600082612fe98584613594565b1490509392505050565b60007f780e9d63000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480613066575061306582613647565b5b9050919050565b6130778282611a21565b6131065761309c8173ffffffffffffffffffffffffffffffffffffffff166014613729565b6130aa8360001c6020613729565b6040516020016130bb929190614a9e565b6040516020818303038152906040526040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016130fd9190614b75565b60405180910390fd5b5050565b613115838383613965565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415613158576131538161396a565b613197565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16146131965761319583826139b3565b5b5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156131da576131d581613b20565b613219565b8273ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614613218576132178282613bf1565b5b5b505050565b505050565b60006132448473ffffffffffffffffffffffffffffffffffffffff16613c70565b156133ad578373ffffffffffffffffffffffffffffffffffffffff1663150b7a0261326d612628565b8786866040518563ffffffff1660e01b815260040161328f9493929190614af3565b602060405180830381600087803b1580156132a957600080fd5b505af19250505080156132da57506040513d601f19601f820116820180604052508101906132d79190614226565b60015b61335d573d806000811461330a576040519150601f19603f3d011682016040523d82523d6000602084013e61330f565b606091505b50600081511415613355576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161334c90614bf7565b60405180910390fd5b805181602001fd5b63150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149150506133b2565b600190505b949350505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561342a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161342190614db7565b60405180910390fd5b613433816125bc565b15613473576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161346a90614c37565b60405180910390fd5b61347f6000838361310a565b6001600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546134cf91906150b3565b92505081905550816002600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a46135906000838361321e565b5050565b60008082905060005b845181101561363c5760008582815181106135bb576135ba615479565b5b602002602001015190508083116135fc5782816040516020016135df929190614a37565b604051602081830303815290604052805190602001209250613628565b808360405160200161360f929190614a37565b6040516020818303038152906040528051906020012092505b50808061363490615315565b91505061359d565b508091505092915050565b60007f80ac58cd000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061371257507f5b5e139f000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b80613722575061372182613c93565b5b9050919050565b60606000600283600261373c919061513a565b61374691906150b3565b67ffffffffffffffff81111561375f5761375e6154a8565b5b6040519080825280601f01601f1916602001820160405280156137915781602001600182028036833780820191505090505b5090507f3000000000000000000000000000000000000000000000000000000000000000816000815181106137c9576137c8615479565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053507f78000000000000000000000000000000000000000000000000000000000000008160018151811061382d5761382c615479565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053506000600184600261386d919061513a565b61387791906150b3565b90505b6001811115613917577f3031323334353637383961626364656600000000000000000000000000000000600f8616601081106138b9576138b8615479565b5b1a60f81b8282815181106138d0576138cf615479565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600485901c94508061391090615288565b905061387a565b506000841461395b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161395290614b97565b60405180910390fd5b8091505092915050565b505050565b6008805490506009600083815260200190815260200160002081905550600881908060018154018082558091505060019003906000526020600020016000909190919091505550565b600060016139c08461191c565b6139ca9190615194565b9050600060076000848152602001908152602001600020549050818114613aaf576000600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600084815260200190815260200160002054905080600660008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600084815260200190815260200160002081905550816007600083815260200190815260200160002081905550505b6007600084815260200190815260200160002060009055600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008381526020019081526020016000206000905550505050565b60006001600880549050613b349190615194565b9050600060096000848152602001908152602001600020549050600060088381548110613b6457613b63615479565b5b906000526020600020015490508060088381548110613b8657613b85615479565b5b906000526020600020018190555081600960008381526020019081526020016000208190555060096000858152602001908152602001600020600090556008805480613bd557613bd461544a565b5b6001900381819060005260206000200160009055905550505050565b6000613bfc8361191c565b905081600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600083815260200190815260200160002081905550806007600084815260200190815260200160002081905550505050565b6000808273ffffffffffffffffffffffffffffffffffffffff163b119050919050565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b828054613d09906152b2565b90600052602060002090601f016020900481019282613d2b5760008555613d72565b82601f10613d4457805160ff1916838001178555613d72565b82800160010185558215613d72579182015b82811115613d71578251825591602001919060010190613d56565b5b509050613d7f9190613d83565b5090565b5b80821115613d9c576000816000905550600101613d84565b5090565b6000613db3613dae84614fd7565b614fb2565b90508083825260208201905082856020860282011115613dd657613dd56154dc565b5b60005b85811015613e065781613dec8882613eec565b845260208401935060208301925050600181019050613dd9565b5050509392505050565b6000613e23613e1e84615003565b614fb2565b905082815260208101848484011115613e3f57613e3e6154e1565b5b613e4a848285615246565b509392505050565b6000613e65613e6084615034565b614fb2565b905082815260208101848484011115613e8157613e806154e1565b5b613e8c848285615246565b509392505050565b600081359050613ea381615c94565b92915050565b600082601f830112613ebe57613ebd6154d7565b5b8135613ece848260208601613da0565b91505092915050565b600081359050613ee681615cab565b92915050565b600081359050613efb81615cc2565b92915050565b600081359050613f1081615cd9565b92915050565b600081519050613f2581615cd9565b92915050565b600082601f830112613f4057613f3f6154d7565b5b8135613f50848260208601613e10565b91505092915050565b600082601f830112613f6e57613f6d6154d7565b5b8135613f7e848260208601613e52565b91505092915050565b600081359050613f9681615cf0565b92915050565b600060208284031215613fb257613fb16154eb565b5b6000613fc084828501613e94565b91505092915050565b60008060408385031215613fe057613fdf6154eb565b5b6000613fee85828601613e94565b9250506020613fff85828601613e94565b9150509250929050565b600080600060608486031215614022576140216154eb565b5b600061403086828701613e94565b935050602061404186828701613e94565b925050604061405286828701613f87565b9150509250925092565b60008060008060808587031215614076576140756154eb565b5b600061408487828801613e94565b945050602061409587828801613e94565b93505060406140a687828801613f87565b925050606085013567ffffffffffffffff8111156140c7576140c66154e6565b5b6140d387828801613f2b565b91505092959194509250565b600080604083850312156140f6576140f56154eb565b5b600061410485828601613e94565b925050602061411585828601613ed7565b9150509250929050565b60008060408385031215614136576141356154eb565b5b600061414485828601613e94565b925050602061415585828601613f87565b9150509250929050565b600060208284031215614175576141746154eb565b5b600061418384828501613ed7565b91505092915050565b6000602082840312156141a2576141a16154eb565b5b60006141b084828501613eec565b91505092915050565b600080604083850312156141d0576141cf6154eb565b5b60006141de85828601613eec565b92505060206141ef85828601613e94565b9150509250929050565b60006020828403121561420f5761420e6154eb565b5b600061421d84828501613f01565b91505092915050565b60006020828403121561423c5761423b6154eb565b5b600061424a84828501613f16565b91505092915050565b600060208284031215614269576142686154eb565b5b600082013567ffffffffffffffff811115614287576142866154e6565b5b61429384828501613f59565b91505092915050565b6000602082840312156142b2576142b16154eb565b5b60006142c084828501613f87565b91505092915050565b600080604083850312156142e0576142df6154eb565b5b60006142ee85828601613f87565b92505060206142ff85828601613e94565b9150509250929050565b600080604083850312156143205761431f6154eb565b5b600061432e85828601613f87565b925050602061433f85828601613ed7565b9150509250929050565b600080604083850312156143605761435f6154eb565b5b600061436e85828601613f87565b925050602061437f85828601613eec565b9150509250929050565b600080604083850312156143a05761439f6154eb565b5b60006143ae85828601613f87565b92505060206143bf85828601613f87565b9150509250929050565b6000806000606084860312156143e2576143e16154eb565b5b60006143f086828701613f87565b935050602061440186828701613f87565b925050604084013567ffffffffffffffff811115614422576144216154e6565b5b61442e86828701613ea9565b9150509250925092565b614441816151c8565b82525050565b614458614453826151c8565b61535e565b82525050565b614467816151da565b82525050565b614476816151e6565b82525050565b61448d614488826151e6565b615370565b82525050565b600061449e82615065565b6144a8818561507b565b93506144b8818560208601615255565b6144c1816154f0565b840191505092915050565b60006144d782615065565b6144e1818561508c565b93506144f1818560208601615255565b80840191505092915050565b600061450882615070565b6145128185615097565b9350614522818560208601615255565b61452b816154f0565b840191505092915050565b600061454182615070565b61454b81856150a8565b935061455b818560208601615255565b80840191505092915050565b6000614574602083615097565b915061457f8261550e565b602082019050919050565b6000614597601083615097565b91506145a282615537565b602082019050919050565b60006145ba602b83615097565b91506145c582615560565b604082019050919050565b60006145dd603283615097565b91506145e8826155af565b604082019050919050565b6000614600602583615097565b915061460b826155fe565b604082019050919050565b6000614623601c83615097565b915061462e8261564d565b602082019050919050565b6000614646600a83615097565b915061465182615676565b602082019050919050565b6000614669602483615097565b91506146748261569f565b604082019050919050565b600061468c601983615097565b9150614697826156ee565b602082019050919050565b60006146af600d83615097565b91506146ba82615717565b602082019050919050565b60006146d2600c83615097565b91506146dd82615740565b602082019050919050565b60006146f5602c83615097565b915061470082615769565b604082019050919050565b6000614718601783615097565b9150614723826157b8565b602082019050919050565b600061473b603883615097565b9150614746826157e1565b604082019050919050565b600061475e601283615097565b915061476982615830565b602082019050919050565b6000614781602a83615097565b915061478c82615859565b604082019050919050565b60006147a4602983615097565b91506147af826158a8565b604082019050919050565b60006147c7602083615097565b91506147d2826158f7565b602082019050919050565b60006147ea601383615097565b91506147f582615920565b602082019050919050565b600061480d602c83615097565b915061481882615949565b604082019050919050565b6000614830602f83615097565b915061483b82615998565b604082019050919050565b6000614853600883615097565b915061485e826159e7565b602082019050919050565b6000614876602183615097565b915061488182615a10565b604082019050919050565b6000614899600e83615097565b91506148a482615a5f565b602082019050919050565b60006148bc603183615097565b91506148c782615a88565b604082019050919050565b60006148df600f83615097565b91506148ea82615ad7565b602082019050919050565b6000614902600a83615097565b915061490d82615b00565b602082019050919050565b6000614925602c83615097565b915061493082615b29565b604082019050919050565b60006149486017836150a8565b915061495382615b78565b601782019050919050565b600061496b601383615097565b915061497682615ba1565b602082019050919050565b600061498e601083615097565b915061499982615bca565b602082019050919050565b60006149b1601183615097565b91506149bc82615bf3565b602082019050919050565b60006149d46011836150a8565b91506149df82615c1c565b601182019050919050565b60006149f7602f83615097565b9150614a0282615c45565b604082019050919050565b614a168161523c565b82525050565b6000614a288284614447565b60148201915081905092915050565b6000614a43828561447c565b602082019150614a53828461447c565b6020820191508190509392505050565b6000614a6f82846144cc565b915081905092915050565b6000614a868285614536565b9150614a928284614536565b91508190509392505050565b6000614aa98261493b565b9150614ab58285614536565b9150614ac0826149c7565b9150614acc8284614536565b91508190509392505050565b6000602082019050614aed6000830184614438565b92915050565b6000608082019050614b086000830187614438565b614b156020830186614438565b614b226040830185614a0d565b8181036060830152614b348184614493565b905095945050505050565b6000602082019050614b54600083018461445e565b92915050565b6000602082019050614b6f600083018461446d565b92915050565b60006020820190508181036000830152614b8f81846144fd565b905092915050565b60006020820190508181036000830152614bb081614567565b9050919050565b60006020820190508181036000830152614bd08161458a565b9050919050565b60006020820190508181036000830152614bf0816145ad565b9050919050565b60006020820190508181036000830152614c10816145d0565b9050919050565b60006020820190508181036000830152614c30816145f3565b9050919050565b60006020820190508181036000830152614c5081614616565b9050919050565b60006020820190508181036000830152614c7081614639565b9050919050565b60006020820190508181036000830152614c908161465c565b9050919050565b60006020820190508181036000830152614cb08161467f565b9050919050565b60006020820190508181036000830152614cd0816146a2565b9050919050565b60006020820190508181036000830152614cf0816146c5565b9050919050565b60006020820190508181036000830152614d10816146e8565b9050919050565b60006020820190508181036000830152614d308161470b565b9050919050565b60006020820190508181036000830152614d508161472e565b9050919050565b60006020820190508181036000830152614d7081614751565b9050919050565b60006020820190508181036000830152614d9081614774565b9050919050565b60006020820190508181036000830152614db081614797565b9050919050565b60006020820190508181036000830152614dd0816147ba565b9050919050565b60006020820190508181036000830152614df0816147dd565b9050919050565b60006020820190508181036000830152614e1081614800565b9050919050565b60006020820190508181036000830152614e3081614823565b9050919050565b60006020820190508181036000830152614e5081614846565b9050919050565b60006020820190508181036000830152614e7081614869565b9050919050565b60006020820190508181036000830152614e908161488c565b9050919050565b60006020820190508181036000830152614eb0816148af565b9050919050565b60006020820190508181036000830152614ed0816148d2565b9050919050565b60006020820190508181036000830152614ef0816148f5565b9050919050565b60006020820190508181036000830152614f1081614918565b9050919050565b60006020820190508181036000830152614f308161495e565b9050919050565b60006020820190508181036000830152614f5081614981565b9050919050565b60006020820190508181036000830152614f70816149a4565b9050919050565b60006020820190508181036000830152614f90816149ea565b9050919050565b6000602082019050614fac6000830184614a0d565b92915050565b6000614fbc614fcd565b9050614fc882826152e4565b919050565b6000604051905090565b600067ffffffffffffffff821115614ff257614ff16154a8565b5b602082029050602081019050919050565b600067ffffffffffffffff82111561501e5761501d6154a8565b5b615027826154f0565b9050602081019050919050565b600067ffffffffffffffff82111561504f5761504e6154a8565b5b615058826154f0565b9050602081019050919050565b600081519050919050565b600081519050919050565b600082825260208201905092915050565b600081905092915050565b600082825260208201905092915050565b600081905092915050565b60006150be8261523c565b91506150c98361523c565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156150fe576150fd6153bd565b5b828201905092915050565b60006151148261523c565b915061511f8361523c565b92508261512f5761512e6153ec565b5b828204905092915050565b60006151458261523c565b91506151508361523c565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615615189576151886153bd565b5b828202905092915050565b600061519f8261523c565b91506151aa8361523c565b9250828210156151bd576151bc6153bd565b5b828203905092915050565b60006151d38261521c565b9050919050565b60008115159050919050565b6000819050919050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b82818337600083830152505050565b60005b83811015615273578082015181840152602081019050615258565b83811115615282576000848401525b50505050565b60006152938261523c565b915060008214156152a7576152a66153bd565b5b600182039050919050565b600060028204905060018216806152ca57607f821691505b602082108114156152de576152dd61541b565b5b50919050565b6152ed826154f0565b810181811067ffffffffffffffff8211171561530c5761530b6154a8565b5b80604052505050565b60006153208261523c565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415615353576153526153bd565b5b600182019050919050565b60006153698261537a565b9050919050565b6000819050919050565b600061538582615501565b9050919050565b60006153978261523c565b91506153a28361523c565b9250826153b2576153b16153ec565b5b828206905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b60008160601b9050919050565b7f537472696e67733a20686578206c656e67746820696e73756666696369656e74600082015250565b7f746f6b656e507269636520756e73657400000000000000000000000000000000600082015250565b7f455243373231456e756d657261626c653a206f776e657220696e646578206f7560008201527f74206f6620626f756e6473000000000000000000000000000000000000000000602082015250565b7f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560008201527f63656976657220696d706c656d656e7465720000000000000000000000000000602082015250565b7f4552433732313a207472616e736665722066726f6d20696e636f72726563742060008201527f6f776e6572000000000000000000000000000000000000000000000000000000602082015250565b7f4552433732313a20746f6b656e20616c7265616479206d696e74656400000000600082015250565b7f6d617820737570706c7900000000000000000000000000000000000000000000600082015250565b7f4552433732313a207472616e7366657220746f20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b7f4552433732313a20617070726f766520746f2063616c6c657200000000000000600082015250565b7f76616c756520746f6f206c6f7700000000000000000000000000000000000000600082015250565b7f65746820616d6f756e7420300000000000000000000000000000000000000000600082015250565b7f4552433732313a206f70657261746f7220717565727920666f72206e6f6e657860008201527f697374656e7420746f6b656e0000000000000000000000000000000000000000602082015250565b7f6d617820627920726f756e642062792061646472657373000000000000000000600082015250565b7f4552433732313a20617070726f76652063616c6c6572206973206e6f74206f7760008201527f6e6572206e6f7220617070726f76656420666f7220616c6c0000000000000000602082015250565b7f6d617820746f74616c20627920726f756e640000000000000000000000000000600082015250565b7f4552433732313a2062616c616e636520717565727920666f7220746865207a6560008201527f726f206164647265737300000000000000000000000000000000000000000000602082015250565b7f4552433732313a206f776e657220717565727920666f72206e6f6e657869737460008201527f656e7420746f6b656e0000000000000000000000000000000000000000000000602082015250565b7f4552433732313a206d696e7420746f20746865207a65726f2061646472657373600082015250565b7f6574682062616c616e636520746f6f206c6f7700000000000000000000000000600082015250565b7f4552433732313a20617070726f76656420717565727920666f72206e6f6e657860008201527f697374656e7420746f6b656e0000000000000000000000000000000000000000602082015250565b7f4552433732314d657461646174613a2055524920717565727920666f72206e6f60008201527f6e6578697374656e7420746f6b656e0000000000000000000000000000000000602082015250565b7f616d6f756e742030000000000000000000000000000000000000000000000000600082015250565b7f4552433732313a20617070726f76616c20746f2063757272656e74206f776e6560008201527f7200000000000000000000000000000000000000000000000000000000000000602082015250565b7f7472616e73666572206572726f72000000000000000000000000000000000000600082015250565b7f4552433732313a207472616e736665722063616c6c6572206973206e6f74206f60008201527f776e6572206e6f7220617070726f766564000000000000000000000000000000602082015250565b7f636f6e7472616374207061757365640000000000000000000000000000000000600082015250565b7f6d696e74206572726f7200000000000000000000000000000000000000000000600082015250565b7f455243373231456e756d657261626c653a20676c6f62616c20696e646578206f60008201527f7574206f6620626f756e64730000000000000000000000000000000000000000602082015250565b7f416363657373436f6e74726f6c3a206163636f756e7420000000000000000000600082015250565b7f6e6f7420616c6c6f77656420746f206d696e7400000000000000000000000000600082015250565b7f6d756c7469736967206e6f742073657400000000000000000000000000000000600082015250565b7f726f756e6420756e617661696c61626c65000000000000000000000000000000600082015250565b7f206973206d697373696e6720726f6c6520000000000000000000000000000000600082015250565b7f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560008201527f20726f6c657320666f722073656c660000000000000000000000000000000000602082015250565b615c9d816151c8565b8114615ca857600080fd5b50565b615cb4816151da565b8114615cbf57600080fd5b50565b615ccb816151e6565b8114615cd657600080fd5b50565b615ce2816151f0565b8114615ced57600080fd5b50565b615cf98161523c565b8114615d0457600080fd5b5056fea2646970667358221220611978832870a9764596913f28b422e5aa9b536bec8a85e615ca43f9a31629ae64736f6c63430008070033
Loading...
Loading
Loading...
Loading
OVERVIEW
Users can experience Social, Fashion, and Entertainment all in one place. In addition to bringing IP collaboration and social experiences onto Web 3.0.Multichain Portfolio | 30 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|
Loading...
Loading
[ Download: CSV Export ]
[ Download: CSV Export ]
A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.