/* Autogenerated file. Do not edit manually. */ /* eslint-disable */ import { Signer } from "ethers"; import { Provider, TransactionRequest } from "@ethersproject/providers"; import { Contract, ContractFactory, Overrides } from "@ethersproject/contracts"; import type { UiPoolDataProvider } from "./UiPoolDataProvider"; export class UiPoolDataProviderFactory extends ContractFactory { constructor(signer?: Signer) { super(_abi, _bytecode, signer); } deploy( _reserveOracle: string, _nftOracle: string, overrides?: Overrides ): Promise { return super.deploy( _reserveOracle, _nftOracle, overrides || {} ) as Promise; } getDeployTransaction( _reserveOracle: string, _nftOracle: string, overrides?: Overrides ): TransactionRequest { return super.getDeployTransaction( _reserveOracle, _nftOracle, overrides || {} ); } attach(address: string): UiPoolDataProvider { return super.attach(address) as UiPoolDataProvider; } connect(signer: Signer): UiPoolDataProviderFactory { return super.connect(signer) as UiPoolDataProviderFactory; } static connect( address: string, signerOrProvider: Signer | Provider ): UiPoolDataProvider { return new Contract(address, _abi, signerOrProvider) as UiPoolDataProvider; } } const _abi = [ { inputs: [ { internalType: "contract IReserveOracleGetter", name: "_reserveOracle", type: "address", }, { internalType: "contract INFTOracleGetter", name: "_nftOracle", type: "address", }, ], stateMutability: "nonpayable", type: "constructor", }, { inputs: [ { internalType: "contract ILendPoolAddressesProvider", name: "provider", type: "address", }, { internalType: "address", name: "user", type: "address", }, ], name: "getNftsData", outputs: [ { components: [ { internalType: "address", name: "underlyingAsset", type: "address", }, { internalType: "string", name: "name", type: "string", }, { internalType: "string", name: "symbol", type: "string", }, { internalType: "uint256", name: "ltv", type: "uint256", }, { internalType: "uint256", name: "liquidationThreshold", type: "uint256", }, { internalType: "uint256", name: "liquidationBonus", type: "uint256", }, { internalType: "uint256", name: "redeemDuration", type: "uint256", }, { internalType: "uint256", name: "auctionDuration", type: "uint256", }, { internalType: "uint256", name: "redeemFine", type: "uint256", }, { internalType: "uint256", name: "redeemThreshold", type: "uint256", }, { internalType: "uint256", name: "minBidFine", type: "uint256", }, { internalType: "bool", name: "isActive", type: "bool", }, { internalType: "bool", name: "isFrozen", type: "bool", }, { internalType: "address", name: "bNftAddress", type: "address", }, { internalType: "uint256", name: "priceInEth", type: "uint256", }, { internalType: "uint256", name: "totalCollateral", type: "uint256", }, ], internalType: "struct IUiPoolDataProvider.AggregatedNftData[]", name: "", type: "tuple[]", }, { components: [ { internalType: "address", name: "underlyingAsset", type: "address", }, { internalType: "address", name: "bNftAddress", type: "address", }, { internalType: "uint256", name: "totalCollateral", type: "uint256", }, ], internalType: "struct IUiPoolDataProvider.UserNftData[]", name: "", type: "tuple[]", }, ], stateMutability: "view", type: "function", }, { inputs: [ { internalType: "contract ILendPoolAddressesProvider", name: "provider", type: "address", }, ], name: "getNftsList", outputs: [ { internalType: "address[]", name: "", type: "address[]", }, ], stateMutability: "view", type: "function", }, { inputs: [ { internalType: "contract ILendPoolAddressesProvider", name: "provider", type: "address", }, { internalType: "address", name: "user", type: "address", }, ], name: "getReservesData", outputs: [ { components: [ { internalType: "address", name: "underlyingAsset", type: "address", }, { internalType: "string", name: "name", type: "string", }, { internalType: "string", name: "symbol", type: "string", }, { internalType: "uint256", name: "decimals", type: "uint256", }, { internalType: "uint256", name: "reserveFactor", type: "uint256", }, { internalType: "bool", name: "borrowingEnabled", type: "bool", }, { internalType: "bool", name: "isActive", type: "bool", }, { internalType: "bool", name: "isFrozen", type: "bool", }, { internalType: "uint128", name: "liquidityIndex", type: "uint128", }, { internalType: "uint128", name: "variableBorrowIndex", type: "uint128", }, { internalType: "uint128", name: "liquidityRate", type: "uint128", }, { internalType: "uint128", name: "variableBorrowRate", type: "uint128", }, { internalType: "uint40", name: "lastUpdateTimestamp", type: "uint40", }, { internalType: "address", name: "bTokenAddress", type: "address", }, { internalType: "address", name: "debtTokenAddress", type: "address", }, { internalType: "address", name: "interestRateAddress", type: "address", }, { internalType: "uint256", name: "availableLiquidity", type: "uint256", }, { internalType: "uint256", name: "totalVariableDebt", type: "uint256", }, { internalType: "uint256", name: "priceInEth", type: "uint256", }, { internalType: "uint256", name: "variableRateSlope1", type: "uint256", }, { internalType: "uint256", name: "variableRateSlope2", type: "uint256", }, ], internalType: "struct IUiPoolDataProvider.AggregatedReserveData[]", name: "", type: "tuple[]", }, { components: [ { internalType: "address", name: "underlyingAsset", type: "address", }, { internalType: "uint256", name: "bTokenBalance", type: "uint256", }, { internalType: "uint256", name: "variableDebt", type: "uint256", }, ], internalType: "struct IUiPoolDataProvider.UserReserveData[]", name: "", type: "tuple[]", }, ], stateMutability: "view", type: "function", }, { inputs: [ { internalType: "contract ILendPoolAddressesProvider", name: "provider", type: "address", }, ], name: "getReservesList", outputs: [ { internalType: "address[]", name: "", type: "address[]", }, ], stateMutability: "view", type: "function", }, { inputs: [ { internalType: "contract ILendPoolAddressesProvider", name: "provider", type: "address", }, { internalType: "address[]", name: "nftAssets", type: "address[]", }, { internalType: "uint256[]", name: "nftTokenIds", type: "uint256[]", }, ], name: "getSimpleLoansData", outputs: [ { components: [ { internalType: "uint256", name: "loanId", type: "uint256", }, { internalType: "uint256", name: "state", type: "uint256", }, { internalType: "address", name: "reserveAsset", type: "address", }, { internalType: "uint256", name: "totalCollateralInReserve", type: "uint256", }, { internalType: "uint256", name: "totalDebtInReserve", type: "uint256", }, { internalType: "uint256", name: "availableBorrowsInReserve", type: "uint256", }, { internalType: "uint256", name: "healthFactor", type: "uint256", }, { internalType: "uint256", name: "liquidatePrice", type: "uint256", }, { internalType: "address", name: "bidderAddress", type: "address", }, { internalType: "uint256", name: "bidPrice", type: "uint256", }, { internalType: "uint256", name: "bidBorrowAmount", type: "uint256", }, { internalType: "uint256", name: "bidFine", type: "uint256", }, ], internalType: "struct IUiPoolDataProvider.AggregatedLoanData[]", name: "", type: "tuple[]", }, ], stateMutability: "view", type: "function", }, { inputs: [ { internalType: "contract ILendPoolAddressesProvider", name: "provider", type: "address", }, ], name: "getSimpleNftsData", outputs: [ { components: [ { internalType: "address", name: "underlyingAsset", type: "address", }, { internalType: "string", name: "name", type: "string", }, { internalType: "string", name: "symbol", type: "string", }, { internalType: "uint256", name: "ltv", type: "uint256", }, { internalType: "uint256", name: "liquidationThreshold", type: "uint256", }, { internalType: "uint256", name: "liquidationBonus", type: "uint256", }, { internalType: "uint256", name: "redeemDuration", type: "uint256", }, { internalType: "uint256", name: "auctionDuration", type: "uint256", }, { internalType: "uint256", name: "redeemFine", type: "uint256", }, { internalType: "uint256", name: "redeemThreshold", type: "uint256", }, { internalType: "uint256", name: "minBidFine", type: "uint256", }, { internalType: "bool", name: "isActive", type: "bool", }, { internalType: "bool", name: "isFrozen", type: "bool", }, { internalType: "address", name: "bNftAddress", type: "address", }, { internalType: "uint256", name: "priceInEth", type: "uint256", }, { internalType: "uint256", name: "totalCollateral", type: "uint256", }, ], internalType: "struct IUiPoolDataProvider.AggregatedNftData[]", name: "", type: "tuple[]", }, ], stateMutability: "view", type: "function", }, { inputs: [ { internalType: "contract ILendPoolAddressesProvider", name: "provider", type: "address", }, ], name: "getSimpleReservesData", outputs: [ { components: [ { internalType: "address", name: "underlyingAsset", type: "address", }, { internalType: "string", name: "name", type: "string", }, { internalType: "string", name: "symbol", type: "string", }, { internalType: "uint256", name: "decimals", type: "uint256", }, { internalType: "uint256", name: "reserveFactor", type: "uint256", }, { internalType: "bool", name: "borrowingEnabled", type: "bool", }, { internalType: "bool", name: "isActive", type: "bool", }, { internalType: "bool", name: "isFrozen", type: "bool", }, { internalType: "uint128", name: "liquidityIndex", type: "uint128", }, { internalType: "uint128", name: "variableBorrowIndex", type: "uint128", }, { internalType: "uint128", name: "liquidityRate", type: "uint128", }, { internalType: "uint128", name: "variableBorrowRate", type: "uint128", }, { internalType: "uint40", name: "lastUpdateTimestamp", type: "uint40", }, { internalType: "address", name: "bTokenAddress", type: "address", }, { internalType: "address", name: "debtTokenAddress", type: "address", }, { internalType: "address", name: "interestRateAddress", type: "address", }, { internalType: "uint256", name: "availableLiquidity", type: "uint256", }, { internalType: "uint256", name: "totalVariableDebt", type: "uint256", }, { internalType: "uint256", name: "priceInEth", type: "uint256", }, { internalType: "uint256", name: "variableRateSlope1", type: "uint256", }, { internalType: "uint256", name: "variableRateSlope2", type: "uint256", }, ], internalType: "struct IUiPoolDataProvider.AggregatedReserveData[]", name: "", type: "tuple[]", }, ], stateMutability: "view", type: "function", }, { inputs: [ { internalType: "contract ILendPoolAddressesProvider", name: "provider", type: "address", }, { internalType: "address", name: "user", type: "address", }, ], name: "getUserNftsData", outputs: [ { components: [ { internalType: "address", name: "underlyingAsset", type: "address", }, { internalType: "address", name: "bNftAddress", type: "address", }, { internalType: "uint256", name: "totalCollateral", type: "uint256", }, ], internalType: "struct IUiPoolDataProvider.UserNftData[]", name: "", type: "tuple[]", }, ], stateMutability: "view", type: "function", }, { inputs: [ { internalType: "contract ILendPoolAddressesProvider", name: "provider", type: "address", }, { internalType: "address", name: "user", type: "address", }, ], name: "getUserReservesData", outputs: [ { components: [ { internalType: "address", name: "underlyingAsset", type: "address", }, { internalType: "uint256", name: "bTokenBalance", type: "uint256", }, { internalType: "uint256", name: "variableDebt", type: "uint256", }, ], internalType: "struct IUiPoolDataProvider.UserReserveData[]", name: "", type: "tuple[]", }, ], stateMutability: "view", type: "function", }, { inputs: [], name: "nftOracle", outputs: [ { internalType: "contract INFTOracleGetter", name: "", type: "address", }, ], stateMutability: "view", type: "function", }, { inputs: [], name: "reserveOracle", outputs: [ { internalType: "contract IReserveOracleGetter", name: "", type: "address", }, ], stateMutability: "view", type: "function", }, ]; const _bytecode = "0x60c06040523480156200001157600080fd5b506040516200350938038062003509833981016040819052620000349162000053565b6001600160601b0319606092831b8116608052911b1660a052620000aa565b6000806040838503121562000066578182fd5b8251620000738162000091565b6020840151909250620000868162000091565b809150509250929050565b6001600160a01b0381168114620000a757600080fd5b50565b60805160601c60a05160601c613426620000e36000396000818160fd0152611dc10152600081816101bc015261210e01526134266000f3fe608060405234801561001057600080fd5b50600436106100a95760003560e01c8063586c144211610071578063586c1442146101775780636a595e4d14610197578063816bc90b146101b757806387e40db7146101de5780638824a84e146101ff578063ae3070941461021257600080fd5b806325b8e747146100ae57806327ff530c146100d7578063286c2add146100f85780634331f2a41461013757806351974cc014610157575b600080fd5b6100c16100bc36600461292a565b610232565b6040516100ce9190613293565b60405180910390f35b6100ea6100e536600461292a565b610566565b6040516100ce92919061322d565b61011f7f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020016100ce565b61014a61014536600461290e565b610973565b6040516100ce919061325b565b61016a61016536600461292a565b610c07565b6040516100ce91906132a6565b61018a61018536600461290e565b610ed1565b6040516100ce9190613113565b6101aa6101a536600461290e565b610fc4565b6040516100ce919061321a565b61011f7f000000000000000000000000000000000000000000000000000000000000000081565b6101f16101ec36600461292a565b6112c4565b6040516100ce92919061326e565b61018a61020d36600461290e565b61164b565b610225610220366004612962565b6116fb565b6040516100ce9190613160565b60606000836001600160a01b0316638f56cf786040518163ffffffff1660e01b815260040160206040518083038186803b15801561026f57600080fd5b505afa158015610283573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102a79190612857565b90506000846001600160a01b03166335e6e4d06040518163ffffffff1660e01b815260040160206040518083038186803b1580156102e457600080fd5b505afa1580156102f8573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061031c9190612857565b90506000826001600160a01b0316636b25c8356040518163ffffffff1660e01b815260040160006040518083038186803b15801561035957600080fd5b505afa15801561036d573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526103959190810190612873565b905060006001600160a01b0386166103ae5760006103b1565b81515b6001600160401b038111156103d657634e487b7160e01b600052604160045260246000fd5b60405190808252806020026020018201604052801561042157816020015b60408051606081018252600080825260208083018290529282015282526000199092019101816103f45790505b50905060005b825181101561055b57600082828151811061045257634e487b7160e01b600052603260045260246000fd5b602002602001015190506000866001600160a01b03166377bdc0c386858151811061048d57634e487b7160e01b600052603260045260246000fd5b60200260200101516040518263ffffffff1660e01b81526004016104c091906001600160a01b0391909116815260200190565b60a06040518083038186803b1580156104d857600080fd5b505afa1580156104ec573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105109190612b7f565b9050610546828a87868151811061053757634e487b7160e01b600052603260045260246000fd5b6020026020010151848a611cec565b505080806105539061339b565b915050610427565b509695505050505050565b6060806000846001600160a01b0316638f56cf786040518163ffffffff1660e01b815260040160206040518083038186803b1580156105a457600080fd5b505afa1580156105b8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105dc9190612857565b90506000856001600160a01b03166335e6e4d06040518163ffffffff1660e01b815260040160206040518083038186803b15801561061957600080fd5b505afa15801561062d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106519190612857565b90506000826001600160a01b0316636b25c8356040518163ffffffff1660e01b815260040160006040518083038186803b15801561068e57600080fd5b505afa1580156106a2573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526106ca9190810190612873565b9050600081516001600160401b038111156106f557634e487b7160e01b600052604160045260246000fd5b60405190808252806020026020018201604052801561072e57816020015b61071b61260c565b8152602001906001900390816107135790505b50905060006001600160a01b03881661074857600061074b565b82515b6001600160401b0381111561077057634e487b7160e01b600052604160045260246000fd5b6040519080825280602002602001820160405280156107bb57816020015b604080516060810182526000808252602080830182905292820152825260001990920191018161078e5790505b50905060005b83518110156109645760008382815181106107ec57634e487b7160e01b600052603260045260246000fd5b60200260200101519050600083838151811061081857634e487b7160e01b600052603260045260246000fd5b602002602001015190506000886001600160a01b03166377bdc0c388868151811061085357634e487b7160e01b600052603260045260246000fd5b60200260200101516040518263ffffffff1660e01b815260040161088691906001600160a01b0391909116815260200190565b60a06040518083038186803b15801561089e57600080fd5b505afa1580156108b2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108d69190612b7f565b905061090b838886815181106108fc57634e487b7160e01b600052603260045260246000fd5b6020026020010151838b611d8f565b6001600160a01b038c161561094e5761094e828d89878151811061093f57634e487b7160e01b600052603260045260246000fd5b6020026020010151848c611cec565b505050808061095c9061339b565b9150506107c1565b50909890975095505050505050565b60606000826001600160a01b0316638f56cf786040518163ffffffff1660e01b815260040160206040518083038186803b1580156109b057600080fd5b505afa1580156109c4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109e89190612857565b90506000816001600160a01b031663d1946dbc6040518163ffffffff1660e01b815260040160006040518083038186803b158015610a2557600080fd5b505afa158015610a39573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610a619190810190612873565b9050600081516001600160401b03811115610a8c57634e487b7160e01b600052604160045260246000fd5b604051908082528060200260200182016040528015610ac557816020015b610ab261269f565b815260200190600190039081610aaa5790505b50905060005b8251811015610bfe576000828281518110610af657634e487b7160e01b600052603260045260246000fd5b602002602001015190506000856001600160a01b03166335ea6a75868581518110610b3157634e487b7160e01b600052603260045260246000fd5b60200260200101516040518263ffffffff1660e01b8152600401610b6491906001600160a01b0391909116815260200190565b6101406040518083038186803b158015610b7d57600080fd5b505afa158015610b91573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bb59190612c03565b9050610be982868581518110610bdb57634e487b7160e01b600052603260045260246000fd5b602002602001015183612071565b50508080610bf69061339b565b915050610acb565b50949350505050565b60606000836001600160a01b0316638f56cf786040518163ffffffff1660e01b815260040160206040518083038186803b158015610c4457600080fd5b505afa158015610c58573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c7c9190612857565b90506000816001600160a01b031663d1946dbc6040518163ffffffff1660e01b815260040160006040518083038186803b158015610cb957600080fd5b505afa158015610ccd573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610cf59190810190612873565b905060006001600160a01b038516610d0e576000610d11565b81515b6001600160401b03811115610d3657634e487b7160e01b600052604160045260246000fd5b604051908082528060200260200182016040528015610d9457816020015b610d81604051806060016040528060006001600160a01b0316815260200160008152602001600081525090565b815260200190600190039081610d545790505b50905060005b8251811015610ec7576000846001600160a01b03166335ea6a75858481518110610dd457634e487b7160e01b600052603260045260246000fd5b60200260200101516040518263ffffffff1660e01b8152600401610e0791906001600160a01b0391909116815260200190565b6101406040518083038186803b158015610e2057600080fd5b505afa158015610e34573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e589190612c03565b9050610eb4838381518110610e7d57634e487b7160e01b600052603260045260246000fd5b602002602001015188868581518110610ea657634e487b7160e01b600052603260045260246000fd5b602002602001015184612409565b5080610ebf8161339b565b915050610d9a565b5095945050505050565b60606000826001600160a01b0316638f56cf786040518163ffffffff1660e01b815260040160206040518083038186803b158015610f0e57600080fd5b505afa158015610f22573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f469190612857565b9050806001600160a01b031663d1946dbc6040518163ffffffff1660e01b815260040160006040518083038186803b158015610f8157600080fd5b505afa158015610f95573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610fbd9190810190612873565b9392505050565b60606000826001600160a01b0316638f56cf786040518163ffffffff1660e01b815260040160206040518083038186803b15801561100157600080fd5b505afa158015611015573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110399190612857565b90506000836001600160a01b03166335e6e4d06040518163ffffffff1660e01b815260040160206040518083038186803b15801561107657600080fd5b505afa15801561108a573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110ae9190612857565b90506000826001600160a01b0316636b25c8356040518163ffffffff1660e01b815260040160006040518083038186803b1580156110eb57600080fd5b505afa1580156110ff573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526111279190810190612873565b9050600081516001600160401b0381111561115257634e487b7160e01b600052604160045260246000fd5b60405190808252806020026020018201604052801561118b57816020015b61117861260c565b8152602001906001900390816111705790505b50905060005b8251811015610ec75760008282815181106111bc57634e487b7160e01b600052603260045260246000fd5b602002602001015190506000866001600160a01b03166377bdc0c38685815181106111f757634e487b7160e01b600052603260045260246000fd5b60200260200101516040518263ffffffff1660e01b815260040161122a91906001600160a01b0391909116815260200190565b60a06040518083038186803b15801561124257600080fd5b505afa158015611256573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061127a9190612b7f565b90506112af828685815181106112a057634e487b7160e01b600052603260045260246000fd5b60200260200101518389611d8f565b505080806112bc9061339b565b915050611191565b6060806000846001600160a01b0316638f56cf786040518163ffffffff1660e01b815260040160206040518083038186803b15801561130257600080fd5b505afa158015611316573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061133a9190612857565b90506000816001600160a01b031663d1946dbc6040518163ffffffff1660e01b815260040160006040518083038186803b15801561137757600080fd5b505afa15801561138b573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526113b39190810190612873565b9050600081516001600160401b038111156113de57634e487b7160e01b600052604160045260246000fd5b60405190808252806020026020018201604052801561141757816020015b61140461269f565b8152602001906001900390816113fc5790505b50905060006001600160a01b038716611431576000611434565b82515b6001600160401b0381111561145957634e487b7160e01b600052604160045260246000fd5b6040519080825280602002602001820160405280156114b757816020015b6114a4604051806060016040528060006001600160a01b0316815260200160008152602001600081525090565b8152602001906001900390816114775790505b50905060005b835181101561163d5760008382815181106114e857634e487b7160e01b600052603260045260246000fd5b602002602001015190506000866001600160a01b03166335ea6a7587858151811061152357634e487b7160e01b600052603260045260246000fd5b60200260200101516040518263ffffffff1660e01b815260040161155691906001600160a01b0391909116815260200190565b6101406040518083038186803b15801561156f57600080fd5b505afa158015611583573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115a79190612c03565b90506115cd82878581518110610bdb57634e487b7160e01b600052603260045260246000fd5b6001600160a01b038a1615611628576116288484815181106115ff57634e487b7160e01b600052603260045260246000fd5b60200260200101518b888681518110610ea657634e487b7160e01b600052603260045260246000fd5b505080806116359061339b565b9150506114bd565b509097909650945050505050565b60606000826001600160a01b0316638f56cf786040518163ffffffff1660e01b815260040160206040518083038186803b15801561168857600080fd5b505afa15801561169c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116c09190612857565b9050806001600160a01b0316636b25c8356040518163ffffffff1660e01b815260040160006040518083038186803b158015610f8157600080fd5b606081518351146040518060400160405280600381526020016206860760eb1b815250906117455760405162461bcd60e51b815260040161173c91906132b9565b60405180910390fd5b506000846001600160a01b0316638f56cf786040518163ffffffff1660e01b815260040160206040518083038186803b15801561178157600080fd5b505afa158015611795573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117b99190612857565b90506000856001600160a01b03166335e6e4d06040518163ffffffff1660e01b815260040160206040518083038186803b1580156117f657600080fd5b505afa15801561180a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061182e9190612857565b9050600085516001600160401b0381111561185957634e487b7160e01b600052604160045260246000fd5b60405190808252806020026020018201604052801561190057816020015b6118ed604051806101800160405280600081526020016000815260200160006001600160a01b03168152602001600081526020016000815260200160008152602001600081526020016000815260200160006001600160a01b031681526020016000815260200160008152602001600081525090565b8152602001906001900390816118775790505b50905060005b865181101561055b57600082828151811061193157634e487b7160e01b600052603260045260246000fd5b60200260200101519050846001600160a01b031663ec765d3d89848151811061196a57634e487b7160e01b600052603260045260246000fd5b602002602001015189858151811061199257634e487b7160e01b600052603260045260246000fd5b60200260200101516040518363ffffffff1660e01b81526004016119cb9291906001600160a01b03929092168252602082015260400190565b60c06040518083038186803b1580156119e357600080fd5b505afa1580156119f7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a1b9190612d20565b60c087015260a0860152608085015260608401526001600160a01b0390811660408085019190915282845251632820036560e11b815260048101929092526000919086169063504006ca906024016101806040518083038186803b158015611a8257600080fd5b505afa158015611a96573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611aba9190612abe565b905080602001516005811115611ae057634e487b7160e01b600052602160045260246000fd5b826020018181525050856001600160a01b031663798b9e3d8a8581518110611b1857634e487b7160e01b600052603260045260246000fd5b60200260200101518a8681518110611b4057634e487b7160e01b600052603260045260246000fd5b60200260200101516040518363ffffffff1660e01b8152600401611b799291906001600160a01b03929092168252602082015260400190565b604080518083038186803b158015611b9057600080fd5b505afa158015611ba4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611bc89190612d73565b508260e0018181525050856001600160a01b031663e5bceca58a8581518110611c0157634e487b7160e01b600052603260045260246000fd5b60200260200101518a8681518110611c2957634e487b7160e01b600052603260045260246000fd5b60200260200101516040518363ffffffff1660e01b8152600401611c629291906001600160a01b03929092168252602082015260400190565b60a06040518083038186803b158015611c7a57600080fd5b505afa158015611c8e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611cb29190612cd8565b6101608701526101408601526101208501526001600160a01b03166101009093019290925250819050611ce48161339b565b915050611906565b6001600160a01b03838116808752602084810151831690880152604051636ade359360e01b81528683166004820152602481019190915290821690636ade35939060440160206040518083038186803b158015611d4857600080fd5b505afa158015611d5c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d809190612cc0565b60409095019490945250505050565b6001600160a01b03838116808652602084015182166101a087015260405163b3596f0760e01b815260048101919091527f00000000000000000000000000000000000000000000000000000000000000009091169063b3596f079060240160206040518083038186803b158015611e0557600080fd5b505afa158015611e19573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e3d9190612cc0565b6101c08501526040516319331d9960e11b81526001600160a01b0384811660048301528216906332663b329060240160206040518083038186803b158015611e8457600080fd5b505afa158015611e98573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ebc9190612cc0565b846101e001818152505083600001516001600160a01b03166395d89b416040518163ffffffff1660e01b815260040160006040518083038186803b158015611f0357600080fd5b505afa158015611f17573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611f3f9190810190612a38565b846040018190525083600001516001600160a01b03166306fdde036040518163ffffffff1660e01b815260040160006040518083038186803b158015611f8457600080fd5b505afa158015611f98573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611fc09190810190612a38565b60208501528151611fe4905161ffff80821692601083901c82169260201c90911690565b60a087015260808601526060850152815161202490805160ff604082901c811691604881901c9091169061ffff605082901c81169160601c169193509193565b61012088015261010087015260e086015260c085015250805151600160391b81161515610180850152600160381b161515610160840152515160701c61ffff166101409092019190915250565b6001600160a01b0382811680855260208301516001600160801b0390811661010080880191909152604080860151831661012089015260608601518316610140890152608086015190921661016088015260a085015164ffffffffff1661018088015260c085015184166101a088015260e085015184166101c088015284015183166101e08701525163b3596f0760e01b815260048101919091527f00000000000000000000000000000000000000000000000000000000000000009091169063b3596f079060240160206040518083038186803b15801561215257600080fd5b505afa158015612166573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061218a9190612cc0565b61024084015282516101a08401516040516370a0823160e01b81526001600160a01b0391821660048201529116906370a082319060240160206040518083038186803b1580156121d957600080fd5b505afa1580156121ed573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122119190612cc0565b83610200018181525050826101c001516001600160a01b03166318160ddd6040518163ffffffff1660e01b815260040160206040518083038186803b15801561225957600080fd5b505afa15801561226d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122919190612cc0565b8361022001818152505082600001516001600160a01b03166395d89b416040518163ffffffff1660e01b815260040160006040518083038186803b1580156122d857600080fd5b505afa1580156122ec573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526123149190810190612a38565b836040018190525082600001516001600160a01b03166306fdde036040518163ffffffff1660e01b815260040160006040518083038186803b15801561235957600080fd5b505afa15801561236d573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526123959190810190612a38565b6020840152805151604081901c61ffff16608085015260301c60ff1660608401528051516704000000000000008116151560a0850152600160391b8116151560e0850152600160381b16151560c08401526101e08301516123f59061251e565b610280850152610260909301929092525050565b6001600160a01b03828116855260c08201516040516370a0823160e01b815285831660048201529116906370a082319060240160206040518083038186803b15801561245457600080fd5b505afa158015612468573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061248c9190612cc0565b602085015260e08101516040516370a0823160e01b81526001600160a01b038581166004830152909116906370a082319060240160206040518083038186803b1580156124d857600080fd5b505afa1580156124ec573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125109190612cc0565b604090940193909352505050565b600080826001600160a01b0316637b832f586040518163ffffffff1660e01b815260040160206040518083038186803b15801561255a57600080fd5b505afa15801561256e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125929190612cc0565b836001600160a01b03166365614f816040518163ffffffff1660e01b815260040160206040518083038186803b1580156125cb57600080fd5b505afa1580156125df573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906126039190612cc0565b91509150915091565b60405180610200016040528060006001600160a01b031681526020016060815260200160608152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160001515815260200160001515815260200160006001600160a01b0316815260200160008152602001600081525090565b604080516102a08101825260008082526060602083018190529282018390529181018290526080810182905260a0810182905260c0810182905260e08101829052610100810182905261012081018290526101408101829052610160810182905261018081018290526101a081018290526101c081018290526101e08101829052610200810182905261022081018290526102408101829052610260810182905261028081019190915290565b8051612757816133d8565b919050565b600082601f83011261276c578081fd5b8135602061278161277c83613348565b613318565b80838252828201915082860187848660051b89010111156127a0578586fd5b855b858110156127be578135845292840192908401906001016127a2565b5090979650505050505050565b80516006811061275757600080fd5b6000602082840312156127eb578081fd5b604051602081018181106001600160401b038211171561280d5761280d6133c2565b6040529151825250919050565b80516001600160801b038116811461275757600080fd5b805164ffffffffff8116811461275757600080fd5b805160ff8116811461275757600080fd5b600060208284031215612868578081fd5b8151610fbd816133d8565b60006020808385031215612885578182fd5b82516001600160401b0381111561289a578283fd5b8301601f810185136128aa578283fd5b80516128b861277c82613348565b80828252848201915084840188868560051b87010111156128d7578687fd5b8694505b838510156129025780516128ee816133d8565b8352600194909401939185019185016128db565b50979650505050505050565b60006020828403121561291f578081fd5b8135610fbd816133d8565b6000806040838503121561293c578081fd5b8235612947816133d8565b91506020830135612957816133d8565b809150509250929050565b600080600060608486031215612976578081fd5b8335612981816133d8565b92506020848101356001600160401b038082111561299d578384fd5b818701915087601f8301126129b0578384fd5b81356129be61277c82613348565b8082825285820191508585018b878560051b88010111156129dd578788fd5b8795505b83861015612a085780356129f4816133d8565b8352600195909501949186019186016129e1565b50965050506040870135925080831115612a20578384fd5b5050612a2e8682870161275c565b9150509250925092565b600060208284031215612a49578081fd5b81516001600160401b0380821115612a5f578283fd5b818401915084601f830112612a72578283fd5b815181811115612a8457612a846133c2565b612a97601f8201601f1916602001613318565b9150808252856020828501011115612aad578384fd5b610bfe81602084016020860161336b565b60006101808284031215612ad0578081fd5b612ad86132cc565b82518152612ae8602084016127cb565b6020820152612af96040840161274c565b6040820152612b0a6060840161274c565b606082015260808301516080820152612b2560a0840161274c565b60a082015260c083015160c082015260e083015160e0820152610100612b4c81850161274c565b9082015261012083810151908201526101408084015190820152610160612b7481850161274c565b908201529392505050565b600060a08284031215612b90578081fd5b60405160a081018181106001600160401b0382111715612bb257612bb26133c2565b604052612bbf84846127da565b81526020830151612bcf816133d8565b6020820152612be060408401612846565b604082015260608301516060820152608083015160808201528091505092915050565b60006101408284031215612c15578081fd5b612c1d6132f5565b612c2784846127da565b8152612c356020840161281a565b6020820152612c466040840161281a565b6040820152612c576060840161281a565b6060820152612c686080840161281a565b6080820152612c7960a08401612831565b60a0820152612c8a60c0840161274c565b60c0820152612c9b60e0840161274c565b60e0820152610100612cae81850161274c565b90820152610120612b74848201612846565b600060208284031215612cd1578081fd5b5051919050565b600080600080600060a08688031215612cef578283fd5b855194506020860151612d01816133d8565b6040870151606088015160809098015196999198509695945092505050565b60008060008060008060c08789031215612d38578384fd5b865195506020870151612d4a816133d8565b6040880151606089015160808a015160a0909a0151989b929a5090989097909650945092505050565b60008060408385031215612d85578182fd5b505080516020909101519092909150565b600081518084526020808501808196508360051b81019150828601855b85811015612eaf578284038952815180516001600160a01b03168552610200868201518188880152612de7828801826130e7565b91505060408083015187830382890152612e0183826130e7565b606085810151908a0152608080860151908a015260a080860151908a015260c080860151908a015260e080860151908a015261010080860151908a015261012080860151908a015261014080860151908a0152610160808601511515908a0152610180808601511515908a01526101a0808601516001600160a01b0316908a01526101c080860151908a01526101e09485015194909801939093525050509784019790840190600101612db3565b5091979650505050505050565b600081518084526020808501808196508360051b81019150828601855b85811015612eaf578284038952815180516001600160a01b031685526102a0868201518188880152612f0d828801826130e7565b91505060408083015187830382890152612f2783826130e7565b925050506060808301518188015250608080830151818801525060a080830151612f548289018215159052565b505060c08281015115159087015260e080830151151590870152610100808301516001600160801b0390811691880191909152610120808401518216908801526101408084015182169088015261016080840151909116908701526101808083015164ffffffffff16908701526101a0808301516001600160a01b03908116918801919091526101c0808401518216908801526101e0808401519091169087015261020080830151908701526102208083015190870152610240808301519087015261026080830151908701526102809182015191909501529784019790840190600101612ed9565b6000815180845260208085019450808401835b8381101561308e57815180516001600160a01b0390811689528482015116848901526040908101519088015260609096019590820190600101613050565b509495945050505050565b6000815180845260208085019450808401835b8381101561308e57815180516001600160a01b03168852838101518489015260409081015190880152606090960195908201906001016130ac565b600081518084526130ff81602086016020860161336b565b601f01601f19169290920160200192915050565b6020808252825182820181905260009190848201906040850190845b818110156131545783516001600160a01b03168352928401929184019160010161312f565b50909695505050505050565b602080825282518282018190526000919060409081850190868401855b82811015612eaf578151805185528681015187860152858101516001600160a01b0390811687870152606080830151908701526080808301519087015260a0808301519087015260c0808301519087015260e080830151908701526101008083015190911690860152610120808201519086015261014080820151908601526101609081015190850152610180909301929085019060010161317d565b602081526000610fbd6020830184612d96565b6040815260006132406040830185612d96565b8281036020840152613252818561303d565b95945050505050565b602081526000610fbd6020830184612ebc565b6040815260006132816040830185612ebc565b82810360208401526132528185613099565b602081526000610fbd602083018461303d565b602081526000610fbd6020830184613099565b602081526000610fbd60208301846130e7565b60405161018081016001600160401b03811182821017156132ef576132ef6133c2565b60405290565b60405161014081016001600160401b03811182821017156132ef576132ef6133c2565b604051601f8201601f191681016001600160401b0381118282101715613340576133406133c2565b604052919050565b60006001600160401b03821115613361576133616133c2565b5060051b60200190565b60005b8381101561338657818101518382015260200161336e565b83811115613395576000848401525b50505050565b60006000198214156133bb57634e487b7160e01b81526011600452602481fd5b5060010190565b634e487b7160e01b600052604160045260246000fd5b6001600160a01b03811681146133ed57600080fd5b5056fea2646970667358221220fd10e97f778342ebc096cdc9f234d7f9280c146cc583819013e5a7996dcb229e64736f6c63430008040033";