Feature Tip: Add private address tag to any address under My Name Tag !
ERC-721
Overview
Max Total Supply
5,555 FF
Holders
1,242
Market
Volume (24H)
N/A
Min Price (24H)
N/A
Max Price (24H)
N/A
Other Info
Token Contract
Balance
1 FFLoading...
Loading
Loading...
Loading
Loading...
Loading
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
Contract Name:
FeatheredFrens
Compiler Version
v0.8.0+commit.c7dfd78e
Optimization Enabled:
No with 200 runs
Other Settings:
default evmVersion
Contract Source Code (Solidity Standard Json-Input format)
// SPDX-License-Identifier: MIT pragma solidity ^0.8.0; import "./Package.sol"; /** * @title Feathered Frens */ contract FeatheredFrens is Package { receive() external payable {} fallback() external payable {} event Withdraw(address operator, address receiver, uint256 value); mapping(address => bool) private _whitelist; mapping(address => uint256) _mintLimit; uint256 private _limit; bool private _mintPaused; bool private _freeForAllPaused; bool private _locked; modifier gate() { require(_locked == false, "FF: reentrancy denied"); _locked = true; _; _locked = false; } constructor(address _contractOwner, bytes32 _merkleRoot) Package("Feathered Frens", "FF") { _transferOwnership(_contractOwner); _mintPaused = true; _freeForAllPaused = true; _locked == false; setMintLimit(10); setMerkleRoot(_merkleRoot); } function mintPause(bool _bool) public ownership { _mintPaused = _bool; } function mintPauseStatus() public view returns (bool) { return _mintPaused; } function freeForAllPause(bool _bool) public ownership { _freeForAllPaused = _bool; } function freeForAllPauseStatus() public view returns (bool) { return _freeForAllPaused; } function setMintLimit(uint256 _amount) public ownership { _limit = _amount; } function mintLimit() public view returns (uint256) { return _limit; } function setMerkleRoot(bytes32 _merkleRoot) public ownership { _setMerkleRoot(_merkleRoot); } function totalMinted(address _account) public view returns (uint256) { return _mintLimit[_account]; } function freeForAll(address _to, uint256 _quantity) public gate { require(_quantity + totalSupply() <= 5555, "FF: maximum tokens minted"); require(_quantity <= mintLimit(), "FF: 10 tokens allowed to mint"); require(_quantity + _mintLimit[_to] <= mintLimit(), "FF: 10 tokens allowed to mint"); require(_freeForAllPaused != true, "FF: minting is paused"); _mintLimit[_to] += _quantity; for (uint256 i=0; i < _quantity; i++) { _mint(_to); } } function mint(address _to, bytes32[] calldata _merkleProof, uint256 _quantity) public gate { require(_quantity + totalSupply() <= 5555, "FF: maximum tokens minted"); require(_quantity <= mintLimit(), "FF: 10 tokens allowed to mint"); require(_quantity + _mintLimit[_to] <= mintLimit(), "FF: 10 tokens allowed to mint"); require(_mintPaused != true, "FF: minting is paused"); _mintLimit[_to] += _quantity; for (uint256 i=0; i < _quantity; i++) { _whitelistMint(_to, _merkleProof, merkleRoot()); } } function airdropBatch(address[] memory _to) public ownership { require(_to.length + totalSupply() <= 5555, "FF: maximum tokens minted"); for (uint256 i = 0; i < _to.length; i++) { _mint(_to[i]); } } function airdrop(address _to, uint256 _quantity) public ownership { require(_quantity + totalSupply() <= 5555, "FF: maximum tokens minted"); for (uint256 i=0; i < _quantity; i++) { _mint(_to); } } function withdraw(address _account) public ownership { uint256 balance = address(this).balance; (bool success, ) = payable(_account).call{value: address(this).balance}(""); require(success, "FF: ether transfer failed"); emit Withdraw(msg.sender, _account, balance); } }
// SPDX-License-Identifier: MIT pragma solidity ^0.8.0; import "./ERC/721/ERC721.sol"; import "./ERC/721/extensions/ERC721Metadata.sol"; import "./ERC/721/receiver/ERC721Receiver.sol"; import "./ERC/173/ERC173.sol"; import "./ERC/165/ERC165.sol"; import "./library/utils.sol"; /** * @dev Feathered Frens package */ contract Package is ERC721, ERC721Metadata, ERC173, ERC165 { mapping(uint256 => address) private _tokenOwner; mapping(address => uint256) private _ownerBalance; mapping(uint256 => address) private _tokenApproval; mapping(address => mapping(address => bool)) private _operatorApproval; bool private _reveal = false; bool private _baseSet = false; bool private _baseLock = false; bool _jsonExtension = false; string private _name; string private _symbol; string private _extendedBaseUri; uint256 private _currentId = 0; uint256 private _totalSupply = 0; address private _ownership; bytes32 private root; constructor(string memory name_, string memory symbol_) { _name = name_; _symbol = symbol_; } function name() public view override returns (string memory) { return _name; } function symbol() public view override returns (string memory) { return _symbol; } function transferOwnership(address _newOwner) public override ownership { _transferOwnership(_newOwner); } function _transferOwnership(address _newOwner) internal { address previousOwner = _ownership; _ownership = _newOwner; emit OwnershipTransferred(previousOwner, _newOwner); } modifier ownership() { require(owner() == msg.sender, "ERC173: caller is not the owner"); _; } function owner() public view override returns (address) { return _ownership; } function _setMerkleRoot(bytes32 _root) internal { root = _root; } function merkleRoot() internal view returns (bytes32) { return root; } function _whitelistMint(address _to, bytes32[] calldata _merkleProof, bytes32 _merkleRoot) internal { bytes32 leaf = keccak256(abi.encodePacked(_to)); require(utils.verify(_merkleProof, _merkleRoot, leaf), "FF: invalid merkle proof."); require(_currentId < 5555, "ERC721: maximum tokens minted"); require(_to != address(0), "ERC721: cannot mint to zero address"); _currentId += 1; _totalSupply += 1; _tokenOwner[_currentId] = _to; _ownerBalance[_to] += 1; emit Transfer(address(0), _to, _currentId); } function _mint(address _to) internal { require(_currentId < 5555, "ERC721: maximum tokens minted"); require(_to != address(0), "ERC721: cannot mint to zero address"); _currentId += 1; _totalSupply += 1; _tokenOwner[_currentId] = _to; _ownerBalance[_to] += 1; emit Transfer(address(0), _to, _currentId); } function reveal() public ownership { require(_baseLock == true, "FF: reveal base not locked"); _reveal = true; } function tokenURI(uint256 _tokenId) public view override returns (string memory) { require(_tokenId != 0, "FF: token ID out of range"); require(_currentId >= _tokenId, "FF: token ID out of range"); if (_reveal == true) { if (_jsonExtension == true) { return string(abi.encodePacked(_ipfs(), _extendedBaseUri, "/", utils.toString(_tokenId), ".json")); } else { return string(abi.encodePacked(_ipfs(), _extendedBaseUri, "/", utils.toString(_tokenId))); } } else { return string(abi.encodePacked(_ipfs(), "bafybeidvzxfejqzlftewxphrrqvee3r6sxf7mf6etdajcoawpz4sf5hve4/prereveal.json")); } } function checkURI(uint256 _tokenId) public view returns (string memory) { require(_baseSet == true, "FF: CID has not been set"); require(_baseLock == false, "FF: URI has been set"); if (_jsonExtension == true) { return string(abi.encodePacked(_ipfs(), _extendedBaseUri, "/", utils.toString(_tokenId), ".json")); } else { return string(abi.encodePacked(_ipfs(), _extendedBaseUri, "/", utils.toString(_tokenId))); } } function _ipfs() internal pure returns (string memory) { return "ipfs://"; } function revealBaseLocked() public view returns (bool) { return _baseLock; } function lockRevealBase(bool _lockStatus) public ownership { require(_reveal == false, "FF: reveal has already occured"); require(_baseSet == true, "FF: reveal base not set"); _baseLock = _lockStatus; } function setRevealBase(string memory _cid, bool _isExtension) public ownership { require(_baseLock == false, "FF: already revealed"); _extendedBaseUri = _cid; _jsonExtension = _isExtension; _baseSet = true; } function totalSupply() public view returns (uint256) { return _totalSupply; } function balanceOf(address _owner) public view override returns (uint256) { return _ownerBalance[_owner]; } function ownerOf(uint256 _tokenId) public view override returns (address) { return _tokenOwner[_tokenId]; } function safeTransferFrom(address _from, address _to, uint256 _tokenId) public override { safeTransferFrom(_from, _to, _tokenId, ""); } function safeTransferFrom(address _from, address _to, uint256 _tokenId, bytes memory _data) public override { _transfer(_from, _to, _tokenId); _onERC721Received(_from, _to, _tokenId, _data); } function transferFrom(address _from, address _to, uint256 _tokenId) public override { _transfer(_from, _to, _tokenId); } function approve(address _approved, uint256 _tokenId) public override { require(_tokenOwner[_tokenId] == msg.sender); _tokenApproval[_tokenId] = _approved; emit Approval(msg.sender, _approved, _tokenId); } function setApprovalForAll(address _operator, bool _approved) public override { require(msg.sender != _operator, "ERC721: cannot approve the owner"); _operatorApproval[msg.sender][_operator] = _approved; emit ApprovalForAll(msg.sender, _operator, _approved); } function getApproved(uint256 _tokenId) public view override returns (address) { return _tokenApproval[_tokenId]; } function isApprovedForAll(address _owner, address _operator) public view override returns (bool) { return _operatorApproval[_owner][_operator]; } function _transfer(address _from, address _to, uint256 _tokenId) internal { require(ownerOf(_tokenId) == _from, "ERC721: from address is not owner of token"); require(_tokenOwner[_tokenId] == msg.sender || _tokenApproval[_tokenId] == msg.sender || _operatorApproval[_from][msg.sender] == true, "ERC721: unauthorized transfer"); require(_to != address(0), "ERC721: cannot transfer to the zero address"); _ownerBalance[_from] -= 1; _tokenOwner[_tokenId] = _to; _tokenApproval[_tokenId] = address(0); _ownerBalance[_to] += 1; emit Transfer(_from, _to, _tokenId); } function _onERC721Received(address _from, address _to, uint256 _tokenId, bytes memory _data) private { uint256 size; assembly { size := extcodesize(_to) } if (size > 0) { try ERC721Receiver(_to).onERC721Received(msg.sender, _from, _tokenId, _data) returns (bytes4 response) { if (response != ERC721Receiver.onERC721Received.selector) { revert("ERC721: ERC721Receiver rejected tokens"); } } catch Error(string memory reason) { revert(reason); } catch { revert("ERC721: transfer to non ERC721Receiver implementer"); } } } function supportsInterface(bytes4 interfaceId) public pure override(ERC165) returns (bool) { return interfaceId == type(ERC165).interfaceId || interfaceId == type(ERC173).interfaceId || interfaceId == type(ERC721).interfaceId || interfaceId == type(ERC721Metadata).interfaceId || interfaceId == type(ERC721Receiver).interfaceId; } }
// SPDX-License-Identifier: MIT pragma solidity ^0.8.0; /** * @dev Interface of the ERC721 standard */ interface ERC721 { event Transfer(address indexed _from, address indexed _to, uint256 indexed _tokenId); event Approval(address indexed _owner, address indexed _approved, uint256 indexed _tokenId); event ApprovalForAll(address indexed _owner, address indexed _operator, bool _approved); function balanceOf(address _owner) external view returns (uint256); function ownerOf(uint256 _tokenId) external view returns (address); function safeTransferFrom(address _from, address _to, uint256 _tokenId, bytes calldata _data) external; function safeTransferFrom(address _from, address _to, uint256 _tokenId) external; function transferFrom(address _from, address _to, uint256 _tokenId) external; function approve(address _approved, uint256 _tokenId) external; function setApprovalForAll(address _operator, bool _approved) external; function getApproved(uint256 _tokenId) external view returns (address); function isApprovedForAll(address _owner, address _operator) external view returns (bool); }
// SPDX-License-Identifier: MIT pragma solidity ^0.8.0; /** * @dev Interface of the ERC721Metadata */ interface ERC721Metadata { function name() external view returns (string memory); function symbol() external view returns (string memory); function tokenURI(uint256 _tokenId) external view returns (string memory); }
// SPDX-License-Identifier: MIT pragma solidity ^0.8.0; /** * @dev Interface of the ERC721Receiver */ interface ERC721Receiver { function onERC721Received(address _operator, address _from, uint256 _tokenId, bytes calldata _data) external returns (bytes4); }
// SPDX-License-Identifier: MIT pragma solidity ^0.8.0; /** * @dev Interface of the ERC173 standard */ interface ERC173 { event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); function owner() view external returns (address); function transferOwnership(address _newOwner) external; }
// SPDX-License-Identifier: MIT pragma solidity ^0.8.0; /** * @dev Interface of the ERC165 standard */ interface ERC165 { function supportsInterface(bytes4 interfaceId) external view returns (bool); }
// SPDX-License-Identifier: MIT pragma solidity ^0.8.0; library utils { 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 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 = _efficientHash(computedHash, proofElement); } else { // Hash(current element of the proof + current computed hash) computedHash = _efficientHash(proofElement, computedHash); } } return computedHash; } function _efficientHash(bytes32 a, bytes32 b) private pure returns (bytes32 value) { assembly { mstore(0x00, a) mstore(0x20, b) value := keccak256(0x00, 0x40) } } }
{ "optimizer": { "enabled": false, "runs": 200 }, "outputSelection": { "*": { "*": [ "evm.bytecode", "evm.deployedBytecode", "devdoc", "userdoc", "metadata", "abi" ] } }, "libraries": {} }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[{"internalType":"address","name":"_contractOwner","type":"address"},{"internalType":"bytes32","name":"_merkleRoot","type":"bytes32"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"_owner","type":"address"},{"indexed":true,"internalType":"address","name":"_approved","type":"address"},{"indexed":true,"internalType":"uint256","name":"_tokenId","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"_owner","type":"address"},{"indexed":true,"internalType":"address","name":"_operator","type":"address"},{"indexed":false,"internalType":"bool","name":"_approved","type":"bool"}],"name":"ApprovalForAll","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"_from","type":"address"},{"indexed":true,"internalType":"address","name":"_to","type":"address"},{"indexed":true,"internalType":"uint256","name":"_tokenId","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"operator","type":"address"},{"indexed":false,"internalType":"address","name":"receiver","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Withdraw","type":"event"},{"stateMutability":"payable","type":"fallback"},{"inputs":[{"internalType":"address","name":"_to","type":"address"},{"internalType":"uint256","name":"_quantity","type":"uint256"}],"name":"airdrop","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"_to","type":"address[]"}],"name":"airdropBatch","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_approved","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":[{"internalType":"uint256","name":"_tokenId","type":"uint256"}],"name":"checkURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_to","type":"address"},{"internalType":"uint256","name":"_quantity","type":"uint256"}],"name":"freeForAll","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_bool","type":"bool"}],"name":"freeForAllPause","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"freeForAllPauseStatus","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":"address","name":"_owner","type":"address"},{"internalType":"address","name":"_operator","type":"address"}],"name":"isApprovedForAll","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bool","name":"_lockStatus","type":"bool"}],"name":"lockRevealBase","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_to","type":"address"},{"internalType":"bytes32[]","name":"_merkleProof","type":"bytes32[]"},{"internalType":"uint256","name":"_quantity","type":"uint256"}],"name":"mint","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"mintLimit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bool","name":"_bool","type":"bool"}],"name":"mintPause","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"mintPauseStatus","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_tokenId","type":"uint256"}],"name":"ownerOf","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"reveal","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"revealBaseLocked","outputs":[{"internalType":"bool","name":"","type":"bool"}],"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":"address","name":"_operator","type":"address"},{"internalType":"bool","name":"_approved","type":"bool"}],"name":"setApprovalForAll","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"_merkleRoot","type":"bytes32"}],"name":"setMerkleRoot","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"setMintLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"_cid","type":"string"},{"internalType":"bool","name":"_isExtension","type":"bool"}],"name":"setRevealBase","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_tokenId","type":"uint256"}],"name":"tokenURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_account","type":"address"}],"name":"totalMinted","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_from","type":"address"},{"internalType":"address","name":"_to","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"}],"name":"transferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_account","type":"address"}],"name":"withdraw","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
60806040526000600460006101000a81548160ff0219169083151502179055506000600460016101000a81548160ff0219169083151502179055506000600460026101000a81548160ff0219169083151502179055506000600460036101000a81548160ff021916908315150217905550600060085560006009553480156200008757600080fd5b5060405162004f6e38038062004f6e8339818101604052810190620000ad9190620004c8565b6040518060400160405280600f81526020017f466561746865726564204672656e7300000000000000000000000000000000008152506040518060400160405280600281526020017f4646000000000000000000000000000000000000000000000000000000000000815250816005908051906020019062000131929190620003ea565b5080600690805190602001906200014a929190620003ea565b5050506200015e82620001d260201b60201c565b6001600f60006101000a81548160ff0219169083151502179055506001600f60016101000a81548160ff02191690831515021790555060001515600f60029054906101000a90505050620001b9600a6200029860201b60201c565b620001ca816200032260201b60201c565b505062000655565b6000600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b3373ffffffffffffffffffffffffffffffffffffffff16620002bf620003b660201b60201c565b73ffffffffffffffffffffffffffffffffffffffff161462000318576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200030f906200054b565b60405180910390fd5b80600e8190555050565b3373ffffffffffffffffffffffffffffffffffffffff1662000349620003b660201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1614620003a2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000399906200054b565b60405180910390fd5b620003b381620003e060201b60201c565b50565b6000600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b80600b8190555050565b828054620003f890620005bc565b90600052602060002090601f0160209004810192826200041c576000855562000468565b82601f106200043757805160ff191683800117855562000468565b8280016001018555821562000468579182015b82811115620004675782518255916020019190600101906200044a565b5b5090506200047791906200047b565b5090565b5b80821115620004965760008160009055506001016200047c565b5090565b600081519050620004ab8162000621565b92915050565b600081519050620004c2816200063b565b92915050565b60008060408385031215620004dc57600080fd5b6000620004ec858286016200049a565b9250506020620004ff85828601620004b1565b9150509250929050565b600062000518601f836200056d565b91507f4552433137333a2063616c6c6572206973206e6f7420746865206f776e6572006000830152602082019050919050565b60006020820190508181036000830152620005668162000509565b9050919050565b600082825260208201905092915050565b60006200058b826200059c565b9050919050565b6000819050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006002820490506001821680620005d557607f821691505b60208210811415620005ec57620005eb620005f2565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6200062c816200057e565b81146200063857600080fd5b50565b620006468162000592565b81146200065257600080fd5b50565b61490980620006656000396000f3fe6080604052600436106101fc5760003560e01c806395d89b411161010d578063b2542e28116100a0578063d77636c41161006f578063d77636c414610732578063e41fcd771461075b578063e904125614610784578063e985e9c5146107af578063f2fde38b146107ec57610203565b8063b2542e281461067a578063b88d4fde146106a3578063c87b56dd146106cc578063cf6b67361461070957610203565b8063a2dd9d87116100dc578063a2dd9d87146105d4578063a475b5dd146105fd578063a868843514610614578063b0392f0b1461065157610203565b806395d89b411461052c578063996517cf146105575780639e6a1d7d14610582578063a22cb465146105ab57610203565b806351cff8d91161019057806366ed0af21161015f57806366ed0af21461044957806370a08231146104725780637cb64759146104af5780638ba4cc3c146104d85780638da5cb5b1461050157610203565b806351cff8d91461038d5780635febc8c1146103b65780636352211e146103e157806363a62f6a1461041e57610203565b8063095ea7b3116101cc578063095ea7b3146102e757806318160ddd1461031057806323b872dd1461033b57806342842e0e1461036457610203565b80623d47901461020557806301ffc9a71461024257806306fdde031461027f578063081812fc146102aa57610203565b3661020357005b005b34801561021157600080fd5b5061022c6004803603810190610227919061328e565b610815565b604051610239919061433d565b60405180910390f35b34801561024e57600080fd5b5061026960048036038101906102649190613534565b61085e565b6040516102769190614040565b60405180910390f35b34801561028b57600080fd5b50610294610a68565b6040516102a1919061405b565b60405180910390f35b3480156102b657600080fd5b506102d160048036038101906102cc91906135da565b610afa565b6040516102de9190613fa2565b60405180910390f35b3480156102f357600080fd5b5061030e60048036038101906103099190613465565b610b37565b005b34801561031c57600080fd5b50610325610c52565b604051610332919061433d565b60405180910390f35b34801561034757600080fd5b50610362600480360381019061035d91906132f3565b610c5c565b005b34801561037057600080fd5b5061038b600480360381019061038691906132f3565b610c6c565b005b34801561039957600080fd5b506103b460048036038101906103af919061328e565b610c8c565b005b3480156103c257600080fd5b506103cb610df2565b6040516103d89190614040565b60405180910390f35b3480156103ed57600080fd5b50610408600480360381019061040391906135da565b610e09565b6040516104159190613fa2565b60405180910390f35b34801561042a57600080fd5b50610433610e45565b6040516104409190614040565b60405180910390f35b34801561045557600080fd5b50610470600480360381019061046b9190613586565b610e5c565b005b34801561047e57600080fd5b506104996004803603810190610494919061328e565b610f77565b6040516104a6919061433d565b60405180910390f35b3480156104bb57600080fd5b506104d660048036038101906104d1919061350b565b610fc0565b005b3480156104e457600080fd5b506104ff60048036038101906104fa9190613465565b611041565b005b34801561050d57600080fd5b50610516611139565b6040516105239190613fa2565b60405180910390f35b34801561053857600080fd5b50610541611163565b60405161054e919061405b565b60405180910390f35b34801561056357600080fd5b5061056c6111f5565b604051610579919061433d565b60405180910390f35b34801561058e57600080fd5b506105a960048036038101906105a491906135da565b6111ff565b005b3480156105b757600080fd5b506105d260048036038101906105cd9190613429565b61127e565b005b3480156105e057600080fd5b506105fb60048036038101906105f691906133bd565b6113ea565b005b34801561060957600080fd5b50610612611690565b005b34801561062057600080fd5b5061063b600480360381019061063691906135da565b611778565b604051610648919061405b565b60405180910390f35b34801561065d57600080fd5b5061067860048036038101906106739190613465565b6118b9565b005b34801561068657600080fd5b506106a1600480360381019061069c91906134a1565b611b53565b005b3480156106af57600080fd5b506106ca60048036038101906106c59190613342565b611c8c565b005b3480156106d857600080fd5b506106f360048036038101906106ee91906135da565b611ca9565b604051610700919061405b565b60405180910390f35b34801561071557600080fd5b50610730600480360381019061072b91906134e2565b611e11565b005b34801561073e57600080fd5b50610759600480360381019061075491906134e2565b611ea3565b005b34801561076757600080fd5b50610782600480360381019061077d91906134e2565b611fe1565b005b34801561079057600080fd5b50610799612073565b6040516107a69190614040565b60405180910390f35b3480156107bb57600080fd5b506107d660048036038101906107d191906132b7565b61208a565b6040516107e39190614040565b60405180910390f35b3480156107f857600080fd5b50610813600480360381019061080e919061328e565b61211e565b005b6000600d60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061092957507f7f5828d0000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b8061099157507f80ac58cd000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b806109f957507f5b5e139f000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b80610a6157507f150b7a02000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b9050919050565b606060058054610a77906145f3565b80601f0160208091040260200160405190810160405280929190818152602001828054610aa3906145f3565b8015610af05780601f10610ac557610100808354040283529160200191610af0565b820191906000526020600020905b815481529060010190602001808311610ad357829003601f168201915b5050505050905090565b60006002600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b3373ffffffffffffffffffffffffffffffffffffffff1660008083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610ba157600080fd5b816002600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b6000600954905090565b610c6783838361219f565b505050565b610c8783838360405180602001604052806000815250611c8c565b505050565b3373ffffffffffffffffffffffffffffffffffffffff16610cab611139565b73ffffffffffffffffffffffffffffffffffffffff1614610d01576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cf89061411d565b60405180910390fd5b600047905060008273ffffffffffffffffffffffffffffffffffffffff1647604051610d2c90613f8d565b60006040518083038185875af1925050503d8060008114610d69576040519150601f19603f3d011682016040523d82523d6000602084013e610d6e565b606091505b5050905080610db2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610da9906141dd565b60405180910390fd5b7f9b1bfa7fa9ee420a16e124f794c35ac9f90472acc99140eb2f6447c714cad8eb338484604051610de593929190613fbd565b60405180910390a1505050565b6000600f60019054906101000a900460ff16905090565b600080600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b6000600460029054906101000a900460ff16905090565b3373ffffffffffffffffffffffffffffffffffffffff16610e7b611139565b73ffffffffffffffffffffffffffffffffffffffff1614610ed1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ec89061411d565b60405180910390fd5b60001515600460029054906101000a900460ff16151514610f27576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f1e9061417d565b60405180910390fd5b8160079080519060200190610f3d929190612fbd565b5080600460036101000a81548160ff0219169083151502179055506001600460016101000a81548160ff0219169083151502179055505050565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b3373ffffffffffffffffffffffffffffffffffffffff16610fdf611139565b73ffffffffffffffffffffffffffffffffffffffff1614611035576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161102c9061411d565b60405180910390fd5b61103e816125d6565b50565b3373ffffffffffffffffffffffffffffffffffffffff16611060611139565b73ffffffffffffffffffffffffffffffffffffffff16146110b6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110ad9061411d565b60405180910390fd5b6115b36110c1610c52565b826110cc9190614478565b111561110d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111049061419d565b60405180910390fd5b60005b8181101561113457611121836125e0565b808061112c90614625565b915050611110565b505050565b6000600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b606060068054611172906145f3565b80601f016020809104026020016040519081016040528092919081815260200182805461119e906145f3565b80156111eb5780601f106111c0576101008083540402835291602001916111eb565b820191906000526020600020905b8154815290600101906020018083116111ce57829003601f168201915b5050505050905090565b6000600e54905090565b3373ffffffffffffffffffffffffffffffffffffffff1661121e611139565b73ffffffffffffffffffffffffffffffffffffffff1614611274576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161126b9061411d565b60405180910390fd5b80600e8190555050565b8173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614156112ed576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112e49061425d565b60405180910390fd5b80600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31836040516113de9190614040565b60405180910390a35050565b60001515600f60029054906101000a900460ff16151514611440576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611437906140dd565b60405180910390fd5b6001600f60026101000a81548160ff0219169083151502179055506115b3611466610c52565b826114719190614478565b11156114b2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114a99061419d565b60405180910390fd5b6114ba6111f5565b8111156114fc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114f39061407d565b60405180910390fd5b6115046111f5565b600d60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548261154f9190614478565b1115611590576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115879061407d565b60405180910390fd5b60011515600f60009054906101000a900460ff16151514156115e7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115de906140fd565b60405180910390fd5b80600d60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546116369190614478565b9250508190555060005b8181101561166e5761165b8585856116566127d4565b6127de565b808061166690614625565b915050611640565b506000600f60026101000a81548160ff02191690831515021790555050505050565b3373ffffffffffffffffffffffffffffffffffffffff166116af611139565b73ffffffffffffffffffffffffffffffffffffffff1614611705576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116fc9061411d565b60405180910390fd5b60011515600460029054906101000a900460ff1615151461175b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611752906142bd565b60405180910390fd5b6001600460006101000a81548160ff021916908315150217905550565b606060011515600460019054906101000a900460ff161515146117d0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117c7906141bd565b60405180910390fd5b60001515600460029054906101000a900460ff16151514611826576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161181d9061421d565b60405180910390fd5b60011515600460039054906101000a900460ff161515141561187d5761184a612a8c565b600761185584612ac9565b60405160200161186793929190613f24565b60405160208183030381529060405290506118b4565b611885612a8c565b600761189084612ac9565b6040516020016118a293929190613ee8565b60405160208183030381529060405290505b919050565b60001515600f60029054906101000a900460ff1615151461190f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611906906140dd565b60405180910390fd5b6001600f60026101000a81548160ff0219169083151502179055506115b3611935610c52565b826119409190614478565b1115611981576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119789061419d565b60405180910390fd5b6119896111f5565b8111156119cb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119c29061407d565b60405180910390fd5b6119d36111f5565b600d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205482611a1e9190614478565b1115611a5f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a569061407d565b60405180910390fd5b60011515600f60019054906101000a900460ff1615151415611ab6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611aad906140fd565b60405180910390fd5b80600d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254611b059190614478565b9250508190555060005b81811015611b3357611b20836125e0565b8080611b2b90614625565b915050611b0f565b506000600f60026101000a81548160ff0219169083151502179055505050565b3373ffffffffffffffffffffffffffffffffffffffff16611b72611139565b73ffffffffffffffffffffffffffffffffffffffff1614611bc8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bbf9061411d565b60405180910390fd5b6115b3611bd3610c52565b8251611bdf9190614478565b1115611c20576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c179061419d565b60405180910390fd5b60005b8151811015611c8857611c75828281518110611c68577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60200260200101516125e0565b8080611c8090614625565b915050611c23565b5050565b611c9784848461219f565b611ca384848484612c76565b50505050565b60606000821415611cef576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ce69061423d565b60405180910390fd5b816008541015611d34576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d2b9061423d565b60405180910390fd5b60011515600460009054906101000a900460ff1615151415611de25760011515600460039054906101000a900460ff1615151415611da757611d74612a8c565b6007611d7f84612ac9565b604051602001611d9193929190613f24565b6040516020818303038152906040529050611e0c565b611daf612a8c565b6007611dba84612ac9565b604051602001611dcc93929190613ee8565b6040516020818303038152906040529050611e0c565b611dea612a8c565b604051602001611dfa9190613f6b565b60405160208183030381529060405290505b919050565b3373ffffffffffffffffffffffffffffffffffffffff16611e30611139565b73ffffffffffffffffffffffffffffffffffffffff1614611e86576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e7d9061411d565b60405180910390fd5b80600f60006101000a81548160ff02191690831515021790555050565b3373ffffffffffffffffffffffffffffffffffffffff16611ec2611139565b73ffffffffffffffffffffffffffffffffffffffff1614611f18576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f0f9061411d565b60405180910390fd5b60001515600460009054906101000a900460ff16151514611f6e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f659061429d565b60405180910390fd5b60011515600460019054906101000a900460ff16151514611fc4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fbb906142dd565b60405180910390fd5b80600460026101000a81548160ff02191690831515021790555050565b3373ffffffffffffffffffffffffffffffffffffffff16612000611139565b73ffffffffffffffffffffffffffffffffffffffff1614612056576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161204d9061411d565b60405180910390fd5b80600f60016101000a81548160ff02191690831515021790555050565b6000600f60009054906101000a900460ff16905090565b6000600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b3373ffffffffffffffffffffffffffffffffffffffff1661213d611139565b73ffffffffffffffffffffffffffffffffffffffff1614612193576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161218a9061411d565b60405180910390fd5b61219c81612e2e565b50565b8273ffffffffffffffffffffffffffffffffffffffff166121bf82610e09565b73ffffffffffffffffffffffffffffffffffffffff1614612215576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161220c906140bd565b60405180910390fd5b3373ffffffffffffffffffffffffffffffffffffffff1660008083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614806122df57503373ffffffffffffffffffffffffffffffffffffffff166002600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16145b80612377575060011515600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515145b6123b6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123ad906142fd565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612426576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161241d9061427d565b60405180910390fd5b60018060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461247591906144ff565b925050819055508160008083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060006002600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060018060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461256f9190614478565b92505081905550808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4505050565b80600b8190555050565b6115b360085410612626576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161261d9061431d565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415612696576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161268d9061413d565b60405180910390fd5b6001600860008282546126a99190614478565b925050819055506001600960008282546126c39190614478565b9250508190555080600080600854815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060018060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461276c9190614478565b925050819055506008548173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a450565b6000600b54905090565b6000846040516020016127f19190613ecd565b604051602081830303815290604052805190602001209050612855848480806020026020016040519081016040528093929190818152602001838360200280828437600081840152601f19601f820116905080830192505050505050508383612ef4565b612894576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161288b9061415d565b60405180910390fd5b6115b3600854106128da576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128d19061431d565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16141561294a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129419061413d565b60405180910390fd5b60016008600082825461295d9190614478565b925050819055506001600960008282546129779190614478565b9250508190555084600080600854815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060018060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254612a209190614478565b925050819055506008548573ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a45050505050565b60606040518060400160405280600781526020017f697066733a2f2f00000000000000000000000000000000000000000000000000815250905090565b60606000821415612b11576040518060400160405280600181526020017f30000000000000000000000000000000000000000000000000000000000000008152509050612c71565b600082905060005b60008214612b43578080612b2c90614625565b915050600a82612b3c91906144ce565b9150612b19565b60008167ffffffffffffffff811115612b85577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040519080825280601f01601f191660200182016040528015612bb75781602001600182028036833780820191505090505b5090505b60008514612c6a57600182612bd091906144ff565b9150600a85612bdf9190614692565b6030612beb9190614478565b60f81b818381518110612c27577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600a85612c6391906144ce565b9450612bbb565b8093505050505b919050565b6000833b90506000811115612e27578373ffffffffffffffffffffffffffffffffffffffff1663150b7a02338786866040518563ffffffff1660e01b8152600401612cc49493929190613ff4565b602060405180830381600087803b158015612cde57600080fd5b505af1925050508015612d0f57506040513d601f19601f82011682018060405250810190612d0c919061355d565b60015b612d9e57612d1b6147aa565b80612d265750612d63565b806040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d5a919061405b565b60405180910390fd5b6040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d959061409d565b60405180910390fd5b63150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614612e25576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612e1c906141fd565b60405180910390fd5b505b5050505050565b6000600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600082612f018584612f0b565b1490509392505050565b60008082905060005b8451811015612f9b576000858281518110612f58577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60200260200101519050808311612f7a57612f738382612fa6565b9250612f87565b612f848184612fa6565b92505b508080612f9390614625565b915050612f14565b508091505092915050565b600082600052816020526040600020905092915050565b828054612fc9906145f3565b90600052602060002090601f016020900481019282612feb5760008555613032565b82601f1061300457805160ff1916838001178555613032565b82800160010185558215613032579182015b82811115613031578251825591602001919060010190613016565b5b50905061303f9190613043565b5090565b5b8082111561305c576000816000905550600101613044565b5090565b600061307361306e84614389565b614358565b9050808382526020820190508285602086028201111561309257600080fd5b60005b858110156130c257816130a88882613148565b845260208401935060208301925050600181019050613095565b5050509392505050565b60006130df6130da846143b5565b614358565b9050828152602081018484840111156130f757600080fd5b6131028482856145b1565b509392505050565b600061311d613118846143e5565b614358565b90508281526020810184848401111561313557600080fd5b6131408482856145b1565b509392505050565b60008135905061315781614860565b92915050565b600082601f83011261316e57600080fd5b813561317e848260208601613060565b91505092915050565b60008083601f84011261319957600080fd5b8235905067ffffffffffffffff8111156131b257600080fd5b6020830191508360208202830111156131ca57600080fd5b9250929050565b6000813590506131e081614877565b92915050565b6000813590506131f58161488e565b92915050565b60008135905061320a816148a5565b92915050565b60008151905061321f816148a5565b92915050565b600082601f83011261323657600080fd5b81356132468482602086016130cc565b91505092915050565b600082601f83011261326057600080fd5b813561327084826020860161310a565b91505092915050565b600081359050613288816148bc565b92915050565b6000602082840312156132a057600080fd5b60006132ae84828501613148565b91505092915050565b600080604083850312156132ca57600080fd5b60006132d885828601613148565b92505060206132e985828601613148565b9150509250929050565b60008060006060848603121561330857600080fd5b600061331686828701613148565b935050602061332786828701613148565b925050604061333886828701613279565b9150509250925092565b6000806000806080858703121561335857600080fd5b600061336687828801613148565b945050602061337787828801613148565b935050604061338887828801613279565b925050606085013567ffffffffffffffff8111156133a557600080fd5b6133b187828801613225565b91505092959194509250565b600080600080606085870312156133d357600080fd5b60006133e187828801613148565b945050602085013567ffffffffffffffff8111156133fe57600080fd5b61340a87828801613187565b9350935050604061341d87828801613279565b91505092959194509250565b6000806040838503121561343c57600080fd5b600061344a85828601613148565b925050602061345b858286016131d1565b9150509250929050565b6000806040838503121561347857600080fd5b600061348685828601613148565b925050602061349785828601613279565b9150509250929050565b6000602082840312156134b357600080fd5b600082013567ffffffffffffffff8111156134cd57600080fd5b6134d98482850161315d565b91505092915050565b6000602082840312156134f457600080fd5b6000613502848285016131d1565b91505092915050565b60006020828403121561351d57600080fd5b600061352b848285016131e6565b91505092915050565b60006020828403121561354657600080fd5b6000613554848285016131fb565b91505092915050565b60006020828403121561356f57600080fd5b600061357d84828501613210565b91505092915050565b6000806040838503121561359957600080fd5b600083013567ffffffffffffffff8111156135b357600080fd5b6135bf8582860161324f565b92505060206135d0858286016131d1565b9150509250929050565b6000602082840312156135ec57600080fd5b60006135fa84828501613279565b91505092915050565b61360c81614533565b82525050565b61362361361e82614533565b61466e565b82525050565b61363281614545565b82525050565b60006136438261442a565b61364d8185614440565b935061365d8185602086016145c0565b6136668161477f565b840191505092915050565b600061367c82614435565b613686818561445c565b93506136968185602086016145c0565b61369f8161477f565b840191505092915050565b60006136b582614435565b6136bf818561446d565b93506136cf8185602086016145c0565b80840191505092915050565b600081546136e8816145f3565b6136f2818661446d565b9450600182166000811461370d576001811461371e57613751565b60ff19831686528186019350613751565b61372785614415565b60005b838110156137495781548189015260018201915060208101905061372a565b838801955050505b50505092915050565b6000613767601d8361445c565b91507f46463a20313020746f6b656e7320616c6c6f77656420746f206d696e740000006000830152602082019050919050565b60006137a760328361445c565b91507f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560008301527f63656976657220696d706c656d656e74657200000000000000000000000000006020830152604082019050919050565b600061380d602a8361445c565b91507f4552433732313a2066726f6d2061646472657373206973206e6f74206f776e6560008301527f72206f6620746f6b656e000000000000000000000000000000000000000000006020830152604082019050919050565b600061387360158361445c565b91507f46463a207265656e7472616e63792064656e69656400000000000000000000006000830152602082019050919050565b60006138b360158361445c565b91507f46463a206d696e74696e672069732070617573656400000000000000000000006000830152602082019050919050565b60006138f3604a8361446d565b91507f6261667962656964767a7866656a717a6c66746577787068727271766565337260008301527f36737866376d6636657464616a636f6177707a34736635687665342f7072657260208301527f657665616c2e6a736f6e000000000000000000000000000000000000000000006040830152604a82019050919050565b600061397f601f8361445c565b91507f4552433137333a2063616c6c6572206973206e6f7420746865206f776e6572006000830152602082019050919050565b60006139bf60238361445c565b91507f4552433732313a2063616e6e6f74206d696e7420746f207a65726f206164647260008301527f65737300000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000613a2560198361445c565b91507f46463a20696e76616c6964206d65726b6c652070726f6f662e000000000000006000830152602082019050919050565b6000613a6560148361445c565b91507f46463a20616c72656164792072657665616c65640000000000000000000000006000830152602082019050919050565b6000613aa560198361445c565b91507f46463a206d6178696d756d20746f6b656e73206d696e746564000000000000006000830152602082019050919050565b6000613ae560188361445c565b91507f46463a2043494420686173206e6f74206265656e2073657400000000000000006000830152602082019050919050565b6000613b2560198361445c565b91507f46463a206574686572207472616e73666572206661696c6564000000000000006000830152602082019050919050565b6000613b6560268361445c565b91507f4552433732313a2045524337323152656365697665722072656a65637465642060008301527f746f6b656e7300000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000613bcb60148361445c565b91507f46463a2055524920686173206265656e207365740000000000000000000000006000830152602082019050919050565b6000613c0b60058361446d565b91507f2e6a736f6e0000000000000000000000000000000000000000000000000000006000830152600582019050919050565b6000613c4b60198361445c565b91507f46463a20746f6b656e204944206f7574206f662072616e6765000000000000006000830152602082019050919050565b6000613c8b60208361445c565b91507f4552433732313a2063616e6e6f7420617070726f766520746865206f776e65726000830152602082019050919050565b6000613ccb602b8361445c565b91507f4552433732313a2063616e6e6f74207472616e7366657220746f20746865207a60008301527f65726f20616464726573730000000000000000000000000000000000000000006020830152604082019050919050565b6000613d31601e8361445c565b91507f46463a2072657665616c2068617320616c7265616479206f63637572656400006000830152602082019050919050565b6000613d71601a8361445c565b91507f46463a2072657665616c2062617365206e6f74206c6f636b65640000000000006000830152602082019050919050565b6000613db1600083614451565b9150600082019050919050565b6000613dcb60178361445c565b91507f46463a2072657665616c2062617365206e6f74207365740000000000000000006000830152602082019050919050565b6000613e0b601d8361445c565b91507f4552433732313a20756e617574686f72697a6564207472616e736665720000006000830152602082019050919050565b6000613e4b601d8361445c565b91507f4552433732313a206d6178696d756d20746f6b656e73206d696e7465640000006000830152602082019050919050565b6000613e8b60018361446d565b91507f2f000000000000000000000000000000000000000000000000000000000000006000830152600182019050919050565b613ec7816145a7565b82525050565b6000613ed98284613612565b60148201915081905092915050565b6000613ef482866136aa565b9150613f0082856136db565b9150613f0b82613e7e565b9150613f1782846136aa565b9150819050949350505050565b6000613f3082866136aa565b9150613f3c82856136db565b9150613f4782613e7e565b9150613f5382846136aa565b9150613f5e82613bfe565b9150819050949350505050565b6000613f7782846136aa565b9150613f82826138e6565b915081905092915050565b6000613f9882613da4565b9150819050919050565b6000602082019050613fb76000830184613603565b92915050565b6000606082019050613fd26000830186613603565b613fdf6020830185613603565b613fec6040830184613ebe565b949350505050565b60006080820190506140096000830187613603565b6140166020830186613603565b6140236040830185613ebe565b81810360608301526140358184613638565b905095945050505050565b60006020820190506140556000830184613629565b92915050565b600060208201905081810360008301526140758184613671565b905092915050565b600060208201905081810360008301526140968161375a565b9050919050565b600060208201905081810360008301526140b68161379a565b9050919050565b600060208201905081810360008301526140d681613800565b9050919050565b600060208201905081810360008301526140f681613866565b9050919050565b60006020820190508181036000830152614116816138a6565b9050919050565b6000602082019050818103600083015261413681613972565b9050919050565b60006020820190508181036000830152614156816139b2565b9050919050565b6000602082019050818103600083015261417681613a18565b9050919050565b6000602082019050818103600083015261419681613a58565b9050919050565b600060208201905081810360008301526141b681613a98565b9050919050565b600060208201905081810360008301526141d681613ad8565b9050919050565b600060208201905081810360008301526141f681613b18565b9050919050565b6000602082019050818103600083015261421681613b58565b9050919050565b6000602082019050818103600083015261423681613bbe565b9050919050565b6000602082019050818103600083015261425681613c3e565b9050919050565b6000602082019050818103600083015261427681613c7e565b9050919050565b6000602082019050818103600083015261429681613cbe565b9050919050565b600060208201905081810360008301526142b681613d24565b9050919050565b600060208201905081810360008301526142d681613d64565b9050919050565b600060208201905081810360008301526142f681613dbe565b9050919050565b6000602082019050818103600083015261431681613dfe565b9050919050565b6000602082019050818103600083015261433681613e3e565b9050919050565b60006020820190506143526000830184613ebe565b92915050565b6000604051905081810181811067ffffffffffffffff8211171561437f5761437e614750565b5b8060405250919050565b600067ffffffffffffffff8211156143a4576143a3614750565b5b602082029050602081019050919050565b600067ffffffffffffffff8211156143d0576143cf614750565b5b601f19601f8301169050602081019050919050565b600067ffffffffffffffff821115614400576143ff614750565b5b601f19601f8301169050602081019050919050565b60008190508160005260206000209050919050565b600081519050919050565b600081519050919050565b600082825260208201905092915050565b600081905092915050565b600082825260208201905092915050565b600081905092915050565b6000614483826145a7565b915061448e836145a7565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156144c3576144c26146c3565b5b828201905092915050565b60006144d9826145a7565b91506144e4836145a7565b9250826144f4576144f36146f2565b5b828204905092915050565b600061450a826145a7565b9150614515836145a7565b925082821015614528576145276146c3565b5b828203905092915050565b600061453e82614587565b9050919050565b60008115159050919050565b6000819050919050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b82818337600083830152505050565b60005b838110156145de5780820151818401526020810190506145c3565b838111156145ed576000848401525b50505050565b6000600282049050600182168061460b57607f821691505b6020821081141561461f5761461e614721565b5b50919050565b6000614630826145a7565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415614663576146626146c3565b5b600182019050919050565b600061467982614680565b9050919050565b600061468b82614790565b9050919050565b600061469d826145a7565b91506146a8836145a7565b9250826146b8576146b76146f2565b5b828206905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000601f19601f8301169050919050565b60008160601b9050919050565b60008160e01c9050919050565b600060443d10156147ba5761485d565b60046000803e6147cb60005161479d565b6308c379a081146147dc575061485d565b60405160043d036004823e80513d602482011167ffffffffffffffff821117156148085750505061485d565b808201805167ffffffffffffffff81111561482757505050505061485d565b8060208301013d85018111156148425750505050505061485d565b61484b8261477f565b60208401016040528296505050505050505b90565b61486981614533565b811461487457600080fd5b50565b61488081614545565b811461488b57600080fd5b50565b61489781614551565b81146148a257600080fd5b50565b6148ae8161455b565b81146148b957600080fd5b50565b6148c5816145a7565b81146148d057600080fd5b5056fea26469706673582212207c6dde5549ae86b242121d9cd3479770adccd005a9708a9392f65870cb67d11564736f6c634300080000330000000000000000000000001ca3242f4065b0e75278feba3fb304f73d19f7b17389adee2a47b157dfee50442490ffcf11853ac3ad1b81621d455481aa25c5a9
Deployed Bytecode
0x6080604052600436106101fc5760003560e01c806395d89b411161010d578063b2542e28116100a0578063d77636c41161006f578063d77636c414610732578063e41fcd771461075b578063e904125614610784578063e985e9c5146107af578063f2fde38b146107ec57610203565b8063b2542e281461067a578063b88d4fde146106a3578063c87b56dd146106cc578063cf6b67361461070957610203565b8063a2dd9d87116100dc578063a2dd9d87146105d4578063a475b5dd146105fd578063a868843514610614578063b0392f0b1461065157610203565b806395d89b411461052c578063996517cf146105575780639e6a1d7d14610582578063a22cb465146105ab57610203565b806351cff8d91161019057806366ed0af21161015f57806366ed0af21461044957806370a08231146104725780637cb64759146104af5780638ba4cc3c146104d85780638da5cb5b1461050157610203565b806351cff8d91461038d5780635febc8c1146103b65780636352211e146103e157806363a62f6a1461041e57610203565b8063095ea7b3116101cc578063095ea7b3146102e757806318160ddd1461031057806323b872dd1461033b57806342842e0e1461036457610203565b80623d47901461020557806301ffc9a71461024257806306fdde031461027f578063081812fc146102aa57610203565b3661020357005b005b34801561021157600080fd5b5061022c6004803603810190610227919061328e565b610815565b604051610239919061433d565b60405180910390f35b34801561024e57600080fd5b5061026960048036038101906102649190613534565b61085e565b6040516102769190614040565b60405180910390f35b34801561028b57600080fd5b50610294610a68565b6040516102a1919061405b565b60405180910390f35b3480156102b657600080fd5b506102d160048036038101906102cc91906135da565b610afa565b6040516102de9190613fa2565b60405180910390f35b3480156102f357600080fd5b5061030e60048036038101906103099190613465565b610b37565b005b34801561031c57600080fd5b50610325610c52565b604051610332919061433d565b60405180910390f35b34801561034757600080fd5b50610362600480360381019061035d91906132f3565b610c5c565b005b34801561037057600080fd5b5061038b600480360381019061038691906132f3565b610c6c565b005b34801561039957600080fd5b506103b460048036038101906103af919061328e565b610c8c565b005b3480156103c257600080fd5b506103cb610df2565b6040516103d89190614040565b60405180910390f35b3480156103ed57600080fd5b50610408600480360381019061040391906135da565b610e09565b6040516104159190613fa2565b60405180910390f35b34801561042a57600080fd5b50610433610e45565b6040516104409190614040565b60405180910390f35b34801561045557600080fd5b50610470600480360381019061046b9190613586565b610e5c565b005b34801561047e57600080fd5b506104996004803603810190610494919061328e565b610f77565b6040516104a6919061433d565b60405180910390f35b3480156104bb57600080fd5b506104d660048036038101906104d1919061350b565b610fc0565b005b3480156104e457600080fd5b506104ff60048036038101906104fa9190613465565b611041565b005b34801561050d57600080fd5b50610516611139565b6040516105239190613fa2565b60405180910390f35b34801561053857600080fd5b50610541611163565b60405161054e919061405b565b60405180910390f35b34801561056357600080fd5b5061056c6111f5565b604051610579919061433d565b60405180910390f35b34801561058e57600080fd5b506105a960048036038101906105a491906135da565b6111ff565b005b3480156105b757600080fd5b506105d260048036038101906105cd9190613429565b61127e565b005b3480156105e057600080fd5b506105fb60048036038101906105f691906133bd565b6113ea565b005b34801561060957600080fd5b50610612611690565b005b34801561062057600080fd5b5061063b600480360381019061063691906135da565b611778565b604051610648919061405b565b60405180910390f35b34801561065d57600080fd5b5061067860048036038101906106739190613465565b6118b9565b005b34801561068657600080fd5b506106a1600480360381019061069c91906134a1565b611b53565b005b3480156106af57600080fd5b506106ca60048036038101906106c59190613342565b611c8c565b005b3480156106d857600080fd5b506106f360048036038101906106ee91906135da565b611ca9565b604051610700919061405b565b60405180910390f35b34801561071557600080fd5b50610730600480360381019061072b91906134e2565b611e11565b005b34801561073e57600080fd5b50610759600480360381019061075491906134e2565b611ea3565b005b34801561076757600080fd5b50610782600480360381019061077d91906134e2565b611fe1565b005b34801561079057600080fd5b50610799612073565b6040516107a69190614040565b60405180910390f35b3480156107bb57600080fd5b506107d660048036038101906107d191906132b7565b61208a565b6040516107e39190614040565b60405180910390f35b3480156107f857600080fd5b50610813600480360381019061080e919061328e565b61211e565b005b6000600d60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061092957507f7f5828d0000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b8061099157507f80ac58cd000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b806109f957507f5b5e139f000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b80610a6157507f150b7a02000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b9050919050565b606060058054610a77906145f3565b80601f0160208091040260200160405190810160405280929190818152602001828054610aa3906145f3565b8015610af05780601f10610ac557610100808354040283529160200191610af0565b820191906000526020600020905b815481529060010190602001808311610ad357829003601f168201915b5050505050905090565b60006002600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b3373ffffffffffffffffffffffffffffffffffffffff1660008083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610ba157600080fd5b816002600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b6000600954905090565b610c6783838361219f565b505050565b610c8783838360405180602001604052806000815250611c8c565b505050565b3373ffffffffffffffffffffffffffffffffffffffff16610cab611139565b73ffffffffffffffffffffffffffffffffffffffff1614610d01576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cf89061411d565b60405180910390fd5b600047905060008273ffffffffffffffffffffffffffffffffffffffff1647604051610d2c90613f8d565b60006040518083038185875af1925050503d8060008114610d69576040519150601f19603f3d011682016040523d82523d6000602084013e610d6e565b606091505b5050905080610db2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610da9906141dd565b60405180910390fd5b7f9b1bfa7fa9ee420a16e124f794c35ac9f90472acc99140eb2f6447c714cad8eb338484604051610de593929190613fbd565b60405180910390a1505050565b6000600f60019054906101000a900460ff16905090565b600080600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b6000600460029054906101000a900460ff16905090565b3373ffffffffffffffffffffffffffffffffffffffff16610e7b611139565b73ffffffffffffffffffffffffffffffffffffffff1614610ed1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ec89061411d565b60405180910390fd5b60001515600460029054906101000a900460ff16151514610f27576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f1e9061417d565b60405180910390fd5b8160079080519060200190610f3d929190612fbd565b5080600460036101000a81548160ff0219169083151502179055506001600460016101000a81548160ff0219169083151502179055505050565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b3373ffffffffffffffffffffffffffffffffffffffff16610fdf611139565b73ffffffffffffffffffffffffffffffffffffffff1614611035576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161102c9061411d565b60405180910390fd5b61103e816125d6565b50565b3373ffffffffffffffffffffffffffffffffffffffff16611060611139565b73ffffffffffffffffffffffffffffffffffffffff16146110b6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110ad9061411d565b60405180910390fd5b6115b36110c1610c52565b826110cc9190614478565b111561110d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111049061419d565b60405180910390fd5b60005b8181101561113457611121836125e0565b808061112c90614625565b915050611110565b505050565b6000600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b606060068054611172906145f3565b80601f016020809104026020016040519081016040528092919081815260200182805461119e906145f3565b80156111eb5780601f106111c0576101008083540402835291602001916111eb565b820191906000526020600020905b8154815290600101906020018083116111ce57829003601f168201915b5050505050905090565b6000600e54905090565b3373ffffffffffffffffffffffffffffffffffffffff1661121e611139565b73ffffffffffffffffffffffffffffffffffffffff1614611274576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161126b9061411d565b60405180910390fd5b80600e8190555050565b8173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614156112ed576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112e49061425d565b60405180910390fd5b80600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31836040516113de9190614040565b60405180910390a35050565b60001515600f60029054906101000a900460ff16151514611440576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611437906140dd565b60405180910390fd5b6001600f60026101000a81548160ff0219169083151502179055506115b3611466610c52565b826114719190614478565b11156114b2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114a99061419d565b60405180910390fd5b6114ba6111f5565b8111156114fc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114f39061407d565b60405180910390fd5b6115046111f5565b600d60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548261154f9190614478565b1115611590576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115879061407d565b60405180910390fd5b60011515600f60009054906101000a900460ff16151514156115e7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115de906140fd565b60405180910390fd5b80600d60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546116369190614478565b9250508190555060005b8181101561166e5761165b8585856116566127d4565b6127de565b808061166690614625565b915050611640565b506000600f60026101000a81548160ff02191690831515021790555050505050565b3373ffffffffffffffffffffffffffffffffffffffff166116af611139565b73ffffffffffffffffffffffffffffffffffffffff1614611705576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116fc9061411d565b60405180910390fd5b60011515600460029054906101000a900460ff1615151461175b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611752906142bd565b60405180910390fd5b6001600460006101000a81548160ff021916908315150217905550565b606060011515600460019054906101000a900460ff161515146117d0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117c7906141bd565b60405180910390fd5b60001515600460029054906101000a900460ff16151514611826576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161181d9061421d565b60405180910390fd5b60011515600460039054906101000a900460ff161515141561187d5761184a612a8c565b600761185584612ac9565b60405160200161186793929190613f24565b60405160208183030381529060405290506118b4565b611885612a8c565b600761189084612ac9565b6040516020016118a293929190613ee8565b60405160208183030381529060405290505b919050565b60001515600f60029054906101000a900460ff1615151461190f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611906906140dd565b60405180910390fd5b6001600f60026101000a81548160ff0219169083151502179055506115b3611935610c52565b826119409190614478565b1115611981576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119789061419d565b60405180910390fd5b6119896111f5565b8111156119cb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119c29061407d565b60405180910390fd5b6119d36111f5565b600d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205482611a1e9190614478565b1115611a5f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a569061407d565b60405180910390fd5b60011515600f60019054906101000a900460ff1615151415611ab6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611aad906140fd565b60405180910390fd5b80600d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254611b059190614478565b9250508190555060005b81811015611b3357611b20836125e0565b8080611b2b90614625565b915050611b0f565b506000600f60026101000a81548160ff0219169083151502179055505050565b3373ffffffffffffffffffffffffffffffffffffffff16611b72611139565b73ffffffffffffffffffffffffffffffffffffffff1614611bc8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bbf9061411d565b60405180910390fd5b6115b3611bd3610c52565b8251611bdf9190614478565b1115611c20576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c179061419d565b60405180910390fd5b60005b8151811015611c8857611c75828281518110611c68577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60200260200101516125e0565b8080611c8090614625565b915050611c23565b5050565b611c9784848461219f565b611ca384848484612c76565b50505050565b60606000821415611cef576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ce69061423d565b60405180910390fd5b816008541015611d34576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d2b9061423d565b60405180910390fd5b60011515600460009054906101000a900460ff1615151415611de25760011515600460039054906101000a900460ff1615151415611da757611d74612a8c565b6007611d7f84612ac9565b604051602001611d9193929190613f24565b6040516020818303038152906040529050611e0c565b611daf612a8c565b6007611dba84612ac9565b604051602001611dcc93929190613ee8565b6040516020818303038152906040529050611e0c565b611dea612a8c565b604051602001611dfa9190613f6b565b60405160208183030381529060405290505b919050565b3373ffffffffffffffffffffffffffffffffffffffff16611e30611139565b73ffffffffffffffffffffffffffffffffffffffff1614611e86576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e7d9061411d565b60405180910390fd5b80600f60006101000a81548160ff02191690831515021790555050565b3373ffffffffffffffffffffffffffffffffffffffff16611ec2611139565b73ffffffffffffffffffffffffffffffffffffffff1614611f18576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f0f9061411d565b60405180910390fd5b60001515600460009054906101000a900460ff16151514611f6e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f659061429d565b60405180910390fd5b60011515600460019054906101000a900460ff16151514611fc4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fbb906142dd565b60405180910390fd5b80600460026101000a81548160ff02191690831515021790555050565b3373ffffffffffffffffffffffffffffffffffffffff16612000611139565b73ffffffffffffffffffffffffffffffffffffffff1614612056576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161204d9061411d565b60405180910390fd5b80600f60016101000a81548160ff02191690831515021790555050565b6000600f60009054906101000a900460ff16905090565b6000600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b3373ffffffffffffffffffffffffffffffffffffffff1661213d611139565b73ffffffffffffffffffffffffffffffffffffffff1614612193576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161218a9061411d565b60405180910390fd5b61219c81612e2e565b50565b8273ffffffffffffffffffffffffffffffffffffffff166121bf82610e09565b73ffffffffffffffffffffffffffffffffffffffff1614612215576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161220c906140bd565b60405180910390fd5b3373ffffffffffffffffffffffffffffffffffffffff1660008083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614806122df57503373ffffffffffffffffffffffffffffffffffffffff166002600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16145b80612377575060011515600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515145b6123b6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123ad906142fd565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612426576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161241d9061427d565b60405180910390fd5b60018060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461247591906144ff565b925050819055508160008083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060006002600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060018060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461256f9190614478565b92505081905550808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4505050565b80600b8190555050565b6115b360085410612626576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161261d9061431d565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415612696576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161268d9061413d565b60405180910390fd5b6001600860008282546126a99190614478565b925050819055506001600960008282546126c39190614478565b9250508190555080600080600854815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060018060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461276c9190614478565b925050819055506008548173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a450565b6000600b54905090565b6000846040516020016127f19190613ecd565b604051602081830303815290604052805190602001209050612855848480806020026020016040519081016040528093929190818152602001838360200280828437600081840152601f19601f820116905080830192505050505050508383612ef4565b612894576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161288b9061415d565b60405180910390fd5b6115b3600854106128da576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128d19061431d565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16141561294a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129419061413d565b60405180910390fd5b60016008600082825461295d9190614478565b925050819055506001600960008282546129779190614478565b9250508190555084600080600854815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060018060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254612a209190614478565b925050819055506008548573ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a45050505050565b60606040518060400160405280600781526020017f697066733a2f2f00000000000000000000000000000000000000000000000000815250905090565b60606000821415612b11576040518060400160405280600181526020017f30000000000000000000000000000000000000000000000000000000000000008152509050612c71565b600082905060005b60008214612b43578080612b2c90614625565b915050600a82612b3c91906144ce565b9150612b19565b60008167ffffffffffffffff811115612b85577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040519080825280601f01601f191660200182016040528015612bb75781602001600182028036833780820191505090505b5090505b60008514612c6a57600182612bd091906144ff565b9150600a85612bdf9190614692565b6030612beb9190614478565b60f81b818381518110612c27577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600a85612c6391906144ce565b9450612bbb565b8093505050505b919050565b6000833b90506000811115612e27578373ffffffffffffffffffffffffffffffffffffffff1663150b7a02338786866040518563ffffffff1660e01b8152600401612cc49493929190613ff4565b602060405180830381600087803b158015612cde57600080fd5b505af1925050508015612d0f57506040513d601f19601f82011682018060405250810190612d0c919061355d565b60015b612d9e57612d1b6147aa565b80612d265750612d63565b806040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d5a919061405b565b60405180910390fd5b6040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d959061409d565b60405180910390fd5b63150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614612e25576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612e1c906141fd565b60405180910390fd5b505b5050505050565b6000600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600082612f018584612f0b565b1490509392505050565b60008082905060005b8451811015612f9b576000858281518110612f58577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60200260200101519050808311612f7a57612f738382612fa6565b9250612f87565b612f848184612fa6565b92505b508080612f9390614625565b915050612f14565b508091505092915050565b600082600052816020526040600020905092915050565b828054612fc9906145f3565b90600052602060002090601f016020900481019282612feb5760008555613032565b82601f1061300457805160ff1916838001178555613032565b82800160010185558215613032579182015b82811115613031578251825591602001919060010190613016565b5b50905061303f9190613043565b5090565b5b8082111561305c576000816000905550600101613044565b5090565b600061307361306e84614389565b614358565b9050808382526020820190508285602086028201111561309257600080fd5b60005b858110156130c257816130a88882613148565b845260208401935060208301925050600181019050613095565b5050509392505050565b60006130df6130da846143b5565b614358565b9050828152602081018484840111156130f757600080fd5b6131028482856145b1565b509392505050565b600061311d613118846143e5565b614358565b90508281526020810184848401111561313557600080fd5b6131408482856145b1565b509392505050565b60008135905061315781614860565b92915050565b600082601f83011261316e57600080fd5b813561317e848260208601613060565b91505092915050565b60008083601f84011261319957600080fd5b8235905067ffffffffffffffff8111156131b257600080fd5b6020830191508360208202830111156131ca57600080fd5b9250929050565b6000813590506131e081614877565b92915050565b6000813590506131f58161488e565b92915050565b60008135905061320a816148a5565b92915050565b60008151905061321f816148a5565b92915050565b600082601f83011261323657600080fd5b81356132468482602086016130cc565b91505092915050565b600082601f83011261326057600080fd5b813561327084826020860161310a565b91505092915050565b600081359050613288816148bc565b92915050565b6000602082840312156132a057600080fd5b60006132ae84828501613148565b91505092915050565b600080604083850312156132ca57600080fd5b60006132d885828601613148565b92505060206132e985828601613148565b9150509250929050565b60008060006060848603121561330857600080fd5b600061331686828701613148565b935050602061332786828701613148565b925050604061333886828701613279565b9150509250925092565b6000806000806080858703121561335857600080fd5b600061336687828801613148565b945050602061337787828801613148565b935050604061338887828801613279565b925050606085013567ffffffffffffffff8111156133a557600080fd5b6133b187828801613225565b91505092959194509250565b600080600080606085870312156133d357600080fd5b60006133e187828801613148565b945050602085013567ffffffffffffffff8111156133fe57600080fd5b61340a87828801613187565b9350935050604061341d87828801613279565b91505092959194509250565b6000806040838503121561343c57600080fd5b600061344a85828601613148565b925050602061345b858286016131d1565b9150509250929050565b6000806040838503121561347857600080fd5b600061348685828601613148565b925050602061349785828601613279565b9150509250929050565b6000602082840312156134b357600080fd5b600082013567ffffffffffffffff8111156134cd57600080fd5b6134d98482850161315d565b91505092915050565b6000602082840312156134f457600080fd5b6000613502848285016131d1565b91505092915050565b60006020828403121561351d57600080fd5b600061352b848285016131e6565b91505092915050565b60006020828403121561354657600080fd5b6000613554848285016131fb565b91505092915050565b60006020828403121561356f57600080fd5b600061357d84828501613210565b91505092915050565b6000806040838503121561359957600080fd5b600083013567ffffffffffffffff8111156135b357600080fd5b6135bf8582860161324f565b92505060206135d0858286016131d1565b9150509250929050565b6000602082840312156135ec57600080fd5b60006135fa84828501613279565b91505092915050565b61360c81614533565b82525050565b61362361361e82614533565b61466e565b82525050565b61363281614545565b82525050565b60006136438261442a565b61364d8185614440565b935061365d8185602086016145c0565b6136668161477f565b840191505092915050565b600061367c82614435565b613686818561445c565b93506136968185602086016145c0565b61369f8161477f565b840191505092915050565b60006136b582614435565b6136bf818561446d565b93506136cf8185602086016145c0565b80840191505092915050565b600081546136e8816145f3565b6136f2818661446d565b9450600182166000811461370d576001811461371e57613751565b60ff19831686528186019350613751565b61372785614415565b60005b838110156137495781548189015260018201915060208101905061372a565b838801955050505b50505092915050565b6000613767601d8361445c565b91507f46463a20313020746f6b656e7320616c6c6f77656420746f206d696e740000006000830152602082019050919050565b60006137a760328361445c565b91507f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560008301527f63656976657220696d706c656d656e74657200000000000000000000000000006020830152604082019050919050565b600061380d602a8361445c565b91507f4552433732313a2066726f6d2061646472657373206973206e6f74206f776e6560008301527f72206f6620746f6b656e000000000000000000000000000000000000000000006020830152604082019050919050565b600061387360158361445c565b91507f46463a207265656e7472616e63792064656e69656400000000000000000000006000830152602082019050919050565b60006138b360158361445c565b91507f46463a206d696e74696e672069732070617573656400000000000000000000006000830152602082019050919050565b60006138f3604a8361446d565b91507f6261667962656964767a7866656a717a6c66746577787068727271766565337260008301527f36737866376d6636657464616a636f6177707a34736635687665342f7072657260208301527f657665616c2e6a736f6e000000000000000000000000000000000000000000006040830152604a82019050919050565b600061397f601f8361445c565b91507f4552433137333a2063616c6c6572206973206e6f7420746865206f776e6572006000830152602082019050919050565b60006139bf60238361445c565b91507f4552433732313a2063616e6e6f74206d696e7420746f207a65726f206164647260008301527f65737300000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000613a2560198361445c565b91507f46463a20696e76616c6964206d65726b6c652070726f6f662e000000000000006000830152602082019050919050565b6000613a6560148361445c565b91507f46463a20616c72656164792072657665616c65640000000000000000000000006000830152602082019050919050565b6000613aa560198361445c565b91507f46463a206d6178696d756d20746f6b656e73206d696e746564000000000000006000830152602082019050919050565b6000613ae560188361445c565b91507f46463a2043494420686173206e6f74206265656e2073657400000000000000006000830152602082019050919050565b6000613b2560198361445c565b91507f46463a206574686572207472616e73666572206661696c6564000000000000006000830152602082019050919050565b6000613b6560268361445c565b91507f4552433732313a2045524337323152656365697665722072656a65637465642060008301527f746f6b656e7300000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000613bcb60148361445c565b91507f46463a2055524920686173206265656e207365740000000000000000000000006000830152602082019050919050565b6000613c0b60058361446d565b91507f2e6a736f6e0000000000000000000000000000000000000000000000000000006000830152600582019050919050565b6000613c4b60198361445c565b91507f46463a20746f6b656e204944206f7574206f662072616e6765000000000000006000830152602082019050919050565b6000613c8b60208361445c565b91507f4552433732313a2063616e6e6f7420617070726f766520746865206f776e65726000830152602082019050919050565b6000613ccb602b8361445c565b91507f4552433732313a2063616e6e6f74207472616e7366657220746f20746865207a60008301527f65726f20616464726573730000000000000000000000000000000000000000006020830152604082019050919050565b6000613d31601e8361445c565b91507f46463a2072657665616c2068617320616c7265616479206f63637572656400006000830152602082019050919050565b6000613d71601a8361445c565b91507f46463a2072657665616c2062617365206e6f74206c6f636b65640000000000006000830152602082019050919050565b6000613db1600083614451565b9150600082019050919050565b6000613dcb60178361445c565b91507f46463a2072657665616c2062617365206e6f74207365740000000000000000006000830152602082019050919050565b6000613e0b601d8361445c565b91507f4552433732313a20756e617574686f72697a6564207472616e736665720000006000830152602082019050919050565b6000613e4b601d8361445c565b91507f4552433732313a206d6178696d756d20746f6b656e73206d696e7465640000006000830152602082019050919050565b6000613e8b60018361446d565b91507f2f000000000000000000000000000000000000000000000000000000000000006000830152600182019050919050565b613ec7816145a7565b82525050565b6000613ed98284613612565b60148201915081905092915050565b6000613ef482866136aa565b9150613f0082856136db565b9150613f0b82613e7e565b9150613f1782846136aa565b9150819050949350505050565b6000613f3082866136aa565b9150613f3c82856136db565b9150613f4782613e7e565b9150613f5382846136aa565b9150613f5e82613bfe565b9150819050949350505050565b6000613f7782846136aa565b9150613f82826138e6565b915081905092915050565b6000613f9882613da4565b9150819050919050565b6000602082019050613fb76000830184613603565b92915050565b6000606082019050613fd26000830186613603565b613fdf6020830185613603565b613fec6040830184613ebe565b949350505050565b60006080820190506140096000830187613603565b6140166020830186613603565b6140236040830185613ebe565b81810360608301526140358184613638565b905095945050505050565b60006020820190506140556000830184613629565b92915050565b600060208201905081810360008301526140758184613671565b905092915050565b600060208201905081810360008301526140968161375a565b9050919050565b600060208201905081810360008301526140b68161379a565b9050919050565b600060208201905081810360008301526140d681613800565b9050919050565b600060208201905081810360008301526140f681613866565b9050919050565b60006020820190508181036000830152614116816138a6565b9050919050565b6000602082019050818103600083015261413681613972565b9050919050565b60006020820190508181036000830152614156816139b2565b9050919050565b6000602082019050818103600083015261417681613a18565b9050919050565b6000602082019050818103600083015261419681613a58565b9050919050565b600060208201905081810360008301526141b681613a98565b9050919050565b600060208201905081810360008301526141d681613ad8565b9050919050565b600060208201905081810360008301526141f681613b18565b9050919050565b6000602082019050818103600083015261421681613b58565b9050919050565b6000602082019050818103600083015261423681613bbe565b9050919050565b6000602082019050818103600083015261425681613c3e565b9050919050565b6000602082019050818103600083015261427681613c7e565b9050919050565b6000602082019050818103600083015261429681613cbe565b9050919050565b600060208201905081810360008301526142b681613d24565b9050919050565b600060208201905081810360008301526142d681613d64565b9050919050565b600060208201905081810360008301526142f681613dbe565b9050919050565b6000602082019050818103600083015261431681613dfe565b9050919050565b6000602082019050818103600083015261433681613e3e565b9050919050565b60006020820190506143526000830184613ebe565b92915050565b6000604051905081810181811067ffffffffffffffff8211171561437f5761437e614750565b5b8060405250919050565b600067ffffffffffffffff8211156143a4576143a3614750565b5b602082029050602081019050919050565b600067ffffffffffffffff8211156143d0576143cf614750565b5b601f19601f8301169050602081019050919050565b600067ffffffffffffffff821115614400576143ff614750565b5b601f19601f8301169050602081019050919050565b60008190508160005260206000209050919050565b600081519050919050565b600081519050919050565b600082825260208201905092915050565b600081905092915050565b600082825260208201905092915050565b600081905092915050565b6000614483826145a7565b915061448e836145a7565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156144c3576144c26146c3565b5b828201905092915050565b60006144d9826145a7565b91506144e4836145a7565b9250826144f4576144f36146f2565b5b828204905092915050565b600061450a826145a7565b9150614515836145a7565b925082821015614528576145276146c3565b5b828203905092915050565b600061453e82614587565b9050919050565b60008115159050919050565b6000819050919050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b82818337600083830152505050565b60005b838110156145de5780820151818401526020810190506145c3565b838111156145ed576000848401525b50505050565b6000600282049050600182168061460b57607f821691505b6020821081141561461f5761461e614721565b5b50919050565b6000614630826145a7565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415614663576146626146c3565b5b600182019050919050565b600061467982614680565b9050919050565b600061468b82614790565b9050919050565b600061469d826145a7565b91506146a8836145a7565b9250826146b8576146b76146f2565b5b828206905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000601f19601f8301169050919050565b60008160601b9050919050565b60008160e01c9050919050565b600060443d10156147ba5761485d565b60046000803e6147cb60005161479d565b6308c379a081146147dc575061485d565b60405160043d036004823e80513d602482011167ffffffffffffffff821117156148085750505061485d565b808201805167ffffffffffffffff81111561482757505050505061485d565b8060208301013d85018111156148425750505050505061485d565b61484b8261477f565b60208401016040528296505050505050505b90565b61486981614533565b811461487457600080fd5b50565b61488081614545565b811461488b57600080fd5b50565b61489781614551565b81146148a257600080fd5b50565b6148ae8161455b565b81146148b957600080fd5b50565b6148c5816145a7565b81146148d057600080fd5b5056fea26469706673582212207c6dde5549ae86b242121d9cd3479770adccd005a9708a9392f65870cb67d11564736f6c63430008000033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
0000000000000000000000001ca3242f4065b0e75278feba3fb304f73d19f7b17389adee2a47b157dfee50442490ffcf11853ac3ad1b81621d455481aa25c5a9
-----Decoded View---------------
Arg [0] : _contractOwner (address): 0x1CA3242f4065B0E75278FEba3fb304f73D19f7b1
Arg [1] : _merkleRoot (bytes32): 0x7389adee2a47b157dfee50442490ffcf11853ac3ad1b81621d455481aa25c5a9
-----Encoded View---------------
2 Constructor Arguments found :
Arg [0] : 0000000000000000000000001ca3242f4065b0e75278feba3fb304f73d19f7b1
Arg [1] : 7389adee2a47b157dfee50442490ffcf11853ac3ad1b81621d455481aa25c5a9
Loading...
Loading
Loading...
Loading
[ Download: CSV Export ]
[ Download: CSV Export ]
A token is a representation of an on-chain or off-chain asset. The token page shows information such as price, total supply, holders, transfers and social links. Learn more about this page in our Knowledge Base.