0 txs
12 calls
constructor
constructor()
functions
calculatePrice
viewfunction calculatePrice(address pendleMarket_, uint32 twapWindow_, address priceMiddleware_, uint256 usePendleOracleMethod_) view returns (int256 price)
owner
viewfunction owner() view returns (address)
pendingOwner
viewfunction pendingOwner() view returns (address)
proxiableUUID
viewfunction proxiableUUID() view returns (bytes32)
UPGRADE_INTERFACE_VERSION
viewfunction UPGRADE_INTERFACE_VERSION() view returns (string)
acceptOwnership
nonpayablefunction acceptOwnership()
create
nonpayablefunction create(address pendleOracle_, address pendleMarket_, uint32 twapWindow_, address priceMiddleware_, uint256 usePendleOracleMethod_, int256 expextedPriceAfterDeployment_) returns (address priceFeedAddress)
initialize
nonpayablefunction initialize(address initialFactoryAdmin_)
renounceOwnership
nonpayablefunction renounceOwnership()
transferOwnership
nonpayablefunction transferOwnership(address newOwner)
upgradeToAndCall
payablefunction upgradeToAndCall(address newImplementation, bytes data) payable
events
Initialized
event Initialized(uint64 version)
OwnershipTransferred
event OwnershipTransferred(address indexed previousOwner, address indexed newOwner)
OwnershipTransferStarted
event OwnershipTransferStarted(address indexed previousOwner, address indexed newOwner)
PtPriceFeedCreated
event PtPriceFeedCreated(address priceFeed, address pendleMarket)
Upgraded
event Upgraded(address indexed implementation)
errors
AddressEmptyCode
error AddressEmptyCode(address target)
ERC1967InvalidImplementation
error ERC1967InvalidImplementation(address implementation)
ERC1967NonPayable
error ERC1967NonPayable()
FailedInnerCall
error FailedInnerCall()
InvalidAddress
error InvalidAddress()
InvalidExpectedPrice
error InvalidExpectedPrice()
InvalidInitialization
error InvalidInitialization()
NotInitializing
error NotInitializing()
OwnableInvalidOwner
error OwnableInvalidOwner(address owner)
OwnableUnauthorizedAccount
error OwnableUnauthorizedAccount(address account)
PriceDeltaTooHigh
error PriceDeltaTooHigh()
SafeCastOverflowedUintToInt
error SafeCastOverflowedUintToInt(uint256 value)
UUPSUnauthorizedCallContext
error UUPSUnauthorizedCallContext()
UUPSUnsupportedProxiableUUID
error UUPSUnsupportedProxiableUUID(bytes32 slot)
creation bytecode
0x60a060405230608052348015610013575f80fd5b5061001c610021565b6100d3565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff16156100715760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b03908116146100d05780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b6080516141e56100f95f395f8181610b0c01528181610b350152610d5601526141e55ff3fe6080604052600436106100b8575f3560e01c8063acdec89011610071578063caf538611161004c578063caf53861146101ec578063e30c39781461020b578063f2fde38b1461021f575f80fd5b8063acdec89014610159578063ad3cb1cc14610178578063c4d66de8146101cd575f80fd5b8063715018a6116100a1578063715018a6146100f857806379ba50971461010c5780638da5cb5b14610120575f80fd5b80634f1ef286146100bc57806352d1902d146100d1575b5f80fd5b6100cf6100ca366004611eb3565b61023e565b005b3480156100dc575f80fd5b506100e561025d565b6040519081526020015b60405180910390f35b348015610103575f80fd5b506100cf61028b565b348015610117575f80fd5b506100cf61029e565b34801561012b575f80fd5b5061013461031e565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016100ef565b348015610164575f80fd5b50610134610173366004611f90565b61035f565b348015610183575f80fd5b506101c06040518060400160405280600581526020017f352e302e3000000000000000000000000000000000000000000000000000000081525081565b6040516100ef9190611ff8565b3480156101d8575f80fd5b506100cf6101e736600461204b565b610640565b3480156101f7575f80fd5b506100e5610206366004612066565b61081b565b348015610216575f80fd5b50610134610a15565b34801561022a575f80fd5b506100cf61023936600461204b565b610a3d565b610246610af4565b61024f82610bf8565b6102598282610c00565b5050565b5f610266610d3e565b507f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc90565b610293610dad565b61029c5f610e05565b565b33806102a8610a15565b73ffffffffffffffffffffffffffffffffffffffff1614610312576040517f118cdaa700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff821660048201526024015b60405180910390fd5b61031b81610e05565b50565b5f807f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c1993005b5473ffffffffffffffffffffffffffffffffffffffff1692915050565b5f73ffffffffffffffffffffffffffffffffffffffff87161580610397575073ffffffffffffffffffffffffffffffffffffffff8616155b806103b6575073ffffffffffffffffffffffffffffffffffffffff8416155b156103ed576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f8213610426576040517f8c34751400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f878787878760405161043890611e09565b73ffffffffffffffffffffffffffffffffffffffff9586168152938516602085015263ffffffff9092166040840152929092166060820152608081019190915260a001604051809103905ff080158015610494573d5f803e3d5ffd5b5090505f8173ffffffffffffffffffffffffffffffffffffffff1663feaf968c6040518163ffffffff1660e01b815260040160a060405180830381865afa1580156104e1573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061050591906120cb565b5050509150508381121561057b575f61051e8286612146565b90505f8561052d836064612165565b61053791906121dd565b90506001811315610574576040517fbc7362a600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50506105df565b5f6105868583612146565b90505f85610595836064612165565b61059f91906121dd565b905060018113156105dc576040517fbc7362a600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50505b6040805173ffffffffffffffffffffffffffffffffffffffff80851682528a16602082015292935083927f1c2b662aee12f4284f4e2509a05e7bb9083a8451e760419a9884536f555996c9910160405180910390a150509695505050505050565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000810460ff16159067ffffffffffffffff165f8115801561068a5750825b90505f8267ffffffffffffffff1660011480156106a65750303b155b9050811580156106b4575080155b156106eb576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b84547fffffffffffffffffffffffffffffffffffffffffffffffff0000000000000000166001178555831561074c5784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff16680100000000000000001785555b73ffffffffffffffffffffffffffffffffffffffff8616610799576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6107a286610e55565b6107aa610e66565b6107b2610e66565b83156108135784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b505050505050565b5f808573ffffffffffffffffffffffffffffffffffffffff16632c8ce6bc6040518163ffffffff1660e01b8152600401606060405180830381865afa158015610866573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061088a9190612244565b505090505f8173ffffffffffffffffffffffffffffffffffffffff1663a40bee506040518163ffffffff1660e01b8152600401606060405180830381865afa1580156108d8573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906108fc919061228e565b509150505f8460010361091a576109138888610e6e565b9050610927565b6109248888610ebe565b90505b6040517fb3596f0700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff83811660048301525f91829189169063b3596f07906024016040805180830381865afa158015610994573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906109b891906122d5565b915091505f6109c5600890565b60ff166109d38360126122f7565b6109dd919061230a565b9050610a066109ed82600a61243e565b6109f78587612449565b610a019190612460565b610ef7565b9b9a5050505050505050505050565b5f807f237e158222e3e6968b72b9db0d8043aacf074ad9f650f0d1606b4d82ee432c00610342565b610a45610dad565b7f237e158222e3e6968b72b9db0d8043aacf074ad9f650f0d1606b4d82ee432c0080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081178255610aae61031e565b73ffffffffffffffffffffffffffffffffffffffff167f38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e2270060405160405180910390a35050565b3073ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000161480610bc157507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16610ba87f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5473ffffffffffffffffffffffffffffffffffffffff1690565b73ffffffffffffffffffffffffffffffffffffffff1614155b1561029c576040517fe07c8dba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61031b610dad565b8173ffffffffffffffffffffffffffffffffffffffff166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015610c85575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201909252610c8291810190612473565b60015b610cd3576040517f4c9c8ce300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff83166004820152602401610309565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc8114610d2f576040517faa1d49a400000000000000000000000000000000000000000000000000000000815260048101829052602401610309565b610d398383610f59565b505050565b3073ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000161461029c576040517fe07c8dba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b33610db661031e565b73ffffffffffffffffffffffffffffffffffffffff161461029c576040517f118cdaa7000000000000000000000000000000000000000000000000000000008152336004820152602401610309565b7f237e158222e3e6968b72b9db0d8043aacf074ad9f650f0d1606b4d82ee432c0080547fffffffffffffffffffffffff000000000000000000000000000000000000000016815561025982610fbb565b610e5d611050565b61031b816110b7565b61029c611050565b5f805f610e7a8561110e565b91509150808210610e9857610e8f858561137b565b92505050610eb8565b8082610ea4878761137b565b610eae9190612449565b610e8f9190612460565b92915050565b5f805f610eca8561110e565b91509150808210610ee957610e8f82610ee3878761137b565b90611457565b610e8f81610ee3878761137b565b5f7f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821115610f55576040517f24775e0600000000000000000000000000000000000000000000000000000000815260048101839052602401610309565b5090565b610f6282611485565b60405173ffffffffffffffffffffffffffffffffffffffff8316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a2805115610fb357610d398282611553565b6102596115d2565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930080547fffffffffffffffffffffffff0000000000000000000000000000000000000000811673ffffffffffffffffffffffffffffffffffffffff848116918217845560405192169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a3505050565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a005468010000000000000000900460ff1661029c576040517fd7e6bcf800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6110bf611050565b73ffffffffffffffffffffffffffffffffffffffff8116610312576040517f1e4fbdf70000000000000000000000000000000000000000000000000000000081525f6004820152602401610309565b5f805f808473ffffffffffffffffffffffffffffffffffffffff16632c8ce6bc6040518163ffffffff1660e01b8152600401606060405180830381865afa15801561115b573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061117f9190612244565b92505091508173ffffffffffffffffffffffffffffffffffffffff16633ba0b9a96040518163ffffffff1660e01b8152600401602060405180830381865afa1580156111cd573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906111f19190612473565b93505f8173ffffffffffffffffffffffffffffffffffffffff1663d2a3584e6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561123d573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906112619190612473565b90508173ffffffffffffffffffffffffffffffffffffffff1663516399df6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156112ac573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906112d0919061248a565b80156113595750438273ffffffffffffffffffffffffffffffffffffffff166360e0a9e16040518163ffffffff1660e01b8152600401602060405180830381865afa158015611321573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061134591906124a9565b6fffffffffffffffffffffffffffffffff16145b1561136657809350611373565b611370858261160a565b93505b505050915091565b5f808373ffffffffffffffffffffffffffffffffffffffff1663e184c9be6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156113c6573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906113ea9190612473565b905042811161140457670de0b6b3a7640000915050610eb8565b5f61140f8585611621565b90505f61141c428461230a565b90505f61143161142c8484611798565b6117d8565b9050611445670de0b6b3a764000082611457565b945050505050610eb8565b5092915050565b5f8061146b670de0b6b3a764000085612449565b905082818161147c5761147c6121b0565b04949350505050565b8073ffffffffffffffffffffffffffffffffffffffff163b5f036114ed576040517f4c9c8ce300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff82166004820152602401610309565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b60605f808473ffffffffffffffffffffffffffffffffffffffff168460405161157c91906124d8565b5f60405180830381855af49150503d805f81146115b4576040519150601f19603f3d011682016040523d82523d5f602084013e6115b9565b606091505b50915091506115c98583836117e5565b95945050505050565b341561029c576040517fb398979f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f818311611618578161161a565b825b9392505050565b6040805160028082526060820183525f928392919060208301908036833701905050905082815f81518110611658576116586124ee565b63ffffffff909216602092830291909101909101526040517f883bdbfd0000000000000000000000000000000000000000000000000000000081525f9073ffffffffffffffffffffffffffffffffffffffff86169063883bdbfd906116c190859060040161251b565b5f60405180830381865afa1580156116db573d5f803e3d5ffd5b505050506040513d5f823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682016040526117209190810190612563565b90508363ffffffff16815f8151811061173b5761173b6124ee565b602002602001015182600181518110611756576117566124ee565b60200260200101516117689190612636565b6117729190612669565b7affffffffffffffffffffffffffffffffffffffffffffffffffffff1695945050505050565b5f806117a96201518061016d612449565b6117b38486612449565b6117bd9190612460565b90506117d06117cb8261186d565b61189a565b949350505050565b5f80821215610f55575f80fd5b6060826117fa576117f582611dc7565b61161a565b815115801561181e575073ffffffffffffffffffffffffffffffffffffffff84163b155b15611450576040517f9996b31500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff85166004820152602401610309565b5f7f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821115610f55575f80fd5b5f7ffffffffffffffffffffffffffffffffffffffffffffffffdc702bd3a30fc000082121580156118d4575068070c1cc73b00c800008213155b61193a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f496e76616c6964206578706f6e656e74000000000000000000000000000000006044820152606401610309565b5f8212156119715761194d825f0361189a565b6ec097ce7bc90715b34b9f10000000008161196a5761196a6121b0565b0592915050565b5f6806f05b59d3b200000083126119c657507ffffffffffffffffffffffffffffffffffffffffffffffff90fa4a62c4e00000090910190770195e54c5dd42177f53a27172fa9ec630262827000000000611a12565b6803782dace9d90000008312611a0e57507ffffffffffffffffffffffffffffffffffffffffffffffffc87d2531627000000909101906b1425982cf597cd205cef7380611a12565b5060015b6064929092029168056bc75e2d6310000068ad78ebc5ac620000008412611a78577fffffffffffffffffffffffffffffffffffffffffffffff5287143a539e0000009093019268056bc75e2d631000006e01855144814a7ff805980ff008400082020590505b6856bc75e2d6310000008412611aca577fffffffffffffffffffffffffffffffffffffffffffffffa9438a1d29cf0000009093019268056bc75e2d631000006b02df0ab5a80a22c61ab5a70082020590505b682b5e3af16b188000008412611b1a577fffffffffffffffffffffffffffffffffffffffffffffffd4a1c50e94e78000009093019268056bc75e2d63100000693f1fce3da636ea5cf85082020590505b6815af1d78b58c4000008412611b6a577fffffffffffffffffffffffffffffffffffffffffffffffea50e2874a73c000009093019268056bc75e2d63100000690127fa27722cc06cc5e282020590505b680ad78ebc5ac62000008412611bb9577ffffffffffffffffffffffffffffffffffffffffffffffff5287143a539e000009093019268056bc75e2d6310000068280e60114edb805d0382020590505b68056bc75e2d631000008412611c08577ffffffffffffffffffffffffffffffffffffffffffffffffa9438a1d29cf000009093019268056bc75e2d63100000680ebc5fb4174612111082020590505b6802b5e3af16b18800008412611c57577ffffffffffffffffffffffffffffffffffffffffffffffffd4a1c50e94e7800009093019268056bc75e2d631000006808f00f760a4b2db55d82020590505b68015af1d78b58c400008412611ca6577ffffffffffffffffffffffffffffffffffffffffffffffffea50e2874a73c00009093019268056bc75e2d631000006806f5f177578893793782020590505b68056bc75e2d631000008481019085906002908280020505918201919050600368056bc75e2d631000008783020505918201919050600468056bc75e2d631000008783020505918201919050600568056bc75e2d631000008783020505918201919050600668056bc75e2d631000008783020505918201919050600768056bc75e2d631000008783020505918201919050600868056bc75e2d631000008783020505918201919050600968056bc75e2d631000008783020505918201919050600a68056bc75e2d631000008783020505918201919050600b68056bc75e2d631000008783020505918201919050600c68056bc75e2d631000008783020505918201919050606468056bc75e2d63100000848402058502059695505050505050565b805115611dd75780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611af1806126bf83390190565b73ffffffffffffffffffffffffffffffffffffffff8116811461031b575f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff81118282101715611eab57611eab611e37565b604052919050565b5f8060408385031215611ec4575f80fd5b8235611ecf81611e16565b9150602083013567ffffffffffffffff811115611eea575f80fd5b8301601f81018513611efa575f80fd5b803567ffffffffffffffff811115611f1457611f14611e37565b611f4560207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f84011601611e64565b818152866020838501011115611f59575f80fd5b816020840160208301375f602083830101528093505050509250929050565b803563ffffffff81168114611f8b575f80fd5b919050565b5f805f805f8060c08789031215611fa5575f80fd5b8635611fb081611e16565b95506020870135611fc081611e16565b9450611fce60408801611f78565b93506060870135611fde81611e16565b9598949750929560808101359460a0909101359350915050565b602081525f82518060208401528060208501604085015e5f6040828501015260407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011684010191505092915050565b5f6020828403121561205b575f80fd5b813561161a81611e16565b5f805f8060808587031215612079575f80fd5b843561208481611e16565b935061209260208601611f78565b925060408501356120a281611e16565b9396929550929360600135925050565b805169ffffffffffffffffffff81168114611f8b575f80fd5b5f805f805f60a086880312156120df575f80fd5b6120e8866120b2565b6020870151604088015160608901519297509095509350915061210d608087016120b2565b90509295509295909350565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b8181035f83128015838313168383128216171561145057611450612119565b8082025f82127f80000000000000000000000000000000000000000000000000000000000000008414161561219c5761219c612119565b8181058314821517610eb857610eb8612119565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f826121eb576121eb6121b0565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83147f80000000000000000000000000000000000000000000000000000000000000008314161561223f5761223f612119565b500590565b5f805f60608486031215612256575f80fd5b835161226181611e16565b602085015190935061227281611e16565b604085015190925061228381611e16565b809150509250925092565b5f805f606084860312156122a0575f80fd5b8351600281106122ae575f80fd5b60208501519093506122bf81611e16565b604085015190925060ff81168114612283575f80fd5b5f80604083850312156122e6575f80fd5b505080516020909101519092909150565b80820180821115610eb857610eb8612119565b81810381811115610eb857610eb8612119565b6001815b60018411156123585780850481111561233c5761233c612119565b600184161561234a57908102905b60019390931c928002612321565b935093915050565b5f8261236e57506001610eb8565b8161237a57505f610eb8565b8160018114612390576002811461239a576123b6565b6001915050610eb8565b60ff8411156123ab576123ab612119565b50506001821b610eb8565b5060208310610133831016604e8410600b84101617156123d9575081810a610eb8565b6124047fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848461231d565b807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0482111561243657612436612119565b029392505050565b5f61161a8383612360565b8082028115828204841417610eb857610eb8612119565b5f8261246e5761246e6121b0565b500490565b5f60208284031215612483575f80fd5b5051919050565b5f6020828403121561249a575f80fd5b8151801515811461161a575f80fd5b5f602082840312156124b9575f80fd5b81516fffffffffffffffffffffffffffffffff8116811461161a575f80fd5b5f82518060208501845e5f920191825250919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b602080825282518282018190525f918401906040840190835b8181101561255857835163ffffffff16835260209384019390920191600101612534565b509095945050505050565b5f60208284031215612573575f80fd5b815167ffffffffffffffff811115612589575f80fd5b8201601f81018413612599575f80fd5b805167ffffffffffffffff8111156125b3576125b3611e37565b8060051b6125c360208201611e64565b918252602081840181019290810190878411156125de575f80fd5b6020850194505b8385101561262b57845192507affffffffffffffffffffffffffffffffffffffffffffffffffffff83168314612619575f80fd5b828252602094850194909101906125e5565b979650505050505050565b7affffffffffffffffffffffffffffffffffffffffffffffffffffff8281168282160390811115610eb857610eb8612119565b5f7affffffffffffffffffffffffffffffffffffffffffffffffffffff831680612695576126956121b0565b807affffffffffffffffffffffffffffffffffffffffffffffffffffff8416049150509291505056fe610140604052348015610010575f80fd5b50604051611af1380380611af183398101604081905261002f91610280565b61012c63ffffffff8416101561006c5760405163c6a5f5e360e01b815263ffffffff8416600482015261012c602482015260440160405180910390fd5b6001600160a01b038516158061008957506001600160a01b038416155b8061009b57506001600160a01b038216155b156100b957604051630b92e73360e21b815260040160405180910390fd5b60405162439f4b60e91b81526001600160a01b03858116600483015263ffffffff851660248301525f91829182919089169063873e960090604401606060405180830381865afa15801561010f573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906101339190610303565b9250925092508280610143575080155b156101615760405163eefb0e6b60e01b815260040160405180910390fd5b5f876001600160a01b0316632c8ce6bc6040518163ffffffff1660e01b8152600401606060405180830381865afa15801561019e573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906101c2919061034b565b505090505f80826001600160a01b031663a40bee506040518163ffffffff1660e01b8152600401606060405180830381865afa158015610204573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906102289190610395565b6001600160a01b039c8d1660805263ffffffff909b1660a052988b1660c052505050509590931660e0525060ff909216610100525061012052506103dc9050565b6001600160a01b038116811461027d575f80fd5b50565b5f805f805f60a08688031215610294575f80fd5b855161029f81610269565b60208701519095506102b081610269565b604087015190945063ffffffff811681146102c9575f80fd5b60608701519093506102da81610269565b80925050608086015190509295509295909350565b805180151581146102fe575f80fd5b919050565b5f805f60608486031215610315575f80fd5b61031e846102ef565b9250602084015161ffff81168114610334575f80fd5b9150610342604085016102ef565b90509250925092565b5f805f6060848603121561035d575f80fd5b835161036881610269565b602085015190935061037981610269565b604085015190925061038a81610269565b809150509250925092565b5f805f606084860312156103a7575f80fd5b8351600281106103b5575f80fd5b60208501519093506103c681610269565b604085015190925060ff8116811461038a575f80fd5b60805160a05160c05160e05161010051610120516116896104685f395f818161017101526103c401525f61021101525f8181610113015281816102af015261048501525f81816101ea015281816102db01526104b101525f81816101ae0152818161037201526103a201525f818160c201528181610351015281816103ef015261042001526116895ff3fe608060405234801561000f575f80fd5b50600436106100b9575f3560e01c8063e06c25ba11610072578063f1e3854a11610058578063f1e3854a146101e5578063f4db89841461020c578063feaf968c14610233575f80fd5b8063e06c25ba146101a1578063e2c1d1d1146101a9575f80fd5b8063313ce567116100a2578063313ce56714610135578063468f02d21461014f5780636001b77f1461016c575f80fd5b80630f61ac82146100bd5780631d4be0431461010e575b5f80fd5b6100e47f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b6100e47f000000000000000000000000000000000000000000000000000000000000000081565b61013d600881565b60405160ff9091168152602001610105565b610157610272565b60408051928352602083019190915201610105565b6101937f000000000000000000000000000000000000000000000000000000000000000081565b604051908152602001610105565b61019361034b565b6101d07f000000000000000000000000000000000000000000000000000000000000000081565b60405163ffffffff9091168152602001610105565b6100e47f000000000000000000000000000000000000000000000000000000000000000081565b61013d7f000000000000000000000000000000000000000000000000000000000000000081565b61023b61039b565b6040805169ffffffffffffffffffff968716815260208101959095528401929092526060830152909116608082015260a001610105565b6040517fb3596f0700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000811660048301525f9182917f0000000000000000000000000000000000000000000000000000000000000000169063b3596f07906024016040805180830381865afa15801561031f573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906103439190611146565b915091509091565b5f6103967f00000000000000000000000000000000000000000000000000000000000000007f00000000000000000000000000000000000000000000000000000000000000006105b1565b905090565b5f808080807f0000000000000000000000000000000000000000000000000000000000000000817f000000000000000000000000000000000000000000000000000000000000000060010361041b576104147f0000000000000000000000000000000000000000000000000000000000000000836105b1565b9050610448565b6104457f000000000000000000000000000000000000000000000000000000000000000083610601565b90505b6040517fb3596f0700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000811660048301525f9182917f0000000000000000000000000000000000000000000000000000000000000000169063b3596f07906024016040805180830381865afa1580156104f5573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906105199190611146565b915091505f610526600890565b60ff16610534836012611195565b61053e91906111a8565b905061056761054e82600a6112dc565b61055885876112e7565b610562919061132b565b61063a565b98505f89136105a2576040517fd9de0a4700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b42965050505050509091929394565b5f805f6105bd856106a1565b915091508082106105db576105d2858561090e565b925050506105fb565b80826105e7878761090e565b6105f191906112e7565b6105d2919061132b565b92915050565b5f805f61060d856106a1565b9150915080821061062c576105d282610626878761090e565b906109e3565b6105d281610626878761090e565b5f7f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82111561069d576040517f24775e06000000000000000000000000000000000000000000000000000000008152600481018390526024015b60405180910390fd5b5090565b5f805f808473ffffffffffffffffffffffffffffffffffffffff16632c8ce6bc6040518163ffffffff1660e01b8152600401606060405180830381865afa1580156106ee573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906107129190611362565b92505091508173ffffffffffffffffffffffffffffffffffffffff16633ba0b9a96040518163ffffffff1660e01b8152600401602060405180830381865afa158015610760573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061078491906113ac565b93505f8173ffffffffffffffffffffffffffffffffffffffff1663d2a3584e6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156107d0573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906107f491906113ac565b90508173ffffffffffffffffffffffffffffffffffffffff1663516399df6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561083f573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061086391906113c3565b80156108ec5750438273ffffffffffffffffffffffffffffffffffffffff166360e0a9e16040518163ffffffff1660e01b8152600401602060405180830381865afa1580156108b4573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906108d891906113e2565b6fffffffffffffffffffffffffffffffff16145b156108f957809350610906565b6109038582610a11565b93505b505050915091565b5f808373ffffffffffffffffffffffffffffffffffffffff1663e184c9be6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610959573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061097d91906113ac565b905042811161099757670de0b6b3a76400009150506105fb565b5f6109a28585610a28565b90505f6109af42846111a8565b90505f6109c46109bf8484610b9f565b610bdf565b90506109d8670de0b6b3a7640000826109e3565b9450505050506105fb565b5f806109f7670de0b6b3a7640000856112e7565b9050828181610a0857610a086112fe565b04949350505050565b5f818311610a1f5781610a21565b825b9392505050565b6040805160028082526060820183525f928392919060208301908036833701905050905082815f81518110610a5f57610a5f61143e565b63ffffffff909216602092830291909101909101526040517f883bdbfd0000000000000000000000000000000000000000000000000000000081525f9073ffffffffffffffffffffffffffffffffffffffff86169063883bdbfd90610ac890859060040161146b565b5f60405180830381865afa158015610ae2573d5f803e3d5ffd5b505050506040513d5f823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201604052610b2791908101906114e2565b90508363ffffffff16815f81518110610b4257610b4261143e565b602002602001015182600181518110610b5d57610b5d61143e565b6020026020010151610b6f91906115cb565b610b7991906115fe565b7affffffffffffffffffffffffffffffffffffffffffffffffffffff1695945050505050565b5f80610bb06201518061016d6112e7565b610bba84866112e7565b610bc4919061132b565b9050610bd7610bd282610bec565b610c19565b949350505050565b5f8082121561069d575f80fd5b5f7f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82111561069d575f80fd5b5f7ffffffffffffffffffffffffffffffffffffffffffffffffdc702bd3a30fc00008212158015610c53575068070c1cc73b00c800008213155b610cb9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f496e76616c6964206578706f6e656e74000000000000000000000000000000006044820152606401610694565b5f821215610cf057610ccc825f03610c19565b6ec097ce7bc90715b34b9f100000000081610ce957610ce96112fe565b0592915050565b5f6806f05b59d3b20000008312610d4557507ffffffffffffffffffffffffffffffffffffffffffffffff90fa4a62c4e00000090910190770195e54c5dd42177f53a27172fa9ec630262827000000000610d91565b6803782dace9d90000008312610d8d57507ffffffffffffffffffffffffffffffffffffffffffffffffc87d2531627000000909101906b1425982cf597cd205cef7380610d91565b5060015b6064929092029168056bc75e2d6310000068ad78ebc5ac620000008412610df7577fffffffffffffffffffffffffffffffffffffffffffffff5287143a539e0000009093019268056bc75e2d631000006e01855144814a7ff805980ff008400082020590505b6856bc75e2d6310000008412610e49577fffffffffffffffffffffffffffffffffffffffffffffffa9438a1d29cf0000009093019268056bc75e2d631000006b02df0ab5a80a22c61ab5a70082020590505b682b5e3af16b188000008412610e99577fffffffffffffffffffffffffffffffffffffffffffffffd4a1c50e94e78000009093019268056bc75e2d63100000693f1fce3da636ea5cf85082020590505b6815af1d78b58c4000008412610ee9577fffffffffffffffffffffffffffffffffffffffffffffffea50e2874a73c000009093019268056bc75e2d63100000690127fa27722cc06cc5e282020590505b680ad78ebc5ac62000008412610f38577ffffffffffffffffffffffffffffffffffffffffffffffff5287143a539e000009093019268056bc75e2d6310000068280e60114edb805d0382020590505b68056bc75e2d631000008412610f87577ffffffffffffffffffffffffffffffffffffffffffffffffa9438a1d29cf000009093019268056bc75e2d63100000680ebc5fb4174612111082020590505b6802b5e3af16b18800008412610fd6577ffffffffffffffffffffffffffffffffffffffffffffffffd4a1c50e94e7800009093019268056bc75e2d631000006808f00f760a4b2db55d82020590505b68015af1d78b58c400008412611025577ffffffffffffffffffffffffffffffffffffffffffffffffea50e2874a73c00009093019268056bc75e2d631000006806f5f177578893793782020590505b68056bc75e2d631000008481019085906002908280020505918201919050600368056bc75e2d631000008783020505918201919050600468056bc75e2d631000008783020505918201919050600568056bc75e2d631000008783020505918201919050600668056bc75e2d631000008783020505918201919050600768056bc75e2d631000008783020505918201919050600868056bc75e2d631000008783020505918201919050600968056bc75e2d631000008783020505918201919050600a68056bc75e2d631000008783020505918201919050600b68056bc75e2d631000008783020505918201919050600c68056bc75e2d631000008783020505918201919050606468056bc75e2d63100000848402058502059695505050505050565b5f8060408385031215611157575f80fd5b505080516020909101519092909150565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b808201808211156105fb576105fb611168565b818103818111156105fb576105fb611168565b6001815b60018411156111f6578085048111156111da576111da611168565b60018416156111e857908102905b60019390931c9280026111bf565b935093915050565b5f8261120c575060016105fb565b8161121857505f6105fb565b816001811461122e576002811461123857611254565b60019150506105fb565b60ff84111561124957611249611168565b50506001821b6105fb565b5060208310610133831016604e8410600b8410161715611277575081810a6105fb565b6112a27fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff84846111bb565b807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048211156112d4576112d4611168565b029392505050565b5f610a2183836111fe565b80820281158282048414176105fb576105fb611168565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f82611339576113396112fe565b500490565b73ffffffffffffffffffffffffffffffffffffffff8116811461135f575f80fd5b50565b5f805f60608486031215611374575f80fd5b835161137f8161133e565b60208501519093506113908161133e565b60408501519092506113a18161133e565b809150509250925092565b5f602082840312156113bc575f80fd5b5051919050565b5f602082840312156113d3575f80fd5b81518015158114610a21575f80fd5b5f602082840312156113f2575f80fd5b81516fffffffffffffffffffffffffffffffff81168114610a21575f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b602080825282518282018190525f918401906040840190835b818110156114a857835163ffffffff16835260209384019390920191600101611484565b509095945050505050565b80517affffffffffffffffffffffffffffffffffffffffffffffffffffff811681146114dd575f80fd5b919050565b5f602082840312156114f2575f80fd5b815167ffffffffffffffff811115611508575f80fd5b8201601f81018413611518575f80fd5b805167ffffffffffffffff81111561153257611532611411565b8060051b6040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0603f830116810181811067ffffffffffffffff8211171561157d5761157d611411565b60405291825260208184018101929081018784111561159a575f80fd5b6020850194505b838510156115c0576115b2856114b3565b8152602094850194016115a1565b509695505050505050565b7affffffffffffffffffffffffffffffffffffffffffffffffffffff82811682821603908111156105fb576105fb611168565b5f7affffffffffffffffffffffffffffffffffffffffffffffffffffff83168061162a5761162a6112fe565b807affffffffffffffffffffffffffffffffffffffffffffffffffffff8416049150509291505056fea2646970667358221220019d1e1fecedf8054ebf8a749776a229c80fd82583de855010bc77a2f672188164736f6c634300081a0033a2646970667358221220efd573f00ffffa15b64d3c5182dfda350e028af6df88c5efdb7e15d834bfef7b64736f6c634300081a0033