Loading
[ { "inputs": [ { "internalType": "address", "name": "protocolGovernor_", "type": "address" }, { "internalType": "address", "name": "pointsOperator_", "type": "address" }, { "components": [ { "internalType": "address", "name": "account", "type": "address" }, { "internalType": "address", "name": "liquidationReceiver", "type": "address" }, { "internalType": "address", "name": "collateral", "type": "address" }, { "internalType": "UD60x18", "name": "maxLtv", "type": "uint256" }, { "internalType": "UD60x18", "name": "riskThreshold", "type": "uint256" }, { "internalType": "UD60x18", "name": "liquidationThreshold", "type": "uint256" }, { "internalType": "UD60x18", "name": "collateralLiquidationBonus", "type": "uint256" }, { "internalType": "string", "name": "name", "type": "string" }, { "internalType": "string", "name": "symbol", "type": "string" }, { "internalType": "uint8", "name": "decimals", "type": "uint8" } ], "internalType": "struct CollateralAccountManager.InitParams", "name": "params", "type": "tuple" } ], "stateMutability": "nonpayable", "type": "constructor" }, { "inputs": [], "name": "AccountBeingLiquidated", "type": "error" }, { "inputs": [], "name": "AccountHealthy", "type": "error" }, { "inputs": [], "name": "AccountInsolvent", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "target", "type": "address" } ], "name": "AddressEmptyCode", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" } ], "name": "AddressInsufficientBalance", "type": "error" }, { "inputs": [], "name": "AllowanceOverflow", "type": "error" }, { "inputs": [], "name": "AllowanceUnderflow", "type": "error" }, { "inputs": [], "name": "ContractDoesNotExist", "type": "error" }, { "inputs": [], "name": "ERC1167FailedCreateClone", "type": "error" }, { "inputs": [], "name": "EnforcedPause", "type": "error" }, { "inputs": [], "name": "ExpectedPause", "type": "error" }, { "inputs": [], "name": "FailedInnerCall", "type": "error" }, { "inputs": [], "name": "HealthFactorSnapshotNotFound", "type": "error" }, { "inputs": [], "name": "InsufficientAllowance", "type": "error" }, { "inputs": [], "name": "InsufficientBalance", "type": "error" }, { "inputs": [], "name": "InvalidParams", "type": "error" }, { "inputs": [], "name": "InvalidPermit", "type": "error" }, { "inputs": [], "name": "OldAccountDoesNotExist", "type": "error" }, { "inputs": [ { "internalType": "uint256", "name": "x", "type": "uint256" }, { "internalType": "uint256", "name": "y", "type": "uint256" } ], "name": "PRBMath_MulDiv18_Overflow", "type": "error" }, { "inputs": [ { "internalType": "uint256", "name": "x", "type": "uint256" }, { "internalType": "uint256", "name": "y", "type": "uint256" }, { "internalType": "uint256", "name": "denominator", "type": "uint256" } ], "name": "PRBMath_MulDiv_Overflow", "type": "error" }, { "inputs": [], "name": "PermitExpired", "type": "error" }, { "inputs": [], "name": "ReentrancyGuardReentrantCall", "type": "error" }, { "inputs": [], "name": "RemainingDebtLeft", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "token", "type": "address" } ], "name": "SafeERC20FailedOperation", "type": "error" }, { "inputs": [], "name": "StrategyNotApproved", "type": "error" }, { "inputs": [], "name": "StrategyNotLiquidatable", "type": "error" }, { "inputs": [], "name": "TotalSupplyOverflow", "type": "error" }, { "inputs": [], "name": "TransferDisabled", "type": "error" }, { "inputs": [], "name": "Unauthorized", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" }, { "internalType": "string", "name": "role", "type": "string" } ], "name": "UnauthorizedRole", "type": "error" }, { "inputs": [], "name": "ZeroAddress", "type": "error" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "owner", "type": "address" }, { "indexed": true, "internalType": "address", "name": "account", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "AccountBorrowed", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "owner", "type": "address" }, { "indexed": true, "internalType": "address", "name": "account", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "AccountClaimed", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "owner", "type": "address" }, { "indexed": false, "internalType": "address", "name": "account", "type": "address" } ], "name": "AccountCreated", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "account", "type": "address" } ], "name": "AccountLiquidationCompleted", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "account", "type": "address" } ], "name": "AccountLiquidationStarted", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "owner", "type": "address" }, { "indexed": true, "internalType": "address", "name": "account", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "AccountRepaid", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "account", "type": "address" }, { "indexed": false, "internalType": "bool", "name": "status", "type": "bool" } ], "name": "AllowedAccountStatusUpdated", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "bool", "name": "status", "type": "bool" } ], "name": "AllowedAccountsModeUpdated", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "owner", "type": "address" }, { "indexed": true, "internalType": "address", "name": "spender", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "Approval", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "owner", "type": "address" }, { "indexed": false, "internalType": "address", "name": "account", "type": "address" }, { "indexed": false, "internalType": "address", "name": "sender", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "CollateralDeposit", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "address", "name": "account", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "collateralAmount", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "bonusCollateral", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "debtAmountNeeded", "type": "uint256" } ], "name": "CollateralLiquidation", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "UD60x18", "name": "collateralLiquidationBonus", "type": "uint256" } ], "name": "CollateralLiquidationBonusUpdated", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "owner", "type": "address" }, { "indexed": false, "internalType": "address", "name": "account", "type": "address" }, { "indexed": false, "internalType": "address", "name": "receiver", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "CollateralWithdrawal", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "account", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "FeesCharged", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "recipient", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "gasClaimed", "type": "uint256" } ], "name": "GasRefundClaimed", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "feeCollector", "type": "address" }, { "indexed": true, "internalType": "address", "name": "liquidator", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "protocolShare", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "liquidatorShare", "type": "uint256" } ], "name": "LiquidationFeesTaken", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "UD60x18", "name": "maxLtv", "type": "uint256" }, { "indexed": false, "internalType": "UD60x18", "name": "riskThreshold", "type": "uint256" }, { "indexed": false, "internalType": "UD60x18", "name": "liquidationThreshold", "type": "uint256" } ], "name": "LiquidationParametersUpdated", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "account", "type": "address" }, { "indexed": true, "internalType": "address", "name": "liquidationFeeTo", "type": "address" }, { "indexed": false, "internalType": "address", "name": "liquidationReceiver", "type": "address" } ], "name": "LiquidationReceiverCreated", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "UD60x18", "name": "tolerance", "type": "uint256" } ], "name": "MaximumSlippageToleranceUpdated", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "address", "name": "account", "type": "address" } ], "name": "Paused", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "operator", "type": "address" } ], "name": "PointsOperatorConfigured", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "account", "type": "address" }, { "indexed": false, "internalType": "bool", "name": "status", "type": "bool" } ], "name": "RepaymentModeUpdated", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "owner", "type": "address" }, { "indexed": true, "internalType": "address", "name": "account", "type": "address" }, { "indexed": true, "internalType": "address", "name": "strategy", "type": "address" } ], "name": "StrategyActivated", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "owner", "type": "address" }, { "indexed": true, "internalType": "address", "name": "account", "type": "address" }, { "indexed": true, "internalType": "address", "name": "strategy", "type": "address" } ], "name": "StrategyDeactivated", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "address", "name": "strategy", "type": "address" }, { "indexed": false, "internalType": "bool", "name": "approval", "type": "bool" } ], "name": "StrategyUpdated", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "from", "type": "address" }, { "indexed": true, "internalType": "address", "name": "to", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "Transfer", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "address", "name": "account", "type": "address" } ], "name": "Unpaused", "type": "event" }, { "inputs": [], "name": "DOMAIN_SEPARATOR", "outputs": [ { "internalType": "bytes32", "name": "result", "type": "bytes32" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" }, { "internalType": "uint256", "name": "borrowed", "type": "uint256" } ], "name": "_afterBorrow", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" } ], "name": "_afterLiquidationCompleted", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" } ], "name": "_afterLiquidationStarted", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" }, { "internalType": "uint256", "name": "", "type": "uint256" } ], "name": "_afterRepay", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "accountOwner", "type": "address" }, { "internalType": "uint256", "name": "debtAmount", "type": "uint256" }, { "internalType": "uint256", "name": "debtToCover", "type": "uint256" } ], "name": "_simulateCollateralLiquidation", "outputs": [ { "components": [ { "internalType": "uint256", "name": "actualDebtToLiquidate", "type": "uint256" }, { "internalType": "uint256", "name": "collateralAmount", "type": "uint256" }, { "internalType": "uint256", "name": "bonusCollateral", "type": "uint256" } ], "internalType": "struct AccountLib.CollateralLiquidation", "name": "", "type": "tuple" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "accountCount", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "accountImplementation", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "owner", "type": "address" }, { "internalType": "address", "name": "spender", "type": "address" } ], "name": "allowance", "outputs": [ { "internalType": "uint256", "name": "result", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "allowedAccountsMode", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "spender", "type": "address" }, { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "approve", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "", "type": "address" } ], "name": "approvedStrategies", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "owner", "type": "address" } ], "name": "balanceOf", "outputs": [ { "internalType": "uint256", "name": "result", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" } ], "name": "balanceOfAssets", "outputs": [ { "internalType": "uint256", "name": "assets", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "borrow", "outputs": [ { "internalType": "uint256", "name": "borrowed", "type": "uint256" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "amount", "type": "uint256" }, { "internalType": "address", "name": "recipient", "type": "address" } ], "name": "claim", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "claimMaxGas", "outputs": [ { "internalType": "uint256", "name": "gasClaimed", "type": "uint256" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "collateralLiquidationBonus", "outputs": [ { "internalType": "UD60x18", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "createAccount", "outputs": [ { "internalType": "address payable", "name": "account", "type": "address" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "decimals", "outputs": [ { "internalType": "uint8", "name": "", "type": "uint8" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "assets", "type": "uint256" }, { "internalType": "address", "name": "receiver", "type": "address" } ], "name": "deposit", "outputs": [ { "internalType": "uint256", "name": "updatedAssets", "type": "uint256" }, { "internalType": "uint256", "name": "shares", "type": "uint256" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "feeCollector_", "type": "address" }, { "internalType": "address", "name": "liquidationFeeTo", "type": "address" }, { "internalType": "uint256", "name": "protocolShare", "type": "uint256" }, { "internalType": "uint256", "name": "liquidatorShare", "type": "uint256" } ], "name": "emitLiquidationFeeEvent", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "owner_", "type": "address" } ], "name": "getAccount", "outputs": [ { "internalType": "address", "name": "account", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" } ], "name": "getAccountHealth", "outputs": [ { "components": [ { "internalType": "uint256", "name": "debtAmount", "type": "uint256" }, { "internalType": "uint256", "name": "collateralValue", "type": "uint256" }, { "internalType": "uint256", "name": "investmentValue", "type": "uint256" }, { "internalType": "UD60x18", "name": "healthFactor", "type": "uint256" }, { "internalType": "bool", "name": "isLiquidatable", "type": "bool" }, { "internalType": "bool", "name": "isRisky", "type": "bool" }, { "internalType": "bool", "name": "hasBadDebt", "type": "bool" } ], "internalType": "struct AccountLib.Health", "name": "health", "type": "tuple" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" } ], "name": "getAccountLiquidationStatus", "outputs": [ { "components": [ { "internalType": "bool", "name": "isLiquidating", "type": "bool" }, { "internalType": "uint256", "name": "liquidationStartTime", "type": "uint256" } ], "internalType": "struct AccountLib.LiquidationStatus", "name": "", "type": "tuple" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" } ], "name": "getAccountLoan", "outputs": [ { "components": [ { "internalType": "uint256", "name": "debtAmount", "type": "uint256" }, { "internalType": "uint256", "name": "collateralValue", "type": "uint256" }, { "internalType": "UD60x18", "name": "ltv", "type": "uint256" }, { "internalType": "UD60x18", "name": "maxLtv", "type": "uint256" } ], "internalType": "struct AccountLib.Loan", "name": "", "type": "tuple" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" } ], "name": "getAccountOwner", "outputs": [ { "internalType": "address", "name": "owner", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" }, { "internalType": "uint256", "name": "index", "type": "uint256" } ], "name": "getActiveStrategy", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" } ], "name": "getActiveStrategyCount", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" } ], "name": "getDebtAmount", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "getFeeCollector", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "getLendAsset", "outputs": [ { "internalType": "contract IERC20", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "getLiquidationFee", "outputs": [ { "components": [ { "internalType": "UD60x18", "name": "protocolShare", "type": "uint256" }, { "internalType": "UD60x18", "name": "liquidatorShare", "type": "uint256" } ], "internalType": "struct AccountLib.LiquidationFee", "name": "fee", "type": "tuple" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" }, { "internalType": "address", "name": "liquidationFeeTo", "type": "address" } ], "name": "getLiquidationReceiver", "outputs": [ { "internalType": "contract ILiquidationReceiver", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "getProtocolGovernor", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" } ], "name": "getTotalAccountValue", "outputs": [ { "internalType": "uint256", "name": "totalValue", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" } ], "name": "getTotalCollateralValue", "outputs": [ { "internalType": "uint256", "name": "totalValue", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "", "type": "address" } ], "name": "isAccountAllowed", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "strategy", "type": "address" } ], "name": "isApprovedStrategy", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "", "type": "address" } ], "name": "isCreatedAccount", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "receiver", "type": "address" } ], "name": "isLiquidationReceiver", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "lendingPool", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "", "type": "address" } ], "name": "liquidatableStrategies", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" }, { "internalType": "address", "name": "liquidationFeeTo", "type": "address" } ], "name": "liquidate", "outputs": [ { "internalType": "contract ILiquidationReceiver", "name": "liquidationReceiver_", "type": "address" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" }, { "internalType": "uint256", "name": "debtToCover", "type": "uint256" }, { "internalType": "address", "name": "liquidationFeeTo", "type": "address" } ], "name": "liquidateCollateral", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" }, { "internalType": "address", "name": "liquidationFeeTo", "type": "address" }, { "internalType": "address", "name": "strategy", "type": "address" }, { "internalType": "bytes", "name": "data", "type": "bytes" } ], "name": "liquidateStrategy", "outputs": [ { "internalType": "contract ILiquidationReceiver", "name": "liquidationReceiver_", "type": "address" } ], "stateMutability": "payable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "", "type": "address" }, { "internalType": "address", "name": "", "type": "address" } ], "name": "liquidationReceiver", "outputs": [ { "internalType": "contract ILiquidationReceiver", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "liquidationThreshold", "outputs": [ { "internalType": "UD60x18", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "maxLtv", "outputs": [ { "internalType": "UD60x18", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "name", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "owner", "type": "address" } ], "name": "nonces", "outputs": [ { "internalType": "uint256", "name": "result", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "pause", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" } ], "name": "pauseAccount", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "paused", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "owner", "type": "address" }, { "internalType": "address", "name": "spender", "type": "address" }, { "internalType": "uint256", "name": "value", "type": "uint256" }, { "internalType": "uint256", "name": "deadline", "type": "uint256" }, { "internalType": "uint8", "name": "v", "type": "uint8" }, { "internalType": "bytes32", "name": "r", "type": "bytes32" }, { "internalType": "bytes32", "name": "s", "type": "bytes32" } ], "name": "permit", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "assets", "type": "uint256" } ], "name": "previewDeposit", "outputs": [ { "internalType": "uint256", "name": "updatedAssets", "type": "uint256" }, { "internalType": "uint256", "name": "shares", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "shares", "type": "uint256" } ], "name": "previewWithdraw", "outputs": [ { "internalType": "uint256", "name": "assets", "type": "uint256" }, { "internalType": "uint256", "name": "updatedShares", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" }, { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "repay", "outputs": [ { "internalType": "uint256", "name": "repaid", "type": "uint256" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "", "type": "address" } ], "name": "repaymentMode", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "riskThreshold", "outputs": [ { "internalType": "UD60x18", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" }, { "internalType": "bool", "name": "status", "type": "bool" } ], "name": "setAllowedAccountStatus", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "bool", "name": "status", "type": "bool" } ], "name": "setAllowedAccountsMode", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address[]", "name": "accounts", "type": "address[]" }, { "internalType": "bool", "name": "status", "type": "bool" } ], "name": "setRepaymentMode", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" }, { "internalType": "uint256", "name": "debtToCover", "type": "uint256" } ], "name": "simulateCollateralLiquidation", "outputs": [ { "components": [ { "internalType": "uint256", "name": "actualDebtToLiquidate", "type": "uint256" }, { "internalType": "uint256", "name": "collateralAmount", "type": "uint256" }, { "internalType": "uint256", "name": "bonusCollateral", "type": "uint256" } ], "internalType": "struct AccountLib.CollateralLiquidation", "name": "", "type": "tuple" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "snapshotAccountHealthFactor", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "owner", "type": "address" }, { "internalType": "address", "name": "strategy", "type": "address" }, { "internalType": "uint256", "name": "amount", "type": "uint256" }, { "internalType": "bytes", "name": "data", "type": "bytes" } ], "name": "strategyDeposit", "outputs": [ { "internalType": "uint256", "name": "shares", "type": "uint256" } ], "stateMutability": "payable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "owner", "type": "address" }, { "internalType": "address", "name": "strategy", "type": "address" }, { "internalType": "uint256", "name": "assets", "type": "uint256" }, { "internalType": "bool", "name": "didRepay", "type": "bool" } ], "name": "strategyWithdrawal", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "symbol", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "totalAssets", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "totalSupply", "outputs": [ { "internalType": "uint256", "name": "result", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "", "type": "address" }, { "internalType": "uint256", "name": "", "type": "uint256" } ], "name": "transfer", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "pure", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "", "type": "address" }, { "internalType": "address", "name": "", "type": "address" }, { "internalType": "uint256", "name": "", "type": "uint256" } ], "name": "transferFrom", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "pure", "type": "function" }, { "inputs": [], "name": "unpause", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" } ], "name": "unpauseAccount", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "UD60x18", "name": "collateralLiquidationBonus_", "type": "uint256" } ], "name": "updateCollateralLiquidationBonus", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "UD60x18", "name": "maxLtv_", "type": "uint256" }, { "internalType": "UD60x18", "name": "riskThreshold_", "type": "uint256" }, { "internalType": "UD60x18", "name": "liquidationThreshold_", "type": "uint256" } ], "name": "updateLiquidationParameters", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "strategy", "type": "address" }, { "internalType": "bool", "name": "approval", "type": "bool" } ], "name": "updateStrategyApproval", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "shares", "type": "uint256" }, { "internalType": "address", "name": "receiver", "type": "address" } ], "name": "withdraw", "outputs": [ { "internalType": "uint256", "name": "updatedAssets", "type": "uint256" }, { "internalType": "uint256", "name": "updatedShares", "type": "uint256" } ], "stateMutability": "nonpayable", "type": "function" } ]
6101606040523480156200001257600080fd5b5060405162005f5d38038062005f5d833981016040819052620000359162000980565b604081015160e082015161010083015161012084015160208501516000805460ff191690556001600160a01b0388166080526001805587948694909390929091869081816200008362000318565b6001600160a01b038116620000ab5760405163d92e233d60e01b815260040160405180910390fd5b6001600160a01b0381163b620000d457604051630b0f2dd560e31b815260040160405180910390fd5b620000de620003dc565b6001600160a01b038116620001065760405163d92e233d60e01b815260040160405180910390fd5b6001600160a01b0381163b6200012f57604051630b0f2dd560e31b815260040160405180910390fd5b826001600160a01b038116620001585760405163d92e233d60e01b815260040160405180910390fd5b6001600160a01b0381163b6200018157604051630b0f2dd560e31b815260040160405180910390fd5b6001600160a01b03841660e05262000198620003dc565b6001600160a01b031660a052620001ae62000420565b6001600160a01b0390811660c0526009805460ff191660011790558b975087169550620001f49450505050505760405163d92e233d60e01b815260040160405180910390fd5b6001600160a01b0381163b6200021d57604051630b0f2dd560e31b815260040160405180910390fd5b6001600160a01b0385166101005260ff821661012052601062000241858262000b4a565b50601162000250848262000b4a565b505084519350506001600160a01b03831691506200028390505760405163d92e233d60e01b815260040160405180910390fd5b6001600160a01b0381163b620002ac57604051630b0f2dd560e31b815260040160405180910390fd5b81516001600160a01b0316610140526060820151608083015160a0840151620002d792919062000462565b506060810151601355608081015160145560c081015160125560a00151601555506200030383620004db565b6200030f838362000602565b50505062000c72565b60006080516001600160a01b03166321f8a7216040516020016200035e906020808252600e908201526d282924a1a2afa82927ab24a222a960911b604082015260600190565b604051602081830303815290604052805190602001206040518263ffffffff1660e01b81526004016200039391815260200190565b602060405180830381865afa158015620003b1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003d7919062000c16565b905090565b60006080516001600160a01b031663c824e1576040516020016200035e906020808252600c908201526b13115391125391d7d413d3d360a21b604082015260600190565b60006080516001600160a01b031663c824e1576040516020016200035e906020808252600a90820152691311539117d054d4d15560b21b604082015260600190565b60006200048b670de0b6b3a764000062000485670de0b6b3a7640000876200073b565b62000760565b905080831080156200049c57508282105b8015620004b65750620004b682670de0b6b3a76400001090565b15620004c25750505050565b604051635435b28960e11b815260040160405180910390fd5b601780546001600160a01b0383166001600160a01b031990911681179091556040516000919063c824e157906200052e9060200160208082526005908201526410931054d560da1b604082015260600190565b604051602081830303815290604052805190602001206040518263ffffffff1660e01b81526004016200056391815260200190565b602060405180830381865afa15801562000581573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620005a7919062000c16565b9050806001600160a01b0316634e606c476040518163ffffffff1660e01b8152600401600060405180830381600087803b158015620005e557600080fd5b505af1158015620005fa573d6000803e3d6000fd5b505050505050565b601880546001600160a01b0384166001600160a01b031990911681179091556040516000919063c824e157906200065c906020016020808252600c908201526b424c4153545f504f494e545360a01b604082015260600190565b604051602081830303815290604052805190602001206040518263ffffffff1660e01b81526004016200069191815260200190565b602060405180830381865afa158015620006af573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620006d5919062000c16565b6040516336b91f2b60e01b81526001600160a01b038481166004830152919250908216906336b91f2b90602401600060405180830381600087803b1580156200071d57600080fd5b505af115801562000732573d6000803e3d6000fd5b50505050505050565b6000620007596200075684670de0b6b3a76400008562000772565b90565b9392505050565b60006200075962000756838562000c34565b6000808060001985870985870292508281108382030391505080600003620007b157838281620007a657620007a662000c5c565b049250505062000759565b838110620007e757604051630c740aef60e31b815260048101879052602481018690526044810185905260640160405180910390fd5b600084868809600260036001881981018916988990049182028318808302840302808302840302808302840302808302840302808302840302918202909203026000889003889004909101858311909403939093029303949094049190911702949350505050565b80516001600160a01b03811681146200086757600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b60405161014081016001600160401b0381118282101715620008a857620008a86200086c565b60405290565b604051601f8201601f191681016001600160401b0381118282101715620008d957620008d96200086c565b604052919050565b600082601f830112620008f357600080fd5b81516001600160401b038111156200090f576200090f6200086c565b602062000925601f8301601f19168201620008ae565b82815285828487010111156200093a57600080fd5b60005b838110156200095a5785810183015182820184015282016200093d565b506000928101909101919091529392505050565b805160ff811681146200086757600080fd5b6000806000606084860312156200099657600080fd5b620009a1846200084f565b9250620009b1602085016200084f565b60408501519092506001600160401b0380821115620009cf57600080fd5b908501906101408288031215620009e557600080fd5b620009ef62000882565b620009fa836200084f565b815262000a0a602084016200084f565b602082015262000a1d604084016200084f565b6040820152606083015160608201526080830151608082015260a083015160a082015260c083015160c082015260e08301518281111562000a5d57600080fd5b62000a6b89828601620008e1565b60e083015250610100808401518381111562000a8657600080fd5b62000a948a828701620008e1565b828401525050610120915062000aac8284016200096e565b828201528093505050509250925092565b600181811c9082168062000ad257607f821691505b60208210810362000af357634e487b7160e01b600052602260045260246000fd5b50919050565b601f82111562000b45576000816000526020600020601f850160051c8101602086101562000b245750805b601f850160051c820191505b81811015620005fa5782815560010162000b30565b505050565b81516001600160401b0381111562000b665762000b666200086c565b62000b7e8162000b77845462000abd565b8462000af9565b602080601f83116001811462000bb6576000841562000b9d5750858301515b600019600386901b1c1916600185901b178555620005fa565b600085815260208120601f198616915b8281101562000be75788860151825594840194600190910190840162000bc6565b508582101562000c065787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b60006020828403121562000c2957600080fd5b62000759826200084f565b8082018082111562000c5657634e487b7160e01b600052601160045260246000fd5b92915050565b634e487b7160e01b600052601260045260246000fd5b60805160a05160c05160e0516101005161012051610140516151ef62000d6e6000396000818161052801528181612af901526137870152600081816106a0015261192001526000818161189d01528181613d3801528181613f25015281816141b50152818161423701526145530152600081816116f701526133fd015260008181610f96015281816126ed015281816129ec0152818161345e015281816135ad0152613638015260008181610bd70152818161136101528181611ca701528181611d210152613987015260008181610a4601528181612c6601528181612d01015281816130b601528181613d9d0152613e8101526151ef6000f3fe6080604052600436106103dc5760003560e01c80637ecebe00116101ff578063b43e6cb411610119578063e1d5c064116100a6578063e1d5c06414610daf578063e4af29fc14610dcf578063e59e801814610de5578063e927819214610e61578063ef48644614610e81578063ef8b30f714610ea1578063f2468d8714610ec1578063f9566d8214610ee1578063fbcbc0f114610f01578063fbf4198414610f2157600080fd5b8063b43e6cb414610c73578063b95ac1d514610c89578063bd1c5d7414610ca9578063c5ebeaec14610cc9578063c613aec014610ce9578063ca8bcd66146109af578063cb6c0c9a14610d19578063d505accf14610d39578063dd62ed3e14610d59578063ddd5e1b214610d8f57600080fd5b8063985d28aa11610197578063985d28aa14610aff57806399f8148e14610b385780639d919c6314610b715780639dca362f14610bb3578063a59a997314610bc8578063a612ce2b14610bfb578063a9059cbb14610c1b578063b17e32f914610c36578063b2b8c93f14610c4b578063b3c0a0b314610c6057600080fd5b80637ecebe00146109cf5780638456cb5914610a0257806386b9d81f14610a1757806389dbb85714610a3757806390401a7a14610a6a5780639159b20614610a8a57806394408b9a14610aaa57806395d89b4114610aca578063971d6c9514610adf57600080fd5b80633644e515116102fb5780635507f5e9116102885780635507f5e9146108af5780635a287cb2146108cf5780635af451cc146108ef5780635c975abb146109045780636806eaab1461091c5780636c648fc41461093c5780636e553f651461095c57806370a082311461097c5780637af0bdfd1461099c5780637b91c265146109af57600080fd5b80633644e515146106e05780633a12c6da146106f55780633f4ba83a1461070b5780634031234c14610720578063410051a514610736578063442b172c1461078957806347a873cb146107c257806347e41a89146107e2578063484d1ad61461085f5780635257decd1461087f57600080fd5b806312fde4b71161037957806312fde4b7146105575780631534a2771461056c57806318160ddd146105ad5780631e8a84b1146105ca5780631fd9a8c6146105ec57806322867d781461061c57806323b872dd1461063c578063286569051461065c578063313ce5671461068c57806334e598a0146106ca57600080fd5b8062f714ce146103e157806301e1d1141461041b5780630674fa411461043a57806306fdde031461045a5780630914b18f1461047c578063095ea7b3146104bc5780630a28a477146104dc5780630ba212ee146104fc57806311464fbe14610516575b600080fd5b3480156103ed57600080fd5b506104016103fc366004614866565b610f51565b604080519283526020830191909152015b60405180910390f35b34801561042757600080fd5b50600f545b604051908152602001610412565b34801561044657600080fd5b5061042c610455366004614896565b610f7c565b34801561046657600080fd5b5061046f6110e1565b6040516104129190614903565b34801561048857600080fd5b506104ac610497366004614896565b60026020526000908152604090205460ff1681565b6040519015158152602001610412565b3480156104c857600080fd5b506104ac6104d7366004614916565b611173565b3480156104e857600080fd5b506104016104f7366004614942565b6111c7565b34801561050857600080fd5b506009546104ac9060ff1681565b34801561052257600080fd5b5061054a7f000000000000000000000000000000000000000000000000000000000000000081565b604051610412919061495b565b34801561056357600080fd5b5061054a6111d9565b34801561057857600080fd5b5061054a61058736600461496f565b60056020908152600092835260408084209091529082529020546001600160a01b031681565b3480156105b957600080fd5b506805345cdf77eb68f44c5461042c565b3480156105d657600080fd5b506105ea6105e53660046149b6565b6111e8565b005b3480156105f857600080fd5b506104ac610607366004614896565b600a6020526000908152604090205460ff1681565b34801561062857600080fd5b5061042c610637366004614916565b6112f2565b34801561064857600080fd5b506104ac6106573660046149e4565b611484565b34801561066857600080fd5b506104ac610677366004614896565b600d6020526000908152604090205460ff1681565b34801561069857600080fd5b5060405160ff7f0000000000000000000000000000000000000000000000000000000000000000168152602001610412565b3480156106d657600080fd5b5061042c60125481565b3480156106ec57600080fd5b5061042c61149f565b34801561070157600080fd5b5061042c60135481565b34801561071757600080fd5b506105ea61151c565b34801561072c57600080fd5b5061042c60155481565b34801561074257600080fd5b50610756610751366004614896565b611539565b60405161041291908151815260208083015190820152604080830151908201526060918201519181019190915260800190565b34801561079557600080fd5b5061054a6107a4366004614896565b6001600160a01b039081166000908152600360205260409020541690565b3480156107ce57600080fd5b506105ea6107dd366004614916565b6115c6565b3480156107ee57600080fd5b506108426107fd366004614896565b60408051808201825260008082526020918201819052825180840184526001600160a01b03949094168082526004808452938220548015158652915291815282015290565b604080518251151581526020928301519281019290925201610412565b34801561086b57600080fd5b506105ea61087a366004614896565b6115f5565b34801561088b57600080fd5b506104ac61089a366004614896565b60066020526000908152604090205460ff1681565b3480156108bb57600080fd5b506105ea6108ca366004614a25565b61165e565b3480156108db57600080fd5b5061054a6108ea36600461496f565b6116f0565b3480156108fb57600080fd5b506105ea61174b565b34801561091057600080fd5b5060005460ff166104ac565b34801561092857600080fd5b506105ea610937366004614a78565b6117ff565b34801561094857600080fd5b5061042c610957366004614896565b61185a565b34801561096857600080fd5b50610401610977366004614866565b611963565b34801561098857600080fd5b5061042c610997366004614896565b611979565b61042c6109aa366004614b4a565b611991565b3480156109bb57600080fd5b506105ea6109ca366004614896565b611a27565b3480156109db57600080fd5b5061042c6109ea366004614896565b6338377508600c908152600091909152602090205490565b348015610a0e57600080fd5b506105ea611a4c565b348015610a2357600080fd5b5061054a610a3236600461496f565b611a67565b348015610a4357600080fd5b507f000000000000000000000000000000000000000000000000000000000000000061054a565b348015610a7657600080fd5b5061054a610a85366004614916565b611ae3565b348015610a9657600080fd5b5061042c610aa5366004614896565b611b05565b348015610ab657600080fd5b506105ea610ac5366004614896565b611b18565b348015610ad657600080fd5b5061046f611b66565b348015610aeb57600080fd5b506105ea610afa366004614bb5565b611b75565b348015610b0b57600080fd5b506104ac610b1a366004614896565b6001600160a01b03166000908152600c602052604090205460ff1690565b348015610b4457600080fd5b506104ac610b53366004614896565b6001600160a01b031660009081526007602052604090205460ff1690565b348015610b7d57600080fd5b50610b91610b8c366004614bfb565b611c00565b6040805182518152602080840151908201529181015190820152606001610412565b348015610bbf57600080fd5b5061054a611c6c565b348015610bd457600080fd5b507f000000000000000000000000000000000000000000000000000000000000000061054a565b348015610c0757600080fd5b5061042c610c16366004614896565b611c8d565b348015610c2757600080fd5b506104ac610657366004614916565b348015610c4257600080fd5b5061054a611d1d565b348015610c5757600080fd5b5061042c611da1565b61054a610c6e366004614c30565b611fb6565b348015610c7f57600080fd5b5061042c60145481565b348015610c9557600080fd5b506105ea610ca4366004614c8c565b612264565b348015610cb557600080fd5b506105ea610cc4366004614d4f565b612344565b348015610cd557600080fd5b5061042c610ce4366004614942565b6123b7565b348015610cf557600080fd5b506104ac610d04366004614896565b600c6020526000908152604090205460ff1681565b348015610d2557600080fd5b506105ea610d343660046149b6565b612447565b348015610d4557600080fd5b506105ea610d54366004614d8a565b6124b9565b348015610d6557600080fd5b5061042c610d7436600461496f565b602052637f5e9f20600c908152600091909152603490205490565b348015610d9b57600080fd5b506105ea610daa366004614866565b612642565b348015610dbb57600080fd5b5061042c610dca366004614896565b612782565b348015610ddb57600080fd5b5061042c60085481565b348015610df157600080fd5b50610e05610e00366004614896565b6127a3565b6040516104129190600060e0820190508251825260208301516020830152604083015160408301526060830151606083015260808301511515608083015260a0830151151560a083015260c0830151151560c083015292915050565b348015610e6d57600080fd5b506105ea610e7c366004614942565b6128aa565b348015610e8d57600080fd5b506105ea610e9c366004614916565b6128f2565b348015610ead57600080fd5b50610401610ebc366004614942565b612914565b348015610ecd57600080fd5b50610b91610edc366004614916565b612932565b348015610eed57600080fd5b506105ea610efc366004614dfb565b61296e565b348015610f0d57600080fd5b5061054a610f1c366004614896565b612ad4565b348015610f2d57600080fd5b50610f36612b26565b60408051825181526020928301519281019290925201610412565b600080610f5c612b54565b610f67338486612b7e565b9092509050610f7560018055565b9250929050565b6040516370a0823160e01b81526000906001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906370a0823190610fcb90859060040161495b565b602060405180830381865afa158015610fe8573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061100c9190614e3d565b905060005b6001600160a01b0383166000908152600e6020526040902061103290612c08565b8110156110db576001600160a01b0383166000908152600e6020526040902061105b9082612c12565b6001600160a01b0316631c083f6a846040518263ffffffff1660e01b8152600401611086919061495b565b602060405180830381865afa1580156110a3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110c79190614e3d565b6110d19083614e6c565b9150600101611011565b50919050565b6060601080546110f090614e7f565b80601f016020809104026020016040519081016040528092919081815260200182805461111c90614e7f565b80156111695780601f1061113e57610100808354040283529160200191611169565b820191906000526020600020905b81548152906001019060200180831161114c57829003601f168201915b5050505050905090565b600082602052637f5e9f20600c5233600052816034600c205581600052602c5160601c337f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560206000a35060015b92915050565b6000806111d383612c1e565b93915050565b60006111e3612c62565b905090565b6111f133612cf3565b61124557335b60408051637974da6f60e01b81526001600160a01b0390921660048301526024820152600e60448201526d282927aa27a1a7a62fa0a226a4a760911b60648201526084015b60405180910390fd5b6001600160a01b0382166000908152600c60209081526040808320805460ff1916851515179055600d90915290205460ff161580156112815750805b156112ab576001600160a01b0382166000908152600d60205260409020805460ff19168215151790555b604080516001600160a01b038416815282151560208201527ffc2e7375e815d084de88de8e8e356e71102275019b06a1b529eee0c8ab57cd34910160405180910390a15050565b60006112fc612b54565b6001600160a01b03831660009081526006602052604090205460ff1615611335576040516282b42960e81b815260040160405180910390fd5b60405163c883b2e560e01b8152600481018390526001600160a01b0384811660248301523360448301527f0000000000000000000000000000000000000000000000000000000000000000169063c883b2e5906064016020604051808303816000875af11580156113aa573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113ce9190614e3d565b6001600160a01b0384811660008181526003602090815260409182902054915185815294955091939216917fa42e379bd7db0adade1690b7b2b3b81c2419c87c3c9f0c4f4f5a4da3ce8a8966910160405180910390a36040516347a873cb60e01b815230906347a873cb906114499086908590600401614eb3565b600060405180830381600087803b15801561146357600080fd5b505af1158015611477573d6000803e3d6000fd5b505050506111c160018055565b600060405163a24e573d60e01b815260040160405180910390fd5b6000806114aa6110e1565b8051906020012090506040517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f81528160208201527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc6604082015246606082015230608082015260a081209250505090565b61152533612cf3565b61152f57336111f7565b611537612d9f565b565b6115646040518060800160405280600081526020016000815260200160008152602001600081525090565b600061156f8361185a565b9050600061157c84611c8d565b9050600082156115955761159283835b90612deb565b90505b60405180608001604052808381526020018481526020018281526020016115bb60135490565b905295945050505050565b3330146115e85733604051637974da6f60e01b815260040161123c9190614ecc565b6115f182612e03565b5050565b6115fe33612cf3565b61160857336111f7565b806001600160a01b0316638456cb596040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561164357600080fd5b505af1158015611657573d6000803e3d6000fd5b5050505050565b3360009081526002602052604090205460ff1661168d576040516282b42960e81b815260040160405180910390fd5b60095460ff1680156116af5750336000908152600a602052604090205460ff16155b156116cc576040516282b42960e81b815260040160405180910390fd5b6116d4612b54565b6116e13385858585612ed1565b6116ea60018055565b50505050565b60006117447f00000000000000000000000000000000000000000000000000000000000000008484604051602001611729929190614efc565b60405160208183030381529060405280519060200120613052565b9392505050565b3360009081526002602052604090205460ff1661177a576040516282b42960e81b815260040160405180910390fd5b60095460ff16801561179c5750336000908152600a602052604090205460ff16155b156117b9576040516282b42960e81b815260040160405180910390fd5b60006117c4336127a3565b90508060800151156117e957604051635e3b451760e11b815260040160405180910390fd5b60600151336000908152600b6020526040902055565b61180833612cf3565b61181257336111f7565b6009805460ff19168215159081179091556040519081527f3e6d4c4e37a1be5fa07f485702698fb4c262e3e4d782c8eaeef839a74250ab94906020015b60405180910390a150565b6001600160a01b038082166000908152600360205260408120549091168161188182611b05565b9050600061188d6130b2565b6001600160a01b031663b3596f077f00000000000000000000000000000000000000000000000000000000000000006040518263ffffffff1660e01b81526004016118d8919061495b565b602060405180830381865afa1580156118f5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119199190614e3d565b90506119467f0000000000000000000000000000000000000000000000000000000000000000600a614ffa565b6119508284615009565b61195a9190615036565b95945050505050565b60008061196e612b54565b610f67843385613115565b6387a211a2600c908152600091909152602090205490565b3360009081526002602052604081205460ff166119c0576040516282b42960e81b815260040160405180910390fd5b60095460ff1680156119e25750336000908152600a602052604090205460ff16155b156119ff576040516282b42960e81b815260040160405180910390fd5b611a07612b54565b611a1433868686866131b4565b9050611a1f60018055565b949350505050565b333014611a495733604051637974da6f60e01b815260040161123c9190614ecc565b50565b611a5533612cf3565b611a5f57336111f7565b611537613380565b6000611a7383836133bd565b5080915050806001600160a01b031663402d88836040518163ffffffff1660e01b81526004016020604051808303816000875af1158015611ab8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611adc9190614e3d565b5092915050565b6001600160a01b0382166000908152600e602052604081206117449083612c12565b60006111c1611b1383611979565b612c1e565b611b2133612cf3565b611b2b57336111f7565b806001600160a01b0316633f4ba83a6040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561164357600080fd5b6060601180546110f090614e7f565b3360009081526007602052604090205460ff16611ba4576040516282b42960e81b815260040160405180910390fd5b826001600160a01b0316846001600160a01b03167fb15b5161080eeb6130c6088d7b1e8eceb1092d2a15836c769bd094d9a68c8c6b8484604051611bf2929190918252602082015260400190565b60405180910390a350505050565b611c08614830565b6000838311611c175782611c19565b835b90506000611c2686611b05565b90506000806000611c378585613660565b92509250925084811015611c49578094505b506040805160608101825294855260208501929092529083015250949350505050565b6000611c76612b54565b611c7f33613745565b9050611c8a60018055565b90565b60405163a612ce2b60e01b81526000906001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063a612ce2b90611cdc90859060040161495b565b602060405180830381865afa158015611cf9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111c19190614e3d565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316635c222bad6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611d7d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111e39190615058565b60175460405160009182916001600160a01b039091169063c824e15790611de49060200160208082526005908201526410931054d560da1b604082015260600190565b604051602081830303815290604052805190602001206040518263ffffffff1660e01b8152600401611e1891815260200190565b602060405180830381865afa158015611e35573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e599190615058565b6017546040519192506000916001600160a01b03909116906321f8a72190611e8390602001615075565b604051602081830303815290604052805190602001206040518263ffffffff1660e01b8152600401611eb791815260200190565b602060405180830381865afa158015611ed4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ef89190615058565b60405163662aa11d60e01b81529091506001600160a01b0383169063662aa11d90611f299030908590600401614efc565b6020604051808303816000875af1158015611f48573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f6c9190614e3d565b9250806001600160a01b03167f9c3c39d0eedd3d18612a0e8e76cc7bc873815d3e19206dbbf9825989b1c95e6b84604051611fa991815260200190565b60405180910390a2505090565b6001600160a01b0382166000908152600d602052604081205460ff16611fef57604051635acd304f60e11b815260040160405180910390fd5b611ff985856133bd565b5090506000806001600160a01b0385161561207357846001600160a01b031663ea2c58046040518163ffffffff1660e01b8152600401602060405180830381865afa15801561204c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120709190614e3d565b90505b60008115612088576120853a83615009565b90505b604051639035268760e01b81526001600160a01b0389169063903526879083906120bc908a90899089908c9060040161509c565b60206040518083038185885af11580156120da573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906120ff9190614e3d565b506001600160a01b038616158015906121825750604051630e041fb560e11b81526001600160a01b03871690631c083f6a9061213f908b9060040161495b565b602060405180830381865afa15801561215c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121809190614e3d565b155b156121f4576001600160a01b0388166000908152600e602052604090206121a990876138d1565b506001600160a01b03888116600081815260036020526040808220549051848b169491909116917f9910e38adb465481c843222dba5590cfcb99a51e28f2fc633b66289ef06ba4e291a45b836001600160a01b031663402d88836040518163ffffffff1660e01b81526004016020604051808303816000875af1158015612234573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122589190614e3d565b50505050949350505050565b61226d33612cf3565b61227757336111f7565b60005b825181101561233f57816006600085848151811061229a5761229a6150cf565b60200260200101516001600160a01b03166001600160a01b0316815260200190815260200160002060006101000a81548160ff0219169083151502179055508281815181106122eb576122eb6150cf565b60200260200101516001600160a01b03167fd83dbe16b03a209079c3830ebf6cd20777cbd56b826049cf40a796419f2f02888360405161232f911515815260200190565b60405180910390a260010161227a565b505050565b61234d33612cf3565b61235757336111f7565b6123628383836138e6565b60138390556014829055601581905560408051848152602081018490529081018290527fafabe1c7d6c2e86cbfc67a8ba53d25a7f8ef59b97d972dd4bf7d7525ba7fdddf9060600160405180910390a1505050565b3360009081526002602052604081205460ff166123e6576040516282b42960e81b815260040160405180910390fd5b60095460ff1680156124085750336000908152600a602052604090205460ff16155b15612425576040516282b42960e81b815260040160405180910390fd5b61242d612b54565b6124373383613957565b905061244260018055565b919050565b61245033612cf3565b61245a57336111f7565b6001600160a01b0382166000818152600a6020908152604091829020805460ff191685151590811790915591519182527f0668b1a5a4760c02f4105e473c3e60b8225bd76bf409b7316cb19cb5d299d80f910160405180910390a25050565b60006124c36110e1565b805190602001209050844211156124e257631a15a3cc6000526004601cfd5b6040518860601b60601c98508760601b60601c975065383775081901600e52886000526020600c2080547f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f83528360208401527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc6604084015246606084015230608084015260a08320602e527f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c983528a60208401528960408401528860608401528060808401528760a084015260c08320604e526042602c206000528660ff1660205285604052846060526020806080600060015afa8b3d51146125ee5763ddafbaef6000526004601cfd5b0190556303faf4f960a51b88176040526034602c2087905587897f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925602060608501a360405250506000606052505050505050565b806001600160a01b03811661266a5760405163d92e233d60e01b815260040160405180910390fd5b3360009081526002602052604090205460ff16612699576040516282b42960e81b815260040160405180910390fd5b60095460ff1680156126bb5750336000908152600a602052604090205460ff16155b156126d8576040516282b42960e81b815260040160405180910390fd5b6126e0612b54565b6127156001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016338486613ac0565b612720336001613b1a565b61272933612e03565b336000818152600360209081526040918290205491518681526001600160a01b03909216917f01bfef2bf622406285ca1a4057a39432c0ba15e2069c29ae6098c22affdeaf45910160405180910390a361233f60018055565b6001600160a01b0381166000908152600e602052604081206111c190612c08565b6127e96040518060e00160405280600081526020016000815260200160008152602001600081526020016000151581526020016000151581526020016000151581525090565b60006127f483610f7c565b905060006128018461185a565b9050600061280e85611c8d565b9050600061281c8484614e6c565b6040805160e081018252848152602081018690529081018690526000606082018190526080820181905260a0820181905260c08201529550905081158015906128655750600081115b1561289357612874828261158c565b60608601819052601454811060a08701526015541160808601526128a1565b81156128a157600160c08601525b50505050919050565b6128b333612cf3565b6128bd57336111f7565b60128190556040518181527fdb64565131146ad5b331cd402e87616cc7ac395a1c26c5b7e2a25a762f34ce239060200161184f565b3330146115f15733604051637974da6f60e01b815260040161123c9190614ecc565b60008061292083613be9565b905061292b81612c1e565b9150915091565b61293a614830565b6001600160a01b038084166000908152600360205260408120549091169061296185611c8d565b905061195a828286611c00565b61297783613c14565b6001600160a01b038084166000908152600360205260408120549091169061299e85611c8d565b905060006129ad838387611c00565b90506129cd8333836040015184602001516129c891906150e5565b613cc6565b6129dc83858360400151613cc6565b8051612a16906001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169033908990613ac0565b8051604051631b8fec7360e11b815260048101919091526001600160a01b0387169063371fd8e690602401600060405180830381600087803b158015612a5b57600080fd5b505af1158015612a6f573d6000803e3d6000fd5b505050602080830151604080850151855182516001600160a01b038d168152948501939093529083015260608201527fe32ec3ea3154879f27d5367898ab3a5ac6b68bf921d7cc610720f417c5cb243c915060800160405180910390a1505050505050565b6001600160a01b038082166000908152601660205260409020541680612442576111c17f0000000000000000000000000000000000000000000000000000000000000000612b2184613d5f565b613052565b6040805180820190915260008082526020820152612b42613d99565b8152612b4c613e7d565b602082015290565b600260015403612b7757604051633ee5aeb560e01b815260040160405180910390fd5b6002600155565b600080612b8c858585613ee2565b90925090506000612b9c86612ad4565b9050612ba9816001613b1a565b612bb281612e03565b856001600160a01b03167f0b260cc77140cab3405675836fc971314e656137208b77414be51fafd58ae34b612be688612ad4565b8786604051612bf7939291906150f8565b60405180910390a250935093915050565b60006111c1825490565b60006117448383613f54565b6000612c316805345cdf77eb68f44c5490565b15612c5e576805345cdf77eb68f44c54600f545b612c4f9084615009565b612c599190615036565b6111c1565b5090565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166321f8a721604051602001612ca290615075565b604051602081830303815290604052805190602001206040518263ffffffff1660e01b8152600401612cd691815260200190565b602060405180830381865afa158015611d7d573d6000803e3d6000fd5b6000816001600160a01b03167f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663893d20e86040518163ffffffff1660e01b8152600401602060405180830381865afa158015612d5d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612d819190615058565b6001600160a01b031614612d9757506000919050565b506001919050565b612da7613f7e565b6000805460ff191690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b604051612de1919061495b565b60405180910390a1565b6000611744611c8a84670de0b6b3a764000085613fa1565b6001600160a01b03811660009081526004602052604090205415611a49576000612e2c826127a3565b905080608001516115f1576001600160a01b038216600081815260046020526040808220829055517fccfc0aeacebc685763eb86a3e35dfeac830fd983f2f597b3f142ee667d28acc49190a2604051637b91c26560e01b81523090637b91c26590612e9b90859060040161495b565b600060405180830381600087803b158015612eb557600080fd5b505af1158015612ec9573d6000803e3d6000fd5b505050505050565b6001600160a01b03831615801590612f535750604051630e041fb560e11b81526001600160a01b03841690631c083f6a90612f1090889060040161495b565b602060405180830381865afa158015612f2d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612f519190614e3d565b155b15612fc6576001600160a01b0385166000908152600e60205260409020612f7a90846138d1565b50826001600160a01b0316856001600160a01b0316856001600160a01b03167f9910e38adb465481c843222dba5590cfcb99a51e28f2fc633b66289ef06ba4e260405160405180910390a45b8015613040576000612fd786614075565b90506000612fe4876127a3565b606001519050818110801561300257506000612fff886127a3565b51115b15613020576040516334b3313560e11b815260040160405180910390fd5b50506001600160a01b0385166000908152600b6020526040812055613049565b613049856140ac565b61165785612e03565b6040513060388201526f5af43d82803e903d91602b57fd5bf3ff602482015260148101839052733d602d80600a3d3981f3363d3d373d3d3d363d738152605881018290526037600c82012060788201526055604390910120600090611744565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166321f8a721604051602001612ca2906020808252600e908201526d282924a1a2afa82927ab24a222a960911b604082015260600190565b600080600061312384612ad4565b6001600160a01b03811660009081526002602052604090205490915060ff1661315f57604051635435b28960e11b815260040160405180910390fd5b61316986856140b7565b909350915061317781612e03565b836001600160a01b03167fd88c5369d398bea6a7390a17ce98af43f4aacc78fd3587bc368993d98206a304828786604051612bf7939291906150f8565b6001600160a01b0383166000908152600c602052604081205460ff166131ed57604051631a22ce4f60e11b815260040160405180910390fd5b6001600160a01b0386166000908152600e6020526040902061320f90856140d0565b1561325f57836001600160a01b0316866001600160a01b0316866001600160a01b03167ff6fa2840bdce616f9e9bbe7d65ca8bcca0532f1c4aa348c65c79c2cbf6ebf1f960405160405180910390a45b60006001600160a01b038516156132d557846001600160a01b0316638a7c32e16040518163ffffffff1660e01b8152600401602060405180830381865afa1580156132ae573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906132d29190614e3d565b90505b600081156132ea576132e73a83615009565b90505b604051634b18bb2360e11b81526001600160a01b03871690639631764690839061331c90899089908e9060040161511c565b60206040518083038185885af115801561333a573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061335f9190614e3d565b925061336c336001613b1a565b61337588612e03565b505095945050505050565b6133886140e5565b6000805460ff191660011790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258612dd43390565b6000806133c984613c14565b6001600160a01b0380851660009081526005602090815260408083208785168452909152902054169150816135965761344a7f0000000000000000000000000000000000000000000000000000000000000000858560405160200161342f929190614efc565b60405160208183030381529060405280519060200120614109565b604080516080810182526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000811682523060208301908152888216838501908152888316606085019081529451630415cc1560e01b81529351831660048501529051821660248401525181166044830152915182166064820152919350831690630415cc1590608401600060405180830381600087803b1580156134f457600080fd5b505af1158015613508573d6000803e3d6000fd5b505050506001600160a01b03848116600081815260056020908152604080832088861680855290835281842080546001600160a01b0319169689169687179055948352600790915290819020805460ff19166001179055517f39ee3b3ae7d535f7a027ce37245120586dd668f09e21538a7e0e8d7d5b3f16379061358d90869061495b565b60405180910390a35b6040516370a0823160e01b81526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906370a08231906135e290879060040161495b565b602060405180830381865afa1580156135ff573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906136239190614e3d565b90508015610f7557610f756001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016858484613ac0565b60008060008061366e614177565b9050670de0b6b3a764000061368260125490565b82516020840151613693908a615009565b61369d9190615036565b6136a79190615009565b6136b19190615036565b6040820181905285101561370457601254859450602082015182516136d7908790615009565b6136e19190615036565b6136f390670de0b6b3a7640000615009565b6136fd9190615036565b915061370f565b806040015193508591505b80516020820151600091906137249085615009565b61372e9190615036565b905061373a81866150e5565b935050509250925092565b6001600160a01b0380821660009081526016602052604081205490918391161561378257604051635435b28960e11b815260040160405180910390fd5b6137b47f00000000000000000000000000000000000000000000000000000000000000006137af83613d5f565b614109565b6001600160a01b038082166000818152600260209081526040808320805460ff191660019081179091559487168084526016835281842080546001600160a01b0319908116871790915594845260039092528220805490931617909155600880549395509192613825908490614e6c565b92505081905550806001600160a01b03167fac631f3001b55ea1509cf3d7e74898f85392a61a76e8149181ae1259622dabc883604051613865919061495b565b60405180910390a260405163189acdbd60e31b81526001600160a01b0383169063c4d66de89061389990849060040161495b565b600060405180830381600087803b1580156138b357600080fd5b505af11580156138c7573d6000803e3d6000fd5b5050505050919050565b6000611744836001600160a01b0384166142e3565b600061390b670de0b6b3a7640000613906670de0b6b3a764000087612deb565b6143d6565b9050808310801561391b57508282105b8015613933575061393382670de0b6b3a76400001090565b1561393e5750505050565b604051635435b28960e11b815260040160405180910390fd5b60006139616140e5565b604051630967fa2960e31b8152600481018390526001600160a01b0384811660248301527f00000000000000000000000000000000000000000000000000000000000000001690634b3fd148906044016020604051808303816000875af11580156139d0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906139f49190614e3d565b9050613a01836001613b1a565b613a0a83612e03565b6001600160a01b0380841660008181526003602052604090819020549051919216907f44dd1331990f12a8382e7da57756538a810f52fa13c1bb0d0ca6b14225be6d3390613a5b9085815260200190565b60405180910390a36040516377a4322360e11b8152309063ef48644690613a889086908590600401614eb3565b600060405180830381600087803b158015613aa257600080fd5b505af1158015613ab6573d6000803e3d6000fd5b5050505092915050565b6116ea84856001600160a01b03166323b872dd868686604051602401613ae8939291906150f8565b604051602081830303815290604052915060e01b6020820180516001600160e01b0383818316178352505050506143e5565b6001600160a01b03821660009081526004602052604090205415613b5157604051635e3b451760e11b815260040160405180910390fd5b6000613b5c83611c8d565b11156115f1576000613b6d836127a3565b90508115613bba576000613b91611c8a613b8660135490565b60208501519061443f565b90508082600001511115613bb8576040516334b3313560e11b815260040160405180910390fd5b505b8060a0015180613bcb57508060c001515b1561233f576040516334b3313560e11b815260040160405180910390fd5b6000613bfc6805345cdf77eb68f44c5490565b15612c5e57600f546805345cdf77eb68f44c54612c45565b6000613c1f826127a3565b90508060800151613c4357604051636caa790760e01b815260040160405180910390fd5b6001600160a01b03821660009081526004602052604081205490036115f1576001600160a01b038216600081815260046020526040808220429055517fdcd8b95bdfd2ffcc332acd69f71c9319a5a1006ca18c94d83d854e591cb6e0439190a2604051636545e6b360e11b8152309063ca8bcd6690612e9b90859060040161495b565b6000613ce7613cdc6805345cdf77eb68f44c5490565b600f5484919061444e565b905081600f6000828254613cfb91906150e5565b90915550819050613d0b85611979565b10613d165780613d1f565b613d1f84611979565b9050613d2b848261447d565b6116ea6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001684846144f4565b6040516001600160601b0319606083901b166020820152600090603401604051602081830303815290604052805190602001209050919050565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663e5f3d3a5604051602001613e08906020808252601a908201527950524f544f434f4c5f4c49515549444154494f4e5f534841524560301b604082015260600190565b604051602081830303815290604052805190602001206040518263ffffffff1660e01b8152600401613e3c91815260200190565b602060405180830381865afa158015613e59573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111e39190614e3d565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663e5f3d3a5604051602001613e089060208082526010908201526f4c495155494441544f525f534841524560801b604082015260600190565b600080613eee836111c7565b809250819350505081600f6000828254613f0891906150e5565b90915550613f189050858261447d565b613f4c6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001685846144f4565b935093915050565b6000826000018281548110613f6b57613f6b6150cf565b9060005260206000200154905092915050565b60005460ff1661153757604051638dfc202b60e01b815260040160405180910390fd5b6000808060001985870985870292508281108382030391505080600003613fdb57838281613fd157613fd1615020565b0492505050611744565b83811061400c57604051630c740aef60e31b815260048101879052602481018690526044810185905260640161123c565b60008486880960026001871981018816978890046003810283188082028403028082028403028082028403028082028403028082028403029081029092039091026000889003889004909101858311909403939093029303949094049190911702949350505050565b6001600160a01b0381166000908152600b60205260409020548061244257604051636571f87b60e11b815260040160405180910390fd5b611a49816000613b1a565b6000806140c533848661451a565b909590945092505050565b6000611744836001600160a01b038416614585565b60005460ff16156115375760405163d93c066560e01b815260040160405180910390fd5b6000763d602d80600a3d3981f3363d3d373d3d3d363d730000008360601b60e81c176000526e5af43d82803e903d91602b57fd5bf38360781b1760205281603760096000f590506001600160a01b0381166111c1576040516330be1a3d60e21b815260040160405180910390fd5b61419b60405180606001604052806000815260200160008152602001600081525090565b60006141a56130b2565b6001600160a01b031663b3596f077f00000000000000000000000000000000000000000000000000000000000000006040518263ffffffff1660e01b81526004016141f0919061495b565b602060405180830381865afa15801561420d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906142319190614e3d565b905060007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015614293573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906142b7919061514d565b6142c290600a614ffa565b60408051606081018252938452602084019190915260009083015250919050565b600081815260018301602052604081205480156143cc5760006143076001836150e5565b855490915060009061431b906001906150e5565b905080821461438057600086600001828154811061433b5761433b6150cf565b906000526020600020015490508087600001848154811061435e5761435e6150cf565b6000918252602080832090910192909255918252600188019052604090208390555b85548690806143915761439161516a565b6001900381819060005260206000200160009055905585600101600086815260200190815260200160002060009055600193505050506111c1565b60009150506111c1565b6000611744611c8a8385614e6c565b60006143fa6001600160a01b038416836145d4565b9050805160001415801561441f57508080602001905181019061441d9190615180565b155b1561233f5782604051635274afe760e01b815260040161123c919061495b565b6000611744611c8a84846145e2565b600082600019048411830215820261446e5763ad251c276000526004601cfd5b50910281810615159190040190565b6387a211a2600c52816000526020600c208054808311156144a65763f4d678b86000526004601cfd5b82900390556805345cdf77eb68f44c8054829003905560008181526001600160a01b0383167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef602083a35050565b61233f83846001600160a01b031663a9059cbb8585604051602401613ae8929190614eb3565b60008061452683612914565b809250819350505081600f60008282546145409190614e6c565b9091555061457b90506001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016863085613ac0565b613f4c8482614698565b60008181526001830160205260408120546145cc575081546001818101845560008481526020808220909301849055845484825282860190935260409020919091556111c1565b5060006111c1565b606061174483836000614717565b60008080600019848609848602925082811083820303915050806000036146165750670de0b6b3a7640000900490506111c1565b670de0b6b3a7640000811061464857604051635173648d60e01b8152600481018690526024810185905260440161123c565b6000670de0b6b3a764000085870962040000818503049310909103600160ee1b02919091177faccb18165bd6fe31ae1cf318dc5b51eee0e1ba569b88cd74c1773b91fac106690291505092915050565b6805345cdf77eb68f44c54818101818110156146bc5763e5cfe9576000526004601cfd5b806805345cdf77eb68f44c5550506387a211a2600c52816000526020600c208181540181555080602052600c5160601c60007fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef602080a35050565b60608147101561473c573060405163cd78605960e01b815260040161123c919061495b565b600080856001600160a01b03168486604051614758919061519d565b60006040518083038185875af1925050503d8060008114614795576040519150601f19603f3d011682016040523d82523d6000602084013e61479a565b606091505b50915091506147aa8683836147b4565b9695505050505050565b6060826147c9576147c482614807565b611744565b81511580156147e057506001600160a01b0384163b155b156148005783604051639996b31560e01b815260040161123c919061495b565b5080611744565b8051156148175780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b60405180606001604052806000815260200160008152602001600081525090565b6001600160a01b0381168114611a4957600080fd5b6000806040838503121561487957600080fd5b82359150602083013561488b81614851565b809150509250929050565b6000602082840312156148a857600080fd5b813561174481614851565b60005b838110156148ce5781810151838201526020016148b6565b50506000910152565b600081518084526148ef8160208601602086016148b3565b601f01601f19169290920160200192915050565b60208152600061174460208301846148d7565b6000806040838503121561492957600080fd5b823561493481614851565b946020939093013593505050565b60006020828403121561495457600080fd5b5035919050565b6001600160a01b0391909116815260200190565b6000806040838503121561498257600080fd5b823561498d81614851565b9150602083013561488b81614851565b8015158114611a4957600080fd5b80356124428161499d565b600080604083850312156149c957600080fd5b82356149d481614851565b9150602083013561488b8161499d565b6000806000606084860312156149f957600080fd5b8335614a0481614851565b92506020840135614a1481614851565b929592945050506040919091013590565b60008060008060808587031215614a3b57600080fd5b8435614a4681614851565b93506020850135614a5681614851565b9250604085013591506060850135614a6d8161499d565b939692955090935050565b600060208284031215614a8a57600080fd5b81356117448161499d565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b0381118282101715614ad357614ad3614a95565b604052919050565b600082601f830112614aec57600080fd5b81356001600160401b03811115614b0557614b05614a95565b614b18601f8201601f1916602001614aab565b818152846020838601011115614b2d57600080fd5b816020850160208301376000918101602001919091529392505050565b60008060008060808587031215614b6057600080fd5b8435614b6b81614851565b93506020850135614b7b81614851565b92506040850135915060608501356001600160401b03811115614b9d57600080fd5b614ba987828801614adb565b91505092959194509250565b60008060008060808587031215614bcb57600080fd5b8435614bd681614851565b93506020850135614be681614851565b93969395505050506040820135916060013590565b600080600060608486031215614c1057600080fd5b8335614c1b81614851565b95602085013595506040909401359392505050565b60008060008060808587031215614c4657600080fd5b8435614c5181614851565b93506020850135614c6181614851565b92506040850135614c7181614851565b915060608501356001600160401b03811115614b9d57600080fd5b60008060408385031215614c9f57600080fd5b82356001600160401b0380821115614cb657600080fd5b818501915085601f830112614cca57600080fd5b8135602082821115614cde57614cde614a95565b8160051b9250614cef818401614aab565b8281529284018101928181019089851115614d0957600080fd5b948201945b84861015614d335785359350614d2384614851565b8382529482019490820190614d0e565b9650614d4290508782016149ab565b9450505050509250929050565b600080600060608486031215614d6457600080fd5b505081359360208301359350604090920135919050565b60ff81168114611a4957600080fd5b600080600080600080600060e0888a031215614da557600080fd5b8735614db081614851565b96506020880135614dc081614851565b955060408801359450606088013593506080880135614dde81614d7b565b9699959850939692959460a0840135945060c09093013592915050565b600080600060608486031215614e1057600080fd5b8335614e1b81614851565b9250602084013591506040840135614e3281614851565b809150509250925092565b600060208284031215614e4f57600080fd5b5051919050565b634e487b7160e01b600052601160045260246000fd5b808201808211156111c1576111c1614e56565b600181811c90821680614e9357607f821691505b6020821081036110db57634e487b7160e01b600052602260045260246000fd5b6001600160a01b03929092168252602082015260400190565b6001600160a01b039190911681526040602082018190526004908201526329a2a62360e11b606082015260800190565b6001600160a01b0392831681529116602082015260400190565b600181815b80851115614f51578160001904821115614f3757614f37614e56565b80851615614f4457918102915b93841c9390800290614f1b565b509250929050565b600082614f68575060016111c1565b81614f75575060006111c1565b8160018114614f8b5760028114614f9557614fb1565b60019150506111c1565b60ff841115614fa657614fa6614e56565b50506001821b6111c1565b5060208310610133831016604e8410600b8410161715614fd4575081810a6111c1565b614fde8383614f16565b8060001904821115614ff257614ff2614e56565b029392505050565b600061174460ff841683614f59565b80820281158282048414176111c1576111c1614e56565b634e487b7160e01b600052601260045260246000fd5b60008261505357634e487b7160e01b600052601260045260246000fd5b500490565b60006020828403121561506a57600080fd5b815161174481614851565b6020808252600d908201526c2322a2afa1a7a62622a1aa27a960991b604082015260600190565b6001600160a01b03858116825284166020820152604081018390526080606082018190526000906147aa908301846148d7565b634e487b7160e01b600052603260045260246000fd5b818103818111156111c1576111c1614e56565b6001600160a01b039384168152919092166020820152604081019190915260600190565b83815260606020820152600061513560608301856148d7565b905060018060a01b0383166040830152949350505050565b60006020828403121561515f57600080fd5b815161174481614d7b565b634e487b7160e01b600052603160045260246000fd5b60006020828403121561519257600080fd5b81516117448161499d565b600082516151af8184602087016148b3565b919091019291505056fea26469706673582212204ea4bade0e17c307452b5b7b4bc1c3c706ba808f5bdcda093ad2c91eb26f9b6b64736f6c6343000818003300000000000000000000000021d1887a5dd441dc8c01713713035dd171cd30d200000000000000000000000002f6eeb4e33bba64bcbea18bd149b9031c2735f700000000000000000000000000000000000000000000000000000000000000600000000000000000000000002daa813dbe42ce15fbad01d4fc93f7a543a5b715000000000000000000000000274c784dfc8497f38e39dc00d59ed54f6a13c146000000000000000000000000b1a5700fa2358173fe465e6ea4ff52e36e88e2ad0000000000000000000000000000000000000000000000001bc16d674ec80000000000000000000000000000000000000000000000000000123fd18867a38000000000000000000000000000000000000000000000000000120a871cc00200000000000000000000000000000000000000000000000000000e92596fd6290000000000000000000000000000000000000000000000000000000000000000014000000000000000000000000000000000000000000000000000000000000001a0000000000000000000000000000000000000000000000000000000000000001200000000000000000000000000000000000000000000000000000000000000244a756963652046696e616e636520426c61737420436f6c6c61746572616c205661756c740000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000086a6376424c415354000000000000000000000000000000000000000000000000
0x00000000000000000000000021d1887a5dd441dc8c01713713035dd171cd30d200000000000000000000000002f6eeb4e33bba64bcbea18bd149b9031c2735f700000000000000000000000000000000000000000000000000000000000000600000000000000000000000002daa813dbe42ce15fbad01d4fc93f7a543a5b715000000000000000000000000274c784dfc8497f38e39dc00d59ed54f6a13c146000000000000000000000000b1a5700fa2358173fe465e6ea4ff52e36e88e2ad0000000000000000000000000000000000000000000000001bc16d674ec80000000000000000000000000000000000000000000000000000123fd18867a38000000000000000000000000000000000000000000000000000120a871cc00200000000000000000000000000000000000000000000000000000e92596fd6290000000000000000000000000000000000000000000000000000000000000000014000000000000000000000000000000000000000000000000000000000000001a0000000000000000000000000000000000000000000000000000000000000001200000000000000000000000000000000000000000000000000000000000000244a756963652046696e616e636520426c61737420436f6c6c61746572616c205661756c740000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000086a6376424c415354000000000000000000000000000000000000000000000000