More Info
Private Name Tags
ContractCreator
Latest 20 from a total of 20 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Transfer Ownersh... | 9336644 | 32 days ago | IN | 0 APE | 0.00074004 | ||||
Update Caller | 9332419 | 33 days ago | IN | 0 APE | 0.00122924 | ||||
Add Tier | 9330839 | 33 days ago | IN | 0 APE | 0.00256965 | ||||
Update Caller | 9330779 | 33 days ago | IN | 0 APE | 0.00122924 | ||||
Create Match | 9303757 | 33 days ago | IN | 0 APE | 0.00620765 | ||||
Pick Winner | 9303126 | 33 days ago | IN | 0 APE | 0.00387581 | ||||
Enroll | 9303114 | 33 days ago | IN | 1 wei | 0.00315956 | ||||
Enroll | 9303050 | 33 days ago | IN | 1 wei | 0.00402895 | ||||
Create Match | 9303040 | 33 days ago | IN | 0 APE | 0.0062183 | ||||
Pick Winner | 9302851 | 33 days ago | IN | 0 APE | 0.00407056 | ||||
Enroll | 9302843 | 33 days ago | IN | 1 wei | 0.00315956 | ||||
Enroll | 9302834 | 33 days ago | IN | 1 wei | 0.00315956 | ||||
Enroll | 9302831 | 33 days ago | IN | 1 wei | 0.00402895 | ||||
Extend Match End... | 9302759 | 33 days ago | IN | 0 APE | 0.0008597 | ||||
Extend Match End... | 9302547 | 33 days ago | IN | 0 APE | 0.00086 | ||||
Create Match | 9300533 | 33 days ago | IN | 0 APE | 0.006653 | ||||
Add Tier | 9300355 | 33 days ago | IN | 0 APE | 0.00256812 | ||||
Add Tier | 9300262 | 33 days ago | IN | 0 APE | 0.00206192 | ||||
Update Caller | 9299778 | 33 days ago | IN | 0 APE | 0.00122924 | ||||
Withdraw NFT | 9298986 | 33 days ago | IN | 0 APE | 0.00130288 |
Loading...
Loading
Contract Source Code Verified (Exact Match)
Contract Name:
Winpad
Compiler Version
v0.8.26+commit.8a97fa7a
Contract Source Code (Solidity)
/** *Submitted for verification at apescan.io on 2025-02-04 */ // ___ ___ ___ ___ _____ // /__/\ ___ /__/\ / /\ / /\ / /::\ // _\_ \:\ / /\ \ \:\ / /::\ / /::\ / /:/\:\ // /__/\ \:\ / /:/ \ \:\ / /:/\:\ / /:/\:\ / /:/ \:\ // _\_ \:\ \:\ /__/::\ _____\__\:\ / /:/~/:/ / /:/~/::\ /__/:/ \__\:| // /__/\ \:\ \:\ \__\/\:\__ /__/::::::::\ /__/:/ /:/ /__/:/ /:/\:\ \ \:\ / /:/ // \ \:\ \:\/:/ \ \:\/\ \ \:\~~\~~\/ \ \:\/:/ \ \:\/:/__\/ \ \:\ /:/ // \ \:\ \::/ \__\::/ \ \:\ ~~~ \ \::/ \ \::/ \ \:\/:/ // \ \:\/:/ /__/:/ \ \:\ \ \:\ \ \:\ \ \::/ // \ \::/ \__\/ \ \:\ \ \:\ \ \:\ \__\/ // \__\/ \__\/ \__\/ \__\/ // Official Contract of Winpad. // File: @openzeppelin/contracts/utils/ReentrancyGuard.sol // OpenZeppelin Contracts (last updated v5.1.0) (utils/ReentrancyGuard.sol) pragma solidity ^0.8.20; /** * @dev Contract module that helps prevent reentrant calls to a function. * * Inheriting from `ReentrancyGuard` will make the {nonReentrant} modifier * available, which can be applied to functions to make sure there are no nested * (reentrant) calls to them. * * Note that because there is a single `nonReentrant` guard, functions marked as * `nonReentrant` may not call one another. This can be worked around by making * those functions `private`, and then adding `external` `nonReentrant` entry * points to them. * * TIP: If EIP-1153 (transient storage) is available on the chain you're deploying at, * consider using {ReentrancyGuardTransient} instead. * * TIP: If you would like to learn more about reentrancy and alternative ways * to protect against it, check out our blog post * https://blog.openzeppelin.com/reentrancy-after-istanbul/[Reentrancy After Istanbul]. */ abstract contract ReentrancyGuard { // Booleans are more expensive than uint256 or any type that takes up a full // word because each write operation emits an extra SLOAD to first read the // slot's contents, replace the bits taken up by the boolean, and then write // back. This is the compiler's defense against contract upgrades and // pointer aliasing, and it cannot be disabled. // The values being non-zero value makes deployment a bit more expensive, // but in exchange the refund on every call to nonReentrant will be lower in // amount. Since refunds are capped to a percentage of the total // transaction's gas, it is best to keep them low in cases like this one, to // increase the likelihood of the full refund coming into effect. uint256 private constant NOT_ENTERED = 1; uint256 private constant ENTERED = 2; uint256 private _status; /** * @dev Unauthorized reentrant call. */ error ReentrancyGuardReentrantCall(); constructor() { _status = NOT_ENTERED; } /** * @dev Prevents a contract from calling itself, directly or indirectly. * Calling a `nonReentrant` function from another `nonReentrant` * function is not supported. It is possible to prevent this from happening * by making the `nonReentrant` function external, and making it call a * `private` function that does the actual work. */ modifier nonReentrant() { _nonReentrantBefore(); _; _nonReentrantAfter(); } function _nonReentrantBefore() private { // On the first call to nonReentrant, _status will be NOT_ENTERED if (_status == ENTERED) { revert ReentrancyGuardReentrantCall(); } // Any calls to nonReentrant after this point will fail _status = ENTERED; } function _nonReentrantAfter() private { // By storing the original value once again, a refund is triggered (see // https://eips.ethereum.org/EIPS/eip-2200) _status = NOT_ENTERED; } /** * @dev Returns true if the reentrancy guard is currently set to "entered", which indicates there is a * `nonReentrant` function in the call stack. */ function _reentrancyGuardEntered() internal view returns (bool) { return _status == ENTERED; } } // File: @openzeppelin/contracts/utils/Context.sol // OpenZeppelin Contracts (last updated v5.0.1) (utils/Context.sol) pragma solidity ^0.8.20; /** * @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/contracts/access/Ownable.sol // OpenZeppelin Contracts (last updated v5.0.0) (access/Ownable.sol) pragma solidity ^0.8.20; /** * @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. * * The initial owner is set to the address provided by the deployer. 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; /** * @dev The caller account is not authorized to perform an operation. */ error OwnableUnauthorizedAccount(address account); /** * @dev The owner is not a valid owner account. (eg. `address(0)`) */ error OwnableInvalidOwner(address owner); event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); /** * @dev Initializes the contract setting the address provided by the deployer as the initial owner. */ constructor(address initialOwner) { if (initialOwner == address(0)) { revert OwnableInvalidOwner(address(0)); } _transferOwnership(initialOwner); } /** * @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 { if (owner() != _msgSender()) { revert OwnableUnauthorizedAccount(_msgSender()); } } /** * @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 { if (newOwner == address(0)) { revert OwnableInvalidOwner(address(0)); } _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: @openzeppelin/contracts/utils/math/SafeMath.sol // OpenZeppelin Contracts (last updated v4.9.0) (utils/math/SafeMath.sol) pragma solidity ^0.8.0; // CAUTION // This version of SafeMath should only be used with Solidity 0.8 or later, // because it relies on the compiler's built in overflow checks. /** * @dev Wrappers over Solidity's arithmetic operations. * * NOTE: `SafeMath` is generally not needed starting with Solidity 0.8, since the compiler * now has built in overflow checking. */ library SafeMath { /** * @dev Returns the addition of two unsigned integers, with an overflow flag. * * _Available since v3.4._ */ function tryAdd(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { uint256 c = a + b; if (c < a) return (false, 0); return (true, c); } } /** * @dev Returns the subtraction of two unsigned integers, with an overflow flag. * * _Available since v3.4._ */ function trySub(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { if (b > a) return (false, 0); return (true, a - b); } } /** * @dev Returns the multiplication of two unsigned integers, with an overflow flag. * * _Available since v3.4._ */ function tryMul(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { // Gas optimization: this is cheaper than requiring 'a' not being zero, but the // benefit is lost if 'b' is also tested. // See: https://github.com/OpenZeppelin/openzeppelin-contracts/pull/522 if (a == 0) return (true, 0); uint256 c = a * b; if (c / a != b) return (false, 0); return (true, c); } } /** * @dev Returns the division of two unsigned integers, with a division by zero flag. * * _Available since v3.4._ */ function tryDiv(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { if (b == 0) return (false, 0); return (true, a / b); } } /** * @dev Returns the remainder of dividing two unsigned integers, with a division by zero flag. * * _Available since v3.4._ */ function tryMod(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { if (b == 0) return (false, 0); return (true, a % b); } } /** * @dev Returns the addition of two unsigned integers, reverting on * overflow. * * Counterpart to Solidity's `+` operator. * * Requirements: * * - Addition cannot overflow. */ function add(uint256 a, uint256 b) internal pure returns (uint256) { return a + b; } /** * @dev Returns the subtraction of two unsigned integers, reverting on * overflow (when the result is negative). * * Counterpart to Solidity's `-` operator. * * Requirements: * * - Subtraction cannot overflow. */ function sub(uint256 a, uint256 b) internal pure returns (uint256) { return a - b; } /** * @dev Returns the multiplication of two unsigned integers, reverting on * overflow. * * Counterpart to Solidity's `*` operator. * * Requirements: * * - Multiplication cannot overflow. */ function mul(uint256 a, uint256 b) internal pure returns (uint256) { return a * b; } /** * @dev Returns the integer division of two unsigned integers, reverting on * division by zero. The result is rounded towards zero. * * Counterpart to Solidity's `/` operator. * * Requirements: * * - The divisor cannot be zero. */ function div(uint256 a, uint256 b) internal pure returns (uint256) { return a / b; } /** * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo), * reverting when dividing by zero. * * Counterpart to Solidity's `%` operator. This function uses a `revert` * opcode (which leaves remaining gas untouched) while Solidity uses an * invalid opcode to revert (consuming all remaining gas). * * Requirements: * * - The divisor cannot be zero. */ function mod(uint256 a, uint256 b) internal pure returns (uint256) { return a % b; } /** * @dev Returns the subtraction of two unsigned integers, reverting with custom message on * overflow (when the result is negative). * * CAUTION: This function is deprecated because it requires allocating memory for the error * message unnecessarily. For custom revert reasons use {trySub}. * * Counterpart to Solidity's `-` operator. * * Requirements: * * - Subtraction cannot overflow. */ function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { unchecked { require(b <= a, errorMessage); return a - b; } } /** * @dev Returns the integer division of two unsigned integers, reverting with custom message on * division by zero. The result is rounded towards zero. * * Counterpart to Solidity's `/` operator. Note: this function uses a * `revert` opcode (which leaves remaining gas untouched) while Solidity * uses an invalid opcode to revert (consuming all remaining gas). * * Requirements: * * - The divisor cannot be zero. */ function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { unchecked { require(b > 0, errorMessage); return a / b; } } /** * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo), * reverting with custom message when dividing by zero. * * CAUTION: This function is deprecated because it requires allocating memory for the error * message unnecessarily. For custom revert reasons use {tryMod}. * * Counterpart to Solidity's `%` operator. This function uses a `revert` * opcode (which leaves remaining gas untouched) while Solidity uses an * invalid opcode to revert (consuming all remaining gas). * * Requirements: * * - The divisor cannot be zero. */ function mod(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { unchecked { require(b > 0, errorMessage); return a % b; } } } // File: contracts/Winpad.sol pragma solidity ^0.8.26; interface INft { function transferFrom( address from, address to, uint256 tokenId ) external; function safeTransferFrom( address from, address to, uint256 tokenId ) external; function balanceOf(address owner) external view returns (uint256); function ownerOf(uint256 tokenId) external view returns (address); } contract Winpad is Ownable, ReentrancyGuard { using SafeMath for uint256; // Revenue distribution percentages uint8 public constant FEE_PERCENT = 8; uint8 public constant TREASURY_PERCENT = 72; uint8 public constant OPERATIONS_PERCENT = 20; // Revenue distribution addresses address payable public feeAccount; address payable public treasuryAccount; address payable public operationsAccount; // Entry tier structure struct EntryTier { uint256 apeCost; uint256 baseEntries; uint256 bonusEntries; bool exists; } // Match structure struct Match { bytes32 id; uint256[] allowedTiers; address nftAddress; uint256 nftId; uint256 totalEntries; uint256 endDate; address winner; bool isEnded; bool exists; } // Participant tracking struct Participation { address participant; uint256 tierId; // Add back tierId uint256 entries; } // Storage mapping(uint256 => EntryTier) public tiers; uint256 public nextTierId = 1; mapping(bytes32 => Match) public matches; mapping(bytes32 => mapping(address => bool)) public hasUsedFreeEntry; mapping(bytes32 => Participation[]) public participations; bytes32[] public allMatchIds; mapping(address => bool) public authorizedCallers; // Free entry for those NFTs. address[] public entryNFTs; // Events event MatchCreated( bytes32 indexed matchId, address nftAddress, uint256 nftId, uint256 endDate ); event ParticipantEnrolled( bytes32 indexed matchId, address participant, uint256 entries ); event MatchCanceled(bytes32 indexed matchId, uint256 totalRefunded); event MatchExtended(bytes32 indexed matchId, uint256 endDate); event WinnerSelected( bytes32 indexed matchId, address winner, uint256 entries ); event FundsDistributed( bytes32 indexed matchId, uint256 totalAmount, uint256 fee, uint256 treasury, uint256 operations ); event TierUpdated( uint256 indexed tierId, uint256 apeCost, uint256 baseEntries, uint256 bonusEntries ); event CallerUpdated(address indexed caller, bool status); event WithdrawnNFT( address indexed nftAddress, uint256 indexed tokenId, address indexed recipient ); modifier onlyCaller() { require( owner() == msg.sender || authorizedCallers[msg.sender], "Unauthorized" ); _; } constructor( address _initialOwner, address payable _feeAccount, address payable _treasuryAccount, address payable _operationsAccount ) Ownable(_initialOwner) { feeAccount = _feeAccount; treasuryAccount = _treasuryAccount; operationsAccount = _operationsAccount; } // Entry NFTs management function addEntryNFT(address nft) external onlyOwner { entryNFTs.push(nft); } function removeEntryNFT(uint256 index) external onlyOwner { require(index < entryNFTs.length, "Index out of bounds"); entryNFTs[index] = entryNFTs[entryNFTs.length - 1]; entryNFTs.pop(); } // Tier management function addTier( uint256 apeCost, uint256 baseEntries, uint256 bonusEntries ) external onlyOwner { tiers[nextTierId] = EntryTier(apeCost, baseEntries, bonusEntries, true); emit TierUpdated(nextTierId, apeCost, baseEntries, bonusEntries); nextTierId++; } // Match creation function createMatch( uint256[] memory allowedTiers, address nftAddress, uint256 nftId, uint256 duration ) external onlyOwner returns (bytes32 matchId) { require(duration > 0, "Invalid duration"); require( INft(nftAddress).ownerOf(nftId) == address(this), "NFT not owned" ); matchId = keccak256( abi.encodePacked(block.timestamp, nftAddress, nftId, msg.sender) ); matches[matchId] = Match({ id: matchId, allowedTiers: allowedTiers, nftAddress: nftAddress, nftId: nftId, totalEntries: 0, endDate: block.timestamp + duration, winner: address(0), isEnded: false, exists: true }); allMatchIds.push(matchId); emit MatchCreated( matchId, nftAddress, nftId, block.timestamp + duration ); } // Participant enrollment function enroll(bytes32 matchId, uint256 tierId) external payable nonReentrant { Match storage m = matches[matchId]; EntryTier memory tier = tiers[tierId]; require(m.exists, "Invalid match"); require(!m.isEnded, "Match ended"); require(block.timestamp < m.endDate, "Enrollment closed"); require(tier.exists, "Invalid tier"); require(contains(m.allowedTiers, tierId), "Tier not allowed"); require(msg.value == tier.apeCost, "Incorrect APE amount"); if (tier.apeCost == 0) { require( !hasUsedFreeEntry[matchId][msg.sender], "Free entry already used" ); bool hasEntryNFT = false; for (uint256 i = 0; i < entryNFTs.length; i++) { if (INft(entryNFTs[i]).balanceOf(msg.sender) > 0) { hasEntryNFT = true; break; } } require(hasEntryNFT, "No qualifying NFT found"); hasUsedFreeEntry[matchId][msg.sender] = true; } uint256 totalEntries = tier.baseEntries + tier.bonusEntries; participations[matchId].push( Participation(msg.sender, tierId, totalEntries) ); m.totalEntries += totalEntries; emit ParticipantEnrolled(matchId, msg.sender, totalEntries); } // Match resolution function pickWinner(bytes32 matchId, uint256 randomSeed) external onlyCaller nonReentrant { Match storage m = matches[matchId]; require(!m.isEnded, "Match already ended"); uint256 randomNumber = uint256( keccak256(abi.encodePacked(randomSeed, block.timestamp, msg.sender)) ) % m.totalEntries; uint256 cumulative; address winner; uint256 winnerEntries; Participation[] memory parts = participations[matchId]; for (uint256 i = 0; i < parts.length; i++) { Participation memory p = parts[i]; if (randomNumber < cumulative + p.entries) { winner = p.participant; winnerEntries = p.entries; break; } cumulative += p.entries; } uint256 totalPrizePool = address(this).balance; uint256 feeAmount = totalPrizePool.mul(FEE_PERCENT).div(100); uint256 treasuryAmount = totalPrizePool.mul(TREASURY_PERCENT).div(100); uint256 operationsAmount = totalPrizePool.sub(feeAmount).sub( treasuryAmount ); feeAccount.transfer(feeAmount); treasuryAccount.transfer(treasuryAmount); operationsAccount.transfer(operationsAmount); require( INft(m.nftAddress).ownerOf(m.nftId) == address(this), "Contract does not own NFT" ); INft(m.nftAddress).transferFrom(address(this), winner, m.nftId); m.winner = winner; m.isEnded = true; emit FundsDistributed( matchId, totalPrizePool, feeAmount, treasuryAmount, operationsAmount ); emit WinnerSelected(matchId, winner, winnerEntries); } // Fix the cancellation logic function cancelMatch(bytes32 matchId) external onlyCaller nonReentrant { Match storage m = matches[matchId]; require(!m.isEnded, "Match already ended"); uint256 totalRefunded; for (uint256 i = 0; i < participations[matchId].length; i++) { Participation memory p = participations[matchId][i]; EntryTier memory tier = tiers[p.tierId]; // Now works payable(p.participant).transfer(tier.apeCost); totalRefunded += tier.apeCost; } INft(m.nftAddress).transferFrom(address(this), owner(), m.nftId); m.isEnded = true; emit MatchCanceled(matchId, totalRefunded); } // Extending match duration function extendMatchEndDate(bytes32 matchId, uint256 additionalDuration) external onlyCaller { Match storage m = matches[matchId]; require(!m.isEnded, "Match already ended"); require(additionalDuration > 0, "Invalid duration"); m.endDate += additionalDuration; emit MatchExtended(matchId, m.endDate); } // Secure NFT withdrawal function function withdrawNFT(address nftAddress, uint256 tokenId) external onlyOwner nonReentrant { // Verify contract owns the NFT require( INft(nftAddress).ownerOf(tokenId) == address(this), "Contract does not own this NFT" ); // Transfer NFT to recipient INft(nftAddress).safeTransferFrom(address(this), owner(), tokenId); // Emit withdrawal event emit WithdrawnNFT(nftAddress, tokenId, owner()); } // View functions function getEntryTypes() public view returns (EntryTier[] memory) { EntryTier[] memory types = new EntryTier[](nextTierId - 1); for (uint256 i = 1; i < nextTierId; i++) { types[i - 1] = tiers[i]; } return types; } function getOngoingMatches() public view returns (Match[] memory) { return _filterMatches(0); } function getMatchHistory() public view returns (Match[] memory) { return _filterMatches(1); } function getReadyMatches() public view returns (Match[] memory) { return _filterMatches(2); } function getAllEntryNFTs() public view returns (address[] memory) { return entryNFTs; } function getParticipations(bytes32 matchId) public view returns (Participation[] memory) { return participations[matchId]; } // Internal helpers function _filterMatches(uint8 filterType) private view returns (Match[] memory) { Match[] memory result = new Match[](allMatchIds.length); uint256 count = 0; for (uint256 i = 0; i < allMatchIds.length; i++) { bytes32 id = allMatchIds[i]; Match storage m = matches[id]; bool include; if (filterType == 0) { // Ongoing include = !m.isEnded && block.timestamp < m.endDate; } else if (filterType == 1) { // History include = m.isEnded; } else if (filterType == 2) { // Ready include = !m.isEnded && (block.timestamp >= m.endDate); } if (include) { result[count] = m; count++; } } Match[] memory trimmed = new Match[](count); for (uint256 i = 0; i < count; i++) { trimmed[i] = result[i]; } return trimmed; } function contains(uint256[] memory arr, uint256 value) private pure returns (bool) { for (uint256 i = 0; i < arr.length; i++) { if (arr[i] == value) return true; } return false; } // Authorization management function updateCaller(address caller, bool status) external onlyOwner { authorizedCallers[caller] = status; emit CallerUpdated(caller, status); } receive() external payable {} }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
Contract ABI
API[{"inputs":[{"internalType":"address","name":"_initialOwner","type":"address"},{"internalType":"address payable","name":"_feeAccount","type":"address"},{"internalType":"address payable","name":"_treasuryAccount","type":"address"},{"internalType":"address payable","name":"_operationsAccount","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"OwnableInvalidOwner","type":"error"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"OwnableUnauthorizedAccount","type":"error"},{"inputs":[],"name":"ReentrancyGuardReentrantCall","type":"error"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"caller","type":"address"},{"indexed":false,"internalType":"bool","name":"status","type":"bool"}],"name":"CallerUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"matchId","type":"bytes32"},{"indexed":false,"internalType":"uint256","name":"totalAmount","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"fee","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"treasury","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"operations","type":"uint256"}],"name":"FundsDistributed","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"matchId","type":"bytes32"},{"indexed":false,"internalType":"uint256","name":"totalRefunded","type":"uint256"}],"name":"MatchCanceled","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"matchId","type":"bytes32"},{"indexed":false,"internalType":"address","name":"nftAddress","type":"address"},{"indexed":false,"internalType":"uint256","name":"nftId","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"endDate","type":"uint256"}],"name":"MatchCreated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"matchId","type":"bytes32"},{"indexed":false,"internalType":"uint256","name":"endDate","type":"uint256"}],"name":"MatchExtended","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"matchId","type":"bytes32"},{"indexed":false,"internalType":"address","name":"participant","type":"address"},{"indexed":false,"internalType":"uint256","name":"entries","type":"uint256"}],"name":"ParticipantEnrolled","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"tierId","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"apeCost","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"baseEntries","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"bonusEntries","type":"uint256"}],"name":"TierUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"matchId","type":"bytes32"},{"indexed":false,"internalType":"address","name":"winner","type":"address"},{"indexed":false,"internalType":"uint256","name":"entries","type":"uint256"}],"name":"WinnerSelected","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"nftAddress","type":"address"},{"indexed":true,"internalType":"uint256","name":"tokenId","type":"uint256"},{"indexed":true,"internalType":"address","name":"recipient","type":"address"}],"name":"WithdrawnNFT","type":"event"},{"inputs":[],"name":"FEE_PERCENT","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"OPERATIONS_PERCENT","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"TREASURY_PERCENT","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"nft","type":"address"}],"name":"addEntryNFT","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"apeCost","type":"uint256"},{"internalType":"uint256","name":"baseEntries","type":"uint256"},{"internalType":"uint256","name":"bonusEntries","type":"uint256"}],"name":"addTier","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"allMatchIds","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"authorizedCallers","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"matchId","type":"bytes32"}],"name":"cancelMatch","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"allowedTiers","type":"uint256[]"},{"internalType":"address","name":"nftAddress","type":"address"},{"internalType":"uint256","name":"nftId","type":"uint256"},{"internalType":"uint256","name":"duration","type":"uint256"}],"name":"createMatch","outputs":[{"internalType":"bytes32","name":"matchId","type":"bytes32"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"matchId","type":"bytes32"},{"internalType":"uint256","name":"tierId","type":"uint256"}],"name":"enroll","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"entryNFTs","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"matchId","type":"bytes32"},{"internalType":"uint256","name":"additionalDuration","type":"uint256"}],"name":"extendMatchEndDate","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"feeAccount","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getAllEntryNFTs","outputs":[{"internalType":"address[]","name":"","type":"address[]"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getEntryTypes","outputs":[{"components":[{"internalType":"uint256","name":"apeCost","type":"uint256"},{"internalType":"uint256","name":"baseEntries","type":"uint256"},{"internalType":"uint256","name":"bonusEntries","type":"uint256"},{"internalType":"bool","name":"exists","type":"bool"}],"internalType":"struct Winpad.EntryTier[]","name":"","type":"tuple[]"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getMatchHistory","outputs":[{"components":[{"internalType":"bytes32","name":"id","type":"bytes32"},{"internalType":"uint256[]","name":"allowedTiers","type":"uint256[]"},{"internalType":"address","name":"nftAddress","type":"address"},{"internalType":"uint256","name":"nftId","type":"uint256"},{"internalType":"uint256","name":"totalEntries","type":"uint256"},{"internalType":"uint256","name":"endDate","type":"uint256"},{"internalType":"address","name":"winner","type":"address"},{"internalType":"bool","name":"isEnded","type":"bool"},{"internalType":"bool","name":"exists","type":"bool"}],"internalType":"struct Winpad.Match[]","name":"","type":"tuple[]"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getOngoingMatches","outputs":[{"components":[{"internalType":"bytes32","name":"id","type":"bytes32"},{"internalType":"uint256[]","name":"allowedTiers","type":"uint256[]"},{"internalType":"address","name":"nftAddress","type":"address"},{"internalType":"uint256","name":"nftId","type":"uint256"},{"internalType":"uint256","name":"totalEntries","type":"uint256"},{"internalType":"uint256","name":"endDate","type":"uint256"},{"internalType":"address","name":"winner","type":"address"},{"internalType":"bool","name":"isEnded","type":"bool"},{"internalType":"bool","name":"exists","type":"bool"}],"internalType":"struct Winpad.Match[]","name":"","type":"tuple[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"matchId","type":"bytes32"}],"name":"getParticipations","outputs":[{"components":[{"internalType":"address","name":"participant","type":"address"},{"internalType":"uint256","name":"tierId","type":"uint256"},{"internalType":"uint256","name":"entries","type":"uint256"}],"internalType":"struct Winpad.Participation[]","name":"","type":"tuple[]"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getReadyMatches","outputs":[{"components":[{"internalType":"bytes32","name":"id","type":"bytes32"},{"internalType":"uint256[]","name":"allowedTiers","type":"uint256[]"},{"internalType":"address","name":"nftAddress","type":"address"},{"internalType":"uint256","name":"nftId","type":"uint256"},{"internalType":"uint256","name":"totalEntries","type":"uint256"},{"internalType":"uint256","name":"endDate","type":"uint256"},{"internalType":"address","name":"winner","type":"address"},{"internalType":"bool","name":"isEnded","type":"bool"},{"internalType":"bool","name":"exists","type":"bool"}],"internalType":"struct Winpad.Match[]","name":"","type":"tuple[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"","type":"bytes32"},{"internalType":"address","name":"","type":"address"}],"name":"hasUsedFreeEntry","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"name":"matches","outputs":[{"internalType":"bytes32","name":"id","type":"bytes32"},{"internalType":"address","name":"nftAddress","type":"address"},{"internalType":"uint256","name":"nftId","type":"uint256"},{"internalType":"uint256","name":"totalEntries","type":"uint256"},{"internalType":"uint256","name":"endDate","type":"uint256"},{"internalType":"address","name":"winner","type":"address"},{"internalType":"bool","name":"isEnded","type":"bool"},{"internalType":"bool","name":"exists","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"nextTierId","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"operationsAccount","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"","type":"bytes32"},{"internalType":"uint256","name":"","type":"uint256"}],"name":"participations","outputs":[{"internalType":"address","name":"participant","type":"address"},{"internalType":"uint256","name":"tierId","type":"uint256"},{"internalType":"uint256","name":"entries","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"matchId","type":"bytes32"},{"internalType":"uint256","name":"randomSeed","type":"uint256"}],"name":"pickWinner","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"index","type":"uint256"}],"name":"removeEntryNFT","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"tiers","outputs":[{"internalType":"uint256","name":"apeCost","type":"uint256"},{"internalType":"uint256","name":"baseEntries","type":"uint256"},{"internalType":"uint256","name":"bonusEntries","type":"uint256"},{"internalType":"bool","name":"exists","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"treasuryAccount","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"caller","type":"address"},{"internalType":"bool","name":"status","type":"bool"}],"name":"updateCaller","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"nftAddress","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"withdrawNFT","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
60806040526001600655348015610014575f80fd5b5060405161494a38038061494a833981810160405281019061003691906102e1565b835f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036100a7575f6040517f1e4fbdf700000000000000000000000000000000000000000000000000000000815260040161009e9190610354565b60405180910390fd5b6100b68161018760201b60201c565b50600180819055508260025f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508160035f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508060045f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050505061036d565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050815f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6102758261024c565b9050919050565b6102858161026b565b811461028f575f80fd5b50565b5f815190506102a08161027c565b92915050565b5f6102b08261024c565b9050919050565b6102c0816102a6565b81146102ca575f80fd5b50565b5f815190506102db816102b7565b92915050565b5f805f80608085870312156102f9576102f8610248565b5b5f61030687828801610292565b9450506020610317878288016102cd565b9350506040610328878288016102cd565b9250506060610339878288016102cd565b91505092959194509250565b61034e8161026b565b82525050565b5f6020820190506103675f830184610345565b92915050565b6145d08061037a5f395ff3fe6080604052600436106101f1575f3560e01c806380e36dd81161010c578063c82db8f91161009f578063dfbed6231161006e578063dfbed623146106fe578063e7e8517c14610726578063eaf98d2314610750578063ecdc2c011461077a578063f2fde38b146107b8576101f8565b8063c82db8f914610656578063cc8db4ff1461067e578063cfb95e17146106a6578063dc3a4e9b146106e2576101f8565b80639a1564f0116100db5780639a1564f0146105975780639dd45d77146105c15780639fe9ada3146105eb578063b82ee8c71461062e576101f8565b806380e36dd8146104dd57806383d5e726146105075780638da5cb5b1461053157806398eeafc41461055b576101f8565b8063463fec0f1161018457806361eba6521161015357806361eba6521461044b5780636358ec571461047557806365e17c9d1461049d578063715018a6146104c7576101f8565b8063463fec0f1461036f578063536fff6c146103ab57806354f276b9146103e75780636088e93a14610423576101f8565b80630f5f1dbc116101c05780630f5f1dbc146102b75780631966cdbe146102e15780632f333d2e14610309578063339b2cff14610345576101f8565b8063039af9eb146101fc5780630594fd041461023b5780630a47f932146102655780630bf9ed2b1461028f576101f8565b366101f857005b5f80fd5b348015610207575f80fd5b50610222600480360381019061021d9190612f68565b6107e0565b6040516102329493929190612fbc565b60405180910390f35b348015610246575f80fd5b5061024f610818565b60405161025c9190612fff565b60405180910390f35b348015610270575f80fd5b5061027961081e565b60405161028691906132b2565b60405180910390f35b34801561029a575f80fd5b506102b560048036038101906102b091906132fc565b61082f565b005b3480156102c2575f80fd5b506102cb61089a565b6040516102d89190613347565b60405180910390f35b3480156102ec575f80fd5b506103076004803603810190610302919061338a565b6108bf565b005b348015610314575f80fd5b5061032f600480360381019061032a91906133c8565b610fb7565b60405161033c9190613406565b60405180910390f35b348015610350575f80fd5b50610359610fe1565b6040516103669190613347565b60405180910390f35b34801561037a575f80fd5b5061039560048036038101906103909190612f68565b611006565b6040516103a2919061342e565b60405180910390f35b3480156103b6575f80fd5b506103d160048036038101906103cc91906132fc565b611041565b6040516103de9190613406565b60405180910390f35b3480156103f2575f80fd5b5061040d60048036038101906104089190612f68565b61105e565b60405161041a9190613456565b60405180910390f35b34801561042e575f80fd5b506104496004803603810190610444919061346f565b61107e565b005b348015610456575f80fd5b5061045f611252565b60405161046c91906132b2565b60405180910390f35b348015610480575f80fd5b5061049b600480360381019061049691906134ad565b611263565b005b3480156104a8575f80fd5b506104b161133a565b6040516104be9190613347565b60405180910390f35b3480156104d2575f80fd5b506104db61135f565b005b3480156104e8575f80fd5b506104f1611372565b6040516104fe91906135f8565b60405180910390f35b348015610512575f80fd5b5061051b61147b565b6040516105289190613633565b60405180910390f35b34801561053c575f80fd5b50610545611480565b604051610552919061342e565b60405180910390f35b348015610566575f80fd5b50610581600480360381019061057c919061379c565b6114a7565b60405161058e9190613456565b60405180910390f35b3480156105a2575f80fd5b506105ab61181b565b6040516105b891906132b2565b60405180910390f35b3480156105cc575f80fd5b506105d561182b565b6040516105e291906138c4565b60405180910390f35b3480156105f6575f80fd5b50610611600480360381019061060c91906138e4565b6118b6565b60405161062598979695949392919061390f565b60405180910390f35b348015610639575f80fd5b50610654600480360381019061064f9190612f68565b611952565b005b348015610661575f80fd5b5061067c600480360381019061067791906138e4565b611a8e565b005b348015610689575f80fd5b506106a4600480360381019061069f919061338a565b611e48565b005b3480156106b1575f80fd5b506106cc60048036038101906106c791906138e4565b612011565b6040516106d99190613a73565b60405180910390f35b6106fc60048036038101906106f7919061338a565b6120e6565b005b348015610709575f80fd5b50610724600480360381019061071f9190613abd565b6126c9565b005b348015610731575f80fd5b5061073a612777565b6040516107479190613633565b60405180910390f35b34801561075b575f80fd5b5061076461277c565b6040516107719190613633565b60405180910390f35b348015610785575f80fd5b506107a0600480360381019061079b919061338a565b612781565b6040516107af93929190613afb565b60405180910390f35b3480156107c3575f80fd5b506107de60048036038101906107d991906132fc565b6127e0565b005b6005602052805f5260405f205f91509050805f015490806001015490806002015490806003015f9054906101000a900460ff16905084565b60065481565b606061082a6001612864565b905090565b610837612bf2565b600c81908060018154018082558091505060019003905f5260205f20015f9091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b3373ffffffffffffffffffffffffffffffffffffffff166108de611480565b73ffffffffffffffffffffffffffffffffffffffff1614806109465750600b5f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b610985576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161097c90613b8a565b60405180910390fd5b61098d612c79565b5f60075f8481526020019081526020015f2090508060060160149054906101000a900460ff16156109f3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109ea90613bf2565b60405180910390fd5b5f8160040154834233604051602001610a0e93929190613c75565b604051602081830303815290604052805190602001205f1c610a309190613cde565b90505f805f8060095f8981526020019081526020015f20805480602002602001604051908101604052809291908181526020015f905b82821015610afe578382905f5260205f2090600302016040518060600160405290815f82015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016001820154815260200160028201548152505081526020019060010190610a66565b5050505090505f5b8151811015610b77575f828281518110610b2357610b22613d0e565b5b60200260200101519050806040015186610b3d9190613d68565b871015610b5757805f015194508060400151935050610b77565b806040015186610b679190613d68565b9550508080600101915050610b06565b505f4790505f610ba76064610b99600860ff1685612cbf90919063ffffffff16565b612cd490919063ffffffff16565b90505f610bd46064610bc6604860ff1686612cbf90919063ffffffff16565b612cd490919063ffffffff16565b90505f610bfc82610bee8587612ce990919063ffffffff16565b612ce990919063ffffffff16565b905060025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc8490811502906040515f60405180830381858888f19350505050158015610c62573d5f803e3d5ffd5b5060035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc8390811502906040515f60405180830381858888f19350505050158015610cc7573d5f803e3d5ffd5b5060045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc8290811502906040515f60405180830381858888f19350505050158015610d2c573d5f803e3d5ffd5b503073ffffffffffffffffffffffffffffffffffffffff168a6002015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16636352211e8c600301546040518263ffffffff1660e01b8152600401610da49190612fff565b602060405180830381865afa158015610dbf573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610de39190613daf565b73ffffffffffffffffffffffffffffffffffffffff1614610e39576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e3090613e24565b60405180910390fd5b896002015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166323b872dd30898d600301546040518463ffffffff1660e01b8152600401610e9d93929190613e42565b5f604051808303815f87803b158015610eb4575f80fd5b505af1158015610ec6573d5f803e3d5ffd5b50505050868a6006015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060018a60060160146101000a81548160ff0219169083151502179055508b7ffddfb72c47e86c9b40c5d988137a17ab83c495474cd558435b12d49f6c8dfc9585858585604051610f5f9493929190613e77565b60405180910390a28b7f0de9133ae9f24b7424a923e1bf901ed2381ee3e99707ff9b9b696602199b3dcc8888604051610f99929190613eba565b60405180910390a250505050505050505050610fb3612cfe565b5050565b6008602052815f5260405f20602052805f5260405f205f915091509054906101000a900460ff1681565b60035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600c8181548110611015575f80fd5b905f5260205f20015f915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600b602052805f5260405f205f915054906101000a900460ff1681565b600a818154811061106d575f80fd5b905f5260205f20015f915090505481565b611086612bf2565b61108e612c79565b3073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16636352211e836040518263ffffffff1660e01b81526004016110de9190612fff565b602060405180830381865afa1580156110f9573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061111d9190613daf565b73ffffffffffffffffffffffffffffffffffffffff1614611173576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161116a90613f2b565b60405180910390fd5b8173ffffffffffffffffffffffffffffffffffffffff166342842e0e30611198611480565b846040518463ffffffff1660e01b81526004016111b793929190613e42565b5f604051808303815f87803b1580156111ce575f80fd5b505af11580156111e0573d5f803e3d5ffd5b505050506111ec611480565b73ffffffffffffffffffffffffffffffffffffffff16818373ffffffffffffffffffffffffffffffffffffffff167f88b2808a6fc6d8edbe6d59ced2418eb201957d7b09fc67da2b9dec70703ffa8260405160405180910390a461124e612cfe565b5050565b606061125e6002612864565b905090565b61126b612bf2565b60405180608001604052808481526020018381526020018281526020016001151581525060055f60065481526020019081526020015f205f820151815f015560208201518160010155604082015181600201556060820151816003015f6101000a81548160ff0219169083151502179055509050506006547f2f9c2de6aaf46503da28305515cfe3b56565d2c3663c95ca503892b16c8d5a4a84848460405161131693929190613f49565b60405180910390a260065f81548092919061133090613f7e565b9190505550505050565b60025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b611367612bf2565b6113705f612d07565b565b60605f60016006546113849190613fc5565b67ffffffffffffffff81111561139d5761139c613660565b5b6040519080825280602002602001820160405280156113d657816020015b6113c3612e21565b8152602001906001900390816113bb5790505b5090505f600190505b6006548110156114735760055f8281526020019081526020015f206040518060800160405290815f82015481526020016001820154815260200160028201548152602001600382015f9054906101000a900460ff1615151515815250508260018361144a9190613fc5565b8151811061145b5761145a613d0e565b5b602002602001018190525080806001019150506113df565b508091505090565b604881565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b5f6114b0612bf2565b5f82116114f2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114e990614042565b60405180910390fd5b3073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16636352211e856040518263ffffffff1660e01b81526004016115429190612fff565b602060405180830381865afa15801561155d573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906115819190613daf565b73ffffffffffffffffffffffffffffffffffffffff16146115d7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115ce906140aa565b60405180910390fd5b428484336040516020016115ee94939291906140c8565b6040516020818303038152906040528051906020012090506040518061012001604052808281526020018681526020018573ffffffffffffffffffffffffffffffffffffffff1681526020018481526020015f815260200183426116529190613d68565b81526020015f73ffffffffffffffffffffffffffffffffffffffff1681526020015f151581526020016001151581525060075f8381526020019081526020015f205f820151815f015560208201518160010190805190602001906116b7929190612e47565b506040820151816002015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550606082015181600301556080820151816004015560a0820151816005015560c0820151816006015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060e08201518160060160146101000a81548160ff0219169083151502179055506101008201518160060160156101000a81548160ff021916908315150217905550905050600a81908060018154018082558091505060019003905f5260205f20015f9091909190915055807f5d004160fb0c10d44ff5c867fe5a12226e4b72b8137daeab0634ac0ca6f8fa91858585426117fc9190613d68565b60405161180b93929190613afb565b60405180910390a2949350505050565b60606118265f612864565b905090565b6060600c8054806020026020016040519081016040528092919081815260200182805480156118ac57602002820191905f5260205f20905b815f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019060010190808311611863575b5050505050905090565b6007602052805f5260405f205f91509050805f015490806002015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690806003015490806004015490806005015490806006015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16908060060160149054906101000a900460ff16908060060160159054906101000a900460ff16905088565b61195a612bf2565b600c8054905081106119a1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119989061415f565b60405180910390fd5b600c6001600c805490506119b59190613fc5565b815481106119c6576119c5613d0e565b5b905f5260205f20015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600c8281548110611a0257611a01613d0e565b5b905f5260205f20015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600c805480611a5957611a5861417d565b5b600190038181905f5260205f20015f6101000a81549073ffffffffffffffffffffffffffffffffffffffff0219169055905550565b3373ffffffffffffffffffffffffffffffffffffffff16611aad611480565b73ffffffffffffffffffffffffffffffffffffffff161480611b155750600b5f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b611b54576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b4b90613b8a565b60405180910390fd5b611b5c612c79565b5f60075f8381526020019081526020015f2090508060060160149054906101000a900460ff1615611bc2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bb990613bf2565b60405180910390fd5b5f805f90505b60095f8581526020019081526020015f2080549050811015611d4d575f60095f8681526020019081526020015f208281548110611c0857611c07613d0e565b5b905f5260205f2090600302016040518060600160405290815f82015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016001820154815260200160028201548152505090505f60055f836020015181526020019081526020015f206040518060800160405290815f82015481526020016001820154815260200160028201548152602001600382015f9054906101000a900460ff1615151515815250509050815f015173ffffffffffffffffffffffffffffffffffffffff166108fc825f015190811502906040515f60405180830381858888f19350505050158015611d2c573d5f803e3d5ffd5b50805f015184611d3c9190613d68565b935050508080600101915050611bc8565b50816002015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166323b872dd30611d96611480565b85600301546040518463ffffffff1660e01b8152600401611db993929190613e42565b5f604051808303815f87803b158015611dd0575f80fd5b505af1158015611de2573d5f803e3d5ffd5b5050505060018260060160146101000a81548160ff021916908315150217905550827feb0a1bf89c4eb26c92f84743d725051d48db72eb3b55a322c7bbbaaa62d944e682604051611e339190612fff565b60405180910390a25050611e45612cfe565b50565b3373ffffffffffffffffffffffffffffffffffffffff16611e67611480565b73ffffffffffffffffffffffffffffffffffffffff161480611ecf5750600b5f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b611f0e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f0590613b8a565b60405180910390fd5b5f60075f8481526020019081526020015f2090508060060160149054906101000a900460ff1615611f74576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f6b90613bf2565b60405180910390fd5b5f8211611fb6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fad90614042565b60405180910390fd5b81816005015f828254611fc99190613d68565b92505081905550827f4e7343e3df0eebdc37f76fccb079c3c667a33ba7f25ec82d4130549c3bf247d482600501546040516120049190612fff565b60405180910390a2505050565b606060095f8381526020019081526020015f20805480602002602001604051908101604052809291908181526020015f905b828210156120db578382905f5260205f2090600302016040518060600160405290815f82015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016001820154815260200160028201548152505081526020019060010190612043565b505050509050919050565b6120ee612c79565b5f60075f8481526020019081526020015f2090505f60055f8481526020019081526020015f206040518060800160405290815f82015481526020016001820154815260200160028201548152602001600382015f9054906101000a900460ff16151515158152505090508160060160159054906101000a900460ff166121a9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121a0906141f4565b60405180910390fd5b8160060160149054906101000a900460ff16156121fb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121f29061425c565b60405180910390fd5b81600501544210612241576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612238906142c4565b60405180910390fd5b8060600151612285576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161227c9061432c565b60405180910390fd5b6122df826001018054806020026020016040519081016040528092919081815260200182805480156122d457602002820191905f5260205f20905b8154815260200190600101908083116122c0575b505050505084612dc8565b61231e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161231590614394565b60405180910390fd5b805f01513414612363576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161235a906143fc565b60405180910390fd5b5f815f01510361258d5760085f8581526020019081526020015f205f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1615612406576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123fd90614464565b60405180910390fd5b5f805b600c805490508110156124e6575f600c828154811061242b5761242a613d0e565b5b905f5260205f20015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231336040518263ffffffff1660e01b815260040161248b919061342e565b602060405180830381865afa1580156124a6573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906124ca9190614496565b11156124d957600191506124e6565b8080600101915050612409565b5080612527576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161251e9061450b565b60405180910390fd5b600160085f8781526020019081526020015f205f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550505b5f816040015182602001516125a29190613d68565b905060095f8681526020019081526020015f2060405180606001604052803373ffffffffffffffffffffffffffffffffffffffff16815260200186815260200183815250908060018154018082558091505060019003905f5260205f2090600302015f909190919091505f820151815f015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506020820151816001015560408201518160020155505080836004015f8282546126799190613d68565b92505081905550847f9547adb56b87436876e7c387b0becc7270032515aedda7a210440394c8146d6d33836040516126b2929190613eba565b60405180910390a25050506126c5612cfe565b5050565b6126d1612bf2565b80600b5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f28367b555b0bf666dc90350598e071733a56fe1f54631804abfa5688b29c27968260405161276b9190613406565b60405180910390a25050565b601481565b600881565b6009602052815f5260405f20818154811061279a575f80fd5b905f5260205f2090600302015f9150915050805f015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16908060010154908060020154905083565b6127e8612bf2565b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603612858575f6040517f1e4fbdf700000000000000000000000000000000000000000000000000000000815260040161284f919061342e565b60405180910390fd5b61286181612d07565b50565b60605f600a8054905067ffffffffffffffff81111561288657612885613660565b5b6040519080825280602002602001820160405280156128bf57816020015b6128ac612e92565b8152602001906001900390816128a45790505b5090505f805b600a80549050811015612b3e575f600a82815481106128e7576128e6613d0e565b5b905f5260205f20015490505f60075f8381526020019081526020015f2090505f808860ff160361293a578160060160149054906101000a900460ff161580156129335750816005015442105b9050612991565b60018860ff160361295e578160060160149054906101000a900460ff169050612990565b60028860ff160361298f578160060160149054906101000a900460ff1615801561298c575081600501544210155b90505b5b5b8015612b2e5781604051806101200160405290815f8201548152602001600182018054806020026020016040519081016040528092919081815260200182805480156129fa57602002820191905f5260205f20905b8154815260200190600101908083116129e6575b50505050508152602001600282015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001600382015481526020016004820154815260200160058201548152602001600682015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016006820160149054906101000a900460ff161515151581526020016006820160159054906101000a900460ff161515151581525050868681518110612b1457612b13613d0e565b5b60200260200101819052508480612b2a90613f7e565b9550505b50505080806001019150506128c5565b505f8167ffffffffffffffff811115612b5a57612b59613660565b5b604051908082528060200260200182016040528015612b9357816020015b612b80612e92565b815260200190600190039081612b785790505b5090505f5b82811015612be657838181518110612bb357612bb2613d0e565b5b6020026020010151828281518110612bce57612bcd613d0e565b5b60200260200101819052508080600101915050612b98565b50809350505050919050565b612bfa612e1a565b73ffffffffffffffffffffffffffffffffffffffff16612c18611480565b73ffffffffffffffffffffffffffffffffffffffff1614612c7757612c3b612e1a565b6040517f118cdaa7000000000000000000000000000000000000000000000000000000008152600401612c6e919061342e565b60405180910390fd5b565b600260015403612cb5576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002600181905550565b5f8183612ccc9190614529565b905092915050565b5f8183612ce1919061456a565b905092915050565b5f8183612cf69190613fc5565b905092915050565b60018081905550565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050815f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b5f805f90505b8351811015612e0f5782848281518110612deb57612dea613d0e565b5b602002602001015103612e02576001915050612e14565b8080600101915050612dce565b505f90505b92915050565b5f33905090565b60405180608001604052805f81526020015f81526020015f81526020015f151581525090565b828054828255905f5260205f20908101928215612e81579160200282015b82811115612e80578251825591602001919060010190612e65565b5b509050612e8e9190612f09565b5090565b6040518061012001604052805f8019168152602001606081526020015f73ffffffffffffffffffffffffffffffffffffffff1681526020015f81526020015f81526020015f81526020015f73ffffffffffffffffffffffffffffffffffffffff1681526020015f151581526020015f151581525090565b5b80821115612f20575f815f905550600101612f0a565b5090565b5f604051905090565b5f80fd5b5f80fd5b5f819050919050565b612f4781612f35565b8114612f51575f80fd5b50565b5f81359050612f6281612f3e565b92915050565b5f60208284031215612f7d57612f7c612f2d565b5b5f612f8a84828501612f54565b91505092915050565b612f9c81612f35565b82525050565b5f8115159050919050565b612fb681612fa2565b82525050565b5f608082019050612fcf5f830187612f93565b612fdc6020830186612f93565b612fe96040830185612f93565b612ff66060830184612fad565b95945050505050565b5f6020820190506130125f830184612f93565b92915050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b5f819050919050565b61305381613041565b82525050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b61308b81612f35565b82525050565b5f61309c8383613082565b60208301905092915050565b5f602082019050919050565b5f6130be82613059565b6130c88185613063565b93506130d383613073565b805f5b838110156131035781516130ea8882613091565b97506130f5836130a8565b9250506001810190506130d6565b5085935050505092915050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f61313982613110565b9050919050565b6131498161312f565b82525050565b61315881612fa2565b82525050565b5f61012083015f8301516131745f86018261304a565b506020830151848203602086015261318c82826130b4565b91505060408301516131a16040860182613140565b5060608301516131b46060860182613082565b5060808301516131c76080860182613082565b5060a08301516131da60a0860182613082565b5060c08301516131ed60c0860182613140565b5060e083015161320060e086018261314f565b5061010083015161321561010086018261314f565b508091505092915050565b5f61322b838361315e565b905092915050565b5f602082019050919050565b5f61324982613018565b6132538185613022565b93508360208202850161326585613032565b805f5b858110156132a057848403895281516132818582613220565b945061328c83613233565b925060208a01995050600181019050613268565b50829750879550505050505092915050565b5f6020820190508181035f8301526132ca818461323f565b905092915050565b6132db8161312f565b81146132e5575f80fd5b50565b5f813590506132f6816132d2565b92915050565b5f6020828403121561331157613310612f2d565b5b5f61331e848285016132e8565b91505092915050565b5f61333182613110565b9050919050565b61334181613327565b82525050565b5f60208201905061335a5f830184613338565b92915050565b61336981613041565b8114613373575f80fd5b50565b5f8135905061338481613360565b92915050565b5f80604083850312156133a05761339f612f2d565b5b5f6133ad85828601613376565b92505060206133be85828601612f54565b9150509250929050565b5f80604083850312156133de576133dd612f2d565b5b5f6133eb85828601613376565b92505060206133fc858286016132e8565b9150509250929050565b5f6020820190506134195f830184612fad565b92915050565b6134288161312f565b82525050565b5f6020820190506134415f83018461341f565b92915050565b61345081613041565b82525050565b5f6020820190506134695f830184613447565b92915050565b5f806040838503121561348557613484612f2d565b5b5f613492858286016132e8565b92505060206134a385828601612f54565b9150509250929050565b5f805f606084860312156134c4576134c3612f2d565b5b5f6134d186828701612f54565b93505060206134e286828701612f54565b92505060406134f386828701612f54565b9150509250925092565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b608082015f82015161353a5f850182613082565b50602082015161354d6020850182613082565b5060408201516135606040850182613082565b506060820151613573606085018261314f565b50505050565b5f6135848383613526565b60808301905092915050565b5f602082019050919050565b5f6135a6826134fd565b6135b08185613507565b93506135bb83613517565b805f5b838110156135eb5781516135d28882613579565b97506135dd83613590565b9250506001810190506135be565b5085935050505092915050565b5f6020820190508181035f830152613610818461359c565b905092915050565b5f60ff82169050919050565b61362d81613618565b82525050565b5f6020820190506136465f830184613624565b92915050565b5f80fd5b5f601f19601f8301169050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b61369682613650565b810181811067ffffffffffffffff821117156136b5576136b4613660565b5b80604052505050565b5f6136c7612f24565b90506136d3828261368d565b919050565b5f67ffffffffffffffff8211156136f2576136f1613660565b5b602082029050602081019050919050565b5f80fd5b5f613719613714846136d8565b6136be565b9050808382526020820190506020840283018581111561373c5761373b613703565b5b835b8181101561376557806137518882612f54565b84526020840193505060208101905061373e565b5050509392505050565b5f82601f8301126137835761378261364c565b5b8135613793848260208601613707565b91505092915050565b5f805f80608085870312156137b4576137b3612f2d565b5b5f85013567ffffffffffffffff8111156137d1576137d0612f31565b5b6137dd8782880161376f565b94505060206137ee878288016132e8565b93505060406137ff87828801612f54565b925050606061381087828801612f54565b91505092959194509250565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b5f6138508383613140565b60208301905092915050565b5f602082019050919050565b5f6138728261381c565b61387c8185613826565b935061388783613836565b805f5b838110156138b757815161389e8882613845565b97506138a98361385c565b92505060018101905061388a565b5085935050505092915050565b5f6020820190508181035f8301526138dc8184613868565b905092915050565b5f602082840312156138f9576138f8612f2d565b5b5f61390684828501613376565b91505092915050565b5f610100820190506139235f83018b613447565b613930602083018a61341f565b61393d6040830189612f93565b61394a6060830188612f93565b6139576080830187612f93565b61396460a083018661341f565b61397160c0830185612fad565b61397e60e0830184612fad565b9998505050505050505050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b606082015f8201516139c85f850182613140565b5060208201516139db6020850182613082565b5060408201516139ee6040850182613082565b50505050565b5f6139ff83836139b4565b60608301905092915050565b5f602082019050919050565b5f613a218261398b565b613a2b8185613995565b9350613a36836139a5565b805f5b83811015613a66578151613a4d88826139f4565b9750613a5883613a0b565b925050600181019050613a39565b5085935050505092915050565b5f6020820190508181035f830152613a8b8184613a17565b905092915050565b613a9c81612fa2565b8114613aa6575f80fd5b50565b5f81359050613ab781613a93565b92915050565b5f8060408385031215613ad357613ad2612f2d565b5b5f613ae0858286016132e8565b9250506020613af185828601613aa9565b9150509250929050565b5f606082019050613b0e5f83018661341f565b613b1b6020830185612f93565b613b286040830184612f93565b949350505050565b5f82825260208201905092915050565b7f556e617574686f72697a656400000000000000000000000000000000000000005f82015250565b5f613b74600c83613b30565b9150613b7f82613b40565b602082019050919050565b5f6020820190508181035f830152613ba181613b68565b9050919050565b7f4d6174636820616c726561647920656e646564000000000000000000000000005f82015250565b5f613bdc601383613b30565b9150613be782613ba8565b602082019050919050565b5f6020820190508181035f830152613c0981613bd0565b9050919050565b5f819050919050565b613c2a613c2582612f35565b613c10565b82525050565b5f8160601b9050919050565b5f613c4682613c30565b9050919050565b5f613c5782613c3c565b9050919050565b613c6f613c6a8261312f565b613c4d565b82525050565b5f613c808286613c19565b602082019150613c908285613c19565b602082019150613ca08284613c5e565b601482019150819050949350505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f613ce882612f35565b9150613cf383612f35565b925082613d0357613d02613cb1565b5b828206905092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f613d7282612f35565b9150613d7d83612f35565b9250828201905080821115613d9557613d94613d3b565b5b92915050565b5f81519050613da9816132d2565b92915050565b5f60208284031215613dc457613dc3612f2d565b5b5f613dd184828501613d9b565b91505092915050565b7f436f6e747261637420646f6573206e6f74206f776e204e4654000000000000005f82015250565b5f613e0e601983613b30565b9150613e1982613dda565b602082019050919050565b5f6020820190508181035f830152613e3b81613e02565b9050919050565b5f606082019050613e555f83018661341f565b613e62602083018561341f565b613e6f6040830184612f93565b949350505050565b5f608082019050613e8a5f830187612f93565b613e976020830186612f93565b613ea46040830185612f93565b613eb16060830184612f93565b95945050505050565b5f604082019050613ecd5f83018561341f565b613eda6020830184612f93565b9392505050565b7f436f6e747261637420646f6573206e6f74206f776e2074686973204e465400005f82015250565b5f613f15601e83613b30565b9150613f2082613ee1565b602082019050919050565b5f6020820190508181035f830152613f4281613f09565b9050919050565b5f606082019050613f5c5f830186612f93565b613f696020830185612f93565b613f766040830184612f93565b949350505050565b5f613f8882612f35565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203613fba57613fb9613d3b565b5b600182019050919050565b5f613fcf82612f35565b9150613fda83612f35565b9250828203905081811115613ff257613ff1613d3b565b5b92915050565b7f496e76616c6964206475726174696f6e000000000000000000000000000000005f82015250565b5f61402c601083613b30565b915061403782613ff8565b602082019050919050565b5f6020820190508181035f83015261405981614020565b9050919050565b7f4e4654206e6f74206f776e6564000000000000000000000000000000000000005f82015250565b5f614094600d83613b30565b915061409f82614060565b602082019050919050565b5f6020820190508181035f8301526140c181614088565b9050919050565b5f6140d38287613c19565b6020820191506140e38286613c5e565b6014820191506140f38285613c19565b6020820191506141038284613c5e565b60148201915081905095945050505050565b7f496e646578206f7574206f6620626f756e6473000000000000000000000000005f82015250565b5f614149601383613b30565b915061415482614115565b602082019050919050565b5f6020820190508181035f8301526141768161413d565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603160045260245ffd5b7f496e76616c6964206d61746368000000000000000000000000000000000000005f82015250565b5f6141de600d83613b30565b91506141e9826141aa565b602082019050919050565b5f6020820190508181035f83015261420b816141d2565b9050919050565b7f4d6174636820656e6465640000000000000000000000000000000000000000005f82015250565b5f614246600b83613b30565b915061425182614212565b602082019050919050565b5f6020820190508181035f8301526142738161423a565b9050919050565b7f456e726f6c6c6d656e7420636c6f7365640000000000000000000000000000005f82015250565b5f6142ae601183613b30565b91506142b98261427a565b602082019050919050565b5f6020820190508181035f8301526142db816142a2565b9050919050565b7f496e76616c6964207469657200000000000000000000000000000000000000005f82015250565b5f614316600c83613b30565b9150614321826142e2565b602082019050919050565b5f6020820190508181035f8301526143438161430a565b9050919050565b7f54696572206e6f7420616c6c6f776564000000000000000000000000000000005f82015250565b5f61437e601083613b30565b91506143898261434a565b602082019050919050565b5f6020820190508181035f8301526143ab81614372565b9050919050565b7f496e636f72726563742041504520616d6f756e740000000000000000000000005f82015250565b5f6143e6601483613b30565b91506143f1826143b2565b602082019050919050565b5f6020820190508181035f830152614413816143da565b9050919050565b7f4672656520656e74727920616c726561647920757365640000000000000000005f82015250565b5f61444e601783613b30565b91506144598261441a565b602082019050919050565b5f6020820190508181035f83015261447b81614442565b9050919050565b5f8151905061449081612f3e565b92915050565b5f602082840312156144ab576144aa612f2d565b5b5f6144b884828501614482565b91505092915050565b7f4e6f207175616c696679696e67204e465420666f756e640000000000000000005f82015250565b5f6144f5601783613b30565b9150614500826144c1565b602082019050919050565b5f6020820190508181035f830152614522816144e9565b9050919050565b5f61453382612f35565b915061453e83612f35565b925082820261454c81612f35565b9150828204841483151761456357614562613d3b565b5b5092915050565b5f61457482612f35565b915061457f83612f35565b92508261458f5761458e613cb1565b5b82820490509291505056fea26469706673582212207dba9b205d35e930d7eded2d0cf8d7c17be5949cf3c9dd6ac650c8303321c9fb64736f6c634300081a0033000000000000000000000000b931e339b4f5eb3d4d039ce1451426754063c711000000000000000000000000b931e339b4f5eb3d4d039ce1451426754063c711000000000000000000000000b931e339b4f5eb3d4d039ce1451426754063c711000000000000000000000000b931e339b4f5eb3d4d039ce1451426754063c711
Deployed Bytecode
0x6080604052600436106101f1575f3560e01c806380e36dd81161010c578063c82db8f91161009f578063dfbed6231161006e578063dfbed623146106fe578063e7e8517c14610726578063eaf98d2314610750578063ecdc2c011461077a578063f2fde38b146107b8576101f8565b8063c82db8f914610656578063cc8db4ff1461067e578063cfb95e17146106a6578063dc3a4e9b146106e2576101f8565b80639a1564f0116100db5780639a1564f0146105975780639dd45d77146105c15780639fe9ada3146105eb578063b82ee8c71461062e576101f8565b806380e36dd8146104dd57806383d5e726146105075780638da5cb5b1461053157806398eeafc41461055b576101f8565b8063463fec0f1161018457806361eba6521161015357806361eba6521461044b5780636358ec571461047557806365e17c9d1461049d578063715018a6146104c7576101f8565b8063463fec0f1461036f578063536fff6c146103ab57806354f276b9146103e75780636088e93a14610423576101f8565b80630f5f1dbc116101c05780630f5f1dbc146102b75780631966cdbe146102e15780632f333d2e14610309578063339b2cff14610345576101f8565b8063039af9eb146101fc5780630594fd041461023b5780630a47f932146102655780630bf9ed2b1461028f576101f8565b366101f857005b5f80fd5b348015610207575f80fd5b50610222600480360381019061021d9190612f68565b6107e0565b6040516102329493929190612fbc565b60405180910390f35b348015610246575f80fd5b5061024f610818565b60405161025c9190612fff565b60405180910390f35b348015610270575f80fd5b5061027961081e565b60405161028691906132b2565b60405180910390f35b34801561029a575f80fd5b506102b560048036038101906102b091906132fc565b61082f565b005b3480156102c2575f80fd5b506102cb61089a565b6040516102d89190613347565b60405180910390f35b3480156102ec575f80fd5b506103076004803603810190610302919061338a565b6108bf565b005b348015610314575f80fd5b5061032f600480360381019061032a91906133c8565b610fb7565b60405161033c9190613406565b60405180910390f35b348015610350575f80fd5b50610359610fe1565b6040516103669190613347565b60405180910390f35b34801561037a575f80fd5b5061039560048036038101906103909190612f68565b611006565b6040516103a2919061342e565b60405180910390f35b3480156103b6575f80fd5b506103d160048036038101906103cc91906132fc565b611041565b6040516103de9190613406565b60405180910390f35b3480156103f2575f80fd5b5061040d60048036038101906104089190612f68565b61105e565b60405161041a9190613456565b60405180910390f35b34801561042e575f80fd5b506104496004803603810190610444919061346f565b61107e565b005b348015610456575f80fd5b5061045f611252565b60405161046c91906132b2565b60405180910390f35b348015610480575f80fd5b5061049b600480360381019061049691906134ad565b611263565b005b3480156104a8575f80fd5b506104b161133a565b6040516104be9190613347565b60405180910390f35b3480156104d2575f80fd5b506104db61135f565b005b3480156104e8575f80fd5b506104f1611372565b6040516104fe91906135f8565b60405180910390f35b348015610512575f80fd5b5061051b61147b565b6040516105289190613633565b60405180910390f35b34801561053c575f80fd5b50610545611480565b604051610552919061342e565b60405180910390f35b348015610566575f80fd5b50610581600480360381019061057c919061379c565b6114a7565b60405161058e9190613456565b60405180910390f35b3480156105a2575f80fd5b506105ab61181b565b6040516105b891906132b2565b60405180910390f35b3480156105cc575f80fd5b506105d561182b565b6040516105e291906138c4565b60405180910390f35b3480156105f6575f80fd5b50610611600480360381019061060c91906138e4565b6118b6565b60405161062598979695949392919061390f565b60405180910390f35b348015610639575f80fd5b50610654600480360381019061064f9190612f68565b611952565b005b348015610661575f80fd5b5061067c600480360381019061067791906138e4565b611a8e565b005b348015610689575f80fd5b506106a4600480360381019061069f919061338a565b611e48565b005b3480156106b1575f80fd5b506106cc60048036038101906106c791906138e4565b612011565b6040516106d99190613a73565b60405180910390f35b6106fc60048036038101906106f7919061338a565b6120e6565b005b348015610709575f80fd5b50610724600480360381019061071f9190613abd565b6126c9565b005b348015610731575f80fd5b5061073a612777565b6040516107479190613633565b60405180910390f35b34801561075b575f80fd5b5061076461277c565b6040516107719190613633565b60405180910390f35b348015610785575f80fd5b506107a0600480360381019061079b919061338a565b612781565b6040516107af93929190613afb565b60405180910390f35b3480156107c3575f80fd5b506107de60048036038101906107d991906132fc565b6127e0565b005b6005602052805f5260405f205f91509050805f015490806001015490806002015490806003015f9054906101000a900460ff16905084565b60065481565b606061082a6001612864565b905090565b610837612bf2565b600c81908060018154018082558091505060019003905f5260205f20015f9091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b3373ffffffffffffffffffffffffffffffffffffffff166108de611480565b73ffffffffffffffffffffffffffffffffffffffff1614806109465750600b5f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b610985576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161097c90613b8a565b60405180910390fd5b61098d612c79565b5f60075f8481526020019081526020015f2090508060060160149054906101000a900460ff16156109f3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109ea90613bf2565b60405180910390fd5b5f8160040154834233604051602001610a0e93929190613c75565b604051602081830303815290604052805190602001205f1c610a309190613cde565b90505f805f8060095f8981526020019081526020015f20805480602002602001604051908101604052809291908181526020015f905b82821015610afe578382905f5260205f2090600302016040518060600160405290815f82015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016001820154815260200160028201548152505081526020019060010190610a66565b5050505090505f5b8151811015610b77575f828281518110610b2357610b22613d0e565b5b60200260200101519050806040015186610b3d9190613d68565b871015610b5757805f015194508060400151935050610b77565b806040015186610b679190613d68565b9550508080600101915050610b06565b505f4790505f610ba76064610b99600860ff1685612cbf90919063ffffffff16565b612cd490919063ffffffff16565b90505f610bd46064610bc6604860ff1686612cbf90919063ffffffff16565b612cd490919063ffffffff16565b90505f610bfc82610bee8587612ce990919063ffffffff16565b612ce990919063ffffffff16565b905060025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc8490811502906040515f60405180830381858888f19350505050158015610c62573d5f803e3d5ffd5b5060035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc8390811502906040515f60405180830381858888f19350505050158015610cc7573d5f803e3d5ffd5b5060045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc8290811502906040515f60405180830381858888f19350505050158015610d2c573d5f803e3d5ffd5b503073ffffffffffffffffffffffffffffffffffffffff168a6002015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16636352211e8c600301546040518263ffffffff1660e01b8152600401610da49190612fff565b602060405180830381865afa158015610dbf573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610de39190613daf565b73ffffffffffffffffffffffffffffffffffffffff1614610e39576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e3090613e24565b60405180910390fd5b896002015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166323b872dd30898d600301546040518463ffffffff1660e01b8152600401610e9d93929190613e42565b5f604051808303815f87803b158015610eb4575f80fd5b505af1158015610ec6573d5f803e3d5ffd5b50505050868a6006015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060018a60060160146101000a81548160ff0219169083151502179055508b7ffddfb72c47e86c9b40c5d988137a17ab83c495474cd558435b12d49f6c8dfc9585858585604051610f5f9493929190613e77565b60405180910390a28b7f0de9133ae9f24b7424a923e1bf901ed2381ee3e99707ff9b9b696602199b3dcc8888604051610f99929190613eba565b60405180910390a250505050505050505050610fb3612cfe565b5050565b6008602052815f5260405f20602052805f5260405f205f915091509054906101000a900460ff1681565b60035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600c8181548110611015575f80fd5b905f5260205f20015f915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600b602052805f5260405f205f915054906101000a900460ff1681565b600a818154811061106d575f80fd5b905f5260205f20015f915090505481565b611086612bf2565b61108e612c79565b3073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16636352211e836040518263ffffffff1660e01b81526004016110de9190612fff565b602060405180830381865afa1580156110f9573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061111d9190613daf565b73ffffffffffffffffffffffffffffffffffffffff1614611173576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161116a90613f2b565b60405180910390fd5b8173ffffffffffffffffffffffffffffffffffffffff166342842e0e30611198611480565b846040518463ffffffff1660e01b81526004016111b793929190613e42565b5f604051808303815f87803b1580156111ce575f80fd5b505af11580156111e0573d5f803e3d5ffd5b505050506111ec611480565b73ffffffffffffffffffffffffffffffffffffffff16818373ffffffffffffffffffffffffffffffffffffffff167f88b2808a6fc6d8edbe6d59ced2418eb201957d7b09fc67da2b9dec70703ffa8260405160405180910390a461124e612cfe565b5050565b606061125e6002612864565b905090565b61126b612bf2565b60405180608001604052808481526020018381526020018281526020016001151581525060055f60065481526020019081526020015f205f820151815f015560208201518160010155604082015181600201556060820151816003015f6101000a81548160ff0219169083151502179055509050506006547f2f9c2de6aaf46503da28305515cfe3b56565d2c3663c95ca503892b16c8d5a4a84848460405161131693929190613f49565b60405180910390a260065f81548092919061133090613f7e565b9190505550505050565b60025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b611367612bf2565b6113705f612d07565b565b60605f60016006546113849190613fc5565b67ffffffffffffffff81111561139d5761139c613660565b5b6040519080825280602002602001820160405280156113d657816020015b6113c3612e21565b8152602001906001900390816113bb5790505b5090505f600190505b6006548110156114735760055f8281526020019081526020015f206040518060800160405290815f82015481526020016001820154815260200160028201548152602001600382015f9054906101000a900460ff1615151515815250508260018361144a9190613fc5565b8151811061145b5761145a613d0e565b5b602002602001018190525080806001019150506113df565b508091505090565b604881565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b5f6114b0612bf2565b5f82116114f2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114e990614042565b60405180910390fd5b3073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16636352211e856040518263ffffffff1660e01b81526004016115429190612fff565b602060405180830381865afa15801561155d573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906115819190613daf565b73ffffffffffffffffffffffffffffffffffffffff16146115d7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115ce906140aa565b60405180910390fd5b428484336040516020016115ee94939291906140c8565b6040516020818303038152906040528051906020012090506040518061012001604052808281526020018681526020018573ffffffffffffffffffffffffffffffffffffffff1681526020018481526020015f815260200183426116529190613d68565b81526020015f73ffffffffffffffffffffffffffffffffffffffff1681526020015f151581526020016001151581525060075f8381526020019081526020015f205f820151815f015560208201518160010190805190602001906116b7929190612e47565b506040820151816002015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550606082015181600301556080820151816004015560a0820151816005015560c0820151816006015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060e08201518160060160146101000a81548160ff0219169083151502179055506101008201518160060160156101000a81548160ff021916908315150217905550905050600a81908060018154018082558091505060019003905f5260205f20015f9091909190915055807f5d004160fb0c10d44ff5c867fe5a12226e4b72b8137daeab0634ac0ca6f8fa91858585426117fc9190613d68565b60405161180b93929190613afb565b60405180910390a2949350505050565b60606118265f612864565b905090565b6060600c8054806020026020016040519081016040528092919081815260200182805480156118ac57602002820191905f5260205f20905b815f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019060010190808311611863575b5050505050905090565b6007602052805f5260405f205f91509050805f015490806002015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690806003015490806004015490806005015490806006015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16908060060160149054906101000a900460ff16908060060160159054906101000a900460ff16905088565b61195a612bf2565b600c8054905081106119a1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119989061415f565b60405180910390fd5b600c6001600c805490506119b59190613fc5565b815481106119c6576119c5613d0e565b5b905f5260205f20015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600c8281548110611a0257611a01613d0e565b5b905f5260205f20015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600c805480611a5957611a5861417d565b5b600190038181905f5260205f20015f6101000a81549073ffffffffffffffffffffffffffffffffffffffff0219169055905550565b3373ffffffffffffffffffffffffffffffffffffffff16611aad611480565b73ffffffffffffffffffffffffffffffffffffffff161480611b155750600b5f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b611b54576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b4b90613b8a565b60405180910390fd5b611b5c612c79565b5f60075f8381526020019081526020015f2090508060060160149054906101000a900460ff1615611bc2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bb990613bf2565b60405180910390fd5b5f805f90505b60095f8581526020019081526020015f2080549050811015611d4d575f60095f8681526020019081526020015f208281548110611c0857611c07613d0e565b5b905f5260205f2090600302016040518060600160405290815f82015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016001820154815260200160028201548152505090505f60055f836020015181526020019081526020015f206040518060800160405290815f82015481526020016001820154815260200160028201548152602001600382015f9054906101000a900460ff1615151515815250509050815f015173ffffffffffffffffffffffffffffffffffffffff166108fc825f015190811502906040515f60405180830381858888f19350505050158015611d2c573d5f803e3d5ffd5b50805f015184611d3c9190613d68565b935050508080600101915050611bc8565b50816002015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166323b872dd30611d96611480565b85600301546040518463ffffffff1660e01b8152600401611db993929190613e42565b5f604051808303815f87803b158015611dd0575f80fd5b505af1158015611de2573d5f803e3d5ffd5b5050505060018260060160146101000a81548160ff021916908315150217905550827feb0a1bf89c4eb26c92f84743d725051d48db72eb3b55a322c7bbbaaa62d944e682604051611e339190612fff565b60405180910390a25050611e45612cfe565b50565b3373ffffffffffffffffffffffffffffffffffffffff16611e67611480565b73ffffffffffffffffffffffffffffffffffffffff161480611ecf5750600b5f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b611f0e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f0590613b8a565b60405180910390fd5b5f60075f8481526020019081526020015f2090508060060160149054906101000a900460ff1615611f74576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f6b90613bf2565b60405180910390fd5b5f8211611fb6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fad90614042565b60405180910390fd5b81816005015f828254611fc99190613d68565b92505081905550827f4e7343e3df0eebdc37f76fccb079c3c667a33ba7f25ec82d4130549c3bf247d482600501546040516120049190612fff565b60405180910390a2505050565b606060095f8381526020019081526020015f20805480602002602001604051908101604052809291908181526020015f905b828210156120db578382905f5260205f2090600302016040518060600160405290815f82015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016001820154815260200160028201548152505081526020019060010190612043565b505050509050919050565b6120ee612c79565b5f60075f8481526020019081526020015f2090505f60055f8481526020019081526020015f206040518060800160405290815f82015481526020016001820154815260200160028201548152602001600382015f9054906101000a900460ff16151515158152505090508160060160159054906101000a900460ff166121a9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121a0906141f4565b60405180910390fd5b8160060160149054906101000a900460ff16156121fb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121f29061425c565b60405180910390fd5b81600501544210612241576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612238906142c4565b60405180910390fd5b8060600151612285576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161227c9061432c565b60405180910390fd5b6122df826001018054806020026020016040519081016040528092919081815260200182805480156122d457602002820191905f5260205f20905b8154815260200190600101908083116122c0575b505050505084612dc8565b61231e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161231590614394565b60405180910390fd5b805f01513414612363576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161235a906143fc565b60405180910390fd5b5f815f01510361258d5760085f8581526020019081526020015f205f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1615612406576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123fd90614464565b60405180910390fd5b5f805b600c805490508110156124e6575f600c828154811061242b5761242a613d0e565b5b905f5260205f20015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231336040518263ffffffff1660e01b815260040161248b919061342e565b602060405180830381865afa1580156124a6573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906124ca9190614496565b11156124d957600191506124e6565b8080600101915050612409565b5080612527576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161251e9061450b565b60405180910390fd5b600160085f8781526020019081526020015f205f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550505b5f816040015182602001516125a29190613d68565b905060095f8681526020019081526020015f2060405180606001604052803373ffffffffffffffffffffffffffffffffffffffff16815260200186815260200183815250908060018154018082558091505060019003905f5260205f2090600302015f909190919091505f820151815f015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506020820151816001015560408201518160020155505080836004015f8282546126799190613d68565b92505081905550847f9547adb56b87436876e7c387b0becc7270032515aedda7a210440394c8146d6d33836040516126b2929190613eba565b60405180910390a25050506126c5612cfe565b5050565b6126d1612bf2565b80600b5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f28367b555b0bf666dc90350598e071733a56fe1f54631804abfa5688b29c27968260405161276b9190613406565b60405180910390a25050565b601481565b600881565b6009602052815f5260405f20818154811061279a575f80fd5b905f5260205f2090600302015f9150915050805f015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16908060010154908060020154905083565b6127e8612bf2565b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603612858575f6040517f1e4fbdf700000000000000000000000000000000000000000000000000000000815260040161284f919061342e565b60405180910390fd5b61286181612d07565b50565b60605f600a8054905067ffffffffffffffff81111561288657612885613660565b5b6040519080825280602002602001820160405280156128bf57816020015b6128ac612e92565b8152602001906001900390816128a45790505b5090505f805b600a80549050811015612b3e575f600a82815481106128e7576128e6613d0e565b5b905f5260205f20015490505f60075f8381526020019081526020015f2090505f808860ff160361293a578160060160149054906101000a900460ff161580156129335750816005015442105b9050612991565b60018860ff160361295e578160060160149054906101000a900460ff169050612990565b60028860ff160361298f578160060160149054906101000a900460ff1615801561298c575081600501544210155b90505b5b5b8015612b2e5781604051806101200160405290815f8201548152602001600182018054806020026020016040519081016040528092919081815260200182805480156129fa57602002820191905f5260205f20905b8154815260200190600101908083116129e6575b50505050508152602001600282015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001600382015481526020016004820154815260200160058201548152602001600682015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016006820160149054906101000a900460ff161515151581526020016006820160159054906101000a900460ff161515151581525050868681518110612b1457612b13613d0e565b5b60200260200101819052508480612b2a90613f7e565b9550505b50505080806001019150506128c5565b505f8167ffffffffffffffff811115612b5a57612b59613660565b5b604051908082528060200260200182016040528015612b9357816020015b612b80612e92565b815260200190600190039081612b785790505b5090505f5b82811015612be657838181518110612bb357612bb2613d0e565b5b6020026020010151828281518110612bce57612bcd613d0e565b5b60200260200101819052508080600101915050612b98565b50809350505050919050565b612bfa612e1a565b73ffffffffffffffffffffffffffffffffffffffff16612c18611480565b73ffffffffffffffffffffffffffffffffffffffff1614612c7757612c3b612e1a565b6040517f118cdaa7000000000000000000000000000000000000000000000000000000008152600401612c6e919061342e565b60405180910390fd5b565b600260015403612cb5576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002600181905550565b5f8183612ccc9190614529565b905092915050565b5f8183612ce1919061456a565b905092915050565b5f8183612cf69190613fc5565b905092915050565b60018081905550565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050815f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b5f805f90505b8351811015612e0f5782848281518110612deb57612dea613d0e565b5b602002602001015103612e02576001915050612e14565b8080600101915050612dce565b505f90505b92915050565b5f33905090565b60405180608001604052805f81526020015f81526020015f81526020015f151581525090565b828054828255905f5260205f20908101928215612e81579160200282015b82811115612e80578251825591602001919060010190612e65565b5b509050612e8e9190612f09565b5090565b6040518061012001604052805f8019168152602001606081526020015f73ffffffffffffffffffffffffffffffffffffffff1681526020015f81526020015f81526020015f81526020015f73ffffffffffffffffffffffffffffffffffffffff1681526020015f151581526020015f151581525090565b5b80821115612f20575f815f905550600101612f0a565b5090565b5f604051905090565b5f80fd5b5f80fd5b5f819050919050565b612f4781612f35565b8114612f51575f80fd5b50565b5f81359050612f6281612f3e565b92915050565b5f60208284031215612f7d57612f7c612f2d565b5b5f612f8a84828501612f54565b91505092915050565b612f9c81612f35565b82525050565b5f8115159050919050565b612fb681612fa2565b82525050565b5f608082019050612fcf5f830187612f93565b612fdc6020830186612f93565b612fe96040830185612f93565b612ff66060830184612fad565b95945050505050565b5f6020820190506130125f830184612f93565b92915050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b5f819050919050565b61305381613041565b82525050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b61308b81612f35565b82525050565b5f61309c8383613082565b60208301905092915050565b5f602082019050919050565b5f6130be82613059565b6130c88185613063565b93506130d383613073565b805f5b838110156131035781516130ea8882613091565b97506130f5836130a8565b9250506001810190506130d6565b5085935050505092915050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f61313982613110565b9050919050565b6131498161312f565b82525050565b61315881612fa2565b82525050565b5f61012083015f8301516131745f86018261304a565b506020830151848203602086015261318c82826130b4565b91505060408301516131a16040860182613140565b5060608301516131b46060860182613082565b5060808301516131c76080860182613082565b5060a08301516131da60a0860182613082565b5060c08301516131ed60c0860182613140565b5060e083015161320060e086018261314f565b5061010083015161321561010086018261314f565b508091505092915050565b5f61322b838361315e565b905092915050565b5f602082019050919050565b5f61324982613018565b6132538185613022565b93508360208202850161326585613032565b805f5b858110156132a057848403895281516132818582613220565b945061328c83613233565b925060208a01995050600181019050613268565b50829750879550505050505092915050565b5f6020820190508181035f8301526132ca818461323f565b905092915050565b6132db8161312f565b81146132e5575f80fd5b50565b5f813590506132f6816132d2565b92915050565b5f6020828403121561331157613310612f2d565b5b5f61331e848285016132e8565b91505092915050565b5f61333182613110565b9050919050565b61334181613327565b82525050565b5f60208201905061335a5f830184613338565b92915050565b61336981613041565b8114613373575f80fd5b50565b5f8135905061338481613360565b92915050565b5f80604083850312156133a05761339f612f2d565b5b5f6133ad85828601613376565b92505060206133be85828601612f54565b9150509250929050565b5f80604083850312156133de576133dd612f2d565b5b5f6133eb85828601613376565b92505060206133fc858286016132e8565b9150509250929050565b5f6020820190506134195f830184612fad565b92915050565b6134288161312f565b82525050565b5f6020820190506134415f83018461341f565b92915050565b61345081613041565b82525050565b5f6020820190506134695f830184613447565b92915050565b5f806040838503121561348557613484612f2d565b5b5f613492858286016132e8565b92505060206134a385828601612f54565b9150509250929050565b5f805f606084860312156134c4576134c3612f2d565b5b5f6134d186828701612f54565b93505060206134e286828701612f54565b92505060406134f386828701612f54565b9150509250925092565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b608082015f82015161353a5f850182613082565b50602082015161354d6020850182613082565b5060408201516135606040850182613082565b506060820151613573606085018261314f565b50505050565b5f6135848383613526565b60808301905092915050565b5f602082019050919050565b5f6135a6826134fd565b6135b08185613507565b93506135bb83613517565b805f5b838110156135eb5781516135d28882613579565b97506135dd83613590565b9250506001810190506135be565b5085935050505092915050565b5f6020820190508181035f830152613610818461359c565b905092915050565b5f60ff82169050919050565b61362d81613618565b82525050565b5f6020820190506136465f830184613624565b92915050565b5f80fd5b5f601f19601f8301169050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b61369682613650565b810181811067ffffffffffffffff821117156136b5576136b4613660565b5b80604052505050565b5f6136c7612f24565b90506136d3828261368d565b919050565b5f67ffffffffffffffff8211156136f2576136f1613660565b5b602082029050602081019050919050565b5f80fd5b5f613719613714846136d8565b6136be565b9050808382526020820190506020840283018581111561373c5761373b613703565b5b835b8181101561376557806137518882612f54565b84526020840193505060208101905061373e565b5050509392505050565b5f82601f8301126137835761378261364c565b5b8135613793848260208601613707565b91505092915050565b5f805f80608085870312156137b4576137b3612f2d565b5b5f85013567ffffffffffffffff8111156137d1576137d0612f31565b5b6137dd8782880161376f565b94505060206137ee878288016132e8565b93505060406137ff87828801612f54565b925050606061381087828801612f54565b91505092959194509250565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b5f6138508383613140565b60208301905092915050565b5f602082019050919050565b5f6138728261381c565b61387c8185613826565b935061388783613836565b805f5b838110156138b757815161389e8882613845565b97506138a98361385c565b92505060018101905061388a565b5085935050505092915050565b5f6020820190508181035f8301526138dc8184613868565b905092915050565b5f602082840312156138f9576138f8612f2d565b5b5f61390684828501613376565b91505092915050565b5f610100820190506139235f83018b613447565b613930602083018a61341f565b61393d6040830189612f93565b61394a6060830188612f93565b6139576080830187612f93565b61396460a083018661341f565b61397160c0830185612fad565b61397e60e0830184612fad565b9998505050505050505050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b606082015f8201516139c85f850182613140565b5060208201516139db6020850182613082565b5060408201516139ee6040850182613082565b50505050565b5f6139ff83836139b4565b60608301905092915050565b5f602082019050919050565b5f613a218261398b565b613a2b8185613995565b9350613a36836139a5565b805f5b83811015613a66578151613a4d88826139f4565b9750613a5883613a0b565b925050600181019050613a39565b5085935050505092915050565b5f6020820190508181035f830152613a8b8184613a17565b905092915050565b613a9c81612fa2565b8114613aa6575f80fd5b50565b5f81359050613ab781613a93565b92915050565b5f8060408385031215613ad357613ad2612f2d565b5b5f613ae0858286016132e8565b9250506020613af185828601613aa9565b9150509250929050565b5f606082019050613b0e5f83018661341f565b613b1b6020830185612f93565b613b286040830184612f93565b949350505050565b5f82825260208201905092915050565b7f556e617574686f72697a656400000000000000000000000000000000000000005f82015250565b5f613b74600c83613b30565b9150613b7f82613b40565b602082019050919050565b5f6020820190508181035f830152613ba181613b68565b9050919050565b7f4d6174636820616c726561647920656e646564000000000000000000000000005f82015250565b5f613bdc601383613b30565b9150613be782613ba8565b602082019050919050565b5f6020820190508181035f830152613c0981613bd0565b9050919050565b5f819050919050565b613c2a613c2582612f35565b613c10565b82525050565b5f8160601b9050919050565b5f613c4682613c30565b9050919050565b5f613c5782613c3c565b9050919050565b613c6f613c6a8261312f565b613c4d565b82525050565b5f613c808286613c19565b602082019150613c908285613c19565b602082019150613ca08284613c5e565b601482019150819050949350505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f613ce882612f35565b9150613cf383612f35565b925082613d0357613d02613cb1565b5b828206905092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f613d7282612f35565b9150613d7d83612f35565b9250828201905080821115613d9557613d94613d3b565b5b92915050565b5f81519050613da9816132d2565b92915050565b5f60208284031215613dc457613dc3612f2d565b5b5f613dd184828501613d9b565b91505092915050565b7f436f6e747261637420646f6573206e6f74206f776e204e4654000000000000005f82015250565b5f613e0e601983613b30565b9150613e1982613dda565b602082019050919050565b5f6020820190508181035f830152613e3b81613e02565b9050919050565b5f606082019050613e555f83018661341f565b613e62602083018561341f565b613e6f6040830184612f93565b949350505050565b5f608082019050613e8a5f830187612f93565b613e976020830186612f93565b613ea46040830185612f93565b613eb16060830184612f93565b95945050505050565b5f604082019050613ecd5f83018561341f565b613eda6020830184612f93565b9392505050565b7f436f6e747261637420646f6573206e6f74206f776e2074686973204e465400005f82015250565b5f613f15601e83613b30565b9150613f2082613ee1565b602082019050919050565b5f6020820190508181035f830152613f4281613f09565b9050919050565b5f606082019050613f5c5f830186612f93565b613f696020830185612f93565b613f766040830184612f93565b949350505050565b5f613f8882612f35565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203613fba57613fb9613d3b565b5b600182019050919050565b5f613fcf82612f35565b9150613fda83612f35565b9250828203905081811115613ff257613ff1613d3b565b5b92915050565b7f496e76616c6964206475726174696f6e000000000000000000000000000000005f82015250565b5f61402c601083613b30565b915061403782613ff8565b602082019050919050565b5f6020820190508181035f83015261405981614020565b9050919050565b7f4e4654206e6f74206f776e6564000000000000000000000000000000000000005f82015250565b5f614094600d83613b30565b915061409f82614060565b602082019050919050565b5f6020820190508181035f8301526140c181614088565b9050919050565b5f6140d38287613c19565b6020820191506140e38286613c5e565b6014820191506140f38285613c19565b6020820191506141038284613c5e565b60148201915081905095945050505050565b7f496e646578206f7574206f6620626f756e6473000000000000000000000000005f82015250565b5f614149601383613b30565b915061415482614115565b602082019050919050565b5f6020820190508181035f8301526141768161413d565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603160045260245ffd5b7f496e76616c6964206d61746368000000000000000000000000000000000000005f82015250565b5f6141de600d83613b30565b91506141e9826141aa565b602082019050919050565b5f6020820190508181035f83015261420b816141d2565b9050919050565b7f4d6174636820656e6465640000000000000000000000000000000000000000005f82015250565b5f614246600b83613b30565b915061425182614212565b602082019050919050565b5f6020820190508181035f8301526142738161423a565b9050919050565b7f456e726f6c6c6d656e7420636c6f7365640000000000000000000000000000005f82015250565b5f6142ae601183613b30565b91506142b98261427a565b602082019050919050565b5f6020820190508181035f8301526142db816142a2565b9050919050565b7f496e76616c6964207469657200000000000000000000000000000000000000005f82015250565b5f614316600c83613b30565b9150614321826142e2565b602082019050919050565b5f6020820190508181035f8301526143438161430a565b9050919050565b7f54696572206e6f7420616c6c6f776564000000000000000000000000000000005f82015250565b5f61437e601083613b30565b91506143898261434a565b602082019050919050565b5f6020820190508181035f8301526143ab81614372565b9050919050565b7f496e636f72726563742041504520616d6f756e740000000000000000000000005f82015250565b5f6143e6601483613b30565b91506143f1826143b2565b602082019050919050565b5f6020820190508181035f830152614413816143da565b9050919050565b7f4672656520656e74727920616c726561647920757365640000000000000000005f82015250565b5f61444e601783613b30565b91506144598261441a565b602082019050919050565b5f6020820190508181035f83015261447b81614442565b9050919050565b5f8151905061449081612f3e565b92915050565b5f602082840312156144ab576144aa612f2d565b5b5f6144b884828501614482565b91505092915050565b7f4e6f207175616c696679696e67204e465420666f756e640000000000000000005f82015250565b5f6144f5601783613b30565b9150614500826144c1565b602082019050919050565b5f6020820190508181035f830152614522816144e9565b9050919050565b5f61453382612f35565b915061453e83612f35565b925082820261454c81612f35565b9150828204841483151761456357614562613d3b565b5b5092915050565b5f61457482612f35565b915061457f83612f35565b92508261458f5761458e613cb1565b5b82820490509291505056fea26469706673582212207dba9b205d35e930d7eded2d0cf8d7c17be5949cf3c9dd6ac650c8303321c9fb64736f6c634300081a0033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
000000000000000000000000b931e339b4f5eb3d4d039ce1451426754063c711000000000000000000000000b931e339b4f5eb3d4d039ce1451426754063c711000000000000000000000000b931e339b4f5eb3d4d039ce1451426754063c711000000000000000000000000b931e339b4f5eb3d4d039ce1451426754063c711
-----Decoded View---------------
Arg [0] : _initialOwner (address): 0xb931E339b4f5eB3D4D039CE1451426754063C711
Arg [1] : _feeAccount (address): 0xb931E339b4f5eB3D4D039CE1451426754063C711
Arg [2] : _treasuryAccount (address): 0xb931E339b4f5eB3D4D039CE1451426754063C711
Arg [3] : _operationsAccount (address): 0xb931E339b4f5eB3D4D039CE1451426754063C711
-----Encoded View---------------
4 Constructor Arguments found :
Arg [0] : 000000000000000000000000b931e339b4f5eb3d4d039ce1451426754063c711
Arg [1] : 000000000000000000000000b931e339b4f5eb3d4d039ce1451426754063c711
Arg [2] : 000000000000000000000000b931e339b4f5eb3d4d039ce1451426754063c711
Arg [3] : 000000000000000000000000b931e339b4f5eb3d4d039ce1451426754063c711
Deployed Bytecode Sourcemap
16050:12547:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17138:42;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;17187:29;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;26457:107;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19207:91;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16449:40;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22447:1862;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;17270:68;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16404:38;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17537:26;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17444:49;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17409:28;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;25511:523;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;26572:107;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19558:318;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16364:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7801:103;;;;;;;;;;;;;:::i;:::-;;26065:267;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16221:43;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7126:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19907:1032;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;26340:109;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;26687:101;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17223:40;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;;;;;;;;19306:220;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;24352:692;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;25085:379;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;26796:170;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20978:1436;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;28389:168;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16271:45;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16177:37;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17345:57;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;;8059:220;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;17138:42;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;17187:29::-;;;;:::o;26457:107::-;26505:14;26539:17;26554:1;26539:14;:17::i;:::-;26532:24;;26457:107;:::o;19207:91::-;7012:13;:11;:13::i;:::-;19271:9:::1;19286:3;19271:19;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19207:91:::0;:::o;16449:40::-;;;;;;;;;;;;;:::o;22447:1862::-;18721:10;18710:21;;:7;:5;:7::i;:::-;:21;;;:54;;;;18735:17;:29;18753:10;18735:29;;;;;;;;;;;;;;;;;;;;;;;;;18710:54;18688:116;;;;;;;;;;;;:::i;:::-;;;;;;;;;3525:21:::1;:19;:21::i;:::-;22580:15:::2;22598:7;:16;22606:7;22598:16;;;;;;;;;;;22580:34;;22634:1;:9;;;;;;;;;;;;22633:10;22625:42;;;;;;;;;;;;:::i;:::-;;;;;;;;;22680:20;22807:1;:14;;;22752:10;22764:15;22781:10;22735:57;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;22725:68;;;;;;22703:101;;:118;;;;:::i;:::-;22680:141;;22842:18;22871:14:::0;22896:21:::2;22930:28:::0;22961:14:::2;:23;22976:7;22961:23;;;;;;;;;;;22930:54;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;23000:9;22995:323;23019:5;:12;23015:1;:16;22995:323;;;23053:22;23078:5;23084:1;23078:8;;;;;;;;:::i;:::-;;;;;;;;23053:33;;23133:1;:9;;;23120:10;:22;;;;:::i;:::-;23105:12;:37;23101:168;;;23172:1;:13;;;23163:22;;23220:1;:9;;;23204:25;;23248:5;;;23101:168;23297:1;:9;;;23283:23;;;;;:::i;:::-;;;23038:280;23033:3;;;;;;;22995:323;;;;23330:22;23355:21;23330:46;;23387:17;23407:40;23443:3;23407:31;16213:1;23407:31;;:14;:18;;:31;;;;:::i;:::-;:35;;:40;;;;:::i;:::-;23387:60;;23458:22;23483:45;23524:3;23483:36;16262:2;23483:36;;:14;:18;;:36;;;;:::i;:::-;:40;;:45;;;;:::i;:::-;23458:70;;23539:24;23566:73;23614:14;23566:29;23585:9;23566:14;:18;;:29;;;;:::i;:::-;:33;;:73;;;;:::i;:::-;23539:100;;23652:10;;;;;;;;;;;:19;;:30;23672:9;23652:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;23693:15;;;;;;;;;;;:24;;:40;23718:14;23693:40;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;23744:17;;;;;;;;;;;:26;;:44;23771:16;23744:44;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;23870:4;23823:52;;23828:1;:12;;;;;;;;;;;;23823:26;;;23850:1;:7;;;23823:35;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:52;;;23801:127;;;;;;;;;;;;:::i;:::-;;;;;;;;;23944:1;:12;;;;;;;;;;;;23939:31;;;23979:4;23986:6;23994:1;:7;;;23939:63;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;::::0;::::2;;;;;;;;;24026:6;24015:1;:8;;;:17;;;;;;;;;;;;;;;;;;24055:4;24043:1;:9;;;:16;;;;;;;;;;;;;;;;;;24108:7;24077:162;24130:14;24159:9;24183:14;24212:16;24077:162;;;;;;;;;:::i;:::-;;;;;;;;24270:7;24255:46;24279:6;24287:13;24255:46;;;;;;;:::i;:::-;;;;;;;;22569:1740;;;;;;;;;;3569:20:::1;:18;:20::i;:::-;22447:1862:::0;;:::o;17270:68::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;16404:38::-;;;;;;;;;;;;;:::o;17537:26::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;17444:49::-;;;;;;;;;;;;;;;;;;;;;;:::o;17409:28::-;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;25511:523::-;7012:13;:11;:13::i;:::-;3525:21:::1;:19;:21::i;:::-;25752:4:::2;25707:50;;25712:10;25707:24;;;25732:7;25707:33;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:50;;;25685:130;;;;;;;;;;;;:::i;:::-;;;;;;;;;25871:10;25866:33;;;25908:4;25915:7;:5;:7::i;:::-;25924;25866:66;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;::::0;::::2;;;;;;;;;26018:7;:5;:7::i;:::-;25984:42;;26009:7;25997:10;25984:42;;;;;;;;;;;;3569:20:::1;:18;:20::i;:::-;25511:523:::0;;:::o;26572:107::-;26620:14;26654:17;26669:1;26654:14;:17::i;:::-;26647:24;;26572:107;:::o;19558:318::-;7012:13;:11;:13::i;:::-;19719:51:::1;;;;;;;;19729:7;19719:51;;;;19738:11;19719:51;;;;19751:12;19719:51;;;;19765:4;19719:51;;;;::::0;19699:5:::1;:17;19705:10;;19699:17;;;;;;;;;;;:71;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19798:10;;19786:59;19810:7;19819:11;19832:12;19786:59;;;;;;;;:::i;:::-;;;;;;;;19856:10;;:12;;;;;;;;;:::i;:::-;;;;;;19558:318:::0;;;:::o;16364:33::-;;;;;;;;;;;;;:::o;7801:103::-;7012:13;:11;:13::i;:::-;7866:30:::1;7893:1;7866:18;:30::i;:::-;7801:103::o:0;26065:267::-;26111:18;26142:24;26198:1;26185:10;;:14;;;;:::i;:::-;26169:31;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;26142:58;;26216:9;26228:1;26216:13;;26211:91;26235:10;;26231:1;:14;26211:91;;;26282:5;:8;26288:1;26282:8;;;;;;;;;;;26267:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:5;26277:1;26273;:5;;;;:::i;:::-;26267:12;;;;;;;;:::i;:::-;;;;;;;:23;;;;26247:3;;;;;;;26211:91;;;;26319:5;26312:12;;;26065:267;:::o;16221:43::-;16262:2;16221:43;:::o;7126:87::-;7172:7;7199:6;;;;;;;;;;;7192:13;;7126:87;:::o;19907:1032::-;20083:15;7012:13;:11;:13::i;:::-;20130:1:::1;20119:8;:12;20111:41;;;;;;;;;;;;:::i;:::-;;;;;;;;;20228:4;20185:48;;20190:10;20185:24;;;20210:5;20185:31;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:48;;;20163:111;;;;;;;;;;;;:::i;:::-;;;;;;;;;20338:15;20355:10;20367:5;20374:10;20321:64;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;20297:99;;;;;;20287:109;;20428:318;;;;;;;;20453:7;20428:318;;;;20489:12;20428:318;;;;20528:10;20428:318;;;;;;20560:5;20428:318;;;;20594:1;20428:318;;;;20637:8;20619:15;:26;;;;:::i;:::-;20428:318;;;;20676:1;20428:318;;;;;;20702:5;20428:318;;;;;;20730:4;20428:318;;;;::::0;20409:7:::1;:16;20417:7;20409:16;;;;;;;;;;;:337;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20759:11;20776:7;20759:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20827:7;20800:131;20849:10;20874:5;20912:8;20894:15;:26;;;;:::i;:::-;20800:131;;;;;;;;:::i;:::-;;;;;;;;19907:1032:::0;;;;;;:::o;26340:109::-;26390:14;26424:17;26439:1;26424:14;:17::i;:::-;26417:24;;26340:109;:::o;26687:101::-;26735:16;26771:9;26764:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;26687:101;:::o;17223:40::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;19306:220::-;7012:13;:11;:13::i;:::-;19391:9:::1;:16;;;;19383:5;:24;19375:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;19461:9;19490:1;19471:9;:16;;;;:20;;;;:::i;:::-;19461:31;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;19442:9;19452:5;19442:16;;;;;;;;:::i;:::-;;;;;;;;;;:50;;;;;;;;;;;;;;;;;;19503:9;:15;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;19306:220:::0;:::o;24352:692::-;18721:10;18710:21;;:7;:5;:7::i;:::-;:21;;;:54;;;;18735:17;:29;18753:10;18735:29;;;;;;;;;;;;;;;;;;;;;;;;;18710:54;18688:116;;;;;;;;;;;;:::i;:::-;;;;;;;;;3525:21:::1;:19;:21::i;:::-;24434:15:::2;24452:7;:16;24460:7;24452:16;;;;;;;;;;;24434:34;;24488:1;:9;;;;;;;;;;;;24487:10;24479:42;;;;;;;;;;;;:::i;:::-;;;;;;;;;24534:21;24573:9:::0;24585:1:::2;24573:13;;24568:310;24592:14;:23;24607:7;24592:23;;;;;;;;;;;:30;;;;24588:1;:34;24568:310;;;24644:22;24669:14;:23;24684:7;24669:23;;;;;;;;;;;24693:1;24669:26;;;;;;;;:::i;:::-;;;;;;;;;;;;24644:51;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::2;;;24710:21;24734:5;:15;24740:1;:8;;;24734:15;;;;;;;;;;;24710:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::2;;;24785:1;:13;;;24777:31;;:45;24809:4;:12;;;24777:45;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;24854:4;:12;;;24837:29;;;;;:::i;:::-;;;24629:249;;24624:3;;;;;;;24568:310;;;;24895:1;:12;;;;;;;;;;;;24890:31;;;24930:4;24937:7;:5;:7::i;:::-;24946:1;:7;;;24890:64;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;::::0;::::2;;;;;;;;;24977:4;24965:1;:9;;;:16;;;;;;;;;;;;;;;;;;25013:7;24999:37;25022:13;24999:37;;;;;;:::i;:::-;;;;;;;;24423:621;;3569:20:::1;:18;:20::i;:::-;24352:692:::0;:::o;25085:379::-;18721:10;18710:21;;:7;:5;:7::i;:::-;:21;;;:54;;;;18735:17;:29;18753:10;18735:29;;;;;;;;;;;;;;;;;;;;;;;;;18710:54;18688:116;;;;;;;;;;;;:::i;:::-;;;;;;;;;25212:15:::1;25230:7;:16;25238:7;25230:16;;;;;;;;;;;25212:34;;25266:1;:9;;;;;;;;;;;;25265:10;25257:42;;;;;;;;;;;;:::i;:::-;;;;;;;;;25339:1;25318:18;:22;25310:51;;;;;;;;;;;;:::i;:::-;;;;;;;;;25387:18;25374:1;:9;;;:31;;;;;;;:::i;:::-;;;;;;;;25437:7;25423:33;25446:1;:9;;;25423:33;;;;;;:::i;:::-;;;;;;;;25201:263;25085:379:::0;;:::o;26796:170::-;26888:22;26935:14;:23;26950:7;26935:23;;;;;;;;;;;26928:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;26796:170;;;:::o;20978:1436::-;3525:21;:19;:21::i;:::-;21100:15:::1;21118:7;:16;21126:7;21118:16;;;;;;;;;;;21100:34;;21145:21;21169:5;:13;21175:6;21169:13;;;;;;;;;;;21145:37;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;21203:1;:8;;;;;;;;;;;;21195:34;;;;;;;;;;;;:::i;:::-;;;;;;;;;21249:1;:9;;;;;;;;;;;;21248:10;21240:34;;;;;;;;;;;;:::i;:::-;;;;;;;;;21311:1;:9;;;21293:15;:27;21285:57;;;;;;;;;;;;:::i;:::-;;;;;;;;;21361:4;:11;;;21353:36;;;;;;;;;;;;:::i;:::-;;;;;;;;;21408:32;21417:1;:14;;21408:32;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21433:6;21408:8;:32::i;:::-;21400:61;;;;;;;;;;;;:::i;:::-;;;;;;;;;21493:4;:12;;;21480:9;:25;21472:58;;;;;;;;;;;;:::i;:::-;;;;;;;;;21563:1;21547:4;:12;;;:17:::0;21543:567:::1;;21608:16;:25;21625:7;21608:25;;;;;;;;;;;:37;21634:10;21608:37;;;;;;;;;;;;;;;;;;;;;;;;;21607:38;21581:123;;;;;;;;;;;;:::i;:::-;;;;;;;;;21719:16;21763:9:::0;21758:220:::1;21782:9;:16;;;;21778:1;:20;21758:220;;;21871:1;21833:9;21843:1;21833:12;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;21828:28;;;21857:10;21828:40;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:44;21824:139;;;21911:4;21897:18;;21938:5;;21824:139;21800:3;;;;;;;21758:220;;;;22000:11;21992:47;;;;;;;;;;;;:::i;:::-;;;;;;;;;22094:4;22054:16;:25;22071:7;22054:25;;;;;;;;;;;:37;22080:10;22054:37;;;;;;;;;;;;;;;;:44;;;;;;;;;;;;;;;;;;21566:544;21543:567;22122:20;22164:4;:17;;;22145:4;:16;;;:36;;;;:::i;:::-;22122:59;;22192:14;:23;22207:7;22192:23;;;;;;;;;;;22235:47;;;;;;;;22249:10;22235:47;;;;;;22261:6;22235:47;;;;22269:12;22235:47;;::::0;22192:101:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22322:12;22304:1;:14;;;:30;;;;;;;:::i;:::-;;;;;;;;22372:7;22352:54;22381:10;22393:12;22352:54;;;;;;;:::i;:::-;;;;;;;;21089:1325;;;3569:20:::0;:18;:20::i;:::-;20978:1436;;:::o;28389:168::-;7012:13;:11;:13::i;:::-;28498:6:::1;28470:17;:25;28488:6;28470:25;;;;;;;;;;;;;;;;:34;;;;;;;;;;;;;;;;;;28534:6;28520:29;;;28542:6;28520:29;;;;;;:::i;:::-;;;;;;;;28389:168:::0;;:::o;16271:45::-;16314:2;16271:45;:::o;16177:37::-;16213:1;16177:37;:::o;17345:57::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;8059:220::-;7012:13;:11;:13::i;:::-;8164:1:::1;8144:22;;:8;:22;;::::0;8140:93:::1;;8218:1;8190:31;;;;;;;;;;;:::i;:::-;;;;;;;;8140:93;8243:28;8262:8;8243:18;:28::i;:::-;8059:220:::0;:::o;26999:1085::-;27090:14;27122:21;27158:11;:18;;;;27146:31;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;27122:55;;27188:13;27223:9;27218:683;27242:11;:18;;;;27238:1;:22;27218:683;;;27282:10;27295:11;27307:1;27295:14;;;;;;;;:::i;:::-;;;;;;;;;;27282:27;;27324:15;27342:7;:11;27350:2;27342:11;;;;;;;;;;;27324:29;;27370:12;27415:1;27401:10;:15;;;27397:386;;27476:1;:9;;;;;;;;;;;;27475:10;:41;;;;;27507:1;:9;;;27489:15;:27;27475:41;27465:51;;27397:386;;;27556:1;27542:10;:15;;;27538:245;;27616:1;:9;;;;;;;;;;;;27606:19;;27538:245;;;27665:1;27651:10;:15;;;27647:136;;27724:1;:9;;;;;;;;;;;;27723:10;:44;;;;;27757:1;:9;;;27738:15;:28;;27723:44;27713:54;;27647:136;27538:245;27397:386;27803:7;27799:91;;;27847:1;27831:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:6;27838:5;27831:13;;;;;;;;:::i;:::-;;;;;;;:17;;;;27867:7;;;;;:::i;:::-;;;;27799:91;27267:634;;;27262:3;;;;;;;27218:683;;;;27913:22;27950:5;27938:18;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;27913:43;;27972:9;27967:85;27991:5;27987:1;:9;27967:85;;;28031:6;28038:1;28031:9;;;;;;;;:::i;:::-;;;;;;;;28018:7;28026:1;28018:10;;;;;;;;:::i;:::-;;;;;;;:22;;;;27998:3;;;;;;;27967:85;;;;28069:7;28062:14;;;;;26999:1085;;;:::o;7291:166::-;7362:12;:10;:12::i;:::-;7351:23;;:7;:5;:7::i;:::-;:23;;;7347:103;;7425:12;:10;:12::i;:::-;7398:40;;;;;;;;;;;:::i;:::-;;;;;;;;7347:103;7291:166::o;3605:315::-;2903:1;3734:7;;:18;3730:88;;3776:30;;;;;;;;;;;;;;3730:88;2903:1;3895:7;:17;;;;3605:315::o;12251:98::-;12309:7;12340:1;12336;:5;;;;:::i;:::-;12329:12;;12251:98;;;;:::o;12650:::-;12708:7;12739:1;12735;:5;;;;:::i;:::-;12728:12;;12650:98;;;;:::o;11894:::-;11952:7;11983:1;11979;:5;;;;:::i;:::-;11972:12;;11894:98;;;;:::o;3928:212::-;2860:1;4111:7;:21;;;;3928:212::o;8439:191::-;8513:16;8532:6;;;;;;;;;;;8513:25;;8558:8;8549:6;;:17;;;;;;;;;;;;;;;;;;8613:8;8582:40;;8603:8;8582:40;;;;;;;;;;;;8502:128;8439:191;:::o;28092:256::-;28196:4;28223:9;28235:1;28223:13;;28218:100;28242:3;:10;28238:1;:14;28218:100;;;28288:5;28278:3;28282:1;28278:6;;;;;;;;:::i;:::-;;;;;;;;:15;28274:32;;28302:4;28295:11;;;;;28274:32;28254:3;;;;;;;28218:100;;;;28335:5;28328:12;;28092:256;;;;;:::o;5135:98::-;5188:7;5215:10;5208:17;;5135:98;:::o;-1:-1:-1:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::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:77;371:7;400:5;389:16;;334:77;;;:::o;417:122::-;490:24;508:5;490:24;:::i;:::-;483:5;480:35;470:63;;529:1;526;519:12;470:63;417:122;:::o;545:139::-;591:5;629:6;616:20;607:29;;645:33;672:5;645:33;:::i;:::-;545:139;;;;:::o;690:329::-;749:6;798:2;786:9;777:7;773:23;769:32;766:119;;;804:79;;:::i;:::-;766:119;924:1;949:53;994:7;985:6;974:9;970:22;949:53;:::i;:::-;939:63;;895:117;690:329;;;;:::o;1025:118::-;1112:24;1130:5;1112:24;:::i;:::-;1107:3;1100:37;1025:118;;:::o;1149:90::-;1183:7;1226:5;1219:13;1212:21;1201:32;;1149:90;;;:::o;1245:109::-;1326:21;1341:5;1326:21;:::i;:::-;1321:3;1314:34;1245:109;;:::o;1360:541::-;1531:4;1569:3;1558:9;1554:19;1546:27;;1583:71;1651:1;1640:9;1636:17;1627:6;1583:71;:::i;:::-;1664:72;1732:2;1721:9;1717:18;1708:6;1664:72;:::i;:::-;1746;1814:2;1803:9;1799:18;1790:6;1746:72;:::i;:::-;1828:66;1890:2;1879:9;1875:18;1866:6;1828:66;:::i;:::-;1360:541;;;;;;;:::o;1907:222::-;2000:4;2038:2;2027:9;2023:18;2015:26;;2051:71;2119:1;2108:9;2104:17;2095:6;2051:71;:::i;:::-;1907:222;;;;:::o;2135:136::-;2224:6;2258:5;2252:12;2242:22;;2135:136;;;:::o;2277:206::-;2398:11;2432:6;2427:3;2420:19;2472:4;2467:3;2463:14;2448:29;;2277:206;;;;:::o;2489:154::-;2578:4;2601:3;2593:11;;2631:4;2626:3;2622:14;2614:22;;2489:154;;;:::o;2649:77::-;2686:7;2715:5;2704:16;;2649:77;;;:::o;2732:108::-;2809:24;2827:5;2809:24;:::i;:::-;2804:3;2797:37;2732:108;;:::o;2846:114::-;2913:6;2947:5;2941:12;2931:22;;2846:114;;;:::o;2966:174::-;3055:11;3089:6;3084:3;3077:19;3129:4;3124:3;3120:14;3105:29;;2966:174;;;;:::o;3146:132::-;3213:4;3236:3;3228:11;;3266:4;3261:3;3257:14;3249:22;;3146:132;;;:::o;3284:108::-;3361:24;3379:5;3361:24;:::i;:::-;3356:3;3349:37;3284:108;;:::o;3398:179::-;3467:10;3488:46;3530:3;3522:6;3488:46;:::i;:::-;3566:4;3561:3;3557:14;3543:28;;3398:179;;;;:::o;3583:113::-;3653:4;3685;3680:3;3676:14;3668:22;;3583:113;;;:::o;3732:712::-;3841:3;3870:54;3918:5;3870:54;:::i;:::-;3940:76;4009:6;4004:3;3940:76;:::i;:::-;3933:83;;4040:56;4090:5;4040:56;:::i;:::-;4119:7;4150:1;4135:284;4160:6;4157:1;4154:13;4135:284;;;4236:6;4230:13;4263:63;4322:3;4307:13;4263:63;:::i;:::-;4256:70;;4349:60;4402:6;4349:60;:::i;:::-;4339:70;;4195:224;4182:1;4179;4175:9;4170:14;;4135:284;;;4139:14;4435:3;4428:10;;3846:598;;;3732:712;;;;:::o;4450:126::-;4487:7;4527:42;4520:5;4516:54;4505:65;;4450:126;;;:::o;4582:96::-;4619:7;4648:24;4666:5;4648:24;:::i;:::-;4637:35;;4582:96;;;:::o;4684:108::-;4761:24;4779:5;4761:24;:::i;:::-;4756:3;4749:37;4684:108;;:::o;4798:99::-;4869:21;4884:5;4869:21;:::i;:::-;4864:3;4857:34;4798:99;;:::o;4953:1863::-;5056:3;5092:6;5087:3;5083:16;5179:4;5172:5;5168:16;5162:23;5198:63;5255:4;5250:3;5246:14;5232:12;5198:63;:::i;:::-;5109:162;5361:4;5354:5;5350:16;5344:23;5414:3;5408:4;5404:14;5397:4;5392:3;5388:14;5381:38;5440:103;5538:4;5524:12;5440:103;:::i;:::-;5432:111;;5281:273;5642:4;5635:5;5631:16;5625:23;5661:63;5718:4;5713:3;5709:14;5695:12;5661:63;:::i;:::-;5564:170;5817:4;5810:5;5806:16;5800:23;5836:63;5893:4;5888:3;5884:14;5870:12;5836:63;:::i;:::-;5744:165;5999:4;5992:5;5988:16;5982:23;6018:63;6075:4;6070:3;6066:14;6052:12;6018:63;:::i;:::-;5919:172;6176:4;6169:5;6165:16;6159:23;6195:63;6252:4;6247:3;6243:14;6229:12;6195:63;:::i;:::-;6101:167;6352:4;6345:5;6341:16;6335:23;6371:63;6428:4;6423:3;6419:14;6405:12;6371:63;:::i;:::-;6278:166;6529:4;6522:5;6518:16;6512:23;6548:57;6599:4;6594:3;6590:14;6576:12;6548:57;:::i;:::-;6454:161;6699:6;6692:5;6688:18;6682:25;6720:59;6771:6;6766:3;6762:16;6748:12;6720:59;:::i;:::-;6625:164;6806:4;6799:11;;5061:1755;4953:1863;;;;:::o;6822:244::-;6935:10;6970:90;7056:3;7048:6;6970:90;:::i;:::-;6956:104;;6822:244;;;;:::o;7072:135::-;7164:4;7196;7191:3;7187:14;7179:22;;7072:135;;;:::o;7267:1087::-;7430:3;7459:76;7529:5;7459:76;:::i;:::-;7551:108;7652:6;7647:3;7551:108;:::i;:::-;7544:115;;7685:3;7730:4;7722:6;7718:17;7713:3;7709:27;7760:78;7832:5;7760:78;:::i;:::-;7861:7;7892:1;7877:432;7902:6;7899:1;7896:13;7877:432;;;7973:9;7967:4;7963:20;7958:3;7951:33;8024:6;8018:13;8052:108;8155:4;8140:13;8052:108;:::i;:::-;8044:116;;8183:82;8258:6;8183:82;:::i;:::-;8173:92;;8294:4;8289:3;8285:14;8278:21;;7937:372;7924:1;7921;7917:9;7912:14;;7877:432;;;7881:14;8325:4;8318:11;;8345:3;8338:10;;7435:919;;;;;7267:1087;;;;:::o;8360:461::-;8547:4;8585:2;8574:9;8570:18;8562:26;;8634:9;8628:4;8624:20;8620:1;8609:9;8605:17;8598:47;8662:152;8809:4;8800:6;8662:152;:::i;:::-;8654:160;;8360:461;;;;:::o;8827:122::-;8900:24;8918:5;8900:24;:::i;:::-;8893:5;8890:35;8880:63;;8939:1;8936;8929:12;8880:63;8827:122;:::o;8955:139::-;9001:5;9039:6;9026:20;9017:29;;9055:33;9082:5;9055:33;:::i;:::-;8955:139;;;;:::o;9100:329::-;9159:6;9208:2;9196:9;9187:7;9183:23;9179:32;9176:119;;;9214:79;;:::i;:::-;9176:119;9334:1;9359:53;9404:7;9395:6;9384:9;9380:22;9359:53;:::i;:::-;9349:63;;9305:117;9100:329;;;;:::o;9435:104::-;9480:7;9509:24;9527:5;9509:24;:::i;:::-;9498:35;;9435:104;;;:::o;9545:142::-;9648:32;9674:5;9648:32;:::i;:::-;9643:3;9636:45;9545:142;;:::o;9693:254::-;9802:4;9840:2;9829:9;9825:18;9817:26;;9853:87;9937:1;9926:9;9922:17;9913:6;9853:87;:::i;:::-;9693:254;;;;:::o;9953:122::-;10026:24;10044:5;10026:24;:::i;:::-;10019:5;10016:35;10006:63;;10065:1;10062;10055:12;10006:63;9953:122;:::o;10081:139::-;10127:5;10165:6;10152:20;10143:29;;10181:33;10208:5;10181:33;:::i;:::-;10081:139;;;;:::o;10226:474::-;10294:6;10302;10351:2;10339:9;10330:7;10326:23;10322:32;10319:119;;;10357:79;;:::i;:::-;10319:119;10477:1;10502:53;10547:7;10538:6;10527:9;10523:22;10502:53;:::i;:::-;10492:63;;10448:117;10604:2;10630:53;10675:7;10666:6;10655:9;10651:22;10630:53;:::i;:::-;10620:63;;10575:118;10226:474;;;;;:::o;10706:::-;10774:6;10782;10831:2;10819:9;10810:7;10806:23;10802:32;10799:119;;;10837:79;;:::i;:::-;10799:119;10957:1;10982:53;11027:7;11018:6;11007:9;11003:22;10982:53;:::i;:::-;10972:63;;10928:117;11084:2;11110:53;11155:7;11146:6;11135:9;11131:22;11110:53;:::i;:::-;11100:63;;11055:118;10706:474;;;;;:::o;11186:210::-;11273:4;11311:2;11300:9;11296:18;11288:26;;11324:65;11386:1;11375:9;11371:17;11362:6;11324:65;:::i;:::-;11186:210;;;;:::o;11402:118::-;11489:24;11507:5;11489:24;:::i;:::-;11484:3;11477:37;11402:118;;:::o;11526:222::-;11619:4;11657:2;11646:9;11642:18;11634:26;;11670:71;11738:1;11727:9;11723:17;11714:6;11670:71;:::i;:::-;11526:222;;;;:::o;11754:118::-;11841:24;11859:5;11841:24;:::i;:::-;11836:3;11829:37;11754:118;;:::o;11878:222::-;11971:4;12009:2;11998:9;11994:18;11986:26;;12022:71;12090:1;12079:9;12075:17;12066:6;12022:71;:::i;:::-;11878:222;;;;:::o;12106:474::-;12174:6;12182;12231:2;12219:9;12210:7;12206:23;12202:32;12199:119;;;12237:79;;:::i;:::-;12199:119;12357:1;12382:53;12427:7;12418:6;12407:9;12403:22;12382:53;:::i;:::-;12372:63;;12328:117;12484:2;12510:53;12555:7;12546:6;12535:9;12531:22;12510:53;:::i;:::-;12500:63;;12455:118;12106:474;;;;;:::o;12586:619::-;12663:6;12671;12679;12728:2;12716:9;12707:7;12703:23;12699:32;12696:119;;;12734:79;;:::i;:::-;12696:119;12854:1;12879:53;12924:7;12915:6;12904:9;12900:22;12879:53;:::i;:::-;12869:63;;12825:117;12981:2;13007:53;13052:7;13043:6;13032:9;13028:22;13007:53;:::i;:::-;12997:63;;12952:118;13109:2;13135:53;13180:7;13171:6;13160:9;13156:22;13135:53;:::i;:::-;13125:63;;13080:118;12586:619;;;;;:::o;13211:140::-;13304:6;13338:5;13332:12;13322:22;;13211:140;;;:::o;13357:210::-;13482:11;13516:6;13511:3;13504:19;13556:4;13551:3;13547:14;13532:29;;13357:210;;;;:::o;13573:158::-;13666:4;13689:3;13681:11;;13719:4;13714:3;13710:14;13702:22;;13573:158;;;:::o;13795:861::-;13934:4;13929:3;13925:14;14024:4;14017:5;14013:16;14007:23;14043:63;14100:4;14095:3;14091:14;14077:12;14043:63;:::i;:::-;13949:167;14205:4;14198:5;14194:16;14188:23;14224:63;14281:4;14276:3;14272:14;14258:12;14224:63;:::i;:::-;14126:171;14387:4;14380:5;14376:16;14370:23;14406:63;14463:4;14458:3;14454:14;14440:12;14406:63;:::i;:::-;14307:172;14563:4;14556:5;14552:16;14546:23;14582:57;14633:4;14628:3;14624:14;14610:12;14582:57;:::i;:::-;14489:160;13903:753;13795:861;;:::o;14662:283::-;14783:10;14804:98;14898:3;14890:6;14804:98;:::i;:::-;14934:4;14929:3;14925:14;14911:28;;14662:283;;;;:::o;14951:139::-;15047:4;15079;15074:3;15070:14;15062:22;;14951:139;;;:::o;15158:940::-;15329:3;15358:80;15432:5;15358:80;:::i;:::-;15454:112;15559:6;15554:3;15454:112;:::i;:::-;15447:119;;15590:82;15666:5;15590:82;:::i;:::-;15695:7;15726:1;15711:362;15736:6;15733:1;15730:13;15711:362;;;15812:6;15806:13;15839:115;15950:3;15935:13;15839:115;:::i;:::-;15832:122;;15977:86;16056:6;15977:86;:::i;:::-;15967:96;;15771:302;15758:1;15755;15751:9;15746:14;;15711:362;;;15715:14;16089:3;16082:10;;15334:764;;;15158:940;;;;:::o;16104:477::-;16299:4;16337:2;16326:9;16322:18;16314:26;;16386:9;16380:4;16376:20;16372:1;16361:9;16357:17;16350:47;16414:160;16569:4;16560:6;16414:160;:::i;:::-;16406:168;;16104:477;;;;:::o;16587:86::-;16622:7;16662:4;16655:5;16651:16;16640:27;;16587:86;;;:::o;16679:112::-;16762:22;16778:5;16762:22;:::i;:::-;16757:3;16750:35;16679:112;;:::o;16797:214::-;16886:4;16924:2;16913:9;16909:18;16901:26;;16937:67;17001:1;16990:9;16986:17;16977:6;16937:67;:::i;:::-;16797:214;;;;:::o;17017:117::-;17126:1;17123;17116:12;17140:102;17181:6;17232:2;17228:7;17223:2;17216:5;17212:14;17208:28;17198:38;;17140:102;;;:::o;17248:180::-;17296:77;17293:1;17286:88;17393:4;17390:1;17383:15;17417:4;17414:1;17407:15;17434:281;17517:27;17539:4;17517:27;:::i;:::-;17509:6;17505:40;17647:6;17635:10;17632:22;17611:18;17599:10;17596:34;17593:62;17590:88;;;17658:18;;:::i;:::-;17590:88;17698:10;17694:2;17687:22;17477:238;17434:281;;:::o;17721:129::-;17755:6;17782:20;;:::i;:::-;17772:30;;17811:33;17839:4;17831:6;17811:33;:::i;:::-;17721:129;;;:::o;17856:311::-;17933:4;18023:18;18015:6;18012:30;18009:56;;;18045:18;;:::i;:::-;18009:56;18095:4;18087:6;18083:17;18075:25;;18155:4;18149;18145:15;18137:23;;17856:311;;;:::o;18173:117::-;18282:1;18279;18272:12;18313:710;18409:5;18434:81;18450:64;18507:6;18450:64;:::i;:::-;18434:81;:::i;:::-;18425:90;;18535:5;18564:6;18557:5;18550:21;18598:4;18591:5;18587:16;18580:23;;18651:4;18643:6;18639:17;18631:6;18627:30;18680:3;18672:6;18669:15;18666:122;;;18699:79;;:::i;:::-;18666:122;18814:6;18797:220;18831:6;18826:3;18823:15;18797:220;;;18906:3;18935:37;18968:3;18956:10;18935:37;:::i;:::-;18930:3;18923:50;19002:4;18997:3;18993:14;18986:21;;18873:144;18857:4;18852:3;18848:14;18841:21;;18797:220;;;18801:21;18415:608;;18313:710;;;;;:::o;19046:370::-;19117:5;19166:3;19159:4;19151:6;19147:17;19143:27;19133:122;;19174:79;;:::i;:::-;19133:122;19291:6;19278:20;19316:94;19406:3;19398:6;19391:4;19383:6;19379:17;19316:94;:::i;:::-;19307:103;;19123:293;19046:370;;;;:::o;19422:975::-;19533:6;19541;19549;19557;19606:3;19594:9;19585:7;19581:23;19577:33;19574:120;;;19613:79;;:::i;:::-;19574:120;19761:1;19750:9;19746:17;19733:31;19791:18;19783:6;19780:30;19777:117;;;19813:79;;:::i;:::-;19777:117;19918:78;19988:7;19979:6;19968:9;19964:22;19918:78;:::i;:::-;19908:88;;19704:302;20045:2;20071:53;20116:7;20107:6;20096:9;20092:22;20071:53;:::i;:::-;20061:63;;20016:118;20173:2;20199:53;20244:7;20235:6;20224:9;20220:22;20199:53;:::i;:::-;20189:63;;20144:118;20301:2;20327:53;20372:7;20363:6;20352:9;20348:22;20327:53;:::i;:::-;20317:63;;20272:118;19422:975;;;;;;;:::o;20403:114::-;20470:6;20504:5;20498:12;20488:22;;20403:114;;;:::o;20523:184::-;20622:11;20656:6;20651:3;20644:19;20696:4;20691:3;20687:14;20672:29;;20523:184;;;;:::o;20713:132::-;20780:4;20803:3;20795:11;;20833:4;20828:3;20824:14;20816:22;;20713:132;;;:::o;20851:179::-;20920:10;20941:46;20983:3;20975:6;20941:46;:::i;:::-;21019:4;21014:3;21010:14;20996:28;;20851:179;;;;:::o;21036:113::-;21106:4;21138;21133:3;21129:14;21121:22;;21036:113;;;:::o;21185:732::-;21304:3;21333:54;21381:5;21333:54;:::i;:::-;21403:86;21482:6;21477:3;21403:86;:::i;:::-;21396:93;;21513:56;21563:5;21513:56;:::i;:::-;21592:7;21623:1;21608:284;21633:6;21630:1;21627:13;21608:284;;;21709:6;21703:13;21736:63;21795:3;21780:13;21736:63;:::i;:::-;21729:70;;21822:60;21875:6;21822:60;:::i;:::-;21812:70;;21668:224;21655:1;21652;21648:9;21643:14;;21608:284;;;21612:14;21908:3;21901:10;;21309:608;;;21185:732;;;;:::o;21923:373::-;22066:4;22104:2;22093:9;22089:18;22081:26;;22153:9;22147:4;22143:20;22139:1;22128:9;22124:17;22117:47;22181:108;22284:4;22275:6;22181:108;:::i;:::-;22173:116;;21923:373;;;;:::o;22302:329::-;22361:6;22410:2;22398:9;22389:7;22385:23;22381:32;22378:119;;;22416:79;;:::i;:::-;22378:119;22536:1;22561:53;22606:7;22597:6;22586:9;22582:22;22561:53;:::i;:::-;22551:63;;22507:117;22302:329;;;;:::o;22637:973::-;22914:4;22952:3;22941:9;22937:19;22929:27;;22966:71;23034:1;23023:9;23019:17;23010:6;22966:71;:::i;:::-;23047:72;23115:2;23104:9;23100:18;23091:6;23047:72;:::i;:::-;23129;23197:2;23186:9;23182:18;23173:6;23129:72;:::i;:::-;23211;23279:2;23268:9;23264:18;23255:6;23211:72;:::i;:::-;23293:73;23361:3;23350:9;23346:19;23337:6;23293:73;:::i;:::-;23376;23444:3;23433:9;23429:19;23420:6;23376:73;:::i;:::-;23459:67;23521:3;23510:9;23506:19;23497:6;23459:67;:::i;:::-;23536;23598:3;23587:9;23583:19;23574:6;23536:67;:::i;:::-;22637:973;;;;;;;;;;;:::o;23616:144::-;23713:6;23747:5;23741:12;23731:22;;23616:144;;;:::o;23766:214::-;23895:11;23929:6;23924:3;23917:19;23969:4;23964:3;23960:14;23945:29;;23766:214;;;;:::o;23986:162::-;24083:4;24106:3;24098:11;;24136:4;24131:3;24127:14;24119:22;;23986:162;;;:::o;24220:693::-;24367:4;24362:3;24358:14;24461:4;24454:5;24450:16;24444:23;24480:63;24537:4;24532:3;24528:14;24514:12;24480:63;:::i;:::-;24382:171;24637:4;24630:5;24626:16;24620:23;24656:63;24713:4;24708:3;24704:14;24690:12;24656:63;:::i;:::-;24563:166;24814:4;24807:5;24803:16;24797:23;24833:63;24890:4;24885:3;24881:14;24867:12;24833:63;:::i;:::-;24739:167;24336:577;24220:693;;:::o;24919:299::-;25048:10;25069:106;25171:3;25163:6;25069:106;:::i;:::-;25207:4;25202:3;25198:14;25184:28;;24919:299;;;;:::o;25224:143::-;25324:4;25356;25351:3;25347:14;25339:22;;25224:143;;;:::o;25443:972::-;25622:3;25651:84;25729:5;25651:84;:::i;:::-;25751:116;25860:6;25855:3;25751:116;:::i;:::-;25744:123;;25891:86;25971:5;25891:86;:::i;:::-;26000:7;26031:1;26016:374;26041:6;26038:1;26035:13;26016:374;;;26117:6;26111:13;26144:123;26263:3;26248:13;26144:123;:::i;:::-;26137:130;;26290:90;26373:6;26290:90;:::i;:::-;26280:100;;26076:314;26063:1;26060;26056:9;26051:14;;26016:374;;;26020:14;26406:3;26399:10;;25627:788;;;25443:972;;;;:::o;26421:493::-;26624:4;26662:2;26651:9;26647:18;26639:26;;26711:9;26705:4;26701:20;26697:1;26686:9;26682:17;26675:47;26739:168;26902:4;26893:6;26739:168;:::i;:::-;26731:176;;26421:493;;;;:::o;26920:116::-;26990:21;27005:5;26990:21;:::i;:::-;26983:5;26980:32;26970:60;;27026:1;27023;27016:12;26970:60;26920:116;:::o;27042:133::-;27085:5;27123:6;27110:20;27101:29;;27139:30;27163:5;27139:30;:::i;:::-;27042:133;;;;:::o;27181:468::-;27246:6;27254;27303:2;27291:9;27282:7;27278:23;27274:32;27271:119;;;27309:79;;:::i;:::-;27271:119;27429:1;27454:53;27499:7;27490:6;27479:9;27475:22;27454:53;:::i;:::-;27444:63;;27400:117;27556:2;27582:50;27624:7;27615:6;27604:9;27600:22;27582:50;:::i;:::-;27572:60;;27527:115;27181:468;;;;;:::o;27655:442::-;27804:4;27842:2;27831:9;27827:18;27819:26;;27855:71;27923:1;27912:9;27908:17;27899:6;27855:71;:::i;:::-;27936:72;28004:2;27993:9;27989:18;27980:6;27936:72;:::i;:::-;28018;28086:2;28075:9;28071:18;28062:6;28018:72;:::i;:::-;27655:442;;;;;;:::o;28103:169::-;28187:11;28221:6;28216:3;28209:19;28261:4;28256:3;28252:14;28237:29;;28103:169;;;;:::o;28278:162::-;28418:14;28414:1;28406:6;28402:14;28395:38;28278:162;:::o;28446:366::-;28588:3;28609:67;28673:2;28668:3;28609:67;:::i;:::-;28602:74;;28685:93;28774:3;28685:93;:::i;:::-;28803:2;28798:3;28794:12;28787:19;;28446:366;;;:::o;28818:419::-;28984:4;29022:2;29011:9;29007:18;28999:26;;29071:9;29065:4;29061:20;29057:1;29046:9;29042:17;29035:47;29099:131;29225:4;29099:131;:::i;:::-;29091:139;;28818:419;;;:::o;29243:169::-;29383:21;29379:1;29371:6;29367:14;29360:45;29243:169;:::o;29418:366::-;29560:3;29581:67;29645:2;29640:3;29581:67;:::i;:::-;29574:74;;29657:93;29746:3;29657:93;:::i;:::-;29775:2;29770:3;29766:12;29759:19;;29418:366;;;:::o;29790:419::-;29956:4;29994:2;29983:9;29979:18;29971:26;;30043:9;30037:4;30033:20;30029:1;30018:9;30014:17;30007:47;30071:131;30197:4;30071:131;:::i;:::-;30063:139;;29790:419;;;:::o;30215:79::-;30254:7;30283:5;30272:16;;30215:79;;;:::o;30300:157::-;30405:45;30425:24;30443:5;30425:24;:::i;:::-;30405:45;:::i;:::-;30400:3;30393:58;30300:157;;:::o;30463:94::-;30496:8;30544:5;30540:2;30536:14;30515:35;;30463:94;;;:::o;30563:::-;30602:7;30631:20;30645:5;30631:20;:::i;:::-;30620:31;;30563:94;;;:::o;30663:100::-;30702:7;30731:26;30751:5;30731:26;:::i;:::-;30720:37;;30663:100;;;:::o;30769:157::-;30874:45;30894:24;30912:5;30894:24;:::i;:::-;30874:45;:::i;:::-;30869:3;30862:58;30769:157;;:::o;30932:538::-;31100:3;31115:75;31186:3;31177:6;31115:75;:::i;:::-;31215:2;31210:3;31206:12;31199:19;;31228:75;31299:3;31290:6;31228:75;:::i;:::-;31328:2;31323:3;31319:12;31312:19;;31341:75;31412:3;31403:6;31341:75;:::i;:::-;31441:2;31436:3;31432:12;31425:19;;31461:3;31454:10;;30932:538;;;;;;:::o;31476:180::-;31524:77;31521:1;31514:88;31621:4;31618:1;31611:15;31645:4;31642:1;31635:15;31662:176;31694:1;31711:20;31729:1;31711:20;:::i;:::-;31706:25;;31745:20;31763:1;31745:20;:::i;:::-;31740:25;;31784:1;31774:35;;31789:18;;:::i;:::-;31774:35;31830:1;31827;31823:9;31818:14;;31662:176;;;;:::o;31844:180::-;31892:77;31889:1;31882:88;31989:4;31986:1;31979:15;32013:4;32010:1;32003:15;32030:180;32078:77;32075:1;32068:88;32175:4;32172:1;32165:15;32199:4;32196:1;32189:15;32216:191;32256:3;32275:20;32293:1;32275:20;:::i;:::-;32270:25;;32309:20;32327:1;32309:20;:::i;:::-;32304:25;;32352:1;32349;32345:9;32338:16;;32373:3;32370:1;32367:10;32364:36;;;32380:18;;:::i;:::-;32364:36;32216:191;;;;:::o;32413:143::-;32470:5;32501:6;32495:13;32486:22;;32517:33;32544:5;32517:33;:::i;:::-;32413:143;;;;:::o;32562:351::-;32632:6;32681:2;32669:9;32660:7;32656:23;32652:32;32649:119;;;32687:79;;:::i;:::-;32649:119;32807:1;32832:64;32888:7;32879:6;32868:9;32864:22;32832:64;:::i;:::-;32822:74;;32778:128;32562:351;;;;:::o;32919:175::-;33059:27;33055:1;33047:6;33043:14;33036:51;32919:175;:::o;33100:366::-;33242:3;33263:67;33327:2;33322:3;33263:67;:::i;:::-;33256:74;;33339:93;33428:3;33339:93;:::i;:::-;33457:2;33452:3;33448:12;33441:19;;33100:366;;;:::o;33472:419::-;33638:4;33676:2;33665:9;33661:18;33653:26;;33725:9;33719:4;33715:20;33711:1;33700:9;33696:17;33689:47;33753:131;33879:4;33753:131;:::i;:::-;33745:139;;33472:419;;;:::o;33897:442::-;34046:4;34084:2;34073:9;34069:18;34061:26;;34097:71;34165:1;34154:9;34150:17;34141:6;34097:71;:::i;:::-;34178:72;34246:2;34235:9;34231:18;34222:6;34178:72;:::i;:::-;34260;34328:2;34317:9;34313:18;34304:6;34260:72;:::i;:::-;33897:442;;;;;;:::o;34345:553::-;34522:4;34560:3;34549:9;34545:19;34537:27;;34574:71;34642:1;34631:9;34627:17;34618:6;34574:71;:::i;:::-;34655:72;34723:2;34712:9;34708:18;34699:6;34655:72;:::i;:::-;34737;34805:2;34794:9;34790:18;34781:6;34737:72;:::i;:::-;34819;34887:2;34876:9;34872:18;34863:6;34819:72;:::i;:::-;34345:553;;;;;;;:::o;34904:332::-;35025:4;35063:2;35052:9;35048:18;35040:26;;35076:71;35144:1;35133:9;35129:17;35120:6;35076:71;:::i;:::-;35157:72;35225:2;35214:9;35210:18;35201:6;35157:72;:::i;:::-;34904:332;;;;;:::o;35242:180::-;35382:32;35378:1;35370:6;35366:14;35359:56;35242:180;:::o;35428:366::-;35570:3;35591:67;35655:2;35650:3;35591:67;:::i;:::-;35584:74;;35667:93;35756:3;35667:93;:::i;:::-;35785:2;35780:3;35776:12;35769:19;;35428:366;;;:::o;35800:419::-;35966:4;36004:2;35993:9;35989:18;35981:26;;36053:9;36047:4;36043:20;36039:1;36028:9;36024:17;36017:47;36081:131;36207:4;36081:131;:::i;:::-;36073:139;;35800:419;;;:::o;36225:442::-;36374:4;36412:2;36401:9;36397:18;36389:26;;36425:71;36493:1;36482:9;36478:17;36469:6;36425:71;:::i;:::-;36506:72;36574:2;36563:9;36559:18;36550:6;36506:72;:::i;:::-;36588;36656:2;36645:9;36641:18;36632:6;36588:72;:::i;:::-;36225:442;;;;;;:::o;36673:233::-;36712:3;36735:24;36753:5;36735:24;:::i;:::-;36726:33;;36781:66;36774:5;36771:77;36768:103;;36851:18;;:::i;:::-;36768:103;36898:1;36891:5;36887:13;36880:20;;36673:233;;;:::o;36912:194::-;36952:4;36972:20;36990:1;36972:20;:::i;:::-;36967:25;;37006:20;37024:1;37006:20;:::i;:::-;37001:25;;37050:1;37047;37043:9;37035:17;;37074:1;37068:4;37065:11;37062:37;;;37079:18;;:::i;:::-;37062:37;36912:194;;;;:::o;37112:166::-;37252:18;37248:1;37240:6;37236:14;37229:42;37112:166;:::o;37284:366::-;37426:3;37447:67;37511:2;37506:3;37447:67;:::i;:::-;37440:74;;37523:93;37612:3;37523:93;:::i;:::-;37641:2;37636:3;37632:12;37625:19;;37284:366;;;:::o;37656:419::-;37822:4;37860:2;37849:9;37845:18;37837:26;;37909:9;37903:4;37899:20;37895:1;37884:9;37880:17;37873:47;37937:131;38063:4;37937:131;:::i;:::-;37929:139;;37656:419;;;:::o;38081:163::-;38221:15;38217:1;38209:6;38205:14;38198:39;38081:163;:::o;38250:366::-;38392:3;38413:67;38477:2;38472:3;38413:67;:::i;:::-;38406:74;;38489:93;38578:3;38489:93;:::i;:::-;38607:2;38602:3;38598:12;38591:19;;38250:366;;;:::o;38622:419::-;38788:4;38826:2;38815:9;38811:18;38803:26;;38875:9;38869:4;38865:20;38861:1;38850:9;38846:17;38839:47;38903:131;39029:4;38903:131;:::i;:::-;38895:139;;38622:419;;;:::o;39047:679::-;39243:3;39258:75;39329:3;39320:6;39258:75;:::i;:::-;39358:2;39353:3;39349:12;39342:19;;39371:75;39442:3;39433:6;39371:75;:::i;:::-;39471:2;39466:3;39462:12;39455:19;;39484:75;39555:3;39546:6;39484:75;:::i;:::-;39584:2;39579:3;39575:12;39568:19;;39597:75;39668:3;39659:6;39597:75;:::i;:::-;39697:2;39692:3;39688:12;39681:19;;39717:3;39710:10;;39047:679;;;;;;;:::o;39732:169::-;39872:21;39868:1;39860:6;39856:14;39849:45;39732:169;:::o;39907:366::-;40049:3;40070:67;40134:2;40129:3;40070:67;:::i;:::-;40063:74;;40146:93;40235:3;40146:93;:::i;:::-;40264:2;40259:3;40255:12;40248:19;;39907:366;;;:::o;40279:419::-;40445:4;40483:2;40472:9;40468:18;40460:26;;40532:9;40526:4;40522:20;40518:1;40507:9;40503:17;40496:47;40560:131;40686:4;40560:131;:::i;:::-;40552:139;;40279:419;;;:::o;40704:180::-;40752:77;40749:1;40742:88;40849:4;40846:1;40839:15;40873:4;40870:1;40863:15;40890:163;41030:15;41026:1;41018:6;41014:14;41007:39;40890:163;:::o;41059:366::-;41201:3;41222:67;41286:2;41281:3;41222:67;:::i;:::-;41215:74;;41298:93;41387:3;41298:93;:::i;:::-;41416:2;41411:3;41407:12;41400:19;;41059:366;;;:::o;41431:419::-;41597:4;41635:2;41624:9;41620:18;41612:26;;41684:9;41678:4;41674:20;41670:1;41659:9;41655:17;41648:47;41712:131;41838:4;41712:131;:::i;:::-;41704:139;;41431:419;;;:::o;41856:161::-;41996:13;41992:1;41984:6;41980:14;41973:37;41856:161;:::o;42023:366::-;42165:3;42186:67;42250:2;42245:3;42186:67;:::i;:::-;42179:74;;42262:93;42351:3;42262:93;:::i;:::-;42380:2;42375:3;42371:12;42364:19;;42023:366;;;:::o;42395:419::-;42561:4;42599:2;42588:9;42584:18;42576:26;;42648:9;42642:4;42638:20;42634:1;42623:9;42619:17;42612:47;42676:131;42802:4;42676:131;:::i;:::-;42668:139;;42395:419;;;:::o;42820:167::-;42960:19;42956:1;42948:6;42944:14;42937:43;42820:167;:::o;42993:366::-;43135:3;43156:67;43220:2;43215:3;43156:67;:::i;:::-;43149:74;;43232:93;43321:3;43232:93;:::i;:::-;43350:2;43345:3;43341:12;43334:19;;42993:366;;;:::o;43365:419::-;43531:4;43569:2;43558:9;43554:18;43546:26;;43618:9;43612:4;43608:20;43604:1;43593:9;43589:17;43582:47;43646:131;43772:4;43646:131;:::i;:::-;43638:139;;43365:419;;;:::o;43790:162::-;43930:14;43926:1;43918:6;43914:14;43907:38;43790:162;:::o;43958:366::-;44100:3;44121:67;44185:2;44180:3;44121:67;:::i;:::-;44114:74;;44197:93;44286:3;44197:93;:::i;:::-;44315:2;44310:3;44306:12;44299:19;;43958:366;;;:::o;44330:419::-;44496:4;44534:2;44523:9;44519:18;44511:26;;44583:9;44577:4;44573:20;44569:1;44558:9;44554:17;44547:47;44611:131;44737:4;44611:131;:::i;:::-;44603:139;;44330:419;;;:::o;44755:166::-;44895:18;44891:1;44883:6;44879:14;44872:42;44755:166;:::o;44927:366::-;45069:3;45090:67;45154:2;45149:3;45090:67;:::i;:::-;45083:74;;45166:93;45255:3;45166:93;:::i;:::-;45284:2;45279:3;45275:12;45268:19;;44927:366;;;:::o;45299:419::-;45465:4;45503:2;45492:9;45488:18;45480:26;;45552:9;45546:4;45542:20;45538:1;45527:9;45523:17;45516:47;45580:131;45706:4;45580:131;:::i;:::-;45572:139;;45299:419;;;:::o;45724:170::-;45864:22;45860:1;45852:6;45848:14;45841:46;45724:170;:::o;45900:366::-;46042:3;46063:67;46127:2;46122:3;46063:67;:::i;:::-;46056:74;;46139:93;46228:3;46139:93;:::i;:::-;46257:2;46252:3;46248:12;46241:19;;45900:366;;;:::o;46272:419::-;46438:4;46476:2;46465:9;46461:18;46453:26;;46525:9;46519:4;46515:20;46511:1;46500:9;46496:17;46489:47;46553:131;46679:4;46553:131;:::i;:::-;46545:139;;46272:419;;;:::o;46697:173::-;46837:25;46833:1;46825:6;46821:14;46814:49;46697:173;:::o;46876:366::-;47018:3;47039:67;47103:2;47098:3;47039:67;:::i;:::-;47032:74;;47115:93;47204:3;47115:93;:::i;:::-;47233:2;47228:3;47224:12;47217:19;;46876:366;;;:::o;47248:419::-;47414:4;47452:2;47441:9;47437:18;47429:26;;47501:9;47495:4;47491:20;47487:1;47476:9;47472:17;47465:47;47529:131;47655:4;47529:131;:::i;:::-;47521:139;;47248:419;;;:::o;47673:143::-;47730:5;47761:6;47755:13;47746:22;;47777:33;47804:5;47777:33;:::i;:::-;47673:143;;;;:::o;47822:351::-;47892:6;47941:2;47929:9;47920:7;47916:23;47912:32;47909:119;;;47947:79;;:::i;:::-;47909:119;48067:1;48092:64;48148:7;48139:6;48128:9;48124:22;48092:64;:::i;:::-;48082:74;;48038:128;47822:351;;;;:::o;48179:173::-;48319:25;48315:1;48307:6;48303:14;48296:49;48179:173;:::o;48358:366::-;48500:3;48521:67;48585:2;48580:3;48521:67;:::i;:::-;48514:74;;48597:93;48686:3;48597:93;:::i;:::-;48715:2;48710:3;48706:12;48699:19;;48358:366;;;:::o;48730:419::-;48896:4;48934:2;48923:9;48919:18;48911:26;;48983:9;48977:4;48973:20;48969:1;48958:9;48954:17;48947:47;49011:131;49137:4;49011:131;:::i;:::-;49003:139;;48730:419;;;:::o;49155:410::-;49195:7;49218:20;49236:1;49218:20;:::i;:::-;49213:25;;49252:20;49270:1;49252:20;:::i;:::-;49247:25;;49307:1;49304;49300:9;49329:30;49347:11;49329:30;:::i;:::-;49318:41;;49508:1;49499:7;49495:15;49492:1;49489:22;49469:1;49462:9;49442:83;49419:139;;49538:18;;:::i;:::-;49419:139;49203:362;49155:410;;;;:::o;49571:185::-;49611:1;49628:20;49646:1;49628:20;:::i;:::-;49623:25;;49662:20;49680:1;49662:20;:::i;:::-;49657:25;;49701:1;49691:35;;49706:18;;:::i;:::-;49691:35;49748:1;49745;49741:9;49736:14;;49571:185;;;;:::o
Swarm Source
ipfs://7dba9b205d35e930d7eded2d0cf8d7c17be5949cf3c9dd6ac650c8303321c9fb
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 35 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|
[ Download: CSV Export ]
[ Download: CSV Export ]
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.