Files
cuna/artifacts/contracts/CunaFinanceBsc.sol/CunaFinanceBsc.json
sascha 8a802718d3 Initial commit: CunaFinanceBsc smart contract
- Add upgradeable smart contract with vesting and staking functionality
- Include comprehensive deployment script for proxy deployments and upgrades
- Configure Hardhat with BSC testnet and verification support
- Successfully deployed to BSC testnet at 0x12d705781764b7750d5622727EdA2392b512Ca3d

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-09-10 02:15:20 +02:00

2128 lines
139 KiB
JSON

{
"_format": "hh-sol-artifact-1",
"contractName": "CunaFinanceBsc",
"sourceName": "contracts/CunaFinanceBsc.sol",
"abi": [
{
"inputs": [],
"stateMutability": "nonpayable",
"type": "constructor"
},
{
"inputs": [],
"name": "InvalidInitialization",
"type": "error"
},
{
"inputs": [],
"name": "NotInitializing",
"type": "error"
},
{
"inputs": [],
"name": "ReentrancyGuardReentrantCall",
"type": "error"
},
{
"inputs": [
{
"internalType": "address",
"name": "token",
"type": "address"
}
],
"name": "SafeERC20FailedOperation",
"type": "error"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "user",
"type": "address"
},
{
"indexed": false,
"internalType": "uint256",
"name": "bonus",
"type": "uint256"
}
],
"name": "BonusClaimed",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "seller",
"type": "address"
},
{
"indexed": false,
"internalType": "uint256",
"name": "fee",
"type": "uint256"
},
{
"indexed": false,
"internalType": "uint256",
"name": "stakeId",
"type": "uint256"
}
],
"name": "CancellationFeePaid",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "uint256",
"name": "epochId",
"type": "uint256"
},
{
"indexed": false,
"internalType": "uint256",
"name": "treasuryTvl",
"type": "uint256"
},
{
"indexed": false,
"internalType": "uint256",
"name": "unlockPercentage",
"type": "uint256"
},
{
"indexed": false,
"internalType": "uint256",
"name": "paybackPercent",
"type": "uint256"
}
],
"name": "EpochEnded",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "user",
"type": "address"
},
{
"indexed": false,
"internalType": "uint256",
"name": "amount",
"type": "uint256"
}
],
"name": "FundsClaimed",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "owner",
"type": "address"
},
{
"indexed": true,
"internalType": "address",
"name": "token",
"type": "address"
},
{
"indexed": false,
"internalType": "uint256",
"name": "amount",
"type": "uint256"
}
],
"name": "FundsWithdrawn",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": false,
"internalType": "uint64",
"name": "version",
"type": "uint64"
}
],
"name": "Initialized",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "user",
"type": "address"
},
{
"indexed": false,
"internalType": "uint256",
"name": "amount",
"type": "uint256"
}
],
"name": "StakeCreated",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "seller",
"type": "address"
},
{
"indexed": false,
"internalType": "uint256",
"name": "stakeId",
"type": "uint256"
}
],
"name": "StakeSaleCancelled",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "seller",
"type": "address"
},
{
"indexed": true,
"internalType": "address",
"name": "buyer",
"type": "address"
},
{
"indexed": false,
"internalType": "uint256",
"name": "saleAmount",
"type": "uint256"
},
{
"indexed": false,
"internalType": "uint256",
"name": "stakeId",
"type": "uint256"
}
],
"name": "StakeSold",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "seller",
"type": "address"
},
{
"indexed": false,
"internalType": "uint256",
"name": "saleAmount",
"type": "uint256"
},
{
"indexed": false,
"internalType": "uint256",
"name": "stakeId",
"type": "uint256"
}
],
"name": "StakeUpForSale",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "user",
"type": "address"
},
{
"indexed": false,
"internalType": "uint256",
"name": "amount",
"type": "uint256"
},
{
"indexed": false,
"internalType": "uint256",
"name": "stakeId",
"type": "uint256"
}
],
"name": "StakeWithdrawn",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "token",
"type": "address"
}
],
"name": "UnlockScheduleSet",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "user",
"type": "address"
},
{
"indexed": false,
"internalType": "uint256",
"name": "amount",
"type": "uint256"
},
{
"indexed": false,
"internalType": "uint256",
"name": "bonus",
"type": "uint256"
}
],
"name": "VestingClaimed",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "user",
"type": "address"
},
{
"indexed": false,
"internalType": "uint256",
"name": "amount",
"type": "uint256"
},
{
"indexed": false,
"internalType": "uint256",
"name": "bonus",
"type": "uint256"
}
],
"name": "VestingCreated",
"type": "event"
},
{
"inputs": [
{
"internalType": "address",
"name": "bot",
"type": "address"
}
],
"name": "addBot",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "_newOwner",
"type": "address"
}
],
"name": "addOwner",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"name": "authorizedBots",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address[]",
"name": "users",
"type": "address[]"
},
{
"internalType": "uint256[]",
"name": "amounts",
"type": "uint256[]"
}
],
"name": "batchCreateUserStakes",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "seller",
"type": "address"
},
{
"internalType": "uint256",
"name": "stakeId",
"type": "uint256"
}
],
"name": "buySellStake",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "user",
"type": "address"
}
],
"name": "calculateUnclaimedFunds",
"outputs": [
{
"internalType": "uint256",
"name": "totalUnclaimed",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "stakeId",
"type": "uint256"
}
],
"name": "cancelSellStake",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [],
"name": "cancellationFee",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "_token",
"type": "address"
}
],
"name": "claimAllVestingByToken",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "_vestingIndex",
"type": "uint256"
}
],
"name": "claimBonus",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [],
"name": "claimUnlockedFunds",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "_vestingIndex",
"type": "uint256"
}
],
"name": "claimVesting",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "user",
"type": "address"
}
],
"name": "clearVesting",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "user",
"type": "address"
},
{
"internalType": "uint256",
"name": "amount",
"type": "uint256"
}
],
"name": "createUserStake",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "user",
"type": "address"
},
{
"internalType": "uint256",
"name": "amount",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "bonus",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "lockedUntil",
"type": "uint256"
},
{
"internalType": "address",
"name": "token",
"type": "address"
},
{
"internalType": "uint256",
"name": "usdAmount",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "lastClaimed",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "createdAt",
"type": "uint256"
}
],
"name": "createVesting",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "user",
"type": "address"
},
{
"internalType": "uint256",
"name": "amount",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "bonus",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "lockedUntil",
"type": "uint256"
},
{
"internalType": "address",
"name": "token",
"type": "address"
},
{
"internalType": "uint256",
"name": "usdAmount",
"type": "uint256"
}
],
"name": "createVesting",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [],
"name": "currentEpochId",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "_amount",
"type": "uint256"
}
],
"name": "depositRewards",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"name": "dollarsVested",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "estDaysRemaining",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "currentTreasuryTvl",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "_paybackPercent",
"type": "uint256"
}
],
"name": "endEpoch",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"name": "epochs",
"outputs": [
{
"internalType": "uint256",
"name": "estDaysRemaining",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "currentTreasuryTvl",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "totalLiability",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "unlockPercentage",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "timestamp",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "getAllSellStakes",
"outputs": [
{
"internalType": "address[]",
"name": "sellers",
"type": "address[]"
},
{
"internalType": "uint256[]",
"name": "stakeIds",
"type": "uint256[]"
},
{
"components": [
{
"internalType": "uint256",
"name": "value",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "salePrice",
"type": "uint256"
},
{
"internalType": "address",
"name": "seller",
"type": "address"
},
{
"internalType": "uint256",
"name": "listTime",
"type": "uint256"
}
],
"internalType": "struct CunaFinanceBsc.SellStake[]",
"name": "sellStakeData",
"type": "tuple[]"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "user",
"type": "address"
}
],
"name": "getAllWithdrawStakes",
"outputs": [
{
"components": [
{
"internalType": "uint256",
"name": "stakeId",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "amount",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "unlockTime",
"type": "uint256"
}
],
"internalType": "struct CunaFinanceBsc.WithdrawStake[]",
"name": "",
"type": "tuple[]"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "user",
"type": "address"
}
],
"name": "getAllWithdrawVestings",
"outputs": [
{
"components": [
{
"internalType": "uint256",
"name": "vestingId",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "amount",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "unlockTime",
"type": "uint256"
},
{
"internalType": "address",
"name": "token",
"type": "address"
}
],
"internalType": "struct CunaFinanceBsc.WithdrawVesting[]",
"name": "",
"type": "tuple[]"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "epochId",
"type": "uint256"
}
],
"name": "getEpoch",
"outputs": [
{
"components": [
{
"internalType": "uint256",
"name": "estDaysRemaining",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "currentTreasuryTvl",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "totalLiability",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "unlockPercentage",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "timestamp",
"type": "uint256"
}
],
"internalType": "struct CunaFinanceBsc.Epoch",
"name": "",
"type": "tuple"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "startId",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "endId",
"type": "uint256"
}
],
"name": "getEpochs",
"outputs": [
{
"components": [
{
"internalType": "uint256",
"name": "estDaysRemaining",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "currentTreasuryTvl",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "totalLiability",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "unlockPercentage",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "timestamp",
"type": "uint256"
}
],
"internalType": "struct CunaFinanceBsc.Epoch[]",
"name": "",
"type": "tuple[]"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "startIndex",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "length",
"type": "uint256"
}
],
"name": "getMarketplaceHistory",
"outputs": [
{
"components": [
{
"internalType": "uint256",
"name": "listTime",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "saleTime",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "origValue",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "saleValue",
"type": "uint256"
},
{
"internalType": "address",
"name": "seller",
"type": "address"
},
{
"internalType": "address",
"name": "buyer",
"type": "address"
}
],
"internalType": "struct CunaFinanceBsc.MarketplaceHistory[]",
"name": "",
"type": "tuple[]"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "getMarketplaceHistoryCount",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "user",
"type": "address"
}
],
"name": "getNetStake",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "seller",
"type": "address"
},
{
"internalType": "uint256",
"name": "stakeId",
"type": "uint256"
}
],
"name": "getSellStake",
"outputs": [
{
"components": [
{
"internalType": "uint256",
"name": "value",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "salePrice",
"type": "uint256"
},
{
"internalType": "address",
"name": "seller",
"type": "address"
},
{
"internalType": "uint256",
"name": "listTime",
"type": "uint256"
}
],
"internalType": "struct CunaFinanceBsc.SellStake",
"name": "",
"type": "tuple"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "user",
"type": "address"
}
],
"name": "getUnclaimedFundsBreakdown",
"outputs": [
{
"internalType": "uint256[]",
"name": "epochIds",
"type": "uint256[]"
},
{
"internalType": "uint256[]",
"name": "amounts",
"type": "uint256[]"
},
{
"internalType": "uint256",
"name": "totalUnclaimed",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "_user",
"type": "address"
},
{
"internalType": "uint256",
"name": "_vestingIndex",
"type": "uint256"
}
],
"name": "getUnlockedVesting",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "_user",
"type": "address"
},
{
"internalType": "uint256",
"name": "_vestingIndex",
"type": "uint256"
}
],
"name": "getUnlockedVestingBonus",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "user",
"type": "address"
}
],
"name": "getUserMarketplaceSales",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "user",
"type": "address"
}
],
"name": "getUserStakeInfo",
"outputs": [
{
"internalType": "uint256",
"name": "netStake",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "unclaimedFunds",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "totalOriginalStake",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "user",
"type": "address"
}
],
"name": "getUserTotalUnclaimedUsdValue",
"outputs": [
{
"internalType": "uint256",
"name": "totalUsd",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address[]",
"name": "_tokens",
"type": "address[]"
}
],
"name": "getVestedTotals",
"outputs": [
{
"internalType": "uint256[]",
"name": "amounts",
"type": "uint256[]"
},
{
"internalType": "uint256[]",
"name": "usdValues",
"type": "uint256[]"
},
{
"internalType": "uint256",
"name": "totalUsd",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "_user",
"type": "address"
},
{
"internalType": "uint256",
"name": "_vestingIndex",
"type": "uint256"
}
],
"name": "getVestingSchedule",
"outputs": [
{
"internalType": "uint256[]",
"name": "",
"type": "uint256[]"
},
{
"internalType": "uint256[]",
"name": "",
"type": "uint256[]"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "user",
"type": "address"
}
],
"name": "getVestings",
"outputs": [
{
"components": [
{
"internalType": "uint256",
"name": "amount",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "bonus",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "lockedUntil",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "claimedAmount",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "claimedBonus",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "lastClaimed",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "createdAt",
"type": "uint256"
},
{
"internalType": "address",
"name": "token",
"type": "address"
},
{
"internalType": "bool",
"name": "complete",
"type": "bool"
},
{
"internalType": "uint256",
"name": "usdAmount",
"type": "uint256"
}
],
"internalType": "struct CunaFinanceBsc.Vesting[]",
"name": "",
"type": "tuple[]"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "user",
"type": "address"
},
{
"internalType": "uint256",
"name": "stakeId",
"type": "uint256"
}
],
"name": "getWithdrawStake",
"outputs": [
{
"components": [
{
"internalType": "uint256",
"name": "stakeId",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "amount",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "unlockTime",
"type": "uint256"
}
],
"internalType": "struct CunaFinanceBsc.WithdrawStake",
"name": "",
"type": "tuple"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "getWithdrawVestingCounter",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "initialize",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "amount",
"type": "uint256"
}
],
"name": "instantBuyout",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [],
"name": "instantBuyoutPercent",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "lockupDuration",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"name": "marketplaceHistory",
"outputs": [
{
"internalType": "uint256",
"name": "listTime",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "saleTime",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "origValue",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "saleValue",
"type": "uint256"
},
{
"internalType": "address",
"name": "seller",
"type": "address"
},
{
"internalType": "address",
"name": "buyer",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "marketplaceMin",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"name": "marketplace_sales",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "owner",
"outputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"name": "owners",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"name": "priceOracles",
"outputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "_owner",
"type": "address"
}
],
"name": "removeOwner",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "value",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "salePrice",
"type": "uint256"
}
],
"name": "sellStake",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"name": "sellStakeKeys",
"outputs": [
{
"internalType": "address",
"name": "seller",
"type": "address"
},
{
"internalType": "uint256",
"name": "stakeId",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "",
"type": "address"
},
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"name": "sellStakes",
"outputs": [
{
"internalType": "uint256",
"name": "value",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "salePrice",
"type": "uint256"
},
{
"internalType": "address",
"name": "seller",
"type": "address"
},
{
"internalType": "uint256",
"name": "listTime",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "_token",
"type": "address"
},
{
"internalType": "address",
"name": "_oracle",
"type": "address"
}
],
"name": "setPriceOracle",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "_token",
"type": "address"
},
{
"internalType": "uint256",
"name": "_lockTime",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "_percentagePerStep",
"type": "uint256"
}
],
"name": "setUnlockScheduleByPercentage",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [],
"name": "testUpgradeFunction",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "pure",
"type": "function"
},
{
"inputs": [],
"name": "totalBigStakes",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "unlockDelay",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "",
"type": "address"
},
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"name": "unlockSchedules",
"outputs": [
{
"internalType": "uint256",
"name": "timeOffset",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "percentage",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "_newFee",
"type": "uint256"
}
],
"name": "updateCancellationFee",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "_newPercent",
"type": "uint256"
}
],
"name": "updateInstantBuyoutPercent",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "_duration",
"type": "uint256"
}
],
"name": "updateLockupDuration",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "_newMin",
"type": "uint256"
}
],
"name": "updateMarketplaceMin",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "stakeId",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "newSalePrice",
"type": "uint256"
}
],
"name": "updateSellStake",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "_delay",
"type": "uint256"
}
],
"name": "updateUnlockDelay",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"name": "userBigStake",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"name": "userLastClaimedEpoch",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"name": "vestedTotal",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "",
"type": "address"
},
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"name": "vestings",
"outputs": [
{
"internalType": "uint256",
"name": "amount",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "bonus",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "lockedUntil",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "claimedAmount",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "claimedBonus",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "lastClaimed",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "createdAt",
"type": "uint256"
},
{
"internalType": "address",
"name": "token",
"type": "address"
},
{
"internalType": "bool",
"name": "complete",
"type": "bool"
},
{
"internalType": "uint256",
"name": "usdAmount",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "_amount",
"type": "uint256"
}
],
"name": "withdrawFromStakingPool",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "_token",
"type": "address"
},
{
"internalType": "uint256",
"name": "_amount",
"type": "uint256"
}
],
"name": "withdrawFromVestingPool",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "stakeId",
"type": "uint256"
}
],
"name": "withdrawStake",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "",
"type": "address"
},
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"name": "withdrawStakes",
"outputs": [
{
"internalType": "uint256",
"name": "stakeId",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "amount",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "unlockTime",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"name": "withdrawVestingLiabilities",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "_vestingId",
"type": "uint256"
}
],
"name": "withdrawVestingToken",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
}
],
"bytecode": "0x60806040523480156200001157600080fd5b506200001c62000022565b620000d6565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff1615620000735760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b0390811614620000d35780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b615d1f80620000e66000396000f3fe608060405234801561001057600080fd5b506004361061045e5760003560e01c80638129fc1c1161024c578063bed9757e11610146578063da1b4364116100c3578063f109208f11610087578063f109208f14610c3f578063f2bb563014610c52578063f7e4444c14610c65578063fe2f50d014610c78578063ffecf51614610c8157600080fd5b8063da1b436414610be8578063e079fd9114610c08578063e88f8e6614610c10578063eacdc5ff14610c23578063eb44e0a314610c2c57600080fd5b8063c7b530b01161010a578063c7b530b014610b6f578063cc573a9114610b8f578063ce13d09014610ba2578063cfcf331914610bb5578063d919302514610bd557600080fd5b8063bed9757e14610aa0578063c267660314610ac1578063c32d3ae214610ac9578063c36d03fd14610af7578063c6b61e4c14610b0a57600080fd5b806396fd111a116101d4578063ac97b41711610198578063ac97b417146109d2578063b6c3dc4c146109e5578063b92a349f14610a05578063bc0bc6ba14610a18578063bd84477d14610a3857600080fd5b806396fd111a146109205780639cb6f556146109405780639f3a676c14610953578063a0d467581461099f578063aaf4b04d146109bf57600080fd5b80638bdf67f21161021b5780638bdf67f2146108b45780638da5cb5b146108c75780638f82818f146108da5780639437e32e146108fa578063953d16bf1461090d57600080fd5b80638129fc1c14610866578063853e0df21461086e57806387b4b105146108815780638851ec0f146108a157600080fd5b806343c7c0111161035d57806362cd6a09116102e55780637a0c6dc0116102a95780637a0c6dc0146107d75780637bc221ac146107f75780637d08af971461080a5780637e6d99261461082a57806380ca0ecf1461085357600080fd5b806362cd6a091461077e57806367a74ddc146107955780636ef569a5146107a85780637065cb48146107b157806374d1c8e3146107c457600080fd5b806351f6cf2f1161032c57806351f6cf2f14610708578063549e61d3146107305780635811622714610743578063592d1dd11461075657806361d1080b1461077657600080fd5b806343c7c0111461069d578063441a4175146106b057806348ea286d146106e257806351e62472146106f557600080fd5b8063173825d9116103eb5780632ded58aa116103af5780632ded58aa146105c15780633ba8396e146105ca5780633c92f98d146105ed5780633f35e7221461060f57806343a32f891461062257600080fd5b8063173825d91461056c5780631ada70a81461057f5780631aefa2d1146105885780631eb9e53e1461059b57806325d5971f146105ae57600080fd5b8063092c761011610432578063092c7610146105065780630a84096a146105265780630a910a6d146105395780630c7d63861461054257806313baee5b1461054c57600080fd5b8062159da6146104635780630137451814610489578063022914a7146104ca5780630519da32146104fd575b600080fd5b610476610471366004615402565b610c94565b6040519081526020015b60405180910390f35b6104b2610497366004615402565b6005602052600090815260409020546001600160a01b031681565b6040516001600160a01b039091168152602001610480565b6104ed6104d8366004615402565b60016020526000908152604090205460ff1681565b6040519015158152602001610480565b61047660095481565b610476610514366004615402565b60076020526000908152604090205481565b610476610534366004615424565b610d2a565b61047660145481565b61054a610e62565b005b61047661055a366004615402565b600f6020526000908152604090205481565b61054a61057a366004615402565b610fa4565b61047660085481565b61054a61059636600461544e565b611095565b6104766105a9366004615402565b6110c9565b61054a6105bc36600461544e565b611100565b61047660135481565b6104ed6105d8366004615402565b60026020526000908152604090205460ff1681565b6106006105fb3660046154ab565b6112c0565b60405161048093929190615527565b61054a61061d366004615424565b6114ae565b61066e610630366004615424565b60156020908152600092835260408084209091529082529020805460018201546002830154600390930154919290916001600160a01b039091169084565b604051610480949392919093845260208401929092526001600160a01b03166040830152606082015260800190565b61054a6106ab366004615402565b611535565b6106c36106be36600461544e565b6118bb565b604080516001600160a01b039093168352602083019190915201610480565b61054a6106f0366004615402565b6118f3565b61054a61070336600461544e565b611a87565b61071b610716366004615424565b611abb565b60408051928352602083019190915201610480565b61054a61073e36600461555d565b611af7565b61054a6107513660046155c8565b611dc0565b610476610764366004615402565b60066020526000908152604090205481565b601b54610476565b6107866120b0565b604051610480939291906155ea565b61054a6107a33660046156b3565b612303565b61047660175481565b61054a6107bf366004615402565b612360565b61054a6107d23660046156e6565b612435565b6107ea6107e5366004615402565b612618565b6040516104809190615751565b610476610805366004615402565b6126ff565b61081d610818366004615402565b6128d2565b60405161048091906157ff565b610476610838366004615402565b6001600160a01b031660009081526018602052604090205490565b610476610861366004615424565b612967565b61054a612a73565b61054a61087c36600461544e565b612ca9565b61047661088f366004615402565b600d6020526000908152604090205481565b61054a6108af36600461585f565b612d45565b61054a6108c236600461544e565b612e78565b6000546104b2906001600160a01b031681565b6104766108e8366004615402565b60186020526000908152604090205481565b61054a61090836600461588b565b612ec7565b61054a61091b36600461544e565b612f0e565b61093361092e3660046155c8565b6131f8565b60405161048091906158e3565b61054a61094e36600461544e565b6133b7565b61096661096136600461544e565b6135a9565b6040805196875260208701959095529385019290925260608401526001600160a01b0390811660808401521660a082015260c001610480565b6109b26109ad366004615424565b6135fc565b604051610480919061595c565b61054a6109cd36600461544e565b61368c565b61054a6109e036600461544e565b613712565b6109f86109f3366004615424565b613b23565b6040516104809190615990565b61054a610a133660046159b1565b613bf8565b610a2b610a2636600461544e565b613dc1565b60405161048091906159e4565b610a4b610a46366004615424565b613e85565b604080519a8b5260208b0199909952978901969096526060880194909452608087019290925260a086015260c08501526001600160a01b031660e0840152151561010083015261012082015261014001610480565b610ab3610aae366004615424565b613f03565b604051610480929190615a1d565b6103e7610476565b610adc610ad7366004615402565b6140a9565b60408051938452602084019290925290820152606001610480565b61054a610b0536600461544e565b614108565b610b47610b1836600461544e565b600e60205260009081526040902080546001820154600283015460038401546004909401549293919290919085565b604080519586526020860194909452928401919091526060830152608082015260a001610480565b610b82610b7d366004615402565b61413c565b6040516104809190615a42565b610adc610b9d366004615424565b6141c4565b61054a610bb036600461544e565b614206565b610bc8610bc33660046155c8565b61423a565b6040516104809190615a98565b61054a610be336600461544e565b614407565b610476610bf6366004615402565b60106020526000908152604090205481565b600b54610476565b610600610c1e366004615402565b6145e1565b61047660125481565b61054a610c3a366004615424565b6147bb565b61054a610c4d366004615424565b614ccf565b61054a610c603660046155c8565b614dd1565b61054a610c7336600461544e565b614ee2565b61047660165481565b61054a610c8f366004615402565b6150b9565b6001600160a01b0381166000908152600f60209081526040808320546010909252822054805b601254811015610d22578215610d10576000818152600e602052604081206003015461271090610cea9086615b28565b610cf49190615b3f565b9050610d008186615b61565b9450610d0c8185615b74565b9350505b80610d1a81615b87565b915050610cba565b505050919050565b6001600160a01b0382166000908152600360205260408120805482919084908110610d5757610d57615ba0565b906000526020600020906009020190506000816006015442610d799190615b74565b60078301549091506001600160a01b03166000805b6001600160a01b038316600090815260046020526040902054811015610e55576001600160a01b0383166000908152600460205260408120805483908110610dd857610dd8615ba0565b6000918252602082206002909102018054600182015460088a015492945090929091606490610e0990600a90615b28565b610e139190615b3f565b9050828810610e4057612710610e298383615b28565b610e339190615b3f565b610e3d9087615b61565b95505b5050505080610e4e90615b87565b9050610d8e565b5093505050505b92915050565b610e6a615132565b6000610e7533610c94565b905060008111610ea05760405162461bcd60e51b8152600401610e9790615bb6565b60405180910390fd5b336000908152600f602052604081208054839290610ebf908490615b74565b925050819055508060136000828254610ed89190615b74565b90915550506012543360009081526010602090815260408083209390935560118152908290208251606081018452428082529281018590526009549193909290830191610f2491615b61565b90528154600180820184556000938452602093849020835160039093020191825582840151908201556040918201516002909101555182815233917fa65a8b4f7f65a1063243d7f7e9e4da00ff767599acf21549ef2548a45d1695ae910160405180910390a250610fa26001600080516020615cca83398151915255565b565b3360009081526001602052604090205460ff16610fd35760405162461bcd60e51b8152600401610e9790615be0565b6001600160a01b03811660009081526001602052604090205460ff166110275760405162461bcd60e51b81526020600482015260096024820152682737ba1037bbb732b960b91b6044820152606401610e97565b336001600160a01b038216036110745760405162461bcd60e51b815260206004820152601260248201527121b0b73737ba103932b6b7bb329039b2b63360711b6044820152606401610e97565b6001600160a01b03166000908152600160205260409020805460ff19169055565b3360009081526001602052604090205460ff166110c45760405162461bcd60e51b8152600401610e9790615be0565b601755565b6001600160a01b0381166000908152600f6020526040812054816110ec84610c94565b90506110f88183615b74565b949350505050565b611108615132565b336000908152601160205260409020805461115b5760405162461bcd60e51b81526020600482015260136024820152724e6f207374616b657320617661696c61626c6560681b6044820152606401610e97565b60005b815481101561126b57600082828154811061117b5761117b615ba0565b906000526020600020906003020190508381600001541480156111a2575060008160010154115b156112585780600201544210156111ea5760405162461bcd60e51b815260206004820152600c60248201526b14dd185ad9481b1bd8dad95960a21b6044820152606401610e97565b60018101805460009091556112147355d398326f99059ff775485246999027b3197955338361517e565b604080518281526020810187905233917f933735aa8de6d7547d0126171b2f31b9c34dd00f3ecd4be85a0ba047db4fafef910160405180910390a2505050506112a6565b508061126381615b87565b91505061115e565b5060405162461bcd60e51b815260206004820152600f60248201526e14dd185ad9481b9bdd08199bdd5b99608a1b6044820152606401610e97565b6112bd6001600080516020615cca83398151915255565b50565b606080600083806001600160401b038111156112de576112de615c08565b604051908082528060200260200182016040528015611307578160200160208202803683370190505b509350806001600160401b0381111561132257611322615c08565b60405190808252806020026020018201604052801561134b578160200160208202803683370190505b50925060005b818110156114a557600087878381811061136d5761136d615ba0565b90506020020160208101906113829190615402565b6001600160a01b03811660009081526007602052604090205487519192509081908890859081106113b5576113b5615ba0565b6020908102919091018101919091526001600160a01b038381166000818152600590935260408084205490516302c68be360e31b81526004810192909252909116906316345f1890602401602060405180830381865afa15801561141d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114419190615c1e565b90506000670de0b6b3a76400006114588484615b28565b6114629190615b3f565b90508088868151811061147757611477615ba0565b602090810291909101015261148c8188615b61565b965050505050808061149d90615b87565b915050611351565b50509250925092565b3360009081526001602052604090205460ff166114dd5760405162461bcd60e51b8152600401610e9790615be0565b6114f16001600160a01b038316338361517e565b6040518181526001600160a01b0383169033907fa92ff919b850e4909ab2261d907ef955f11bc1716733a6cbece38d163a69af8a9060200160405180910390a35050565b61153d615132565b6000805b336000908152600360205260409020548110156116485733600090815260036020526040812080548390811061157957611579615ba0565b6000918252602090912060099091020160078101549091506001600160a01b0385811691161480156115b757506007810154600160a01b900460ff16155b156116355760006115c83384612967565b905081600301548111156116335760008260030154826115e89190615b74565b90506115f48186615b61565b94508083600301600082825461160a9190615b61565b909155505082546003840154106116315760078301805460ff60a01b1916600160a01b1790555b505b505b508061164081615b87565b915050611541565b50600081116116695760405162461bcd60e51b8152600401610e9790615bb6565b3360009081526006602052604090205415611772576001600160a01b038281166000818152600560205260408082205490516302c68be360e31b815260048101939093529092670de0b6b3a7640000928592909116906316345f1890602401602060405180830381865afa1580156116e5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117099190615c1e565b6117139190615b28565b61171d9190615b3f565b33600090815260066020526040902054909150811061174b5733600090815260066020526040812055611770565b336000908152600660205260408120805483929061176a908490615b74565b90915550505b505b6001600160a01b0382166000908152600760205260408120805483929061179a908490615b74565b9091555050336000908152600a6020526040808220815160808101909252600b80549193839291906117cb83615b87565b919050558152602001838152602001600954426117e89190615b61565b81526001600160a01b0385811660209283018190528454600180820187556000968752848720865160049093020191825585850151908201556040808601516002830155606090950151600390910180546001600160a01b03191691909316179091558352600d905281208054839290611863908490615b61565b9091555050604080518281526000602082015233917f4a94c2c356e29a6583071e731bdacf2ca56565ba5efebcff6936eb7923b51721910160405180910390a2506112bd6001600080516020615cca83398151915255565b601981815481106118cb57600080fd5b6000918252602090912060029091020180546001909101546001600160a01b03909116915082565b3360009081526002602052604090205460ff166119225760405162461bcd60e51b8152600401610e9790615be0565b60005b6001600160a01b038216600090815260036020526040902054811015611a83576001600160a01b038216600090815260036020526040812080548390811061196f5761196f615ba0565b906000526020600020906009020190508060070160149054906101000a900460ff16611a475760088101546001600160a01b038416600090815260066020526040902054106119eb5760088101546001600160a01b038416600090815260066020526040812080549091906119e5908490615b74565b90915550505b80546007808301546001600160a01b03166000908152602091909152604090205410611a475780546007808301546001600160a01b03166000908152602091909152604081208054909190611a41908490615b74565b90915550505b600080825560018201819055600382018190556004820155600701805460ff60a01b1916600160a01b179055611a7c81615b87565b9050611925565b5050565b3360009081526001602052604090205460ff16611ab65760405162461bcd60e51b8152600401610e9790615be0565b601655565b60046020528160005260406000208181548110611ad757600080fd5b600091825260209091206002909102018054600190910154909250905082565b3360009081526002602052604090205460ff16611b265760405162461bcd60e51b8152600401610e9790615be0565b828114611b6d5760405162461bcd60e51b8152602060048201526015602482015274082e4e4c2f240d8cadccee8d040dad2e6dac2e8c6d605b1b6044820152606401610e97565b82611ba95760405162461bcd60e51b815260206004820152600c60248201526b456d7074792061727261797360a01b6044820152606401610e97565b6000805b84811015611da1576000868683818110611bc957611bc9615ba0565b9050602002016020810190611bde9190615402565b6001600160a01b031603611c045760405162461bcd60e51b8152600401610e9790615c37565b6000848483818110611c1857611c18615ba0565b9050602002013511611c3c5760405162461bcd60e51b8152600401610e9790615c60565b838382818110611c4e57611c4e615ba0565b90506020020135600f6000888885818110611c6b57611c6b615ba0565b9050602002016020810190611c809190615402565b6001600160a01b03168152602081019190915260400160002054611ca49084615b74565b611cae9190615b61565b9150838382818110611cc257611cc2615ba0565b90506020020135600f6000888885818110611cdf57611cdf615ba0565b9050602002016020810190611cf49190615402565b6001600160a01b03168152602081019190915260400160002055858582818110611d2057611d20615ba0565b9050602002016020810190611d359190615402565b6001600160a01b03167fec7e3594982826a1f90c8fc76513357b83a691b7f4e38b8be04f3d40f9b15839858584818110611d7157611d71615ba0565b90506020020135604051611d8791815260200190565b60405180910390a280611d9981615b87565b915050611bad565b508060136000828254611db49190615b61565b90915550505050505050565b611dc8615132565b60008211611e085760405162461bcd60e51b815260206004820152600d60248201526c496e76616c69642076616c756560981b6044820152606401610e97565b60008111611e4d5760405162461bcd60e51b8152602060048201526012602482015271496e76616c69642073616c6520707269636560701b6044820152606401610e97565b601654821015611e955760405162461bcd60e51b815260206004820152601360248201527256616c75652062656c6f77206d696e696d756d60681b6044820152606401610e97565b6000611ea0336110c9565b905080831115611eeb5760405162461bcd60e51b8152602060048201526016602482015275496e73756666696369656e74206e6574207374616b6560501b6044820152606401610e97565b600c8054906000611efb83615b87565b9091555050600c54336000908152600f602052604081208054869290611f22908490615b74565b925050819055508360136000828254611f3b9190615b74565b909155505060408051608081018252858152602080820186815233838501818152426060860190815260008381526015865287812089825286528781209651875593516001808801919091559151600280880180546001600160a01b039384166001600160a01b03199182161790915592516003909801979097558751808901909852928752938601878152601980548084018255948190529651939095027f944998273e477b495144fb8794c914197f3ccb46be2900f4698fd0ef743c969581018054949093169390941692909217905591517f944998273e477b495144fb8794c914197f3ccb46be2900f4698fd0ef743c96969091015590546120409190615b74565b336000818152601a6020908152604080832086845282529182902093909355805186815292830184905290917f8e79b7ba8dab5ebfa59b9c6af1743c3ef14863680b3cc5ac837f8d636f76031c910160405180910390a25050611a836001600080516020615cca83398151915255565b60195460609081908190806001600160401b038111156120d2576120d2615c08565b6040519080825280602002602001820160405280156120fb578160200160208202803683370190505b509350806001600160401b0381111561211657612116615c08565b60405190808252806020026020018201604052801561213f578160200160208202803683370190505b509250806001600160401b0381111561215a5761215a615c08565b6040519080825280602002602001820160405280156121bf57816020015b6121ac6040518060800160405280600081526020016000815260200160006001600160a01b03168152602001600081525090565b8152602001906001900390816121785790505b50915060005b818110156122fc576000601982815481106121e2576121e2615ba0565b60009182526020918290206040805180820190915260029092020180546001600160a01b031680835260019091015492820192909252875190925087908490811061222f5761222f615ba0565b60200260200101906001600160a01b031690816001600160a01b031681525050806020015185838151811061226657612266615ba0565b60209081029190910181019190915281516001600160a01b03908116600090815260158352604080822085850151835284529081902081516080810183528154815260018201549481019490945260028101549092169083015260030154606082015284518590849081106122dd576122dd615ba0565b60200260200101819052505080806122f490615b87565b9150506121c5565b5050909192565b3360009081526001602052604090205460ff166123325760405162461bcd60e51b8152600401610e9790615be0565b6001600160a01b03918216600090815260056020526040902080546001600160a01b03191691909216179055565b3360009081526001602052604090205460ff1661238f5760405162461bcd60e51b8152600401610e9790615be0565b6001600160a01b0381166123b55760405162461bcd60e51b8152600401610e9790615c37565b6001600160a01b03811660009081526001602052604090205460ff161561240e5760405162461bcd60e51b815260206004820152600d60248201526c20b63932b0b23c9037bbb732b960991b6044820152606401610e97565b6001600160a01b03166000908152600160208190526040909120805460ff19169091179055565b3360009081526002602052604090205460ff166124645760405162461bcd60e51b8152600401610e9790615be0565b60036000896001600160a01b03166001600160a01b031681526020019081526020016000206040518061014001604052808981526020018881526020018781526020016000815260200160008152602001848152602001838152602001866001600160a01b03168152602001600015158152602001858152509080600181540180825580915050600190039060005260206000209060090201600090919091909150600082015181600001556020820151816001015560408201518160020155606082015181600301556080820151816004015560a0820151816005015560c0820151816006015560e08201518160070160006101000a8154816001600160a01b0302191690836001600160a01b031602179055506101008201518160070160146101000a81548160ff0219169083151502179055506101208201518160080155505082600660008a6001600160a01b03166001600160a01b0316815260200190815260200160002060008282546125dc9190615b61565b90915550506001600160a01b03841660009081526007602052604081208054899290612609908490615b61565b90915550505050505050505050565b6001600160a01b0381166000908152600360209081526040808320805482518185028101850190935280835260609492939192909184015b828210156126f457600084815260209081902060408051610140810182526009860290920180548352600180820154848601526002820154928401929092526003810154606084015260048101546080840152600581015460a0840152600681015460c084015260078101546001600160a01b03811660e0850152600160a01b900460ff161515610100840152600801546101208301529083529092019101612650565b505050509050919050565b6001600160a01b038116600090815260036020526040812054815b818110156128cb576001600160a01b038416600090815260036020526040812080548390811061274c5761274c615ba0565b600091825260209182902060408051610140810182526009909302909101805483526001810154938301939093526002830154908201526003820154606082015260048201546080820152600582015460a0820152600682015460c082015260078201546001600160a01b03811660e083015260ff600160a01b909104161515610100820181905260089092015461012082015291506128b85760e0810180516001600160a01b0390811660009081526005602052604080822054935190516302c68be360e31b815290831660048201529092909116906316345f1890602401602060405180830381865afa158015612849573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061286d9190615c1e565b90506000826060015183600001516128859190615b74565b90506000670de0b6b3a764000061289c8385615b28565b6128a69190615b3f565b90506128b28188615b61565b96505050505b50806128c381615b87565b91505061271a565b5050919050565b6001600160a01b0381166000908152600a60209081526040808320805482518185028101850190935280835260609492939192909184015b828210156126f457600084815260209081902060408051608081018252600486029092018054835260018082015484860152600282015492840192909252600301546001600160a01b03166060830152908352909201910161290a565b6001600160a01b038216600090815260036020526040812080548291908490811061299457612994615ba0565b9060005260206000209060090201905060008160060154426129b69190615b74565b60078301549091506001600160a01b03166000805b6001600160a01b038316600090815260046020526040902054811015610e55576001600160a01b0383166000908152600460205260408120805483908110612a1557612a15615ba0565b600091825260209091206002909102018054600182015491925090818710612a5f57875461271090612a48908390615b28565b612a529190615b3f565b612a5c9086615b61565b94505b50505080612a6c90615b87565b90506129cb565b6000612a7d6151e2565b805490915060ff600160401b82041615906001600160401b0316600081158015612aa45750825b90506000826001600160401b03166001148015612ac05750303b155b905081158015612ace575080155b15612aec5760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff191660011785558315612b1657845460ff60401b1916600160401b1785555b612b1e61520b565b600080546001600160a01b03191633908117825581526001602081815260408320805460ff1990811684179091557f968a1791ad31618c63b086103baa804af57c3ca0efa33a191010fbb7741579fc80548216841790557f62cf4150b20d3255eba0565c087b9107980561f805ca8d8f9daa6ef061b5102180548216841790557f07c745cf21e9841960aca585c508e8b656ab26f500f65e063e363f1e5431cb338054821684179055738a9281ecece9b599c2f42d829c3d0d8e74b7083e84527f3951584e4df0c05d84015a72c4987ad1375f6f18e35cb23b25e1962d5cdc88b68054909116909217909155600f905269021e19e0c9bab24000007f49b20f23a4c98683b2444d4fceacc6fea988f6ff51924040a449ec627e73e8368190556013805491929091612c50908490615b61565b90915550506201fa406009558315612ca257845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b5050505050565b3360009081526001602052604090205460ff16612cd85760405162461bcd60e51b8152600401610e9790615be0565b612cf77355d398326f99059ff775485246999027b3197955338361517e565b6040518181527355d398326f99059ff775485246999027b31979559033907fa92ff919b850e4909ab2261d907ef955f11bc1716733a6cbece38d163a69af8a9060200160405180910390a350565b3360009081526001602052604090205460ff16612d745760405162461bcd60e51b8152600401610e9790615be0565b60125460009015612dbf576000600e60006001601254612d949190615b74565b81526020019081526020016000209050612dbb84601354836001015484600201548761521b565b9150505b6040805160a081018252858152602080820186815260135483850190815260608085018781524260808701908152601280546000908152600e885289902097518855945160018801559251600287015551600386015590516004909401939093555483518781529182018590529281018590527feadbedb993dfca23e4c79bf4fa5fe531c2e0e926258fabb8445e8bc5c472780f910160405180910390a260128054906000612e6d83615b87565b919050555050505050565b3360009081526001602052604090205460ff16612ea75760405162461bcd60e51b8152600401610e9790615be0565b6112bd7355d398326f99059ff775485246999027b31979553330846152b4565b3360009081526002602052604090205460ff16612ef65760405162461bcd60e51b8152600401610e9790615be0565b612f068686868686864242612435565b505050505050565b33600090815260156020908152604080832084845290915290208054612f465760405162461bcd60e51b8152600401610e9790615c88565b60028101546001600160a01b03163314612f935760405162461bcd60e51b815260206004820152600e60248201526d2737ba103a34329039b2b63632b960911b6044820152606401610e97565b805460175460009061271090612fa99084615b28565b612fb39190615b3f565b90506000612fc18284615b74565b336000908152600f6020526040812080549293508392909190612fe5908490615b61565b925050819055508060136000828254612ffe9190615b61565b9091555050811561304557604080518381526020810187905233917f4725a4d4de9bff212d0885095e27515072f73f427df55e52f37f241321ef88f9910160405180910390a25b336000818152601560209081526040808320898452825280832083815560018082018590556002820180546001600160a01b03191690556003909101849055938352601a825280832089845290915281205460195490926130a591615b74565b9050808214613166576000601982815481106130c3576130c3615ba0565b60009182526020918290206040805180820190915260029092020180546001600160a01b0316825260010154918101919091526019805491925082918590811061310f5761310f615ba0565b6000918252602080832084516002939093020180546001600160a01b0319166001600160a01b03938416178155938101516001909401939093558351168152601a8252604080822093830151825292909152208290555b601980548061317757613177615cb3565b600082815260208082206002600019949094019384020180546001600160a01b03191681556001018290559190925533808352601a825260408084208b855283528084209390935591518981527f73d12dec3eb3b445b6c9feb2fd559ba7c852c525bc1e59d8f7ff760c55df041d910160405180910390a250505050505050565b60608183111561323a5760405162461bcd60e51b815260206004820152600d60248201526c496e76616c69642072616e676560981b6044820152606401610e97565b60125482106132815760405162461bcd60e51b8152602060048201526013602482015272115b9908195c1bd8da081b9bdd08199bdd5b99606a1b6044820152606401610e97565b600061328d8484615b74565b613298906001615b61565b90506000816001600160401b038111156132b4576132b4615c08565b60405190808252806020026020018201604052801561331757816020015b6133046040518060a0016040528060008152602001600081526020016000815260200160008152602001600081525090565b8152602001906001900390816132d25790505b50905060005b828110156133ae57600e60006133338389615b61565b81526020019081526020016000206040518060a00160405290816000820154815260200160018201548152602001600282015481526020016003820154815260200160048201548152505082828151811061339057613390615ba0565b602002602001018190525080806133a690615b87565b91505061331d565b50949350505050565b6133bf615132565b600081116133df5760405162461bcd60e51b8152600401610e9790615c60565b6000601454116134285760405162461bcd60e51b81526020600482015260146024820152734275796f7574206e6f7420617661696c61626c6560601b6044820152606401610e97565b6000613433336110c9565b90508082111561347e5760405162461bcd60e51b8152602060048201526016602482015275496e73756666696369656e74206e6574207374616b6560501b6044820152606401610e97565b6000612710601454846134919190615b28565b61349b9190615b3f565b336000908152600f60205260408120805492935085929091906134bf908490615b74565b9250508190555082601360008282546134d89190615b74565b9091555050600c80549060006134ed83615b87565b9091555050336000908152601160209081526040918290208251606081018452600c548152918201849052600954909282019061352a9042615b61565b90528154600180820184556000938452602093849020835160039093020191825582840151908201556040918201516002909101555182815233917fa65a8b4f7f65a1063243d7f7e9e4da00ff767599acf21549ef2548a45d1695ae910160405180910390a250506112bd6001600080516020615cca83398151915255565b601b81815481106135b957600080fd5b6000918252602090912060069091020180546001820154600283015460038401546004850154600590950154939550919390926001600160a01b03918216911686565b6136306040518060800160405280600081526020016000815260200160006001600160a01b03168152602001600081525090565b506001600160a01b03918216600090815260156020908152604080832093835292815290829020825160808101845281548152600182015492810192909252600281015490931691810191909152600390910154606082015290565b3360009081526001602052604090205460ff166136bb5760405162461bcd60e51b8152600401610e9790615be0565b61271081111561370d5760405162461bcd60e51b815260206004820152601d60248201527f50657263656e746167652063616e6e6f742065786365656420313030250000006044820152606401610e97565b601455565b61371a615132565b3360009081526003602052604090205481106137705760405162461bcd60e51b8152602060048201526015602482015274092dcecc2d8d2c840eccae6e8d2dcce40d2dcc8caf605b1b6044820152606401610e97565b33600090815260036020526040812080548390811061379157613791615ba0565b906000526020600020906009020190508060070160149054906101000a900460ff16156137f35760405162461bcd60e51b815260206004820152601060248201526f56657374696e6720636f6d706c65746560801b6044820152606401610e97565b60006137ff3384612967565b9050816003015481101561384c5760405162461bcd60e51b8152602060048201526014602482015273125b9d985b1a590818db185a5b48185b5bdd5b9d60621b6044820152606401610e97565b600082600301548261385e9190615b74565b9050600081116138805760405162461bcd60e51b8152600401610e9790615bb6565b808360030160008282546138949190615b61565b909155505082546003840154106138bb5760078301805460ff60a01b1916600160a01b1790555b33600090815260066020526040902054156139c95760078301546001600160a01b039081166000818152600560205260408082205490516302c68be360e31b815260048101939093529092670de0b6b3a7640000928592909116906316345f1890602401602060405180830381865afa15801561393c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906139609190615c1e565b61396a9190615b28565b6139749190615b3f565b3360009081526006602052604090205490915081106139a257336000908152600660205260408120556139c7565b33600090815260066020526040812080548392906139c1908490615b74565b90915550505b505b6007838101546001600160a01b031660009081526020919091526040812080548392906139f7908490615b74565b9091555050336000908152600a6020526040808220815160808101909252600b8054919383929190613a2883615b87565b91905055815260200183815260200160095442613a459190615b61565b81526007860180546001600160a01b039081166020938401528454600180820187556000968752848720865160049093020191825585850151908201556040808601516002830155606090950151600390910180546001600160a01b0319169183169190911790559054168352600d905281208054839290613ac8908490615b61565b9091555050604080518281526000602082015233917f4a94c2c356e29a6583071e731bdacf2ca56565ba5efebcff6936eb7923b5172191015b60405180910390a25050506112bd6001600080516020615cca83398151915255565b613b4760405180606001604052806000815260200160008152602001600081525090565b6001600160a01b0383166000908152601160205260408120905b815481101561126b5783828281548110613b7d57613b7d615ba0565b90600052602060002090600302016000015403613be657818181548110613ba657613ba6615ba0565b9060005260206000209060030201604051806060016040529081600082015481526020016001820154815260200160028201548152505092505050610e5c565b80613bf081615b87565b915050613b61565b3360009081526001602052604090205460ff16613c275760405162461bcd60e51b8152600401610e9790615be0565b6001600160a01b038316613c755760405162461bcd60e51b8152602060048201526015602482015274496e76616c696420746f6b656e206164647265737360581b6044820152606401610e97565b600081118015613c8757506127108111155b613cc85760405162461bcd60e51b8152602060048201526012602482015271496e76616c69642070657263656e7461676560701b6044820152606401610e97565b6001600160a01b0383166000908152600460205260408120613ce9916153ab565b6000825b612710821015613d865782612710613d058285615b61565b1115613d1a57613d1783612710615b74565b90505b6001600160a01b0386166000908152600460209081526040808320815180830190925285825281830185815281546001818101845592865293909420915160029093029091019182559151910155613d728184615b61565b9250613d7e8583615b61565b915050613ced565b6040516001600160a01b038616907fde4b6ccc38b84f88129403b65a309f9b1c41d4c316bc2118d7614e449b9d4c4590600090a25050505050565b613df36040518060a0016040528060008152602001600081526020016000815260200160008152602001600081525090565b6012548210613e365760405162461bcd60e51b815260206004820152600f60248201526e115c1bd8da081b9bdd08199bdd5b99608a1b6044820152606401610e97565b506000908152600e6020908152604091829020825160a0810184528154815260018201549281019290925260028101549282019290925260038201546060820152600490910154608082015290565b60036020528160005260406000208181548110613ea157600080fd5b6000918252602090912060099091020180546001820154600283015460038401546004850154600586015460068701546007880154600890980154969950949750929591949093916001600160a01b03811691600160a01b90910460ff16908a565b6001600160a01b038216600090815260036020526040812080546060928392909185908110613f3457613f34615ba0565b600091825260208083206007600990930201918201546001600160a01b03168084526004909152604083205491935091816001600160401b03811115613f7c57613f7c615c08565b604051908082528060200260200182016040528015613fa5578160200160208202803683370190505b5090506000826001600160401b03811115613fc257613fc2615c08565b604051908082528060200260200182016040528015613feb578160200160208202803683370190505b50905060005b83811015614098576001600160a01b038516600090815260046020526040812080548390811061402357614023615ba0565b90600052602060002090600202019050806000015487600601546140479190615b61565b84838151811061405957614059615ba0565b602002602001018181525050806001015483838151811061407c5761407c615ba0565b60209081029190910101525061409181615b87565b9050613ff1565b5090955093505050505b9250929050565b6000806000806140b885610c94565b6001600160a01b0386166000908152600f60205260409020549091506140df908290615b74565b6001600160a01b0386166000908152600f602052604090205490945090925090505b9193909250565b3360009081526001602052604090205460ff166141375760405162461bcd60e51b8152600401610e9790615be0565b600855565b6001600160a01b0381166000908152601160209081526040808320805482518185028101850190935280835260609492939192909184015b828210156126f45783829060005260206000209060030201604051806060016040529081600082015481526020016001820154815260200160028201548152505081526020019060010190614174565b601160205281600052604060002081815481106141e057600080fd5b600091825260209091206003909102018054600182015460029092015490935090915083565b3360009081526001602052604090205460ff166142355760405162461bcd60e51b8152600401610e9790615be0565b600955565b601b54606090831061428e5760405162461bcd60e51b815260206004820152601960248201527f537461727420696e646578206f7574206f6620626f756e6473000000000000006044820152606401610e97565b600061429a8385615b61565b601b549091508111156142ac5750601b545b60006142b88583615b74565b6001600160401b038111156142cf576142cf615c08565b60405190808252806020026020018201604052801561434b57816020015b6143386040518060c001604052806000815260200160008152602001600081526020016000815260200160006001600160a01b0316815260200160006001600160a01b031681525090565b8152602001906001900390816142ed5790505b509050845b828110156133ae57601b818154811061436b5761436b615ba0565b60009182526020918290206040805160c0810182526006909302909101805483526001810154938301939093526002830154908201526003820154606082015260048201546001600160a01b03908116608083015260059092015490911660a0820152826143d98884615b74565b815181106143e9576143e9615ba0565b602002602001018190525080806143ff90615b87565b915050614350565b61440f615132565b3360009081526003602052604090205481106144655760405162461bcd60e51b8152602060048201526015602482015274092dcecc2d8d2c840eccae6e8d2dcce40d2dcc8caf605b1b6044820152606401610e97565b33600090815260036020526040812080548390811061448657614486615ba0565b9060005260206000209060090201905060006144a23384610d2a565b905081600401548110156144ef5760405162461bcd60e51b8152602060048201526014602482015273125b9d985b1a590818db185a5b48185b5bdd5b9d60621b6044820152606401610e97565b60008260040154826145019190615b74565b9050600081116145235760405162461bcd60e51b8152600401610e9790615bb6565b808360040160008282546145379190615b61565b90915550503360009081526011602052604090819020815160608101909252908061456587620f4240615b61565b81526020018381526020016009544261457e9190615b61565b90528154600180820184556000938452602093849020835160039093020191825582840151908201556040918201516002909101555182815233917f4e69fdc49495bcab2b4375781457ba16653a90eb4ffb6588351bdc39071433e29101613b01565b6001600160a01b0381166000908152600f60209081526040808320546010909252822054601254606093849390929091839061461e908390615b74565b90508060000361464f5750506040805160008082526020820181815282840190935290955090935091506141019050565b806001600160401b0381111561466757614667615c08565b604051908082528060200260200182016040528015614690578160200160208202803683370190505b509550806001600160401b038111156146ab576146ab615c08565b6040519080825280602002602001820160405280156146d4578160200160208202803683370190505b50945060005b818110156147b05760006146ee8285615b61565b90508088838151811061470357614703615ba0565b6020908102919091010152841561477c576000818152600e6020526040812060030154612710906147349088615b28565b61473e9190615b3f565b90508088848151811061475357614753615ba0565b60209081029190910101526147688188615b61565b96506147748187615b74565b95505061479d565b600087838151811061479057614790615ba0565b6020026020010181815250505b50806147a881615b87565b9150506146da565b505050509193909250565b6147c3615132565b6001600160a01b0382166000908152601560209081526040808320848452909152902080546148045760405162461bcd60e51b8152600401610e9790615c88565b336001600160a01b038416036148555760405162461bcd60e51b815260206004820152601660248201527543616e6e6f7420627579206f776e206c697374696e6760501b6044820152606401610e97565b805460018201546003830154600082841161487157600061487b565b61487b8385615b74565b905060008461488c83612710615b28565b6148969190615b3f565b905060006127106148a78380615b28565b6148b19190615b3f565b905060006127106148c28389615b28565b6148cc9190615b3f565b905060006148da8289615b74565b90506148fc7355d398326f99059ff775485246999027b3197955338d8a6152b4565b336000908152600f60205260408120805483929061491b908490615b61565b9250508190555080601360008282546149349190615b61565b90915550506001600160a01b038b1660009081526018602052604081208054899290614961908490615b61565b92505081905550601b6040518060c001604052808881526020014281526020018a81526020018981526020018d6001600160a01b03168152602001336001600160a01b031681525090806001815401808255809150506001900390600052602060002090600602016000909190919091506000820151816000015560208201518160010155604082015181600201556060820151816003015560808201518160040160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060a08201518160050160006101000a8154816001600160a01b0302191690836001600160a01b031602179055505050601560008c6001600160a01b03166001600160a01b0316815260200190815260200160002060008b815260200190815260200160002060008082016000905560018201600090556002820160006101000a8154906001600160a01b030219169055600382016000905550506000601a60008d6001600160a01b03166001600160a01b0316815260200190815260200160002060008c815260200190815260200160002054905060006001601980549050614b109190615b74565b9050808214614bd157600060198281548110614b2e57614b2e615ba0565b60009182526020918290206040805180820190915260029092020180546001600160a01b03168252600101549181019190915260198054919250829185908110614b7a57614b7a615ba0565b6000918252602080832084516002939093020180546001600160a01b0319166001600160a01b03938416178155938101516001909401939093558351168152601a8252604080822093830151825292909152208290555b6019805480614be257614be2615cb3565b6001900381819060005260206000209060020201600080820160006101000a8154906001600160a01b030219169055600182016000905550509055601a60008e6001600160a01b03166001600160a01b0316815260200190815260200160002060008d815260200190815260200160002060009055336001600160a01b03168d6001600160a01b03167f7bb39d095b04a9986ed34adf14d74c33294d0a9e807f02bf634d532507422eba8b8f604051614ca5929190918252602082015260400190565b60405180910390a35050505050505050505050611a836001600080516020615cca83398151915255565b3360009081526002602052604090205460ff16614cfe5760405162461bcd60e51b8152600401610e9790615be0565b6001600160a01b038216614d245760405162461bcd60e51b8152600401610e9790615c37565b60008111614d445760405162461bcd60e51b8152600401610e9790615c60565b6001600160a01b0382166000908152600f60205260409020546013548291614d6b91615b74565b614d759190615b61565b6013556001600160a01b0382166000818152600f602052604090819020839055517fec7e3594982826a1f90c8fc76513357b83a691b7f4e38b8be04f3d40f9b1583990614dc59084815260200190565b60405180910390a25050565b33600090815260156020908152604080832085845290915290208054614e095760405162461bcd60e51b8152600401610e9790615c88565b60028101546001600160a01b03163314614e565760405162461bcd60e51b815260206004820152600e60248201526d2737ba103a34329039b2b63632b960911b6044820152606401610e97565b60008211614e9b5760405162461bcd60e51b8152602060048201526012602482015271496e76616c69642073616c6520707269636560701b6044820152606401610e97565b60018101829055604080518381526020810185905233917f8e79b7ba8dab5ebfa59b9c6af1743c3ef14863680b3cc5ac837f8d636f76031c910160405180910390a2505050565b614eea615132565b336000908152600a602052604090208054614f3f5760405162461bcd60e51b81526020600482015260156024820152744e6f2076657374696e677320617661696c61626c6560581b6044820152606401610e97565b60005b815481101561507c576000828281548110614f5f57614f5f615ba0565b90600052602060002090600402019050838160000154148015614f86575060008160010154115b15615069578060020154421015614fd05760405162461bcd60e51b815260206004820152600e60248201526d15995cdd1a5b99c81b1bd8dad95960921b6044820152606401610e97565b60018101805460038301546000928390556001600160a01b0316808352600d6020526040832080549293919284929061500a908490615b74565b9091555061502490506001600160a01b038216338461517e565b604080518381526020810188905233917f933735aa8de6d7547d0126171b2f31b9c34dd00f3ecd4be85a0ba047db4fafef910160405180910390a250505050506112a6565b508061507481615b87565b915050614f42565b5060405162461bcd60e51b815260206004820152601160248201527015995cdd1a5b99c81b9bdd08199bdd5b99607a1b6044820152606401610e97565b3360009081526001602052604090205460ff166150e85760405162461bcd60e51b8152600401610e9790615be0565b6001600160a01b03811661510e5760405162461bcd60e51b8152600401610e9790615c37565b6001600160a01b03166000908152600260205260409020805460ff19166001179055565b600080516020615cca83398151915280546001190161516457604051633ee5aeb560e01b815260040160405180910390fd5b60029055565b6001600080516020615cca83398151915255565b6040516001600160a01b038381166024830152604482018390526151dd91859182169063a9059cbb906064015b604051602081830303815290604052915060e01b6020820180516001600160e01b0383818316178352505050506152f3565b505050565b6000807ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00610e5c565b615213615364565b610fa2615389565b6000821580615228575084155b15615235575060006152ab565b60008561524488612710615b28565b61524e9190615b3f565b905060008461525f87612710615b28565b6152699190615b3f565b905080821161527d576000925050506152ab565b60006152898284615b74565b9050600061271061529a8784615b28565b6152a49190615b3f565b9450505050505b95945050505050565b6040516001600160a01b0384811660248301528381166044830152606482018390526152ed9186918216906323b872dd906084016151ab565b50505050565b600080602060008451602086016000885af180615316576040513d6000823e3d81fd5b50506000513d9150811561532e57806001141561533b565b6001600160a01b0384163b155b156152ed57604051635274afe760e01b81526001600160a01b0385166004820152602401610e97565b61536c615391565b610fa257604051631afcd79f60e31b815260040160405180910390fd5b61516a615364565b600061539b6151e2565b54600160401b900460ff16919050565b50805460008255600202906000526020600020908101906112bd91905b808211156153e257600080825560018201556002016153c8565b5090565b80356001600160a01b03811681146153fd57600080fd5b919050565b60006020828403121561541457600080fd5b61541d826153e6565b9392505050565b6000806040838503121561543757600080fd5b615440836153e6565b946020939093013593505050565b60006020828403121561546057600080fd5b5035919050565b60008083601f84011261547957600080fd5b5081356001600160401b0381111561549057600080fd5b6020830191508360208260051b85010111156140a257600080fd5b600080602083850312156154be57600080fd5b82356001600160401b038111156154d457600080fd5b6154e085828601615467565b90969095509350505050565b600081518084526020808501945080840160005b8381101561551c57815187529582019590820190600101615500565b509495945050505050565b60608152600061553a60608301866154ec565b828103602084015261554c81866154ec565b915050826040830152949350505050565b6000806000806040858703121561557357600080fd5b84356001600160401b038082111561558a57600080fd5b61559688838901615467565b909650945060208701359150808211156155af57600080fd5b506155bc87828801615467565b95989497509550505050565b600080604083850312156155db57600080fd5b50508035926020909101359150565b60608082528451908201819052600090608090818401906020808901855b8381101561562d5781516001600160a01b031685529382019390820190600101615608565b50508583038187015261564083896154ec565b868103604088015287518082528289019450908201925060005b818110156156a45761569484865180518252602080820151908301526040808201516001600160a01b031690830152606090810151910152565b938201939285019260010161565a565b50919998505050505050505050565b600080604083850312156156c657600080fd5b6156cf836153e6565b91506156dd602084016153e6565b90509250929050565b600080600080600080600080610100898b03121561570357600080fd5b61570c896153e6565b975060208901359650604089013595506060890135945061572f60808a016153e6565b979a969950949793969560a0850135955060c08501359460e001359350915050565b602080825282518282018190526000919060409081850190868401855b828110156157f25781518051855286810151878601528581015186860152606080820151908601526080808201519086015260a0808201519086015260c0808201519086015260e0808201516001600160a01b031690860152610100808201511515908601526101209081015190850152610140909301929085019060010161576e565b5091979650505050505050565b602080825282518282018190526000919060409081850190868401855b828110156157f257815180518552868101518786015285810151868601526060908101516001600160a01b0316908501526080909301929085019060010161581c565b60008060006060848603121561587457600080fd5b505081359360208301359350604090920135919050565b60008060008060008060c087890312156158a457600080fd5b6158ad876153e6565b95506020870135945060408701359350606087013592506158d0608088016153e6565b915060a087013590509295509295509295565b6020808252825182820181905260009190848201906040850190845b818110156159505761593d83855180518252602081015160208301526040810151604083015260608101516060830152608081015160808301525050565b9284019260a092909201916001016158ff565b50909695505050505050565b81518152602080830151908201526040808301516001600160a01b0316908201526060808301519082015260808101610e5c565b81518152602080830151908201526040808301519082015260608101610e5c565b6000806000606084860312156159c657600080fd5b6159cf846153e6565b95602085013595506040909401359392505050565b60a08101610e5c828480518252602081015160208301526040810151604083015260608101516060830152608081015160808301525050565b604081526000615a3060408301856154ec565b82810360208401526152ab81856154ec565b6020808252825182820181905260009190848201906040850190845b8181101561595057615a858385518051825260208082015190830152604090810151910152565b9284019260609290920191600101615a5e565b602080825282518282018190526000919060409081850190868401855b828110156157f25781518051855286810151878601528581015186860152606080820151908601526080808201516001600160a01b039081169187019190915260a091820151169085015260c09093019290850190600101615ab5565b634e487b7160e01b600052601160045260246000fd5b8082028115828204841417610e5c57610e5c615b12565b600082615b5c57634e487b7160e01b600052601260045260246000fd5b500490565b80820180821115610e5c57610e5c615b12565b81810381811115610e5c57610e5c615b12565b600060018201615b9957615b99615b12565b5060010190565b634e487b7160e01b600052603260045260246000fd5b60208082526010908201526f4e6f7468696e6720746f20636c61696d60801b604082015260600190565b6020808252600e908201526d139bdd08185d5d1a1bdc9a5e995960921b604082015260600190565b634e487b7160e01b600052604160045260246000fd5b600060208284031215615c3057600080fd5b5051919050565b6020808252600f908201526e496e76616c6964206164647265737360881b604082015260600190565b6020808252600e908201526d125b9d985b1a5908185b5bdd5b9d60921b604082015260600190565b602080825260119082015270131a5cdd1a5b99c81b9bdd08199bdd5b99607a1b604082015260600190565b634e487b7160e01b600052603160045260246000fdfe9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f00a2646970667358221220f6c9687424e98a5eedc2ebd97c79e0c5a0cde5c699d22518c725ae3ffacddc4764736f6c63430008140033",
"deployedBytecode": "0x608060405234801561001057600080fd5b506004361061045e5760003560e01c80638129fc1c1161024c578063bed9757e11610146578063da1b4364116100c3578063f109208f11610087578063f109208f14610c3f578063f2bb563014610c52578063f7e4444c14610c65578063fe2f50d014610c78578063ffecf51614610c8157600080fd5b8063da1b436414610be8578063e079fd9114610c08578063e88f8e6614610c10578063eacdc5ff14610c23578063eb44e0a314610c2c57600080fd5b8063c7b530b01161010a578063c7b530b014610b6f578063cc573a9114610b8f578063ce13d09014610ba2578063cfcf331914610bb5578063d919302514610bd557600080fd5b8063bed9757e14610aa0578063c267660314610ac1578063c32d3ae214610ac9578063c36d03fd14610af7578063c6b61e4c14610b0a57600080fd5b806396fd111a116101d4578063ac97b41711610198578063ac97b417146109d2578063b6c3dc4c146109e5578063b92a349f14610a05578063bc0bc6ba14610a18578063bd84477d14610a3857600080fd5b806396fd111a146109205780639cb6f556146109405780639f3a676c14610953578063a0d467581461099f578063aaf4b04d146109bf57600080fd5b80638bdf67f21161021b5780638bdf67f2146108b45780638da5cb5b146108c75780638f82818f146108da5780639437e32e146108fa578063953d16bf1461090d57600080fd5b80638129fc1c14610866578063853e0df21461086e57806387b4b105146108815780638851ec0f146108a157600080fd5b806343c7c0111161035d57806362cd6a09116102e55780637a0c6dc0116102a95780637a0c6dc0146107d75780637bc221ac146107f75780637d08af971461080a5780637e6d99261461082a57806380ca0ecf1461085357600080fd5b806362cd6a091461077e57806367a74ddc146107955780636ef569a5146107a85780637065cb48146107b157806374d1c8e3146107c457600080fd5b806351f6cf2f1161032c57806351f6cf2f14610708578063549e61d3146107305780635811622714610743578063592d1dd11461075657806361d1080b1461077657600080fd5b806343c7c0111461069d578063441a4175146106b057806348ea286d146106e257806351e62472146106f557600080fd5b8063173825d9116103eb5780632ded58aa116103af5780632ded58aa146105c15780633ba8396e146105ca5780633c92f98d146105ed5780633f35e7221461060f57806343a32f891461062257600080fd5b8063173825d91461056c5780631ada70a81461057f5780631aefa2d1146105885780631eb9e53e1461059b57806325d5971f146105ae57600080fd5b8063092c761011610432578063092c7610146105065780630a84096a146105265780630a910a6d146105395780630c7d63861461054257806313baee5b1461054c57600080fd5b8062159da6146104635780630137451814610489578063022914a7146104ca5780630519da32146104fd575b600080fd5b610476610471366004615402565b610c94565b6040519081526020015b60405180910390f35b6104b2610497366004615402565b6005602052600090815260409020546001600160a01b031681565b6040516001600160a01b039091168152602001610480565b6104ed6104d8366004615402565b60016020526000908152604090205460ff1681565b6040519015158152602001610480565b61047660095481565b610476610514366004615402565b60076020526000908152604090205481565b610476610534366004615424565b610d2a565b61047660145481565b61054a610e62565b005b61047661055a366004615402565b600f6020526000908152604090205481565b61054a61057a366004615402565b610fa4565b61047660085481565b61054a61059636600461544e565b611095565b6104766105a9366004615402565b6110c9565b61054a6105bc36600461544e565b611100565b61047660135481565b6104ed6105d8366004615402565b60026020526000908152604090205460ff1681565b6106006105fb3660046154ab565b6112c0565b60405161048093929190615527565b61054a61061d366004615424565b6114ae565b61066e610630366004615424565b60156020908152600092835260408084209091529082529020805460018201546002830154600390930154919290916001600160a01b039091169084565b604051610480949392919093845260208401929092526001600160a01b03166040830152606082015260800190565b61054a6106ab366004615402565b611535565b6106c36106be36600461544e565b6118bb565b604080516001600160a01b039093168352602083019190915201610480565b61054a6106f0366004615402565b6118f3565b61054a61070336600461544e565b611a87565b61071b610716366004615424565b611abb565b60408051928352602083019190915201610480565b61054a61073e36600461555d565b611af7565b61054a6107513660046155c8565b611dc0565b610476610764366004615402565b60066020526000908152604090205481565b601b54610476565b6107866120b0565b604051610480939291906155ea565b61054a6107a33660046156b3565b612303565b61047660175481565b61054a6107bf366004615402565b612360565b61054a6107d23660046156e6565b612435565b6107ea6107e5366004615402565b612618565b6040516104809190615751565b610476610805366004615402565b6126ff565b61081d610818366004615402565b6128d2565b60405161048091906157ff565b610476610838366004615402565b6001600160a01b031660009081526018602052604090205490565b610476610861366004615424565b612967565b61054a612a73565b61054a61087c36600461544e565b612ca9565b61047661088f366004615402565b600d6020526000908152604090205481565b61054a6108af36600461585f565b612d45565b61054a6108c236600461544e565b612e78565b6000546104b2906001600160a01b031681565b6104766108e8366004615402565b60186020526000908152604090205481565b61054a61090836600461588b565b612ec7565b61054a61091b36600461544e565b612f0e565b61093361092e3660046155c8565b6131f8565b60405161048091906158e3565b61054a61094e36600461544e565b6133b7565b61096661096136600461544e565b6135a9565b6040805196875260208701959095529385019290925260608401526001600160a01b0390811660808401521660a082015260c001610480565b6109b26109ad366004615424565b6135fc565b604051610480919061595c565b61054a6109cd36600461544e565b61368c565b61054a6109e036600461544e565b613712565b6109f86109f3366004615424565b613b23565b6040516104809190615990565b61054a610a133660046159b1565b613bf8565b610a2b610a2636600461544e565b613dc1565b60405161048091906159e4565b610a4b610a46366004615424565b613e85565b604080519a8b5260208b0199909952978901969096526060880194909452608087019290925260a086015260c08501526001600160a01b031660e0840152151561010083015261012082015261014001610480565b610ab3610aae366004615424565b613f03565b604051610480929190615a1d565b6103e7610476565b610adc610ad7366004615402565b6140a9565b60408051938452602084019290925290820152606001610480565b61054a610b0536600461544e565b614108565b610b47610b1836600461544e565b600e60205260009081526040902080546001820154600283015460038401546004909401549293919290919085565b604080519586526020860194909452928401919091526060830152608082015260a001610480565b610b82610b7d366004615402565b61413c565b6040516104809190615a42565b610adc610b9d366004615424565b6141c4565b61054a610bb036600461544e565b614206565b610bc8610bc33660046155c8565b61423a565b6040516104809190615a98565b61054a610be336600461544e565b614407565b610476610bf6366004615402565b60106020526000908152604090205481565b600b54610476565b610600610c1e366004615402565b6145e1565b61047660125481565b61054a610c3a366004615424565b6147bb565b61054a610c4d366004615424565b614ccf565b61054a610c603660046155c8565b614dd1565b61054a610c7336600461544e565b614ee2565b61047660165481565b61054a610c8f366004615402565b6150b9565b6001600160a01b0381166000908152600f60209081526040808320546010909252822054805b601254811015610d22578215610d10576000818152600e602052604081206003015461271090610cea9086615b28565b610cf49190615b3f565b9050610d008186615b61565b9450610d0c8185615b74565b9350505b80610d1a81615b87565b915050610cba565b505050919050565b6001600160a01b0382166000908152600360205260408120805482919084908110610d5757610d57615ba0565b906000526020600020906009020190506000816006015442610d799190615b74565b60078301549091506001600160a01b03166000805b6001600160a01b038316600090815260046020526040902054811015610e55576001600160a01b0383166000908152600460205260408120805483908110610dd857610dd8615ba0565b6000918252602082206002909102018054600182015460088a015492945090929091606490610e0990600a90615b28565b610e139190615b3f565b9050828810610e4057612710610e298383615b28565b610e339190615b3f565b610e3d9087615b61565b95505b5050505080610e4e90615b87565b9050610d8e565b5093505050505b92915050565b610e6a615132565b6000610e7533610c94565b905060008111610ea05760405162461bcd60e51b8152600401610e9790615bb6565b60405180910390fd5b336000908152600f602052604081208054839290610ebf908490615b74565b925050819055508060136000828254610ed89190615b74565b90915550506012543360009081526010602090815260408083209390935560118152908290208251606081018452428082529281018590526009549193909290830191610f2491615b61565b90528154600180820184556000938452602093849020835160039093020191825582840151908201556040918201516002909101555182815233917fa65a8b4f7f65a1063243d7f7e9e4da00ff767599acf21549ef2548a45d1695ae910160405180910390a250610fa26001600080516020615cca83398151915255565b565b3360009081526001602052604090205460ff16610fd35760405162461bcd60e51b8152600401610e9790615be0565b6001600160a01b03811660009081526001602052604090205460ff166110275760405162461bcd60e51b81526020600482015260096024820152682737ba1037bbb732b960b91b6044820152606401610e97565b336001600160a01b038216036110745760405162461bcd60e51b815260206004820152601260248201527121b0b73737ba103932b6b7bb329039b2b63360711b6044820152606401610e97565b6001600160a01b03166000908152600160205260409020805460ff19169055565b3360009081526001602052604090205460ff166110c45760405162461bcd60e51b8152600401610e9790615be0565b601755565b6001600160a01b0381166000908152600f6020526040812054816110ec84610c94565b90506110f88183615b74565b949350505050565b611108615132565b336000908152601160205260409020805461115b5760405162461bcd60e51b81526020600482015260136024820152724e6f207374616b657320617661696c61626c6560681b6044820152606401610e97565b60005b815481101561126b57600082828154811061117b5761117b615ba0565b906000526020600020906003020190508381600001541480156111a2575060008160010154115b156112585780600201544210156111ea5760405162461bcd60e51b815260206004820152600c60248201526b14dd185ad9481b1bd8dad95960a21b6044820152606401610e97565b60018101805460009091556112147355d398326f99059ff775485246999027b3197955338361517e565b604080518281526020810187905233917f933735aa8de6d7547d0126171b2f31b9c34dd00f3ecd4be85a0ba047db4fafef910160405180910390a2505050506112a6565b508061126381615b87565b91505061115e565b5060405162461bcd60e51b815260206004820152600f60248201526e14dd185ad9481b9bdd08199bdd5b99608a1b6044820152606401610e97565b6112bd6001600080516020615cca83398151915255565b50565b606080600083806001600160401b038111156112de576112de615c08565b604051908082528060200260200182016040528015611307578160200160208202803683370190505b509350806001600160401b0381111561132257611322615c08565b60405190808252806020026020018201604052801561134b578160200160208202803683370190505b50925060005b818110156114a557600087878381811061136d5761136d615ba0565b90506020020160208101906113829190615402565b6001600160a01b03811660009081526007602052604090205487519192509081908890859081106113b5576113b5615ba0565b6020908102919091018101919091526001600160a01b038381166000818152600590935260408084205490516302c68be360e31b81526004810192909252909116906316345f1890602401602060405180830381865afa15801561141d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114419190615c1e565b90506000670de0b6b3a76400006114588484615b28565b6114629190615b3f565b90508088868151811061147757611477615ba0565b602090810291909101015261148c8188615b61565b965050505050808061149d90615b87565b915050611351565b50509250925092565b3360009081526001602052604090205460ff166114dd5760405162461bcd60e51b8152600401610e9790615be0565b6114f16001600160a01b038316338361517e565b6040518181526001600160a01b0383169033907fa92ff919b850e4909ab2261d907ef955f11bc1716733a6cbece38d163a69af8a9060200160405180910390a35050565b61153d615132565b6000805b336000908152600360205260409020548110156116485733600090815260036020526040812080548390811061157957611579615ba0565b6000918252602090912060099091020160078101549091506001600160a01b0385811691161480156115b757506007810154600160a01b900460ff16155b156116355760006115c83384612967565b905081600301548111156116335760008260030154826115e89190615b74565b90506115f48186615b61565b94508083600301600082825461160a9190615b61565b909155505082546003840154106116315760078301805460ff60a01b1916600160a01b1790555b505b505b508061164081615b87565b915050611541565b50600081116116695760405162461bcd60e51b8152600401610e9790615bb6565b3360009081526006602052604090205415611772576001600160a01b038281166000818152600560205260408082205490516302c68be360e31b815260048101939093529092670de0b6b3a7640000928592909116906316345f1890602401602060405180830381865afa1580156116e5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117099190615c1e565b6117139190615b28565b61171d9190615b3f565b33600090815260066020526040902054909150811061174b5733600090815260066020526040812055611770565b336000908152600660205260408120805483929061176a908490615b74565b90915550505b505b6001600160a01b0382166000908152600760205260408120805483929061179a908490615b74565b9091555050336000908152600a6020526040808220815160808101909252600b80549193839291906117cb83615b87565b919050558152602001838152602001600954426117e89190615b61565b81526001600160a01b0385811660209283018190528454600180820187556000968752848720865160049093020191825585850151908201556040808601516002830155606090950151600390910180546001600160a01b03191691909316179091558352600d905281208054839290611863908490615b61565b9091555050604080518281526000602082015233917f4a94c2c356e29a6583071e731bdacf2ca56565ba5efebcff6936eb7923b51721910160405180910390a2506112bd6001600080516020615cca83398151915255565b601981815481106118cb57600080fd5b6000918252602090912060029091020180546001909101546001600160a01b03909116915082565b3360009081526002602052604090205460ff166119225760405162461bcd60e51b8152600401610e9790615be0565b60005b6001600160a01b038216600090815260036020526040902054811015611a83576001600160a01b038216600090815260036020526040812080548390811061196f5761196f615ba0565b906000526020600020906009020190508060070160149054906101000a900460ff16611a475760088101546001600160a01b038416600090815260066020526040902054106119eb5760088101546001600160a01b038416600090815260066020526040812080549091906119e5908490615b74565b90915550505b80546007808301546001600160a01b03166000908152602091909152604090205410611a475780546007808301546001600160a01b03166000908152602091909152604081208054909190611a41908490615b74565b90915550505b600080825560018201819055600382018190556004820155600701805460ff60a01b1916600160a01b179055611a7c81615b87565b9050611925565b5050565b3360009081526001602052604090205460ff16611ab65760405162461bcd60e51b8152600401610e9790615be0565b601655565b60046020528160005260406000208181548110611ad757600080fd5b600091825260209091206002909102018054600190910154909250905082565b3360009081526002602052604090205460ff16611b265760405162461bcd60e51b8152600401610e9790615be0565b828114611b6d5760405162461bcd60e51b8152602060048201526015602482015274082e4e4c2f240d8cadccee8d040dad2e6dac2e8c6d605b1b6044820152606401610e97565b82611ba95760405162461bcd60e51b815260206004820152600c60248201526b456d7074792061727261797360a01b6044820152606401610e97565b6000805b84811015611da1576000868683818110611bc957611bc9615ba0565b9050602002016020810190611bde9190615402565b6001600160a01b031603611c045760405162461bcd60e51b8152600401610e9790615c37565b6000848483818110611c1857611c18615ba0565b9050602002013511611c3c5760405162461bcd60e51b8152600401610e9790615c60565b838382818110611c4e57611c4e615ba0565b90506020020135600f6000888885818110611c6b57611c6b615ba0565b9050602002016020810190611c809190615402565b6001600160a01b03168152602081019190915260400160002054611ca49084615b74565b611cae9190615b61565b9150838382818110611cc257611cc2615ba0565b90506020020135600f6000888885818110611cdf57611cdf615ba0565b9050602002016020810190611cf49190615402565b6001600160a01b03168152602081019190915260400160002055858582818110611d2057611d20615ba0565b9050602002016020810190611d359190615402565b6001600160a01b03167fec7e3594982826a1f90c8fc76513357b83a691b7f4e38b8be04f3d40f9b15839858584818110611d7157611d71615ba0565b90506020020135604051611d8791815260200190565b60405180910390a280611d9981615b87565b915050611bad565b508060136000828254611db49190615b61565b90915550505050505050565b611dc8615132565b60008211611e085760405162461bcd60e51b815260206004820152600d60248201526c496e76616c69642076616c756560981b6044820152606401610e97565b60008111611e4d5760405162461bcd60e51b8152602060048201526012602482015271496e76616c69642073616c6520707269636560701b6044820152606401610e97565b601654821015611e955760405162461bcd60e51b815260206004820152601360248201527256616c75652062656c6f77206d696e696d756d60681b6044820152606401610e97565b6000611ea0336110c9565b905080831115611eeb5760405162461bcd60e51b8152602060048201526016602482015275496e73756666696369656e74206e6574207374616b6560501b6044820152606401610e97565b600c8054906000611efb83615b87565b9091555050600c54336000908152600f602052604081208054869290611f22908490615b74565b925050819055508360136000828254611f3b9190615b74565b909155505060408051608081018252858152602080820186815233838501818152426060860190815260008381526015865287812089825286528781209651875593516001808801919091559151600280880180546001600160a01b039384166001600160a01b03199182161790915592516003909801979097558751808901909852928752938601878152601980548084018255948190529651939095027f944998273e477b495144fb8794c914197f3ccb46be2900f4698fd0ef743c969581018054949093169390941692909217905591517f944998273e477b495144fb8794c914197f3ccb46be2900f4698fd0ef743c96969091015590546120409190615b74565b336000818152601a6020908152604080832086845282529182902093909355805186815292830184905290917f8e79b7ba8dab5ebfa59b9c6af1743c3ef14863680b3cc5ac837f8d636f76031c910160405180910390a25050611a836001600080516020615cca83398151915255565b60195460609081908190806001600160401b038111156120d2576120d2615c08565b6040519080825280602002602001820160405280156120fb578160200160208202803683370190505b509350806001600160401b0381111561211657612116615c08565b60405190808252806020026020018201604052801561213f578160200160208202803683370190505b509250806001600160401b0381111561215a5761215a615c08565b6040519080825280602002602001820160405280156121bf57816020015b6121ac6040518060800160405280600081526020016000815260200160006001600160a01b03168152602001600081525090565b8152602001906001900390816121785790505b50915060005b818110156122fc576000601982815481106121e2576121e2615ba0565b60009182526020918290206040805180820190915260029092020180546001600160a01b031680835260019091015492820192909252875190925087908490811061222f5761222f615ba0565b60200260200101906001600160a01b031690816001600160a01b031681525050806020015185838151811061226657612266615ba0565b60209081029190910181019190915281516001600160a01b03908116600090815260158352604080822085850151835284529081902081516080810183528154815260018201549481019490945260028101549092169083015260030154606082015284518590849081106122dd576122dd615ba0565b60200260200101819052505080806122f490615b87565b9150506121c5565b5050909192565b3360009081526001602052604090205460ff166123325760405162461bcd60e51b8152600401610e9790615be0565b6001600160a01b03918216600090815260056020526040902080546001600160a01b03191691909216179055565b3360009081526001602052604090205460ff1661238f5760405162461bcd60e51b8152600401610e9790615be0565b6001600160a01b0381166123b55760405162461bcd60e51b8152600401610e9790615c37565b6001600160a01b03811660009081526001602052604090205460ff161561240e5760405162461bcd60e51b815260206004820152600d60248201526c20b63932b0b23c9037bbb732b960991b6044820152606401610e97565b6001600160a01b03166000908152600160208190526040909120805460ff19169091179055565b3360009081526002602052604090205460ff166124645760405162461bcd60e51b8152600401610e9790615be0565b60036000896001600160a01b03166001600160a01b031681526020019081526020016000206040518061014001604052808981526020018881526020018781526020016000815260200160008152602001848152602001838152602001866001600160a01b03168152602001600015158152602001858152509080600181540180825580915050600190039060005260206000209060090201600090919091909150600082015181600001556020820151816001015560408201518160020155606082015181600301556080820151816004015560a0820151816005015560c0820151816006015560e08201518160070160006101000a8154816001600160a01b0302191690836001600160a01b031602179055506101008201518160070160146101000a81548160ff0219169083151502179055506101208201518160080155505082600660008a6001600160a01b03166001600160a01b0316815260200190815260200160002060008282546125dc9190615b61565b90915550506001600160a01b03841660009081526007602052604081208054899290612609908490615b61565b90915550505050505050505050565b6001600160a01b0381166000908152600360209081526040808320805482518185028101850190935280835260609492939192909184015b828210156126f457600084815260209081902060408051610140810182526009860290920180548352600180820154848601526002820154928401929092526003810154606084015260048101546080840152600581015460a0840152600681015460c084015260078101546001600160a01b03811660e0850152600160a01b900460ff161515610100840152600801546101208301529083529092019101612650565b505050509050919050565b6001600160a01b038116600090815260036020526040812054815b818110156128cb576001600160a01b038416600090815260036020526040812080548390811061274c5761274c615ba0565b600091825260209182902060408051610140810182526009909302909101805483526001810154938301939093526002830154908201526003820154606082015260048201546080820152600582015460a0820152600682015460c082015260078201546001600160a01b03811660e083015260ff600160a01b909104161515610100820181905260089092015461012082015291506128b85760e0810180516001600160a01b0390811660009081526005602052604080822054935190516302c68be360e31b815290831660048201529092909116906316345f1890602401602060405180830381865afa158015612849573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061286d9190615c1e565b90506000826060015183600001516128859190615b74565b90506000670de0b6b3a764000061289c8385615b28565b6128a69190615b3f565b90506128b28188615b61565b96505050505b50806128c381615b87565b91505061271a565b5050919050565b6001600160a01b0381166000908152600a60209081526040808320805482518185028101850190935280835260609492939192909184015b828210156126f457600084815260209081902060408051608081018252600486029092018054835260018082015484860152600282015492840192909252600301546001600160a01b03166060830152908352909201910161290a565b6001600160a01b038216600090815260036020526040812080548291908490811061299457612994615ba0565b9060005260206000209060090201905060008160060154426129b69190615b74565b60078301549091506001600160a01b03166000805b6001600160a01b038316600090815260046020526040902054811015610e55576001600160a01b0383166000908152600460205260408120805483908110612a1557612a15615ba0565b600091825260209091206002909102018054600182015491925090818710612a5f57875461271090612a48908390615b28565b612a529190615b3f565b612a5c9086615b61565b94505b50505080612a6c90615b87565b90506129cb565b6000612a7d6151e2565b805490915060ff600160401b82041615906001600160401b0316600081158015612aa45750825b90506000826001600160401b03166001148015612ac05750303b155b905081158015612ace575080155b15612aec5760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff191660011785558315612b1657845460ff60401b1916600160401b1785555b612b1e61520b565b600080546001600160a01b03191633908117825581526001602081815260408320805460ff1990811684179091557f968a1791ad31618c63b086103baa804af57c3ca0efa33a191010fbb7741579fc80548216841790557f62cf4150b20d3255eba0565c087b9107980561f805ca8d8f9daa6ef061b5102180548216841790557f07c745cf21e9841960aca585c508e8b656ab26f500f65e063e363f1e5431cb338054821684179055738a9281ecece9b599c2f42d829c3d0d8e74b7083e84527f3951584e4df0c05d84015a72c4987ad1375f6f18e35cb23b25e1962d5cdc88b68054909116909217909155600f905269021e19e0c9bab24000007f49b20f23a4c98683b2444d4fceacc6fea988f6ff51924040a449ec627e73e8368190556013805491929091612c50908490615b61565b90915550506201fa406009558315612ca257845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b5050505050565b3360009081526001602052604090205460ff16612cd85760405162461bcd60e51b8152600401610e9790615be0565b612cf77355d398326f99059ff775485246999027b3197955338361517e565b6040518181527355d398326f99059ff775485246999027b31979559033907fa92ff919b850e4909ab2261d907ef955f11bc1716733a6cbece38d163a69af8a9060200160405180910390a350565b3360009081526001602052604090205460ff16612d745760405162461bcd60e51b8152600401610e9790615be0565b60125460009015612dbf576000600e60006001601254612d949190615b74565b81526020019081526020016000209050612dbb84601354836001015484600201548761521b565b9150505b6040805160a081018252858152602080820186815260135483850190815260608085018781524260808701908152601280546000908152600e885289902097518855945160018801559251600287015551600386015590516004909401939093555483518781529182018590529281018590527feadbedb993dfca23e4c79bf4fa5fe531c2e0e926258fabb8445e8bc5c472780f910160405180910390a260128054906000612e6d83615b87565b919050555050505050565b3360009081526001602052604090205460ff16612ea75760405162461bcd60e51b8152600401610e9790615be0565b6112bd7355d398326f99059ff775485246999027b31979553330846152b4565b3360009081526002602052604090205460ff16612ef65760405162461bcd60e51b8152600401610e9790615be0565b612f068686868686864242612435565b505050505050565b33600090815260156020908152604080832084845290915290208054612f465760405162461bcd60e51b8152600401610e9790615c88565b60028101546001600160a01b03163314612f935760405162461bcd60e51b815260206004820152600e60248201526d2737ba103a34329039b2b63632b960911b6044820152606401610e97565b805460175460009061271090612fa99084615b28565b612fb39190615b3f565b90506000612fc18284615b74565b336000908152600f6020526040812080549293508392909190612fe5908490615b61565b925050819055508060136000828254612ffe9190615b61565b9091555050811561304557604080518381526020810187905233917f4725a4d4de9bff212d0885095e27515072f73f427df55e52f37f241321ef88f9910160405180910390a25b336000818152601560209081526040808320898452825280832083815560018082018590556002820180546001600160a01b03191690556003909101849055938352601a825280832089845290915281205460195490926130a591615b74565b9050808214613166576000601982815481106130c3576130c3615ba0565b60009182526020918290206040805180820190915260029092020180546001600160a01b0316825260010154918101919091526019805491925082918590811061310f5761310f615ba0565b6000918252602080832084516002939093020180546001600160a01b0319166001600160a01b03938416178155938101516001909401939093558351168152601a8252604080822093830151825292909152208290555b601980548061317757613177615cb3565b600082815260208082206002600019949094019384020180546001600160a01b03191681556001018290559190925533808352601a825260408084208b855283528084209390935591518981527f73d12dec3eb3b445b6c9feb2fd559ba7c852c525bc1e59d8f7ff760c55df041d910160405180910390a250505050505050565b60608183111561323a5760405162461bcd60e51b815260206004820152600d60248201526c496e76616c69642072616e676560981b6044820152606401610e97565b60125482106132815760405162461bcd60e51b8152602060048201526013602482015272115b9908195c1bd8da081b9bdd08199bdd5b99606a1b6044820152606401610e97565b600061328d8484615b74565b613298906001615b61565b90506000816001600160401b038111156132b4576132b4615c08565b60405190808252806020026020018201604052801561331757816020015b6133046040518060a0016040528060008152602001600081526020016000815260200160008152602001600081525090565b8152602001906001900390816132d25790505b50905060005b828110156133ae57600e60006133338389615b61565b81526020019081526020016000206040518060a00160405290816000820154815260200160018201548152602001600282015481526020016003820154815260200160048201548152505082828151811061339057613390615ba0565b602002602001018190525080806133a690615b87565b91505061331d565b50949350505050565b6133bf615132565b600081116133df5760405162461bcd60e51b8152600401610e9790615c60565b6000601454116134285760405162461bcd60e51b81526020600482015260146024820152734275796f7574206e6f7420617661696c61626c6560601b6044820152606401610e97565b6000613433336110c9565b90508082111561347e5760405162461bcd60e51b8152602060048201526016602482015275496e73756666696369656e74206e6574207374616b6560501b6044820152606401610e97565b6000612710601454846134919190615b28565b61349b9190615b3f565b336000908152600f60205260408120805492935085929091906134bf908490615b74565b9250508190555082601360008282546134d89190615b74565b9091555050600c80549060006134ed83615b87565b9091555050336000908152601160209081526040918290208251606081018452600c548152918201849052600954909282019061352a9042615b61565b90528154600180820184556000938452602093849020835160039093020191825582840151908201556040918201516002909101555182815233917fa65a8b4f7f65a1063243d7f7e9e4da00ff767599acf21549ef2548a45d1695ae910160405180910390a250506112bd6001600080516020615cca83398151915255565b601b81815481106135b957600080fd5b6000918252602090912060069091020180546001820154600283015460038401546004850154600590950154939550919390926001600160a01b03918216911686565b6136306040518060800160405280600081526020016000815260200160006001600160a01b03168152602001600081525090565b506001600160a01b03918216600090815260156020908152604080832093835292815290829020825160808101845281548152600182015492810192909252600281015490931691810191909152600390910154606082015290565b3360009081526001602052604090205460ff166136bb5760405162461bcd60e51b8152600401610e9790615be0565b61271081111561370d5760405162461bcd60e51b815260206004820152601d60248201527f50657263656e746167652063616e6e6f742065786365656420313030250000006044820152606401610e97565b601455565b61371a615132565b3360009081526003602052604090205481106137705760405162461bcd60e51b8152602060048201526015602482015274092dcecc2d8d2c840eccae6e8d2dcce40d2dcc8caf605b1b6044820152606401610e97565b33600090815260036020526040812080548390811061379157613791615ba0565b906000526020600020906009020190508060070160149054906101000a900460ff16156137f35760405162461bcd60e51b815260206004820152601060248201526f56657374696e6720636f6d706c65746560801b6044820152606401610e97565b60006137ff3384612967565b9050816003015481101561384c5760405162461bcd60e51b8152602060048201526014602482015273125b9d985b1a590818db185a5b48185b5bdd5b9d60621b6044820152606401610e97565b600082600301548261385e9190615b74565b9050600081116138805760405162461bcd60e51b8152600401610e9790615bb6565b808360030160008282546138949190615b61565b909155505082546003840154106138bb5760078301805460ff60a01b1916600160a01b1790555b33600090815260066020526040902054156139c95760078301546001600160a01b039081166000818152600560205260408082205490516302c68be360e31b815260048101939093529092670de0b6b3a7640000928592909116906316345f1890602401602060405180830381865afa15801561393c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906139609190615c1e565b61396a9190615b28565b6139749190615b3f565b3360009081526006602052604090205490915081106139a257336000908152600660205260408120556139c7565b33600090815260066020526040812080548392906139c1908490615b74565b90915550505b505b6007838101546001600160a01b031660009081526020919091526040812080548392906139f7908490615b74565b9091555050336000908152600a6020526040808220815160808101909252600b8054919383929190613a2883615b87565b91905055815260200183815260200160095442613a459190615b61565b81526007860180546001600160a01b039081166020938401528454600180820187556000968752848720865160049093020191825585850151908201556040808601516002830155606090950151600390910180546001600160a01b0319169183169190911790559054168352600d905281208054839290613ac8908490615b61565b9091555050604080518281526000602082015233917f4a94c2c356e29a6583071e731bdacf2ca56565ba5efebcff6936eb7923b5172191015b60405180910390a25050506112bd6001600080516020615cca83398151915255565b613b4760405180606001604052806000815260200160008152602001600081525090565b6001600160a01b0383166000908152601160205260408120905b815481101561126b5783828281548110613b7d57613b7d615ba0565b90600052602060002090600302016000015403613be657818181548110613ba657613ba6615ba0565b9060005260206000209060030201604051806060016040529081600082015481526020016001820154815260200160028201548152505092505050610e5c565b80613bf081615b87565b915050613b61565b3360009081526001602052604090205460ff16613c275760405162461bcd60e51b8152600401610e9790615be0565b6001600160a01b038316613c755760405162461bcd60e51b8152602060048201526015602482015274496e76616c696420746f6b656e206164647265737360581b6044820152606401610e97565b600081118015613c8757506127108111155b613cc85760405162461bcd60e51b8152602060048201526012602482015271496e76616c69642070657263656e7461676560701b6044820152606401610e97565b6001600160a01b0383166000908152600460205260408120613ce9916153ab565b6000825b612710821015613d865782612710613d058285615b61565b1115613d1a57613d1783612710615b74565b90505b6001600160a01b0386166000908152600460209081526040808320815180830190925285825281830185815281546001818101845592865293909420915160029093029091019182559151910155613d728184615b61565b9250613d7e8583615b61565b915050613ced565b6040516001600160a01b038616907fde4b6ccc38b84f88129403b65a309f9b1c41d4c316bc2118d7614e449b9d4c4590600090a25050505050565b613df36040518060a0016040528060008152602001600081526020016000815260200160008152602001600081525090565b6012548210613e365760405162461bcd60e51b815260206004820152600f60248201526e115c1bd8da081b9bdd08199bdd5b99608a1b6044820152606401610e97565b506000908152600e6020908152604091829020825160a0810184528154815260018201549281019290925260028101549282019290925260038201546060820152600490910154608082015290565b60036020528160005260406000208181548110613ea157600080fd5b6000918252602090912060099091020180546001820154600283015460038401546004850154600586015460068701546007880154600890980154969950949750929591949093916001600160a01b03811691600160a01b90910460ff16908a565b6001600160a01b038216600090815260036020526040812080546060928392909185908110613f3457613f34615ba0565b600091825260208083206007600990930201918201546001600160a01b03168084526004909152604083205491935091816001600160401b03811115613f7c57613f7c615c08565b604051908082528060200260200182016040528015613fa5578160200160208202803683370190505b5090506000826001600160401b03811115613fc257613fc2615c08565b604051908082528060200260200182016040528015613feb578160200160208202803683370190505b50905060005b83811015614098576001600160a01b038516600090815260046020526040812080548390811061402357614023615ba0565b90600052602060002090600202019050806000015487600601546140479190615b61565b84838151811061405957614059615ba0565b602002602001018181525050806001015483838151811061407c5761407c615ba0565b60209081029190910101525061409181615b87565b9050613ff1565b5090955093505050505b9250929050565b6000806000806140b885610c94565b6001600160a01b0386166000908152600f60205260409020549091506140df908290615b74565b6001600160a01b0386166000908152600f602052604090205490945090925090505b9193909250565b3360009081526001602052604090205460ff166141375760405162461bcd60e51b8152600401610e9790615be0565b600855565b6001600160a01b0381166000908152601160209081526040808320805482518185028101850190935280835260609492939192909184015b828210156126f45783829060005260206000209060030201604051806060016040529081600082015481526020016001820154815260200160028201548152505081526020019060010190614174565b601160205281600052604060002081815481106141e057600080fd5b600091825260209091206003909102018054600182015460029092015490935090915083565b3360009081526001602052604090205460ff166142355760405162461bcd60e51b8152600401610e9790615be0565b600955565b601b54606090831061428e5760405162461bcd60e51b815260206004820152601960248201527f537461727420696e646578206f7574206f6620626f756e6473000000000000006044820152606401610e97565b600061429a8385615b61565b601b549091508111156142ac5750601b545b60006142b88583615b74565b6001600160401b038111156142cf576142cf615c08565b60405190808252806020026020018201604052801561434b57816020015b6143386040518060c001604052806000815260200160008152602001600081526020016000815260200160006001600160a01b0316815260200160006001600160a01b031681525090565b8152602001906001900390816142ed5790505b509050845b828110156133ae57601b818154811061436b5761436b615ba0565b60009182526020918290206040805160c0810182526006909302909101805483526001810154938301939093526002830154908201526003820154606082015260048201546001600160a01b03908116608083015260059092015490911660a0820152826143d98884615b74565b815181106143e9576143e9615ba0565b602002602001018190525080806143ff90615b87565b915050614350565b61440f615132565b3360009081526003602052604090205481106144655760405162461bcd60e51b8152602060048201526015602482015274092dcecc2d8d2c840eccae6e8d2dcce40d2dcc8caf605b1b6044820152606401610e97565b33600090815260036020526040812080548390811061448657614486615ba0565b9060005260206000209060090201905060006144a23384610d2a565b905081600401548110156144ef5760405162461bcd60e51b8152602060048201526014602482015273125b9d985b1a590818db185a5b48185b5bdd5b9d60621b6044820152606401610e97565b60008260040154826145019190615b74565b9050600081116145235760405162461bcd60e51b8152600401610e9790615bb6565b808360040160008282546145379190615b61565b90915550503360009081526011602052604090819020815160608101909252908061456587620f4240615b61565b81526020018381526020016009544261457e9190615b61565b90528154600180820184556000938452602093849020835160039093020191825582840151908201556040918201516002909101555182815233917f4e69fdc49495bcab2b4375781457ba16653a90eb4ffb6588351bdc39071433e29101613b01565b6001600160a01b0381166000908152600f60209081526040808320546010909252822054601254606093849390929091839061461e908390615b74565b90508060000361464f5750506040805160008082526020820181815282840190935290955090935091506141019050565b806001600160401b0381111561466757614667615c08565b604051908082528060200260200182016040528015614690578160200160208202803683370190505b509550806001600160401b038111156146ab576146ab615c08565b6040519080825280602002602001820160405280156146d4578160200160208202803683370190505b50945060005b818110156147b05760006146ee8285615b61565b90508088838151811061470357614703615ba0565b6020908102919091010152841561477c576000818152600e6020526040812060030154612710906147349088615b28565b61473e9190615b3f565b90508088848151811061475357614753615ba0565b60209081029190910101526147688188615b61565b96506147748187615b74565b95505061479d565b600087838151811061479057614790615ba0565b6020026020010181815250505b50806147a881615b87565b9150506146da565b505050509193909250565b6147c3615132565b6001600160a01b0382166000908152601560209081526040808320848452909152902080546148045760405162461bcd60e51b8152600401610e9790615c88565b336001600160a01b038416036148555760405162461bcd60e51b815260206004820152601660248201527543616e6e6f7420627579206f776e206c697374696e6760501b6044820152606401610e97565b805460018201546003830154600082841161487157600061487b565b61487b8385615b74565b905060008461488c83612710615b28565b6148969190615b3f565b905060006127106148a78380615b28565b6148b19190615b3f565b905060006127106148c28389615b28565b6148cc9190615b3f565b905060006148da8289615b74565b90506148fc7355d398326f99059ff775485246999027b3197955338d8a6152b4565b336000908152600f60205260408120805483929061491b908490615b61565b9250508190555080601360008282546149349190615b61565b90915550506001600160a01b038b1660009081526018602052604081208054899290614961908490615b61565b92505081905550601b6040518060c001604052808881526020014281526020018a81526020018981526020018d6001600160a01b03168152602001336001600160a01b031681525090806001815401808255809150506001900390600052602060002090600602016000909190919091506000820151816000015560208201518160010155604082015181600201556060820151816003015560808201518160040160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060a08201518160050160006101000a8154816001600160a01b0302191690836001600160a01b031602179055505050601560008c6001600160a01b03166001600160a01b0316815260200190815260200160002060008b815260200190815260200160002060008082016000905560018201600090556002820160006101000a8154906001600160a01b030219169055600382016000905550506000601a60008d6001600160a01b03166001600160a01b0316815260200190815260200160002060008c815260200190815260200160002054905060006001601980549050614b109190615b74565b9050808214614bd157600060198281548110614b2e57614b2e615ba0565b60009182526020918290206040805180820190915260029092020180546001600160a01b03168252600101549181019190915260198054919250829185908110614b7a57614b7a615ba0565b6000918252602080832084516002939093020180546001600160a01b0319166001600160a01b03938416178155938101516001909401939093558351168152601a8252604080822093830151825292909152208290555b6019805480614be257614be2615cb3565b6001900381819060005260206000209060020201600080820160006101000a8154906001600160a01b030219169055600182016000905550509055601a60008e6001600160a01b03166001600160a01b0316815260200190815260200160002060008d815260200190815260200160002060009055336001600160a01b03168d6001600160a01b03167f7bb39d095b04a9986ed34adf14d74c33294d0a9e807f02bf634d532507422eba8b8f604051614ca5929190918252602082015260400190565b60405180910390a35050505050505050505050611a836001600080516020615cca83398151915255565b3360009081526002602052604090205460ff16614cfe5760405162461bcd60e51b8152600401610e9790615be0565b6001600160a01b038216614d245760405162461bcd60e51b8152600401610e9790615c37565b60008111614d445760405162461bcd60e51b8152600401610e9790615c60565b6001600160a01b0382166000908152600f60205260409020546013548291614d6b91615b74565b614d759190615b61565b6013556001600160a01b0382166000818152600f602052604090819020839055517fec7e3594982826a1f90c8fc76513357b83a691b7f4e38b8be04f3d40f9b1583990614dc59084815260200190565b60405180910390a25050565b33600090815260156020908152604080832085845290915290208054614e095760405162461bcd60e51b8152600401610e9790615c88565b60028101546001600160a01b03163314614e565760405162461bcd60e51b815260206004820152600e60248201526d2737ba103a34329039b2b63632b960911b6044820152606401610e97565b60008211614e9b5760405162461bcd60e51b8152602060048201526012602482015271496e76616c69642073616c6520707269636560701b6044820152606401610e97565b60018101829055604080518381526020810185905233917f8e79b7ba8dab5ebfa59b9c6af1743c3ef14863680b3cc5ac837f8d636f76031c910160405180910390a2505050565b614eea615132565b336000908152600a602052604090208054614f3f5760405162461bcd60e51b81526020600482015260156024820152744e6f2076657374696e677320617661696c61626c6560581b6044820152606401610e97565b60005b815481101561507c576000828281548110614f5f57614f5f615ba0565b90600052602060002090600402019050838160000154148015614f86575060008160010154115b15615069578060020154421015614fd05760405162461bcd60e51b815260206004820152600e60248201526d15995cdd1a5b99c81b1bd8dad95960921b6044820152606401610e97565b60018101805460038301546000928390556001600160a01b0316808352600d6020526040832080549293919284929061500a908490615b74565b9091555061502490506001600160a01b038216338461517e565b604080518381526020810188905233917f933735aa8de6d7547d0126171b2f31b9c34dd00f3ecd4be85a0ba047db4fafef910160405180910390a250505050506112a6565b508061507481615b87565b915050614f42565b5060405162461bcd60e51b815260206004820152601160248201527015995cdd1a5b99c81b9bdd08199bdd5b99607a1b6044820152606401610e97565b3360009081526001602052604090205460ff166150e85760405162461bcd60e51b8152600401610e9790615be0565b6001600160a01b03811661510e5760405162461bcd60e51b8152600401610e9790615c37565b6001600160a01b03166000908152600260205260409020805460ff19166001179055565b600080516020615cca83398151915280546001190161516457604051633ee5aeb560e01b815260040160405180910390fd5b60029055565b6001600080516020615cca83398151915255565b6040516001600160a01b038381166024830152604482018390526151dd91859182169063a9059cbb906064015b604051602081830303815290604052915060e01b6020820180516001600160e01b0383818316178352505050506152f3565b505050565b6000807ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00610e5c565b615213615364565b610fa2615389565b6000821580615228575084155b15615235575060006152ab565b60008561524488612710615b28565b61524e9190615b3f565b905060008461525f87612710615b28565b6152699190615b3f565b905080821161527d576000925050506152ab565b60006152898284615b74565b9050600061271061529a8784615b28565b6152a49190615b3f565b9450505050505b95945050505050565b6040516001600160a01b0384811660248301528381166044830152606482018390526152ed9186918216906323b872dd906084016151ab565b50505050565b600080602060008451602086016000885af180615316576040513d6000823e3d81fd5b50506000513d9150811561532e57806001141561533b565b6001600160a01b0384163b155b156152ed57604051635274afe760e01b81526001600160a01b0385166004820152602401610e97565b61536c615391565b610fa257604051631afcd79f60e31b815260040160405180910390fd5b61516a615364565b600061539b6151e2565b54600160401b900460ff16919050565b50805460008255600202906000526020600020908101906112bd91905b808211156153e257600080825560018201556002016153c8565b5090565b80356001600160a01b03811681146153fd57600080fd5b919050565b60006020828403121561541457600080fd5b61541d826153e6565b9392505050565b6000806040838503121561543757600080fd5b615440836153e6565b946020939093013593505050565b60006020828403121561546057600080fd5b5035919050565b60008083601f84011261547957600080fd5b5081356001600160401b0381111561549057600080fd5b6020830191508360208260051b85010111156140a257600080fd5b600080602083850312156154be57600080fd5b82356001600160401b038111156154d457600080fd5b6154e085828601615467565b90969095509350505050565b600081518084526020808501945080840160005b8381101561551c57815187529582019590820190600101615500565b509495945050505050565b60608152600061553a60608301866154ec565b828103602084015261554c81866154ec565b915050826040830152949350505050565b6000806000806040858703121561557357600080fd5b84356001600160401b038082111561558a57600080fd5b61559688838901615467565b909650945060208701359150808211156155af57600080fd5b506155bc87828801615467565b95989497509550505050565b600080604083850312156155db57600080fd5b50508035926020909101359150565b60608082528451908201819052600090608090818401906020808901855b8381101561562d5781516001600160a01b031685529382019390820190600101615608565b50508583038187015261564083896154ec565b868103604088015287518082528289019450908201925060005b818110156156a45761569484865180518252602080820151908301526040808201516001600160a01b031690830152606090810151910152565b938201939285019260010161565a565b50919998505050505050505050565b600080604083850312156156c657600080fd5b6156cf836153e6565b91506156dd602084016153e6565b90509250929050565b600080600080600080600080610100898b03121561570357600080fd5b61570c896153e6565b975060208901359650604089013595506060890135945061572f60808a016153e6565b979a969950949793969560a0850135955060c08501359460e001359350915050565b602080825282518282018190526000919060409081850190868401855b828110156157f25781518051855286810151878601528581015186860152606080820151908601526080808201519086015260a0808201519086015260c0808201519086015260e0808201516001600160a01b031690860152610100808201511515908601526101209081015190850152610140909301929085019060010161576e565b5091979650505050505050565b602080825282518282018190526000919060409081850190868401855b828110156157f257815180518552868101518786015285810151868601526060908101516001600160a01b0316908501526080909301929085019060010161581c565b60008060006060848603121561587457600080fd5b505081359360208301359350604090920135919050565b60008060008060008060c087890312156158a457600080fd5b6158ad876153e6565b95506020870135945060408701359350606087013592506158d0608088016153e6565b915060a087013590509295509295509295565b6020808252825182820181905260009190848201906040850190845b818110156159505761593d83855180518252602081015160208301526040810151604083015260608101516060830152608081015160808301525050565b9284019260a092909201916001016158ff565b50909695505050505050565b81518152602080830151908201526040808301516001600160a01b0316908201526060808301519082015260808101610e5c565b81518152602080830151908201526040808301519082015260608101610e5c565b6000806000606084860312156159c657600080fd5b6159cf846153e6565b95602085013595506040909401359392505050565b60a08101610e5c828480518252602081015160208301526040810151604083015260608101516060830152608081015160808301525050565b604081526000615a3060408301856154ec565b82810360208401526152ab81856154ec565b6020808252825182820181905260009190848201906040850190845b8181101561595057615a858385518051825260208082015190830152604090810151910152565b9284019260609290920191600101615a5e565b602080825282518282018190526000919060409081850190868401855b828110156157f25781518051855286810151878601528581015186860152606080820151908601526080808201516001600160a01b039081169187019190915260a091820151169085015260c09093019290850190600101615ab5565b634e487b7160e01b600052601160045260246000fd5b8082028115828204841417610e5c57610e5c615b12565b600082615b5c57634e487b7160e01b600052601260045260246000fd5b500490565b80820180821115610e5c57610e5c615b12565b81810381811115610e5c57610e5c615b12565b600060018201615b9957615b99615b12565b5060010190565b634e487b7160e01b600052603260045260246000fd5b60208082526010908201526f4e6f7468696e6720746f20636c61696d60801b604082015260600190565b6020808252600e908201526d139bdd08185d5d1a1bdc9a5e995960921b604082015260600190565b634e487b7160e01b600052604160045260246000fd5b600060208284031215615c3057600080fd5b5051919050565b6020808252600f908201526e496e76616c6964206164647265737360881b604082015260600190565b6020808252600e908201526d125b9d985b1a5908185b5bdd5b9d60921b604082015260600190565b602080825260119082015270131a5cdd1a5b99c81b9bdd08199bdd5b99607a1b604082015260600190565b634e487b7160e01b600052603160045260246000fdfe9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f00a2646970667358221220f6c9687424e98a5eedc2ebd97c79e0c5a0cde5c699d22518c725ae3ffacddc4764736f6c63430008140033",
"linkReferences": {},
"deployedLinkReferences": {}
}