Feature Tip: Add private address tag to any address under My Name Tag !
ERC-721
Overview
Max Total Supply
242 Dic
Holders
94
Market
Volume (24H)
N/A
Min Price (24H)
N/A
Max Price (24H)
N/A
Other Info
Token Contract
Balance
1 DicLoading...
Loading
Loading...
Loading
Loading...
Loading
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
Contract Source Code Verified (Exact Match)
Contract Name:
Dicpic
Compiler Version
v0.8.7+commit.e28d00a7
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2021-11-28 */ // SPDX-License-Identifier: GPL-3.0 // File: @openzeppelin/contracts/utils/introspection/IERC165.sol pragma solidity ^0.8.0; interface IERC165 { function supportsInterface(bytes4 interfaceId) external view returns (bool); } // File: @openzeppelin/contracts/token/ERC721/IERC721.sol pragma solidity ^0.8.0; 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; } // File: @openzeppelin/contracts/token/ERC721/extensions/IERC721Metadata.sol pragma solidity ^0.8.0; 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); } // File: @openzeppelin/contracts/utils/introspection/ERC165.sol pragma solidity ^0.8.0; abstract contract ERC165 is IERC165 { function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) { return interfaceId == type(IERC165).interfaceId; } } // File: @openzeppelin/contracts/utils/Context.sol pragma solidity ^0.8.0; abstract contract Context { function _msgSender() internal view virtual returns (address) { return msg.sender; } function _msgData() internal view virtual returns (bytes calldata) { return msg.data; } } // File: @openzeppelin/contracts/token/ERC721/ERC721.sol pragma solidity ^0.8.0; contract ERC721 is Context, ERC165, IERC721, IERC721Metadata { using Address for address; using Strings for uint256; string private _name; string private _symbol; mapping(uint256 => address) private _owners; mapping(address => uint256) private _balances; mapping(uint256 => address) private _tokenApprovals; mapping(address => mapping(address => bool)) private _operatorApprovals; constructor(string memory name_, string memory symbol_) { _name = name_; _symbol = symbol_; } function supportsInterface(bytes4 interfaceId) public view virtual override(ERC165, IERC165) returns (bool) { return interfaceId == type(IERC721).interfaceId || interfaceId == type(IERC721Metadata).interfaceId || super.supportsInterface(interfaceId); } function balanceOf(address owner) public view virtual override returns (uint256) { require(owner != address(0), "ERC721: balance query for the zero address"); return _balances[owner]; } function ownerOf(uint256 tokenId) public view virtual override returns (address) { address owner = _owners[tokenId]; require(owner != address(0), "ERC721: owner query for nonexistent token"); return owner; } function name() public view virtual override returns (string memory) { return _name; } function symbol() public view virtual override returns (string memory) { return _symbol; } function tokenURI(uint256 tokenId) public view virtual override returns (string memory) { require(_exists(tokenId), "ERC721Metadata: URI query for nonexistent token"); string memory baseURI = _baseURI(); return bytes(baseURI).length > 0 ? string(abi.encodePacked(baseURI, tokenId.toString())) : ""; } function _baseURI() internal view virtual returns (string memory) { return ""; } function approve(address to, uint256 tokenId) public virtual override { address owner = ERC721.ownerOf(tokenId); require(to != owner, "ERC721: approval to current owner"); require( _msgSender() == owner || isApprovedForAll(owner, _msgSender()), "ERC721: approve caller is not owner nor approved for all" ); _approve(to, tokenId); } function getApproved(uint256 tokenId) public view virtual override returns (address) { require(_exists(tokenId), "ERC721: approved query for nonexistent token"); return _tokenApprovals[tokenId]; } function setApprovalForAll(address operator, bool approved) public virtual override { require(operator != _msgSender(), "ERC721: 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 virtual override { //solhint-disable-next-line max-line-length require(_isApprovedOrOwner(_msgSender(), tokenId), "ERC721: transfer caller is not owner nor approved"); _transfer(from, to, tokenId); } function safeTransferFrom( address from, address to, uint256 tokenId ) public virtual override { safeTransferFrom(from, to, tokenId, ""); } function safeTransferFrom( address from, address to, uint256 tokenId, bytes memory _data ) public virtual override { require(_isApprovedOrOwner(_msgSender(), tokenId), "ERC721: transfer caller is not owner nor approved"); _safeTransfer(from, to, tokenId, _data); } function _safeTransfer( address from, address to, uint256 tokenId, bytes memory _data ) internal virtual { _transfer(from, to, tokenId); require(_checkOnERC721Received(from, to, tokenId, _data), "ERC721: transfer to non ERC721Receiver implementer"); } function _exists(uint256 tokenId) internal view virtual returns (bool) { return _owners[tokenId] != address(0); } function _isApprovedOrOwner(address spender, uint256 tokenId) internal view virtual returns (bool) { require(_exists(tokenId), "ERC721: operator query for nonexistent token"); address owner = ERC721.ownerOf(tokenId); return (spender == owner || getApproved(tokenId) == spender || isApprovedForAll(owner, spender)); } function _safeMint(address to, uint256 tokenId) internal virtual { _safeMint(to, tokenId, ""); } function _safeMint( address to, uint256 tokenId, bytes memory _data ) internal virtual { _mint(to, tokenId); require( _checkOnERC721Received(address(0), to, tokenId, _data), "ERC721: transfer to non ERC721Receiver implementer" ); } function _mint(address to, uint256 tokenId) internal virtual { require(to != address(0), "ERC721: mint to the zero address"); require(!_exists(tokenId), "ERC721: token already minted"); _beforeTokenTransfer(address(0), to, tokenId); _balances[to] += 1; _owners[tokenId] = to; emit Transfer(address(0), to, tokenId); } function _burn(uint256 tokenId) internal virtual { address owner = ERC721.ownerOf(tokenId); _beforeTokenTransfer(owner, address(0), tokenId); _approve(address(0), tokenId); _balances[owner] -= 1; delete _owners[tokenId]; emit Transfer(owner, address(0), tokenId); } function _transfer( address from, address to, uint256 tokenId ) internal virtual { require(ERC721.ownerOf(tokenId) == from, "ERC721: transfer of token that is not own"); require(to != address(0), "ERC721: transfer to the zero address"); _beforeTokenTransfer(from, to, tokenId); _approve(address(0), tokenId); _balances[from] -= 1; _balances[to] += 1; _owners[tokenId] = to; emit Transfer(from, to, tokenId); } function _approve(address to, uint256 tokenId) internal virtual { _tokenApprovals[tokenId] = to; emit Approval(ERC721.ownerOf(tokenId), to, tokenId); } function _checkOnERC721Received( address from, address to, uint256 tokenId, bytes memory _data ) private returns (bool) { if (to.isContract()) { try IERC721Receiver(to).onERC721Received(_msgSender(), from, tokenId, _data) returns (bytes4 retval) { return retval == IERC721Receiver.onERC721Received.selector; } catch (bytes memory reason) { if (reason.length == 0) { revert("ERC721: transfer to non ERC721Receiver implementer"); } else { assembly { revert(add(32, reason), mload(reason)) } } } } else { return true; } } function _beforeTokenTransfer( address from, address to, uint256 tokenId ) internal virtual {} } // File: @openzeppelin/contracts/utils/cryptography/ECDSA.sol pragma solidity ^0.8.0; library ECDSA { enum RecoverError { NoError, InvalidSignature, InvalidSignatureLength, InvalidSignatureS, InvalidSignatureV } function _throwError(RecoverError error) private pure { if (error == RecoverError.NoError) { return; // no error: do nothing } else if (error == RecoverError.InvalidSignature) { revert("ECDSA: invalid signature"); } else if (error == RecoverError.InvalidSignatureLength) { revert("ECDSA: invalid signature length"); } else if (error == RecoverError.InvalidSignatureS) { revert("ECDSA: invalid signature 's' value"); } else if (error == RecoverError.InvalidSignatureV) { revert("ECDSA: invalid signature 'v' value"); } } function tryRecover(bytes32 hash, bytes memory signature) internal pure returns (address, RecoverError) { if (signature.length == 65) { bytes32 r; bytes32 s; uint8 v; assembly { r := mload(add(signature, 0x20)) s := mload(add(signature, 0x40)) v := byte(0, mload(add(signature, 0x60))) } return tryRecover(hash, v, r, s); } else if (signature.length == 64) { bytes32 r; bytes32 vs; assembly { r := mload(add(signature, 0x20)) vs := mload(add(signature, 0x40)) } return tryRecover(hash, r, vs); } else { return (address(0), RecoverError.InvalidSignatureLength); } } function recover(bytes32 hash, bytes memory signature) internal pure returns (address) { (address recovered, RecoverError error) = tryRecover(hash, signature); _throwError(error); return recovered; } function tryRecover( bytes32 hash, bytes32 r, bytes32 vs ) internal pure returns (address, RecoverError) { bytes32 s; uint8 v; assembly { s := and(vs, 0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) v := add(shr(255, vs), 27) } return tryRecover(hash, v, r, s); } function recover( bytes32 hash, bytes32 r, bytes32 vs ) internal pure returns (address) { (address recovered, RecoverError error) = tryRecover(hash, r, vs); _throwError(error); return recovered; } function tryRecover( bytes32 hash, uint8 v, bytes32 r, bytes32 s ) internal pure returns (address, RecoverError) { if (uint256(s) > 0x7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5D576E7357A4501DDFE92F46681B20A0) { return (address(0), RecoverError.InvalidSignatureS); } if (v != 27 && v != 28) { return (address(0), RecoverError.InvalidSignatureV); } address signer = ecrecover(hash, v, r, s); if (signer == address(0)) { return (address(0), RecoverError.InvalidSignature); } return (signer, RecoverError.NoError); } function recover( bytes32 hash, uint8 v, bytes32 r, bytes32 s ) internal pure returns (address) { (address recovered, RecoverError error) = tryRecover(hash, v, r, s); _throwError(error); return recovered; } function toEthSignedMessageHash(bytes32 hash) internal pure returns (bytes32) { // 32 is the length in bytes of hash, // enforced by the type signature above return keccak256(abi.encodePacked("\x19Ethereum Signed Message:\n32", hash)); } function toTypedDataHash(bytes32 domainSeparator, bytes32 structHash) internal pure returns (bytes32) { return keccak256(abi.encodePacked("\x19\x01", domainSeparator, structHash)); } } // File: @openzeppelin/contracts/token/ERC721/extensions/IERC721Enumerable.sol pragma solidity ^0.8.0; 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); } // File: @openzeppelin/contracts/token/ERC721/extensions/ERC721Enumerable.sol pragma solidity ^0.8.0; abstract contract ERC721Enumerable is ERC721, IERC721Enumerable { mapping(address => mapping(uint256 => uint256)) private _ownedTokens; mapping(uint256 => uint256) private _ownedTokensIndex; uint256[] private _allTokens; mapping(uint256 => uint256) private _allTokensIndex; function supportsInterface(bytes4 interfaceId) public view virtual override(IERC165, ERC721) returns (bool) { return interfaceId == type(IERC721Enumerable).interfaceId || super.supportsInterface(interfaceId); } function tokenOfOwnerByIndex(address owner, uint256 index) public view virtual override returns (uint256) { require(index < ERC721.balanceOf(owner), "ERC721Enumerable: owner index out of bounds"); return _ownedTokens[owner][index]; } function totalSupply() public view virtual override returns (uint256) { return _allTokens.length; } function tokenByIndex(uint256 index) public view virtual override returns (uint256) { require(index < ERC721Enumerable.totalSupply(), "ERC721Enumerable: global index out of bounds"); return _allTokens[index]; } function _beforeTokenTransfer( address from, address to, uint256 tokenId ) internal virtual override { super._beforeTokenTransfer(from, to, tokenId); if (from == address(0)) { _addTokenToAllTokensEnumeration(tokenId); } else if (from != to) { _removeTokenFromOwnerEnumeration(from, tokenId); } if (to == address(0)) { _removeTokenFromAllTokensEnumeration(tokenId); } else if (to != from) { _addTokenToOwnerEnumeration(to, tokenId); } } function _addTokenToOwnerEnumeration(address to, uint256 tokenId) private { uint256 length = ERC721.balanceOf(to); _ownedTokens[to][length] = tokenId; _ownedTokensIndex[tokenId] = length; } function _addTokenToAllTokensEnumeration(uint256 tokenId) private { _allTokensIndex[tokenId] = _allTokens.length; _allTokens.push(tokenId); } function _removeTokenFromOwnerEnumeration(address from, uint256 tokenId) private { uint256 lastTokenIndex = ERC721.balanceOf(from) - 1; uint256 tokenIndex = _ownedTokensIndex[tokenId]; if (tokenIndex != lastTokenIndex) { uint256 lastTokenId = _ownedTokens[from][lastTokenIndex]; _ownedTokens[from][tokenIndex] = lastTokenId; _ownedTokensIndex[lastTokenId] = tokenIndex; } delete _ownedTokensIndex[tokenId]; delete _ownedTokens[from][lastTokenIndex]; } function _removeTokenFromAllTokensEnumeration(uint256 tokenId) private { uint256 lastTokenIndex = _allTokens.length - 1; uint256 tokenIndex = _allTokensIndex[tokenId]; uint256 lastTokenId = _allTokens[lastTokenIndex]; _allTokens[tokenIndex] = lastTokenId; _allTokensIndex[lastTokenId] = tokenIndex; delete _allTokensIndex[tokenId]; _allTokens.pop(); } } // File: @openzeppelin/contracts/utils/Strings.sol pragma solidity ^0.8.0; 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); } } // File: @openzeppelin/contracts/utils/Address.sol pragma solidity ^0.8.0; 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); } } } } // File: @openzeppelin/contracts/token/ERC721/IERC721Receiver.sol pragma solidity ^0.8.0; interface IERC721Receiver { function onERC721Received( address operator, address from, uint256 tokenId, bytes calldata data ) external returns (bytes4); } // File: @openzeppelin/contracts/access/Ownable.sol pragma solidity ^0.8.0; abstract contract Ownable is Context { address private _owner; event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); constructor() { _setOwner(_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 { _setOwner(address(0)); } function transferOwnership(address newOwner) public virtual onlyOwner { require(newOwner != address(0), "Ownable: new owner is the zero address"); _setOwner(newOwner); } function _setOwner(address newOwner) private { address oldOwner = _owner; _owner = newOwner; emit OwnershipTransferred(oldOwner, newOwner); } } // File: contracts/Dicpic.sol // Written by: @zestrells pragma solidity ^0.8.4; contract Dicpic is ERC721Enumerable, Ownable { using Strings for uint256; using ECDSA for bytes32; uint256 public DICPIC_GIFT = 100; uint256 public DICPIC_PRESALE = 0; uint256 public DICPIC_PUBLIC = 4900; uint256 public DICPIC_MAX = DICPIC_GIFT + DICPIC_PRESALE + DICPIC_PUBLIC; uint256 public DICPIC_PRICE = .05 ether; uint256 public DICPIC_FREE_PRICE = 0 ether; uint256 public DICPIC_PRESALE_PRICE = .03 ether; uint256 public DICPIC_PER_MINT = 5; uint256 public constant DICPIC_PER_FREE_MINT = 1; mapping(address => bool) public presalerList; mapping(address => uint256) public presalerListPurchases; string private _tokenBaseURI = "https://mint.dicpic.io/api/"; uint256 public giftedAmount; uint256 public publicAmountMinted; uint256 public privateAmountMinted; uint256 public presalePurchaseLimit = 13; bool public presaleLive; bool public saleLive; constructor() ERC721("DicPic", "Dic") payable { } function addToPresaleList(address[] calldata entries) external onlyOwner { for(uint256 i = 0; i < entries.length; i++) { address entry = entries[i]; require(entry != address(0), "NULL_ADDRESS"); require(!presalerList[entry], "DUPLICATE_ENTRY"); presalerList[entry] = true; } } function removeFromPresaleList(address[] calldata entries) external onlyOwner { for(uint256 i = 0; i < entries.length; i++) { address entry = entries[i]; require(entry != address(0), "NULL_ADDRESS"); presalerList[entry] = false; } } function togglePresaleStatus() external onlyOwner { presaleLive = !presaleLive; } function toggleSaleStatus() external onlyOwner { saleLive = !saleLive; } function buy(uint256 tokenQuantity) external payable { require(saleLive, "SALE_CLOSED"); require(!presaleLive, "ONLY_PRESALE"); require((totalSupply() + 1) < DICPIC_MAX, "Out of stock."); require(publicAmountMinted + tokenQuantity <= DICPIC_PUBLIC, "EXCEED_PUBLIC"); require(tokenQuantity <= DICPIC_PER_MINT, "EXCEED_DICPIC_PER_MINT"); for(uint i = 0; i < tokenQuantity; i++) { uint _mintId = totalSupply() + 1; // iterate from 1 if (_mintId > 100 && _mintId < 301) { require(tokenQuantity <= DICPIC_PER_FREE_MINT, "EXCEED_DICPIC_PER_FREE_MINT"); _safeMint(msg.sender, _mintId); publicAmountMinted++; } else { require(DICPIC_PRICE * tokenQuantity <= msg.value, "Insufficient ETH."); _safeMint(msg.sender, _mintId); publicAmountMinted++; } } } function presaleBuy(uint256 tokenQuantity) external payable { require(!saleLive && presaleLive, "The presale has finished."); require(presalerList[msg.sender], "You are not qualified for the presale."); require((totalSupply() + 1) < DICPIC_MAX, "Out of stock."); require(privateAmountMinted + tokenQuantity <= DICPIC_PRESALE, "EXCEED_PRIVATE"); require(presalerListPurchases[msg.sender] + tokenQuantity <= presalePurchaseLimit, "You have reached your maximum purchase amount."); require(DICPIC_PRESALE_PRICE * tokenQuantity <= msg.value, "Insufficient ETH."); for (uint256 i = 0; i < tokenQuantity; i++) { uint _mintId = totalSupply() + 1; // iterate from 1 presalerListPurchases[msg.sender]++; _safeMint(msg.sender, _mintId); privateAmountMinted++; } } function gift(address[] calldata receivers) external onlyOwner { require((totalSupply() + 1) + receivers.length <= DICPIC_MAX, "MAX_MINT"); require(giftedAmount + receivers.length <= DICPIC_GIFT, "GIFTS_EMPTY"); for (uint256 i = 0; i < receivers.length; i++) { uint _mintId = totalSupply() + 1; // iterate from 1 _safeMint(receivers[i], _mintId); giftedAmount++; } } function withdrawTeam() external onlyOwner { uint balance = address(this).balance; payable(msg.sender).transfer(balance); } function isPresaler(address addr) external view returns (bool) { return presalerList[addr]; } function presalePurchasedCount(address addr) external view returns (uint256) { return presalerListPurchases[addr]; } function setBaseURI(string calldata URI) external onlyOwner { _tokenBaseURI = URI; } function setPresaleAmount(uint256 number) external onlyOwner { DICPIC_PRESALE = number; DICPIC_MAX = DICPIC_GIFT + DICPIC_PRESALE + DICPIC_PUBLIC; } function setPublicAmount(uint256 number) external onlyOwner { DICPIC_PUBLIC = number; DICPIC_MAX = DICPIC_GIFT + DICPIC_PRESALE + DICPIC_PUBLIC; } function setGiftAmount(uint256 number) external onlyOwner { DICPIC_GIFT = number; DICPIC_MAX = DICPIC_GIFT + DICPIC_PRESALE + DICPIC_PUBLIC; } function setDicPicPerMint(uint256 number) external onlyOwner { DICPIC_PER_MINT = number; } function setPrice(uint256 number) external onlyOwner { DICPIC_PRICE = number; } function setPresalePrice(uint256 number) external onlyOwner { DICPIC_PRESALE_PRICE = number; } function tokenURI(uint256 tokenId) public view override(ERC721) returns (string memory) { require(_exists(tokenId), "Cannot query non-existent token"); return string(abi.encodePacked(_tokenBaseURI, tokenId.toString())); } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[],"stateMutability":"payable","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":"DICPIC_FREE_PRICE","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"DICPIC_GIFT","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"DICPIC_MAX","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"DICPIC_PER_FREE_MINT","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"DICPIC_PER_MINT","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"DICPIC_PRESALE","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"DICPIC_PRESALE_PRICE","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"DICPIC_PRICE","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"DICPIC_PUBLIC","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"entries","type":"address[]"}],"name":"addToPresaleList","outputs":[],"stateMutability":"nonpayable","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":"tokenQuantity","type":"uint256"}],"name":"buy","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"getApproved","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"receivers","type":"address[]"}],"name":"gift","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"giftedAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"operator","type":"address"}],"name":"isApprovedForAll","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"addr","type":"address"}],"name":"isPresaler","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"ownerOf","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenQuantity","type":"uint256"}],"name":"presaleBuy","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"presaleLive","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"presalePurchaseLimit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"addr","type":"address"}],"name":"presalePurchasedCount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"presalerList","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"presalerListPurchases","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"privateAmountMinted","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"publicAmountMinted","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"entries","type":"address[]"}],"name":"removeFromPresaleList","outputs":[],"stateMutability":"nonpayable","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":[],"name":"saleLive","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","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":"URI","type":"string"}],"name":"setBaseURI","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"number","type":"uint256"}],"name":"setDicPicPerMint","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"number","type":"uint256"}],"name":"setGiftAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"number","type":"uint256"}],"name":"setPresaleAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"number","type":"uint256"}],"name":"setPresalePrice","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"number","type":"uint256"}],"name":"setPrice","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"number","type":"uint256"}],"name":"setPublicAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"togglePresaleStatus","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"toggleSaleStatus","outputs":[],"stateMutability":"nonpayable","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":"withdrawTeam","outputs":[],"stateMutability":"nonpayable","type":"function"}]
Contract Creation Code
60806040526064600b556000600c55611324600d55600d54600c54600b54620000299190620002ef565b620000359190620002ef565b600e5566b1a2bc2ec50000600f556000601055666a94d74f43000060115560056012556040518060400160405280601b81526020017f68747470733a2f2f6d696e742e6469637069632e696f2f6170692f000000000081525060159080519060200190620000a59291906200023f565b50600d6019556040518060400160405280600681526020017f44696350696300000000000000000000000000000000000000000000000000008152506040518060400160405280600381526020017f446963000000000000000000000000000000000000000000000000000000000081525081600090805190602001906200012f9291906200023f565b508060019080519060200190620001489291906200023f565b5050506200016b6200015f6200017160201b60201c565b6200017960201b60201c565b620003ea565b600033905090565b6000600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b8280546200024d9062000356565b90600052602060002090601f016020900481019282620002715760008555620002bd565b82601f106200028c57805160ff1916838001178555620002bd565b82800160010185558215620002bd579182015b82811115620002bc5782518255916020019190600101906200029f565b5b509050620002cc9190620002d0565b5090565b5b80821115620002eb576000816000905550600101620002d1565b5090565b6000620002fc826200034c565b915062000309836200034c565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156200034157620003406200038c565b5b828201905092915050565b6000819050919050565b600060028204905060018216806200036f57607f821691505b60208210811415620003865762000385620003bb565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6156f880620003fa6000396000f3fe60806040526004361061031a5760003560e01c80637bffb4ce116101ab578063a22cb465116100f7578063c87b56dd11610095578063e081b7811161006f578063e081b78114610b94578063e985e9c514610bbf578063f2fde38b14610bfc578063f474307014610c255761031a565b8063c87b56dd14610b12578063cb9eb53314610b4f578063d96a094a14610b785761031a565b8063b179e060116100d1578063b179e06014610a7e578063b478320514610aa7578063b88d4fde14610ad2578063bb51f32d14610afb5761031a565b8063a22cb46514610a01578063a5dd800014610a2a578063a68443b314610a535761031a565b8063940f1ada116101645780639bf803161161013e5780639bf803161461091f5780639cf2e8d61461095c5780639e273b2f146109995780639e8f67c4146109d65761031a565b8063940f1ada1461089e57806395d89b41146108c957806397d60e39146108f45761031a565b80637bffb4ce146107c15780637d9da058146107d8578063815f7bbd1461080357806383a9e0491461081f5780638da5cb5b1461084a57806391b7f5ed146108755761031a565b806342842e0e1161026a57806359a12ad51161022357806370a08231116101fd57806370a0823114610719578063715018a61461075657806371ae61b61461076d5780637204a3c9146107985761031a565b806359a12ad5146106745780635ce7af1f1461069f5780636352211e146106dc5761031a565b806342842e0e146105685780634bea39a4146105915780634f6ccce7146105ba5780634fafe763146105f757806355f804b31461062257806357dc41341461064b5761031a565b806318160ddd116102d7578063255e034e116102b1578063255e034e146104ac5780632ca85f46146104d75780632f745c59146105025780633549345e1461053f5761031a565b806318160ddd1461042d5780631b57190e1461045857806323b872dd146104835761031a565b806301ffc9a71461031f578063049c5c491461035c57806306fdde0314610373578063081812fc1461039e578063095ea7b3146103db578063163e1e6114610404575b600080fd5b34801561032b57600080fd5b5061034660048036038101906103419190613e9b565b610c50565b60405161035391906145cc565b60405180910390f35b34801561036857600080fd5b50610371610cca565b005b34801561037f57600080fd5b50610388610d72565b60405161039591906145e7565b60405180910390f35b3480156103aa57600080fd5b506103c560048036038101906103c09190613f42565b610e04565b6040516103d29190614565565b60405180910390f35b3480156103e757600080fd5b5061040260048036038101906103fd9190613e0e565b610e89565b005b34801561041057600080fd5b5061042b60048036038101906104269190613e4e565b610fa1565b005b34801561043957600080fd5b50610442611160565b60405161044f9190614a29565b60405180910390f35b34801561046457600080fd5b5061046d61116d565b60405161047a9190614a29565b60405180910390f35b34801561048f57600080fd5b506104aa60048036038101906104a59190613cf8565b611173565b005b3480156104b857600080fd5b506104c16111d3565b6040516104ce9190614a29565b60405180910390f35b3480156104e357600080fd5b506104ec6111d9565b6040516104f99190614a29565b60405180910390f35b34801561050e57600080fd5b5061052960048036038101906105249190613e0e565b6111df565b6040516105369190614a29565b60405180910390f35b34801561054b57600080fd5b5061056660048036038101906105619190613f42565b611284565b005b34801561057457600080fd5b5061058f600480360381019061058a9190613cf8565b61130a565b005b34801561059d57600080fd5b506105b860048036038101906105b39190613f42565b61132a565b005b3480156105c657600080fd5b506105e160048036038101906105dc9190613f42565b6113b0565b6040516105ee9190614a29565b60405180910390f35b34801561060357600080fd5b5061060c611421565b6040516106199190614a29565b60405180910390f35b34801561062e57600080fd5b5061064960048036038101906106449190613ef5565b611427565b005b34801561065757600080fd5b50610672600480360381019061066d9190613f42565b6114b9565b005b34801561068057600080fd5b50610689611562565b6040516106969190614a29565b60405180910390f35b3480156106ab57600080fd5b506106c660048036038101906106c19190613c8b565b611568565b6040516106d39190614a29565b60405180910390f35b3480156106e857600080fd5b5061070360048036038101906106fe9190613f42565b6115b1565b6040516107109190614565565b60405180910390f35b34801561072557600080fd5b50610740600480360381019061073b9190613c8b565b611663565b60405161074d9190614a29565b60405180910390f35b34801561076257600080fd5b5061076b61171b565b005b34801561077957600080fd5b506107826117a3565b60405161078f9190614a29565b60405180910390f35b3480156107a457600080fd5b506107bf60048036038101906107ba9190613e4e565b6117a9565b005b3480156107cd57600080fd5b506107d66119cd565b005b3480156107e457600080fd5b506107ed611a75565b6040516107fa9190614a29565b60405180910390f35b61081d60048036038101906108189190613f42565b611a7b565b005b34801561082b57600080fd5b50610834611da9565b60405161084191906145cc565b60405180910390f35b34801561085657600080fd5b5061085f611dbc565b60405161086c9190614565565b60405180910390f35b34801561088157600080fd5b5061089c60048036038101906108979190613f42565b611de6565b005b3480156108aa57600080fd5b506108b3611e6c565b6040516108c09190614a29565b60405180910390f35b3480156108d557600080fd5b506108de611e72565b6040516108eb91906145e7565b60405180910390f35b34801561090057600080fd5b50610909611f04565b6040516109169190614a29565b60405180910390f35b34801561092b57600080fd5b5061094660048036038101906109419190613c8b565b611f0a565b6040516109539190614a29565b60405180910390f35b34801561096857600080fd5b50610983600480360381019061097e9190613c8b565b611f22565b60405161099091906145cc565b60405180910390f35b3480156109a557600080fd5b506109c060048036038101906109bb9190613c8b565b611f42565b6040516109cd91906145cc565b60405180910390f35b3480156109e257600080fd5b506109eb611f98565b6040516109f89190614a29565b60405180910390f35b348015610a0d57600080fd5b50610a286004803603810190610a239190613dce565b611f9d565b005b348015610a3657600080fd5b50610a516004803603810190610a4c9190613f42565b61211e565b005b348015610a5f57600080fd5b50610a686121c7565b604051610a759190614a29565b60405180910390f35b348015610a8a57600080fd5b50610aa56004803603810190610aa09190613e4e565b6121cd565b005b348015610ab357600080fd5b50610abc612364565b604051610ac99190614a29565b60405180910390f35b348015610ade57600080fd5b50610af96004803603810190610af49190613d4b565b61236a565b005b348015610b0757600080fd5b50610b106123cc565b005b348015610b1e57600080fd5b50610b396004803603810190610b349190613f42565b612497565b604051610b4691906145e7565b60405180910390f35b348015610b5b57600080fd5b50610b766004803603810190610b719190613f42565b612513565b005b610b926004803603810190610b8d9190613f42565b6125bc565b005b348015610ba057600080fd5b50610ba9612878565b604051610bb691906145cc565b60405180910390f35b348015610bcb57600080fd5b50610be66004803603810190610be19190613cb8565b61288b565b604051610bf391906145cc565b60405180910390f35b348015610c0857600080fd5b50610c236004803603810190610c1e9190613c8b565b61291f565b005b348015610c3157600080fd5b50610c3a612a17565b604051610c479190614a29565b60405180910390f35b60007f780e9d63000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480610cc35750610cc282612a1d565b5b9050919050565b610cd2612aff565b73ffffffffffffffffffffffffffffffffffffffff16610cf0611dbc565b73ffffffffffffffffffffffffffffffffffffffff1614610d46576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d3d90614869565b60405180910390fd5b601a60019054906101000a900460ff1615601a60016101000a81548160ff021916908315150217905550565b606060008054610d8190614cbd565b80601f0160208091040260200160405190810160405280929190818152602001828054610dad90614cbd565b8015610dfa5780601f10610dcf57610100808354040283529160200191610dfa565b820191906000526020600020905b815481529060010190602001808311610ddd57829003601f168201915b5050505050905090565b6000610e0f82612b07565b610e4e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e4590614849565b60405180910390fd5b6004600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b6000610e94826115b1565b90508073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610f05576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610efc90614929565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16610f24612aff565b73ffffffffffffffffffffffffffffffffffffffff161480610f535750610f5281610f4d612aff565b61288b565b5b610f92576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f8990614789565b60405180910390fd5b610f9c8383612b73565b505050565b610fa9612aff565b73ffffffffffffffffffffffffffffffffffffffff16610fc7611dbc565b73ffffffffffffffffffffffffffffffffffffffff161461101d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161101490614869565b60405180910390fd5b600e5482829050600161102e611160565b6110389190614af2565b6110429190614af2565b1115611083576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161107a906147e9565b60405180910390fd5b600b54828290506016546110979190614af2565b11156110d8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110cf906148a9565b60405180910390fd5b60005b8282905081101561115b57600060016110f2611160565b6110fc9190614af2565b905061112f84848481811061111457611113614e56565b5b90506020020160208101906111299190613c8b565b82612c2c565b6016600081548092919061114290614d20565b919050555050808061115390614d20565b9150506110db565b505050565b6000600880549050905090565b60165481565b61118461117e612aff565b82612c4a565b6111c3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111ba90614969565b60405180910390fd5b6111ce838383612d28565b505050565b600b5481565b600f5481565b60006111ea83611663565b821061122b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161122290614629565b60405180910390fd5b600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600083815260200190815260200160002054905092915050565b61128c612aff565b73ffffffffffffffffffffffffffffffffffffffff166112aa611dbc565b73ffffffffffffffffffffffffffffffffffffffff1614611300576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112f790614869565b60405180910390fd5b8060118190555050565b6113258383836040518060200160405280600081525061236a565b505050565b611332612aff565b73ffffffffffffffffffffffffffffffffffffffff16611350611dbc565b73ffffffffffffffffffffffffffffffffffffffff16146113a6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161139d90614869565b60405180910390fd5b8060128190555050565b60006113ba611160565b82106113fb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113f290614989565b60405180910390fd5b6008828154811061140f5761140e614e56565b5b90600052602060002001549050919050565b60105481565b61142f612aff565b73ffffffffffffffffffffffffffffffffffffffff1661144d611dbc565b73ffffffffffffffffffffffffffffffffffffffff16146114a3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161149a90614869565b60405180910390fd5b8181601591906114b4929190613a63565b505050565b6114c1612aff565b73ffffffffffffffffffffffffffffffffffffffff166114df611dbc565b73ffffffffffffffffffffffffffffffffffffffff1614611535576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161152c90614869565b60405180910390fd5b80600c81905550600d54600c54600b5461154f9190614af2565b6115599190614af2565b600e8190555050565b60185481565b6000601460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6000806002600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141561165a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611651906147c9565b60405180910390fd5b80915050919050565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156116d4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116cb906147a9565b60405180910390fd5b600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b611723612aff565b73ffffffffffffffffffffffffffffffffffffffff16611741611dbc565b73ffffffffffffffffffffffffffffffffffffffff1614611797576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161178e90614869565b60405180910390fd5b6117a16000612f84565b565b600e5481565b6117b1612aff565b73ffffffffffffffffffffffffffffffffffffffff166117cf611dbc565b73ffffffffffffffffffffffffffffffffffffffff1614611825576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161181c90614869565b60405180910390fd5b60005b828290508110156119c857600083838381811061184857611847614e56565b5b905060200201602081019061185d9190613c8b565b9050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156118cf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118c690614609565b60405180910390fd5b601360008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161561195c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161195390614749565b60405180910390fd5b6001601360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505080806119c090614d20565b915050611828565b505050565b6119d5612aff565b73ffffffffffffffffffffffffffffffffffffffff166119f3611dbc565b73ffffffffffffffffffffffffffffffffffffffff1614611a49576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a4090614869565b60405180910390fd5b601a60009054906101000a900460ff1615601a60006101000a81548160ff021916908315150217905550565b60115481565b601a60019054906101000a900460ff16158015611aa45750601a60009054906101000a900460ff165b611ae3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ada90614909565b60405180910390fd5b601360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16611b6f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b6690614a09565b60405180910390fd5b600e546001611b7c611160565b611b869190614af2565b10611bc6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bbd906146a9565b60405180910390fd5b600c5481601854611bd79190614af2565b1115611c18576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c0f906149a9565b60405180910390fd5b60195481601460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611c669190614af2565b1115611ca7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c9e906149c9565b60405180910390fd5b3481601154611cb69190614b79565b1115611cf7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cee90614889565b60405180910390fd5b60005b81811015611da55760006001611d0e611160565b611d189190614af2565b9050601460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000815480929190611d6a90614d20565b9190505550611d793382612c2c565b60186000815480929190611d8c90614d20565b9190505550508080611d9d90614d20565b915050611cfa565b5050565b601a60009054906101000a900460ff1681565b6000600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b611dee612aff565b73ffffffffffffffffffffffffffffffffffffffff16611e0c611dbc565b73ffffffffffffffffffffffffffffffffffffffff1614611e62576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e5990614869565b60405180910390fd5b80600f8190555050565b60175481565b606060018054611e8190614cbd565b80601f0160208091040260200160405190810160405280929190818152602001828054611ead90614cbd565b8015611efa5780601f10611ecf57610100808354040283529160200191611efa565b820191906000526020600020905b815481529060010190602001808311611edd57829003601f168201915b5050505050905090565b600c5481565b60146020528060005260406000206000915090505481565b60136020528060005260406000206000915054906101000a900460ff1681565b6000601360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b600181565b611fa5612aff565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612013576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161200a906146e9565b60405180910390fd5b8060056000612020612aff565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff166120cd612aff565b73ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c318360405161211291906145cc565b60405180910390a35050565b612126612aff565b73ffffffffffffffffffffffffffffffffffffffff16612144611dbc565b73ffffffffffffffffffffffffffffffffffffffff161461219a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161219190614869565b60405180910390fd5b80600b81905550600d54600c54600b546121b49190614af2565b6121be9190614af2565b600e8190555050565b600d5481565b6121d5612aff565b73ffffffffffffffffffffffffffffffffffffffff166121f3611dbc565b73ffffffffffffffffffffffffffffffffffffffff1614612249576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161224090614869565b60405180910390fd5b60005b8282905081101561235f57600083838381811061226c5761226b614e56565b5b90506020020160208101906122819190613c8b565b9050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156122f3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122ea90614609565b60405180910390fd5b6000601360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050808061235790614d20565b91505061224c565b505050565b60125481565b61237b612375612aff565b83612c4a565b6123ba576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123b190614969565b60405180910390fd5b6123c68484848461304a565b50505050565b6123d4612aff565b73ffffffffffffffffffffffffffffffffffffffff166123f2611dbc565b73ffffffffffffffffffffffffffffffffffffffff1614612448576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161243f90614869565b60405180910390fd5b60004790503373ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015612493573d6000803e3d6000fd5b5050565b60606124a282612b07565b6124e1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124d8906148e9565b60405180910390fd5b60156124ec836130a6565b6040516020016124fd929190614541565b6040516020818303038152906040529050919050565b61251b612aff565b73ffffffffffffffffffffffffffffffffffffffff16612539611dbc565b73ffffffffffffffffffffffffffffffffffffffff161461258f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161258690614869565b60405180910390fd5b80600d81905550600d54600c54600b546125a99190614af2565b6125b39190614af2565b600e8190555050565b601a60019054906101000a900460ff1661260b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161260290614709565b60405180910390fd5b601a60009054906101000a900460ff161561265b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161265290614769565b60405180910390fd5b600e546001612668611160565b6126729190614af2565b106126b2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126a9906146a9565b60405180910390fd5b600d54816017546126c39190614af2565b1115612704576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126fb90614949565b60405180910390fd5b601254811115612749576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612740906149e9565b60405180910390fd5b60005b818110156128745760006001612760611160565b61276a9190614af2565b905060648111801561277d575061012d81105b156127ed5760018311156127c6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127bd90614829565b60405180910390fd5b6127d03382612c2c565b601760008154809291906127e390614d20565b9190505550612860565b3483600f546127fc9190614b79565b111561283d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161283490614889565b60405180910390fd5b6128473382612c2c565b6017600081548092919061285a90614d20565b91905055505b50808061286c90614d20565b91505061274c565b5050565b601a60019054906101000a900460ff1681565b6000600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b612927612aff565b73ffffffffffffffffffffffffffffffffffffffff16612945611dbc565b73ffffffffffffffffffffffffffffffffffffffff161461299b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161299290614869565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415612a0b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a0290614669565b60405180910390fd5b612a1481612f84565b50565b60195481565b60007f80ac58cd000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480612ae857507f5b5e139f000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b80612af85750612af782613207565b5b9050919050565b600033905090565b60008073ffffffffffffffffffffffffffffffffffffffff166002600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614159050919050565b816004600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff16612be6836115b1565b73ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b612c46828260405180602001604052806000815250613271565b5050565b6000612c5582612b07565b612c94576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c8b90614729565b60405180910390fd5b6000612c9f836115b1565b90508073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161480612d0e57508373ffffffffffffffffffffffffffffffffffffffff16612cf684610e04565b73ffffffffffffffffffffffffffffffffffffffff16145b80612d1f5750612d1e818561288b565b5b91505092915050565b8273ffffffffffffffffffffffffffffffffffffffff16612d48826115b1565b73ffffffffffffffffffffffffffffffffffffffff1614612d9e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d95906148c9565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612e0e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612e05906146c9565b60405180910390fd5b612e198383836132cc565b612e24600082612b73565b6001600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254612e749190614bd3565b925050819055506001600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254612ecb9190614af2565b92505081905550816002600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4505050565b6000600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b613055848484612d28565b613061848484846133e0565b6130a0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161309790614649565b60405180910390fd5b50505050565b606060008214156130ee576040518060400160405280600181526020017f30000000000000000000000000000000000000000000000000000000000000008152509050613202565b600082905060005b6000821461312057808061310990614d20565b915050600a826131199190614b48565b91506130f6565b60008167ffffffffffffffff81111561313c5761313b614e85565b5b6040519080825280601f01601f19166020018201604052801561316e5781602001600182028036833780820191505090505b5090505b600085146131fb576001826131879190614bd3565b9150600a856131969190614d69565b60306131a29190614af2565b60f81b8183815181106131b8576131b7614e56565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600a856131f49190614b48565b9450613172565b8093505050505b919050565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b61327b8383613577565b61328860008484846133e0565b6132c7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016132be90614649565b60405180910390fd5b505050565b6132d7838383613745565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561331a576133158161374a565b613359565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614613358576133578382613793565b5b5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561339c5761339781613900565b6133db565b8273ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16146133da576133d982826139d1565b5b5b505050565b60006134018473ffffffffffffffffffffffffffffffffffffffff16613a50565b1561356a578373ffffffffffffffffffffffffffffffffffffffff1663150b7a0261342a612aff565b8786866040518563ffffffff1660e01b815260040161344c9493929190614580565b602060405180830381600087803b15801561346657600080fd5b505af192505050801561349757506040513d601f19601f820116820180604052508101906134949190613ec8565b60015b61351a573d80600081146134c7576040519150601f19603f3d011682016040523d82523d6000602084013e6134cc565b606091505b50600081511415613512576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161350990614649565b60405180910390fd5b805181602001fd5b63150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161491505061356f565b600190505b949350505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156135e7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016135de90614809565b60405180910390fd5b6135f081612b07565b15613630576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161362790614689565b60405180910390fd5b61363c600083836132cc565b6001600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461368c9190614af2565b92505081905550816002600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a45050565b505050565b6008805490506009600083815260200190815260200160002081905550600881908060018154018082558091505060019003906000526020600020016000909190919091505550565b600060016137a084611663565b6137aa9190614bd3565b905060006007600084815260200190815260200160002054905081811461388f576000600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600084815260200190815260200160002054905080600660008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600084815260200190815260200160002081905550816007600083815260200190815260200160002081905550505b6007600084815260200190815260200160002060009055600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008381526020019081526020016000206000905550505050565b600060016008805490506139149190614bd3565b905060006009600084815260200190815260200160002054905060006008838154811061394457613943614e56565b5b90600052602060002001549050806008838154811061396657613965614e56565b5b9060005260206000200181905550816009600083815260200190815260200160002081905550600960008581526020019081526020016000206000905560088054806139b5576139b4614e27565b5b6001900381819060005260206000200160009055905550505050565b60006139dc83611663565b905081600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600083815260200190815260200160002081905550806007600084815260200190815260200160002081905550505050565b600080823b905060008111915050919050565b828054613a6f90614cbd565b90600052602060002090601f016020900481019282613a915760008555613ad8565b82601f10613aaa57803560ff1916838001178555613ad8565b82800160010185558215613ad8579182015b82811115613ad7578235825591602001919060010190613abc565b5b509050613ae59190613ae9565b5090565b5b80821115613b02576000816000905550600101613aea565b5090565b6000613b19613b1484614a69565b614a44565b905082815260208101848484011115613b3557613b34614ec3565b5b613b40848285614c7b565b509392505050565b600081359050613b5781615666565b92915050565b60008083601f840112613b7357613b72614eb9565b5b8235905067ffffffffffffffff811115613b9057613b8f614eb4565b5b602083019150836020820283011115613bac57613bab614ebe565b5b9250929050565b600081359050613bc28161567d565b92915050565b600081359050613bd781615694565b92915050565b600081519050613bec81615694565b92915050565b600082601f830112613c0757613c06614eb9565b5b8135613c17848260208601613b06565b91505092915050565b60008083601f840112613c3657613c35614eb9565b5b8235905067ffffffffffffffff811115613c5357613c52614eb4565b5b602083019150836001820283011115613c6f57613c6e614ebe565b5b9250929050565b600081359050613c85816156ab565b92915050565b600060208284031215613ca157613ca0614ecd565b5b6000613caf84828501613b48565b91505092915050565b60008060408385031215613ccf57613cce614ecd565b5b6000613cdd85828601613b48565b9250506020613cee85828601613b48565b9150509250929050565b600080600060608486031215613d1157613d10614ecd565b5b6000613d1f86828701613b48565b9350506020613d3086828701613b48565b9250506040613d4186828701613c76565b9150509250925092565b60008060008060808587031215613d6557613d64614ecd565b5b6000613d7387828801613b48565b9450506020613d8487828801613b48565b9350506040613d9587828801613c76565b925050606085013567ffffffffffffffff811115613db657613db5614ec8565b5b613dc287828801613bf2565b91505092959194509250565b60008060408385031215613de557613de4614ecd565b5b6000613df385828601613b48565b9250506020613e0485828601613bb3565b9150509250929050565b60008060408385031215613e2557613e24614ecd565b5b6000613e3385828601613b48565b9250506020613e4485828601613c76565b9150509250929050565b60008060208385031215613e6557613e64614ecd565b5b600083013567ffffffffffffffff811115613e8357613e82614ec8565b5b613e8f85828601613b5d565b92509250509250929050565b600060208284031215613eb157613eb0614ecd565b5b6000613ebf84828501613bc8565b91505092915050565b600060208284031215613ede57613edd614ecd565b5b6000613eec84828501613bdd565b91505092915050565b60008060208385031215613f0c57613f0b614ecd565b5b600083013567ffffffffffffffff811115613f2a57613f29614ec8565b5b613f3685828601613c20565b92509250509250929050565b600060208284031215613f5857613f57614ecd565b5b6000613f6684828501613c76565b91505092915050565b613f7881614c07565b82525050565b613f8781614c19565b82525050565b6000613f9882614aaf565b613fa28185614ac5565b9350613fb2818560208601614c8a565b613fbb81614ed2565b840191505092915050565b6000613fd182614aba565b613fdb8185614ad6565b9350613feb818560208601614c8a565b613ff481614ed2565b840191505092915050565b600061400a82614aba565b6140148185614ae7565b9350614024818560208601614c8a565b80840191505092915050565b6000815461403d81614cbd565b6140478186614ae7565b945060018216600081146140625760018114614073576140a6565b60ff198316865281860193506140a6565b61407c85614a9a565b60005b8381101561409e5781548189015260018201915060208101905061407f565b838801955050505b50505092915050565b60006140bc600c83614ad6565b91506140c782614ee3565b602082019050919050565b60006140df602b83614ad6565b91506140ea82614f0c565b604082019050919050565b6000614102603283614ad6565b915061410d82614f5b565b604082019050919050565b6000614125602683614ad6565b915061413082614faa565b604082019050919050565b6000614148601c83614ad6565b915061415382614ff9565b602082019050919050565b600061416b600d83614ad6565b915061417682615022565b602082019050919050565b600061418e602483614ad6565b91506141998261504b565b604082019050919050565b60006141b1601983614ad6565b91506141bc8261509a565b602082019050919050565b60006141d4600b83614ad6565b91506141df826150c3565b602082019050919050565b60006141f7602c83614ad6565b9150614202826150ec565b604082019050919050565b600061421a600f83614ad6565b91506142258261513b565b602082019050919050565b600061423d600c83614ad6565b915061424882615164565b602082019050919050565b6000614260603883614ad6565b915061426b8261518d565b604082019050919050565b6000614283602a83614ad6565b915061428e826151dc565b604082019050919050565b60006142a6602983614ad6565b91506142b18261522b565b604082019050919050565b60006142c9600883614ad6565b91506142d48261527a565b602082019050919050565b60006142ec602083614ad6565b91506142f7826152a3565b602082019050919050565b600061430f601b83614ad6565b915061431a826152cc565b602082019050919050565b6000614332602c83614ad6565b915061433d826152f5565b604082019050919050565b6000614355602083614ad6565b915061436082615344565b602082019050919050565b6000614378601183614ad6565b91506143838261536d565b602082019050919050565b600061439b600b83614ad6565b91506143a682615396565b602082019050919050565b60006143be602983614ad6565b91506143c9826153bf565b604082019050919050565b60006143e1601f83614ad6565b91506143ec8261540e565b602082019050919050565b6000614404601983614ad6565b915061440f82615437565b602082019050919050565b6000614427602183614ad6565b915061443282615460565b604082019050919050565b600061444a600d83614ad6565b9150614455826154af565b602082019050919050565b600061446d603183614ad6565b9150614478826154d8565b604082019050919050565b6000614490602c83614ad6565b915061449b82615527565b604082019050919050565b60006144b3600e83614ad6565b91506144be82615576565b602082019050919050565b60006144d6602e83614ad6565b91506144e18261559f565b604082019050919050565b60006144f9601683614ad6565b9150614504826155ee565b602082019050919050565b600061451c602683614ad6565b915061452782615617565b604082019050919050565b61453b81614c71565b82525050565b600061454d8285614030565b91506145598284613fff565b91508190509392505050565b600060208201905061457a6000830184613f6f565b92915050565b60006080820190506145956000830187613f6f565b6145a26020830186613f6f565b6145af6040830185614532565b81810360608301526145c18184613f8d565b905095945050505050565b60006020820190506145e16000830184613f7e565b92915050565b600060208201905081810360008301526146018184613fc6565b905092915050565b60006020820190508181036000830152614622816140af565b9050919050565b60006020820190508181036000830152614642816140d2565b9050919050565b60006020820190508181036000830152614662816140f5565b9050919050565b6000602082019050818103600083015261468281614118565b9050919050565b600060208201905081810360008301526146a28161413b565b9050919050565b600060208201905081810360008301526146c28161415e565b9050919050565b600060208201905081810360008301526146e281614181565b9050919050565b60006020820190508181036000830152614702816141a4565b9050919050565b60006020820190508181036000830152614722816141c7565b9050919050565b60006020820190508181036000830152614742816141ea565b9050919050565b600060208201905081810360008301526147628161420d565b9050919050565b6000602082019050818103600083015261478281614230565b9050919050565b600060208201905081810360008301526147a281614253565b9050919050565b600060208201905081810360008301526147c281614276565b9050919050565b600060208201905081810360008301526147e281614299565b9050919050565b60006020820190508181036000830152614802816142bc565b9050919050565b60006020820190508181036000830152614822816142df565b9050919050565b6000602082019050818103600083015261484281614302565b9050919050565b6000602082019050818103600083015261486281614325565b9050919050565b6000602082019050818103600083015261488281614348565b9050919050565b600060208201905081810360008301526148a28161436b565b9050919050565b600060208201905081810360008301526148c28161438e565b9050919050565b600060208201905081810360008301526148e2816143b1565b9050919050565b60006020820190508181036000830152614902816143d4565b9050919050565b60006020820190508181036000830152614922816143f7565b9050919050565b600060208201905081810360008301526149428161441a565b9050919050565b600060208201905081810360008301526149628161443d565b9050919050565b6000602082019050818103600083015261498281614460565b9050919050565b600060208201905081810360008301526149a281614483565b9050919050565b600060208201905081810360008301526149c2816144a6565b9050919050565b600060208201905081810360008301526149e2816144c9565b9050919050565b60006020820190508181036000830152614a02816144ec565b9050919050565b60006020820190508181036000830152614a228161450f565b9050919050565b6000602082019050614a3e6000830184614532565b92915050565b6000614a4e614a5f565b9050614a5a8282614cef565b919050565b6000604051905090565b600067ffffffffffffffff821115614a8457614a83614e85565b5b614a8d82614ed2565b9050602081019050919050565b60008190508160005260206000209050919050565b600081519050919050565b600081519050919050565b600082825260208201905092915050565b600082825260208201905092915050565b600081905092915050565b6000614afd82614c71565b9150614b0883614c71565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115614b3d57614b3c614d9a565b5b828201905092915050565b6000614b5382614c71565b9150614b5e83614c71565b925082614b6e57614b6d614dc9565b5b828204905092915050565b6000614b8482614c71565b9150614b8f83614c71565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615614bc857614bc7614d9a565b5b828202905092915050565b6000614bde82614c71565b9150614be983614c71565b925082821015614bfc57614bfb614d9a565b5b828203905092915050565b6000614c1282614c51565b9050919050565b60008115159050919050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b82818337600083830152505050565b60005b83811015614ca8578082015181840152602081019050614c8d565b83811115614cb7576000848401525b50505050565b60006002820490506001821680614cd557607f821691505b60208210811415614ce957614ce8614df8565b5b50919050565b614cf882614ed2565b810181811067ffffffffffffffff82111715614d1757614d16614e85565b5b80604052505050565b6000614d2b82614c71565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415614d5e57614d5d614d9a565b5b600182019050919050565b6000614d7482614c71565b9150614d7f83614c71565b925082614d8f57614d8e614dc9565b5b828206905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f4e554c4c5f414444524553530000000000000000000000000000000000000000600082015250565b7f455243373231456e756d657261626c653a206f776e657220696e646578206f7560008201527f74206f6620626f756e6473000000000000000000000000000000000000000000602082015250565b7f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560008201527f63656976657220696d706c656d656e7465720000000000000000000000000000602082015250565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f4552433732313a20746f6b656e20616c7265616479206d696e74656400000000600082015250565b7f4f7574206f662073746f636b2e00000000000000000000000000000000000000600082015250565b7f4552433732313a207472616e7366657220746f20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b7f4552433732313a20617070726f766520746f2063616c6c657200000000000000600082015250565b7f53414c455f434c4f534544000000000000000000000000000000000000000000600082015250565b7f4552433732313a206f70657261746f7220717565727920666f72206e6f6e657860008201527f697374656e7420746f6b656e0000000000000000000000000000000000000000602082015250565b7f4455504c49434154455f454e5452590000000000000000000000000000000000600082015250565b7f4f4e4c595f50524553414c450000000000000000000000000000000000000000600082015250565b7f4552433732313a20617070726f76652063616c6c6572206973206e6f74206f7760008201527f6e6572206e6f7220617070726f76656420666f7220616c6c0000000000000000602082015250565b7f4552433732313a2062616c616e636520717565727920666f7220746865207a6560008201527f726f206164647265737300000000000000000000000000000000000000000000602082015250565b7f4552433732313a206f776e657220717565727920666f72206e6f6e657869737460008201527f656e7420746f6b656e0000000000000000000000000000000000000000000000602082015250565b7f4d41585f4d494e54000000000000000000000000000000000000000000000000600082015250565b7f4552433732313a206d696e7420746f20746865207a65726f2061646472657373600082015250565b7f4558434545445f4449435049435f5045525f465245455f4d494e540000000000600082015250565b7f4552433732313a20617070726f76656420717565727920666f72206e6f6e657860008201527f697374656e7420746f6b656e0000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f496e73756666696369656e74204554482e000000000000000000000000000000600082015250565b7f47494654535f454d505459000000000000000000000000000000000000000000600082015250565b7f4552433732313a207472616e73666572206f6620746f6b656e2074686174206960008201527f73206e6f74206f776e0000000000000000000000000000000000000000000000602082015250565b7f43616e6e6f74207175657279206e6f6e2d6578697374656e7420746f6b656e00600082015250565b7f5468652070726573616c65206861732066696e69736865642e00000000000000600082015250565b7f4552433732313a20617070726f76616c20746f2063757272656e74206f776e6560008201527f7200000000000000000000000000000000000000000000000000000000000000602082015250565b7f4558434545445f5055424c494300000000000000000000000000000000000000600082015250565b7f4552433732313a207472616e736665722063616c6c6572206973206e6f74206f60008201527f776e6572206e6f7220617070726f766564000000000000000000000000000000602082015250565b7f455243373231456e756d657261626c653a20676c6f62616c20696e646578206f60008201527f7574206f6620626f756e64730000000000000000000000000000000000000000602082015250565b7f4558434545445f50524956415445000000000000000000000000000000000000600082015250565b7f596f752068617665207265616368656420796f7572206d6178696d756d20707560008201527f72636861736520616d6f756e742e000000000000000000000000000000000000602082015250565b7f4558434545445f4449435049435f5045525f4d494e5400000000000000000000600082015250565b7f596f7520617265206e6f74207175616c696669656420666f722074686520707260008201527f6573616c652e0000000000000000000000000000000000000000000000000000602082015250565b61566f81614c07565b811461567a57600080fd5b50565b61568681614c19565b811461569157600080fd5b50565b61569d81614c25565b81146156a857600080fd5b50565b6156b481614c71565b81146156bf57600080fd5b5056fea2646970667358221220317ae91e9897dd7fddd8369f4518eb1cab45a162e62aade621add315a7b170b164736f6c63430008070033
Deployed Bytecode
0x60806040526004361061031a5760003560e01c80637bffb4ce116101ab578063a22cb465116100f7578063c87b56dd11610095578063e081b7811161006f578063e081b78114610b94578063e985e9c514610bbf578063f2fde38b14610bfc578063f474307014610c255761031a565b8063c87b56dd14610b12578063cb9eb53314610b4f578063d96a094a14610b785761031a565b8063b179e060116100d1578063b179e06014610a7e578063b478320514610aa7578063b88d4fde14610ad2578063bb51f32d14610afb5761031a565b8063a22cb46514610a01578063a5dd800014610a2a578063a68443b314610a535761031a565b8063940f1ada116101645780639bf803161161013e5780639bf803161461091f5780639cf2e8d61461095c5780639e273b2f146109995780639e8f67c4146109d65761031a565b8063940f1ada1461089e57806395d89b41146108c957806397d60e39146108f45761031a565b80637bffb4ce146107c15780637d9da058146107d8578063815f7bbd1461080357806383a9e0491461081f5780638da5cb5b1461084a57806391b7f5ed146108755761031a565b806342842e0e1161026a57806359a12ad51161022357806370a08231116101fd57806370a0823114610719578063715018a61461075657806371ae61b61461076d5780637204a3c9146107985761031a565b806359a12ad5146106745780635ce7af1f1461069f5780636352211e146106dc5761031a565b806342842e0e146105685780634bea39a4146105915780634f6ccce7146105ba5780634fafe763146105f757806355f804b31461062257806357dc41341461064b5761031a565b806318160ddd116102d7578063255e034e116102b1578063255e034e146104ac5780632ca85f46146104d75780632f745c59146105025780633549345e1461053f5761031a565b806318160ddd1461042d5780631b57190e1461045857806323b872dd146104835761031a565b806301ffc9a71461031f578063049c5c491461035c57806306fdde0314610373578063081812fc1461039e578063095ea7b3146103db578063163e1e6114610404575b600080fd5b34801561032b57600080fd5b5061034660048036038101906103419190613e9b565b610c50565b60405161035391906145cc565b60405180910390f35b34801561036857600080fd5b50610371610cca565b005b34801561037f57600080fd5b50610388610d72565b60405161039591906145e7565b60405180910390f35b3480156103aa57600080fd5b506103c560048036038101906103c09190613f42565b610e04565b6040516103d29190614565565b60405180910390f35b3480156103e757600080fd5b5061040260048036038101906103fd9190613e0e565b610e89565b005b34801561041057600080fd5b5061042b60048036038101906104269190613e4e565b610fa1565b005b34801561043957600080fd5b50610442611160565b60405161044f9190614a29565b60405180910390f35b34801561046457600080fd5b5061046d61116d565b60405161047a9190614a29565b60405180910390f35b34801561048f57600080fd5b506104aa60048036038101906104a59190613cf8565b611173565b005b3480156104b857600080fd5b506104c16111d3565b6040516104ce9190614a29565b60405180910390f35b3480156104e357600080fd5b506104ec6111d9565b6040516104f99190614a29565b60405180910390f35b34801561050e57600080fd5b5061052960048036038101906105249190613e0e565b6111df565b6040516105369190614a29565b60405180910390f35b34801561054b57600080fd5b5061056660048036038101906105619190613f42565b611284565b005b34801561057457600080fd5b5061058f600480360381019061058a9190613cf8565b61130a565b005b34801561059d57600080fd5b506105b860048036038101906105b39190613f42565b61132a565b005b3480156105c657600080fd5b506105e160048036038101906105dc9190613f42565b6113b0565b6040516105ee9190614a29565b60405180910390f35b34801561060357600080fd5b5061060c611421565b6040516106199190614a29565b60405180910390f35b34801561062e57600080fd5b5061064960048036038101906106449190613ef5565b611427565b005b34801561065757600080fd5b50610672600480360381019061066d9190613f42565b6114b9565b005b34801561068057600080fd5b50610689611562565b6040516106969190614a29565b60405180910390f35b3480156106ab57600080fd5b506106c660048036038101906106c19190613c8b565b611568565b6040516106d39190614a29565b60405180910390f35b3480156106e857600080fd5b5061070360048036038101906106fe9190613f42565b6115b1565b6040516107109190614565565b60405180910390f35b34801561072557600080fd5b50610740600480360381019061073b9190613c8b565b611663565b60405161074d9190614a29565b60405180910390f35b34801561076257600080fd5b5061076b61171b565b005b34801561077957600080fd5b506107826117a3565b60405161078f9190614a29565b60405180910390f35b3480156107a457600080fd5b506107bf60048036038101906107ba9190613e4e565b6117a9565b005b3480156107cd57600080fd5b506107d66119cd565b005b3480156107e457600080fd5b506107ed611a75565b6040516107fa9190614a29565b60405180910390f35b61081d60048036038101906108189190613f42565b611a7b565b005b34801561082b57600080fd5b50610834611da9565b60405161084191906145cc565b60405180910390f35b34801561085657600080fd5b5061085f611dbc565b60405161086c9190614565565b60405180910390f35b34801561088157600080fd5b5061089c60048036038101906108979190613f42565b611de6565b005b3480156108aa57600080fd5b506108b3611e6c565b6040516108c09190614a29565b60405180910390f35b3480156108d557600080fd5b506108de611e72565b6040516108eb91906145e7565b60405180910390f35b34801561090057600080fd5b50610909611f04565b6040516109169190614a29565b60405180910390f35b34801561092b57600080fd5b5061094660048036038101906109419190613c8b565b611f0a565b6040516109539190614a29565b60405180910390f35b34801561096857600080fd5b50610983600480360381019061097e9190613c8b565b611f22565b60405161099091906145cc565b60405180910390f35b3480156109a557600080fd5b506109c060048036038101906109bb9190613c8b565b611f42565b6040516109cd91906145cc565b60405180910390f35b3480156109e257600080fd5b506109eb611f98565b6040516109f89190614a29565b60405180910390f35b348015610a0d57600080fd5b50610a286004803603810190610a239190613dce565b611f9d565b005b348015610a3657600080fd5b50610a516004803603810190610a4c9190613f42565b61211e565b005b348015610a5f57600080fd5b50610a686121c7565b604051610a759190614a29565b60405180910390f35b348015610a8a57600080fd5b50610aa56004803603810190610aa09190613e4e565b6121cd565b005b348015610ab357600080fd5b50610abc612364565b604051610ac99190614a29565b60405180910390f35b348015610ade57600080fd5b50610af96004803603810190610af49190613d4b565b61236a565b005b348015610b0757600080fd5b50610b106123cc565b005b348015610b1e57600080fd5b50610b396004803603810190610b349190613f42565b612497565b604051610b4691906145e7565b60405180910390f35b348015610b5b57600080fd5b50610b766004803603810190610b719190613f42565b612513565b005b610b926004803603810190610b8d9190613f42565b6125bc565b005b348015610ba057600080fd5b50610ba9612878565b604051610bb691906145cc565b60405180910390f35b348015610bcb57600080fd5b50610be66004803603810190610be19190613cb8565b61288b565b604051610bf391906145cc565b60405180910390f35b348015610c0857600080fd5b50610c236004803603810190610c1e9190613c8b565b61291f565b005b348015610c3157600080fd5b50610c3a612a17565b604051610c479190614a29565b60405180910390f35b60007f780e9d63000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480610cc35750610cc282612a1d565b5b9050919050565b610cd2612aff565b73ffffffffffffffffffffffffffffffffffffffff16610cf0611dbc565b73ffffffffffffffffffffffffffffffffffffffff1614610d46576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d3d90614869565b60405180910390fd5b601a60019054906101000a900460ff1615601a60016101000a81548160ff021916908315150217905550565b606060008054610d8190614cbd565b80601f0160208091040260200160405190810160405280929190818152602001828054610dad90614cbd565b8015610dfa5780601f10610dcf57610100808354040283529160200191610dfa565b820191906000526020600020905b815481529060010190602001808311610ddd57829003601f168201915b5050505050905090565b6000610e0f82612b07565b610e4e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e4590614849565b60405180910390fd5b6004600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b6000610e94826115b1565b90508073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610f05576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610efc90614929565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16610f24612aff565b73ffffffffffffffffffffffffffffffffffffffff161480610f535750610f5281610f4d612aff565b61288b565b5b610f92576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f8990614789565b60405180910390fd5b610f9c8383612b73565b505050565b610fa9612aff565b73ffffffffffffffffffffffffffffffffffffffff16610fc7611dbc565b73ffffffffffffffffffffffffffffffffffffffff161461101d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161101490614869565b60405180910390fd5b600e5482829050600161102e611160565b6110389190614af2565b6110429190614af2565b1115611083576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161107a906147e9565b60405180910390fd5b600b54828290506016546110979190614af2565b11156110d8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110cf906148a9565b60405180910390fd5b60005b8282905081101561115b57600060016110f2611160565b6110fc9190614af2565b905061112f84848481811061111457611113614e56565b5b90506020020160208101906111299190613c8b565b82612c2c565b6016600081548092919061114290614d20565b919050555050808061115390614d20565b9150506110db565b505050565b6000600880549050905090565b60165481565b61118461117e612aff565b82612c4a565b6111c3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111ba90614969565b60405180910390fd5b6111ce838383612d28565b505050565b600b5481565b600f5481565b60006111ea83611663565b821061122b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161122290614629565b60405180910390fd5b600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600083815260200190815260200160002054905092915050565b61128c612aff565b73ffffffffffffffffffffffffffffffffffffffff166112aa611dbc565b73ffffffffffffffffffffffffffffffffffffffff1614611300576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112f790614869565b60405180910390fd5b8060118190555050565b6113258383836040518060200160405280600081525061236a565b505050565b611332612aff565b73ffffffffffffffffffffffffffffffffffffffff16611350611dbc565b73ffffffffffffffffffffffffffffffffffffffff16146113a6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161139d90614869565b60405180910390fd5b8060128190555050565b60006113ba611160565b82106113fb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113f290614989565b60405180910390fd5b6008828154811061140f5761140e614e56565b5b90600052602060002001549050919050565b60105481565b61142f612aff565b73ffffffffffffffffffffffffffffffffffffffff1661144d611dbc565b73ffffffffffffffffffffffffffffffffffffffff16146114a3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161149a90614869565b60405180910390fd5b8181601591906114b4929190613a63565b505050565b6114c1612aff565b73ffffffffffffffffffffffffffffffffffffffff166114df611dbc565b73ffffffffffffffffffffffffffffffffffffffff1614611535576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161152c90614869565b60405180910390fd5b80600c81905550600d54600c54600b5461154f9190614af2565b6115599190614af2565b600e8190555050565b60185481565b6000601460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6000806002600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141561165a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611651906147c9565b60405180910390fd5b80915050919050565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156116d4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116cb906147a9565b60405180910390fd5b600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b611723612aff565b73ffffffffffffffffffffffffffffffffffffffff16611741611dbc565b73ffffffffffffffffffffffffffffffffffffffff1614611797576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161178e90614869565b60405180910390fd5b6117a16000612f84565b565b600e5481565b6117b1612aff565b73ffffffffffffffffffffffffffffffffffffffff166117cf611dbc565b73ffffffffffffffffffffffffffffffffffffffff1614611825576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161181c90614869565b60405180910390fd5b60005b828290508110156119c857600083838381811061184857611847614e56565b5b905060200201602081019061185d9190613c8b565b9050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156118cf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118c690614609565b60405180910390fd5b601360008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161561195c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161195390614749565b60405180910390fd5b6001601360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505080806119c090614d20565b915050611828565b505050565b6119d5612aff565b73ffffffffffffffffffffffffffffffffffffffff166119f3611dbc565b73ffffffffffffffffffffffffffffffffffffffff1614611a49576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a4090614869565b60405180910390fd5b601a60009054906101000a900460ff1615601a60006101000a81548160ff021916908315150217905550565b60115481565b601a60019054906101000a900460ff16158015611aa45750601a60009054906101000a900460ff165b611ae3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ada90614909565b60405180910390fd5b601360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16611b6f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b6690614a09565b60405180910390fd5b600e546001611b7c611160565b611b869190614af2565b10611bc6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bbd906146a9565b60405180910390fd5b600c5481601854611bd79190614af2565b1115611c18576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c0f906149a9565b60405180910390fd5b60195481601460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611c669190614af2565b1115611ca7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c9e906149c9565b60405180910390fd5b3481601154611cb69190614b79565b1115611cf7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cee90614889565b60405180910390fd5b60005b81811015611da55760006001611d0e611160565b611d189190614af2565b9050601460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000815480929190611d6a90614d20565b9190505550611d793382612c2c565b60186000815480929190611d8c90614d20565b9190505550508080611d9d90614d20565b915050611cfa565b5050565b601a60009054906101000a900460ff1681565b6000600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b611dee612aff565b73ffffffffffffffffffffffffffffffffffffffff16611e0c611dbc565b73ffffffffffffffffffffffffffffffffffffffff1614611e62576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e5990614869565b60405180910390fd5b80600f8190555050565b60175481565b606060018054611e8190614cbd565b80601f0160208091040260200160405190810160405280929190818152602001828054611ead90614cbd565b8015611efa5780601f10611ecf57610100808354040283529160200191611efa565b820191906000526020600020905b815481529060010190602001808311611edd57829003601f168201915b5050505050905090565b600c5481565b60146020528060005260406000206000915090505481565b60136020528060005260406000206000915054906101000a900460ff1681565b6000601360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b600181565b611fa5612aff565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612013576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161200a906146e9565b60405180910390fd5b8060056000612020612aff565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff166120cd612aff565b73ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c318360405161211291906145cc565b60405180910390a35050565b612126612aff565b73ffffffffffffffffffffffffffffffffffffffff16612144611dbc565b73ffffffffffffffffffffffffffffffffffffffff161461219a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161219190614869565b60405180910390fd5b80600b81905550600d54600c54600b546121b49190614af2565b6121be9190614af2565b600e8190555050565b600d5481565b6121d5612aff565b73ffffffffffffffffffffffffffffffffffffffff166121f3611dbc565b73ffffffffffffffffffffffffffffffffffffffff1614612249576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161224090614869565b60405180910390fd5b60005b8282905081101561235f57600083838381811061226c5761226b614e56565b5b90506020020160208101906122819190613c8b565b9050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156122f3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122ea90614609565b60405180910390fd5b6000601360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050808061235790614d20565b91505061224c565b505050565b60125481565b61237b612375612aff565b83612c4a565b6123ba576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123b190614969565b60405180910390fd5b6123c68484848461304a565b50505050565b6123d4612aff565b73ffffffffffffffffffffffffffffffffffffffff166123f2611dbc565b73ffffffffffffffffffffffffffffffffffffffff1614612448576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161243f90614869565b60405180910390fd5b60004790503373ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015612493573d6000803e3d6000fd5b5050565b60606124a282612b07565b6124e1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124d8906148e9565b60405180910390fd5b60156124ec836130a6565b6040516020016124fd929190614541565b6040516020818303038152906040529050919050565b61251b612aff565b73ffffffffffffffffffffffffffffffffffffffff16612539611dbc565b73ffffffffffffffffffffffffffffffffffffffff161461258f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161258690614869565b60405180910390fd5b80600d81905550600d54600c54600b546125a99190614af2565b6125b39190614af2565b600e8190555050565b601a60019054906101000a900460ff1661260b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161260290614709565b60405180910390fd5b601a60009054906101000a900460ff161561265b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161265290614769565b60405180910390fd5b600e546001612668611160565b6126729190614af2565b106126b2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126a9906146a9565b60405180910390fd5b600d54816017546126c39190614af2565b1115612704576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126fb90614949565b60405180910390fd5b601254811115612749576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612740906149e9565b60405180910390fd5b60005b818110156128745760006001612760611160565b61276a9190614af2565b905060648111801561277d575061012d81105b156127ed5760018311156127c6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127bd90614829565b60405180910390fd5b6127d03382612c2c565b601760008154809291906127e390614d20565b9190505550612860565b3483600f546127fc9190614b79565b111561283d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161283490614889565b60405180910390fd5b6128473382612c2c565b6017600081548092919061285a90614d20565b91905055505b50808061286c90614d20565b91505061274c565b5050565b601a60019054906101000a900460ff1681565b6000600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b612927612aff565b73ffffffffffffffffffffffffffffffffffffffff16612945611dbc565b73ffffffffffffffffffffffffffffffffffffffff161461299b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161299290614869565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415612a0b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a0290614669565b60405180910390fd5b612a1481612f84565b50565b60195481565b60007f80ac58cd000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480612ae857507f5b5e139f000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b80612af85750612af782613207565b5b9050919050565b600033905090565b60008073ffffffffffffffffffffffffffffffffffffffff166002600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614159050919050565b816004600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff16612be6836115b1565b73ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b612c46828260405180602001604052806000815250613271565b5050565b6000612c5582612b07565b612c94576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c8b90614729565b60405180910390fd5b6000612c9f836115b1565b90508073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161480612d0e57508373ffffffffffffffffffffffffffffffffffffffff16612cf684610e04565b73ffffffffffffffffffffffffffffffffffffffff16145b80612d1f5750612d1e818561288b565b5b91505092915050565b8273ffffffffffffffffffffffffffffffffffffffff16612d48826115b1565b73ffffffffffffffffffffffffffffffffffffffff1614612d9e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d95906148c9565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612e0e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612e05906146c9565b60405180910390fd5b612e198383836132cc565b612e24600082612b73565b6001600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254612e749190614bd3565b925050819055506001600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254612ecb9190614af2565b92505081905550816002600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4505050565b6000600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b613055848484612d28565b613061848484846133e0565b6130a0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161309790614649565b60405180910390fd5b50505050565b606060008214156130ee576040518060400160405280600181526020017f30000000000000000000000000000000000000000000000000000000000000008152509050613202565b600082905060005b6000821461312057808061310990614d20565b915050600a826131199190614b48565b91506130f6565b60008167ffffffffffffffff81111561313c5761313b614e85565b5b6040519080825280601f01601f19166020018201604052801561316e5781602001600182028036833780820191505090505b5090505b600085146131fb576001826131879190614bd3565b9150600a856131969190614d69565b60306131a29190614af2565b60f81b8183815181106131b8576131b7614e56565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600a856131f49190614b48565b9450613172565b8093505050505b919050565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b61327b8383613577565b61328860008484846133e0565b6132c7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016132be90614649565b60405180910390fd5b505050565b6132d7838383613745565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561331a576133158161374a565b613359565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614613358576133578382613793565b5b5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561339c5761339781613900565b6133db565b8273ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16146133da576133d982826139d1565b5b5b505050565b60006134018473ffffffffffffffffffffffffffffffffffffffff16613a50565b1561356a578373ffffffffffffffffffffffffffffffffffffffff1663150b7a0261342a612aff565b8786866040518563ffffffff1660e01b815260040161344c9493929190614580565b602060405180830381600087803b15801561346657600080fd5b505af192505050801561349757506040513d601f19601f820116820180604052508101906134949190613ec8565b60015b61351a573d80600081146134c7576040519150601f19603f3d011682016040523d82523d6000602084013e6134cc565b606091505b50600081511415613512576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161350990614649565b60405180910390fd5b805181602001fd5b63150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161491505061356f565b600190505b949350505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156135e7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016135de90614809565b60405180910390fd5b6135f081612b07565b15613630576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161362790614689565b60405180910390fd5b61363c600083836132cc565b6001600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461368c9190614af2565b92505081905550816002600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a45050565b505050565b6008805490506009600083815260200190815260200160002081905550600881908060018154018082558091505060019003906000526020600020016000909190919091505550565b600060016137a084611663565b6137aa9190614bd3565b905060006007600084815260200190815260200160002054905081811461388f576000600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600084815260200190815260200160002054905080600660008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600084815260200190815260200160002081905550816007600083815260200190815260200160002081905550505b6007600084815260200190815260200160002060009055600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008381526020019081526020016000206000905550505050565b600060016008805490506139149190614bd3565b905060006009600084815260200190815260200160002054905060006008838154811061394457613943614e56565b5b90600052602060002001549050806008838154811061396657613965614e56565b5b9060005260206000200181905550816009600083815260200190815260200160002081905550600960008581526020019081526020016000206000905560088054806139b5576139b4614e27565b5b6001900381819060005260206000200160009055905550505050565b60006139dc83611663565b905081600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600083815260200190815260200160002081905550806007600084815260200190815260200160002081905550505050565b600080823b905060008111915050919050565b828054613a6f90614cbd565b90600052602060002090601f016020900481019282613a915760008555613ad8565b82601f10613aaa57803560ff1916838001178555613ad8565b82800160010185558215613ad8579182015b82811115613ad7578235825591602001919060010190613abc565b5b509050613ae59190613ae9565b5090565b5b80821115613b02576000816000905550600101613aea565b5090565b6000613b19613b1484614a69565b614a44565b905082815260208101848484011115613b3557613b34614ec3565b5b613b40848285614c7b565b509392505050565b600081359050613b5781615666565b92915050565b60008083601f840112613b7357613b72614eb9565b5b8235905067ffffffffffffffff811115613b9057613b8f614eb4565b5b602083019150836020820283011115613bac57613bab614ebe565b5b9250929050565b600081359050613bc28161567d565b92915050565b600081359050613bd781615694565b92915050565b600081519050613bec81615694565b92915050565b600082601f830112613c0757613c06614eb9565b5b8135613c17848260208601613b06565b91505092915050565b60008083601f840112613c3657613c35614eb9565b5b8235905067ffffffffffffffff811115613c5357613c52614eb4565b5b602083019150836001820283011115613c6f57613c6e614ebe565b5b9250929050565b600081359050613c85816156ab565b92915050565b600060208284031215613ca157613ca0614ecd565b5b6000613caf84828501613b48565b91505092915050565b60008060408385031215613ccf57613cce614ecd565b5b6000613cdd85828601613b48565b9250506020613cee85828601613b48565b9150509250929050565b600080600060608486031215613d1157613d10614ecd565b5b6000613d1f86828701613b48565b9350506020613d3086828701613b48565b9250506040613d4186828701613c76565b9150509250925092565b60008060008060808587031215613d6557613d64614ecd565b5b6000613d7387828801613b48565b9450506020613d8487828801613b48565b9350506040613d9587828801613c76565b925050606085013567ffffffffffffffff811115613db657613db5614ec8565b5b613dc287828801613bf2565b91505092959194509250565b60008060408385031215613de557613de4614ecd565b5b6000613df385828601613b48565b9250506020613e0485828601613bb3565b9150509250929050565b60008060408385031215613e2557613e24614ecd565b5b6000613e3385828601613b48565b9250506020613e4485828601613c76565b9150509250929050565b60008060208385031215613e6557613e64614ecd565b5b600083013567ffffffffffffffff811115613e8357613e82614ec8565b5b613e8f85828601613b5d565b92509250509250929050565b600060208284031215613eb157613eb0614ecd565b5b6000613ebf84828501613bc8565b91505092915050565b600060208284031215613ede57613edd614ecd565b5b6000613eec84828501613bdd565b91505092915050565b60008060208385031215613f0c57613f0b614ecd565b5b600083013567ffffffffffffffff811115613f2a57613f29614ec8565b5b613f3685828601613c20565b92509250509250929050565b600060208284031215613f5857613f57614ecd565b5b6000613f6684828501613c76565b91505092915050565b613f7881614c07565b82525050565b613f8781614c19565b82525050565b6000613f9882614aaf565b613fa28185614ac5565b9350613fb2818560208601614c8a565b613fbb81614ed2565b840191505092915050565b6000613fd182614aba565b613fdb8185614ad6565b9350613feb818560208601614c8a565b613ff481614ed2565b840191505092915050565b600061400a82614aba565b6140148185614ae7565b9350614024818560208601614c8a565b80840191505092915050565b6000815461403d81614cbd565b6140478186614ae7565b945060018216600081146140625760018114614073576140a6565b60ff198316865281860193506140a6565b61407c85614a9a565b60005b8381101561409e5781548189015260018201915060208101905061407f565b838801955050505b50505092915050565b60006140bc600c83614ad6565b91506140c782614ee3565b602082019050919050565b60006140df602b83614ad6565b91506140ea82614f0c565b604082019050919050565b6000614102603283614ad6565b915061410d82614f5b565b604082019050919050565b6000614125602683614ad6565b915061413082614faa565b604082019050919050565b6000614148601c83614ad6565b915061415382614ff9565b602082019050919050565b600061416b600d83614ad6565b915061417682615022565b602082019050919050565b600061418e602483614ad6565b91506141998261504b565b604082019050919050565b60006141b1601983614ad6565b91506141bc8261509a565b602082019050919050565b60006141d4600b83614ad6565b91506141df826150c3565b602082019050919050565b60006141f7602c83614ad6565b9150614202826150ec565b604082019050919050565b600061421a600f83614ad6565b91506142258261513b565b602082019050919050565b600061423d600c83614ad6565b915061424882615164565b602082019050919050565b6000614260603883614ad6565b915061426b8261518d565b604082019050919050565b6000614283602a83614ad6565b915061428e826151dc565b604082019050919050565b60006142a6602983614ad6565b91506142b18261522b565b604082019050919050565b60006142c9600883614ad6565b91506142d48261527a565b602082019050919050565b60006142ec602083614ad6565b91506142f7826152a3565b602082019050919050565b600061430f601b83614ad6565b915061431a826152cc565b602082019050919050565b6000614332602c83614ad6565b915061433d826152f5565b604082019050919050565b6000614355602083614ad6565b915061436082615344565b602082019050919050565b6000614378601183614ad6565b91506143838261536d565b602082019050919050565b600061439b600b83614ad6565b91506143a682615396565b602082019050919050565b60006143be602983614ad6565b91506143c9826153bf565b604082019050919050565b60006143e1601f83614ad6565b91506143ec8261540e565b602082019050919050565b6000614404601983614ad6565b915061440f82615437565b602082019050919050565b6000614427602183614ad6565b915061443282615460565b604082019050919050565b600061444a600d83614ad6565b9150614455826154af565b602082019050919050565b600061446d603183614ad6565b9150614478826154d8565b604082019050919050565b6000614490602c83614ad6565b915061449b82615527565b604082019050919050565b60006144b3600e83614ad6565b91506144be82615576565b602082019050919050565b60006144d6602e83614ad6565b91506144e18261559f565b604082019050919050565b60006144f9601683614ad6565b9150614504826155ee565b602082019050919050565b600061451c602683614ad6565b915061452782615617565b604082019050919050565b61453b81614c71565b82525050565b600061454d8285614030565b91506145598284613fff565b91508190509392505050565b600060208201905061457a6000830184613f6f565b92915050565b60006080820190506145956000830187613f6f565b6145a26020830186613f6f565b6145af6040830185614532565b81810360608301526145c18184613f8d565b905095945050505050565b60006020820190506145e16000830184613f7e565b92915050565b600060208201905081810360008301526146018184613fc6565b905092915050565b60006020820190508181036000830152614622816140af565b9050919050565b60006020820190508181036000830152614642816140d2565b9050919050565b60006020820190508181036000830152614662816140f5565b9050919050565b6000602082019050818103600083015261468281614118565b9050919050565b600060208201905081810360008301526146a28161413b565b9050919050565b600060208201905081810360008301526146c28161415e565b9050919050565b600060208201905081810360008301526146e281614181565b9050919050565b60006020820190508181036000830152614702816141a4565b9050919050565b60006020820190508181036000830152614722816141c7565b9050919050565b60006020820190508181036000830152614742816141ea565b9050919050565b600060208201905081810360008301526147628161420d565b9050919050565b6000602082019050818103600083015261478281614230565b9050919050565b600060208201905081810360008301526147a281614253565b9050919050565b600060208201905081810360008301526147c281614276565b9050919050565b600060208201905081810360008301526147e281614299565b9050919050565b60006020820190508181036000830152614802816142bc565b9050919050565b60006020820190508181036000830152614822816142df565b9050919050565b6000602082019050818103600083015261484281614302565b9050919050565b6000602082019050818103600083015261486281614325565b9050919050565b6000602082019050818103600083015261488281614348565b9050919050565b600060208201905081810360008301526148a28161436b565b9050919050565b600060208201905081810360008301526148c28161438e565b9050919050565b600060208201905081810360008301526148e2816143b1565b9050919050565b60006020820190508181036000830152614902816143d4565b9050919050565b60006020820190508181036000830152614922816143f7565b9050919050565b600060208201905081810360008301526149428161441a565b9050919050565b600060208201905081810360008301526149628161443d565b9050919050565b6000602082019050818103600083015261498281614460565b9050919050565b600060208201905081810360008301526149a281614483565b9050919050565b600060208201905081810360008301526149c2816144a6565b9050919050565b600060208201905081810360008301526149e2816144c9565b9050919050565b60006020820190508181036000830152614a02816144ec565b9050919050565b60006020820190508181036000830152614a228161450f565b9050919050565b6000602082019050614a3e6000830184614532565b92915050565b6000614a4e614a5f565b9050614a5a8282614cef565b919050565b6000604051905090565b600067ffffffffffffffff821115614a8457614a83614e85565b5b614a8d82614ed2565b9050602081019050919050565b60008190508160005260206000209050919050565b600081519050919050565b600081519050919050565b600082825260208201905092915050565b600082825260208201905092915050565b600081905092915050565b6000614afd82614c71565b9150614b0883614c71565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115614b3d57614b3c614d9a565b5b828201905092915050565b6000614b5382614c71565b9150614b5e83614c71565b925082614b6e57614b6d614dc9565b5b828204905092915050565b6000614b8482614c71565b9150614b8f83614c71565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615614bc857614bc7614d9a565b5b828202905092915050565b6000614bde82614c71565b9150614be983614c71565b925082821015614bfc57614bfb614d9a565b5b828203905092915050565b6000614c1282614c51565b9050919050565b60008115159050919050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b82818337600083830152505050565b60005b83811015614ca8578082015181840152602081019050614c8d565b83811115614cb7576000848401525b50505050565b60006002820490506001821680614cd557607f821691505b60208210811415614ce957614ce8614df8565b5b50919050565b614cf882614ed2565b810181811067ffffffffffffffff82111715614d1757614d16614e85565b5b80604052505050565b6000614d2b82614c71565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415614d5e57614d5d614d9a565b5b600182019050919050565b6000614d7482614c71565b9150614d7f83614c71565b925082614d8f57614d8e614dc9565b5b828206905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f4e554c4c5f414444524553530000000000000000000000000000000000000000600082015250565b7f455243373231456e756d657261626c653a206f776e657220696e646578206f7560008201527f74206f6620626f756e6473000000000000000000000000000000000000000000602082015250565b7f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560008201527f63656976657220696d706c656d656e7465720000000000000000000000000000602082015250565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f4552433732313a20746f6b656e20616c7265616479206d696e74656400000000600082015250565b7f4f7574206f662073746f636b2e00000000000000000000000000000000000000600082015250565b7f4552433732313a207472616e7366657220746f20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b7f4552433732313a20617070726f766520746f2063616c6c657200000000000000600082015250565b7f53414c455f434c4f534544000000000000000000000000000000000000000000600082015250565b7f4552433732313a206f70657261746f7220717565727920666f72206e6f6e657860008201527f697374656e7420746f6b656e0000000000000000000000000000000000000000602082015250565b7f4455504c49434154455f454e5452590000000000000000000000000000000000600082015250565b7f4f4e4c595f50524553414c450000000000000000000000000000000000000000600082015250565b7f4552433732313a20617070726f76652063616c6c6572206973206e6f74206f7760008201527f6e6572206e6f7220617070726f76656420666f7220616c6c0000000000000000602082015250565b7f4552433732313a2062616c616e636520717565727920666f7220746865207a6560008201527f726f206164647265737300000000000000000000000000000000000000000000602082015250565b7f4552433732313a206f776e657220717565727920666f72206e6f6e657869737460008201527f656e7420746f6b656e0000000000000000000000000000000000000000000000602082015250565b7f4d41585f4d494e54000000000000000000000000000000000000000000000000600082015250565b7f4552433732313a206d696e7420746f20746865207a65726f2061646472657373600082015250565b7f4558434545445f4449435049435f5045525f465245455f4d494e540000000000600082015250565b7f4552433732313a20617070726f76656420717565727920666f72206e6f6e657860008201527f697374656e7420746f6b656e0000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f496e73756666696369656e74204554482e000000000000000000000000000000600082015250565b7f47494654535f454d505459000000000000000000000000000000000000000000600082015250565b7f4552433732313a207472616e73666572206f6620746f6b656e2074686174206960008201527f73206e6f74206f776e0000000000000000000000000000000000000000000000602082015250565b7f43616e6e6f74207175657279206e6f6e2d6578697374656e7420746f6b656e00600082015250565b7f5468652070726573616c65206861732066696e69736865642e00000000000000600082015250565b7f4552433732313a20617070726f76616c20746f2063757272656e74206f776e6560008201527f7200000000000000000000000000000000000000000000000000000000000000602082015250565b7f4558434545445f5055424c494300000000000000000000000000000000000000600082015250565b7f4552433732313a207472616e736665722063616c6c6572206973206e6f74206f60008201527f776e6572206e6f7220617070726f766564000000000000000000000000000000602082015250565b7f455243373231456e756d657261626c653a20676c6f62616c20696e646578206f60008201527f7574206f6620626f756e64730000000000000000000000000000000000000000602082015250565b7f4558434545445f50524956415445000000000000000000000000000000000000600082015250565b7f596f752068617665207265616368656420796f7572206d6178696d756d20707560008201527f72636861736520616d6f756e742e000000000000000000000000000000000000602082015250565b7f4558434545445f4449435049435f5045525f4d494e5400000000000000000000600082015250565b7f596f7520617265206e6f74207175616c696669656420666f722074686520707260008201527f6573616c652e0000000000000000000000000000000000000000000000000000602082015250565b61566f81614c07565b811461567a57600080fd5b50565b61568681614c19565b811461569157600080fd5b50565b61569d81614c25565b81146156a857600080fd5b50565b6156b481614c71565b81146156bf57600080fd5b5056fea2646970667358221220317ae91e9897dd7fddd8369f4518eb1cab45a162e62aade621add315a7b170b164736f6c63430008070033
Deployed Bytecode Sourcemap
24336:5772:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15020:224;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;26108:86;;;;;;;;;;;;;:::i;:::-;;3856:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4929:221;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4512:411;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;28058:446;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15512:113;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;25076:27;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5633:339;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;24450:32;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;24650:39;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15250:256;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;29747:108;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5980:185;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;29538:104;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15631:233;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;24696:42;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;28911:98;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;29015:171;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;25150:34;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;28775:130;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3611:239;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3397:208;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23769:94;;;;;;;;;;;;;:::i;:::-;;24571:72;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;25350:351;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;26007:95;;;;;;;;;;;;;:::i;:::-;;24745:47;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;27170:882;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;25238:23;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23550:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;29648:93;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;25110:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3962:104;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;24489:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;24946:56;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;24895:44;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;28662:107;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;24840:48;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5158:295;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;29367:165;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;24529:35;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;25707:294;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;24799:34;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6171:328;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;28510:146;;;;;;;;;;;;;:::i;:::-;;29861:244;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;29192:169;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;26200:964;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;25268:20;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5461:164;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23869:192;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;25191:40;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15020:224;15122:4;15161:35;15146:50;;;:11;:50;;;;:90;;;;15200:36;15224:11;15200:23;:36::i;:::-;15146:90;15139:97;;15020:224;;;:::o;26108:86::-;23694:12;:10;:12::i;:::-;23683:23;;:7;:5;:7::i;:::-;:23;;;23675:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;26178:8:::1;;;;;;;;;;;26177:9;26166:8;;:20;;;;;;;;;;;;;;;;;;26108:86::o:0;3856:100::-;3910:13;3943:5;3936:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3856:100;:::o;4929:221::-;5005:7;5033:16;5041:7;5033;:16::i;:::-;5025:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;5118:15;:24;5134:7;5118:24;;;;;;;;;;;;;;;;;;;;;5111:31;;4929:221;;;:::o;4512:411::-;4593:13;4609:23;4624:7;4609:14;:23::i;:::-;4593:39;;4657:5;4651:11;;:2;:11;;;;4643:57;;;;;;;;;;;;:::i;:::-;;;;;;;;;4751:5;4735:21;;:12;:10;:12::i;:::-;:21;;;:62;;;;4760:37;4777:5;4784:12;:10;:12::i;:::-;4760:16;:37::i;:::-;4735:62;4713:168;;;;;;;;;;;;:::i;:::-;;;;;;;;;4894:21;4903:2;4907:7;4894:8;:21::i;:::-;4582:341;4512:411;;:::o;28058:446::-;23694:12;:10;:12::i;:::-;23683:23;;:7;:5;:7::i;:::-;:23;;;23675:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;28182:10:::1;;28162:9;;:16;;28157:1;28141:13;:11;:13::i;:::-;:17;;;;:::i;:::-;28140:38;;;;:::i;:::-;:52;;28132:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;28259:11;;28239:9;;:16;;28224:12;;:31;;;;:::i;:::-;:46;;28216:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;28302:9;28297:200;28321:9;;:16;;28317:1;:20;28297:200;;;28359:12;28390:1;28374:13;:11;:13::i;:::-;:17;;;;:::i;:::-;28359:32;;28424;28434:9;;28444:1;28434:12;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;28448:7;28424:9;:32::i;:::-;28471:12;;:14;;;;;;;;;:::i;:::-;;;;;;28344:153;28339:3;;;;;:::i;:::-;;;;28297:200;;;;28058:446:::0;;:::o;15512:113::-;15573:7;15600:10;:17;;;;15593:24;;15512:113;:::o;25076:27::-;;;;:::o;5633:339::-;5828:41;5847:12;:10;:12::i;:::-;5861:7;5828:18;:41::i;:::-;5820:103;;;;;;;;;;;;:::i;:::-;;;;;;;;;5936:28;5946:4;5952:2;5956:7;5936:9;:28::i;:::-;5633:339;;;:::o;24450:32::-;;;;:::o;24650:39::-;;;;:::o;15250:256::-;15347:7;15383:23;15400:5;15383:16;:23::i;:::-;15375:5;:31;15367:87;;;;;;;;;;;;:::i;:::-;;;;;;;;;15472:12;:19;15485:5;15472:19;;;;;;;;;;;;;;;:26;15492:5;15472:26;;;;;;;;;;;;15465:33;;15250:256;;;;:::o;29747:108::-;23694:12;:10;:12::i;:::-;23683:23;;:7;:5;:7::i;:::-;:23;;;23675:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;29841:6:::1;29818:20;:29;;;;29747:108:::0;:::o;5980:185::-;6118:39;6135:4;6141:2;6145:7;6118:39;;;;;;;;;;;;:16;:39::i;:::-;5980:185;;;:::o;29538:104::-;23694:12;:10;:12::i;:::-;23683:23;;:7;:5;:7::i;:::-;:23;;;23675:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;29628:6:::1;29610:15;:24;;;;29538:104:::0;:::o;15631:233::-;15706:7;15742:30;:28;:30::i;:::-;15734:5;:38;15726:95;;;;;;;;;;;;:::i;:::-;;;;;;;;;15839:10;15850:5;15839:17;;;;;;;;:::i;:::-;;;;;;;;;;15832:24;;15631:233;;;:::o;24696:42::-;;;;:::o;28911:98::-;23694:12;:10;:12::i;:::-;23683:23;;:7;:5;:7::i;:::-;:23;;;23675:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;28998:3:::1;;28982:13;:19;;;;;;;:::i;:::-;;28911:98:::0;;:::o;29015:171::-;23694:12;:10;:12::i;:::-;23683:23;;:7;:5;:7::i;:::-;:23;;;23675:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;29104:6:::1;29087:14;:23;;;;29165:13;;29148:14;;29134:11;;:28;;;;:::i;:::-;:44;;;;:::i;:::-;29121:10;:57;;;;29015:171:::0;:::o;25150:34::-;;;;:::o;28775:130::-;28843:7;28870:21;:27;28892:4;28870:27;;;;;;;;;;;;;;;;28863:34;;28775:130;;;:::o;3611:239::-;3683:7;3703:13;3719:7;:16;3727:7;3719:16;;;;;;;;;;;;;;;;;;;;;3703:32;;3771:1;3754:19;;:5;:19;;;;3746:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;3837:5;3830:12;;;3611:239;;;:::o;3397:208::-;3469:7;3514:1;3497:19;;:5;:19;;;;3489:74;;;;;;;;;;;;:::i;:::-;;;;;;;;;3581:9;:16;3591:5;3581:16;;;;;;;;;;;;;;;;3574:23;;3397:208;;;:::o;23769:94::-;23694:12;:10;:12::i;:::-;23683:23;;:7;:5;:7::i;:::-;:23;;;23675:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;23834:21:::1;23852:1;23834:9;:21::i;:::-;23769:94::o:0;24571:72::-;;;;:::o;25350:351::-;23694:12;:10;:12::i;:::-;23683:23;;:7;:5;:7::i;:::-;:23;;;23675:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;25438:9:::1;25434:260;25457:7;;:14;;25453:1;:18;25434:260;;;25493:13;25509:7;;25517:1;25509:10;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;25493:26;;25559:1;25542:19;;:5;:19;;;;25534:44;;;;;;;;;;;;:::i;:::-;;;;;;;;;25602:12;:19;25615:5;25602:19;;;;;;;;;;;;;;;;;;;;;;;;;25601:20;25593:48;;;;;;;;;;;;:::i;:::-;;;;;;;;;25678:4;25656:12;:19;25669:5;25656:19;;;;;;;;;;;;;;;;:26;;;;;;;;;;;;;;;;;;25478:216;25473:3;;;;;:::i;:::-;;;;25434:260;;;;25350:351:::0;;:::o;26007:95::-;23694:12;:10;:12::i;:::-;23683:23;;:7;:5;:7::i;:::-;:23;;;23675:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;26083:11:::1;;;;;;;;;;;26082:12;26068:11;;:26;;;;;;;;;;;;;;;;;;26007:95::o:0;24745:47::-;;;;:::o;27170:882::-;27250:8;;;;;;;;;;;27249:9;:24;;;;;27262:11;;;;;;;;;;;27249:24;27241:62;;;;;;;;;;;;:::i;:::-;;;;;;;;;27322:12;:24;27335:10;27322:24;;;;;;;;;;;;;;;;;;;;;;;;;27314:75;;;;;;;;;;;;:::i;:::-;;;;;;;;;27430:10;;27425:1;27409:13;:11;:13::i;:::-;:17;;;;:::i;:::-;27408:32;27400:58;;;;;;;;;;;;:::i;:::-;;;;;;;;;27516:14;;27499:13;27477:19;;:35;;;;:::i;:::-;:53;;27469:80;;;;;;;;;;;;:::i;:::-;;;;;;;;;27621:20;;27604:13;27568:21;:33;27590:10;27568:33;;;;;;;;;;;;;;;;:49;;;;:::i;:::-;:73;;27560:132;;;;;;;;;;;;:::i;:::-;;;;;;;;;27751:9;27734:13;27711:20;;:36;;;;:::i;:::-;:49;;27703:79;;;;;;;;;;;;:::i;:::-;;;;;;;;;27798:9;27793:252;27817:13;27813:1;:17;27793:252;;;27852:12;27883:1;27867:13;:11;:13::i;:::-;:17;;;;:::i;:::-;27852:32;;27917:21;:33;27939:10;27917:33;;;;;;;;;;;;;;;;:35;;;;;;;;;:::i;:::-;;;;;;27967:30;27977:10;27989:7;27967:9;:30::i;:::-;28012:19;;:21;;;;;;;;;:::i;:::-;;;;;;27837:208;27832:3;;;;;:::i;:::-;;;;27793:252;;;;27170:882;:::o;25238:23::-;;;;;;;;;;;;;:::o;23550:87::-;23596:7;23623:6;;;;;;;;;;;23616:13;;23550:87;:::o;29648:93::-;23694:12;:10;:12::i;:::-;23683:23;;:7;:5;:7::i;:::-;:23;;;23675:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;29727:6:::1;29712:12;:21;;;;29648:93:::0;:::o;25110:33::-;;;;:::o;3962:104::-;4018:13;4051:7;4044:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3962:104;:::o;24489:33::-;;;;:::o;24946:56::-;;;;;;;;;;;;;;;;;:::o;24895:44::-;;;;;;;;;;;;;;;;;;;;;;:::o;28662:107::-;28719:4;28743:12;:18;28756:4;28743:18;;;;;;;;;;;;;;;;;;;;;;;;;28736:25;;28662:107;;;:::o;24840:48::-;24887:1;24840:48;:::o;5158:295::-;5273:12;:10;:12::i;:::-;5261:24;;:8;:24;;;;5253:62;;;;;;;;;;;;:::i;:::-;;;;;;;;;5373:8;5328:18;:32;5347:12;:10;:12::i;:::-;5328:32;;;;;;;;;;;;;;;:42;5361:8;5328:42;;;;;;;;;;;;;;;;:53;;;;;;;;;;;;;;;;;;5426:8;5397:48;;5412:12;:10;:12::i;:::-;5397:48;;;5436:8;5397:48;;;;;;:::i;:::-;;;;;;;;5158:295;;:::o;29367:165::-;23694:12;:10;:12::i;:::-;23683:23;;:7;:5;:7::i;:::-;:23;;;23675:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;29450:6:::1;29436:11;:20;;;;29511:13;;29494:14;;29480:11;;:28;;;;:::i;:::-;:44;;;;:::i;:::-;29467:10;:57;;;;29367:165:::0;:::o;24529:35::-;;;;:::o;25707:294::-;23694:12;:10;:12::i;:::-;23683:23;;:7;:5;:7::i;:::-;:23;;;23675:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;25800:9:::1;25796:198;25819:7;;:14;;25815:1;:18;25796:198;;;25855:13;25871:7;;25879:1;25871:10;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;25855:26;;25921:1;25904:19;;:5;:19;;;;25896:44;;;;;;;;;;;;:::i;:::-;;;;;;;;;25977:5;25955:12;:19;25968:5;25955:19;;;;;;;;;;;;;;;;:27;;;;;;;;;;;;;;;;;;25840:154;25835:3;;;;;:::i;:::-;;;;25796:198;;;;25707:294:::0;;:::o;24799:34::-;;;;:::o;6171:328::-;6346:41;6365:12;:10;:12::i;:::-;6379:7;6346:18;:41::i;:::-;6338:103;;;;;;;;;;;;:::i;:::-;;;;;;;;;6452:39;6466:4;6472:2;6476:7;6485:5;6452:13;:39::i;:::-;6171:328;;;;:::o;28510:146::-;23694:12;:10;:12::i;:::-;23683:23;;:7;:5;:7::i;:::-;:23;;;23675:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;28564:12:::1;28579:21;28564:36;;28619:10;28611:28;;:37;28640:7;28611:37;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;28553:103;28510:146::o:0;29861:244::-;29934:13;29968:16;29976:7;29968;:16::i;:::-;29960:60;;;;;;;;;;;;:::i;:::-;;;;;;;;;30062:13;30077:18;:7;:16;:18::i;:::-;30045:51;;;;;;;;;:::i;:::-;;;;;;;;;;;;;30031:66;;29861:244;;;:::o;29192:169::-;23694:12;:10;:12::i;:::-;23683:23;;:7;:5;:7::i;:::-;:23;;;23675:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;29279:6:::1;29263:13;:22;;;;29340:13;;29323:14;;29309:11;;:28;;;;:::i;:::-;:44;;;;:::i;:::-;29296:10;:57;;;;29192:169:::0;:::o;26200:964::-;26272:8;;;;;;;;;;;26264:32;;;;;;;;;;;;:::i;:::-;;;;;;;;;26316:11;;;;;;;;;;;26315:12;26307:37;;;;;;;;;;;;:::i;:::-;;;;;;;;;26385:10;;26380:1;26364:13;:11;:13::i;:::-;:17;;;;:::i;:::-;26363:32;26355:58;;;;;;;;;;;;:::i;:::-;;;;;;;;;26470:13;;26453;26432:18;;:34;;;;:::i;:::-;:51;;26424:77;;;;;;;;;;;;:::i;:::-;;;;;;;;;26537:15;;26520:13;:32;;26512:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;26594:6;26590:567;26610:13;26606:1;:17;26590:567;;;26645:12;26676:1;26660:13;:11;:13::i;:::-;:17;;;;:::i;:::-;26645:32;;26724:3;26714:7;:13;:30;;;;;26741:3;26731:7;:13;26714:30;26710:436;;;24887:1;26773:13;:37;;26765:77;;;;;;;;;;;;:::i;:::-;;;;;;;;;26861:30;26871:10;26883:7;26861:9;:30::i;:::-;26910:18;;:20;;;;;;;;;:::i;:::-;;;;;;26710:436;;;27011:9;26994:13;26979:12;;:28;;;;:::i;:::-;:41;;26971:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;27061:30;27071:10;27083:7;27061:9;:30::i;:::-;27110:18;;:20;;;;;;;;;:::i;:::-;;;;;;26710:436;26630:527;26625:3;;;;;:::i;:::-;;;;26590:567;;;;26200:964;:::o;25268:20::-;;;;;;;;;;;;;:::o;5461:164::-;5558:4;5582:18;:25;5601:5;5582:25;;;;;;;;;;;;;;;:35;5608:8;5582:35;;;;;;;;;;;;;;;;;;;;;;;;;5575:42;;5461:164;;;;:::o;23869:192::-;23694:12;:10;:12::i;:::-;23683:23;;:7;:5;:7::i;:::-;:23;;;23675:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;23978:1:::1;23958:22;;:8;:22;;;;23950:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;24034:19;24044:8;24034:9;:19::i;:::-;23869:192:::0;:::o;25191:40::-;;;;:::o;3086:305::-;3188:4;3240:25;3225:40;;;:11;:40;;;;:105;;;;3297:33;3282:48;;;:11;:48;;;;3225:105;:158;;;;3347:36;3371:11;3347:23;:36::i;:::-;3225:158;3205:178;;3086:305;;;:::o;2243:98::-;2296:7;2323:10;2316:17;;2243:98;:::o;6826:127::-;6891:4;6943:1;6915:30;;:7;:16;6923:7;6915:16;;;;;;;;;;;;;;;;;;;;;:30;;;;6908:37;;6826:127;;;:::o;9006:174::-;9108:2;9081:15;:24;9097:7;9081:24;;;;;;;;;;;;:29;;;;;;;;;;;;;;;;;;9164:7;9160:2;9126:46;;9135:23;9150:7;9135:14;:23::i;:::-;9126:46;;;;;;;;;;;;9006:174;;:::o;7313:110::-;7389:26;7399:2;7403:7;7389:26;;;;;;;;;;;;:9;:26::i;:::-;7313:110;;:::o;6959:348::-;7052:4;7077:16;7085:7;7077;:16::i;:::-;7069:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;7153:13;7169:23;7184:7;7169:14;:23::i;:::-;7153:39;;7222:5;7211:16;;:7;:16;;;:51;;;;7255:7;7231:31;;:20;7243:7;7231:11;:20::i;:::-;:31;;;7211:51;:87;;;;7266:32;7283:5;7290:7;7266:16;:32::i;:::-;7211:87;7203:96;;;6959:348;;;;:::o;8482:518::-;8641:4;8614:31;;:23;8629:7;8614:14;:23::i;:::-;:31;;;8606:85;;;;;;;;;;;;:::i;:::-;;;;;;;;;8724:1;8710:16;;:2;:16;;;;8702:65;;;;;;;;;;;;:::i;:::-;;;;;;;;;8778:39;8799:4;8805:2;8809:7;8778:20;:39::i;:::-;8828:29;8845:1;8849:7;8828:8;:29::i;:::-;8887:1;8868:9;:15;8878:4;8868:15;;;;;;;;;;;;;;;;:20;;;;;;;:::i;:::-;;;;;;;;8916:1;8899:9;:13;8909:2;8899:13;;;;;;;;;;;;;;;;:18;;;;;;;:::i;:::-;;;;;;;;8947:2;8928:7;:16;8936:7;8928:16;;;;;;;;;;;;:21;;;;;;;;;;;;;;;;;;8984:7;8980:2;8965:27;;8974:4;8965:27;;;;;;;;;;;;8482:518;;;:::o;24069:173::-;24125:16;24144:6;;;;;;;;;;;24125:25;;24170:8;24161:6;;:17;;;;;;;;;;;;;;;;;;24225:8;24194:40;;24215:8;24194:40;;;;;;;;;;;;24114:128;24069:173;:::o;6505:315::-;6662:28;6672:4;6678:2;6682:7;6662:9;:28::i;:::-;6709:48;6732:4;6738:2;6742:7;6751:5;6709:22;:48::i;:::-;6701:111;;;;;;;;;;;;:::i;:::-;;;;;;;;;6505:315;;;;:::o;18016:532::-;18072:13;18111:1;18102:5;:10;18098:53;;;18129:10;;;;;;;;;;;;;;;;;;;;;18098:53;18161:12;18176:5;18161:20;;18192:14;18217:78;18232:1;18224:4;:9;18217:78;;18250:8;;;;;:::i;:::-;;;;18281:2;18273:10;;;;;:::i;:::-;;;18217:78;;;18305:19;18337:6;18327:17;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18305:39;;18355:154;18371:1;18362:5;:10;18355:154;;18399:1;18389:11;;;;;:::i;:::-;;;18466:2;18458:5;:10;;;;:::i;:::-;18445:2;:24;;;;:::i;:::-;18432:39;;18415:6;18422;18415:14;;;;;;;;:::i;:::-;;;;;:56;;;;;;;;;;;18495:2;18486:11;;;;;:::i;:::-;;;18355:154;;;18533:6;18519:21;;;;;18016:532;;;;:::o;1971:157::-;2056:4;2095:25;2080:40;;;:11;:40;;;;2073:47;;1971:157;;;:::o;7429:321::-;7559:18;7565:2;7569:7;7559:5;:18::i;:::-;7610:54;7641:1;7645:2;7649:7;7658:5;7610:22;:54::i;:::-;7588:154;;;;;;;;;;;;:::i;:::-;;;;;;;;;7429:321;;;:::o;15870:589::-;16014:45;16041:4;16047:2;16051:7;16014:26;:45::i;:::-;16092:1;16076:18;;:4;:18;;;16072:187;;;16111:40;16143:7;16111:31;:40::i;:::-;16072:187;;;16181:2;16173:10;;:4;:10;;;16169:90;;16200:47;16233:4;16239:7;16200:32;:47::i;:::-;16169:90;16072:187;16287:1;16273:16;;:2;:16;;;16269:183;;;16306:45;16343:7;16306:36;:45::i;:::-;16269:183;;;16379:4;16373:10;;:2;:10;;;16369:83;;16400:40;16428:2;16432:7;16400:27;:40::i;:::-;16369:83;16269:183;15870:589;;;:::o;9186:799::-;9341:4;9362:15;:2;:13;;;:15::i;:::-;9358:620;;;9414:2;9398:36;;;9435:12;:10;:12::i;:::-;9449:4;9455:7;9464:5;9398:72;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;9394:529;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9657:1;9640:6;:13;:18;9636:272;;;9683:60;;;;;;;;;;:::i;:::-;;;;;;;;9636:272;9858:6;9852:13;9843:6;9839:2;9835:15;9828:38;9394:529;9531:41;;;9521:51;;;:6;:51;;;;9514:58;;;;;9358:620;9962:4;9955:11;;9186:799;;;;;;;:::o;7756:382::-;7850:1;7836:16;;:2;:16;;;;7828:61;;;;;;;;;;;;:::i;:::-;;;;;;;;;7909:16;7917:7;7909;:16::i;:::-;7908:17;7900:58;;;;;;;;;;;;:::i;:::-;;;;;;;;;7971:45;8000:1;8004:2;8008:7;7971:20;:45::i;:::-;8046:1;8029:9;:13;8039:2;8029:13;;;;;;;;;;;;;;;;:18;;;;;;;:::i;:::-;;;;;;;;8077:2;8058:7;:16;8066:7;8058:16;;;;;;;;;;;;:21;;;;;;;;;;;;;;;;;;8122:7;8118:2;8097:33;;8114:1;8097:33;;;;;;;;;;;;7756:382;;:::o;9991:126::-;;;;:::o;16692:164::-;16796:10;:17;;;;16769:15;:24;16785:7;16769:24;;;;;;;;;;;:44;;;;16824:10;16840:7;16824:24;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16692:164;:::o;16862:555::-;16954:22;17004:1;16979:22;16996:4;16979:16;:22::i;:::-;:26;;;;:::i;:::-;16954:51;;17016:18;17037:17;:26;17055:7;17037:26;;;;;;;;;;;;17016:47;;17094:14;17080:10;:28;17076:236;;17125:19;17147:12;:18;17160:4;17147:18;;;;;;;;;;;;;;;:34;17166:14;17147:34;;;;;;;;;;;;17125:56;;17231:11;17198:12;:18;17211:4;17198:18;;;;;;;;;;;;;;;:30;17217:10;17198:30;;;;;;;;;;;:44;;;;17290:10;17257:17;:30;17275:11;17257:30;;;;;;;;;;;:43;;;;17110:202;17076:236;17331:17;:26;17349:7;17331:26;;;;;;;;;;;17324:33;;;17375:12;:18;17388:4;17375:18;;;;;;;;;;;;;;;:34;17394:14;17375:34;;;;;;;;;;;17368:41;;;16943:474;;16862:555;;:::o;17423:423::-;17505:22;17550:1;17530:10;:17;;;;:21;;;;:::i;:::-;17505:46;;17562:18;17583:15;:24;17599:7;17583:24;;;;;;;;;;;;17562:45;;17618:19;17640:10;17651:14;17640:26;;;;;;;;:::i;:::-;;;;;;;;;;17618:48;;17704:11;17679:10;17690;17679:22;;;;;;;;:::i;:::-;;;;;;;;;:36;;;;17757:10;17726:15;:28;17742:11;17726:28;;;;;;;;;;;:41;;;;17787:15;:24;17803:7;17787:24;;;;;;;;;;;17780:31;;;17822:10;:16;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;17494:352;;;17423:423;:::o;16465:221::-;16550:14;16567:20;16584:2;16567:16;:20::i;:::-;16550:37;;16625:7;16598:12;:16;16611:2;16598:16;;;;;;;;;;;;;;;:24;16615:6;16598:24;;;;;;;;;;;:34;;;;16672:6;16643:17;:26;16661:7;16643:26;;;;;;;;;;;:35;;;;16539:147;16465:221;;:::o;19456:196::-;19516:4;19533:12;19600:7;19588:20;19580:28;;19643:1;19636:4;:8;19629:15;;;19456:196;;;:::o;-1:-1:-1:-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;:::o;7:410:1:-;84:5;109:65;125:48;166:6;125:48;:::i;:::-;109:65;:::i;:::-;100:74;;197:6;190:5;183:21;235:4;228:5;224:16;273:3;264:6;259:3;255:16;252:25;249:112;;;280:79;;:::i;:::-;249:112;370:41;404:6;399:3;394;370:41;:::i;:::-;90:327;7:410;;;;;:::o;423:139::-;469:5;507:6;494:20;485:29;;523:33;550:5;523:33;:::i;:::-;423:139;;;;:::o;585:568::-;658:8;668:6;718:3;711:4;703:6;699:17;695:27;685:122;;726:79;;:::i;:::-;685:122;839:6;826:20;816:30;;869:18;861:6;858:30;855:117;;;891:79;;:::i;:::-;855:117;1005:4;997:6;993:17;981:29;;1059:3;1051:4;1043:6;1039:17;1029:8;1025:32;1022:41;1019:128;;;1066:79;;:::i;:::-;1019:128;585:568;;;;;:::o;1159:133::-;1202:5;1240:6;1227:20;1218:29;;1256:30;1280:5;1256:30;:::i;:::-;1159:133;;;;:::o;1298:137::-;1343:5;1381:6;1368:20;1359:29;;1397:32;1423:5;1397:32;:::i;:::-;1298:137;;;;:::o;1441:141::-;1497:5;1528:6;1522:13;1513:22;;1544:32;1570:5;1544:32;:::i;:::-;1441:141;;;;:::o;1601:338::-;1656:5;1705:3;1698:4;1690:6;1686:17;1682:27;1672:122;;1713:79;;:::i;:::-;1672:122;1830:6;1817:20;1855:78;1929:3;1921:6;1914:4;1906:6;1902:17;1855:78;:::i;:::-;1846:87;;1662:277;1601:338;;;;:::o;1959:553::-;2017:8;2027:6;2077:3;2070:4;2062:6;2058:17;2054:27;2044:122;;2085:79;;:::i;:::-;2044:122;2198:6;2185:20;2175:30;;2228:18;2220:6;2217:30;2214:117;;;2250:79;;:::i;:::-;2214:117;2364:4;2356:6;2352:17;2340:29;;2418:3;2410:4;2402:6;2398:17;2388:8;2384:32;2381:41;2378:128;;;2425:79;;:::i;:::-;2378:128;1959:553;;;;;:::o;2518:139::-;2564:5;2602:6;2589:20;2580:29;;2618:33;2645:5;2618:33;:::i;:::-;2518:139;;;;:::o;2663:329::-;2722:6;2771:2;2759:9;2750:7;2746:23;2742:32;2739:119;;;2777:79;;:::i;:::-;2739:119;2897:1;2922:53;2967:7;2958:6;2947:9;2943:22;2922:53;:::i;:::-;2912:63;;2868:117;2663:329;;;;:::o;2998:474::-;3066:6;3074;3123:2;3111:9;3102:7;3098:23;3094:32;3091:119;;;3129:79;;:::i;:::-;3091:119;3249:1;3274:53;3319:7;3310:6;3299:9;3295:22;3274:53;:::i;:::-;3264:63;;3220:117;3376:2;3402:53;3447:7;3438:6;3427:9;3423:22;3402:53;:::i;:::-;3392:63;;3347:118;2998:474;;;;;:::o;3478:619::-;3555:6;3563;3571;3620:2;3608:9;3599:7;3595:23;3591:32;3588:119;;;3626:79;;:::i;:::-;3588:119;3746:1;3771:53;3816:7;3807:6;3796:9;3792:22;3771:53;:::i;:::-;3761:63;;3717:117;3873:2;3899:53;3944:7;3935:6;3924:9;3920:22;3899:53;:::i;:::-;3889:63;;3844:118;4001:2;4027:53;4072:7;4063:6;4052:9;4048:22;4027:53;:::i;:::-;4017:63;;3972:118;3478:619;;;;;:::o;4103:943::-;4198:6;4206;4214;4222;4271:3;4259:9;4250:7;4246:23;4242:33;4239:120;;;4278:79;;:::i;:::-;4239:120;4398:1;4423:53;4468:7;4459:6;4448:9;4444:22;4423:53;:::i;:::-;4413:63;;4369:117;4525:2;4551:53;4596:7;4587:6;4576:9;4572:22;4551:53;:::i;:::-;4541:63;;4496:118;4653:2;4679:53;4724:7;4715:6;4704:9;4700:22;4679:53;:::i;:::-;4669:63;;4624:118;4809:2;4798:9;4794:18;4781:32;4840:18;4832:6;4829:30;4826:117;;;4862:79;;:::i;:::-;4826:117;4967:62;5021:7;5012:6;5001:9;4997:22;4967:62;:::i;:::-;4957:72;;4752:287;4103:943;;;;;;;:::o;5052:468::-;5117:6;5125;5174:2;5162:9;5153:7;5149:23;5145:32;5142:119;;;5180:79;;:::i;:::-;5142:119;5300:1;5325:53;5370:7;5361:6;5350:9;5346:22;5325:53;:::i;:::-;5315:63;;5271:117;5427:2;5453:50;5495:7;5486:6;5475:9;5471:22;5453:50;:::i;:::-;5443:60;;5398:115;5052:468;;;;;:::o;5526:474::-;5594:6;5602;5651:2;5639:9;5630:7;5626:23;5622:32;5619:119;;;5657:79;;:::i;:::-;5619:119;5777:1;5802:53;5847:7;5838:6;5827:9;5823:22;5802:53;:::i;:::-;5792:63;;5748:117;5904:2;5930:53;5975:7;5966:6;5955:9;5951:22;5930:53;:::i;:::-;5920:63;;5875:118;5526:474;;;;;:::o;6006:559::-;6092:6;6100;6149:2;6137:9;6128:7;6124:23;6120:32;6117:119;;;6155:79;;:::i;:::-;6117:119;6303:1;6292:9;6288:17;6275:31;6333:18;6325:6;6322:30;6319:117;;;6355:79;;:::i;:::-;6319:117;6468:80;6540:7;6531:6;6520:9;6516:22;6468:80;:::i;:::-;6450:98;;;;6246:312;6006:559;;;;;:::o;6571:327::-;6629:6;6678:2;6666:9;6657:7;6653:23;6649:32;6646:119;;;6684:79;;:::i;:::-;6646:119;6804:1;6829:52;6873:7;6864:6;6853:9;6849:22;6829:52;:::i;:::-;6819:62;;6775:116;6571:327;;;;:::o;6904:349::-;6973:6;7022:2;7010:9;7001:7;6997:23;6993:32;6990:119;;;7028:79;;:::i;:::-;6990:119;7148:1;7173:63;7228:7;7219:6;7208:9;7204:22;7173:63;:::i;:::-;7163:73;;7119:127;6904:349;;;;:::o;7259:529::-;7330:6;7338;7387:2;7375:9;7366:7;7362:23;7358:32;7355:119;;;7393:79;;:::i;:::-;7355:119;7541:1;7530:9;7526:17;7513:31;7571:18;7563:6;7560:30;7557:117;;;7593:79;;:::i;:::-;7557:117;7706:65;7763:7;7754:6;7743:9;7739:22;7706:65;:::i;:::-;7688:83;;;;7484:297;7259:529;;;;;:::o;7794:329::-;7853:6;7902:2;7890:9;7881:7;7877:23;7873:32;7870:119;;;7908:79;;:::i;:::-;7870:119;8028:1;8053:53;8098:7;8089:6;8078:9;8074:22;8053:53;:::i;:::-;8043:63;;7999:117;7794:329;;;;:::o;8129:118::-;8216:24;8234:5;8216:24;:::i;:::-;8211:3;8204:37;8129:118;;:::o;8253:109::-;8334:21;8349:5;8334:21;:::i;:::-;8329:3;8322:34;8253:109;;:::o;8368:360::-;8454:3;8482:38;8514:5;8482:38;:::i;:::-;8536:70;8599:6;8594:3;8536:70;:::i;:::-;8529:77;;8615:52;8660:6;8655:3;8648:4;8641:5;8637:16;8615:52;:::i;:::-;8692:29;8714:6;8692:29;:::i;:::-;8687:3;8683:39;8676:46;;8458:270;8368:360;;;;:::o;8734:364::-;8822:3;8850:39;8883:5;8850:39;:::i;:::-;8905:71;8969:6;8964:3;8905:71;:::i;:::-;8898:78;;8985:52;9030:6;9025:3;9018:4;9011:5;9007:16;8985:52;:::i;:::-;9062:29;9084:6;9062:29;:::i;:::-;9057:3;9053:39;9046:46;;8826:272;8734:364;;;;:::o;9104:377::-;9210:3;9238:39;9271:5;9238:39;:::i;:::-;9293:89;9375:6;9370:3;9293:89;:::i;:::-;9286:96;;9391:52;9436:6;9431:3;9424:4;9417:5;9413:16;9391:52;:::i;:::-;9468:6;9463:3;9459:16;9452:23;;9214:267;9104:377;;;;:::o;9511:845::-;9614:3;9651:5;9645:12;9680:36;9706:9;9680:36;:::i;:::-;9732:89;9814:6;9809:3;9732:89;:::i;:::-;9725:96;;9852:1;9841:9;9837:17;9868:1;9863:137;;;;10014:1;10009:341;;;;9830:520;;9863:137;9947:4;9943:9;9932;9928:25;9923:3;9916:38;9983:6;9978:3;9974:16;9967:23;;9863:137;;10009:341;10076:38;10108:5;10076:38;:::i;:::-;10136:1;10150:154;10164:6;10161:1;10158:13;10150:154;;;10238:7;10232:14;10228:1;10223:3;10219:11;10212:35;10288:1;10279:7;10275:15;10264:26;;10186:4;10183:1;10179:12;10174:17;;10150:154;;;10333:6;10328:3;10324:16;10317:23;;10016:334;;9830:520;;9618:738;;9511:845;;;;:::o;10362:366::-;10504:3;10525:67;10589:2;10584:3;10525:67;:::i;:::-;10518:74;;10601:93;10690:3;10601:93;:::i;:::-;10719:2;10714:3;10710:12;10703:19;;10362:366;;;:::o;10734:::-;10876:3;10897:67;10961:2;10956:3;10897:67;:::i;:::-;10890:74;;10973:93;11062:3;10973:93;:::i;:::-;11091:2;11086:3;11082:12;11075:19;;10734:366;;;:::o;11106:::-;11248:3;11269:67;11333:2;11328:3;11269:67;:::i;:::-;11262:74;;11345:93;11434:3;11345:93;:::i;:::-;11463:2;11458:3;11454:12;11447:19;;11106:366;;;:::o;11478:::-;11620:3;11641:67;11705:2;11700:3;11641:67;:::i;:::-;11634:74;;11717:93;11806:3;11717:93;:::i;:::-;11835:2;11830:3;11826:12;11819:19;;11478:366;;;:::o;11850:::-;11992:3;12013:67;12077:2;12072:3;12013:67;:::i;:::-;12006:74;;12089:93;12178:3;12089:93;:::i;:::-;12207:2;12202:3;12198:12;12191:19;;11850:366;;;:::o;12222:::-;12364:3;12385:67;12449:2;12444:3;12385:67;:::i;:::-;12378:74;;12461:93;12550:3;12461:93;:::i;:::-;12579:2;12574:3;12570:12;12563:19;;12222:366;;;:::o;12594:::-;12736:3;12757:67;12821:2;12816:3;12757:67;:::i;:::-;12750:74;;12833:93;12922:3;12833:93;:::i;:::-;12951:2;12946:3;12942:12;12935:19;;12594:366;;;:::o;12966:::-;13108:3;13129:67;13193:2;13188:3;13129:67;:::i;:::-;13122:74;;13205:93;13294:3;13205:93;:::i;:::-;13323:2;13318:3;13314:12;13307:19;;12966:366;;;:::o;13338:::-;13480:3;13501:67;13565:2;13560:3;13501:67;:::i;:::-;13494:74;;13577:93;13666:3;13577:93;:::i;:::-;13695:2;13690:3;13686:12;13679:19;;13338:366;;;:::o;13710:::-;13852:3;13873:67;13937:2;13932:3;13873:67;:::i;:::-;13866:74;;13949:93;14038:3;13949:93;:::i;:::-;14067:2;14062:3;14058:12;14051:19;;13710:366;;;:::o;14082:::-;14224:3;14245:67;14309:2;14304:3;14245:67;:::i;:::-;14238:74;;14321:93;14410:3;14321:93;:::i;:::-;14439:2;14434:3;14430:12;14423:19;;14082:366;;;:::o;14454:::-;14596:3;14617:67;14681:2;14676:3;14617:67;:::i;:::-;14610:74;;14693:93;14782:3;14693:93;:::i;:::-;14811:2;14806:3;14802:12;14795:19;;14454:366;;;:::o;14826:::-;14968:3;14989:67;15053:2;15048:3;14989:67;:::i;:::-;14982:74;;15065:93;15154:3;15065:93;:::i;:::-;15183:2;15178:3;15174:12;15167:19;;14826:366;;;:::o;15198:::-;15340:3;15361:67;15425:2;15420:3;15361:67;:::i;:::-;15354:74;;15437:93;15526:3;15437:93;:::i;:::-;15555:2;15550:3;15546:12;15539:19;;15198:366;;;:::o;15570:::-;15712:3;15733:67;15797:2;15792:3;15733:67;:::i;:::-;15726:74;;15809:93;15898:3;15809:93;:::i;:::-;15927:2;15922:3;15918:12;15911:19;;15570:366;;;:::o;15942:365::-;16084:3;16105:66;16169:1;16164:3;16105:66;:::i;:::-;16098:73;;16180:93;16269:3;16180:93;:::i;:::-;16298:2;16293:3;16289:12;16282:19;;15942:365;;;:::o;16313:366::-;16455:3;16476:67;16540:2;16535:3;16476:67;:::i;:::-;16469:74;;16552:93;16641:3;16552:93;:::i;:::-;16670:2;16665:3;16661:12;16654:19;;16313:366;;;:::o;16685:::-;16827:3;16848:67;16912:2;16907:3;16848:67;:::i;:::-;16841:74;;16924:93;17013:3;16924:93;:::i;:::-;17042:2;17037:3;17033:12;17026:19;;16685:366;;;:::o;17057:::-;17199:3;17220:67;17284:2;17279:3;17220:67;:::i;:::-;17213:74;;17296:93;17385:3;17296:93;:::i;:::-;17414:2;17409:3;17405:12;17398:19;;17057:366;;;:::o;17429:::-;17571:3;17592:67;17656:2;17651:3;17592:67;:::i;:::-;17585:74;;17668:93;17757:3;17668:93;:::i;:::-;17786:2;17781:3;17777:12;17770:19;;17429:366;;;:::o;17801:::-;17943:3;17964:67;18028:2;18023:3;17964:67;:::i;:::-;17957:74;;18040:93;18129:3;18040:93;:::i;:::-;18158:2;18153:3;18149:12;18142:19;;17801:366;;;:::o;18173:::-;18315:3;18336:67;18400:2;18395:3;18336:67;:::i;:::-;18329:74;;18412:93;18501:3;18412:93;:::i;:::-;18530:2;18525:3;18521:12;18514:19;;18173:366;;;:::o;18545:::-;18687:3;18708:67;18772:2;18767:3;18708:67;:::i;:::-;18701:74;;18784:93;18873:3;18784:93;:::i;:::-;18902:2;18897:3;18893:12;18886:19;;18545:366;;;:::o;18917:::-;19059:3;19080:67;19144:2;19139:3;19080:67;:::i;:::-;19073:74;;19156:93;19245:3;19156:93;:::i;:::-;19274:2;19269:3;19265:12;19258:19;;18917:366;;;:::o;19289:::-;19431:3;19452:67;19516:2;19511:3;19452:67;:::i;:::-;19445:74;;19528:93;19617:3;19528:93;:::i;:::-;19646:2;19641:3;19637:12;19630:19;;19289:366;;;:::o;19661:::-;19803:3;19824:67;19888:2;19883:3;19824:67;:::i;:::-;19817:74;;19900:93;19989:3;19900:93;:::i;:::-;20018:2;20013:3;20009:12;20002:19;;19661:366;;;:::o;20033:::-;20175:3;20196:67;20260:2;20255:3;20196:67;:::i;:::-;20189:74;;20272:93;20361:3;20272:93;:::i;:::-;20390:2;20385:3;20381:12;20374:19;;20033:366;;;:::o;20405:::-;20547:3;20568:67;20632:2;20627:3;20568:67;:::i;:::-;20561:74;;20644:93;20733:3;20644:93;:::i;:::-;20762:2;20757:3;20753:12;20746:19;;20405:366;;;:::o;20777:::-;20919:3;20940:67;21004:2;20999:3;20940:67;:::i;:::-;20933:74;;21016:93;21105:3;21016:93;:::i;:::-;21134:2;21129:3;21125:12;21118:19;;20777:366;;;:::o;21149:::-;21291:3;21312:67;21376:2;21371:3;21312:67;:::i;:::-;21305:74;;21388:93;21477:3;21388:93;:::i;:::-;21506:2;21501:3;21497:12;21490:19;;21149:366;;;:::o;21521:::-;21663:3;21684:67;21748:2;21743:3;21684:67;:::i;:::-;21677:74;;21760:93;21849:3;21760:93;:::i;:::-;21878:2;21873:3;21869:12;21862:19;;21521:366;;;:::o;21893:::-;22035:3;22056:67;22120:2;22115:3;22056:67;:::i;:::-;22049:74;;22132:93;22221:3;22132:93;:::i;:::-;22250:2;22245:3;22241:12;22234:19;;21893:366;;;:::o;22265:::-;22407:3;22428:67;22492:2;22487:3;22428:67;:::i;:::-;22421:74;;22504:93;22593:3;22504:93;:::i;:::-;22622:2;22617:3;22613:12;22606:19;;22265:366;;;:::o;22637:118::-;22724:24;22742:5;22724:24;:::i;:::-;22719:3;22712:37;22637:118;;:::o;22761:429::-;22938:3;22960:92;23048:3;23039:6;22960:92;:::i;:::-;22953:99;;23069:95;23160:3;23151:6;23069:95;:::i;:::-;23062:102;;23181:3;23174:10;;22761:429;;;;;:::o;23196:222::-;23289:4;23327:2;23316:9;23312:18;23304:26;;23340:71;23408:1;23397:9;23393:17;23384:6;23340:71;:::i;:::-;23196:222;;;;:::o;23424:640::-;23619:4;23657:3;23646:9;23642:19;23634:27;;23671:71;23739:1;23728:9;23724:17;23715:6;23671:71;:::i;:::-;23752:72;23820:2;23809:9;23805:18;23796:6;23752:72;:::i;:::-;23834;23902:2;23891:9;23887:18;23878:6;23834:72;:::i;:::-;23953:9;23947:4;23943:20;23938:2;23927:9;23923:18;23916:48;23981:76;24052:4;24043:6;23981:76;:::i;:::-;23973:84;;23424:640;;;;;;;:::o;24070:210::-;24157:4;24195:2;24184:9;24180:18;24172:26;;24208:65;24270:1;24259:9;24255:17;24246:6;24208:65;:::i;:::-;24070:210;;;;:::o;24286:313::-;24399:4;24437:2;24426:9;24422:18;24414:26;;24486:9;24480:4;24476:20;24472:1;24461:9;24457:17;24450:47;24514:78;24587:4;24578:6;24514:78;:::i;:::-;24506:86;;24286:313;;;;:::o;24605:419::-;24771:4;24809:2;24798:9;24794:18;24786:26;;24858:9;24852:4;24848:20;24844:1;24833:9;24829:17;24822:47;24886:131;25012:4;24886:131;:::i;:::-;24878:139;;24605:419;;;:::o;25030:::-;25196:4;25234:2;25223:9;25219:18;25211:26;;25283:9;25277:4;25273:20;25269:1;25258:9;25254:17;25247:47;25311:131;25437:4;25311:131;:::i;:::-;25303:139;;25030:419;;;:::o;25455:::-;25621:4;25659:2;25648:9;25644:18;25636:26;;25708:9;25702:4;25698:20;25694:1;25683:9;25679:17;25672:47;25736:131;25862:4;25736:131;:::i;:::-;25728:139;;25455:419;;;:::o;25880:::-;26046:4;26084:2;26073:9;26069:18;26061:26;;26133:9;26127:4;26123:20;26119:1;26108:9;26104:17;26097:47;26161:131;26287:4;26161:131;:::i;:::-;26153:139;;25880:419;;;:::o;26305:::-;26471:4;26509:2;26498:9;26494:18;26486:26;;26558:9;26552:4;26548:20;26544:1;26533:9;26529:17;26522:47;26586:131;26712:4;26586:131;:::i;:::-;26578:139;;26305:419;;;:::o;26730:::-;26896:4;26934:2;26923:9;26919:18;26911:26;;26983:9;26977:4;26973:20;26969:1;26958:9;26954:17;26947:47;27011:131;27137:4;27011:131;:::i;:::-;27003:139;;26730:419;;;:::o;27155:::-;27321:4;27359:2;27348:9;27344:18;27336:26;;27408:9;27402:4;27398:20;27394:1;27383:9;27379:17;27372:47;27436:131;27562:4;27436:131;:::i;:::-;27428:139;;27155:419;;;:::o;27580:::-;27746:4;27784:2;27773:9;27769:18;27761:26;;27833:9;27827:4;27823:20;27819:1;27808:9;27804:17;27797:47;27861:131;27987:4;27861:131;:::i;:::-;27853:139;;27580:419;;;:::o;28005:::-;28171:4;28209:2;28198:9;28194:18;28186:26;;28258:9;28252:4;28248:20;28244:1;28233:9;28229:17;28222:47;28286:131;28412:4;28286:131;:::i;:::-;28278:139;;28005:419;;;:::o;28430:::-;28596:4;28634:2;28623:9;28619:18;28611:26;;28683:9;28677:4;28673:20;28669:1;28658:9;28654:17;28647:47;28711:131;28837:4;28711:131;:::i;:::-;28703:139;;28430:419;;;:::o;28855:::-;29021:4;29059:2;29048:9;29044:18;29036:26;;29108:9;29102:4;29098:20;29094:1;29083:9;29079:17;29072:47;29136:131;29262:4;29136:131;:::i;:::-;29128:139;;28855:419;;;:::o;29280:::-;29446:4;29484:2;29473:9;29469:18;29461:26;;29533:9;29527:4;29523:20;29519:1;29508:9;29504:17;29497:47;29561:131;29687:4;29561:131;:::i;:::-;29553:139;;29280:419;;;:::o;29705:::-;29871:4;29909:2;29898:9;29894:18;29886:26;;29958:9;29952:4;29948:20;29944:1;29933:9;29929:17;29922:47;29986:131;30112:4;29986:131;:::i;:::-;29978:139;;29705:419;;;:::o;30130:::-;30296:4;30334:2;30323:9;30319:18;30311:26;;30383:9;30377:4;30373:20;30369:1;30358:9;30354:17;30347:47;30411:131;30537:4;30411:131;:::i;:::-;30403:139;;30130:419;;;:::o;30555:::-;30721:4;30759:2;30748:9;30744:18;30736:26;;30808:9;30802:4;30798:20;30794:1;30783:9;30779:17;30772:47;30836:131;30962:4;30836:131;:::i;:::-;30828:139;;30555:419;;;:::o;30980:::-;31146:4;31184:2;31173:9;31169:18;31161:26;;31233:9;31227:4;31223:20;31219:1;31208:9;31204:17;31197:47;31261:131;31387:4;31261:131;:::i;:::-;31253:139;;30980:419;;;:::o;31405:::-;31571:4;31609:2;31598:9;31594:18;31586:26;;31658:9;31652:4;31648:20;31644:1;31633:9;31629:17;31622:47;31686:131;31812:4;31686:131;:::i;:::-;31678:139;;31405:419;;;:::o;31830:::-;31996:4;32034:2;32023:9;32019:18;32011:26;;32083:9;32077:4;32073:20;32069:1;32058:9;32054:17;32047:47;32111:131;32237:4;32111:131;:::i;:::-;32103:139;;31830:419;;;:::o;32255:::-;32421:4;32459:2;32448:9;32444:18;32436:26;;32508:9;32502:4;32498:20;32494:1;32483:9;32479:17;32472:47;32536:131;32662:4;32536:131;:::i;:::-;32528:139;;32255:419;;;:::o;32680:::-;32846:4;32884:2;32873:9;32869:18;32861:26;;32933:9;32927:4;32923:20;32919:1;32908:9;32904:17;32897:47;32961:131;33087:4;32961:131;:::i;:::-;32953:139;;32680:419;;;:::o;33105:::-;33271:4;33309:2;33298:9;33294:18;33286:26;;33358:9;33352:4;33348:20;33344:1;33333:9;33329:17;33322:47;33386:131;33512:4;33386:131;:::i;:::-;33378:139;;33105:419;;;:::o;33530:::-;33696:4;33734:2;33723:9;33719:18;33711:26;;33783:9;33777:4;33773:20;33769:1;33758:9;33754:17;33747:47;33811:131;33937:4;33811:131;:::i;:::-;33803:139;;33530:419;;;:::o;33955:::-;34121:4;34159:2;34148:9;34144:18;34136:26;;34208:9;34202:4;34198:20;34194:1;34183:9;34179:17;34172:47;34236:131;34362:4;34236:131;:::i;:::-;34228:139;;33955:419;;;:::o;34380:::-;34546:4;34584:2;34573:9;34569:18;34561:26;;34633:9;34627:4;34623:20;34619:1;34608:9;34604:17;34597:47;34661:131;34787:4;34661:131;:::i;:::-;34653:139;;34380:419;;;:::o;34805:::-;34971:4;35009:2;34998:9;34994:18;34986:26;;35058:9;35052:4;35048:20;35044:1;35033:9;35029:17;35022:47;35086:131;35212:4;35086:131;:::i;:::-;35078:139;;34805:419;;;:::o;35230:::-;35396:4;35434:2;35423:9;35419:18;35411:26;;35483:9;35477:4;35473:20;35469:1;35458:9;35454:17;35447:47;35511:131;35637:4;35511:131;:::i;:::-;35503:139;;35230:419;;;:::o;35655:::-;35821:4;35859:2;35848:9;35844:18;35836:26;;35908:9;35902:4;35898:20;35894:1;35883:9;35879:17;35872:47;35936:131;36062:4;35936:131;:::i;:::-;35928:139;;35655:419;;;:::o;36080:::-;36246:4;36284:2;36273:9;36269:18;36261:26;;36333:9;36327:4;36323:20;36319:1;36308:9;36304:17;36297:47;36361:131;36487:4;36361:131;:::i;:::-;36353:139;;36080:419;;;:::o;36505:::-;36671:4;36709:2;36698:9;36694:18;36686:26;;36758:9;36752:4;36748:20;36744:1;36733:9;36729:17;36722:47;36786:131;36912:4;36786:131;:::i;:::-;36778:139;;36505:419;;;:::o;36930:::-;37096:4;37134:2;37123:9;37119:18;37111:26;;37183:9;37177:4;37173:20;37169:1;37158:9;37154:17;37147:47;37211:131;37337:4;37211:131;:::i;:::-;37203:139;;36930:419;;;:::o;37355:::-;37521:4;37559:2;37548:9;37544:18;37536:26;;37608:9;37602:4;37598:20;37594:1;37583:9;37579:17;37572:47;37636:131;37762:4;37636:131;:::i;:::-;37628:139;;37355:419;;;:::o;37780:::-;37946:4;37984:2;37973:9;37969:18;37961:26;;38033:9;38027:4;38023:20;38019:1;38008:9;38004:17;37997:47;38061:131;38187:4;38061:131;:::i;:::-;38053:139;;37780:419;;;:::o;38205:::-;38371:4;38409:2;38398:9;38394:18;38386:26;;38458:9;38452:4;38448:20;38444:1;38433:9;38429:17;38422:47;38486:131;38612:4;38486:131;:::i;:::-;38478:139;;38205:419;;;:::o;38630:222::-;38723:4;38761:2;38750:9;38746:18;38738:26;;38774:71;38842:1;38831:9;38827:17;38818:6;38774:71;:::i;:::-;38630:222;;;;:::o;38858:129::-;38892:6;38919:20;;:::i;:::-;38909:30;;38948:33;38976:4;38968:6;38948:33;:::i;:::-;38858:129;;;:::o;38993:75::-;39026:6;39059:2;39053:9;39043:19;;38993:75;:::o;39074:307::-;39135:4;39225:18;39217:6;39214:30;39211:56;;;39247:18;;:::i;:::-;39211:56;39285:29;39307:6;39285:29;:::i;:::-;39277:37;;39369:4;39363;39359:15;39351:23;;39074:307;;;:::o;39387:141::-;39436:4;39459:3;39451:11;;39482:3;39479:1;39472:14;39516:4;39513:1;39503:18;39495:26;;39387:141;;;:::o;39534:98::-;39585:6;39619:5;39613:12;39603:22;;39534:98;;;:::o;39638:99::-;39690:6;39724:5;39718:12;39708:22;;39638:99;;;:::o;39743:168::-;39826:11;39860:6;39855:3;39848:19;39900:4;39895:3;39891:14;39876:29;;39743:168;;;;:::o;39917:169::-;40001:11;40035:6;40030:3;40023:19;40075:4;40070:3;40066:14;40051:29;;39917:169;;;;:::o;40092:148::-;40194:11;40231:3;40216:18;;40092:148;;;;:::o;40246:305::-;40286:3;40305:20;40323:1;40305:20;:::i;:::-;40300:25;;40339:20;40357:1;40339:20;:::i;:::-;40334:25;;40493:1;40425:66;40421:74;40418:1;40415:81;40412:107;;;40499:18;;:::i;:::-;40412:107;40543:1;40540;40536:9;40529:16;;40246:305;;;;:::o;40557:185::-;40597:1;40614:20;40632:1;40614:20;:::i;:::-;40609:25;;40648:20;40666:1;40648:20;:::i;:::-;40643:25;;40687:1;40677:35;;40692:18;;:::i;:::-;40677:35;40734:1;40731;40727:9;40722:14;;40557:185;;;;:::o;40748:348::-;40788:7;40811:20;40829:1;40811:20;:::i;:::-;40806:25;;40845:20;40863:1;40845:20;:::i;:::-;40840:25;;41033:1;40965:66;40961:74;40958:1;40955:81;40950:1;40943:9;40936:17;40932:105;40929:131;;;41040:18;;:::i;:::-;40929:131;41088:1;41085;41081:9;41070:20;;40748:348;;;;:::o;41102:191::-;41142:4;41162:20;41180:1;41162:20;:::i;:::-;41157:25;;41196:20;41214:1;41196:20;:::i;:::-;41191:25;;41235:1;41232;41229:8;41226:34;;;41240:18;;:::i;:::-;41226:34;41285:1;41282;41278:9;41270:17;;41102:191;;;;:::o;41299:96::-;41336:7;41365:24;41383:5;41365:24;:::i;:::-;41354:35;;41299:96;;;:::o;41401:90::-;41435:7;41478:5;41471:13;41464:21;41453:32;;41401:90;;;:::o;41497:149::-;41533:7;41573:66;41566:5;41562:78;41551:89;;41497:149;;;:::o;41652:126::-;41689:7;41729:42;41722:5;41718:54;41707:65;;41652:126;;;:::o;41784:77::-;41821:7;41850:5;41839:16;;41784:77;;;:::o;41867:154::-;41951:6;41946:3;41941;41928:30;42013:1;42004:6;41999:3;41995:16;41988:27;41867:154;;;:::o;42027:307::-;42095:1;42105:113;42119:6;42116:1;42113:13;42105:113;;;42204:1;42199:3;42195:11;42189:18;42185:1;42180:3;42176:11;42169:39;42141:2;42138:1;42134:10;42129:15;;42105:113;;;42236:6;42233:1;42230:13;42227:101;;;42316:1;42307:6;42302:3;42298:16;42291:27;42227:101;42076:258;42027:307;;;:::o;42340:320::-;42384:6;42421:1;42415:4;42411:12;42401:22;;42468:1;42462:4;42458:12;42489:18;42479:81;;42545:4;42537:6;42533:17;42523:27;;42479:81;42607:2;42599:6;42596:14;42576:18;42573:38;42570:84;;;42626:18;;:::i;:::-;42570:84;42391:269;42340:320;;;:::o;42666:281::-;42749:27;42771:4;42749:27;:::i;:::-;42741:6;42737:40;42879:6;42867:10;42864:22;42843:18;42831:10;42828:34;42825:62;42822:88;;;42890:18;;:::i;:::-;42822:88;42930:10;42926:2;42919:22;42709:238;42666:281;;:::o;42953:233::-;42992:3;43015:24;43033:5;43015:24;:::i;:::-;43006:33;;43061:66;43054:5;43051:77;43048:103;;;43131:18;;:::i;:::-;43048:103;43178:1;43171:5;43167:13;43160:20;;42953:233;;;:::o;43192:176::-;43224:1;43241:20;43259:1;43241:20;:::i;:::-;43236:25;;43275:20;43293:1;43275:20;:::i;:::-;43270:25;;43314:1;43304:35;;43319:18;;:::i;:::-;43304:35;43360:1;43357;43353:9;43348:14;;43192:176;;;;:::o;43374:180::-;43422:77;43419:1;43412:88;43519:4;43516:1;43509:15;43543:4;43540:1;43533:15;43560:180;43608:77;43605:1;43598:88;43705:4;43702:1;43695:15;43729:4;43726:1;43719:15;43746:180;43794:77;43791:1;43784:88;43891:4;43888:1;43881:15;43915:4;43912:1;43905:15;43932:180;43980:77;43977:1;43970:88;44077:4;44074:1;44067:15;44101:4;44098:1;44091:15;44118:180;44166:77;44163:1;44156:88;44263:4;44260:1;44253:15;44287:4;44284:1;44277:15;44304:180;44352:77;44349:1;44342:88;44449:4;44446:1;44439:15;44473:4;44470:1;44463:15;44490:117;44599:1;44596;44589:12;44613:117;44722:1;44719;44712:12;44736:117;44845:1;44842;44835:12;44859:117;44968:1;44965;44958:12;44982:117;45091:1;45088;45081:12;45105:117;45214:1;45211;45204:12;45228:102;45269:6;45320:2;45316:7;45311:2;45304:5;45300:14;45296:28;45286:38;;45228:102;;;:::o;45336:162::-;45476:14;45472:1;45464:6;45460:14;45453:38;45336:162;:::o;45504:230::-;45644:34;45640:1;45632:6;45628:14;45621:58;45713:13;45708:2;45700:6;45696:15;45689:38;45504:230;:::o;45740:237::-;45880:34;45876:1;45868:6;45864:14;45857:58;45949:20;45944:2;45936:6;45932:15;45925:45;45740:237;:::o;45983:225::-;46123:34;46119:1;46111:6;46107:14;46100:58;46192:8;46187:2;46179:6;46175:15;46168:33;45983:225;:::o;46214:178::-;46354:30;46350:1;46342:6;46338:14;46331:54;46214:178;:::o;46398:163::-;46538:15;46534:1;46526:6;46522:14;46515:39;46398:163;:::o;46567:223::-;46707:34;46703:1;46695:6;46691:14;46684:58;46776:6;46771:2;46763:6;46759:15;46752:31;46567:223;:::o;46796:175::-;46936:27;46932:1;46924:6;46920:14;46913:51;46796:175;:::o;46977:161::-;47117:13;47113:1;47105:6;47101:14;47094:37;46977:161;:::o;47144:231::-;47284:34;47280:1;47272:6;47268:14;47261:58;47353:14;47348:2;47340:6;47336:15;47329:39;47144:231;:::o;47381:165::-;47521:17;47517:1;47509:6;47505:14;47498:41;47381:165;:::o;47552:162::-;47692:14;47688:1;47680:6;47676:14;47669:38;47552:162;:::o;47720:243::-;47860:34;47856:1;47848:6;47844:14;47837:58;47929:26;47924:2;47916:6;47912:15;47905:51;47720:243;:::o;47969:229::-;48109:34;48105:1;48097:6;48093:14;48086:58;48178:12;48173:2;48165:6;48161:15;48154:37;47969:229;:::o;48204:228::-;48344:34;48340:1;48332:6;48328:14;48321:58;48413:11;48408:2;48400:6;48396:15;48389:36;48204:228;:::o;48438:158::-;48578:10;48574:1;48566:6;48562:14;48555:34;48438:158;:::o;48602:182::-;48742:34;48738:1;48730:6;48726:14;48719:58;48602:182;:::o;48790:177::-;48930:29;48926:1;48918:6;48914:14;48907:53;48790:177;:::o;48973:231::-;49113:34;49109:1;49101:6;49097:14;49090:58;49182:14;49177:2;49169:6;49165:15;49158:39;48973:231;:::o;49210:182::-;49350:34;49346:1;49338:6;49334:14;49327:58;49210:182;:::o;49398:167::-;49538:19;49534:1;49526:6;49522:14;49515:43;49398:167;:::o;49571:161::-;49711:13;49707:1;49699:6;49695:14;49688:37;49571:161;:::o;49738:228::-;49878:34;49874:1;49866:6;49862:14;49855:58;49947:11;49942:2;49934:6;49930:15;49923:36;49738:228;:::o;49972:181::-;50112:33;50108:1;50100:6;50096:14;50089:57;49972:181;:::o;50159:175::-;50299:27;50295:1;50287:6;50283:14;50276:51;50159:175;:::o;50340:220::-;50480:34;50476:1;50468:6;50464:14;50457:58;50549:3;50544:2;50536:6;50532:15;50525:28;50340:220;:::o;50566:163::-;50706:15;50702:1;50694:6;50690:14;50683:39;50566:163;:::o;50735:236::-;50875:34;50871:1;50863:6;50859:14;50852:58;50944:19;50939:2;50931:6;50927:15;50920:44;50735:236;:::o;50977:231::-;51117:34;51113:1;51105:6;51101:14;51094:58;51186:14;51181:2;51173:6;51169:15;51162:39;50977:231;:::o;51214:164::-;51354:16;51350:1;51342:6;51338:14;51331:40;51214:164;:::o;51384:233::-;51524:34;51520:1;51512:6;51508:14;51501:58;51593:16;51588:2;51580:6;51576:15;51569:41;51384:233;:::o;51623:172::-;51763:24;51759:1;51751:6;51747:14;51740:48;51623:172;:::o;51801:225::-;51941:34;51937:1;51929:6;51925:14;51918:58;52010:8;52005:2;51997:6;51993:15;51986:33;51801:225;:::o;52032:122::-;52105:24;52123:5;52105:24;:::i;:::-;52098:5;52095:35;52085:63;;52144:1;52141;52134:12;52085:63;52032:122;:::o;52160:116::-;52230:21;52245:5;52230:21;:::i;:::-;52223:5;52220:32;52210:60;;52266:1;52263;52256:12;52210:60;52160:116;:::o;52282:120::-;52354:23;52371:5;52354:23;:::i;:::-;52347:5;52344:34;52334:62;;52392:1;52389;52382:12;52334:62;52282:120;:::o;52408:122::-;52481:24;52499:5;52481:24;:::i;:::-;52474:5;52471:35;52461:63;;52520:1;52517;52510:12;52461:63;52408:122;:::o
Swarm Source
ipfs://317ae91e9897dd7fddd8369f4518eb1cab45a162e62aade621add315a7b170b1
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.