12 txs
16 calls
constructor
constructor(address _creditManager, address _degenNFT, bool _expirable)
functions
acl
viewfunction acl() view returns (address)
botList
viewfunction botList() view returns (address)
canLiquidateWhilePaused
viewfunction canLiquidateWhilePaused(address) view returns (bool)
controller
viewfunction controller() view returns (address)
creditManager
viewfunction creditManager() view returns (address)
debtLimits
viewfunction debtLimits() view returns (uint128 minDebt, uint128 maxDebt)
degenNFT
viewfunction degenNFT() view returns (address)
expirable
viewfunction expirable() view returns (bool)
expirationDate
viewfunction expirationDate() view returns (uint40)
forbiddenTokenMask
viewfunction forbiddenTokenMask() view returns (uint256)
lossParams
viewfunction lossParams() view returns (uint128 currentCumulativeLoss, uint128 maxCumulativeLoss)
maxDebtPerBlockMultiplier
viewfunction maxDebtPerBlockMultiplier() view returns (uint8)
maxQuotaMultiplier
viewfunction maxQuotaMultiplier() view returns (uint256)
paused
viewfunction paused() view returns (bool)
version
viewfunction version() view returns (uint256)
weth
viewfunction weth() view returns (address)
botMulticall
nonpayablefunction botMulticall(address creditAccount, tuple[] calls)
closeCreditAccount
payablefunction closeCreditAccount(address creditAccount, tuple[] calls) payable
liquidateCreditAccount
nonpayablefunction liquidateCreditAccount(address creditAccount, address to, tuple[] calls)
multicall
payablefunction multicall(address creditAccount, tuple[] calls) payable
openCreditAccount
payablefunction openCreditAccount(address onBehalfOf, tuple[] calls, uint256 referralCode) payable returns (address creditAccount)
pause
nonpayablefunction pause()
setBotList
nonpayablefunction setBotList(address newBotList)
setBotPermissions
nonpayablefunction setBotPermissions(address creditAccount, address bot, uint192 permissions)
setController
nonpayablefunction setController(address newController)
setCumulativeLossParams
nonpayablefunction setCumulativeLossParams(uint128 newMaxCumulativeLoss, bool resetCumulativeLoss)
setDebtLimits
nonpayablefunction setDebtLimits(uint128 newMinDebt, uint128 newMaxDebt, uint8 newMaxDebtPerBlockMultiplier)
setEmergencyLiquidator
nonpayablefunction setEmergencyLiquidator(address liquidator, uint8 allowance)
setExpirationDate
nonpayablefunction setExpirationDate(uint40 newExpirationDate)
setTokenAllowance
nonpayablefunction setTokenAllowance(address token, uint8 allowance)
unpause
nonpayablefunction unpause()
events
AddCollateral
event AddCollateral(address indexed creditAccount, address indexed token, uint256 amount)
CloseCreditAccount
event CloseCreditAccount(address indexed creditAccount, address indexed borrower)
DecreaseDebt
event DecreaseDebt(address indexed creditAccount, uint256 amount)
Execute
event Execute(address indexed creditAccount, address indexed targetContract)
FinishMultiCall
event FinishMultiCall()
IncreaseDebt
event IncreaseDebt(address indexed creditAccount, uint256 amount)
LiquidateCreditAccount
event LiquidateCreditAccount(address indexed creditAccount, address indexed liquidator, address to, uint256 remainingFunds)
NewController
event NewController(address indexed newController)
OpenCreditAccount
event OpenCreditAccount(address indexed creditAccount, address indexed onBehalfOf, address indexed caller, uint256 referralCode)
Paused
event Paused(address account)
StartMultiCall
event StartMultiCall(address indexed creditAccount, address indexed caller)
Unpaused
event Unpaused(address account)
WithdrawCollateral
event WithdrawCollateral(address indexed creditAccount, address indexed token, uint256 amount, address to)
errors
BalanceLessThanExpectedException
error BalanceLessThanExpectedException()
BorrowAmountOutOfLimitsException
error BorrowAmountOutOfLimitsException()
BorrowedBlockLimitException
error BorrowedBlockLimitException()
CallerNotConfiguratorException
error CallerNotConfiguratorException()
CallerNotCreditAccountOwnerException
error CallerNotCreditAccountOwnerException()
CallerNotPausableAdminException
error CallerNotPausableAdminException()
CallerNotUnpausableAdminException
error CallerNotUnpausableAdminException()
CloseAccountWithEnabledTokensException
error CloseAccountWithEnabledTokensException()
CreditAccountNotLiquidatableException
error CreditAccountNotLiquidatableException()
CustomHealthFactorTooLowException
error CustomHealthFactorTooLowException()
ExpectedBalancesAlreadySetException
error ExpectedBalancesAlreadySetException()
ExpectedBalancesNotSetException
error ExpectedBalancesNotSetException()
ForbiddenInWhitelistedModeException
error ForbiddenInWhitelistedModeException()
ForbiddenTokenBalanceIncreasedException
error ForbiddenTokenBalanceIncreasedException()
ForbiddenTokenEnabledException
error ForbiddenTokenEnabledException()
ForbiddenTokensException
error ForbiddenTokensException()
IncorrectParameterException
error IncorrectParameterException()
InvalidCollateralHintException
error InvalidCollateralHintException()
NoPermissionException
error NoPermissionException(uint256 permission)
NotAllowedAfterExpirationException
error NotAllowedAfterExpirationException()
NotAllowedWhenNotExpirableException
error NotAllowedWhenNotExpirableException()
NotApprovedBotException
error NotApprovedBotException()
PriceFeedDoesNotExistException
error PriceFeedDoesNotExistException()
RemainingTokenBalanceIncreasedException
error RemainingTokenBalanceIncreasedException()
SafeTransferFailed
error SafeTransferFailed()
TargetContractNotAllowedException
error TargetContractNotAllowedException()
UnexpectedPermissionsException
error UnexpectedPermissionsException()
UnknownMethodException
error UnknownMethodException()
ZeroAddressException
error ZeroAddressException()
creation bytecode
0x6101206040526000805461ff0019166101001790553480156200002157600080fd5b506040516200561b3803806200561b8339810160408190526200004491620003bf565b826001600160a01b0316632954018c6040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000083573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620000a9919062000411565b8080620000b68162000377565b604051632bdad0e360e11b8152621050d360ea1b6004820152600060248201526001600160a01b038316906357b5a1c690604401602060405180830381865afa15801562000108573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200012e919062000411565b6001600160a01b031660808190526000805460ff1916905560408051638da5cb5b60e01b81529051919350638da5cb5b92506004808201926020929091908290030181865afa15801562000186573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001ac919062000411565b6000805462010000600160b01b031916620100006001600160a01b039384160217815590851660a081905260408051630a55006360e21b815290519293509091632954018c916004808201926020929091908290030181865afa15801562000218573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200023e919062000411565b604051632bdad0e360e11b8152692ba2aa242faa27a5a2a760b11b6004820152600060248201529091506001600160a01b038216906357b5a1c690604401602060405180830381865afa1580156200029a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002c0919062000411565b6001600160a01b0390811660e052604051632bdad0e360e11b8152671093d517d31254d560c21b600482015261012c6024820152908216906357b5a1c690604401602060405180830381865afa1580156200031f573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000345919062000411565b600280546001600160a01b0319166001600160a01b039283161790559290921661010052151560c05250620004369050565b6001600160a01b0381166200039f57604051635919af9760e11b815260040160405180910390fd5b50565b80516001600160a01b0381168114620003ba57600080fd5b919050565b600080600060608486031215620003d557600080fd5b620003e084620003a2565b9250620003f060208501620003a2565b9150604084015180151581146200040657600080fd5b809150509250925092565b6000602082840312156200042457600080fd5b6200042f82620003a2565b9392505050565b60805160a05160c05160e051610100516150b262000569600039600081816104c701528181610bea0152610c98015260008181610309015281816117eb01526118690152600081816105110152818161148e0152612b1b015260008181610545015281816108800152818161092601528181610a4a01528181610d2d01528181610f8301528181611145015281816112fb015281816115810152818161166d015281816118cf01528181612123015281816123cf01528181612547015281816128ed01528181612abf01528181612ba3015281816130260152818161316f015281816132cd015281816134fe01528181613628015281816137a80152818161384f01528181613a7c0152613d950152600081816105b90152818161393701528181613a320152613b1301526150b26000f3fe6080604052600436106101d85760003560e01c80638ad1386e11610102578063c5b73ed011610095578063eb9606df11610064578063eb9606df146105fb578063ebe4107c1461061b578063f6722f621461062e578063f77c47911461064e57600080fd5b8063c5b73ed014610567578063c5d7ca3914610587578063de287359146105a7578063e3f46b26146105db57600080fd5b80639408b63f116100d15780639408b63f146104b55780639fd12b77146104e9578063b1836d32146104ff578063c12c21c01461053357600080fd5b80638ad1386e146104275780638f6204871461044757806392beab1d1461048257806392eefe9b1461049557600080fd5b80633fc8cef31161017a5780635c975abb116101495780635c975abb146103c55780637e2ca9db146103dd5780638456cb59146103fd578063874b2e021461041257600080fd5b80633fc8cef3146102f7578063478ade3614610343578063503931091461037657806354fd4d50146103a157600080fd5b806326f30692116101b657806326f306921461026f57806336b2ced31461028f57806338975bc4146102a25780633f4ba83a146102e257600080fd5b80630103dc6b146101dd5780631656af9d146101ff578063166bf9d91461021f575b600080fd5b3480156101e957600080fd5b506101fd6101f8366004614151565b610674565b005b34801561020b57600080fd5b506101fd61021a36600461419b565b6106c9565b34801561022b57600080fd5b5060035461024a906001600160801b0380821691600160801b90041682565b604080516001600160801b039384168152929091166020830152015b60405180910390f35b34801561027b57600080fd5b506101fd61028a3660046141f7565b610758565b6101fd61029d366004614275565b61079f565b3480156102ae57600080fd5b506102d26102bd3660046142ca565b60066020526000908152604090205460ff1681565b6040519015158152602001610266565b3480156102ee57600080fd5b506101fd6109ce565b34801561030357600080fd5b5061032b7f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b039091168152602001610266565b34801561034f57600080fd5b5060005461036490600160d81b900460ff1681565b60405160ff9091168152602001610266565b34801561038257600080fd5b5060055461024a906001600160801b0380821691600160801b90041682565b3480156103ad57600080fd5b506103b761012d81565b604051908152602001610266565b3480156103d157600080fd5b5060005460ff166102d2565b3480156103e957600080fd5b506101fd6103f8366004614275565b6109e0565b34801561040957600080fd5b506101fd610b65565b34801561041e57600080fd5b506103b7600281565b34801561043357600080fd5b506101fd6104423660046142ca565b610b75565b34801561045357600080fd5b5060005461046c90600160b01b900464ffffffffff1681565b60405164ffffffffff9091168152602001610266565b61032b6104903660046142e7565b610bb7565b3480156104a157600080fd5b506101fd6104b03660046142ca565b610e49565b3480156104c157600080fd5b5061032b7f000000000000000000000000000000000000000000000000000000000000000081565b3480156104f557600080fd5b506103b760045481565b34801561050b57600080fd5b506102d27f000000000000000000000000000000000000000000000000000000000000000081565b34801561053f57600080fd5b5061032b7f000000000000000000000000000000000000000000000000000000000000000081565b34801561057357600080fd5b506101fd610582366004614358565b610ed5565b34801561059357600080fd5b506101fd6105a23660046141f7565b611066565b3480156105b357600080fd5b5061032b7f000000000000000000000000000000000000000000000000000000000000000081565b3480156105e757600080fd5b506101fd6105f63660046143a3565b6110ac565b34801561060757600080fd5b506101fd610616366004614408565b611484565b6101fd610629366004614275565b611522565b34801561063a57600080fd5b5060025461032b906001600160a01b031681565b34801561065a57600080fd5b5060005461032b906201000090046001600160a01b031681565b61067c61157f565b600580546001600160801b03808516600160801b02911617905580156106c557600580547fffffffffffffffffffffffffffffffff000000000000000000000000000000001690555b5050565b6106d161157f565b6001600160801b036106e883821660ff8416614445565b1061071f576040517f47fbaa9700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160801b03918216600160801b0291909216176003556000805460ff909216600160d81b0260ff60d81b19909216919091179055565b61076061157f565b600061076b83611632565b905060018260018111156107815761078161445c565b14610790576004548117610797565b6004548119165b600455505050565b826107a9816116e1565b6107b1611734565b6107b9611787565b6000805461ff0019166102001790556107d06117e3565b60006107db85611894565b905082156107fe5760006107f686868685620100fd86611900565b604001519150505b8015610836576040517f77349a6800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600161084186612394565b1661ffff166000146108ee576002546040517f7bdfc8740000000000000000000000000000000000000000000000000000000081526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000081166004830152878116602483015290911690637bdfc87490604401600060405180830381600087803b1580156108d557600080fd5b505af11580156108e9573d6000803e3d6000fd5b505050505b6040517f7687f6700000000000000000000000000000000000000000000000000000000081526001600160a01b0386811660048301527f00000000000000000000000000000000000000000000000000000000000000001690637687f67090602401600060405180830381600087803b15801561096a57600080fd5b505af115801561097e573d6000803e3d6000fd5b50506040513392506001600160a01b03881691507f460ad03b1cf79b1d64d3aefa28475f110ab66e84649c52bb41ed796b9b39198190600090a350506000805461ff001916610100179055505050565b6109d661243c565b6109de61247b565b565b6109e8611734565b6109f06124cd565b6109f8611787565b6000805461ff001916610200179055610a108361250c565b506002546040517f68f8085c0000000000000000000000000000000000000000000000000000000081523360048201526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000081166024830152858116604483015260009283928392909116906368f8085c90606401606060405180830381865afa158015610aa9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610acd9190614472565b925092506001600160c01b031692508260001480610ae85750815b80610b0b575080158015610b0b57506001610b0287612394565b1661ffff166000145b15610b42576040517f8fd689c100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610b4e868686866125b5565b50506000805461ff00191661010017905550505050565b610b6d612626565b6109de612665565b610b7d61157f565b600280547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b6000610bc1611734565b610bc96124cd565b610bd1611787565b6000805461ff001916610200179055610be86117e3565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031615610cf557336001600160a01b03861614610c59576040517fd380b4d500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f9dc29fac0000000000000000000000000000000000000000000000000000000081526001600160a01b038681166004830152600160248301527f00000000000000000000000000000000000000000000000000000000000000001690639dc29fac90604401600060405180830381600087803b158015610cdc57600080fd5b505af1158015610cf0573d6000803e3d6000fd5b505050505b6040517f43fe7bbe0000000000000000000000000000000000000000000000000000000081526001600160a01b0386811660048301527f000000000000000000000000000000000000000000000000000000000000000016906343fe7bbe906024016020604051808303816000875af1158015610d76573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d9a91906144bf565b9050336001600160a01b0316856001600160a01b0316826001600160a01b03167f6e4927aac3383b13ffc5b6f44447693caf351f2f7ca800c9b4463b76997911b085604051610deb91815260200190565b60405180910390a48215610e325760606000610e0786866126a2565b90506000610e1c84888884620100fb87611900565b9050610e2e84600083866004546128e9565b5050505b6000805461ff001916610100179055949350505050565b610e51612a4f565b6000546001600160a01b03828116620100009092041614610ed257600080547fffffffffffffffffffff0000000000000000000000000000000000000000ffff16620100006001600160a01b03841690810291909117825560405190917fe253457d9ad994ca9682fc3bbc38c890dca73a2d5ecee3809e548bac8b00d7c691a25b50565b82610edf816116e1565b610ee7611787565b6000805461ff00191661020017905577fffffffffffffffffffffffffffffffffffffffffffeff00821615610f48576040517f4b6a275600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002546040517fc9c45fa00000000000000000000000000000000000000000000000000000000081526001600160a01b0385811660048301527f00000000000000000000000000000000000000000000000000000000000000008116602483015286811660448301526001600160c01b0385166064830152600092169063c9c45fa0906084016020604051808303816000875af1158015610fed573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061101191906144dc565b90508060000361102d576110288560016000612a75565b611050565b600161103886612394565b1661ffff166000036110505761105085600180612a75565b50506000805461ff001916610100179055505050565b61106e61157f565b60018160018111156110825761108261445c565b6001600160a01b039093166000908152600660205260409020805460ff1916919093141790915550565b60005460ff1615806110cd57503360009081526006602052604090205460ff165b61111e5760405162461bcd60e51b815260206004820152601060248201527f5061757361626c653a207061757365640000000000000000000000000000000060448201526064015b60405180910390fd5b611126611787565b6000805461ff00191661020017815561113f83836126a2565b905060007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316630d334ca68760036040518363ffffffff1660e01b81526004016111929291906144f5565b600060405180830381865afa1580156111af573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526111d79190810190614659565b60c08101516101208201518251929350109015806112035750801580156112035750611201612b17565b155b1561123a576040517f234b893b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61014082018051600119169081905260009061125a908990612b71612bda565b90506000611283898888876101400151602060016201000017176001600160c01b03168a611900565b604081015161014086018051909116908190529091506000906112aa908b90856001612cf7565b9050806112e3576040517f393964ee00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610140850151600117856101400181815250506000807f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663e2f1490f8d898e8a156040518563ffffffff1660e01b815260040161134c94939291906147aa565b60408051808303816000875af115801561136a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061138e91906148ae565b604080516001600160a01b038f811682526020820185905293955091935033928f16917f7dfecd8419723a9d3954585a30c2a270165d70aafa146c11c1e1b88ae1439064910160405180910390a38015611467576000805460ff60d81b191681556005805483929061140a9084906001600160801b03166148d2565b92506101000a8154816001600160801b0302191690836001600160801b0316021790555061143a60005460ff1690565b15801561145a57506005546001600160801b03600160801b820481169116115b1561146757611467612665565b50506000805461ff00191661010017905550505050505050505050565b61148c61157f565b7f00000000000000000000000000000000000000000000000000000000000000006114e3576040517f50dd11fc00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000805464ffffffffff909216600160b01b027fffffffffff0000000000ffffffffffffffffffffffffffffffffffffffffffff909216919091179055565b8261152c816116e1565b611534611734565b61153c6124cd565b611544611787565b6000805461ff00191661020017905561155b6117e3565b61156a848484620100ff6125b5565b50506000805461ff0019166101001790555050565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663f9aa028a6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156115dd573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061160191906144bf565b6001600160a01b0316336001600160a01b0316146109de576040516361081c1560e01b815260040160405180910390fd5b6040517fd5c2f4860000000000000000000000000000000000000000000000000000000081526001600160a01b0382811660048301526000917f00000000000000000000000000000000000000000000000000000000000000009091169063d5c2f486906024015b602060405180830381865afa1580156116b7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116db91906144dc565b92915050565b6116ea8161250c565b6001600160a01b0316336001600160a01b031614610ed2576040517f1e83c51100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60005460ff16156109de5760405162461bcd60e51b815260206004820152601060248201527f5061757361626c653a20706175736564000000000000000000000000000000006044820152606401611115565b60005460011961010090910460ff16016109de5760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401611115565b34156109de577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663d0e30db0346040518263ffffffff1660e01b81526004016000604051808303818588803b15801561184457600080fd5b505af1158015611858573d6000803e3d6000fd5b506109de9350506001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016915033905034612da9565b6040517ff9f0ca660000000000000000000000000000000000000000000000000000000081526001600160a01b0382811660048301526000917f00000000000000000000000000000000000000000000000000000000000000009091169063f9f0ca669060240161169a565b6040805160a08101825260608082526000602083018190529282018390528101829052608081019190915260405133906001600160a01b038916907f6637691e02875fb5c598316278034ab86d133a75ab6d76491287290e0397928490600090a361271060208201526000606086845b8181101561230157368a8a8381811061198b5761198b6148f9565b905060200281019061199d919061490f565b9050306119ad60208301836142ca565b6001600160a01b0316036121085760006119ca602083018361492f565b6119d391614976565b90507fd0d35b65000000000000000000000000000000000000000000000000000000006001600160e01b0319821601611a7d57845115611a3f576040517fe61eedf500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000611a4e602084018461492f565b611a5c9160049082906149a4565b810190611a6991906149ce565b9050611a758e82612e10565b955050612102565b7f0bd51500000000000000000000000000000000000000000000000000000000006001600160e01b0319821601611b57578451600003611ae9576040517f87a3f92f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611af58d866000612f5f565b611b12576040516307edf61760e01b815260040160405180910390fd5b6040805160008082526020820190925290611b4f565b6040805180820190915260008082526020820152815260200190600190039081611b285790505b509450612102565b7f928a4612000000000000000000000000000000000000000000000000000000006001600160e01b0319821601611bd357611b93896001612fd7565b611b9c86613016565b9550611bcc611bc58e611bb2602086018661492f565b611bc09160049082906149a4565b6130ad565b87168b1790565b9950612102565b7fbc707034000000000000000000000000000000000000000000000000000000006001600160e01b0319821601611c4157611c0f896001612fd7565b611c1886613016565b9550611bcc611bc58e611c2e602086018661492f565b611c3c9160049082906149a4565b613125565b7f8ed3ef53000000000000000000000000000000000000000000000000000000006001600160e01b0319821601611cbd57611c7d896040612fd7565b600080611cad8f611c91602087018761492f565b611c9f9160049082906149a4565b600160c01b8f16151561326b565b199c179b909b169a506121029050565b7fe0ef7760000000000000000000000000000000000000000000000000000000006001600160e01b0319821601611d4957611cf9896020612fd7565b60016060880181905260808801526000611d2d8e611d1a602086018661492f565b611d289160049082906149a4565b613407565b9050611d3887613016565b9650808716198b165b9a5050612102565b7fd48384ef000000000000000000000000000000000000000000000000000000006001600160e01b0319821601611dc057611d85896002612fd7565b600160608801526000611db58e611d9f602086018661492f565b611dad9160049082906149a4565b8e60006135c1565b5090508a8117611d41565b7fd5845e09000000000000000000000000000000000000000000000000000000006001600160e01b0319821601611e3157611dfc896004612fd7565b6000611e258e611e0f602086018661492f565b611e1d9160049082906149a4565b8e60016135c1565b91505080198b16611d41565b7ff8974402000000000000000000000000000000000000000000000000000000006001600160e01b0319821601611f5e57611e6f602083018361492f565b611e7d9160049082906149a4565b810190611e8a9190614a9d565b61ffff16602089018190529088526127101115611ed3576040517f69bb881000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b86515160005b81811015611f5757600089600001518281518110611ef957611ef96148f9565b602002602001015190508060001480611f1757506000198101811615155b15611f4e576040517fca2421ff00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50600101611ed9565b5050612102565b7f396f6f76000000000000000000000000000000000000000000000000000000006001600160e01b0319821601611fe457611f9a896008612fd7565b6000611fa9602084018461492f565b611fb79160049082906149a4565b810190611fc491906142ca565b9050611fcf87613016565b9650611d41611fdd82611632565b88168c1790565b7fdc1d859c000000000000000000000000000000000000000000000000000000006001600160e01b031982160161206b57612020896010612fd7565b600061202f602084018461492f565b61203d9160049082906149a4565b81019061204a91906142ca565b905061205587613016565b9650611d4161206382611632565b8816198c1690565b7fa9a57df3000000000000000000000000000000000000000000000000000000006001600160e01b03198216016120d0576120a7896080612fd7565b6120cb8d6120b8602085018561492f565b6120c69160049082906149a4565b613767565b612102565b6040517f1e9e7e7a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b506122f8565b6121158862010000612fd7565b606060006001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001663ff68754361215560208601866142ca565b6040516001600160e01b031960e084901b1681526001600160a01b039091166004820152602401602060405180830381865afa158015612199573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121bd91906144bf565b90506001600160a01b0381166121ff576040517ffc1a554300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600160c11b8a1660000361221f57600160c11b8a17995061221f8e613817565b61228061222f602085018561492f565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506122719250505060208601866142ca565b6001600160a01b0316906138ae565b9150806001600160a01b03168e6001600160a01b03167f1b835de7d84f000a333cdc5822ae62eb63b38d4c622ef96ac50f27db56d7c76860405160405180910390a350600080828060200190518101906122da91906148ae565b915091506122e788613016565b908116199181169b909b1716999550505b50600101611970565b50508051156123335761231689826000612f5f565b612333576040516307edf61760e01b815260040160405180910390fd5b60045486161561234557600160808401525b600160c11b851615612359576123596138f2565b6040808401879052517f9fe19f2060e67aed557c7d1bc297d4bd2d8a8b952e3545c658ec4bc00be7d6c490600090a150509695505050505050565b6040517f845104de0000000000000000000000000000000000000000000000000000000081526001600160a01b0382811660048301526000917f00000000000000000000000000000000000000000000000000000000000000009091169063845104de90602401602060405180830381865afa158015612418573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116db9190614b40565b612445336138fc565b6109de576040517f16e29ab700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6124836139a5565b6000805460ff191690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b6040516001600160a01b03909116815260200160405180910390a1565b6124d5612b17565b156109de576040517ffd956fa500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517fc53afb1e0000000000000000000000000000000000000000000000000000000081526001600160a01b0382811660048301526000917f00000000000000000000000000000000000000000000000000000000000000009091169063c53afb1e906024015b602060405180830381865afa158015612591573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116db91906144bf565b60045460006125c386611894565b905060006125d687838516612b71612bda565b905060006125e487876126a2565b9050600061260c8989898787516000036125fe578a612606565b600160c01b8b175b87611900565b905061261b89858386896128e9565b505050505050505050565b61262f336139f7565b6109de576040517fd794b1e700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61266d611734565b6000805460ff191660011790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a2586124b03390565b60008082815b818110156128e057368686838181106126c3576126c36148f9565b90506020028101906126d5919061490f565b9050306126e560208301836142ca565b6001600160a01b031614801561273957507f6c68e10900000000000000000000000000000000000000000000000000000000612724602083018361492f565b61272d91614976565b6001600160e01b031916145b156128cc576000808061274f602085018561492f565b61275d9160049082906149a4565b81019061276a9190614b5d565b92509250925061277987613a63565b6040517fff2998450000000000000000000000000000000000000000000000000000000081526001600160a01b038581166004830152841515602483015291985060009189169063ff29984590604401602060405180830381865afa1580156127e6573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061280a91906144bf565b90506001600160a01b03811661284c576040517f68d8c6d800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f8736ec470000000000000000000000000000000000000000000000000000000081526001600160a01b03821690638736ec4790612891908590600401614c67565b600060405180830381600087803b1580156128ab57600080fd5b505af11580156128bf573d6000803e3d6000fd5b50505050505050506128d7565b5092506116db915050565b506001016126a8565b50949350505050565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316633d7e5dc48786604001518760000151886020015189608001516040518663ffffffff1660e01b815260040161294f959493929190614c7a565b6020604051808303816000875af115801561296e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061299291906144dc565b90508181168015612a46578460600151156129c0576040516310bc1b9560e21b815260040160405180910390fd5b85831680198216156129fe576040517f325b1ffe00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000612a0d8984886001612cf7565b90508061261b576040517ff3d712f200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50505050505050565b612a5833613ad8565b6109de576040516361081c1560e01b815260040160405180910390fd5b6040517fc544cf7d0000000000000000000000000000000000000000000000000000000081526001600160a01b03848116600483015261ffff8416602483015282151560448301527f0000000000000000000000000000000000000000000000000000000000000000169063c544cf7d90606401600060405180830381600087803b158015612b0357600080fd5b505af1158015612a46573d6000803e3d6000fd5b60007f0000000000000000000000000000000000000000000000000000000000000000612b445750600090565b600054600160b01b900464ffffffffff168015801590612b6b57508064ffffffffff164210155b91505090565b6040517f4fc0e3a8000000000000000000000000000000000000000000000000000000008152600481018290526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690634fc0e3a890602401612574565b60608215612cf057612beb83613b44565b67ffffffffffffffff811115612c0357612c03614522565b604051908082528060200260200182016040528015612c6157816020015b612c4e604051806060016040528060006001600160a01b0316815260200160008152602001600081525090565b815260200190600190039081612c215790505b50905060005b8315612cee57600084810385169485189490612c868263ffffffff8716565b90506040518060600160405280826001600160a01b03168152602001838152602001612cc489846001600160a01b0316613b6390919063ffffffff16565b815250848481518110612cd957612cd96148f9565b60209081029190910101525050600101612c67565b505b9392505050565b600083600003612d0957506001612da1565b825160005b81811015612d9a57848181518110612d2857612d286148f9565b6020026020010151602001518616600014612d9257612d8387868381518110612d5357612d536148f9565b602002602001015160000151878481518110612d7157612d716148f9565b60200260200101516040015187613b9c565b612d9257600092505050612da1565b600101612d0e565b5050600190505b949350505050565b612dd5837fa9059cbb000000000000000000000000000000000000000000000000000000008484613c06565b612e0b576040517ffb7f507900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b505050565b80516060908067ffffffffffffffff811115612e2e57612e2e614522565b604051908082528060200260200182016040528015612e7357816020015b6040805180820190915260008082526020820152815260200190600190039081612e4c5790505b50915060005b81811015612f57576000612ec4612ebf87878581518110612e9c57612e9c6148f9565b6020026020010151600001516001600160a01b0316613b6390919063ffffffff16565b613c55565b90506040518060400160405280868481518110612ee357612ee36148f9565b6020026020010151600001516001600160a01b03168152602001612f2e878581518110612f1257612f126148f9565b60200260200101516020015184612f299190614ceb565b613cf1565b815250848381518110612f4357612f436148f9565b602090810291909101015250600101612e79565b505092915050565b8151600090815b81811015612fcb57612fb486868381518110612f8457612f846148f9565b602002602001015160000151878481518110612fa257612fa26148f9565b60200260200101516020015187613b9c565b612fc357600092505050612cf0565b600101612f66565b50600195945050505050565b8082166000036106c5576040517f6b895d0400000000000000000000000000000000000000000000000000000000815260048101829052602401611115565b6000811561302457816116db565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663e0f838246040518163ffffffff1660e01b8152600401602060405180830381865afa158015613082573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906130a691906144dc565b1992915050565b600080806130bd84860186614d0b565b915091506130cd33878484613d43565b9250816001600160a01b0316866001600160a01b03167fa32435755c235de2976ed44a75a2f85cb01faf0c894f639fe0c32bb9455fea8f8360405161311491815260200190565b60405180910390a350509392505050565b6000808080808080613139888a018a614d37565b6040517fd505accf0000000000000000000000000000000000000000000000000000000081523360048201526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000081166024830152604482018790526064820186905260ff8516608483015260a4820184905260c48201839052969c50949a50929850909650945092509087169063d505accf9060e401600060405180830381600087803b1580156131f157600080fd5b505af1925050508015613202575060015b5061320f338b8888613d43565b9650856001600160a01b03168a6001600160a01b03167fa32435755c235de2976ed44a75a2f85cb01faf0c894f639fe0c32bb9455fea8f8760405161325691815260200190565b60405180910390a35050505050509392505050565b60008080808061327d87890189614d91565b9250925092508580156132935750600082600b0b135b156132c3576004546132a484611632565b16156132c3576040516310bc1b9560e21b815260040160405180910390fd5b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001663604ca15f8a856b800000000000000000000000600b87900b016133115785613328565b61271061331e8188614de9565b6133289190614e3a565b600354869061335f906bffffffffffffffffffffffff9061335a90600160801b90046001600160801b03166002614445565b613e0d565b6040516001600160e01b031960e088901b1681526001600160a01b039586166004820152949093166024850152600b9190910b60448401526bffffffffffffffffffffffff908116606484015216608482015260a40160408051808303816000875af11580156133d3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906133f791906148ae565b909a909950975050505050505050565b600080808061341885870187614e5a565b92509250925060001982036134af576040516370a0823160e01b81526001600160a01b0388811660048301528416906370a0823190602401602060405180830381865afa15801561346d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061349191906144dc565b9150600182116134a75760009350505050612cf0565b600019909101905b6040517f5a6f45de0000000000000000000000000000000000000000000000000000000081526001600160a01b03888116600483015284811660248301526044820184905282811660648301527f00000000000000000000000000000000000000000000000000000000000000001690635a6f45de906084016020604051808303816000875af1158015613547573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061356b91906144dc565b604080518481526001600160a01b038481166020830152929650828616928a16917fe7655dfddd0226889710c711da4e725dd44525fb5717b2321017a97d32793ab8910160405180910390a35050509392505050565b600080806135d186880188614e91565b905060008460018111156135e7576135e761445c565b036135f5576135f581613e23565b6040517f432017e80000000000000000000000000000000000000000000000000000000081526000906001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063432017e890613663908c9086908b908b90600401614eaa565b6060604051808303816000875af1158015613682573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906136a69190614ee7565b909550935090506136b681613f3f565b60008560018111156136ca576136ca61445c565b0361371757886001600160a01b03167fcb6767c6e25552f1ab37156882f03b9ba603ebf3814463bf5eb9b0d2bd8a19b58360405161370a91815260200190565b60405180910390a261375b565b886001600160a01b03167f9ddbe9792bb03a06eab016daae23f04ec25454c24b836da2361fc703037f77628360405161375291815260200190565b60405180910390a25b50509550959350505050565b600061377582840184614f15565b6040517f3031b01a0000000000000000000000000000000000000000000000000000000081529091506001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690633031b01a906137df9087908590600401614fd3565b600060405180830381600087803b1580156137f957600080fd5b505af115801561380d573d6000803e3d6000fd5b5050505050505050565b6040517fe09357a40000000000000000000000000000000000000000000000000000000081526001600160a01b0382811660048301527f0000000000000000000000000000000000000000000000000000000000000000169063e09357a490602401600060405180830381600087803b15801561389357600080fd5b505af11580156138a7573d6000803e3d6000fd5b5050505050565b6060612cf0838360006040518060400160405280601e81526020017f416464726573733a206c6f772d6c6576656c2063616c6c206661696c65640000815250613f9e565b6109de6001613817565b6040517fd4eb5db00000000000000000000000000000000000000000000000000000000081526001600160a01b0382811660048301526000917f00000000000000000000000000000000000000000000000000000000000000009091169063d4eb5db0906024015b602060405180830381865afa158015613981573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116db919061503a565b60005460ff166109de5760405162461bcd60e51b815260206004820152601460248201527f5061757361626c653a206e6f74207061757365640000000000000000000000006044820152606401611115565b6040517f3a41ec640000000000000000000000000000000000000000000000000000000081526001600160a01b0382811660048301526000917f000000000000000000000000000000000000000000000000000000000000000090911690633a41ec6490602401613964565b60006001600160a01b03821615613a7a57816116db565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316632630c12f6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612591573d6000803e3d6000fd5b6040517f5f259aba0000000000000000000000000000000000000000000000000000000081526001600160a01b0382811660048301526000917f000000000000000000000000000000000000000000000000000000000000000090911690635f259aba90602401613964565b60005b8115613b5e57600019820190911690600101613b47565b919050565b6370a0823160e01b6000818152600483905290602082602481875afa600051925060203d1081151715612f57576040513d6000823e3d81fd5b600080613bb26001600160a01b03861687613b63565b90506000836001811115613bc857613bc861445c565b148015613bd55750838110155b80613bfc57506001836001811115613bef57613bef61445c565b148015613bfc5750838111155b9695505050505050565b60006040518481528360048201528260248201526020600060448360008a5af19150508015612da1573d8015613c4857600160005114601f3d111691506128e0565b50505050903b1515919050565b60007f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821115613ced5760405162461bcd60e51b815260206004820152602860248201527f53616665436173743a2076616c756520646f65736e27742066697420696e206160448201527f6e20696e743235360000000000000000000000000000000000000000000000006064820152608401611115565b5090565b600080821215613ced5760405162461bcd60e51b815260206004820181905260248201527f53616665436173743a2076616c7565206d75737420626520706f7369746976656044820152606401611115565b6040517f830aa7450000000000000000000000000000000000000000000000000000000081526001600160a01b03858116600483015284811660248301528381166044830152606482018390526000917f00000000000000000000000000000000000000000000000000000000000000009091169063830aa745906084016020604051808303816000875af1158015613de0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613e0491906144dc565b95945050505050565b6000818310613e1c5781612cf0565b5090919050565b600054600160d81b900460ff1660fe198101613e3d575050565b6001546000904367ffffffffffffffff90911603613e7e57600154613e77906801000000000000000090046001600160801b031684615057565b9050613e9e565b506001805467ffffffffffffffff19164367ffffffffffffffff16179055815b600354613ebe90600160801b90046001600160801b031660ff8416614445565b811115613ef7576040517f675f1a5600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600180546001600160801b0390921668010000000000000000027fffffffffffffffff00000000000000000000000000000000ffffffffffffffff9092169190911790555050565b6003546001600160801b0381169060801c8215801590613f67575081831080613f6757508083115b15612e0b576040517fce16799400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6060824710156140165760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f60448201527f722063616c6c00000000000000000000000000000000000000000000000000006064820152608401611115565b600080866001600160a01b03168587604051614032919061506a565b60006040518083038185875af1925050503d806000811461406f576040519150601f19603f3d011682016040523d82523d6000602084013e614074565b606091505b509150915061408587838387614090565b979650505050505050565b606083156140ff5782516000036140f8576001600160a01b0385163b6140f85760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401611115565b5081612da1565b612da183838151156141145781518083602001fd5b8060405162461bcd60e51b81526004016111159190614c67565b6001600160801b0381168114610ed257600080fd5b8015158114610ed257600080fd5b6000806040838503121561416457600080fd5b823561416f8161412e565b9150602083013561417f81614143565b809150509250929050565b803560ff81168114613b5e57600080fd5b6000806000606084860312156141b057600080fd5b83356141bb8161412e565b925060208401356141cb8161412e565b91506141d96040850161418a565b90509250925092565b6001600160a01b0381168114610ed257600080fd5b6000806040838503121561420a57600080fd5b8235614215816141e2565b915060208301356002811061417f57600080fd5b60008083601f84011261423b57600080fd5b50813567ffffffffffffffff81111561425357600080fd5b6020830191508360208260051b850101111561426e57600080fd5b9250929050565b60008060006040848603121561428a57600080fd5b8335614295816141e2565b9250602084013567ffffffffffffffff8111156142b157600080fd5b6142bd86828701614229565b9497909650939450505050565b6000602082840312156142dc57600080fd5b8135612cf0816141e2565b600080600080606085870312156142fd57600080fd5b8435614308816141e2565b9350602085013567ffffffffffffffff81111561432457600080fd5b61433087828801614229565b9598909750949560400135949350505050565b6001600160c01b0381168114610ed257600080fd5b60008060006060848603121561436d57600080fd5b8335614378816141e2565b92506020840135614388816141e2565b9150604084013561439881614343565b809150509250925092565b600080600080606085870312156143b957600080fd5b84356143c4816141e2565b935060208501356143d4816141e2565b9250604085013567ffffffffffffffff8111156143f057600080fd5b6143fc87828801614229565b95989497509550505050565b60006020828403121561441a57600080fd5b813564ffffffffff81168114612cf057600080fd5b634e487b7160e01b600052601160045260246000fd5b80820281158282048414176116db576116db61442f565b634e487b7160e01b600052602160045260246000fd5b60008060006060848603121561448757600080fd5b835161449281614343565b60208501519093506144a381614143565b604085015190925061439881614143565b8051613b5e816141e2565b6000602082840312156144d157600080fd5b8151612cf0816141e2565b6000602082840312156144ee57600080fd5b5051919050565b6001600160a01b038316815260408101600583106145155761451561445c565b8260208301529392505050565b634e487b7160e01b600052604160045260246000fd5b6040516101c0810167ffffffffffffffff8111828210171561455c5761455c614522565b60405290565b6040805190810167ffffffffffffffff8111828210171561455c5761455c614522565b604051601f8201601f1916810167ffffffffffffffff811182821017156145ae576145ae614522565b604052919050565b8051613b5e8161412e565b600067ffffffffffffffff8211156145db576145db614522565b5060051b60200190565b600082601f8301126145f657600080fd5b8151602061460b614606836145c1565b614585565b82815260059290921b8401810191818101908684111561462a57600080fd5b8286015b8481101561464e578051614641816141e2565b835291830191830161462e565b509695505050505050565b60006020828403121561466b57600080fd5b815167ffffffffffffffff8082111561468357600080fd5b908301906101c0828603121561469857600080fd5b6146a0614538565b8251815260208301516020820152604083015160408201526146c4606084016145b6565b60608201526080830151608082015260a083015160a082015260c083015160c082015260e083015160e0820152610100808401518183015250610120808401518183015250610140808401518183015250610160808401518183015250610180808401518381111561473557600080fd5b614741888287016145e5565b8284015250506101a091506147578284016144b4565b91810191909152949350505050565b600081518084526020808501945080840160005b8381101561479f5781516001600160a01b03168752958201959082019060010161477a565b509495945050505050565b6001600160a01b03851681526080602082015283516080820152602084015160a0820152604084015160c0820152600060608501516147f460e08401826001600160801b03169052565b5060808501516101008381019190915260a08601516101208085019190915260c08701516101408086019190915260e0880151610160808701919091529288015161018080870191909152918801516101a080870191909152908801516101c080870191909152928801516101e086015281880151610200860193909352614880610240860184614766565b908801516001600160a01b039081166102208701528716604086015285151560608601529250613e04915050565b600080604083850312156148c157600080fd5b505080516020909101519092909150565b6001600160801b038181168382160190808211156148f2576148f261442f565b5092915050565b634e487b7160e01b600052603260045260246000fd5b60008235603e1983360301811261492557600080fd5b9190910192915050565b6000808335601e1984360301811261494657600080fd5b83018035915067ffffffffffffffff82111561496157600080fd5b60200191503681900382131561426e57600080fd5b6001600160e01b03198135818116916004851015612f575760049490940360031b84901b1690921692915050565b600080858511156149b457600080fd5b838611156149c157600080fd5b5050820193919092039150565b600060208083850312156149e157600080fd5b823567ffffffffffffffff8111156149f857600080fd5b8301601f81018513614a0957600080fd5b8035614a17614606826145c1565b81815260069190911b82018301908381019087831115614a3657600080fd5b928401925b828410156140855760408489031215614a545760008081fd5b614a5c614562565b8435614a67816141e2565b81528486013586820152825260409093019290840190614a3b565b61ffff81168114610ed257600080fd5b8035613b5e81614a82565b60008060408385031215614ab057600080fd5b823567ffffffffffffffff811115614ac757600080fd5b8301601f81018513614ad857600080fd5b80356020614ae8614606836145c1565b82815260059290921b83018101918181019088841115614b0757600080fd5b938201935b83851015614b2557843582529382019390820190614b0c565b9550614b349050868201614a92565b93505050509250929050565b600060208284031215614b5257600080fd5b8151612cf081614a82565b600080600060608486031215614b7257600080fd5b8335614b7d816141e2565b9250602084810135614b8e81614143565b9250604085013567ffffffffffffffff80821115614bab57600080fd5b818701915087601f830112614bbf57600080fd5b813581811115614bd157614bd1614522565b614be3601f8201601f19168501614585565b91508082528884828501011115614bf957600080fd5b80848401858401376000848284010152508093505050509250925092565b60005b83811015614c32578181015183820152602001614c1a565b50506000910152565b60008151808452614c53816020860160208601614c17565b601f01601f19169290920160200192915050565b602081526000612cf06020830184614c3b565b600060a082016001600160a01b03881683526020878185015260a0604085015281875180845260c086019150828901935060005b81811015614cca57845183529383019391830191600101614cae565b505061ffff9690961660608501525050509015156080909101529392505050565b8082018281126000831280158216821582161715612f5757612f5761442f565b60008060408385031215614d1e57600080fd5b8235614d29816141e2565b946020939093013593505050565b60008060008060008060c08789031215614d5057600080fd5b8635614d5b816141e2565b95506020870135945060408701359350614d776060880161418a565b92506080870135915060a087013590509295509295509295565b600080600060608486031215614da657600080fd5b8335614db1816141e2565b92506020840135600b81900b8114614dc857600080fd5b915060408401356bffffffffffffffffffffffff8116811461439857600080fd5b600081600b0b83600b0b80614e0e57634e487b7160e01b600052601260045260246000fd5b6b7fffffffffffffffffffffff19821460001982141615614e3157614e3161442f565b90059392505050565b600082600b0b82600b0b0280600b0b91508082146148f2576148f261442f565b600080600060608486031215614e6f57600080fd5b8335614e7a816141e2565b9250602084013591506040840135614398816141e2565b600060208284031215614ea357600080fd5b5035919050565b6001600160a01b038516815260208101849052604081018390526080810160028310614ed857614ed861445c565b82606083015295945050505050565b600080600060608486031215614efc57600080fd5b8351925060208401519150604084015190509250925092565b60006020808385031215614f2857600080fd5b823567ffffffffffffffff811115614f3f57600080fd5b8301601f81018513614f5057600080fd5b8035614f5e614606826145c1565b81815260069190911b82018301908381019087831115614f7d57600080fd5b928401925b828410156140855760408489031215614f9b5760008081fd5b614fa3614562565b8435614fae816141e2565b815284860135614fbd816141e2565b8187015282526040939093019290840190614f82565b600060408083016001600160a01b03808716855260208381870152828751808552606088019150828901945060005b8181101561502b5785518051861684528401518516848401529483019491860191600101615002565b50909998505050505050505050565b60006020828403121561504c57600080fd5b8151612cf081614143565b808201808211156116db576116db61442f565b60008251614925818460208701614c1756fea264697066735822122036f7b207925b1e86f09f35200705d9729576765715a7e0fa64573f5a3ba7f4cd64736f6c63430008110033000000000000000000000000d665774088c7936b65be0cbcf83aebe87cb10de700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000