Multichain Info
Latest 25 from a total of 122 transactions
| Transaction Hash |
|
Block
|
From
|
To
|
|||||
|---|---|---|---|---|---|---|---|---|---|
| Add Asset | 23985317 | 722 days ago | IN | 0.02229874 CELO | 0.0256413 | ||||
| Add Chunk | 23985310 | 722 days ago | IN | 0.17599314 CELO | 0.19289268 | ||||
| Add Chunk | 23985302 | 722 days ago | IN | 0.17599314 CELO | 0.1930608 | ||||
| Set Name | 23985284 | 722 days ago | IN | 0 CELO | 0.00072486 | ||||
| Add Asset | 23739448 | 736 days ago | IN | 0.08161426 CELO | 0.10239367 | ||||
| Add Chunk | 23739444 | 736 days ago | IN | 0.17599314 CELO | 0.19289832 | ||||
| Add Chunk | 23739436 | 736 days ago | IN | 0.17599314 CELO | 0.19289748 | ||||
| Add Chunk | 23739431 | 736 days ago | IN | 0.17599314 CELO | 0.1928982 | ||||
| Add Chunk | 23739425 | 736 days ago | IN | 0.17599314 CELO | 0.19289892 | ||||
| Add Chunk | 23739420 | 736 days ago | IN | 0.17599314 CELO | 0.19289532 | ||||
| Add Chunk | 23739414 | 736 days ago | IN | 0.17599314 CELO | 0.19289484 | ||||
| Add Chunk | 23739409 | 736 days ago | IN | 0.17599314 CELO | 0.19289508 | ||||
| Add Chunk | 23739403 | 736 days ago | IN | 0.17599314 CELO | 0.19289676 | ||||
| Add Chunk | 23739395 | 736 days ago | IN | 0.17599314 CELO | 0.1928958 | ||||
| Add Chunk | 23739389 | 736 days ago | IN | 0.17599314 CELO | 0.19289484 | ||||
| Add Chunk | 23739384 | 736 days ago | IN | 0.17599314 CELO | 0.19289628 | ||||
| Add Chunk | 23739379 | 736 days ago | IN | 0.17599314 CELO | 0.19289628 | ||||
| Add Chunk | 23739373 | 736 days ago | IN | 0.17599314 CELO | 0.1928976 | ||||
| Add Chunk | 23739367 | 736 days ago | IN | 0.17599314 CELO | 0.19289676 | ||||
| Add Chunk | 23739361 | 736 days ago | IN | 0.17599314 CELO | 0.19289652 | ||||
| Add Chunk | 23739351 | 736 days ago | IN | 0.17599314 CELO | 0.19289796 | ||||
| Add Chunk | 23739346 | 736 days ago | IN | 0.17599314 CELO | 0.19289556 | ||||
| Add Chunk | 23739341 | 736 days ago | IN | 0.17599314 CELO | 0.1928976 | ||||
| Add Chunk | 23739336 | 736 days ago | IN | 0.17599314 CELO | 0.19289688 | ||||
| Add Chunk | 23739329 | 736 days ago | IN | 0.17599314 CELO | 0.19289796 |
Latest 25 internal transactions (View All)
| Parent Transaction Hash | Block | From | To | |||
|---|---|---|---|---|---|---|
| 23985317 | 722 days ago | 0.00222987 CELO | ||||
| 23985317 | 722 days ago | 0.00891949 CELO | ||||
| 23985317 | 722 days ago | 0.00222987 CELO | ||||
| 23985317 | 722 days ago | 0.00445974 CELO | ||||
| 23985317 | 722 days ago | 0.00445974 CELO | ||||
| 23985310 | 722 days ago | 0.01759931 CELO | ||||
| 23985310 | 722 days ago | 0.07039725 CELO | ||||
| 23985310 | 722 days ago | 0.01759931 CELO | ||||
| 23985310 | 722 days ago | 0.03519862 CELO | ||||
| 23985310 | 722 days ago | 0.03519862 CELO | ||||
| 23985302 | 722 days ago | 0.01759931 CELO | ||||
| 23985302 | 722 days ago | 0.07039725 CELO | ||||
| 23985302 | 722 days ago | 0.01759931 CELO | ||||
| 23985302 | 722 days ago | 0.03519862 CELO | ||||
| 23985302 | 722 days ago | 0.03519862 CELO | ||||
| 23739448 | 736 days ago | 0.00816142 CELO | ||||
| 23739448 | 736 days ago | 0.0326457 CELO | ||||
| 23739448 | 736 days ago | 0.00816142 CELO | ||||
| 23739448 | 736 days ago | 0.01632285 CELO | ||||
| 23739448 | 736 days ago | 0.01632285 CELO | ||||
| 23739444 | 736 days ago | 0.01759931 CELO | ||||
| 23739444 | 736 days ago | 0.07039725 CELO | ||||
| 23739444 | 736 days ago | 0.01759931 CELO | ||||
| 23739444 | 736 days ago | 0.03519862 CELO | ||||
| 23739444 | 736 days ago | 0.03519862 CELO |
Cross-Chain Transactions
Contract Source Code (Solidity)
/** *Submitted for verification at celoscan.io on 2024-01-29 */ // SPDX-License-Identifier: MIT // File: @openzeppelin/[email protected]/utils/Context.sol // OpenZeppelin Contracts (last updated v4.9.4) (utils/Context.sol) pragma solidity ^0.8.0; /** * @dev Provides information about the current execution context, including the * sender of the transaction and its data. While these are generally available * via msg.sender and msg.data, they should not be accessed in such a direct * manner, since when dealing with meta-transactions the account sending and * paying for execution may not be the actual sender (as far as an application * is concerned). * * This contract is only required for intermediate, library-like contracts. */ abstract contract Context { function _msgSender() internal view virtual returns (address) { return msg.sender; } function _msgData() internal view virtual returns (bytes calldata) { return msg.data; } function _contextSuffixLength() internal view virtual returns (uint256) { return 0; } } // File: @openzeppelin/[email protected]/access/Ownable.sol // OpenZeppelin Contracts (last updated v4.9.0) (access/Ownable.sol) pragma solidity ^0.8.0; /** * @dev Contract module which provides a basic access control mechanism, where * there is an account (an owner) that can be granted exclusive access to * specific functions. * * By default, the owner account will be the one that deploys the contract. This * can later be changed with {transferOwnership}. * * This module is used through inheritance. It will make available the modifier * `onlyOwner`, which can be applied to your functions to restrict their use to * the owner. */ abstract contract Ownable is Context { address private _owner; event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); /** * @dev Initializes the contract setting the deployer as the initial owner. */ constructor() { _transferOwnership(_msgSender()); } /** * @dev Throws if called by any account other than the owner. */ modifier onlyOwner() { _checkOwner(); _; } /** * @dev Returns the address of the current owner. */ function owner() public view virtual returns (address) { return _owner; } /** * @dev Throws if the sender is not the owner. */ function _checkOwner() internal view virtual { require(owner() == _msgSender(), "Ownable: caller is not the owner"); } /** * @dev Leaves the contract without owner. It will not be possible to call * `onlyOwner` functions. Can only be called by the current owner. * * NOTE: Renouncing ownership will leave the contract without an owner, * thereby disabling any functionality that is only available to the owner. */ function renounceOwnership() public virtual onlyOwner { _transferOwnership(address(0)); } /** * @dev Transfers ownership of the contract to a new account (`newOwner`). * Can only be called by the current owner. */ function transferOwnership(address newOwner) public virtual onlyOwner { require(newOwner != address(0), "Ownable: new owner is the zero address"); _transferOwnership(newOwner); } /** * @dev Transfers ownership of the contract to a new account (`newOwner`). * Internal function without access restriction. */ function _transferOwnership(address newOwner) internal virtual { address oldOwner = _owner; _owner = newOwner; emit OwnershipTransferred(oldOwner, newOwner); } } // File: 1.sol pragma solidity >=0.8.11 <0.9.0; contract Snowdare is Ownable { struct Asset { uint256 id; uint256 versionsCount; address owner; string title; } struct Version { uint256 assetType; uint256 chunkIdsCount; string name; uint256 size; string fileType; uint256 commentIdsCount; address author; uint256 timestamp; bytes cipherData; } struct Profile { uint256 assetIdsCount; uint256 commentIdsCount; string name; uint256 lastActivity; uint256 earnings; bool commentsBlocked; address referrer; } uint256 public assetCount; uint256 public chunksCount; uint256 public commentsCount; uint256 public profilesCount; uint256 public appNewestVersion; uint256 public mainNetworkId; mapping (uint256 => Asset) public assets; mapping (bytes32 => Asset) public externalAssets; mapping (uint256 => mapping(uint256 => Version)) public versions; mapping (uint256 => mapping(uint256 => mapping(uint256 => uint256))) public chunkIds; mapping (uint256 => bytes) public chunks; mapping (uint256 => address) public chunkOwners; mapping (uint256 => Version) public comments; mapping (uint256 => mapping(uint256 => uint256)) public chunkIdsInComments; mapping (uint256 => mapping(uint256 => mapping(uint256 => uint256))) public commentIds; mapping (string => address) public addressesFromNames; mapping (address => Profile) public profilesFromAddresses; mapping (address => mapping(uint256 => uint256)) public assetIdsInProfiles; mapping (address => mapping(uint256 => uint256)) public commentIdsInProfiles; mapping (bytes32 => uint256) public commentIdsCountInExternalAssets; mapping (bytes32 => mapping(uint256 => uint256)) public commentIdsInExternalAssets; mapping (address => Version) public aboutProfilesFromAddresses; mapping (address => mapping(uint256 => uint256)) public chunkIdsInAboutProfiles; event AssetIndex(address indexed _address, uint256 _assetIndex); event ChunkIndex(address indexed _address, uint256 _chunkIndex); function addAsset(bytes memory _bytes, string memory _title, uint256[] memory _additionalChunkIds, uint256 _assetType, string memory _name, uint256 _size, string memory _fileType, address _hostAddress, address _referralAddress, bytes memory _cipherData) public payable { addChunk(_bytes, _hostAddress, _referralAddress, 9007199254740991, 0x0000000000000000000000000000000000000000000000000000000000000000); uint i = 0; while (i < _additionalChunkIds.length) { require(chunkOwners[_additionalChunkIds[i]] == msg.sender); chunkIds[assetCount][0][i] = _additionalChunkIds[i]; i++; } require(bytes(_title).length <= 64 && bytes(_title).length > 0 && bytes(_name).length <= 512); chunkIds[assetCount][0][i] = chunksCount - 1; versions[assetCount][0] = Version(_assetType, i + 1, _name, _size, _fileType, 0, msg.sender, block.timestamp, _cipherData); assets[assetCount] = Asset(assetCount, 1, msg.sender, _title); assetIdsInProfiles[msg.sender][profilesFromAddresses[msg.sender].assetIdsCount] = assetCount; assetCount++; profilesFromAddresses[msg.sender].assetIdsCount++; emit AssetIndex(msg.sender, assetCount - 1); } function addExternalAsset(string memory _name, address _hostAddress, address _referralAddress) public payable { uint256 minimum = tx.gasprice * (bytes(_name).length * 12 + ((bytes(_name).length / 32) * 20000) + 395314) * 95 / 100; require(msg.value >= minimum); uint256 bonus = msg.value / 10; processPayments(bonus, _hostAddress, _referralAddress); (bool os, ) = payable(owner()).call{value: (msg.value - (5 * bonus))}(''); require(os); bytes32 hash = keccak256(bytes(_name)); require(keccak256(abi.encodePacked(externalAssets[hash].title)) == keccak256(abi.encodePacked(""))); externalAssets[hash] = Asset(0, 0, msg.sender, _name); } function updateAsset(bytes memory _bytes, uint256[] memory _additionalChunkIds, uint256 _id, uint256 _assetType, string memory _name, uint256 _size, string memory _fileType, address _hostAddress, address _referralAddress, bytes memory _cipherData) public payable { addChunk(_bytes, _hostAddress, _referralAddress, 9007199254740991, 0x0000000000000000000000000000000000000000000000000000000000000000); require(assetCount > _id && bytes(_name).length <= 64 && msg.sender == assets[_id].owner); uint i = 0; while (i < _additionalChunkIds.length) { require(chunkOwners[_additionalChunkIds[i]] == msg.sender); chunkIds[_id][assets[_id].versionsCount][i] = _additionalChunkIds[i]; i++; } require(bytes(_cipherData).length == 0 || bytes(_cipherData).length == 48); chunkIds[_id][assets[_id].versionsCount][i] = chunksCount - 1; versions[_id][assets[_id].versionsCount] = Version(_assetType, i + 1, _name, _size, _fileType, 0, msg.sender, block.timestamp, _cipherData); assets[_id].versionsCount++; } function addComment(bytes memory _bytes, uint256[] memory _additionalChunkIds, uint256 _id, uint256 _versionId, uint256 _assetType, string memory _name, uint256 _size, string memory _fileType, address _hostAddress, address _referralAddress, bytes memory _cipherData) public payable { addChunk(_bytes, _hostAddress, _referralAddress, _id, 0x0000000000000000000000000000000000000000000000000000000000000000); require(assetCount > _id && bytes(_name).length <= 64 && assets[_id].versionsCount > _versionId, "Error!"); commentsCount++; commentIds[_id][_versionId][versions[_id][_versionId].commentIdsCount] = commentsCount; uint i = 0; while (i < _additionalChunkIds.length) { require(chunkOwners[_additionalChunkIds[i]] == msg.sender, "Error!"); chunkIdsInComments[commentsCount][i] = _additionalChunkIds[i]; i++; } require(bytes(_cipherData).length == 0 || bytes(_cipherData).length == 48, "Error!"); chunkIdsInComments[commentsCount][i] = chunksCount - 1; comments[commentsCount] = Version(_assetType, i + 1, _name, _size, _fileType, 0, msg.sender, block.timestamp, _cipherData); versions[_id][_versionId].commentIdsCount++; } function addCommentExternal(bytes memory _bytes, uint256[] memory _additionalChunkIds, bytes32 _assetHash, uint256 _assetType, string memory _name, uint256 _size, string memory _fileType, address _hostAddress, address _referralAddress, bytes memory _cipherData) public payable { addChunk(_bytes, _hostAddress, _referralAddress, 9007199254740991, _assetHash); commentsCount++; commentIdsInExternalAssets[_assetHash][commentIdsCountInExternalAssets[bytes32(_assetHash)]] = commentsCount; require(bytes(_name).length <= 64); uint i = 0; while (i < _additionalChunkIds.length) { require(chunkOwners[_additionalChunkIds[i]] == msg.sender); chunkIdsInComments[commentsCount][i] = _additionalChunkIds[i]; i++; } require(bytes(_cipherData).length == 0 || bytes(_cipherData).length == 48); chunkIdsInComments[commentsCount][i] = chunksCount - 1; comments[commentsCount] = Version(_assetType, i + 1, _name, _size, _fileType, 0, msg.sender, block.timestamp, _cipherData); commentIdsCountInExternalAssets[_assetHash]++; } function addCommentInProfile(bytes memory _bytes, uint256[] memory _additionalChunkIds, address _profileId, uint256 _assetType, string memory _name, uint256 _size, string memory _fileType, address _hostAddress, address _referralAddress) public payable { addChunk(_bytes, _hostAddress, _referralAddress, 9007199254740991, 0x0000000000000000000000000000000000000000000000000000000000000000); commentsCount++; commentIdsInProfiles[_profileId][profilesFromAddresses[_profileId].commentIdsCount] = commentsCount; require(bytes(_name).length <= 64); uint i = 0; while (i < _additionalChunkIds.length) { require(chunkOwners[_additionalChunkIds[i]] == msg.sender); chunkIdsInComments[commentsCount][i] = _additionalChunkIds[i]; i++; } chunkIdsInComments[commentsCount][i] = chunksCount - 1; comments[commentsCount] = Version(_assetType, i + 1, _name, _size, _fileType, 0, msg.sender, block.timestamp, ""); profilesFromAddresses[_profileId].commentIdsCount++; } function addAboutInProfile(bytes memory _bytes, uint256[] memory _additionalChunkIds, uint256 _assetType, string memory _name, uint256 _size, string memory _fileType, address _hostAddress, address _referralAddress) public payable { addChunk(_bytes, _hostAddress, _referralAddress, 9007199254740991, 0x0000000000000000000000000000000000000000000000000000000000000000); require(bytes(_name).length <= 64); uint i = 0; while (i < _additionalChunkIds.length) { require(chunkOwners[_additionalChunkIds[i]] == msg.sender); chunkIdsInAboutProfiles[msg.sender][i] = _additionalChunkIds[i]; i++; } chunkIdsInAboutProfiles[msg.sender][i] = chunksCount - 1; aboutProfilesFromAddresses[msg.sender] = Version(_assetType, i + 1, _name, _size, _fileType, 0, msg.sender, block.timestamp, ""); } function addChunk(bytes memory _bytes, address _hostAddress, address _referralAddress, uint256 _assetId, bytes32 _externalAssetId) public payable { uint256 minimum = tx.gasprice * (bytes(_bytes).length * 12 + ((bytes(_bytes).length / 32) * 20000) + 395314) * 95 / 100; require(msg.value >= minimum); uint256 bonus = msg.value / 10; processPayments(bonus, _hostAddress, _referralAddress); address assetOwnerAddress; if (_externalAssetId != 0x0000000000000000000000000000000000000000000000000000000000000000) { if (profilesFromAddresses[externalAssets[bytes32(_externalAssetId)].owner].lastActivity + 2592000 < block.timestamp) { assetOwnerAddress = owner(); } else { assetOwnerAddress = externalAssets[bytes32(_externalAssetId)].owner; } } else { if (_assetId == 9007199254740991 || profilesFromAddresses[assets[_assetId].owner].lastActivity + 2592000 < block.timestamp) { assetOwnerAddress = owner(); } else { assetOwnerAddress = assets[_assetId].owner; } } (bool ass, ) = payable(assetOwnerAddress).call{value: (4 * bonus)}(''); profilesFromAddresses[assetOwnerAddress].earnings = profilesFromAddresses[assetOwnerAddress].earnings + (4 * bonus); require(ass); (bool os, ) = payable(owner()).call{value: (msg.value - (9 * bonus))}(''); require(os); chunks[chunksCount] = _bytes; chunkOwners[chunksCount] = msg.sender; chunksCount++; emit ChunkIndex(msg.sender, chunksCount - 1); } function setName(string memory _newName) public { require(bytes(_newName).length > 2 && bytes(_newName).length < 33 && addressesFromNames[_newName] == 0x0000000000000000000000000000000000000000 && bytes(profilesFromAddresses[msg.sender].name).length == 0); uint i = 0; while (i < bytes(_newName).length) { require((bytes(_newName)[i] >= 0x2D && bytes(_newName)[i] <= 0x39) || (bytes(_newName)[i] >= 0x61 && bytes(_newName)[i] <= 0x7A)); i++; } profilesFromAddresses[msg.sender].name = _newName; addressesFromNames[_newName] = msg.sender; } function setCommentsBlock(bool blockComments) public { profilesFromAddresses[msg.sender].commentsBlocked = blockComments; } function updateExternalAssetOwner(address _newOwner, bytes32 _hash) public { require(msg.sender == externalAssets[_hash].owner); externalAssets[_hash].owner = _newOwner; } function withdraw() public onlyOwner { (bool os, ) = payable(owner()).call{value: address(this).balance}(''); require(os); } function setAppNewestVersion(uint256 version) public onlyOwner { appNewestVersion = version; } function setMainNetworkId(uint256 networkId) public onlyOwner { mainNetworkId = networkId; } function processPayments(uint256 bonus, address _hostAddress, address _referralAddress) private { address hostAddress; if (_hostAddress == 0x0000000000000000000000000000000000000000 || _hostAddress == msg.sender || profilesFromAddresses[_hostAddress].lastActivity + 2592000 < block.timestamp) { hostAddress = owner(); } else { hostAddress = _hostAddress; } address referralAddress; if (profilesFromAddresses[msg.sender].referrer == 0x0000000000000000000000000000000000000000) { if (_referralAddress != msg.sender) { profilesFromAddresses[msg.sender].referrer = _referralAddress; } else { profilesFromAddresses[msg.sender].referrer = owner(); } } if (profilesFromAddresses[profilesFromAddresses[msg.sender].referrer].lastActivity + 2592000 < block.timestamp) { referralAddress = owner(); } else { referralAddress = profilesFromAddresses[msg.sender].referrer; } address referralAddress2; if (profilesFromAddresses[profilesFromAddresses[msg.sender].referrer].referrer == 0x0000000000000000000000000000000000000000 || msg.sender == profilesFromAddresses[profilesFromAddresses[msg.sender].referrer].referrer || profilesFromAddresses[profilesFromAddresses[msg.sender].referrer].lastActivity + 2592000 < block.timestamp) { referralAddress2 = owner(); } else { referralAddress2 = profilesFromAddresses[profilesFromAddresses[msg.sender].referrer].referrer; } (bool hs, ) = payable(hostAddress).call{value: (2 * bonus)}(''); profilesFromAddresses[hostAddress].earnings = profilesFromAddresses[hostAddress].earnings + (2 * bonus); require(hs); (bool rs, ) = payable(referralAddress).call{value: (2 * bonus)}(''); profilesFromAddresses[referralAddress].earnings = profilesFromAddresses[referralAddress].earnings + (2 * bonus); require(rs); (bool rs2, ) = payable(referralAddress2).call{value: bonus}(''); profilesFromAddresses[referralAddress2].earnings = profilesFromAddresses[referralAddress2].earnings + bonus; require(rs2); profilesFromAddresses[msg.sender].lastActivity = block.timestamp; } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
Contract ABI
API[{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"_address","type":"address"},{"indexed":false,"internalType":"uint256","name":"_assetIndex","type":"uint256"}],"name":"AssetIndex","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"_address","type":"address"},{"indexed":false,"internalType":"uint256","name":"_chunkIndex","type":"uint256"}],"name":"ChunkIndex","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"aboutProfilesFromAddresses","outputs":[{"internalType":"uint256","name":"assetType","type":"uint256"},{"internalType":"uint256","name":"chunkIdsCount","type":"uint256"},{"internalType":"string","name":"name","type":"string"},{"internalType":"uint256","name":"size","type":"uint256"},{"internalType":"string","name":"fileType","type":"string"},{"internalType":"uint256","name":"commentIdsCount","type":"uint256"},{"internalType":"address","name":"author","type":"address"},{"internalType":"uint256","name":"timestamp","type":"uint256"},{"internalType":"bytes","name":"cipherData","type":"bytes"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes","name":"_bytes","type":"bytes"},{"internalType":"uint256[]","name":"_additionalChunkIds","type":"uint256[]"},{"internalType":"uint256","name":"_assetType","type":"uint256"},{"internalType":"string","name":"_name","type":"string"},{"internalType":"uint256","name":"_size","type":"uint256"},{"internalType":"string","name":"_fileType","type":"string"},{"internalType":"address","name":"_hostAddress","type":"address"},{"internalType":"address","name":"_referralAddress","type":"address"}],"name":"addAboutInProfile","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"bytes","name":"_bytes","type":"bytes"},{"internalType":"string","name":"_title","type":"string"},{"internalType":"uint256[]","name":"_additionalChunkIds","type":"uint256[]"},{"internalType":"uint256","name":"_assetType","type":"uint256"},{"internalType":"string","name":"_name","type":"string"},{"internalType":"uint256","name":"_size","type":"uint256"},{"internalType":"string","name":"_fileType","type":"string"},{"internalType":"address","name":"_hostAddress","type":"address"},{"internalType":"address","name":"_referralAddress","type":"address"},{"internalType":"bytes","name":"_cipherData","type":"bytes"}],"name":"addAsset","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"bytes","name":"_bytes","type":"bytes"},{"internalType":"address","name":"_hostAddress","type":"address"},{"internalType":"address","name":"_referralAddress","type":"address"},{"internalType":"uint256","name":"_assetId","type":"uint256"},{"internalType":"bytes32","name":"_externalAssetId","type":"bytes32"}],"name":"addChunk","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"bytes","name":"_bytes","type":"bytes"},{"internalType":"uint256[]","name":"_additionalChunkIds","type":"uint256[]"},{"internalType":"uint256","name":"_id","type":"uint256"},{"internalType":"uint256","name":"_versionId","type":"uint256"},{"internalType":"uint256","name":"_assetType","type":"uint256"},{"internalType":"string","name":"_name","type":"string"},{"internalType":"uint256","name":"_size","type":"uint256"},{"internalType":"string","name":"_fileType","type":"string"},{"internalType":"address","name":"_hostAddress","type":"address"},{"internalType":"address","name":"_referralAddress","type":"address"},{"internalType":"bytes","name":"_cipherData","type":"bytes"}],"name":"addComment","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"bytes","name":"_bytes","type":"bytes"},{"internalType":"uint256[]","name":"_additionalChunkIds","type":"uint256[]"},{"internalType":"bytes32","name":"_assetHash","type":"bytes32"},{"internalType":"uint256","name":"_assetType","type":"uint256"},{"internalType":"string","name":"_name","type":"string"},{"internalType":"uint256","name":"_size","type":"uint256"},{"internalType":"string","name":"_fileType","type":"string"},{"internalType":"address","name":"_hostAddress","type":"address"},{"internalType":"address","name":"_referralAddress","type":"address"},{"internalType":"bytes","name":"_cipherData","type":"bytes"}],"name":"addCommentExternal","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"bytes","name":"_bytes","type":"bytes"},{"internalType":"uint256[]","name":"_additionalChunkIds","type":"uint256[]"},{"internalType":"address","name":"_profileId","type":"address"},{"internalType":"uint256","name":"_assetType","type":"uint256"},{"internalType":"string","name":"_name","type":"string"},{"internalType":"uint256","name":"_size","type":"uint256"},{"internalType":"string","name":"_fileType","type":"string"},{"internalType":"address","name":"_hostAddress","type":"address"},{"internalType":"address","name":"_referralAddress","type":"address"}],"name":"addCommentInProfile","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"string","name":"_name","type":"string"},{"internalType":"address","name":"_hostAddress","type":"address"},{"internalType":"address","name":"_referralAddress","type":"address"}],"name":"addExternalAsset","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"string","name":"","type":"string"}],"name":"addressesFromNames","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"appNewestVersion","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"assetCount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"}],"name":"assetIdsInProfiles","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"assets","outputs":[{"internalType":"uint256","name":"id","type":"uint256"},{"internalType":"uint256","name":"versionsCount","type":"uint256"},{"internalType":"address","name":"owner","type":"address"},{"internalType":"string","name":"title","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"}],"name":"chunkIds","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"}],"name":"chunkIdsInAboutProfiles","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"}],"name":"chunkIdsInComments","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"chunkOwners","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"chunks","outputs":[{"internalType":"bytes","name":"","type":"bytes"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"chunksCount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"}],"name":"commentIds","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"name":"commentIdsCountInExternalAssets","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"","type":"bytes32"},{"internalType":"uint256","name":"","type":"uint256"}],"name":"commentIdsInExternalAssets","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"}],"name":"commentIdsInProfiles","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"comments","outputs":[{"internalType":"uint256","name":"assetType","type":"uint256"},{"internalType":"uint256","name":"chunkIdsCount","type":"uint256"},{"internalType":"string","name":"name","type":"string"},{"internalType":"uint256","name":"size","type":"uint256"},{"internalType":"string","name":"fileType","type":"string"},{"internalType":"uint256","name":"commentIdsCount","type":"uint256"},{"internalType":"address","name":"author","type":"address"},{"internalType":"uint256","name":"timestamp","type":"uint256"},{"internalType":"bytes","name":"cipherData","type":"bytes"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"commentsCount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"name":"externalAssets","outputs":[{"internalType":"uint256","name":"id","type":"uint256"},{"internalType":"uint256","name":"versionsCount","type":"uint256"},{"internalType":"address","name":"owner","type":"address"},{"internalType":"string","name":"title","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"mainNetworkId","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"profilesCount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"profilesFromAddresses","outputs":[{"internalType":"uint256","name":"assetIdsCount","type":"uint256"},{"internalType":"uint256","name":"commentIdsCount","type":"uint256"},{"internalType":"string","name":"name","type":"string"},{"internalType":"uint256","name":"lastActivity","type":"uint256"},{"internalType":"uint256","name":"earnings","type":"uint256"},{"internalType":"bool","name":"commentsBlocked","type":"bool"},{"internalType":"address","name":"referrer","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"version","type":"uint256"}],"name":"setAppNewestVersion","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"blockComments","type":"bool"}],"name":"setCommentsBlock","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"networkId","type":"uint256"}],"name":"setMainNetworkId","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"_newName","type":"string"}],"name":"setName","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes","name":"_bytes","type":"bytes"},{"internalType":"uint256[]","name":"_additionalChunkIds","type":"uint256[]"},{"internalType":"uint256","name":"_id","type":"uint256"},{"internalType":"uint256","name":"_assetType","type":"uint256"},{"internalType":"string","name":"_name","type":"string"},{"internalType":"uint256","name":"_size","type":"uint256"},{"internalType":"string","name":"_fileType","type":"string"},{"internalType":"address","name":"_hostAddress","type":"address"},{"internalType":"address","name":"_referralAddress","type":"address"},{"internalType":"bytes","name":"_cipherData","type":"bytes"}],"name":"updateAsset","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"_newOwner","type":"address"},{"internalType":"bytes32","name":"_hash","type":"bytes32"}],"name":"updateExternalAssetOwner","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"}],"name":"versions","outputs":[{"internalType":"uint256","name":"assetType","type":"uint256"},{"internalType":"uint256","name":"chunkIdsCount","type":"uint256"},{"internalType":"string","name":"name","type":"string"},{"internalType":"uint256","name":"size","type":"uint256"},{"internalType":"string","name":"fileType","type":"string"},{"internalType":"uint256","name":"commentIdsCount","type":"uint256"},{"internalType":"address","name":"author","type":"address"},{"internalType":"uint256","name":"timestamp","type":"uint256"},{"internalType":"bytes","name":"cipherData","type":"bytes"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"withdraw","outputs":[],"stateMutability":"nonpayable","type":"function"}]Contract Creation Code
60806040523480156200001157600080fd5b5062000032620000266200003860201b60201c565b6200004060201b60201c565b62000104565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b615e3780620001146000396000f3fe60806040526004361061023b5760003560e01c8063758c919c1161012e578063c9bf646d116100ab578063f2d143111161006f578063f2d14311146108e0578063f2fde38b14610925578063f5eb8eef1461094e578063f7b750b91461096a578063f82291cd146109865761023b565b8063c9bf646d146107f8578063cf35bdd014610823578063e47b406e14610863578063eafe7a741461088c578063ed918baa146108b75761023b565b80638ebb4c15116100f25780638ebb4c15146106ec5780639804ad7714610731578063a134680f1461076e578063c47f00271461078a578063c97fddbd146107b35761023b565b8063758c919c146105c45780637b021b6614610601578063827a07e21461064157806382a6d5ca146106845780638da5cb5b146106c15761023b565b806339a708b7116101bc57806357fbeb4e1161018057806357fbeb4e146104ec5780635a2bc22d146105085780635a6df0fe14610545578063702c0a7614610582578063715018a6146105ad5761023b565b806339a708b7146104285780633ccfd60b1461044457806343b5a90c1461045b578063482245cb146104845780634b4e01fa146104c15761023b565b80632111bf39116102035780632111bf391461033e57806325e957211461037b5780632c647cda146103a457806330ae4d76146103c0578063339145a8146103eb5761023b565b806304c9fff11461024057806307fef7411461027d578063171b2bda146102a85780631e8fe65d146102e55780631f1e638214610301575b600080fd5b34801561024c57600080fd5b5061026760048036038101906102629190614759565b6109a2565b60405161027491906147a8565b60405180910390f35b34801561028957600080fd5b506102926109c7565b60405161029f91906147a8565b60405180910390f35b3480156102b457600080fd5b506102cf60048036038101906102ca91906147c3565b6109cd565b6040516102dc91906147a8565b60405180910390f35b6102ff60048036038101906102fa9190614ab2565b6109f2565b005b34801561030d57600080fd5b5061032860048036038101906103239190614c32565b610e2f565b60405161033591906147a8565b60405180910390f35b34801561034a57600080fd5b5061036560048036038101906103609190614759565b610e61565b60405161037291906147a8565b60405180910390f35b34801561038757600080fd5b506103a2600480360381019061039d9190614c85565b610e86565b005b6103be60048036038101906103b99190614cb2565b610e98565b005b3480156103cc57600080fd5b506103d56113b6565b6040516103e291906147a8565b60405180910390f35b3480156103f757600080fd5b50610412600480360381019061040d9190614e6f565b6113bc565b60405161041f91906147a8565b60405180910390f35b610442600480360381019061043d9190614e9c565b6113d4565b005b34801561045057600080fd5b50610459611640565b005b34801561046757600080fd5b50610482600480360381019061047d9190614c85565b6116c8565b005b34801561049057600080fd5b506104ab60048036038101906104a69190614c85565b6116da565b6040516104b89190614f1a565b60405180910390f35b3480156104cd57600080fd5b506104d661170d565b6040516104e391906147a8565b60405180910390f35b61050660048036038101906105019190614f35565b611713565b005b34801561051457600080fd5b5061052f600480360381019061052a9190614c85565b611acb565b60405161053c91906150f7565b60405180910390f35b34801561055157600080fd5b5061056c60048036038101906105679190614c32565b611b6b565b60405161057991906147a8565b60405180910390f35b34801561058e57600080fd5b50610597611b9d565b6040516105a491906147a8565b60405180910390f35b3480156105b957600080fd5b506105c2611ba3565b005b3480156105d057600080fd5b506105eb60048036038101906105e69190614759565b611bb7565b6040516105f891906147a8565b60405180910390f35b34801561060d57600080fd5b5061062860048036038101906106239190614e6f565b611bdc565b604051610638949392919061516e565b60405180910390f35b34801561064d57600080fd5b50610668600480360381019061066391906151ba565b611cb4565b60405161067b9796959493929190615202565b60405180910390f35b34801561069057600080fd5b506106ab60048036038101906106a69190615278565b611dab565b6040516106b891906147a8565b60405180910390f35b3480156106cd57600080fd5b506106d6611dd0565b6040516106e39190614f1a565b60405180910390f35b3480156106f857600080fd5b50610713600480360381019061070e9190614c85565b611df9565b604051610728999897969594939291906152b8565b60405180910390f35b34801561073d57600080fd5b506107586004803603810190610753919061535a565b611fff565b6040516107659190614f1a565b60405180910390f35b610788600480360381019061078391906153a3565b612048565b005b34801561079657600080fd5b506107b160048036038101906107ac919061535a565b612418565b005b3480156107bf57600080fd5b506107da60048036038101906107d591906147c3565b612716565b6040516107ef999897969594939291906152b8565b60405180910390f35b34801561080457600080fd5b5061080d612929565b60405161081a91906147a8565b60405180910390f35b34801561082f57600080fd5b5061084a60048036038101906108459190614c85565b61292f565b60405161085a949392919061516e565b60405180910390f35b34801561086f57600080fd5b5061088a6004803603810190610885919061553a565b612a07565b005b34801561089857600080fd5b506108a1612a64565b6040516108ae91906147a8565b60405180910390f35b3480156108c357600080fd5b506108de60048036038101906108d99190615567565b612a6a565b005b3480156108ec57600080fd5b50610907600480360381019061090291906151ba565b612b31565b60405161091c999897969594939291906152b8565b60405180910390f35b34801561093157600080fd5b5061094c600480360381019061094791906151ba565b612d37565b005b610968600480360381019061096391906155a7565b612dbb565b005b610984600480360381019061097f9190615712565b6130f2565b005b6109a0600480360381019061099b91906157a9565b613608565b005b6013602052816000526040600020602052806000526040600020600091509150505481565b60055481565b600e602052816000526040600020602052806000526040600020600091509150505481565b610a028b84848c6000801b6130f2565b88600154118015610a1557506040865111155b8015610a36575087600760008b815260200190815260200160002060010154115b610a75576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a6c9061591b565b60405180910390fd5b60036000815480929190610a889061596a565b9190505550600354600f60008b815260200190815260200160002060008a81526020019081526020016000206000600960008d815260200190815260200160002060008c81526020019081526020016000206005015481526020019081526020016000208190555060005b8a51811015610c0f573373ffffffffffffffffffffffffffffffffffffffff16600c60008d8481518110610b2a57610b296159b3565b5b6020026020010151815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610bb7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bae9061591b565b60405180910390fd5b8a8181518110610bca57610bc96159b3565b5b6020026020010151600e600060035481526020019081526020016000206000838152602001908152602001600020819055508080610c079061596a565b915050610af3565b600082511480610c20575060308251145b610c5f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c569061591b565b60405180910390fd5b6001600254610c6e91906159e2565b600e60006003548152602001908152602001600020600083815260200190815260200160002081905550604051806101200160405280898152602001600183610cb79190615a16565b8152602001888152602001878152602001868152602001600081526020013373ffffffffffffffffffffffffffffffffffffffff16815260200142815260200183815250600d6000600354815260200190815260200160002060008201518160000155602082015181600101556040820151816002019080519060200190610d40929190614588565b50606082015181600301556080820151816004019080519060200190610d67929190614588565b5060a0820151816005015560c08201518160060160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060e08201518160070155610100820151816008019080519060200190610de092919061460e565b50905050600960008b815260200190815260200160002060008a81526020019081526020016000206005016000815480929190610e1c9061596a565b9190505550505050505050505050505050565b600a60205282600052604060002060205281600052604060002060205280600052604060002060009250925050505481565b6017602052816000526040600020602052806000526040600020600091509150505481565b610e8e613934565b8060058190555050565b610eaf8a8484661fffffffffffff6000801b6130f2565b60005b8851811015610fa9573373ffffffffffffffffffffffffffffffffffffffff16600c60008b8481518110610ee957610ee86159b3565b5b6020026020010151815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610f4057600080fd5b888181518110610f5357610f526159b3565b5b6020026020010151600a6000600154815260200190815260200160002060008081526020019081526020016000206000838152602001908152602001600020819055508080610fa19061596a565b915050610eb2565b60408a5111158015610fbc575060008a51115b8015610fcb5750610200875111155b610fd457600080fd5b6001600254610fe391906159e2565b600a60006001548152602001908152602001600020600080815260200190815260200160002060008381526020019081526020016000208190555060405180610120016040528089815260200160018361103d9190615a16565b8152602001888152602001878152602001868152602001600081526020013373ffffffffffffffffffffffffffffffffffffffff168152602001428152602001838152506009600060015481526020019081526020016000206000808152602001908152602001600020600082015181600001556020820151816001015560408201518160020190805190602001906110d7929190614588565b506060820151816003015560808201518160040190805190602001906110fe929190614588565b5060a0820151816005015560c08201518160060160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060e0820151816007015561010082015181600801908051906020019061117792919061460e565b5090505060405180608001604052806001548152602001600181526020013373ffffffffffffffffffffffffffffffffffffffff1681526020018b815250600760006001548152602001908152602001600020600082015181600001556020820151816001015560408201518160020160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506060820151816003019080519060200190611241929190614588565b50905050600154601260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000601160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000154815260200190815260200160002081905550600160008154809291906112f19061596a565b9190505550601160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160008154809291906113499061596a565b91905055503373ffffffffffffffffffffffffffffffffffffffff167f6091af96b5a1189f472200ac993a62a165ae1f16c9169dc5d54b2d67262d0c146001805461139491906159e2565b6040516113a191906147a8565b60405180910390a25050505050505050505050565b60065481565b60146020528060005260406000206000915090505481565b60006064605f62060832614e20602088516113ef9190615a9b565b6113f99190615acc565b600c88516114079190615acc565b6114119190615a16565b61141b9190615a16565b3a6114269190615acc565b6114309190615acc565b61143a9190615a9b565b90508034101561144957600080fd5b6000600a346114589190615a9b565b90506114658185856139b2565b600061146f611dd0565b73ffffffffffffffffffffffffffffffffffffffff168260056114929190615acc565b3461149d91906159e2565b6040516114a990615b57565b60006040518083038185875af1925050503d80600081146114e6576040519150601f19603f3d011682016040523d82523d6000602084013e6114eb565b606091505b50509050806114f957600080fd5b60008680519060200120905060405160200161151490615b9a565b60405160208183030381529060405280519060200120600860008381526020019081526020016000206003016040516020016115509190615ca4565b604051602081830303815290604052805190602001201461157057600080fd5b604051806080016040528060008152602001600081526020013373ffffffffffffffffffffffffffffffffffffffff1681526020018881525060086000838152602001908152602001600020600082015181600001556020820151816001015560408201518160020160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506060820151816003019080519060200190611633929190614588565b5090505050505050505050565b611648613934565b6000611652611dd0565b73ffffffffffffffffffffffffffffffffffffffff164760405161167590615b57565b60006040518083038185875af1925050503d80600081146116b2576040519150601f19603f3d011682016040523d82523d6000602084013e6116b7565b606091505b50509050806116c557600080fd5b50565b6116d0613934565b8060068190555050565b600c6020528060005260406000206000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60025481565b61172a898383661fffffffffffff6000801b6130f2565b6003600081548092919061173d9061596a565b9190505550600354601360008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000601160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600101548152602001908152602001600020819055506040855111156117ea57600080fd5b60005b88518110156118d3573373ffffffffffffffffffffffffffffffffffffffff16600c60008b8481518110611824576118236159b3565b5b6020026020010151815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461187b57600080fd5b88818151811061188e5761188d6159b3565b5b6020026020010151600e6000600354815260200190815260200160002060008381526020019081526020016000208190555080806118cb9061596a565b9150506117ed565b60016002546118e291906159e2565b600e6000600354815260200190815260200160002060008381526020019081526020016000208190555060405180610120016040528088815260200160018361192b9190615a16565b8152602001878152602001868152602001858152602001600081526020013373ffffffffffffffffffffffffffffffffffffffff16815260200142815260200160405180602001604052806000815250815250600d60006003548152602001908152602001600020600082015181600001556020820151816001015560408201518160020190805190602001906119c3929190614588565b506060820151816003015560808201518160040190805190602001906119ea929190614588565b5060a0820151816005015560c08201518160060160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060e08201518160070155610100820151816008019080519060200190611a6392919061460e565b50905050601160008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206001016000815480929190611aba9061596a565b919050555050505050505050505050565b600b6020528060005260406000206000915090508054611aea90615bde565b80601f0160208091040260200160405190810160405280929190818152602001828054611b1690615bde565b8015611b635780601f10611b3857610100808354040283529160200191611b63565b820191906000526020600020905b815481529060010190602001808311611b4657829003601f168201915b505050505081565b600f60205282600052604060002060205281600052604060002060205280600052604060002060009250925050505481565b60045481565b611bab613934565b611bb560006144bc565b565b6012602052816000526040600020602052806000526040600020600091509150505481565b60086020528060005260406000206000915090508060000154908060010154908060020160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690806003018054611c3190615bde565b80601f0160208091040260200160405190810160405280929190818152602001828054611c5d90615bde565b8015611caa5780601f10611c7f57610100808354040283529160200191611caa565b820191906000526020600020905b815481529060010190602001808311611c8d57829003601f168201915b5050505050905084565b6011602052806000526040600020600091509050806000015490806001015490806002018054611ce390615bde565b80601f0160208091040260200160405190810160405280929190818152602001828054611d0f90615bde565b8015611d5c5780601f10611d3157610100808354040283529160200191611d5c565b820191906000526020600020905b815481529060010190602001808311611d3f57829003601f168201915b5050505050908060030154908060040154908060050160009054906101000a900460ff16908060050160019054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905087565b6015602052816000526040600020602052806000526040600020600091509150505481565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600d602052806000526040600020600091509050806000015490806001015490806002018054611e2890615bde565b80601f0160208091040260200160405190810160405280929190818152602001828054611e5490615bde565b8015611ea15780601f10611e7657610100808354040283529160200191611ea1565b820191906000526020600020905b815481529060010190602001808311611e8457829003601f168201915b505050505090806003015490806004018054611ebc90615bde565b80601f0160208091040260200160405190810160405280929190818152602001828054611ee890615bde565b8015611f355780601f10611f0a57610100808354040283529160200191611f35565b820191906000526020600020905b815481529060010190602001808311611f1857829003601f168201915b5050505050908060050154908060060160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690806007015490806008018054611f7c90615bde565b80601f0160208091040260200160405190810160405280929190818152602001828054611fa890615bde565b8015611ff55780601f10611fca57610100808354040283529160200191611ff5565b820191906000526020600020905b815481529060010190602001808311611fd857829003601f168201915b5050505050905089565b6010818051602081018201805184825260208301602085012081835280955050505050506000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b61205f8a8484661fffffffffffff6000801b6130f2565b8760015411801561207257506040865111155b80156120df57506007600089815260200190815260200160002060020160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b6120e857600080fd5b60005b89518110156121f6573373ffffffffffffffffffffffffffffffffffffffff16600c60008c8481518110612122576121216159b3565b5b6020026020010151815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461217957600080fd5b89818151811061218c5761218b6159b3565b5b6020026020010151600a60008b81526020019081526020016000206000600760008d815260200190815260200160002060010154815260200190815260200160002060008381526020019081526020016000208190555080806121ee9061596a565b9150506120eb565b600082511480612207575060308251145b61221057600080fd5b600160025461221f91906159e2565b600a60008b81526020019081526020016000206000600760008d815260200190815260200160002060010154815260200190815260200160002060008381526020019081526020016000208190555060405180610120016040528089815260200160018361228d9190615a16565b8152602001888152602001878152602001868152602001600081526020013373ffffffffffffffffffffffffffffffffffffffff16815260200142815260200183815250600960008b81526020019081526020016000206000600760008d81526020019081526020016000206001015481526020019081526020016000206000820151816000015560208201518160010155604082015181600201908051906020019061233b929190614588565b50606082015181600301556080820151816004019080519060200190612362929190614588565b5060a0820151816005015560c08201518160060160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060e082015181600701556101008201518160080190805190602001906123db92919061460e565b50905050600760008a815260200190815260200160002060010160008154809291906124069061596a565b91905055505050505050505050505050565b6002815111801561242a575060218151105b80156124a05750600073ffffffffffffffffffffffffffffffffffffffff166010826040516124599190615cec565b908152602001604051809103902060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16145b80156124fa57506000601160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060020180546124f690615bde565b9050145b61250357600080fd5b60005b815181101561265e57602d60f81b828281518110612527576125266159b3565b5b602001015160f81c60f81b7effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916101580156125a55750603960f81b828281518110612575576125746159b3565b5b602001015160f81c60f81b7effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191611155b806126425750606160f81b8282815181106125c3576125c26159b3565b5b602001015160f81c60f81b7effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916101580156126415750607a60f81b828281518110612611576126106159b3565b5b602001015160f81c60f81b7effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191611155b5b61264b57600080fd5b80806126569061596a565b915050612506565b81601160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060020190805190602001906126b4929190614588565b50336010836040516126c69190615cec565b908152602001604051809103902060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050565b60096020528160005260406000206020528060005260406000206000915091505080600001549080600101549080600201805461275290615bde565b80601f016020809104026020016040519081016040528092919081815260200182805461277e90615bde565b80156127cb5780601f106127a0576101008083540402835291602001916127cb565b820191906000526020600020905b8154815290600101906020018083116127ae57829003601f168201915b5050505050908060030154908060040180546127e690615bde565b80601f016020809104026020016040519081016040528092919081815260200182805461281290615bde565b801561285f5780601f106128345761010080835404028352916020019161285f565b820191906000526020600020905b81548152906001019060200180831161284257829003601f168201915b5050505050908060050154908060060160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16908060070154908060080180546128a690615bde565b80601f01602080910402602001604051908101604052809291908181526020018280546128d290615bde565b801561291f5780601f106128f45761010080835404028352916020019161291f565b820191906000526020600020905b81548152906001019060200180831161290257829003601f168201915b5050505050905089565b60035481565b60076020528060005260406000206000915090508060000154908060010154908060020160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169080600301805461298490615bde565b80601f01602080910402602001604051908101604052809291908181526020018280546129b090615bde565b80156129fd5780601f106129d2576101008083540402835291602001916129fd565b820191906000526020600020905b8154815290600101906020018083116129e057829003601f168201915b5050505050905084565b80601160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060050160006101000a81548160ff02191690831515021790555050565b60015481565b6008600082815260200190815260200160002060020160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614612ad857600080fd5b816008600083815260200190815260200160002060020160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050565b6016602052806000526040600020600091509050806000015490806001015490806002018054612b6090615bde565b80601f0160208091040260200160405190810160405280929190818152602001828054612b8c90615bde565b8015612bd95780601f10612bae57610100808354040283529160200191612bd9565b820191906000526020600020905b815481529060010190602001808311612bbc57829003601f168201915b505050505090806003015490806004018054612bf490615bde565b80601f0160208091040260200160405190810160405280929190818152602001828054612c2090615bde565b8015612c6d5780601f10612c4257610100808354040283529160200191612c6d565b820191906000526020600020905b815481529060010190602001808311612c5057829003601f168201915b5050505050908060050154908060060160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690806007015490806008018054612cb490615bde565b80601f0160208091040260200160405190810160405280929190818152602001828054612ce090615bde565b8015612d2d5780601f10612d0257610100808354040283529160200191612d2d565b820191906000526020600020905b815481529060010190602001808311612d1057829003601f168201915b5050505050905089565b612d3f613934565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415612daf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612da690615d75565b60405180910390fd5b612db8816144bc565b50565b612dcf8a8484661fffffffffffff8c6130f2565b60036000815480929190612de29061596a565b9190505550600354601560008a81526020019081526020016000206000601460008c815260200190815260200160002054815260200190815260200160002081905550604086511115612e3457600080fd5b60005b8951811015612f1d573373ffffffffffffffffffffffffffffffffffffffff16600c60008c8481518110612e6e57612e6d6159b3565b5b6020026020010151815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612ec557600080fd5b898181518110612ed857612ed76159b3565b5b6020026020010151600e600060035481526020019081526020016000206000838152602001908152602001600020819055508080612f159061596a565b915050612e37565b600082511480612f2e575060308251145b612f3757600080fd5b6001600254612f4691906159e2565b600e60006003548152602001908152602001600020600083815260200190815260200160002081905550604051806101200160405280898152602001600183612f8f9190615a16565b8152602001888152602001878152602001868152602001600081526020013373ffffffffffffffffffffffffffffffffffffffff16815260200142815260200183815250600d6000600354815260200190815260200160002060008201518160000155602082015181600101556040820151816002019080519060200190613018929190614588565b5060608201518160030155608082015181600401908051906020019061303f929190614588565b5060a0820151816005015560c08201518160060160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060e082015181600701556101008201518160080190805190602001906130b892919061460e565b50905050601460008a815260200190815260200160002060008154809291906130e09061596a565b91905055505050505050505050505050565b60006064605f62060832614e2060208a5161310d9190615a9b565b6131179190615acc565b600c8a516131259190615acc565b61312f9190615a16565b6131399190615a16565b3a6131449190615acc565b61314e9190615acc565b6131589190615a9b565b90508034101561316757600080fd5b6000600a346131769190615a9b565b90506131838187876139b2565b60008060001b841461326b574262278d00601160006008600089815260200190815260200160002060020160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600301546132179190615a16565b101561322c57613225611dd0565b9050613266565b6008600085815260200190815260200160002060020160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690505b613354565b661fffffffffffff85148061330557504262278d0060116000600760008a815260200190815260200160002060020160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600301546133039190615a16565b105b1561331957613312611dd0565b9050613353565b6007600086815260200190815260200160002060020160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690505b5b60008173ffffffffffffffffffffffffffffffffffffffff1683600461337a9190615acc565b60405161338690615b57565b60006040518083038185875af1925050503d80600081146133c3576040519150601f19603f3d011682016040523d82523d6000602084013e6133c8565b606091505b505090508260046133d99190615acc565b601160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600401546134269190615a16565b601160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600401819055508061347657600080fd5b6000613480611dd0565b73ffffffffffffffffffffffffffffffffffffffff168460096134a39190615acc565b346134ae91906159e2565b6040516134ba90615b57565b60006040518083038185875af1925050503d80600081146134f7576040519150601f19603f3d011682016040523d82523d6000602084013e6134fc565b606091505b505090508061350a57600080fd5b89600b60006002548152602001908152602001600020908051906020019061353392919061460e565b5033600c6000600254815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506002600081548092919061359b9061596a565b91905055503373ffffffffffffffffffffffffffffffffffffffff167fc8790f4cdb5351a4294e55116e9d037284669b45b7b318e72983f5376648226060016002546135e791906159e2565b6040516135f491906147a8565b60405180910390a250505050505050505050565b61361f888383661fffffffffffff6000801b6130f2565b60408551111561362e57600080fd5b60005b8751811015613741573373ffffffffffffffffffffffffffffffffffffffff16600c60008a8481518110613668576136676159b3565b5b6020026020010151815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146136bf57600080fd5b8781815181106136d2576136d16159b3565b5b6020026020010151601760003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008381526020019081526020016000208190555080806137399061596a565b915050613631565b600160025461375091906159e2565b601760003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000838152602001908152602001600020819055506040518061012001604052808881526020016001836137c39190615a16565b8152602001878152602001868152602001858152602001600081526020013373ffffffffffffffffffffffffffffffffffffffff16815260200142815260200160405180602001604052806000815250815250601660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008201518160000155602082015181600101556040820151816002019080519060200190613885929190614588565b506060820151816003015560808201518160040190805190602001906138ac929190614588565b5060a0820151816005015560c08201518160060160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060e0820151816007015561010082015181600801908051906020019061392592919061460e565b50905050505050505050505050565b61393c614580565b73ffffffffffffffffffffffffffffffffffffffff1661395a611dd0565b73ffffffffffffffffffffffffffffffffffffffff16146139b0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016139a790615de1565b60405180910390fd5b565b60008073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161480613a1957503373ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16145b80613a7357504262278d00601160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060030154613a719190615a16565b105b15613a8757613a80611dd0565b9050613a8b565b8290505b60008073ffffffffffffffffffffffffffffffffffffffff16601160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060050160019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415613c66573373ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614613bdc5782601160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060050160016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550613c65565b613be4611dd0565b601160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060050160016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b5b4262278d0060116000601160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060050160019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060030154613d1a9190615a16565b1015613d2f57613d28611dd0565b9050613d95565b601160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060050160019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690505b60008073ffffffffffffffffffffffffffffffffffffffff1660116000601160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060050160019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060050160019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161480613f84575060116000601160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060050160019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060050160019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b8061404057504262278d0060116000601160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060050160019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206003015461403e9190615a16565b105b156140545761404d611dd0565b905061411c565b60116000601160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060050160019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060050160019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690505b60008373ffffffffffffffffffffffffffffffffffffffff168760026141429190615acc565b60405161414e90615b57565b60006040518083038185875af1925050503d806000811461418b576040519150601f19603f3d011682016040523d82523d6000602084013e614190565b606091505b505090508660026141a19190615acc565b601160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600401546141ee9190615a16565b601160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600401819055508061423e57600080fd5b60008373ffffffffffffffffffffffffffffffffffffffff168860026142649190615acc565b60405161427090615b57565b60006040518083038185875af1925050503d80600081146142ad576040519150601f19603f3d011682016040523d82523d6000602084013e6142b2565b606091505b505090508760026142c39190615acc565b601160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600401546143109190615a16565b601160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600401819055508061436057600080fd5b60008373ffffffffffffffffffffffffffffffffffffffff168960405161438690615b57565b60006040518083038185875af1925050503d80600081146143c3576040519150601f19603f3d011682016040523d82523d6000602084013e6143c8565b606091505b5050905088601160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206004015461441a9190615a16565b601160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600401819055508061446a57600080fd5b42601160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060030181905550505050505050505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600033905090565b82805461459490615bde565b90600052602060002090601f0160209004810192826145b657600085556145fd565b82601f106145cf57805160ff19168380011785556145fd565b828001600101855582156145fd579182015b828111156145fc5782518255916020019190600101906145e1565b5b50905061460a9190614694565b5090565b82805461461a90615bde565b90600052602060002090601f01602090048101928261463c5760008555614683565b82601f1061465557805160ff1916838001178555614683565b82800160010185558215614683579182015b82811115614682578251825591602001919060010190614667565b5b5090506146909190614694565b5090565b5b808211156146ad576000816000905550600101614695565b5090565b6000604051905090565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006146f0826146c5565b9050919050565b614700816146e5565b811461470b57600080fd5b50565b60008135905061471d816146f7565b92915050565b6000819050919050565b61473681614723565b811461474157600080fd5b50565b6000813590506147538161472d565b92915050565b600080604083850312156147705761476f6146bb565b5b600061477e8582860161470e565b925050602061478f85828601614744565b9150509250929050565b6147a281614723565b82525050565b60006020820190506147bd6000830184614799565b92915050565b600080604083850312156147da576147d96146bb565b5b60006147e885828601614744565b92505060206147f985828601614744565b9150509250929050565b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6148568261480d565b810181811067ffffffffffffffff821117156148755761487461481e565b5b80604052505050565b60006148886146b1565b9050614894828261484d565b919050565b600067ffffffffffffffff8211156148b4576148b361481e565b5b6148bd8261480d565b9050602081019050919050565b82818337600083830152505050565b60006148ec6148e784614899565b61487e565b90508281526020810184848401111561490857614907614808565b5b6149138482856148ca565b509392505050565b600082601f8301126149305761492f614803565b5b81356149408482602086016148d9565b91505092915050565b600067ffffffffffffffff8211156149645761496361481e565b5b602082029050602081019050919050565b600080fd5b600061498d61498884614949565b61487e565b905080838252602082019050602084028301858111156149b0576149af614975565b5b835b818110156149d957806149c58882614744565b8452602084019350506020810190506149b2565b5050509392505050565b600082601f8301126149f8576149f7614803565b5b8135614a0884826020860161497a565b91505092915050565b600067ffffffffffffffff821115614a2c57614a2b61481e565b5b614a358261480d565b9050602081019050919050565b6000614a55614a5084614a11565b61487e565b905082815260208101848484011115614a7157614a70614808565b5b614a7c8482856148ca565b509392505050565b600082601f830112614a9957614a98614803565b5b8135614aa9848260208601614a42565b91505092915050565b60008060008060008060008060008060006101608c8e031215614ad857614ad76146bb565b5b60008c013567ffffffffffffffff811115614af657614af56146c0565b5b614b028e828f0161491b565b9b505060208c013567ffffffffffffffff811115614b2357614b226146c0565b5b614b2f8e828f016149e3565b9a50506040614b408e828f01614744565b9950506060614b518e828f01614744565b9850506080614b628e828f01614744565b97505060a08c013567ffffffffffffffff811115614b8357614b826146c0565b5b614b8f8e828f01614a84565b96505060c0614ba08e828f01614744565b95505060e08c013567ffffffffffffffff811115614bc157614bc06146c0565b5b614bcd8e828f01614a84565b945050610100614bdf8e828f0161470e565b935050610120614bf18e828f0161470e565b9250506101408c013567ffffffffffffffff811115614c1357614c126146c0565b5b614c1f8e828f0161491b565b9150509295989b509295989b9093969950565b600080600060608486031215614c4b57614c4a6146bb565b5b6000614c5986828701614744565b9350506020614c6a86828701614744565b9250506040614c7b86828701614744565b9150509250925092565b600060208284031215614c9b57614c9a6146bb565b5b6000614ca984828501614744565b91505092915050565b6000806000806000806000806000806101408b8d031215614cd657614cd56146bb565b5b60008b013567ffffffffffffffff811115614cf457614cf36146c0565b5b614d008d828e0161491b565b9a505060208b013567ffffffffffffffff811115614d2157614d206146c0565b5b614d2d8d828e01614a84565b99505060408b013567ffffffffffffffff811115614d4e57614d4d6146c0565b5b614d5a8d828e016149e3565b9850506060614d6b8d828e01614744565b97505060808b013567ffffffffffffffff811115614d8c57614d8b6146c0565b5b614d988d828e01614a84565b96505060a0614da98d828e01614744565b95505060c08b013567ffffffffffffffff811115614dca57614dc96146c0565b5b614dd68d828e01614a84565b94505060e0614de78d828e0161470e565b935050610100614df98d828e0161470e565b9250506101208b013567ffffffffffffffff811115614e1b57614e1a6146c0565b5b614e278d828e0161491b565b9150509295989b9194979a5092959850565b6000819050919050565b614e4c81614e39565b8114614e5757600080fd5b50565b600081359050614e6981614e43565b92915050565b600060208284031215614e8557614e846146bb565b5b6000614e9384828501614e5a565b91505092915050565b600080600060608486031215614eb557614eb46146bb565b5b600084013567ffffffffffffffff811115614ed357614ed26146c0565b5b614edf86828701614a84565b9350506020614ef08682870161470e565b9250506040614f018682870161470e565b9150509250925092565b614f14816146e5565b82525050565b6000602082019050614f2f6000830184614f0b565b92915050565b60008060008060008060008060006101208a8c031215614f5857614f576146bb565b5b60008a013567ffffffffffffffff811115614f7657614f756146c0565b5b614f828c828d0161491b565b99505060208a013567ffffffffffffffff811115614fa357614fa26146c0565b5b614faf8c828d016149e3565b9850506040614fc08c828d0161470e565b9750506060614fd18c828d01614744565b96505060808a013567ffffffffffffffff811115614ff257614ff16146c0565b5b614ffe8c828d01614a84565b95505060a061500f8c828d01614744565b94505060c08a013567ffffffffffffffff8111156150305761502f6146c0565b5b61503c8c828d01614a84565b93505060e061504d8c828d0161470e565b92505061010061505f8c828d0161470e565b9150509295985092959850929598565b600081519050919050565b600082825260208201905092915050565b60005b838110156150a957808201518184015260208101905061508e565b838111156150b8576000848401525b50505050565b60006150c98261506f565b6150d3818561507a565b93506150e381856020860161508b565b6150ec8161480d565b840191505092915050565b6000602082019050818103600083015261511181846150be565b905092915050565b600081519050919050565b600082825260208201905092915050565b600061514082615119565b61514a8185615124565b935061515a81856020860161508b565b6151638161480d565b840191505092915050565b60006080820190506151836000830187614799565b6151906020830186614799565b61519d6040830185614f0b565b81810360608301526151af8184615135565b905095945050505050565b6000602082840312156151d0576151cf6146bb565b5b60006151de8482850161470e565b91505092915050565b60008115159050919050565b6151fc816151e7565b82525050565b600060e082019050615217600083018a614799565b6152246020830189614799565b81810360408301526152368188615135565b90506152456060830187614799565b6152526080830186614799565b61525f60a08301856151f3565b61526c60c0830184614f0b565b98975050505050505050565b6000806040838503121561528f5761528e6146bb565b5b600061529d85828601614e5a565b92505060206152ae85828601614744565b9150509250929050565b6000610120820190506152ce600083018c614799565b6152db602083018b614799565b81810360408301526152ed818a615135565b90506152fc6060830189614799565b818103608083015261530e8188615135565b905061531d60a0830187614799565b61532a60c0830186614f0b565b61533760e0830185614799565b81810361010083015261534a81846150be565b90509a9950505050505050505050565b6000602082840312156153705761536f6146bb565b5b600082013567ffffffffffffffff81111561538e5761538d6146c0565b5b61539a84828501614a84565b91505092915050565b6000806000806000806000806000806101408b8d0312156153c7576153c66146bb565b5b60008b013567ffffffffffffffff8111156153e5576153e46146c0565b5b6153f18d828e0161491b565b9a505060208b013567ffffffffffffffff811115615412576154116146c0565b5b61541e8d828e016149e3565b995050604061542f8d828e01614744565b98505060606154408d828e01614744565b97505060808b013567ffffffffffffffff811115615461576154606146c0565b5b61546d8d828e01614a84565b96505060a061547e8d828e01614744565b95505060c08b013567ffffffffffffffff81111561549f5761549e6146c0565b5b6154ab8d828e01614a84565b94505060e06154bc8d828e0161470e565b9350506101006154ce8d828e0161470e565b9250506101208b013567ffffffffffffffff8111156154f0576154ef6146c0565b5b6154fc8d828e0161491b565b9150509295989b9194979a5092959850565b615517816151e7565b811461552257600080fd5b50565b6000813590506155348161550e565b92915050565b6000602082840312156155505761554f6146bb565b5b600061555e84828501615525565b91505092915050565b6000806040838503121561557e5761557d6146bb565b5b600061558c8582860161470e565b925050602061559d85828601614e5a565b9150509250929050565b6000806000806000806000806000806101408b8d0312156155cb576155ca6146bb565b5b60008b013567ffffffffffffffff8111156155e9576155e86146c0565b5b6155f58d828e0161491b565b9a505060208b013567ffffffffffffffff811115615616576156156146c0565b5b6156228d828e016149e3565b99505060406156338d828e01614e5a565b98505060606156448d828e01614744565b97505060808b013567ffffffffffffffff811115615665576156646146c0565b5b6156718d828e01614a84565b96505060a06156828d828e01614744565b95505060c08b013567ffffffffffffffff8111156156a3576156a26146c0565b5b6156af8d828e01614a84565b94505060e06156c08d828e0161470e565b9350506101006156d28d828e0161470e565b9250506101208b013567ffffffffffffffff8111156156f4576156f36146c0565b5b6157008d828e0161491b565b9150509295989b9194979a5092959850565b600080600080600060a0868803121561572e5761572d6146bb565b5b600086013567ffffffffffffffff81111561574c5761574b6146c0565b5b6157588882890161491b565b95505060206157698882890161470e565b945050604061577a8882890161470e565b935050606061578b88828901614744565b925050608061579c88828901614e5a565b9150509295509295909350565b600080600080600080600080610100898b0312156157ca576157c96146bb565b5b600089013567ffffffffffffffff8111156157e8576157e76146c0565b5b6157f48b828c0161491b565b985050602089013567ffffffffffffffff811115615815576158146146c0565b5b6158218b828c016149e3565b97505060406158328b828c01614744565b965050606089013567ffffffffffffffff811115615853576158526146c0565b5b61585f8b828c01614a84565b95505060806158708b828c01614744565b94505060a089013567ffffffffffffffff811115615891576158906146c0565b5b61589d8b828c01614a84565b93505060c06158ae8b828c0161470e565b92505060e06158bf8b828c0161470e565b9150509295985092959890939650565b7f4572726f72210000000000000000000000000000000000000000000000000000600082015250565b6000615905600683615124565b9150615910826158cf565b602082019050919050565b60006020820190508181036000830152615934816158f8565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061597582614723565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8214156159a8576159a761593b565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60006159ed82614723565b91506159f883614723565b925082821015615a0b57615a0a61593b565b5b828203905092915050565b6000615a2182614723565b9150615a2c83614723565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115615a6157615a6061593b565b5b828201905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000615aa682614723565b9150615ab183614723565b925082615ac157615ac0615a6c565b5b828204905092915050565b6000615ad782614723565b9150615ae283614723565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615615b1b57615b1a61593b565b5b828202905092915050565b600081905092915050565b50565b6000615b41600083615b26565b9150615b4c82615b31565b600082019050919050565b6000615b6282615b34565b9150819050919050565b600081905092915050565b6000615b84600083615b6c565b9150615b8f82615b31565b600082019050919050565b6000615ba582615b77565b9150819050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680615bf657607f821691505b60208210811415615c0a57615c09615baf565b5b50919050565b60008190508160005260206000209050919050565b60008154615c3281615bde565b615c3c8186615b6c565b94506001821660008114615c575760018114615c6857615c9b565b60ff19831686528186019350615c9b565b615c7185615c10565b60005b83811015615c9357815481890152600182019150602081019050615c74565b838801955050505b50505092915050565b6000615cb08284615c25565b915081905092915050565b6000615cc682615119565b615cd08185615b6c565b9350615ce081856020860161508b565b80840191505092915050565b6000615cf88284615cbb565b915081905092915050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000615d5f602683615124565b9150615d6a82615d03565b604082019050919050565b60006020820190508181036000830152615d8e81615d52565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000615dcb602083615124565b9150615dd682615d95565b602082019050919050565b60006020820190508181036000830152615dfa81615dbe565b905091905056fea26469706673582212205d8c29a83489605a7b53bee70bbf98deac382585a28b2e885ee7acc949d9d95164736f6c634300080b0033
Deployed Bytecode
0x60806040526004361061023b5760003560e01c8063758c919c1161012e578063c9bf646d116100ab578063f2d143111161006f578063f2d14311146108e0578063f2fde38b14610925578063f5eb8eef1461094e578063f7b750b91461096a578063f82291cd146109865761023b565b8063c9bf646d146107f8578063cf35bdd014610823578063e47b406e14610863578063eafe7a741461088c578063ed918baa146108b75761023b565b80638ebb4c15116100f25780638ebb4c15146106ec5780639804ad7714610731578063a134680f1461076e578063c47f00271461078a578063c97fddbd146107b35761023b565b8063758c919c146105c45780637b021b6614610601578063827a07e21461064157806382a6d5ca146106845780638da5cb5b146106c15761023b565b806339a708b7116101bc57806357fbeb4e1161018057806357fbeb4e146104ec5780635a2bc22d146105085780635a6df0fe14610545578063702c0a7614610582578063715018a6146105ad5761023b565b806339a708b7146104285780633ccfd60b1461044457806343b5a90c1461045b578063482245cb146104845780634b4e01fa146104c15761023b565b80632111bf39116102035780632111bf391461033e57806325e957211461037b5780632c647cda146103a457806330ae4d76146103c0578063339145a8146103eb5761023b565b806304c9fff11461024057806307fef7411461027d578063171b2bda146102a85780631e8fe65d146102e55780631f1e638214610301575b600080fd5b34801561024c57600080fd5b5061026760048036038101906102629190614759565b6109a2565b60405161027491906147a8565b60405180910390f35b34801561028957600080fd5b506102926109c7565b60405161029f91906147a8565b60405180910390f35b3480156102b457600080fd5b506102cf60048036038101906102ca91906147c3565b6109cd565b6040516102dc91906147a8565b60405180910390f35b6102ff60048036038101906102fa9190614ab2565b6109f2565b005b34801561030d57600080fd5b5061032860048036038101906103239190614c32565b610e2f565b60405161033591906147a8565b60405180910390f35b34801561034a57600080fd5b5061036560048036038101906103609190614759565b610e61565b60405161037291906147a8565b60405180910390f35b34801561038757600080fd5b506103a2600480360381019061039d9190614c85565b610e86565b005b6103be60048036038101906103b99190614cb2565b610e98565b005b3480156103cc57600080fd5b506103d56113b6565b6040516103e291906147a8565b60405180910390f35b3480156103f757600080fd5b50610412600480360381019061040d9190614e6f565b6113bc565b60405161041f91906147a8565b60405180910390f35b610442600480360381019061043d9190614e9c565b6113d4565b005b34801561045057600080fd5b50610459611640565b005b34801561046757600080fd5b50610482600480360381019061047d9190614c85565b6116c8565b005b34801561049057600080fd5b506104ab60048036038101906104a69190614c85565b6116da565b6040516104b89190614f1a565b60405180910390f35b3480156104cd57600080fd5b506104d661170d565b6040516104e391906147a8565b60405180910390f35b61050660048036038101906105019190614f35565b611713565b005b34801561051457600080fd5b5061052f600480360381019061052a9190614c85565b611acb565b60405161053c91906150f7565b60405180910390f35b34801561055157600080fd5b5061056c60048036038101906105679190614c32565b611b6b565b60405161057991906147a8565b60405180910390f35b34801561058e57600080fd5b50610597611b9d565b6040516105a491906147a8565b60405180910390f35b3480156105b957600080fd5b506105c2611ba3565b005b3480156105d057600080fd5b506105eb60048036038101906105e69190614759565b611bb7565b6040516105f891906147a8565b60405180910390f35b34801561060d57600080fd5b5061062860048036038101906106239190614e6f565b611bdc565b604051610638949392919061516e565b60405180910390f35b34801561064d57600080fd5b50610668600480360381019061066391906151ba565b611cb4565b60405161067b9796959493929190615202565b60405180910390f35b34801561069057600080fd5b506106ab60048036038101906106a69190615278565b611dab565b6040516106b891906147a8565b60405180910390f35b3480156106cd57600080fd5b506106d6611dd0565b6040516106e39190614f1a565b60405180910390f35b3480156106f857600080fd5b50610713600480360381019061070e9190614c85565b611df9565b604051610728999897969594939291906152b8565b60405180910390f35b34801561073d57600080fd5b506107586004803603810190610753919061535a565b611fff565b6040516107659190614f1a565b60405180910390f35b610788600480360381019061078391906153a3565b612048565b005b34801561079657600080fd5b506107b160048036038101906107ac919061535a565b612418565b005b3480156107bf57600080fd5b506107da60048036038101906107d591906147c3565b612716565b6040516107ef999897969594939291906152b8565b60405180910390f35b34801561080457600080fd5b5061080d612929565b60405161081a91906147a8565b60405180910390f35b34801561082f57600080fd5b5061084a60048036038101906108459190614c85565b61292f565b60405161085a949392919061516e565b60405180910390f35b34801561086f57600080fd5b5061088a6004803603810190610885919061553a565b612a07565b005b34801561089857600080fd5b506108a1612a64565b6040516108ae91906147a8565b60405180910390f35b3480156108c357600080fd5b506108de60048036038101906108d99190615567565b612a6a565b005b3480156108ec57600080fd5b50610907600480360381019061090291906151ba565b612b31565b60405161091c999897969594939291906152b8565b60405180910390f35b34801561093157600080fd5b5061094c600480360381019061094791906151ba565b612d37565b005b610968600480360381019061096391906155a7565b612dbb565b005b610984600480360381019061097f9190615712565b6130f2565b005b6109a0600480360381019061099b91906157a9565b613608565b005b6013602052816000526040600020602052806000526040600020600091509150505481565b60055481565b600e602052816000526040600020602052806000526040600020600091509150505481565b610a028b84848c6000801b6130f2565b88600154118015610a1557506040865111155b8015610a36575087600760008b815260200190815260200160002060010154115b610a75576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a6c9061591b565b60405180910390fd5b60036000815480929190610a889061596a565b9190505550600354600f60008b815260200190815260200160002060008a81526020019081526020016000206000600960008d815260200190815260200160002060008c81526020019081526020016000206005015481526020019081526020016000208190555060005b8a51811015610c0f573373ffffffffffffffffffffffffffffffffffffffff16600c60008d8481518110610b2a57610b296159b3565b5b6020026020010151815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610bb7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bae9061591b565b60405180910390fd5b8a8181518110610bca57610bc96159b3565b5b6020026020010151600e600060035481526020019081526020016000206000838152602001908152602001600020819055508080610c079061596a565b915050610af3565b600082511480610c20575060308251145b610c5f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c569061591b565b60405180910390fd5b6001600254610c6e91906159e2565b600e60006003548152602001908152602001600020600083815260200190815260200160002081905550604051806101200160405280898152602001600183610cb79190615a16565b8152602001888152602001878152602001868152602001600081526020013373ffffffffffffffffffffffffffffffffffffffff16815260200142815260200183815250600d6000600354815260200190815260200160002060008201518160000155602082015181600101556040820151816002019080519060200190610d40929190614588565b50606082015181600301556080820151816004019080519060200190610d67929190614588565b5060a0820151816005015560c08201518160060160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060e08201518160070155610100820151816008019080519060200190610de092919061460e565b50905050600960008b815260200190815260200160002060008a81526020019081526020016000206005016000815480929190610e1c9061596a565b9190505550505050505050505050505050565b600a60205282600052604060002060205281600052604060002060205280600052604060002060009250925050505481565b6017602052816000526040600020602052806000526040600020600091509150505481565b610e8e613934565b8060058190555050565b610eaf8a8484661fffffffffffff6000801b6130f2565b60005b8851811015610fa9573373ffffffffffffffffffffffffffffffffffffffff16600c60008b8481518110610ee957610ee86159b3565b5b6020026020010151815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610f4057600080fd5b888181518110610f5357610f526159b3565b5b6020026020010151600a6000600154815260200190815260200160002060008081526020019081526020016000206000838152602001908152602001600020819055508080610fa19061596a565b915050610eb2565b60408a5111158015610fbc575060008a51115b8015610fcb5750610200875111155b610fd457600080fd5b6001600254610fe391906159e2565b600a60006001548152602001908152602001600020600080815260200190815260200160002060008381526020019081526020016000208190555060405180610120016040528089815260200160018361103d9190615a16565b8152602001888152602001878152602001868152602001600081526020013373ffffffffffffffffffffffffffffffffffffffff168152602001428152602001838152506009600060015481526020019081526020016000206000808152602001908152602001600020600082015181600001556020820151816001015560408201518160020190805190602001906110d7929190614588565b506060820151816003015560808201518160040190805190602001906110fe929190614588565b5060a0820151816005015560c08201518160060160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060e0820151816007015561010082015181600801908051906020019061117792919061460e565b5090505060405180608001604052806001548152602001600181526020013373ffffffffffffffffffffffffffffffffffffffff1681526020018b815250600760006001548152602001908152602001600020600082015181600001556020820151816001015560408201518160020160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506060820151816003019080519060200190611241929190614588565b50905050600154601260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000601160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000154815260200190815260200160002081905550600160008154809291906112f19061596a565b9190505550601160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160008154809291906113499061596a565b91905055503373ffffffffffffffffffffffffffffffffffffffff167f6091af96b5a1189f472200ac993a62a165ae1f16c9169dc5d54b2d67262d0c146001805461139491906159e2565b6040516113a191906147a8565b60405180910390a25050505050505050505050565b60065481565b60146020528060005260406000206000915090505481565b60006064605f62060832614e20602088516113ef9190615a9b565b6113f99190615acc565b600c88516114079190615acc565b6114119190615a16565b61141b9190615a16565b3a6114269190615acc565b6114309190615acc565b61143a9190615a9b565b90508034101561144957600080fd5b6000600a346114589190615a9b565b90506114658185856139b2565b600061146f611dd0565b73ffffffffffffffffffffffffffffffffffffffff168260056114929190615acc565b3461149d91906159e2565b6040516114a990615b57565b60006040518083038185875af1925050503d80600081146114e6576040519150601f19603f3d011682016040523d82523d6000602084013e6114eb565b606091505b50509050806114f957600080fd5b60008680519060200120905060405160200161151490615b9a565b60405160208183030381529060405280519060200120600860008381526020019081526020016000206003016040516020016115509190615ca4565b604051602081830303815290604052805190602001201461157057600080fd5b604051806080016040528060008152602001600081526020013373ffffffffffffffffffffffffffffffffffffffff1681526020018881525060086000838152602001908152602001600020600082015181600001556020820151816001015560408201518160020160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506060820151816003019080519060200190611633929190614588565b5090505050505050505050565b611648613934565b6000611652611dd0565b73ffffffffffffffffffffffffffffffffffffffff164760405161167590615b57565b60006040518083038185875af1925050503d80600081146116b2576040519150601f19603f3d011682016040523d82523d6000602084013e6116b7565b606091505b50509050806116c557600080fd5b50565b6116d0613934565b8060068190555050565b600c6020528060005260406000206000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60025481565b61172a898383661fffffffffffff6000801b6130f2565b6003600081548092919061173d9061596a565b9190505550600354601360008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000601160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600101548152602001908152602001600020819055506040855111156117ea57600080fd5b60005b88518110156118d3573373ffffffffffffffffffffffffffffffffffffffff16600c60008b8481518110611824576118236159b3565b5b6020026020010151815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461187b57600080fd5b88818151811061188e5761188d6159b3565b5b6020026020010151600e6000600354815260200190815260200160002060008381526020019081526020016000208190555080806118cb9061596a565b9150506117ed565b60016002546118e291906159e2565b600e6000600354815260200190815260200160002060008381526020019081526020016000208190555060405180610120016040528088815260200160018361192b9190615a16565b8152602001878152602001868152602001858152602001600081526020013373ffffffffffffffffffffffffffffffffffffffff16815260200142815260200160405180602001604052806000815250815250600d60006003548152602001908152602001600020600082015181600001556020820151816001015560408201518160020190805190602001906119c3929190614588565b506060820151816003015560808201518160040190805190602001906119ea929190614588565b5060a0820151816005015560c08201518160060160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060e08201518160070155610100820151816008019080519060200190611a6392919061460e565b50905050601160008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206001016000815480929190611aba9061596a565b919050555050505050505050505050565b600b6020528060005260406000206000915090508054611aea90615bde565b80601f0160208091040260200160405190810160405280929190818152602001828054611b1690615bde565b8015611b635780601f10611b3857610100808354040283529160200191611b63565b820191906000526020600020905b815481529060010190602001808311611b4657829003601f168201915b505050505081565b600f60205282600052604060002060205281600052604060002060205280600052604060002060009250925050505481565b60045481565b611bab613934565b611bb560006144bc565b565b6012602052816000526040600020602052806000526040600020600091509150505481565b60086020528060005260406000206000915090508060000154908060010154908060020160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690806003018054611c3190615bde565b80601f0160208091040260200160405190810160405280929190818152602001828054611c5d90615bde565b8015611caa5780601f10611c7f57610100808354040283529160200191611caa565b820191906000526020600020905b815481529060010190602001808311611c8d57829003601f168201915b5050505050905084565b6011602052806000526040600020600091509050806000015490806001015490806002018054611ce390615bde565b80601f0160208091040260200160405190810160405280929190818152602001828054611d0f90615bde565b8015611d5c5780601f10611d3157610100808354040283529160200191611d5c565b820191906000526020600020905b815481529060010190602001808311611d3f57829003601f168201915b5050505050908060030154908060040154908060050160009054906101000a900460ff16908060050160019054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905087565b6015602052816000526040600020602052806000526040600020600091509150505481565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600d602052806000526040600020600091509050806000015490806001015490806002018054611e2890615bde565b80601f0160208091040260200160405190810160405280929190818152602001828054611e5490615bde565b8015611ea15780601f10611e7657610100808354040283529160200191611ea1565b820191906000526020600020905b815481529060010190602001808311611e8457829003601f168201915b505050505090806003015490806004018054611ebc90615bde565b80601f0160208091040260200160405190810160405280929190818152602001828054611ee890615bde565b8015611f355780601f10611f0a57610100808354040283529160200191611f35565b820191906000526020600020905b815481529060010190602001808311611f1857829003601f168201915b5050505050908060050154908060060160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690806007015490806008018054611f7c90615bde565b80601f0160208091040260200160405190810160405280929190818152602001828054611fa890615bde565b8015611ff55780601f10611fca57610100808354040283529160200191611ff5565b820191906000526020600020905b815481529060010190602001808311611fd857829003601f168201915b5050505050905089565b6010818051602081018201805184825260208301602085012081835280955050505050506000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b61205f8a8484661fffffffffffff6000801b6130f2565b8760015411801561207257506040865111155b80156120df57506007600089815260200190815260200160002060020160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b6120e857600080fd5b60005b89518110156121f6573373ffffffffffffffffffffffffffffffffffffffff16600c60008c8481518110612122576121216159b3565b5b6020026020010151815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461217957600080fd5b89818151811061218c5761218b6159b3565b5b6020026020010151600a60008b81526020019081526020016000206000600760008d815260200190815260200160002060010154815260200190815260200160002060008381526020019081526020016000208190555080806121ee9061596a565b9150506120eb565b600082511480612207575060308251145b61221057600080fd5b600160025461221f91906159e2565b600a60008b81526020019081526020016000206000600760008d815260200190815260200160002060010154815260200190815260200160002060008381526020019081526020016000208190555060405180610120016040528089815260200160018361228d9190615a16565b8152602001888152602001878152602001868152602001600081526020013373ffffffffffffffffffffffffffffffffffffffff16815260200142815260200183815250600960008b81526020019081526020016000206000600760008d81526020019081526020016000206001015481526020019081526020016000206000820151816000015560208201518160010155604082015181600201908051906020019061233b929190614588565b50606082015181600301556080820151816004019080519060200190612362929190614588565b5060a0820151816005015560c08201518160060160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060e082015181600701556101008201518160080190805190602001906123db92919061460e565b50905050600760008a815260200190815260200160002060010160008154809291906124069061596a565b91905055505050505050505050505050565b6002815111801561242a575060218151105b80156124a05750600073ffffffffffffffffffffffffffffffffffffffff166010826040516124599190615cec565b908152602001604051809103902060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16145b80156124fa57506000601160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060020180546124f690615bde565b9050145b61250357600080fd5b60005b815181101561265e57602d60f81b828281518110612527576125266159b3565b5b602001015160f81c60f81b7effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916101580156125a55750603960f81b828281518110612575576125746159b3565b5b602001015160f81c60f81b7effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191611155b806126425750606160f81b8282815181106125c3576125c26159b3565b5b602001015160f81c60f81b7effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916101580156126415750607a60f81b828281518110612611576126106159b3565b5b602001015160f81c60f81b7effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191611155b5b61264b57600080fd5b80806126569061596a565b915050612506565b81601160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060020190805190602001906126b4929190614588565b50336010836040516126c69190615cec565b908152602001604051809103902060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050565b60096020528160005260406000206020528060005260406000206000915091505080600001549080600101549080600201805461275290615bde565b80601f016020809104026020016040519081016040528092919081815260200182805461277e90615bde565b80156127cb5780601f106127a0576101008083540402835291602001916127cb565b820191906000526020600020905b8154815290600101906020018083116127ae57829003601f168201915b5050505050908060030154908060040180546127e690615bde565b80601f016020809104026020016040519081016040528092919081815260200182805461281290615bde565b801561285f5780601f106128345761010080835404028352916020019161285f565b820191906000526020600020905b81548152906001019060200180831161284257829003601f168201915b5050505050908060050154908060060160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16908060070154908060080180546128a690615bde565b80601f01602080910402602001604051908101604052809291908181526020018280546128d290615bde565b801561291f5780601f106128f45761010080835404028352916020019161291f565b820191906000526020600020905b81548152906001019060200180831161290257829003601f168201915b5050505050905089565b60035481565b60076020528060005260406000206000915090508060000154908060010154908060020160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169080600301805461298490615bde565b80601f01602080910402602001604051908101604052809291908181526020018280546129b090615bde565b80156129fd5780601f106129d2576101008083540402835291602001916129fd565b820191906000526020600020905b8154815290600101906020018083116129e057829003601f168201915b5050505050905084565b80601160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060050160006101000a81548160ff02191690831515021790555050565b60015481565b6008600082815260200190815260200160002060020160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614612ad857600080fd5b816008600083815260200190815260200160002060020160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050565b6016602052806000526040600020600091509050806000015490806001015490806002018054612b6090615bde565b80601f0160208091040260200160405190810160405280929190818152602001828054612b8c90615bde565b8015612bd95780601f10612bae57610100808354040283529160200191612bd9565b820191906000526020600020905b815481529060010190602001808311612bbc57829003601f168201915b505050505090806003015490806004018054612bf490615bde565b80601f0160208091040260200160405190810160405280929190818152602001828054612c2090615bde565b8015612c6d5780601f10612c4257610100808354040283529160200191612c6d565b820191906000526020600020905b815481529060010190602001808311612c5057829003601f168201915b5050505050908060050154908060060160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690806007015490806008018054612cb490615bde565b80601f0160208091040260200160405190810160405280929190818152602001828054612ce090615bde565b8015612d2d5780601f10612d0257610100808354040283529160200191612d2d565b820191906000526020600020905b815481529060010190602001808311612d1057829003601f168201915b5050505050905089565b612d3f613934565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415612daf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612da690615d75565b60405180910390fd5b612db8816144bc565b50565b612dcf8a8484661fffffffffffff8c6130f2565b60036000815480929190612de29061596a565b9190505550600354601560008a81526020019081526020016000206000601460008c815260200190815260200160002054815260200190815260200160002081905550604086511115612e3457600080fd5b60005b8951811015612f1d573373ffffffffffffffffffffffffffffffffffffffff16600c60008c8481518110612e6e57612e6d6159b3565b5b6020026020010151815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612ec557600080fd5b898181518110612ed857612ed76159b3565b5b6020026020010151600e600060035481526020019081526020016000206000838152602001908152602001600020819055508080612f159061596a565b915050612e37565b600082511480612f2e575060308251145b612f3757600080fd5b6001600254612f4691906159e2565b600e60006003548152602001908152602001600020600083815260200190815260200160002081905550604051806101200160405280898152602001600183612f8f9190615a16565b8152602001888152602001878152602001868152602001600081526020013373ffffffffffffffffffffffffffffffffffffffff16815260200142815260200183815250600d6000600354815260200190815260200160002060008201518160000155602082015181600101556040820151816002019080519060200190613018929190614588565b5060608201518160030155608082015181600401908051906020019061303f929190614588565b5060a0820151816005015560c08201518160060160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060e082015181600701556101008201518160080190805190602001906130b892919061460e565b50905050601460008a815260200190815260200160002060008154809291906130e09061596a565b91905055505050505050505050505050565b60006064605f62060832614e2060208a5161310d9190615a9b565b6131179190615acc565b600c8a516131259190615acc565b61312f9190615a16565b6131399190615a16565b3a6131449190615acc565b61314e9190615acc565b6131589190615a9b565b90508034101561316757600080fd5b6000600a346131769190615a9b565b90506131838187876139b2565b60008060001b841461326b574262278d00601160006008600089815260200190815260200160002060020160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600301546132179190615a16565b101561322c57613225611dd0565b9050613266565b6008600085815260200190815260200160002060020160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690505b613354565b661fffffffffffff85148061330557504262278d0060116000600760008a815260200190815260200160002060020160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600301546133039190615a16565b105b1561331957613312611dd0565b9050613353565b6007600086815260200190815260200160002060020160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690505b5b60008173ffffffffffffffffffffffffffffffffffffffff1683600461337a9190615acc565b60405161338690615b57565b60006040518083038185875af1925050503d80600081146133c3576040519150601f19603f3d011682016040523d82523d6000602084013e6133c8565b606091505b505090508260046133d99190615acc565b601160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600401546134269190615a16565b601160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600401819055508061347657600080fd5b6000613480611dd0565b73ffffffffffffffffffffffffffffffffffffffff168460096134a39190615acc565b346134ae91906159e2565b6040516134ba90615b57565b60006040518083038185875af1925050503d80600081146134f7576040519150601f19603f3d011682016040523d82523d6000602084013e6134fc565b606091505b505090508061350a57600080fd5b89600b60006002548152602001908152602001600020908051906020019061353392919061460e565b5033600c6000600254815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506002600081548092919061359b9061596a565b91905055503373ffffffffffffffffffffffffffffffffffffffff167fc8790f4cdb5351a4294e55116e9d037284669b45b7b318e72983f5376648226060016002546135e791906159e2565b6040516135f491906147a8565b60405180910390a250505050505050505050565b61361f888383661fffffffffffff6000801b6130f2565b60408551111561362e57600080fd5b60005b8751811015613741573373ffffffffffffffffffffffffffffffffffffffff16600c60008a8481518110613668576136676159b3565b5b6020026020010151815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146136bf57600080fd5b8781815181106136d2576136d16159b3565b5b6020026020010151601760003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008381526020019081526020016000208190555080806137399061596a565b915050613631565b600160025461375091906159e2565b601760003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000838152602001908152602001600020819055506040518061012001604052808881526020016001836137c39190615a16565b8152602001878152602001868152602001858152602001600081526020013373ffffffffffffffffffffffffffffffffffffffff16815260200142815260200160405180602001604052806000815250815250601660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008201518160000155602082015181600101556040820151816002019080519060200190613885929190614588565b506060820151816003015560808201518160040190805190602001906138ac929190614588565b5060a0820151816005015560c08201518160060160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060e0820151816007015561010082015181600801908051906020019061392592919061460e565b50905050505050505050505050565b61393c614580565b73ffffffffffffffffffffffffffffffffffffffff1661395a611dd0565b73ffffffffffffffffffffffffffffffffffffffff16146139b0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016139a790615de1565b60405180910390fd5b565b60008073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161480613a1957503373ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16145b80613a7357504262278d00601160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060030154613a719190615a16565b105b15613a8757613a80611dd0565b9050613a8b565b8290505b60008073ffffffffffffffffffffffffffffffffffffffff16601160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060050160019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415613c66573373ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614613bdc5782601160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060050160016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550613c65565b613be4611dd0565b601160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060050160016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b5b4262278d0060116000601160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060050160019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060030154613d1a9190615a16565b1015613d2f57613d28611dd0565b9050613d95565b601160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060050160019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690505b60008073ffffffffffffffffffffffffffffffffffffffff1660116000601160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060050160019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060050160019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161480613f84575060116000601160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060050160019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060050160019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b8061404057504262278d0060116000601160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060050160019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206003015461403e9190615a16565b105b156140545761404d611dd0565b905061411c565b60116000601160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060050160019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060050160019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690505b60008373ffffffffffffffffffffffffffffffffffffffff168760026141429190615acc565b60405161414e90615b57565b60006040518083038185875af1925050503d806000811461418b576040519150601f19603f3d011682016040523d82523d6000602084013e614190565b606091505b505090508660026141a19190615acc565b601160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600401546141ee9190615a16565b601160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600401819055508061423e57600080fd5b60008373ffffffffffffffffffffffffffffffffffffffff168860026142649190615acc565b60405161427090615b57565b60006040518083038185875af1925050503d80600081146142ad576040519150601f19603f3d011682016040523d82523d6000602084013e6142b2565b606091505b505090508760026142c39190615acc565b601160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600401546143109190615a16565b601160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600401819055508061436057600080fd5b60008373ffffffffffffffffffffffffffffffffffffffff168960405161438690615b57565b60006040518083038185875af1925050503d80600081146143c3576040519150601f19603f3d011682016040523d82523d6000602084013e6143c8565b606091505b5050905088601160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206004015461441a9190615a16565b601160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600401819055508061446a57600080fd5b42601160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060030181905550505050505050505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600033905090565b82805461459490615bde565b90600052602060002090601f0160209004810192826145b657600085556145fd565b82601f106145cf57805160ff19168380011785556145fd565b828001600101855582156145fd579182015b828111156145fc5782518255916020019190600101906145e1565b5b50905061460a9190614694565b5090565b82805461461a90615bde565b90600052602060002090601f01602090048101928261463c5760008555614683565b82601f1061465557805160ff1916838001178555614683565b82800160010185558215614683579182015b82811115614682578251825591602001919060010190614667565b5b5090506146909190614694565b5090565b5b808211156146ad576000816000905550600101614695565b5090565b6000604051905090565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006146f0826146c5565b9050919050565b614700816146e5565b811461470b57600080fd5b50565b60008135905061471d816146f7565b92915050565b6000819050919050565b61473681614723565b811461474157600080fd5b50565b6000813590506147538161472d565b92915050565b600080604083850312156147705761476f6146bb565b5b600061477e8582860161470e565b925050602061478f85828601614744565b9150509250929050565b6147a281614723565b82525050565b60006020820190506147bd6000830184614799565b92915050565b600080604083850312156147da576147d96146bb565b5b60006147e885828601614744565b92505060206147f985828601614744565b9150509250929050565b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6148568261480d565b810181811067ffffffffffffffff821117156148755761487461481e565b5b80604052505050565b60006148886146b1565b9050614894828261484d565b919050565b600067ffffffffffffffff8211156148b4576148b361481e565b5b6148bd8261480d565b9050602081019050919050565b82818337600083830152505050565b60006148ec6148e784614899565b61487e565b90508281526020810184848401111561490857614907614808565b5b6149138482856148ca565b509392505050565b600082601f8301126149305761492f614803565b5b81356149408482602086016148d9565b91505092915050565b600067ffffffffffffffff8211156149645761496361481e565b5b602082029050602081019050919050565b600080fd5b600061498d61498884614949565b61487e565b905080838252602082019050602084028301858111156149b0576149af614975565b5b835b818110156149d957806149c58882614744565b8452602084019350506020810190506149b2565b5050509392505050565b600082601f8301126149f8576149f7614803565b5b8135614a0884826020860161497a565b91505092915050565b600067ffffffffffffffff821115614a2c57614a2b61481e565b5b614a358261480d565b9050602081019050919050565b6000614a55614a5084614a11565b61487e565b905082815260208101848484011115614a7157614a70614808565b5b614a7c8482856148ca565b509392505050565b600082601f830112614a9957614a98614803565b5b8135614aa9848260208601614a42565b91505092915050565b60008060008060008060008060008060006101608c8e031215614ad857614ad76146bb565b5b60008c013567ffffffffffffffff811115614af657614af56146c0565b5b614b028e828f0161491b565b9b505060208c013567ffffffffffffffff811115614b2357614b226146c0565b5b614b2f8e828f016149e3565b9a50506040614b408e828f01614744565b9950506060614b518e828f01614744565b9850506080614b628e828f01614744565b97505060a08c013567ffffffffffffffff811115614b8357614b826146c0565b5b614b8f8e828f01614a84565b96505060c0614ba08e828f01614744565b95505060e08c013567ffffffffffffffff811115614bc157614bc06146c0565b5b614bcd8e828f01614a84565b945050610100614bdf8e828f0161470e565b935050610120614bf18e828f0161470e565b9250506101408c013567ffffffffffffffff811115614c1357614c126146c0565b5b614c1f8e828f0161491b565b9150509295989b509295989b9093969950565b600080600060608486031215614c4b57614c4a6146bb565b5b6000614c5986828701614744565b9350506020614c6a86828701614744565b9250506040614c7b86828701614744565b9150509250925092565b600060208284031215614c9b57614c9a6146bb565b5b6000614ca984828501614744565b91505092915050565b6000806000806000806000806000806101408b8d031215614cd657614cd56146bb565b5b60008b013567ffffffffffffffff811115614cf457614cf36146c0565b5b614d008d828e0161491b565b9a505060208b013567ffffffffffffffff811115614d2157614d206146c0565b5b614d2d8d828e01614a84565b99505060408b013567ffffffffffffffff811115614d4e57614d4d6146c0565b5b614d5a8d828e016149e3565b9850506060614d6b8d828e01614744565b97505060808b013567ffffffffffffffff811115614d8c57614d8b6146c0565b5b614d988d828e01614a84565b96505060a0614da98d828e01614744565b95505060c08b013567ffffffffffffffff811115614dca57614dc96146c0565b5b614dd68d828e01614a84565b94505060e0614de78d828e0161470e565b935050610100614df98d828e0161470e565b9250506101208b013567ffffffffffffffff811115614e1b57614e1a6146c0565b5b614e278d828e0161491b565b9150509295989b9194979a5092959850565b6000819050919050565b614e4c81614e39565b8114614e5757600080fd5b50565b600081359050614e6981614e43565b92915050565b600060208284031215614e8557614e846146bb565b5b6000614e9384828501614e5a565b91505092915050565b600080600060608486031215614eb557614eb46146bb565b5b600084013567ffffffffffffffff811115614ed357614ed26146c0565b5b614edf86828701614a84565b9350506020614ef08682870161470e565b9250506040614f018682870161470e565b9150509250925092565b614f14816146e5565b82525050565b6000602082019050614f2f6000830184614f0b565b92915050565b60008060008060008060008060006101208a8c031215614f5857614f576146bb565b5b60008a013567ffffffffffffffff811115614f7657614f756146c0565b5b614f828c828d0161491b565b99505060208a013567ffffffffffffffff811115614fa357614fa26146c0565b5b614faf8c828d016149e3565b9850506040614fc08c828d0161470e565b9750506060614fd18c828d01614744565b96505060808a013567ffffffffffffffff811115614ff257614ff16146c0565b5b614ffe8c828d01614a84565b95505060a061500f8c828d01614744565b94505060c08a013567ffffffffffffffff8111156150305761502f6146c0565b5b61503c8c828d01614a84565b93505060e061504d8c828d0161470e565b92505061010061505f8c828d0161470e565b9150509295985092959850929598565b600081519050919050565b600082825260208201905092915050565b60005b838110156150a957808201518184015260208101905061508e565b838111156150b8576000848401525b50505050565b60006150c98261506f565b6150d3818561507a565b93506150e381856020860161508b565b6150ec8161480d565b840191505092915050565b6000602082019050818103600083015261511181846150be565b905092915050565b600081519050919050565b600082825260208201905092915050565b600061514082615119565b61514a8185615124565b935061515a81856020860161508b565b6151638161480d565b840191505092915050565b60006080820190506151836000830187614799565b6151906020830186614799565b61519d6040830185614f0b565b81810360608301526151af8184615135565b905095945050505050565b6000602082840312156151d0576151cf6146bb565b5b60006151de8482850161470e565b91505092915050565b60008115159050919050565b6151fc816151e7565b82525050565b600060e082019050615217600083018a614799565b6152246020830189614799565b81810360408301526152368188615135565b90506152456060830187614799565b6152526080830186614799565b61525f60a08301856151f3565b61526c60c0830184614f0b565b98975050505050505050565b6000806040838503121561528f5761528e6146bb565b5b600061529d85828601614e5a565b92505060206152ae85828601614744565b9150509250929050565b6000610120820190506152ce600083018c614799565b6152db602083018b614799565b81810360408301526152ed818a615135565b90506152fc6060830189614799565b818103608083015261530e8188615135565b905061531d60a0830187614799565b61532a60c0830186614f0b565b61533760e0830185614799565b81810361010083015261534a81846150be565b90509a9950505050505050505050565b6000602082840312156153705761536f6146bb565b5b600082013567ffffffffffffffff81111561538e5761538d6146c0565b5b61539a84828501614a84565b91505092915050565b6000806000806000806000806000806101408b8d0312156153c7576153c66146bb565b5b60008b013567ffffffffffffffff8111156153e5576153e46146c0565b5b6153f18d828e0161491b565b9a505060208b013567ffffffffffffffff811115615412576154116146c0565b5b61541e8d828e016149e3565b995050604061542f8d828e01614744565b98505060606154408d828e01614744565b97505060808b013567ffffffffffffffff811115615461576154606146c0565b5b61546d8d828e01614a84565b96505060a061547e8d828e01614744565b95505060c08b013567ffffffffffffffff81111561549f5761549e6146c0565b5b6154ab8d828e01614a84565b94505060e06154bc8d828e0161470e565b9350506101006154ce8d828e0161470e565b9250506101208b013567ffffffffffffffff8111156154f0576154ef6146c0565b5b6154fc8d828e0161491b565b9150509295989b9194979a5092959850565b615517816151e7565b811461552257600080fd5b50565b6000813590506155348161550e565b92915050565b6000602082840312156155505761554f6146bb565b5b600061555e84828501615525565b91505092915050565b6000806040838503121561557e5761557d6146bb565b5b600061558c8582860161470e565b925050602061559d85828601614e5a565b9150509250929050565b6000806000806000806000806000806101408b8d0312156155cb576155ca6146bb565b5b60008b013567ffffffffffffffff8111156155e9576155e86146c0565b5b6155f58d828e0161491b565b9a505060208b013567ffffffffffffffff811115615616576156156146c0565b5b6156228d828e016149e3565b99505060406156338d828e01614e5a565b98505060606156448d828e01614744565b97505060808b013567ffffffffffffffff811115615665576156646146c0565b5b6156718d828e01614a84565b96505060a06156828d828e01614744565b95505060c08b013567ffffffffffffffff8111156156a3576156a26146c0565b5b6156af8d828e01614a84565b94505060e06156c08d828e0161470e565b9350506101006156d28d828e0161470e565b9250506101208b013567ffffffffffffffff8111156156f4576156f36146c0565b5b6157008d828e0161491b565b9150509295989b9194979a5092959850565b600080600080600060a0868803121561572e5761572d6146bb565b5b600086013567ffffffffffffffff81111561574c5761574b6146c0565b5b6157588882890161491b565b95505060206157698882890161470e565b945050604061577a8882890161470e565b935050606061578b88828901614744565b925050608061579c88828901614e5a565b9150509295509295909350565b600080600080600080600080610100898b0312156157ca576157c96146bb565b5b600089013567ffffffffffffffff8111156157e8576157e76146c0565b5b6157f48b828c0161491b565b985050602089013567ffffffffffffffff811115615815576158146146c0565b5b6158218b828c016149e3565b97505060406158328b828c01614744565b965050606089013567ffffffffffffffff811115615853576158526146c0565b5b61585f8b828c01614a84565b95505060806158708b828c01614744565b94505060a089013567ffffffffffffffff811115615891576158906146c0565b5b61589d8b828c01614a84565b93505060c06158ae8b828c0161470e565b92505060e06158bf8b828c0161470e565b9150509295985092959890939650565b7f4572726f72210000000000000000000000000000000000000000000000000000600082015250565b6000615905600683615124565b9150615910826158cf565b602082019050919050565b60006020820190508181036000830152615934816158f8565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061597582614723565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8214156159a8576159a761593b565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60006159ed82614723565b91506159f883614723565b925082821015615a0b57615a0a61593b565b5b828203905092915050565b6000615a2182614723565b9150615a2c83614723565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115615a6157615a6061593b565b5b828201905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000615aa682614723565b9150615ab183614723565b925082615ac157615ac0615a6c565b5b828204905092915050565b6000615ad782614723565b9150615ae283614723565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615615b1b57615b1a61593b565b5b828202905092915050565b600081905092915050565b50565b6000615b41600083615b26565b9150615b4c82615b31565b600082019050919050565b6000615b6282615b34565b9150819050919050565b600081905092915050565b6000615b84600083615b6c565b9150615b8f82615b31565b600082019050919050565b6000615ba582615b77565b9150819050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680615bf657607f821691505b60208210811415615c0a57615c09615baf565b5b50919050565b60008190508160005260206000209050919050565b60008154615c3281615bde565b615c3c8186615b6c565b94506001821660008114615c575760018114615c6857615c9b565b60ff19831686528186019350615c9b565b615c7185615c10565b60005b83811015615c9357815481890152600182019150602081019050615c74565b838801955050505b50505092915050565b6000615cb08284615c25565b915081905092915050565b6000615cc682615119565b615cd08185615b6c565b9350615ce081856020860161508b565b80840191505092915050565b6000615cf88284615cbb565b915081905092915050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000615d5f602683615124565b9150615d6a82615d03565b604082019050919050565b60006020820190508181036000830152615d8e81615d52565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000615dcb602083615124565b9150615dd682615d95565b602082019050919050565b60006020820190508181036000830152615dfa81615dbe565b905091905056fea26469706673582212205d8c29a83489605a7b53bee70bbf98deac382585a28b2e885ee7acc949d9d95164736f6c634300080b0033
Deployed Bytecode Sourcemap
3817:14239:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5368:76;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4526:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4999:74;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8858:1204;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4764:84;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5675:79;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15651:102;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5899:1197;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4562:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5449:67;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7102:683;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15508:137;;;;;;;;;;;;;:::i;:::-;;15761:100;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4898:47;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4427:26;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11162:1026;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4853:40;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5078:86;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4491:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2940:103;;;;;;;;;;;;;:::i;:::-;;5289:74;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4642:48;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;5227:57;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;;;;;;:::i;:::-;;;;;;;;5521:82;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2299:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4950:44;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;5169:53;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7791:1061;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;14589:586;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4695:64;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;4458:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4597:40;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;15181:131;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4397:25;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15318:184;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5608:62;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;3198:201;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;10068:1088;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;13037:1546;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12194:837;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5368:76;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;4526:31::-;;;;:::o;4999:74::-;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;8858:1204::-;9147:121;9156:6;9164:12;9178:16;9196:3;9201:66;9147:121;;:8;:121::i;:::-;9296:3;9283:10;;:16;:45;;;;;9326:2;9309:5;9303:19;:25;;9283:45;:87;;;;;9360:10;9332:6;:11;9339:3;9332:11;;;;;;;;;;;:25;;;:38;9283:87;9275:106;;;;;;;;;;;;:::i;:::-;;;;;;;;;9388:13;;:15;;;;;;;;;:::i;:::-;;;;;;9483:13;;9410:10;:15;9421:3;9410:15;;;;;;;;;;;:27;9426:10;9410:27;;;;;;;;;;;:70;9438:8;:13;9447:3;9438:13;;;;;;;;;;;:25;9452:10;9438:25;;;;;;;;;;;:41;;;9410:70;;;;;;;;;;;:86;;;;9503:6;9520:206;9531:19;:26;9527:1;:30;9520:206;;;9615:10;9576:49;;:11;:35;9588:19;9608:1;9588:22;;;;;;;;:::i;:::-;;;;;;;;9576:35;;;;;;;;;;;;;;;;;;;;;:49;;;9568:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;9684:19;9704:1;9684:22;;;;;;;;:::i;:::-;;;;;;;;9645:18;:33;9664:13;;9645:33;;;;;;;;;;;:36;9679:1;9645:36;;;;;;;;;;;:61;;;;9715:3;;;;;:::i;:::-;;;;9520:206;;;9769:1;9746:11;9740:25;:30;:65;;;;9803:2;9780:11;9774:25;:31;9740:65;9732:84;;;;;;;;;;;;:::i;:::-;;;;;;;;;9876:1;9862:11;;:15;;;;:::i;:::-;9823:18;:33;9842:13;;9823:33;;;;;;;;;;;:36;9857:1;9823:36;;;;;;;;;;;:54;;;;9910:96;;;;;;;;9918:10;9910:96;;;;9934:1;9930;:5;;;;:::i;:::-;9910:96;;;;9937:5;9910:96;;;;9944:5;9910:96;;;;9951:9;9910:96;;;;9962:1;9910:96;;;;9965:10;9910:96;;;;;;9977:15;9910:96;;;;9994:11;9910:96;;;9884:8;:23;9893:13;;9884:23;;;;;;;;;;;:122;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;10013:8;:13;10022:3;10013:13;;;;;;;;;;;:25;10027:10;10013:25;;;;;;;;;;;:41;;;:43;;;;;;;;;:::i;:::-;;;;;;9140:922;8858:1204;;;;;;;;;;;:::o;4764:84::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;5675:79::-;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;15651:102::-;2185:13;:11;:13::i;:::-;15740:7:::1;15721:16;:26;;;;15651:102:::0;:::o;5899:1197::-;6175:134;6184:6;6192:12;6206:16;6224;6242:66;6175:134;;:8;:134::i;:::-;6316:6;6333:186;6344:19;:26;6340:1;:30;6333:186;;;6428:10;6389:49;;:11;:35;6401:19;6421:1;6401:22;;;;;;;;:::i;:::-;;;;;;;;6389:35;;;;;;;;;;;;;;;;;;;;;:49;;;6381:58;;;;;;6477:19;6497:1;6477:22;;;;;;;;:::i;:::-;;;;;;;;6448:8;:20;6457:10;;6448:20;;;;;;;;;;;:23;6469:1;6448:23;;;;;;;;;;;:26;6472:1;6448:26;;;;;;;;;;;:51;;;;6508:3;;;;;:::i;:::-;;;;6333:186;;;6557:2;6539:6;6533:20;:26;;:54;;;;;6586:1;6569:6;6563:20;:24;6533:54;:84;;;;;6614:3;6597:5;6591:19;:26;;6533:84;6525:93;;;;;;6668:1;6654:11;;:15;;;;:::i;:::-;6625:8;:20;6634:10;;6625:20;;;;;;;;;;;:23;6646:1;6625:23;;;;;;;;;;;:26;6649:1;6625:26;;;;;;;;;;;:44;;;;6702:96;;;;;;;;6710:10;6702:96;;;;6726:1;6722;:5;;;;:::i;:::-;6702:96;;;;6729:5;6702:96;;;;6736:5;6702:96;;;;6743:9;6702:96;;;;6754:1;6702:96;;;;6757:10;6702:96;;;;;;6769:15;6702:96;;;;6786:11;6702:96;;;6676:8;:20;6685:10;;6676:20;;;;;;;;;;;:23;6697:1;6676:23;;;;;;;;;;;:122;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;6826:40;;;;;;;;6832:10;;6826:40;;;;6844:1;6826:40;;;;6847:10;6826:40;;;;;;6859:6;6826:40;;;6805:6;:18;6812:10;;6805:18;;;;;;;;;;;:61;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;6955:10;;6873:18;:30;6892:10;6873:30;;;;;;;;;;;;;;;:79;6904:21;:33;6926:10;6904:33;;;;;;;;;;;;;;;:47;;;6873:79;;;;;;;;;;;:92;;;;6972:10;;:12;;;;;;;;;:::i;:::-;;;;;;6991:21;:33;7013:10;6991:33;;;;;;;;;;;;;;;:47;;;:49;;;;;;;;;:::i;:::-;;;;;;7063:10;7052:38;;;7088:1;7075:10;;:14;;;;:::i;:::-;7052:38;;;;;;:::i;:::-;;;;;;;;6168:928;5899:1197;;;;;;;;;;:::o;4562:28::-;;;;:::o;5449:67::-;;;;;;;;;;;;;;;;;:::o;7102:683::-;7219:15;7333:3;7328:2;7318:6;7309:5;7303:2;7287:5;7281:19;:24;;;;:::i;:::-;7280:34;;;;:::i;:::-;7274:2;7258:5;7252:19;:24;;;;:::i;:::-;:63;;;;:::i;:::-;:72;;;;:::i;:::-;7237:11;:88;;;;:::i;:::-;:93;;;;:::i;:::-;:99;;;;:::i;:::-;7219:117;;7364:7;7351:9;:20;;7343:29;;;;;;7379:13;7407:2;7395:9;:14;;;;:::i;:::-;7379:30;;7416:54;7432:5;7439:12;7453:16;7416:15;:54::i;:::-;7478:7;7499;:5;:7::i;:::-;7491:21;;7538:5;7534:1;:9;;;;:::i;:::-;7521;:23;;;;:::i;:::-;7491:59;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7477:73;;;7565:2;7557:11;;;;;;7575:12;7606:5;7590:23;;;;;;7575:38;;7697:20;;;;;;;:::i;:::-;;;;;;;;;;;;;7687:31;;;;;;7655:14;:20;7670:4;7655:20;;;;;;;;;;;:26;;7638:44;;;;;;;;:::i;:::-;;;;;;;;;;;;;7628:55;;;;;;:90;7620:99;;;;;;7749:30;;;;;;;;7755:1;7749:30;;;;7758:1;7749:30;;;;7761:10;7749:30;;;;;;7773:5;7749:30;;;7726:14;:20;7741:4;7726:20;;;;;;;;;;;:53;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;7212:573;;;;7102:683;;;:::o;15508:137::-;2185:13;:11;:13::i;:::-;15553:7:::1;15574;:5;:7::i;:::-;15566:21;;15595;15566:55;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15552:69;;;15636:2;15628:11;;;::::0;::::1;;15545:100;15508:137::o:0;15761:100::-;2185:13;:11;:13::i;:::-;15846:9:::1;15830:13;:25;;;;15761:100:::0;:::o;4898:47::-;;;;;;;;;;;;;;;;;;;;;;:::o;4427:26::-;;;;:::o;11162:1026::-;11421:134;11430:6;11438:12;11452:16;11470;11488:66;11421:134;;:8;:134::i;:::-;11562:13;;:15;;;;;;;;;:::i;:::-;;;;;;11670:13;;11584:20;:32;11605:10;11584:32;;;;;;;;;;;;;;;:83;11617:21;:33;11639:10;11617:33;;;;;;;;;;;;;;;:49;;;11584:83;;;;;;;;;;;:99;;;;11721:2;11704:5;11698:19;:25;;11690:34;;;;;;11731:6;11748:196;11759:19;:26;11755:1;:30;11748:196;;;11843:10;11804:49;;:11;:35;11816:19;11836:1;11816:22;;;;;;;;:::i;:::-;;;;;;;;11804:35;;;;;;;;;;;;;;;;;;;;;:49;;;11796:58;;;;;;11902:19;11922:1;11902:22;;;;;;;;:::i;:::-;;;;;;;;11863:18;:33;11882:13;;11863:33;;;;;;;;;;;:36;11897:1;11863:36;;;;;;;;;;;:61;;;;11933:3;;;;;:::i;:::-;;;;11748:196;;;12003:1;11989:11;;:15;;;;:::i;:::-;11950:18;:33;11969:13;;11950:33;;;;;;;;;;;:36;11984:1;11950:36;;;;;;;;;;;:54;;;;12037:87;;;;;;;;12045:10;12037:87;;;;12061:1;12057;:5;;;;:::i;:::-;12037:87;;;;12064:5;12037:87;;;;12071:5;12037:87;;;;12078:9;12037:87;;;;12089:1;12037:87;;;;12092:10;12037:87;;;;;;12104:15;12037:87;;;;;;;;;;;;;;;;;;;12011:8;:23;12020:13;;12011:23;;;;;;;;;;;:113;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;12131:21;:33;12153:10;12131:33;;;;;;;;;;;;;;;:49;;;:51;;;;;;;;;:::i;:::-;;;;;;11414:774;11162:1026;;;;;;;;;:::o;4853:40::-;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;5078:86::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;4491:28::-;;;;:::o;2940:103::-;2185:13;:11;:13::i;:::-;3005:30:::1;3032:1;3005:18;:30::i;:::-;2940:103::o:0;5289:74::-;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;4642:48::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;5227:57::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;5521:82::-;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;2299:87::-;2345:7;2372:6;;;;;;;;;;;2365:13;;2299:87;:::o;4950:44::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;5169:53::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;7791:1061::-;8061:134;8070:6;8078:12;8092:16;8110;8128:66;8061:134;;:8;:134::i;:::-;8223:3;8210:10;;:16;:45;;;;;8253:2;8236:5;8230:19;:25;;8210:45;:80;;;;;8273:6;:11;8280:3;8273:11;;;;;;;;;;;:17;;;;;;;;;;;;8259:31;;:10;:31;;;8210:80;8202:89;;;;;;8298:6;8315:203;8326:19;:26;8322:1;:30;8315:203;;;8410:10;8371:49;;:11;:35;8383:19;8403:1;8383:22;;;;;;;;:::i;:::-;;;;;;;;8371:35;;;;;;;;;;;;;;;;;;;;;:49;;;8363:58;;;;;;8476:19;8496:1;8476:22;;;;;;;;:::i;:::-;;;;;;;;8430:8;:13;8439:3;8430:13;;;;;;;;;;;:40;8444:6;:11;8451:3;8444:11;;;;;;;;;;;:25;;;8430:40;;;;;;;;;;;:43;8471:1;8430:43;;;;;;;;;;;:68;;;;8507:3;;;;;:::i;:::-;;;;8315:203;;;8561:1;8538:11;8532:25;:30;:65;;;;8595:2;8572:11;8566:25;:31;8532:65;8524:74;;;;;;8665:1;8651:11;;:15;;;;:::i;:::-;8605:8;:13;8614:3;8605:13;;;;;;;;;;;:40;8619:6;:11;8626:3;8619:11;;;;;;;;;;;:25;;;8605:40;;;;;;;;;;;:43;8646:1;8605:43;;;;;;;;;;;:61;;;;8716:96;;;;;;;;8724:10;8716:96;;;;8740:1;8736;:5;;;;:::i;:::-;8716:96;;;;8743:5;8716:96;;;;8750:5;8716:96;;;;8757:9;8716:96;;;;8768:1;8716:96;;;;8771:10;8716:96;;;;;;8783:15;8716:96;;;;8800:11;8716:96;;;8673:8;:13;8682:3;8673:13;;;;;;;;;;;:40;8687:6;:11;8694:3;8687:11;;;;;;;;;;;:25;;;8673:40;;;;;;;;;;;:139;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;8819:6;:11;8826:3;8819:11;;;;;;;;;;;:25;;;:27;;;;;;;;;:::i;:::-;;;;;;8054:798;7791:1061;;;;;;;;;;:::o;14589:586::-;14677:1;14658:8;14652:22;:26;:57;;;;;14707:2;14688:8;14682:22;:27;14652:57;:135;;;;;14745:42;14713:74;;:18;14732:8;14713:28;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;:74;;;14652:135;:196;;;;;14847:1;14797:21;:33;14819:10;14797:33;;;;;;;;;;;;;;;:38;;14791:52;;;;;:::i;:::-;;;:57;14652:196;14644:205;;;;;;14856:6;14873:193;14890:8;14884:22;14880:1;:26;14873:193;;;14948:4;14926:26;;14932:8;14942:1;14926:18;;;;;;;;:::i;:::-;;;;;;;;;;:26;;;;;:56;;;;;14978:4;14956:26;;14962:8;14972:1;14956:18;;;;;;;;:::i;:::-;;;;;;;;;;:26;;;;;14926:56;14925:120;;;;15010:4;14988:26;;14994:8;15004:1;14988:18;;;;;;;;:::i;:::-;;;;;;;;;;:26;;;;;:56;;;;;15040:4;15018:26;;15024:8;15034:1;15018:18;;;;;;;;:::i;:::-;;;;;;;;;;:26;;;;;14988:56;14925:120;14917:129;;;;;;15055:3;;;;;:::i;:::-;;;;14873:193;;;15113:8;15072:21;:33;15094:10;15072:33;;;;;;;;;;;;;;;:38;;:49;;;;;;;;;;;;:::i;:::-;;15159:10;15128:18;15147:8;15128:28;;;;;;:::i;:::-;;;;;;;;;;;;;;:41;;;;;;;;;;;;;;;;;;14637:538;14589:586;:::o;4695:64::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;4458:28::-;;;;:::o;4597:40::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;15181:131::-;15293:13;15241:21;:33;15263:10;15241:33;;;;;;;;;;;;;;;:49;;;:65;;;;;;;;;;;;;;;;;;15181:131;:::o;4397:25::-;;;;:::o;15318:184::-;15422:14;:21;15437:5;15422:21;;;;;;;;;;;:27;;;;;;;;;;;;15408:41;;:10;:41;;;15400:50;;;;;;15487:9;15457:14;:21;15472:5;15457:21;;;;;;;;;;;:27;;;:39;;;;;;;;;;;;;;;;;;15318:184;;:::o;5608:62::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;3198:201::-;2185:13;:11;:13::i;:::-;3307:1:::1;3287:22;;:8;:22;;;;3279:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;3363:28;3382:8;3363:18;:28::i;:::-;3198:201:::0;:::o;10068:1088::-;10352:78;10361:6;10369:12;10383:16;10401;10419:10;10352:8;:78::i;:::-;10437:13;;:15;;;;;;;;;:::i;:::-;;;;;;10554:13;;10459:26;:38;10486:10;10459:38;;;;;;;;;;;:92;10498:31;:52;10538:10;10498:52;;;;;;;;;;;;10459:92;;;;;;;;;;;:108;;;;10605:2;10588:5;10582:19;:25;;10574:34;;;;;;10615:6;10632:196;10643:19;:26;10639:1;:30;10632:196;;;10727:10;10688:49;;:11;:35;10700:19;10720:1;10700:22;;;;;;;;:::i;:::-;;;;;;;;10688:35;;;;;;;;;;;;;;;;;;;;;:49;;;10680:58;;;;;;10786:19;10806:1;10786:22;;;;;;;;:::i;:::-;;;;;;;;10747:18;:33;10766:13;;10747:33;;;;;;;;;;;:36;10781:1;10747:36;;;;;;;;;;;:61;;;;10817:3;;;;;:::i;:::-;;;;10632:196;;;10871:1;10848:11;10842:25;:30;:65;;;;10905:2;10882:11;10876:25;:31;10842:65;10834:74;;;;;;10968:1;10954:11;;:15;;;;:::i;:::-;10915:18;:33;10934:13;;10915:33;;;;;;;;;;;:36;10949:1;10915:36;;;;;;;;;;;:54;;;;11002:96;;;;;;;;11010:10;11002:96;;;;11026:1;11022;:5;;;;:::i;:::-;11002:96;;;;11029:5;11002:96;;;;11036:5;11002:96;;;;11043:9;11002:96;;;;11054:1;11002:96;;;;11057:10;11002:96;;;;;;11069:15;11002:96;;;;11086:11;11002:96;;;10976:8;:23;10985:13;;10976:23;;;;;;;;;;;:122;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;11105:31;:43;11137:10;11105:43;;;;;;;;;;;;:45;;;;;;;;;:::i;:::-;;;;;;10345:811;10068:1088;;;;;;;;;;:::o;13037:1546::-;13190:15;13306:3;13301:2;13291:6;13282:5;13276:2;13259:6;13253:20;:25;;;;:::i;:::-;13252:35;;;;:::i;:::-;13246:2;13229:6;13223:20;:25;;;;:::i;:::-;:65;;;;:::i;:::-;:74;;;;:::i;:::-;13208:11;:90;;;;:::i;:::-;:95;;;;:::i;:::-;:101;;;;:::i;:::-;13190:119;;13337:7;13324:9;:20;;13316:29;;;;;;13352:13;13380:2;13368:9;:14;;;;:::i;:::-;13352:30;;13389:54;13405:5;13412:12;13426:16;13389:15;:54::i;:::-;13450:25;13506:66;13486:86;;:16;:86;13482:630;;13683:15;13673:7;13587:21;:70;13609:14;:41;13632:16;13609:41;;;;;;;;;;;:47;;;;;;;;;;;;13587:70;;;;;;;;;;;;;;;:83;;;:93;;;;:::i;:::-;:111;13583:259;;;13731:7;:5;:7::i;:::-;13711:27;;13583:259;;;13785:14;:41;13808:16;13785:41;;;;;;;;;;;:47;;;;;;;;;;;;13765:67;;13583:259;13482:630;;;13880:16;13868:8;:28;:118;;;;13971:15;13961:7;13900:21;:45;13922:6;:16;13929:8;13922:16;;;;;;;;;;;:22;;;;;;;;;;;;13900:45;;;;;;;;;;;;;;;:58;;;:68;;;;:::i;:::-;:86;13868:118;13864:241;;;14019:7;:5;:7::i;:::-;13999:27;;13864:241;;;14073:6;:16;14080:8;14073:16;;;;;;;;;;;:22;;;;;;;;;;;;14053:42;;13864:241;13482:630;14119:8;14141:17;14133:31;;14177:5;14173:1;:9;;;;:::i;:::-;14133:55;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14118:70;;;14304:5;14300:1;:9;;;;:::i;:::-;14247:21;:40;14269:17;14247:40;;;;;;;;;;;;;;;:49;;;:63;;;;:::i;:::-;14195:21;:40;14217:17;14195:40;;;;;;;;;;;;;;;:49;;:115;;;;14325:3;14317:12;;;;;;14337:7;14358;:5;:7::i;:::-;14350:21;;14397:5;14393:1;:9;;;;:::i;:::-;14380;:23;;;;:::i;:::-;14350:59;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14336:73;;;14424:2;14416:11;;;;;;14456:6;14434;:19;14441:11;;14434:19;;;;;;;;;;;:28;;;;;;;;;;;;:::i;:::-;;14496:10;14469:11;:24;14481:11;;14469:24;;;;;;;;;;;;:37;;;;;;;;;;;;;;;;;;14513:11;;:13;;;;;;;;;:::i;:::-;;;;;;14549:10;14538:39;;;14575:1;14561:11;;:15;;;;:::i;:::-;14538:39;;;;;;:::i;:::-;;;;;;;;13183:1400;;;;;13037:1546;;;;;:::o;12194:837::-;12431:134;12440:6;12448:12;12462:16;12480;12498:66;12431:134;;:8;:134::i;:::-;12603:2;12586:5;12580:19;:25;;12572:34;;;;;;12613:6;12630:198;12641:19;:26;12637:1;:30;12630:198;;;12725:10;12686:49;;:11;:35;12698:19;12718:1;12698:22;;;;;;;;:::i;:::-;;;;;;;;12686:35;;;;;;;;;;;;;;;;;;;;;:49;;;12678:58;;;;;;12786:19;12806:1;12786:22;;;;;;;;:::i;:::-;;;;;;;;12745:23;:35;12769:10;12745:35;;;;;;;;;;;;;;;:38;12781:1;12745:38;;;;;;;;;;;:63;;;;12817:3;;;;;:::i;:::-;;;;12630:198;;;12889:1;12875:11;;:15;;;;:::i;:::-;12834:23;:35;12858:10;12834:35;;;;;;;;;;;;;;;:38;12870:1;12834:38;;;;;;;;;;;:56;;;;12938:87;;;;;;;;12946:10;12938:87;;;;12962:1;12958;:5;;;;:::i;:::-;12938:87;;;;12965:5;12938:87;;;;12972:5;12938:87;;;;12979:9;12938:87;;;;12990:1;12938:87;;;;12993:10;12938:87;;;;;;13005:15;12938:87;;;;;;;;;;;;;;;;;;;12897:26;:38;12924:10;12897:38;;;;;;;;;;;;;;;:128;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;12424:607;12194:837;;;;;;;;:::o;2464:132::-;2539:12;:10;:12::i;:::-;2528:23;;:7;:5;:7::i;:::-;:23;;;2520:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;2464:132::o;15867:2186::-;15970:19;16016:42;16000:58;;:12;:58;;;:88;;;;16078:10;16062:26;;:12;:26;;;16000:88;:168;;;;16153:15;16143:7;16092:21;:35;16114:12;16092:35;;;;;;;;;;;;;;;:48;;;:58;;;;:::i;:::-;:76;16000:168;15996:261;;;16193:7;:5;:7::i;:::-;16179:21;;15996:261;;;16237:12;16223:26;;15996:261;16263:23;16343:42;16297:88;;:21;:33;16319:10;16297:33;;;;;;;;;;;;;;;:42;;;;;;;;;;;;:88;;;16293:306;;;16420:10;16400:30;;:16;:30;;;16396:195;;16488:16;16443:21;:33;16465:10;16443:33;;;;;;;;;;;;;;;:42;;;:61;;;;;;;;;;;;;;;;;;16396:195;;;16574:7;:5;:7::i;:::-;16529:21;:33;16551:10;16529:33;;;;;;;;;;;;;;;:42;;;:52;;;;;;;;;;;;;;;;;;16396:195;16293:306;16700:15;16690:7;16609:21;:65;16631:21;:33;16653:10;16631:33;;;;;;;;;;;;;;;:42;;;;;;;;;;;;16609:65;;;;;;;;;;;;;;;:78;;;:88;;;;:::i;:::-;:106;16605:237;;;16744:7;:5;:7::i;:::-;16726:25;;16605:237;;;16792:21;:33;16814:10;16792:33;;;;;;;;;;;;;;;:42;;;;;;;;;;;;16774:60;;16605:237;16848:24;16961:42;16883:120;;:21;:65;16905:21;:33;16927:10;16905:33;;;;;;;;;;;;;;;:42;;;;;;;;;;;;16883:65;;;;;;;;;;;;;;;:74;;;;;;;;;;;;:120;;;:212;;;;17021:21;:65;17043:21;:33;17065:10;17043:33;;;;;;;;;;;;;;;:42;;;;;;;;;;;;17021:65;;;;;;;;;;;;;;;:74;;;;;;;;;;;;17007:88;;:10;:88;;;16883:212;:322;;;;17190:15;17180:7;17099:21;:65;17121:21;:33;17143:10;17121:33;;;;;;;;;;;;;;;:42;;;;;;;;;;;;17099:65;;;;;;;;;;;;;;;:78;;;:88;;;;:::i;:::-;:106;16883:322;16879:487;;;17235:7;:5;:7::i;:::-;17216:26;;16879:487;;;17284:21;:65;17306:21;:33;17328:10;17306:33;;;;;;;;;;;;;;;:42;;;;;;;;;;;;17284:65;;;;;;;;;;;;;;;:74;;;;;;;;;;;;17265:93;;16879:487;17373:7;17394:11;17386:25;;17424:5;17420:1;:9;;;;:::i;:::-;17386:49;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17372:63;;;17539:5;17535:1;:9;;;;:::i;:::-;17488:21;:34;17510:11;17488:34;;;;;;;;;;;;;;;:43;;;:57;;;;:::i;:::-;17442:21;:34;17464:11;17442:34;;;;;;;;;;;;;;;:43;;:103;;;;17560:2;17552:11;;;;;;17571:7;17592:15;17584:29;;17626:5;17622:1;:9;;;;:::i;:::-;17584:53;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17570:67;;;17749:5;17745:1;:9;;;;:::i;:::-;17694:21;:38;17716:15;17694:38;;;;;;;;;;;;;;;:47;;;:61;;;;:::i;:::-;17644:21;:38;17666:15;17644:38;;;;;;;;;;;;;;;:47;;:111;;;;17770:2;17762:11;;;;;;17781:8;17803:16;17795:30;;17833:5;17795:48;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17780:63;;;17952:5;17901:21;:39;17923:16;17901:39;;;;;;;;;;;;;;;:48;;;:56;;;;:::i;:::-;17850:21;:39;17872:16;17850:39;;;;;;;;;;;;;;;:48;;:107;;;;17972:3;17964:12;;;;;;18032:15;17983:21;:33;18005:10;17983:33;;;;;;;;;;;;;;;:46;;:64;;;;15963:2090;;;;;;15867:2186;;;:::o;3559:191::-;3633:16;3652:6;;;;;;;;;;;3633:25;;3678:8;3669:6;;:17;;;;;;;;;;;;;;;;;;3733:8;3702:40;;3723:8;3702:40;;;;;;;;;;;;3622:128;3559:191;:::o;737:98::-;790:7;817:10;810:17;;737:98;:::o;-1:-1:-1:-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;:::o;7:75:1:-;40:6;73:2;67:9;57:19;;7:75;:::o;88:117::-;197:1;194;187:12;211:117;320:1;317;310:12;334:126;371:7;411:42;404:5;400:54;389:65;;334:126;;;:::o;466:96::-;503:7;532:24;550:5;532:24;:::i;:::-;521:35;;466:96;;;:::o;568:122::-;641:24;659:5;641:24;:::i;:::-;634:5;631:35;621:63;;680:1;677;670:12;621:63;568:122;:::o;696:139::-;742:5;780:6;767:20;758:29;;796:33;823:5;796:33;:::i;:::-;696:139;;;;:::o;841:77::-;878:7;907:5;896:16;;841:77;;;:::o;924:122::-;997:24;1015:5;997:24;:::i;:::-;990:5;987:35;977:63;;1036:1;1033;1026:12;977:63;924:122;:::o;1052:139::-;1098:5;1136:6;1123:20;1114:29;;1152:33;1179:5;1152:33;:::i;:::-;1052:139;;;;:::o;1197:474::-;1265:6;1273;1322:2;1310:9;1301:7;1297:23;1293:32;1290:119;;;1328:79;;:::i;:::-;1290:119;1448:1;1473:53;1518:7;1509:6;1498:9;1494:22;1473:53;:::i;:::-;1463:63;;1419:117;1575:2;1601:53;1646:7;1637:6;1626:9;1622:22;1601:53;:::i;:::-;1591:63;;1546:118;1197:474;;;;;:::o;1677:118::-;1764:24;1782:5;1764:24;:::i;:::-;1759:3;1752:37;1677:118;;:::o;1801:222::-;1894:4;1932:2;1921:9;1917:18;1909:26;;1945:71;2013:1;2002:9;1998:17;1989:6;1945:71;:::i;:::-;1801:222;;;;:::o;2029:474::-;2097:6;2105;2154:2;2142:9;2133:7;2129:23;2125:32;2122:119;;;2160:79;;:::i;:::-;2122:119;2280:1;2305:53;2350:7;2341:6;2330:9;2326:22;2305:53;:::i;:::-;2295:63;;2251:117;2407:2;2433:53;2478:7;2469:6;2458:9;2454:22;2433:53;:::i;:::-;2423:63;;2378:118;2029:474;;;;;:::o;2509:117::-;2618:1;2615;2608:12;2632:117;2741:1;2738;2731:12;2755:102;2796:6;2847:2;2843:7;2838:2;2831:5;2827:14;2823:28;2813:38;;2755:102;;;:::o;2863:180::-;2911:77;2908:1;2901:88;3008:4;3005:1;2998:15;3032:4;3029:1;3022:15;3049:281;3132:27;3154:4;3132:27;:::i;:::-;3124:6;3120:40;3262:6;3250:10;3247:22;3226:18;3214:10;3211:34;3208:62;3205:88;;;3273:18;;:::i;:::-;3205:88;3313:10;3309:2;3302:22;3092:238;3049:281;;:::o;3336:129::-;3370:6;3397:20;;:::i;:::-;3387:30;;3426:33;3454:4;3446:6;3426:33;:::i;:::-;3336:129;;;:::o;3471:307::-;3532:4;3622:18;3614:6;3611:30;3608:56;;;3644:18;;:::i;:::-;3608:56;3682:29;3704:6;3682:29;:::i;:::-;3674:37;;3766:4;3760;3756:15;3748:23;;3471:307;;;:::o;3784:154::-;3868:6;3863:3;3858;3845:30;3930:1;3921:6;3916:3;3912:16;3905:27;3784:154;;;:::o;3944:410::-;4021:5;4046:65;4062:48;4103:6;4062:48;:::i;:::-;4046:65;:::i;:::-;4037:74;;4134:6;4127:5;4120:21;4172:4;4165:5;4161:16;4210:3;4201:6;4196:3;4192:16;4189:25;4186:112;;;4217:79;;:::i;:::-;4186:112;4307:41;4341:6;4336:3;4331;4307:41;:::i;:::-;4027:327;3944:410;;;;;:::o;4373:338::-;4428:5;4477:3;4470:4;4462:6;4458:17;4454:27;4444:122;;4485:79;;:::i;:::-;4444:122;4602:6;4589:20;4627:78;4701:3;4693:6;4686:4;4678:6;4674:17;4627:78;:::i;:::-;4618:87;;4434:277;4373:338;;;;:::o;4717:311::-;4794:4;4884:18;4876:6;4873:30;4870:56;;;4906:18;;:::i;:::-;4870:56;4956:4;4948:6;4944:17;4936:25;;5016:4;5010;5006:15;4998:23;;4717:311;;;:::o;5034:117::-;5143:1;5140;5133:12;5174:710;5270:5;5295:81;5311:64;5368:6;5311:64;:::i;:::-;5295:81;:::i;:::-;5286:90;;5396:5;5425:6;5418:5;5411:21;5459:4;5452:5;5448:16;5441:23;;5512:4;5504:6;5500:17;5492:6;5488:30;5541:3;5533:6;5530:15;5527:122;;;5560:79;;:::i;:::-;5527:122;5675:6;5658:220;5692:6;5687:3;5684:15;5658:220;;;5767:3;5796:37;5829:3;5817:10;5796:37;:::i;:::-;5791:3;5784:50;5863:4;5858:3;5854:14;5847:21;;5734:144;5718:4;5713:3;5709:14;5702:21;;5658:220;;;5662:21;5276:608;;5174:710;;;;;:::o;5907:370::-;5978:5;6027:3;6020:4;6012:6;6008:17;6004:27;5994:122;;6035:79;;:::i;:::-;5994:122;6152:6;6139:20;6177:94;6267:3;6259:6;6252:4;6244:6;6240:17;6177:94;:::i;:::-;6168:103;;5984:293;5907:370;;;;:::o;6283:308::-;6345:4;6435:18;6427:6;6424:30;6421:56;;;6457:18;;:::i;:::-;6421:56;6495:29;6517:6;6495:29;:::i;:::-;6487:37;;6579:4;6573;6569:15;6561:23;;6283:308;;;:::o;6597:412::-;6675:5;6700:66;6716:49;6758:6;6716:49;:::i;:::-;6700:66;:::i;:::-;6691:75;;6789:6;6782:5;6775:21;6827:4;6820:5;6816:16;6865:3;6856:6;6851:3;6847:16;6844:25;6841:112;;;6872:79;;:::i;:::-;6841:112;6962:41;6996:6;6991:3;6986;6962:41;:::i;:::-;6681:328;6597:412;;;;;:::o;7029:340::-;7085:5;7134:3;7127:4;7119:6;7115:17;7111:27;7101:122;;7142:79;;:::i;:::-;7101:122;7259:6;7246:20;7284:79;7359:3;7351:6;7344:4;7336:6;7332:17;7284:79;:::i;:::-;7275:88;;7091:278;7029:340;;;;:::o;7375:2715::-;7587:6;7595;7603;7611;7619;7627;7635;7643;7651;7659;7667:7;7717:3;7705:9;7696:7;7692:23;7688:33;7685:120;;;7724:79;;:::i;:::-;7685:120;7872:1;7861:9;7857:17;7844:31;7902:18;7894:6;7891:30;7888:117;;;7924:79;;:::i;:::-;7888:117;8029:62;8083:7;8074:6;8063:9;8059:22;8029:62;:::i;:::-;8019:72;;7815:286;8168:2;8157:9;8153:18;8140:32;8199:18;8191:6;8188:30;8185:117;;;8221:79;;:::i;:::-;8185:117;8326:78;8396:7;8387:6;8376:9;8372:22;8326:78;:::i;:::-;8316:88;;8111:303;8453:2;8479:53;8524:7;8515:6;8504:9;8500:22;8479:53;:::i;:::-;8469:63;;8424:118;8581:2;8607:53;8652:7;8643:6;8632:9;8628:22;8607:53;:::i;:::-;8597:63;;8552:118;8709:3;8736:53;8781:7;8772:6;8761:9;8757:22;8736:53;:::i;:::-;8726:63;;8680:119;8866:3;8855:9;8851:19;8838:33;8898:18;8890:6;8887:30;8884:117;;;8920:79;;:::i;:::-;8884:117;9025:63;9080:7;9071:6;9060:9;9056:22;9025:63;:::i;:::-;9015:73;;8809:289;9137:3;9164:53;9209:7;9200:6;9189:9;9185:22;9164:53;:::i;:::-;9154:63;;9108:119;9294:3;9283:9;9279:19;9266:33;9326:18;9318:6;9315:30;9312:117;;;9348:79;;:::i;:::-;9312:117;9453:63;9508:7;9499:6;9488:9;9484:22;9453:63;:::i;:::-;9443:73;;9237:289;9565:3;9592:53;9637:7;9628:6;9617:9;9613:22;9592:53;:::i;:::-;9582:63;;9536:119;9694:3;9721:53;9766:7;9757:6;9746:9;9742:22;9721:53;:::i;:::-;9711:63;;9665:119;9851:3;9840:9;9836:19;9823:33;9883:18;9875:6;9872:30;9869:117;;;9905:79;;:::i;:::-;9869:117;10011:62;10065:7;10056:6;10045:9;10041:22;10011:62;:::i;:::-;10000:73;;9794:289;7375:2715;;;;;;;;;;;;;;:::o;10096:619::-;10173:6;10181;10189;10238:2;10226:9;10217:7;10213:23;10209:32;10206:119;;;10244:79;;:::i;:::-;10206:119;10364:1;10389:53;10434:7;10425:6;10414:9;10410:22;10389:53;:::i;:::-;10379:63;;10335:117;10491:2;10517:53;10562:7;10553:6;10542:9;10538:22;10517:53;:::i;:::-;10507:63;;10462:118;10619:2;10645:53;10690:7;10681:6;10670:9;10666:22;10645:53;:::i;:::-;10635:63;;10590:118;10096:619;;;;;:::o;10721:329::-;10780:6;10829:2;10817:9;10808:7;10804:23;10800:32;10797:119;;;10835:79;;:::i;:::-;10797:119;10955:1;10980:53;11025:7;11016:6;11005:9;11001:22;10980:53;:::i;:::-;10970:63;;10926:117;10721:329;;;;:::o;11056:2747::-;11269:6;11277;11285;11293;11301;11309;11317;11325;11333;11341;11390:3;11378:9;11369:7;11365:23;11361:33;11358:120;;;11397:79;;:::i;:::-;11358:120;11545:1;11534:9;11530:17;11517:31;11575:18;11567:6;11564:30;11561:117;;;11597:79;;:::i;:::-;11561:117;11702:62;11756:7;11747:6;11736:9;11732:22;11702:62;:::i;:::-;11692:72;;11488:286;11841:2;11830:9;11826:18;11813:32;11872:18;11864:6;11861:30;11858:117;;;11894:79;;:::i;:::-;11858:117;11999:63;12054:7;12045:6;12034:9;12030:22;11999:63;:::i;:::-;11989:73;;11784:288;12139:2;12128:9;12124:18;12111:32;12170:18;12162:6;12159:30;12156:117;;;12192:79;;:::i;:::-;12156:117;12297:78;12367:7;12358:6;12347:9;12343:22;12297:78;:::i;:::-;12287:88;;12082:303;12424:2;12450:53;12495:7;12486:6;12475:9;12471:22;12450:53;:::i;:::-;12440:63;;12395:118;12580:3;12569:9;12565:19;12552:33;12612:18;12604:6;12601:30;12598:117;;;12634:79;;:::i;:::-;12598:117;12739:63;12794:7;12785:6;12774:9;12770:22;12739:63;:::i;:::-;12729:73;;12523:289;12851:3;12878:53;12923:7;12914:6;12903:9;12899:22;12878:53;:::i;:::-;12868:63;;12822:119;13008:3;12997:9;12993:19;12980:33;13040:18;13032:6;13029:30;13026:117;;;13062:79;;:::i;:::-;13026:117;13167:63;13222:7;13213:6;13202:9;13198:22;13167:63;:::i;:::-;13157:73;;12951:289;13279:3;13306:53;13351:7;13342:6;13331:9;13327:22;13306:53;:::i;:::-;13296:63;;13250:119;13408:3;13435:53;13480:7;13471:6;13460:9;13456:22;13435:53;:::i;:::-;13425:63;;13379:119;13565:3;13554:9;13550:19;13537:33;13597:18;13589:6;13586:30;13583:117;;;13619:79;;:::i;:::-;13583:117;13724:62;13778:7;13769:6;13758:9;13754:22;13724:62;:::i;:::-;13714:72;;13508:288;11056:2747;;;;;;;;;;;;;:::o;13809:77::-;13846:7;13875:5;13864:16;;13809:77;;;:::o;13892:122::-;13965:24;13983:5;13965:24;:::i;:::-;13958:5;13955:35;13945:63;;14004:1;14001;13994:12;13945:63;13892:122;:::o;14020:139::-;14066:5;14104:6;14091:20;14082:29;;14120:33;14147:5;14120:33;:::i;:::-;14020:139;;;;:::o;14165:329::-;14224:6;14273:2;14261:9;14252:7;14248:23;14244:32;14241:119;;;14279:79;;:::i;:::-;14241:119;14399:1;14424:53;14469:7;14460:6;14449:9;14445:22;14424:53;:::i;:::-;14414:63;;14370:117;14165:329;;;;:::o;14500:799::-;14587:6;14595;14603;14652:2;14640:9;14631:7;14627:23;14623:32;14620:119;;;14658:79;;:::i;:::-;14620:119;14806:1;14795:9;14791:17;14778:31;14836:18;14828:6;14825:30;14822:117;;;14858:79;;:::i;:::-;14822:117;14963:63;15018:7;15009:6;14998:9;14994:22;14963:63;:::i;:::-;14953:73;;14749:287;15075:2;15101:53;15146:7;15137:6;15126:9;15122:22;15101:53;:::i;:::-;15091:63;;15046:118;15203:2;15229:53;15274:7;15265:6;15254:9;15250:22;15229:53;:::i;:::-;15219:63;;15174:118;14500:799;;;;;:::o;15305:118::-;15392:24;15410:5;15392:24;:::i;:::-;15387:3;15380:37;15305:118;;:::o;15429:222::-;15522:4;15560:2;15549:9;15545:18;15537:26;;15573:71;15641:1;15630:9;15626:17;15617:6;15573:71;:::i;:::-;15429:222;;;;:::o;15657:2243::-;15842:6;15850;15858;15866;15874;15882;15890;15898;15906;15955:3;15943:9;15934:7;15930:23;15926:33;15923:120;;;15962:79;;:::i;:::-;15923:120;16110:1;16099:9;16095:17;16082:31;16140:18;16132:6;16129:30;16126:117;;;16162:79;;:::i;:::-;16126:117;16267:62;16321:7;16312:6;16301:9;16297:22;16267:62;:::i;:::-;16257:72;;16053:286;16406:2;16395:9;16391:18;16378:32;16437:18;16429:6;16426:30;16423:117;;;16459:79;;:::i;:::-;16423:117;16564:78;16634:7;16625:6;16614:9;16610:22;16564:78;:::i;:::-;16554:88;;16349:303;16691:2;16717:53;16762:7;16753:6;16742:9;16738:22;16717:53;:::i;:::-;16707:63;;16662:118;16819:2;16845:53;16890:7;16881:6;16870:9;16866:22;16845:53;:::i;:::-;16835:63;;16790:118;16975:3;16964:9;16960:19;16947:33;17007:18;16999:6;16996:30;16993:117;;;17029:79;;:::i;:::-;16993:117;17134:63;17189:7;17180:6;17169:9;17165:22;17134:63;:::i;:::-;17124:73;;16918:289;17246:3;17273:53;17318:7;17309:6;17298:9;17294:22;17273:53;:::i;:::-;17263:63;;17217:119;17403:3;17392:9;17388:19;17375:33;17435:18;17427:6;17424:30;17421:117;;;17457:79;;:::i;:::-;17421:117;17562:63;17617:7;17608:6;17597:9;17593:22;17562:63;:::i;:::-;17552:73;;17346:289;17674:3;17701:53;17746:7;17737:6;17726:9;17722:22;17701:53;:::i;:::-;17691:63;;17645:119;17803:3;17830:53;17875:7;17866:6;17855:9;17851:22;17830:53;:::i;:::-;17820:63;;17774:119;15657:2243;;;;;;;;;;;:::o;17906:98::-;17957:6;17991:5;17985:12;17975:22;;17906:98;;;:::o;18010:168::-;18093:11;18127:6;18122:3;18115:19;18167:4;18162:3;18158:14;18143:29;;18010:168;;;;:::o;18184:307::-;18252:1;18262:113;18276:6;18273:1;18270:13;18262:113;;;18361:1;18356:3;18352:11;18346:18;18342:1;18337:3;18333:11;18326:39;18298:2;18295:1;18291:10;18286:15;;18262:113;;;18393:6;18390:1;18387:13;18384:101;;;18473:1;18464:6;18459:3;18455:16;18448:27;18384:101;18233:258;18184:307;;;:::o;18497:360::-;18583:3;18611:38;18643:5;18611:38;:::i;:::-;18665:70;18728:6;18723:3;18665:70;:::i;:::-;18658:77;;18744:52;18789:6;18784:3;18777:4;18770:5;18766:16;18744:52;:::i;:::-;18821:29;18843:6;18821:29;:::i;:::-;18816:3;18812:39;18805:46;;18587:270;18497:360;;;;:::o;18863:309::-;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:76;19160:4;19151:6;19089:76;:::i;:::-;19081:84;;18863:309;;;;:::o;19178:99::-;19230:6;19264:5;19258:12;19248:22;;19178:99;;;:::o;19283:169::-;19367:11;19401:6;19396:3;19389:19;19441:4;19436:3;19432:14;19417:29;;19283:169;;;;:::o;19458:364::-;19546:3;19574:39;19607:5;19574:39;:::i;:::-;19629:71;19693:6;19688:3;19629:71;:::i;:::-;19622:78;;19709:52;19754:6;19749:3;19742:4;19735:5;19731:16;19709:52;:::i;:::-;19786:29;19808:6;19786:29;:::i;:::-;19781:3;19777:39;19770:46;;19550:272;19458:364;;;;:::o;19828:644::-;20025:4;20063:3;20052:9;20048:19;20040:27;;20077:71;20145:1;20134:9;20130:17;20121:6;20077:71;:::i;:::-;20158:72;20226:2;20215:9;20211:18;20202:6;20158:72;:::i;:::-;20240;20308:2;20297:9;20293:18;20284:6;20240:72;:::i;:::-;20359:9;20353:4;20349:20;20344:2;20333:9;20329:18;20322:48;20387:78;20460:4;20451:6;20387:78;:::i;:::-;20379:86;;19828:644;;;;;;;:::o;20478:329::-;20537:6;20586:2;20574:9;20565:7;20561:23;20557:32;20554:119;;;20592:79;;:::i;:::-;20554:119;20712:1;20737:53;20782:7;20773:6;20762:9;20758:22;20737:53;:::i;:::-;20727:63;;20683:117;20478:329;;;;:::o;20813:90::-;20847:7;20890:5;20883:13;20876:21;20865:32;;20813:90;;;:::o;20909:109::-;20990:21;21005:5;20990:21;:::i;:::-;20985:3;20978:34;20909:109;;:::o;21024:965::-;21299:4;21337:3;21326:9;21322:19;21314:27;;21351:71;21419:1;21408:9;21404:17;21395:6;21351:71;:::i;:::-;21432:72;21500:2;21489:9;21485:18;21476:6;21432:72;:::i;:::-;21551:9;21545:4;21541:20;21536:2;21525:9;21521:18;21514:48;21579:78;21652:4;21643:6;21579:78;:::i;:::-;21571:86;;21667:72;21735:2;21724:9;21720:18;21711:6;21667:72;:::i;:::-;21749:73;21817:3;21806:9;21802:19;21793:6;21749:73;:::i;:::-;21832:67;21894:3;21883:9;21879:19;21870:6;21832:67;:::i;:::-;21909:73;21977:3;21966:9;21962:19;21953:6;21909:73;:::i;:::-;21024:965;;;;;;;;;;:::o;21995:474::-;22063:6;22071;22120:2;22108:9;22099:7;22095:23;22091:32;22088:119;;;22126:79;;:::i;:::-;22088:119;22246:1;22271:53;22316:7;22307:6;22296:9;22292:22;22271:53;:::i;:::-;22261:63;;22217:117;22373:2;22399:53;22444:7;22435:6;22424:9;22420:22;22399:53;:::i;:::-;22389:63;;22344:118;21995:474;;;;;:::o;22475:1377::-;22850:4;22888:3;22877:9;22873:19;22865:27;;22902:71;22970:1;22959:9;22955:17;22946:6;22902:71;:::i;:::-;22983:72;23051:2;23040:9;23036:18;23027:6;22983:72;:::i;:::-;23102:9;23096:4;23092:20;23087:2;23076:9;23072:18;23065:48;23130:78;23203:4;23194:6;23130:78;:::i;:::-;23122:86;;23218:72;23286:2;23275:9;23271:18;23262:6;23218:72;:::i;:::-;23338:9;23332:4;23328:20;23322:3;23311:9;23307:19;23300:49;23366:78;23439:4;23430:6;23366:78;:::i;:::-;23358:86;;23454:73;23522:3;23511:9;23507:19;23498:6;23454:73;:::i;:::-;23537;23605:3;23594:9;23590:19;23581:6;23537:73;:::i;:::-;23620;23688:3;23677:9;23673:19;23664:6;23620:73;:::i;:::-;23741:9;23735:4;23731:20;23725:3;23714:9;23710:19;23703:49;23769:76;23840:4;23831:6;23769:76;:::i;:::-;23761:84;;22475:1377;;;;;;;;;;;;:::o;23858:509::-;23927:6;23976:2;23964:9;23955:7;23951:23;23947:32;23944:119;;;23982:79;;:::i;:::-;23944:119;24130:1;24119:9;24115:17;24102:31;24160:18;24152:6;24149:30;24146:117;;;24182:79;;:::i;:::-;24146:117;24287:63;24342:7;24333:6;24322:9;24318:22;24287:63;:::i;:::-;24277:73;;24073:287;23858:509;;;;:::o;24373:2567::-;24576:6;24584;24592;24600;24608;24616;24624;24632;24640;24648;24697:3;24685:9;24676:7;24672:23;24668:33;24665:120;;;24704:79;;:::i;:::-;24665:120;24852:1;24841:9;24837:17;24824:31;24882:18;24874:6;24871:30;24868:117;;;24904:79;;:::i;:::-;24868:117;25009:62;25063:7;25054:6;25043:9;25039:22;25009:62;:::i;:::-;24999:72;;24795:286;25148:2;25137:9;25133:18;25120:32;25179:18;25171:6;25168:30;25165:117;;;25201:79;;:::i;:::-;25165:117;25306:78;25376:7;25367:6;25356:9;25352:22;25306:78;:::i;:::-;25296:88;;25091:303;25433:2;25459:53;25504:7;25495:6;25484:9;25480:22;25459:53;:::i;:::-;25449:63;;25404:118;25561:2;25587:53;25632:7;25623:6;25612:9;25608:22;25587:53;:::i;:::-;25577:63;;25532:118;25717:3;25706:9;25702:19;25689:33;25749:18;25741:6;25738:30;25735:117;;;25771:79;;:::i;:::-;25735:117;25876:63;25931:7;25922:6;25911:9;25907:22;25876:63;:::i;:::-;25866:73;;25660:289;25988:3;26015:53;26060:7;26051:6;26040:9;26036:22;26015:53;:::i;:::-;26005:63;;25959:119;26145:3;26134:9;26130:19;26117:33;26177:18;26169:6;26166:30;26163:117;;;26199:79;;:::i;:::-;26163:117;26304:63;26359:7;26350:6;26339:9;26335:22;26304:63;:::i;:::-;26294:73;;26088:289;26416:3;26443:53;26488:7;26479:6;26468:9;26464:22;26443:53;:::i;:::-;26433:63;;26387:119;26545:3;26572:53;26617:7;26608:6;26597:9;26593:22;26572:53;:::i;:::-;26562:63;;26516:119;26702:3;26691:9;26687:19;26674:33;26734:18;26726:6;26723:30;26720:117;;;26756:79;;:::i;:::-;26720:117;26861:62;26915:7;26906:6;26895:9;26891:22;26861:62;:::i;:::-;26851:72;;26645:288;24373:2567;;;;;;;;;;;;;:::o;26946:116::-;27016:21;27031:5;27016:21;:::i;:::-;27009:5;27006:32;26996:60;;27052:1;27049;27042:12;26996:60;26946:116;:::o;27068:133::-;27111:5;27149:6;27136:20;27127:29;;27165:30;27189:5;27165:30;:::i;:::-;27068:133;;;;:::o;27207:323::-;27263:6;27312:2;27300:9;27291:7;27287:23;27283:32;27280:119;;;27318:79;;:::i;:::-;27280:119;27438:1;27463:50;27505:7;27496:6;27485:9;27481:22;27463:50;:::i;:::-;27453:60;;27409:114;27207:323;;;;:::o;27536:474::-;27604:6;27612;27661:2;27649:9;27640:7;27636:23;27632:32;27629:119;;;27667:79;;:::i;:::-;27629:119;27787:1;27812:53;27857:7;27848:6;27837:9;27833:22;27812:53;:::i;:::-;27802:63;;27758:117;27914:2;27940:53;27985:7;27976:6;27965:9;27961:22;27940:53;:::i;:::-;27930:63;;27885:118;27536:474;;;;;:::o;28016:2567::-;28219:6;28227;28235;28243;28251;28259;28267;28275;28283;28291;28340:3;28328:9;28319:7;28315:23;28311:33;28308:120;;;28347:79;;:::i;:::-;28308:120;28495:1;28484:9;28480:17;28467:31;28525:18;28517:6;28514:30;28511:117;;;28547:79;;:::i;:::-;28511:117;28652:62;28706:7;28697:6;28686:9;28682:22;28652:62;:::i;:::-;28642:72;;28438:286;28791:2;28780:9;28776:18;28763:32;28822:18;28814:6;28811:30;28808:117;;;28844:79;;:::i;:::-;28808:117;28949:78;29019:7;29010:6;28999:9;28995:22;28949:78;:::i;:::-;28939:88;;28734:303;29076:2;29102:53;29147:7;29138:6;29127:9;29123:22;29102:53;:::i;:::-;29092:63;;29047:118;29204:2;29230:53;29275:7;29266:6;29255:9;29251:22;29230:53;:::i;:::-;29220:63;;29175:118;29360:3;29349:9;29345:19;29332:33;29392:18;29384:6;29381:30;29378:117;;;29414:79;;:::i;:::-;29378:117;29519:63;29574:7;29565:6;29554:9;29550:22;29519:63;:::i;:::-;29509:73;;29303:289;29631:3;29658:53;29703:7;29694:6;29683:9;29679:22;29658:53;:::i;:::-;29648:63;;29602:119;29788:3;29777:9;29773:19;29760:33;29820:18;29812:6;29809:30;29806:117;;;29842:79;;:::i;:::-;29806:117;29947:63;30002:7;29993:6;29982:9;29978:22;29947:63;:::i;:::-;29937:73;;29731:289;30059:3;30086:53;30131:7;30122:6;30111:9;30107:22;30086:53;:::i;:::-;30076:63;;30030:119;30188:3;30215:53;30260:7;30251:6;30240:9;30236:22;30215:53;:::i;:::-;30205:63;;30159:119;30345:3;30334:9;30330:19;30317:33;30377:18;30369:6;30366:30;30363:117;;;30399:79;;:::i;:::-;30363:117;30504:62;30558:7;30549:6;30538:9;30534:22;30504:62;:::i;:::-;30494:72;;30288:288;28016:2567;;;;;;;;;;;;;:::o;30589:1089::-;30693:6;30701;30709;30717;30725;30774:3;30762:9;30753:7;30749:23;30745:33;30742:120;;;30781:79;;:::i;:::-;30742:120;30929:1;30918:9;30914:17;30901:31;30959:18;30951:6;30948:30;30945:117;;;30981:79;;:::i;:::-;30945:117;31086:62;31140:7;31131:6;31120:9;31116:22;31086:62;:::i;:::-;31076:72;;30872:286;31197:2;31223:53;31268:7;31259:6;31248:9;31244:22;31223:53;:::i;:::-;31213:63;;31168:118;31325:2;31351:53;31396:7;31387:6;31376:9;31372:22;31351:53;:::i;:::-;31341:63;;31296:118;31453:2;31479:53;31524:7;31515:6;31504:9;31500:22;31479:53;:::i;:::-;31469:63;;31424:118;31581:3;31608:53;31653:7;31644:6;31633:9;31629:22;31608:53;:::i;:::-;31598:63;;31552:119;30589:1089;;;;;;;;:::o;31684:2097::-;31860:6;31868;31876;31884;31892;31900;31908;31916;31965:3;31953:9;31944:7;31940:23;31936:33;31933:120;;;31972:79;;:::i;:::-;31933:120;32120:1;32109:9;32105:17;32092:31;32150:18;32142:6;32139:30;32136:117;;;32172:79;;:::i;:::-;32136:117;32277:62;32331:7;32322:6;32311:9;32307:22;32277:62;:::i;:::-;32267:72;;32063:286;32416:2;32405:9;32401:18;32388:32;32447:18;32439:6;32436:30;32433:117;;;32469:79;;:::i;:::-;32433:117;32574:78;32644:7;32635:6;32624:9;32620:22;32574:78;:::i;:::-;32564:88;;32359:303;32701:2;32727:53;32772:7;32763:6;32752:9;32748:22;32727:53;:::i;:::-;32717:63;;32672:118;32857:2;32846:9;32842:18;32829:32;32888:18;32880:6;32877:30;32874:117;;;32910:79;;:::i;:::-;32874:117;33015:63;33070:7;33061:6;33050:9;33046:22;33015:63;:::i;:::-;33005:73;;32800:288;33127:3;33154:53;33199:7;33190:6;33179:9;33175:22;33154:53;:::i;:::-;33144:63;;33098:119;33284:3;33273:9;33269:19;33256:33;33316:18;33308:6;33305:30;33302:117;;;33338:79;;:::i;:::-;33302:117;33443:63;33498:7;33489:6;33478:9;33474:22;33443:63;:::i;:::-;33433:73;;33227:289;33555:3;33582:53;33627:7;33618:6;33607:9;33603:22;33582:53;:::i;:::-;33572:63;;33526:119;33684:3;33711:53;33756:7;33747:6;33736:9;33732:22;33711:53;:::i;:::-;33701:63;;33655:119;31684:2097;;;;;;;;;;;:::o;33787:156::-;33927:8;33923:1;33915:6;33911:14;33904:32;33787:156;:::o;33949:365::-;34091:3;34112:66;34176:1;34171:3;34112:66;:::i;:::-;34105:73;;34187:93;34276:3;34187:93;:::i;:::-;34305:2;34300:3;34296:12;34289:19;;33949:365;;;:::o;34320:419::-;34486:4;34524:2;34513:9;34509:18;34501:26;;34573:9;34567:4;34563:20;34559:1;34548:9;34544:17;34537:47;34601:131;34727:4;34601:131;:::i;:::-;34593:139;;34320:419;;;:::o;34745:180::-;34793:77;34790:1;34783:88;34890:4;34887:1;34880:15;34914:4;34911:1;34904:15;34931:233;34970:3;34993:24;35011:5;34993:24;:::i;:::-;34984:33;;35039:66;35032:5;35029:77;35026:103;;;35109:18;;:::i;:::-;35026:103;35156:1;35149:5;35145:13;35138:20;;34931:233;;;:::o;35170:180::-;35218:77;35215:1;35208:88;35315:4;35312:1;35305:15;35339:4;35336:1;35329:15;35356:191;35396:4;35416:20;35434:1;35416:20;:::i;:::-;35411:25;;35450:20;35468:1;35450:20;:::i;:::-;35445:25;;35489:1;35486;35483:8;35480:34;;;35494:18;;:::i;:::-;35480:34;35539:1;35536;35532:9;35524:17;;35356:191;;;;:::o;35553:305::-;35593:3;35612:20;35630:1;35612:20;:::i;:::-;35607:25;;35646:20;35664:1;35646:20;:::i;:::-;35641:25;;35800:1;35732:66;35728:74;35725:1;35722:81;35719:107;;;35806:18;;:::i;:::-;35719:107;35850:1;35847;35843:9;35836:16;;35553:305;;;;:::o;35864:180::-;35912:77;35909:1;35902:88;36009:4;36006:1;35999:15;36033:4;36030:1;36023:15;36050:185;36090:1;36107:20;36125:1;36107:20;:::i;:::-;36102:25;;36141:20;36159:1;36141:20;:::i;:::-;36136:25;;36180:1;36170:35;;36185:18;;:::i;:::-;36170:35;36227:1;36224;36220:9;36215:14;;36050:185;;;;:::o;36241:348::-;36281:7;36304:20;36322:1;36304:20;:::i;:::-;36299:25;;36338:20;36356:1;36338:20;:::i;:::-;36333:25;;36526:1;36458:66;36454:74;36451:1;36448:81;36443:1;36436:9;36429:17;36425:105;36422:131;;;36533:18;;:::i;:::-;36422:131;36581:1;36578;36574:9;36563:20;;36241:348;;;;:::o;36595:147::-;36696:11;36733:3;36718:18;;36595:147;;;;:::o;36748:114::-;;:::o;36868:398::-;37027:3;37048:83;37129:1;37124:3;37048:83;:::i;:::-;37041:90;;37140:93;37229:3;37140:93;:::i;:::-;37258:1;37253:3;37249:11;37242:18;;36868:398;;;:::o;37272:379::-;37456:3;37478:147;37621:3;37478:147;:::i;:::-;37471:154;;37642:3;37635:10;;37272:379;;;:::o;37657:148::-;37759:11;37796:3;37781:18;;37657:148;;;;:::o;37811:400::-;37971:3;37992:84;38074:1;38069:3;37992:84;:::i;:::-;37985:91;;38085:93;38174:3;38085:93;:::i;:::-;38203:1;38198:3;38194:11;38187:18;;37811:400;;;:::o;38217:381::-;38402:3;38424:148;38568:3;38424:148;:::i;:::-;38417:155;;38589:3;38582:10;;38217:381;;;:::o;38604:180::-;38652:77;38649:1;38642:88;38749:4;38746:1;38739:15;38773:4;38770:1;38763:15;38790:320;38834:6;38871:1;38865:4;38861:12;38851:22;;38918:1;38912:4;38908:12;38939:18;38929:81;;38995:4;38987:6;38983:17;38973:27;;38929:81;39057:2;39049:6;39046:14;39026:18;39023:38;39020:84;;;39076:18;;:::i;:::-;39020:84;38841:269;38790:320;;;:::o;39116:141::-;39165:4;39188:3;39180:11;;39211:3;39208:1;39201:14;39245:4;39242:1;39232:18;39224:26;;39116:141;;;:::o;39287:845::-;39390:3;39427:5;39421:12;39456:36;39482:9;39456:36;:::i;:::-;39508:89;39590:6;39585:3;39508:89;:::i;:::-;39501:96;;39628:1;39617:9;39613:17;39644:1;39639:137;;;;39790:1;39785:341;;;;39606:520;;39639:137;39723:4;39719:9;39708;39704:25;39699:3;39692:38;39759:6;39754:3;39750:16;39743:23;;39639:137;;39785:341;39852:38;39884:5;39852:38;:::i;:::-;39912:1;39926:154;39940:6;39937:1;39934:13;39926:154;;;40014:7;40008:14;40004:1;39999:3;39995:11;39988:35;40064:1;40055:7;40051:15;40040:26;;39962:4;39959:1;39955:12;39950:17;;39926:154;;;40109:6;40104:3;40100:16;40093:23;;39792:334;;39606:520;;39394:738;;39287:845;;;;:::o;40138:269::-;40267:3;40289:92;40377:3;40368:6;40289:92;:::i;:::-;40282:99;;40398:3;40391:10;;40138:269;;;;:::o;40413:377::-;40519:3;40547:39;40580:5;40547:39;:::i;:::-;40602:89;40684:6;40679:3;40602:89;:::i;:::-;40595:96;;40700:52;40745:6;40740:3;40733:4;40726:5;40722:16;40700:52;:::i;:::-;40777:6;40772:3;40768:16;40761:23;;40523:267;40413:377;;;;:::o;40796:275::-;40928:3;40950:95;41041:3;41032:6;40950:95;:::i;:::-;40943:102;;41062:3;41055:10;;40796:275;;;;:::o;41077:225::-;41217:34;41213:1;41205:6;41201:14;41194:58;41286:8;41281:2;41273:6;41269:15;41262:33;41077:225;:::o;41308:366::-;41450:3;41471:67;41535:2;41530:3;41471:67;:::i;:::-;41464:74;;41547:93;41636:3;41547:93;:::i;:::-;41665:2;41660:3;41656:12;41649:19;;41308:366;;;:::o;41680:419::-;41846:4;41884:2;41873:9;41869:18;41861:26;;41933:9;41927:4;41923:20;41919:1;41908:9;41904:17;41897:47;41961:131;42087:4;41961:131;:::i;:::-;41953:139;;41680:419;;;:::o;42105:182::-;42245:34;42241:1;42233:6;42229:14;42222:58;42105:182;:::o;42293:366::-;42435:3;42456:67;42520:2;42515:3;42456:67;:::i;:::-;42449:74;;42532:93;42621:3;42532:93;:::i;:::-;42650:2;42645:3;42641:12;42634:19;;42293:366;;;:::o;42665:419::-;42831:4;42869:2;42858:9;42854:18;42846:26;;42918:9;42912:4;42908:20;42904:1;42893:9;42889:17;42882:47;42946:131;43072:4;42946:131;:::i;:::-;42938:139;;42665:419;;;:::o
Swarm Source
ipfs://5d8c29a83489605a7b53bee70bbf98deac382585a28b2e885ee7acc949d9d951
A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.