ERC-721
Overview
Max Total Supply
23 Q
Holders
17
Market
Volume (24H)
N/A
Min Price (24H)
N/A
Max Price (24H)
N/A
Other Info
Token Contract
Balance
1 QLoading...
Loading
Loading...
Loading
Loading...
Loading
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
Contract Source Code Verified (Exact Match)
Contract Name:
QR
Compiler Version
v0.8.4+commit.c7e474f2
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2021-09-01 */ pragma solidity ^0.8.0; interface IERC721 { 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; } abstract contract Context { function _msgSender() internal view virtual returns (address) { return msg.sender; } function _msgData() internal view virtual returns (bytes calldata) { return msg.data; } } contract ERC721 is Context, IERC721 { // Token name string private _name; // Token symbol string private _symbol; // Mapping from token ID to owner address mapping(uint256 => address) private _owners; // Mapping owner address to token count mapping(address => uint256) private _balances; // Mapping from token ID to approved address mapping(uint256 => address) private _tokenApprovals; // Mapping from owner to operator approvals 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 returns (bool) { return interfaceId == type(IERC721).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 returns (string memory) { return _name; } function symbol() public view virtual returns (string memory) { return _symbol; } 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); } function _exists(uint256 tokenId) internal view virtual returns (bool) { return _owners[tokenId] != address(0); } function _isApprovedOrOwner(address spender, uint256 tokenId) internal view virtual returns (bool) { require(_exists(tokenId), "ERC721: operator query for nonexistent token"); address owner = ERC721.ownerOf(tokenId); return (spender == owner || getApproved(tokenId) == spender || isApprovedForAll(owner, spender)); } function _mint(address to, uint256 tokenId) internal virtual { require(to != address(0), "ERC721: mint to the zero address"); require(!_exists(tokenId), "ERC721: token already minted"); _balances[to] += 1; _owners[tokenId] = to; emit Transfer(address(0), to, 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"); // Clear approvals from the previous owner _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); } } contract QR is ERC721 { uint8 internal _count; bytes constant ALPHABET = '123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz'; uint16 constant prefixInt = 4640; bytes32[] internal ipfsLinks; constructor() ERC721("Rare QRs", "Q") { _count = 0; ipfsLinks = [bytes32(0x2c7658c7f3dbb9bbc22ffe8e4bf4915f6503618c28dd0a7425b4844045aa77e3), bytes32(0x2621bf62f881ad2ca8e9154d5faf9c6f7b1337eb14ecea940beb6081fe43810a), bytes32(0x1ea0e7276f08079ba3eb5d5db626f7c6b2af43ea9fe2057396668fec721d728d), bytes32(0x3e6bb3d82181874259ef855b8178d125585a55fc72eb97e2c956eebef8cf5d44), bytes32(0x5d9698497e3c3ac1656c9a456bcfb02989c68b949307c46a78417c35b022d8c8), bytes32(0xa100261e8c7cb02d89ede8d3c48936d5d6d8c0bbc077c1061f8e00d36bee1c37), bytes32(0xf24b70fc7f3eec510150d22ef59d5821f2558a79c8fd6c523e2ce73fe26ffd66), bytes32(0x53eaf88c59664c0340a469345bce47cff8e98d4590e5359fd8f93d4aa280eb8b), bytes32(0x0bbb5d6ff3ef1844721a5f921ce8f97f243d8d278d3f459fd63b53cba3c2baea), bytes32(0x355f7c89e84decf365dc040d26dc00a2fb3ba4093ec07aa3937e3c6232f67c3f), bytes32(0x4b57af095c7fec01a95ff38d05f8b0739ca8db64b843830e112001fc0d4fd6ab), bytes32(0x1c84fb565b67938f05257c529c7f0641ad7a22d2427300953f7364b5024621c6), bytes32(0x950f021b3d3a5e05f75c96bd49a2d29965195c87f12ef2fafea31a2073443b13), bytes32(0x6868be09fbe323a4108bf0e93393109afa10ed13d2d73bfb5cacfbc1e0980a22), bytes32(0xb185c4c7013bf4548f35021019f0121b8452df5908f3609796700a8dee6fb76e), bytes32(0xe76496d2608722b66a5c338d7a9a74cae43c4b8cc968d780e3807c9c713a31f6), bytes32(0x018ff9bb328b8bb77dbdcfdfb6ecf5288d9b0d327782670b52766c6659aed5f1), bytes32(0x9431493cbf1206e05a65bef446838c0e4d8ead54d4c53f5c2e9dc17ada6f33ec), bytes32(0xbbf649801868986c3d7e2239172019a06800239707e28486cb16205f8fb66cc2), bytes32(0xe07df2a33893f4e2856d27c4081e3db80eea5da388f76c46edd6a3eea859c8e6), bytes32(0x8d5430a315404995757726d3a1fc4c1c44e18b2c1ce5aa2039741c3ce1957cb8), bytes32(0xc7dbb8b4ee6efe93359fba0b44c0adae94a549bf0780ab0d9b2bdb2af19c119f), bytes32(0xf0640598d6a95be564cd446f101750dace146453f9a3b3b38acd4972e132321a), bytes32(0x9187aac4dbae96893cc8934e9cf551359621bec93b9f9a6efbb38fee5ddb6fc1), bytes32(0xb311fa354fd381c07419278d4acefe5d71632d82b9dd71e832f0f26f14821b20), bytes32(0xcf381b71f64873b80593fb946ca58c81c980add8f18d7f73b561be043dbf3c30), bytes32(0xdafed8de98266f26526e69086f66840dab4c59c6883b3b85fef09125c3cd42ae), bytes32(0xe05e86591ada0f8377f7b305903520765a7b5ae7bbb7d1537be6fe5b8331ea3c), bytes32(0xcde869ae256171675972b4c0a1f21112afc921c3392d4a788788f82a21c7c7cb), bytes32(0xe0ab35655ca79b797ead9fa74c15bf792931f29442d77937fb9c97af89b7767b), bytes32(0xa4b56fabf0f631b62efe6375d9cecc2e971dafd07cce5f249fc2828e08b272b6), bytes32(0x442adf7bbc35d3e98c3695ee854589308c9db6412db96a5a0437f4b9c74e9257), bytes32(0x483051633c23942951746d798133a5fdd716cd1c268e0d6a5dc6d4e1bf8d5785), bytes32(0xdc1ba9d01b8ad990231c7892d94daee65a77793b62998e381a2b90e5e8f07528), bytes32(0x9abf39bc2dfbcf55e3f1c8e9ee5c6525fbdeba9ada56f986ad2913d5155361ce), bytes32(0x86c34b4e82c7caa40fbfa9cf2654065b17253db3d26f526f6be2a9274927725a), bytes32(0x3f4dbb444fed66b4e63ed71f901bed95bb221eed8e6d173fc4593b0e9946f653), bytes32(0x1feac35e4d48b9310cf9f746416d02962c6b1b2a0281c3242e97eb60ef56cc70), bytes32(0xdd88804a09f78c5874ea857ca4cfa3eac170ce2ce4571fa03a7802273617b99c), bytes32(0x0aa16b240c51fc4753bb33dd351320d788f3e3a2cdd0dac313a3e91493381c17), bytes32(0x967a5ccafa3888f4c1e02b579b40d14e677079b277d972bdf13f21f2af6bcc26), bytes32(0x4fab6e2e41c2cd209edd48533d4f152d1e3dfb3a3dfe110e4dcb3a5e59cdcaf7), bytes32(0x56eeaccb4ba87be0d1c7d955a3edb2bc8b904d249528d0ad9bbfe5efd43d3103), bytes32(0x82bed8ad500005cdf74e4e578e2c67e4d65350314bd39776cc0317dfff91a5c9), bytes32(0x50488a45b1a9cf2e0af21966390fa7a50d3d92e59cfbfb682215e7df54c35d64), bytes32(0xa27dd030789df429ad167d15671fdfc3837ca0e5c9bf9c92aa3a632a383c1a5f), bytes32(0xdbb24870e5b6673abefd8ec25798d3c9f8736fdd7b2ce5ae924ee9e5e8621df5), bytes32(0x45e7e5b44c7424b9707710d0274b21be774a88947977938dbf19436dc6bdf792), bytes32(0x703a1f32399a6a399e7a8ce3d48c3d58f8707601a7d96ae4a600a12dd0704b12), bytes32(0x59595fbefa285356baa98d2d5bdacb74b06d0210aa534f95be7bfd0872c975ed), bytes32(0x31ade3079ee02d939ef4c5cd9047949c5487f7a07b65e6fabf96ee57dbb1caec), bytes32(0x935e4d9faddb9336d85258e8d3d438a971be27d6b774ba9659699fee0650e800), bytes32(0x654c0fc766612eb603eb3fb71ec436ce3d84b43264ba5a57ec6eefedbdcb81bc), bytes32(0xb2810575eb6e25fbdcb2f483787e1878ba2303b1f05ea7ed74d46c80164c4700), bytes32(0x1f052f9a7a8932e4eee8dc33814b30caf5846a56729be7001e10f37e93ba5bf5), bytes32(0x216048b1949a094f78bef00691562f24707d0425c6ca8c131c1635cb141636fa), bytes32(0x6f327ef5354373e09f696bc6a3e28aadcf80eb67680ec0f038db74e29f619e49), bytes32(0x1e25716383d28ea49ef071e65cf6f17ab1f491f7723034f3b798ded719daf5e5), bytes32(0xa54cb8d91f8bfc7f5e5dce92cbfc235c34191bf6ac9e0c3080f8661548c13555), bytes32(0x56c75993a14b53f4483165770a968a326bb71e6b59fa341aff82a00e0811aabe), bytes32(0x5bbb8db06e273c8d895e7e558ec5df325a734a830827615fea6a45c61f2ca90d), bytes32(0xf81ef5ec60296718437b3055d7c6b9b6e8a3932afe4de37dbf992d5e6c1aab87), bytes32(0x6281ef6a355fa30eda2d225a511db8bcc48b43f7b39c58497efc143707e8db68), bytes32(0x1ae74ebb38e831cab0977df718db515b2946205a032a28b5810a3bb11a1fcd43)]; } event PermanentURI(string _value, uint256 indexed _id); function truncate(uint8[] memory array, uint8 length) internal pure returns (uint8[] memory) { uint8[] memory output = new uint8[](length); for (uint256 i = 0; i<length; i++) { output[i] = array[i]; } return output; } function reverse(uint8[] memory input) internal pure returns (uint8[] memory) { uint8[] memory output = new uint8[](input.length); for (uint256 i = 0; i<input.length; i++) { output[i] = input[input.length-1-i]; } return output; } function toAlphabet(uint8[] memory indices) internal pure returns (bytes memory) { bytes memory output = new bytes(indices.length); for (uint256 i = 0; i<indices.length; i++) { output[i] = ALPHABET[indices[i]]; } return output; } function concat(bytes memory byteArray, bytes memory byteArray2) internal pure returns (bytes memory) { bytes memory returnArray = new bytes(byteArray.length + byteArray2.length); uint i = 0; for (i; i < byteArray.length; i++) { returnArray[i] = byteArray[i]; } for (i; i < (byteArray.length + byteArray2.length); i++) { returnArray[i] = byteArray2[i - byteArray.length]; } return returnArray; } // From https://github.com/MrChico/verifyIPFS/blob/master/contracts/verifyIPFS.sol#L28 function toBase58(bytes memory source) public pure returns (bytes memory) { bytes memory prefix = abi.encodePacked(prefixInt); source = concat(prefix, source); if (source.length == 0) return new bytes(0); uint8[] memory digits = new uint8[](64); digits[0] = 0; uint8 digitlength = 1; for (uint256 i = 0; i<source.length; ++i) { uint carry = uint8(source[i]); for (uint256 j = 0; j<digitlength; ++j) { carry += uint(digits[j]) * 256; digits[j] = uint8(carry % 58); carry = carry / 58; } while (carry > 0) { digits[digitlength] = uint8(carry % 58); digitlength++; carry = carry / 58; } } return toAlphabet(reverse(truncate(digits, digitlength))); } function mintQr() public { require(_count < ipfsLinks.length, "Capped!"); _mint(msg.sender, _count); emit PermanentURI(string(abi.encodePacked("ipfs://", toBase58(abi.encodePacked(ipfsLinks[_count])))), _count); // Putting this in the mint function artificially pumps the gas cost, burning more eth! _count++; } function tokenURI(uint256 tokenId) public view returns (string memory) { require (_count > tokenId, "Not yet minted!"); return string(abi.encodePacked("ipfs://", toBase58(abi.encodePacked(ipfsLinks[tokenId])))); } function totalSupply() public view returns (uint256) { return _count; } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"approved","type":"address"},{"indexed":true,"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"operator","type":"address"},{"indexed":false,"internalType":"bool","name":"approved","type":"bool"}],"name":"ApprovalForAll","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"string","name":"_value","type":"string"},{"indexed":true,"internalType":"uint256","name":"_id","type":"uint256"}],"name":"PermanentURI","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":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"approve","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"getApproved","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"operator","type":"address"}],"name":"isApprovedForAll","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"mintQr","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"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":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"safeTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"bytes","name":"_data","type":"bytes"}],"name":"safeTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"bool","name":"approved","type":"bool"}],"name":"setApprovalForAll","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes","name":"source","type":"bytes"}],"name":"toBase58","outputs":[{"internalType":"bytes","name":"","type":"bytes"}],"stateMutability":"pure","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"}]
Contract Creation Code
60806040523480156200001157600080fd5b506040518060400160405280600881526020017f52617265205152730000000000000000000000000000000000000000000000008152506040518060400160405280600181526020017f510000000000000000000000000000000000000000000000000000000000000081525081600090805190602001906200009692919062000b31565b508060019080519060200190620000af92919062000b31565b5050506000600660006101000a81548160ff021916908360ff1602179055506040518061080001604052807f2c7658c7f3dbb9bbc22ffe8e4bf4915f6503618c28dd0a7425b4844045aa77e360001b81526020017f2621bf62f881ad2ca8e9154d5faf9c6f7b1337eb14ecea940beb6081fe43810a60001b81526020017f1ea0e7276f08079ba3eb5d5db626f7c6b2af43ea9fe2057396668fec721d728d60001b81526020017f3e6bb3d82181874259ef855b8178d125585a55fc72eb97e2c956eebef8cf5d4460001b81526020017f5d9698497e3c3ac1656c9a456bcfb02989c68b949307c46a78417c35b022d8c860001b81526020017fa100261e8c7cb02d89ede8d3c48936d5d6d8c0bbc077c1061f8e00d36bee1c3760001b81526020017ff24b70fc7f3eec510150d22ef59d5821f2558a79c8fd6c523e2ce73fe26ffd6660001b81526020017f53eaf88c59664c0340a469345bce47cff8e98d4590e5359fd8f93d4aa280eb8b60001b81526020017f0bbb5d6ff3ef1844721a5f921ce8f97f243d8d278d3f459fd63b53cba3c2baea60001b81526020017f355f7c89e84decf365dc040d26dc00a2fb3ba4093ec07aa3937e3c6232f67c3f60001b81526020017f4b57af095c7fec01a95ff38d05f8b0739ca8db64b843830e112001fc0d4fd6ab60001b81526020017f1c84fb565b67938f05257c529c7f0641ad7a22d2427300953f7364b5024621c660001b81526020017f950f021b3d3a5e05f75c96bd49a2d29965195c87f12ef2fafea31a2073443b1360001b81526020017f6868be09fbe323a4108bf0e93393109afa10ed13d2d73bfb5cacfbc1e0980a2260001b81526020017fb185c4c7013bf4548f35021019f0121b8452df5908f3609796700a8dee6fb76e60001b81526020017fe76496d2608722b66a5c338d7a9a74cae43c4b8cc968d780e3807c9c713a31f660001b81526020017f018ff9bb328b8bb77dbdcfdfb6ecf5288d9b0d327782670b52766c6659aed5f160001b81526020017f9431493cbf1206e05a65bef446838c0e4d8ead54d4c53f5c2e9dc17ada6f33ec60001b81526020017fbbf649801868986c3d7e2239172019a06800239707e28486cb16205f8fb66cc260001b81526020017fe07df2a33893f4e2856d27c4081e3db80eea5da388f76c46edd6a3eea859c8e660001b81526020017f8d5430a315404995757726d3a1fc4c1c44e18b2c1ce5aa2039741c3ce1957cb860001b81526020017fc7dbb8b4ee6efe93359fba0b44c0adae94a549bf0780ab0d9b2bdb2af19c119f60001b81526020017ff0640598d6a95be564cd446f101750dace146453f9a3b3b38acd4972e132321a60001b81526020017f9187aac4dbae96893cc8934e9cf551359621bec93b9f9a6efbb38fee5ddb6fc160001b81526020017fb311fa354fd381c07419278d4acefe5d71632d82b9dd71e832f0f26f14821b2060001b81526020017fcf381b71f64873b80593fb946ca58c81c980add8f18d7f73b561be043dbf3c3060001b81526020017fdafed8de98266f26526e69086f66840dab4c59c6883b3b85fef09125c3cd42ae60001b81526020017fe05e86591ada0f8377f7b305903520765a7b5ae7bbb7d1537be6fe5b8331ea3c60001b81526020017fcde869ae256171675972b4c0a1f21112afc921c3392d4a788788f82a21c7c7cb60001b81526020017fe0ab35655ca79b797ead9fa74c15bf792931f29442d77937fb9c97af89b7767b60001b81526020017fa4b56fabf0f631b62efe6375d9cecc2e971dafd07cce5f249fc2828e08b272b660001b81526020017f442adf7bbc35d3e98c3695ee854589308c9db6412db96a5a0437f4b9c74e925760001b81526020017f483051633c23942951746d798133a5fdd716cd1c268e0d6a5dc6d4e1bf8d578560001b81526020017fdc1ba9d01b8ad990231c7892d94daee65a77793b62998e381a2b90e5e8f0752860001b81526020017f9abf39bc2dfbcf55e3f1c8e9ee5c6525fbdeba9ada56f986ad2913d5155361ce60001b81526020017f86c34b4e82c7caa40fbfa9cf2654065b17253db3d26f526f6be2a9274927725a60001b81526020017f3f4dbb444fed66b4e63ed71f901bed95bb221eed8e6d173fc4593b0e9946f65360001b81526020017f1feac35e4d48b9310cf9f746416d02962c6b1b2a0281c3242e97eb60ef56cc7060001b81526020017fdd88804a09f78c5874ea857ca4cfa3eac170ce2ce4571fa03a7802273617b99c60001b81526020017f0aa16b240c51fc4753bb33dd351320d788f3e3a2cdd0dac313a3e91493381c1760001b81526020017f967a5ccafa3888f4c1e02b579b40d14e677079b277d972bdf13f21f2af6bcc2660001b81526020017f4fab6e2e41c2cd209edd48533d4f152d1e3dfb3a3dfe110e4dcb3a5e59cdcaf760001b81526020017f56eeaccb4ba87be0d1c7d955a3edb2bc8b904d249528d0ad9bbfe5efd43d310360001b81526020017f82bed8ad500005cdf74e4e578e2c67e4d65350314bd39776cc0317dfff91a5c960001b81526020017f50488a45b1a9cf2e0af21966390fa7a50d3d92e59cfbfb682215e7df54c35d6460001b81526020017fa27dd030789df429ad167d15671fdfc3837ca0e5c9bf9c92aa3a632a383c1a5f60001b81526020017fdbb24870e5b6673abefd8ec25798d3c9f8736fdd7b2ce5ae924ee9e5e8621df560001b81526020017f45e7e5b44c7424b9707710d0274b21be774a88947977938dbf19436dc6bdf79260001b81526020017f703a1f32399a6a399e7a8ce3d48c3d58f8707601a7d96ae4a600a12dd0704b1260001b81526020017f59595fbefa285356baa98d2d5bdacb74b06d0210aa534f95be7bfd0872c975ed60001b81526020017f31ade3079ee02d939ef4c5cd9047949c5487f7a07b65e6fabf96ee57dbb1caec60001b81526020017f935e4d9faddb9336d85258e8d3d438a971be27d6b774ba9659699fee0650e80060001b81526020017f654c0fc766612eb603eb3fb71ec436ce3d84b43264ba5a57ec6eefedbdcb81bc60001b81526020017fb2810575eb6e25fbdcb2f483787e1878ba2303b1f05ea7ed74d46c80164c470060001b81526020017f1f052f9a7a8932e4eee8dc33814b30caf5846a56729be7001e10f37e93ba5bf560001b81526020017f216048b1949a094f78bef00691562f24707d0425c6ca8c131c1635cb141636fa60001b81526020017f6f327ef5354373e09f696bc6a3e28aadcf80eb67680ec0f038db74e29f619e4960001b81526020017f1e25716383d28ea49ef071e65cf6f17ab1f491f7723034f3b798ded719daf5e560001b81526020017fa54cb8d91f8bfc7f5e5dce92cbfc235c34191bf6ac9e0c3080f8661548c1355560001b81526020017f56c75993a14b53f4483165770a968a326bb71e6b59fa341aff82a00e0811aabe60001b81526020017f5bbb8db06e273c8d895e7e558ec5df325a734a830827615fea6a45c61f2ca90d60001b81526020017ff81ef5ec60296718437b3055d7c6b9b6e8a3932afe4de37dbf992d5e6c1aab8760001b81526020017f6281ef6a355fa30eda2d225a511db8bcc48b43f7b39c58497efc143707e8db6860001b81526020017f1ae74ebb38e831cab0977df718db515b2946205a032a28b5810a3bb11a1fcd4360001b815250600790604062000b2a92919062000bc2565b5062000cb7565b82805462000b3f9062000c52565b90600052602060002090601f01602090048101928262000b63576000855562000baf565b82601f1062000b7e57805160ff191683800117855562000baf565b8280016001018555821562000baf579182015b8281111562000bae57825182559160200191906001019062000b91565b5b50905062000bbe919062000c14565b5090565b82805482825590600052602060002090810192821562000c01579160200282015b8281111562000c0057825182559160200191906001019062000be3565b5b50905062000c10919062000c33565b5090565b5b8082111562000c2f57600081600090555060010162000c15565b5090565b5b8082111562000c4e57600081600090555060010162000c34565b5090565b6000600282049050600182168062000c6b57607f821691505b6020821081141562000c825762000c8162000c88565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b612f438062000cc76000396000f3fe608060405234801561001057600080fd5b50600436106101005760003560e01c806370a0823111610097578063b88d4fde11610066578063b88d4fde146102bf578063c87b56dd146102db578063d454600d1461030b578063e985e9c51461031557610100565b806370a082311461022557806395d89b4114610255578063a22cb46514610273578063b500cc081461028f57610100565b806318160ddd116100d357806318160ddd1461019f57806323b872dd146101bd57806342842e0e146101d95780636352211e146101f557610100565b806301ffc9a71461010557806306fdde0314610135578063081812fc14610153578063095ea7b314610183575b600080fd5b61011f600480360381019061011a9190611fde565b610345565b60405161012c91906123ef565b60405180910390f35b61013d6103af565b60405161014a919061242c565b60405180910390f35b61016d60048036038101906101689190612048565b610441565b60405161017a91906123d4565b60405180910390f35b61019d60048036038101906101989190611fa2565b6104c6565b005b6101a76105de565b6040516101b4919061260e565b60405180910390f35b6101d760048036038101906101d29190611e9c565b6105f8565b005b6101f360048036038101906101ee9190611e9c565b610658565b005b61020f600480360381019061020a9190612048565b610678565b60405161021c91906123d4565b60405180910390f35b61023f600480360381019061023a9190611e37565b61072a565b60405161024c919061260e565b60405180910390f35b61025d6107e2565b60405161026a919061242c565b60405180910390f35b61028d60048036038101906102889190611f66565b610874565b005b6102a960048036038101906102a49190612007565b6109f5565b6040516102b6919061240a565b60405180910390f35b6102d960048036038101906102d49190611eeb565b610d7b565b005b6102f560048036038101906102f09190612048565b610ddd565b604051610302919061242c565b60405180910390f35b610313610ec5565b005b61032f600480360381019061032a9190611e60565b61105a565b60405161033c91906123ef565b60405180910390f35b60007f80ac58cd000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b6060600080546103be906128bd565b80601f01602080910402602001604051908101604052809291908181526020018280546103ea906128bd565b80156104375780601f1061040c57610100808354040283529160200191610437565b820191906000526020600020905b81548152906001019060200180831161041a57829003601f168201915b5050505050905090565b600061044c826110ee565b61048b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016104829061256e565b60405180910390fd5b6004600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b60006104d182610678565b90508073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610542576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610539906125ce565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1661056161115a565b73ffffffffffffffffffffffffffffffffffffffff161480610590575061058f8161058a61115a565b61105a565b5b6105cf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105c6906124ee565b60405180910390fd5b6105d98383611162565b505050565b6000600660009054906101000a900460ff1660ff16905090565b61060961060361115a565b8261121b565b610648576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161063f906125ee565b60405180910390fd5b6106538383836112f9565b505050565b61067383838360405180602001604052806000815250610d7b565b505050565b6000806002600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415610721576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107189061252e565b60405180910390fd5b80915050919050565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561079b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107929061250e565b60405180910390fd5b600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6060600180546107f1906128bd565b80601f016020809104026020016040519081016040528092919081815260200182805461081d906128bd565b801561086a5780601f1061083f5761010080835404028352916020019161086a565b820191906000526020600020905b81548152906001019060200180831161084d57829003601f168201915b5050505050905090565b61087c61115a565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156108ea576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108e19061248e565b60405180910390fd5b80600560006108f761115a565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff166109a461115a565b73ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31836040516109e991906123ef565b60405180910390a35050565b60606000611220604051602001610a0c91906123b9565b6040516020818303038152906040529050610a27818461154a565b9250600083511415610aaf57600067ffffffffffffffff811115610a74577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040519080825280601f01601f191660200182016040528015610aa65781602001600182028036833780820191505090505b50915050610d76565b6000604067ffffffffffffffff811115610af2577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051908082528060200260200182016040528015610b205781602001602082028036833780820191505090505b509050600081600081518110610b5f577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001019060ff16908160ff168152505060006001905060005b8551811015610d55576000868281518110610bc0577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602001015160f81c60f81b60f81c60ff16905060005b8360ff16811015610cb957610100858281518110610c1d577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001015160ff16610c329190612754565b82610c3d91906126cd565b9150603a82610c4c91906129af565b858281518110610c85577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001019060ff16908160ff1681525050603a82610ca69190612723565b915080610cb290612920565b9050610bd6565b505b6000811115610d4357603a81610cd191906129af565b848460ff1681518110610d0d577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001019060ff16908160ff16815250508280610d2c90612969565b935050603a81610d3c9190612723565b9050610cbb565b5080610d4e90612920565b9050610b7c565b50610d70610d6b610d668484611787565b6118b9565b6119fe565b93505050505b919050565b610d8c610d8661115a565b8361121b565b610dcb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dc2906125ee565b60405180910390fd5b610dd784848484611ba8565b50505050565b606081600660009054906101000a900460ff1660ff1611610e33576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e2a906125ae565b60405180910390fd5b610e9f60078381548110610e70577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200154604051602001610e8b919061237c565b6040516020818303038152906040526109f5565b604051602001610eaf9190612397565b6040516020818303038152906040529050919050565b600780549050600660009054906101000a900460ff1660ff1610610f1e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f15906124ce565b60405180910390fd5b610f3a33600660009054906101000a900460ff1660ff16611bb9565b600660009054906101000a900460ff1660ff167fa109ba539900bf1b633f956d63c96fc89b814c7287f7aa50a9216d0b55657207610fec6007600660009054906101000a900460ff1660ff1681548110610fbd577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200154604051602001610fd8919061237c565b6040516020818303038152906040526109f5565b604051602001610ffc9190612397565b604051602081830303815290604052604051611018919061242c565b60405180910390a26006600081819054906101000a900460ff168092919061103f90612969565b91906101000a81548160ff021916908360ff16021790555050565b6000600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b60008073ffffffffffffffffffffffffffffffffffffffff166002600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614159050919050565b600033905090565b816004600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff166111d583610678565b73ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b6000611226826110ee565b611265576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161125c906124ae565b60405180910390fd5b600061127083610678565b90508073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614806112df57508373ffffffffffffffffffffffffffffffffffffffff166112c784610441565b73ffffffffffffffffffffffffffffffffffffffff16145b806112f057506112ef818561105a565b5b91505092915050565b8273ffffffffffffffffffffffffffffffffffffffff1661131982610678565b73ffffffffffffffffffffffffffffffffffffffff161461136f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113669061258e565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156113df576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113d69061246e565b60405180910390fd5b6113ea600082611162565b6001600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461143a91906127ae565b925050819055506001600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461149191906126cd565b92505081905550816002600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4505050565b606060008251845161155c91906126cd565b67ffffffffffffffff81111561159b577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040519080825280601f01601f1916602001820160405280156115cd5781602001600182028036833780820191505090505b50905060005b845181101561169b57848181518110611615577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602001015160f81c60f81b828281518110611659577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350808061169390612920565b9150506115d3565b5b835185516116aa91906126cd565b81101561177c57838551826116bf91906127ae565b815181106116f6577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602001015160f81c60f81b82828151811061173a577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350808061177490612920565b91505061169c565b819250505092915050565b606060008260ff1667ffffffffffffffff8111156117ce577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040519080825280602002602001820160405280156117fc5781602001602082028036833780820191505090505b50905060005b8360ff168110156118ae57848181518110611846577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6020026020010151828281518110611887577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001019060ff16908160ff168152505080806118a690612920565b915050611802565b508091505092915050565b60606000825167ffffffffffffffff8111156118fe577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60405190808252806020026020018201604052801561192c5781602001602082028036833780820191505090505b50905060005b83518110156119f45783816001865161194b91906127ae565b61195591906127ae565b8151811061198c577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60200260200101518282815181106119cd577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001019060ff16908160ff168152505080806119ec90612920565b915050611932565b5080915050919050565b60606000825167ffffffffffffffff811115611a43577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040519080825280601f01601f191660200182016040528015611a755781602001600182028036833780820191505090505b50905060005b8351811015611b9e576040518060600160405280603a8152602001612ed4603a9139848281518110611ad6577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001015160ff1681518110611b18577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602001015160f81c60f81b828281518110611b5c577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053508080611b9690612920565b915050611a7b565b5080915050919050565b611bb38484846112f9565b50505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611c29576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c209061254e565b60405180910390fd5b611c32816110ee565b15611c72576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c699061244e565b60405180910390fd5b6001600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254611cc291906126cd565b92505081905550816002600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a45050565b6000611d8e611d898461264e565b612629565b905082815260208101848484011115611da657600080fd5b611db184828561287b565b509392505050565b600081359050611dc881612e77565b92915050565b600081359050611ddd81612e8e565b92915050565b600081359050611df281612ea5565b92915050565b600082601f830112611e0957600080fd5b8135611e19848260208601611d7b565b91505092915050565b600081359050611e3181612ebc565b92915050565b600060208284031215611e4957600080fd5b6000611e5784828501611db9565b91505092915050565b60008060408385031215611e7357600080fd5b6000611e8185828601611db9565b9250506020611e9285828601611db9565b9150509250929050565b600080600060608486031215611eb157600080fd5b6000611ebf86828701611db9565b9350506020611ed086828701611db9565b9250506040611ee186828701611e22565b9150509250925092565b60008060008060808587031215611f0157600080fd5b6000611f0f87828801611db9565b9450506020611f2087828801611db9565b9350506040611f3187828801611e22565b925050606085013567ffffffffffffffff811115611f4e57600080fd5b611f5a87828801611df8565b91505092959194509250565b60008060408385031215611f7957600080fd5b6000611f8785828601611db9565b9250506020611f9885828601611dce565b9150509250929050565b60008060408385031215611fb557600080fd5b6000611fc385828601611db9565b9250506020611fd485828601611e22565b9150509250929050565b600060208284031215611ff057600080fd5b6000611ffe84828501611de3565b91505092915050565b60006020828403121561201957600080fd5b600082013567ffffffffffffffff81111561203357600080fd5b61203f84828501611df8565b91505092915050565b60006020828403121561205a57600080fd5b600061206884828501611e22565b91505092915050565b61207a816127e2565b82525050565b612089816127f4565b82525050565b6120a061209b82612800565b612993565b82525050565b60006120b18261267f565b6120bb8185612695565b93506120cb81856020860161288a565b6120d481612a9c565b840191505092915050565b60006120ea8261267f565b6120f481856126a6565b935061210481856020860161288a565b80840191505092915050565b600061211b8261268a565b61212581856126b1565b935061213581856020860161288a565b61213e81612a9c565b840191505092915050565b6000612156601c836126b1565b915061216182612aba565b602082019050919050565b60006121796024836126b1565b915061218482612ae3565b604082019050919050565b600061219c6019836126b1565b91506121a782612b32565b602082019050919050565b60006121bf602c836126b1565b91506121ca82612b5b565b604082019050919050565b60006121e26007836126b1565b91506121ed82612baa565b602082019050919050565b60006122056007836126c2565b915061221082612bd3565b600782019050919050565b60006122286038836126b1565b915061223382612bfc565b604082019050919050565b600061224b602a836126b1565b915061225682612c4b565b604082019050919050565b600061226e6029836126b1565b915061227982612c9a565b604082019050919050565b60006122916020836126b1565b915061229c82612ce9565b602082019050919050565b60006122b4602c836126b1565b91506122bf82612d12565b604082019050919050565b60006122d76029836126b1565b91506122e282612d61565b604082019050919050565b60006122fa600f836126b1565b915061230582612db0565b602082019050919050565b600061231d6021836126b1565b915061232882612dd9565b604082019050919050565b60006123406031836126b1565b915061234b82612e28565b604082019050919050565b61236761236282612836565b61299d565b82525050565b61237681612864565b82525050565b6000612388828461208f565b60208201915081905092915050565b60006123a2826121f8565b91506123ae82846120df565b915081905092915050565b60006123c58284612356565b60028201915081905092915050565b60006020820190506123e96000830184612071565b92915050565b60006020820190506124046000830184612080565b92915050565b6000602082019050818103600083015261242481846120a6565b905092915050565b600060208201905081810360008301526124468184612110565b905092915050565b6000602082019050818103600083015261246781612149565b9050919050565b600060208201905081810360008301526124878161216c565b9050919050565b600060208201905081810360008301526124a78161218f565b9050919050565b600060208201905081810360008301526124c7816121b2565b9050919050565b600060208201905081810360008301526124e7816121d5565b9050919050565b600060208201905081810360008301526125078161221b565b9050919050565b600060208201905081810360008301526125278161223e565b9050919050565b6000602082019050818103600083015261254781612261565b9050919050565b6000602082019050818103600083015261256781612284565b9050919050565b60006020820190508181036000830152612587816122a7565b9050919050565b600060208201905081810360008301526125a7816122ca565b9050919050565b600060208201905081810360008301526125c7816122ed565b9050919050565b600060208201905081810360008301526125e781612310565b9050919050565b6000602082019050818103600083015261260781612333565b9050919050565b6000602082019050612623600083018461236d565b92915050565b6000612633612644565b905061263f82826128ef565b919050565b6000604051905090565b600067ffffffffffffffff82111561266957612668612a6d565b5b61267282612a9c565b9050602081019050919050565b600081519050919050565b600081519050919050565b600082825260208201905092915050565b600081905092915050565b600082825260208201905092915050565b600081905092915050565b60006126d882612864565b91506126e383612864565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115612718576127176129e0565b5b828201905092915050565b600061272e82612864565b915061273983612864565b92508261274957612748612a0f565b5b828204905092915050565b600061275f82612864565b915061276a83612864565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156127a3576127a26129e0565b5b828202905092915050565b60006127b982612864565b91506127c483612864565b9250828210156127d7576127d66129e0565b5b828203905092915050565b60006127ed82612844565b9050919050565b60008115159050919050565b6000819050919050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b600061ffff82169050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b82818337600083830152505050565b60005b838110156128a857808201518184015260208101905061288d565b838111156128b7576000848401525b50505050565b600060028204905060018216806128d557607f821691505b602082108114156128e9576128e8612a3e565b5b50919050565b6128f882612a9c565b810181811067ffffffffffffffff8211171561291757612916612a6d565b5b80604052505050565b600061292b82612864565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82141561295e5761295d6129e0565b5b600182019050919050565b60006129748261286e565b915060ff821415612988576129876129e0565b5b600182019050919050565b6000819050919050565b60006129a882612aad565b9050919050565b60006129ba82612864565b91506129c583612864565b9250826129d5576129d4612a0f565b5b828206905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000601f19601f8301169050919050565b60008160f01b9050919050565b7f4552433732313a20746f6b656e20616c7265616479206d696e74656400000000600082015250565b7f4552433732313a207472616e7366657220746f20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b7f4552433732313a20617070726f766520746f2063616c6c657200000000000000600082015250565b7f4552433732313a206f70657261746f7220717565727920666f72206e6f6e657860008201527f697374656e7420746f6b656e0000000000000000000000000000000000000000602082015250565b7f4361707065642100000000000000000000000000000000000000000000000000600082015250565b7f697066733a2f2f00000000000000000000000000000000000000000000000000600082015250565b7f4552433732313a20617070726f76652063616c6c6572206973206e6f74206f7760008201527f6e6572206e6f7220617070726f76656420666f7220616c6c0000000000000000602082015250565b7f4552433732313a2062616c616e636520717565727920666f7220746865207a6560008201527f726f206164647265737300000000000000000000000000000000000000000000602082015250565b7f4552433732313a206f776e657220717565727920666f72206e6f6e657869737460008201527f656e7420746f6b656e0000000000000000000000000000000000000000000000602082015250565b7f4552433732313a206d696e7420746f20746865207a65726f2061646472657373600082015250565b7f4552433732313a20617070726f76656420717565727920666f72206e6f6e657860008201527f697374656e7420746f6b656e0000000000000000000000000000000000000000602082015250565b7f4552433732313a207472616e73666572206f6620746f6b656e2074686174206960008201527f73206e6f74206f776e0000000000000000000000000000000000000000000000602082015250565b7f4e6f7420796574206d696e746564210000000000000000000000000000000000600082015250565b7f4552433732313a20617070726f76616c20746f2063757272656e74206f776e6560008201527f7200000000000000000000000000000000000000000000000000000000000000602082015250565b7f4552433732313a207472616e736665722063616c6c6572206973206e6f74206f60008201527f776e6572206e6f7220617070726f766564000000000000000000000000000000602082015250565b612e80816127e2565b8114612e8b57600080fd5b50565b612e97816127f4565b8114612ea257600080fd5b50565b612eae8161280a565b8114612eb957600080fd5b50565b612ec581612864565b8114612ed057600080fd5b5056fe31323334353637383941424344454647484a4b4c4d4e505152535455565758595a6162636465666768696a6b6d6e6f707172737475767778797aa2646970667358221220f6afbac9826c2004a974164bfd5ee5dc94b82e071bfb541995b794962e05868364736f6c63430008040033
Deployed Bytecode
0x608060405234801561001057600080fd5b50600436106101005760003560e01c806370a0823111610097578063b88d4fde11610066578063b88d4fde146102bf578063c87b56dd146102db578063d454600d1461030b578063e985e9c51461031557610100565b806370a082311461022557806395d89b4114610255578063a22cb46514610273578063b500cc081461028f57610100565b806318160ddd116100d357806318160ddd1461019f57806323b872dd146101bd57806342842e0e146101d95780636352211e146101f557610100565b806301ffc9a71461010557806306fdde0314610135578063081812fc14610153578063095ea7b314610183575b600080fd5b61011f600480360381019061011a9190611fde565b610345565b60405161012c91906123ef565b60405180910390f35b61013d6103af565b60405161014a919061242c565b60405180910390f35b61016d60048036038101906101689190612048565b610441565b60405161017a91906123d4565b60405180910390f35b61019d60048036038101906101989190611fa2565b6104c6565b005b6101a76105de565b6040516101b4919061260e565b60405180910390f35b6101d760048036038101906101d29190611e9c565b6105f8565b005b6101f360048036038101906101ee9190611e9c565b610658565b005b61020f600480360381019061020a9190612048565b610678565b60405161021c91906123d4565b60405180910390f35b61023f600480360381019061023a9190611e37565b61072a565b60405161024c919061260e565b60405180910390f35b61025d6107e2565b60405161026a919061242c565b60405180910390f35b61028d60048036038101906102889190611f66565b610874565b005b6102a960048036038101906102a49190612007565b6109f5565b6040516102b6919061240a565b60405180910390f35b6102d960048036038101906102d49190611eeb565b610d7b565b005b6102f560048036038101906102f09190612048565b610ddd565b604051610302919061242c565b60405180910390f35b610313610ec5565b005b61032f600480360381019061032a9190611e60565b61105a565b60405161033c91906123ef565b60405180910390f35b60007f80ac58cd000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b6060600080546103be906128bd565b80601f01602080910402602001604051908101604052809291908181526020018280546103ea906128bd565b80156104375780601f1061040c57610100808354040283529160200191610437565b820191906000526020600020905b81548152906001019060200180831161041a57829003601f168201915b5050505050905090565b600061044c826110ee565b61048b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016104829061256e565b60405180910390fd5b6004600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b60006104d182610678565b90508073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610542576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610539906125ce565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1661056161115a565b73ffffffffffffffffffffffffffffffffffffffff161480610590575061058f8161058a61115a565b61105a565b5b6105cf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105c6906124ee565b60405180910390fd5b6105d98383611162565b505050565b6000600660009054906101000a900460ff1660ff16905090565b61060961060361115a565b8261121b565b610648576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161063f906125ee565b60405180910390fd5b6106538383836112f9565b505050565b61067383838360405180602001604052806000815250610d7b565b505050565b6000806002600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415610721576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107189061252e565b60405180910390fd5b80915050919050565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561079b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107929061250e565b60405180910390fd5b600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6060600180546107f1906128bd565b80601f016020809104026020016040519081016040528092919081815260200182805461081d906128bd565b801561086a5780601f1061083f5761010080835404028352916020019161086a565b820191906000526020600020905b81548152906001019060200180831161084d57829003601f168201915b5050505050905090565b61087c61115a565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156108ea576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108e19061248e565b60405180910390fd5b80600560006108f761115a565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff166109a461115a565b73ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31836040516109e991906123ef565b60405180910390a35050565b60606000611220604051602001610a0c91906123b9565b6040516020818303038152906040529050610a27818461154a565b9250600083511415610aaf57600067ffffffffffffffff811115610a74577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040519080825280601f01601f191660200182016040528015610aa65781602001600182028036833780820191505090505b50915050610d76565b6000604067ffffffffffffffff811115610af2577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051908082528060200260200182016040528015610b205781602001602082028036833780820191505090505b509050600081600081518110610b5f577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001019060ff16908160ff168152505060006001905060005b8551811015610d55576000868281518110610bc0577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602001015160f81c60f81b60f81c60ff16905060005b8360ff16811015610cb957610100858281518110610c1d577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001015160ff16610c329190612754565b82610c3d91906126cd565b9150603a82610c4c91906129af565b858281518110610c85577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001019060ff16908160ff1681525050603a82610ca69190612723565b915080610cb290612920565b9050610bd6565b505b6000811115610d4357603a81610cd191906129af565b848460ff1681518110610d0d577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001019060ff16908160ff16815250508280610d2c90612969565b935050603a81610d3c9190612723565b9050610cbb565b5080610d4e90612920565b9050610b7c565b50610d70610d6b610d668484611787565b6118b9565b6119fe565b93505050505b919050565b610d8c610d8661115a565b8361121b565b610dcb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dc2906125ee565b60405180910390fd5b610dd784848484611ba8565b50505050565b606081600660009054906101000a900460ff1660ff1611610e33576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e2a906125ae565b60405180910390fd5b610e9f60078381548110610e70577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200154604051602001610e8b919061237c565b6040516020818303038152906040526109f5565b604051602001610eaf9190612397565b6040516020818303038152906040529050919050565b600780549050600660009054906101000a900460ff1660ff1610610f1e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f15906124ce565b60405180910390fd5b610f3a33600660009054906101000a900460ff1660ff16611bb9565b600660009054906101000a900460ff1660ff167fa109ba539900bf1b633f956d63c96fc89b814c7287f7aa50a9216d0b55657207610fec6007600660009054906101000a900460ff1660ff1681548110610fbd577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200154604051602001610fd8919061237c565b6040516020818303038152906040526109f5565b604051602001610ffc9190612397565b604051602081830303815290604052604051611018919061242c565b60405180910390a26006600081819054906101000a900460ff168092919061103f90612969565b91906101000a81548160ff021916908360ff16021790555050565b6000600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b60008073ffffffffffffffffffffffffffffffffffffffff166002600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614159050919050565b600033905090565b816004600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff166111d583610678565b73ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b6000611226826110ee565b611265576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161125c906124ae565b60405180910390fd5b600061127083610678565b90508073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614806112df57508373ffffffffffffffffffffffffffffffffffffffff166112c784610441565b73ffffffffffffffffffffffffffffffffffffffff16145b806112f057506112ef818561105a565b5b91505092915050565b8273ffffffffffffffffffffffffffffffffffffffff1661131982610678565b73ffffffffffffffffffffffffffffffffffffffff161461136f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113669061258e565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156113df576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113d69061246e565b60405180910390fd5b6113ea600082611162565b6001600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461143a91906127ae565b925050819055506001600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461149191906126cd565b92505081905550816002600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4505050565b606060008251845161155c91906126cd565b67ffffffffffffffff81111561159b577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040519080825280601f01601f1916602001820160405280156115cd5781602001600182028036833780820191505090505b50905060005b845181101561169b57848181518110611615577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602001015160f81c60f81b828281518110611659577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350808061169390612920565b9150506115d3565b5b835185516116aa91906126cd565b81101561177c57838551826116bf91906127ae565b815181106116f6577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602001015160f81c60f81b82828151811061173a577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350808061177490612920565b91505061169c565b819250505092915050565b606060008260ff1667ffffffffffffffff8111156117ce577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040519080825280602002602001820160405280156117fc5781602001602082028036833780820191505090505b50905060005b8360ff168110156118ae57848181518110611846577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6020026020010151828281518110611887577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001019060ff16908160ff168152505080806118a690612920565b915050611802565b508091505092915050565b60606000825167ffffffffffffffff8111156118fe577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60405190808252806020026020018201604052801561192c5781602001602082028036833780820191505090505b50905060005b83518110156119f45783816001865161194b91906127ae565b61195591906127ae565b8151811061198c577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60200260200101518282815181106119cd577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001019060ff16908160ff168152505080806119ec90612920565b915050611932565b5080915050919050565b60606000825167ffffffffffffffff811115611a43577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040519080825280601f01601f191660200182016040528015611a755781602001600182028036833780820191505090505b50905060005b8351811015611b9e576040518060600160405280603a8152602001612ed4603a9139848281518110611ad6577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001015160ff1681518110611b18577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602001015160f81c60f81b828281518110611b5c577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053508080611b9690612920565b915050611a7b565b5080915050919050565b611bb38484846112f9565b50505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611c29576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c209061254e565b60405180910390fd5b611c32816110ee565b15611c72576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c699061244e565b60405180910390fd5b6001600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254611cc291906126cd565b92505081905550816002600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a45050565b6000611d8e611d898461264e565b612629565b905082815260208101848484011115611da657600080fd5b611db184828561287b565b509392505050565b600081359050611dc881612e77565b92915050565b600081359050611ddd81612e8e565b92915050565b600081359050611df281612ea5565b92915050565b600082601f830112611e0957600080fd5b8135611e19848260208601611d7b565b91505092915050565b600081359050611e3181612ebc565b92915050565b600060208284031215611e4957600080fd5b6000611e5784828501611db9565b91505092915050565b60008060408385031215611e7357600080fd5b6000611e8185828601611db9565b9250506020611e9285828601611db9565b9150509250929050565b600080600060608486031215611eb157600080fd5b6000611ebf86828701611db9565b9350506020611ed086828701611db9565b9250506040611ee186828701611e22565b9150509250925092565b60008060008060808587031215611f0157600080fd5b6000611f0f87828801611db9565b9450506020611f2087828801611db9565b9350506040611f3187828801611e22565b925050606085013567ffffffffffffffff811115611f4e57600080fd5b611f5a87828801611df8565b91505092959194509250565b60008060408385031215611f7957600080fd5b6000611f8785828601611db9565b9250506020611f9885828601611dce565b9150509250929050565b60008060408385031215611fb557600080fd5b6000611fc385828601611db9565b9250506020611fd485828601611e22565b9150509250929050565b600060208284031215611ff057600080fd5b6000611ffe84828501611de3565b91505092915050565b60006020828403121561201957600080fd5b600082013567ffffffffffffffff81111561203357600080fd5b61203f84828501611df8565b91505092915050565b60006020828403121561205a57600080fd5b600061206884828501611e22565b91505092915050565b61207a816127e2565b82525050565b612089816127f4565b82525050565b6120a061209b82612800565b612993565b82525050565b60006120b18261267f565b6120bb8185612695565b93506120cb81856020860161288a565b6120d481612a9c565b840191505092915050565b60006120ea8261267f565b6120f481856126a6565b935061210481856020860161288a565b80840191505092915050565b600061211b8261268a565b61212581856126b1565b935061213581856020860161288a565b61213e81612a9c565b840191505092915050565b6000612156601c836126b1565b915061216182612aba565b602082019050919050565b60006121796024836126b1565b915061218482612ae3565b604082019050919050565b600061219c6019836126b1565b91506121a782612b32565b602082019050919050565b60006121bf602c836126b1565b91506121ca82612b5b565b604082019050919050565b60006121e26007836126b1565b91506121ed82612baa565b602082019050919050565b60006122056007836126c2565b915061221082612bd3565b600782019050919050565b60006122286038836126b1565b915061223382612bfc565b604082019050919050565b600061224b602a836126b1565b915061225682612c4b565b604082019050919050565b600061226e6029836126b1565b915061227982612c9a565b604082019050919050565b60006122916020836126b1565b915061229c82612ce9565b602082019050919050565b60006122b4602c836126b1565b91506122bf82612d12565b604082019050919050565b60006122d76029836126b1565b91506122e282612d61565b604082019050919050565b60006122fa600f836126b1565b915061230582612db0565b602082019050919050565b600061231d6021836126b1565b915061232882612dd9565b604082019050919050565b60006123406031836126b1565b915061234b82612e28565b604082019050919050565b61236761236282612836565b61299d565b82525050565b61237681612864565b82525050565b6000612388828461208f565b60208201915081905092915050565b60006123a2826121f8565b91506123ae82846120df565b915081905092915050565b60006123c58284612356565b60028201915081905092915050565b60006020820190506123e96000830184612071565b92915050565b60006020820190506124046000830184612080565b92915050565b6000602082019050818103600083015261242481846120a6565b905092915050565b600060208201905081810360008301526124468184612110565b905092915050565b6000602082019050818103600083015261246781612149565b9050919050565b600060208201905081810360008301526124878161216c565b9050919050565b600060208201905081810360008301526124a78161218f565b9050919050565b600060208201905081810360008301526124c7816121b2565b9050919050565b600060208201905081810360008301526124e7816121d5565b9050919050565b600060208201905081810360008301526125078161221b565b9050919050565b600060208201905081810360008301526125278161223e565b9050919050565b6000602082019050818103600083015261254781612261565b9050919050565b6000602082019050818103600083015261256781612284565b9050919050565b60006020820190508181036000830152612587816122a7565b9050919050565b600060208201905081810360008301526125a7816122ca565b9050919050565b600060208201905081810360008301526125c7816122ed565b9050919050565b600060208201905081810360008301526125e781612310565b9050919050565b6000602082019050818103600083015261260781612333565b9050919050565b6000602082019050612623600083018461236d565b92915050565b6000612633612644565b905061263f82826128ef565b919050565b6000604051905090565b600067ffffffffffffffff82111561266957612668612a6d565b5b61267282612a9c565b9050602081019050919050565b600081519050919050565b600081519050919050565b600082825260208201905092915050565b600081905092915050565b600082825260208201905092915050565b600081905092915050565b60006126d882612864565b91506126e383612864565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115612718576127176129e0565b5b828201905092915050565b600061272e82612864565b915061273983612864565b92508261274957612748612a0f565b5b828204905092915050565b600061275f82612864565b915061276a83612864565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156127a3576127a26129e0565b5b828202905092915050565b60006127b982612864565b91506127c483612864565b9250828210156127d7576127d66129e0565b5b828203905092915050565b60006127ed82612844565b9050919050565b60008115159050919050565b6000819050919050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b600061ffff82169050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b82818337600083830152505050565b60005b838110156128a857808201518184015260208101905061288d565b838111156128b7576000848401525b50505050565b600060028204905060018216806128d557607f821691505b602082108114156128e9576128e8612a3e565b5b50919050565b6128f882612a9c565b810181811067ffffffffffffffff8211171561291757612916612a6d565b5b80604052505050565b600061292b82612864565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82141561295e5761295d6129e0565b5b600182019050919050565b60006129748261286e565b915060ff821415612988576129876129e0565b5b600182019050919050565b6000819050919050565b60006129a882612aad565b9050919050565b60006129ba82612864565b91506129c583612864565b9250826129d5576129d4612a0f565b5b828206905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000601f19601f8301169050919050565b60008160f01b9050919050565b7f4552433732313a20746f6b656e20616c7265616479206d696e74656400000000600082015250565b7f4552433732313a207472616e7366657220746f20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b7f4552433732313a20617070726f766520746f2063616c6c657200000000000000600082015250565b7f4552433732313a206f70657261746f7220717565727920666f72206e6f6e657860008201527f697374656e7420746f6b656e0000000000000000000000000000000000000000602082015250565b7f4361707065642100000000000000000000000000000000000000000000000000600082015250565b7f697066733a2f2f00000000000000000000000000000000000000000000000000600082015250565b7f4552433732313a20617070726f76652063616c6c6572206973206e6f74206f7760008201527f6e6572206e6f7220617070726f76656420666f7220616c6c0000000000000000602082015250565b7f4552433732313a2062616c616e636520717565727920666f7220746865207a6560008201527f726f206164647265737300000000000000000000000000000000000000000000602082015250565b7f4552433732313a206f776e657220717565727920666f72206e6f6e657869737460008201527f656e7420746f6b656e0000000000000000000000000000000000000000000000602082015250565b7f4552433732313a206d696e7420746f20746865207a65726f2061646472657373600082015250565b7f4552433732313a20617070726f76656420717565727920666f72206e6f6e657860008201527f697374656e7420746f6b656e0000000000000000000000000000000000000000602082015250565b7f4552433732313a207472616e73666572206f6620746f6b656e2074686174206960008201527f73206e6f74206f776e0000000000000000000000000000000000000000000000602082015250565b7f4e6f7420796574206d696e746564210000000000000000000000000000000000600082015250565b7f4552433732313a20617070726f76616c20746f2063757272656e74206f776e6560008201527f7200000000000000000000000000000000000000000000000000000000000000602082015250565b7f4552433732313a207472616e736665722063616c6c6572206973206e6f74206f60008201527f776e6572206e6f7220617070726f766564000000000000000000000000000000602082015250565b612e80816127e2565b8114612e8b57600080fd5b50565b612e97816127f4565b8114612ea257600080fd5b50565b612eae8161280a565b8114612eb957600080fd5b50565b612ec581612864565b8114612ed057600080fd5b5056fe31323334353637383941424344454647484a4b4c4d4e505152535455565758595a6162636465666768696a6b6d6e6f707172737475767778797aa2646970667358221220f6afbac9826c2004a974164bfd5ee5dc94b82e071bfb541995b794962e05868364736f6c63430008040033
Deployed Bytecode Sourcemap
6821:8378:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2156:148;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2775:91;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3498:221;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3079:411;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15111:85;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4202:339;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4549:185;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;2528:239;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2312:208;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2874:95;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3727:295;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;13596:899;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4742:328;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;14863:236;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14503:352;;;:::i;:::-;;4030:164;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2156:148;2232:4;2271:25;2256:40;;;:11;:40;;;;2249:47;;2156:148;;;:::o;2775:91::-;2820:13;2853:5;2846:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2775:91;:::o;3498:221::-;3574:7;3602:16;3610:7;3602;:16::i;:::-;3594:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;3687:15;:24;3703:7;3687:24;;;;;;;;;;;;;;;;;;;;;3680:31;;3498:221;;;:::o;3079:411::-;3160:13;3176:23;3191:7;3176:14;:23::i;:::-;3160:39;;3224:5;3218:11;;:2;:11;;;;3210:57;;;;;;;;;;;;:::i;:::-;;;;;;;;;3318:5;3302:21;;:12;:10;:12::i;:::-;:21;;;:62;;;;3327:37;3344:5;3351:12;:10;:12::i;:::-;3327:16;:37::i;:::-;3302:62;3280:168;;;;;;;;;;;;:::i;:::-;;;;;;;;;3461:21;3470:2;3474:7;3461:8;:21::i;:::-;3079:411;;;:::o;15111:85::-;15155:7;15182:6;;;;;;;;;;;15175:13;;;;15111:85;:::o;4202:339::-;4397:41;4416:12;:10;:12::i;:::-;4430:7;4397:18;:41::i;:::-;4389:103;;;;;;;;;;;;:::i;:::-;;;;;;;;;4505:28;4515:4;4521:2;4525:7;4505:9;:28::i;:::-;4202:339;;;:::o;4549:185::-;4687:39;4704:4;4710:2;4714:7;4687:39;;;;;;;;;;;;:16;:39::i;:::-;4549:185;;;:::o;2528:239::-;2600:7;2620:13;2636:7;:16;2644:7;2636:16;;;;;;;;;;;;;;;;;;;;;2620:32;;2688:1;2671:19;;:5;:19;;;;2663:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;2754:5;2747:12;;;2528:239;;;:::o;2312:208::-;2384:7;2429:1;2412:19;;:5;:19;;;;2404:74;;;;;;;;;;;;:::i;:::-;;;;;;;;;2496:9;:16;2506:5;2496:16;;;;;;;;;;;;;;;;2489:23;;2312:208;;;:::o;2874:95::-;2921:13;2954:7;2947:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2874:95;:::o;3727:295::-;3842:12;:10;:12::i;:::-;3830:24;;:8;:24;;;;3822:62;;;;;;;;;;;;:::i;:::-;;;;;;;;;3942:8;3897:18;:32;3916:12;:10;:12::i;:::-;3897:32;;;;;;;;;;;;;;;:42;3930:8;3897:42;;;;;;;;;;;;;;;;:53;;;;;;;;;;;;;;;;;;3995:8;3966:48;;3981:12;:10;:12::i;:::-;3966:48;;;4005:8;3966:48;;;;;;:::i;:::-;;;;;;;;3727:295;;:::o;13596:899::-;13656:12;13681:19;6999:4;13703:27;;;;;;;;:::i;:::-;;;;;;;;;;;;;13681:49;;13750:22;13757:6;13765;13750;:22::i;:::-;13741:31;;13804:1;13787:6;:13;:18;13783:43;;;13824:1;13814:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13807:19;;;;;13783:43;13837:21;13873:2;13861:15;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13837:39;;13899:1;13887:6;13894:1;13887:9;;;;;;;;;;;;;;;;;;;;;:13;;;;;;;;;;;13911:17;13931:1;13911:21;;13948:9;13943:477;13965:6;:13;13963:1;:15;13943:477;;;14000:10;14019:6;14026:1;14019:9;;;;;;;;;;;;;;;;;;;;;;;;14013:16;;14000:29;;;;14049:9;14044:190;14066:11;14064:13;;:1;:13;14044:190;;;14130:3;14117:6;14124:1;14117:9;;;;;;;;;;;;;;;;;;;;;;14112:15;;:21;;;;:::i;:::-;14103:30;;;;;:::i;:::-;;;14178:2;14170:5;:10;;;;:::i;:::-;14152:6;14159:1;14152:9;;;;;;;;;;;;;;;;;;;;;:29;;;;;;;;;;;14216:2;14208:5;:10;;;;:::i;:::-;14200:18;;14079:3;;;;:::i;:::-;;;14044:190;;;;14248:161;14263:1;14255:5;:9;14248:161;;;14321:2;14313:5;:10;;;;:::i;:::-;14285:6;14292:11;14285:19;;;;;;;;;;;;;;;;;;;;;;;:39;;;;;;;;;;;14343:13;;;;;:::i;:::-;;;;14391:2;14383:5;:10;;;;:::i;:::-;14375:18;;14248:161;;;13943:477;13980:3;;;;:::i;:::-;;;13943:477;;;;14437:50;14448:38;14456:29;14465:6;14473:11;14456:8;:29::i;:::-;14448:7;:38::i;:::-;14437:10;:50::i;:::-;14430:57;;;;;13596:899;;;;:::o;4742:328::-;4917:41;4936:12;:10;:12::i;:::-;4950:7;4917:18;:41::i;:::-;4909:103;;;;;;;;;;;;:::i;:::-;;;;;;;;;5023:39;5037:4;5043:2;5047:7;5056:5;5023:13;:39::i;:::-;4742:328;;;;:::o;14863:236::-;14919:13;14963:7;14954:6;;;;;;;;;;;:16;;;14945:45;;;;;;;;;;;;:::i;:::-;;;;;;;;;15043:46;15069:9;15079:7;15069:18;;;;;;;;;;;;;;;;;;;;;;;;15052:36;;;;;;;;:::i;:::-;;;;;;;;;;;;;15043:8;:46::i;:::-;15015:75;;;;;;;;:::i;:::-;;;;;;;;;;;;;15001:90;;14863:236;;;:::o;14503:352::-;14556:9;:16;;;;14547:6;;;;;;;;;;;:25;;;14539:45;;;;;;;;;;;;:::i;:::-;;;;;;;;;14595:25;14601:10;14613:6;;;;;;;;;;;14595:25;;:5;:25::i;:::-;14733:6;;;;;;;;;;;14636:104;;;14684:45;14710:9;14720:6;;;;;;;;;;;14710:17;;;;;;;;;;;;;;;;;;;;;;;;;;14693:35;;;;;;;;:::i;:::-;;;;;;;;;;;;;14684:8;:45::i;:::-;14656:74;;;;;;;;:::i;:::-;;;;;;;;;;;;;14636:104;;;;;;:::i;:::-;;;;;;;;14839:6;;:8;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;14503:352::o;4030:164::-;4127:4;4151:18;:25;4170:5;4151:25;;;;;;;;;;;;;;;:35;4177:8;4151:35;;;;;;;;;;;;;;;;;;;;;;;;;4144:42;;4030:164;;;;:::o;5279:127::-;5344:4;5396:1;5368:30;;:7;:16;5376:7;5368:16;;;;;;;;;;;;;;;;;;;;;:30;;;;5361:37;;5279:127;;;:::o;1236:98::-;1289:7;1316:10;1309:17;;1236:98;:::o;6640:174::-;6742:2;6715:15;:24;6731:7;6715:24;;;;;;;;;;;;:29;;;;;;;;;;;;;;;;;;6798:7;6794:2;6760:46;;6769:23;6784:7;6769:14;:23::i;:::-;6760:46;;;;;;;;;;;;6640:174;;:::o;5414:348::-;5507:4;5532:16;5540:7;5532;:16::i;:::-;5524:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;5608:13;5624:23;5639:7;5624:14;:23::i;:::-;5608:39;;5677:5;5666:16;;:7;:16;;;:51;;;;5710:7;5686:31;;:20;5698:7;5686:11;:20::i;:::-;:31;;;5666:51;:87;;;;5721:32;5738:5;5745:7;5721:16;:32::i;:::-;5666:87;5658:96;;;5414:348;;;;:::o;6102:526::-;6261:4;6234:31;;:23;6249:7;6234:14;:23::i;:::-;:31;;;6226:85;;;;;;;;;;;;:::i;:::-;;;;;;;;;6344:1;6330:16;;:2;:16;;;;6322:65;;;;;;;;;;;;:::i;:::-;;;;;;;;;6452:29;6469:1;6473:7;6452:8;:29::i;:::-;6513:1;6494:9;:15;6504:4;6494:15;;;;;;;;;;;;;;;;:20;;;;;;;:::i;:::-;;;;;;;;6542:1;6525:9;:13;6535:2;6525:13;;;;;;;;;;;;;;;;:18;;;;;;;:::i;:::-;;;;;;;;6573:2;6554:7;:16;6562:7;6554:16;;;;;;;;;;;;:21;;;;;;;;;;;;;;;;;;6612:7;6608:2;6593:27;;6602:4;6593:27;;;;;;;;;;;;6102:526;;;:::o;13011:485::-;13099:12;13124:24;13180:10;:17;13161:9;:16;:36;;;;:::i;:::-;13151:47;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13124:74;;13209:6;13230:89;13242:9;:16;13238:1;:20;13230:89;;;13295:9;13305:1;13295:12;;;;;;;;;;;;;;;;;;;;;;;;13278:11;13290:1;13278:14;;;;;;;;;;;;;;;;;;;:29;;;;;;;;;;;13260:3;;;;;:::i;:::-;;;;13230:89;;;13329:131;13361:10;:17;13342:9;:16;:36;;;;:::i;:::-;13337:1;:42;13329:131;;;13416:10;13431:9;:16;13427:1;:20;;;;:::i;:::-;13416:32;;;;;;;;;;;;;;;;;;;;;;;;13399:11;13411:1;13399:14;;;;;;;;;;;;;;;;;;;:49;;;;;;;;;;;13381:3;;;;;:::i;:::-;;;;13329:131;;;13477:11;13470:18;;;;13011:485;;;;:::o;12140:271::-;12217:14;12244:21;12280:6;12268:19;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12244:43;;12303:9;12298:82;12320:6;12318:8;;:1;:8;12298:82;;;12360:5;12366:1;12360:8;;;;;;;;;;;;;;;;;;;;;;12348:6;12355:1;12348:9;;;;;;;;;;;;;;;;;;;;;:20;;;;;;;;;;;12328:3;;;;;:::i;:::-;;;;12298:82;;;;12397:6;12390:13;;;12140:271;;;;:::o;12421:283::-;12483:14;12510:21;12546:5;:12;12534:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12510:49;;12575:9;12570:103;12592:5;:12;12590:1;:14;12570:103;;;12638:5;12659:1;12657;12644:5;:12;:14;;;;:::i;:::-;:16;;;;:::i;:::-;12638:23;;;;;;;;;;;;;;;;;;;;;;12626:6;12633:1;12626:9;;;;;;;;;;;;;;;;;;;;;:35;;;;;;;;;;;12606:3;;;;;:::i;:::-;;;;12570:103;;;;12690:6;12683:13;;;12421:283;;;:::o;12714:::-;12781:12;12806:19;12838:7;:14;12828:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12806:47;;12869:9;12864:102;12886:7;:14;12884:1;:16;12864:102;;;12934:8;;;;;;;;;;;;;;;;;12943:7;12951:1;12943:10;;;;;;;;;;;;;;;;;;;;;;12934:20;;;;;;;;;;;;;;;;;;;;;;;;;;12922:6;12929:1;12922:9;;;;;;;;;;;;;;;;;;;:32;;;;;;;;;;;12902:3;;;;;:::i;:::-;;;;12864:102;;;;12983:6;12976:13;;;12714:283;;;:::o;5078:193::-;5235:28;5245:4;5251:2;5255:7;5235:9;:28::i;:::-;5078:193;;;;:::o;5770:324::-;5864:1;5850:16;;:2;:16;;;;5842:61;;;;;;;;;;;;:::i;:::-;;;;;;;;;5923:16;5931:7;5923;:16::i;:::-;5922:17;5914:58;;;;;;;;;;;;:::i;:::-;;;;;;;;;6002:1;5985:9;:13;5995:2;5985:13;;;;;;;;;;;;;;;;:18;;;;;;;:::i;:::-;;;;;;;;6033:2;6014:7;:16;6022:7;6014:16;;;;;;;;;;;;:21;;;;;;;;;;;;;;;;;;6078:7;6074:2;6053:33;;6070:1;6053:33;;;;;;;;;;;;5770:324;;:::o;7:343: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:2;;;290:1;287;280:12;249:2;303:41;337:6;332:3;327;303:41;:::i;:::-;90:260;;;;;;:::o;356:139::-;402:5;440:6;427:20;418:29;;456:33;483:5;456:33;:::i;:::-;408:87;;;;:::o;501:133::-;544:5;582:6;569:20;560:29;;598:30;622:5;598:30;:::i;:::-;550:84;;;;:::o;640:137::-;685:5;723:6;710:20;701:29;;739:32;765:5;739:32;:::i;:::-;691:86;;;;:::o;796:271::-;851:5;900:3;893:4;885:6;881:17;877:27;867:2;;918:1;915;908:12;867:2;958:6;945:20;983:78;1057:3;1049:6;1042:4;1034:6;1030:17;983:78;:::i;:::-;974:87;;857:210;;;;;:::o;1073:139::-;1119:5;1157:6;1144:20;1135:29;;1173:33;1200:5;1173:33;:::i;:::-;1125:87;;;;:::o;1218:262::-;1277:6;1326:2;1314:9;1305:7;1301:23;1297:32;1294:2;;;1342:1;1339;1332:12;1294:2;1385:1;1410:53;1455:7;1446:6;1435:9;1431:22;1410:53;:::i;:::-;1400:63;;1356:117;1284:196;;;;:::o;1486:407::-;1554:6;1562;1611:2;1599:9;1590:7;1586:23;1582:32;1579:2;;;1627:1;1624;1617:12;1579:2;1670:1;1695:53;1740:7;1731:6;1720:9;1716:22;1695:53;:::i;:::-;1685:63;;1641:117;1797:2;1823:53;1868:7;1859:6;1848:9;1844:22;1823:53;:::i;:::-;1813:63;;1768:118;1569:324;;;;;:::o;1899:552::-;1976:6;1984;1992;2041:2;2029:9;2020:7;2016:23;2012:32;2009:2;;;2057:1;2054;2047:12;2009:2;2100:1;2125:53;2170:7;2161:6;2150:9;2146:22;2125:53;:::i;:::-;2115:63;;2071:117;2227:2;2253:53;2298:7;2289:6;2278:9;2274:22;2253:53;:::i;:::-;2243:63;;2198:118;2355:2;2381:53;2426:7;2417:6;2406:9;2402:22;2381:53;:::i;:::-;2371:63;;2326:118;1999:452;;;;;:::o;2457:809::-;2552:6;2560;2568;2576;2625:3;2613:9;2604:7;2600:23;2596:33;2593:2;;;2642:1;2639;2632:12;2593:2;2685:1;2710:53;2755:7;2746:6;2735:9;2731:22;2710:53;:::i;:::-;2700:63;;2656:117;2812:2;2838:53;2883:7;2874:6;2863:9;2859:22;2838:53;:::i;:::-;2828:63;;2783:118;2940:2;2966:53;3011:7;3002:6;2991:9;2987:22;2966:53;:::i;:::-;2956:63;;2911:118;3096:2;3085:9;3081:18;3068:32;3127:18;3119:6;3116:30;3113:2;;;3159:1;3156;3149:12;3113:2;3187:62;3241:7;3232:6;3221:9;3217:22;3187:62;:::i;:::-;3177:72;;3039:220;2583:683;;;;;;;:::o;3272:401::-;3337:6;3345;3394:2;3382:9;3373:7;3369:23;3365:32;3362:2;;;3410:1;3407;3400:12;3362:2;3453:1;3478:53;3523:7;3514:6;3503:9;3499:22;3478:53;:::i;:::-;3468:63;;3424:117;3580:2;3606:50;3648:7;3639:6;3628:9;3624:22;3606:50;:::i;:::-;3596:60;;3551:115;3352:321;;;;;:::o;3679:407::-;3747:6;3755;3804:2;3792:9;3783:7;3779:23;3775:32;3772:2;;;3820:1;3817;3810:12;3772:2;3863:1;3888:53;3933:7;3924:6;3913:9;3909:22;3888:53;:::i;:::-;3878:63;;3834:117;3990:2;4016:53;4061:7;4052:6;4041:9;4037:22;4016:53;:::i;:::-;4006:63;;3961:118;3762:324;;;;;:::o;4092:260::-;4150:6;4199:2;4187:9;4178:7;4174:23;4170:32;4167:2;;;4215:1;4212;4205:12;4167:2;4258:1;4283:52;4327:7;4318:6;4307:9;4303:22;4283:52;:::i;:::-;4273:62;;4229:116;4157:195;;;;:::o;4358:373::-;4426:6;4475:2;4463:9;4454:7;4450:23;4446:32;4443:2;;;4491:1;4488;4481:12;4443:2;4562:1;4551:9;4547:17;4534:31;4592:18;4584:6;4581:30;4578:2;;;4624:1;4621;4614:12;4578:2;4652:62;4706:7;4697:6;4686:9;4682:22;4652:62;:::i;:::-;4642:72;;4505:219;4433:298;;;;:::o;4737:262::-;4796:6;4845:2;4833:9;4824:7;4820:23;4816:32;4813:2;;;4861:1;4858;4851:12;4813:2;4904:1;4929:53;4974:7;4965:6;4954:9;4950:22;4929:53;:::i;:::-;4919:63;;4875:117;4803:196;;;;:::o;5005:118::-;5092:24;5110:5;5092:24;:::i;:::-;5087:3;5080:37;5070:53;;:::o;5129:109::-;5210:21;5225:5;5210:21;:::i;:::-;5205:3;5198:34;5188:50;;:::o;5244:157::-;5349:45;5369:24;5387:5;5369:24;:::i;:::-;5349:45;:::i;:::-;5344:3;5337:58;5327:74;;:::o;5407:360::-;5493:3;5521:38;5553:5;5521:38;:::i;:::-;5575:70;5638:6;5633:3;5575:70;:::i;:::-;5568:77;;5654:52;5699:6;5694:3;5687:4;5680:5;5676:16;5654:52;:::i;:::-;5731:29;5753:6;5731:29;:::i;:::-;5726:3;5722:39;5715:46;;5497:270;;;;;:::o;5773:373::-;5877:3;5905:38;5937:5;5905:38;:::i;:::-;5959:88;6040:6;6035:3;5959:88;:::i;:::-;5952:95;;6056:52;6101:6;6096:3;6089:4;6082:5;6078:16;6056:52;:::i;:::-;6133:6;6128:3;6124:16;6117:23;;5881:265;;;;;:::o;6152:364::-;6240:3;6268:39;6301:5;6268:39;:::i;:::-;6323:71;6387:6;6382:3;6323:71;:::i;:::-;6316:78;;6403:52;6448:6;6443:3;6436:4;6429:5;6425:16;6403:52;:::i;:::-;6480:29;6502:6;6480:29;:::i;:::-;6475:3;6471:39;6464:46;;6244:272;;;;;:::o;6522:366::-;6664:3;6685:67;6749:2;6744:3;6685:67;:::i;:::-;6678:74;;6761:93;6850:3;6761:93;:::i;:::-;6879:2;6874:3;6870:12;6863:19;;6668:220;;;:::o;6894:366::-;7036:3;7057:67;7121:2;7116:3;7057:67;:::i;:::-;7050:74;;7133:93;7222:3;7133:93;:::i;:::-;7251:2;7246:3;7242:12;7235:19;;7040:220;;;:::o;7266:366::-;7408:3;7429:67;7493:2;7488:3;7429:67;:::i;:::-;7422:74;;7505:93;7594:3;7505:93;:::i;:::-;7623:2;7618:3;7614:12;7607:19;;7412:220;;;:::o;7638:366::-;7780:3;7801:67;7865:2;7860:3;7801:67;:::i;:::-;7794:74;;7877:93;7966:3;7877:93;:::i;:::-;7995:2;7990:3;7986:12;7979:19;;7784:220;;;:::o;8010:365::-;8152:3;8173:66;8237:1;8232:3;8173:66;:::i;:::-;8166:73;;8248:93;8337:3;8248:93;:::i;:::-;8366:2;8361:3;8357:12;8350:19;;8156:219;;;:::o;8381:400::-;8541:3;8562:84;8644:1;8639:3;8562:84;:::i;:::-;8555:91;;8655:93;8744:3;8655:93;:::i;:::-;8773:1;8768:3;8764:11;8757:18;;8545:236;;;:::o;8787:366::-;8929:3;8950:67;9014:2;9009:3;8950:67;:::i;:::-;8943:74;;9026:93;9115:3;9026:93;:::i;:::-;9144:2;9139:3;9135:12;9128:19;;8933:220;;;:::o;9159:366::-;9301:3;9322:67;9386:2;9381:3;9322:67;:::i;:::-;9315:74;;9398:93;9487:3;9398:93;:::i;:::-;9516:2;9511:3;9507:12;9500:19;;9305:220;;;:::o;9531:366::-;9673:3;9694:67;9758:2;9753:3;9694:67;:::i;:::-;9687:74;;9770:93;9859:3;9770:93;:::i;:::-;9888:2;9883:3;9879:12;9872:19;;9677:220;;;:::o;9903:366::-;10045:3;10066:67;10130:2;10125:3;10066:67;:::i;:::-;10059:74;;10142:93;10231:3;10142:93;:::i;:::-;10260:2;10255:3;10251:12;10244:19;;10049:220;;;:::o;10275:366::-;10417:3;10438:67;10502:2;10497:3;10438:67;:::i;:::-;10431:74;;10514:93;10603:3;10514:93;:::i;:::-;10632:2;10627:3;10623:12;10616:19;;10421:220;;;:::o;10647:366::-;10789:3;10810:67;10874:2;10869:3;10810:67;:::i;:::-;10803:74;;10886:93;10975:3;10886:93;:::i;:::-;11004:2;10999:3;10995:12;10988:19;;10793:220;;;:::o;11019:366::-;11161:3;11182:67;11246:2;11241:3;11182:67;:::i;:::-;11175:74;;11258:93;11347:3;11258:93;:::i;:::-;11376:2;11371:3;11367:12;11360:19;;11165:220;;;:::o;11391:366::-;11533:3;11554:67;11618:2;11613:3;11554:67;:::i;:::-;11547:74;;11630:93;11719:3;11630:93;:::i;:::-;11748:2;11743:3;11739:12;11732:19;;11537:220;;;:::o;11763:366::-;11905:3;11926:67;11990:2;11985:3;11926:67;:::i;:::-;11919:74;;12002:93;12091:3;12002:93;:::i;:::-;12120:2;12115:3;12111:12;12104:19;;11909:220;;;:::o;12135:153::-;12238:43;12257:23;12274:5;12257:23;:::i;:::-;12238:43;:::i;:::-;12233:3;12226:56;12216:72;;:::o;12294:118::-;12381:24;12399:5;12381:24;:::i;:::-;12376:3;12369:37;12359:53;;:::o;12418:256::-;12530:3;12545:75;12616:3;12607:6;12545:75;:::i;:::-;12645:2;12640:3;12636:12;12629:19;;12665:3;12658:10;;12534:140;;;;:::o;12680:537::-;12911:3;12933:148;13077:3;12933:148;:::i;:::-;12926:155;;13098:93;13187:3;13178:6;13098:93;:::i;:::-;13091:100;;13208:3;13201:10;;12915:302;;;;:::o;13223:251::-;13333:3;13348:73;13417:3;13408:6;13348:73;:::i;:::-;13446:1;13441:3;13437:11;13430:18;;13465:3;13458:10;;13337:137;;;;:::o;13480:222::-;13573:4;13611:2;13600:9;13596:18;13588:26;;13624:71;13692:1;13681:9;13677:17;13668:6;13624:71;:::i;:::-;13578:124;;;;:::o;13708:210::-;13795:4;13833:2;13822:9;13818:18;13810:26;;13846:65;13908:1;13897:9;13893:17;13884:6;13846:65;:::i;:::-;13800:118;;;;:::o;13924:309::-;14035:4;14073:2;14062:9;14058:18;14050:26;;14122:9;14116:4;14112:20;14108:1;14097:9;14093:17;14086:47;14150:76;14221:4;14212:6;14150:76;:::i;:::-;14142:84;;14040:193;;;;:::o;14239:313::-;14352:4;14390:2;14379:9;14375:18;14367:26;;14439:9;14433:4;14429:20;14425:1;14414:9;14410:17;14403:47;14467:78;14540:4;14531:6;14467:78;:::i;:::-;14459:86;;14357:195;;;;:::o;14558:419::-;14724:4;14762:2;14751:9;14747:18;14739:26;;14811:9;14805:4;14801:20;14797:1;14786:9;14782:17;14775:47;14839:131;14965:4;14839:131;:::i;:::-;14831:139;;14729:248;;;:::o;14983:419::-;15149:4;15187:2;15176:9;15172:18;15164:26;;15236:9;15230:4;15226:20;15222:1;15211:9;15207:17;15200:47;15264:131;15390:4;15264:131;:::i;:::-;15256:139;;15154:248;;;:::o;15408:419::-;15574:4;15612:2;15601:9;15597:18;15589:26;;15661:9;15655:4;15651:20;15647:1;15636:9;15632:17;15625:47;15689:131;15815:4;15689:131;:::i;:::-;15681:139;;15579:248;;;:::o;15833:419::-;15999:4;16037:2;16026:9;16022:18;16014:26;;16086:9;16080:4;16076:20;16072:1;16061:9;16057:17;16050:47;16114:131;16240:4;16114:131;:::i;:::-;16106:139;;16004:248;;;:::o;16258:419::-;16424:4;16462:2;16451:9;16447:18;16439:26;;16511:9;16505:4;16501:20;16497:1;16486:9;16482:17;16475:47;16539:131;16665:4;16539:131;:::i;:::-;16531:139;;16429:248;;;:::o;16683:419::-;16849:4;16887:2;16876:9;16872:18;16864:26;;16936:9;16930:4;16926:20;16922:1;16911:9;16907:17;16900:47;16964:131;17090:4;16964:131;:::i;:::-;16956:139;;16854:248;;;:::o;17108:419::-;17274:4;17312:2;17301:9;17297:18;17289:26;;17361:9;17355:4;17351:20;17347:1;17336:9;17332:17;17325:47;17389:131;17515:4;17389:131;:::i;:::-;17381:139;;17279:248;;;:::o;17533:419::-;17699:4;17737:2;17726:9;17722:18;17714:26;;17786:9;17780:4;17776:20;17772:1;17761:9;17757:17;17750:47;17814:131;17940:4;17814:131;:::i;:::-;17806:139;;17704:248;;;:::o;17958:419::-;18124:4;18162:2;18151:9;18147:18;18139:26;;18211:9;18205:4;18201:20;18197:1;18186:9;18182:17;18175:47;18239:131;18365:4;18239:131;:::i;:::-;18231:139;;18129:248;;;:::o;18383:419::-;18549:4;18587:2;18576:9;18572:18;18564:26;;18636:9;18630:4;18626:20;18622:1;18611:9;18607:17;18600:47;18664:131;18790:4;18664:131;:::i;:::-;18656:139;;18554:248;;;:::o;18808:419::-;18974:4;19012:2;19001:9;18997:18;18989:26;;19061:9;19055:4;19051:20;19047:1;19036:9;19032:17;19025:47;19089:131;19215:4;19089:131;:::i;:::-;19081:139;;18979:248;;;:::o;19233:419::-;19399:4;19437:2;19426:9;19422:18;19414:26;;19486:9;19480:4;19476:20;19472:1;19461:9;19457:17;19450:47;19514:131;19640:4;19514:131;:::i;:::-;19506:139;;19404:248;;;:::o;19658:419::-;19824:4;19862:2;19851:9;19847:18;19839:26;;19911:9;19905:4;19901:20;19897:1;19886:9;19882:17;19875:47;19939:131;20065:4;19939:131;:::i;:::-;19931:139;;19829:248;;;:::o;20083:419::-;20249:4;20287:2;20276:9;20272:18;20264:26;;20336:9;20330:4;20326:20;20322:1;20311:9;20307:17;20300:47;20364:131;20490:4;20364:131;:::i;:::-;20356:139;;20254:248;;;:::o;20508:222::-;20601:4;20639:2;20628:9;20624:18;20616:26;;20652:71;20720:1;20709:9;20705:17;20696:6;20652:71;:::i;:::-;20606:124;;;;:::o;20736:129::-;20770:6;20797:20;;:::i;:::-;20787:30;;20826:33;20854:4;20846:6;20826:33;:::i;:::-;20777:88;;;:::o;20871:75::-;20904:6;20937:2;20931:9;20921:19;;20911:35;:::o;20952:307::-;21013:4;21103:18;21095:6;21092:30;21089:2;;;21125:18;;:::i;:::-;21089:2;21163:29;21185:6;21163:29;:::i;:::-;21155:37;;21247:4;21241;21237:15;21229:23;;21018:241;;;:::o;21265:98::-;21316:6;21350:5;21344:12;21334:22;;21323:40;;;:::o;21369:99::-;21421:6;21455:5;21449:12;21439:22;;21428:40;;;:::o;21474:168::-;21557:11;21591:6;21586:3;21579:19;21631:4;21626:3;21622:14;21607:29;;21569:73;;;;:::o;21648:147::-;21749:11;21786:3;21771:18;;21761:34;;;;:::o;21801:169::-;21885:11;21919:6;21914:3;21907:19;21959:4;21954:3;21950:14;21935:29;;21897:73;;;;:::o;21976:148::-;22078:11;22115:3;22100:18;;22090:34;;;;:::o;22130:305::-;22170:3;22189:20;22207:1;22189:20;:::i;:::-;22184:25;;22223:20;22241:1;22223:20;:::i;:::-;22218:25;;22377:1;22309:66;22305:74;22302:1;22299:81;22296:2;;;22383:18;;:::i;:::-;22296:2;22427:1;22424;22420:9;22413:16;;22174:261;;;;:::o;22441:185::-;22481:1;22498:20;22516:1;22498:20;:::i;:::-;22493:25;;22532:20;22550:1;22532:20;:::i;:::-;22527:25;;22571:1;22561:2;;22576:18;;:::i;:::-;22561:2;22618:1;22615;22611:9;22606:14;;22483:143;;;;:::o;22632:348::-;22672:7;22695:20;22713:1;22695:20;:::i;:::-;22690:25;;22729:20;22747:1;22729:20;:::i;:::-;22724:25;;22917:1;22849:66;22845:74;22842:1;22839:81;22834:1;22827:9;22820:17;22816:105;22813:2;;;22924:18;;:::i;:::-;22813:2;22972:1;22969;22965:9;22954:20;;22680:300;;;;:::o;22986:191::-;23026:4;23046:20;23064:1;23046:20;:::i;:::-;23041:25;;23080:20;23098:1;23080:20;:::i;:::-;23075:25;;23119:1;23116;23113:8;23110:2;;;23124:18;;:::i;:::-;23110:2;23169:1;23166;23162:9;23154:17;;23031:146;;;;:::o;23183:96::-;23220:7;23249:24;23267:5;23249:24;:::i;:::-;23238:35;;23228:51;;;:::o;23285:90::-;23319:7;23362:5;23355:13;23348:21;23337:32;;23327:48;;;:::o;23381:77::-;23418:7;23447:5;23436:16;;23426:32;;;:::o;23464:149::-;23500:7;23540:66;23533:5;23529:78;23518:89;;23508:105;;;:::o;23619:89::-;23655:7;23695:6;23688:5;23684:18;23673:29;;23663:45;;;:::o;23714:126::-;23751:7;23791:42;23784:5;23780:54;23769:65;;23759:81;;;:::o;23846:77::-;23883:7;23912:5;23901:16;;23891:32;;;:::o;23929:86::-;23964:7;24004:4;23997:5;23993:16;23982:27;;23972:43;;;:::o;24021:154::-;24105:6;24100:3;24095;24082:30;24167:1;24158:6;24153:3;24149:16;24142:27;24072:103;;;:::o;24181:307::-;24249:1;24259:113;24273:6;24270:1;24267:13;24259:113;;;24358:1;24353:3;24349:11;24343:18;24339:1;24334:3;24330:11;24323:39;24295:2;24292:1;24288:10;24283:15;;24259:113;;;24390:6;24387:1;24384:13;24381:2;;;24470:1;24461:6;24456:3;24452:16;24445:27;24381:2;24230:258;;;;:::o;24494:320::-;24538:6;24575:1;24569:4;24565:12;24555:22;;24622:1;24616:4;24612:12;24643:18;24633:2;;24699:4;24691:6;24687:17;24677:27;;24633:2;24761;24753:6;24750:14;24730:18;24727:38;24724:2;;;24780:18;;:::i;:::-;24724:2;24545:269;;;;:::o;24820:281::-;24903:27;24925:4;24903:27;:::i;:::-;24895:6;24891:40;25033:6;25021:10;25018:22;24997:18;24985:10;24982:34;24979:62;24976:2;;;25044:18;;:::i;:::-;24976:2;25084:10;25080:2;25073:22;24863:238;;;:::o;25107:233::-;25146:3;25169:24;25187:5;25169:24;:::i;:::-;25160:33;;25215:66;25208:5;25205:77;25202:2;;;25285:18;;:::i;:::-;25202:2;25332:1;25325:5;25321:13;25314:20;;25150:190;;;:::o;25346:167::-;25383:3;25406:22;25422:5;25406:22;:::i;:::-;25397:31;;25450:4;25443:5;25440:15;25437:2;;;25458:18;;:::i;:::-;25437:2;25505:1;25498:5;25494:13;25487:20;;25387:126;;;:::o;25519:79::-;25558:7;25587:5;25576:16;;25566:32;;;:::o;25604:94::-;25642:7;25671:21;25686:5;25671:21;:::i;:::-;25660:32;;25650:48;;;:::o;25704:176::-;25736:1;25753:20;25771:1;25753:20;:::i;:::-;25748:25;;25787:20;25805:1;25787:20;:::i;:::-;25782:25;;25826:1;25816:2;;25831:18;;:::i;:::-;25816:2;25872:1;25869;25865:9;25860:14;;25738:142;;;;:::o;25886:180::-;25934:77;25931:1;25924:88;26031:4;26028:1;26021:15;26055:4;26052:1;26045:15;26072:180;26120:77;26117:1;26110:88;26217:4;26214:1;26207:15;26241:4;26238:1;26231:15;26258:180;26306:77;26303:1;26296:88;26403:4;26400:1;26393:15;26427:4;26424:1;26417:15;26444:180;26492:77;26489:1;26482:88;26589:4;26586:1;26579:15;26613:4;26610:1;26603:15;26630:102;26671:6;26722:2;26718:7;26713:2;26706:5;26702:14;26698:28;26688:38;;26678:54;;;:::o;26738:96::-;26772:8;26821:5;26816:3;26812:15;26791:36;;26781:53;;;:::o;26840:178::-;26980:30;26976:1;26968:6;26964:14;26957:54;26946:72;:::o;27024:223::-;27164:34;27160:1;27152:6;27148:14;27141:58;27233:6;27228:2;27220:6;27216:15;27209:31;27130:117;:::o;27253:175::-;27393:27;27389:1;27381:6;27377:14;27370:51;27359:69;:::o;27434:231::-;27574:34;27570:1;27562:6;27558:14;27551:58;27643:14;27638:2;27630:6;27626:15;27619:39;27540:125;:::o;27671:157::-;27811:9;27807:1;27799:6;27795:14;27788:33;27777:51;:::o;27834:161::-;27974:9;27970:1;27962:6;27958:14;27951:33;27940:55;:::o;28005:255::-;28149:34;28145:1;28137:6;28133:14;28126:58;28222:26;28217:2;28209:6;28205:15;28198:51;28111:149;:::o;28270:241::-;28414:34;28410:1;28402:6;28398:14;28391:58;28487:12;28482:2;28474:6;28470:15;28463:37;28376:135;:::o;28521:240::-;28665:34;28661:1;28653:6;28649:14;28642:58;28738:11;28733:2;28725:6;28721:15;28714:36;28627:134;:::o;28771:190::-;28915:34;28911:1;28903:6;28899:14;28892:58;28877:84;:::o;28971:243::-;29115:34;29111:1;29103:6;29099:14;29092:58;29188:14;29183:2;29175:6;29171:15;29164:39;29077:137;:::o;29224:240::-;29368:34;29364:1;29356:6;29352:14;29345:58;29441:11;29436:2;29428:6;29424:15;29417:36;29330:134;:::o;29474:173::-;29618:17;29614:1;29606:6;29602:14;29595:41;29580:67;:::o;29657:232::-;29801:34;29797:1;29789:6;29785:14;29778:58;29874:3;29869:2;29861:6;29857:15;29850:28;29763:126;:::o;29899:248::-;30043:34;30039:1;30031:6;30027:14;30020:58;30116:19;30111:2;30103:6;30099:15;30092:44;30005:142;:::o;30157:130::-;30234:24;30252:5;30234:24;:::i;:::-;30227:5;30224:35;30214:2;;30273:1;30270;30263:12;30214:2;30200:87;:::o;30297:124::-;30371:21;30386:5;30371:21;:::i;:::-;30364:5;30361:32;30351:2;;30407:1;30404;30397:12;30351:2;30337:84;:::o;30431:128::-;30507:23;30524:5;30507:23;:::i;:::-;30500:5;30497:34;30487:2;;30545:1;30542;30535:12;30487:2;30473:86;:::o;30569:130::-;30646:24;30664:5;30646:24;:::i;:::-;30639:5;30636:35;30626:2;;30685:1;30682;30675:12;30626:2;30612:87;:::o
Swarm Source
ipfs://f6afbac9826c2004a974164bfd5ee5dc94b82e071bfb541995b794962e058683
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.