aave-protocol-v2/types/LendingPoolFactory.ts
2020-07-08 17:26:50 +02:00

1350 lines
71 KiB
TypeScript

/* Generated by ts-generator ver. 0.0.8 */
/* tslint:disable */
import { Contract, ContractFactory, Signer } from "ethers";
import { Provider } from "ethers/providers";
import { UnsignedTransaction } from "ethers/utils/transaction";
import { TransactionOverrides } from ".";
import { LendingPool } from "./LendingPool";
export class LendingPoolFactory extends ContractFactory {
constructor(
linkLibraryAddresses: LendingPoolLibraryAddresses,
signer?: Signer
) {
super(_abi, LendingPoolFactory.linkBytecode(linkLibraryAddresses), signer);
}
static linkBytecode(
linkLibraryAddresses: LendingPoolLibraryAddresses
): string {
let linkedBytecode = _bytecode;
linkedBytecode = linkedBytecode.replace(
new RegExp("__\\$2ec35834968386f54fa313129cf94664e4\\$__", "g"),
linkLibraryAddresses["__$2ec35834968386f54fa313129cf94664e4$__"]
.replace(/^0x/, "")
.toLowerCase()
);
linkedBytecode = linkedBytecode.replace(
new RegExp("__\\$69254465eb8f179ea24caa73cf68b23524\\$__", "g"),
linkLibraryAddresses["__$69254465eb8f179ea24caa73cf68b23524$__"]
.replace(/^0x/, "")
.toLowerCase()
);
linkedBytecode = linkedBytecode.replace(
new RegExp("__\\$5e6137a1b5a0a366e2874209b5abf71c10\\$__", "g"),
linkLibraryAddresses["__$5e6137a1b5a0a366e2874209b5abf71c10$__"]
.replace(/^0x/, "")
.toLowerCase()
);
linkedBytecode = linkedBytecode.replace(
new RegExp("__\\$7347ff53b2b46c21e26a37164ae7f6739f\\$__", "g"),
linkLibraryAddresses["__$7347ff53b2b46c21e26a37164ae7f6739f$__"]
.replace(/^0x/, "")
.toLowerCase()
);
return linkedBytecode;
}
deploy(overrides?: TransactionOverrides): Promise<LendingPool> {
return super.deploy(overrides) as Promise<LendingPool>;
}
getDeployTransaction(overrides?: TransactionOverrides): UnsignedTransaction {
return super.getDeployTransaction(overrides);
}
attach(address: string): LendingPool {
return super.attach(address) as LendingPool;
}
connect(signer: Signer): LendingPoolFactory {
return super.connect(signer) as LendingPoolFactory;
}
static connect(
address: string,
signerOrProvider: Signer | Provider
): LendingPool {
return new Contract(address, _abi, signerOrProvider) as LendingPool;
}
}
const _abi = [
{
anonymous: false,
inputs: [
{
indexed: true,
internalType: "address",
name: "_reserve",
type: "address"
},
{
indexed: true,
internalType: "address",
name: "_user",
type: "address"
},
{
indexed: false,
internalType: "uint256",
name: "_amount",
type: "uint256"
},
{
indexed: false,
internalType: "uint256",
name: "_borrowRateMode",
type: "uint256"
},
{
indexed: false,
internalType: "uint256",
name: "_borrowRate",
type: "uint256"
},
{
indexed: true,
internalType: "uint16",
name: "_referral",
type: "uint16"
},
{
indexed: false,
internalType: "uint256",
name: "_timestamp",
type: "uint256"
}
],
name: "Borrow",
type: "event"
},
{
anonymous: false,
inputs: [
{
indexed: true,
internalType: "address",
name: "_reserve",
type: "address"
},
{
indexed: true,
internalType: "address",
name: "_user",
type: "address"
},
{
indexed: false,
internalType: "uint256",
name: "_amount",
type: "uint256"
},
{
indexed: true,
internalType: "uint16",
name: "_referral",
type: "uint16"
},
{
indexed: false,
internalType: "uint256",
name: "_timestamp",
type: "uint256"
}
],
name: "Deposit",
type: "event"
},
{
anonymous: false,
inputs: [
{
indexed: true,
internalType: "address",
name: "_target",
type: "address"
},
{
indexed: true,
internalType: "address",
name: "_reserve",
type: "address"
},
{
indexed: false,
internalType: "uint256",
name: "_amount",
type: "uint256"
},
{
indexed: false,
internalType: "uint256",
name: "_totalFee",
type: "uint256"
},
{
indexed: false,
internalType: "uint256",
name: "_protocolFee",
type: "uint256"
},
{
indexed: false,
internalType: "uint256",
name: "_timestamp",
type: "uint256"
}
],
name: "FlashLoan",
type: "event"
},
{
anonymous: false,
inputs: [
{
indexed: true,
internalType: "address",
name: "_collateral",
type: "address"
},
{
indexed: true,
internalType: "address",
name: "_reserve",
type: "address"
},
{
indexed: true,
internalType: "address",
name: "_user",
type: "address"
},
{
indexed: false,
internalType: "uint256",
name: "_purchaseAmount",
type: "uint256"
},
{
indexed: false,
internalType: "uint256",
name: "_liquidatedCollateralAmount",
type: "uint256"
},
{
indexed: false,
internalType: "uint256",
name: "_accruedBorrowInterest",
type: "uint256"
},
{
indexed: false,
internalType: "address",
name: "_liquidator",
type: "address"
},
{
indexed: false,
internalType: "bool",
name: "_receiveAToken",
type: "bool"
},
{
indexed: false,
internalType: "uint256",
name: "_timestamp",
type: "uint256"
}
],
name: "LiquidationCall",
type: "event"
},
{
anonymous: false,
inputs: [
{
indexed: true,
internalType: "address",
name: "_collateral",
type: "address"
},
{
indexed: true,
internalType: "address",
name: "_reserve",
type: "address"
},
{
indexed: true,
internalType: "address",
name: "_user",
type: "address"
},
{
indexed: false,
internalType: "uint256",
name: "_feeLiquidated",
type: "uint256"
},
{
indexed: false,
internalType: "uint256",
name: "_liquidatedCollateralForFee",
type: "uint256"
},
{
indexed: false,
internalType: "uint256",
name: "_timestamp",
type: "uint256"
}
],
name: "OriginationFeeLiquidated",
type: "event"
},
{
anonymous: false,
inputs: [
{
indexed: true,
internalType: "address",
name: "_reserve",
type: "address"
},
{
indexed: true,
internalType: "address",
name: "_user",
type: "address"
},
{
indexed: false,
internalType: "uint256",
name: "_timestamp",
type: "uint256"
}
],
name: "RebalanceStableBorrowRate",
type: "event"
},
{
anonymous: false,
inputs: [
{
indexed: true,
internalType: "address",
name: "_reserve",
type: "address"
},
{
indexed: true,
internalType: "address",
name: "_user",
type: "address"
},
{
indexed: false,
internalType: "uint256",
name: "_amount",
type: "uint256"
},
{
indexed: false,
internalType: "uint256",
name: "_timestamp",
type: "uint256"
}
],
name: "RedeemUnderlying",
type: "event"
},
{
anonymous: false,
inputs: [
{
indexed: true,
internalType: "address",
name: "_reserve",
type: "address"
},
{
indexed: true,
internalType: "address",
name: "_user",
type: "address"
},
{
indexed: true,
internalType: "address",
name: "_repayer",
type: "address"
},
{
indexed: false,
internalType: "uint256",
name: "_amount",
type: "uint256"
},
{
indexed: false,
internalType: "uint256",
name: "_timestamp",
type: "uint256"
}
],
name: "Repay",
type: "event"
},
{
anonymous: false,
inputs: [
{
indexed: true,
internalType: "address",
name: "_reserve",
type: "address"
},
{
indexed: true,
internalType: "address",
name: "_user",
type: "address"
}
],
name: "ReserveUsedAsCollateralDisabled",
type: "event"
},
{
anonymous: false,
inputs: [
{
indexed: true,
internalType: "address",
name: "_reserve",
type: "address"
},
{
indexed: true,
internalType: "address",
name: "_user",
type: "address"
}
],
name: "ReserveUsedAsCollateralEnabled",
type: "event"
},
{
anonymous: false,
inputs: [
{
indexed: true,
internalType: "address",
name: "_reserve",
type: "address"
},
{
indexed: true,
internalType: "address",
name: "_user",
type: "address"
},
{
indexed: false,
internalType: "uint256",
name: "_timestamp",
type: "uint256"
}
],
name: "Swap",
type: "event"
},
{
inputs: [],
name: "LENDINGPOOL_REVISION",
outputs: [
{
internalType: "uint256",
name: "",
type: "uint256"
}
],
stateMutability: "view",
type: "function"
},
{
inputs: [],
name: "UINT_MAX_VALUE",
outputs: [
{
internalType: "uint256",
name: "",
type: "uint256"
}
],
stateMutability: "view",
type: "function"
},
{
inputs: [],
name: "addressesProvider",
outputs: [
{
internalType: "contract LendingPoolAddressesProvider",
name: "",
type: "address"
}
],
stateMutability: "view",
type: "function"
},
{
inputs: [
{
internalType: "address",
name: "_reserve",
type: "address"
},
{
internalType: "address",
name: "_user",
type: "address"
},
{
internalType: "uint256",
name: "_amount",
type: "uint256"
}
],
name: "balanceDecreaseAllowed",
outputs: [
{
internalType: "bool",
name: "",
type: "bool"
}
],
stateMutability: "view",
type: "function"
},
{
inputs: [
{
internalType: "address",
name: "_reserve",
type: "address"
},
{
internalType: "uint256",
name: "_amount",
type: "uint256"
},
{
internalType: "uint256",
name: "_interestRateMode",
type: "uint256"
},
{
internalType: "uint16",
name: "_referralCode",
type: "uint16"
}
],
name: "borrow",
outputs: [],
stateMutability: "nonpayable",
type: "function"
},
{
inputs: [
{
internalType: "address",
name: "_reserve",
type: "address"
},
{
internalType: "uint256",
name: "_amount",
type: "uint256"
},
{
internalType: "uint16",
name: "_referralCode",
type: "uint16"
}
],
name: "deposit",
outputs: [],
stateMutability: "payable",
type: "function"
},
{
inputs: [
{
internalType: "address",
name: "_reserve",
type: "address"
}
],
name: "disableReserveAsCollateral",
outputs: [],
stateMutability: "nonpayable",
type: "function"
},
{
inputs: [
{
internalType: "address",
name: "_reserve",
type: "address"
},
{
internalType: "uint256",
name: "_baseLTVasCollateral",
type: "uint256"
},
{
internalType: "uint256",
name: "_liquidationThreshold",
type: "uint256"
},
{
internalType: "uint256",
name: "_liquidationBonus",
type: "uint256"
}
],
name: "enableReserveAsCollateral",
outputs: [],
stateMutability: "nonpayable",
type: "function"
},
{
inputs: [
{
internalType: "address",
name: "_receiver",
type: "address"
},
{
internalType: "address",
name: "_reserve",
type: "address"
},
{
internalType: "uint256",
name: "_amount",
type: "uint256"
},
{
internalType: "bytes",
name: "_params",
type: "bytes"
}
],
name: "flashLoan",
outputs: [],
stateMutability: "nonpayable",
type: "function"
},
{
inputs: [
{
internalType: "address",
name: "_reserve",
type: "address"
}
],
name: "getReserveConfigurationData",
outputs: [
{
internalType: "uint256",
name: "decimals",
type: "uint256"
},
{
internalType: "uint256",
name: "ltv",
type: "uint256"
},
{
internalType: "uint256",
name: "liquidationThreshold",
type: "uint256"
},
{
internalType: "uint256",
name: "liquidationBonus",
type: "uint256"
},
{
internalType: "address",
name: "interestRateStrategyAddress",
type: "address"
},
{
internalType: "address",
name: "aTokenAddress",
type: "address"
},
{
internalType: "bool",
name: "usageAsCollateralEnabled",
type: "bool"
},
{
internalType: "bool",
name: "borrowingEnabled",
type: "bool"
},
{
internalType: "bool",
name: "stableBorrowRateEnabled",
type: "bool"
},
{
internalType: "bool",
name: "isActive",
type: "bool"
},
{
internalType: "bool",
name: "isFreezed",
type: "bool"
}
],
stateMutability: "view",
type: "function"
},
{
inputs: [
{
internalType: "address",
name: "_reserve",
type: "address"
}
],
name: "getReserveData",
outputs: [
{
internalType: "uint256",
name: "availableLiquidity",
type: "uint256"
},
{
internalType: "uint256",
name: "totalBorrowsStable",
type: "uint256"
},
{
internalType: "uint256",
name: "totalBorrowsVariable",
type: "uint256"
},
{
internalType: "uint256",
name: "liquidityRate",
type: "uint256"
},
{
internalType: "uint256",
name: "variableBorrowRate",
type: "uint256"
},
{
internalType: "uint256",
name: "stableBorrowRate",
type: "uint256"
},
{
internalType: "uint256",
name: "averageStableBorrowRate",
type: "uint256"
},
{
internalType: "uint256",
name: "liquidityIndex",
type: "uint256"
},
{
internalType: "uint256",
name: "variableBorrowIndex",
type: "uint256"
},
{
internalType: "uint40",
name: "lastUpdateTimestamp",
type: "uint40"
}
],
stateMutability: "view",
type: "function"
},
{
inputs: [
{
internalType: "address",
name: "_reserve",
type: "address"
}
],
name: "getReserveNormalizedIncome",
outputs: [
{
internalType: "uint256",
name: "",
type: "uint256"
}
],
stateMutability: "view",
type: "function"
},
{
inputs: [
{
internalType: "address",
name: "_reserve",
type: "address"
}
],
name: "getReserveNormalizedVariableDebt",
outputs: [
{
internalType: "uint256",
name: "",
type: "uint256"
}
],
stateMutability: "view",
type: "function"
},
{
inputs: [],
name: "getReserves",
outputs: [
{
internalType: "address[]",
name: "",
type: "address[]"
}
],
stateMutability: "view",
type: "function"
},
{
inputs: [
{
internalType: "address",
name: "_user",
type: "address"
}
],
name: "getUserAccountData",
outputs: [
{
internalType: "uint256",
name: "totalCollateralETH",
type: "uint256"
},
{
internalType: "uint256",
name: "totalBorrowsETH",
type: "uint256"
},
{
internalType: "uint256",
name: "totalFeesETH",
type: "uint256"
},
{
internalType: "uint256",
name: "availableBorrowsETH",
type: "uint256"
},
{
internalType: "uint256",
name: "currentLiquidationThreshold",
type: "uint256"
},
{
internalType: "uint256",
name: "ltv",
type: "uint256"
},
{
internalType: "uint256",
name: "healthFactor",
type: "uint256"
}
],
stateMutability: "view",
type: "function"
},
{
inputs: [
{
internalType: "address",
name: "_reserve",
type: "address"
},
{
internalType: "address",
name: "_user",
type: "address"
}
],
name: "getUserReserveData",
outputs: [
{
internalType: "uint256",
name: "currentATokenBalance",
type: "uint256"
},
{
internalType: "uint256",
name: "currentStableDebt",
type: "uint256"
},
{
internalType: "uint256",
name: "currentVariableDebt",
type: "uint256"
},
{
internalType: "uint256",
name: "principalStableDebt",
type: "uint256"
},
{
internalType: "uint256",
name: "principalVariableDebt",
type: "uint256"
},
{
internalType: "uint256",
name: "stableBorrowRate",
type: "uint256"
},
{
internalType: "uint256",
name: "liquidityRate",
type: "uint256"
},
{
internalType: "uint256",
name: "variableBorrowIndex",
type: "uint256"
},
{
internalType: "uint40",
name: "stableRateLastUpdated",
type: "uint40"
},
{
internalType: "bool",
name: "usageAsCollateralEnabled",
type: "bool"
}
],
stateMutability: "view",
type: "function"
},
{
inputs: [
{
internalType: "address",
name: "_reserve",
type: "address"
},
{
internalType: "address",
name: "_aTokenAddress",
type: "address"
},
{
internalType: "address",
name: "_stableDebtAddress",
type: "address"
},
{
internalType: "address",
name: "_variableDebtAddress",
type: "address"
},
{
internalType: "uint256",
name: "_decimals",
type: "uint256"
},
{
internalType: "address",
name: "_interestRateStrategyAddress",
type: "address"
}
],
name: "initReserve",
outputs: [],
stateMutability: "nonpayable",
type: "function"
},
{
inputs: [
{
internalType: "contract LendingPoolAddressesProvider",
name: "_addressesProvider",
type: "address"
}
],
name: "initialize",
outputs: [],
stateMutability: "nonpayable",
type: "function"
},
{
inputs: [
{
internalType: "address",
name: "_collateral",
type: "address"
},
{
internalType: "address",
name: "_reserve",
type: "address"
},
{
internalType: "address",
name: "_user",
type: "address"
},
{
internalType: "uint256",
name: "_purchaseAmount",
type: "uint256"
},
{
internalType: "bool",
name: "_receiveAToken",
type: "bool"
}
],
name: "liquidationCall",
outputs: [],
stateMutability: "payable",
type: "function"
},
{
inputs: [
{
internalType: "address",
name: "_reserve",
type: "address"
},
{
internalType: "address",
name: "_user",
type: "address"
}
],
name: "rebalanceStableBorrowRate",
outputs: [],
stateMutability: "nonpayable",
type: "function"
},
{
inputs: [
{
internalType: "address",
name: "_reserve",
type: "address"
},
{
internalType: "address payable",
name: "_user",
type: "address"
},
{
internalType: "uint256",
name: "_amount",
type: "uint256"
},
{
internalType: "uint256",
name: "_aTokenBalanceAfterRedeem",
type: "uint256"
}
],
name: "redeemUnderlying",
outputs: [],
stateMutability: "nonpayable",
type: "function"
},
{
inputs: [
{
internalType: "address",
name: "_reserve",
type: "address"
},
{
internalType: "uint256",
name: "_amount",
type: "uint256"
},
{
internalType: "uint256",
name: "_rateMode",
type: "uint256"
},
{
internalType: "address payable",
name: "_onBehalfOf",
type: "address"
}
],
name: "repay",
outputs: [],
stateMutability: "payable",
type: "function"
},
{
inputs: [
{
internalType: "uint256",
name: "",
type: "uint256"
}
],
name: "reservesList",
outputs: [
{
internalType: "address",
name: "",
type: "address"
}
],
stateMutability: "view",
type: "function"
},
{
inputs: [
{
internalType: "address",
name: "_reserve",
type: "address"
},
{
internalType: "bool",
name: "_active",
type: "bool"
}
],
name: "setReserveActive",
outputs: [],
stateMutability: "nonpayable",
type: "function"
},
{
inputs: [
{
internalType: "address",
name: "_reserve",
type: "address"
},
{
internalType: "uint256",
name: "_ltv",
type: "uint256"
}
],
name: "setReserveBaseLTVasCollateral",
outputs: [],
stateMutability: "nonpayable",
type: "function"
},
{
inputs: [
{
internalType: "address",
name: "_reserve",
type: "address"
},
{
internalType: "bool",
name: "_borrowingEnabled",
type: "bool"
},
{
internalType: "bool",
name: "_stableBorrowRateEnabled",
type: "bool"
}
],
name: "setReserveBorrowingEnabled",
outputs: [],
stateMutability: "nonpayable",
type: "function"
},
{
inputs: [
{
internalType: "address",
name: "_reserve",
type: "address"
},
{
internalType: "uint256",
name: "_decimals",
type: "uint256"
}
],
name: "setReserveDecimals",
outputs: [],
stateMutability: "nonpayable",
type: "function"
},
{
inputs: [
{
internalType: "address",
name: "_reserve",
type: "address"
},
{
internalType: "bool",
name: "_isFreezed",
type: "bool"
}
],
name: "setReserveFreeze",
outputs: [],
stateMutability: "nonpayable",
type: "function"
},
{
inputs: [
{
internalType: "address",
name: "_reserve",
type: "address"
},
{
internalType: "address",
name: "_rateStrategyAddress",
type: "address"
}
],
name: "setReserveInterestRateStrategyAddress",
outputs: [],
stateMutability: "nonpayable",
type: "function"
},
{
inputs: [
{
internalType: "address",
name: "_reserve",
type: "address"
},
{
internalType: "uint256",
name: "_bonus",
type: "uint256"
}
],
name: "setReserveLiquidationBonus",
outputs: [],
stateMutability: "nonpayable",
type: "function"
},
{
inputs: [
{
internalType: "address",
name: "_reserve",
type: "address"
},
{
internalType: "uint256",
name: "_threshold",
type: "uint256"
}
],
name: "setReserveLiquidationThreshold",
outputs: [],
stateMutability: "nonpayable",
type: "function"
},
{
inputs: [
{
internalType: "address",
name: "_reserve",
type: "address"
},
{
internalType: "bool",
name: "_enabled",
type: "bool"
}
],
name: "setReserveStableBorrowRateEnabled",
outputs: [],
stateMutability: "nonpayable",
type: "function"
},
{
inputs: [
{
internalType: "address",
name: "_reserve",
type: "address"
},
{
internalType: "bool",
name: "_useAsCollateral",
type: "bool"
}
],
name: "setUserUseReserveAsCollateral",
outputs: [],
stateMutability: "nonpayable",
type: "function"
},
{
inputs: [
{
internalType: "address",
name: "_reserve",
type: "address"
},
{
internalType: "uint256",
name: "_rateMode",
type: "uint256"
}
],
name: "swapBorrowRateMode",
outputs: [],
stateMutability: "nonpayable",
type: "function"
},
{
stateMutability: "payable",
type: "receive"
}
];
const _bytecode =
"0x6080604052600060015534801561001557600080fd5b5060016000556158d4806200002b6000396000f3fe6080604052600436106101fc5760003560e01c806376e9d6151161010d578063c4d66de8116100a0578063d0fc81d21161006f578063d0fc81d214610b1b578063d15e005314610b30578063d2d0e06614610b63578063d466016f14610b99578063e8ae2f5b14610bd257610242565b8063c4d66de814610a4f578063c72c4d1014610a82578063c858f5f914610a97578063cd11238214610ae057610242565b80639895e3d8116100dc5780639895e3d81461091b578063a5bc826c14610964578063b736aaeb146109a9578063bf92857c146109e457610242565b806376e9d6151461083b5780638afaff021461089257806394ba89a2146108a757806396e957c4146108e057610242565b80633e150141116101905780635cffe9de1161015f5780635cffe9de1461067857806366bbd9281461074b5780636ee365f91461078457806370fb84f4146107c757806373b2f2f21461080057610242565b80633e150141146105205780634fe7a6e5146105bd578063573ade81146106035780635a3b74b91461063d57610242565b806328dd2d01116101cc57806328dd2d01146103845780633443a14b1461041857806335ea6a7514610451578063386497fd146104db57610242565b8062a718a9146102475780630902f1ac1461028b57806309eab60f146102f05780631d2118f91461034957610242565b366102425761020a33610c05565b610240576040805162461bcd60e51b8152602060048201526002602482015261191960f11b604482015290519081900360640190fd5b005b600080fd5b610240600480360360a081101561025d57600080fd5b506001600160a01b038135811691602081013582169160408201351690606081013590608001351515610c41565b34801561029757600080fd5b506102a0611008565b60408051602080825283518183015283519192839290830191858101910280838360005b838110156102dc5781810151838201526020016102c4565b505050509050019250505060405180910390f35b3480156102fc57600080fd5b50610240600480360360c081101561031357600080fd5b506001600160a01b03813581169160208101358216916040820135811691606081013582169160808201359160a001351661106a565b34801561035557600080fd5b506102406004803603604081101561036c57600080fd5b506001600160a01b03813581169160200135166111d1565b34801561039057600080fd5b506103bf600480360360408110156103a757600080fd5b506001600160a01b03813581169160200135166112b2565b604080519a8b5260208b0199909952898901979097526060890195909552608088019390935260a087019190915260c086015260e085015264ffffffffff16610100840152151561012083015251908190036101400190f35b34801561042457600080fd5b506102406004803603604081101561043b57600080fd5b506001600160a01b0381351690602001356115d9565b34801561045d57600080fd5b506104846004803603602081101561047457600080fd5b50356001600160a01b03166116a8565b604080519a8b5260208b0199909952898901979097526060890195909552608088019390935260a087019190915260c086015260e085015261010084015264ffffffffff1661012083015251908190036101400190f35b3480156104e757600080fd5b5061050e600480360360208110156104fe57600080fd5b50356001600160a01b0316611994565b60408051918252519081900360200190f35b34801561052c57600080fd5b506105536004803603602081101561054357600080fd5b50356001600160a01b03166119bb565b604080519b8c5260208c019a909a528a8a019890985260608a01969096526001600160a01b0394851660808a01529290931660a0880152151560c087015290151560e086015215156101008501521515610120840152151561014083015251908190036101600190f35b3480156105c957600080fd5b506105e7600480360360208110156105e057600080fd5b5035611a37565b604080516001600160a01b039092168252519081900360200190f35b6102406004803603608081101561061957600080fd5b506001600160a01b0381358116916020810135916040820135916060013516611a5e565b34801561064957600080fd5b506102406004803603604081101561066057600080fd5b506001600160a01b0381351690602001351515611e35565b34801561068457600080fd5b506102406004803603608081101561069b57600080fd5b6001600160a01b038235811692602081013590911691604082013591908101906080810160608201356401000000008111156106d657600080fd5b8201836020820111156106e857600080fd5b8035906020019184600183028401116401000000008311171561070a57600080fd5b91908080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092955061209b945050505050565b34801561075757600080fd5b506102406004803603604081101561076e57600080fd5b506001600160a01b038135169060200135612544565b34801561079057600080fd5b50610240600480360360608110156107a757600080fd5b506001600160a01b03813516906020810135151590604001351515612613565b3480156107d357600080fd5b50610240600480360360408110156107ea57600080fd5b506001600160a01b0381351690602001356127d8565b34801561080c57600080fd5b506102406004803603604081101561082357600080fd5b506001600160a01b03813516906020013515156128a7565b34801561084757600080fd5b5061087e6004803603606081101561085e57600080fd5b506001600160a01b0381358116916020810135909116906040013561298f565b604080519115158252519081900360200190f35b34801561089e57600080fd5b5061050e612b1f565b3480156108b357600080fd5b50610240600480360360408110156108ca57600080fd5b506001600160a01b038135169060200135612b24565b3480156108ec57600080fd5b506102406004803603604081101561090357600080fd5b506001600160a01b0381351690602001351515612e99565b34801561092757600080fd5b506102406004803603608081101561093e57600080fd5b506001600160a01b03813581169160208101359091169060408101359060600135612f81565b34801561097057600080fd5b506102406004803603608081101561098757600080fd5b506001600160a01b03813516906020810135906040810135906060013561311d565b3480156109b557600080fd5b50610240600480360360408110156109cc57600080fd5b506001600160a01b0381351690602001351515613266565b3480156109f057600080fd5b50610a1760048036036020811015610a0757600080fd5b50356001600160a01b03166133b0565b604080519788526020880196909652868601949094526060860192909252608085015260a084015260c0830152519081900360e00190f35b348015610a5b57600080fd5b5061024060048036036020811015610a7257600080fd5b50356001600160a01b0316613611565b348015610a8e57600080fd5b506105e7613756565b348015610aa357600080fd5b5061024060048036036080811015610aba57600080fd5b5080356001600160a01b0316906020810135906040810135906060013561ffff16613765565b348015610aec57600080fd5b5061024060048036036040811015610b0357600080fd5b506001600160a01b0381358116916020013516613cea565b348015610b2757600080fd5b5061050e614080565b348015610b3c57600080fd5b5061050e60048036036020811015610b5357600080fd5b50356001600160a01b0316614086565b61024060048036036060811015610b7957600080fd5b5080356001600160a01b0316906020810135906040013561ffff166140a7565b348015610ba557600080fd5b5061024060048036036040811015610bbc57600080fd5b506001600160a01b038135169060200135614316565b348015610bde57600080fd5b5061024060048036036020811015610bf557600080fd5b50356001600160a01b03166143e5565b6000813f7fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470818114801590610c3957508115155b949350505050565b60026000541415610c87576040805162461bcd60e51b815260206004820152601f60248201526000805160206156b1833981519152604482015290519081900360640190fd5b6002600090815560355460408051632c1a75cd60e11b815290516001600160a01b0390921691635834eb9a91600480820192602092909190829003018186803b158015610cd357600080fd5b505afa158015610ce7573d6000803e3d6000fd5b505050506040513d6020811015610cfd57600080fd5b5051604080516001600160a01b038981166024830152888116604483015287811660648301526084820187905285151560a4808401919091528351808403909101815260c490920183526020820180516001600160e01b031662a718a960e01b17815292518251949550600094606094928716939282918083835b60208310610d975780518252601f199092019160209182019101610d78565b6001836020036101000a038019825116818451168082178552505050505050905001915050600060405180830381855af49150503d8060008114610df7576040519150601f19603f3d011682016040523d82523d6000602084013e610dfc565b606091505b509150915081610e38576040805162461bcd60e51b81526020600482015260026024820152610c8d60f21b604482015290519081900360640190fd5b60006060828060200190516040811015610e5157600080fd5b815160208301805160405192949293830192919084640100000000821115610e7857600080fd5b908301906020820185811115610e8d57600080fd5b8251640100000000811182820188101715610ea757600080fd5b82525081516020918201929091019080838360005b83811015610ed4578181015183820152602001610ebc565b50505050905090810190601f168015610f015780820380516001836020036101000a031916815260200191505b506040525050509150915081600014610ff757806040516020018082805190602001908083835b60208310610f475780518252601f199092019160209182019101610f28565b51815160209384036101000a60001901801990921691161790526040805192909401828103601f190183529384905262461bcd60e51b84526004840181815282516024860152825192965094508493604401925085019080838360005b83811015610fbc578181015183820152602001610fa4565b50505050905090810190601f168015610fe95780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505060016000555050505050505050565b6060603980548060200260200160405190810160405280929190818152602001828054801561106057602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311611042575b5050505050905090565b603554604080516385c858b160e01b8152905133926001600160a01b0316916385c858b1916004808301926020929190829003018186803b1580156110ae57600080fd5b505afa1580156110c2573d6000803e3d6000fd5b505050506040513d60208110156110d857600080fd5b50516001600160a01b03161461111a576040805162461bcd60e51b8152602060048201526002602482015261033360f41b604482015290519081900360640190fd5b6001600160a01b038087166000908152603760205260408082208151630b25f31560e01b815260048101919091528884166024820152878416604482015286841660648201526084810186905292841660a48401525173__$2ec35834968386f54fa313129cf94664e4$__92630b25f3159260c4808301939192829003018186803b1580156111a857600080fd5b505af41580156111bc573d6000803e3d6000fd5b505050506111c986614516565b505050505050565b603554604080516385c858b160e01b8152905133926001600160a01b0316916385c858b1916004808301926020929190829003018186803b15801561121557600080fd5b505afa158015611229573d6000803e3d6000fd5b505050506040513d602081101561123f57600080fd5b50516001600160a01b031614611281576040805162461bcd60e51b8152602060048201526002602482015261033360f41b604482015290519081900360640190fd5b6001600160a01b039182166000908152603760205260409020600c0180546001600160a01b03191691909216179055565b6001600160a01b038083166000908152603760209081526040808320600981015482516370a0823160e01b815287871660048201529251949586958695869586958695869586958695869593909216926370a08231926024808301939192829003018186803b15801561132457600080fd5b505afa158015611338573d6000803e3d6000fd5b505050506040513d602081101561134e57600080fd5b50519a5061135c8c826145b9565b909a50985061136b8c826146bc565b80985081995050508060010154945080600a0160009054906101000a90046001600160a01b03166001600160a01b031663e78c9b3b8d6040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060206040518083038186803b1580156113e757600080fd5b505afa1580156113fb573d6000803e3d6000fd5b505050506040513d602081101561141157600080fd5b8101908080519060200190929190505050955080600a0160009054906101000a90046001600160a01b03166001600160a01b03166379ce6b8c8d6040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060206040518083038186803b15801561149157600080fd5b505afa1580156114a5573d6000803e3d6000fd5b505050506040513d60208110156114bb57600080fd5b81019080805190602001909291905050509250603860008d6001600160a01b03166001600160a01b0316815260200190815260200160002060008e6001600160a01b03166001600160a01b0316815260200190815260200160002060000160009054906101000a900460ff16915080600b0160009054906101000a90046001600160a01b03166001600160a01b031663ee9907a48d6040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060206040518083038186803b15801561159657600080fd5b505afa1580156115aa573d6000803e3d6000fd5b505050506040513d60208110156115c057600080fd5b50519a9d999c50979a5095989497939650919491929050565b603554604080516385c858b160e01b8152905133926001600160a01b0316916385c858b1916004808301926020929190829003018186803b15801561161d57600080fd5b505afa158015611631573d6000803e3d6000fd5b505050506040513d602081101561164757600080fd5b50516001600160a01b031614611689576040805162461bcd60e51b8152602060048201526002602482015261033360f41b604482015290519081900360640190fd5b6001600160a01b03909116600090815260376020526040902060060155565b6000806000806000806000806000806116bf6155bd565b506001600160a01b03808c16600081815260376020908152604091829020825161026081018452815481526001820154928101929092526002810154928201929092526003820154606082015260048201546080820152600582015460a0820152600682015460c0820152600782015460e0820152600882015461010082015260098201548416610120820152600a8201548416610140820152600b8201548416610160820152600c9091015492831661018082015264ffffffffff600160a01b8404166101a082015260ff600160c81b8404811615156101c0830152600160d01b8404811615156101e0830152600160d81b840481161515610200830152600160e01b840481161515610220830152600160e81b90930490921615156102408301526117f2903063ffffffff61478816565b8161014001516001600160a01b03166318160ddd6040518163ffffffff1660e01b815260040160206040518083038186803b15801561183057600080fd5b505afa158015611844573d6000803e3d6000fd5b505050506040513d602081101561185a57600080fd5b5051610160830151604080516318160ddd60e01b815290516001600160a01b03909216916318160ddd91600480820192602092909190829003018186803b1580156118a457600080fd5b505afa1580156118b8573d6000803e3d6000fd5b505050506040513d60208110156118ce57600080fd5b50516020848101516040808701516060880151610140890151835163487b7e7960e11b815293519495929491936001600160a01b03909116926390f6fcf292600480840193829003018186803b15801561192757600080fd5b505afa15801561193b573d6000803e3d6000fd5b505050506040513d602081101561195157600080fd5b810190808051906020019092919050505087600001518860800151896101a001519a509a509a509a509a509a509a509a509a509a50509193959799509193959799565b6001600160a01b03811660009081526037602052604081206119b590614832565b92915050565b6001600160a01b0390811660009081526037602052604090206008810154600582015460068301546007840154600c85015460099095015493969295919490938183169392169160ff600160d01b8304811692600160c81b8104821692600160d81b8204831692600160e01b8304811692600160e81b90041690565b60398181548110611a4457fe5b6000918252602090912001546001600160a01b0316905081565b60026000541415611aa4576040805162461bcd60e51b815260206004820152601f60248201526000805160206156b1833981519152604482015290519081900360640190fd5b6002600055611ab1615659565b6001600160a01b03808616600081815260376020908152604080832094871683526038825280832093835292905220611aea84836145b9565b602085015283526000856002811115611aff57fe5b90506001816002811115611b0f57fe5b14611b1e578360200151611b21565b83515b60408501526000198714801590611b3b5750836040015187105b15611b4857604084018790525b73__$69254465eb8f179ea24caa73cf68b23524$__63d454c1cc848a8a858a8a600001518b602001518c60400151346040518a63ffffffff1660e01b8152600401808a8152602001896001600160a01b03166001600160a01b03168152602001888152602001876002811115611bba57fe5b60ff168152602001866001600160a01b03166001600160a01b03168152602001858152602001848152602001838152602001828152602001995050505050505050505060006040518083038186803b158015611c1557600080fd5b505af4158015611c29573d6000803e3d6000fd5b50505050611c3683614873565b6001816002811115611c4457fe5b1415611cc257600a8301546040808601518151632770a7eb60e21b81526001600160a01b03898116600483015260248201929092529151921691639dc29fac9160448082019260009290919082900301818387803b158015611ca557600080fd5b505af1158015611cb9573d6000803e3d6000fd5b50505050611d36565b600b8301546040808601518151632770a7eb60e21b81526001600160a01b03898116600483015260248201929092529151921691639dc29fac9160448082019260009290919082900301818387803b158015611d1d57600080fd5b505af1158015611d31573d6000803e3d6000fd5b505050505b6040840151611d509084908a90600063ffffffff61492b16565b6040840151611d71906001600160a01b038a1690600063ffffffff614c3716565b611d83886001600160a01b0316614d5c565b15611dc5576000611da1856040015134614d9290919063ffffffff16565b90508015611dc357611dc36001600160a01b038a16338363ffffffff614dd416565b505b336001600160a01b0316856001600160a01b0316896001600160a01b03167f81cfb79463601de705d4cf6b8d69112983d76a685120e5e4d3581f30871b87fc876040015142604051808381526020018281526020019250505060405180910390a450506001600055505050505050565b60026000541415611e7b576040805162461bcd60e51b815260206004820152601f60248201526000805160206156b1833981519152604482015290519081900360640190fd5b600260009081556001600160a01b038084168083526037602081815260408086203387526038808452828820958852948352958190206035548251631f94a27560e31b81529251919673__$69254465eb8f179ea24caa73cf68b23524$__9663d73dac72968a968d9691959294603994169263fca513a8926004808201939291829003018186803b158015611f0f57600080fd5b505afa158015611f23573d6000803e3d6000fd5b505050506040513d6020811015611f3957600080fd5b50516040516001600160e01b031960e089901b168152600481018781526001600160a01b0380881660248401526044830187905260648301869052831660a483015260c060848301908152845460c484018190529192909160e49091019085908015611fce57602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311611fb0575b505097505050505050505060006040518083038186803b158015611ff157600080fd5b505af4158015612005573d6000803e3d6000fd5b5050825460ff191685158015919091178455915061205990505760405133906001600160a01b038616907e058a56ea94653cdf4f152d227ace22d4c00ad99e2a43f58cb7d9e3feb295f290600090a3612090565b60405133906001600160a01b038616907f44c58d81365b66dd4b1a7f36c25aa97b8c71c361ee4937adc1a00000227db5dd90600090a35b505060016000555050565b600260005414156120e1576040805162461bcd60e51b815260206004820152601f60248201526000805160206156b1833981519152604482015290519081900360640190fd5b60026000556120ee615681565b6001600160a01b038416600081815260376020526040902090612117903063ffffffff61478816565b825261213c61271061213086600963ffffffff614e5616565b9063ffffffff614eaf16565b6060830181905261215d906127109061213090610bb863ffffffff614e5616565b608083015281518411156121a25760405162461bcd60e51b81526004018080602001828103825260318152602001806156d16031913960400191505060405180910390fd5b600082606001511180156121ba575060008260800151115b6121f55760405162461bcd60e51b81526004018080602001828103825260328152602001806158436032913960400191505060405180910390fd5b85806122116001600160a01b038816828863ffffffff614dd416565b816001600160a01b031663ee87255888888760600151896040518563ffffffff1660e01b815260040180856001600160a01b03166001600160a01b0316815260200184815260200183815260200180602001828103825283818151815260200191508051906020019080838360005b83811015612298578181015183820152602001612280565b50505050905090810190601f1680156122c55780820380516001836020036101000a031916815260200191505b5095505050505050600060405180830381600087803b1580156122e757600080fd5b505af11580156122fb573d6000803e3d6000fd5b506000925061231c9150506001600160a01b0389163063ffffffff61478816565b60608601518651919250612336919063ffffffff614ef116565b81146123735760405162461bcd60e51b81526004018080602001828103825260328152602001806157666032913960400191505060405180910390fd5b8373__$5e6137a1b5a0a366e2874209b5abf71c10$__63a023726490918a88600001516123b18a608001518b60600151614d9290919063ffffffff16565b8a608001516040518663ffffffff1660e01b815260040180868152602001856001600160a01b03166001600160a01b031681526020018481526020018381526020018281526020019550505050505060006040518083038186803b15801561241857600080fd5b505af415801561242c573d6000803e3d6000fd5b505050506124c9603560009054906101000a90046001600160a01b03166001600160a01b031663ee8912966040518163ffffffff1660e01b815260040160206040518083038186803b15801561248157600080fd5b505afa158015612495573d6000803e3d6000fd5b505050506040513d60208110156124ab57600080fd5b505160808701516001600160a01b038b16919063ffffffff614dd416565b876001600160a01b0316896001600160a01b03167f5b8f46461c1dd69fb968f1a003acee221ea3e19540e350233b612ddb43433b558988606001518960800151426040518085815260200184815260200183815260200182815260200194505050505060405180910390a35050600160005550505050505050565b603554604080516385c858b160e01b8152905133926001600160a01b0316916385c858b1916004808301926020929190829003018186803b15801561258857600080fd5b505afa15801561259c573d6000803e3d6000fd5b505050506040513d60208110156125b257600080fd5b50516001600160a01b0316146125f4576040805162461bcd60e51b8152602060048201526002602482015261033360f41b604482015290519081900360640190fd5b6001600160a01b03909116600090815260376020526040902060080155565b603554604080516385c858b160e01b8152905133926001600160a01b0316916385c858b1916004808301926020929190829003018186803b15801561265757600080fd5b505afa15801561266b573d6000803e3d6000fd5b505050506040513d602081101561268157600080fd5b50516001600160a01b0316146126c3576040805162461bcd60e51b8152602060048201526002602482015261033360f41b604482015290519081900360640190fd5b8115612754576001600160a01b0383166000908152603760205260408082208151637b1dd5df60e11b815260048101919091528315156024820152905173__$2ec35834968386f54fa313129cf94664e4$__9263f63babbe9260448082019391829003018186803b15801561273757600080fd5b505af415801561274b573d6000803e3d6000fd5b505050506127d3565b6001600160a01b03831660009081526037602052604080822081516372efab5360e11b81526004810191909152905173__$2ec35834968386f54fa313129cf94664e4$__9263e5df56a69260248082019391829003018186803b1580156127ba57600080fd5b505af41580156127ce573d6000803e3d6000fd5b505050505b505050565b603554604080516385c858b160e01b8152905133926001600160a01b0316916385c858b1916004808301926020929190829003018186803b15801561281c57600080fd5b505afa158015612830573d6000803e3d6000fd5b505050506040513d602081101561284657600080fd5b50516001600160a01b031614612888576040805162461bcd60e51b8152602060048201526002602482015261033360f41b604482015290519081900360640190fd5b6001600160a01b03909116600090815260376020526040902060070155565b603554604080516385c858b160e01b8152905133926001600160a01b0316916385c858b1916004808301926020929190829003018186803b1580156128eb57600080fd5b505afa1580156128ff573d6000803e3d6000fd5b505050506040513d602081101561291557600080fd5b50516001600160a01b031614612957576040805162461bcd60e51b8152602060048201526002602482015261033360f41b604482015290519081900360640190fd5b6001600160a01b039091166000908152603760205260409020600c018054911515600160d81b0260ff60d81b19909216919091179055565b600073__$7347ff53b2b46c21e26a37164ae7f6739f$__634d9afd5e858585603760386039603560009054906101000a90046001600160a01b03166001600160a01b031663fca513a86040518163ffffffff1660e01b815260040160206040518083038186803b158015612a0257600080fd5b505afa158015612a16573d6000803e3d6000fd5b505050506040513d6020811015612a2c57600080fd5b505160405160e089811b6001600160e01b03191682526001600160a01b0389811660048401908152898216602485015260448401899052606484018890526084840187905290841660c484015260a48301918252845460e484018190529092610104019085908015612ac757602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311612aa9575b50509850505050505050505060206040518083038186803b158015612aeb57600080fd5b505af4158015612aff573d6000803e3d6000fd5b505050506040513d6020811015612b1557600080fd5b5051949350505050565b600281565b60026000541415612b6a576040805162461bcd60e51b815260206004820152601f60248201526000805160206156b1833981519152604482015290519081900360640190fd5b600260009081556001600160a01b0383168082526037602090815260408084203380865260388452828620948652939092528320909290918190612bae90856145b9565b915091506000856002811115612bc057fe5b905073__$69254465eb8f179ea24caa73cf68b23524$__63d4cadffc86868686866040518663ffffffff1660e01b815260040180868152602001858152602001848152602001838152602001826002811115612c1857fe5b60ff1681526020019550505050505060006040518083038186803b158015612c3f57600080fd5b505af4158015612c53573d6000803e3d6000fd5b50505050612c6085614873565b6001816002811115612c6e57fe5b1415612d5257600a85015460408051632770a7eb60e21b81523360048201526024810186905290516001600160a01b0390921691639dc29fac9160448082019260009290919082900301818387803b158015612cc957600080fd5b505af1158015612cdd573d6000803e3d6000fd5b505050600b860154604080516340c10f1960e01b81523360048201526024810187905290516001600160a01b0390921692506340c10f1991604480830192600092919082900301818387803b158015612d3557600080fd5b505af1158015612d49573d6000803e3d6000fd5b50505050612e38565b600b85015460408051632770a7eb60e21b81523360048201526024810185905290516001600160a01b0390921691639dc29fac9160448082019260009290919082900301818387803b158015612da757600080fd5b505af1158015612dbb573d6000803e3d6000fd5b505050600a860154600387015460408051630ab714fb60e11b8152336004820152602481018790526044810192909252516001600160a01b03909216925063156e29f691606480830192600092919082900301818387803b158015612e1f57600080fd5b505af1158015612e33573d6000803e3d6000fd5b505050505b612e4b858860008063ffffffff61492b16565b60408051428152905133916001600160a01b038a16917fea368a40e9570069bb8e6511d668293ad2e1f03b0d982431fd223de9f3b70ca69181900360200190a3505060016000555050505050565b603554604080516385c858b160e01b8152905133926001600160a01b0316916385c858b1916004808301926020929190829003018186803b158015612edd57600080fd5b505afa158015612ef1573d6000803e3d6000fd5b505050506040513d6020811015612f0757600080fd5b50516001600160a01b031614612f49576040805162461bcd60e51b8152602060048201526002602482015261033360f41b604482015290519081900360640190fd5b6001600160a01b039091166000908152603760205260409020600c018054911515600160e81b0260ff60e81b19909216919091179055565b60026000541415612fc7576040805162461bcd60e51b815260206004820152601f60248201526000805160206156b1833981519152604482015290519081900360640190fd5b600260009081556001600160a01b038086168083526037602090815260408085209388168552603882528085208386529091528084208151630d9e1f7160e11b81526004810185905260248101939093526044830187905290519293909273__$69254465eb8f179ea24caa73cf68b23524$__92631b3c3ee2926064808301939192829003018186803b15801561305d57600080fd5b505af4158015613071573d6000803e3d6000fd5b50505050826000141561308757805460ff191681555b61309082614873565b6130a3828760008763ffffffff61492b16565b6130bd6001600160a01b038716868663ffffffff614dd416565b846001600160a01b0316866001600160a01b03167f9c4ed599cd8555b9c1e8cd7643240d7d71eb76b792948c49fcb4d411f7b6b3c68642604051808381526020018281526020019250505060405180910390a35050600160005550505050565b603554604080516385c858b160e01b8152905133926001600160a01b0316916385c858b1916004808301926020929190829003018186803b15801561316157600080fd5b505afa158015613175573d6000803e3d6000fd5b505050506040513d602081101561318b57600080fd5b50516001600160a01b0316146131cd576040805162461bcd60e51b8152602060048201526002602482015261033360f41b604482015290519081900360640190fd5b6001600160a01b038416600090815260376020526040808220815163126ee27360e11b81526004810191909152602481018690526044810185905260648101849052905173__$2ec35834968386f54fa313129cf94664e4$__926324ddc4e69260848082019391829003018186803b15801561324857600080fd5b505af415801561325c573d6000803e3d6000fd5b5050505050505050565b603554604080516385c858b160e01b8152905133926001600160a01b0316916385c858b1916004808301926020929190829003018186803b1580156132aa57600080fd5b505afa1580156132be573d6000803e3d6000fd5b505050506040513d60208110156132d457600080fd5b50516001600160a01b031614613316576040805162461bcd60e51b8152602060048201526002602482015261033360f41b604482015290519081900360640190fd5b6001600160a01b03821660009081526037602052604090208161334757600c8101805460ff60e01b191690556127d3565b80541580159061335b575060008160040154115b6133965760405162461bcd60e51b81526004018080602001828103825260248152602001806157986024913960400191505060405180910390fd5b600c8101805460ff60e01b1916600160e01b179055505050565b600080600080600080600073__$7347ff53b2b46c21e26a37164ae7f6739f$__63901d711489603760386039603560009054906101000a90046001600160a01b03166001600160a01b031663fca513a86040518163ffffffff1660e01b815260040160206040518083038186803b15801561342a57600080fd5b505afa15801561343e573d6000803e3d6000fd5b505050506040513d602081101561345457600080fd5b50516040516001600160e01b031960e088901b1681526001600160a01b03808716600483019081526024830187905260448301869052908316608483015260a060648301908152845460a484018190529192909160c490910190859080156134e557602002820191906000526020600020905b81546001600160a01b031681526001909101906020018083116134c7575b5050965050505050505060c06040518083038186803b15801561350757600080fd5b505af415801561351b573d6000803e3d6000fd5b505050506040513d60c081101561353157600080fd5b5080516020808301516040808501516060860151608087015160a090970151603654845163ab8bb39360e01b8152600481018990526024810187905260448101859052606481018490526001600160a01b0390911660848201529351969e50939c50909a50949750939550935073__$7347ff53b2b46c21e26a37164ae7f6739f$__9263ab8bb3939260a48083019392829003018186803b1580156135d557600080fd5b505af41580156135e9573d6000803e3d6000fd5b505050506040513d60208110156135ff57600080fd5b50519698959750939594919390925090565b600061361b614f4b565b60025490915060ff16806136325750613632614f50565b8061363e575060015481115b6136795760405162461bcd60e51b815260040180806020018281038252602e815260200180615815602e913960400191505060405180910390fd5b60025460ff1615801561369a576002805460ff191660019081179091558290555b603580546001600160a01b0319166001600160a01b03858116919091179182905560408051633efbbf0f60e21b81529051929091169163fbeefc3c91600480820192602092909190829003018186803b1580156136f657600080fd5b505afa15801561370a573d6000803e3d6000fd5b505050506040513d602081101561372057600080fd5b5051603680546001600160a01b0319166001600160a01b0390921691909117905580156127d3576002805460ff19169055505050565b6035546001600160a01b031681565b600260005414156137ab576040805162461bcd60e51b815260206004820152601f60248201526000805160206156b1833981519152604482015290519081900360640190fd5b600260009081556001600160a01b038086168083526037602090815260408085203386526038835281862093865292825280852060088401546035548351631f94a27560e31b815293519597929692956138dd95600a9390930a94612130948d9493169263fca513a892600480840193829003018186803b15801561382f57600080fd5b505afa158015613843573d6000803e3d6000fd5b505050506040513d602081101561385957600080fd5b50516040805163b3596f0760e01b81526001600160a01b038e811660048301529151919092169163b3596f07916024808301926020929190829003018186803b1580156138a557600080fd5b505afa1580156138b9573d6000803e3d6000fd5b505050506040513d60208110156138cf57600080fd5b50519063ffffffff614e5616565b905073__$69254465eb8f179ea24caa73cf68b23524$__6305011d4884848a8a868b6019603760386039603560009054906101000a90046001600160a01b03166001600160a01b031663fca513a86040518163ffffffff1660e01b815260040160206040518083038186803b15801561395557600080fd5b505afa158015613969573d6000803e3d6000fd5b505050506040513d602081101561397f57600080fd5b50516040516001600160e01b031960e08e901b168152600481018c8152602482018c90526001600160a01b03808c166044840152606483018b9052608483018a905260a4830189905260c4830188905260e4830187905261010483018690528316610144830152610160610124830190815284546101648401819052919290916101849091019085908015613a3d57602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311613a1f575b50509c5050505050505050505050505060006040518083038186803b158015613a6557600080fd5b505af4158015613a79573d6000803e3d6000fd5b50505050613a8683614873565b600c8301805464ffffffffff60a01b1916600160a01b4264ffffffffff160217905560038301546001866002811115613abb57fe5b6002811115613ac657fe5b1415613bc057600a84015460408051630ab714fb60e11b8152336004820152602481018a90526044810184905290516001600160a01b039092169163156e29f69160648082019260009290919082900301818387803b158015613b2857600080fd5b505af1158015613b3c573d6000803e3d6000fd5b50505050600a84015460408051631e739ae360e21b815233600482015290516000926001600160a01b0316916379ce6b8c916024808301926020929190829003018186803b158015613b8d57600080fd5b505afa158015613ba1573d6000803e3d6000fd5b505050506040513d6020811015613bb757600080fd5b50613c2e915050565b600b840154604080516340c10f1960e01b8152336004820152602481018a905290516001600160a01b03909216916340c10f199160448082019260009290919082900301818387803b158015613c1557600080fd5b505af1158015613c29573d6000803e3d6000fd5b505050505b613c41848960008a63ffffffff61492b16565b613c5b6001600160a01b038916338963ffffffff614dd416565b61ffff8516336001600160a01b038a167fe002884724be85e729c98360169e709585b299ace6fbe12aa791d2fee6f652808a8a60018c6002811115613c9c57fe5b6002811115613ca757fe5b14613cb6578960020154613cb8565b865b60408051938452602084019290925282820152426060830152519081900360800190a450506001600055505050505050565b60026000541415613d30576040805162461bcd60e51b815260206004820152601f60248201526000805160206156b1833981519152604482015290519081900360640190fd5b600260009081556001600160a01b038084168252603760209081526040808420600a81015482516370a0823160e01b81528786166004820152925191959416939284926370a082319260248083019392829003018186803b158015613d9457600080fd5b505afa158015613da8573d6000803e3d6000fd5b505050506040513d6020811015613dbe57600080fd5b5051905080613dfe5760405162461bcd60e51b81526004018080602001828103825260388152602001806157dd6038913960400191505060405180910390fd5b6000613e37613e266aa56fa5b99019a5c8000000613e1a614f56565b9063ffffffff614ef116565b60038601549063ffffffff614f6616565b90506000836001600160a01b031663e78c9b3b876040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060206040518083038186803b158015613e9157600080fd5b505afa158015613ea5573d6000803e3d6000fd5b505050506040513d6020811015613ebb57600080fd5b50516001860154909150811080613ed157508181115b613f0c5760405162461bcd60e51b815260040180806020018281038252602f815260200180615737602f913960400191505060405180910390fd5b613f1585614873565b836001600160a01b0316639dc29fac87856040518363ffffffff1660e01b815260040180836001600160a01b03166001600160a01b0316815260200182815260200192505050600060405180830381600087803b158015613f7557600080fd5b505af1158015613f89573d6000803e3d6000fd5b50505050836001600160a01b031663156e29f6878588600301546040518463ffffffff1660e01b815260040180846001600160a01b03166001600160a01b031681526020018381526020018281526020019350505050600060405180830381600087803b158015613ff957600080fd5b505af115801561400d573d6000803e3d6000fd5b50614027925087915089905060008063ffffffff61492b16565b856001600160a01b0316876001600160a01b03167f443060d15ff6dac05881a7c07a46ef8085d8af4399e436be6c25250df40c5f18426040518082815260200191505060405180910390a3505050505050506001600055565b60001981565b6001600160a01b03811660009081526037602052604081206119b590614f9e565b600260005414156140ed576040805162461bcd60e51b815260206004820152601f60248201526000805160206156b1833981519152604482015290519081900360640190fd5b600260009081556001600160a01b0384168082526037602090815260408084203385526038835281852093855292909152808320815163664f158360e01b8152600481018490526024810187905291519293909273__$69254465eb8f179ea24caa73cf68b23524$__9263664f1583926044808301939192829003018186803b15801561417957600080fd5b505af415801561418d573d6000803e3d6000fd5b5050506009830154604080516370a0823160e01b815233600482015290516001600160a01b03909216925060009183916370a08231916024808301926020929190829003018186803b1580156141e257600080fd5b505afa1580156141f6573d6000803e3d6000fd5b505050506040513d602081101561420c57600080fd5b505115905061421a84614873565b61422d848888600063ffffffff61492b16565b801561423f57825460ff191660011783555b604080516394362e8b60e01b81523360048201526024810188905290516001600160a01b038416916394362e8b91604480830192600092919082900301818387803b15801561428d57600080fd5b505af11580156142a1573d6000803e3d6000fd5b506142bb925050506001600160a01b038816876001614c37565b60408051878152426020820152815161ffff88169233926001600160a01b038c16927fc12c57b1c73a2c3a2ea4613e9476abb3d8d146857aab7329e24243fb59710c82929181900390910190a4505060016000555050505050565b603554604080516385c858b160e01b8152905133926001600160a01b0316916385c858b1916004808301926020929190829003018186803b15801561435a57600080fd5b505afa15801561436e573d6000803e3d6000fd5b505050506040513d602081101561438457600080fd5b50516001600160a01b0316146143c6576040805162461bcd60e51b8152602060048201526002602482015261033360f41b604482015290519081900360640190fd5b6001600160a01b03909116600090815260376020526040902060050155565b603554604080516385c858b160e01b8152905133926001600160a01b0316916385c858b1916004808301926020929190829003018186803b15801561442957600080fd5b505afa15801561443d573d6000803e3d6000fd5b505050506040513d602081101561445357600080fd5b50516001600160a01b031614614495576040805162461bcd60e51b8152602060048201526002602482015261033360f41b604482015290519081900360640190fd5b6001600160a01b038116600090815260376020526040808220815163041e0b2d60e51b81526004810191909152905173__$2ec35834968386f54fa313129cf94664e4$__926383c165a09260248082019391829003018186803b1580156144fb57600080fd5b505af415801561450f573d6000803e3d6000fd5b5050505050565b6000805b60395481101561456357826001600160a01b03166039828154811061453b57fe5b6000918252602090912001546001600160a01b0316141561455b57600191505b60010161451a565b50806145b557603980546001810182556000919091527fdc16fef70f8d5ddbc01ee3d903d1e69c18a3c7be080eb86a81e0578814ee58d30180546001600160a01b0319166001600160a01b0384161790555b5050565b600a810154604080516370a0823160e01b81526001600160a01b0385811660048301529151600093849316916370a08231916024808301926020929190829003018186803b15801561460a57600080fd5b505afa15801561461e573d6000803e3d6000fd5b505050506040513d602081101561463457600080fd5b5051600b840154604080516370a0823160e01b81526001600160a01b038881166004830152915191909216916370a08231916024808301926020929190829003018186803b15801561468557600080fd5b505afa158015614699573d6000803e3d6000fd5b505050506040513d60208110156146af57600080fd5b5051909590945092505050565b600a8101546040805163631a6fd560e11b81526001600160a01b03858116600483015291516000938493169163c634dfaa916024808301926020929190829003018186803b15801561470d57600080fd5b505afa158015614721573d6000803e3d6000fd5b505050506040513d602081101561473757600080fd5b5051600b8401546040805163631a6fd560e11b81526001600160a01b0388811660048301529151919092169163c634dfaa916024808301926020929190829003018186803b15801561468557600080fd5b600061479383614d5c565b156147a957506001600160a01b038116316119b5565b826001600160a01b03166370a08231836040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060206040518083038186803b1580156147ff57600080fd5b505afa158015614813573d6000803e3d6000fd5b505050506040513d602081101561482957600080fd5b50519392505050565b60008061486c8360040154614860856002015486600c0160149054906101000a900464ffffffffff16614fcc565b9063ffffffff614f6616565b9392505050565b600061487e82615031565b90508015614907576001820154600c8301546000916148aa91600160a01b900464ffffffffff16615131565b83549091506148c090829063ffffffff614f6616565b83556002830154600c8401546000916148e691600160a01b900464ffffffffff16614fcc565b90506148ff846004015482614f6690919063ffffffff16565b600485015550505b50600c01805464ffffffffff60a01b1916600160a01b4264ffffffffff1602179055565b600a8401546040805163487b7e7960e11b815290516000926001600160a01b0316916390f6fcf2916004808301926020929190829003018186803b15801561497257600080fd5b505afa158015614986573d6000803e3d6000fd5b505050506040513d602081101561499c57600080fd5b5051905060006149bb6001600160a01b0386163063ffffffff61478816565b90506149cf856001600160a01b0316614d5c565b156149e7576149e4813463ffffffff614d9216565b90505b600c860154600090819081906001600160a01b03166357e37af089614a2289614a16898d63ffffffff614ef116565b9063ffffffff614d9216565b8c600a0160009054906101000a90046001600160a01b03166001600160a01b03166318160ddd6040518163ffffffff1660e01b815260040160206040518083038186803b158015614a7257600080fd5b505afa158015614a86573d6000803e3d6000fd5b505050506040513d6020811015614a9c57600080fd5b5051600b8e0154604080516318160ddd60e01b815290516001600160a01b03909216916318160ddd91600480820192602092909190829003018186803b158015614ae557600080fd5b505afa158015614af9573d6000803e3d6000fd5b505050506040513d6020811015614b0f57600080fd5b5051604080516001600160e01b031960e088901b1681526001600160a01b039095166004860152602485019390935260448401919091526064830152608482018990525160a4808301926060929190829003018186803b158015614b7257600080fd5b505afa158015614b86573d6000803e3d6000fd5b505050506040513d6060811015614b9c57600080fd5b50805160208083015160409384015160018e0184905560038e0182905560028e018190558d5460048f015486518681529485018490528487018c905260608501839052608085019190915260a0840152935192965094509192506001600160a01b038a16917f131cf1f61e39fd78f61f07d78533f5b6c13629c80ef6965983e92c72efbaa4a4919081900360c00190a2505050505050505050565b81614c41576127d3565b614c4a83614d5c565b15614d415781341015614c8e5760405162461bcd60e51b81526004018080602001828103825260358152602001806157026035913960400191505060405180910390fd5b8015614d3c57600033614ca7348563ffffffff614d9216565b60405161c35091906000818181858888f193505050503d8060008114614ce9576040519150601f19603f3d011682016040523d82523d6000602084013e614cee565b606091505b5050905080614d3a576040805162461bcd60e51b815260206004820152601360248201527211551217d514905394d1915497d19052531151606a1b604482015290519081900360640190fd5b505b6127d3565b6127d36001600160a01b03841633308563ffffffff61519116565b60006001600160a01b03821615806119b55750506001600160a01b031673eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee1490565b600061486c83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506151f1565b80614dde576127d3565b614de783614d5c565b15614e3c576040516000906001600160a01b0384169061c35090849084818181858888f193505050503d8060008114614ce9576040519150601f19603f3d011682016040523d82523d6000602084013e614cee565b6127d36001600160a01b038416838363ffffffff61524b16565b600082614e65575060006119b5565b82820282848281614e7257fe5b041461486c5760405162461bcd60e51b81526004018080602001828103825260218152602001806157bc6021913960400191505060405180910390fd5b600061486c83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525061529d565b60008282018381101561486c576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b600290565b303b1590565b6b033b2e3c9fd0803ce800000090565b600061486c6b033b2e3c9fd0803ce8000000612130614f8b868663ffffffff614e5616565b6b019d971e4fe8401e7400000090614ef1565b60008061486c8360000154614860856001015486600c0160149054906101000a900464ffffffffff16615131565b600080614fe64264ffffffffff851663ffffffff614d9216565b90506000614ffe856301e1338063ffffffff614eaf16565b90506150288261501c61500f614f56565b849063ffffffff614ef116565b9063ffffffff61530216565b95945050505050565b60006119b582600b0160009054906101000a90046001600160a01b03166001600160a01b03166318160ddd6040518163ffffffff1660e01b815260040160206040518083038186803b15801561508657600080fd5b505afa15801561509a573d6000803e3d6000fd5b505050506040513d60208110156150b057600080fd5b5051600a840154604080516318160ddd60e01b815290516001600160a01b03909216916318160ddd91600480820192602092909190829003018186803b1580156150f957600080fd5b505afa15801561510d573d6000803e3d6000fd5b505050506040513d602081101561512357600080fd5b50519063ffffffff614ef116565b60008061514b4264ffffffffff851663ffffffff614d9216565b9050600061517461515f6301e1338061535c565b6151688461535c565b9063ffffffff61537216565b9050615028615181614f56565b613e1a878463ffffffff614f6616565b604080516001600160a01b0380861660248301528416604482015260648082018490528251808303909101815260849091019091526020810180516001600160e01b03166323b872dd60e01b1790526151eb908590615395565b50505050565b600081848411156152435760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315610fbc578181015183820152602001610fa4565b505050900390565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b1790526127d3908490615395565b600081836152ec5760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315610fbc578181015183820152602001610fa4565b5060008385816152f857fe5b0495945050505050565b60006002820661531e576b033b2e3c9fd0803ce8000000615320565b825b90506002820491505b81156119b5576153398384614f66565b925060028206156153515761534e8184614f66565b90505b600282049150615329565b60006119b582633b9aca0063ffffffff614e5616565b600060028204610c398361213061500f876b033b2e3c9fd0803ce8000000614e56565b60606153ea826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b03166154469092919063ffffffff16565b8051909150156127d35780806020019051602081101561540957600080fd5b50516127d35760405162461bcd60e51b815260040180806020018281038252602a815260200180615875602a913960400191505060405180910390fd5b6060610c398484600085606061545b85610c05565b6154ac576040805162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015290519081900360640190fd5b60006060866001600160a01b031685876040518082805190602001908083835b602083106154eb5780518252601f1990920191602091820191016154cc565b6001836020036101000a03801982511681845116808217855250505050505090500191505060006040518083038185875af1925050503d806000811461554d576040519150601f19603f3d011682016040523d82523d6000602084013e615552565b606091505b50915091508115615566579150610c399050565b8051156155765780518082602001fd5b60405162461bcd60e51b8152602060048201818152865160248401528651879391928392604401919085019080838360008315610fbc578181015183820152602001610fa4565b6040805161026081018252600080825260208201819052918101829052606081018290526080810182905260a0810182905260c0810182905260e08101829052610100810182905261012081018290526101408101829052610160810182905261018081018290526101a081018290526101c081018290526101e081018290526102008101829052610220810182905261024081019190915290565b6040518060800160405280600081526020016000815260200160008152602001600081525090565b6040518060a001604052806000815260200160008152602001600081526020016000815260200160008152509056fe5265656e7472616e637947756172643a207265656e7472616e742063616c6c005468657265206973206e6f7420656e6f756768206c697175696469747920617661696c61626c6520746f20626f72726f7754686520616d6f756e7420616e64207468652076616c75652073656e7420746f206465706f73697420646f206e6f74206d61746368496e746572657374207261746520726562616c616e636520636f6e646974696f6e732077657265206e6f74206d65745468652061637475616c2062616c616e6365206f66207468652070726f746f636f6c20697320696e636f6e73697374656e745265736572766520686173206e6f74206265656e20696e697469616c697a656420796574536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f775573657220646f6573206e6f74206861766520616e7920737461626c652072617465206c6f616e20666f7220746869732072657365727665436f6e747261637420696e7374616e63652068617320616c7265616479206265656e20696e697469616c697a65645468652072657175657374656420616d6f756e7420697320746f6f20736d616c6c20666f72206120466c6173684c6f616e2e5361666545524332303a204552433230206f7065726174696f6e20646964206e6f742073756363656564a264697066735822122045a878c5d6533b4d3092ade9f71d5305fd57b4a0361e2152d0b73703e898ace464736f6c63430006080033";
export interface LendingPoolLibraryAddresses {
["__$2ec35834968386f54fa313129cf94664e4$__"]: string;
["__$69254465eb8f179ea24caa73cf68b23524$__"]: string;
["__$5e6137a1b5a0a366e2874209b5abf71c10$__"]: string;
["__$7347ff53b2b46c21e26a37164ae7f6739f$__"]: string;
}