Overview
AVAX Balance
57.733075155435465625 AVAX
AVAX Value
$3,000.31 (@ $51.97/AVAX)More Info
Private Name Tags
ContractCreator
Latest 25 from a total of 102,739 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Submit | 54036989 | 7 secs ago | IN | 0.0165462 AVAX | 0.01709072 | ||||
Submit | 54036984 | 17 secs ago | IN | 0.08145821 AVAX | 0.0224536 | ||||
Submit | 54036971 | 43 secs ago | IN | 0.01400063 AVAX | 0.01699815 | ||||
Submit | 54036970 | 45 secs ago | IN | 0.08145821 AVAX | 0.02247932 | ||||
Submit | 54036917 | 2 mins ago | IN | 0.08145821 AVAX | 0.0224691 | ||||
Submit | 54036908 | 3 mins ago | IN | 0.03563797 AVAX | 0.02017662 | ||||
Submit | 54036903 | 3 mins ago | IN | 0.03563797 AVAX | 0.0201497 | ||||
Submit | 54036897 | 3 mins ago | IN | 0.00127278 AVAX | 0.00950102 | ||||
Submit | 54036872 | 4 mins ago | IN | 0.03818354 AVAX | 0.02238395 | ||||
Submit | 54036869 | 4 mins ago | IN | 0.03818354 AVAX | 0.02238425 | ||||
Claim | 54036867 | 4 mins ago | IN | 0.01939481 AVAX | 0.03989022 | ||||
Claim | 54036867 | 4 mins ago | IN | 0.01939481 AVAX | 0.0403851 | ||||
Submit | 54036855 | 4 mins ago | IN | 0.08145821 AVAX | 0.0223049 | ||||
Submit | 54036853 | 4 mins ago | IN | 0.08145821 AVAX | 0.0223055 | ||||
Submit | 54036835 | 5 mins ago | IN | 0.03563797 AVAX | 0.02065365 | ||||
Submit | 54036833 | 5 mins ago | IN | 0.01400063 AVAX | 0.01699475 | ||||
Submit | 54036831 | 5 mins ago | IN | 0.03563797 AVAX | 0.02062672 | ||||
Claim | 54036795 | 7 mins ago | IN | 0.01939481 AVAX | 0.03989022 | ||||
Submit | 54036773 | 7 mins ago | IN | 0.07127594 AVAX | 0.02252357 | ||||
Submit | 54036763 | 8 mins ago | IN | 0.03436518 AVAX | 0.02254397 | ||||
Submit | 54036757 | 8 mins ago | IN | 0.08145821 AVAX | 0.02247697 | ||||
Submit | 54036732 | 9 mins ago | IN | 0.08145821 AVAX | 0.0224414 | ||||
Claim | 54036728 | 9 mins ago | IN | 0.01939481 AVAX | 0.03893847 | ||||
Claim | 54036728 | 9 mins ago | IN | 0.05818444 AVAX | 0.03099732 | ||||
Submit | 54036717 | 9 mins ago | IN | 0.00254556 AVAX | 0.01137002 |
Latest 25 internal transactions (View All)
Parent Transaction Hash | Block | From | To | |||
---|---|---|---|---|---|---|
54022246 | 8 hrs ago | 22.1385677 AVAX | ||||
54015515 | 12 hrs ago | 22.08731117 AVAX | ||||
54009728 | 15 hrs ago | 154.19238686 AVAX | ||||
53975015 | 35 hrs ago | 200.49940838 AVAX | ||||
53922601 | 2 days ago | 97.23581513 AVAX | ||||
53903311 | 3 days ago | 9.90285114 AVAX | ||||
53902046 | 3 days ago | 12.60445584 AVAX | ||||
53898264 | 3 days ago | 19.12361896 AVAX | ||||
53891828 | 3 days ago | 15.96437676 AVAX | ||||
53887038 | 3 days ago | 47.60628207 AVAX | ||||
53875854 | 3 days ago | 48.52864288 AVAX | ||||
53864598 | 4 days ago | 25.19830856 AVAX | ||||
53860368 | 4 days ago | 3.96965493 AVAX | ||||
53859874 | 4 days ago | 26.97103523 AVAX | ||||
53852033 | 4 days ago | 56.79353063 AVAX | ||||
53835991 | 4 days ago | 96.08938608 AVAX | ||||
53817819 | 5 days ago | 44.74964401 AVAX | ||||
53806899 | 5 days ago | 415.23613328 AVAX | ||||
53722809 | 7 days ago | 151.87444316 AVAX | ||||
53693045 | 8 days ago | 71.41310387 AVAX | ||||
53678920 | 8 days ago | 82.06790057 AVAX | ||||
53661987 | 8 days ago | 43.0974137 AVAX | ||||
53653227 | 9 days ago | 74.62031922 AVAX | ||||
53641093 | 9 days ago | 168.0156411 AVAX | ||||
53609263 | 10 days ago | 51.80848668 AVAX |
Loading...
Loading
Contract Name:
MINING
Compiler Version
v0.8.20+commit.a1b79de6
Contract Source Code (Solidity)
/** *Submitted for verification at snowscan.xyz on 2024-11-12 */ // 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/utils/Pausable.sol // OpenZeppelin Contracts (last updated v5.0.0) (utils/Pausable.sol) pragma solidity ^0.8.20; /** * @dev Contract module which allows children to implement an emergency stop * mechanism that can be triggered by an authorized account. * * This module is used through inheritance. It will make available the * modifiers `whenNotPaused` and `whenPaused`, which can be applied to * the functions of your contract. Note that they will not be pausable by * simply including this module, only once the modifiers are put in place. */ abstract contract Pausable is Context { bool private _paused; /** * @dev Emitted when the pause is triggered by `account`. */ event Paused(address account); /** * @dev Emitted when the pause is lifted by `account`. */ event Unpaused(address account); /** * @dev The operation failed because the contract is paused. */ error EnforcedPause(); /** * @dev The operation failed because the contract is not paused. */ error ExpectedPause(); /** * @dev Initializes the contract in unpaused state. */ constructor() { _paused = false; } /** * @dev Modifier to make a function callable only when the contract is not paused. * * Requirements: * * - The contract must not be paused. */ modifier whenNotPaused() { _requireNotPaused(); _; } /** * @dev Modifier to make a function callable only when the contract is paused. * * Requirements: * * - The contract must be paused. */ modifier whenPaused() { _requirePaused(); _; } /** * @dev Returns true if the contract is paused, and false otherwise. */ function paused() public view virtual returns (bool) { return _paused; } /** * @dev Throws if the contract is paused. */ function _requireNotPaused() internal view virtual { if (paused()) { revert EnforcedPause(); } } /** * @dev Throws if the contract is not paused. */ function _requirePaused() internal view virtual { if (!paused()) { revert ExpectedPause(); } } /** * @dev Triggers stopped state. * * Requirements: * * - The contract must not be paused. */ function _pause() internal virtual whenNotPaused { _paused = true; emit Paused(_msgSender()); } /** * @dev Returns to normal state. * * Requirements: * * - The contract must be paused. */ function _unpause() internal virtual whenPaused { _paused = false; emit Unpaused(_msgSender()); } } // 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/access/Ownable2Step.sol // OpenZeppelin Contracts (last updated v5.0.0) (access/Ownable2Step.sol) pragma solidity ^0.8.20; /** * @dev Contract module which provides access control mechanism, where * there is an account (an owner) that can be granted exclusive access to * specific functions. * * The initial owner is specified at deployment time in the constructor for `Ownable`. This * can later be changed with {transferOwnership} and {acceptOwnership}. * * This module is used through inheritance. It will make available all functions * from parent (Ownable). */ abstract contract Ownable2Step is Ownable { address private _pendingOwner; event OwnershipTransferStarted(address indexed previousOwner, address indexed newOwner); /** * @dev Returns the address of the pending owner. */ function pendingOwner() public view virtual returns (address) { return _pendingOwner; } /** * @dev Starts the ownership transfer of the contract to a new account. Replaces the pending transfer if there is one. * Can only be called by the current owner. */ function transferOwnership(address newOwner) public virtual override onlyOwner { _pendingOwner = newOwner; emit OwnershipTransferStarted(owner(), newOwner); } /** * @dev Transfers ownership of the contract to a new account (`newOwner`) and deletes any pending owner. * Internal function without access restriction. */ function _transferOwnership(address newOwner) internal virtual override { delete _pendingOwner; super._transferOwnership(newOwner); } /** * @dev The new owner accepts the ownership transfer. */ function acceptOwnership() public virtual { address sender = _msgSender(); if (pendingOwner() != sender) { revert OwnableUnauthorizedAccount(sender); } _transferOwnership(sender); } } // File: contracts/MiningV9/Core/Mining.sol pragma solidity ^0.8.20; contract MINING is Pausable, Ownable2Step { mapping ( address => bool ) public allowedContracts; mapping ( uint256 => uint256 ) public totalDailyShares; mapping ( bytes => shareData ) public submitted; mapping ( bytes => shareData ) public claimed; mapping ( address => submittedData[] ) public submittedByDock; mapping ( address => mapping(uint => bool) ) public submittedByOwner; mapping ( uint => mapping(uint => address) ) public submittedByMiner; mapping (bytes => bool) public usedData; mapping (uint => uint) public dailySubmissions; //legcy MINING public legacyCon; mapping (address => mapping ( uint=> bool)) public legacySubmittedByOwner; mapping (address => uint) public daysClaimed; mapping (address => mapping (uint => bool)) public dayClaimed; //legacy int public timeZoneOffset; uint public startingDate; uint public daysBuffer; bool public checkDataUnique; bytes32 private tknHash; IDock public dockCon; IAirdrops public airdropsCon; IActivities public activitiesCon; ITokenPricing public tokenPricingCon; IFees public feesCon; ILogs public logsCon; ILease public leaseCon; address public usdToken; address public wrappedCoin; address public mainToken; //fees prices in $ 6 decimals constructor() Ownable(msg.sender) { legacyCon = MINING(0x069571BDA2f6Fbb2fEDcF18a7BbdA1014b485818); dockCon = IDock(0x7d2F62b6134e8B5676D17f5E988B3e48b4f50b70); airdropsCon = IAirdrops(0x5ff0AB41Cb09bF077a471fEbef35934f040305cf); activitiesCon = IActivities(0x0e5A335093AEd1559C14581f44D3928Aa05D8756); feesCon = IFees(0x5d9bab4a66f084746844b0FC0115B3174C327E42); tokenPricingCon = ITokenPricing(0x1E5c4001009B1ebCd98DBD0e95cE45f119373b52); usdToken = 0x9702230A8Ea53601f5cD2dc00fDBc13d4dF4A8c7; wrappedCoin = 0xB31f66AA3C1e785363F0875A1B74E27b85FD66c7; mainToken = 0xef0cdae2FfEEeFA539a244a16b3f46ba75b8c810; daysBuffer = 3; timeZoneOffset = -5; } struct shareData{address _owner;uint shares;uint day;} struct submittedData{uint shares;uint _day;} struct submittedPerDay{uint _day;uint _nbr;uint _shares;} struct removeSubmitData{uint tokenId;uint index;} struct dockCompData{uint _userSlots; uint _dockedNbr; uint[] _docked; uint _leasedNbr; uint[] _leased; uint[] _all;} event submitEvent(uint _shares,address _owner,uint _round); event claimEvent(address _owner,uint _totalDays,uint _totalShares); //ALLOW--PAUSE--START function pause() public onlyOwner {_pause();} function unpause() public onlyOwner {_unpause();} modifier onlyAllowedContract (){require(allowedContracts[msg.sender] == true);_;} function allowContract ( address _addr ) onlyOwner public {allowedContracts[_addr ] = true;} function disallowContract ( address _addr ) onlyOwner public {allowedContracts[_addr ] = false;} //ALLOW--PAUSE--END function __importLegacyGlobalShares(uint _start, uint _end) public onlyOwner { for (uint i= _start; i<= _end; i++) {totalDailyShares[i] = legacyCon.totalDailyShares(i);} } function getUserDockComposition(address _user) public view returns (dockCompData memory compData) { IDock.userDock memory dock = dockCon.getUserDock(_user); compData._userSlots = dock._userSlots; compData._docked = dock._userDock; if (address(leaseCon) != address(0)) {compData._leased = leaseCon.getLeased(_user);} else {compData._leased = new uint[](0);} compData._dockedNbr = compData._docked.length; compData._leasedNbr = compData._leased.length; uint totalItems = compData._dockedNbr + (compData._userSlots > compData._dockedNbr ? (compData._userSlots - compData._dockedNbr) : 0); if (totalItems > compData._leasedNbr + compData._dockedNbr) {totalItems = compData._leasedNbr + compData._dockedNbr;} compData._all = new uint[](totalItems); for (uint i = 0; i < compData._dockedNbr; i++) {compData._all[i] = compData._docked[i];} uint remainingSlots = totalItems - compData._dockedNbr; for (uint j = 0; j < remainingSlots && j < compData._leasedNbr; j++) {compData._all[compData._dockedNbr + j] = compData._leased[j];} } function getUserDockCompositionAndUpdate(address _user) public returns (dockCompData memory compData) { IDock.userDock memory dock = dockCon.getUserDock(_user); compData._userSlots = dock._userSlots; compData._docked = dock._userDock; if (address(leaseCon) != address(0)) {compData._leased = leaseCon.getLeasedAndUpdate(_user);} else {compData._leased = new uint[](0);} compData._dockedNbr = compData._docked.length; compData._leasedNbr = compData._leased.length; uint totalItems = compData._dockedNbr + (compData._userSlots > compData._dockedNbr ? (compData._userSlots - compData._dockedNbr) : 0); if (totalItems > compData._leasedNbr + compData._dockedNbr) {totalItems = compData._leasedNbr + compData._dockedNbr;} compData._all = new uint[](totalItems); for (uint i = 0; i < compData._dockedNbr; i++) {compData._all[i] = compData._docked[i];} uint remainingSlots = totalItems - compData._dockedNbr; for (uint j = 0; j < remainingSlots && j < compData._leasedNbr; j++) {compData._all[compData._dockedNbr + j] = compData._leased[j];} } function submit (string memory _tkn,address _owner,uint[] calldata _tokensId,uint256[] calldata data,uint[] calldata workouts,uint _day) public payable whenNotPaused returns ( bool ) { // DATA [ daily_steps, steps_t1, steps_t2, steps_t3, steps_t4, distance, calories, workouts, sleep] require( isValidDateToSubmit(_day), "Submission outdated"); uint[] memory tokensId = getUserDockCompositionAndUpdate(_owner)._all; (,uint _fees) = feesCon.getSubFees(tokensId); require(msg.value >= (_fees), "Not enough funds sent"); require(keccak256(abi.encodePacked(_tkn)) == tknHash, "App not allowed"); require(dockCon.isOwnerOfAll(_owner, _tokensId), "Invalid submitter"); bytes memory track = trackId(_owner, _day); require(!isAlreadySubmitted(_owner, _day), "Already submitted"); bytes memory fPrint = dataFprint(_day,data,workouts); require(checkDataUnique == false || usedData[fPrint] == false, "Data already submitted"); uint _shares = activitiesCon.multiComputeAllShares(tokensId, data, workouts); require(_shares>0, "Zero shares can't be submitted"); address _user = _owner; shareData memory fin_data = shareData(_user, _shares, _day); for (uint i = 0; i < tokensId.length; i++) { require(!isAlreadySubmittedByMiner(tokensId[i], _day), "One or more miners already submitted"); submittedByMiner[tokensId[i]][_day] = _user; } //global totalDailyShares[_day] = totalDailyShares[_day] + fin_data.shares; dailySubmissions[_day] += 1; //user submittedByDock[_user].push(submittedData(fin_data.shares, _day)); submittedByOwner[_user][_day] = true; //data submitted[track] = fin_data; usedData[fPrint] = true; if(address(logsCon) != address(0)){ uint[] memory _values = new uint[](2); _values[0] = _day; _values[1] = fin_data.shares; logsCon.logAction(_user, 1, _values); } emit submitEvent(fin_data.shares,_user,_day); return true; } function _claim (address _owner) private returns ( IAirdrops.sharesData[] memory ) { if(address(leaseCon) != address(0)){leaseCon.getLeasedAndUpdate(_owner);} submittedData[] memory allClaims = getPendingClaims(_owner); uint n = allClaims.length; if (n > getMaxClaimDays()) n = getMaxClaimDays(); uint totalDays = 0; uint totalShares = 0; uint32 totalRatio = 0; for (uint256 _i = n; _i > 0; _i--) { uint index = _i - 1; if (isValidDateToMine(allClaims[index]._day)) {totalDays += 1;} } (, uint _fees) = getClaimFees(totalDays); require(msg.value >= _fees, "Not enough funds sent; check fees!"); uint32 ratio_multiplier = 1000000; IAirdrops.sharesData[] memory array = new IAirdrops.sharesData[](n); address __owner = _owner; for (uint256 _i = n; _i > 0; _i--) { uint index = _i - 1; if (isValidDateToMine(allClaims[index]._day)) { totalShares += allClaims[index].shares; uint32 ratio = uint32((allClaims[index].shares * ratio_multiplier) / totalDailyShares[allClaims[index]._day]); totalRatio = totalRatio + ratio; array[index] = IAirdrops.sharesData(ratio, allClaims[index]._day); bytes memory track = trackId(__owner, allClaims[index]._day); claimed[track] = submitted[track]; delete submitted[track]; removeFromSubmitterByNft(__owner, allClaims[index]._day); dayClaimed[__owner][allClaims[index]._day] = true; } } if(address(logsCon) != address(0)){ uint[] memory _values = new uint[](2); _values[0] = totalDays; _values[1] = totalShares; logsCon.logAction(_owner, 2, _values); } emit claimEvent(_owner, totalDays, totalShares); return array; } function claim (string memory _tkn, address _owner) payable whenNotPaused public returns ( bool ) { require(keccak256(abi.encodePacked(_tkn)) == tknHash, "App not allowed"); IAirdrops.sharesData[] memory totalRatio = _claim(_owner); airdropsCon.claimTokens(_owner, totalRatio); return true; } function claimWithTokens (string memory _tkn, address _owner, address[]calldata tokens) payable whenNotPaused public returns ( bool ) { require(keccak256(abi.encodePacked(_tkn)) == tknHash, "App not allowed"); IAirdrops.sharesData[] memory totalRatio = _claim(_owner); if(tokens.length>0){airdropsCon.claimTokens(_owner, totalRatio, tokens);}else{airdropsCon.claimTokens(_owner, totalRatio);} return true; } function addDailyShares (uint32 _day, uint _shares) public onlyAllowedContract {totalDailyShares[_day] = totalDailyShares[_day] + _shares;} function removeFromSubmitterByNft(address _owner, uint _day) private { submittedData[] storage submissions = submittedByDock[_owner]; for (uint i = 0; i < submissions.length; i++) { if (submissions[i]._day == _day) { submissions[i] = submissions[submissions.length - 1]; submissions.pop(); break; } } } function isAlreadySubmitted (address _owner, uint _days) public view returns (bool) { return submittedByOwner[_owner][_days] || legacyCon.isAlreadySubmitted(_owner,_days); } function isAlreadySubmittedByMiner (uint _tkn, uint _day) public view returns (bool) { return submittedByMiner[_tkn][_day] != address(0); } function getInvalidMinersToSubmit(uint[] memory _tkns, uint _day) public view returns (uint[] memory _invalid) { uint count = 0; for (uint i = 0; i < _tkns.length; i++) {if (isAlreadySubmittedByMiner(_tkns[i], _day)) {count++;}} _invalid = new uint[](count); uint index = 0; for (uint i = 0; i < _tkns.length; i++) {if (isAlreadySubmittedByMiner(_tkns[i], _day)) {_invalid[index++] = _tkns[i];}} return _invalid; } function getPendingClaimsNbr(address _owner) public view returns(uint){return getPendingClaims(_owner).length;} function getPendingClaims(address _owner) public view returns (submittedData[] memory) { submittedData[] memory old = legacyCon.getPendingClaims(_owner); submittedData[] memory current = submittedByDock[_owner]; submittedData[] memory combinedTemp = new submittedData[](old.length + current.length); uint count = 0; for (uint i = 0; i < old.length; i++) {if (!dayClaimed[_owner][old[i]._day]) {combinedTemp[count++] = old[i];}} for (uint j = 0; j < current.length; j++) {if (!dayClaimed[_owner][current[j]._day]) {combinedTemp[count++] = current[j];}} submittedData[] memory combined = new submittedData[](count); for (uint k = 0; k < count; k++) {combined[k] = combinedTemp[k];} return combined; } function getSubmissionsPerDay(uint _day, uint _length) public view returns (submittedPerDay[] memory) { submittedPerDay[] memory array = new submittedPerDay[](_length); for (uint i = 0; i < _length; i++) { array[i] = submittedPerDay(_day - i, dailySubmissions[_day - i], totalDailyShares[_day - i]); } return array; } function getSubPerDay (address _owner, uint32 _days) public view returns (shareData memory) { bytes memory ref = trackId(_owner, _days);return submitted[ref]; } function getClaimPerDay (address _owner, uint32 _days) public view returns (shareData memory) { bytes memory ref = trackId(_owner, _days);return claimed[ref]; } function getDate() public view returns(uint){return getTime() / 1 days;} function getTime() public view returns(uint){return uint(int(block.timestamp) + (timeZoneOffset * 1 hours));} function SetTimeZoneOffset(int _value) public onlyOwner {timeZoneOffset = _value;} function getDayShares (uint _day) public view returns (uint) {return totalDailyShares[_day];} function simulateShares(uint[] calldata tokensId,uint256[] calldata data,uint[] calldata workouts) public view returns(uint){return activitiesCon.multiComputeAllShares(tokensId, data, workouts);} function isValidDateToSubmit (uint _days) public view returns (bool) {return (getDate() - _days) < daysBuffer;} function isValidDateToMine (uint _days) public view returns (bool) {if(_days > getDate()) return false;if(_days < startingDate) return false;return (getDate() - _days) > (daysBuffer - 1);} function getAirdropsPerDay() public view returns (IAirdrops.dailyDistribution[] memory){return airdropsCon.getAirdropsPerDay();} function getAirdropsActive() public view returns (address[] memory) { address[] memory array; IAirdrops.dailyDistribution[] memory list = airdropsCon.getAirdropsPerDay(); for (uint i = 0; i < list.length; i++) { bool active; (,,,,,,active) = airdropsCon.getTokenData(list[i]._addr); if (active) { if (array.length == 0) { array = new address[](1); } else { address[] memory newArray = new address[](array.length + 1); for (uint j = 0; j < array.length; j++) { newArray[j] = array[j]; } array = newArray; } array[array.length - 1] = list[i]._addr; } } return array; } function trackId (address _owner, uint _days) public pure returns (bytes memory) {return abi.encodePacked(_owner, _days);} function dataFprint(uint _days, uint256[] calldata data, uint[] calldata workouts) public pure returns (bytes memory) {return abi.encodePacked(_days, data, workouts);} //FEES function getMaxClaimDays () public view returns (uint){ return feesCon.getMaxClaimDays();} function getTokenValueTier () public view returns (uint){return feesCon.getTokenValueTier();} function getSubFees (uint[] calldata tokensId) public view returns (uint _usd, uint _coin){return feesCon.getSubFees(tokensId);} function getClaimFees(uint _days) public view returns (uint _usd, uint _coin){return feesCon.getClaimFees(_days);} // function setusdTokenAddress(address _addr) public onlyOwner {usdToken = _addr;} function setwrappedCoinAddress(address _addr) public onlyOwner {wrappedCoin = _addr;} function settokenPricingCon(address _addr) public onlyOwner {tokenPricingCon = ITokenPricing(_addr);} function setLegacyContract (address _addr) public onlyOwner {legacyCon = MINING(_addr);} function setActivitiesContract (address _addr) public onlyOwner {activitiesCon = IActivities(_addr);} function setdockContract (address _addr) public onlyOwner {dockCon = IDock(_addr);} function setFeesContract (address _addr) public onlyOwner {feesCon = IFees(_addr);} function setLogsContract (address _addr) public onlyOwner {logsCon = ILogs(_addr);} function setLeaseContract (address _addr) public onlyOwner {leaseCon = ILease(_addr);} function setAirdropsContract (address _addr) public onlyOwner {airdropsCon = IAirdrops(_addr);} function setTknHash (string memory _str) public onlyOwner {tknHash = keccak256(abi.encodePacked(_str));} function setStartingDate (uint _days) public onlyOwner {startingDate = _days;} function setUniqueCheck (bool _v) public onlyOwner {checkDataUnique = _v;} function setDaysBuffer (uint _days) public onlyOwner {daysBuffer = _days;} function getDaysBuffer () public view returns (uint) {return daysBuffer;} function getBalance() public view returns(uint) {return address(this).balance;} function withdraw() public payable onlyOwner {address payable to = payable(msg.sender);to.transfer(getBalance());} function withdrawAmount(uint _amount) public payable onlyOwner {require(_amount <= getBalance(), "err : Amount > Balance");address payable to = payable(msg.sender);to.transfer(getBalance());} function transferToken (address _tokenAddress, address addr, uint amount) public onlyOwner returns (uint256) {ERC20(_tokenAddress).transfer(addr, amount);return ERC20(_tokenAddress).balanceOf(address(this));} } interface IActivities { function nftType (uint tokenId) external pure returns(uint); function computeAllShares (uint tokenId,uint[] calldata data,uint[] calldata workouts_list) external view returns ( uint ); function multiComputeAllShares(uint[] calldata tokensId,uint[] calldata data,uint[] calldata workouts_list) external view returns ( uint ); function getMiningLevelBonus(uint tknId) external view returns (uint); } interface IDock { struct userDock {uint _userSlots;uint[] _userDock;} function getUserDock(address user) external view returns (userDock memory); function isOwnerOfAll(address _owner, uint[] calldata _nfts) external view returns (bool); function maxSlots() external view returns (uint); } interface IAirdrops { struct dailyDistribution {address _addr; string _name;uint _perDay; uint _startingDay;} struct sharesData {uint32 _shares; uint _day;} function getAirdropsPerDay() external view returns (dailyDistribution[] memory); function getTokenData(address addr) external view returns (address _addr,string memory _name,string memory _symbol,uint256 _supply,uint256 _perDay,uint256 _claimed,bool _active ); function claimTokens (address addr, sharesData[] memory ratios) external returns (bool); function claimTokens (address addr, sharesData[] memory ratios, address[] calldata _tkns) external returns (bool); } interface ITokenPricing { function getPrice(address tokenIn, address tokenOut, uint amountIn) external view returns (uint amountOut); } interface ERC20 { function decimals() external view returns (uint8); function balanceOf(address account) external view returns (uint256); function transfer(address recipient, uint256 amount) external returns (bool); } interface IFees { function getMaxClaimDays () external view returns (uint); function getTokenValueTier () external view returns (uint); function getSubFeesPerMiner (uint tknId) external view returns (uint _usd, uint _coin); function getSubFees (uint[] calldata tokensId) external view returns (uint _usd, uint _coin); function getClaimFees(uint _days) external view returns (uint _usd, uint _coin); } interface ILogs { function logAction (address _user, uint _type, uint[] memory _values) external; } interface ILease { function getLeased (address _user) external view returns (uint[] memory items); function getLeasedAndUpdate (address _user) external returns (uint[] memory items); }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"name":"EnforcedPause","type":"error"},{"inputs":[],"name":"ExpectedPause","type":"error"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"OwnableInvalidOwner","type":"error"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"OwnableUnauthorizedAccount","type":"error"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferStarted","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":false,"internalType":"address","name":"account","type":"address"}],"name":"Paused","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"account","type":"address"}],"name":"Unpaused","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"_owner","type":"address"},{"indexed":false,"internalType":"uint256","name":"_totalDays","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"_totalShares","type":"uint256"}],"name":"claimEvent","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"_shares","type":"uint256"},{"indexed":false,"internalType":"address","name":"_owner","type":"address"},{"indexed":false,"internalType":"uint256","name":"_round","type":"uint256"}],"name":"submitEvent","type":"event"},{"inputs":[{"internalType":"int256","name":"_value","type":"int256"}],"name":"SetTimeZoneOffset","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_start","type":"uint256"},{"internalType":"uint256","name":"_end","type":"uint256"}],"name":"__importLegacyGlobalShares","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"acceptOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"activitiesCon","outputs":[{"internalType":"contract IActivities","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint32","name":"_day","type":"uint32"},{"internalType":"uint256","name":"_shares","type":"uint256"}],"name":"addDailyShares","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"airdropsCon","outputs":[{"internalType":"contract IAirdrops","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_addr","type":"address"}],"name":"allowContract","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"allowedContracts","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"checkDataUnique","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"string","name":"_tkn","type":"string"},{"internalType":"address","name":"_owner","type":"address"}],"name":"claim","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"string","name":"_tkn","type":"string"},{"internalType":"address","name":"_owner","type":"address"},{"internalType":"address[]","name":"tokens","type":"address[]"}],"name":"claimWithTokens","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"bytes","name":"","type":"bytes"}],"name":"claimed","outputs":[{"internalType":"address","name":"_owner","type":"address"},{"internalType":"uint256","name":"shares","type":"uint256"},{"internalType":"uint256","name":"day","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"dailySubmissions","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_days","type":"uint256"},{"internalType":"uint256[]","name":"data","type":"uint256[]"},{"internalType":"uint256[]","name":"workouts","type":"uint256[]"}],"name":"dataFprint","outputs":[{"internalType":"bytes","name":"","type":"bytes"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"}],"name":"dayClaimed","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"daysBuffer","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"daysClaimed","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_addr","type":"address"}],"name":"disallowContract","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"dockCon","outputs":[{"internalType":"contract IDock","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"feesCon","outputs":[{"internalType":"contract IFees","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getAirdropsActive","outputs":[{"internalType":"address[]","name":"","type":"address[]"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getAirdropsPerDay","outputs":[{"components":[{"internalType":"address","name":"_addr","type":"address"},{"internalType":"string","name":"_name","type":"string"},{"internalType":"uint256","name":"_perDay","type":"uint256"},{"internalType":"uint256","name":"_startingDay","type":"uint256"}],"internalType":"struct IAirdrops.dailyDistribution[]","name":"","type":"tuple[]"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getBalance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_days","type":"uint256"}],"name":"getClaimFees","outputs":[{"internalType":"uint256","name":"_usd","type":"uint256"},{"internalType":"uint256","name":"_coin","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_owner","type":"address"},{"internalType":"uint32","name":"_days","type":"uint32"}],"name":"getClaimPerDay","outputs":[{"components":[{"internalType":"address","name":"_owner","type":"address"},{"internalType":"uint256","name":"shares","type":"uint256"},{"internalType":"uint256","name":"day","type":"uint256"}],"internalType":"struct MINING.shareData","name":"","type":"tuple"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getDate","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_day","type":"uint256"}],"name":"getDayShares","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getDaysBuffer","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"_tkns","type":"uint256[]"},{"internalType":"uint256","name":"_day","type":"uint256"}],"name":"getInvalidMinersToSubmit","outputs":[{"internalType":"uint256[]","name":"_invalid","type":"uint256[]"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getMaxClaimDays","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_owner","type":"address"}],"name":"getPendingClaims","outputs":[{"components":[{"internalType":"uint256","name":"shares","type":"uint256"},{"internalType":"uint256","name":"_day","type":"uint256"}],"internalType":"struct MINING.submittedData[]","name":"","type":"tuple[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_owner","type":"address"}],"name":"getPendingClaimsNbr","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"tokensId","type":"uint256[]"}],"name":"getSubFees","outputs":[{"internalType":"uint256","name":"_usd","type":"uint256"},{"internalType":"uint256","name":"_coin","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_owner","type":"address"},{"internalType":"uint32","name":"_days","type":"uint32"}],"name":"getSubPerDay","outputs":[{"components":[{"internalType":"address","name":"_owner","type":"address"},{"internalType":"uint256","name":"shares","type":"uint256"},{"internalType":"uint256","name":"day","type":"uint256"}],"internalType":"struct MINING.shareData","name":"","type":"tuple"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_day","type":"uint256"},{"internalType":"uint256","name":"_length","type":"uint256"}],"name":"getSubmissionsPerDay","outputs":[{"components":[{"internalType":"uint256","name":"_day","type":"uint256"},{"internalType":"uint256","name":"_nbr","type":"uint256"},{"internalType":"uint256","name":"_shares","type":"uint256"}],"internalType":"struct MINING.submittedPerDay[]","name":"","type":"tuple[]"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getTokenValueTier","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_user","type":"address"}],"name":"getUserDockComposition","outputs":[{"components":[{"internalType":"uint256","name":"_userSlots","type":"uint256"},{"internalType":"uint256","name":"_dockedNbr","type":"uint256"},{"internalType":"uint256[]","name":"_docked","type":"uint256[]"},{"internalType":"uint256","name":"_leasedNbr","type":"uint256"},{"internalType":"uint256[]","name":"_leased","type":"uint256[]"},{"internalType":"uint256[]","name":"_all","type":"uint256[]"}],"internalType":"struct MINING.dockCompData","name":"compData","type":"tuple"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_user","type":"address"}],"name":"getUserDockCompositionAndUpdate","outputs":[{"components":[{"internalType":"uint256","name":"_userSlots","type":"uint256"},{"internalType":"uint256","name":"_dockedNbr","type":"uint256"},{"internalType":"uint256[]","name":"_docked","type":"uint256[]"},{"internalType":"uint256","name":"_leasedNbr","type":"uint256"},{"internalType":"uint256[]","name":"_leased","type":"uint256[]"},{"internalType":"uint256[]","name":"_all","type":"uint256[]"}],"internalType":"struct MINING.dockCompData","name":"compData","type":"tuple"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_owner","type":"address"},{"internalType":"uint256","name":"_days","type":"uint256"}],"name":"isAlreadySubmitted","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_tkn","type":"uint256"},{"internalType":"uint256","name":"_day","type":"uint256"}],"name":"isAlreadySubmittedByMiner","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_days","type":"uint256"}],"name":"isValidDateToMine","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_days","type":"uint256"}],"name":"isValidDateToSubmit","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"leaseCon","outputs":[{"internalType":"contract ILease","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"legacyCon","outputs":[{"internalType":"contract MINING","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"}],"name":"legacySubmittedByOwner","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"logsCon","outputs":[{"internalType":"contract ILogs","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"mainToken","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pause","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"paused","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pendingOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_addr","type":"address"}],"name":"setActivitiesContract","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_addr","type":"address"}],"name":"setAirdropsContract","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_days","type":"uint256"}],"name":"setDaysBuffer","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_addr","type":"address"}],"name":"setFeesContract","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_addr","type":"address"}],"name":"setLeaseContract","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_addr","type":"address"}],"name":"setLegacyContract","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_addr","type":"address"}],"name":"setLogsContract","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_days","type":"uint256"}],"name":"setStartingDate","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"_str","type":"string"}],"name":"setTknHash","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_v","type":"bool"}],"name":"setUniqueCheck","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_addr","type":"address"}],"name":"setdockContract","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_addr","type":"address"}],"name":"settokenPricingCon","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_addr","type":"address"}],"name":"setusdTokenAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_addr","type":"address"}],"name":"setwrappedCoinAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"tokensId","type":"uint256[]"},{"internalType":"uint256[]","name":"data","type":"uint256[]"},{"internalType":"uint256[]","name":"workouts","type":"uint256[]"}],"name":"simulateShares","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"startingDate","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"string","name":"_tkn","type":"string"},{"internalType":"address","name":"_owner","type":"address"},{"internalType":"uint256[]","name":"_tokensId","type":"uint256[]"},{"internalType":"uint256[]","name":"data","type":"uint256[]"},{"internalType":"uint256[]","name":"workouts","type":"uint256[]"},{"internalType":"uint256","name":"_day","type":"uint256"}],"name":"submit","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"bytes","name":"","type":"bytes"}],"name":"submitted","outputs":[{"internalType":"address","name":"_owner","type":"address"},{"internalType":"uint256","name":"shares","type":"uint256"},{"internalType":"uint256","name":"day","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"}],"name":"submittedByDock","outputs":[{"internalType":"uint256","name":"shares","type":"uint256"},{"internalType":"uint256","name":"_day","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"}],"name":"submittedByMiner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"}],"name":"submittedByOwner","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"timeZoneOffset","outputs":[{"internalType":"int256","name":"","type":"int256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokenPricingCon","outputs":[{"internalType":"contract ITokenPricing","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"totalDailyShares","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_owner","type":"address"},{"internalType":"uint256","name":"_days","type":"uint256"}],"name":"trackId","outputs":[{"internalType":"bytes","name":"","type":"bytes"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_tokenAddress","type":"address"},{"internalType":"address","name":"addr","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferToken","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"unpause","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"usdToken","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes","name":"","type":"bytes"}],"name":"usedData","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"withdraw","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"withdrawAmount","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"wrappedCoin","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"}]
Contract Creation Code
608060405234801562000010575f80fd5b505f805460ff1916905533806200004057604051631e4fbdf760e01b81525f600482015260240160405180910390fd5b6200004b8162000177565b50600b80546001600160a01b031990811673069571bda2f6fbb2fedcf18a7bbda1014b48581817909155601480548216737d2f62b6134e8b5676d17f5e988b3e48b4f50b70179055601580548216735ff0ab41cb09bf077a471febef35934f040305cf179055601680548216730e5a335093aed1559c14581f44d3928aa05d8756179055601880548216735d9bab4a66f084746844b0fc0115b3174c327e42179055601780548216731e5c4001009b1ebcd98dbd0e95ce45f119373b52179055601b80548216739702230a8ea53601f5cd2dc00fdbc13d4df4a8c7179055601c8054821673b31f66aa3c1e785363f0875a1b74e27b85fd66c7179055601d805490911673ef0cdae2ffeeefa539a244a16b3f46ba75b8c8101790556003601155600419600f55620001ed565b600180546001600160a01b0319169055620001928162000195565b50565b5f80546001600160a01b03838116610100818102610100600160a81b0319851617855560405193049190911692909183917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a35050565b614cf780620001fb5f395ff3fe6080604052600436106104a5575f3560e01c806381da45b211610262578063cd4309671161014a578063ef62071f116100be578063f7f5ed6111610083578063f7f5ed6114610f7a578063f88c4d0214610f99578063f897a22b14610fc4578063f8fd09e414610fe3578063ff62309c14611002578063ffc345c614611021575f80fd5b8063ef62071f14610eae578063f2fde38b14610ecd578063f5537ede14610eec578063f6bd02fa14610f0b578063f6df805514610f2a575f80fd5b8063dfda09051161010f578063dfda090514610ddc578063e30c397814610dfb578063e438005d14610e18578063e4542aae14610e37578063e5b5462d14610e56578063ec45864e14610e75575f80fd5b8063cd43096714610d4d578063d01460ca14610d60578063d2f9d45b14610d7f578063d9be4b3e14610d9e578063dac6b05014610dbd575f80fd5b806399f91405116101e1578063b2467949116101a6578063b246794914610c3d578063b6b2ae0314610c5c578063b6b67d9e14610c7b578063bbac408c14610c9a578063c1df5cc814610d0f578063cb0e122a14610d2e575f80fd5b806399f9140514610b955780639ea507f214610bc15780639edbc24614610be05780639ff7a39d14610bff578063ab5f5d8d14610c1e575f80fd5b80638f3277fe116102275780638f3277fe14610b04578063925b506a14610b185780639464361d14610b4357806394a4c34a14610b6257806399a5432a14610b81575f80fd5b806381da45b214610a705780638456cb5914610a8f5780638685343614610aa35780638da5cb5b14610ac25780638e45870f14610ae3575f80fd5b8063430fe9c11161039057806360a1da831161030457806370f9cecf116102c957806370f9cecf146109c9578063715018a6146109e85780637231535a146109fc5780637232ed2714610a1157806379ba509714610a3d5780637ca93f5a14610a51575f80fd5b806360a1da83146108f45780636725cda11461090757806367645bbb146109265780636a9f2807146109655780636d37eda51461099e575f80fd5b806353d09aac1161035557806353d09aac14610826578063557ed1ba1461085257806358a215b01461086657806359fa047d146108855780635c975abb146108bf5780635e37fb00146108d5575f80fd5b8063430fe9c114610787578063440f82c91461079b5780634b6592cc146107ba57806351e0e26b146107d9578063527ba9af14610807575f80fd5b806337280408116104275780633de2662c116103ec5780633de2662c146106b75780633e0e44d0146107015780633e3ff7b6146107205780633f4ba83a146107355780633fc15f15146107495780633fce590814610768575f80fd5b806337280408146106155780633c010dc9146106365780633ccfd60b1461066f5780633d93e02e146106775780633db7aced146106a3575f80fd5b806312065fe01161046d57806312065fe01461055f57806319174c23146105715780631e5e99061461059d57806332cbe4c4146105c857806334dc8ea5146105e1575f80fd5b806304a8d707146104a95780630562b9f7146104d157806307e438e2146104e65780630966a6a51461051d5780630b7f52df1461053c575b5f80fd5b3480156104b4575f80fd5b506104be60115481565b6040519081526020015b60405180910390f35b6104e46104df366004613bee565b611040565b005b3480156104f1575f80fd5b50600b54610505906001600160a01b031681565b6040516001600160a01b0390911681526020016104c8565b348015610528575f80fd5b506104e4610537366004613c29565b6110c6565b61054f61054a366004613d91565b6110f0565b60405190151581526020016104c8565b34801561056a575f80fd5b50476104be565b34801561057c575f80fd5b5061059061058b366004613e5d565b61185a565b6040516104c89190613e7d565b3480156105a8575f80fd5b506104be6105b7366004613bee565b5f9081526003602052604090205490565b3480156105d3575f80fd5b5060125461054f9060ff1681565b3480156105ec575f80fd5b506106006105fb366004613ed5565b61196a565b604080519283526020830191909152016104c8565b348015610620575f80fd5b506106296119ea565b6040516104c89190613f60565b348015610641575f80fd5b5061054f610650366004613ff4565b600760209081525f928352604080842090915290825290205460ff1681565b6104e4611a5d565b348015610682575f80fd5b50610696610691366004614040565b611a94565b6040516104c8919061410a565b3480156106ae575f80fd5b506104be611bc3565b3480156106c2575f80fd5b506106d66106d136600461412f565b611c2e565b6040805182516001600160a01b031681526020808401519082015291810151908201526060016104c8565b34801561070c575f80fd5b5061060061071b366004613bee565b611cbd565b34801561072b575f80fd5b506104be60105481565b348015610740575f80fd5b506104e4611d34565b348015610754575f80fd5b50601d54610505906001600160a01b031681565b348015610773575f80fd5b506104be610782366004614162565b611d46565b348015610792575f80fd5b506104be611dca565b3480156107a6575f80fd5b506104be6107b5366004613c29565b611de1565b3480156107c5575f80fd5b50601954610505906001600160a01b031681565b3480156107e4575f80fd5b5061054f6107f3366004613c29565b60026020525f908152604090205460ff1681565b348015610812575f80fd5b50601c54610505906001600160a01b031681565b348015610831575f80fd5b50610845610840366004613c29565b611df2565b6040516104c891906141f4565b34801561085d575f80fd5b506104be6120fb565b348015610871575f80fd5b506104e4610880366004613bee565b612116565b348015610890575f80fd5b5061054f61089f366004614272565b805160208183018101805160098252928201919093012091525460ff1681565b3480156108ca575f80fd5b505f5460ff1661054f565b3480156108e0575f80fd5b506104e46108ef366004613c29565b612123565b61054f6109023660046142b6565b61214b565b348015610912575f80fd5b506104e4610921366004613c29565b612222565b348015610931575f80fd5b50610505610940366004613e5d565b600860209081525f92835260408084209091529082529020546001600160a01b031681565b348015610970575f80fd5b5061054f61097f366004613ff4565b600e60209081525f928352604080842090915290825290205460ff1681565b3480156109a9575f80fd5b506104be6109b8366004613bee565b60036020525f908152604090205481565b3480156109d4575f80fd5b5061054f6109e3366004613ff4565b61224c565b3480156109f3575f80fd5b506104e46122f2565b348015610a07575f80fd5b506104be600f5481565b348015610a1c575f80fd5b50610a30610a2b366004613ff4565b612303565b6040516104c89190614304565b348015610a48575f80fd5b506104e4612341565b348015610a5c575f80fd5b50601754610505906001600160a01b031681565b348015610a7b575f80fd5b506104e4610a8a366004614323565b612385565b348015610a9a575f80fd5b506104e46123a0565b348015610aae575f80fd5b506104e4610abd366004613c29565b6123b0565b348015610acd575f80fd5b505f5461010090046001600160a01b0316610505565b348015610aee575f80fd5b50610af76123da565b6040516104c8919061433e565b348015610b0f575f80fd5b506104be61266a565b348015610b23575f80fd5b506104be610b32366004613bee565b600a6020525f908152604090205481565b348015610b4e575f80fd5b50610845610b5d366004613c29565b6126b1565b348015610b6d575f80fd5b506106d6610b7c36600461412f565b6129b2565b348015610b8c575f80fd5b506011546104be565b348015610ba0575f80fd5b50610bb4610baf366004613c29565b6129ff565b6040516104c8919061438a565b348015610bcc575f80fd5b50610600610bdb366004613ff4565b612d87565b348015610beb575f80fd5b506104e4610bfa366004613e5d565b612dbf565b348015610c0a575f80fd5b506104e4610c19366004613c29565b612e5b565b348015610c29575f80fd5b506104e4610c383660046143cb565b612e85565b348015610c48575f80fd5b50601654610505906001600160a01b031681565b348015610c67575f80fd5b506104e4610c76366004613c29565b612ebc565b348015610c86575f80fd5b506104e4610c953660046143fc565b612ee6565b348015610ca5575f80fd5b50610cea610cb4366004614272565b80516020818301810180516005825292820191909301209152805460018201546002909201546001600160a01b03909116919083565b604080516001600160a01b0390941684526020840192909252908201526060016104c8565b348015610d1a575f80fd5b5061054f610d29366004613bee565b612f41565b348015610d39575f80fd5b50601554610505906001600160a01b031681565b61054f610d5b366004614416565b612f92565b348015610d6b575f80fd5b5061054f610d7a366004613bee565b6130ef565b348015610d8a575f80fd5b50610a30610d9936600461448b565b61310d565b348015610da9575f80fd5b50601854610505906001600160a01b031681565b348015610dc8575f80fd5b506104e4610dd7366004613c29565b613142565b348015610de7575f80fd5b50601a54610505906001600160a01b031681565b348015610e06575f80fd5b506001546001600160a01b0316610505565b348015610e23575f80fd5b506104e4610e32366004613c29565b61316c565b348015610e42575f80fd5b506104e4610e51366004613bee565b613196565b348015610e61575f80fd5b5061054f610e70366004613e5d565b6131a3565b348015610e80575f80fd5b5061054f610e8f366004613ff4565b600c60209081525f928352604080842090915290825290205460ff1681565b348015610eb9575f80fd5b506104e4610ec8366004613bee565b6131ca565b348015610ed8575f80fd5b506104e4610ee7366004613c29565b6131d7565b348015610ef7575f80fd5b506104be610f063660046144fe565b61324d565b348015610f16575f80fd5b506104e4610f25366004613c29565b613335565b348015610f35575f80fd5b50610cea610f44366004614272565b80516020818301810180516004825292820191909301209152805460018201546002909201546001600160a01b03909116919083565b348015610f85575f80fd5b506104e4610f94366004613c29565b613360565b348015610fa4575f80fd5b506104be610fb3366004613c29565b600d6020525f908152604090205481565b348015610fcf575f80fd5b50601b54610505906001600160a01b031681565b348015610fee575f80fd5b50601454610505906001600160a01b031681565b34801561100d575f80fd5b506104e461101c366004613c29565b61338a565b34801561102c575f80fd5b506104e461103b366004613c29565b6133b4565b6110486133de565b478111156110965760405162461bcd60e51b8152602060048201526016602482015275657272203a20416d6f756e74203e2042616c616e636560501b60448201526064015b60405180910390fd5b33806108fc476040518115909202915f818181858888f193505050501580156110c1573d5f803e3d5ffd5b505050565b6110ce6133de565b601880546001600160a01b0319166001600160a01b0392909216919091179055565b5f6110f9613410565b611102826130ef565b6111445760405162461bcd60e51b815260206004820152601360248201527214dd589b5a5cdcda5bdb881bdd5d19185d1959606a1b604482015260640161108d565b5f61114e8a6126b1565b60a001516018546040516334dc8ea560e01b81529192505f916001600160a01b03909116906334dc8ea59061118790859060040161410a565b6040805180830381865afa1580156111a1573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906111c5919061453c565b915050803410156112105760405162461bcd60e51b8152602060048201526015602482015274139bdd08195b9bdd59da08199d5b991cc81cd95b9d605a1b604482015260640161108d565b6013548c604051602001611224919061455e565b60405160208183030381529060405280519060200120146112575760405162461bcd60e51b815260040161108d90614579565b60145460405163a713e45b60e01b81526001600160a01b039091169063a713e45b9061128b908e908e908e906004016145d2565b602060405180830381865afa1580156112a6573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906112ca91906145f6565b61130a5760405162461bcd60e51b815260206004820152601160248201527024b73b30b634b21039bab136b4ba3a32b960791b604482015260640161108d565b5f6113158c86612303565b90506113218c8661224c565b156113625760405162461bcd60e51b8152602060048201526011602482015270105b1c9958591e481cdd589b5a5d1d1959607a1b604482015260640161108d565b5f611370868b8b8b8b61310d565b60125490915060ff1615806113a55750600981604051611390919061455e565b9081526040519081900360200190205460ff16155b6113ea5760405162461bcd60e51b815260206004820152601660248201527511185d1848185b1c9958591e481cdd589b5a5d1d195960521b604482015260640161108d565b60165460405163d75ac32760e01b81525f916001600160a01b03169063d75ac327906114229088908f908f908f908f90600401614611565b602060405180830381865afa15801561143d573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906114619190614657565b90505f81116114b25760405162461bcd60e51b815260206004820152601e60248201527f5a65726f207368617265732063616e2774206265207375626d69747465640000604482015260640161108d565b5f8e90505f6040518060600160405280836001600160a01b031681526020018481526020018a81525090505f5b87518110156115d45761150b8882815181106114fd576114fd61466e565b60200260200101518b6131a3565b156115645760405162461bcd60e51b8152602060048201526024808201527f4f6e65206f72206d6f7265206d696e65727320616c7265616479207375626d696044820152631d1d195960e21b606482015260840161108d565b8260085f8a848151811061157a5761157a61466e565b602002602001015181526020019081526020015f205f8c81526020019081526020015f205f6101000a8154816001600160a01b0302191690836001600160a01b0316021790555080806115cc90614696565b9150506114df565b506020808201515f8b815260039092526040909120546115f491906146ae565b5f8a815260036020908152604080832093909355600a90529081208054600192906116209084906146ae565b90915550506001600160a01b0382165f818152600660209081526040808320815180830183528684015181528084018f8152825460018181018555938752858720925160029091029092019182555190820155938352600782528083208d845290915290819020805460ff19169092179091555181906004906116a490889061455e565b908152604080519182900360209081018320845181546001600160a01b039091166001600160a01b03199091161781559084015160018083019190915593909101516002909101556009906116fa90879061455e565b908152604051908190036020019020805491151560ff199092169190911790556019546001600160a01b0316156117f1576040805160028082526060820183525f9260208301908036833701905050905089815f8151811061175e5761175e61466e565b6020026020010181815250508160200151816001815181106117825761178261466e565b60209081029190910101526019546040516336df2fb760e21b81526001600160a01b039091169063db7cbedc906117c290869060019086906004016146c1565b5f604051808303815f87803b1580156117d9575f80fd5b505af11580156117eb573d5f803e3d5ffd5b50505050505b602080820151604080519182526001600160a01b038516928201929092529081018a90527f2dad5bc61871201926333cea2842b88a9e0b9e6dce31832196e80d8e810890f19060600160405180910390a160019750505050505050509998505050505050505050565b60605f826001600160401b0381111561187557611875613c44565b6040519080825280602002602001820160405280156118c757816020015b6118b460405180606001604052805f81526020015f81526020015f81525090565b8152602001906001900390816118935790505b5090505f5b8381101561196057604051806060016040528082876118eb91906146e7565b8152602001600a5f6118fd858a6146e7565b81526020019081526020015f2054815260200160035f848961191f91906146e7565b81526020019081526020015f20548152508282815181106119425761194261466e565b6020026020010181905250808061195890614696565b9150506118cc565b5090505b92915050565b6018546040516334dc8ea560e01b81525f9182916001600160a01b03909116906334dc8ea5906119a090879087906004016146fa565b6040805180830381865afa1580156119ba573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906119de919061453c565b915091505b9250929050565b601554604080516306e5008160e31b815290516060926001600160a01b0316916337280408916004808301925f9291908290030181865afa158015611a31573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052611a58919081019061474f565b905090565b611a656133de565b33806108fc476040518115909202915f818181858888f19350505050158015611a90573d5f803e3d5ffd5b5050565b60605f805b8451811015611aea57611ac5858281518110611ab757611ab761466e565b6020026020010151856131a3565b15611ad85781611ad481614696565b9250505b80611ae281614696565b915050611a99565b50806001600160401b03811115611b0357611b03613c44565b604051908082528060200260200182016040528015611b2c578160200160208202803683370190505b5091505f805b8551811015611bba57611b5e868281518110611b5057611b5061466e565b6020026020010151866131a3565b15611ba857858181518110611b7557611b7561466e565b6020026020010151848380611b8990614696565b945081518110611b9b57611b9b61466e565b6020026020010181815250505b80611bb281614696565b915050611b32565b50505092915050565b60185460408051633db7aced60e01b815290515f926001600160a01b031691633db7aced9160048083019260209291908290030181865afa158015611c0a573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611a589190614657565b611c5860405180606001604052805f6001600160a01b031681526020015f81526020015f81525090565b5f611c69848463ffffffff16612303565b9050600581604051611c7b919061455e565b90815260408051918290036020908101832060608401835280546001600160a01b03168452600181015491840191909152600201549082015291505092915050565b6018546040516303e0e44d60e41b8152600481018390525f9182916001600160a01b0390911690633e0e44d0906024016040805180830381865afa158015611d07573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611d2b919061453c565b91509150915091565b611d3c6133de565b611d44613433565b565b60165460405163d75ac32760e01b81525f916001600160a01b03169063d75ac32790611d80908a908a908a908a908a908a90600401614854565b602060405180830381865afa158015611d9b573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611dbf9190614657565b979650505050505050565b5f62015180611dd76120fb565b611a58919061489c565b5f611deb826129ff565b5192915050565b611e286040518060c001604052805f81526020015f8152602001606081526020015f815260200160608152602001606081525090565b601454604051637539189960e11b81526001600160a01b0384811660048301525f92169063ea723132906024015f60405180830381865afa158015611e6f573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052611e969190810190614913565b8051835260208101516040840152601a549091506001600160a01b031615611f3057601a546040516355682d0760e01b81526001600160a01b038581166004830152909116906355682d07906024015f60405180830381865afa158015611eff573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052611f269190810190614984565b6080830152611f44565b604080515f81526020810190915260808301525b60408201515160208301819052608083015151606084015282515f9110611f6b575f611f7c565b60208301518351611f7c91906146e7565b8360200151611f8b91906146ae565b905082602001518360600151611fa191906146ae565b811115611fbf5782602001518360600151611fbc91906146ae565b90505b806001600160401b03811115611fd757611fd7613c44565b604051908082528060200260200182016040528015612000578160200160208202803683370190505b5060a08401525f5b8360200151811015612065578360400151818151811061202a5761202a61466e565b60200260200101518460a0015182815181106120485761204861466e565b60209081029190910101528061205d81614696565b915050612008565b505f83602001518261207791906146e7565b90505f5b818110801561208d5750846060015181105b156120f257846080015181815181106120a8576120a861466e565b60200260200101518560a001518287602001516120c591906146ae565b815181106120d5576120d561466e565b6020908102919091010152806120ea81614696565b91505061207b565b50505050919050565b5f600f54610e1061210c91906149b5565b611a5890426149e4565b61211e6133de565b601155565b61212b6133de565b6001600160a01b03165f908152600260205260409020805460ff19169055565b5f612154613410565b60135483604051602001612168919061455e565b604051602081830303815290604052805190602001201461219b5760405162461bcd60e51b815260040161108d90614579565b5f6121a583613484565b6015546040516264974560e91b81529192506001600160a01b03169063c92e8a00906121d79086908590600401614a4a565b6020604051808303815f875af11580156121f3573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061221791906145f6565b506001949350505050565b61222a6133de565b601b80546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b0382165f90815260076020908152604080832084845290915281205460ff16806122eb5750600b546040516370f9cecf60e01b81526001600160a01b03858116600483015260248201859052909116906370f9cecf90604401602060405180830381865afa1580156122c7573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906122eb91906145f6565b9392505050565b6122fa6133de565b611d445f613a30565b604051606083811b6bffffffffffffffffffffffff191660208301526034820183905290605401604051602081830303815290604052905092915050565b60015433906001600160a01b031681146123795760405163118cdaa760e01b81526001600160a01b038216600482015260240161108d565b61238281613a30565b50565b61238d6133de565b6012805460ff1916911515919091179055565b6123a86133de565b611d44613a49565b6123b86133de565b601980546001600160a01b0319166001600160a01b0392909216919091179055565b6060805f60155f9054906101000a90046001600160a01b03166001600160a01b031663372804086040518163ffffffff1660e01b81526004015f60405180830381865afa15801561242d573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052612454919081019061474f565b90505f5b81518110156126625760155482515f916001600160a01b0316906313ff7e9f9085908590811061248a5761248a61466e565b6020908102919091010151516040516001600160e01b031960e084901b1681526001600160a01b0390911660048201526024015f60405180830381865afa1580156124d7573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526124fe9190810190614a6d565b9650508515945061264f93505050505783515f0361253b5760408051600180825281830190925290602080830190803683370190505093506125f2565b5f8451600161254a91906146ae565b6001600160401b0381111561256157612561613c44565b60405190808252806020026020018201604052801561258a578160200160208202803683370190505b5090505f5b85518110156125ee578581815181106125aa576125aa61466e565b60200260200101518282815181106125c4576125c461466e565b6001600160a01b0390921660209283029190910190910152806125e681614696565b91505061258f565b5093505b8282815181106126045761260461466e565b60200260200101515f0151846001865161261e91906146e7565b8151811061262e5761262e61466e565b60200260200101906001600160a01b031690816001600160a01b0316815250505b508061265a81614696565b915050612458565b509092915050565b601854604080516347993bff60e11b815290515f926001600160a01b031691638f3277fe9160048083019260209291908290030181865afa158015611c0a573d5f803e3d5ffd5b6126e76040518060c001604052805f81526020015f8152602001606081526020015f815260200160608152602001606081525090565b601454604051637539189960e11b81526001600160a01b0384811660048301525f92169063ea723132906024015f60405180830381865afa15801561272e573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526127559190810190614913565b8051835260208101516040840152601a549091506001600160a01b0316156127f057601a54604051634facce8160e01b81526001600160a01b03858116600483015290911690634facce81906024015f604051808303815f875af11580156127bf573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526127e69190810190614984565b6080830152612804565b604080515f81526020810190915260808301525b60408201515160208301819052608083015151606084015282515f911061282b575f61283c565b6020830151835161283c91906146e7565b836020015161284b91906146ae565b90508260200151836060015161286191906146ae565b81111561287f578260200151836060015161287c91906146ae565b90505b806001600160401b0381111561289757612897613c44565b6040519080825280602002602001820160405280156128c0578160200160208202803683370190505b5060a08401525f5b836020015181101561292557836040015181815181106128ea576128ea61466e565b60200260200101518460a0015182815181106129085761290861466e565b60209081029190910101528061291d81614696565b9150506128c8565b505f83602001518261293791906146e7565b90505f5b818110801561294d5750846060015181105b156120f257846080015181815181106129685761296861466e565b60200260200101518560a0015182876020015161298591906146ae565b815181106129955761299561466e565b6020908102919091010152806129aa81614696565b91505061293b565b6129dc60405180606001604052805f6001600160a01b031681526020015f81526020015f81525090565b5f6129ed848463ffffffff16612303565b9050600481604051611c7b919061455e565b600b546040516399f9140560e01b81526001600160a01b0383811660048301526060925f929116906399f91405906024015f60405180830381865afa158015612a4a573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052612a719190810190614b0e565b6001600160a01b0384165f90815260066020908152604080832080548251818502810185019093528083529495509293909291849084015b82821015612aec578382905f5260205f2090600202016040518060400160405290815f820154815260200160018201548152505081526020019060010190612aa9565b5050505090505f81518351612b0191906146ae565b6001600160401b03811115612b1857612b18613c44565b604051908082528060200260200182016040528015612b5c57816020015b604080518082019091525f8082526020820152815260200190600190039081612b365790505b5090505f805b8451811015612c13576001600160a01b0387165f908152600e602052604081208651909190879084908110612b9957612b9961466e565b60209081029190910181015181015182528101919091526040015f205460ff16612c0157848181518110612bcf57612bcf61466e565b6020026020010151838380612be390614696565b945081518110612bf557612bf561466e565b60200260200101819052505b80612c0b81614696565b915050612b62565b505f5b8351811015612cc7576001600160a01b0387165f908152600e602052604081208551909190869084908110612c4d57612c4d61466e565b60209081029190910181015181015182528101919091526040015f205460ff16612cb557838181518110612c8357612c8361466e565b6020026020010151838380612c9790614696565b945081518110612ca957612ca961466e565b60200260200101819052505b80612cbf81614696565b915050612c16565b505f816001600160401b03811115612ce157612ce1613c44565b604051908082528060200260200182016040528015612d2557816020015b604080518082019091525f8082526020820152815260200190600190039081612cff5790505b5090505f5b82811015612d7c57838181518110612d4457612d4461466e565b6020026020010151828281518110612d5e57612d5e61466e565b60200260200101819052508080612d7490614696565b915050612d2a565b509695505050505050565b6006602052815f5260405f208181548110612da0575f80fd5b5f91825260209091206002909102018054600190910154909250905082565b612dc76133de565b815b8181116110c157600b54604051636d37eda560e01b8152600481018390526001600160a01b0390911690636d37eda590602401602060405180830381865afa158015612e17573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612e3b9190614657565b5f8281526003602052604090205580612e5381614696565b915050612dc9565b612e636133de565b601480546001600160a01b0319166001600160a01b0392909216919091179055565b612e8d6133de565b80604051602001612e9e919061455e565b60408051601f19818403018152919052805160209091012060135550565b612ec46133de565b601780546001600160a01b0319166001600160a01b0392909216919091179055565b335f9081526002602052604090205460ff161515600114612f05575f80fd5b63ffffffff82165f90815260036020526040902054612f259082906146ae565b63ffffffff9092165f9081526003602052604090209190915550565b5f612f4a611dca565b821115612f5857505f919050565b601054821015612f6957505f919050565b6001601154612f7891906146e7565b82612f81611dca565b612f8b91906146e7565b1192915050565b5f612f9b613410565b60135485604051602001612faf919061455e565b6040516020818303038152906040528051906020012014612fe25760405162461bcd60e51b815260040161108d90614579565b5f612fec85613484565b90508215613070576015546040516321def88d60e01b81526001600160a01b03909116906321def88d9061302a908890859089908990600401614bb2565b6020604051808303815f875af1158015613046573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061306a91906145f6565b506130e3565b6015546040516264974560e91b81526001600160a01b039091169063c92e8a00906130a19088908590600401614a4a565b6020604051808303815f875af11580156130bd573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906130e191906145f6565b505b50600195945050505050565b5f601154826130fc611dca565b61310691906146e7565b1092915050565b60608585858585604051602001613128959493929190614c41565b604051602081830303815290604052905095945050505050565b61314a6133de565b601580546001600160a01b0319166001600160a01b0392909216919091179055565b6131746133de565b601a80546001600160a01b0319166001600160a01b0392909216919091179055565b61319e6133de565b600f55565b5f9182526008602090815260408084209284529190529020546001600160a01b0316151590565b6131d26133de565b601055565b6131df6133de565b600180546001600160a01b0383166001600160a01b031990911681179091556132155f546001600160a01b036101009091041690565b6001600160a01b03167f38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e2270060405160405180910390a350565b5f6132566133de565b60405163a9059cbb60e01b81526001600160a01b0384811660048301526024820184905285169063a9059cbb906044016020604051808303815f875af11580156132a2573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906132c691906145f6565b506040516370a0823160e01b81523060048201526001600160a01b038516906370a0823190602401602060405180830381865afa158015613309573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061332d9190614657565b949350505050565b61333d6133de565b6001600160a01b03165f908152600260205260409020805460ff19166001179055565b6133686133de565b601c80546001600160a01b0319166001600160a01b0392909216919091179055565b6133926133de565b600b80546001600160a01b0319166001600160a01b0392909216919091179055565b6133bc6133de565b601680546001600160a01b0319166001600160a01b0392909216919091179055565b5f546001600160a01b03610100909104163314611d445760405163118cdaa760e01b815233600482015260240161108d565b5f5460ff1615611d445760405163d93c066560e01b815260040160405180910390fd5b61343b613a85565b5f805460ff191690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b6040516001600160a01b03909116815260200160405180910390a1565b601a546060906001600160a01b03161561350957601a54604051634facce8160e01b81526001600160a01b03848116600483015290911690634facce81906024015f604051808303815f875af11580156134e0573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526135079190810190614984565b505b5f613513836129ff565b8051909150613520611bc3565b8111156135325761352f611bc3565b90505b5f8080835b8015613597575f6135496001836146e7565b90506135718782815181106135605761356061466e565b602002602001015160200151612f41565b15613584576135816001866146ae565b94505b508061358f81614c5d565b915050613537565b505f6135a284611cbd565b915050803410156136005760405162461bcd60e51b815260206004820152602260248201527f4e6f7420656e6f7567682066756e64732073656e743b20636865636b20666565604482015261732160f01b606482015260840161108d565b620f42405f866001600160401b0381111561361d5761361d613c44565b60405190808252806020026020018201604052801561366157816020015b604080518082019091525f808252602082015281526020019060019003908161363b5790505b50905089875b8015613904575f6136796001836146e7565b90506136908b82815181106135605761356061466e565b156138f1578a81815181106136a7576136a761466e565b60200260200101515f0151886136bd91906146ae565b97505f60035f8d84815181106136d5576136d561466e565b60200260200101516020015181526020019081526020015f20548663ffffffff168d84815181106137085761370861466e565b60200260200101515f015161371d9190614c72565b613727919061489c565b90506137338189614c89565b975060405180604001604052808263ffffffff1681526020018d848151811061375e5761375e61466e565b60200260200101516020015181525085838151811061377f5761377f61466e565b60200260200101819052505f6137b2858e85815181106137a1576137a161466e565b602002602001015160200151612303565b90506004816040516137c4919061455e565b90815260200160405180910390206005826040516137e2919061455e565b908152604051908190036020018120825481546001600160a01b0319166001600160a01b039091161781556001808401549082015560029283015492019190915560049061383190839061455e565b90815260405190819003602001902080546001600160a01b03191681555f600182018190556002909101558c516138879086908f90869081106138765761387661466e565b602002602001015160200151613aa7565b6001600e5f876001600160a01b03166001600160a01b031681526020019081526020015f205f8f86815181106138bf576138bf61466e565b60200260200101516020015181526020019081526020015f205f6101000a81548160ff02191690831515021790555050505b50806138fc81614c5d565b915050613667565b506019546001600160a01b0316156139d8576040805160028082526060820183525f9260208301908036833701905050905087815f815181106139495761394961466e565b60200260200101818152505086816001815181106139695761396961466e565b60209081029190910101526019546040516336df2fb760e21b81526001600160a01b039091169063db7cbedc906139a9908f9060029086906004016146c1565b5f604051808303815f87803b1580156139c0575f80fd5b505af11580156139d2573d5f803e3d5ffd5b50505050505b604080516001600160a01b038d168152602081018990529081018790527f983bf7148e3e9ebde769e6a1d5b19b34b9c318555cfb03836448a9376bd68d459060600160405180910390a1509998505050505050505050565b600180546001600160a01b031916905561238281613b96565b613a51613410565b5f805460ff191660011790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a2586134673390565b5f5460ff16611d4457604051638dfc202b60e01b815260040160405180910390fd5b6001600160a01b0382165f908152600660205260408120905b8154811015613b905782828281548110613adc57613adc61466e565b905f5260205f2090600202016001015403613b7e5781548290613b01906001906146e7565b81548110613b1157613b1161466e565b905f5260205f209060020201828281548110613b2f57613b2f61466e565b5f918252602090912082546002909202019081556001918201549101558154829080613b5d57613b5d614cad565b5f8281526020812060025f1990930192830201818155600101559055613b90565b80613b8881614696565b915050613ac0565b50505050565b5f80546001600160a01b03838116610100818102610100600160a81b0319851617855560405193049190911692909183917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a35050565b5f60208284031215613bfe575f80fd5b5035919050565b6001600160a01b0381168114612382575f80fd5b8035613c2481613c05565b919050565b5f60208284031215613c39575f80fd5b81356122eb81613c05565b634e487b7160e01b5f52604160045260245ffd5b604051608081016001600160401b0381118282101715613c7a57613c7a613c44565b60405290565b604080519081016001600160401b0381118282101715613c7a57613c7a613c44565b604051601f8201601f191681016001600160401b0381118282101715613cca57613cca613c44565b604052919050565b5f6001600160401b03821115613cea57613cea613c44565b50601f01601f191660200190565b5f613d0a613d0584613cd2565b613ca2565b9050828152838383011115613d1d575f80fd5b828260208301375f602084830101529392505050565b5f82601f830112613d42575f80fd5b6122eb83833560208501613cf8565b5f8083601f840112613d61575f80fd5b5081356001600160401b03811115613d77575f80fd5b6020830191508360208260051b85010111156119e3575f80fd5b5f805f805f805f805f60c08a8c031215613da9575f80fd5b89356001600160401b0380821115613dbf575f80fd5b613dcb8d838e01613d33565b9a50613dd960208d01613c19565b995060408c0135915080821115613dee575f80fd5b613dfa8d838e01613d51565b909950975060608c0135915080821115613e12575f80fd5b613e1e8d838e01613d51565b909750955060808c0135915080821115613e36575f80fd5b50613e438c828d01613d51565b9a9d999c50979a9699959894979660a00135949350505050565b5f8060408385031215613e6e575f80fd5b50508035926020909101359150565b602080825282518282018190525f919060409081850190868401855b82811015613ec85781518051855286810151878601528501518585015260609093019290850190600101613e99565b5091979650505050505050565b5f8060208385031215613ee6575f80fd5b82356001600160401b03811115613efb575f80fd5b613f0785828601613d51565b90969095509350505050565b5f5b83811015613f2d578181015183820152602001613f15565b50505f910152565b5f8151808452613f4c816020860160208601613f13565b601f01601f19169290920160200192915050565b5f6020808301818452808551808352604092508286019150828160051b8701018488015f5b83811015613fe657888303603f19018552815180516001600160a01b0316845287810151608089860181905290613fbe82870182613f35565b838a0151878b0152606093840151939096019290925250509386019390860190600101613f85565b509098975050505050505050565b5f8060408385031215614005575f80fd5b823561401081613c05565b946020939093013593505050565b5f6001600160401b0382111561403657614036613c44565b5060051b60200190565b5f8060408385031215614051575f80fd5b82356001600160401b03811115614066575f80fd5b8301601f81018513614076575f80fd5b80356020614086613d058361401e565b82815260059290921b830181019181810190888411156140a4575f80fd5b938201935b838510156140c2578435825293820193908201906140a9565b98969091013596505050505050565b5f8151808452602080850194508084015f5b838110156140ff578151875295820195908201906001016140e3565b509495945050505050565b602081525f6122eb60208301846140d1565b803563ffffffff81168114613c24575f80fd5b5f8060408385031215614140575f80fd5b823561414b81613c05565b91506141596020840161411c565b90509250929050565b5f805f805f8060608789031215614177575f80fd5b86356001600160401b038082111561418d575f80fd5b6141998a838b01613d51565b909850965060208901359150808211156141b1575f80fd5b6141bd8a838b01613d51565b909650945060408901359150808211156141d5575f80fd5b506141e289828a01613d51565b979a9699509497509295939492505050565b6020815281516020820152602082015160408201525f604083015160c0606084015261422360e08401826140d1565b9050606084015160808401526080840151601f19808584030160a086015261424b83836140d1565b925060a08601519150808584030160c08601525061426982826140d1565b95945050505050565b5f60208284031215614282575f80fd5b81356001600160401b03811115614297575f80fd5b8201601f810184136142a7575f80fd5b61332d84823560208401613cf8565b5f80604083850312156142c7575f80fd5b82356001600160401b038111156142dc575f80fd5b6142e885828601613d33565b92505060208301356142f981613c05565b809150509250929050565b602081525f6122eb6020830184613f35565b8015158114612382575f80fd5b5f60208284031215614333575f80fd5b81356122eb81614316565b602080825282518282018190525f9190848201906040850190845b8181101561437e5783516001600160a01b031683529284019291840191600101614359565b50909695505050505050565b602080825282518282018190525f919060409081850190868401855b82811015613ec8578151805185528601518685015292840192908501906001016143a6565b5f602082840312156143db575f80fd5b81356001600160401b038111156143f0575f80fd5b61332d84828501613d33565b5f806040838503121561440d575f80fd5b6140108361411c565b5f805f8060608587031215614429575f80fd5b84356001600160401b038082111561443f575f80fd5b61444b88838901613d33565b95506020870135915061445d82613c05565b90935060408601359080821115614472575f80fd5b5061447f87828801613d51565b95989497509550505050565b5f805f805f6060868803121561449f575f80fd5b8535945060208601356001600160401b03808211156144bc575f80fd5b6144c889838a01613d51565b909650945060408801359150808211156144e0575f80fd5b506144ed88828901613d51565b969995985093965092949392505050565b5f805f60608486031215614510575f80fd5b833561451b81613c05565b9250602084013561452b81613c05565b929592945050506040919091013590565b5f806040838503121561454d575f80fd5b505080516020909101519092909150565b5f825161456f818460208701613f13565b9190910192915050565b6020808252600f908201526e105c1c081b9bdd08185b1b1bddd959608a1b604082015260600190565b8183525f6001600160fb1b038311156145b9575f80fd5b8260051b80836020870137939093016020019392505050565b6001600160a01b03841681526040602082018190525f9061426990830184866145a2565b5f60208284031215614606575f80fd5b81516122eb81614316565b606081525f61462360608301886140d1565b82810360208401526146368187896145a2565b9050828103604084015261464b8185876145a2565b98975050505050505050565b5f60208284031215614667575f80fd5b5051919050565b634e487b7160e01b5f52603260045260245ffd5b634e487b7160e01b5f52601160045260245ffd5b5f600182016146a7576146a7614682565b5060010190565b8082018082111561196457611964614682565b60018060a01b0384168152826020820152606060408201525f61426960608301846140d1565b8181038181111561196457611964614682565b602081525f61332d6020830184866145a2565b5f82601f83011261471c575f80fd5b815161472a613d0582613cd2565b81815284602083860101111561473e575f80fd5b61332d826020830160208701613f13565b5f6020808385031215614760575f80fd5b82516001600160401b0380821115614776575f80fd5b818501915085601f830112614789575f80fd5b8151614797613d058261401e565b81815260059190911b830184019084810190888311156147b5575f80fd5b8585015b83811015614847578051858111156147d0575f8081fd5b86016080818c03601f19018113156147e7575f8081fd5b6147ef613c58565b898301516147fc81613c05565b815260408381015189811115614811575f8081fd5b61481f8f8d8388010161470d565b838d0152506060848101519183019190915291909201519082015283529186019186016147b9565b5098975050505050505050565b606081525f61486760608301888a6145a2565b828103602084015261487a8187896145a2565b9050828103604084015261488f8185876145a2565b9998505050505050505050565b5f826148b657634e487b7160e01b5f52601260045260245ffd5b500490565b5f82601f8301126148ca575f80fd5b815160206148da613d058361401e565b82815260059290921b840181019181810190868411156148f8575f80fd5b8286015b84811015612d7c57805183529183019183016148fc565b5f60208284031215614923575f80fd5b81516001600160401b0380821115614939575f80fd5b908301906040828603121561494c575f80fd5b614954613c80565b82518152602083015182811115614969575f80fd5b614975878286016148bb565b60208301525095945050505050565b5f60208284031215614994575f80fd5b81516001600160401b038111156149a9575f80fd5b61332d848285016148bb565b8082025f8212600160ff1b841416156149d0576149d0614682565b818105831482151761196457611964614682565b8082018281125f831280158216821582161715614a0357614a03614682565b505092915050565b5f8151808452602080850194508084015f5b838110156140ff578151805163ffffffff1688528301518388015260409096019590820190600101614a1d565b6001600160a01b03831681526040602082018190525f9061332d90830184614a0b565b5f805f805f805f60e0888a031215614a83575f80fd5b8751614a8e81613c05565b60208901519097506001600160401b0380821115614aaa575f80fd5b614ab68b838c0161470d565b975060408a0151915080821115614acb575f80fd5b50614ad88a828b0161470d565b955050606088015193506080880151925060a0880151915060c0880151614afe81614316565b8091505092959891949750929550565b5f6020808385031215614b1f575f80fd5b82516001600160401b03811115614b34575f80fd5b8301601f81018513614b44575f80fd5b8051614b52613d058261401e565b81815260069190911b82018301908381019087831115614b70575f80fd5b928401925b82841015611dbf5760408489031215614b8d575f8081fd5b614b95613c80565b845181528585015186820152825260409093019290840190614b75565b5f60018060a01b0380871683526020606081850152614bd46060850188614a0b565b8481036040860152858152869082015f5b87811015614c0c578235614bf881613c05565b851682529183019190830190600101614be5565b509998505050505050505050565b5f6001600160fb1b03831115614c2e575f80fd5b8260051b80838637939093019392505050565b8581525f611dbf614c56602084018789614c1a565b8486614c1a565b5f81614c6b57614c6b614682565b505f190190565b808202811582820484141761196457611964614682565b63ffffffff818116838216019080821115614ca657614ca6614682565b5092915050565b634e487b7160e01b5f52603160045260245ffdfea2646970667358221220b2d8e7e1ed2126defb28a04a260c24a753558eacd14b346029732c5a3e041e2b64736f6c63430008140033
Deployed Bytecode
0x6080604052600436106104a5575f3560e01c806381da45b211610262578063cd4309671161014a578063ef62071f116100be578063f7f5ed6111610083578063f7f5ed6114610f7a578063f88c4d0214610f99578063f897a22b14610fc4578063f8fd09e414610fe3578063ff62309c14611002578063ffc345c614611021575f80fd5b8063ef62071f14610eae578063f2fde38b14610ecd578063f5537ede14610eec578063f6bd02fa14610f0b578063f6df805514610f2a575f80fd5b8063dfda09051161010f578063dfda090514610ddc578063e30c397814610dfb578063e438005d14610e18578063e4542aae14610e37578063e5b5462d14610e56578063ec45864e14610e75575f80fd5b8063cd43096714610d4d578063d01460ca14610d60578063d2f9d45b14610d7f578063d9be4b3e14610d9e578063dac6b05014610dbd575f80fd5b806399f91405116101e1578063b2467949116101a6578063b246794914610c3d578063b6b2ae0314610c5c578063b6b67d9e14610c7b578063bbac408c14610c9a578063c1df5cc814610d0f578063cb0e122a14610d2e575f80fd5b806399f9140514610b955780639ea507f214610bc15780639edbc24614610be05780639ff7a39d14610bff578063ab5f5d8d14610c1e575f80fd5b80638f3277fe116102275780638f3277fe14610b04578063925b506a14610b185780639464361d14610b4357806394a4c34a14610b6257806399a5432a14610b81575f80fd5b806381da45b214610a705780638456cb5914610a8f5780638685343614610aa35780638da5cb5b14610ac25780638e45870f14610ae3575f80fd5b8063430fe9c11161039057806360a1da831161030457806370f9cecf116102c957806370f9cecf146109c9578063715018a6146109e85780637231535a146109fc5780637232ed2714610a1157806379ba509714610a3d5780637ca93f5a14610a51575f80fd5b806360a1da83146108f45780636725cda11461090757806367645bbb146109265780636a9f2807146109655780636d37eda51461099e575f80fd5b806353d09aac1161035557806353d09aac14610826578063557ed1ba1461085257806358a215b01461086657806359fa047d146108855780635c975abb146108bf5780635e37fb00146108d5575f80fd5b8063430fe9c114610787578063440f82c91461079b5780634b6592cc146107ba57806351e0e26b146107d9578063527ba9af14610807575f80fd5b806337280408116104275780633de2662c116103ec5780633de2662c146106b75780633e0e44d0146107015780633e3ff7b6146107205780633f4ba83a146107355780633fc15f15146107495780633fce590814610768575f80fd5b806337280408146106155780633c010dc9146106365780633ccfd60b1461066f5780633d93e02e146106775780633db7aced146106a3575f80fd5b806312065fe01161046d57806312065fe01461055f57806319174c23146105715780631e5e99061461059d57806332cbe4c4146105c857806334dc8ea5146105e1575f80fd5b806304a8d707146104a95780630562b9f7146104d157806307e438e2146104e65780630966a6a51461051d5780630b7f52df1461053c575b5f80fd5b3480156104b4575f80fd5b506104be60115481565b6040519081526020015b60405180910390f35b6104e46104df366004613bee565b611040565b005b3480156104f1575f80fd5b50600b54610505906001600160a01b031681565b6040516001600160a01b0390911681526020016104c8565b348015610528575f80fd5b506104e4610537366004613c29565b6110c6565b61054f61054a366004613d91565b6110f0565b60405190151581526020016104c8565b34801561056a575f80fd5b50476104be565b34801561057c575f80fd5b5061059061058b366004613e5d565b61185a565b6040516104c89190613e7d565b3480156105a8575f80fd5b506104be6105b7366004613bee565b5f9081526003602052604090205490565b3480156105d3575f80fd5b5060125461054f9060ff1681565b3480156105ec575f80fd5b506106006105fb366004613ed5565b61196a565b604080519283526020830191909152016104c8565b348015610620575f80fd5b506106296119ea565b6040516104c89190613f60565b348015610641575f80fd5b5061054f610650366004613ff4565b600760209081525f928352604080842090915290825290205460ff1681565b6104e4611a5d565b348015610682575f80fd5b50610696610691366004614040565b611a94565b6040516104c8919061410a565b3480156106ae575f80fd5b506104be611bc3565b3480156106c2575f80fd5b506106d66106d136600461412f565b611c2e565b6040805182516001600160a01b031681526020808401519082015291810151908201526060016104c8565b34801561070c575f80fd5b5061060061071b366004613bee565b611cbd565b34801561072b575f80fd5b506104be60105481565b348015610740575f80fd5b506104e4611d34565b348015610754575f80fd5b50601d54610505906001600160a01b031681565b348015610773575f80fd5b506104be610782366004614162565b611d46565b348015610792575f80fd5b506104be611dca565b3480156107a6575f80fd5b506104be6107b5366004613c29565b611de1565b3480156107c5575f80fd5b50601954610505906001600160a01b031681565b3480156107e4575f80fd5b5061054f6107f3366004613c29565b60026020525f908152604090205460ff1681565b348015610812575f80fd5b50601c54610505906001600160a01b031681565b348015610831575f80fd5b50610845610840366004613c29565b611df2565b6040516104c891906141f4565b34801561085d575f80fd5b506104be6120fb565b348015610871575f80fd5b506104e4610880366004613bee565b612116565b348015610890575f80fd5b5061054f61089f366004614272565b805160208183018101805160098252928201919093012091525460ff1681565b3480156108ca575f80fd5b505f5460ff1661054f565b3480156108e0575f80fd5b506104e46108ef366004613c29565b612123565b61054f6109023660046142b6565b61214b565b348015610912575f80fd5b506104e4610921366004613c29565b612222565b348015610931575f80fd5b50610505610940366004613e5d565b600860209081525f92835260408084209091529082529020546001600160a01b031681565b348015610970575f80fd5b5061054f61097f366004613ff4565b600e60209081525f928352604080842090915290825290205460ff1681565b3480156109a9575f80fd5b506104be6109b8366004613bee565b60036020525f908152604090205481565b3480156109d4575f80fd5b5061054f6109e3366004613ff4565b61224c565b3480156109f3575f80fd5b506104e46122f2565b348015610a07575f80fd5b506104be600f5481565b348015610a1c575f80fd5b50610a30610a2b366004613ff4565b612303565b6040516104c89190614304565b348015610a48575f80fd5b506104e4612341565b348015610a5c575f80fd5b50601754610505906001600160a01b031681565b348015610a7b575f80fd5b506104e4610a8a366004614323565b612385565b348015610a9a575f80fd5b506104e46123a0565b348015610aae575f80fd5b506104e4610abd366004613c29565b6123b0565b348015610acd575f80fd5b505f5461010090046001600160a01b0316610505565b348015610aee575f80fd5b50610af76123da565b6040516104c8919061433e565b348015610b0f575f80fd5b506104be61266a565b348015610b23575f80fd5b506104be610b32366004613bee565b600a6020525f908152604090205481565b348015610b4e575f80fd5b50610845610b5d366004613c29565b6126b1565b348015610b6d575f80fd5b506106d6610b7c36600461412f565b6129b2565b348015610b8c575f80fd5b506011546104be565b348015610ba0575f80fd5b50610bb4610baf366004613c29565b6129ff565b6040516104c8919061438a565b348015610bcc575f80fd5b50610600610bdb366004613ff4565b612d87565b348015610beb575f80fd5b506104e4610bfa366004613e5d565b612dbf565b348015610c0a575f80fd5b506104e4610c19366004613c29565b612e5b565b348015610c29575f80fd5b506104e4610c383660046143cb565b612e85565b348015610c48575f80fd5b50601654610505906001600160a01b031681565b348015610c67575f80fd5b506104e4610c76366004613c29565b612ebc565b348015610c86575f80fd5b506104e4610c953660046143fc565b612ee6565b348015610ca5575f80fd5b50610cea610cb4366004614272565b80516020818301810180516005825292820191909301209152805460018201546002909201546001600160a01b03909116919083565b604080516001600160a01b0390941684526020840192909252908201526060016104c8565b348015610d1a575f80fd5b5061054f610d29366004613bee565b612f41565b348015610d39575f80fd5b50601554610505906001600160a01b031681565b61054f610d5b366004614416565b612f92565b348015610d6b575f80fd5b5061054f610d7a366004613bee565b6130ef565b348015610d8a575f80fd5b50610a30610d9936600461448b565b61310d565b348015610da9575f80fd5b50601854610505906001600160a01b031681565b348015610dc8575f80fd5b506104e4610dd7366004613c29565b613142565b348015610de7575f80fd5b50601a54610505906001600160a01b031681565b348015610e06575f80fd5b506001546001600160a01b0316610505565b348015610e23575f80fd5b506104e4610e32366004613c29565b61316c565b348015610e42575f80fd5b506104e4610e51366004613bee565b613196565b348015610e61575f80fd5b5061054f610e70366004613e5d565b6131a3565b348015610e80575f80fd5b5061054f610e8f366004613ff4565b600c60209081525f928352604080842090915290825290205460ff1681565b348015610eb9575f80fd5b506104e4610ec8366004613bee565b6131ca565b348015610ed8575f80fd5b506104e4610ee7366004613c29565b6131d7565b348015610ef7575f80fd5b506104be610f063660046144fe565b61324d565b348015610f16575f80fd5b506104e4610f25366004613c29565b613335565b348015610f35575f80fd5b50610cea610f44366004614272565b80516020818301810180516004825292820191909301209152805460018201546002909201546001600160a01b03909116919083565b348015610f85575f80fd5b506104e4610f94366004613c29565b613360565b348015610fa4575f80fd5b506104be610fb3366004613c29565b600d6020525f908152604090205481565b348015610fcf575f80fd5b50601b54610505906001600160a01b031681565b348015610fee575f80fd5b50601454610505906001600160a01b031681565b34801561100d575f80fd5b506104e461101c366004613c29565b61338a565b34801561102c575f80fd5b506104e461103b366004613c29565b6133b4565b6110486133de565b478111156110965760405162461bcd60e51b8152602060048201526016602482015275657272203a20416d6f756e74203e2042616c616e636560501b60448201526064015b60405180910390fd5b33806108fc476040518115909202915f818181858888f193505050501580156110c1573d5f803e3d5ffd5b505050565b6110ce6133de565b601880546001600160a01b0319166001600160a01b0392909216919091179055565b5f6110f9613410565b611102826130ef565b6111445760405162461bcd60e51b815260206004820152601360248201527214dd589b5a5cdcda5bdb881bdd5d19185d1959606a1b604482015260640161108d565b5f61114e8a6126b1565b60a001516018546040516334dc8ea560e01b81529192505f916001600160a01b03909116906334dc8ea59061118790859060040161410a565b6040805180830381865afa1580156111a1573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906111c5919061453c565b915050803410156112105760405162461bcd60e51b8152602060048201526015602482015274139bdd08195b9bdd59da08199d5b991cc81cd95b9d605a1b604482015260640161108d565b6013548c604051602001611224919061455e565b60405160208183030381529060405280519060200120146112575760405162461bcd60e51b815260040161108d90614579565b60145460405163a713e45b60e01b81526001600160a01b039091169063a713e45b9061128b908e908e908e906004016145d2565b602060405180830381865afa1580156112a6573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906112ca91906145f6565b61130a5760405162461bcd60e51b815260206004820152601160248201527024b73b30b634b21039bab136b4ba3a32b960791b604482015260640161108d565b5f6113158c86612303565b90506113218c8661224c565b156113625760405162461bcd60e51b8152602060048201526011602482015270105b1c9958591e481cdd589b5a5d1d1959607a1b604482015260640161108d565b5f611370868b8b8b8b61310d565b60125490915060ff1615806113a55750600981604051611390919061455e565b9081526040519081900360200190205460ff16155b6113ea5760405162461bcd60e51b815260206004820152601660248201527511185d1848185b1c9958591e481cdd589b5a5d1d195960521b604482015260640161108d565b60165460405163d75ac32760e01b81525f916001600160a01b03169063d75ac327906114229088908f908f908f908f90600401614611565b602060405180830381865afa15801561143d573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906114619190614657565b90505f81116114b25760405162461bcd60e51b815260206004820152601e60248201527f5a65726f207368617265732063616e2774206265207375626d69747465640000604482015260640161108d565b5f8e90505f6040518060600160405280836001600160a01b031681526020018481526020018a81525090505f5b87518110156115d45761150b8882815181106114fd576114fd61466e565b60200260200101518b6131a3565b156115645760405162461bcd60e51b8152602060048201526024808201527f4f6e65206f72206d6f7265206d696e65727320616c7265616479207375626d696044820152631d1d195960e21b606482015260840161108d565b8260085f8a848151811061157a5761157a61466e565b602002602001015181526020019081526020015f205f8c81526020019081526020015f205f6101000a8154816001600160a01b0302191690836001600160a01b0316021790555080806115cc90614696565b9150506114df565b506020808201515f8b815260039092526040909120546115f491906146ae565b5f8a815260036020908152604080832093909355600a90529081208054600192906116209084906146ae565b90915550506001600160a01b0382165f818152600660209081526040808320815180830183528684015181528084018f8152825460018181018555938752858720925160029091029092019182555190820155938352600782528083208d845290915290819020805460ff19169092179091555181906004906116a490889061455e565b908152604080519182900360209081018320845181546001600160a01b039091166001600160a01b03199091161781559084015160018083019190915593909101516002909101556009906116fa90879061455e565b908152604051908190036020019020805491151560ff199092169190911790556019546001600160a01b0316156117f1576040805160028082526060820183525f9260208301908036833701905050905089815f8151811061175e5761175e61466e565b6020026020010181815250508160200151816001815181106117825761178261466e565b60209081029190910101526019546040516336df2fb760e21b81526001600160a01b039091169063db7cbedc906117c290869060019086906004016146c1565b5f604051808303815f87803b1580156117d9575f80fd5b505af11580156117eb573d5f803e3d5ffd5b50505050505b602080820151604080519182526001600160a01b038516928201929092529081018a90527f2dad5bc61871201926333cea2842b88a9e0b9e6dce31832196e80d8e810890f19060600160405180910390a160019750505050505050509998505050505050505050565b60605f826001600160401b0381111561187557611875613c44565b6040519080825280602002602001820160405280156118c757816020015b6118b460405180606001604052805f81526020015f81526020015f81525090565b8152602001906001900390816118935790505b5090505f5b8381101561196057604051806060016040528082876118eb91906146e7565b8152602001600a5f6118fd858a6146e7565b81526020019081526020015f2054815260200160035f848961191f91906146e7565b81526020019081526020015f20548152508282815181106119425761194261466e565b6020026020010181905250808061195890614696565b9150506118cc565b5090505b92915050565b6018546040516334dc8ea560e01b81525f9182916001600160a01b03909116906334dc8ea5906119a090879087906004016146fa565b6040805180830381865afa1580156119ba573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906119de919061453c565b915091505b9250929050565b601554604080516306e5008160e31b815290516060926001600160a01b0316916337280408916004808301925f9291908290030181865afa158015611a31573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052611a58919081019061474f565b905090565b611a656133de565b33806108fc476040518115909202915f818181858888f19350505050158015611a90573d5f803e3d5ffd5b5050565b60605f805b8451811015611aea57611ac5858281518110611ab757611ab761466e565b6020026020010151856131a3565b15611ad85781611ad481614696565b9250505b80611ae281614696565b915050611a99565b50806001600160401b03811115611b0357611b03613c44565b604051908082528060200260200182016040528015611b2c578160200160208202803683370190505b5091505f805b8551811015611bba57611b5e868281518110611b5057611b5061466e565b6020026020010151866131a3565b15611ba857858181518110611b7557611b7561466e565b6020026020010151848380611b8990614696565b945081518110611b9b57611b9b61466e565b6020026020010181815250505b80611bb281614696565b915050611b32565b50505092915050565b60185460408051633db7aced60e01b815290515f926001600160a01b031691633db7aced9160048083019260209291908290030181865afa158015611c0a573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611a589190614657565b611c5860405180606001604052805f6001600160a01b031681526020015f81526020015f81525090565b5f611c69848463ffffffff16612303565b9050600581604051611c7b919061455e565b90815260408051918290036020908101832060608401835280546001600160a01b03168452600181015491840191909152600201549082015291505092915050565b6018546040516303e0e44d60e41b8152600481018390525f9182916001600160a01b0390911690633e0e44d0906024016040805180830381865afa158015611d07573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611d2b919061453c565b91509150915091565b611d3c6133de565b611d44613433565b565b60165460405163d75ac32760e01b81525f916001600160a01b03169063d75ac32790611d80908a908a908a908a908a908a90600401614854565b602060405180830381865afa158015611d9b573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611dbf9190614657565b979650505050505050565b5f62015180611dd76120fb565b611a58919061489c565b5f611deb826129ff565b5192915050565b611e286040518060c001604052805f81526020015f8152602001606081526020015f815260200160608152602001606081525090565b601454604051637539189960e11b81526001600160a01b0384811660048301525f92169063ea723132906024015f60405180830381865afa158015611e6f573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052611e969190810190614913565b8051835260208101516040840152601a549091506001600160a01b031615611f3057601a546040516355682d0760e01b81526001600160a01b038581166004830152909116906355682d07906024015f60405180830381865afa158015611eff573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052611f269190810190614984565b6080830152611f44565b604080515f81526020810190915260808301525b60408201515160208301819052608083015151606084015282515f9110611f6b575f611f7c565b60208301518351611f7c91906146e7565b8360200151611f8b91906146ae565b905082602001518360600151611fa191906146ae565b811115611fbf5782602001518360600151611fbc91906146ae565b90505b806001600160401b03811115611fd757611fd7613c44565b604051908082528060200260200182016040528015612000578160200160208202803683370190505b5060a08401525f5b8360200151811015612065578360400151818151811061202a5761202a61466e565b60200260200101518460a0015182815181106120485761204861466e565b60209081029190910101528061205d81614696565b915050612008565b505f83602001518261207791906146e7565b90505f5b818110801561208d5750846060015181105b156120f257846080015181815181106120a8576120a861466e565b60200260200101518560a001518287602001516120c591906146ae565b815181106120d5576120d561466e565b6020908102919091010152806120ea81614696565b91505061207b565b50505050919050565b5f600f54610e1061210c91906149b5565b611a5890426149e4565b61211e6133de565b601155565b61212b6133de565b6001600160a01b03165f908152600260205260409020805460ff19169055565b5f612154613410565b60135483604051602001612168919061455e565b604051602081830303815290604052805190602001201461219b5760405162461bcd60e51b815260040161108d90614579565b5f6121a583613484565b6015546040516264974560e91b81529192506001600160a01b03169063c92e8a00906121d79086908590600401614a4a565b6020604051808303815f875af11580156121f3573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061221791906145f6565b506001949350505050565b61222a6133de565b601b80546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b0382165f90815260076020908152604080832084845290915281205460ff16806122eb5750600b546040516370f9cecf60e01b81526001600160a01b03858116600483015260248201859052909116906370f9cecf90604401602060405180830381865afa1580156122c7573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906122eb91906145f6565b9392505050565b6122fa6133de565b611d445f613a30565b604051606083811b6bffffffffffffffffffffffff191660208301526034820183905290605401604051602081830303815290604052905092915050565b60015433906001600160a01b031681146123795760405163118cdaa760e01b81526001600160a01b038216600482015260240161108d565b61238281613a30565b50565b61238d6133de565b6012805460ff1916911515919091179055565b6123a86133de565b611d44613a49565b6123b86133de565b601980546001600160a01b0319166001600160a01b0392909216919091179055565b6060805f60155f9054906101000a90046001600160a01b03166001600160a01b031663372804086040518163ffffffff1660e01b81526004015f60405180830381865afa15801561242d573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052612454919081019061474f565b90505f5b81518110156126625760155482515f916001600160a01b0316906313ff7e9f9085908590811061248a5761248a61466e565b6020908102919091010151516040516001600160e01b031960e084901b1681526001600160a01b0390911660048201526024015f60405180830381865afa1580156124d7573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526124fe9190810190614a6d565b9650508515945061264f93505050505783515f0361253b5760408051600180825281830190925290602080830190803683370190505093506125f2565b5f8451600161254a91906146ae565b6001600160401b0381111561256157612561613c44565b60405190808252806020026020018201604052801561258a578160200160208202803683370190505b5090505f5b85518110156125ee578581815181106125aa576125aa61466e565b60200260200101518282815181106125c4576125c461466e565b6001600160a01b0390921660209283029190910190910152806125e681614696565b91505061258f565b5093505b8282815181106126045761260461466e565b60200260200101515f0151846001865161261e91906146e7565b8151811061262e5761262e61466e565b60200260200101906001600160a01b031690816001600160a01b0316815250505b508061265a81614696565b915050612458565b509092915050565b601854604080516347993bff60e11b815290515f926001600160a01b031691638f3277fe9160048083019260209291908290030181865afa158015611c0a573d5f803e3d5ffd5b6126e76040518060c001604052805f81526020015f8152602001606081526020015f815260200160608152602001606081525090565b601454604051637539189960e11b81526001600160a01b0384811660048301525f92169063ea723132906024015f60405180830381865afa15801561272e573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526127559190810190614913565b8051835260208101516040840152601a549091506001600160a01b0316156127f057601a54604051634facce8160e01b81526001600160a01b03858116600483015290911690634facce81906024015f604051808303815f875af11580156127bf573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526127e69190810190614984565b6080830152612804565b604080515f81526020810190915260808301525b60408201515160208301819052608083015151606084015282515f911061282b575f61283c565b6020830151835161283c91906146e7565b836020015161284b91906146ae565b90508260200151836060015161286191906146ae565b81111561287f578260200151836060015161287c91906146ae565b90505b806001600160401b0381111561289757612897613c44565b6040519080825280602002602001820160405280156128c0578160200160208202803683370190505b5060a08401525f5b836020015181101561292557836040015181815181106128ea576128ea61466e565b60200260200101518460a0015182815181106129085761290861466e565b60209081029190910101528061291d81614696565b9150506128c8565b505f83602001518261293791906146e7565b90505f5b818110801561294d5750846060015181105b156120f257846080015181815181106129685761296861466e565b60200260200101518560a0015182876020015161298591906146ae565b815181106129955761299561466e565b6020908102919091010152806129aa81614696565b91505061293b565b6129dc60405180606001604052805f6001600160a01b031681526020015f81526020015f81525090565b5f6129ed848463ffffffff16612303565b9050600481604051611c7b919061455e565b600b546040516399f9140560e01b81526001600160a01b0383811660048301526060925f929116906399f91405906024015f60405180830381865afa158015612a4a573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052612a719190810190614b0e565b6001600160a01b0384165f90815260066020908152604080832080548251818502810185019093528083529495509293909291849084015b82821015612aec578382905f5260205f2090600202016040518060400160405290815f820154815260200160018201548152505081526020019060010190612aa9565b5050505090505f81518351612b0191906146ae565b6001600160401b03811115612b1857612b18613c44565b604051908082528060200260200182016040528015612b5c57816020015b604080518082019091525f8082526020820152815260200190600190039081612b365790505b5090505f805b8451811015612c13576001600160a01b0387165f908152600e602052604081208651909190879084908110612b9957612b9961466e565b60209081029190910181015181015182528101919091526040015f205460ff16612c0157848181518110612bcf57612bcf61466e565b6020026020010151838380612be390614696565b945081518110612bf557612bf561466e565b60200260200101819052505b80612c0b81614696565b915050612b62565b505f5b8351811015612cc7576001600160a01b0387165f908152600e602052604081208551909190869084908110612c4d57612c4d61466e565b60209081029190910181015181015182528101919091526040015f205460ff16612cb557838181518110612c8357612c8361466e565b6020026020010151838380612c9790614696565b945081518110612ca957612ca961466e565b60200260200101819052505b80612cbf81614696565b915050612c16565b505f816001600160401b03811115612ce157612ce1613c44565b604051908082528060200260200182016040528015612d2557816020015b604080518082019091525f8082526020820152815260200190600190039081612cff5790505b5090505f5b82811015612d7c57838181518110612d4457612d4461466e565b6020026020010151828281518110612d5e57612d5e61466e565b60200260200101819052508080612d7490614696565b915050612d2a565b509695505050505050565b6006602052815f5260405f208181548110612da0575f80fd5b5f91825260209091206002909102018054600190910154909250905082565b612dc76133de565b815b8181116110c157600b54604051636d37eda560e01b8152600481018390526001600160a01b0390911690636d37eda590602401602060405180830381865afa158015612e17573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612e3b9190614657565b5f8281526003602052604090205580612e5381614696565b915050612dc9565b612e636133de565b601480546001600160a01b0319166001600160a01b0392909216919091179055565b612e8d6133de565b80604051602001612e9e919061455e565b60408051601f19818403018152919052805160209091012060135550565b612ec46133de565b601780546001600160a01b0319166001600160a01b0392909216919091179055565b335f9081526002602052604090205460ff161515600114612f05575f80fd5b63ffffffff82165f90815260036020526040902054612f259082906146ae565b63ffffffff9092165f9081526003602052604090209190915550565b5f612f4a611dca565b821115612f5857505f919050565b601054821015612f6957505f919050565b6001601154612f7891906146e7565b82612f81611dca565b612f8b91906146e7565b1192915050565b5f612f9b613410565b60135485604051602001612faf919061455e565b6040516020818303038152906040528051906020012014612fe25760405162461bcd60e51b815260040161108d90614579565b5f612fec85613484565b90508215613070576015546040516321def88d60e01b81526001600160a01b03909116906321def88d9061302a908890859089908990600401614bb2565b6020604051808303815f875af1158015613046573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061306a91906145f6565b506130e3565b6015546040516264974560e91b81526001600160a01b039091169063c92e8a00906130a19088908590600401614a4a565b6020604051808303815f875af11580156130bd573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906130e191906145f6565b505b50600195945050505050565b5f601154826130fc611dca565b61310691906146e7565b1092915050565b60608585858585604051602001613128959493929190614c41565b604051602081830303815290604052905095945050505050565b61314a6133de565b601580546001600160a01b0319166001600160a01b0392909216919091179055565b6131746133de565b601a80546001600160a01b0319166001600160a01b0392909216919091179055565b61319e6133de565b600f55565b5f9182526008602090815260408084209284529190529020546001600160a01b0316151590565b6131d26133de565b601055565b6131df6133de565b600180546001600160a01b0383166001600160a01b031990911681179091556132155f546001600160a01b036101009091041690565b6001600160a01b03167f38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e2270060405160405180910390a350565b5f6132566133de565b60405163a9059cbb60e01b81526001600160a01b0384811660048301526024820184905285169063a9059cbb906044016020604051808303815f875af11580156132a2573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906132c691906145f6565b506040516370a0823160e01b81523060048201526001600160a01b038516906370a0823190602401602060405180830381865afa158015613309573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061332d9190614657565b949350505050565b61333d6133de565b6001600160a01b03165f908152600260205260409020805460ff19166001179055565b6133686133de565b601c80546001600160a01b0319166001600160a01b0392909216919091179055565b6133926133de565b600b80546001600160a01b0319166001600160a01b0392909216919091179055565b6133bc6133de565b601680546001600160a01b0319166001600160a01b0392909216919091179055565b5f546001600160a01b03610100909104163314611d445760405163118cdaa760e01b815233600482015260240161108d565b5f5460ff1615611d445760405163d93c066560e01b815260040160405180910390fd5b61343b613a85565b5f805460ff191690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b6040516001600160a01b03909116815260200160405180910390a1565b601a546060906001600160a01b03161561350957601a54604051634facce8160e01b81526001600160a01b03848116600483015290911690634facce81906024015f604051808303815f875af11580156134e0573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526135079190810190614984565b505b5f613513836129ff565b8051909150613520611bc3565b8111156135325761352f611bc3565b90505b5f8080835b8015613597575f6135496001836146e7565b90506135718782815181106135605761356061466e565b602002602001015160200151612f41565b15613584576135816001866146ae565b94505b508061358f81614c5d565b915050613537565b505f6135a284611cbd565b915050803410156136005760405162461bcd60e51b815260206004820152602260248201527f4e6f7420656e6f7567682066756e64732073656e743b20636865636b20666565604482015261732160f01b606482015260840161108d565b620f42405f866001600160401b0381111561361d5761361d613c44565b60405190808252806020026020018201604052801561366157816020015b604080518082019091525f808252602082015281526020019060019003908161363b5790505b50905089875b8015613904575f6136796001836146e7565b90506136908b82815181106135605761356061466e565b156138f1578a81815181106136a7576136a761466e565b60200260200101515f0151886136bd91906146ae565b97505f60035f8d84815181106136d5576136d561466e565b60200260200101516020015181526020019081526020015f20548663ffffffff168d84815181106137085761370861466e565b60200260200101515f015161371d9190614c72565b613727919061489c565b90506137338189614c89565b975060405180604001604052808263ffffffff1681526020018d848151811061375e5761375e61466e565b60200260200101516020015181525085838151811061377f5761377f61466e565b60200260200101819052505f6137b2858e85815181106137a1576137a161466e565b602002602001015160200151612303565b90506004816040516137c4919061455e565b90815260200160405180910390206005826040516137e2919061455e565b908152604051908190036020018120825481546001600160a01b0319166001600160a01b039091161781556001808401549082015560029283015492019190915560049061383190839061455e565b90815260405190819003602001902080546001600160a01b03191681555f600182018190556002909101558c516138879086908f90869081106138765761387661466e565b602002602001015160200151613aa7565b6001600e5f876001600160a01b03166001600160a01b031681526020019081526020015f205f8f86815181106138bf576138bf61466e565b60200260200101516020015181526020019081526020015f205f6101000a81548160ff02191690831515021790555050505b50806138fc81614c5d565b915050613667565b506019546001600160a01b0316156139d8576040805160028082526060820183525f9260208301908036833701905050905087815f815181106139495761394961466e565b60200260200101818152505086816001815181106139695761396961466e565b60209081029190910101526019546040516336df2fb760e21b81526001600160a01b039091169063db7cbedc906139a9908f9060029086906004016146c1565b5f604051808303815f87803b1580156139c0575f80fd5b505af11580156139d2573d5f803e3d5ffd5b50505050505b604080516001600160a01b038d168152602081018990529081018790527f983bf7148e3e9ebde769e6a1d5b19b34b9c318555cfb03836448a9376bd68d459060600160405180910390a1509998505050505050505050565b600180546001600160a01b031916905561238281613b96565b613a51613410565b5f805460ff191660011790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a2586134673390565b5f5460ff16611d4457604051638dfc202b60e01b815260040160405180910390fd5b6001600160a01b0382165f908152600660205260408120905b8154811015613b905782828281548110613adc57613adc61466e565b905f5260205f2090600202016001015403613b7e5781548290613b01906001906146e7565b81548110613b1157613b1161466e565b905f5260205f209060020201828281548110613b2f57613b2f61466e565b5f918252602090912082546002909202019081556001918201549101558154829080613b5d57613b5d614cad565b5f8281526020812060025f1990930192830201818155600101559055613b90565b80613b8881614696565b915050613ac0565b50505050565b5f80546001600160a01b03838116610100818102610100600160a81b0319851617855560405193049190911692909183917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a35050565b5f60208284031215613bfe575f80fd5b5035919050565b6001600160a01b0381168114612382575f80fd5b8035613c2481613c05565b919050565b5f60208284031215613c39575f80fd5b81356122eb81613c05565b634e487b7160e01b5f52604160045260245ffd5b604051608081016001600160401b0381118282101715613c7a57613c7a613c44565b60405290565b604080519081016001600160401b0381118282101715613c7a57613c7a613c44565b604051601f8201601f191681016001600160401b0381118282101715613cca57613cca613c44565b604052919050565b5f6001600160401b03821115613cea57613cea613c44565b50601f01601f191660200190565b5f613d0a613d0584613cd2565b613ca2565b9050828152838383011115613d1d575f80fd5b828260208301375f602084830101529392505050565b5f82601f830112613d42575f80fd5b6122eb83833560208501613cf8565b5f8083601f840112613d61575f80fd5b5081356001600160401b03811115613d77575f80fd5b6020830191508360208260051b85010111156119e3575f80fd5b5f805f805f805f805f60c08a8c031215613da9575f80fd5b89356001600160401b0380821115613dbf575f80fd5b613dcb8d838e01613d33565b9a50613dd960208d01613c19565b995060408c0135915080821115613dee575f80fd5b613dfa8d838e01613d51565b909950975060608c0135915080821115613e12575f80fd5b613e1e8d838e01613d51565b909750955060808c0135915080821115613e36575f80fd5b50613e438c828d01613d51565b9a9d999c50979a9699959894979660a00135949350505050565b5f8060408385031215613e6e575f80fd5b50508035926020909101359150565b602080825282518282018190525f919060409081850190868401855b82811015613ec85781518051855286810151878601528501518585015260609093019290850190600101613e99565b5091979650505050505050565b5f8060208385031215613ee6575f80fd5b82356001600160401b03811115613efb575f80fd5b613f0785828601613d51565b90969095509350505050565b5f5b83811015613f2d578181015183820152602001613f15565b50505f910152565b5f8151808452613f4c816020860160208601613f13565b601f01601f19169290920160200192915050565b5f6020808301818452808551808352604092508286019150828160051b8701018488015f5b83811015613fe657888303603f19018552815180516001600160a01b0316845287810151608089860181905290613fbe82870182613f35565b838a0151878b0152606093840151939096019290925250509386019390860190600101613f85565b509098975050505050505050565b5f8060408385031215614005575f80fd5b823561401081613c05565b946020939093013593505050565b5f6001600160401b0382111561403657614036613c44565b5060051b60200190565b5f8060408385031215614051575f80fd5b82356001600160401b03811115614066575f80fd5b8301601f81018513614076575f80fd5b80356020614086613d058361401e565b82815260059290921b830181019181810190888411156140a4575f80fd5b938201935b838510156140c2578435825293820193908201906140a9565b98969091013596505050505050565b5f8151808452602080850194508084015f5b838110156140ff578151875295820195908201906001016140e3565b509495945050505050565b602081525f6122eb60208301846140d1565b803563ffffffff81168114613c24575f80fd5b5f8060408385031215614140575f80fd5b823561414b81613c05565b91506141596020840161411c565b90509250929050565b5f805f805f8060608789031215614177575f80fd5b86356001600160401b038082111561418d575f80fd5b6141998a838b01613d51565b909850965060208901359150808211156141b1575f80fd5b6141bd8a838b01613d51565b909650945060408901359150808211156141d5575f80fd5b506141e289828a01613d51565b979a9699509497509295939492505050565b6020815281516020820152602082015160408201525f604083015160c0606084015261422360e08401826140d1565b9050606084015160808401526080840151601f19808584030160a086015261424b83836140d1565b925060a08601519150808584030160c08601525061426982826140d1565b95945050505050565b5f60208284031215614282575f80fd5b81356001600160401b03811115614297575f80fd5b8201601f810184136142a7575f80fd5b61332d84823560208401613cf8565b5f80604083850312156142c7575f80fd5b82356001600160401b038111156142dc575f80fd5b6142e885828601613d33565b92505060208301356142f981613c05565b809150509250929050565b602081525f6122eb6020830184613f35565b8015158114612382575f80fd5b5f60208284031215614333575f80fd5b81356122eb81614316565b602080825282518282018190525f9190848201906040850190845b8181101561437e5783516001600160a01b031683529284019291840191600101614359565b50909695505050505050565b602080825282518282018190525f919060409081850190868401855b82811015613ec8578151805185528601518685015292840192908501906001016143a6565b5f602082840312156143db575f80fd5b81356001600160401b038111156143f0575f80fd5b61332d84828501613d33565b5f806040838503121561440d575f80fd5b6140108361411c565b5f805f8060608587031215614429575f80fd5b84356001600160401b038082111561443f575f80fd5b61444b88838901613d33565b95506020870135915061445d82613c05565b90935060408601359080821115614472575f80fd5b5061447f87828801613d51565b95989497509550505050565b5f805f805f6060868803121561449f575f80fd5b8535945060208601356001600160401b03808211156144bc575f80fd5b6144c889838a01613d51565b909650945060408801359150808211156144e0575f80fd5b506144ed88828901613d51565b969995985093965092949392505050565b5f805f60608486031215614510575f80fd5b833561451b81613c05565b9250602084013561452b81613c05565b929592945050506040919091013590565b5f806040838503121561454d575f80fd5b505080516020909101519092909150565b5f825161456f818460208701613f13565b9190910192915050565b6020808252600f908201526e105c1c081b9bdd08185b1b1bddd959608a1b604082015260600190565b8183525f6001600160fb1b038311156145b9575f80fd5b8260051b80836020870137939093016020019392505050565b6001600160a01b03841681526040602082018190525f9061426990830184866145a2565b5f60208284031215614606575f80fd5b81516122eb81614316565b606081525f61462360608301886140d1565b82810360208401526146368187896145a2565b9050828103604084015261464b8185876145a2565b98975050505050505050565b5f60208284031215614667575f80fd5b5051919050565b634e487b7160e01b5f52603260045260245ffd5b634e487b7160e01b5f52601160045260245ffd5b5f600182016146a7576146a7614682565b5060010190565b8082018082111561196457611964614682565b60018060a01b0384168152826020820152606060408201525f61426960608301846140d1565b8181038181111561196457611964614682565b602081525f61332d6020830184866145a2565b5f82601f83011261471c575f80fd5b815161472a613d0582613cd2565b81815284602083860101111561473e575f80fd5b61332d826020830160208701613f13565b5f6020808385031215614760575f80fd5b82516001600160401b0380821115614776575f80fd5b818501915085601f830112614789575f80fd5b8151614797613d058261401e565b81815260059190911b830184019084810190888311156147b5575f80fd5b8585015b83811015614847578051858111156147d0575f8081fd5b86016080818c03601f19018113156147e7575f8081fd5b6147ef613c58565b898301516147fc81613c05565b815260408381015189811115614811575f8081fd5b61481f8f8d8388010161470d565b838d0152506060848101519183019190915291909201519082015283529186019186016147b9565b5098975050505050505050565b606081525f61486760608301888a6145a2565b828103602084015261487a8187896145a2565b9050828103604084015261488f8185876145a2565b9998505050505050505050565b5f826148b657634e487b7160e01b5f52601260045260245ffd5b500490565b5f82601f8301126148ca575f80fd5b815160206148da613d058361401e565b82815260059290921b840181019181810190868411156148f8575f80fd5b8286015b84811015612d7c57805183529183019183016148fc565b5f60208284031215614923575f80fd5b81516001600160401b0380821115614939575f80fd5b908301906040828603121561494c575f80fd5b614954613c80565b82518152602083015182811115614969575f80fd5b614975878286016148bb565b60208301525095945050505050565b5f60208284031215614994575f80fd5b81516001600160401b038111156149a9575f80fd5b61332d848285016148bb565b8082025f8212600160ff1b841416156149d0576149d0614682565b818105831482151761196457611964614682565b8082018281125f831280158216821582161715614a0357614a03614682565b505092915050565b5f8151808452602080850194508084015f5b838110156140ff578151805163ffffffff1688528301518388015260409096019590820190600101614a1d565b6001600160a01b03831681526040602082018190525f9061332d90830184614a0b565b5f805f805f805f60e0888a031215614a83575f80fd5b8751614a8e81613c05565b60208901519097506001600160401b0380821115614aaa575f80fd5b614ab68b838c0161470d565b975060408a0151915080821115614acb575f80fd5b50614ad88a828b0161470d565b955050606088015193506080880151925060a0880151915060c0880151614afe81614316565b8091505092959891949750929550565b5f6020808385031215614b1f575f80fd5b82516001600160401b03811115614b34575f80fd5b8301601f81018513614b44575f80fd5b8051614b52613d058261401e565b81815260069190911b82018301908381019087831115614b70575f80fd5b928401925b82841015611dbf5760408489031215614b8d575f8081fd5b614b95613c80565b845181528585015186820152825260409093019290840190614b75565b5f60018060a01b0380871683526020606081850152614bd46060850188614a0b565b8481036040860152858152869082015f5b87811015614c0c578235614bf881613c05565b851682529183019190830190600101614be5565b509998505050505050505050565b5f6001600160fb1b03831115614c2e575f80fd5b8260051b80838637939093019392505050565b8581525f611dbf614c56602084018789614c1a565b8486614c1a565b5f81614c6b57614c6b614682565b505f190190565b808202811582820484141761196457611964614682565b63ffffffff818116838216019080821115614ca657614ca6614682565b5092915050565b634e487b7160e01b5f52603160045260245ffdfea2646970667358221220b2d8e7e1ed2126defb28a04a260c24a753558eacd14b346029732c5a3e041e2b64736f6c63430008140033
Deployed Bytecode Sourcemap
9247:18293:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10164:22;;;;;;;;;;;;;;;;;;;160:25:1;;;148:2;133:18;10164:22:0;;;;;;;;27132:191;;;;;;:::i;:::-;;:::i;:::-;;9858:23;;;;;;;;;;-1:-1:-1;9858:23:0;;;;-1:-1:-1;;;;;9858:23:0;;;;;;-1:-1:-1;;;;;560:32:1;;;542:51;;530:2;515:18;9858:23:0;381:218:1;26115:83:0;;;;;;;;;;-1:-1:-1;26115:83:0;;;;;:::i;:::-;;:::i;14826:2177::-;;;;;;:::i;:::-;;:::i;:::-;;;4800:14:1;;4793:22;4775:41;;4763:2;4748:18;14826:2177:0;4635:187:1;26923:79:0;;;;;;;;;;-1:-1:-1;26979:21:0;26923:79;;22123:371;;;;;;;;;;-1:-1:-1;22123:371:0;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;23149:93::-;;;;;;;;;;-1:-1:-1;23149:93:0;;;;;:::i;:::-;23204:4;23218:22;;;:16;:22;;;;;;;23149:93;10195:27;;;;;;;;;;-1:-1:-1;10195:27:0;;;;;;;;25280:128;;;;;;;;;;-1:-1:-1;25280:128:0;;;;;:::i;:::-;;:::i;:::-;;;;6558:25:1;;;6614:2;6599:18;;6592:34;;;;6531:18;25280:128:0;6384:248:1;23762:128:0;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;9594:69::-;;;;;;;;;;-1:-1:-1;9594:69:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;27012:114;;;:::i;20737:473::-;;;;;;;;;;-1:-1:-1;20737:473:0;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;25081:90::-;;;;;;;;;;;;;:::i;22680:174::-;;;;;;;;;;-1:-1:-1;22680:174:0;;;;;:::i;:::-;;:::i;:::-;;;;11337:13:1;;-1:-1:-1;;;;;11333:39:1;11315:58;;11429:4;11417:17;;;11411:24;11389:20;;;11382:54;11480:17;;;11474:24;11452:20;;;11445:54;11303:2;11288:18;22680:174:0;11117:388:1;25414:114:0;;;;;;;;;;-1:-1:-1;25414:114:0;;;;;:::i;:::-;;:::i;10133:24::-;;;;;;;;;;;;;;;;11957:49;;;;;;;;;;;;;:::i;10557:24::-;;;;;;;;;;-1:-1:-1;10557:24:0;;;;-1:-1:-1;;;;;10557:24:0;;;23248:195;;;;;;;;;;-1:-1:-1;23248:195:0;;;;;:::i;:::-;;:::i;22866:72::-;;;;;;;;;;;;;:::i;21216:111::-;;;;;;;;;;-1:-1:-1;21216:111:0;;;;;:::i;:::-;;:::i;10436:20::-;;;;;;;;;;-1:-1:-1;10436:20:0;;;;-1:-1:-1;;;;;10436:20:0;;;9296:52;;;;;;;;;;-1:-1:-1;9296:52:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;10524:26;;;;;;;;;;-1:-1:-1;10524:26:0;;;;-1:-1:-1;;;;;10524:26:0;;;12526:1136;;;;;;;;;;-1:-1:-1;12526:1136:0;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;22944:109::-;;;;;;;;;;;;;:::i;26762:74::-;;;;;;;;;;-1:-1:-1;26762:74:0;;;;;:::i;:::-;;:::i;9746:39::-;;;;;;;;;;-1:-1:-1;9746:39:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2916:86;;;;;;;;;;-1:-1:-1;2963:4:0;2987:7;;;2916:86;;12197:97;;;;;;;;;;-1:-1:-1;12197:97:0;;;;;:::i;:::-;;:::i;19029:333::-;;;;;;:::i;:::-;;:::i;25542:79::-;;;;;;;;;;-1:-1:-1;25542:79:0;;;;;:::i;:::-;;:::i;9670:69::-;;;;;;;;;;-1:-1:-1;9670:69:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;9670:69:0;;;10019:61;;;;;;;;;;-1:-1:-1;10019:61:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;9355:55;;;;;;;;;;-1:-1:-1;9355:55:0;;;;;:::i;:::-;;;;;;;;;;;;;;20385:187;;;;;;;;;;-1:-1:-1;20385:187:0;;;;;:::i;:::-;;:::i;6289:103::-;;;;;;;;;;;;;:::i;10101:25::-;;;;;;;;;;;;;;;;24768:122;;;;;;;;;;-1:-1:-1;24768:122:0;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;8926:235::-;;;;;;;;;;;;;:::i;10366:36::-;;;;;;;;;;-1:-1:-1;10366:36:0;;;;-1:-1:-1;;;;;10366:36:0;;;26682:74;;;;;;;;;;-1:-1:-1;26682:74:0;;;;;:::i;:::-;;:::i;11906:45::-;;;;;;;;;;;;;:::i;26204:83::-;;;;;;;;;;-1:-1:-1;26204:83:0;;;;;:::i;:::-;;:::i;5614:87::-;;;;;;;;;;-1:-1:-1;5660:7:0;5687:6;;;;-1:-1:-1;;;;;5687:6:0;5614:87;;23896:866;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;25177:93::-;;;;;;;;;;;;;:::i;9792:46::-;;;;;;;;;;-1:-1:-1;9792:46:0;;;;;:::i;:::-;;;;;;;;;;;;;;13668:1152;;;;;;;;;;-1:-1:-1;13668:1152:0;;;;;:::i;:::-;;:::i;22500:174::-;;;;;;;;;;-1:-1:-1;22500:174:0;;;;;:::i;:::-;;:::i;26842:73::-;;;;;;;;;;-1:-1:-1;26903:10:0;;26842:73;;21333:784;;;;;;;;;;-1:-1:-1;21333:784:0;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;9525:62::-;;;;;;;;;;-1:-1:-1;9525:62:0;;;;;:::i;:::-;;:::i;12325:195::-;;;;;;;;;;-1:-1:-1;12325:195:0;;;;;:::i;:::-;;:::i;26026:83::-;;;;;;;;;;-1:-1:-1;26026:83:0;;;;;:::i;:::-;;:::i;26488:104::-;;;;;;;;;;-1:-1:-1;26488:104:0;;;;;:::i;:::-;;:::i;10327:32::-;;;;;;;;;;-1:-1:-1;10327:32:0;;;;-1:-1:-1;;;;;10327:32:0;;;25718:101;;;;;;;;;;-1:-1:-1;25718:101:0;;;;;:::i;:::-;;:::i;19822:140::-;;;;;;;;;;-1:-1:-1;19822:140:0;;;;;:::i;:::-;;:::i;9472:46::-;;;;;;;;;;-1:-1:-1;9472:46:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;9472:46:0;;;;;;;;;;;-1:-1:-1;;;;;18415:32:1;;;18397:51;;18479:2;18464:18;;18457:34;;;;18507:18;;;18500:34;18385:2;18370:18;9472:46:0;18195:345:1;23566:188:0;;;;;;;;;;-1:-1:-1;23566:188:0;;;;;:::i;:::-;;:::i;10292:28::-;;;;;;;;;;-1:-1:-1;10292:28:0;;;;-1:-1:-1;;;;;10292:28:0;;;19368:448;;;;;;:::i;:::-;;:::i;23449:111::-;;;;;;;;;;-1:-1:-1;23449:111:0;;;;;:::i;:::-;;:::i;24896:167::-;;;;;;;;;;-1:-1:-1;24896:167:0;;;;;:::i;:::-;;:::i;10409:20::-;;;;;;;;;;-1:-1:-1;10409:20:0;;;;-1:-1:-1;;;;;10409:20:0;;;26385:95;;;;;;;;;;-1:-1:-1;26385:95:0;;;;;:::i;:::-;;:::i;10463:22::-;;;;;;;;;;-1:-1:-1;10463:22:0;;;;-1:-1:-1;;;;;10463:22:0;;;8014:101;;;;;;;;;;-1:-1:-1;8094:13:0;;-1:-1:-1;;;;;8094:13:0;8014:101;;26293:86;;;;;;;;;;-1:-1:-1;26293:86:0;;;;;:::i;:::-;;:::i;23059:82::-;;;;;;;;;;-1:-1:-1;23059:82:0;;;;;:::i;:::-;;:::i;20578:153::-;;;;;;;;;;-1:-1:-1;20578:153:0;;;;;:::i;:::-;;:::i;9888:73::-;;;;;;;;;;-1:-1:-1;9888:73:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;26598:78;;;;;;;;;;-1:-1:-1;26598:78:0;;;;;:::i;:::-;;:::i;8314:181::-;;;;;;;;;;-1:-1:-1;8314:181:0;;;;;:::i;:::-;;:::i;27329:208::-;;;;;;;;;;-1:-1:-1;27329:208:0;;;;;:::i;:::-;;:::i;12099:92::-;;;;;;;;;;-1:-1:-1;12099:92:0;;;;;:::i;:::-;;:::i;9417:48::-;;;;;;;;;;-1:-1:-1;9417:48:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;9417:48:0;;;;;;;25627:85;;;;;;;;;;-1:-1:-1;25627:85:0;;;;;:::i;:::-;;:::i;9968:44::-;;;;;;;;;;-1:-1:-1;9968:44:0;;;;;:::i;:::-;;;;;;;;;;;;;;10494:23;;;;;;;;;;-1:-1:-1;10494:23:0;;;;-1:-1:-1;;;;;10494:23:0;;;10265:20;;;;;;;;;;-1:-1:-1;10265:20:0;;;;-1:-1:-1;;;;;10265:20:0;;;25825:88;;;;;;;;;;-1:-1:-1;25825:88:0;;;;;:::i;:::-;;:::i;25919:101::-;;;;;;;;;;-1:-1:-1;25919:101:0;;;;;:::i;:::-;;:::i;27132:191::-;5500:13;:11;:13::i;:::-;26979:21;27204:7:::1;:23;;27196:58;;;::::0;-1:-1:-1;;;27196:58:0;;21929:2:1;27196:58:0::1;::::0;::::1;21911:21:1::0;21968:2;21948:18;;;21941:30;-1:-1:-1;;;21987:18:1;;;21980:52;22049:18;;27196:58:0::1;;;;;;;;;27284:10;::::0;27296:25:::1;26979:21:::0;27296:25:::1;::::0;;::::1;::::0;;::::1;::::0;::::1;::::0;;;;;;::::1;;;;;;;;;;;;;::::0;::::1;;;;;;27195:128;27132:191:::0;:::o;26115:83::-;5500:13;:11;:13::i;:::-;26174:7:::1;:22:::0;;-1:-1:-1;;;;;;26174:22:0::1;-1:-1:-1::0;;;;;26174:22:0;;;::::1;::::0;;;::::1;::::0;;26115:83::o;14826:2177::-;15002:4;2521:19;:17;:19::i;:::-;15139:25:::1;15159:4;15139:19;:25::i;:::-;15130:58;;;::::0;-1:-1:-1;;;15130:58:0;;22280:2:1;15130:58:0::1;::::0;::::1;22262:21:1::0;22319:2;22299:18;;;22292:30;-1:-1:-1;;;22338:18:1;;;22331:49;22397:18;;15130:58:0::1;22078:343:1::0;15130:58:0::1;15199:22;15224:39;15256:6;15224:31;:39::i;:::-;:44;;::::0;15295:7:::1;::::0;:28:::1;::::0;-1:-1:-1;;;15295:28:0;;15224:44;;-1:-1:-1;15281:10:0::1;::::0;-1:-1:-1;;;;;15295:7:0;;::::1;::::0;:18:::1;::::0;:28:::1;::::0;15224:44;;15295:28:::1;;;:::i;:::-;;::::0;::::1;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;15279:44;;;15356:5;15342:9;:20;;15334:54;;;::::0;-1:-1:-1;;;15334:54:0;;22878:2:1;15334:54:0::1;::::0;::::1;22860:21:1::0;22917:2;22897:18;;;22890:30;-1:-1:-1;;;22936:18:1;;;22929:51;22997:18;;15334:54:0::1;22676:345:1::0;15334:54:0::1;15444:7;;15434:4;15417:22;;;;;;;;:::i;:::-;;;;;;;;;;;;;15407:33;;;;;;:44;15399:72;;;;-1:-1:-1::0;;;15399:72:0::1;;;;;;;:::i;:::-;15490:7;::::0;:39:::1;::::0;-1:-1:-1;;;15490:39:0;;-1:-1:-1;;;;;15490:7:0;;::::1;::::0;:20:::1;::::0;:39:::1;::::0;15511:6;;15519:9;;;;15490:39:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;15482:69;;;::::0;-1:-1:-1;;;15482:69:0;;24830:2:1;15482:69:0::1;::::0;::::1;24812:21:1::0;24869:2;24849:18;;;24842:30;-1:-1:-1;;;24888:18:1;;;24881:47;24945:18;;15482:69:0::1;24628:341:1::0;15482:69:0::1;15562:18;15583:21;15591:6;15599:4;15583:7;:21::i;:::-;15562:42;;15624:32;15643:6;15651:4;15624:18;:32::i;:::-;15623:33;15615:63;;;::::0;-1:-1:-1;;;15615:63:0;;25176:2:1;15615:63:0::1;::::0;::::1;25158:21:1::0;25215:2;25195:18;;;25188:30;-1:-1:-1;;;25234:18:1;;;25227:47;25291:18;;15615:63:0::1;24974:341:1::0;15615:63:0::1;15689:19;15711:30;15722:4;15727;;15732:8;;15711:10;:30::i;:::-;15760:15;::::0;15689:52;;-1:-1:-1;15760:15:0::1;;:24;::::0;:53:::1;;;15788:8;15797:6;15788:16;;;;;;:::i;:::-;::::0;;;::::1;::::0;;;;;::::1;::::0;;;;::::1;;:25;15760:53;15752:88;;;::::0;-1:-1:-1;;;15752:88:0;;25814:2:1;15752:88:0::1;::::0;::::1;25796:21:1::0;25853:2;25833:18;;;25826:30;-1:-1:-1;;;25872:18:1;;;25865:52;25934:18;;15752:88:0::1;25612:346:1::0;15752:88:0::1;15866:13;::::0;:61:::1;::::0;-1:-1:-1;;;15866:61:0;;15851:12:::1;::::0;-1:-1:-1;;;;;15866:13:0::1;::::0;:35:::1;::::0;:61:::1;::::0;15902:8;;15912:4;;;;15918:8;;;;15866:61:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;15851:76;;15954:1;15946:7;:9;15938:52;;;::::0;-1:-1:-1;;;15938:52:0;;27090:2:1;15938:52:0::1;::::0;::::1;27072:21:1::0;27129:2;27109:18;;;27102:30;27168:32;27148:18;;;27141:60;27218:18;;15938:52:0::1;26888:354:1::0;15938:52:0::1;16001:13;16017:6;16001:22;;16034:25;16062:31;;;;;;;;16072:5;-1:-1:-1::0;;;;;16062:31:0::1;;;;;16079:7;16062:31;;;;16088:4;16062:31;;::::0;16034:59:::1;;16109:6;16104:222;16125:8;:15;16121:1;:19;16104:222;;;16171:44;16197:8;16206:1;16197:11;;;;;;;;:::i;:::-;;;;;;;16210:4;16171:25;:44::i;:::-;16170:45;16162:94;;;::::0;-1:-1:-1;;;16162:94:0;;27581:2:1;16162:94:0::1;::::0;::::1;27563:21:1::0;27620:2;27600:18;;;27593:30;27659:34;27639:18;;;27632:62;-1:-1:-1;;;27710:18:1;;;27703:34;27754:19;;16162:94:0::1;27379:400:1::0;16162:94:0::1;16309:5;16271:16;:29;16288:8;16297:1;16288:11;;;;;;;;:::i;:::-;;;;;;;16271:29;;;;;;;;;;;:35;16301:4;16271:35;;;;;;;;;;;;:43;;;;;-1:-1:-1::0;;;;;16271:43:0::1;;;;;-1:-1:-1::0;;;;;16271:43:0::1;;;;;;16142:3;;;;;:::i;:::-;;;;16104:222;;;-1:-1:-1::0;16404:15:0::1;::::0;;::::1;::::0;16379:22:::1;::::0;;;:16:::1;:22:::0;;;;;;;;:40:::1;::::0;16404:15;16379:40:::1;:::i;:::-;16354:22;::::0;;;:16:::1;:22;::::0;;;;;;;:65;;;;16430:16:::1;:22:::0;;;;;:27;;16456:1:::1;::::0;16354:22;16430:27:::1;::::0;16456:1;;16430:27:::1;:::i;:::-;::::0;;;-1:-1:-1;;;;;;;16484:22:0;::::1;;::::0;;;:15:::1;:22;::::0;;;;;;;16512:36;;;;::::1;::::0;;16526:15;;::::1;::::0;16512:36;;;;::::1;::::0;;;16484:65;;::::1;::::0;;::::1;::::0;;;;;;;;;;::::1;::::0;;::::1;::::0;;::::1;::::0;;;;;;::::1;::::0;16560:23;;;:16:::1;:23:::0;;;;;:29;;;;;;;;;;:36;;-1:-1:-1;;16560:36:0::1;::::0;;::::1;::::0;;;16623:16;16526:8;;16623:9:::1;::::0;:16:::1;::::0;16633:5;;16623:16:::1;:::i;:::-;::::0;;;::::1;::::0;;;;;;::::1;::::0;;;;;:27;;;;-1:-1:-1;;;;;16623:27:0;;::::1;-1:-1:-1::0;;;;;;16623:27:0;;::::1;;::::0;;;;::::1;::::0;;;;::::1;::::0;;;;;;;::::1;::::0;::::1;::::0;;::::1;::::0;16661:8:::1;::::0;:16:::1;::::0;16670:6;;16661:16:::1;:::i;:::-;::::0;;;::::1;::::0;;;;;::::1;::::0;;;:23;;;::::1;;-1:-1:-1::0;;16661:23:0;;::::1;::::0;;;::::1;::::0;;16706:7:::1;::::0;-1:-1:-1;;;;;16706:7:0::1;16698:30:::0;16695:224:::1;;16768:13;::::0;;16779:1:::1;16768:13:::0;;;;;::::1;::::0;;16744:21:::1;::::0;16768:13:::1;::::0;::::1;::::0;;::::1;::::0;::::1;;::::0;-1:-1:-1;16768:13:0::1;16744:37;;16809:4;16796:7;16804:1;16796:10;;;;;;;;:::i;:::-;;;;;;:17;;;::::0;::::1;16841:8;:15;;;16828:7;16836:1;16828:10;;;;;;;;:::i;:::-;;::::0;;::::1;::::0;;;;;:28;16871:7:::1;::::0;:36:::1;::::0;-1:-1:-1;;;16871:36:0;;-1:-1:-1;;;;;16871:7:0;;::::1;::::0;:17:::1;::::0;:36:::1;::::0;16889:5;;16871:7;;16899;;16871:36:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;16729:190;16695:224;16946:15;::::0;;::::1;::::0;16934:39:::1;::::0;;28830:25:1;;;-1:-1:-1;;;;;28891:32:1;;28871:18;;;28864:60;;;;28940:18;;;28933:34;;;16934:39:0::1;::::0;28818:2:1;28803:18;16934:39:0::1;;;;;;;16991:4;16984:11;;;;;;;;;14826:2177:::0;;;;;;;;;;;:::o;22123:371::-;22199:24;22236:30;22291:7;-1:-1:-1;;;;;22269:30:0;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;22269:30:0;;;;;;;;;;;;;;;;;22236:63;;22315:6;22310:154;22331:7;22327:1;:11;22310:154;;;22371:81;;;;;;;;22394:1;22387:4;:8;;;;:::i;:::-;22371:81;;;;22397:16;:26;22414:8;22421:1;22414:4;:8;:::i;:::-;22397:26;;;;;;;;;;;;22371:81;;;;22425:16;:26;22449:1;22442:4;:8;;;;:::i;:::-;22425:26;;;;;;;;;;;;22371:81;;;22360:5;22366:1;22360:8;;;;;;;;:::i;:::-;;;;;;:92;;;;22340:3;;;;;:::i;:::-;;;;22310:154;;;-1:-1:-1;22481:5:0;-1:-1:-1;22123:371:0;;;;;:::o;25280:128::-;25378:7;;:28;;-1:-1:-1;;;25378:28:0;;25348:9;;;;-1:-1:-1;;;;;25378:7:0;;;;:18;;:28;;25397:8;;;;25378:28;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;25371:35;;;;25280:128;;;;;;:::o;23762:::-;23857:11;;:31;;;-1:-1:-1;;;23857:31:0;;;;23812:36;;-1:-1:-1;;;;;23857:11:0;;:29;;:31;;;;;:11;;:31;;;;;;;:11;:31;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;23857:31:0;;;;;;;;;;;;:::i;:::-;23850:38;;23762:128;:::o;27012:114::-;5500:13;:11;:13::i;:::-;27087:10:::1;::::0;27099:25:::1;26979:21:::0;27099:25:::1;::::0;;::::1;::::0;;::::1;::::0;::::1;::::0;;;;;;::::1;;;;;;;;;;;;;::::0;::::1;;;;;;27057:69;27012:114::o:0;20737:473::-;20824:22;20859:10;20889:6;20884:99;20905:5;:12;20901:1;:16;20884:99;;;20929:41;20955:5;20961:1;20955:8;;;;;;;;:::i;:::-;;;;;;;20965:4;20929:25;:41::i;:::-;20925:57;;;20973:7;;;;:::i;:::-;;;;20925:57;20919:3;;;;:::i;:::-;;;;20884:99;;;;21015:5;-1:-1:-1;;;;;21004:17:0;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;21004:17:0;;20993:28;;21032:10;21062:6;21057:120;21078:5;:12;21074:1;:16;21057:120;;;21102:41;21128:5;21134:1;21128:8;;;;;;;;:::i;:::-;;;;;;;21138:4;21102:25;:41::i;:::-;21098:78;;;21166:5;21172:1;21166:8;;;;;;;;:::i;:::-;;;;;;;21146;21155:7;;;;;:::i;:::-;;;21146:17;;;;;;;;:::i;:::-;;;;;;:28;;;;;21098:78;21092:3;;;;:::i;:::-;;;;21057:120;;;;21187:15;;20737:473;;;;:::o;25081:90::-;25144:7;;:25;;;-1:-1:-1;;;25144:25:0;;;;25130:4;;-1:-1:-1;;;;;25144:7:0;;:23;;:25;;;;;;;;;;;;;;:7;:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;22680:174::-;22756:16;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22756:16:0;22785;22804:22;22812:6;22820:5;22804:22;;:7;:22::i;:::-;22785:41;;22834:7;22842:3;22834:12;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;22827:19;;;;;;;-1:-1:-1;;;;;22827:19:0;;;;;;;;;;;;;;;;;;;;;22834:12;-1:-1:-1;;22680:174:0;;;;:::o;25414:114::-;25499:7;;:27;;-1:-1:-1;;;25499:27:0;;;;;160:25:1;;;25469:9:0;;;;-1:-1:-1;;;;;25499:7:0;;;;:20;;133:18:1;;25499:27:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;25492:34;;;;25414:114;;;:::o;11957:49::-;5500:13;:11;:13::i;:::-;11994:10:::1;:8;:10::i;:::-;11957:49::o:0;23248:195::-;23380:13;;:61;;-1:-1:-1;;;23380:61:0;;23367:4;;-1:-1:-1;;;;;23380:13:0;;:35;;:61;;23416:8;;;;23426:4;;;;23432:8;;;;23380:61;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;23373:68;23248:195;-1:-1:-1;;;;;;;23248:195:0:o;22866:72::-;22905:4;22930:6;22918:9;:7;:9::i;:::-;:18;;;;:::i;21216:111::-;21281:4;21294:24;21311:6;21294:16;:24::i;:::-;:31;;21216:111;-1:-1:-1;;21216:111:0:o;12526:1136::-;12594:28;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12594:28:0;12664:7;;:26;;-1:-1:-1;;;12664:26:0;;-1:-1:-1;;;;;560:32:1;;;12664:26:0;;;542:51:1;12635:26:0;;12664:7;;:19;;515:18:1;;12664:26:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;12664:26:0;;;;;;;;;;;;:::i;:::-;12723:15;;12701:37;;12768:14;;;;12749:16;;;:33;12805:8;;12635:55;;-1:-1:-1;;;;;;12805:8:0;12797:31;12793:125;;12850:8;;:25;;-1:-1:-1;;;12850:25:0;;-1:-1:-1;;;;;560:32:1;;;12850:25:0;;;542:51:1;12850:8:0;;;;:18;;515::1;;12850:25:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;12850:25:0;;;;;;;;;;;;:::i;:::-;12831:16;;;:44;12793:125;;;12903:13;;;12914:1;12903:13;;;;;;;;12884:16;;;:32;12793:125;12950:16;;;;:23;12928:19;;;:45;;;13006:16;;;;:23;12984:19;;;:45;13081:19;;-1:-1:-1;;;13081:91:0;;13171:1;13081:91;;;13148:19;;;;13126;;:41;;13148:19;13126:41;:::i;:::-;13058:8;:19;;;:115;;;;:::i;:::-;13040:133;;13223:8;:19;;;13201:8;:19;;;:41;;;;:::i;:::-;13188:10;:54;13184:117;;;13280:8;:19;;;13258:8;:19;;;:41;;;;:::i;:::-;13245:54;;13184:117;13338:10;-1:-1:-1;;;;;13327:22:0;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;13327:22:0;-1:-1:-1;13311:13:0;;;:38;13365:6;13360:88;13381:8;:19;;;13377:1;:23;13360:88;;;13427:8;:16;;;13444:1;13427:19;;;;;;;;:::i;:::-;;;;;;;13408:8;:13;;;13422:1;13408:16;;;;;;;;:::i;:::-;;;;;;;;;;:38;13402:3;;;;:::i;:::-;;;;13360:88;;;;13458:19;13493:8;:19;;;13480:10;:32;;;;:::i;:::-;13458:54;;13528:6;13523:132;13544:14;13540:1;:18;:45;;;;;13566:8;:19;;;13562:1;:23;13540:45;13523:132;;;13634:8;:16;;;13651:1;13634:19;;;;;;;;:::i;:::-;;;;;;;13593:8;:13;;;13629:1;13607:8;:19;;;:23;;;;:::i;:::-;13593:38;;;;;;;;:::i;:::-;;;;;;;;;;:60;13587:3;;;;:::i;:::-;;;;13523:132;;;;12624:1038;;;12526:1136;;;:::o;22944:109::-;22983:4;23025:14;;23042:7;23025:24;;;;:::i;:::-;23001:49;;23005:15;23001:49;:::i;26762:74::-;5500:13;:11;:13::i;:::-;26816:10:::1;:18:::0;26762:74::o;12197:97::-;5500:13;:11;:13::i;:::-;-1:-1:-1;;;;;12260:24:0::1;12287:5;12260:24:::0;;;:16:::1;:24;::::0;;;;:32;;-1:-1:-1;;12260:32:0::1;::::0;;12197:97::o;19029:333::-;19120:4;2521:19;:17;:19::i;:::-;19183:7:::1;;19173:4;19156:22;;;;;;;;:::i;:::-;;;;;;;;;;;;;19146:33;;;;;;:44;19138:72;;;;-1:-1:-1::0;;;19138:72:0::1;;;;;;;:::i;:::-;19221:40;19264:14;19271:6;19264;:14::i;:::-;19289:11;::::0;:43:::1;::::0;-1:-1:-1;;;19289:43:0;;19221:57;;-1:-1:-1;;;;;;19289:11:0::1;::::0;:23:::1;::::0;:43:::1;::::0;19313:6;;19221:57;;19289:43:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;19350:4:0::1;::::0;19029:333;-1:-1:-1;;;;19029:333:0:o;25542:79::-;5500:13;:11;:13::i;:::-;25603:8:::1;:16:::0;;-1:-1:-1;;;;;;25603:16:0::1;-1:-1:-1::0;;;;;25603:16:0;;;::::1;::::0;;;::::1;::::0;;25542:79::o;20385:187::-;-1:-1:-1;;;;;20487:24:0;;20463:4;20487:24;;;:16;:24;;;;;;;;:31;;;;;;;;;;;;:77;;-1:-1:-1;20522:9:0;;:42;;-1:-1:-1;;;20522:42:0;;-1:-1:-1;;;;;36122:32:1;;;20522:42:0;;;36104:51:1;36171:18;;;36164:34;;;20522:9:0;;;;:28;;36077:18:1;;20522:42:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;20480:84;20385:187;-1:-1:-1;;;20385:187:0:o;6289:103::-;5500:13;:11;:13::i;:::-;6354:30:::1;6381:1;6354:18;:30::i;24768:122::-:0;24857:31;;24835:12;36382:15:1;;;-1:-1:-1;;36378:53:1;24857:31:0;;;36366:66:1;36448:12;;;36441:28;;;24835:12:0;36485::1;;24857:31:0;;;;;;;;;;;;24850:38;;24768:122;;;;:::o;8926:235::-;8094:13;;775:10;;-1:-1:-1;;;;;8094:13:0;9023:24;;9019:98;;9071:34;;-1:-1:-1;;;9071:34:0;;-1:-1:-1;;;;;560:32:1;;9071:34:0;;;542:51:1;515:18;;9071:34:0;381:218:1;9019:98:0;9127:26;9146:6;9127:18;:26::i;:::-;8968:193;8926:235::o;26682:74::-;5500:13;:11;:13::i;:::-;26734:15:::1;:20:::0;;-1:-1:-1;;26734:20:0::1;::::0;::::1;;::::0;;;::::1;::::0;;26682:74::o;11906:45::-;5500:13;:11;:13::i;:::-;11941:8:::1;:6;:8::i;26204:83::-:0;5500:13;:11;:13::i;:::-;26263:7:::1;:22:::0;;-1:-1:-1;;;;;;26263:22:0::1;-1:-1:-1::0;;;;;26263:22:0;;;::::1;::::0;;;::::1;::::0;;26204:83::o;23896:866::-;23946:16;23975:22;24008:41;24052:11;;;;;;;;;-1:-1:-1;;;;;24052:11:0;-1:-1:-1;;;;;24052:29:0;;:31;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;24052:31:0;;;;;;;;;;;;:::i;:::-;24008:75;;24099:6;24094:638;24115:4;:11;24111:1;:15;24094:638;;;24191:11;;24216:7;;24148:11;;-1:-1:-1;;;;;24191:11:0;;:24;;24216:4;;24221:1;;24216:7;;;;;;:::i;:::-;;;;;;;;;;;:13;24191:39;;-1:-1:-1;;;;;;24191:39:0;;;;;;;-1:-1:-1;;;;;560:32:1;;;24191:39:0;;;542:51:1;515:18;;24191:39:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;24191:39:0;;;;;;;;;;;;:::i;:::-;24174:56;-1:-1:-1;;24245:476:0;;;-1:-1:-1;24245:476:0;;-1:-1:-1;;;;24245:476:0;24280:5;:12;24296:1;24280:17;24276:372;;24330:16;;;24344:1;24330:16;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;24330:16:0;24322:24;;24276:372;;;24395:25;24437:5;:12;24452:1;24437:16;;;;:::i;:::-;-1:-1:-1;;;;;24423:31:0;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;24423:31:0;;24395:59;;24482:6;24477:113;24498:5;:12;24494:1;:16;24477:113;;;24558:5;24564:1;24558:8;;;;;;;;:::i;:::-;;;;;;;24544;24553:1;24544:11;;;;;;;;:::i;:::-;-1:-1:-1;;;;;24544:22:0;;;:11;;;;;;;;;;;:22;24512:3;;;;:::i;:::-;;;;24477:113;;;-1:-1:-1;24620:8:0;-1:-1:-1;24276:372:0;24692:4;24697:1;24692:7;;;;;;;;:::i;:::-;;;;;;;:13;;;24666:5;24687:1;24672:5;:12;:16;;;;:::i;:::-;24666:23;;;;;;;;:::i;:::-;;;;;;:39;-1:-1:-1;;;;;24666:39:0;;;-1:-1:-1;;;;;24666:39:0;;;;;24245:476;-1:-1:-1;24128:3:0;;;;:::i;:::-;;;;24094:638;;;-1:-1:-1;24749:5:0;;23896:866;-1:-1:-1;;23896:866:0:o;25177:93::-;25241:7;;:27;;;-1:-1:-1;;;25241:27:0;;;;25228:4;;-1:-1:-1;;;;;25241:7:0;;:25;;:27;;;;;;;;;;;;;;:7;:27;;;;;;;;;;;;;;13668:1152;13740:28;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13740:28:0;13810:7;;:26;;-1:-1:-1;;;13810:26:0;;-1:-1:-1;;;;;560:32:1;;;13810:26:0;;;542:51:1;13781:26:0;;13810:7;;:19;;515:18:1;;13810:26:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;13810:26:0;;;;;;;;;;;;:::i;:::-;13869:15;;13847:37;;13914:14;;;;13895:16;;;:33;13954:8;;13781:55;;-1:-1:-1;;;;;;13954:8:0;13946:31;13942:134;;13999:8;;:34;;-1:-1:-1;;;13999:34:0;;-1:-1:-1;;;;;560:32:1;;;13999:34:0;;;542:51:1;13999:8:0;;;;:27;;515:18:1;;13999:34:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;13999:34:0;;;;;;;;;;;;:::i;:::-;13980:16;;;:53;13942:134;;;14061:13;;;14072:1;14061:13;;;;;;;;14042:16;;;:32;13942:134;14108:16;;;;:23;14086:19;;;:45;;;14164:16;;;;:23;14142:19;;;:45;14239:19;;-1:-1:-1;;;14239:91:0;;14329:1;14239:91;;;14306:19;;;;14284;;:41;;14306:19;14284:41;:::i;:::-;14216:8;:19;;;:115;;;;:::i;:::-;14198:133;;14381:8;:19;;;14359:8;:19;;;:41;;;;:::i;:::-;14346:10;:54;14342:117;;;14438:8;:19;;;14416:8;:19;;;:41;;;;:::i;:::-;14403:54;;14342:117;14496:10;-1:-1:-1;;;;;14485:22:0;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;14485:22:0;-1:-1:-1;14469:13:0;;;:38;14523:6;14518:88;14539:8;:19;;;14535:1;:23;14518:88;;;14585:8;:16;;;14602:1;14585:19;;;;;;;;:::i;:::-;;;;;;;14566:8;:13;;;14580:1;14566:16;;;;;;;;:::i;:::-;;;;;;;;;;:38;14560:3;;;;:::i;:::-;;;;14518:88;;;;14616:19;14651:8;:19;;;14638:10;:32;;;;:::i;:::-;14616:54;;14686:6;14681:132;14702:14;14698:1;:18;:45;;;;;14724:8;:19;;;14720:1;:23;14698:45;14681:132;;;14792:8;:16;;;14809:1;14792:19;;;;;;;;:::i;:::-;;;;;;;14751:8;:13;;;14787:1;14765:8;:19;;;:23;;;;:::i;:::-;14751:38;;;;;;;;:::i;:::-;;;;;;;;;;:60;14745:3;;;;:::i;:::-;;;;14681:132;;22500:174;22574:16;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22574:16:0;22603;22622:22;22630:6;22638:5;22622:22;;:7;:22::i;:::-;22603:41;;22652:9;22662:3;22652:14;;;;;;:::i;21333:784::-;21460:9;;:34;;-1:-1:-1;;;21460:34:0;;-1:-1:-1;;;;;560:32:1;;;21460:34:0;;;542:51:1;21396:22:0;;21431:26;;21460:9;;;:26;;515:18:1;;21460:34:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;21460:34:0;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;21538:23:0;;21505:30;21538:23;;;:15;:23;;;;;;;;21505:56;;;;;;;;;;;;;;;;;21431:63;;-1:-1:-1;21505:30:0;;:56;;21538:23;21505:30;;:56;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21572:35;21643:7;:14;21630:3;:10;:27;;;;:::i;:::-;-1:-1:-1;;;;;21610:48:0;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;;;;;;;21610:48:0;;;;;;;;;;;;;;;;21572:86;;21669:10;21699:6;21694:111;21715:3;:10;21711:1;:14;21694:111;;;-1:-1:-1;;;;;21738:18:0;;;;;;:10;:18;;;;;21757:6;;21738:18;;;21757:3;;21761:1;;21757:6;;;;;;:::i;:::-;;;;;;;;;;;;:11;;;21738:31;;;;;;;;;;-1:-1:-1;21738:31:0;;;;21733:71;;21796:3;21800:1;21796:6;;;;;;;;:::i;:::-;;;;;;;21772:12;21785:7;;;;;:::i;:::-;;;21772:21;;;;;;;;:::i;:::-;;;;;;:30;;;;21733:71;21727:3;;;;:::i;:::-;;;;21694:111;;;;21820:6;21815:123;21836:7;:14;21832:1;:18;21815:123;;;-1:-1:-1;;;;;21863:18:0;;;;;;:10;:18;;;;;21882:10;;21863:18;;;21882:7;;21890:1;;21882:10;;;;;;:::i;:::-;;;;;;;;;;;;:15;;;21863:35;;;;;;;;;;-1:-1:-1;21863:35:0;;;;21858:79;;21925:7;21933:1;21925:10;;;;;;;;:::i;:::-;;;;;;;21901:12;21914:7;;;;;:::i;:::-;;;21901:21;;;;;;;;:::i;:::-;;;;;;:34;;;;21858:79;21852:3;;;;:::i;:::-;;;;21815:123;;;;21948:31;22002:5;-1:-1:-1;;;;;21982:26:0;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;;;;;;;21982:26:0;;;;;;;;;;;;;;;;21948:60;;22024:6;22019:65;22040:5;22036:1;:9;22019:65;;;22067:12;22080:1;22067:15;;;;;;;;:::i;:::-;;;;;;;22053:8;22062:1;22053:11;;;;;;;;:::i;:::-;;;;;;:29;;;;22047:3;;;;;:::i;:::-;;;;22019:65;;;-1:-1:-1;22101:8:0;21333:784;-1:-1:-1;;;;;;21333:784:0:o;9525:62::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;9525:62:0;-1:-1:-1;9525:62:0;:::o;12325:195::-;5500:13;:11;:13::i;:::-;12426:6;12413:100:::1;12438:4;12434:1;:8;12413:100;;12482:9;::::0;:29:::1;::::0;-1:-1:-1;;;12482:29:0;;::::1;::::0;::::1;160:25:1::0;;;-1:-1:-1;;;;;12482:9:0;;::::1;::::0;:26:::1;::::0;133:18:1;;12482:29:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12460:19;::::0;;;:16:::1;:19;::::0;;;;:51;12477:1;12444:3:::1;12477:1:::0;12444:3:::1;:::i;:::-;;;;12413:100;;26026:83:::0;5500:13;:11;:13::i;:::-;26085:7:::1;:22:::0;;-1:-1:-1;;;;;;26085:22:0::1;-1:-1:-1::0;;;;;26085:22:0;;;::::1;::::0;;;::::1;::::0;;26026:83::o;26488:104::-;5500:13;:11;:13::i;:::-;26584:4:::1;26567:22;;;;;;;;:::i;:::-;;::::0;;-1:-1:-1;;26567:22:0;;::::1;::::0;;;;;;26557:33;;26567:22:::1;26557:33:::0;;::::1;::::0;26547:7:::1;:43:::0;-1:-1:-1;26488:104:0:o;25718:101::-;5500:13;:11;:13::i;:::-;25779:15:::1;:38:::0;;-1:-1:-1;;;;;;25779:38:0::1;-1:-1:-1::0;;;;;25779:38:0;;;::::1;::::0;;;::::1;::::0;;25718:101::o;19822:140::-;12069:10;12052:28;;;;:16;:28;;;;;;;;:36;;:28;:36;12044:45;;;;;;19928:22:::1;::::0;::::1;;::::0;;;:16:::1;:22;::::0;;;;;:32:::1;::::0;19953:7;;19928:32:::1;:::i;:::-;19903:22;::::0;;::::1;;::::0;;;:16:::1;:22;::::0;;;;:57;;;;-1:-1:-1;19822:140:0:o;23566:188::-;23627:4;23645:9;:7;:9::i;:::-;23637:5;:17;23634:34;;;-1:-1:-1;23663:5:0;;23566:188;-1:-1:-1;23566:188:0:o;23634:34::-;23680:12;;23672:5;:20;23669:37;;;-1:-1:-1;23701:5:0;;23566:188;-1:-1:-1;23566:188:0:o;23669:37::-;23750:1;23737:10;;:14;;;;:::i;:::-;23727:5;23715:9;:7;:9::i;:::-;:17;;;;:::i;:::-;23714:38;;23566:188;-1:-1:-1;;23566:188:0:o;19368:448::-;19495:4;2521:19;:17;:19::i;:::-;19558:7:::1;;19548:4;19531:22;;;;;;;;:::i;:::-;;;;;;;;;;;;;19521:33;;;;;;:44;19513:72;;;;-1:-1:-1::0;;;19513:72:0::1;;;;;;;:::i;:::-;19596:40;19639:14;19646:6;19639;:14::i;:::-;19596:57:::0;-1:-1:-1;19667:15:0;;19664:123:::1;;19684:11;::::0;:51:::1;::::0;-1:-1:-1;;;19684:51:0;;-1:-1:-1;;;;;19684:11:0;;::::1;::::0;:23:::1;::::0;:51:::1;::::0;19708:6;;19716:10;;19728:6;;;;19684:51:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;19664:123;;;19742:11;::::0;:43:::1;::::0;-1:-1:-1;;;19742:43:0;;-1:-1:-1;;;;;19742:11:0;;::::1;::::0;:23:::1;::::0;:43:::1;::::0;19766:6;;19774:10;;19742:43:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;19664:123;-1:-1:-1::0;19804:4:0::1;::::0;19368:448;-1:-1:-1;;;;;19368:448:0:o;23449:111::-;23512:4;23548:10;;23539:5;23527:9;:7;:9::i;:::-;:17;;;;:::i;:::-;23526:32;;23449:111;-1:-1:-1;;23449:111:0:o;24896:167::-;25000:12;25039:5;25046:4;;25052:8;;25022:39;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;25015:46;;24896:167;;;;;;;:::o;26385:95::-;5500:13;:11;:13::i;:::-;26448:11:::1;:30:::0;;-1:-1:-1;;;;;;26448:30:0::1;-1:-1:-1::0;;;;;26448:30:0;;;::::1;::::0;;;::::1;::::0;;26385:95::o;26293:86::-;5500:13;:11;:13::i;:::-;26353:8:::1;:24:::0;;-1:-1:-1;;;;;;26353:24:0::1;-1:-1:-1::0;;;;;26353:24:0;;;::::1;::::0;;;::::1;::::0;;26293:86::o;23059:82::-;5500:13;:11;:13::i;:::-;23116:14:::1;:23:::0;23059:82::o;20578:153::-;20657:4;20681:22;;;:16;:22;;;;;;;;:28;;;;;;;;;-1:-1:-1;;;;;20681:28:0;:42;;;20578:153::o;26598:78::-;5500:13;:11;:13::i;:::-;26654:12:::1;:20:::0;26598:78::o;8314:181::-;5500:13;:11;:13::i;:::-;8404::::1;:24:::0;;-1:-1:-1;;;;;8404:24:0;::::1;-1:-1:-1::0;;;;;;8404:24:0;;::::1;::::0;::::1;::::0;;;8469:7:::1;5660::::0;5687:6;-1:-1:-1;;;;;5687:6:0;;;;;;5614:87;8469:7:::1;-1:-1:-1::0;;;;;8444:43:0::1;;;;;;;;;;;8314:181:::0;:::o;27329:208::-;27429:7;5500:13;:11;:13::i;:::-;27439:43:::1;::::0;-1:-1:-1;;;27439:43:0;;-1:-1:-1;;;;;36122:32:1;;;27439:43:0::1;::::0;::::1;36104:51:1::0;36171:18;;;36164:34;;;27439:29:0;::::1;::::0;::::1;::::0;36077:18:1;;27439:43:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;27490:45:0::1;::::0;-1:-1:-1;;;27490:45:0;;27529:4:::1;27490:45;::::0;::::1;542:51:1::0;-1:-1:-1;;;;;27490:30:0;::::1;::::0;::::1;::::0;515:18:1;;27490:45:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;27483:52:::0;27329:208;-1:-1:-1;;;;27329:208:0:o;12099:92::-;5500:13;:11;:13::i;:::-;-1:-1:-1;;;;;12158:24:0::1;;::::0;;;:16:::1;:24;::::0;;;;:31;;-1:-1:-1;;12158:31:0::1;12185:4;12158:31;::::0;;12099:92::o;25627:85::-;5500:13;:11;:13::i;:::-;25691:11:::1;:19:::0;;-1:-1:-1;;;;;;25691:19:0::1;-1:-1:-1::0;;;;;25691:19:0;;;::::1;::::0;;;::::1;::::0;;25627:85::o;25825:88::-;5500:13;:11;:13::i;:::-;25886:9:::1;:25:::0;;-1:-1:-1;;;;;;25886:25:0::1;-1:-1:-1::0;;;;;25886:25:0;;;::::1;::::0;;;::::1;::::0;;25825:88::o;25919:101::-;5500:13;:11;:13::i;:::-;25984::::1;:34:::0;;-1:-1:-1;;;;;;25984:34:0::1;-1:-1:-1::0;;;;;25984:34:0;;;::::1;::::0;;;::::1;::::0;;25919:101::o;5779:166::-;5660:7;5687:6;-1:-1:-1;;;;;5687:6:0;;;;;775:10;5839:23;5835:103;;5886:40;;-1:-1:-1;;;5886:40:0;;775:10;5886:40;;;542:51:1;515:18;;5886:40:0;381:218:1;3075:132:0;2963:4;2987:7;;;3137:63;;;3173:15;;-1:-1:-1;;;3173:15:0;;;;;;;;;;;3817:120;2780:16;:14;:16::i;:::-;3886:5:::1;3876:15:::0;;-1:-1:-1;;3876:15:0::1;::::0;;3907:22:::1;775:10:::0;3916:12:::1;3907:22;::::0;-1:-1:-1;;;;;560:32:1;;;542:51;;530:2;515:18;3907:22:0::1;;;;;;;3817:120::o:0;17009:2010::-;17114:8;;17060:29;;-1:-1:-1;;;;;17114:8:0;17106:31;17103:73;;17139:8;;:35;;-1:-1:-1;;;17139:35:0;;-1:-1:-1;;;;;560:32:1;;;17139:35:0;;;542:51:1;17139:8:0;;;;:27;;515:18:1;;17139:35:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;17139:35:0;;;;;;;;;;;;:::i;:::-;;17103:73;17186:32;17221:24;17238:6;17221:16;:24::i;:::-;17265:16;;17186:59;;-1:-1:-1;17300:17:0;:15;:17::i;:::-;17296:1;:21;17292:48;;;17323:17;:15;:17::i;:::-;17319:21;;17292:48;17351:14;;;17461:1;17443:158;17464:6;;17443:158;;17493:10;17506:6;17511:1;17506:2;:6;:::i;:::-;17493:19;;17531:40;17549:9;17559:5;17549:16;;;;;;;;:::i;:::-;;;;;;;:21;;;17531:17;:40::i;:::-;17527:63;;;17574:14;17587:1;17574:14;;:::i;:::-;;;17527:63;-1:-1:-1;17472:4:0;;;;:::i;:::-;;;;17443:158;;;;17614:10;17628:23;17641:9;17628:12;:23::i;:::-;17611:40;;;17683:5;17670:9;:18;;17662:65;;;;-1:-1:-1;;;17662:65:0;;40835:2:1;17662:65:0;;;40817:21:1;40874:2;40854:18;;;40847:30;40913:34;40893:18;;;40886:62;-1:-1:-1;;;40964:18:1;;;40957:32;41006:19;;17662:65:0;40633:398:1;17662:65:0;17764:7;17738:23;17847:1;-1:-1:-1;;;;;17820:29:0;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;;;;;;;17820:29:0;;;;;;;;;;;;;;;-1:-1:-1;17782:67:0;-1:-1:-1;17886:6:0;17921:1;17903:792;17924:6;;17903:792;;17953:10;17966:6;17971:1;17966:2;:6;:::i;:::-;17953:19;;17991:40;18009:9;18019:5;18009:16;;;;;;;;:::i;17991:40::-;17987:697;;;18067:9;18077:5;18067:16;;;;;;;;:::i;:::-;;;;;;;:23;;;18052:38;;;;;:::i;:::-;;;18109:12;18178:16;:39;18195:9;18205:5;18195:16;;;;;;;;:::i;:::-;;;;;;;:21;;;18178:39;;;;;;;;;;;;18158:16;18132:42;;:9;18142:5;18132:16;;;;;;;;:::i;:::-;;;;;;;:23;;;:42;;;;:::i;:::-;18131:86;;;;:::i;:::-;18109:109;-1:-1:-1;18250:18:0;18109:109;18250:10;:18;:::i;:::-;18237:31;;18302:50;;;;;;;;18323:5;18302:50;;;;;;18330:9;18340:5;18330:16;;;;;;;;:::i;:::-;;;;;;;:21;;;18302:50;;;18287:5;18293;18287:12;;;;;;;;:::i;:::-;;;;;;:65;;;;18371:18;18392:39;18400:7;18409:9;18419:5;18409:16;;;;;;;;:::i;:::-;;;;;;;:21;;;18392:7;:39::i;:::-;18371:60;;18467:9;18477:5;18467:16;;;;;;:::i;:::-;;;;;;;;;;;;;18450:7;18458:5;18450:14;;;;;;:::i;:::-;;;;;;;;;;;;;;:33;;;;-1:-1:-1;;;;;;18450:33:0;-1:-1:-1;;;;;18450:33:0;;;;;;;;;;;;;;;;;;;;;;;;;;18509:9;;:16;;18519:5;;18509:16;:::i;:::-;;;;;;;;;;;;;;18502:23;;-1:-1:-1;;;;;;18502:23:0;;;18509:16;18502:23;;;;;;;;;;;18578:16;;18544:56;;18569:7;;18578:9;;18588:5;;18578:16;;;;;;:::i;:::-;;;;;;;:21;;;18544:24;:56::i;:::-;18664:4;18619:10;:19;18630:7;-1:-1:-1;;;;;18619:19:0;-1:-1:-1;;;;;18619:19:0;;;;;;;;;;;;:42;18639:9;18649:5;18639:16;;;;;;;;:::i;:::-;;;;;;;:21;;;18619:42;;;;;;;;;;;;:49;;;;;;;;;;;;;;;;;;18033:651;;17987:697;-1:-1:-1;17932:4:0;;;;:::i;:::-;;;;17903:792;;;-1:-1:-1;18716:7:0;;-1:-1:-1;;;;;18716:7:0;18708:30;18705:226;;18778:13;;;18789:1;18778:13;;;;;;;;18754:21;;18778:13;;;;;;;;;;-1:-1:-1;18778:13:0;18754:37;;18819:9;18806:7;18814:1;18806:10;;;;;;;;:::i;:::-;;;;;;:22;;;;;18856:11;18843:7;18851:1;18843:10;;;;;;;;:::i;:::-;;;;;;;;;;:24;18882:7;;:37;;-1:-1:-1;;;18882:37:0;;-1:-1:-1;;;;;18882:7:0;;;;:17;;:37;;18900:6;;18908:1;;18911:7;;18882:37;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18739:192;18705:226;18946:42;;;-1:-1:-1;;;;;18415:32:1;;18397:51;;18479:2;18464:18;;18457:34;;;18507:18;;;18500:34;;;18946:42:0;;18385:2:1;18370:18;18946:42:0;;;;;;;-1:-1:-1;19006:5:0;17009:2010;-1:-1:-1;;;;;;;;;17009:2010:0:o;8685:156::-;8775:13;8768:20;;-1:-1:-1;;;;;;8768:20:0;;;8799:34;8824:8;8799:24;:34::i;3558:118::-;2521:19;:17;:19::i;:::-;3618:7:::1;:14:::0;;-1:-1:-1;;3618:14:0::1;3628:4;3618:14;::::0;;3648:20:::1;3655:12;775:10:::0;;695:98;3284:130;2963:4;2987:7;;;3343:64;;3380:15;;-1:-1:-1;;;3380:15:0;;;;;;;;;;;19968:411;-1:-1:-1;;;;;20086:23:0;;20048:35;20086:23;;;:15;:23;;;;;;20120:252;20141:18;;20137:22;;20120:252;;;20208:4;20185:11;20197:1;20185:14;;;;;;;;:::i;:::-;;;;;;;;;;;:19;;;:27;20181:180;;20262:18;;20250:11;;20262:22;;20283:1;;20262:22;:::i;:::-;20250:35;;;;;;;;:::i;:::-;;;;;;;;;;;20233:11;20245:1;20233:14;;;;;;;;:::i;:::-;;;;;;;;;:52;;:14;;;;;:52;;;;;;;;;;;20304:17;;:11;;:17;;;;;:::i;:::-;;;;;;;;;-1:-1:-1;;20304:17:0;;;;;;;;;;;;;;;20340:5;;20181:180;20161:3;;;;:::i;:::-;;;;20120:252;;;;20037:342;19968:411;;:::o;6927:191::-;7001:16;7020:6;;-1:-1:-1;;;;;7037:17:0;;;7020:6;7037:17;;;-1:-1:-1;;;;;;7037:17:0;;;;;7070:40;;7020:6;;;;;;;7037:17;;7020:6;;7070:40;;;6990:128;6927:191;:::o;196:180:1:-;255:6;308:2;296:9;287:7;283:23;279:32;276:52;;;324:1;321;314:12;276:52;-1:-1:-1;347:23:1;;196:180;-1:-1:-1;196:180:1:o;604:131::-;-1:-1:-1;;;;;679:31:1;;669:42;;659:70;;725:1;722;715:12;740:134;808:20;;837:31;808:20;837:31;:::i;:::-;740:134;;;:::o;879:247::-;938:6;991:2;979:9;970:7;966:23;962:32;959:52;;;1007:1;1004;997:12;959:52;1046:9;1033:23;1065:31;1090:5;1065:31;:::i;1131:127::-;1192:10;1187:3;1183:20;1180:1;1173:31;1223:4;1220:1;1213:15;1247:4;1244:1;1237:15;1263:253;1335:2;1329:9;1377:4;1365:17;;-1:-1:-1;;;;;1397:34:1;;1433:22;;;1394:62;1391:88;;;1459:18;;:::i;:::-;1495:2;1488:22;1263:253;:::o;1521:257::-;1593:4;1587:11;;;1625:17;;-1:-1:-1;;;;;1657:34:1;;1693:22;;;1654:62;1651:88;;;1719:18;;:::i;1783:275::-;1854:2;1848:9;1919:2;1900:13;;-1:-1:-1;;1896:27:1;1884:40;;-1:-1:-1;;;;;1939:34:1;;1975:22;;;1936:62;1933:88;;;2001:18;;:::i;:::-;2037:2;2030:22;1783:275;;-1:-1:-1;1783:275:1:o;2063:187::-;2112:4;-1:-1:-1;;;;;2137:6:1;2134:30;2131:56;;;2167:18;;:::i;:::-;-1:-1:-1;2233:2:1;2212:15;-1:-1:-1;;2208:29:1;2239:4;2204:40;;2063:187::o;2255:338::-;2320:5;2349:53;2365:36;2394:6;2365:36;:::i;:::-;2349:53;:::i;:::-;2340:62;;2425:6;2418:5;2411:21;2465:3;2456:6;2451:3;2447:16;2444:25;2441:45;;;2482:1;2479;2472:12;2441:45;2531:6;2526:3;2519:4;2512:5;2508:16;2495:43;2585:1;2578:4;2569:6;2562:5;2558:18;2554:29;2547:40;2255:338;;;;;:::o;2598:222::-;2641:5;2694:3;2687:4;2679:6;2675:17;2671:27;2661:55;;2712:1;2709;2702:12;2661:55;2734:80;2810:3;2801:6;2788:20;2781:4;2773:6;2769:17;2734:80;:::i;2825:367::-;2888:8;2898:6;2952:3;2945:4;2937:6;2933:17;2929:27;2919:55;;2970:1;2967;2960:12;2919:55;-1:-1:-1;2993:20:1;;-1:-1:-1;;;;;3025:30:1;;3022:50;;;3068:1;3065;3058:12;3022:50;3105:4;3097:6;3093:17;3081:29;;3165:3;3158:4;3148:6;3145:1;3141:14;3133:6;3129:27;3125:38;3122:47;3119:67;;;3182:1;3179;3172:12;3197:1433;3392:6;3400;3408;3416;3424;3432;3440;3448;3456;3509:3;3497:9;3488:7;3484:23;3480:33;3477:53;;;3526:1;3523;3516:12;3477:53;3566:9;3553:23;-1:-1:-1;;;;;3636:2:1;3628:6;3625:14;3622:34;;;3652:1;3649;3642:12;3622:34;3675:50;3717:7;3708:6;3697:9;3693:22;3675:50;:::i;:::-;3665:60;;3744:38;3778:2;3767:9;3763:18;3744:38;:::i;:::-;3734:48;;3835:2;3824:9;3820:18;3807:32;3791:48;;3864:2;3854:8;3851:16;3848:36;;;3880:1;3877;3870:12;3848:36;3919:72;3983:7;3972:8;3961:9;3957:24;3919:72;:::i;:::-;4010:8;;-1:-1:-1;3893:98:1;-1:-1:-1;4098:2:1;4083:18;;4070:32;;-1:-1:-1;4114:16:1;;;4111:36;;;4143:1;4140;4133:12;4111:36;4182:72;4246:7;4235:8;4224:9;4220:24;4182:72;:::i;:::-;4273:8;;-1:-1:-1;4156:98:1;-1:-1:-1;4361:3:1;4346:19;;4333:33;;-1:-1:-1;4378:16:1;;;4375:36;;;4407:1;4404;4397:12;4375:36;;4446:72;4510:7;4499:8;4488:9;4484:24;4446:72;:::i;:::-;3197:1433;;;;-1:-1:-1;3197:1433:1;;;;;;;;4537:8;4619:3;4604:19;4591:33;;3197:1433;-1:-1:-1;;;;3197:1433:1:o;4827:248::-;4895:6;4903;4956:2;4944:9;4935:7;4931:23;4927:32;4924:52;;;4972:1;4969;4962:12;4924:52;-1:-1:-1;;4995:23:1;;;5065:2;5050:18;;;5037:32;;-1:-1:-1;4827:248:1:o;5080:857::-;5315:2;5367:21;;;5437:13;;5340:18;;;5459:22;;;5286:4;;5315:2;5500;;5518:18;;;;5559:15;;;5286:4;5602:309;5616:6;5613:1;5610:13;5602:309;;;5675:13;;5713:9;;5701:22;;5763:11;;;5757:18;5743:12;;;5736:40;5816:11;;5810:18;5796:12;;;5789:40;5858:4;5849:14;;;;5886:15;;;;5638:1;5631:9;5602:309;;;-1:-1:-1;5928:3:1;;5080:857;-1:-1:-1;;;;;;;5080:857:1:o;5942:437::-;6028:6;6036;6089:2;6077:9;6068:7;6064:23;6060:32;6057:52;;;6105:1;6102;6095:12;6057:52;6145:9;6132:23;-1:-1:-1;;;;;6170:6:1;6167:30;6164:50;;;6210:1;6207;6200:12;6164:50;6249:70;6311:7;6302:6;6291:9;6287:22;6249:70;:::i;:::-;6338:8;;6223:96;;-1:-1:-1;5942:437:1;-1:-1:-1;;;;5942:437:1:o;6637:250::-;6722:1;6732:113;6746:6;6743:1;6740:13;6732:113;;;6822:11;;;6816:18;6803:11;;;6796:39;6768:2;6761:10;6732:113;;;-1:-1:-1;;6879:1:1;6861:16;;6854:27;6637:250::o;6892:271::-;6934:3;6972:5;6966:12;6999:6;6994:3;6987:19;7015:76;7084:6;7077:4;7072:3;7068:14;7061:4;7054:5;7050:16;7015:76;:::i;:::-;7145:2;7124:15;-1:-1:-1;;7120:29:1;7111:39;;;;7152:4;7107:50;;6892:271;-1:-1:-1;;6892:271:1:o;7168:1272::-;7380:4;7409:2;7449;7438:9;7434:18;7479:2;7468:9;7461:21;7502:6;7537;7531:13;7568:6;7560;7553:22;7594:2;7584:12;;7627:2;7616:9;7612:18;7605:25;;7689:2;7679:6;7676:1;7672:14;7661:9;7657:30;7653:39;7727:2;7719:6;7715:15;7748:1;7758:653;7772:6;7769:1;7766:13;7758:653;;;7837:22;;;-1:-1:-1;;7833:36:1;7821:49;;7893:13;;7965:9;;-1:-1:-1;;;;;7961:35:1;7946:51;;8036:11;;;8030:18;7929:4;8068:15;;;8061:27;;;7929:4;8115:48;8147:15;;;8030:18;8115:48;:::i;:::-;8206:11;;;8200:18;8183:15;;;8176:43;8242:4;8289:11;;;8283:18;8266:15;;;;8259:43;;;;-1:-1:-1;;8389:12:1;;;;8354:15;;;;7794:1;7787:9;7758:653;;;-1:-1:-1;8428:6:1;;7168:1272;-1:-1:-1;;;;;;;;7168:1272:1:o;8445:315::-;8513:6;8521;8574:2;8562:9;8553:7;8549:23;8545:32;8542:52;;;8590:1;8587;8580:12;8542:52;8629:9;8616:23;8648:31;8673:5;8648:31;:::i;:::-;8698:5;8750:2;8735:18;;;;8722:32;;-1:-1:-1;;;8445:315:1:o;8765:183::-;8825:4;-1:-1:-1;;;;;8850:6:1;8847:30;8844:56;;;8880:18;;:::i;:::-;-1:-1:-1;8925:1:1;8921:14;8937:4;8917:25;;8765:183::o;8953:961::-;9046:6;9054;9107:2;9095:9;9086:7;9082:23;9078:32;9075:52;;;9123:1;9120;9113:12;9075:52;9163:9;9150:23;-1:-1:-1;;;;;9188:6:1;9185:30;9182:50;;;9228:1;9225;9218:12;9182:50;9251:22;;9304:4;9296:13;;9292:27;-1:-1:-1;9282:55:1;;9333:1;9330;9323:12;9282:55;9369:2;9356:16;9391:4;9415:60;9431:43;9471:2;9431:43;:::i;9415:60::-;9509:15;;;9591:1;9587:10;;;;9579:19;;9575:28;;;9540:12;;;;9615:19;;;9612:39;;;9647:1;9644;9637:12;9612:39;9671:11;;;;9691:142;9707:6;9702:3;9699:15;9691:142;;;9773:17;;9761:30;;9724:12;;;;9811;;;;9691:142;;;9852:5;9889:18;;;;9876:32;;-1:-1:-1;;;;;;8953:961:1:o;9919:435::-;9972:3;10010:5;10004:12;10037:6;10032:3;10025:19;10063:4;10092:2;10087:3;10083:12;10076:19;;10129:2;10122:5;10118:14;10150:1;10160:169;10174:6;10171:1;10168:13;10160:169;;;10235:13;;10223:26;;10269:12;;;;10304:15;;;;10196:1;10189:9;10160:169;;;-1:-1:-1;10345:3:1;;9919:435;-1:-1:-1;;;;;9919:435:1:o;10359:261::-;10538:2;10527:9;10520:21;10501:4;10558:56;10610:2;10599:9;10595:18;10587:6;10558:56;:::i;10625:163::-;10692:20;;10752:10;10741:22;;10731:33;;10721:61;;10778:1;10775;10768:12;10793:319;10860:6;10868;10921:2;10909:9;10900:7;10896:23;10892:32;10889:52;;;10937:1;10934;10927:12;10889:52;10976:9;10963:23;10995:31;11020:5;10995:31;:::i;:::-;11045:5;-1:-1:-1;11069:37:1;11102:2;11087:18;;11069:37;:::i;:::-;11059:47;;10793:319;;;;;:::o;11718:1088::-;11876:6;11884;11892;11900;11908;11916;11969:2;11957:9;11948:7;11944:23;11940:32;11937:52;;;11985:1;11982;11975:12;11937:52;12025:9;12012:23;-1:-1:-1;;;;;12095:2:1;12087:6;12084:14;12081:34;;;12111:1;12108;12101:12;12081:34;12150:70;12212:7;12203:6;12192:9;12188:22;12150:70;:::i;:::-;12239:8;;-1:-1:-1;12124:96:1;-1:-1:-1;12327:2:1;12312:18;;12299:32;;-1:-1:-1;12343:16:1;;;12340:36;;;12372:1;12369;12362:12;12340:36;12411:72;12475:7;12464:8;12453:9;12449:24;12411:72;:::i;:::-;12502:8;;-1:-1:-1;12385:98:1;-1:-1:-1;12590:2:1;12575:18;;12562:32;;-1:-1:-1;12606:16:1;;;12603:36;;;12635:1;12632;12625:12;12603:36;;12674:72;12738:7;12727:8;12716:9;12712:24;12674:72;:::i;:::-;11718:1088;;;;-1:-1:-1;11718:1088:1;;-1:-1:-1;11718:1088:1;;12765:8;;11718:1088;-1:-1:-1;;;11718:1088:1:o;13033:960::-;13220:2;13209:9;13202:21;13265:6;13259:13;13254:2;13243:9;13239:18;13232:41;13327:2;13319:6;13315:15;13309:22;13304:2;13293:9;13289:18;13282:50;13183:4;13379:2;13371:6;13367:15;13361:22;13419:4;13414:2;13403:9;13399:18;13392:32;13447:63;13505:3;13494:9;13490:19;13476:12;13447:63;:::i;:::-;13433:77;;13565:2;13557:6;13553:15;13547:22;13541:3;13530:9;13526:19;13519:51;13619:3;13611:6;13607:16;13601:23;13647:2;13643:7;13715:2;13703:9;13695:6;13691:22;13687:31;13681:3;13670:9;13666:19;13659:60;13742:52;13787:6;13771:14;13742:52;:::i;:::-;13728:66;;13843:3;13835:6;13831:16;13825:23;13803:45;;13914:2;13902:9;13894:6;13890:22;13886:31;13879:4;13868:9;13864:20;13857:61;;13935:52;13980:6;13964:14;13935:52;:::i;:::-;13927:60;13033:960;-1:-1:-1;;;;;13033:960:1:o;13998:450::-;14066:6;14119:2;14107:9;14098:7;14094:23;14090:32;14087:52;;;14135:1;14132;14125:12;14087:52;14175:9;14162:23;-1:-1:-1;;;;;14200:6:1;14197:30;14194:50;;;14240:1;14237;14230:12;14194:50;14263:22;;14316:4;14308:13;;14304:27;-1:-1:-1;14294:55:1;;14345:1;14342;14335:12;14294:55;14368:74;14434:7;14429:2;14416:16;14411:2;14407;14403:11;14368:74;:::i;14453:457::-;14531:6;14539;14592:2;14580:9;14571:7;14567:23;14563:32;14560:52;;;14608:1;14605;14598:12;14560:52;14648:9;14635:23;-1:-1:-1;;;;;14673:6:1;14670:30;14667:50;;;14713:1;14710;14703:12;14667:50;14736;14778:7;14769:6;14758:9;14754:22;14736:50;:::i;:::-;14726:60;;;14836:2;14825:9;14821:18;14808:32;14849:31;14874:5;14849:31;:::i;:::-;14899:5;14889:15;;;14453:457;;;;;:::o;15095:218::-;15242:2;15231:9;15224:21;15205:4;15262:45;15303:2;15292:9;15288:18;15280:6;15262:45;:::i;15548:118::-;15634:5;15627:13;15620:21;15613:5;15610:32;15600:60;;15656:1;15653;15646:12;15671:241;15727:6;15780:2;15768:9;15759:7;15755:23;15751:32;15748:52;;;15796:1;15793;15786:12;15748:52;15835:9;15822:23;15854:28;15876:5;15854:28;:::i;15917:658::-;16088:2;16140:21;;;16210:13;;16113:18;;;16232:22;;;16059:4;;16088:2;16311:15;;;;16285:2;16270:18;;;16059:4;16354:195;16368:6;16365:1;16362:13;16354:195;;;16433:13;;-1:-1:-1;;;;;16429:39:1;16417:52;;16524:15;;;;16489:12;;;;16465:1;16383:9;16354:195;;;-1:-1:-1;16566:3:1;;15917:658;-1:-1:-1;;;;;;15917:658:1:o;16580:798::-;16811:2;16863:21;;;16933:13;;16836:18;;;16955:22;;;16782:4;;16811:2;16996;;17014:18;;;;17055:15;;;16782:4;17098:254;17112:6;17109:1;17106:13;17098:254;;;17171:13;;17209:9;;17197:22;;17259:11;;17253:18;17239:12;;;17232:40;17292:12;;;;17327:15;;;;17134:1;17127:9;17098:254;;17383:322;17452:6;17505:2;17493:9;17484:7;17480:23;17476:32;17473:52;;;17521:1;17518;17511:12;17473:52;17561:9;17548:23;-1:-1:-1;;;;;17586:6:1;17583:30;17580:50;;;17626:1;17623;17616:12;17580:50;17649;17691:7;17682:6;17671:9;17667:22;17649:50;:::i;17938:252::-;18005:6;18013;18066:2;18054:9;18045:7;18041:23;18037:32;18034:52;;;18082:1;18079;18072:12;18034:52;18105:28;18123:9;18105:28;:::i;18771:793::-;18885:6;18893;18901;18909;18962:2;18950:9;18941:7;18937:23;18933:32;18930:52;;;18978:1;18975;18968:12;18930:52;19018:9;19005:23;-1:-1:-1;;;;;19088:2:1;19080:6;19077:14;19074:34;;;19104:1;19101;19094:12;19074:34;19127:50;19169:7;19160:6;19149:9;19145:22;19127:50;:::i;:::-;19117:60;;19227:2;19216:9;19212:18;19199:32;19186:45;;19240:31;19265:5;19240:31;:::i;:::-;19290:5;;-1:-1:-1;19348:2:1;19333:18;;19320:32;;19364:16;;;19361:36;;;19393:1;19390;19383:12;19361:36;;19432:72;19496:7;19485:8;19474:9;19470:24;19432:72;:::i;:::-;18771:793;;;;-1:-1:-1;19523:8:1;-1:-1:-1;;;;18771:793:1:o;19569:841::-;19700:6;19708;19716;19724;19732;19785:2;19773:9;19764:7;19760:23;19756:32;19753:52;;;19801:1;19798;19791:12;19753:52;19837:9;19824:23;19814:33;;19898:2;19887:9;19883:18;19870:32;-1:-1:-1;;;;;19962:2:1;19954:6;19951:14;19948:34;;;19978:1;19975;19968:12;19948:34;20017:70;20079:7;20070:6;20059:9;20055:22;20017:70;:::i;:::-;20106:8;;-1:-1:-1;19991:96:1;-1:-1:-1;20194:2:1;20179:18;;20166:32;;-1:-1:-1;20210:16:1;;;20207:36;;;20239:1;20236;20229:12;20207:36;;20278:72;20342:7;20331:8;20320:9;20316:24;20278:72;:::i;:::-;19569:841;;;;-1:-1:-1;19569:841:1;;-1:-1:-1;20369:8:1;;20252:98;19569:841;-1:-1:-1;;;19569:841:1:o;21044:456::-;21121:6;21129;21137;21190:2;21178:9;21169:7;21165:23;21161:32;21158:52;;;21206:1;21203;21196:12;21158:52;21245:9;21232:23;21264:31;21289:5;21264:31;:::i;:::-;21314:5;-1:-1:-1;21371:2:1;21356:18;;21343:32;21384:33;21343:32;21384:33;:::i;:::-;21044:456;;21436:7;;-1:-1:-1;;;21490:2:1;21475:18;;;;21462:32;;21044:456::o;22426:245::-;22505:6;22513;22566:2;22554:9;22545:7;22541:23;22537:32;22534:52;;;22582:1;22579;22572:12;22534:52;-1:-1:-1;;22605:16:1;;22661:2;22646:18;;;22640:25;22605:16;;22640:25;;-1:-1:-1;22426:245:1:o;23026:289::-;23157:3;23195:6;23189:13;23211:66;23270:6;23265:3;23258:4;23250:6;23246:17;23211:66;:::i;:::-;23293:16;;;;;23026:289;-1:-1:-1;;23026:289:1:o;23320:339::-;23522:2;23504:21;;;23561:2;23541:18;;;23534:30;-1:-1:-1;;;23595:2:1;23580:18;;23573:45;23650:2;23635:18;;23320:339::o;23664:315::-;23756:19;;;23738:3;-1:-1:-1;;;;;23787:31:1;;23784:51;;;23831:1;23828;23821:12;23784:51;23867:6;23864:1;23860:14;23919:8;23912:5;23905:4;23900:3;23896:14;23883:45;23948:18;;;;23968:4;23944:29;;23664:315;-1:-1:-1;;;23664:315:1:o;23984:389::-;-1:-1:-1;;;;;24201:32:1;;24183:51;;24270:2;24265;24250:18;;24243:30;;;-1:-1:-1;;24290:77:1;;24348:18;;24340:6;24332;24290:77;:::i;24378:245::-;24445:6;24498:2;24486:9;24477:7;24473:23;24469:32;24466:52;;;24514:1;24511;24504:12;24466:52;24546:9;24540:16;24565:28;24587:5;24565:28;:::i;25963:731::-;26318:2;26307:9;26300:21;26281:4;26344:56;26396:2;26385:9;26381:18;26373:6;26344:56;:::i;:::-;26448:9;26440:6;26436:22;26431:2;26420:9;26416:18;26409:50;26482:65;26540:6;26532;26524;26482:65;:::i;:::-;26468:79;;26595:9;26587:6;26583:22;26578:2;26567:9;26563:18;26556:50;26623:65;26681:6;26673;26665;26623:65;:::i;:::-;26615:73;25963:731;-1:-1:-1;;;;;;;;25963:731:1:o;26699:184::-;26769:6;26822:2;26810:9;26801:7;26797:23;26793:32;26790:52;;;26838:1;26835;26828:12;26790:52;-1:-1:-1;26861:16:1;;26699:184;-1:-1:-1;26699:184:1:o;27247:127::-;27308:10;27303:3;27299:20;27296:1;27289:31;27339:4;27336:1;27329:15;27363:4;27360:1;27353:15;27784:127;27845:10;27840:3;27836:20;27833:1;27826:31;27876:4;27873:1;27866:15;27900:4;27897:1;27890:15;27916:135;27955:3;27976:17;;;27973:43;;27996:18;;:::i;:::-;-1:-1:-1;28043:1:1;28032:13;;27916:135::o;28056:125::-;28121:9;;;28142:10;;;28139:36;;;28155:18;;:::i;28186:437::-;28458:1;28454;28449:3;28445:11;28441:19;28433:6;28429:32;28418:9;28411:51;28498:6;28493:2;28482:9;28478:18;28471:34;28541:2;28536;28525:9;28521:18;28514:30;28392:4;28561:56;28613:2;28602:9;28598:18;28590:6;28561:56;:::i;28978:128::-;29045:9;;;29066:11;;;29063:37;;;29080:18;;:::i;29111:292::-;29300:2;29289:9;29282:21;29263:4;29320:77;29393:2;29382:9;29378:18;29370:6;29362;29320:77;:::i;29408:443::-;29462:5;29515:3;29508:4;29500:6;29496:17;29492:27;29482:55;;29533:1;29530;29523:12;29482:55;29562:6;29556:13;29593:49;29609:32;29638:2;29609:32;:::i;29593:49::-;29667:2;29658:7;29651:19;29713:3;29706:4;29701:2;29693:6;29689:15;29685:26;29682:35;29679:55;;;29730:1;29727;29720:12;29679:55;29743:77;29817:2;29810:4;29801:7;29797:18;29790:4;29782:6;29778:17;29743:77;:::i;29856:1917::-;29986:6;30017:2;30060;30048:9;30039:7;30035:23;30031:32;30028:52;;;30076:1;30073;30066:12;30028:52;30109:9;30103:16;-1:-1:-1;;;;;30179:2:1;30171:6;30168:14;30165:34;;;30195:1;30192;30185:12;30165:34;30233:6;30222:9;30218:22;30208:32;;30278:7;30271:4;30267:2;30263:13;30259:27;30249:55;;30300:1;30297;30290:12;30249:55;30329:2;30323:9;30352:60;30368:43;30408:2;30368:43;:::i;30352:60::-;30446:15;;;30528:1;30524:10;;;;30516:19;;30512:28;;;30477:12;;;;30552:19;;;30549:39;;;30584:1;30581;30574:12;30549:39;30616:2;30612;30608:11;30628:1115;30644:6;30639:3;30636:15;30628:1115;;;30723:3;30717:10;30759:2;30746:11;30743:19;30740:109;;;30803:1;30832:2;30828;30821:14;30740:109;30872:20;;30915:4;30943:16;;;-1:-1:-1;;30939:30:1;30935:39;-1:-1:-1;30932:129:1;;;31015:1;31044:2;31040;31033:14;30932:129;31087:22;;:::i;:::-;31151:2;31147;31143:11;31137:18;31168:33;31193:7;31168:33;:::i;:::-;31214:22;;31259:2;31296:11;;;31290:18;31324:16;;;31321:109;;;31382:1;31412:3;31407;31400:16;31321:109;31466:65;31523:7;31518:2;31507:8;31503:2;31499:17;31495:26;31466:65;:::i;:::-;31450:14;;;31443:89;-1:-1:-1;31556:2:1;31600:12;;;31594:19;31578:14;;;31571:43;;;;31657:11;;;;31651:18;31634:15;;;31627:43;31683:18;;31721:12;;;;30661;;30628:1115;;;-1:-1:-1;31762:5:1;29856:1917;-1:-1:-1;;;;;;;;29856:1917:1:o;31778:762::-;32143:2;32132:9;32125:21;32106:4;32169:77;32242:2;32231:9;32227:18;32219:6;32211;32169:77;:::i;:::-;32294:9;32286:6;32282:22;32277:2;32266:9;32262:18;32255:50;32328:65;32386:6;32378;32370;32328:65;:::i;:::-;32314:79;;32441:9;32433:6;32429:22;32424:2;32413:9;32409:18;32402:50;32469:65;32527:6;32519;32511;32469:65;:::i;:::-;32461:73;31778:762;-1:-1:-1;;;;;;;;;31778:762:1:o;32545:217::-;32585:1;32611;32601:132;;32655:10;32650:3;32646:20;32643:1;32636:31;32690:4;32687:1;32680:15;32718:4;32715:1;32708:15;32601:132;-1:-1:-1;32747:9:1;;32545:217::o;32767:659::-;32832:5;32885:3;32878:4;32870:6;32866:17;32862:27;32852:55;;32903:1;32900;32893:12;32852:55;32932:6;32926:13;32958:4;32982:60;32998:43;33038:2;32998:43;:::i;32982:60::-;33076:15;;;33162:1;33158:10;;;;33146:23;;33142:32;;;33107:12;;;;33186:15;;;33183:35;;;33214:1;33211;33204:12;33183:35;33250:2;33242:6;33238:15;33262:135;33278:6;33273:3;33270:15;33262:135;;;33344:10;;33332:23;;33375:12;;;;33295;;33262:135;;33431:680;33527:6;33580:2;33568:9;33559:7;33555:23;33551:32;33548:52;;;33596:1;33593;33586:12;33548:52;33629:9;33623:16;-1:-1:-1;;;;;33699:2:1;33691:6;33688:14;33685:34;;;33715:1;33712;33705:12;33685:34;33738:22;;;;33794:4;33776:16;;;33772:27;33769:47;;;33812:1;33809;33802:12;33769:47;33838:22;;:::i;:::-;33889:2;33883:9;33876:5;33869:24;33932:2;33928;33924:11;33918:18;33961:2;33951:8;33948:16;33945:36;;;33977:1;33974;33967:12;33945:36;34013:67;34072:7;34061:8;34057:2;34053:17;34013:67;:::i;:::-;34008:2;33997:14;;33990:91;-1:-1:-1;34001:5:1;33431:680;-1:-1:-1;;;;;33431:680:1:o;34116:363::-;34211:6;34264:2;34252:9;34243:7;34239:23;34235:32;34232:52;;;34280:1;34277;34270:12;34232:52;34313:9;34307:16;-1:-1:-1;;;;;34338:6:1;34335:30;34332:50;;;34378:1;34375;34368:12;34332:50;34401:72;34465:7;34456:6;34445:9;34441:22;34401:72;:::i;34484:237::-;34556:9;;;34523:7;34581:9;;-1:-1:-1;;;34592:18:1;;34577:34;34574:60;;;34614:18;;:::i;:::-;34687:1;34678:7;34673:16;34670:1;34667:23;34663:1;34656:9;34653:38;34643:72;;34695:18;;:::i;34726:216::-;34790:9;;;34818:11;;;34765:3;34848:9;;34876:10;;34872:19;;34901:10;;34893:19;;34869:44;34866:70;;;34916:18;;:::i;:::-;34866:70;;34726:216;;;;:::o;34947:549::-;35010:3;35048:5;35042:12;35075:6;35070:3;35063:19;35101:4;35130:2;35125:3;35121:12;35114:19;;35167:2;35160:5;35156:14;35188:1;35198:273;35212:6;35209:1;35206:13;35198:273;;;35271:13;;35313:9;;35324:10;35309:26;35297:39;;35376:11;;35370:18;35356:12;;;35349:40;35418:4;35409:14;;;;35446:15;;;;35234:1;35227:9;35198:273;;35501:424;-1:-1:-1;;;;;35764:32:1;;35746:51;;35833:2;35828;35813:18;;35806:30;;;-1:-1:-1;;35853:66:1;;35900:18;;35892:6;35853:66;:::i;36508:1005::-;36649:6;36657;36665;36673;36681;36689;36697;36750:3;36738:9;36729:7;36725:23;36721:33;36718:53;;;36767:1;36764;36757:12;36718:53;36799:9;36793:16;36818:31;36843:5;36818:31;:::i;:::-;36917:2;36902:18;;36896:25;36868:5;;-1:-1:-1;;;;;;36970:14:1;;;36967:34;;;36997:1;36994;36987:12;36967:34;37020:61;37073:7;37064:6;37053:9;37049:22;37020:61;:::i;:::-;37010:71;;37127:2;37116:9;37112:18;37106:25;37090:41;;37156:2;37146:8;37143:16;37140:36;;;37172:1;37169;37162:12;37140:36;;37195:63;37250:7;37239:8;37228:9;37224:24;37195:63;:::i;:::-;37185:73;;;37298:2;37287:9;37283:18;37277:25;37267:35;;37342:3;37331:9;37327:19;37321:26;37311:36;;37387:3;37376:9;37372:19;37366:26;37356:36;;37437:3;37426:9;37422:19;37416:26;37451:30;37473:7;37451:30;:::i;:::-;37500:7;37490:17;;;36508:1005;;;;;;;;;;:::o;37518:1181::-;37643:6;37674:2;37717;37705:9;37696:7;37692:23;37688:32;37685:52;;;37733:1;37730;37723:12;37685:52;37766:9;37760:16;-1:-1:-1;;;;;37791:6:1;37788:30;37785:50;;;37831:1;37828;37821:12;37785:50;37854:22;;37907:4;37899:13;;37895:27;-1:-1:-1;37885:55:1;;37936:1;37933;37926:12;37885:55;37965:2;37959:9;37988:60;38004:43;38044:2;38004:43;:::i;37988:60::-;38082:15;;;38164:1;38160:10;;;;38152:19;;38148:28;;;38113:12;;;;38188:19;;;38185:39;;;38220:1;38217;38210:12;38185:39;38244:11;;;;38264:405;38280:6;38275:3;38272:15;38264:405;;;38362:4;38356:3;38347:7;38343:17;38339:28;38336:118;;;38408:1;38437:2;38433;38426:14;38336:118;38480:22;;:::i;:::-;38529:10;;38515:25;;38582:12;;;38576:19;38560:14;;;38553:43;38609:18;;38306:4;38297:14;;;;38647:12;;;;38264:405;;38704:1044;39018:4;39064:1;39060;39055:3;39051:11;39047:19;39105:2;39097:6;39093:15;39082:9;39075:34;39128:2;39166;39161;39150:9;39146:18;39139:30;39192:66;39254:2;39243:9;39239:18;39231:6;39192:66;:::i;:::-;39294:22;;;39289:2;39274:18;;39267:50;39352:22;;;39428:6;;39390:15;;39452:1;39462:260;39476:6;39473:1;39470:13;39462:260;;;39551:6;39538:20;39571:31;39596:5;39571:31;:::i;:::-;39627:14;;39615:27;;39697:15;;;;39662:12;;;;39498:1;39491:9;39462:260;;;-1:-1:-1;39739:3:1;38704:1044;-1:-1:-1;;;;;;;;;38704:1044:1:o;39753:261::-;39823:3;-1:-1:-1;;;;;39844:31:1;;39841:51;;;39888:1;39885;39878:12;39841:51;39924:6;39921:1;39917:14;39965:8;39958:5;39953:3;39940:34;39990:18;;;;;39753:261;-1:-1:-1;;;39753:261:1:o;40019:468::-;40336:6;40331:3;40324:19;40306:3;40359:122;40413:67;40476:2;40471:3;40467:12;40459:6;40451;40413:67;:::i;:::-;40405:6;40397;40359:122;:::i;40492:136::-;40531:3;40559:5;40549:39;;40568:18;;:::i;:::-;-1:-1:-1;;;40604:18:1;;40492:136::o;41036:168::-;41109:9;;;41140;;41157:15;;;41151:22;;41137:37;41127:71;;41178:18;;:::i;41209:172::-;41276:10;41306;;;41318;;;41302:27;;41341:11;;;41338:37;;;41355:18;;:::i;:::-;41338:37;41209:172;;;;:::o;41828:127::-;41889:10;41884:3;41880:20;41877:1;41870:31;41920:4;41917:1;41910:15;41944:4;41941:1;41934:15
Swarm Source
ipfs://b2d8e7e1ed2126defb28a04a260c24a753558eacd14b346029732c5a3e041e2b
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 30 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|---|---|---|---|---|
AVAX | Avalanche (AVAX) | 100.00% | $51.97 | 57.7331 | $3,000.31 |
[ 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.