ERC-721
Overview
Max Total Supply
352 AIID
Holders
178
Market
Volume (24H)
N/A
Min Price (24H)
N/A
Max Price (24H)
N/A
Other Info
Token Contract
Balance
1 AIIDLoading...
Loading
Loading...
Loading
Loading...
Loading
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
Contract Name:
AndIfIDie
Compiler Version
v0.8.7+commit.e28d00a7
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2022-08-16 */ // SPDX-License-Identifier: MIT // And If I Die // Max Supply = 999 // Price = 0.01 // Max per tx / wallet = 2 pragma solidity ^0.8.0; library MerkleProof { function verify( bytes32[] memory proof, bytes32 root, bytes32 leaf ) internal pure returns (bool) { return processProof(proof, leaf) == root; } function processProof(bytes32[] memory proof, bytes32 leaf) internal pure returns (bytes32) { bytes32 computedHash = leaf; for (uint256 i = 0; i < proof.length; i++) { bytes32 proofElement = proof[i]; if (computedHash <= proofElement) { computedHash = _efficientHash(computedHash, proofElement); } else { 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) } } } abstract contract ReentrancyGuard { uint256 private constant _NOT_ENTERED = 1; uint256 private constant _ENTERED = 2; uint256 private _status; constructor() { _status = _NOT_ENTERED; } modifier nonReentrant() { require(_status != _ENTERED, "ReentrancyGuard: reentrant call"); _status = _ENTERED; _; _status = _NOT_ENTERED; } } /** * @dev Wrappers over Solidity's arithmetic operations. * * NOTE: `SafeMath` is no longer needed starting with Solidity 0.8. The compiler * now has built in overflow checking. */ library SafeMath { /** * @dev Returns the addition of two unsigned integers, with an overflow flag. * * _Available since v3.4._ */ function tryAdd(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { uint256 c = a + b; if (c < a) return (false, 0); return (true, c); } } /** * @dev Returns the substraction of two unsigned integers, with an overflow flag. * * _Available since v3.4._ */ function trySub(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { if (b > a) return (false, 0); return (true, a - b); } } /** * @dev Returns the multiplication of two unsigned integers, with an overflow flag. * * _Available since v3.4._ */ function tryMul(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { // Gas optimization: this is cheaper than requiring 'a' not being zero, but the // benefit is lost if 'b' is also tested. // See: https://github.com/OpenZeppelin/openzeppelin-contracts/pull/522 if (a == 0) return (true, 0); uint256 c = a * b; if (c / a != b) return (false, 0); return (true, c); } } /** * @dev Returns the division of two unsigned integers, with a division by zero flag. * * _Available since v3.4._ */ function tryDiv(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { if (b == 0) return (false, 0); return (true, a / b); } } /** * @dev Returns the remainder of dividing two unsigned integers, with a division by zero flag. * * _Available since v3.4._ */ function tryMod(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { if (b == 0) return (false, 0); return (true, a % b); } } /** * @dev Returns the addition of two unsigned integers, reverting on * overflow. * * Counterpart to Solidity's `+` operator. * * Requirements: * * - Addition cannot overflow. */ function add(uint256 a, uint256 b) internal pure returns (uint256) { return a + b; } /** * @dev Returns the subtraction of two unsigned integers, reverting on * overflow (when the result is negative). * * Counterpart to Solidity's `-` operator. * * Requirements: * * - Subtraction cannot overflow. */ function sub(uint256 a, uint256 b) internal pure returns (uint256) { return a - b; } /** * @dev Returns the multiplication of two unsigned integers, reverting on * overflow. * * Counterpart to Solidity's `*` operator. * * Requirements: * * - Multiplication cannot overflow. */ function mul(uint256 a, uint256 b) internal pure returns (uint256) { return a * b; } /** * @dev Returns the integer division of two unsigned integers, reverting on * division by zero. The result is rounded towards zero. * * Counterpart to Solidity's `/` operator. * * Requirements: * * - The divisor cannot be zero. */ function div(uint256 a, uint256 b) internal pure returns (uint256) { return a / b; } /** * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo), * reverting when dividing by zero. * * Counterpart to Solidity's `%` operator. This function uses a `revert` * opcode (which leaves remaining gas untouched) while Solidity uses an * invalid opcode to revert (consuming all remaining gas). * * Requirements: * * - The divisor cannot be zero. */ function mod(uint256 a, uint256 b) internal pure returns (uint256) { return a % b; } /** * @dev Returns the subtraction of two unsigned integers, reverting with custom message on * overflow (when the result is negative). * * CAUTION: This function is deprecated because it requires allocating memory for the error * message unnecessarily. For custom revert reasons use {trySub}. * * Counterpart to Solidity's `-` operator. * * Requirements: * * - Subtraction cannot overflow. */ function sub( uint256 a, uint256 b, string memory errorMessage ) internal pure returns (uint256) { unchecked { require(b <= a, errorMessage); return a - b; } } /** * @dev Returns the integer division of two unsigned integers, reverting with custom message on * division by zero. The result is rounded towards zero. * * Counterpart to Solidity's `/` operator. Note: this function uses a * `revert` opcode (which leaves remaining gas untouched) while Solidity * uses an invalid opcode to revert (consuming all remaining gas). * * Requirements: * * - The divisor cannot be zero. */ function div( uint256 a, uint256 b, string memory errorMessage ) internal pure returns (uint256) { unchecked { require(b > 0, errorMessage); return a / b; } } /** * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo), * reverting with custom message when dividing by zero. * * CAUTION: This function is deprecated because it requires allocating memory for the error * message unnecessarily. For custom revert reasons use {tryMod}. * * Counterpart to Solidity's `%` operator. This function uses a `revert` * opcode (which leaves remaining gas untouched) while Solidity uses an * invalid opcode to revert (consuming all remaining gas). * * Requirements: * * - The divisor cannot be zero. */ function mod( uint256 a, uint256 b, string memory errorMessage ) internal pure returns (uint256) { unchecked { require(b > 0, errorMessage); return a % b; } } } library Strings { bytes16 private constant _HEX_SYMBOLS = "0123456789abcdef"; function toString(uint256 value) internal pure returns (string memory) { if (value == 0) { return "0"; } uint256 temp = value; uint256 digits; while (temp != 0) { digits++; temp /= 10; } bytes memory buffer = new bytes(digits); while (value != 0) { digits -= 1; buffer[digits] = bytes1(uint8(48 + uint256(value % 10))); value /= 10; } return string(buffer); } function toHexString(uint256 value) internal pure returns (string memory) { if (value == 0) { return "0x00"; } uint256 temp = value; uint256 length = 0; while (temp != 0) { length++; temp >>= 8; } return toHexString(value, length); } function toHexString(uint256 value, uint256 length) internal pure returns (string memory) { bytes memory buffer = new bytes(2 * length + 2); buffer[0] = "0"; buffer[1] = "x"; for (uint256 i = 2 * length + 1; i > 1; --i) { buffer[i] = _HEX_SYMBOLS[value & 0xf]; value >>= 4; } require(value == 0, "Strings: hex length insufficient"); return string(buffer); } } abstract contract Context { function _msgSender() internal view virtual returns (address) { return msg.sender; } function _msgData() internal view virtual returns (bytes calldata) { return msg.data; } } abstract contract Ownable is Context { address private _owner; event OwnershipTransferred( address indexed previousOwner, address indexed newOwner ); constructor() { _transferOwnership(_msgSender()); } function owner() public view virtual returns (address) { return _owner; } modifier onlyOwner() { require(owner() == _msgSender(), "Ownable: caller is not the owner"); _; } function renounceOwnership() public virtual onlyOwner { _transferOwnership(address(0)); } function transferOwnership(address newOwner) public virtual onlyOwner { require( newOwner != address(0), "Ownable: new owner is the zero address" ); _transferOwnership(newOwner); } function _transferOwnership(address newOwner) internal virtual { address oldOwner = _owner; _owner = newOwner; emit OwnershipTransferred(oldOwner, newOwner); } } library Address { function isContract(address account) internal view returns (bool) { uint256 size; assembly { size := extcodesize(account) } return size > 0; } function sendValue(address payable recipient, uint256 amount) internal { require( address(this).balance >= amount, "Address: insufficient balance" ); (bool success, ) = recipient.call{value: amount}(""); require( success, "Address: unable to send value, recipient may have reverted" ); } function functionCall(address target, bytes memory data) internal returns (bytes memory) { return functionCall(target, data, "Address: low-level call failed"); } function functionCall( address target, bytes memory data, string memory errorMessage ) internal returns (bytes memory) { return functionCallWithValue(target, data, 0, errorMessage); } function functionCallWithValue( address target, bytes memory data, uint256 value ) internal returns (bytes memory) { return functionCallWithValue( target, data, value, "Address: low-level call with value failed" ); } function functionCallWithValue( address target, bytes memory data, uint256 value, string memory errorMessage ) internal returns (bytes memory) { require( address(this).balance >= value, "Address: insufficient balance for call" ); require(isContract(target), "Address: call to non-contract"); (bool success, bytes memory returndata) = target.call{value: value}( data ); return verifyCallResult(success, returndata, errorMessage); } function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) { return functionStaticCall( target, data, "Address: low-level static call failed" ); } function functionStaticCall( address target, bytes memory data, string memory errorMessage ) internal view returns (bytes memory) { require(isContract(target), "Address: static call to non-contract"); (bool success, bytes memory returndata) = target.staticcall(data); return verifyCallResult(success, returndata, errorMessage); } function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) { return functionDelegateCall( target, data, "Address: low-level delegate call failed" ); } function functionDelegateCall( address target, bytes memory data, string memory errorMessage ) internal returns (bytes memory) { require(isContract(target), "Address: delegate call to non-contract"); (bool success, bytes memory returndata) = target.delegatecall(data); return verifyCallResult(success, returndata, errorMessage); } function verifyCallResult( bool success, bytes memory returndata, string memory errorMessage ) internal pure returns (bytes memory) { if (success) { return returndata; } else { if (returndata.length > 0) { assembly { let returndata_size := mload(returndata) revert(add(32, returndata), returndata_size) } } else { revert(errorMessage); } } } } interface IERC721Receiver { function onERC721Received( address operator, address from, uint256 tokenId, bytes calldata data ) external returns (bytes4); } interface IERC165 { function supportsInterface(bytes4 interfaceId) external view returns (bool); } abstract contract ERC165 is IERC165 { function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) { return interfaceId == type(IERC165).interfaceId; } } interface IERC721 is IERC165 { event Transfer( address indexed from, address indexed to, uint256 indexed tokenId ); event Approval( address indexed owner, address indexed approved, uint256 indexed tokenId ); event ApprovalForAll( address indexed owner, address indexed operator, bool approved ); function balanceOf(address owner) external view returns (uint256 balance); function ownerOf(uint256 tokenId) external view returns (address owner); function safeTransferFrom( address from, address to, uint256 tokenId ) external; function transferFrom( address from, address to, uint256 tokenId ) external; function approve(address to, uint256 tokenId) external; function getApproved(uint256 tokenId) external view returns (address operator); function setApprovalForAll(address operator, bool _approved) external; function isApprovedForAll(address owner, address operator) external view returns (bool); function safeTransferFrom( address from, address to, uint256 tokenId, bytes calldata data ) external; } interface IERC721Enumerable is IERC721 { function totalSupply() external view returns (uint256); function tokenOfOwnerByIndex(address owner, uint256 index) external view returns (uint256 tokenId); function tokenByIndex(uint256 index) external view returns (uint256); } interface IERC721Metadata is IERC721 { function name() external view returns (string memory); function symbol() external view returns (string memory); function tokenURI(uint256 tokenId) external view returns (string memory); } contract ERC721A is Context, ERC165, IERC721, IERC721Metadata, IERC721Enumerable { using Address for address; using Strings for uint256; struct TokenOwnership { address addr; uint64 startTimestamp; } struct AddressData { uint128 balance; uint128 numberMinted; } uint256 private currentIndex = 1; uint256 internal immutable collectionSize; uint256 internal immutable maxBatchSize; string private _name; string private _symbol; mapping(uint256 => TokenOwnership) private _ownerships; mapping(address => AddressData) private _addressData; mapping(uint256 => address) private _tokenApprovals; mapping(address => mapping(address => bool)) private _operatorApprovals; constructor( string memory name_, string memory symbol_, uint256 maxBatchSize_, uint256 collectionSize_ ) { require( collectionSize_ > 0, "ERC721A: collection must have a nonzero supply" ); require(maxBatchSize_ > 0, "ERC721A: max batch size must be nonzero"); _name = name_; _symbol = symbol_; maxBatchSize = maxBatchSize_; collectionSize = collectionSize_; } function totalSupply() public view override returns (uint256) { return currentIndex - 1; } function tokenByIndex(uint256 index) public view override returns (uint256) { require(index < totalSupply(), "ERC721A: global index out of bounds"); return index; } function tokenOfOwnerByIndex(address owner, uint256 index) public view override returns (uint256) { require(index < balanceOf(owner), "ERC721A: owner index out of bounds"); uint256 numMintedSoFar = totalSupply(); uint256 tokenIdsIdx = 0; address currOwnershipAddr = address(0); for (uint256 i = 0; i < numMintedSoFar; i++) { TokenOwnership memory ownership = _ownerships[i]; if (ownership.addr != address(0)) { currOwnershipAddr = ownership.addr; } if (currOwnershipAddr == owner) { if (tokenIdsIdx == index) { return i; } tokenIdsIdx++; } } revert("ERC721A: unable to get token of owner by index"); } function supportsInterface(bytes4 interfaceId) public view virtual override(ERC165, IERC165) returns (bool) { return interfaceId == type(IERC721).interfaceId || interfaceId == type(IERC721Metadata).interfaceId || interfaceId == type(IERC721Enumerable).interfaceId || super.supportsInterface(interfaceId); } function balanceOf(address owner) public view override returns (uint256) { require( owner != address(0), "ERC721A: balance query for the zero address" ); return uint256(_addressData[owner].balance); } function _numberMinted(address owner) internal view returns (uint256) { require( owner != address(0), "ERC721A: number minted query for the zero address" ); return uint256(_addressData[owner].numberMinted); } function ownershipOf(uint256 tokenId) internal view returns (TokenOwnership memory) { require(_exists(tokenId), "ERC721A: owner query for nonexistent token"); uint256 lowestTokenToCheck; if (tokenId >= maxBatchSize) { lowestTokenToCheck = tokenId - maxBatchSize + 1; } for (uint256 curr = tokenId; curr >= lowestTokenToCheck; curr--) { TokenOwnership memory ownership = _ownerships[curr]; if (ownership.addr != address(0)) { return ownership; } } revert("ERC721A: unable to determine the owner of token"); } function ownerOf(uint256 tokenId) public view override returns (address) { return ownershipOf(tokenId).addr; } function name() public view virtual override returns (string memory) { return _name; } function symbol() public view virtual override returns (string memory) { return _symbol; } function tokenURI(uint256 tokenId) public view virtual override returns (string memory) { require( _exists(tokenId), "ERC721Metadata: URI query for nonexistent token" ); string memory baseURI = _baseURI(); return bytes(baseURI).length > 0 ? string( abi.encodePacked( baseURI, tokenId.toString(), _getUriExtension() ) ) : ""; } function _baseURI() internal view virtual returns (string memory) { return ""; } function _getUriExtension() internal view virtual returns (string memory) { return ""; } function approve(address to, uint256 tokenId) public override { address owner = ERC721A.ownerOf(tokenId); require(to != owner, "ERC721A: approval to current owner"); require( _msgSender() == owner || isApprovedForAll(owner, _msgSender()), "ERC721A: approve caller is not owner nor approved for all" ); _approve(to, tokenId, owner); } function getApproved(uint256 tokenId) public view override returns (address) { require( _exists(tokenId), "ERC721A: approved query for nonexistent token" ); return _tokenApprovals[tokenId]; } function setApprovalForAll(address operator, bool approved) public override { require(operator != _msgSender(), "ERC721A: approve to caller"); _operatorApprovals[_msgSender()][operator] = approved; emit ApprovalForAll(_msgSender(), operator, approved); } function isApprovedForAll(address owner, address operator) public view virtual override returns (bool) { return _operatorApprovals[owner][operator]; } function transferFrom( address from, address to, uint256 tokenId ) public override { _transfer(from, to, 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); require( _checkOnERC721Received(from, to, tokenId, _data), "ERC721A: transfer to non ERC721Receiver implementer" ); } function _exists(uint256 tokenId) internal view returns (bool) { return tokenId < currentIndex; } function _safeMint(address to, uint256 quantity) internal { _safeMint(to, quantity, ""); } function _safeMint( address to, uint256 quantity, bytes memory _data ) internal { uint256 startTokenId = currentIndex; require(to != address(0), "ERC721A: mint to the zero address"); require(!_exists(startTokenId), "ERC721A: token already minted"); require(quantity <= maxBatchSize, "ERC721A: quantity to mint too high"); _beforeTokenTransfers(address(0), to, startTokenId, quantity); AddressData memory addressData = _addressData[to]; _addressData[to] = AddressData( addressData.balance + uint128(quantity), addressData.numberMinted + uint128(quantity) ); _ownerships[startTokenId] = TokenOwnership(to, uint64(block.timestamp)); uint256 updatedIndex = startTokenId; for (uint256 i = 0; i < quantity; i++) { emit Transfer(address(0), to, updatedIndex); require( _checkOnERC721Received(address(0), to, updatedIndex, _data), "ERC721A: transfer to non ERC721Receiver implementer" ); updatedIndex++; } currentIndex = updatedIndex; _afterTokenTransfers(address(0), to, startTokenId, quantity); } function _transfer( address from, address to, uint256 tokenId ) private { TokenOwnership memory prevOwnership = ownershipOf(tokenId); bool isApprovedOrOwner = (_msgSender() == prevOwnership.addr || getApproved(tokenId) == _msgSender() || isApprovedForAll(prevOwnership.addr, _msgSender())); require( isApprovedOrOwner, "ERC721A: transfer caller is not owner nor approved" ); require( prevOwnership.addr == from, "ERC721A: transfer from incorrect owner" ); require(to != address(0), "ERC721A: transfer to the zero address"); _beforeTokenTransfers(from, to, tokenId, 1); _approve(address(0), tokenId, prevOwnership.addr); _addressData[from].balance -= 1; _addressData[to].balance += 1; _ownerships[tokenId] = TokenOwnership(to, uint64(block.timestamp)); uint256 nextTokenId = tokenId + 1; if (_ownerships[nextTokenId].addr == address(0)) { if (_exists(nextTokenId)) { _ownerships[nextTokenId] = TokenOwnership( prevOwnership.addr, prevOwnership.startTimestamp ); } } emit Transfer(from, to, tokenId); _afterTokenTransfers(from, to, tokenId, 1); } function _approve( address to, uint256 tokenId, address owner ) private { _tokenApprovals[tokenId] = to; emit Approval(owner, to, tokenId); } uint256 public nextOwnerToExplicitlySet = 0; function _setOwnersExplicit(uint256 quantity) internal { uint256 oldNextOwnerToSet = nextOwnerToExplicitlySet; require(quantity > 0, "quantity must be nonzero"); uint256 endIndex = oldNextOwnerToSet + quantity - 1; if (endIndex > collectionSize - 1) { endIndex = collectionSize - 1; } require(_exists(endIndex), "not enough minted yet for this cleanup"); for (uint256 i = oldNextOwnerToSet; i <= endIndex; i++) { if (_ownerships[i].addr == address(0)) { TokenOwnership memory ownership = ownershipOf(i); _ownerships[i] = TokenOwnership( ownership.addr, ownership.startTimestamp ); } } nextOwnerToExplicitlySet = endIndex + 1; } function _checkOnERC721Received( address from, address to, uint256 tokenId, bytes memory _data ) private returns (bool) { if (to.isContract()) { try IERC721Receiver(to).onERC721Received( _msgSender(), from, tokenId, _data ) returns (bytes4 retval) { return retval == IERC721Receiver(to).onERC721Received.selector; } catch (bytes memory reason) { if (reason.length == 0) { revert( "ERC721A: transfer to non ERC721Receiver implementer" ); } else { assembly { revert(add(32, reason), mload(reason)) } } } } else { return true; } } function _beforeTokenTransfers( address from, address to, uint256 startTokenId, uint256 quantity ) internal virtual {} function _afterTokenTransfers( address from, address to, uint256 startTokenId, uint256 quantity ) internal virtual {} } contract AndIfIDie is Ownable, ERC721A, ReentrancyGuard { using Strings for uint256; using SafeMath for uint256; string public uriSuffix = ".json"; uint256 public MAX_PER_Transaction = 2; // maximum amount that user can mint per transaction uint256 public MAX_PER_Wallet = 2; //prices uint256 public price = 0.01 ether; uint256 private constant TotalCollectionSize_ = 999; // total number of nfts uint256 private constant MaxMintPerBatch_ = 200; //max mint per traction bool public paused = true; bool public presaleIsActive = false; string private baseTokenURI=""; bytes32 public merkleRoot; constructor() ERC721A( "And If I Die", "AIID", MaxMintPerBatch_, TotalCollectionSize_ ) { } function supportsInterface(bytes4 interfaceId) public view override(ERC721A) returns (bool) { return interfaceId == 0x2a55205a || super.supportsInterface(interfaceId); } function setMerkleRoot(bytes32 m) public onlyOwner { merkleRoot = m; } function getMerkleRoot() public view returns (bytes32) { return merkleRoot; } function mint(uint256 quantity) public payable { require(!paused, "mint is paused"); require( totalSupply() + quantity <= TotalCollectionSize_, "reached max supply" ); require(numberMinted(msg.sender) + quantity <= MAX_PER_Wallet, "limit per wallet exceeded"); require(quantity <= MAX_PER_Transaction, "can not mint this many"); require(msg.value >=_shouldPay(quantity), "Insufficient funds!"); _safeMint(msg.sender, quantity); } function _shouldPay(uint256 _quantity) private view returns(uint256) { uint256 shouldPay=price*_quantity; return shouldPay; } function isValid(bytes32[] memory merkleproof, bytes32 leaf) public view returns (bool) { return MerkleProof.verify(merkleproof, merkleRoot, leaf); } function tokenURI(uint256 tokenId) public view virtual override returns (string memory) { require( _exists(tokenId), "ERC721Metadata: URI query for nonexistent token" ); string memory baseURI = _baseURI(); return bytes(baseURI).length > 0 ? string( abi.encodePacked(baseURI, tokenId.toString(),uriSuffix) ) : ""; } function setBaseURI(string memory baseURI) public onlyOwner { baseTokenURI = baseURI; } function _baseURI() internal view virtual override returns (string memory) { return baseTokenURI; } function numberMinted(address owner) public view returns (uint256) { return _numberMinted(owner); } function getOwnershipData(uint256 tokenId) external view returns (TokenOwnership memory) { return ownershipOf(tokenId); } function withdraw() public onlyOwner nonReentrant { (bool os, ) = payable(owner()).call{value: address(this).balance}(""); require(os); } function setMAX_PER_Transaction(uint256 q) public onlyOwner { MAX_PER_Transaction = q; } function setMaxPerWallet(uint256 _newLimit) public onlyOwner { MAX_PER_Wallet = _newLimit; } function pause(bool _state) public onlyOwner { paused = _state; } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"approved","type":"address"},{"indexed":true,"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"operator","type":"address"},{"indexed":false,"internalType":"bool","name":"approved","type":"bool"}],"name":"ApprovalForAll","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"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"},{"inputs":[],"name":"MAX_PER_Transaction","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"MAX_PER_Wallet","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"approve","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"getApproved","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getMerkleRoot","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"getOwnershipData","outputs":[{"components":[{"internalType":"address","name":"addr","type":"address"},{"internalType":"uint64","name":"startTimestamp","type":"uint64"}],"internalType":"struct ERC721A.TokenOwnership","name":"","type":"tuple"}],"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":"bytes32[]","name":"merkleproof","type":"bytes32[]"},{"internalType":"bytes32","name":"leaf","type":"bytes32"}],"name":"isValid","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"merkleRoot","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"quantity","type":"uint256"}],"name":"mint","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"nextOwnerToExplicitlySet","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"numberMinted","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"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":[{"internalType":"bool","name":"_state","type":"bool"}],"name":"pause","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"paused","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"presaleIsActive","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"price","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"safeTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"bytes","name":"_data","type":"bytes"}],"name":"safeTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"bool","name":"approved","type":"bool"}],"name":"setApprovalForAll","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"baseURI","type":"string"}],"name":"setBaseURI","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"q","type":"uint256"}],"name":"setMAX_PER_Transaction","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_newLimit","type":"uint256"}],"name":"setMaxPerWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"m","type":"bytes32"}],"name":"setMerkleRoot","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"index","type":"uint256"}],"name":"tokenByIndex","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"uint256","name":"index","type":"uint256"}],"name":"tokenOfOwnerByIndex","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"tokenURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"transferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uriSuffix","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"withdraw","outputs":[],"stateMutability":"nonpayable","type":"function"}]
Contract Creation Code
60c06040526001805560006008556040518060400160405280600581526020017f2e6a736f6e000000000000000000000000000000000000000000000000000000815250600a90805190602001906200005a92919062000319565b506002600b556002600c55662386f26fc10000600d556001600e60006101000a81548160ff0219169083151502179055506000600e60016101000a81548160ff02191690831515021790555060405180602001604052806000815250600f9080519060200190620000cd92919062000319565b50348015620000db57600080fd5b506040518060400160405280600c81526020017f416e6420496620492044696500000000000000000000000000000000000000008152506040518060400160405280600481526020017f414949440000000000000000000000000000000000000000000000000000000081525060c86103e76200016d620001616200024d60201b60201c565b6200025560201b60201c565b60008111620001b3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620001aa9062000439565b60405180910390fd5b60008211620001f9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620001f09062000417565b60405180910390fd5b83600290805190602001906200021192919062000319565b5082600390805190602001906200022a92919062000319565b508160a0818152505080608081815250505050505060016009819055506200056f565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b82805462000327906200046c565b90600052602060002090601f0160209004810192826200034b576000855562000397565b82601f106200036657805160ff191683800117855562000397565b8280016001018555821562000397579182015b828111156200039657825182559160200191906001019062000379565b5b509050620003a69190620003aa565b5090565b5b80821115620003c5576000816000905550600101620003ab565b5090565b6000620003d86027836200045b565b9150620003e582620004d1565b604082019050919050565b6000620003ff602e836200045b565b91506200040c8262000520565b604082019050919050565b600060208201905081810360008301526200043281620003c9565b9050919050565b600060208201905081810360008301526200045481620003f0565b9050919050565b600082825260208201905092915050565b600060028204905060018216806200048557607f821691505b602082108114156200049c576200049b620004a2565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f455243373231413a206d61782062617463682073697a65206d7573742062652060008201527f6e6f6e7a65726f00000000000000000000000000000000000000000000000000602082015250565b7f455243373231413a20636f6c6c656374696f6e206d757374206861766520612060008201527f6e6f6e7a65726f20737570706c79000000000000000000000000000000000000602082015250565b60805160a051614e11620005a06000396000818161234d015281816123760152612bbc015260005050614e116000f3fe6080604052600436106102255760003560e01c80635c975abb11610123578063a0712d68116100ab578063d7224ba01161006f578063d7224ba01461080e578063dc33e68114610839578063e268e4d314610876578063e985e9c51461089f578063f2fde38b146108dc57610225565b8063a0712d6814610726578063a22cb46514610742578063b88d4fde1461076b578063b8a20ed014610794578063c87b56dd146107d157610225565b80637cb64759116100f25780637cb647591461063f5780638da5cb5b146106685780639231ab2a1461069357806395d89b41146106d0578063a035b1fe146106fb57610225565b80635c975abb146105835780636352211e146105ae57806370a08231146105eb578063715018a61461062857610225565b80632eb4a7ab116101b15780634959065711610175578063495906571461049c5780634f6ccce7146104c757806351d7ff93146105045780635503a0e81461052f57806355f804b31461055a57610225565b80632eb4a7ab146103c95780632f745c59146103f457806330f72cd4146104315780633ccfd60b1461045c57806342842e0e1461047357610225565b8063095ea7b3116101f8578063095ea7b3146102f857806317e04a711461032157806318160ddd1461034c57806323b872dd1461037757806325dc45ce146103a057610225565b806301ffc9a71461022a57806302329a291461026757806306fdde0314610290578063081812fc146102bb575b600080fd5b34801561023657600080fd5b50610251600480360381019061024c91906135cb565b610905565b60405161025e9190613cc7565b60405180910390f35b34801561027357600080fd5b5061028e60048036038101906102899190613571565b610947565b005b34801561029c57600080fd5b506102a56109e0565b6040516102b29190613cfd565b60405180910390f35b3480156102c757600080fd5b506102e260048036038101906102dd919061366e565b610a72565b6040516102ef9190613c60565b60405180910390f35b34801561030457600080fd5b5061031f600480360381019061031a91906134d5565b610af7565b005b34801561032d57600080fd5b50610336610c10565b604051610343919061409a565b60405180910390f35b34801561035857600080fd5b50610361610c16565b60405161036e919061409a565b60405180910390f35b34801561038357600080fd5b5061039e600480360381019061039991906133bf565b610c2b565b005b3480156103ac57600080fd5b506103c760048036038101906103c2919061366e565b610c3b565b005b3480156103d557600080fd5b506103de610cc1565b6040516103eb9190613ce2565b60405180910390f35b34801561040057600080fd5b5061041b600480360381019061041691906134d5565b610cc7565b604051610428919061409a565b60405180910390f35b34801561043d57600080fd5b50610446610ec5565b6040516104539190613cc7565b60405180910390f35b34801561046857600080fd5b50610471610ed8565b005b34801561047f57600080fd5b5061049a600480360381019061049591906133bf565b61102a565b005b3480156104a857600080fd5b506104b161104a565b6040516104be9190613ce2565b60405180910390f35b3480156104d357600080fd5b506104ee60048036038101906104e9919061366e565b611054565b6040516104fb919061409a565b60405180910390f35b34801561051057600080fd5b506105196110a7565b604051610526919061409a565b60405180910390f35b34801561053b57600080fd5b506105446110ad565b6040516105519190613cfd565b60405180910390f35b34801561056657600080fd5b50610581600480360381019061057c9190613625565b61113b565b005b34801561058f57600080fd5b506105986111d1565b6040516105a59190613cc7565b60405180910390f35b3480156105ba57600080fd5b506105d560048036038101906105d0919061366e565b6111e4565b6040516105e29190613c60565b60405180910390f35b3480156105f757600080fd5b50610612600480360381019061060d9190613352565b6111fa565b60405161061f919061409a565b60405180910390f35b34801561063457600080fd5b5061063d6112e3565b005b34801561064b57600080fd5b506106666004803603810190610661919061359e565b61136b565b005b34801561067457600080fd5b5061067d6113f1565b60405161068a9190613c60565b60405180910390f35b34801561069f57600080fd5b506106ba60048036038101906106b5919061366e565b61141a565b6040516106c7919061407f565b60405180910390f35b3480156106dc57600080fd5b506106e5611432565b6040516106f29190613cfd565b60405180910390f35b34801561070757600080fd5b506107106114c4565b60405161071d919061409a565b60405180910390f35b610740600480360381019061073b919061366e565b6114ca565b005b34801561074e57600080fd5b5061076960048036038101906107649190613495565b611666565b005b34801561077757600080fd5b50610792600480360381019061078d9190613412565b6117e7565b005b3480156107a057600080fd5b506107bb60048036038101906107b69190613515565b611843565b6040516107c89190613cc7565b60405180910390f35b3480156107dd57600080fd5b506107f860048036038101906107f3919061366e565b61185a565b6040516108059190613cfd565b60405180910390f35b34801561081a57600080fd5b50610823611904565b604051610830919061409a565b60405180910390f35b34801561084557600080fd5b50610860600480360381019061085b9190613352565b61190a565b60405161086d919061409a565b60405180910390f35b34801561088257600080fd5b5061089d6004803603810190610898919061366e565b61191c565b005b3480156108ab57600080fd5b506108c660048036038101906108c1919061337f565b6119a2565b6040516108d39190613cc7565b60405180910390f35b3480156108e857600080fd5b5061090360048036038101906108fe9190613352565b611a36565b005b6000632a55205a60e01b827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480610940575061093f82611b2e565b5b9050919050565b61094f611c78565b73ffffffffffffffffffffffffffffffffffffffff1661096d6113f1565b73ffffffffffffffffffffffffffffffffffffffff16146109c3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109ba90613e7f565b60405180910390fd5b80600e60006101000a81548160ff02191690831515021790555050565b6060600280546109ef90614474565b80601f0160208091040260200160405190810160405280929190818152602001828054610a1b90614474565b8015610a685780601f10610a3d57610100808354040283529160200191610a68565b820191906000526020600020905b815481529060010190602001808311610a4b57829003601f168201915b5050505050905090565b6000610a7d82611c80565b610abc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ab39061401f565b60405180910390fd5b6006600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b6000610b02826111e4565b90508073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610b73576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b6a90613eff565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16610b92611c78565b73ffffffffffffffffffffffffffffffffffffffff161480610bc15750610bc081610bbb611c78565b6119a2565b5b610c00576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bf790613ddf565b60405180910390fd5b610c0b838383611c8e565b505050565b600c5481565b600060018054610c269190614326565b905090565b610c36838383611d40565b505050565b610c43611c78565b73ffffffffffffffffffffffffffffffffffffffff16610c616113f1565b73ffffffffffffffffffffffffffffffffffffffff1614610cb7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cae90613e7f565b60405180910390fd5b80600b8190555050565b60105481565b6000610cd2836111fa565b8210610d13576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d0a90613d1f565b60405180910390fd5b6000610d1d610c16565b905060008060005b83811015610e83576000600460008381526020019081526020016000206040518060400160405290816000820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016000820160149054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815250509050600073ffffffffffffffffffffffffffffffffffffffff16816000015173ffffffffffffffffffffffffffffffffffffffff1614610e1757806000015192505b8773ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610e6f5786841415610e60578195505050505050610ebf565b8380610e6b906144d7565b9450505b508080610e7b906144d7565b915050610d25565b506040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610eb690613f9f565b60405180910390fd5b92915050565b600e60019054906101000a900460ff1681565b610ee0611c78565b73ffffffffffffffffffffffffffffffffffffffff16610efe6113f1565b73ffffffffffffffffffffffffffffffffffffffff1614610f54576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f4b90613e7f565b60405180910390fd5b60026009541415610f9a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f9190613fbf565b60405180910390fd5b60026009819055506000610fac6113f1565b73ffffffffffffffffffffffffffffffffffffffff1647604051610fcf90613c4b565b60006040518083038185875af1925050503d806000811461100c576040519150601f19603f3d011682016040523d82523d6000602084013e611011565b606091505b505090508061101f57600080fd5b506001600981905550565b611045838383604051806020016040528060008152506117e7565b505050565b6000601054905090565b600061105e610c16565b821061109f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161109690613d7f565b60405180910390fd5b819050919050565b600b5481565b600a80546110ba90614474565b80601f01602080910402602001604051908101604052809291908181526020018280546110e690614474565b80156111335780601f1061110857610100808354040283529160200191611133565b820191906000526020600020905b81548152906001019060200180831161111657829003601f168201915b505050505081565b611143611c78565b73ffffffffffffffffffffffffffffffffffffffff166111616113f1565b73ffffffffffffffffffffffffffffffffffffffff16146111b7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111ae90613e7f565b60405180910390fd5b80600f90805190602001906111cd929190613079565b5050565b600e60009054906101000a900460ff1681565b60006111ef826122f9565b600001519050919050565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561126b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161126290613dff565b60405180910390fd5b600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160009054906101000a90046fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff169050919050565b6112eb611c78565b73ffffffffffffffffffffffffffffffffffffffff166113096113f1565b73ffffffffffffffffffffffffffffffffffffffff161461135f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161135690613e7f565b60405180910390fd5b61136960006124fc565b565b611373611c78565b73ffffffffffffffffffffffffffffffffffffffff166113916113f1565b73ffffffffffffffffffffffffffffffffffffffff16146113e7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113de90613e7f565b60405180910390fd5b8060108190555050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6114226130ff565b61142b826122f9565b9050919050565b60606003805461144190614474565b80601f016020809104026020016040519081016040528092919081815260200182805461146d90614474565b80156114ba5780601f1061148f576101008083540402835291602001916114ba565b820191906000526020600020905b81548152906001019060200180831161149d57829003601f168201915b5050505050905090565b600d5481565b600e60009054906101000a900460ff161561151a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161151190613fff565b60405180910390fd5b6103e781611526610c16565b6115309190614211565b1115611571576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161156890613e1f565b60405180910390fd5b600c548161157e3361190a565b6115889190614211565b11156115c9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115c090613e3f565b60405180910390fd5b600b5481111561160e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161160590613f7f565b60405180910390fd5b611617816125c0565b341015611659576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116509061405f565b60405180910390fd5b61166333826125dc565b50565b61166e611c78565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156116dc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116d390613ebf565b60405180910390fd5b80600760006116e9611c78565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff16611796611c78565b73ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31836040516117db9190613cc7565b60405180910390a35050565b6117f2848484611d40565b6117fe848484846125fa565b61183d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161183490613f1f565b60405180910390fd5b50505050565b60006118528360105484612791565b905092915050565b606061186582611c80565b6118a4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161189b90613e9f565b60405180910390fd5b60006118ae6127a8565b905060008151116118ce57604051806020016040528060008152506118fc565b806118d88461283a565b600a6040516020016118ec93929190613c1a565b6040516020818303038152906040525b915050919050565b60085481565b60006119158261299b565b9050919050565b611924611c78565b73ffffffffffffffffffffffffffffffffffffffff166119426113f1565b73ffffffffffffffffffffffffffffffffffffffff1614611998576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161198f90613e7f565b60405180910390fd5b80600c8190555050565b6000600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b611a3e611c78565b73ffffffffffffffffffffffffffffffffffffffff16611a5c6113f1565b73ffffffffffffffffffffffffffffffffffffffff1614611ab2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611aa990613e7f565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611b22576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b1990613d3f565b60405180910390fd5b611b2b816124fc565b50565b60007f80ac58cd000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480611bf957507f5b5e139f000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b80611c6157507f780e9d63000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b80611c715750611c7082612a84565b5b9050919050565b600033905090565b600060015482109050919050565b826006600084815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550818373ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a4505050565b6000611d4b826122f9565b90506000816000015173ffffffffffffffffffffffffffffffffffffffff16611d72611c78565b73ffffffffffffffffffffffffffffffffffffffff161480611dce5750611d97611c78565b73ffffffffffffffffffffffffffffffffffffffff16611db684610a72565b73ffffffffffffffffffffffffffffffffffffffff16145b80611dea5750611de98260000151611de4611c78565b6119a2565b5b905080611e2c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e2390613edf565b60405180910390fd5b8473ffffffffffffffffffffffffffffffffffffffff16826000015173ffffffffffffffffffffffffffffffffffffffff1614611e9e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e9590613e5f565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415611f0e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f0590613d9f565b60405180910390fd5b611f1b8585856001612aee565b611f2b6000848460000151611c8e565b6001600560008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160008282829054906101000a90046fffffffffffffffffffffffffffffffff16611f9991906142f2565b92506101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff1602179055506001600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160008282829054906101000a90046fffffffffffffffffffffffffffffffff1661203d91906141cb565b92506101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff16021790555060405180604001604052808573ffffffffffffffffffffffffffffffffffffffff1681526020014267ffffffffffffffff168152506004600085815260200190815260200160002060008201518160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060208201518160000160146101000a81548167ffffffffffffffff021916908367ffffffffffffffff16021790555090505060006001846121439190614211565b9050600073ffffffffffffffffffffffffffffffffffffffff166004600083815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415612289576121b981611c80565b15612288576040518060400160405280846000015173ffffffffffffffffffffffffffffffffffffffff168152602001846020015167ffffffffffffffff168152506004600083815260200190815260200160002060008201518160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060208201518160000160146101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055509050505b5b838573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a46122f18686866001612af4565b505050505050565b6123016130ff565b61230a82611c80565b612349576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161234090613d5f565b60405180910390fd5b60007f000000000000000000000000000000000000000000000000000000000000000083106123ad5760017f0000000000000000000000000000000000000000000000000000000000000000846123a09190614326565b6123aa9190614211565b90505b60008390505b8181106124bb576000600460008381526020019081526020016000206040518060400160405290816000820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016000820160149054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815250509050600073ffffffffffffffffffffffffffffffffffffffff16816000015173ffffffffffffffffffffffffffffffffffffffff16146124a7578093505050506124f7565b5080806124b39061444a565b9150506123b3565b506040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124ee90613fdf565b60405180910390fd5b919050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b60008082600d546125d19190614298565b905080915050919050565b6125f6828260405180602001604052806000815250612afa565b5050565b600061261b8473ffffffffffffffffffffffffffffffffffffffff16612fda565b15612784578373ffffffffffffffffffffffffffffffffffffffff1663150b7a02612644611c78565b8786866040518563ffffffff1660e01b81526004016126669493929190613c7b565b602060405180830381600087803b15801561268057600080fd5b505af19250505080156126b157506040513d601f19601f820116820180604052508101906126ae91906135f8565b60015b612734573d80600081146126e1576040519150601f19603f3d011682016040523d82523d6000602084013e6126e6565b606091505b5060008151141561272c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161272390613f1f565b60405180910390fd5b805181602001fd5b63150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614915050612789565b600190505b949350505050565b60008261279e8584612fed565b1490509392505050565b6060600f80546127b790614474565b80601f01602080910402602001604051908101604052809291908181526020018280546127e390614474565b80156128305780601f1061280557610100808354040283529160200191612830565b820191906000526020600020905b81548152906001019060200180831161281357829003601f168201915b5050505050905090565b60606000821415612882576040518060400160405280600181526020017f30000000000000000000000000000000000000000000000000000000000000008152509050612996565b600082905060005b600082146128b457808061289d906144d7565b915050600a826128ad9190614267565b915061288a565b60008167ffffffffffffffff8111156128d0576128cf61460d565b5b6040519080825280601f01601f1916602001820160405280156129025781602001600182028036833780820191505090505b5090505b6000851461298f5760018261291b9190614326565b9150600a8561292a9190614520565b60306129369190614211565b60f81b81838151811061294c5761294b6145de565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600a856129889190614267565b9450612906565b8093505050505b919050565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612a0c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a0390613dbf565b60405180910390fd5b600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160109054906101000a90046fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff169050919050565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b50505050565b50505050565b60006001549050600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415612b71576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b6890613f5f565b60405180910390fd5b612b7a81611c80565b15612bba576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612bb190613f3f565b60405180910390fd5b7f0000000000000000000000000000000000000000000000000000000000000000831115612c1d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c149061403f565b60405180910390fd5b612c2a6000858386612aee565b6000600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206040518060400160405290816000820160009054906101000a90046fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff1681526020016000820160109054906101000a90046fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff168152505090506040518060400160405280858360000151612d2791906141cb565b6fffffffffffffffffffffffffffffffff168152602001858360200151612d4e91906141cb565b6fffffffffffffffffffffffffffffffff16815250600560008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008201518160000160006101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff16021790555060208201518160000160106101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff16021790555090505060405180604001604052808673ffffffffffffffffffffffffffffffffffffffff1681526020014267ffffffffffffffff168152506004600084815260200190815260200160002060008201518160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060208201518160000160146101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550905050600082905060005b85811015612fbd57818773ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4612f5d60008884886125fa565b612f9c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612f9390613f1f565b60405180910390fd5b8180612fa7906144d7565b9250508080612fb5906144d7565b915050612eec565b5080600181905550612fd26000878588612af4565b505050505050565b600080823b905060008111915050919050565b60008082905060005b8451811015613057576000858281518110613014576130136145de565b5b602002602001015190508083116130365761302f8382613062565b9250613043565b6130408184613062565b92505b50808061304f906144d7565b915050612ff6565b508091505092915050565b600082600052816020526040600020905092915050565b82805461308590614474565b90600052602060002090601f0160209004810192826130a757600085556130ee565b82601f106130c057805160ff19168380011785556130ee565b828001600101855582156130ee579182015b828111156130ed5782518255916020019190600101906130d2565b5b5090506130fb9190613139565b5090565b6040518060400160405280600073ffffffffffffffffffffffffffffffffffffffff168152602001600067ffffffffffffffff1681525090565b5b8082111561315257600081600090555060010161313a565b5090565b6000613169613164846140da565b6140b5565b9050808382526020820190508285602086028201111561318c5761318b614641565b5b60005b858110156131bc57816131a288826132a2565b84526020840193506020830192505060018101905061318f565b5050509392505050565b60006131d96131d484614106565b6140b5565b9050828152602081018484840111156131f5576131f4614646565b5b613200848285614408565b509392505050565b600061321b61321684614137565b6140b5565b90508281526020810184848401111561323757613236614646565b5b613242848285614408565b509392505050565b60008135905061325981614d68565b92915050565b600082601f8301126132745761327361463c565b5b8135613284848260208601613156565b91505092915050565b60008135905061329c81614d7f565b92915050565b6000813590506132b181614d96565b92915050565b6000813590506132c681614dad565b92915050565b6000815190506132db81614dad565b92915050565b600082601f8301126132f6576132f561463c565b5b81356133068482602086016131c6565b91505092915050565b600082601f8301126133245761332361463c565b5b8135613334848260208601613208565b91505092915050565b60008135905061334c81614dc4565b92915050565b60006020828403121561336857613367614650565b5b60006133768482850161324a565b91505092915050565b6000806040838503121561339657613395614650565b5b60006133a48582860161324a565b92505060206133b58582860161324a565b9150509250929050565b6000806000606084860312156133d8576133d7614650565b5b60006133e68682870161324a565b93505060206133f78682870161324a565b92505060406134088682870161333d565b9150509250925092565b6000806000806080858703121561342c5761342b614650565b5b600061343a8782880161324a565b945050602061344b8782880161324a565b935050604061345c8782880161333d565b925050606085013567ffffffffffffffff81111561347d5761347c61464b565b5b613489878288016132e1565b91505092959194509250565b600080604083850312156134ac576134ab614650565b5b60006134ba8582860161324a565b92505060206134cb8582860161328d565b9150509250929050565b600080604083850312156134ec576134eb614650565b5b60006134fa8582860161324a565b925050602061350b8582860161333d565b9150509250929050565b6000806040838503121561352c5761352b614650565b5b600083013567ffffffffffffffff81111561354a5761354961464b565b5b6135568582860161325f565b9250506020613567858286016132a2565b9150509250929050565b60006020828403121561358757613586614650565b5b60006135958482850161328d565b91505092915050565b6000602082840312156135b4576135b3614650565b5b60006135c2848285016132a2565b91505092915050565b6000602082840312156135e1576135e0614650565b5b60006135ef848285016132b7565b91505092915050565b60006020828403121561360e5761360d614650565b5b600061361c848285016132cc565b91505092915050565b60006020828403121561363b5761363a614650565b5b600082013567ffffffffffffffff8111156136595761365861464b565b5b6136658482850161330f565b91505092915050565b60006020828403121561368457613683614650565b5b60006136928482850161333d565b91505092915050565b6136a48161435a565b82525050565b6136b38161435a565b82525050565b6136c28161436c565b82525050565b6136d181614378565b82525050565b60006136e28261417d565b6136ec8185614193565b93506136fc818560208601614417565b61370581614655565b840191505092915050565b600061371b82614188565b61372581856141af565b9350613735818560208601614417565b61373e81614655565b840191505092915050565b600061375482614188565b61375e81856141c0565b935061376e818560208601614417565b80840191505092915050565b6000815461378781614474565b61379181866141c0565b945060018216600081146137ac57600181146137bd576137f0565b60ff198316865281860193506137f0565b6137c685614168565b60005b838110156137e8578154818901526001820191506020810190506137c9565b838801955050505b50505092915050565b60006138066022836141af565b915061381182614666565b604082019050919050565b60006138296026836141af565b9150613834826146b5565b604082019050919050565b600061384c602a836141af565b915061385782614704565b604082019050919050565b600061386f6023836141af565b915061387a82614753565b604082019050919050565b60006138926025836141af565b915061389d826147a2565b604082019050919050565b60006138b56031836141af565b91506138c0826147f1565b604082019050919050565b60006138d86039836141af565b91506138e382614840565b604082019050919050565b60006138fb602b836141af565b91506139068261488f565b604082019050919050565b600061391e6012836141af565b9150613929826148de565b602082019050919050565b60006139416019836141af565b915061394c82614907565b602082019050919050565b60006139646026836141af565b915061396f82614930565b604082019050919050565b60006139876020836141af565b91506139928261497f565b602082019050919050565b60006139aa602f836141af565b91506139b5826149a8565b604082019050919050565b60006139cd601a836141af565b91506139d8826149f7565b602082019050919050565b60006139f06032836141af565b91506139fb82614a20565b604082019050919050565b6000613a136022836141af565b9150613a1e82614a6f565b604082019050919050565b6000613a366000836141a4565b9150613a4182614abe565b600082019050919050565b6000613a596033836141af565b9150613a6482614ac1565b604082019050919050565b6000613a7c601d836141af565b9150613a8782614b10565b602082019050919050565b6000613a9f6021836141af565b9150613aaa82614b39565b604082019050919050565b6000613ac26016836141af565b9150613acd82614b88565b602082019050919050565b6000613ae5602e836141af565b9150613af082614bb1565b604082019050919050565b6000613b08601f836141af565b9150613b1382614c00565b602082019050919050565b6000613b2b602f836141af565b9150613b3682614c29565b604082019050919050565b6000613b4e600e836141af565b9150613b5982614c78565b602082019050919050565b6000613b71602d836141af565b9150613b7c82614ca1565b604082019050919050565b6000613b946022836141af565b9150613b9f82614cf0565b604082019050919050565b6000613bb76013836141af565b9150613bc282614d3f565b602082019050919050565b604082016000820151613be3600085018261369b565b506020820151613bf66020850182613c0b565b50505050565b613c05816143ea565b82525050565b613c14816143f4565b82525050565b6000613c268286613749565b9150613c328285613749565b9150613c3e828461377a565b9150819050949350505050565b6000613c5682613a29565b9150819050919050565b6000602082019050613c7560008301846136aa565b92915050565b6000608082019050613c9060008301876136aa565b613c9d60208301866136aa565b613caa6040830185613bfc565b8181036060830152613cbc81846136d7565b905095945050505050565b6000602082019050613cdc60008301846136b9565b92915050565b6000602082019050613cf760008301846136c8565b92915050565b60006020820190508181036000830152613d178184613710565b905092915050565b60006020820190508181036000830152613d38816137f9565b9050919050565b60006020820190508181036000830152613d588161381c565b9050919050565b60006020820190508181036000830152613d788161383f565b9050919050565b60006020820190508181036000830152613d9881613862565b9050919050565b60006020820190508181036000830152613db881613885565b9050919050565b60006020820190508181036000830152613dd8816138a8565b9050919050565b60006020820190508181036000830152613df8816138cb565b9050919050565b60006020820190508181036000830152613e18816138ee565b9050919050565b60006020820190508181036000830152613e3881613911565b9050919050565b60006020820190508181036000830152613e5881613934565b9050919050565b60006020820190508181036000830152613e7881613957565b9050919050565b60006020820190508181036000830152613e988161397a565b9050919050565b60006020820190508181036000830152613eb88161399d565b9050919050565b60006020820190508181036000830152613ed8816139c0565b9050919050565b60006020820190508181036000830152613ef8816139e3565b9050919050565b60006020820190508181036000830152613f1881613a06565b9050919050565b60006020820190508181036000830152613f3881613a4c565b9050919050565b60006020820190508181036000830152613f5881613a6f565b9050919050565b60006020820190508181036000830152613f7881613a92565b9050919050565b60006020820190508181036000830152613f9881613ab5565b9050919050565b60006020820190508181036000830152613fb881613ad8565b9050919050565b60006020820190508181036000830152613fd881613afb565b9050919050565b60006020820190508181036000830152613ff881613b1e565b9050919050565b6000602082019050818103600083015261401881613b41565b9050919050565b6000602082019050818103600083015261403881613b64565b9050919050565b6000602082019050818103600083015261405881613b87565b9050919050565b6000602082019050818103600083015261407881613baa565b9050919050565b60006040820190506140946000830184613bcd565b92915050565b60006020820190506140af6000830184613bfc565b92915050565b60006140bf6140d0565b90506140cb82826144a6565b919050565b6000604051905090565b600067ffffffffffffffff8211156140f5576140f461460d565b5b602082029050602081019050919050565b600067ffffffffffffffff8211156141215761412061460d565b5b61412a82614655565b9050602081019050919050565b600067ffffffffffffffff8211156141525761415161460d565b5b61415b82614655565b9050602081019050919050565b60008190508160005260206000209050919050565b600081519050919050565b600081519050919050565b600082825260208201905092915050565b600081905092915050565b600082825260208201905092915050565b600081905092915050565b60006141d6826143ae565b91506141e1836143ae565b9250826fffffffffffffffffffffffffffffffff0382111561420657614205614551565b5b828201905092915050565b600061421c826143ea565b9150614227836143ea565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111561425c5761425b614551565b5b828201905092915050565b6000614272826143ea565b915061427d836143ea565b92508261428d5761428c614580565b5b828204905092915050565b60006142a3826143ea565b91506142ae836143ea565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156142e7576142e6614551565b5b828202905092915050565b60006142fd826143ae565b9150614308836143ae565b92508282101561431b5761431a614551565b5b828203905092915050565b6000614331826143ea565b915061433c836143ea565b92508282101561434f5761434e614551565b5b828203905092915050565b6000614365826143ca565b9050919050565b60008115159050919050565b6000819050919050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b60006fffffffffffffffffffffffffffffffff82169050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600067ffffffffffffffff82169050919050565b82818337600083830152505050565b60005b8381101561443557808201518184015260208101905061441a565b83811115614444576000848401525b50505050565b6000614455826143ea565b9150600082141561446957614468614551565b5b600182039050919050565b6000600282049050600182168061448c57607f821691505b602082108114156144a05761449f6145af565b5b50919050565b6144af82614655565b810181811067ffffffffffffffff821117156144ce576144cd61460d565b5b80604052505050565b60006144e2826143ea565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82141561451557614514614551565b5b600182019050919050565b600061452b826143ea565b9150614536836143ea565b92508261454657614545614580565b5b828206905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f455243373231413a206f776e657220696e646578206f7574206f6620626f756e60008201527f6473000000000000000000000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f455243373231413a206f776e657220717565727920666f72206e6f6e6578697360008201527f74656e7420746f6b656e00000000000000000000000000000000000000000000602082015250565b7f455243373231413a20676c6f62616c20696e646578206f7574206f6620626f7560008201527f6e64730000000000000000000000000000000000000000000000000000000000602082015250565b7f455243373231413a207472616e7366657220746f20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b7f455243373231413a206e756d626572206d696e74656420717565727920666f7260008201527f20746865207a65726f2061646472657373000000000000000000000000000000602082015250565b7f455243373231413a20617070726f76652063616c6c6572206973206e6f74206f60008201527f776e6572206e6f7220617070726f76656420666f7220616c6c00000000000000602082015250565b7f455243373231413a2062616c616e636520717565727920666f7220746865207a60008201527f65726f2061646472657373000000000000000000000000000000000000000000602082015250565b7f72656163686564206d617820737570706c790000000000000000000000000000600082015250565b7f6c696d6974207065722077616c6c657420657863656564656400000000000000600082015250565b7f455243373231413a207472616e736665722066726f6d20696e636f727265637460008201527f206f776e65720000000000000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f4552433732314d657461646174613a2055524920717565727920666f72206e6f60008201527f6e6578697374656e7420746f6b656e0000000000000000000000000000000000602082015250565b7f455243373231413a20617070726f766520746f2063616c6c6572000000000000600082015250565b7f455243373231413a207472616e736665722063616c6c6572206973206e6f742060008201527f6f776e6572206e6f7220617070726f7665640000000000000000000000000000602082015250565b7f455243373231413a20617070726f76616c20746f2063757272656e74206f776e60008201527f6572000000000000000000000000000000000000000000000000000000000000602082015250565b50565b7f455243373231413a207472616e7366657220746f206e6f6e204552433732315260008201527f6563656976657220696d706c656d656e74657200000000000000000000000000602082015250565b7f455243373231413a20746f6b656e20616c7265616479206d696e746564000000600082015250565b7f455243373231413a206d696e7420746f20746865207a65726f2061646472657360008201527f7300000000000000000000000000000000000000000000000000000000000000602082015250565b7f63616e206e6f74206d696e742074686973206d616e7900000000000000000000600082015250565b7f455243373231413a20756e61626c6520746f2067657420746f6b656e206f662060008201527f6f776e657220627920696e646578000000000000000000000000000000000000602082015250565b7f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00600082015250565b7f455243373231413a20756e61626c6520746f2064657465726d696e652074686560008201527f206f776e6572206f6620746f6b656e0000000000000000000000000000000000602082015250565b7f6d696e7420697320706175736564000000000000000000000000000000000000600082015250565b7f455243373231413a20617070726f76656420717565727920666f72206e6f6e6560008201527f78697374656e7420746f6b656e00000000000000000000000000000000000000602082015250565b7f455243373231413a207175616e7469747920746f206d696e7420746f6f20686960008201527f6768000000000000000000000000000000000000000000000000000000000000602082015250565b7f496e73756666696369656e742066756e64732100000000000000000000000000600082015250565b614d718161435a565b8114614d7c57600080fd5b50565b614d888161436c565b8114614d9357600080fd5b50565b614d9f81614378565b8114614daa57600080fd5b50565b614db681614382565b8114614dc157600080fd5b50565b614dcd816143ea565b8114614dd857600080fd5b5056fea2646970667358221220f662afb82570d934558005f50892e8706bf3bba6f6fd1d3cf279b599143b84e864736f6c63430008070033
Deployed Bytecode
0x6080604052600436106102255760003560e01c80635c975abb11610123578063a0712d68116100ab578063d7224ba01161006f578063d7224ba01461080e578063dc33e68114610839578063e268e4d314610876578063e985e9c51461089f578063f2fde38b146108dc57610225565b8063a0712d6814610726578063a22cb46514610742578063b88d4fde1461076b578063b8a20ed014610794578063c87b56dd146107d157610225565b80637cb64759116100f25780637cb647591461063f5780638da5cb5b146106685780639231ab2a1461069357806395d89b41146106d0578063a035b1fe146106fb57610225565b80635c975abb146105835780636352211e146105ae57806370a08231146105eb578063715018a61461062857610225565b80632eb4a7ab116101b15780634959065711610175578063495906571461049c5780634f6ccce7146104c757806351d7ff93146105045780635503a0e81461052f57806355f804b31461055a57610225565b80632eb4a7ab146103c95780632f745c59146103f457806330f72cd4146104315780633ccfd60b1461045c57806342842e0e1461047357610225565b8063095ea7b3116101f8578063095ea7b3146102f857806317e04a711461032157806318160ddd1461034c57806323b872dd1461037757806325dc45ce146103a057610225565b806301ffc9a71461022a57806302329a291461026757806306fdde0314610290578063081812fc146102bb575b600080fd5b34801561023657600080fd5b50610251600480360381019061024c91906135cb565b610905565b60405161025e9190613cc7565b60405180910390f35b34801561027357600080fd5b5061028e60048036038101906102899190613571565b610947565b005b34801561029c57600080fd5b506102a56109e0565b6040516102b29190613cfd565b60405180910390f35b3480156102c757600080fd5b506102e260048036038101906102dd919061366e565b610a72565b6040516102ef9190613c60565b60405180910390f35b34801561030457600080fd5b5061031f600480360381019061031a91906134d5565b610af7565b005b34801561032d57600080fd5b50610336610c10565b604051610343919061409a565b60405180910390f35b34801561035857600080fd5b50610361610c16565b60405161036e919061409a565b60405180910390f35b34801561038357600080fd5b5061039e600480360381019061039991906133bf565b610c2b565b005b3480156103ac57600080fd5b506103c760048036038101906103c2919061366e565b610c3b565b005b3480156103d557600080fd5b506103de610cc1565b6040516103eb9190613ce2565b60405180910390f35b34801561040057600080fd5b5061041b600480360381019061041691906134d5565b610cc7565b604051610428919061409a565b60405180910390f35b34801561043d57600080fd5b50610446610ec5565b6040516104539190613cc7565b60405180910390f35b34801561046857600080fd5b50610471610ed8565b005b34801561047f57600080fd5b5061049a600480360381019061049591906133bf565b61102a565b005b3480156104a857600080fd5b506104b161104a565b6040516104be9190613ce2565b60405180910390f35b3480156104d357600080fd5b506104ee60048036038101906104e9919061366e565b611054565b6040516104fb919061409a565b60405180910390f35b34801561051057600080fd5b506105196110a7565b604051610526919061409a565b60405180910390f35b34801561053b57600080fd5b506105446110ad565b6040516105519190613cfd565b60405180910390f35b34801561056657600080fd5b50610581600480360381019061057c9190613625565b61113b565b005b34801561058f57600080fd5b506105986111d1565b6040516105a59190613cc7565b60405180910390f35b3480156105ba57600080fd5b506105d560048036038101906105d0919061366e565b6111e4565b6040516105e29190613c60565b60405180910390f35b3480156105f757600080fd5b50610612600480360381019061060d9190613352565b6111fa565b60405161061f919061409a565b60405180910390f35b34801561063457600080fd5b5061063d6112e3565b005b34801561064b57600080fd5b506106666004803603810190610661919061359e565b61136b565b005b34801561067457600080fd5b5061067d6113f1565b60405161068a9190613c60565b60405180910390f35b34801561069f57600080fd5b506106ba60048036038101906106b5919061366e565b61141a565b6040516106c7919061407f565b60405180910390f35b3480156106dc57600080fd5b506106e5611432565b6040516106f29190613cfd565b60405180910390f35b34801561070757600080fd5b506107106114c4565b60405161071d919061409a565b60405180910390f35b610740600480360381019061073b919061366e565b6114ca565b005b34801561074e57600080fd5b5061076960048036038101906107649190613495565b611666565b005b34801561077757600080fd5b50610792600480360381019061078d9190613412565b6117e7565b005b3480156107a057600080fd5b506107bb60048036038101906107b69190613515565b611843565b6040516107c89190613cc7565b60405180910390f35b3480156107dd57600080fd5b506107f860048036038101906107f3919061366e565b61185a565b6040516108059190613cfd565b60405180910390f35b34801561081a57600080fd5b50610823611904565b604051610830919061409a565b60405180910390f35b34801561084557600080fd5b50610860600480360381019061085b9190613352565b61190a565b60405161086d919061409a565b60405180910390f35b34801561088257600080fd5b5061089d6004803603810190610898919061366e565b61191c565b005b3480156108ab57600080fd5b506108c660048036038101906108c1919061337f565b6119a2565b6040516108d39190613cc7565b60405180910390f35b3480156108e857600080fd5b5061090360048036038101906108fe9190613352565b611a36565b005b6000632a55205a60e01b827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480610940575061093f82611b2e565b5b9050919050565b61094f611c78565b73ffffffffffffffffffffffffffffffffffffffff1661096d6113f1565b73ffffffffffffffffffffffffffffffffffffffff16146109c3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109ba90613e7f565b60405180910390fd5b80600e60006101000a81548160ff02191690831515021790555050565b6060600280546109ef90614474565b80601f0160208091040260200160405190810160405280929190818152602001828054610a1b90614474565b8015610a685780601f10610a3d57610100808354040283529160200191610a68565b820191906000526020600020905b815481529060010190602001808311610a4b57829003601f168201915b5050505050905090565b6000610a7d82611c80565b610abc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ab39061401f565b60405180910390fd5b6006600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b6000610b02826111e4565b90508073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610b73576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b6a90613eff565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16610b92611c78565b73ffffffffffffffffffffffffffffffffffffffff161480610bc15750610bc081610bbb611c78565b6119a2565b5b610c00576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bf790613ddf565b60405180910390fd5b610c0b838383611c8e565b505050565b600c5481565b600060018054610c269190614326565b905090565b610c36838383611d40565b505050565b610c43611c78565b73ffffffffffffffffffffffffffffffffffffffff16610c616113f1565b73ffffffffffffffffffffffffffffffffffffffff1614610cb7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cae90613e7f565b60405180910390fd5b80600b8190555050565b60105481565b6000610cd2836111fa565b8210610d13576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d0a90613d1f565b60405180910390fd5b6000610d1d610c16565b905060008060005b83811015610e83576000600460008381526020019081526020016000206040518060400160405290816000820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016000820160149054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815250509050600073ffffffffffffffffffffffffffffffffffffffff16816000015173ffffffffffffffffffffffffffffffffffffffff1614610e1757806000015192505b8773ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610e6f5786841415610e60578195505050505050610ebf565b8380610e6b906144d7565b9450505b508080610e7b906144d7565b915050610d25565b506040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610eb690613f9f565b60405180910390fd5b92915050565b600e60019054906101000a900460ff1681565b610ee0611c78565b73ffffffffffffffffffffffffffffffffffffffff16610efe6113f1565b73ffffffffffffffffffffffffffffffffffffffff1614610f54576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f4b90613e7f565b60405180910390fd5b60026009541415610f9a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f9190613fbf565b60405180910390fd5b60026009819055506000610fac6113f1565b73ffffffffffffffffffffffffffffffffffffffff1647604051610fcf90613c4b565b60006040518083038185875af1925050503d806000811461100c576040519150601f19603f3d011682016040523d82523d6000602084013e611011565b606091505b505090508061101f57600080fd5b506001600981905550565b611045838383604051806020016040528060008152506117e7565b505050565b6000601054905090565b600061105e610c16565b821061109f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161109690613d7f565b60405180910390fd5b819050919050565b600b5481565b600a80546110ba90614474565b80601f01602080910402602001604051908101604052809291908181526020018280546110e690614474565b80156111335780601f1061110857610100808354040283529160200191611133565b820191906000526020600020905b81548152906001019060200180831161111657829003601f168201915b505050505081565b611143611c78565b73ffffffffffffffffffffffffffffffffffffffff166111616113f1565b73ffffffffffffffffffffffffffffffffffffffff16146111b7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111ae90613e7f565b60405180910390fd5b80600f90805190602001906111cd929190613079565b5050565b600e60009054906101000a900460ff1681565b60006111ef826122f9565b600001519050919050565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561126b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161126290613dff565b60405180910390fd5b600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160009054906101000a90046fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff169050919050565b6112eb611c78565b73ffffffffffffffffffffffffffffffffffffffff166113096113f1565b73ffffffffffffffffffffffffffffffffffffffff161461135f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161135690613e7f565b60405180910390fd5b61136960006124fc565b565b611373611c78565b73ffffffffffffffffffffffffffffffffffffffff166113916113f1565b73ffffffffffffffffffffffffffffffffffffffff16146113e7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113de90613e7f565b60405180910390fd5b8060108190555050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6114226130ff565b61142b826122f9565b9050919050565b60606003805461144190614474565b80601f016020809104026020016040519081016040528092919081815260200182805461146d90614474565b80156114ba5780601f1061148f576101008083540402835291602001916114ba565b820191906000526020600020905b81548152906001019060200180831161149d57829003601f168201915b5050505050905090565b600d5481565b600e60009054906101000a900460ff161561151a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161151190613fff565b60405180910390fd5b6103e781611526610c16565b6115309190614211565b1115611571576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161156890613e1f565b60405180910390fd5b600c548161157e3361190a565b6115889190614211565b11156115c9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115c090613e3f565b60405180910390fd5b600b5481111561160e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161160590613f7f565b60405180910390fd5b611617816125c0565b341015611659576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116509061405f565b60405180910390fd5b61166333826125dc565b50565b61166e611c78565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156116dc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116d390613ebf565b60405180910390fd5b80600760006116e9611c78565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff16611796611c78565b73ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31836040516117db9190613cc7565b60405180910390a35050565b6117f2848484611d40565b6117fe848484846125fa565b61183d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161183490613f1f565b60405180910390fd5b50505050565b60006118528360105484612791565b905092915050565b606061186582611c80565b6118a4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161189b90613e9f565b60405180910390fd5b60006118ae6127a8565b905060008151116118ce57604051806020016040528060008152506118fc565b806118d88461283a565b600a6040516020016118ec93929190613c1a565b6040516020818303038152906040525b915050919050565b60085481565b60006119158261299b565b9050919050565b611924611c78565b73ffffffffffffffffffffffffffffffffffffffff166119426113f1565b73ffffffffffffffffffffffffffffffffffffffff1614611998576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161198f90613e7f565b60405180910390fd5b80600c8190555050565b6000600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b611a3e611c78565b73ffffffffffffffffffffffffffffffffffffffff16611a5c6113f1565b73ffffffffffffffffffffffffffffffffffffffff1614611ab2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611aa990613e7f565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611b22576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b1990613d3f565b60405180910390fd5b611b2b816124fc565b50565b60007f80ac58cd000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480611bf957507f5b5e139f000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b80611c6157507f780e9d63000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b80611c715750611c7082612a84565b5b9050919050565b600033905090565b600060015482109050919050565b826006600084815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550818373ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a4505050565b6000611d4b826122f9565b90506000816000015173ffffffffffffffffffffffffffffffffffffffff16611d72611c78565b73ffffffffffffffffffffffffffffffffffffffff161480611dce5750611d97611c78565b73ffffffffffffffffffffffffffffffffffffffff16611db684610a72565b73ffffffffffffffffffffffffffffffffffffffff16145b80611dea5750611de98260000151611de4611c78565b6119a2565b5b905080611e2c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e2390613edf565b60405180910390fd5b8473ffffffffffffffffffffffffffffffffffffffff16826000015173ffffffffffffffffffffffffffffffffffffffff1614611e9e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e9590613e5f565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415611f0e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f0590613d9f565b60405180910390fd5b611f1b8585856001612aee565b611f2b6000848460000151611c8e565b6001600560008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160008282829054906101000a90046fffffffffffffffffffffffffffffffff16611f9991906142f2565b92506101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff1602179055506001600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160008282829054906101000a90046fffffffffffffffffffffffffffffffff1661203d91906141cb565b92506101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff16021790555060405180604001604052808573ffffffffffffffffffffffffffffffffffffffff1681526020014267ffffffffffffffff168152506004600085815260200190815260200160002060008201518160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060208201518160000160146101000a81548167ffffffffffffffff021916908367ffffffffffffffff16021790555090505060006001846121439190614211565b9050600073ffffffffffffffffffffffffffffffffffffffff166004600083815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415612289576121b981611c80565b15612288576040518060400160405280846000015173ffffffffffffffffffffffffffffffffffffffff168152602001846020015167ffffffffffffffff168152506004600083815260200190815260200160002060008201518160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060208201518160000160146101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055509050505b5b838573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a46122f18686866001612af4565b505050505050565b6123016130ff565b61230a82611c80565b612349576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161234090613d5f565b60405180910390fd5b60007f00000000000000000000000000000000000000000000000000000000000000c883106123ad5760017f00000000000000000000000000000000000000000000000000000000000000c8846123a09190614326565b6123aa9190614211565b90505b60008390505b8181106124bb576000600460008381526020019081526020016000206040518060400160405290816000820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016000820160149054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815250509050600073ffffffffffffffffffffffffffffffffffffffff16816000015173ffffffffffffffffffffffffffffffffffffffff16146124a7578093505050506124f7565b5080806124b39061444a565b9150506123b3565b506040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124ee90613fdf565b60405180910390fd5b919050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b60008082600d546125d19190614298565b905080915050919050565b6125f6828260405180602001604052806000815250612afa565b5050565b600061261b8473ffffffffffffffffffffffffffffffffffffffff16612fda565b15612784578373ffffffffffffffffffffffffffffffffffffffff1663150b7a02612644611c78565b8786866040518563ffffffff1660e01b81526004016126669493929190613c7b565b602060405180830381600087803b15801561268057600080fd5b505af19250505080156126b157506040513d601f19601f820116820180604052508101906126ae91906135f8565b60015b612734573d80600081146126e1576040519150601f19603f3d011682016040523d82523d6000602084013e6126e6565b606091505b5060008151141561272c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161272390613f1f565b60405180910390fd5b805181602001fd5b63150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614915050612789565b600190505b949350505050565b60008261279e8584612fed565b1490509392505050565b6060600f80546127b790614474565b80601f01602080910402602001604051908101604052809291908181526020018280546127e390614474565b80156128305780601f1061280557610100808354040283529160200191612830565b820191906000526020600020905b81548152906001019060200180831161281357829003601f168201915b5050505050905090565b60606000821415612882576040518060400160405280600181526020017f30000000000000000000000000000000000000000000000000000000000000008152509050612996565b600082905060005b600082146128b457808061289d906144d7565b915050600a826128ad9190614267565b915061288a565b60008167ffffffffffffffff8111156128d0576128cf61460d565b5b6040519080825280601f01601f1916602001820160405280156129025781602001600182028036833780820191505090505b5090505b6000851461298f5760018261291b9190614326565b9150600a8561292a9190614520565b60306129369190614211565b60f81b81838151811061294c5761294b6145de565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600a856129889190614267565b9450612906565b8093505050505b919050565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612a0c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a0390613dbf565b60405180910390fd5b600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160109054906101000a90046fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff169050919050565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b50505050565b50505050565b60006001549050600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415612b71576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b6890613f5f565b60405180910390fd5b612b7a81611c80565b15612bba576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612bb190613f3f565b60405180910390fd5b7f00000000000000000000000000000000000000000000000000000000000000c8831115612c1d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c149061403f565b60405180910390fd5b612c2a6000858386612aee565b6000600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206040518060400160405290816000820160009054906101000a90046fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff1681526020016000820160109054906101000a90046fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff168152505090506040518060400160405280858360000151612d2791906141cb565b6fffffffffffffffffffffffffffffffff168152602001858360200151612d4e91906141cb565b6fffffffffffffffffffffffffffffffff16815250600560008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008201518160000160006101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff16021790555060208201518160000160106101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff16021790555090505060405180604001604052808673ffffffffffffffffffffffffffffffffffffffff1681526020014267ffffffffffffffff168152506004600084815260200190815260200160002060008201518160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060208201518160000160146101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550905050600082905060005b85811015612fbd57818773ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4612f5d60008884886125fa565b612f9c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612f9390613f1f565b60405180910390fd5b8180612fa7906144d7565b9250508080612fb5906144d7565b915050612eec565b5080600181905550612fd26000878588612af4565b505050505050565b600080823b905060008111915050919050565b60008082905060005b8451811015613057576000858281518110613014576130136145de565b5b602002602001015190508083116130365761302f8382613062565b9250613043565b6130408184613062565b92505b50808061304f906144d7565b915050612ff6565b508091505092915050565b600082600052816020526040600020905092915050565b82805461308590614474565b90600052602060002090601f0160209004810192826130a757600085556130ee565b82601f106130c057805160ff19168380011785556130ee565b828001600101855582156130ee579182015b828111156130ed5782518255916020019190600101906130d2565b5b5090506130fb9190613139565b5090565b6040518060400160405280600073ffffffffffffffffffffffffffffffffffffffff168152602001600067ffffffffffffffff1681525090565b5b8082111561315257600081600090555060010161313a565b5090565b6000613169613164846140da565b6140b5565b9050808382526020820190508285602086028201111561318c5761318b614641565b5b60005b858110156131bc57816131a288826132a2565b84526020840193506020830192505060018101905061318f565b5050509392505050565b60006131d96131d484614106565b6140b5565b9050828152602081018484840111156131f5576131f4614646565b5b613200848285614408565b509392505050565b600061321b61321684614137565b6140b5565b90508281526020810184848401111561323757613236614646565b5b613242848285614408565b509392505050565b60008135905061325981614d68565b92915050565b600082601f8301126132745761327361463c565b5b8135613284848260208601613156565b91505092915050565b60008135905061329c81614d7f565b92915050565b6000813590506132b181614d96565b92915050565b6000813590506132c681614dad565b92915050565b6000815190506132db81614dad565b92915050565b600082601f8301126132f6576132f561463c565b5b81356133068482602086016131c6565b91505092915050565b600082601f8301126133245761332361463c565b5b8135613334848260208601613208565b91505092915050565b60008135905061334c81614dc4565b92915050565b60006020828403121561336857613367614650565b5b60006133768482850161324a565b91505092915050565b6000806040838503121561339657613395614650565b5b60006133a48582860161324a565b92505060206133b58582860161324a565b9150509250929050565b6000806000606084860312156133d8576133d7614650565b5b60006133e68682870161324a565b93505060206133f78682870161324a565b92505060406134088682870161333d565b9150509250925092565b6000806000806080858703121561342c5761342b614650565b5b600061343a8782880161324a565b945050602061344b8782880161324a565b935050604061345c8782880161333d565b925050606085013567ffffffffffffffff81111561347d5761347c61464b565b5b613489878288016132e1565b91505092959194509250565b600080604083850312156134ac576134ab614650565b5b60006134ba8582860161324a565b92505060206134cb8582860161328d565b9150509250929050565b600080604083850312156134ec576134eb614650565b5b60006134fa8582860161324a565b925050602061350b8582860161333d565b9150509250929050565b6000806040838503121561352c5761352b614650565b5b600083013567ffffffffffffffff81111561354a5761354961464b565b5b6135568582860161325f565b9250506020613567858286016132a2565b9150509250929050565b60006020828403121561358757613586614650565b5b60006135958482850161328d565b91505092915050565b6000602082840312156135b4576135b3614650565b5b60006135c2848285016132a2565b91505092915050565b6000602082840312156135e1576135e0614650565b5b60006135ef848285016132b7565b91505092915050565b60006020828403121561360e5761360d614650565b5b600061361c848285016132cc565b91505092915050565b60006020828403121561363b5761363a614650565b5b600082013567ffffffffffffffff8111156136595761365861464b565b5b6136658482850161330f565b91505092915050565b60006020828403121561368457613683614650565b5b60006136928482850161333d565b91505092915050565b6136a48161435a565b82525050565b6136b38161435a565b82525050565b6136c28161436c565b82525050565b6136d181614378565b82525050565b60006136e28261417d565b6136ec8185614193565b93506136fc818560208601614417565b61370581614655565b840191505092915050565b600061371b82614188565b61372581856141af565b9350613735818560208601614417565b61373e81614655565b840191505092915050565b600061375482614188565b61375e81856141c0565b935061376e818560208601614417565b80840191505092915050565b6000815461378781614474565b61379181866141c0565b945060018216600081146137ac57600181146137bd576137f0565b60ff198316865281860193506137f0565b6137c685614168565b60005b838110156137e8578154818901526001820191506020810190506137c9565b838801955050505b50505092915050565b60006138066022836141af565b915061381182614666565b604082019050919050565b60006138296026836141af565b9150613834826146b5565b604082019050919050565b600061384c602a836141af565b915061385782614704565b604082019050919050565b600061386f6023836141af565b915061387a82614753565b604082019050919050565b60006138926025836141af565b915061389d826147a2565b604082019050919050565b60006138b56031836141af565b91506138c0826147f1565b604082019050919050565b60006138d86039836141af565b91506138e382614840565b604082019050919050565b60006138fb602b836141af565b91506139068261488f565b604082019050919050565b600061391e6012836141af565b9150613929826148de565b602082019050919050565b60006139416019836141af565b915061394c82614907565b602082019050919050565b60006139646026836141af565b915061396f82614930565b604082019050919050565b60006139876020836141af565b91506139928261497f565b602082019050919050565b60006139aa602f836141af565b91506139b5826149a8565b604082019050919050565b60006139cd601a836141af565b91506139d8826149f7565b602082019050919050565b60006139f06032836141af565b91506139fb82614a20565b604082019050919050565b6000613a136022836141af565b9150613a1e82614a6f565b604082019050919050565b6000613a366000836141a4565b9150613a4182614abe565b600082019050919050565b6000613a596033836141af565b9150613a6482614ac1565b604082019050919050565b6000613a7c601d836141af565b9150613a8782614b10565b602082019050919050565b6000613a9f6021836141af565b9150613aaa82614b39565b604082019050919050565b6000613ac26016836141af565b9150613acd82614b88565b602082019050919050565b6000613ae5602e836141af565b9150613af082614bb1565b604082019050919050565b6000613b08601f836141af565b9150613b1382614c00565b602082019050919050565b6000613b2b602f836141af565b9150613b3682614c29565b604082019050919050565b6000613b4e600e836141af565b9150613b5982614c78565b602082019050919050565b6000613b71602d836141af565b9150613b7c82614ca1565b604082019050919050565b6000613b946022836141af565b9150613b9f82614cf0565b604082019050919050565b6000613bb76013836141af565b9150613bc282614d3f565b602082019050919050565b604082016000820151613be3600085018261369b565b506020820151613bf66020850182613c0b565b50505050565b613c05816143ea565b82525050565b613c14816143f4565b82525050565b6000613c268286613749565b9150613c328285613749565b9150613c3e828461377a565b9150819050949350505050565b6000613c5682613a29565b9150819050919050565b6000602082019050613c7560008301846136aa565b92915050565b6000608082019050613c9060008301876136aa565b613c9d60208301866136aa565b613caa6040830185613bfc565b8181036060830152613cbc81846136d7565b905095945050505050565b6000602082019050613cdc60008301846136b9565b92915050565b6000602082019050613cf760008301846136c8565b92915050565b60006020820190508181036000830152613d178184613710565b905092915050565b60006020820190508181036000830152613d38816137f9565b9050919050565b60006020820190508181036000830152613d588161381c565b9050919050565b60006020820190508181036000830152613d788161383f565b9050919050565b60006020820190508181036000830152613d9881613862565b9050919050565b60006020820190508181036000830152613db881613885565b9050919050565b60006020820190508181036000830152613dd8816138a8565b9050919050565b60006020820190508181036000830152613df8816138cb565b9050919050565b60006020820190508181036000830152613e18816138ee565b9050919050565b60006020820190508181036000830152613e3881613911565b9050919050565b60006020820190508181036000830152613e5881613934565b9050919050565b60006020820190508181036000830152613e7881613957565b9050919050565b60006020820190508181036000830152613e988161397a565b9050919050565b60006020820190508181036000830152613eb88161399d565b9050919050565b60006020820190508181036000830152613ed8816139c0565b9050919050565b60006020820190508181036000830152613ef8816139e3565b9050919050565b60006020820190508181036000830152613f1881613a06565b9050919050565b60006020820190508181036000830152613f3881613a4c565b9050919050565b60006020820190508181036000830152613f5881613a6f565b9050919050565b60006020820190508181036000830152613f7881613a92565b9050919050565b60006020820190508181036000830152613f9881613ab5565b9050919050565b60006020820190508181036000830152613fb881613ad8565b9050919050565b60006020820190508181036000830152613fd881613afb565b9050919050565b60006020820190508181036000830152613ff881613b1e565b9050919050565b6000602082019050818103600083015261401881613b41565b9050919050565b6000602082019050818103600083015261403881613b64565b9050919050565b6000602082019050818103600083015261405881613b87565b9050919050565b6000602082019050818103600083015261407881613baa565b9050919050565b60006040820190506140946000830184613bcd565b92915050565b60006020820190506140af6000830184613bfc565b92915050565b60006140bf6140d0565b90506140cb82826144a6565b919050565b6000604051905090565b600067ffffffffffffffff8211156140f5576140f461460d565b5b602082029050602081019050919050565b600067ffffffffffffffff8211156141215761412061460d565b5b61412a82614655565b9050602081019050919050565b600067ffffffffffffffff8211156141525761415161460d565b5b61415b82614655565b9050602081019050919050565b60008190508160005260206000209050919050565b600081519050919050565b600081519050919050565b600082825260208201905092915050565b600081905092915050565b600082825260208201905092915050565b600081905092915050565b60006141d6826143ae565b91506141e1836143ae565b9250826fffffffffffffffffffffffffffffffff0382111561420657614205614551565b5b828201905092915050565b600061421c826143ea565b9150614227836143ea565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111561425c5761425b614551565b5b828201905092915050565b6000614272826143ea565b915061427d836143ea565b92508261428d5761428c614580565b5b828204905092915050565b60006142a3826143ea565b91506142ae836143ea565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156142e7576142e6614551565b5b828202905092915050565b60006142fd826143ae565b9150614308836143ae565b92508282101561431b5761431a614551565b5b828203905092915050565b6000614331826143ea565b915061433c836143ea565b92508282101561434f5761434e614551565b5b828203905092915050565b6000614365826143ca565b9050919050565b60008115159050919050565b6000819050919050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b60006fffffffffffffffffffffffffffffffff82169050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600067ffffffffffffffff82169050919050565b82818337600083830152505050565b60005b8381101561443557808201518184015260208101905061441a565b83811115614444576000848401525b50505050565b6000614455826143ea565b9150600082141561446957614468614551565b5b600182039050919050565b6000600282049050600182168061448c57607f821691505b602082108114156144a05761449f6145af565b5b50919050565b6144af82614655565b810181811067ffffffffffffffff821117156144ce576144cd61460d565b5b80604052505050565b60006144e2826143ea565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82141561451557614514614551565b5b600182019050919050565b600061452b826143ea565b9150614536836143ea565b92508261454657614545614580565b5b828206905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f455243373231413a206f776e657220696e646578206f7574206f6620626f756e60008201527f6473000000000000000000000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f455243373231413a206f776e657220717565727920666f72206e6f6e6578697360008201527f74656e7420746f6b656e00000000000000000000000000000000000000000000602082015250565b7f455243373231413a20676c6f62616c20696e646578206f7574206f6620626f7560008201527f6e64730000000000000000000000000000000000000000000000000000000000602082015250565b7f455243373231413a207472616e7366657220746f20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b7f455243373231413a206e756d626572206d696e74656420717565727920666f7260008201527f20746865207a65726f2061646472657373000000000000000000000000000000602082015250565b7f455243373231413a20617070726f76652063616c6c6572206973206e6f74206f60008201527f776e6572206e6f7220617070726f76656420666f7220616c6c00000000000000602082015250565b7f455243373231413a2062616c616e636520717565727920666f7220746865207a60008201527f65726f2061646472657373000000000000000000000000000000000000000000602082015250565b7f72656163686564206d617820737570706c790000000000000000000000000000600082015250565b7f6c696d6974207065722077616c6c657420657863656564656400000000000000600082015250565b7f455243373231413a207472616e736665722066726f6d20696e636f727265637460008201527f206f776e65720000000000000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f4552433732314d657461646174613a2055524920717565727920666f72206e6f60008201527f6e6578697374656e7420746f6b656e0000000000000000000000000000000000602082015250565b7f455243373231413a20617070726f766520746f2063616c6c6572000000000000600082015250565b7f455243373231413a207472616e736665722063616c6c6572206973206e6f742060008201527f6f776e6572206e6f7220617070726f7665640000000000000000000000000000602082015250565b7f455243373231413a20617070726f76616c20746f2063757272656e74206f776e60008201527f6572000000000000000000000000000000000000000000000000000000000000602082015250565b50565b7f455243373231413a207472616e7366657220746f206e6f6e204552433732315260008201527f6563656976657220696d706c656d656e74657200000000000000000000000000602082015250565b7f455243373231413a20746f6b656e20616c7265616479206d696e746564000000600082015250565b7f455243373231413a206d696e7420746f20746865207a65726f2061646472657360008201527f7300000000000000000000000000000000000000000000000000000000000000602082015250565b7f63616e206e6f74206d696e742074686973206d616e7900000000000000000000600082015250565b7f455243373231413a20756e61626c6520746f2067657420746f6b656e206f662060008201527f6f776e657220627920696e646578000000000000000000000000000000000000602082015250565b7f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00600082015250565b7f455243373231413a20756e61626c6520746f2064657465726d696e652074686560008201527f206f776e6572206f6620746f6b656e0000000000000000000000000000000000602082015250565b7f6d696e7420697320706175736564000000000000000000000000000000000000600082015250565b7f455243373231413a20617070726f76656420717565727920666f72206e6f6e6560008201527f78697374656e7420746f6b656e00000000000000000000000000000000000000602082015250565b7f455243373231413a207175616e7469747920746f206d696e7420746f6f20686960008201527f6768000000000000000000000000000000000000000000000000000000000000602082015250565b7f496e73756666696369656e742066756e64732100000000000000000000000000600082015250565b614d718161435a565b8114614d7c57600080fd5b50565b614d888161436c565b8114614d9357600080fd5b50565b614d9f81614378565b8114614daa57600080fd5b50565b614db681614382565b8114614dc157600080fd5b50565b614dcd816143ea565b8114614dd857600080fd5b5056fea2646970667358221220f662afb82570d934558005f50892e8706bf3bba6f6fd1d3cf279b599143b84e864736f6c63430008070033
Deployed Bytecode Sourcemap
30480:3906:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;31386:237;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;34294:79;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;22052:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23539:292;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23118:413;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;30750:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19040:104;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;24380:162;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;34059:102;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;31153:25;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19388:864;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;31064:35;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;33882:160;;;;;;;;;;;;;:::i;:::-;;24550:177;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;31723:91;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19152:228;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;30652:38;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;30610:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;33356:101;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;31032:25;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21920:124;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20690:258;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10686:103;;;;;;;;;;;;;:::i;:::-;;31631:84;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;10463:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;33707:167;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22160:104;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;30817:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;31827:543;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;23839:311;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;24735:355;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;32569:195;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;32772:572;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;28250:43;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;33586:113;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;34173:106;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;24158:214;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10797:238;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;31386:237;31508:4;31565:10;31550:25;;:11;:25;;;;:65;;;;31579:36;31603:11;31579:23;:36::i;:::-;31550:65;31530:85;;31386:237;;;:::o;34294:79::-;10609:12;:10;:12::i;:::-;10598:23;;:7;:5;:7::i;:::-;:23;;;10590:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;34359:6:::1;34350;;:15;;;;;;;;;;;;;;;;;;34294:79:::0;:::o;22052:100::-;22106:13;22139:5;22132:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22052:100;:::o;23539:292::-;23643:7;23690:16;23698:7;23690;:16::i;:::-;23668:111;;;;;;;;;;;;:::i;:::-;;;;;;;;;23799:15;:24;23815:7;23799:24;;;;;;;;;;;;;;;;;;;;;23792:31;;23539:292;;;:::o;23118:413::-;23191:13;23207:24;23223:7;23207:15;:24::i;:::-;23191:40;;23256:5;23250:11;;:2;:11;;;;23242:58;;;;;;;;;;;;:::i;:::-;;;;;;;;;23351:5;23335:21;;:12;:10;:12::i;:::-;:21;;;:62;;;;23360:37;23377:5;23384:12;:10;:12::i;:::-;23360:16;:37::i;:::-;23335:62;23313:169;;;;;;;;;;;;:::i;:::-;;;;;;;;;23495:28;23504:2;23508:7;23517:5;23495:8;:28::i;:::-;23180:351;23118:413;;:::o;30750:33::-;;;;:::o;19040:104::-;19093:7;19135:1;19120:12;;:16;;;;:::i;:::-;19113:23;;19040:104;:::o;24380:162::-;24506:28;24516:4;24522:2;24526:7;24506:9;:28::i;:::-;24380:162;;;:::o;34059:102::-;10609:12;:10;:12::i;:::-;10598:23;;:7;:5;:7::i;:::-;:23;;;10590:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;34152:1:::1;34130:19;:23;;;;34059:102:::0;:::o;31153:25::-;;;;:::o;19388:864::-;19513:7;19554:16;19564:5;19554:9;:16::i;:::-;19546:5;:24;19538:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;19620:22;19645:13;:11;:13::i;:::-;19620:38;;19669:19;19703:25;19757:9;19752:426;19776:14;19772:1;:18;19752:426;;;19812:31;19846:11;:14;19858:1;19846:14;;;;;;;;;;;19812:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19905:1;19879:28;;:9;:14;;;:28;;;19875:103;;19948:9;:14;;;19928:34;;19875:103;20017:5;19996:26;;:17;:26;;;19992:175;;;20062:5;20047:11;:20;20043:77;;;20099:1;20092:8;;;;;;;;;20043:77;20138:13;;;;;:::i;:::-;;;;19992:175;19797:381;19792:3;;;;;:::i;:::-;;;;19752:426;;;;20188:56;;;;;;;;;;:::i;:::-;;;;;;;;19388:864;;;;;:::o;31064:35::-;;;;;;;;;;;;;:::o;33882:160::-;10609:12;:10;:12::i;:::-;10598:23;;:7;:5;:7::i;:::-;:23;;;10590:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;1320:1:::1;1468:7;;:19;;1460:63;;;;;;;;;;;;:::i;:::-;;;;;;;;;1320:1;1534:7;:18;;;;33944:7:::2;33965;:5;:7::i;:::-;33957:21;;33986;33957:55;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;33943:69;;;34031:2;34023:11;;;::::0;::::2;;33932:110;1276:1:::1;1577:7;:22;;;;33882:160::o:0;24550:177::-;24680:39;24697:4;24703:2;24707:7;24680:39;;;;;;;;;;;;:16;:39::i;:::-;24550:177;;;:::o;31723:91::-;31769:7;31796:10;;31789:17;;31723:91;:::o;19152:228::-;19255:7;19296:13;:11;:13::i;:::-;19288:5;:21;19280:69;;;;;;;;;;;;:::i;:::-;;;;;;;;;19367:5;19360:12;;19152:228;;;:::o;30652:38::-;;;;:::o;30610:33::-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;33356:101::-;10609:12;:10;:12::i;:::-;10598:23;;:7;:5;:7::i;:::-;:23;;;10590:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;33442:7:::1;33427:12;:22;;;;;;;;;;;;:::i;:::-;;33356:101:::0;:::o;31032:25::-;;;;;;;;;;;;;:::o;21920:124::-;21984:7;22011:20;22023:7;22011:11;:20::i;:::-;:25;;;22004:32;;21920:124;;;:::o;20690:258::-;20754:7;20813:1;20796:19;;:5;:19;;;;20774:112;;;;;;;;;;;;:::i;:::-;;;;;;;;;20912:12;:19;20925:5;20912:19;;;;;;;;;;;;;;;:27;;;;;;;;;;;;20904:36;;20897:43;;20690:258;;;:::o;10686:103::-;10609:12;:10;:12::i;:::-;10598:23;;:7;:5;:7::i;:::-;:23;;;10590:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;10751:30:::1;10778:1;10751:18;:30::i;:::-;10686:103::o:0;31631:84::-;10609:12;:10;:12::i;:::-;10598:23;;:7;:5;:7::i;:::-;:23;;;10590:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;31706:1:::1;31693:10;:14;;;;31631:84:::0;:::o;10463:87::-;10509:7;10536:6;;;;;;;;;;;10529:13;;10463:87;:::o;33707:167::-;33800:21;;:::i;:::-;33846:20;33858:7;33846:11;:20::i;:::-;33839:27;;33707:167;;;:::o;22160:104::-;22216:13;22249:7;22242:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22160:104;:::o;30817:33::-;;;;:::o;31827:543::-;31894:6;;;;;;;;;;;31893:7;31885:34;;;;;;;;;;;;:::i;:::-;;;;;;;;;30916:3;31968:8;31952:13;:11;:13::i;:::-;:24;;;;:::i;:::-;:48;;31930:116;;;;;;;;;;;;:::i;:::-;;;;;;;;;32104:14;;32092:8;32065:24;32078:10;32065:12;:24::i;:::-;:35;;;;:::i;:::-;:53;;32057:91;;;;;;;;;;;;:::i;:::-;;;;;;;;;32179:19;;32167:8;:31;;32159:66;;;;;;;;;;;;:::i;:::-;;;;;;;;;32256:20;32267:8;32256:10;:20::i;:::-;32244:9;:32;;32236:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;32315:31;32325:10;32337:8;32315:9;:31::i;:::-;31827:543;:::o;23839:311::-;23969:12;:10;:12::i;:::-;23957:24;;:8;:24;;;;23949:63;;;;;;;;;;;;:::i;:::-;;;;;;;;;24070:8;24025:18;:32;24044:12;:10;:12::i;:::-;24025:32;;;;;;;;;;;;;;;:42;24058:8;24025:42;;;;;;;;;;;;;;;;:53;;;;;;;;;;;;;;;;;;24123:8;24094:48;;24109:12;:10;:12::i;:::-;24094:48;;;24133:8;24094:48;;;;;;:::i;:::-;;;;;;;;23839:311;;:::o;24735:355::-;24894:28;24904:4;24910:2;24914:7;24894:9;:28::i;:::-;24955:48;24978:4;24984:2;24988:7;24997:5;24955:22;:48::i;:::-;24933:149;;;;;;;;;;;;:::i;:::-;;;;;;;;;24735:355;;;;:::o;32569:195::-;32678:4;32707:49;32726:11;32739:10;;32751:4;32707:18;:49::i;:::-;32700:56;;32569:195;;;;:::o;32772:572::-;32890:13;32943:16;32951:7;32943;:16::i;:::-;32921:113;;;;;;;;;;;;:::i;:::-;;;;;;;;;33058:21;33082:10;:8;:10::i;:::-;33058:34;;33155:1;33137:7;33131:21;:25;:186;;;;;;;;;;;;;;;;;33230:7;33239:18;:7;:16;:18::i;:::-;33258:9;33213:55;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;33131:186;33107:210;;;32772:572;;;:::o;28250:43::-;;;;:::o;33586:113::-;33644:7;33671:20;33685:5;33671:13;:20::i;:::-;33664:27;;33586:113;;;:::o;34173:106::-;10609:12;:10;:12::i;:::-;10598:23;;:7;:5;:7::i;:::-;:23;;;10590:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;34262:9:::1;34245:14;:26;;;;34173:106:::0;:::o;24158:214::-;24300:4;24329:18;:25;24348:5;24329:25;;;;;;;;;;;;;;;:35;24355:8;24329:35;;;;;;;;;;;;;;;;;;;;;;;;;24322:42;;24158:214;;;;:::o;10797:238::-;10609:12;:10;:12::i;:::-;10598:23;;:7;:5;:7::i;:::-;:23;;;10590:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;10920:1:::1;10900:22;;:8;:22;;;;10878:110;;;;;;;;;;;;:::i;:::-;;;;;;;;;10999:28;11018:8;10999:18;:28::i;:::-;10797:238:::0;:::o;20260:422::-;20407:4;20464:25;20449:40;;;:11;:40;;;;:105;;;;20521:33;20506:48;;;:11;:48;;;;20449:105;:172;;;;20586:35;20571:50;;;:11;:50;;;;20449:172;:225;;;;20638:36;20662:11;20638:23;:36::i;:::-;20449:225;20429:245;;20260:422;;;:::o;9984:98::-;10037:7;10064:10;10057:17;;9984:98;:::o;25098:111::-;25155:4;25189:12;;25179:7;:22;25172:29;;25098:111;;;:::o;28046:196::-;28188:2;28161:15;:24;28177:7;28161:24;;;;;;;;;;;;:29;;;;;;;;;;;;;;;;;;28226:7;28222:2;28206:28;;28215:5;28206:28;;;;;;;;;;;;28046:196;;;:::o;26612:1426::-;26727:35;26765:20;26777:7;26765:11;:20::i;:::-;26727:58;;26798:22;26840:13;:18;;;26824:34;;:12;:10;:12::i;:::-;:34;;;:87;;;;26899:12;:10;:12::i;:::-;26875:36;;:20;26887:7;26875:11;:20::i;:::-;:36;;;26824:87;:154;;;;26928:50;26945:13;:18;;;26965:12;:10;:12::i;:::-;26928:16;:50::i;:::-;26824:154;26798:181;;27014:17;26992:117;;;;;;;;;;;;:::i;:::-;;;;;;;;;27166:4;27144:26;;:13;:18;;;:26;;;27122:114;;;;;;;;;;;;:::i;:::-;;;;;;;;;27269:1;27255:16;;:2;:16;;;;27247:66;;;;;;;;;;;;:::i;:::-;;;;;;;;;27326:43;27348:4;27354:2;27358:7;27367:1;27326:21;:43::i;:::-;27380:49;27397:1;27401:7;27410:13;:18;;;27380:8;:49::i;:::-;27472:1;27442:12;:18;27455:4;27442:18;;;;;;;;;;;;;;;:26;;;:31;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;27512:1;27484:12;:16;27497:2;27484:16;;;;;;;;;;;;;;;:24;;;:29;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;27547:43;;;;;;;;27562:2;27547:43;;;;;;27573:15;27547:43;;;;;27524:11;:20;27536:7;27524:20;;;;;;;;;;;:66;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27601:19;27633:1;27623:7;:11;;;;:::i;:::-;27601:33;;27690:1;27649:43;;:11;:24;27661:11;27649:24;;;;;;;;;;;:29;;;;;;;;;;;;:43;;;27645:288;;;27713:20;27721:11;27713:7;:20::i;:::-;27709:213;;;27781:125;;;;;;;;27818:13;:18;;;27781:125;;;;;;27859:13;:28;;;27781:125;;;;;27754:11;:24;27766:11;27754:24;;;;;;;;;;;:152;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27709:213;27645:288;27969:7;27965:2;27950:27;;27959:4;27950:27;;;;;;;;;;;;27988:42;28009:4;28015:2;28019:7;28028:1;27988:20;:42::i;:::-;26716:1322;;;26612:1426;;;:::o;21230:682::-;21318:21;;:::i;:::-;21365:16;21373:7;21365;:16::i;:::-;21357:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;21441:26;21493:12;21482:7;:23;21478:103;;21568:1;21553:12;21543:7;:22;;;;:::i;:::-;:26;;;;:::i;:::-;21522:47;;21478:103;21598:12;21613:7;21598:22;;21593:242;21630:18;21622:4;:26;21593:242;;21673:31;21707:11;:17;21719:4;21707:17;;;;;;;;;;;21673:51;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21769:1;21743:28;;:9;:14;;;:28;;;21739:85;;21799:9;21792:16;;;;;;;21739:85;21658:177;21650:6;;;;;:::i;:::-;;;;21593:242;;;;21847:57;;;;;;;;;;:::i;:::-;;;;;;;;21230:682;;;;:::o;11043:191::-;11117:16;11136:6;;;;;;;;;;;11117:25;;11162:8;11153:6;;:17;;;;;;;;;;;;;;;;;;11217:8;11186:40;;11207:8;11186:40;;;;;;;;;;;;11106:128;11043:191;:::o;32378:183::-;32467:7;32492:18;32517:9;32511:5;;:15;;;;:::i;:::-;32492:34;;32544:9;32537:16;;;32378:183;;;:::o;25217:104::-;25286:27;25296:2;25300:8;25286:27;;;;;;;;;;;;:9;:27::i;:::-;25217:104;;:::o;29155:985::-;29310:4;29331:15;:2;:13;;;:15::i;:::-;29327:806;;;29400:2;29384:36;;;29443:12;:10;:12::i;:::-;29478:4;29505:7;29535:5;29384:175;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;29363:715;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;29763:1;29746:6;:13;:18;29742:321;;;29789:109;;;;;;;;;;:::i;:::-;;;;;;;;29742:321;30013:6;30007:13;29998:6;29994:2;29990:15;29983:38;29363:715;29633:45;;;29623:55;;;:6;:55;;;;29616:62;;;;;29327:806;30117:4;30110:11;;29155:985;;;;;;;:::o;177:190::-;302:4;355;326:25;339:5;346:4;326:12;:25::i;:::-;:33;319:40;;177:190;;;;;:::o;33465:113::-;33525:13;33558:12;33551:19;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;33465:113;:::o;8573:532::-;8629:13;8668:1;8659:5;:10;8655:53;;;8686:10;;;;;;;;;;;;;;;;;;;;;8655:53;8718:12;8733:5;8718:20;;8749:14;8774:78;8789:1;8781:4;:9;8774:78;;8807:8;;;;;:::i;:::-;;;;8838:2;8830:10;;;;;:::i;:::-;;;8774:78;;;8862:19;8894:6;8884:17;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8862:39;;8912:154;8928:1;8919:5;:10;8912:154;;8956:1;8946:11;;;;;:::i;:::-;;;9023:2;9015:5;:10;;;;:::i;:::-;9002:2;:24;;;;:::i;:::-;8989:39;;8972:6;8979;8972:14;;;;;;;;:::i;:::-;;;;;:56;;;;;;;;;;;9052:2;9043:11;;;;;:::i;:::-;;;8912:154;;;9090:6;9076:21;;;;;8573:532;;;;:::o;20956:266::-;21017:7;21076:1;21059:19;;:5;:19;;;;21037:118;;;;;;;;;;;;:::i;:::-;;;;;;;;;21181:12;:19;21194:5;21181:19;;;;;;;;;;;;;;;:32;;;;;;;;;;;;21173:41;;21166:48;;20956:266;;;:::o;15601:207::-;15731:4;15775:25;15760:40;;;:11;:40;;;;15753:47;;15601:207;;;:::o;30148:159::-;;;;;:::o;30315:158::-;;;;;:::o;25329:1275::-;25452:20;25475:12;;25452:35;;25520:1;25506:16;;:2;:16;;;;25498:62;;;;;;;;;;;;:::i;:::-;;;;;;;;;25580:21;25588:12;25580:7;:21::i;:::-;25579:22;25571:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;25666:12;25654:8;:24;;25646:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;25730:61;25760:1;25764:2;25768:12;25782:8;25730:21;:61::i;:::-;25804:30;25837:12;:16;25850:2;25837:16;;;;;;;;;;;;;;;25804:49;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;25883:135;;;;;;;;25939:8;25909:11;:19;;;:39;;;;:::i;:::-;25883:135;;;;;;25998:8;25963:11;:24;;;:44;;;;:::i;:::-;25883:135;;;;;25864:12;:16;25877:2;25864:16;;;;;;;;;;;;;;;:154;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;26057:43;;;;;;;;26072:2;26057:43;;;;;;26083:15;26057:43;;;;;26029:11;:25;26041:12;26029:25;;;;;;;;;;;:71;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;26113:20;26136:12;26113:35;;26166:9;26161:325;26185:8;26181:1;:12;26161:325;;;26245:12;26241:2;26220:38;;26237:1;26220:38;;;;;;;;;;;;26299:59;26330:1;26334:2;26338:12;26352:5;26299:22;:59::i;:::-;26273:172;;;;;;;;;;;;:::i;:::-;;;;;;;;;26460:14;;;;;:::i;:::-;;;;26195:3;;;;;:::i;:::-;;;;26161:325;;;;26513:12;26498;:27;;;;26536:60;26565:1;26569:2;26573:12;26587:8;26536:20;:60::i;:::-;25441:1163;;;25329:1275;;;:::o;11264:196::-;11324:4;11341:12;11408:7;11396:20;11388:28;;11451:1;11444:4;:8;11437:15;;;11264:196;;;:::o;375:549::-;485:7;510:20;533:4;510:27;;553:9;548:339;572:5;:12;568:1;:16;548:339;;;606:20;629:5;635:1;629:8;;;;;;;;:::i;:::-;;;;;;;;606:31;;672:12;656;:28;652:224;;720:42;735:12;749;720:14;:42::i;:::-;705:57;;652:224;;;818:42;833:12;847;818:14;:42::i;:::-;803:57;;652:224;591:296;586:3;;;;;:::i;:::-;;;;548:339;;;;904:12;897:19;;;375:549;;;;:::o;932:256::-;1027:13;1095:1;1089:4;1082:15;1124:1;1118:4;1111:15;1165:4;1159;1149:21;1140:30;;932:256;;;;:::o;-1:-1:-1:-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;:::o;24:722:1:-;120:5;145:81;161:64;218:6;161:64;:::i;:::-;145:81;:::i;:::-;136:90;;246:5;275:6;268:5;261:21;309:4;302:5;298:16;291:23;;335:6;385:3;377:4;369:6;365:17;360:3;356:27;353:36;350:143;;;404:79;;:::i;:::-;350:143;517:1;502:238;527:6;524:1;521:13;502:238;;;595:3;624:37;657:3;645:10;624:37;:::i;:::-;619:3;612:50;691:4;686:3;682:14;675:21;;725:4;720:3;716:14;709:21;;562:178;549:1;546;542:9;537:14;;502:238;;;506:14;126:620;;24:722;;;;;:::o;752:410::-;829:5;854:65;870:48;911:6;870:48;:::i;:::-;854:65;:::i;:::-;845:74;;942:6;935:5;928:21;980:4;973:5;969:16;1018:3;1009:6;1004:3;1000:16;997:25;994:112;;;1025:79;;:::i;:::-;994:112;1115:41;1149:6;1144:3;1139;1115:41;:::i;:::-;835:327;752:410;;;;;:::o;1168:412::-;1246:5;1271:66;1287:49;1329:6;1287:49;:::i;:::-;1271:66;:::i;:::-;1262:75;;1360:6;1353:5;1346:21;1398:4;1391:5;1387:16;1436:3;1427:6;1422:3;1418:16;1415:25;1412:112;;;1443:79;;:::i;:::-;1412:112;1533:41;1567:6;1562:3;1557;1533:41;:::i;:::-;1252:328;1168:412;;;;;:::o;1586:139::-;1632:5;1670:6;1657:20;1648:29;;1686:33;1713:5;1686:33;:::i;:::-;1586:139;;;;:::o;1748:370::-;1819:5;1868:3;1861:4;1853:6;1849:17;1845:27;1835:122;;1876:79;;:::i;:::-;1835:122;1993:6;1980:20;2018:94;2108:3;2100:6;2093:4;2085:6;2081:17;2018:94;:::i;:::-;2009:103;;1825:293;1748:370;;;;:::o;2124:133::-;2167:5;2205:6;2192:20;2183:29;;2221:30;2245:5;2221:30;:::i;:::-;2124:133;;;;:::o;2263:139::-;2309:5;2347:6;2334:20;2325:29;;2363:33;2390:5;2363:33;:::i;:::-;2263:139;;;;:::o;2408:137::-;2453:5;2491:6;2478:20;2469:29;;2507:32;2533:5;2507:32;:::i;:::-;2408:137;;;;:::o;2551:141::-;2607:5;2638:6;2632:13;2623:22;;2654:32;2680:5;2654:32;:::i;:::-;2551:141;;;;:::o;2711:338::-;2766:5;2815:3;2808:4;2800:6;2796:17;2792:27;2782:122;;2823:79;;:::i;:::-;2782:122;2940:6;2927:20;2965:78;3039:3;3031:6;3024:4;3016:6;3012:17;2965:78;:::i;:::-;2956:87;;2772:277;2711:338;;;;:::o;3069:340::-;3125:5;3174:3;3167:4;3159:6;3155:17;3151:27;3141:122;;3182:79;;:::i;:::-;3141:122;3299:6;3286:20;3324:79;3399:3;3391:6;3384:4;3376:6;3372:17;3324:79;:::i;:::-;3315:88;;3131:278;3069:340;;;;:::o;3415:139::-;3461:5;3499:6;3486:20;3477:29;;3515:33;3542:5;3515:33;:::i;:::-;3415:139;;;;:::o;3560:329::-;3619:6;3668:2;3656:9;3647:7;3643:23;3639:32;3636:119;;;3674:79;;:::i;:::-;3636:119;3794:1;3819:53;3864:7;3855:6;3844:9;3840:22;3819:53;:::i;:::-;3809:63;;3765:117;3560:329;;;;:::o;3895:474::-;3963:6;3971;4020:2;4008:9;3999:7;3995:23;3991:32;3988:119;;;4026:79;;:::i;:::-;3988:119;4146:1;4171:53;4216:7;4207:6;4196:9;4192:22;4171:53;:::i;:::-;4161:63;;4117:117;4273:2;4299:53;4344:7;4335:6;4324:9;4320:22;4299:53;:::i;:::-;4289:63;;4244:118;3895:474;;;;;:::o;4375:619::-;4452:6;4460;4468;4517:2;4505:9;4496:7;4492:23;4488:32;4485:119;;;4523:79;;:::i;:::-;4485:119;4643:1;4668:53;4713:7;4704:6;4693:9;4689:22;4668:53;:::i;:::-;4658:63;;4614:117;4770:2;4796:53;4841:7;4832:6;4821:9;4817:22;4796:53;:::i;:::-;4786:63;;4741:118;4898:2;4924:53;4969:7;4960:6;4949:9;4945:22;4924:53;:::i;:::-;4914:63;;4869:118;4375:619;;;;;:::o;5000:943::-;5095:6;5103;5111;5119;5168:3;5156:9;5147:7;5143:23;5139:33;5136:120;;;5175:79;;:::i;:::-;5136:120;5295:1;5320:53;5365:7;5356:6;5345:9;5341:22;5320:53;:::i;:::-;5310:63;;5266:117;5422:2;5448:53;5493:7;5484:6;5473:9;5469:22;5448:53;:::i;:::-;5438:63;;5393:118;5550:2;5576:53;5621:7;5612:6;5601:9;5597:22;5576:53;:::i;:::-;5566:63;;5521:118;5706:2;5695:9;5691:18;5678:32;5737:18;5729:6;5726:30;5723:117;;;5759:79;;:::i;:::-;5723:117;5864:62;5918:7;5909:6;5898:9;5894:22;5864:62;:::i;:::-;5854:72;;5649:287;5000:943;;;;;;;:::o;5949:468::-;6014:6;6022;6071:2;6059:9;6050:7;6046:23;6042:32;6039:119;;;6077:79;;:::i;:::-;6039:119;6197:1;6222:53;6267:7;6258:6;6247:9;6243:22;6222:53;:::i;:::-;6212:63;;6168:117;6324:2;6350:50;6392:7;6383:6;6372:9;6368:22;6350:50;:::i;:::-;6340:60;;6295:115;5949:468;;;;;:::o;6423:474::-;6491:6;6499;6548:2;6536:9;6527:7;6523:23;6519:32;6516:119;;;6554:79;;:::i;:::-;6516:119;6674:1;6699:53;6744:7;6735:6;6724:9;6720:22;6699:53;:::i;:::-;6689:63;;6645:117;6801:2;6827:53;6872:7;6863:6;6852:9;6848:22;6827:53;:::i;:::-;6817:63;;6772:118;6423:474;;;;;:::o;6903:684::-;6996:6;7004;7053:2;7041:9;7032:7;7028:23;7024:32;7021:119;;;7059:79;;:::i;:::-;7021:119;7207:1;7196:9;7192:17;7179:31;7237:18;7229:6;7226:30;7223:117;;;7259:79;;:::i;:::-;7223:117;7364:78;7434:7;7425:6;7414:9;7410:22;7364:78;:::i;:::-;7354:88;;7150:302;7491:2;7517:53;7562:7;7553:6;7542:9;7538:22;7517:53;:::i;:::-;7507:63;;7462:118;6903:684;;;;;:::o;7593:323::-;7649:6;7698:2;7686:9;7677:7;7673:23;7669:32;7666:119;;;7704:79;;:::i;:::-;7666:119;7824:1;7849:50;7891:7;7882:6;7871:9;7867:22;7849:50;:::i;:::-;7839:60;;7795:114;7593:323;;;;:::o;7922:329::-;7981:6;8030:2;8018:9;8009:7;8005:23;8001:32;7998:119;;;8036:79;;:::i;:::-;7998:119;8156:1;8181:53;8226:7;8217:6;8206:9;8202:22;8181:53;:::i;:::-;8171:63;;8127:117;7922:329;;;;:::o;8257:327::-;8315:6;8364:2;8352:9;8343:7;8339:23;8335:32;8332:119;;;8370:79;;:::i;:::-;8332:119;8490:1;8515:52;8559:7;8550:6;8539:9;8535:22;8515:52;:::i;:::-;8505:62;;8461:116;8257:327;;;;:::o;8590:349::-;8659:6;8708:2;8696:9;8687:7;8683:23;8679:32;8676:119;;;8714:79;;:::i;:::-;8676:119;8834:1;8859:63;8914:7;8905:6;8894:9;8890:22;8859:63;:::i;:::-;8849:73;;8805:127;8590:349;;;;:::o;8945:509::-;9014:6;9063:2;9051:9;9042:7;9038:23;9034:32;9031:119;;;9069:79;;:::i;:::-;9031:119;9217:1;9206:9;9202:17;9189:31;9247:18;9239:6;9236:30;9233:117;;;9269:79;;:::i;:::-;9233:117;9374:63;9429:7;9420:6;9409:9;9405:22;9374:63;:::i;:::-;9364:73;;9160:287;8945:509;;;;:::o;9460:329::-;9519:6;9568:2;9556:9;9547:7;9543:23;9539:32;9536:119;;;9574:79;;:::i;:::-;9536:119;9694:1;9719:53;9764:7;9755:6;9744:9;9740:22;9719:53;:::i;:::-;9709:63;;9665:117;9460:329;;;;:::o;9795:108::-;9872:24;9890:5;9872:24;:::i;:::-;9867:3;9860:37;9795:108;;:::o;9909:118::-;9996:24;10014:5;9996:24;:::i;:::-;9991:3;9984:37;9909:118;;:::o;10033:109::-;10114:21;10129:5;10114:21;:::i;:::-;10109:3;10102:34;10033:109;;:::o;10148:118::-;10235:24;10253:5;10235:24;:::i;:::-;10230:3;10223:37;10148:118;;:::o;10272:360::-;10358:3;10386:38;10418:5;10386:38;:::i;:::-;10440:70;10503:6;10498:3;10440:70;:::i;:::-;10433:77;;10519:52;10564:6;10559:3;10552:4;10545:5;10541:16;10519:52;:::i;:::-;10596:29;10618:6;10596:29;:::i;:::-;10591:3;10587:39;10580:46;;10362:270;10272:360;;;;:::o;10638:364::-;10726:3;10754:39;10787:5;10754:39;:::i;:::-;10809:71;10873:6;10868:3;10809:71;:::i;:::-;10802:78;;10889:52;10934:6;10929:3;10922:4;10915:5;10911:16;10889:52;:::i;:::-;10966:29;10988:6;10966:29;:::i;:::-;10961:3;10957:39;10950:46;;10730:272;10638:364;;;;:::o;11008:377::-;11114:3;11142:39;11175:5;11142:39;:::i;:::-;11197:89;11279:6;11274:3;11197:89;:::i;:::-;11190:96;;11295:52;11340:6;11335:3;11328:4;11321:5;11317:16;11295:52;:::i;:::-;11372:6;11367:3;11363:16;11356:23;;11118:267;11008:377;;;;:::o;11415:845::-;11518:3;11555:5;11549:12;11584:36;11610:9;11584:36;:::i;:::-;11636:89;11718:6;11713:3;11636:89;:::i;:::-;11629:96;;11756:1;11745:9;11741:17;11772:1;11767:137;;;;11918:1;11913:341;;;;11734:520;;11767:137;11851:4;11847:9;11836;11832:25;11827:3;11820:38;11887:6;11882:3;11878:16;11871:23;;11767:137;;11913:341;11980:38;12012:5;11980:38;:::i;:::-;12040:1;12054:154;12068:6;12065:1;12062:13;12054:154;;;12142:7;12136:14;12132:1;12127:3;12123:11;12116:35;12192:1;12183:7;12179:15;12168:26;;12090:4;12087:1;12083:12;12078:17;;12054:154;;;12237:6;12232:3;12228:16;12221:23;;11920:334;;11734:520;;11522:738;;11415:845;;;;:::o;12266:366::-;12408:3;12429:67;12493:2;12488:3;12429:67;:::i;:::-;12422:74;;12505:93;12594:3;12505:93;:::i;:::-;12623:2;12618:3;12614:12;12607:19;;12266:366;;;:::o;12638:::-;12780:3;12801:67;12865:2;12860:3;12801:67;:::i;:::-;12794:74;;12877:93;12966:3;12877:93;:::i;:::-;12995:2;12990:3;12986:12;12979:19;;12638:366;;;:::o;13010:::-;13152:3;13173:67;13237:2;13232:3;13173:67;:::i;:::-;13166:74;;13249:93;13338:3;13249:93;:::i;:::-;13367:2;13362:3;13358:12;13351:19;;13010:366;;;:::o;13382:::-;13524:3;13545:67;13609:2;13604:3;13545:67;:::i;:::-;13538:74;;13621:93;13710:3;13621:93;:::i;:::-;13739:2;13734:3;13730:12;13723:19;;13382:366;;;:::o;13754:::-;13896:3;13917:67;13981:2;13976:3;13917:67;:::i;:::-;13910:74;;13993:93;14082:3;13993:93;:::i;:::-;14111:2;14106:3;14102:12;14095:19;;13754:366;;;:::o;14126:::-;14268:3;14289:67;14353:2;14348:3;14289:67;:::i;:::-;14282:74;;14365:93;14454:3;14365:93;:::i;:::-;14483:2;14478:3;14474:12;14467:19;;14126:366;;;:::o;14498:::-;14640:3;14661:67;14725:2;14720:3;14661:67;:::i;:::-;14654:74;;14737:93;14826:3;14737:93;:::i;:::-;14855:2;14850:3;14846:12;14839:19;;14498:366;;;:::o;14870:::-;15012:3;15033:67;15097:2;15092:3;15033:67;:::i;:::-;15026:74;;15109:93;15198:3;15109:93;:::i;:::-;15227:2;15222:3;15218:12;15211:19;;14870:366;;;:::o;15242:::-;15384:3;15405:67;15469:2;15464:3;15405:67;:::i;:::-;15398:74;;15481:93;15570:3;15481:93;:::i;:::-;15599:2;15594:3;15590:12;15583:19;;15242:366;;;:::o;15614:::-;15756:3;15777:67;15841:2;15836:3;15777:67;:::i;:::-;15770:74;;15853:93;15942:3;15853:93;:::i;:::-;15971:2;15966:3;15962:12;15955:19;;15614:366;;;:::o;15986:::-;16128:3;16149:67;16213:2;16208:3;16149:67;:::i;:::-;16142:74;;16225:93;16314:3;16225:93;:::i;:::-;16343:2;16338:3;16334:12;16327:19;;15986:366;;;:::o;16358:::-;16500:3;16521:67;16585:2;16580:3;16521:67;:::i;:::-;16514:74;;16597:93;16686:3;16597:93;:::i;:::-;16715:2;16710:3;16706:12;16699:19;;16358:366;;;:::o;16730:::-;16872:3;16893:67;16957:2;16952:3;16893:67;:::i;:::-;16886:74;;16969:93;17058:3;16969:93;:::i;:::-;17087:2;17082:3;17078:12;17071:19;;16730:366;;;:::o;17102:::-;17244:3;17265:67;17329:2;17324:3;17265:67;:::i;:::-;17258:74;;17341:93;17430:3;17341:93;:::i;:::-;17459:2;17454:3;17450:12;17443:19;;17102:366;;;:::o;17474:::-;17616:3;17637:67;17701:2;17696:3;17637:67;:::i;:::-;17630:74;;17713:93;17802:3;17713:93;:::i;:::-;17831:2;17826:3;17822:12;17815:19;;17474:366;;;:::o;17846:::-;17988:3;18009:67;18073:2;18068:3;18009:67;:::i;:::-;18002:74;;18085:93;18174:3;18085:93;:::i;:::-;18203:2;18198:3;18194:12;18187:19;;17846:366;;;:::o;18218:398::-;18377:3;18398:83;18479:1;18474:3;18398:83;:::i;:::-;18391:90;;18490:93;18579:3;18490:93;:::i;:::-;18608:1;18603:3;18599:11;18592:18;;18218:398;;;:::o;18622:366::-;18764:3;18785:67;18849:2;18844:3;18785:67;:::i;:::-;18778:74;;18861:93;18950:3;18861:93;:::i;:::-;18979:2;18974:3;18970:12;18963:19;;18622:366;;;:::o;18994:::-;19136:3;19157:67;19221:2;19216:3;19157:67;:::i;:::-;19150:74;;19233:93;19322:3;19233:93;:::i;:::-;19351:2;19346:3;19342:12;19335:19;;18994:366;;;:::o;19366:::-;19508:3;19529:67;19593:2;19588:3;19529:67;:::i;:::-;19522:74;;19605:93;19694:3;19605:93;:::i;:::-;19723:2;19718:3;19714:12;19707:19;;19366:366;;;:::o;19738:::-;19880:3;19901:67;19965:2;19960:3;19901:67;:::i;:::-;19894:74;;19977:93;20066:3;19977:93;:::i;:::-;20095:2;20090:3;20086:12;20079:19;;19738:366;;;:::o;20110:::-;20252:3;20273:67;20337:2;20332:3;20273:67;:::i;:::-;20266:74;;20349:93;20438:3;20349:93;:::i;:::-;20467:2;20462:3;20458:12;20451:19;;20110:366;;;:::o;20482:::-;20624:3;20645:67;20709:2;20704:3;20645:67;:::i;:::-;20638:74;;20721:93;20810:3;20721:93;:::i;:::-;20839:2;20834:3;20830:12;20823:19;;20482:366;;;:::o;20854:::-;20996:3;21017:67;21081:2;21076:3;21017:67;:::i;:::-;21010:74;;21093:93;21182:3;21093:93;:::i;:::-;21211:2;21206:3;21202:12;21195:19;;20854:366;;;:::o;21226:::-;21368:3;21389:67;21453:2;21448:3;21389:67;:::i;:::-;21382:74;;21465:93;21554:3;21465:93;:::i;:::-;21583:2;21578:3;21574:12;21567:19;;21226:366;;;:::o;21598:::-;21740:3;21761:67;21825:2;21820:3;21761:67;:::i;:::-;21754:74;;21837:93;21926:3;21837:93;:::i;:::-;21955:2;21950:3;21946:12;21939:19;;21598:366;;;:::o;21970:::-;22112:3;22133:67;22197:2;22192:3;22133:67;:::i;:::-;22126:74;;22209:93;22298:3;22209:93;:::i;:::-;22327:2;22322:3;22318:12;22311:19;;21970:366;;;:::o;22342:::-;22484:3;22505:67;22569:2;22564:3;22505:67;:::i;:::-;22498:74;;22581:93;22670:3;22581:93;:::i;:::-;22699:2;22694:3;22690:12;22683:19;;22342:366;;;:::o;22784:529::-;22945:4;22940:3;22936:14;23032:4;23025:5;23021:16;23015:23;23051:63;23108:4;23103:3;23099:14;23085:12;23051:63;:::i;:::-;22960:164;23216:4;23209:5;23205:16;23199:23;23235:61;23290:4;23285:3;23281:14;23267:12;23235:61;:::i;:::-;23134:172;22914:399;22784:529;;:::o;23319:118::-;23406:24;23424:5;23406:24;:::i;:::-;23401:3;23394:37;23319:118;;:::o;23443:105::-;23518:23;23535:5;23518:23;:::i;:::-;23513:3;23506:36;23443:105;;:::o;23554:589::-;23779:3;23801:95;23892:3;23883:6;23801:95;:::i;:::-;23794:102;;23913:95;24004:3;23995:6;23913:95;:::i;:::-;23906:102;;24025:92;24113:3;24104:6;24025:92;:::i;:::-;24018:99;;24134:3;24127:10;;23554:589;;;;;;:::o;24149:379::-;24333:3;24355:147;24498:3;24355:147;:::i;:::-;24348:154;;24519:3;24512:10;;24149:379;;;:::o;24534:222::-;24627:4;24665:2;24654:9;24650:18;24642:26;;24678:71;24746:1;24735:9;24731:17;24722:6;24678:71;:::i;:::-;24534:222;;;;:::o;24762:640::-;24957:4;24995:3;24984:9;24980:19;24972:27;;25009:71;25077:1;25066:9;25062:17;25053:6;25009:71;:::i;:::-;25090:72;25158:2;25147:9;25143:18;25134:6;25090:72;:::i;:::-;25172;25240:2;25229:9;25225:18;25216:6;25172:72;:::i;:::-;25291:9;25285:4;25281:20;25276:2;25265:9;25261:18;25254:48;25319:76;25390:4;25381:6;25319:76;:::i;:::-;25311:84;;24762:640;;;;;;;:::o;25408:210::-;25495:4;25533:2;25522:9;25518:18;25510:26;;25546:65;25608:1;25597:9;25593:17;25584:6;25546:65;:::i;:::-;25408:210;;;;:::o;25624:222::-;25717:4;25755:2;25744:9;25740:18;25732:26;;25768:71;25836:1;25825:9;25821:17;25812:6;25768:71;:::i;:::-;25624:222;;;;:::o;25852:313::-;25965:4;26003:2;25992:9;25988:18;25980:26;;26052:9;26046:4;26042:20;26038:1;26027:9;26023:17;26016:47;26080:78;26153:4;26144:6;26080:78;:::i;:::-;26072:86;;25852:313;;;;:::o;26171:419::-;26337:4;26375:2;26364:9;26360:18;26352:26;;26424:9;26418:4;26414:20;26410:1;26399:9;26395:17;26388:47;26452:131;26578:4;26452:131;:::i;:::-;26444:139;;26171:419;;;:::o;26596:::-;26762:4;26800:2;26789:9;26785:18;26777:26;;26849:9;26843:4;26839:20;26835:1;26824:9;26820:17;26813:47;26877:131;27003:4;26877:131;:::i;:::-;26869:139;;26596:419;;;:::o;27021:::-;27187:4;27225:2;27214:9;27210:18;27202:26;;27274:9;27268:4;27264:20;27260:1;27249:9;27245:17;27238:47;27302:131;27428:4;27302:131;:::i;:::-;27294:139;;27021:419;;;:::o;27446:::-;27612:4;27650:2;27639:9;27635:18;27627:26;;27699:9;27693:4;27689:20;27685:1;27674:9;27670:17;27663:47;27727:131;27853:4;27727:131;:::i;:::-;27719:139;;27446:419;;;:::o;27871:::-;28037:4;28075:2;28064:9;28060:18;28052:26;;28124:9;28118:4;28114:20;28110:1;28099:9;28095:17;28088:47;28152:131;28278:4;28152:131;:::i;:::-;28144:139;;27871:419;;;:::o;28296:::-;28462:4;28500:2;28489:9;28485:18;28477:26;;28549:9;28543:4;28539:20;28535:1;28524:9;28520:17;28513:47;28577:131;28703:4;28577:131;:::i;:::-;28569:139;;28296:419;;;:::o;28721:::-;28887:4;28925:2;28914:9;28910:18;28902:26;;28974:9;28968:4;28964:20;28960:1;28949:9;28945:17;28938:47;29002:131;29128:4;29002:131;:::i;:::-;28994:139;;28721:419;;;:::o;29146:::-;29312:4;29350:2;29339:9;29335:18;29327:26;;29399:9;29393:4;29389:20;29385:1;29374:9;29370:17;29363:47;29427:131;29553:4;29427:131;:::i;:::-;29419:139;;29146:419;;;:::o;29571:::-;29737:4;29775:2;29764:9;29760:18;29752:26;;29824:9;29818:4;29814:20;29810:1;29799:9;29795:17;29788:47;29852:131;29978:4;29852:131;:::i;:::-;29844:139;;29571:419;;;:::o;29996:::-;30162:4;30200:2;30189:9;30185:18;30177:26;;30249:9;30243:4;30239:20;30235:1;30224:9;30220:17;30213:47;30277:131;30403:4;30277:131;:::i;:::-;30269:139;;29996:419;;;:::o;30421:::-;30587:4;30625:2;30614:9;30610:18;30602:26;;30674:9;30668:4;30664:20;30660:1;30649:9;30645:17;30638:47;30702:131;30828:4;30702:131;:::i;:::-;30694:139;;30421:419;;;:::o;30846:::-;31012:4;31050:2;31039:9;31035:18;31027:26;;31099:9;31093:4;31089:20;31085:1;31074:9;31070:17;31063:47;31127:131;31253:4;31127:131;:::i;:::-;31119:139;;30846:419;;;:::o;31271:::-;31437:4;31475:2;31464:9;31460:18;31452:26;;31524:9;31518:4;31514:20;31510:1;31499:9;31495:17;31488:47;31552:131;31678:4;31552:131;:::i;:::-;31544:139;;31271:419;;;:::o;31696:::-;31862:4;31900:2;31889:9;31885:18;31877:26;;31949:9;31943:4;31939:20;31935:1;31924:9;31920:17;31913:47;31977:131;32103:4;31977:131;:::i;:::-;31969:139;;31696:419;;;:::o;32121:::-;32287:4;32325:2;32314:9;32310:18;32302:26;;32374:9;32368:4;32364:20;32360:1;32349:9;32345:17;32338:47;32402:131;32528:4;32402:131;:::i;:::-;32394:139;;32121:419;;;:::o;32546:::-;32712:4;32750:2;32739:9;32735:18;32727:26;;32799:9;32793:4;32789:20;32785:1;32774:9;32770:17;32763:47;32827:131;32953:4;32827:131;:::i;:::-;32819:139;;32546:419;;;:::o;32971:::-;33137:4;33175:2;33164:9;33160:18;33152:26;;33224:9;33218:4;33214:20;33210:1;33199:9;33195:17;33188:47;33252:131;33378:4;33252:131;:::i;:::-;33244:139;;32971:419;;;:::o;33396:::-;33562:4;33600:2;33589:9;33585:18;33577:26;;33649:9;33643:4;33639:20;33635:1;33624:9;33620:17;33613:47;33677:131;33803:4;33677:131;:::i;:::-;33669:139;;33396:419;;;:::o;33821:::-;33987:4;34025:2;34014:9;34010:18;34002:26;;34074:9;34068:4;34064:20;34060:1;34049:9;34045:17;34038:47;34102:131;34228:4;34102:131;:::i;:::-;34094:139;;33821:419;;;:::o;34246:::-;34412:4;34450:2;34439:9;34435:18;34427:26;;34499:9;34493:4;34489:20;34485:1;34474:9;34470:17;34463:47;34527:131;34653:4;34527:131;:::i;:::-;34519:139;;34246:419;;;:::o;34671:::-;34837:4;34875:2;34864:9;34860:18;34852:26;;34924:9;34918:4;34914:20;34910:1;34899:9;34895:17;34888:47;34952:131;35078:4;34952:131;:::i;:::-;34944:139;;34671:419;;;:::o;35096:::-;35262:4;35300:2;35289:9;35285:18;35277:26;;35349:9;35343:4;35339:20;35335:1;35324:9;35320:17;35313:47;35377:131;35503:4;35377:131;:::i;:::-;35369:139;;35096:419;;;:::o;35521:::-;35687:4;35725:2;35714:9;35710:18;35702:26;;35774:9;35768:4;35764:20;35760:1;35749:9;35745:17;35738:47;35802:131;35928:4;35802:131;:::i;:::-;35794:139;;35521:419;;;:::o;35946:::-;36112:4;36150:2;36139:9;36135:18;36127:26;;36199:9;36193:4;36189:20;36185:1;36174:9;36170:17;36163:47;36227:131;36353:4;36227:131;:::i;:::-;36219:139;;35946:419;;;:::o;36371:::-;36537:4;36575:2;36564:9;36560:18;36552:26;;36624:9;36618:4;36614:20;36610:1;36599:9;36595:17;36588:47;36652:131;36778:4;36652:131;:::i;:::-;36644:139;;36371:419;;;:::o;36796:::-;36962:4;37000:2;36989:9;36985:18;36977:26;;37049:9;37043:4;37039:20;37035:1;37024:9;37020:17;37013:47;37077:131;37203:4;37077:131;:::i;:::-;37069:139;;36796:419;;;:::o;37221:::-;37387:4;37425:2;37414:9;37410:18;37402:26;;37474:9;37468:4;37464:20;37460:1;37449:9;37445:17;37438:47;37502:131;37628:4;37502:131;:::i;:::-;37494:139;;37221:419;;;:::o;37646:350::-;37803:4;37841:2;37830:9;37826:18;37818:26;;37854:135;37986:1;37975:9;37971:17;37962:6;37854:135;:::i;:::-;37646:350;;;;:::o;38002:222::-;38095:4;38133:2;38122:9;38118:18;38110:26;;38146:71;38214:1;38203:9;38199:17;38190:6;38146:71;:::i;:::-;38002:222;;;;:::o;38230:129::-;38264:6;38291:20;;:::i;:::-;38281:30;;38320:33;38348:4;38340:6;38320:33;:::i;:::-;38230:129;;;:::o;38365:75::-;38398:6;38431:2;38425:9;38415:19;;38365:75;:::o;38446:311::-;38523:4;38613:18;38605:6;38602:30;38599:56;;;38635:18;;:::i;:::-;38599:56;38685:4;38677:6;38673:17;38665:25;;38745:4;38739;38735:15;38727:23;;38446:311;;;:::o;38763:307::-;38824:4;38914:18;38906:6;38903:30;38900:56;;;38936:18;;:::i;:::-;38900:56;38974:29;38996:6;38974:29;:::i;:::-;38966:37;;39058:4;39052;39048:15;39040:23;;38763:307;;;:::o;39076:308::-;39138:4;39228:18;39220:6;39217:30;39214:56;;;39250:18;;:::i;:::-;39214:56;39288:29;39310:6;39288:29;:::i;:::-;39280:37;;39372:4;39366;39362:15;39354:23;;39076:308;;;:::o;39390:141::-;39439:4;39462:3;39454:11;;39485:3;39482:1;39475:14;39519:4;39516:1;39506:18;39498:26;;39390:141;;;:::o;39537:98::-;39588:6;39622:5;39616:12;39606:22;;39537:98;;;:::o;39641:99::-;39693:6;39727:5;39721:12;39711:22;;39641:99;;;:::o;39746:168::-;39829:11;39863:6;39858:3;39851:19;39903:4;39898:3;39894:14;39879:29;;39746:168;;;;:::o;39920:147::-;40021:11;40058:3;40043:18;;39920:147;;;;:::o;40073:169::-;40157:11;40191:6;40186:3;40179:19;40231:4;40226:3;40222:14;40207:29;;40073:169;;;;:::o;40248:148::-;40350:11;40387:3;40372:18;;40248:148;;;;:::o;40402:273::-;40442:3;40461:20;40479:1;40461:20;:::i;:::-;40456:25;;40495:20;40513:1;40495:20;:::i;:::-;40490:25;;40617:1;40581:34;40577:42;40574:1;40571:49;40568:75;;;40623:18;;:::i;:::-;40568:75;40667:1;40664;40660:9;40653:16;;40402:273;;;;:::o;40681:305::-;40721:3;40740:20;40758:1;40740:20;:::i;:::-;40735:25;;40774:20;40792:1;40774:20;:::i;:::-;40769:25;;40928:1;40860:66;40856:74;40853:1;40850:81;40847:107;;;40934:18;;:::i;:::-;40847:107;40978:1;40975;40971:9;40964:16;;40681:305;;;;:::o;40992:185::-;41032:1;41049:20;41067:1;41049:20;:::i;:::-;41044:25;;41083:20;41101:1;41083:20;:::i;:::-;41078:25;;41122:1;41112:35;;41127:18;;:::i;:::-;41112:35;41169:1;41166;41162:9;41157:14;;40992:185;;;;:::o;41183:348::-;41223:7;41246:20;41264:1;41246:20;:::i;:::-;41241:25;;41280:20;41298:1;41280:20;:::i;:::-;41275:25;;41468:1;41400:66;41396:74;41393:1;41390:81;41385:1;41378:9;41371:17;41367:105;41364:131;;;41475:18;;:::i;:::-;41364:131;41523:1;41520;41516:9;41505:20;;41183:348;;;;:::o;41537:191::-;41577:4;41597:20;41615:1;41597:20;:::i;:::-;41592:25;;41631:20;41649:1;41631:20;:::i;:::-;41626:25;;41670:1;41667;41664:8;41661:34;;;41675:18;;:::i;:::-;41661:34;41720:1;41717;41713:9;41705:17;;41537:191;;;;:::o;41734:::-;41774:4;41794:20;41812:1;41794:20;:::i;:::-;41789:25;;41828:20;41846:1;41828:20;:::i;:::-;41823:25;;41867:1;41864;41861:8;41858:34;;;41872:18;;:::i;:::-;41858:34;41917:1;41914;41910:9;41902:17;;41734:191;;;;:::o;41931:96::-;41968:7;41997:24;42015:5;41997:24;:::i;:::-;41986:35;;41931:96;;;:::o;42033:90::-;42067:7;42110:5;42103:13;42096:21;42085:32;;42033:90;;;:::o;42129:77::-;42166:7;42195:5;42184:16;;42129:77;;;:::o;42212:149::-;42248:7;42288:66;42281:5;42277:78;42266:89;;42212:149;;;:::o;42367:118::-;42404:7;42444:34;42437:5;42433:46;42422:57;;42367:118;;;:::o;42491:126::-;42528:7;42568:42;42561:5;42557:54;42546:65;;42491:126;;;:::o;42623:77::-;42660:7;42689:5;42678:16;;42623:77;;;:::o;42706:101::-;42742:7;42782:18;42775:5;42771:30;42760:41;;42706:101;;;:::o;42813:154::-;42897:6;42892:3;42887;42874:30;42959:1;42950:6;42945:3;42941:16;42934:27;42813:154;;;:::o;42973:307::-;43041:1;43051:113;43065:6;43062:1;43059:13;43051:113;;;43150:1;43145:3;43141:11;43135:18;43131:1;43126:3;43122:11;43115:39;43087:2;43084:1;43080:10;43075:15;;43051:113;;;43182:6;43179:1;43176:13;43173:101;;;43262:1;43253:6;43248:3;43244:16;43237:27;43173:101;43022:258;42973:307;;;:::o;43286:171::-;43325:3;43348:24;43366:5;43348:24;:::i;:::-;43339:33;;43394:4;43387:5;43384:15;43381:41;;;43402:18;;:::i;:::-;43381:41;43449:1;43442:5;43438:13;43431:20;;43286:171;;;:::o;43463:320::-;43507:6;43544:1;43538:4;43534:12;43524:22;;43591:1;43585:4;43581:12;43612:18;43602:81;;43668:4;43660:6;43656:17;43646:27;;43602:81;43730:2;43722:6;43719:14;43699:18;43696:38;43693:84;;;43749:18;;:::i;:::-;43693:84;43514:269;43463:320;;;:::o;43789:281::-;43872:27;43894:4;43872:27;:::i;:::-;43864:6;43860:40;44002:6;43990:10;43987:22;43966:18;43954:10;43951:34;43948:62;43945:88;;;44013:18;;:::i;:::-;43945:88;44053:10;44049:2;44042:22;43832:238;43789:281;;:::o;44076:233::-;44115:3;44138:24;44156:5;44138:24;:::i;:::-;44129:33;;44184:66;44177:5;44174:77;44171:103;;;44254:18;;:::i;:::-;44171:103;44301:1;44294:5;44290:13;44283:20;;44076:233;;;:::o;44315:176::-;44347:1;44364:20;44382:1;44364:20;:::i;:::-;44359:25;;44398:20;44416:1;44398:20;:::i;:::-;44393:25;;44437:1;44427:35;;44442:18;;:::i;:::-;44427:35;44483:1;44480;44476:9;44471:14;;44315:176;;;;:::o;44497:180::-;44545:77;44542:1;44535:88;44642:4;44639:1;44632:15;44666:4;44663:1;44656:15;44683:180;44731:77;44728:1;44721:88;44828:4;44825:1;44818:15;44852:4;44849:1;44842:15;44869:180;44917:77;44914:1;44907:88;45014:4;45011:1;45004:15;45038:4;45035:1;45028:15;45055:180;45103:77;45100:1;45093:88;45200:4;45197:1;45190:15;45224:4;45221:1;45214:15;45241:180;45289:77;45286:1;45279:88;45386:4;45383:1;45376:15;45410:4;45407:1;45400:15;45427:117;45536:1;45533;45526:12;45550:117;45659:1;45656;45649:12;45673:117;45782:1;45779;45772:12;45796:117;45905:1;45902;45895:12;45919:117;46028:1;46025;46018:12;46042:102;46083:6;46134:2;46130:7;46125:2;46118:5;46114:14;46110:28;46100:38;;46042:102;;;:::o;46150:221::-;46290:34;46286:1;46278:6;46274:14;46267:58;46359:4;46354:2;46346:6;46342:15;46335:29;46150:221;:::o;46377:225::-;46517:34;46513:1;46505:6;46501:14;46494:58;46586:8;46581:2;46573:6;46569:15;46562:33;46377:225;:::o;46608:229::-;46748:34;46744:1;46736:6;46732:14;46725:58;46817:12;46812:2;46804:6;46800:15;46793:37;46608:229;:::o;46843:222::-;46983:34;46979:1;46971:6;46967:14;46960:58;47052:5;47047:2;47039:6;47035:15;47028:30;46843:222;:::o;47071:224::-;47211:34;47207:1;47199:6;47195:14;47188:58;47280:7;47275:2;47267:6;47263:15;47256:32;47071:224;:::o;47301:236::-;47441:34;47437:1;47429:6;47425:14;47418:58;47510:19;47505:2;47497:6;47493:15;47486:44;47301:236;:::o;47543:244::-;47683:34;47679:1;47671:6;47667:14;47660:58;47752:27;47747:2;47739:6;47735:15;47728:52;47543:244;:::o;47793:230::-;47933:34;47929:1;47921:6;47917:14;47910:58;48002:13;47997:2;47989:6;47985:15;47978:38;47793:230;:::o;48029:168::-;48169:20;48165:1;48157:6;48153:14;48146:44;48029:168;:::o;48203:175::-;48343:27;48339:1;48331:6;48327:14;48320:51;48203:175;:::o;48384:225::-;48524:34;48520:1;48512:6;48508:14;48501:58;48593:8;48588:2;48580:6;48576:15;48569:33;48384:225;:::o;48615:182::-;48755:34;48751:1;48743:6;48739:14;48732:58;48615:182;:::o;48803:234::-;48943:34;48939:1;48931:6;48927:14;48920:58;49012:17;49007:2;48999:6;48995:15;48988:42;48803:234;:::o;49043:176::-;49183:28;49179:1;49171:6;49167:14;49160:52;49043:176;:::o;49225:237::-;49365:34;49361:1;49353:6;49349:14;49342:58;49434:20;49429:2;49421:6;49417:15;49410:45;49225:237;:::o;49468:221::-;49608:34;49604:1;49596:6;49592:14;49585:58;49677:4;49672:2;49664:6;49660:15;49653:29;49468:221;:::o;49695:114::-;;:::o;49815:238::-;49955:34;49951:1;49943:6;49939:14;49932:58;50024:21;50019:2;50011:6;50007:15;50000:46;49815:238;:::o;50059:179::-;50199:31;50195:1;50187:6;50183:14;50176:55;50059:179;:::o;50244:220::-;50384:34;50380:1;50372:6;50368:14;50361:58;50453:3;50448:2;50440:6;50436:15;50429:28;50244:220;:::o;50470:172::-;50610:24;50606:1;50598:6;50594:14;50587:48;50470:172;:::o;50648:233::-;50788:34;50784:1;50776:6;50772:14;50765:58;50857:16;50852:2;50844:6;50840:15;50833:41;50648:233;:::o;50887:181::-;51027:33;51023:1;51015:6;51011:14;51004:57;50887:181;:::o;51074:234::-;51214:34;51210:1;51202:6;51198:14;51191:58;51283:17;51278:2;51270:6;51266:15;51259:42;51074:234;:::o;51314:164::-;51454:16;51450:1;51442:6;51438:14;51431:40;51314:164;:::o;51484:232::-;51624:34;51620:1;51612:6;51608:14;51601:58;51693:15;51688:2;51680:6;51676:15;51669:40;51484:232;:::o;51722:221::-;51862:34;51858:1;51850:6;51846:14;51839:58;51931:4;51926:2;51918:6;51914:15;51907:29;51722:221;:::o;51949:169::-;52089:21;52085:1;52077:6;52073:14;52066:45;51949:169;:::o;52124:122::-;52197:24;52215:5;52197:24;:::i;:::-;52190:5;52187:35;52177:63;;52236:1;52233;52226:12;52177:63;52124:122;:::o;52252:116::-;52322:21;52337:5;52322:21;:::i;:::-;52315:5;52312:32;52302:60;;52358:1;52355;52348:12;52302:60;52252:116;:::o;52374:122::-;52447:24;52465:5;52447:24;:::i;:::-;52440:5;52437:35;52427:63;;52486:1;52483;52476:12;52427:63;52374:122;:::o;52502:120::-;52574:23;52591:5;52574:23;:::i;:::-;52567:5;52564:34;52554:62;;52612:1;52609;52602:12;52554:62;52502:120;:::o;52628:122::-;52701:24;52719:5;52701:24;:::i;:::-;52694:5;52691:35;52681:63;;52740:1;52737;52730:12;52681:63;52628:122;:::o
Swarm Source
ipfs://f662afb82570d934558005f50892e8706bf3bba6f6fd1d3cf279b599143b84e8
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.