0 txs
3 calls
constructor
No constructor.
functions
calculateDeltaBFromReserves
viewfunction calculateDeltaBFromReserves(address well, uint256[] reserves, uint256 lookback) view returns (int256)
calculateStalkPenalty
viewfunction calculateStalkPenalty(tuple dbs, uint256 bdvConverted, uint256 overallConvertCapacity, address inputToken, address outputToken) view returns (uint256 stalkPenaltyBdv, uint256 overallConvertCapacityUsed, uint256 inputTokenAmountUsed, uint256 outputTokenAmountUsed)
cappedReservesDeltaB
viewfunction cappedReservesDeltaB(address well) view returns (int256 deltaB)
downPenalizedGrownStalk
viewfunction downPenalizedGrownStalk(address well, uint256 bdvToConvert, uint256 grownStalkToConvert, uint256 amountConverted) view returns (uint256 newGrownStalk, uint256 grownStalkLost)
getAmountOut
viewfunction getAmountOut(address tokenIn, address tokenOut, uint256 amountIn) view returns (uint256 amountOut)
getCalculatedBonusStalkPerBdv
viewfunction getCalculatedBonusStalkPerBdv() view returns (uint256)
getConvertStalkPerBdvBonusAndMaximumCapacity
viewfunction getConvertStalkPerBdvBonusAndMaximumCapacity() view returns (uint256, uint256)
getConvertStalkPerBdvBonusAndRemainingCapacity
viewfunction getConvertStalkPerBdvBonusAndRemainingCapacity() view returns (uint256, uint256)
getMaxAmountIn
viewfunction getMaxAmountIn(address tokenIn, address tokenOut) view returns (uint256 amountIn)
getMaxAmountInAtRate
viewfunction getMaxAmountInAtRate(address tokenIn, address tokenOut, uint256 rate) view returns (uint256 amountIn)
getOverallConvertCapacity
viewfunction getOverallConvertCapacity() view returns (uint256)
getWellConvertCapacity
viewfunction getWellConvertCapacity(address well) view returns (uint256)
overallCappedDeltaB
viewfunction overallCappedDeltaB() view returns (int256 deltaB)
overallCurrentDeltaB
viewfunction overallCurrentDeltaB() view returns (int256 deltaB)
scaledDeltaB
purefunction scaledDeltaB(uint256 beforeLpTokenSupply, uint256 afterLpTokenSupply, int256 deltaB) pure returns (int256)
stalkBonus
viewfunction stalkBonus(uint256 bdvToConvert, uint256 grownStalk) view returns (uint256 bdvCapacityUsed, uint256 grownStalkGained)
events
No events.
errors
SafeCastOverflowedIntDowncast
error SafeCastOverflowedIntDowncast(uint8 bits, int256 value)
SafeCastOverflowedUintToInt
error SafeCastOverflowedUintToInt(uint256 value)
T
error T()
creation bytecode
0x6080604052348015600f57600080fd5b506153c58061001f6000396000f3fe608060405234801561001057600080fd5b50600436106100e05760003560e01c80639eea434f116100875780639eea434f1461018f5780639fb36a2b14610197578063b267ea07146101aa578063b325d2ef146101b2578063b905065b146101e5578063d052f0d5146101f8578063df66da4f1461020b578063f66d55891461021357600080fd5b806301b56d0e146100e557806301c74ef11461011257806324568abf1461012557806324dd285c146101465780633e8b56f1146101595780634aa06652146101615780636842f2b3146101745780637432071814610187575b600080fd5b6100f86100f3366004614362565b61021b565b604080519283526020830191909152015b60405180910390f35b6100f86101203660046143a7565b610234565b6101386101333660046143e2565b610251565b604051908152602001610109565b61013861015436600461440e565b610268565b61013861027d565b61013861016f366004614447565b61028c565b610138610182366004614488565b610299565b6100f86102a4565b6100f8610464565b6101386101a5366004614447565b610536565b610138610543565b6101c56101c036600461457b565b61054d565b604080519485526020850193909352918301526060820152608001610109565b6101386101f3366004614488565b610573565b61013861020636600461463f565b6105b7565b6101386105c4565b610138610688565b60008061022884846106ce565b915091505b9250929050565b600080610243868686866108e1565b915091505b94509492505050565b600061025e848484610c68565b90505b9392505050565b60006102748383610c7e565b90505b92915050565b6000610287610d61565b905090565b600061025e848484610dba565b600061027782610e55565b600260009081526101486020526000805160206153708339815191528054829182918291906102d2906146f1565b80601f01602080910402602001604051908101604052809291908181526020018280546102fe906146f1565b801561034b5780601f106103205761010080835404028352916020019161034b565b820191906000526020600020905b81548152906001019060200180831161032e57829003601f168201915b50505050508060200190518101906103639190614725565b9050600061014883018160028152602001908152602001600020600201805461038b906146f1565b80601f01602080910402602001604051908101604052809291908181526020018280546103b7906146f1565b80156104045780601f106103d957610100808354040283529160200191610404565b820191906000526020600020905b8154815290600101906020018083116103e757829003601f168201915b505050505080602001905181019061041c9190614780565b9050600061042d8360200151610ee3565b9050808260a0015110610447575050519360009350915050565b825160a08301516104589083614811565b95509550505050509091565b60026000908152610148602052600080516020615370833981519152805482918291829190610492906146f1565b80601f01602080910402602001604051908101604052809291908181526020018280546104be906146f1565b801561050b5780601f106104e05761010080835404028352916020019161050b565b820191906000526020600020905b8154815290600101906020018083116104ee57829003601f168201915b50505050508060200190518101906105239190614725565b8051602090910151909590945092505050565b600061025e848484610f5a565b6000610287610fa5565b6000806000806105608989898989610ff9565b929c919b50995090975095505050505050565b4360009081526021602090815260408083206001600160a01b03851684526001019091528120548190610261906105b16105ac86610e55565b6110b0565b906110cc565b600061025e8484846110d8565b600260009081526101486020526000805160206153708339815191528054829182916105ef906146f1565b80601f016020809104026020016040519081016040528092919081815260200182805461061b906146f1565b80156106685780601f1061063d57610100808354040283529160200191610668565b820191906000526020600020905b81548152906001019060200180831161064b57829003601f168201915b50505050508060200190518101906106809190614725565b519392505050565b60008060006106986105ac610d61565b4360009081526021840160205260409020549091508181116106c3576106be82826110cc565b6106c6565b60005b935050505090565b600260009081526101486020526000805160206153708339815191528054829182918291906106fc906146f1565b80601f0160208091040260200160405190810160405280929190818152602001828054610728906146f1565b80156107755780601f1061074a57610100808354040283529160200191610775565b820191906000526020600020905b81548152906001019060200180831161075857829003601f168201915b505050505080602001905181019061078d9190614725565b905060006101488301816002815260200190815260200160002060020180546107b5906146f1565b80601f01602080910402602001604051908101604052809291908181526020018280546107e1906146f1565b801561082e5780601f106108035761010080835404028352916020019161082e565b820191906000526020600020905b81548152906001019060200180831161081157829003601f168201915b50505050508060200190518101906108469190614780565b8251909150600003610861576000809450945050505061022d565b60006108708360200151610ee3565b9050808260a001511061088d57600080955095505050505061022d565b60006108a8898460a00151846108a39190614811565b61134c565b84519091506108b8908290614824565b9550858810156108d45783518896506108d19087614851565b90505b9550505050509250929050565b600080806000861180156108f55750600084115b6109465760405162461bcd60e51b815260206004820152601f60248201527f436f6e766572743a20626476206f722066726f6d416d6f756e7420697320300060448201526064015b60405180910390fd5b60006109528888611362565b90508086101561096a57856000935093505050610248565b60016000908152610148830160205260408120600201805461098b906146f1565b80601f01602080910402602001604051908101604052809291908181526020018280546109b7906146f1565b8015610a045780601f106109d957610100808354040283529160200191610a04565b820191906000526020600020905b8154815290600101906020018083116109e757829003601f168201915b5050505050806020019051810190610a1c9190614865565b9050600080610a308b8460c001518a61137b565b915091508115610a4b57886000965096505050505050610248565b600160009081526101488601602052604081208054610a69906146f1565b80601f0160208091040260200160405190810160405280929190818152602001828054610a95906146f1565b8015610ae25780601f10610ab757610100808354040283529160200191610ae2565b820191906000526020600020905b815481529060010190602001808311610ac557829003601f168201915b5050505050806020019051810190610afa91906148df565b509050670de0b6b3a7640000811115610b685760405162461bcd60e51b815260206004820152602a60248201527f436f6e766572743a2070656e616c7479526174696f2069732067726561746572604482015269207468616e203130302560b01b606482015260840161093d565b8015610c515788821115610bda5760405162461bcd60e51b815260206004820152603360248201527f436f6e766572743a2070656e616c697a6564416d6f756e7420697320677265616044820152721d195c881d1a185b88199c9bdb505b5bdd5b9d606a1b606482015260840161093d565b600089610be7848e614824565b610bf19190614851565b905060008c610c00838e614824565b610c0a9190614851565b9050610c3c670de0b6b3a7640000610c228584614824565b610c2c9190614851565b610c36908e614811565b8861168d565b9950610c488a8d614811565b98505050610c59565b899750600096505b50505050505094509492505050565b600061025e83610c78848761169c565b906116a8565b600080826001600160a01b0316846001600160a01b031603610ca557600019915050610277565b60018101546001600160a01b038581169116148015610cd15750610cd1836001600160a01b03166116b4565b15610ce757610cdf836116e5565b915050610277565b610cf0846116fb565b8015610d0b575060018101546001600160a01b038481169116145b15610d1957610cdf84611741565b60405162461bcd60e51b815260206004820152601d60248201527f436f6e766572743a20546f6b656e73206e6f7420737570706f72746564000000604482015260640161093d565b600080610d6c611a81565b905060005b8151811015610db5576000610d9e838381518110610d9157610d91614903565b6020026020010151610e55565b9050610daa8482611b86565b935050600101610d71565b505090565b600080836001600160a01b0316856001600160a01b031603610ddf5782915050610261565b60018101546001600160a01b038681169116148015610e0b5750610e0b846001600160a01b03166116b4565b15610e2257610e1a8484611b92565b915050610261565b610e2b856116fb565b8015610e46575060018101546001600160a01b038581169116145b15610d1957610e1a8584611cd7565b60015460009081906001600160a01b0390811690841603610e795750600092915050565b6000610e8484611d54565b90508051600003610e99575060009392505050565b6298968081610ea786611e93565b81518110610eb757610eb7614903565b60200260200101511015610ecf575060009392505050565b610edb848260006110d8565b949350505050565b60d65460009081908190670de0b6b3a764000090610f0a906706f05b59d3b2000090614824565b610f149190614851565b60d7830154909150600090610f299042614811565b905081811115610f3c5750929392505050565b81610f478287614824565b610f519190614851565b95945050505050565b60015460009081906001600160a01b038681169116148015610f895750610f89846001600160a01b03166116b4565b15610d19576000610f9a8585611f07565b509250610261915050565b600080610fb0611a81565b905060005b8151811015610db5576000610fe2838381518110610fd557610fd5614903565b602002602001015161215c565b9050610fee8482611b86565b935050600101610fb5565b600080600080611007614300565b6110108a61227a565b815261101b8a6122ca565b602080830182905260408201519082015191516110419261103c9190612310565b61168d565b6060820152805160408101518151602090920151611066928b92918b91908b9061231c565b604083015260808201819052606082015161108b91611085919061168d565b8a61134c565b604091820151918201518251602090930151919c909b50919950975095505050505050565b6000808212156110c8576110c382614919565b610277565b5090565b60006102748284614811565b600080846001600160a01b0316639d63848a6040518163ffffffff1660e01b8152600401600060405180830381865afa158015611119573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526111419190810190614935565b90506000856001600160a01b03166310dd08306040518163ffffffff1660e01b8152600401600060405180830381865afa158015611183573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526111ab9190810190614a97565b905060008060006111bc858861240a565b925092509250629896808883815181106111d8576111d8614903565b602002602001015110156112425760405162461bcd60e51b815260206004820152602b60248201527f57656c6c3a204265616e2072657365727665206973206c657373207468616e2060448201526a746865206d696e696d756d60a81b606482015260840161093d565b8061128f5760405162461bcd60e51b815260206004820152601c60248201527f57656c6c3a20555344204f7261636c652063616c6c206661696c656400000000604482015260640161093d565b83516020850151604051631017d19360e31b81526001600160a01b03909216916380be8c98916112c8918c918791899190600401614b33565b602060405180830381865afa925050508015611301575060408051601f3d908101601f191682019092526112fe91810190614b72565b60015b61131357600095505050505050610261565b61133f89848151811061132857611328614903565b60200260200101518261242a90919063ffffffff16565b9650505050505050610261565b600081831061135b5781610274565b5090919050565b60008061136e84612436565b9050610edb84828561244e565b60008060008060006113f4886001600160a01b0316639d63848a6040518163ffffffff1660e01b8152600401600060405180830381865afa1580156113c4573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526113ec9190810190614935565b600089612477565b925092509250806114175760405162461bcd60e51b815260040161093d90614b8b565b600061142289612773565b90506000896001600160a01b03166310dd08306040518163ffffffff1660e01b8152600401600060405180830381865afa158015611464573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261148c9190810190614a97565b9050600082516001600160401b038111156114a9576114a96144a5565b6040519080825280602002602001820160405280156114d2578160200160208202803683370190505b509050600085156114e45760006114e7565b60015b60ff169050898487815181106114ff576114ff614903565b60200260200101516115119190614bc2565b82878151811061152357611523614903565b60200260200101818152505083818151811061154157611541614903565b602002602001015182828151811061155b5761155b614903565b602002602001018181525050600083600001516001600160a01b0316635a84467c86898b88602001516040518563ffffffff1660e01b81526004016115a39493929190614b33565b602060405180830381865afa1580156115c0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115e49190614b72565b9050808588815181106115f9576115f9614903565b6020026020010151111561161b5760008b995099505050505050505050611685565b8083888151811061162e5761162e614903565b602002602001015110156116515760016000995099505050505050505050611685565b60008184898151811061166657611666614903565b60200260200101516116789190614811565b9950995050505050505050505b935093915050565b600081831161135b5781610274565b60006102748284614bd5565b60006102748284614c05565b6001600160a01b0316600090815260c8602052604090205460e01b6001600160e01b03191663c84c772760e01b1490565b60006116f482620f4240611f07565b5092915050565b600080600061170984612825565b60c983018054919250908290811061172357611723614903565b600091825260209091200154600160b81b900460ff16949350505050565b600080826001600160a01b0316639d63848a6040518163ffffffff1660e01b8152600401600060405180830381865afa158015611782573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526117aa9190810190614935565b90506000836001600160a01b0316630902f1ac6040518163ffffffff1660e01b8152600401600060405180830381865afa1580156117ec573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526118149190810190614c33565b90506000846001600160a01b03166310dd08306040518163ffffffff1660e01b8152600401600060405180830381865afa158015611856573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261187e9190810190614a97565b9050600080600061188e866128da565b925092509250806118b15760405162461bcd60e51b815260040161093d90614b8b565b835160208501516040516316a1119f60e21b81526000926001600160a01b031691635a84467c916118ea918a9188918a91600401614b33565b602060405180830381865afa158015611907573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061192b9190614b72565b90508086848151811061194057611940614903565b60200260200101511161195c5750600098975050505050505050565b845160208601516040516253057f60e61b81526000926001600160a01b0316916314c15fc091611990918b91600401614cb8565b602060405180830381865afa1580156119ad573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119d19190614b72565b9050818785815181106119e6576119e6614903565b602002602001018181525050611a7386600001516001600160a01b03166314c15fc08989602001516040518363ffffffff1660e01b8152600401611a2b929190614cb8565b602060405180830381865afa158015611a48573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a6c9190614b72565b82906110cc565b9a9950505050505050505050565b60c95460609060009081816001600160401b03811115611aa357611aa36144a5565b604051908082528060200260200182016040528015611acc578160200160208202803683370190505b50935060005b82811015611b7c5760c98401805482908110611af057611af0614903565b600091825260209091200154600160b01b900460ff1615611b745760c98401805482908110611b2157611b21614903565b6000918252602090912001546001600160a01b03168583611b4181614cdd565b945081518110611b5357611b53614903565b60200260200101906001600160a01b031690816001600160a01b0316815250505b600101611ad2565b5080845250505090565b60006102748284614cf6565b600080836001600160a01b0316639d63848a6040518163ffffffff1660e01b8152600401600060405180830381865afa158015611bd3573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611bfb9190810190614935565b9050600081516001600160401b03811115611c1857611c186144a5565b604051908082528060200260200182016040528015611c41578160200160208202803683370190505b5090508381611c4f846128f7565b81518110611c5f57611c5f614903565b6020908102919091010152604051638974eb0f60e01b81526001600160a01b03861690638974eb0f90611c96908490600401614d16565b602060405180830381865afa158015611cb3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f519190614b72565b6000808060018101546040516308cfce0f60e41b8152600481018690526001600160a01b039182166024820152919250851690638cfce0f090604401602060405180830381865afa158015611d30573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610edb9190614b72565b60606000826001600160a01b031663a1d89d966040518163ffffffff1660e01b8152600401600060405180830381865afa158015611d96573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611dbe9190810190614d29565b9050600081600081518110611dd557611dd5614903565b6020026020010151600001519050806001600160a01b031663d026d3718584600081518110611e0657611e06614903565b6020026020010151602001516040518363ffffffff1660e01b8152600401611e2f929190614dd9565b600060405180830381865afa925050508015611e6d57506040513d6000823e601f3d908101601f19168201604052611e6a9190810190614c33565b60015b610edb5760408051600080825260208201909252905b50949350505050565b5050919050565b600080826001600160a01b0316639d63848a6040518163ffffffff1660e01b8152600401600060405180830381865afa158015611ed4573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611efc9190810190614935565b9050610261816128f7565b6000806000846001600160a01b0316639d63848a6040518163ffffffff1660e01b8152600401600060405180830381865afa158015611f4a573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611f729190810190614935565b90506000856001600160a01b0316630902f1ac6040518163ffffffff1660e01b8152600401600060405180830381865afa158015611fb4573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611fdc9190810190614c33565b90506000866001600160a01b03166310dd08306040518163ffffffff1660e01b8152600401600060405180830381865afa15801561201e573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526120469190810190614a97565b9050606060006120588560008a612477565b90975090925090508061207d5760405162461bcd60e51b815260040161093d90614b8b565b825160208401516040516316a1119f60e21b81526000926001600160a01b031691635a84467c916120b69189918c918991600401614b33565b602060405180830381865afa1580156120d3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120f79190614b72565b905084878151811061210b5761210b614903565b60200260200101518111612128576000975050505050505061022d565b84878151811061213a5761213a614903565b60200260200101518161214d9190614811565b97505050505050509250929050565b6000816001600160a01b0316630902f1ac6040518163ffffffff1660e01b8152600401600060405180830381865afa9250505080156121bd57506040513d6000823e601f3d908101601f191682016040526121ba9190810190614c33565b60015b6121c957506000919050565b6000612239846001600160a01b0316639d63848a6040518163ffffffff1660e01b8152600401600060405180830381865afa15801561220c573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526122349190810190614935565b6128f7565b90506298968082828151811061225157612251614903565b60200260200101511015612269575060009392505050565b610edb848360006110d8565b919050565b612282614341565b61229482608001518360a00151612961565b6040820152815160208301516122aa9190612961565b8152604082015160608301516122c09190612961565b6020820152919050565b6122d2614341565b6122e482608001518360a001516129df565b6040820152815160208301516122fa91906129df565b8152604082015160608301516122c091906129df565b60006102748284614bc2565b6000612326614341565b43600090815260216020526040812080548a1161234557889350612373565b8054612352908b906110cc565b891115612373578054612366908b906110cc565b612370908a614811565b93505b805461237f908a612310565b604084015260018201546001600160a01b038981169116148015906123a45750600087115b156123bf576123ba888886848760000151612a77565b845293505b60018201546001600160a01b038781169116148015906123df5750600085115b156123fd576123f5868686848760200151612a77565b602085015293505b5050965096945050505050565b606060008061241d8585620f4240612477565b9250925092509250925092565b60006102748284614dfd565b6000600161244383612adf565b516102779190614e1d565b60008061245a85612b1b565b9050610f518361246e600b84900b87612bdb565b600b0b90612be7565b6060600080806001915086516001600160401b0381111561249a5761249a6144a5565b6040519080825280602002602001820160405280156124c3578160200160208202803683370190505b50600182015490945060001993506000906001600160a01b0316815b89518110156125b457816001600160a01b03168a828151811061250457612504614903565b60200260200101516001600160a01b031603612522578095506125ac565b60088a828151811061253657612536614903565b60200260200101516001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa15801561257b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061259f9190614e4a565b60ff16116125ac57600192505b6001016124df565b5060005b89518110156126f457816001600160a01b03168a82815181106125dd576125dd614903565b60200260200101516001600160a01b0316036126385782156126225764e8d4a5100087828151811061261157612611614903565b6020026020010181815250506126ec565b620f424087828151811061261157612611614903565b8215612684576126618a828151811061265357612653614903565b60200260200101518a612bf3565b87828151811061267357612673614903565b6020026020010181815250506126c6565b6126a78a828151811061269957612699614903565b60200260200101518a612c66565b8782815181106126b9576126b9614903565b6020026020010181815250505b8681815181106126d8576126d8614903565b60200260200101516000036126ec57600094505b6001016125b8565b5060001985036127165760405162461bcd60e51b815260040161093d90614e6d565b86620f424087878151811061272d5761272d614903565b602002602001015161273f9190614824565b6127499190614851565b86868151811061275b5761275b614903565b60200260200101818152505050505093509350939050565b60606000826001600160a01b031663a1d89d966040518163ffffffff1660e01b8152600401600060405180830381865afa1580156127b5573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526127dd9190810190614d29565b90506000816000815181106127f4576127f4614903565b6020026020010151600001519050806001600160a01b0316636de13cba8584600081518110611e0657611e06614903565b60c9546000908190815b60c9830180546001600160a01b03871691908390811061285157612851614903565b6000918252602090912001546001600160a01b031614610edb578061287581614cdd565b9150508181106128d55760405162461bcd60e51b815260206004820152602560248201527f4c696257686974656c6973746564546f6b656e733a20546f6b656e206e6f7420604482015264199bdd5b9960da1b606482015260840161093d565b61282f565b60606000806128ea84600061240a565b9250925092509193909250565b6000805b82518210156129495782828151811061291657612916614903565b602090810291909101015160018201546001600160a01b0391821691160361293e5750919050565b8160010191506128fb565b60405162461bcd60e51b815260040161093d90614e6d565b60008061296d846110b0565b9050600061297a846110b0565b90506000851215801561298e575060008412155b806129a457506000851280156129a45750600084125b156129cf57818110156129c4576129bb82826110cc565b92505050610277565b600092505050610277565b509050610277565b505092915050565b600080831380156129f05750600082125b80612a065750600083128015612a065750600082135b15612a1b57612a14826110b0565b9050610277565b60008213158015612a2d575060008313155b80612a45575060008212158015612a45575060008312155b1561027757612a53826110b0565b612a5c846110b0565b101561027757610274612a6e846110b0565b6105b1846110b0565b6000806000612a886105ac89610e55565b6001600160a01b0389166000908152600187016020526040902054909150612ab09088612310565b935080841115612ad157612ace612ac785836110cc565b8790612310565b95505b509396919550909350505050565b6040805180820190915260008082526020820152612afc82612b1b565b600b0b60208201819052612b11908390612cd7565b600b0b8152919050565b6001600160a01b038116600090815260c860205260408120548190612bac90612b7190612b5490600160781b900463ffffffff16612cf2565b60d4840154612b689063ffffffff16612cf2565b600b0b90612bdb565b6001600160a01b038516600090815260c884016020526040902054612ba390600160201b900464ffffffffff16612cf2565b600b0b90612d05565b6001600160a01b038416600090815260c8830160205260409020546102619190600160981b9004600b0b614e98565b60006102748284614e1d565b60006102748284614824565b600061027483846001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015612c37573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612c5b9190614e4a565b60ff16846001612d11565b600061027483846001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015612caa573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612cce9190614e4a565b60ff1684613353565b600061027482612ce685613362565b64ffffffffff16612bdb565b6000610277612d0083613470565b61349d565b60006102748284614ec5565b6001600160a01b038481166000908152602260209081526040808320815160808101835281549586168152600160a01b860460e01b6001600160e01b03191693810193909352600160c01b90940460f81b6001600160f81b03191690820152600183018054929384938493926060840191612d8b906146f1565b80601f0160208091040260200160405190810160405280929190818152602001828054612db7906146f1565b8015612e045780601f10612dd957610100808354040283529160200191612e04565b820191906000526020600020905b815481529060010190602001808311612de757829003601f168201915b5050509190925250505060408101519091506001600160f81b031990811601612e5857612e4f81600001518260600151806020019051810190612e479190614b72565b8888886134cc565b92505050610edb565b60408101516001600160f81b031916607f60f91b0161323357600081600001516001600160a01b0316630dfe16816040518163ffffffff1660e01b8152600401602060405180830381865afa158015612eb5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612ed99190614ee5565b9050876001600160a01b0316816001600160a01b031603612f5d5781600001516001600160a01b031663d21220a76040518163ffffffff1660e01b8152600401602060405180830381865afa158015612f36573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612f5a9190614ee5565b90505b612ff78615612f6c5786612f70565b6103845b83518a848b15612f8a57612f858c600a614fde565b6134fd565b8c6001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015612fc8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612fec9190614e4a565b612f8590600a614fea565b6001600160a01b0382811660009081526022860160209081526040808320815160808101835281549586168152600160a01b860460e01b6001600160e01b03191693810193909352600160c01b90940460f81b6001600160f81b0319169082015260018301805494985091939092916060840191613074906146f1565b80601f01602080910402602001604051908101604052809291908181526020018280546130a0906146f1565b80156130ed5780601f106130c2576101008083540402835291602001916130ed565b820191906000526020600020905b8154815290600101906020018083116130d057829003601f168201915b50505050508152505090506000826001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015613138573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061315c9190614e4a565b60ff1690506000613199836000015184606001518060200190518101906131839190614b72565b8c1561318f5784613191565b8c5b8c60006134cc565b905089156132255787156131d357866131b38b600a614fde565b6131c29064e8d4a51000614824565b6131cc9190614851565b96506131f9565b866131df8b600a614fde565b6131ec90620f4240614824565b6131f69190614851565b96505b61320482600a614fde565b61320e8289614824565b6132189190614851565b9650505050505050610edb565b620f424061320e8289614824565b80516001600160a01b031661324d57600092505050610edb565b606081015184156132815781606001518560405160200161326f929190614ff9565b60405160208183030381529060405290505b60008083600001516001600160a01b031684602001518a8a866040516024016132ac93929190615021565b60408051601f198184030181529181526020820180516001600160e01b03166001600160e01b03199094169390931790925290516132ea9190615040565b600060405180830381855afa9150503d8060008114613325576040519150601f19603f3d011682016040523d82523d6000602084013e61332a565b606091505b50915091508161334257600095505050505050610edb565b602001519998505050505050505050565b600061025e8484846000612d11565b60d4546001600160a01b038216600090815260c860205260408120549091829163ffffffff918216600160781b90910490911610156133cb576001600160a01b038316600090815260c882016020526040902054600160201b900464ffffffffff16915061346a565b6001600160a01b038316600090815260c88201602052604081206001015460040b90811261342e576001600160a01b038416600090815260c883016020526040902054613427908290600160201b900464ffffffffff1661505c565b9250611e8c565b6134378161507a565b6001600160a01b038516600090815260c884016020526040902054610edb9190600160201b900464ffffffffff1661509e565b50919050565b60006001600160ff1b038211156110c85760405163123baf0360e11b81526004810183905260240161093d565b80600b81900b81146122755760405163327269a760e01b8152606060048201526024810183905260440161093d565b60008083116134e6576134e1868686856136bb565b6134f3565b6134f38686868686613849565b9695505050505050565b600080600061350c8789613b49565b915091508161352057600092505050610f51565b61352c81858888613d17565b92506000866001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa15801561356e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906135929190614e4a565b60ff1690506000866001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa1580156135d7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906135fb9190614e4a565b60ff169050600061360c8284614dfd565b9050806000036136445761362183600a614fde565b61362e620f424088614824565b6136389190614851565b95505050505050610f51565b60008113156136695761365881600a614fde565b6136629087614824565b955061368a565b61367281614919565b61367d90600a614fde565b6136879087614851565b95505b61369583600a614fde565b6136a2620f424088614824565b6136ac9190614851565b9b9a5050505050505050505050565b6000808590506000816001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa92505050801561371d575060408051601f3d908101601f1916820190925261371a91810190614e4a565b60015b61372c57600092505050610edb565b9050816001600160a01b031663feaf968c6040518163ffffffff1660e01b815260040160a060405180830381865afa925050508015613788575060408051601f3d908101601f19168201909252613785918101906150d3565b60015b61379757600092505050610edb565b846001600160501b03166000036137b8576000975050505050505050610edb565b6137c48285428e613e1e565b156137d9576000975050505050505050610edb565b891561381c5788156137f3576137f08a6006614bc2565b99505b6138158461380460ff89168d614bc2565b61380f90600a614fde565b90613e6d565b975061383a565b61383761382a87600a614fea565b61380f86620f4240612be7565b97505b50505050505050949350505050565b600080866001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa9250505080156138a6575060408051601f3d908101601f191682019092526138a391810190614e4a565b60015b6138b4576000915050610f51565b9050866001600160a01b031663feaf968c6040518163ffffffff1660e01b815260040160a060405180830381865afa925050508015613910575060408051601f3d908101601f1916820190925261390d918101906150d3565b60015b61391e576000915050610f51565b846001600160501b031660000361393e5760009650505050505050610f51565b61394a8285428e613e1e565b1561395e5760009650505050505050610f51565b61398260405180606001604052806000815260200160008152602001600081525090565b61398c428b6110cc565b602082015288156139a5576139a28b6006614bc2565b9a505b806020015183116139f0578a156139d5576139c78561380460ff8a168e614bc2565b975050505050505050610f51565b6139c76139e388600a614fea565b61380f87620f4240612be7565b4260408201525b8060200151831115613aad578a15613a2f5784613a1760ff89168d614bc2565b613a2290600a614fde565b613a2c9190614851565b94505b613a5b613a53613a4c8584604001516110cc90919063ffffffff16565b8790612be7565b825190612310565b8152613a68600187615117565b604082018490529550613a7b8d87613e79565b8094508196505050613a93838683604001518f613e1e565b15613aa8576000975050505050505050610f51565b6139f7565b8a15613ad95784613ac160ff89168d614bc2565b613acc90600a614fde565b613ad69190614851565b94505b613afa613a53613a4c836020015184604001516110cc90919063ffffffff16565b81528a15613b15578051613b0e908b613e6d565b9750613b39565b613b368a61380f613b278a600a614fea565b845161380f90620f4240612be7565b97505b5050505050505095945050505050565b6000808263ffffffff16600003613b875760405162461bcd60e51b8152602060048201526002602482015261042560f41b604482015260640161093d565b6040805160028082526060820183526000926020830190803683370190505090508381600081518110613bbc57613bbc614903565b602002602001019063ffffffff16908163ffffffff1681525050600081600181518110613beb57613beb614903565b63ffffffff9092166020928302919091019091015260405163883bdbfd60e01b81526001600160a01b0386169063883bdbfd90613c2c908490600401615137565b600060405180830381865afa925050508015613c6a57506040513d6000823e601f3d908101601f19168201604052613c6791908101906151f4565b60015b15613d0f57600082600081518110613c8457613c84614903565b602002602001015183600181518110613c9f57613c9f614903565b6020026020010151613cb191906152bf565b9050613cce613cc663ffffffff8916836152ec565b60060b613f07565b945060008160060b128015613cf45750613cee63ffffffff88168261532a565b60060b15155b15613d075784613d038161534c565b9550505b600195505050505b509250929050565b600080613d2386613f36565b90506001600160801b036001600160a01b03821611613da9576000613d516001600160a01b03831680614824565b9050836001600160a01b0316856001600160a01b031610613d8957613d84600160c01b876001600160801b03168361424e565b613da1565b613da181876001600160801b0316600160c01b61424e565b925050611e83565b6000613dc36001600160a01b03831680600160401b61424e565b9050836001600160a01b0316856001600160a01b031610613dfb57613df6600160801b876001600160801b03168361424e565b613e13565b613e1381876001600160801b0316600160801b61424e565b979650505050505050565b6000841580613e2c57508285115b15613e3957506001610edb565b81613e4484876110cc565b1115613e5257506001610edb565b60008413613e6257506001610edb565b506000949350505050565b60006102748284614851565b604051639a6fc8f560e01b81526001600160501b038216600482015260009081906001600160a01b03851690639a6fc8f59060240160a060405180830381865afa925050508015613ee7575060408051601f3d908101601f19168201909252613ee4918101906150d3565b60015b613ef857506000199050600061022d565b5091945090925061022d915050565b80600281900b81146122755760405163327269a760e01b8152601860048201526024810183905260440161093d565b60008060008360020b12613f4d578260020b613f55565b8260020b6000035b9050620d89e8811115613f7b576040516315e4079d60e11b815260040160405180910390fd5b600081600116600003613f9257600160801b613fa4565b6ffffcb933bd6fad37aa2d162d1a5940015b6001600160881b031690506002821615613fce576ffff97272373d413259a46990580e213a0260801c5b6004821615613fed576ffff2e50f5f656932ef12357cf3c7fdcc0260801c5b600882161561400c576fffe5caca7e10e4e61c3624eaa0941cd00260801c5b601082161561402b576fffcb9843d60f6159c9db58835c9266440260801c5b602082161561404a576fff973b41fa98c081472e6896dfb254c00260801c5b6040821615614069576fff2ea16466c96a3843ec78b326b528610260801c5b6080821615614088576ffe5dee046a99a2a811c461f1969c30530260801c5b6101008216156140a8576ffcbe86c7900a88aedcffc83b479aa3a40260801c5b6102008216156140c8576ff987a7253ac413176f2b074cf7815e540260801c5b6104008216156140e8576ff3392b0822b70005940c7a398e4b70f30260801c5b610800821615614108576fe7159475a2c29b7443b29c7fa6e889d90260801c5b611000821615614128576fd097f3bdfd2022b8845ad8f792aa58250260801c5b612000821615614148576fa9f746462d870fdf8a65dc1f90e061e50260801c5b614000821615614168576f70d869a156d2a1b890bb3df62baf32f70260801c5b618000821615614188576f31be135f97d08fd981231505542fcfa60260801c5b620100008216156141a9576f09aa508b5b7a84e1c677de54f3e99bc90260801c5b620200008216156141c9576e5d6af8dedb81196699c329225ee6040260801c5b620400008216156141e8576d2216e584f5fa1ea926041bedfe980260801c5b62080000821615614205576b048a170391f7dc42444e8fa20260801c5b60008460020b13156142265780600019816142225761422261483b565b0490505b600160201b81061561423957600161423c565b60005b60ff16602082901c0192505050919050565b6000808060001985870985870292508281108382030391505080600003614287576000841161427c57600080fd5b508290049050610261565b80841161429357600080fd5b6000848688096000868103871696879004966002600389028118808a02820302808a02820302808a02820302808a02820302808a02820302808a02909103029181900381900460010186841190950394909402919094039290920491909117919091029150509392505050565b6040518060a00160405280614313614341565b8152602001614320614341565b815260200161432d614341565b815260200160008152602001600081525090565b60405180606001604052806000815260200160008152602001600081525090565b6000806040838503121561437557600080fd5b50508035926020909101359150565b6001600160a01b038116811461439957600080fd5b50565b803561227581614384565b600080600080608085870312156143bd57600080fd5b84356143c881614384565b966020860135965060408601359560600135945092505050565b6000806000606084860312156143f757600080fd5b505081359360208301359350604090920135919050565b6000806040838503121561442157600080fd5b823561442c81614384565b9150602083013561443c81614384565b809150509250929050565b60008060006060848603121561445c57600080fd5b833561446781614384565b9250602084013561447781614384565b929592945050506040919091013590565b60006020828403121561449a57600080fd5b813561026181614384565b634e487b7160e01b600052604160045260246000fd5b60405160c081016001600160401b03811182821017156144dd576144dd6144a5565b60405290565b60405161012081016001600160401b03811182821017156144dd576144dd6144a5565b60405161010081016001600160401b03811182821017156144dd576144dd6144a5565b604080519081016001600160401b03811182821017156144dd576144dd6144a5565b604051601f8201601f191681016001600160401b0381118282101715614573576145736144a5565b604052919050565b600080600080600085870361014081121561459557600080fd5b60c08112156145a357600080fd5b506145ac6144bb565b863581526020870135602082015260408701356040820152606087013560608201526080870135608082015260a087013560a08201528095505060c0860135935060e08601359250614601610100870161439c565b9150614610610120870161439c565b90509295509295909350565b60006001600160401b03821115614635576146356144a5565b5060051b60200190565b60008060006060848603121561465457600080fd5b833561465f81614384565b92506020848101356001600160401b0381111561467b57600080fd5b8501601f8101871361468c57600080fd5b803561469f61469a8261461c565b61454b565b81815260059190911b820183019083810190898311156146be57600080fd5b928401925b828410156146dc578335825292840192908401906146c3565b96999698505050506040949094013593505050565b600181811c9082168061470557607f821691505b60208210810361346a57634e487b7160e01b600052602260045260246000fd5b60006060828403121561473757600080fd5b604051606081018181106001600160401b0382111715614759576147596144a5565b80604052508251815260208301516020820152604083015160408201528091505092915050565b6000610120828403121561479357600080fd5b61479b6144e3565b825181526020830151602082015260408301516040820152606083015160608201526080830151608082015260a083015160a082015260c083015160c082015260e083015160e08201526101008084015181830152508091505092915050565b634e487b7160e01b600052601160045260246000fd5b81810381811115610277576102776147fb565b8082028115828204841417610277576102776147fb565b634e487b7160e01b600052601260045260246000fd5b6000826148605761486061483b565b500490565b6000610100828403121561487857600080fd5b614880614506565b825181526020830151602082015260408301516040820152606083015160608201526080830151608082015260a083015160a082015260c083015160c082015260e083015180151581146148d357600080fd5b60e08201529392505050565b600080604083850312156148f257600080fd5b505080516020909101519092909150565b634e487b7160e01b600052603260045260246000fd5b6000600160ff1b820161492e5761492e6147fb565b5060000390565b6000602080838503121561494857600080fd5b82516001600160401b0381111561495e57600080fd5b8301601f8101851361496f57600080fd5b805161497d61469a8261461c565b81815260059190911b8201830190838101908783111561499c57600080fd5b928401925b82841015613e135783516149b481614384565b825292840192908401906149a1565b60005b838110156149de5781810151838201526020016149c6565b50506000910152565b6000604082840312156149f957600080fd5b614a01614529565b90508151614a0e81614384565b81526020828101516001600160401b0380821115614a2b57600080fd5b818501915085601f830112614a3f57600080fd5b815181811115614a5157614a516144a5565b614a63601f8201601f1916850161454b565b91508082528684828501011115614a7957600080fd5b614a88818584018686016149c3565b50808385015250505092915050565b600060208284031215614aa957600080fd5b81516001600160401b03811115614abf57600080fd5b610edb848285016149e7565b60008151808452602080850194506020840160005b83811015614afc57815187529582019590820190600101614ae0565b509495945050505050565b60008151808452614b1f8160208601602086016149c3565b601f01601f19169290920160200192915050565b608081526000614b466080830187614acb565b8560208401528281036040840152614b5e8186614acb565b90508281036060840152613e138185614b07565b600060208284031215614b8457600080fd5b5051919050565b6020808252601a908201527f436f6e766572743a20555344204f7261636c65206661696c6564000000000000604082015260600190565b80820180821115610277576102776147fb565b80820260008212600160ff1b84141615614bf157614bf16147fb565b8181058314821517610277576102776147fb565b600082614c1457614c1461483b565b600160ff1b821460001984141615614c2e57614c2e6147fb565b500590565b60006020808385031215614c4657600080fd5b82516001600160401b03811115614c5c57600080fd5b8301601f81018513614c6d57600080fd5b8051614c7b61469a8261461c565b81815260059190911b82018301908381019087831115614c9a57600080fd5b928401925b82841015613e1357835182529284019290840190614c9f565b604081526000614ccb6040830185614acb565b8281036020840152610f518185614b07565b600060018201614cef57614cef6147fb565b5060010190565b80820182811260008312801582168215821617156129d7576129d76147fb565b6020815260006102746020830184614acb565b60006020808385031215614d3c57600080fd5b82516001600160401b0380821115614d5357600080fd5b818501915085601f830112614d6757600080fd5b8151614d7561469a8261461c565b81815260059190911b83018401908481019088831115614d9457600080fd5b8585015b83811015614dcc57805185811115614db05760008081fd5b614dbe8b89838a01016149e7565b845250918601918601614d98565b5098975050505050505050565b6001600160a01b038316815260406020820181905260009061025e90830184614b07565b81810360008312801583831316838312821617156116f4576116f46147fb565b600b82810b9082900b0360016001605f1b0319811260016001605f1b0382131715610277576102776147fb565b600060208284031215614e5c57600080fd5b815160ff8116811461026157600080fd5b6020808252601190820152702132b0b7103737ba1034b7102bb2b6361760791b604082015260600190565b600b81810b9083900b0160016001605f1b03811360016001605f1b031982121715610277576102776147fb565b600082600b0b82600b0b0280600b0b91508082146116f4576116f46147fb565b600060208284031215614ef757600080fd5b815161026181614384565b600181815b80851115613d0f578160001904821115614f2357614f236147fb565b80851615614f3057918102915b93841c9390800290614f07565b600082614f4c57506001610277565b81614f5957506000610277565b8160018114614f6f5760028114614f7957614f95565b6001915050610277565b60ff841115614f8a57614f8a6147fb565b50506001821b610277565b5060208310610133831016604e8410600b8410161715614fb8575081810a610277565b614fc28383614f02565b8060001904821115614fd657614fd66147fb565b029392505050565b60006102748383614f3d565b600061027460ff841683614f3d565b6000835161500b8184602088016149c3565b92151560f81b9190920190815260010192915050565b838152826020820152606060408201526000610f516060830184614b07565b600082516150528184602087016149c3565b9190910192915050565b64ffffffffff8281168282160390808211156116f4576116f46147fb565b60008160040b647fffffffff198103615095576150956147fb565b60000392915050565b64ffffffffff8181168382160190808211156116f4576116f46147fb565b80516001600160501b038116811461227557600080fd5b600080600080600060a086880312156150eb57600080fd5b6150f4866150bc565b9450602086015193506040860151925060608601519150614610608087016150bc565b6001600160501b038281168282160390808211156116f4576116f46147fb565b6020808252825182820181905260009190848201906040850190845b8181101561517557835163ffffffff1683529284019291840191600101615153565b50909695505050505050565b600082601f83011261519257600080fd5b815160206151a261469a8361461c565b8083825260208201915060208460051b8701019350868411156151c457600080fd5b602086015b848110156151e95780516151dc81614384565b83529183019183016151c9565b509695505050505050565b6000806040838503121561520757600080fd5b82516001600160401b038082111561521e57600080fd5b818501915085601f83011261523257600080fd5b8151602061524261469a8361461c565b82815260059290921b8401810191818101908984111561526157600080fd5b948201945b8386101561528f5785518060060b81146152805760008081fd5b82529482019490820190615266565b918801519196509093505050808211156152a857600080fd5b506152b585828601615181565b9150509250929050565b600682810b9082900b03667fffffffffffff198112667fffffffffffff82131715610277576102776147fb565b60008160060b8360060b806153035761530361483b565b667fffffffffffff19821460001982141615615321576153216147fb565b90059392505050565b60008260060b8061533d5761533d61483b565b808360060b0791505092915050565b60008160020b627fffff198103615365576153656147fb565b600019019291505056fefbd4856b8a5b39e470d00061cc9a598e1f6db2a87dd7654b4e1093884884c4cba264697066735822122014f89fc7b41a6b8fcb2c041c6e60b15613ce6caf7e97c1adb2ef13c20d13929564736f6c63430008190033